diff --git a/cmd/etcd-backup-ctl/BUILD.bazel b/cmd/etcd-backup-ctl/BUILD.bazel
index f4bf7949..3548e184 100644
--- a/cmd/etcd-backup-ctl/BUILD.bazel
+++ b/cmd/etcd-backup-ctl/BUILD.bazel
@@ -7,7 +7,7 @@ go_library(
visibility = ["//visibility:private"],
deps = [
"//pkg/backup:go_default_library",
- "//vendor/k8s.io/klog:go_default_library",
+ "//vendor/k8s.io/klog/v2:go_default_library",
],
)
diff --git a/cmd/etcd-backup-ctl/main.go b/cmd/etcd-backup-ctl/main.go
index 73599216..abd36a7c 100644
--- a/cmd/etcd-backup-ctl/main.go
+++ b/cmd/etcd-backup-ctl/main.go
@@ -21,7 +21,7 @@ import (
"fmt"
"os"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
"kope.io/etcd-manager/pkg/backup"
)
diff --git a/cmd/etcd-backup/BUILD.bazel b/cmd/etcd-backup/BUILD.bazel
index 7fda4c26..0779fa07 100644
--- a/cmd/etcd-backup/BUILD.bazel
+++ b/cmd/etcd-backup/BUILD.bazel
@@ -8,7 +8,7 @@ go_library(
deps = [
"//pkg/backup:go_default_library",
"//pkg/backupcontroller:go_default_library",
- "//vendor/k8s.io/klog:go_default_library",
+ "//vendor/k8s.io/klog/v2:go_default_library",
],
)
diff --git a/cmd/etcd-backup/main.go b/cmd/etcd-backup/main.go
index d76921fa..ffd674e6 100644
--- a/cmd/etcd-backup/main.go
+++ b/cmd/etcd-backup/main.go
@@ -26,7 +26,7 @@ import (
"os"
"time"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
"kope.io/etcd-manager/pkg/backup"
"kope.io/etcd-manager/pkg/backupcontroller"
)
diff --git a/cmd/etcd-dump/BUILD.bazel b/cmd/etcd-dump/BUILD.bazel
index 76bd93c1..c5e7a1a2 100644
--- a/cmd/etcd-dump/BUILD.bazel
+++ b/cmd/etcd-dump/BUILD.bazel
@@ -10,7 +10,7 @@ go_library(
"//pkg/etcd:go_default_library",
"//pkg/etcd/dump:go_default_library",
"//pkg/etcdclient:go_default_library",
- "//vendor/k8s.io/klog:go_default_library",
+ "//vendor/k8s.io/klog/v2:go_default_library",
],
)
diff --git a/cmd/etcd-dump/main.go b/cmd/etcd-dump/main.go
index dbcdcbe7..be8089de 100644
--- a/cmd/etcd-dump/main.go
+++ b/cmd/etcd-dump/main.go
@@ -26,7 +26,7 @@ import (
"strings"
"time"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
"kope.io/etcd-manager/pkg/backup"
"kope.io/etcd-manager/pkg/etcd"
"kope.io/etcd-manager/pkg/etcd/dump"
diff --git a/cmd/etcd-manager-ctl/BUILD.bazel b/cmd/etcd-manager-ctl/BUILD.bazel
index e9752f2c..e08f4936 100644
--- a/cmd/etcd-manager-ctl/BUILD.bazel
+++ b/cmd/etcd-manager-ctl/BUILD.bazel
@@ -10,7 +10,7 @@ go_library(
"//pkg/backup:go_default_library",
"//pkg/commands:go_default_library",
"//vendor/github.com/golang/protobuf/proto:go_default_library",
- "//vendor/k8s.io/klog:go_default_library",
+ "//vendor/k8s.io/klog/v2:go_default_library",
],
)
diff --git a/cmd/etcd-manager-ctl/main.go b/cmd/etcd-manager-ctl/main.go
index 5a4c4d2b..d8faf5f0 100644
--- a/cmd/etcd-manager-ctl/main.go
+++ b/cmd/etcd-manager-ctl/main.go
@@ -23,7 +23,7 @@ import (
"os"
"github.com/golang/protobuf/proto"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
protoetcd "kope.io/etcd-manager/pkg/apis/etcd"
"kope.io/etcd-manager/pkg/backup"
"kope.io/etcd-manager/pkg/commands"
diff --git a/cmd/etcd-manager/BUILD.bazel b/cmd/etcd-manager/BUILD.bazel
index 81de58db..67b727f5 100644
--- a/cmd/etcd-manager/BUILD.bazel
+++ b/cmd/etcd-manager/BUILD.bazel
@@ -27,7 +27,7 @@ go_library(
"//pkg/volumes/external:go_default_library",
"//pkg/volumes/gce:go_default_library",
"//pkg/volumes/openstack:go_default_library",
- "//vendor/k8s.io/klog:go_default_library",
+ "//vendor/k8s.io/klog/v2:go_default_library",
"//vendor/k8s.io/kops/util/pkg/vfs:go_default_library",
],
)
diff --git a/cmd/etcd-manager/main.go b/cmd/etcd-manager/main.go
index ffe224a4..8bbee6c1 100644
--- a/cmd/etcd-manager/main.go
+++ b/cmd/etcd-manager/main.go
@@ -25,7 +25,7 @@ import (
"strings"
"time"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
"k8s.io/kops/util/pkg/vfs"
apis_etcd "kope.io/etcd-manager/pkg/apis/etcd"
"kope.io/etcd-manager/pkg/backup"
diff --git a/go.mod b/go.mod
index 0b4734a4..a598e6a3 100644
--- a/go.mod
+++ b/go.mod
@@ -2,7 +2,7 @@ module kope.io/etcd-manager
go 1.12
-replace k8s.io/kops => k8s.io/kops v1.19.0-beta.1
+replace k8s.io/kops => k8s.io/kops v1.19.0-alpha.5.0.20201129060248-dc1c2210cf77
// Version kubernetes-1.15.3
//replace k8s.io/kubernetes => k8s.io/kubernetes v1.19.0
@@ -77,25 +77,30 @@ replace k8s.io/code-generator => k8s.io/code-generator v0.19.5-rc.0
replace k8s.io/cli-runtime => k8s.io/cli-runtime v0.19.0
require (
- cloud.google.com/go v0.51.0
+ cloud.google.com/go v0.54.0
github.com/aliyun/alibaba-cloud-sdk-go v1.61.264
- github.com/aws/aws-sdk-go v1.35.10
+ github.com/aws/aws-sdk-go v1.35.24
github.com/blang/semver v3.5.1+incompatible
- github.com/digitalocean/godo v1.19.0
+ github.com/digitalocean/godo v1.54.0
+ github.com/go-logr/logr v0.3.0 // indirect
github.com/golang/protobuf v1.4.2
github.com/gophercloud/gophercloud v0.11.1-0.20200518183226-7aec46f32c19
github.com/pkg/sftp v0.0.0-20180127012644-738e088bbd93 // indirect
go.etcd.io/etcd v0.5.0-alpha.5.0.20200819165624-17cef6e3e9d5
- golang.org/x/net v0.0.0-20200707034311-ab3426394381
+ golang.org/x/net v0.0.0-20201110031124-69a78807bb2b
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d
+ golang.org/x/sys v0.0.0-20201126233918-771906719818 // indirect
+ golang.org/x/text v0.3.4 // indirect
+ golang.org/x/tools v0.0.0-20201125231158-b5590deeca9b // indirect
google.golang.org/api v0.22.0
google.golang.org/grpc v1.27.1
gopkg.in/gcfg.v1 v1.2.3
- gopkg.in/yaml.v2 v2.3.0
- honnef.co/go/tools v0.0.1-2020.1.4
- k8s.io/apimachinery v0.19.0
+ gopkg.in/yaml.v2 v2.4.0
+ gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 // indirect
+ honnef.co/go/tools v0.0.1-2020.1.6
+ k8s.io/apimachinery v0.20.0-beta.2
k8s.io/client-go v11.0.1-0.20190409021438-1a26190bd76a+incompatible
- k8s.io/klog v1.0.0
+ k8s.io/klog/v2 v2.4.0
k8s.io/kops v0.0.0-00010101000000-000000000000
- k8s.io/utils v0.0.0-20200729134348-d5654de09c73
+ k8s.io/utils v0.0.0-20201110183641-67b214c5f920
)
diff --git a/go.sum b/go.sum
index c4c032c8..1c9c56b5 100644
--- a/go.sum
+++ b/go.sum
@@ -7,27 +7,52 @@ cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6A
cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
+cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=
cloud.google.com/go v0.51.0 h1:PvKAVQWCtlGUSlZkGW3QLelKaWq7KYv/MW1EboG8bfM=
cloud.google.com/go v0.51.0/go.mod h1:hWtGJ6gnXH+KgDv+V0zFGDvpi07n3z8ZNj3T1RW0Gcw=
+cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4=
+cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=
+cloud.google.com/go v0.54.0 h1:3ithwDMr7/3vpAMXiH+ZQnYbuIsh+OPhUPMFC9enmn0=
+cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc=
cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
+cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
+cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=
cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
+cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
+cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk=
cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
+cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
+cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=
cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
+cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=
+cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
+github.com/Azure/azure-pipeline-go v0.2.2/go.mod h1:4rQ/NZncSvGqNkkOsNpOU1tgoNuIlp9AfUH5G1tvCHc=
+github.com/Azure/azure-pipeline-go v0.2.3 h1:7U9HBg1JFK3jHl5qmo4CTZKFTVgMwdFHMVtCdfBE21U=
+github.com/Azure/azure-pipeline-go v0.2.3/go.mod h1:x841ezTBIMG6O3lAcl8ATHnsOPVl2bqk7S3ta6S6u4k=
github.com/Azure/azure-sdk-for-go v43.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
+github.com/Azure/azure-storage-blob-go v0.10.0 h1:evCwGreYo3XLeBV4vSxLbLiYb6e0SzsJiXQVRGsRXxs=
+github.com/Azure/azure-storage-blob-go v0.10.0/go.mod h1:ep1edmW+kNQx4UfWM9heESNmQdijykocJ0YOxmMX8SE=
github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8=
github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI=
+github.com/Azure/go-autorest/autorest v0.9.6 h1:5YWtOnckcudzIw8lPPBcWOnmIFWMtHci1ZWAZulMSx0=
github.com/Azure/go-autorest/autorest v0.9.6/go.mod h1:/FALq9T/kS7b5J5qsQ+RSTUdAmGFqi0vUdVNNx8q630=
github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0=
github.com/Azure/go-autorest/autorest/adal v0.8.2/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q=
+github.com/Azure/go-autorest/autorest/adal v0.8.3 h1:O1AGG9Xig71FxdX9HO5pGNyZ7TbSyHaVg+5eJO/jSGw=
+github.com/Azure/go-autorest/autorest/adal v0.8.3/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q=
github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA=
+github.com/Azure/go-autorest/autorest/date v0.2.0 h1:yW+Zlqf26583pE43KhfnhFcdmSWlm5Ew6bxipnr/tbM=
github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g=
github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0=
github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0=
+github.com/Azure/go-autorest/autorest/mocks v0.3.0 h1:qJumjCaCudz+OcqE9/XtEPfvtOjOmKaui4EOpFI6zZc=
github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM=
github.com/Azure/go-autorest/autorest/to v0.2.0/go.mod h1:GunWKJp1AEqgMaGLV+iocmRAJWqST1wQYhyyjXJ3SJc=
github.com/Azure/go-autorest/autorest/validation v0.1.0/go.mod h1:Ha3z/SqBeaalWQvokg3NZAlQTalVMtOIAs1aGK7G6u8=
+github.com/Azure/go-autorest/logger v0.1.0 h1:ruG4BSDXONFRrZZJ2GUXDiUyVpayPmb1GnWeHDdaNKY=
github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc=
+github.com/Azure/go-autorest/tracing v0.5.0 h1:TRn4WjSnkcSy5AEG3pnbtFSwNtwzjr4VYyQflFE619k=
github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk=
github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
@@ -35,8 +60,9 @@ github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym
github.com/GoogleCloudPlatform/k8s-cloud-provider v0.0.0-20200415212048-7901bc822317/go.mod h1:DF8FZRxMHMGv/vP2lQP6h+dYzzjpuRn24VeRiYn3qjQ=
github.com/JeffAshton/win_pdh v0.0.0-20161109143554-76bb4ee9f0ab/go.mod h1:3VYc5hodBMJ5+l/7J4xAyMeuM2PNuepvHlGs8yilUCA=
github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd/go.mod h1:64YHyfSL2R96J44Nlwm39UHepQbyR5q10x7iYa1ks2E=
-github.com/Masterminds/semver v1.3.1/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y=
-github.com/Masterminds/sprig v2.17.1+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o=
+github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU=
+github.com/Masterminds/semver/v3 v3.1.0/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs=
+github.com/Masterminds/sprig/v3 v3.1.0/go.mod h1:ONGMf7UfYGAbMXCZmQLy8x3lCDIPrEZE/rU8pmrbihA=
github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw=
github.com/Microsoft/hcsshim v0.8.10-0.20200715222032-5eafd1556990/go.mod h1:ay/0dTb7NsG8QMDfsRfLHgZo/6xAJShLe1+ePPflihk=
github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ=
@@ -57,9 +83,9 @@ github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRF
github.com/aliyun/alibaba-cloud-sdk-go v1.61.264 h1:5o7dIWOmKWEujFfzD3XV8EmpnCbqekpTqdEsBlfNp6c=
github.com/aliyun/alibaba-cloud-sdk-go v1.61.264/go.mod h1:pUKYbK5JQ+1Dfxk80P0qxGqe5dkxDoabbZS7zOcouyA=
github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8=
-github.com/aokoli/goutils v1.0.1/go.mod h1:SijmP0QR8LtwsmDs8Yii5Z/S4trXFGFC2oO5g9DP+DQ=
github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM=
github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk=
+github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJEynmyUenKwP++x/+DdGV/Ec=
github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=
@@ -71,8 +97,9 @@ github.com/aws/amazon-ec2-instance-selector/v2 v2.0.1/go.mod h1:juzWzDAyOHbufroh
github.com/aws/aws-sdk-go v1.6.10/go.mod h1:ZRmQr0FajVIyZ4ZzBYKG5P3ZqPz9IHG41ZoMu1ADI3k=
github.com/aws/aws-sdk-go v1.28.2/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
github.com/aws/aws-sdk-go v1.31.12/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0=
-github.com/aws/aws-sdk-go v1.35.10 h1:FsJtrOS7P+Qmq1rPTGgS/+qC1Y9eGuAJHvAZpZlhmb4=
-github.com/aws/aws-sdk-go v1.35.10/go.mod h1:tlPOdRjfxPBpNIwqDj61rmsnA85v9jc0Ps9+muhnW+k=
+github.com/aws/aws-sdk-go v1.35.24 h1:U3GNTg8+7xSM6OAJ8zksiSM4bRqxBWmVwwehvOSNG3A=
+github.com/aws/aws-sdk-go v1.35.24/go.mod h1:tlPOdRjfxPBpNIwqDj61rmsnA85v9jc0Ps9+muhnW+k=
+github.com/bazelbuild/bazel-gazelle v0.19.1 h1:TSCGVqpHStCj1MTszuDfZt6Z2Ca8ekq2oWiqcHKVEAE=
github.com/bazelbuild/bazel-gazelle v0.19.1/go.mod h1:rPwzNHUqEzngx1iVBfO/2X2npKaT3tqPqqHW6rVsn/A=
github.com/bazelbuild/buildtools v0.0.0-20190731111112-f720930ceb60 h1:OfyUN/Msd8yqJww6deQ9vayJWw+Jrbe6Qp9giv51QQI=
github.com/bazelbuild/buildtools v0.0.0-20190731111112-f720930ceb60/go.mod h1:5JP0TXzWDHXv8qvxRC4InIazwdyDseBDbzESUMKk1yU=
@@ -84,6 +111,7 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
github.com/bifurcation/mint v0.0.0-20180715133206-93c51c6ce115/go.mod h1:zVt7zX3K/aDCk9Tj+VM7YymsX66ERvzCJzw8rFCX2JU=
+github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84=
github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ=
@@ -132,6 +160,7 @@ github.com/coredns/corefile-migration v1.0.10/go.mod h1:RMy/mXdeDlYwzt0vdMEJvT2h
github.com/coreos/bbolt v1.3.2 h1:wZwiHHUieZCquLkDL0B8UhzreNWsPHooDAG3q34zk0s=
github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
+github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
github.com/coreos/etcd v3.3.17+incompatible h1:f/Z3EoDSx1yjaIjLQGo1diYUlQYSBrrAQ5vP8NjwXwo=
github.com/coreos/etcd v3.3.17+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk=
@@ -164,14 +193,13 @@ github.com/denverdino/aliyungo v0.0.0-20191128015008-acd8035bbb1d/go.mod h1:dV8l
github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM=
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no=
-github.com/digitalocean/godo v1.19.0 h1:9ApuchfzGD/XI8Zm0RRnZnytdfYHPjPTRKTnmzQNV7o=
-github.com/digitalocean/godo v1.19.0/go.mod h1:AAPQ+tiM4st79QHlEBTg8LM7JQNre4SAQCbn56wEyKY=
+github.com/digitalocean/godo v1.54.0 h1:KP0Nv87pgViR8k/7De3VrmflCL5pJqXbNnkcw0bwG10=
+github.com/digitalocean/godo v1.54.0/go.mod h1:p7dOjjtSBqCTUksqtA5Fd3uaKs9kyTq2xcz76ulEJRU=
github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E=
github.com/docker/distribution v2.7.1-0.20190205005809-0d3efadf0154+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
github.com/docker/docker v0.7.3-0.20190327010347-be7ac8be2ae0/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
github.com/docker/docker v1.4.2-0.20200309214505-aa6a9891b09c/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
-github.com/docker/engine-api v0.0.0-20160509170047-dea108d3aa0c/go.mod h1:xtQCpzf4YysNZCVFfIGIm7qfLvYbxtLkEVVfKhTVOvw=
github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec=
github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
@@ -185,6 +213,7 @@ github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkg
github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs=
github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs=
github.com/emicklei/go-restful v2.9.6+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs=
+github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
github.com/euank/go-kmsg-parser v2.0.0+incompatible/go.mod h1:MhmAMZ8V4CYH4ybgdRwPr2TU5ThnS43puaKEMpja1uw=
@@ -206,8 +235,11 @@ github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0
github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q=
github.com/go-acme/lego v2.5.0+incompatible/go.mod h1:yzMNe9CasVUhkquNvti5nAtPmG94USbYxYrZfTkIn0M=
github.com/go-bindata/go-bindata v3.1.1+incompatible/go.mod h1:xK8Dsgwmeed+BBsSy2XTopBn/8uK2HWuGSnA11C3Joo=
+github.com/go-bindata/go-bindata v3.1.2+incompatible h1:5vjJMVhowQdPzjE1LdxyFF7YFTXg5IgGVW4gBr5IbvE=
github.com/go-bindata/go-bindata v3.1.2+incompatible/go.mod h1:xK8Dsgwmeed+BBsSy2XTopBn/8uK2HWuGSnA11C3Joo=
+github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
+github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-ini/ini v1.9.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8=
github.com/go-ini/ini v1.51.0 h1:VPJKXGzbKlyExUE8f41aV57yxkYx5R49yR6n7flp0M0=
github.com/go-ini/ini v1.51.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8=
@@ -221,6 +253,8 @@ github.com/go-logr/logr v0.2.0 h1:QvGt2nLcHH0WK9orKa+ppBPAxREcH364nPUedEpK0TY=
github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU=
github.com/go-logr/logr v0.2.1-0.20200730175230-ee2de8da5be6 h1:ZPVluSmhtMIHlqUDMZu70FgMpRzbQfl4h9oKCAXOVDE=
github.com/go-logr/logr v0.2.1-0.20200730175230-ee2de8da5be6/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU=
+github.com/go-logr/logr v0.3.0 h1:q4c+kbcR0d5rSurhBR8dIgieOaYpXtsdTYfx22Cu6rs=
+github.com/go-logr/logr v0.3.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU=
github.com/go-logr/zapr v0.1.0/go.mod h1:tabnROwaDl0UNxkVeFRbY8bwB37GwRv0P8lg6aAiEnk=
github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI=
github.com/go-openapi/analysis v0.17.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik=
@@ -270,6 +304,7 @@ github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LB
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
+github.com/gobuffalo/flect v0.2.0 h1:EWCvMGGxOjsgwlWaP+f4+Hh6yrrte7JeFL2S6b+0hdM=
github.com/gobuffalo/flect v0.2.0/go.mod h1:W3K3X9ksuZfir8f/LrfVtWmCDQFfayuylOJ7sz/Fj80=
github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/gogo/protobuf v0.0.0-20171007142547-342cbe0a0415 h1:WSBJMqJbLxsn+bTCPyPYZfqHdJmc8MK4wrBjMft6BAM=
@@ -289,9 +324,13 @@ github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4er
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7 h1:5ZkaAPbicIKTF2I64qf5Fh8Aa83Q/dnOafMYV0OMwjA=
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
+github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY=
+github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
+github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
+github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM=
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
@@ -299,6 +338,7 @@ github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5y
github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs=
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
+github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk=
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
@@ -323,30 +363,36 @@ github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4=
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM=
+github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk=
github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
+github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g=
github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
+github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
+github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
github.com/google/uuid v1.0.0 h1:b4Gk+7WdP/d3HZH8EJsZpvV7EtDOgaZLtnaNGIu1adA=
github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY=
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y=
+github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
github.com/googleapis/gax-go/v2 v2.0.5 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM=
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
github.com/googleapis/gnostic v0.3.1/go.mod h1:on+2t9HRStVgn95RSsFWFz+6Q0Snyqv1awfrALZdbtU=
github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg=
-github.com/gophercloud/gophercloud v0.0.0-20190212181753-892256c46858/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8=
github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8=
-github.com/gophercloud/gophercloud v0.7.1-0.20200116010453-5391bb776e58/go.mod h1:Kc/QKr9thLKruO/dG0szY8kRIYS+iENz0ziI0hJf76A=
+github.com/gophercloud/gophercloud v0.6.1-0.20191122030953-d8ac278c1c9d/go.mod h1:ozGNgr9KYOVATV5jsgHl/ceCDXGuguqOZAzoQ/2vcNM=
github.com/gophercloud/gophercloud v0.11.1-0.20200518183226-7aec46f32c19 h1:Amaxs7PsvtzbahUHadno+OZI0IrMqwbPhoGUVLdM1NA=
github.com/gophercloud/gophercloud v0.11.1-0.20200518183226-7aec46f32c19/go.mod h1:gmC5oQqMDOMO1t1gq5DquX/yAU808e/4mzjjDA76+Ss=
-github.com/gophercloud/utils v0.0.0-20191020172814-bd86af96d544/go.mod h1:SZ9FTKibIotDtCrxAU/evccoyu1yhKST6hgBvwTB5Eg=
+github.com/gophercloud/utils v0.0.0-20200423144003-7c72efc7435d/go.mod h1:ehWUbLQJPqS0Ep+CxeD559hsm9pthPXadJNKwZkp43w=
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8=
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg=
@@ -355,6 +401,8 @@ github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c h1:Lh2aW+HnU2Nbe
github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
github.com/gorilla/websocket v1.4.0 h1:WDFjx/TMzVgy9VdMMQi2K2Emtwi2QcUQsztZ/zLaH/Q=
github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
+github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc=
+github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4 h1:z53tR0945TRRQO/fLEVPI6SMv7ZflF0TEaTAoU7tOzg=
@@ -364,6 +412,8 @@ github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgf
github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY=
github.com/grpc-ecosystem/grpc-gateway v1.9.5 h1:UImYN5qQ8tuGpGE16ZmjvcTtTw24zw1QAp/SlnNrZhI=
github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY=
+github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q=
+github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8=
github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA=
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
@@ -378,6 +428,7 @@ github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHh
github.com/hashicorp/go-plugin v1.0.1/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY=
github.com/hashicorp/go-retryablehttp v0.5.4 h1:1BZvpawXoJCWX6pNtow9+rpEj+3itIlutiqnntI6jOE=
github.com/hashicorp/go-retryablehttp v0.5.4/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs=
+github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU=
github.com/hashicorp/go-rootcerts v1.0.1 h1:DMo4fmknnz0E0evoNYnV48RjWndOsmd6OW+09R3cEP8=
github.com/hashicorp/go-rootcerts v1.0.1/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8=
github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU=
@@ -388,6 +439,7 @@ github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b
github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
+github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90=
github.com/hashicorp/golang-lru v0.0.0-20180201235237-0fb14efe8c47/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
@@ -395,8 +447,12 @@ github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uG
github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
-github.com/hashicorp/hcl/v2 v2.3.0/go.mod h1:d+FwDBbOLvpAM3Z6J7gPj/VoAGkNe/gm352ZhjJ/Zv8=
+github.com/hashicorp/hcl/v2 v2.7.0/go.mod h1:bQTN5mpo+jewjJgh8jr0JUguIi7qPHUF6yIfAEN3jqY=
+github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64=
+github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ=
+github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I=
github.com/hashicorp/memberlist v0.1.4/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I=
+github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc=
github.com/hashicorp/vault/api v1.0.4 h1:j08Or/wryXT4AcHj1oCbMd7IijXcKzYUGw59LGu9onU=
github.com/hashicorp/vault/api v1.0.4/go.mod h1:gDcqh3WGcR1cpF5AJz/B1UFheUEneMoIospckxBxk6Q=
github.com/hashicorp/vault/sdk v0.1.13 h1:mOEPeOhT7jl0J4AMl1E705+BcmeRs1VmKNb9F0sMLy8=
@@ -406,10 +462,11 @@ github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKe
github.com/heketi/heketi v9.0.1-0.20190917153846-c2e2a4ab7ab9+incompatible/go.mod h1:bB9ly3RchcQqsQ9CpyaQwvva7RS5ytVoSoholZQON6o=
github.com/heketi/tests v0.0.0-20151005000721-f3775cbcefd6/go.mod h1:xGMAM8JLi7UkZt1i4FQeQy0R2T8GLUwQhOP5M1gBhy4=
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
-github.com/huandu/xstrings v1.2.0/go.mod h1:DvyZB1rfVYsBIigL8HwpZgxHwXozlTgGqn63UyNX5k4=
+github.com/huandu/xstrings v1.3.1/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
github.com/imdario/mergo v0.3.7/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
+github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
github.com/imdario/mergo v0.3.9/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM=
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
@@ -432,7 +489,6 @@ github.com/json-iterator/go v1.1.5 h1:gL2yXlmiIo4+t+y32d4WGwOjKGYcGOuyrg46vadswD
github.com/json-iterator/go v1.1.5/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
-github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.10 h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr68=
github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
@@ -465,6 +521,7 @@ github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/kubernetes-csi/csi-lib-utils v0.6.1/go.mod h1:GVmlUmxZ+SUjVLXicRFjqWUUvWez0g0Y78zNV9t7KfQ=
github.com/kubernetes-csi/csi-test v2.2.0+incompatible/go.mod h1:YxJ4UiuPWIhMBkxUKY5c267DyA0uDZ/MtAimhx/2TA0=
+github.com/kubernetes-csi/csi-test/v3 v3.1.0/go.mod h1:UWxYP5cDlD6iSNVKEiLFqfJnJinuhtI7MLt61rQQOfI=
github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k=
github.com/libopenstorage/openstorage v1.0.0/go.mod h1:Sp1sIObHjat1BeXhfMqLZ14wnOzEhNx2YQedreMcUyc=
github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE=
@@ -486,6 +543,9 @@ github.com/marten-seemann/qtls v0.2.3/go.mod h1:xzjG7avBwGGbdZ8dTGxlBnLArsVKLvwm
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
github.com/mattn/go-colorable v0.1.2 h1:/bC9yWikZXAL9uJdulbSfyVNIR3n3trXl+v8+1sx8mU=
github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
+github.com/mattn/go-ieproxy v0.0.0-20190702010315-6dee0af9227d/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc=
+github.com/mattn/go-ieproxy v0.0.1 h1:qiyop7gCflfhwCzGyeT0gro3sF9AIg9HU98JORTkqfI=
+github.com/mattn/go-ieproxy v0.0.1/go.mod h1:pYabZ6IHcRpFh7vIaLfK7rdcWgFEb3SFJ6/gNWuh88E=
github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
github.com/mattn/go-isatty v0.0.8 h1:HLtExJ+uU2HOZ+wI0Tt5DtUDrx8yhUqDcp7fYERX4CE=
@@ -504,12 +564,16 @@ github.com/mindprince/gonvml v0.0.0-20190828220739-9ebdce4bb989/go.mod h1:2eu9pR
github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible/go.mod h1:8AuVvqP/mXw1px98n46wfvcGfQ4ci2FwoAjKYxuo3Z4=
github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc=
github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw=
+github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo=
github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo=
+github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg=
+github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY=
+github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE=
github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
@@ -541,6 +605,7 @@ github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
+github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg=
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
@@ -565,6 +630,7 @@ github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144T
github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k=
github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc=
github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
+github.com/pelletier/go-toml v1.4.0 h1:u3Z1r+oOXJIkxqw34zVhyPgjBsm6X2wn21NWs/HfSeg=
github.com/pelletier/go-toml v1.4.0/go.mod h1:PN7xzY2wHTK0K9p34ErDQMlFxa51Fk0OUruD3k1mMwo=
github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
github.com/pierrec/lz4 v2.0.5+incompatible h1:2xWsjqPFWcplujydGg4WmhC/6fZqK42wMM8aXeqhl0I=
@@ -587,7 +653,6 @@ github.com/prometheus/client_golang v0.9.2 h1:awm861/B8OKDd2I/6o1dy3ra4BamzKhYOi
github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM=
github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso=
github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
-github.com/prometheus/client_golang v1.4.1/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU=
github.com/prometheus/client_golang v1.7.1 h1:NTGy1Ja9pByO+xAeH/qiWnLrKtr3hJPNjaVUwnjpdpA=
github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910 h1:idejC8f05m9MGOsuEi1ATq9shN03HrxNkD/luQvxCv8=
@@ -601,7 +666,6 @@ github.com/prometheus/common v0.0.0-20181126121408-4724e9255275 h1:PnBWHBf+6L0jO
github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro=
github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
-github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4=
github.com/prometheus/common v0.10.0 h1:RyRA7RzGXQZiW+tGMr7sxa85G1z0yOpM1qq5c8lNawc=
github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo=
github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
@@ -610,13 +674,13 @@ github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a h1:9a8MnZMP0X2nL
github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
-github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A=
github.com/prometheus/procfs v0.0.11/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
github.com/prometheus/procfs v0.1.3 h1:F0+tqvhOksq22sc6iCHF5WGlWjdwj92p0udFh1VFBS8=
github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
github.com/quobyte/api v0.1.2/go.mod h1:jL7lIHrmqQ7yh05OJ+eEEdHr0u/kmT1Ff9iHd+4H6VI=
github.com/remyoudompheng/bigfft v0.0.0-20170806203942-52369c62f446/go.mod h1:uYEyJGbgTkfkS4+E/PavXkNJcbFIpEtjt2B0KDQ5+9M=
+github.com/robertkrimen/otto v0.0.0-20191219234010-c382bd3c16ff/go.mod h1:xvqspoSXJTIpemEonrMDFq6XzwHYYgToXWj5eRX1OtY=
github.com/robfig/cron v1.1.0/go.mod h1:JGuDeoQd7Z6yL4zQhZ3OPEVHB7fL6Ka6skscFHfmt2k=
github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
@@ -624,6 +688,7 @@ github.com/rubiojr/go-vhd v0.0.0-20200706105327-02e210299021/go.mod h1:DM5xW0nvf
github.com/russross/blackfriday v0.0.0-20170610170232-067529f716f4/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
+github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
github.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkBk=
github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc=
@@ -651,11 +716,15 @@ github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B
github.com/spf13/afero v1.2.2 h1:5jhuqJyZCZf2JRofRvN/nIFgIWNzPa3/Vz8mYylgbWc=
github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk=
github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
+github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
github.com/spf13/cobra v0.0.5 h1:f0B+LkLX6DtmRH1isoNA9VTtNUK9K8xYd28JNNfOv/s=
github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU=
github.com/spf13/cobra v0.0.7/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE=
+github.com/spf13/cobra v1.0.0 h1:6m/oheQuQ13N9ks4hubMG6BnvwOeaJrqSPLahSnczz8=
github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE=
+github.com/spf13/cobra v1.1.1 h1:KfztREH0tPxJJ+geloSLaAkaPkr4ki2Er5quFV1TDo4=
+github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI=
github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo=
github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo=
github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
@@ -667,6 +736,7 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s=
github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE=
+github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg=
github.com/spotinst/spotinst-sdk-go v1.58.0/go.mod h1:nWi2DyjUi1WUZclpsqZFXvImsU0T39ppqqHwC4/T5mw=
github.com/storageos/go-api v0.0.0-20180912212459-343b3eff91fc/go.mod h1:ZrLn+e0ZuF3Y65PNF6dIwbJPZqfmtCXxFm9ckv0agOY=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
@@ -678,6 +748,9 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4=
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
+github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0=
+github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww=
github.com/thecodeteam/goscaleio v0.1.0/go.mod h1:68sdkZAsK8bvEwBlbQnlLS+xU+hvLYM/iQ8KXej1AwM=
github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk=
@@ -703,6 +776,7 @@ github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q
github.com/xlab/handysort v0.0.0-20150421192137-fb3537ed64a1/go.mod h1:QcJo0QPSfTONNIgpN5RA8prR7fF8nkF6cTWTcNerRO8=
github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/zclconf/go-cty v1.2.0/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8=
github.com/zclconf/go-cty v1.3.1/go.mod h1:YO23e2L18AG+ZYQfSobnY4G65nvwvprPCxBHkufUH1k=
go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
@@ -718,6 +792,8 @@ go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
go.opencensus.io v0.22.2 h1:75k/FF0Q2YM8QYo07VPddOLBslDt1MZOdEslOHvmzAs=
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
+go.opencensus.io v0.22.3 h1:8sGtKOrtQqkN1bp2AtX+misvLIlOmsEsNd+9NIcPEm8=
+go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
go.uber.org/atomic v1.3.2 h1:2Oa65PReHzfn29GpvgsYwloV9AVFHPDk8tYxt2c2tr4=
go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
go.uber.org/atomic v1.4.0 h1:cxzIVoETapQEqDhQu3QfnvXAV4AlzcvUCxkVUFw3+EU=
@@ -745,9 +821,11 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U
golang.org/x/crypto v0.0.0-20191202143827-86a70503ff7e h1:egKlR8l7Nu9vHGWbcUV8lqR4987UfUbBd7GbhqGzNYU=
golang.org/x/crypto v0.0.0-20191202143827-86a70503ff7e/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20200414173820-0848c9571904/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0 h1:hb9wdF1z5waM+dSIICn1l0DkLVDT3hqhhQsDNUmHPRE=
+golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
@@ -756,7 +834,12 @@ golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL
golang.org/x/exp v0.0.0-20190312203227-4b39c73a6495/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=
+golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=
+golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
+golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
+golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
+golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs=
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
@@ -766,12 +849,16 @@ golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTk
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
+golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=
+golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
+golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
+golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
@@ -798,23 +885,28 @@ golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20191112182307-2180aed22343/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20191126235420-ef20fe5d7933/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200202094626-16171245cfb2 h1:CCH4IOTTfewWjGOlSp+zGcjutRKlBEZQ6wTn8ozI/nI=
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200707034311-ab3426394381 h1:VXak5I6aEWmAXeQjA+QSZzlgNrpq9mjcfDemuexIKsU=
golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
+golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
+golang.org/x/net v0.0.0-20201110031124-69a78807bb2b h1:uwuIcX0g4Yl1NC5XAz37xsr2lTtcqevgzYNVt49waME=
+golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
-golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a h1:tImsplftrFpALCYumobsd0K86vlAs/eXGFms2txfJfA=
-golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6 h1:pE8b58s1HRDMi8RDc79m0HISf9D4TzseP40cEA6IGfs=
golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -825,7 +917,10 @@ golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e h1:vcxGaoTs7kV8m5Np9uUNQin4BrLOthgV7252N8V+FwY=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9 h1:SQFwaSi55rU7vdNs9Yr0Z324VNlrF+0wMqRXT4St8ck=
+golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -855,11 +950,15 @@ golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191112214154-59a1497f0cea/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191113165036-4c7a9d0fe056/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191128015809-6d18c012aee9 h1:ZBzSG/7F4eNKz2L3GE9o300RX0Az1Bw5HF7PDraD+qU=
@@ -867,18 +966,26 @@ golang.org/x/sys v0.0.0-20191128015809-6d18c012aee9/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200120151820-655fe14d7479/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200217220822-9197077df867/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200327173247-9dae0f8f5775/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4 h1:5/PjkGUjvEU5Gl6BxmvKRPpqo2uNMv4rcHBMwzk/st8=
golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201112073958-5cba982894dd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201126233918-771906719818 h1:f1CIuDlJhwANEC2MM87MBEVMr3jl5bifgsfj90XAF9c=
+golang.org/x/sys v0.0.0-20201126233918-771906719818/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -888,6 +995,8 @@ golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.4 h1:0YWbFKbhXG/wIiuHDSKpS0Iy7FSA+u45VtBMfQcFTTc=
+golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2 h1:+DCIGbF/swA92ohVg0//6X2IVY3KZs6p9mix0ziNYJM=
golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
@@ -923,21 +1032,38 @@ golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtn
golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20190920225731-5eefd052ad72/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191203134012-c197fd4bf371 h1:Cjq6sG3gnKDchzWy7ouGQklhxMtWvh4AhSNJ0qGIeo4=
golang.org/x/tools v0.0.0-20191203134012-c197fd4bf371/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
+golang.org/x/tools v0.0.0-20200410194907-79a7a3126eef/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200616133436-c1934b75d054 h1:HHeAlu5H9b71C+Fx0K+1dGgVFN1DM1/wz4aoGOA5qS8=
golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200626171337-aa94e735be7f h1:JcoF/bowzCDI+MXu1yLqQGNO3ibqWsWq+Sk7pOT218w=
golang.org/x/tools v0.0.0-20200626171337-aa94e735be7f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20201125231158-b5590deeca9b h1:Lq5JUTFhiybGVf28jB6QRpqd13/JPOaCnET17PVzYJE=
+golang.org/x/tools v0.0.0-20201125231158-b5590deeca9b/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
gomodules.xyz/jsonpatch/v2 v2.0.1/go.mod h1:IhYNNY4jnS53ZnfE4PAmpKtDpTCj1JFXc+3mwe7XcUU=
gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo=
gonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485/go.mod h1:2ltnJ7xHfj0zHS40VVPYEAAMTa3ZGguvHGBSJeRWqE0=
@@ -949,10 +1075,15 @@ google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEt
google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
+google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
+google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
google.golang.org/api v0.15.1-0.20200106000736-b8fc810ca6b5/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
google.golang.org/api v0.15.1 h1:5mMS6mYvK5LVB8+ujVBC33Y8gltBo/kT6HBm6kU80G4=
google.golang.org/api v0.15.1/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
+google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
+google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
+google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
google.golang.org/api v0.22.0 h1:J1Pl9P2lnmYFSJvgs70DKELqHNh8CNWXPbud4njEE2s=
google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
@@ -961,7 +1092,6 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7
google.golang.org/appengine v1.5.0 h1:KxkO13IPW4Lslp2bz+KHP2E3gtFlrIGNThxkZQ3g+4c=
google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
-google.golang.org/appengine v1.6.2/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
google.golang.org/appengine v1.6.5 h1:tycE03LOZYQNhDpS27tcQdAzLCVMaj7QT2SXxebnpCM=
google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8 h1:Nw54tB0rB7hY/N0NQvRW8DG4Yk3Q6T9cu9RcFQDu1tc=
@@ -974,8 +1104,17 @@ google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRn
google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=
+google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20191114150713-6bbd007550de/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA=
+google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY=
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
@@ -986,6 +1125,7 @@ google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ij
google.golang.org/grpc v1.22.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
+google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.27.0 h1:rRYRFMVgRv6E0D70Skyfsr28tDXIuuPZyWGMPdMcnXg=
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
@@ -1024,6 +1164,7 @@ gopkg.in/ini.v1 v1.57.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/mcuadros/go-syslog.v2 v2.2.1/go.mod h1:l5LPIyOOyIdQquNg+oU6Z3524YwrcqEm0aKH+5zpt2U=
gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k=
gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo=
+gopkg.in/sourcemap.v1 v1.0.5/go.mod h1:2RlvNNSMglmRrcvhfuzp4hQHwOtjxlbjX7UPY/GXb78=
gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI=
gopkg.in/square/go-jose.v2 v2.3.1 h1:SK5KegNXmKmqE342YYN2qPHEnUYeoMiXXl1poUlI+o4=
gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI=
@@ -1043,19 +1184,30 @@ gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU=
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
+gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
gopkg.in/yaml.v3 v3.0.0-20190905181640-827449938966 h1:B0J02caTR6tpSJozBJyiAzT6CtBzjclw4pgm9gg8Ys0=
gopkg.in/yaml.v3 v3.0.0-20190905181640-827449938966/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 h1:tQIYjPdBoyREyB9XMu+nnTclpTYkz2zFM+lzLJFO4gQ=
+gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw=
gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk=
+helm.sh/helm v2.17.0+incompatible/go.mod h1:0Xbc6ErzwWH9qC55X1+hE3ZwhM3atbhCm/NbFZw5i+4=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM=
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
+honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
honnef.co/go/tools v0.0.1-2020.1.4 h1:UoveltGrhghAA7ePc+e+QYDHXrBps2PqFZiHkGR/xK8=
honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
+honnef.co/go/tools v0.0.1-2020.1.6 h1:W18jzjh8mfPez+AwGLxmOImucz/IFjpNlrKVnaj2YVc=
+honnef.co/go/tools v0.0.1-2020.1.6/go.mod h1:pyyisuGw24ruLjrr1ddx39WE0y9OooInRzEYLhQB2YY=
+k8s.io/api v0.19.0 h1:XyrFIJqTYZJ2DU7FBE/bSPz7b1HvbVBuBf07oeo6eTc=
k8s.io/api v0.19.0/go.mod h1:I1K45XlvTrDjmj5LoM5LuP/KYrhWbjUKT/SoPG0qTjw=
+k8s.io/apiextensions-apiserver v0.19.0 h1:jlY13lvZp+0p9fRX2khHFdiT9PYzT7zUrANz6R1NKtY=
k8s.io/apiextensions-apiserver v0.19.0/go.mod h1:znfQxNpjqz/ZehvbfMg5N6fvBJW5Lqu5HVLTJQdP4Fs=
k8s.io/apimachinery v0.19.5-rc.0 h1:OmODRZnh5zOszqF23BmTcOSpnkaXqNm2ToWcyVPDcg8=
k8s.io/apimachinery v0.19.5-rc.0/go.mod h1:DnPGDnARWFvYa3pMHgSxtbZb7gpzzAZ1pTfaUNDVlmA=
@@ -1064,7 +1216,7 @@ k8s.io/cli-runtime v0.19.0/go.mod h1:tun9l0eUklT8IHIM0jors17KmUjcrAxn0myoBYwuNuo
k8s.io/client-go v0.19.0 h1:1+0E0zfWFIWeyRhQYWzimJOyAk2UT7TiARaLNwJCf7k=
k8s.io/client-go v0.19.0/go.mod h1:H9E/VT95blcFQnlyShFgnFT9ZnJOAceiUHM3MlRC+mU=
k8s.io/cloud-provider v0.19.0/go.mod h1:TYh7b7kQ6wiqF7Ftb+u3lN4IwvgOPbBrcvC3TDAW4cw=
-k8s.io/cloud-provider-openstack v1.18.0/go.mod h1:03202t5Sp+4Vmk6pxJ/hVH0fEkm9gMc/pku/QpkJQMQ=
+k8s.io/cloud-provider-openstack v1.19.2/go.mod h1:J/X/tgKwUDtsrfdJ4aL0iEQLi/8chdbs4rAiYznYwPQ=
k8s.io/cluster-bootstrap v0.19.0/go.mod h1:kBn1DKyqoM245wzz+AAnGkuysJ+9GqVbPYveTo4KiaA=
k8s.io/code-generator v0.19.5-rc.0/go.mod h1:moqLn7w0t9cMs4+5CQyxnfA/HV8MF6aAVENF+WZZhgk=
k8s.io/component-base v0.19.0/go.mod h1:dKsY8BxkA+9dZIAh2aWJLL/UdASFDNtGYTCItL4LM7Y=
@@ -1072,20 +1224,18 @@ k8s.io/cri-api v0.19.4-rc.0/go.mod h1:UN/iU9Ua0iYdDREBXNE9vqCJ7MIh/FW3VIL0d8pw7F
k8s.io/csi-translation-lib v0.19.0/go.mod h1:zGS1YqV8U2So/t4Hz8SoRXMx5y5/KSKnA6BXXxGuo4A=
k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0=
k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0=
-k8s.io/gengo v0.0.0-20200710205751-c0d492a0f3ca/go.mod h1:aG2eeomYfcUw8sE3fa7YdkjgnGtyY56TjZlaJJ0ZoWo=
+k8s.io/gengo v0.0.0-20201113003025-83324d819ded/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E=
k8s.io/heapster v1.2.0-beta.1/go.mod h1:h1uhptVXMwC8xtZBYsPXKVi8fpdlYkTs6k949KozGrM=
-k8s.io/helm v2.9.0+incompatible/go.mod h1:LZzlS4LQBHfciFOurYBFkCMTaZ0D1l+p0teMg7TSULI=
-k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk=
k8s.io/klog v0.3.1/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk=
k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8=
k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I=
k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE=
k8s.io/klog/v2 v2.2.0 h1:XRvcwJozkgZ1UQJmfMGpvRthQHOvihEhYtDfAaxMz/A=
k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y=
-k8s.io/klog/v2 v2.3.0 h1:WmkrnW7fdrm0/DMClc+HIxtftvxVIPAhlVwMQo5yLco=
-k8s.io/klog/v2 v2.3.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y=
-k8s.io/kops v1.19.0-beta.1 h1:GgyCa/BkF4srsKlolEk/M+UYnIuJg6bzZjLKZQ85f6Q=
-k8s.io/kops v1.19.0-beta.1/go.mod h1:HS+fNsUzDBfa0dMsKoy/+1DIpBV/O64mPkWCOK9um1I=
+k8s.io/klog/v2 v2.4.0 h1:7+X0fUguPyrKEC4WjH8iGDg3laWgMo5tMnRTIGTTxGQ=
+k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y=
+k8s.io/kops v1.19.0-alpha.5.0.20201129060248-dc1c2210cf77 h1:AFFPrShXLoNc/M6aYCh37nqgFyHEO5Cx2HJv5G48Y04=
+k8s.io/kops v1.19.0-alpha.5.0.20201129060248-dc1c2210cf77/go.mod h1:bEKidhfE257r4FHD2qfpgmD038kFk3eWgksQd7/Nufg=
k8s.io/kube-aggregator v0.19.0/go.mod h1:1Ln45PQggFAG8xOqWPIYMxUq8WNtpPnYsbUJ39DpF/A=
k8s.io/kube-controller-manager v0.19.0/go.mod h1:uGZyiHK73NxNEN5EZv/Esm3fbCOzeq4ndttMexVZ1L0=
k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o=
@@ -1098,11 +1248,12 @@ k8s.io/legacy-cloud-providers v0.19.0/go.mod h1:Q5czDCPnStdpFohMpcbnqL+MLR75kUhI
k8s.io/metrics v0.19.0/go.mod h1:WykpW8B60OeAJx1imdwUgyOID2kDljr/Q+1zrPJ98Wo=
k8s.io/sample-apiserver v0.19.0/go.mod h1:Bq9UulNoKnT72JqlkWF2JS14cXxJqcmvLtb5+EcwiNA=
k8s.io/system-validators v1.1.2/go.mod h1:bPldcLgkIUK22ALflnsXk8pvkTEndYdNuaHH6gRrl0Q=
-k8s.io/utils v0.0.0-20200324210504-a9aa75ae1b89/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew=
k8s.io/utils v0.0.0-20200414100711-2df71ebbae66/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
k8s.io/utils v0.0.0-20200603063816-c1c6865ac451/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
k8s.io/utils v0.0.0-20200729134348-d5654de09c73 h1:uJmqzgNWG7XyClnU/mLPBWwfKKF1K8Hf8whTseBgJcg=
k8s.io/utils v0.0.0-20200729134348-d5654de09c73/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
+k8s.io/utils v0.0.0-20201110183641-67b214c5f920 h1:CbnUZsM497iRC5QMVkHwyl8s2tB3g7yaSHkYPkpgelw=
+k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw=
modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk=
modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k=
@@ -1110,10 +1261,14 @@ modernc.org/strutil v1.0.0/go.mod h1:lstksw84oURvj9y3tn8lGvRxyRC1S2+g5uuIzNfIOBs
modernc.org/xc v1.0.0/go.mod h1:mRNCo0bvLjGhHO9WsyuKVU4q0ceiDDDoEeWDJHrNx8I=
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=
+rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
+rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.9/go.mod h1:dzAXnQbTRyDlZPJX2SUPEqvnB+j7AJjtlox7PEwigU0=
sigs.k8s.io/controller-runtime v0.6.1/go.mod h1:XRYBPdbf5XJu9kpS84VJiZ7h/u1hF3gEORz0efEja7A=
+sigs.k8s.io/controller-tools v0.2.8 h1:UmYsnu89dn8/wBhjKL3lkGyaDGRnPDYUx2+iwXRnylA=
sigs.k8s.io/controller-tools v0.2.8/go.mod h1:9VKHPszmf2DHz/QmHkcfZoewO6BL7pPs9uAiBVsaJSE=
sigs.k8s.io/kustomize v2.0.3+incompatible/go.mod h1:MkjgH3RdOWrievjo6c9T245dYlB5QeXV4WCbnt/PEpU=
+sigs.k8s.io/structured-merge-diff/v4 v4.0.1 h1:YXTMot5Qz/X1iBRJhAt+vI+HVttY0WkSqqhKxQ0xVbA=
sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw=
sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs=
sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
diff --git a/pkg/backup/BUILD.bazel b/pkg/backup/BUILD.bazel
index 4dad53f3..390e3304 100644
--- a/pkg/backup/BUILD.bazel
+++ b/pkg/backup/BUILD.bazel
@@ -12,7 +12,7 @@ go_library(
deps = [
"//pkg/apis/etcd:go_default_library",
"//pkg/ioutils:go_default_library",
- "//vendor/k8s.io/klog:go_default_library",
+ "//vendor/k8s.io/klog/v2:go_default_library",
"//vendor/k8s.io/kops/util/pkg/vfs:go_default_library",
],
)
diff --git a/pkg/backup/fs.go b/pkg/backup/fs.go
index 7c36b4c9..004b5ff2 100644
--- a/pkg/backup/fs.go
+++ b/pkg/backup/fs.go
@@ -26,7 +26,7 @@ import (
"sort"
"time"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
"kope.io/etcd-manager/pkg/apis/etcd"
protoetcd "kope.io/etcd-manager/pkg/apis/etcd"
"kope.io/etcd-manager/pkg/ioutils"
diff --git a/pkg/backup/vfs.go b/pkg/backup/vfs.go
index e448be97..5e62a3d7 100644
--- a/pkg/backup/vfs.go
+++ b/pkg/backup/vfs.go
@@ -26,7 +26,7 @@ import (
"strings"
"time"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
"k8s.io/kops/util/pkg/vfs"
"kope.io/etcd-manager/pkg/apis/etcd"
)
diff --git a/pkg/backupcontroller/BUILD.bazel b/pkg/backupcontroller/BUILD.bazel
index 25060426..93d41a69 100644
--- a/pkg/backupcontroller/BUILD.bazel
+++ b/pkg/backupcontroller/BUILD.bazel
@@ -15,7 +15,7 @@ go_library(
"//pkg/contextutil:go_default_library",
"//pkg/etcd:go_default_library",
"//pkg/etcdclient:go_default_library",
- "//vendor/k8s.io/klog:go_default_library",
+ "//vendor/k8s.io/klog/v2:go_default_library",
],
)
diff --git a/pkg/backupcontroller/cleanup.go b/pkg/backupcontroller/cleanup.go
index 799b64f5..7d00298f 100644
--- a/pkg/backupcontroller/cleanup.go
+++ b/pkg/backupcontroller/cleanup.go
@@ -24,7 +24,7 @@ import (
"strings"
"time"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
"kope.io/etcd-manager/pkg/backup"
)
diff --git a/pkg/backupcontroller/controller.go b/pkg/backupcontroller/controller.go
index 3ee75f11..ff9e9db0 100644
--- a/pkg/backupcontroller/controller.go
+++ b/pkg/backupcontroller/controller.go
@@ -22,7 +22,7 @@ import (
"fmt"
"time"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
protoetcd "kope.io/etcd-manager/pkg/apis/etcd"
"kope.io/etcd-manager/pkg/backup"
"kope.io/etcd-manager/pkg/contextutil"
diff --git a/pkg/commands/BUILD.bazel b/pkg/commands/BUILD.bazel
index 5612b7d2..b28ad88b 100644
--- a/pkg/commands/BUILD.bazel
+++ b/pkg/commands/BUILD.bazel
@@ -10,7 +10,7 @@ go_library(
visibility = ["//visibility:public"],
deps = [
"//pkg/apis/etcd:go_default_library",
- "//vendor/k8s.io/klog:go_default_library",
+ "//vendor/k8s.io/klog/v2:go_default_library",
"//vendor/k8s.io/kops/util/pkg/vfs:go_default_library",
],
)
diff --git a/pkg/commands/vfs.go b/pkg/commands/vfs.go
index 234c2c68..33ce887c 100644
--- a/pkg/commands/vfs.go
+++ b/pkg/commands/vfs.go
@@ -24,7 +24,7 @@ import (
"sort"
"time"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
"k8s.io/kops/util/pkg/vfs"
"kope.io/etcd-manager/pkg/apis/etcd"
protoetcd "kope.io/etcd-manager/pkg/apis/etcd"
diff --git a/pkg/contextutil/BUILD.bazel b/pkg/contextutil/BUILD.bazel
index 3d22f06a..f404ce97 100644
--- a/pkg/contextutil/BUILD.bazel
+++ b/pkg/contextutil/BUILD.bazel
@@ -5,5 +5,5 @@ go_library(
srcs = ["poll.go"],
importpath = "kope.io/etcd-manager/pkg/contextutil",
visibility = ["//visibility:public"],
- deps = ["//vendor/k8s.io/klog:go_default_library"],
+ deps = ["//vendor/k8s.io/klog/v2:go_default_library"],
)
diff --git a/pkg/contextutil/poll.go b/pkg/contextutil/poll.go
index 2ff1b2e8..1237c83b 100644
--- a/pkg/contextutil/poll.go
+++ b/pkg/contextutil/poll.go
@@ -20,7 +20,7 @@ import (
"context"
"time"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
)
func Sleep(ctx context.Context, duration time.Duration) error {
diff --git a/pkg/controller/BUILD.bazel b/pkg/controller/BUILD.bazel
index ab7289ea..bbb49944 100644
--- a/pkg/controller/BUILD.bazel
+++ b/pkg/controller/BUILD.bazel
@@ -29,6 +29,6 @@ go_library(
"//pkg/privateapi:go_default_library",
"//pkg/urls:go_default_library",
"//vendor/github.com/golang/protobuf/proto:go_default_library",
- "//vendor/k8s.io/klog:go_default_library",
+ "//vendor/k8s.io/klog/v2:go_default_library",
],
)
diff --git a/pkg/controller/commands.go b/pkg/controller/commands.go
index ad756af5..f68c4dad 100644
--- a/pkg/controller/commands.go
+++ b/pkg/controller/commands.go
@@ -20,7 +20,7 @@ import (
"context"
"time"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
protoetcd "kope.io/etcd-manager/pkg/apis/etcd"
"kope.io/etcd-manager/pkg/commands"
)
diff --git a/pkg/controller/controller.go b/pkg/controller/controller.go
index 6a97c98e..0e8812b6 100644
--- a/pkg/controller/controller.go
+++ b/pkg/controller/controller.go
@@ -30,7 +30,7 @@ import (
"time"
"github.com/golang/protobuf/proto"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
protoetcd "kope.io/etcd-manager/pkg/apis/etcd"
"kope.io/etcd-manager/pkg/backup"
"kope.io/etcd-manager/pkg/backupcontroller"
diff --git a/pkg/controller/etcdclusterstate.go b/pkg/controller/etcdclusterstate.go
index a125fd6a..9f1e4a07 100644
--- a/pkg/controller/etcdclusterstate.go
+++ b/pkg/controller/etcdclusterstate.go
@@ -22,7 +22,7 @@ import (
"crypto/tls"
"fmt"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
protoetcd "kope.io/etcd-manager/pkg/apis/etcd"
"kope.io/etcd-manager/pkg/etcdclient"
"kope.io/etcd-manager/pkg/privateapi"
diff --git a/pkg/controller/newcluster.go b/pkg/controller/newcluster.go
index 81e14788..e0a85099 100644
--- a/pkg/controller/newcluster.go
+++ b/pkg/controller/newcluster.go
@@ -22,7 +22,7 @@ import (
"strings"
"github.com/golang/protobuf/proto"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
protoetcd "kope.io/etcd-manager/pkg/apis/etcd"
"kope.io/etcd-manager/pkg/urls"
)
diff --git a/pkg/controller/reconcile_configuration.go b/pkg/controller/reconcile_configuration.go
index d774a1f9..b3412f14 100644
--- a/pkg/controller/reconcile_configuration.go
+++ b/pkg/controller/reconcile_configuration.go
@@ -22,7 +22,7 @@ import (
"reflect"
"sort"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
protoetcd "kope.io/etcd-manager/pkg/apis/etcd"
"kope.io/etcd-manager/pkg/etcdclient"
"kope.io/etcd-manager/pkg/privateapi"
diff --git a/pkg/controller/restore.go b/pkg/controller/restore.go
index ef0e9ef8..2cb04060 100644
--- a/pkg/controller/restore.go
+++ b/pkg/controller/restore.go
@@ -21,7 +21,7 @@ import (
"fmt"
"github.com/golang/protobuf/proto"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
protoetcd "kope.io/etcd-manager/pkg/apis/etcd"
"kope.io/etcd-manager/pkg/commands"
diff --git a/pkg/controller/upgrade.go b/pkg/controller/upgrade.go
index 087a1292..0142ed13 100644
--- a/pkg/controller/upgrade.go
+++ b/pkg/controller/upgrade.go
@@ -21,7 +21,7 @@ import (
"fmt"
"time"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
protoetcd "kope.io/etcd-manager/pkg/apis/etcd"
)
diff --git a/pkg/etcd/BUILD.bazel b/pkg/etcd/BUILD.bazel
index 6a208968..116322a1 100644
--- a/pkg/etcd/BUILD.bazel
+++ b/pkg/etcd/BUILD.bazel
@@ -26,6 +26,6 @@ go_library(
"//vendor/github.com/golang/protobuf/proto:go_default_library",
"//vendor/golang.org/x/net/context:go_default_library",
"//vendor/k8s.io/client-go/util/cert:go_default_library",
- "//vendor/k8s.io/klog:go_default_library",
+ "//vendor/k8s.io/klog/v2:go_default_library",
],
)
diff --git a/pkg/etcd/backup.go b/pkg/etcd/backup.go
index c09e26d7..a5f81274 100644
--- a/pkg/etcd/backup.go
+++ b/pkg/etcd/backup.go
@@ -25,7 +25,7 @@ import (
"os/exec"
"path/filepath"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
protoetcd "kope.io/etcd-manager/pkg/apis/etcd"
"kope.io/etcd-manager/pkg/backup"
"kope.io/etcd-manager/pkg/etcdclient"
diff --git a/pkg/etcd/etcdprocess.go b/pkg/etcd/etcdprocess.go
index 67fdaab5..b56d39bb 100644
--- a/pkg/etcd/etcdprocess.go
+++ b/pkg/etcd/etcdprocess.go
@@ -32,7 +32,7 @@ import (
"time"
certutil "k8s.io/client-go/util/cert"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
protoetcd "kope.io/etcd-manager/pkg/apis/etcd"
"kope.io/etcd-manager/pkg/backup"
"kope.io/etcd-manager/pkg/etcdclient"
diff --git a/pkg/etcd/etcdserver.go b/pkg/etcd/etcdserver.go
index d60b8694..0eeccbbc 100644
--- a/pkg/etcd/etcdserver.go
+++ b/pkg/etcd/etcdserver.go
@@ -27,7 +27,7 @@ import (
"github.com/golang/protobuf/proto"
"golang.org/x/net/context"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
protoetcd "kope.io/etcd-manager/pkg/apis/etcd"
"kope.io/etcd-manager/pkg/backup"
"kope.io/etcd-manager/pkg/contextutil"
diff --git a/pkg/etcd/pki.go b/pkg/etcd/pki.go
index 8115536d..59a42555 100644
--- a/pkg/etcd/pki.go
+++ b/pkg/etcd/pki.go
@@ -24,7 +24,7 @@ import (
"path/filepath"
certutil "k8s.io/client-go/util/cert"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
protoetcd "kope.io/etcd-manager/pkg/apis/etcd"
"kope.io/etcd-manager/pkg/pki"
)
diff --git a/pkg/etcd/restore.go b/pkg/etcd/restore.go
index 9c9801c3..23b12fd7 100644
--- a/pkg/etcd/restore.go
+++ b/pkg/etcd/restore.go
@@ -25,7 +25,7 @@ import (
"strings"
"time"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
protoetcd "kope.io/etcd-manager/pkg/apis/etcd"
"kope.io/etcd-manager/pkg/backup"
"kope.io/etcd-manager/pkg/etcdclient"
diff --git a/pkg/etcd/tar.go b/pkg/etcd/tar.go
index 81ef8a8f..7643a580 100644
--- a/pkg/etcd/tar.go
+++ b/pkg/etcd/tar.go
@@ -26,7 +26,7 @@ import (
"path"
"path/filepath"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
)
func createTgz(tgzFile string, srcdir string) error {
diff --git a/pkg/etcdclient/BUILD.bazel b/pkg/etcdclient/BUILD.bazel
index 0226a305..ab8cc545 100644
--- a/pkg/etcdclient/BUILD.bazel
+++ b/pkg/etcdclient/BUILD.bazel
@@ -16,6 +16,6 @@ go_library(
"//vendor/go.etcd.io/etcd/clientv3:go_default_library",
"//vendor/go.etcd.io/etcd/pkg/pathutil:go_default_library",
"//vendor/go.etcd.io/etcd/version:go_default_library",
- "//vendor/k8s.io/klog:go_default_library",
+ "//vendor/k8s.io/klog/v2:go_default_library",
],
)
diff --git a/pkg/etcdclient/interfaces.go b/pkg/etcdclient/interfaces.go
index 8f33e9c9..29d100c3 100644
--- a/pkg/etcdclient/interfaces.go
+++ b/pkg/etcdclient/interfaces.go
@@ -27,7 +27,7 @@ import (
"time"
etcd_client_v2 "go.etcd.io/etcd/client"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
)
// EtcdClient is an abstract client for V2 and V3
diff --git a/pkg/etcdclient/localnode.go b/pkg/etcdclient/localnode.go
index 9d9d97ae..5bc3205d 100644
--- a/pkg/etcdclient/localnode.go
+++ b/pkg/etcdclient/localnode.go
@@ -24,7 +24,7 @@ import (
etcd_client_v2 "go.etcd.io/etcd/client"
"go.etcd.io/etcd/pkg/pathutil"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
)
type v2SelfInfo struct {
diff --git a/pkg/etcdclient/v2.go b/pkg/etcdclient/v2.go
index 88e00b17..bfd24c5b 100644
--- a/pkg/etcdclient/v2.go
+++ b/pkg/etcdclient/v2.go
@@ -26,7 +26,7 @@ import (
"time"
etcd_client_v2 "go.etcd.io/etcd/client"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
)
// V2Client is a client for the etcd v2 API, implementing EtcdClient
diff --git a/pkg/etcdclient/v3.go b/pkg/etcdclient/v3.go
index 74442b6d..e038bc87 100644
--- a/pkg/etcdclient/v3.go
+++ b/pkg/etcdclient/v3.go
@@ -32,7 +32,7 @@ import (
etcd_client_v3 "go.etcd.io/etcd/clientv3"
"go.etcd.io/etcd/version"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
)
type V3Client struct {
diff --git a/pkg/etcdversions/BUILD.bazel b/pkg/etcdversions/BUILD.bazel
index 25b6ae05..24663f5d 100644
--- a/pkg/etcdversions/BUILD.bazel
+++ b/pkg/etcdversions/BUILD.bazel
@@ -7,6 +7,6 @@ go_library(
visibility = ["//visibility:public"],
deps = [
"//vendor/github.com/blang/semver:go_default_library",
- "//vendor/k8s.io/klog:go_default_library",
+ "//vendor/k8s.io/klog/v2:go_default_library",
],
)
diff --git a/pkg/etcdversions/mappings.go b/pkg/etcdversions/mappings.go
index 07e2e225..b5edadc6 100644
--- a/pkg/etcdversions/mappings.go
+++ b/pkg/etcdversions/mappings.go
@@ -20,7 +20,7 @@ import (
"fmt"
"github.com/blang/semver"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
)
// By declaring the versions here, using constants, we likely force a compilation error
diff --git a/pkg/hostmount/BUILD.bazel b/pkg/hostmount/BUILD.bazel
index f1c04f2c..e4daa95a 100644
--- a/pkg/hostmount/BUILD.bazel
+++ b/pkg/hostmount/BUILD.bazel
@@ -6,7 +6,7 @@ go_library(
importpath = "kope.io/etcd-manager/pkg/hostmount",
visibility = ["//visibility:public"],
deps = [
- "//vendor/k8s.io/klog:go_default_library",
+ "//vendor/k8s.io/klog/v2:go_default_library",
"//vendor/k8s.io/utils/mount:go_default_library",
"//vendor/k8s.io/utils/nsenter:go_default_library",
],
diff --git a/pkg/hostmount/nsenter.go b/pkg/hostmount/nsenter.go
index bad8cdfb..2e567e24 100644
--- a/pkg/hostmount/nsenter.go
+++ b/pkg/hostmount/nsenter.go
@@ -19,7 +19,7 @@ package hostmount
import (
"fmt"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
"k8s.io/utils/mount"
"k8s.io/utils/nsenter"
)
diff --git a/pkg/hosts/BUILD.bazel b/pkg/hosts/BUILD.bazel
index bc8a58f9..d83a07e2 100644
--- a/pkg/hosts/BUILD.bazel
+++ b/pkg/hosts/BUILD.bazel
@@ -7,7 +7,7 @@ go_library(
visibility = ["//visibility:public"],
deps = [
"//pkg/dns:go_default_library",
- "//vendor/k8s.io/klog:go_default_library",
+ "//vendor/k8s.io/klog/v2:go_default_library",
],
)
diff --git a/pkg/hosts/hosts.go b/pkg/hosts/hosts.go
index a042a283..e60ed107 100644
--- a/pkg/hosts/hosts.go
+++ b/pkg/hosts/hosts.go
@@ -29,7 +29,7 @@ import (
"sync"
"time"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
"kope.io/etcd-manager/pkg/dns"
)
diff --git a/pkg/legacy/BUILD.bazel b/pkg/legacy/BUILD.bazel
index 20104750..d2a10e39 100644
--- a/pkg/legacy/BUILD.bazel
+++ b/pkg/legacy/BUILD.bazel
@@ -10,6 +10,6 @@ go_library(
"//pkg/commands:go_default_library",
"//pkg/etcdversions:go_default_library",
"//vendor/gopkg.in/yaml.v2:go_default_library",
- "//vendor/k8s.io/klog:go_default_library",
+ "//vendor/k8s.io/klog/v2:go_default_library",
],
)
diff --git a/pkg/legacy/adopt.go b/pkg/legacy/adopt.go
index ce9366ce..f9598777 100644
--- a/pkg/legacy/adopt.go
+++ b/pkg/legacy/adopt.go
@@ -25,7 +25,7 @@ import (
"strings"
yaml "gopkg.in/yaml.v2"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
protoetcd "kope.io/etcd-manager/pkg/apis/etcd"
"kope.io/etcd-manager/pkg/commands"
"kope.io/etcd-manager/pkg/etcdversions"
diff --git a/pkg/locking/BUILD.bazel b/pkg/locking/BUILD.bazel
index fdabb58f..c471beef 100644
--- a/pkg/locking/BUILD.bazel
+++ b/pkg/locking/BUILD.bazel
@@ -11,7 +11,7 @@ go_library(
importpath = "kope.io/etcd-manager/pkg/locking",
visibility = ["//visibility:public"],
deps = [
- "//vendor/k8s.io/klog:go_default_library",
+ "//vendor/k8s.io/klog/v2:go_default_library",
],
)
@@ -19,5 +19,5 @@ go_test(
name = "go_default_test",
srcs = ["lock_test.go"],
embed = [":go_default_library"],
- deps = ["//vendor/k8s.io/klog:go_default_library"],
+ deps = ["//vendor/k8s.io/klog/v2:go_default_library"],
)
diff --git a/pkg/locking/flock.go b/pkg/locking/flock.go
index a9ad09f9..118d7bed 100644
--- a/pkg/locking/flock.go
+++ b/pkg/locking/flock.go
@@ -22,7 +22,7 @@ import (
"os"
"syscall"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
)
type FSFlockLock struct {
diff --git a/pkg/locking/fs.go b/pkg/locking/fs.go
index aa3c49f3..f965e6d7 100644
--- a/pkg/locking/fs.go
+++ b/pkg/locking/fs.go
@@ -27,7 +27,7 @@ import (
"os"
"time"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
)
type FSContentLock struct {
diff --git a/pkg/locking/lock_test.go b/pkg/locking/lock_test.go
index c9c00516..2830d70e 100644
--- a/pkg/locking/lock_test.go
+++ b/pkg/locking/lock_test.go
@@ -23,7 +23,7 @@ import (
"path/filepath"
"testing"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
)
func init() {
diff --git a/pkg/pki/BUILD.bazel b/pkg/pki/BUILD.bazel
index 2aab9c3e..36f4853d 100644
--- a/pkg/pki/BUILD.bazel
+++ b/pkg/pki/BUILD.bazel
@@ -15,7 +15,7 @@ go_library(
deps = [
"//vendor/k8s.io/client-go/util/cert:go_default_library",
"//vendor/k8s.io/client-go/util/keyutil:go_default_library",
- "//vendor/k8s.io/klog:go_default_library",
+ "//vendor/k8s.io/klog/v2:go_default_library",
],
)
diff --git a/pkg/pki/certs.go b/pkg/pki/certs.go
index 2ccb2227..cd865932 100644
--- a/pkg/pki/certs.go
+++ b/pkg/pki/certs.go
@@ -28,7 +28,7 @@ import (
"time"
certutil "k8s.io/client-go/util/cert"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
)
// CertDuration controls how long we issue certificates for. We set
diff --git a/pkg/pki/fs.go b/pkg/pki/fs.go
index b4e1efb2..09a78d96 100644
--- a/pkg/pki/fs.go
+++ b/pkg/pki/fs.go
@@ -25,7 +25,7 @@ import (
"path/filepath"
"k8s.io/client-go/util/keyutil"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
)
func LoadCAFromDisk(dir string) (*Keypair, error) {
diff --git a/pkg/privateapi/BUILD.bazel b/pkg/privateapi/BUILD.bazel
index 5f2e6d70..0a022ebf 100644
--- a/pkg/privateapi/BUILD.bazel
+++ b/pkg/privateapi/BUILD.bazel
@@ -21,6 +21,6 @@ go_library(
"//vendor/google.golang.org/grpc:go_default_library",
"//vendor/google.golang.org/grpc/connectivity:go_default_library",
"//vendor/google.golang.org/grpc/credentials:go_default_library",
- "//vendor/k8s.io/klog:go_default_library",
+ "//vendor/k8s.io/klog/v2:go_default_library",
],
)
diff --git a/pkg/privateapi/discovery/fs/BUILD.bazel b/pkg/privateapi/discovery/fs/BUILD.bazel
index 3ffc4c67..2886abd6 100644
--- a/pkg/privateapi/discovery/fs/BUILD.bazel
+++ b/pkg/privateapi/discovery/fs/BUILD.bazel
@@ -7,6 +7,6 @@ go_library(
visibility = ["//visibility:public"],
deps = [
"//pkg/privateapi/discovery:go_default_library",
- "//vendor/k8s.io/klog:go_default_library",
+ "//vendor/k8s.io/klog/v2:go_default_library",
],
)
diff --git a/pkg/privateapi/discovery/fs/filesystemdiscovery.go b/pkg/privateapi/discovery/fs/filesystemdiscovery.go
index a0777dd4..3fcdde03 100644
--- a/pkg/privateapi/discovery/fs/filesystemdiscovery.go
+++ b/pkg/privateapi/discovery/fs/filesystemdiscovery.go
@@ -23,7 +23,7 @@ import (
"os"
"path/filepath"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
"kope.io/etcd-manager/pkg/privateapi/discovery"
)
diff --git a/pkg/privateapi/discovery/vfs/BUILD.bazel b/pkg/privateapi/discovery/vfs/BUILD.bazel
index 793e4b07..ca54471e 100644
--- a/pkg/privateapi/discovery/vfs/BUILD.bazel
+++ b/pkg/privateapi/discovery/vfs/BUILD.bazel
@@ -7,7 +7,7 @@ go_library(
visibility = ["//visibility:public"],
deps = [
"//pkg/privateapi/discovery:go_default_library",
- "//vendor/k8s.io/klog:go_default_library",
+ "//vendor/k8s.io/klog/v2:go_default_library",
"//vendor/k8s.io/kops/util/pkg/vfs:go_default_library",
],
)
diff --git a/pkg/privateapi/discovery/vfs/discovery.go b/pkg/privateapi/discovery/vfs/discovery.go
index 29e0d4d5..7da8d30e 100644
--- a/pkg/privateapi/discovery/vfs/discovery.go
+++ b/pkg/privateapi/discovery/vfs/discovery.go
@@ -21,7 +21,7 @@ import (
"encoding/json"
"fmt"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
"k8s.io/kops/util/pkg/vfs"
"kope.io/etcd-manager/pkg/privateapi/discovery"
diff --git a/pkg/privateapi/id.go b/pkg/privateapi/id.go
index 176a6eea..bb7f08f4 100644
--- a/pkg/privateapi/id.go
+++ b/pkg/privateapi/id.go
@@ -22,7 +22,7 @@ import (
"os"
"path/filepath"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
"kope.io/etcd-manager/pkg/ioutils"
)
diff --git a/pkg/privateapi/leadership.go b/pkg/privateapi/leadership.go
index 9861155f..8488c59c 100644
--- a/pkg/privateapi/leadership.go
+++ b/pkg/privateapi/leadership.go
@@ -25,7 +25,7 @@ import (
"time"
grpccontext "golang.org/x/net/context"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
)
type leadership struct {
diff --git a/pkg/privateapi/peers.go b/pkg/privateapi/peers.go
index 8bf295e1..7f630fb2 100644
--- a/pkg/privateapi/peers.go
+++ b/pkg/privateapi/peers.go
@@ -28,7 +28,7 @@ import (
"google.golang.org/grpc"
"google.golang.org/grpc/connectivity"
"google.golang.org/grpc/credentials"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
"kope.io/etcd-manager/pkg/contextutil"
"kope.io/etcd-manager/pkg/privateapi/discovery"
)
diff --git a/pkg/privateapi/server.go b/pkg/privateapi/server.go
index 515ac538..b16d20a3 100644
--- a/pkg/privateapi/server.go
+++ b/pkg/privateapi/server.go
@@ -26,7 +26,7 @@ import (
"golang.org/x/net/context"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
"kope.io/etcd-manager/pkg/dns"
"kope.io/etcd-manager/pkg/privateapi/discovery"
)
diff --git a/pkg/volumes/BUILD.bazel b/pkg/volumes/BUILD.bazel
index 49891fca..dd6e0188 100644
--- a/pkg/volumes/BUILD.bazel
+++ b/pkg/volumes/BUILD.bazel
@@ -12,7 +12,7 @@ go_library(
visibility = ["//visibility:public"],
deps = [
"//pkg/hostmount:go_default_library",
- "//vendor/k8s.io/klog:go_default_library",
+ "//vendor/k8s.io/klog/v2:go_default_library",
"//vendor/k8s.io/utils/exec:go_default_library",
"//vendor/k8s.io/utils/mount:go_default_library",
"//vendor/k8s.io/utils/nsenter:go_default_library",
diff --git a/pkg/volumes/alicloud/BUILD.bazel b/pkg/volumes/alicloud/BUILD.bazel
index 5b9b6f04..32488e10 100644
--- a/pkg/volumes/alicloud/BUILD.bazel
+++ b/pkg/volumes/alicloud/BUILD.bazel
@@ -16,6 +16,6 @@ go_library(
"//vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials:go_default_library",
"//vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests:go_default_library",
"//vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/ecs:go_default_library",
- "//vendor/k8s.io/klog:go_default_library",
+ "//vendor/k8s.io/klog/v2:go_default_library",
],
)
diff --git a/pkg/volumes/alicloud/discovery.go b/pkg/volumes/alicloud/discovery.go
index ba7d0dc8..5ab349ff 100644
--- a/pkg/volumes/alicloud/discovery.go
+++ b/pkg/volumes/alicloud/discovery.go
@@ -21,7 +21,7 @@ import (
"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
"github.com/aliyun/alibaba-cloud-sdk-go/services/ecs"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
"kope.io/etcd-manager/pkg/privateapi/discovery"
"kope.io/etcd-manager/pkg/volumes"
)
diff --git a/pkg/volumes/alicloud/volumes.go b/pkg/volumes/alicloud/volumes.go
index 9ba57d4d..580e62f5 100644
--- a/pkg/volumes/alicloud/volumes.go
+++ b/pkg/volumes/alicloud/volumes.go
@@ -28,7 +28,7 @@ import (
"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials"
"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
"github.com/aliyun/alibaba-cloud-sdk-go/services/ecs"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
"kope.io/etcd-manager/pkg/volumes"
)
diff --git a/pkg/volumes/aws/BUILD.bazel b/pkg/volumes/aws/BUILD.bazel
index 4d95ef4f..cc6303b3 100644
--- a/pkg/volumes/aws/BUILD.bazel
+++ b/pkg/volumes/aws/BUILD.bazel
@@ -17,6 +17,6 @@ go_library(
"//vendor/github.com/aws/aws-sdk-go/aws/request:go_default_library",
"//vendor/github.com/aws/aws-sdk-go/aws/session:go_default_library",
"//vendor/github.com/aws/aws-sdk-go/service/ec2:go_default_library",
- "//vendor/k8s.io/klog:go_default_library",
+ "//vendor/k8s.io/klog/v2:go_default_library",
],
)
diff --git a/pkg/volumes/aws/discovery.go b/pkg/volumes/aws/discovery.go
index 4245825d..698a06a0 100644
--- a/pkg/volumes/aws/discovery.go
+++ b/pkg/volumes/aws/discovery.go
@@ -21,7 +21,7 @@ import (
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/service/ec2"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
"kope.io/etcd-manager/pkg/privateapi/discovery"
"kope.io/etcd-manager/pkg/volumes"
diff --git a/pkg/volumes/aws/volumes.go b/pkg/volumes/aws/volumes.go
index 9320c06e..77b491f4 100644
--- a/pkg/volumes/aws/volumes.go
+++ b/pkg/volumes/aws/volumes.go
@@ -30,7 +30,7 @@ import (
"github.com/aws/aws-sdk-go/aws/request"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/ec2"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
"kope.io/etcd-manager/pkg/volumes"
)
diff --git a/pkg/volumes/boot.go b/pkg/volumes/boot.go
index 2f065d8d..17a3a061 100644
--- a/pkg/volumes/boot.go
+++ b/pkg/volumes/boot.go
@@ -19,7 +19,7 @@ package volumes
import (
"time"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
)
var (
diff --git a/pkg/volumes/do/BUILD.bazel b/pkg/volumes/do/BUILD.bazel
index 424e670e..d53f7b5b 100644
--- a/pkg/volumes/do/BUILD.bazel
+++ b/pkg/volumes/do/BUILD.bazel
@@ -13,6 +13,6 @@ go_library(
"//pkg/volumes:go_default_library",
"//vendor/github.com/digitalocean/godo:go_default_library",
"//vendor/golang.org/x/oauth2:go_default_library",
- "//vendor/k8s.io/klog:go_default_library",
+ "//vendor/k8s.io/klog/v2:go_default_library",
],
)
diff --git a/pkg/volumes/do/discovery.go b/pkg/volumes/do/discovery.go
index 3a494977..d2a9b23c 100644
--- a/pkg/volumes/do/discovery.go
+++ b/pkg/volumes/do/discovery.go
@@ -21,7 +21,7 @@ import (
"fmt"
"strconv"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
"kope.io/etcd-manager/pkg/privateapi/discovery"
"kope.io/etcd-manager/pkg/volumes"
)
diff --git a/pkg/volumes/do/volumes.go b/pkg/volumes/do/volumes.go
index dd61cb83..374fb28e 100644
--- a/pkg/volumes/do/volumes.go
+++ b/pkg/volumes/do/volumes.go
@@ -29,7 +29,7 @@ import (
"github.com/digitalocean/godo"
"golang.org/x/oauth2"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
"kope.io/etcd-manager/pkg/volumes"
)
diff --git a/pkg/volumes/external/BUILD.bazel b/pkg/volumes/external/BUILD.bazel
index 774c1c93..84aa2dab 100644
--- a/pkg/volumes/external/BUILD.bazel
+++ b/pkg/volumes/external/BUILD.bazel
@@ -11,6 +11,6 @@ go_library(
deps = [
"//pkg/privateapi/discovery:go_default_library",
"//pkg/volumes:go_default_library",
- "//vendor/k8s.io/klog:go_default_library",
+ "//vendor/k8s.io/klog/v2:go_default_library",
],
)
diff --git a/pkg/volumes/external/discovery.go b/pkg/volumes/external/discovery.go
index cc291f7e..2f79d87e 100644
--- a/pkg/volumes/external/discovery.go
+++ b/pkg/volumes/external/discovery.go
@@ -22,7 +22,7 @@ import (
"net"
"strings"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
"kope.io/etcd-manager/pkg/privateapi/discovery"
)
diff --git a/pkg/volumes/external/volumes.go b/pkg/volumes/external/volumes.go
index 70a0a637..3252d858 100644
--- a/pkg/volumes/external/volumes.go
+++ b/pkg/volumes/external/volumes.go
@@ -25,7 +25,7 @@ import (
"sort"
"strings"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
"kope.io/etcd-manager/pkg/volumes"
)
diff --git a/pkg/volumes/gce/BUILD.bazel b/pkg/volumes/gce/BUILD.bazel
index c1a4ff2b..71922334 100644
--- a/pkg/volumes/gce/BUILD.bazel
+++ b/pkg/volumes/gce/BUILD.bazel
@@ -20,6 +20,6 @@ go_library(
"//vendor/google.golang.org/api/compute/v0.beta:go_default_library",
"//vendor/google.golang.org/api/googleapi:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library",
- "//vendor/k8s.io/klog:go_default_library",
+ "//vendor/k8s.io/klog/v2:go_default_library",
],
)
diff --git a/pkg/volumes/gce/discovery.go b/pkg/volumes/gce/discovery.go
index 8cd13b3d..5b0bc7e9 100644
--- a/pkg/volumes/gce/discovery.go
+++ b/pkg/volumes/gce/discovery.go
@@ -17,7 +17,7 @@ limitations under the License.
package gce
import (
- "k8s.io/klog"
+ "k8s.io/klog/v2"
"kope.io/etcd-manager/pkg/privateapi/discovery"
"kope.io/etcd-manager/pkg/volumes"
)
diff --git a/pkg/volumes/gce/op.go b/pkg/volumes/gce/op.go
index 469e76cf..79f17486 100644
--- a/pkg/volumes/gce/op.go
+++ b/pkg/volumes/gce/op.go
@@ -26,7 +26,7 @@ import (
compute "google.golang.org/api/compute/v0.beta"
"google.golang.org/api/googleapi"
"k8s.io/apimachinery/pkg/util/wait"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
)
const (
diff --git a/pkg/volumes/gce/volumes.go b/pkg/volumes/gce/volumes.go
index c3885b41..ab463339 100644
--- a/pkg/volumes/gce/volumes.go
+++ b/pkg/volumes/gce/volumes.go
@@ -28,7 +28,7 @@ import (
"golang.org/x/net/context"
"golang.org/x/oauth2/google"
compute "google.golang.org/api/compute/v0.beta"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
"kope.io/etcd-manager/pkg/volumes"
)
diff --git a/pkg/volumes/mounter.go b/pkg/volumes/mounter.go
index ca054068..28fd33b9 100644
--- a/pkg/volumes/mounter.go
+++ b/pkg/volumes/mounter.go
@@ -22,7 +22,7 @@ import (
"path/filepath"
"time"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
utilexec "k8s.io/utils/exec"
"k8s.io/utils/mount"
"k8s.io/utils/nsenter"
diff --git a/pkg/volumes/openstack/BUILD.bazel b/pkg/volumes/openstack/BUILD.bazel
index d4fbd5e9..8e4ca955 100644
--- a/pkg/volumes/openstack/BUILD.bazel
+++ b/pkg/volumes/openstack/BUILD.bazel
@@ -20,7 +20,7 @@ go_library(
"//vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/volumeattach:go_default_library",
"//vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/servers:go_default_library",
"//vendor/gopkg.in/gcfg.v1:go_default_library",
- "//vendor/k8s.io/klog:go_default_library",
+ "//vendor/k8s.io/klog/v2:go_default_library",
"//vendor/k8s.io/utils/exec:go_default_library",
],
)
diff --git a/pkg/volumes/openstack/discovery.go b/pkg/volumes/openstack/discovery.go
index d45a5d13..1c192838 100644
--- a/pkg/volumes/openstack/discovery.go
+++ b/pkg/volumes/openstack/discovery.go
@@ -18,7 +18,7 @@ package openstack
import (
"github.com/gophercloud/gophercloud/openstack/compute/v2/servers"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
"kope.io/etcd-manager/pkg/privateapi/discovery"
"kope.io/etcd-manager/pkg/volumes"
)
diff --git a/pkg/volumes/openstack/volumes.go b/pkg/volumes/openstack/volumes.go
index 2142c76f..612972e3 100644
--- a/pkg/volumes/openstack/volumes.go
+++ b/pkg/volumes/openstack/volumes.go
@@ -33,7 +33,7 @@ import (
"github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/availabilityzones"
"github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/volumeattach"
"github.com/gophercloud/gophercloud/openstack/compute/v2/servers"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
utilexec "k8s.io/utils/exec"
"kope.io/etcd-manager/pkg/volumes"
)
diff --git a/pkg/volumes/retry.go b/pkg/volumes/retry.go
index bf229eed..15047b82 100644
--- a/pkg/volumes/retry.go
+++ b/pkg/volumes/retry.go
@@ -19,7 +19,7 @@ package volumes
import (
"time"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
)
// Backoff ...
diff --git a/test/integration/BUILD.bazel b/test/integration/BUILD.bazel
index c3a4300c..4bf20444 100644
--- a/test/integration/BUILD.bazel
+++ b/test/integration/BUILD.bazel
@@ -36,6 +36,6 @@ go_test(
"//pkg/etcd:go_default_library",
"//pkg/etcdversions:go_default_library",
"//test/integration/harness:go_default_library",
- "//vendor/k8s.io/klog:go_default_library",
+ "//vendor/k8s.io/klog/v2:go_default_library",
],
)
diff --git a/test/integration/clusterformation_test.go b/test/integration/clusterformation_test.go
index 4b1cf639..1e821fbc 100644
--- a/test/integration/clusterformation_test.go
+++ b/test/integration/clusterformation_test.go
@@ -22,7 +22,7 @@ import (
"testing"
"time"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
protoetcd "kope.io/etcd-manager/pkg/apis/etcd"
"kope.io/etcd-manager/pkg/etcdversions"
"kope.io/etcd-manager/test/integration/harness"
diff --git a/test/integration/datapersists_test.go b/test/integration/datapersists_test.go
index f6e5269e..ba341885 100644
--- a/test/integration/datapersists_test.go
+++ b/test/integration/datapersists_test.go
@@ -22,7 +22,7 @@ import (
"testing"
"time"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
protoetcd "kope.io/etcd-manager/pkg/apis/etcd"
"kope.io/etcd-manager/test/integration/harness"
)
diff --git a/test/integration/harness/BUILD.bazel b/test/integration/harness/BUILD.bazel
index e760b531..3cd135df 100644
--- a/test/integration/harness/BUILD.bazel
+++ b/test/integration/harness/BUILD.bazel
@@ -23,7 +23,7 @@ go_library(
"//pkg/privateapi/discovery:go_default_library",
"//pkg/privateapi/discovery/vfs:go_default_library",
"//pkg/tlsconfig:go_default_library",
- "//vendor/k8s.io/klog:go_default_library",
+ "//vendor/k8s.io/klog/v2:go_default_library",
"//vendor/k8s.io/kops/util/pkg/vfs:go_default_library",
],
)
diff --git a/test/integration/harness/cluster.go b/test/integration/harness/cluster.go
index 0b4de12c..8ac1e6ae 100644
--- a/test/integration/harness/cluster.go
+++ b/test/integration/harness/cluster.go
@@ -26,7 +26,7 @@ import (
"testing"
"time"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
protoetcd "kope.io/etcd-manager/pkg/apis/etcd"
"kope.io/etcd-manager/pkg/commands"
"kope.io/etcd-manager/pkg/pki"
diff --git a/test/integration/harness/etcd.go b/test/integration/harness/etcd.go
index f17f63b6..97489cca 100644
--- a/test/integration/harness/etcd.go
+++ b/test/integration/harness/etcd.go
@@ -21,7 +21,7 @@ import (
"fmt"
"time"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
"kope.io/etcd-manager/pkg/etcdclient"
)
diff --git a/test/integration/harness/node.go b/test/integration/harness/node.go
index 683ff873..6bb7ada4 100644
--- a/test/integration/harness/node.go
+++ b/test/integration/harness/node.go
@@ -26,7 +26,7 @@ import (
"testing"
"time"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
"k8s.io/kops/util/pkg/vfs"
apis_etcd "kope.io/etcd-manager/pkg/apis/etcd"
diff --git a/test/integration/resize_cluster_test.go b/test/integration/resize_cluster_test.go
index cfaf8c60..e2a9d430 100644
--- a/test/integration/resize_cluster_test.go
+++ b/test/integration/resize_cluster_test.go
@@ -21,7 +21,7 @@ import (
"testing"
"time"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
protoetcd "kope.io/etcd-manager/pkg/apis/etcd"
"kope.io/etcd-manager/pkg/etcdversions"
"kope.io/etcd-manager/test/integration/harness"
diff --git a/test/integration/secure_transitions_test.go b/test/integration/secure_transitions_test.go
index 10c4143e..5b215676 100644
--- a/test/integration/secure_transitions_test.go
+++ b/test/integration/secure_transitions_test.go
@@ -24,7 +24,7 @@ import (
"testing"
"time"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
protoetcd "kope.io/etcd-manager/pkg/apis/etcd"
"kope.io/etcd-manager/test/integration/harness"
)
diff --git a/test/integration/upgradedowngrade_test.go b/test/integration/upgradedowngrade_test.go
index e3cc1c64..3aaa95d8 100644
--- a/test/integration/upgradedowngrade_test.go
+++ b/test/integration/upgradedowngrade_test.go
@@ -21,7 +21,7 @@ import (
"testing"
"time"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
protoetcd "kope.io/etcd-manager/pkg/apis/etcd"
"kope.io/etcd-manager/pkg/etcdversions"
"kope.io/etcd-manager/test/integration/harness"
diff --git a/tools/deb-tools/BUILD.bazel b/tools/deb-tools/BUILD.bazel
index a4693b32..58e08543 100644
--- a/tools/deb-tools/BUILD.bazel
+++ b/tools/deb-tools/BUILD.bazel
@@ -16,7 +16,7 @@ go_library(
deps = [
"//vendor/github.com/blakesmith/ar:go_default_library",
"//vendor/github.com/ulikunitz/xz:go_default_library",
- "//vendor/k8s.io/klog:go_default_library",
+ "//vendor/k8s.io/klog/v2:go_default_library",
],
)
diff --git a/tools/deb-tools/go.mod b/tools/deb-tools/go.mod
index 502e7408..202288a9 100644
--- a/tools/deb-tools/go.mod
+++ b/tools/deb-tools/go.mod
@@ -5,5 +5,6 @@ go 1.12
require (
github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb
github.com/ulikunitz/xz v0.5.8
- k8s.io/klog v1.0.0
+ k8s.io/klog v1.0.0 // indirect
+ k8s.io/klog/v2 v2.4.0
)
diff --git a/tools/deb-tools/go.sum b/tools/deb-tools/go.sum
index 03827fa6..bcab4528 100644
--- a/tools/deb-tools/go.sum
+++ b/tools/deb-tools/go.sum
@@ -1,7 +1,11 @@
github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb h1:m935MPodAbYS46DG4pJSv7WO+VECIWUQ7OJYSoTrMh4=
github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb/go.mod h1:PkYb9DJNAwrSvRx5DYA+gUcOIgTGVMNkfSCbZM8cWpI=
github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas=
+github.com/go-logr/logr v0.2.0 h1:QvGt2nLcHH0WK9orKa+ppBPAxREcH364nPUedEpK0TY=
+github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU=
github.com/ulikunitz/xz v0.5.8 h1:ERv8V6GKqVi23rgu5cj9pVfVzJbOqAY2Ntl88O6c2nQ=
github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8=
k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I=
+k8s.io/klog/v2 v2.4.0 h1:7+X0fUguPyrKEC4WjH8iGDg3laWgMo5tMnRTIGTTxGQ=
+k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y=
diff --git a/tools/deb-tools/main.go b/tools/deb-tools/main.go
index 99a13c1d..cba6bf0f 100644
--- a/tools/deb-tools/main.go
+++ b/tools/deb-tools/main.go
@@ -34,7 +34,7 @@ import (
"github.com/blakesmith/ar"
"github.com/ulikunitz/xz"
- "k8s.io/klog"
+ "k8s.io/klog/v2"
)
func main() {
diff --git a/tools/deb-tools/vendor/github.com/go-logr/logr/BUILD.bazel b/tools/deb-tools/vendor/github.com/go-logr/logr/BUILD.bazel
new file mode 100644
index 00000000..eed4c858
--- /dev/null
+++ b/tools/deb-tools/vendor/github.com/go-logr/logr/BUILD.bazel
@@ -0,0 +1,9 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_library")
+
+go_library(
+ name = "go_default_library",
+ srcs = ["logr.go"],
+ importmap = "kope.io/etcd-manager/tools/deb-extract/vendor/github.com/go-logr/logr",
+ importpath = "github.com/go-logr/logr",
+ visibility = ["//visibility:public"],
+)
diff --git a/tools/deb-tools/vendor/github.com/go-logr/logr/LICENSE b/tools/deb-tools/vendor/github.com/go-logr/logr/LICENSE
new file mode 100644
index 00000000..8dada3ed
--- /dev/null
+++ b/tools/deb-tools/vendor/github.com/go-logr/logr/LICENSE
@@ -0,0 +1,201 @@
+ 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.
diff --git a/tools/deb-tools/vendor/github.com/go-logr/logr/README.md b/tools/deb-tools/vendor/github.com/go-logr/logr/README.md
new file mode 100644
index 00000000..aca17f38
--- /dev/null
+++ b/tools/deb-tools/vendor/github.com/go-logr/logr/README.md
@@ -0,0 +1,181 @@
+# A more minimal logging API for Go
+
+Before you consider this package, please read [this blog post by the
+inimitable Dave Cheney][warning-makes-no-sense]. I really appreciate what
+he has to say, and it largely aligns with my own experiences. Too many
+choices of levels means inconsistent logs.
+
+This package offers a purely abstract interface, based on these ideas but with
+a few twists. Code can depend on just this interface and have the actual
+logging implementation be injected from callers. Ideally only `main()` knows
+what logging implementation is being used.
+
+# Differences from Dave's ideas
+
+The main differences are:
+
+1) Dave basically proposes doing away with the notion of a logging API in favor
+of `fmt.Printf()`. I disagree, especially when you consider things like output
+locations, timestamps, file and line decorations, and structured logging. I
+restrict the API to just 2 types of logs: info and error.
+
+Info logs are things you want to tell the user which are not errors. Error
+logs are, well, errors. If your code receives an `error` from a subordinate
+function call and is logging that `error` *and not returning it*, use error
+logs.
+
+2) Verbosity-levels on info logs. This gives developers a chance to indicate
+arbitrary grades of importance for info logs, without assigning names with
+semantic meaning such as "warning", "trace", and "debug". Superficially this
+may feel very similar, but the primary difference is the lack of semantics.
+Because verbosity is a numerical value, it's safe to assume that an app running
+with higher verbosity means more (and less important) logs will be generated.
+
+This is a BETA grade API.
+
+There are implementations for the following logging libraries:
+
+- **github.com/google/glog**: [glogr](https://github.com/go-logr/glogr)
+- **k8s.io/klog**: [klogr](https://git.k8s.io/klog/klogr)
+- **go.uber.org/zap**: [zapr](https://github.com/go-logr/zapr)
+- **log** (the Go standard library logger):
+ [stdr](https://github.com/go-logr/stdr)
+- **github.com/sirupsen/logrus**: [logrusr](https://github.com/bombsimon/logrusr)
+
+# FAQ
+
+## Conceptual
+
+## Why structured logging?
+
+- **Structured logs are more easily queriable**: Since you've got
+ key-value pairs, it's much easier to query your structured logs for
+ particular values by filtering on the contents of a particular key --
+ think searching request logs for error codes, Kubernetes reconcilers for
+ the name and namespace of the reconciled object, etc
+
+- **Structured logging makes it easier to have cross-referencable logs**:
+ Similarly to searchability, if you maintain conventions around your
+ keys, it becomes easy to gather all log lines related to a particular
+ concept.
+
+- **Structured logs allow better dimensions of filtering**: if you have
+ structure to your logs, you've got more precise control over how much
+ information is logged -- you might choose in a particular configuration
+ to log certain keys but not others, only log lines where a certain key
+ matches a certain value, etc, instead of just having v-levels and names
+ to key off of.
+
+- **Structured logs better represent structured data**: sometimes, the
+ data that you want to log is inherently structured (think tuple-link
+ objects). Structured logs allow you to preserve that structure when
+ outputting.
+
+## Why V-levels?
+
+**V-levels give operators an easy way to control the chattiness of log
+operations**. V-levels provide a way for a given package to distinguish
+the relative importance or verbosity of a given log message. Then, if
+a particular logger or package is logging too many messages, the user
+of the package can simply change the v-levels for that library.
+
+## Why not more named levels, like Warning?
+
+Read [Dave Cheney's post][warning-makes-no-sense]. Then read [Differences
+from Dave's ideas](#differences-from-daves-ideas).
+
+## Why not allow format strings, too?
+
+**Format strings negate many of the benefits of structured logs**:
+
+- They're not easily searchable without resorting to fuzzy searching,
+ regular expressions, etc
+
+- They don't store structured data well, since contents are flattened into
+ a string
+
+- They're not cross-referencable
+
+- They don't compress easily, since the message is not constant
+
+(unless you turn positional parameters into key-value pairs with numerical
+keys, at which point you've gotten key-value logging with meaningless
+keys)
+
+## Practical
+
+## Why key-value pairs, and not a map?
+
+Key-value pairs are *much* easier to optimize, especially around
+allocations. Zap (a structured logger that inspired logr's interface) has
+[performance measurements](https://github.com/uber-go/zap#performance)
+that show this quite nicely.
+
+While the interface ends up being a little less obvious, you get
+potentially better performance, plus avoid making users type
+`map[string]string{}` every time they want to log.
+
+## What if my V-levels differ between libraries?
+
+That's fine. Control your V-levels on a per-logger basis, and use the
+`WithName` function to pass different loggers to different libraries.
+
+Generally, you should take care to ensure that you have relatively
+consistent V-levels within a given logger, however, as this makes deciding
+on what verbosity of logs to request easier.
+
+## But I *really* want to use a format string!
+
+That's not actually a question. Assuming your question is "how do
+I convert my mental model of logging with format strings to logging with
+constant messages":
+
+1. figure out what the error actually is, as you'd write in a TL;DR style,
+ and use that as a message
+
+2. For every place you'd write a format specifier, look to the word before
+ it, and add that as a key value pair
+
+For instance, consider the following examples (all taken from spots in the
+Kubernetes codebase):
+
+- `klog.V(4).Infof("Client is returning errors: code %v, error %v",
+ responseCode, err)` becomes `logger.Error(err, "client returned an
+ error", "code", responseCode)`
+
+- `klog.V(4).Infof("Got a Retry-After %ds response for attempt %d to %v",
+ seconds, retries, url)` becomes `logger.V(4).Info("got a retry-after
+ response when requesting url", "attempt", retries, "after
+ seconds", seconds, "url", url)`
+
+If you *really* must use a format string, place it as a key value, and
+call `fmt.Sprintf` yourself -- for instance, `log.Printf("unable to
+reflect over type %T")` becomes `logger.Info("unable to reflect over
+type", "type", fmt.Sprintf("%T"))`. In general though, the cases where
+this is necessary should be few and far between.
+
+## How do I choose my V-levels?
+
+This is basically the only hard constraint: increase V-levels to denote
+more verbose or more debug-y logs.
+
+Otherwise, you can start out with `0` as "you always want to see this",
+`1` as "common logging that you might *possibly* want to turn off", and
+`10` as "I would like to performance-test your log collection stack".
+
+Then gradually choose levels in between as you need them, working your way
+down from 10 (for debug and trace style logs) and up from 1 (for chattier
+info-type logs).
+
+## How do I choose my keys
+
+- make your keys human-readable
+- constant keys are generally a good idea
+- be consistent across your codebase
+- keys should naturally match parts of the message string
+
+While key names are mostly unrestricted (and spaces are acceptable),
+it's generally a good idea to stick to printable ascii characters, or at
+least match the general character set of your log lines.
+
+[warning-makes-no-sense]: http://dave.cheney.net/2015/11/05/lets-talk-about-logging
diff --git a/tools/deb-tools/vendor/github.com/go-logr/logr/go.mod b/tools/deb-tools/vendor/github.com/go-logr/logr/go.mod
new file mode 100644
index 00000000..591884e9
--- /dev/null
+++ b/tools/deb-tools/vendor/github.com/go-logr/logr/go.mod
@@ -0,0 +1,3 @@
+module github.com/go-logr/logr
+
+go 1.14
diff --git a/tools/deb-tools/vendor/github.com/go-logr/logr/logr.go b/tools/deb-tools/vendor/github.com/go-logr/logr/logr.go
new file mode 100644
index 00000000..520c4fe5
--- /dev/null
+++ b/tools/deb-tools/vendor/github.com/go-logr/logr/logr.go
@@ -0,0 +1,178 @@
+/*
+Copyright 2019 The logr Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Package logr defines abstract interfaces for logging. Packages can depend on
+// these interfaces and callers can implement logging in whatever way is
+// appropriate.
+//
+// This design derives from Dave Cheney's blog:
+// http://dave.cheney.net/2015/11/05/lets-talk-about-logging
+//
+// This is a BETA grade API. Until there is a significant 2nd implementation,
+// I don't really know how it will change.
+//
+// The logging specifically makes it non-trivial to use format strings, to encourage
+// attaching structured information instead of unstructured format strings.
+//
+// Usage
+//
+// Logging is done using a Logger. Loggers can have name prefixes and named
+// values attached, so that all log messages logged with that Logger have some
+// base context associated.
+//
+// The term "key" is used to refer to the name associated with a particular
+// value, to disambiguate it from the general Logger name.
+//
+// For instance, suppose we're trying to reconcile the state of an object, and
+// we want to log that we've made some decision.
+//
+// With the traditional log package, we might write:
+// log.Printf(
+// "decided to set field foo to value %q for object %s/%s",
+// targetValue, object.Namespace, object.Name)
+//
+// With logr's structured logging, we'd write:
+// // elsewhere in the file, set up the logger to log with the prefix of "reconcilers",
+// // and the named value target-type=Foo, for extra context.
+// log := mainLogger.WithName("reconcilers").WithValues("target-type", "Foo")
+//
+// // later on...
+// log.Info("setting field foo on object", "value", targetValue, "object", object)
+//
+// Depending on our logging implementation, we could then make logging decisions
+// based on field values (like only logging such events for objects in a certain
+// namespace), or copy the structured information into a structured log store.
+//
+// For logging errors, Logger has a method called Error. Suppose we wanted to
+// log an error while reconciling. With the traditional log package, we might
+// write:
+// log.Errorf("unable to reconcile object %s/%s: %v", object.Namespace, object.Name, err)
+//
+// With logr, we'd instead write:
+// // assuming the above setup for log
+// log.Error(err, "unable to reconcile object", "object", object)
+//
+// This functions similarly to:
+// log.Info("unable to reconcile object", "error", err, "object", object)
+//
+// However, it ensures that a standard key for the error value ("error") is used
+// across all error logging. Furthermore, certain implementations may choose to
+// attach additional information (such as stack traces) on calls to Error, so
+// it's preferred to use Error to log errors.
+//
+// Parts of a log line
+//
+// Each log message from a Logger has four types of context:
+// logger name, log verbosity, log message, and the named values.
+//
+// The Logger name constists of a series of name "segments" added by successive
+// calls to WithName. These name segments will be joined in some way by the
+// underlying implementation. It is strongly reccomended that name segements
+// contain simple identifiers (letters, digits, and hyphen), and do not contain
+// characters that could muddle the log output or confuse the joining operation
+// (e.g. whitespace, commas, periods, slashes, brackets, quotes, etc).
+//
+// Log verbosity represents how little a log matters. Level zero, the default,
+// matters most. Increasing levels matter less and less. Try to avoid lots of
+// different verbosity levels, and instead provide useful keys, logger names,
+// and log messages for users to filter on. It's illegal to pass a log level
+// below zero.
+//
+// The log message consists of a constant message attached to the the log line.
+// This should generally be a simple description of what's occuring, and should
+// never be a format string.
+//
+// Variable information can then be attached using named values (key/value
+// pairs). Keys are arbitrary strings, while values may be any Go value.
+//
+// Key Naming Conventions
+//
+// Keys are not strictly required to conform to any specification or regex, but
+// it is recommended that they:
+// * be human-readable and meaningful (not auto-generated or simple ordinals)
+// * be constant (not dependent on input data)
+// * contain only printable characters
+// * not contain whitespace or punctuation
+//
+// These guidelines help ensure that log data is processed properly regardless
+// of the log implementation. For example, log implementations will try to
+// output JSON data or will store data for later database (e.g. SQL) queries.
+//
+// While users are generally free to use key names of their choice, it's
+// generally best to avoid using the following keys, as they're frequently used
+// by implementations:
+//
+// - `"caller"`: the calling information (file/line) of a particular log line.
+// - `"error"`: the underlying error value in the `Error` method.
+// - `"level"`: the log level.
+// - `"logger"`: the name of the associated logger.
+// - `"msg"`: the log message.
+// - `"stacktrace"`: the stack trace associated with a particular log line or
+// error (often from the `Error` message).
+// - `"ts"`: the timestamp for a log line.
+//
+// Implementations are encouraged to make use of these keys to represent the
+// above concepts, when neccessary (for example, in a pure-JSON output form, it
+// would be necessary to represent at least message and timestamp as ordinary
+// named values).
+package logr
+
+// TODO: consider adding back in format strings if they're really needed
+// TODO: consider other bits of zap/zapcore functionality like ObjectMarshaller (for arbitrary objects)
+// TODO: consider other bits of glog functionality like Flush, InfoDepth, OutputStats
+
+// Logger represents the ability to log messages, both errors and not.
+type Logger interface {
+ // Enabled tests whether this Logger is enabled. For example, commandline
+ // flags might be used to set the logging verbosity and disable some info
+ // logs.
+ Enabled() bool
+
+ // Info logs a non-error message with the given key/value pairs as context.
+ //
+ // The msg argument should be used to add some constant description to
+ // the log line. The key/value pairs can then be used to add additional
+ // variable information. The key/value pairs should alternate string
+ // keys and arbitrary values.
+ Info(msg string, keysAndValues ...interface{})
+
+ // Error logs an error, with the given message and key/value pairs as context.
+ // It functions similarly to calling Info with the "error" named value, but may
+ // have unique behavior, and should be preferred for logging errors (see the
+ // package documentations for more information).
+ //
+ // The msg field should be used to add context to any underlying error,
+ // while the err field should be used to attach the actual error that
+ // triggered this log line, if present.
+ Error(err error, msg string, keysAndValues ...interface{})
+
+ // V returns an Logger value for a specific verbosity level, relative to
+ // this Logger. In other words, V values are additive. V higher verbosity
+ // level means a log message is less important. It's illegal to pass a log
+ // level less than zero.
+ V(level int) Logger
+
+ // WithValues adds some key-value pairs of context to a logger.
+ // See Info for documentation on how key/value pairs work.
+ WithValues(keysAndValues ...interface{}) Logger
+
+ // WithName adds a new element to the logger's name.
+ // Successive calls with WithName continue to append
+ // suffixes to the logger's name. It's strongly reccomended
+ // that name segments contain only letters, digits, and hyphens
+ // (see the package documentation for more information).
+ WithName(name string) Logger
+}
diff --git a/tools/deb-tools/vendor/k8s.io/klog/.travis.yml b/tools/deb-tools/vendor/k8s.io/klog/.travis.yml
deleted file mode 100644
index 5677664c..00000000
--- a/tools/deb-tools/vendor/k8s.io/klog/.travis.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-language: go
-go_import_path: k8s.io/klog
-dist: xenial
-go:
- - 1.9.x
- - 1.10.x
- - 1.11.x
- - 1.12.x
-script:
- - go get -t -v ./...
- - diff -u <(echo -n) <(gofmt -d .)
- - diff -u <(echo -n) <(golint $(go list -e ./...))
- - go tool vet . || go vet .
- - go test -v -race ./...
-install:
- - go get golang.org/x/lint/golint
diff --git a/tools/deb-tools/vendor/k8s.io/klog/go.mod b/tools/deb-tools/vendor/k8s.io/klog/go.mod
deleted file mode 100644
index 3877d854..00000000
--- a/tools/deb-tools/vendor/k8s.io/klog/go.mod
+++ /dev/null
@@ -1,5 +0,0 @@
-module k8s.io/klog
-
-go 1.12
-
-require github.com/go-logr/logr v0.1.0
diff --git a/tools/deb-tools/vendor/k8s.io/klog/go.sum b/tools/deb-tools/vendor/k8s.io/klog/go.sum
deleted file mode 100644
index fb64d277..00000000
--- a/tools/deb-tools/vendor/k8s.io/klog/go.sum
+++ /dev/null
@@ -1,2 +0,0 @@
-github.com/go-logr/logr v0.1.0 h1:M1Tv3VzNlEHg6uyACnRdtrploV2P7wZqH8BoQMtz0cg=
-github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas=
diff --git a/tools/deb-tools/vendor/k8s.io/klog/v2/.gitignore b/tools/deb-tools/vendor/k8s.io/klog/v2/.gitignore
new file mode 100644
index 00000000..0aa20023
--- /dev/null
+++ b/tools/deb-tools/vendor/k8s.io/klog/v2/.gitignore
@@ -0,0 +1,17 @@
+# OSX leaves these everywhere on SMB shares
+._*
+
+# OSX trash
+.DS_Store
+
+# Eclipse files
+.classpath
+.project
+.settings/**
+
+# Files generated by JetBrains IDEs, e.g. IntelliJ IDEA
+.idea/
+*.iml
+
+# Vscode files
+.vscode
diff --git a/tools/deb-tools/vendor/k8s.io/klog/BUILD.bazel b/tools/deb-tools/vendor/k8s.io/klog/v2/BUILD.bazel
similarity index 69%
rename from tools/deb-tools/vendor/k8s.io/klog/BUILD.bazel
rename to tools/deb-tools/vendor/k8s.io/klog/v2/BUILD.bazel
index 1ea39b94..5534137c 100644
--- a/tools/deb-tools/vendor/k8s.io/klog/BUILD.bazel
+++ b/tools/deb-tools/vendor/k8s.io/klog/v2/BUILD.bazel
@@ -6,7 +6,8 @@ go_library(
"klog.go",
"klog_file.go",
],
- importmap = "kope.io/etcd-manager/tools/deb-extract/vendor/k8s.io/klog",
- importpath = "k8s.io/klog",
+ importmap = "kope.io/etcd-manager/tools/deb-extract/vendor/k8s.io/klog/v2",
+ importpath = "k8s.io/klog/v2",
visibility = ["//visibility:public"],
+ deps = ["//vendor/github.com/go-logr/logr:go_default_library"],
)
diff --git a/tools/deb-tools/vendor/k8s.io/klog/CONTRIBUTING.md b/tools/deb-tools/vendor/k8s.io/klog/v2/CONTRIBUTING.md
similarity index 94%
rename from tools/deb-tools/vendor/k8s.io/klog/CONTRIBUTING.md
rename to tools/deb-tools/vendor/k8s.io/klog/v2/CONTRIBUTING.md
index 574a56ab..2641b1f4 100644
--- a/tools/deb-tools/vendor/k8s.io/klog/CONTRIBUTING.md
+++ b/tools/deb-tools/vendor/k8s.io/klog/v2/CONTRIBUTING.md
@@ -10,7 +10,7 @@ We have full documentation on how to get started contributing here:
- [Contributor License Agreement](https://git.k8s.io/community/CLA.md) Kubernetes projects require that you sign a Contributor License Agreement (CLA) before we can accept your pull requests
- [Kubernetes Contributor Guide](http://git.k8s.io/community/contributors/guide) - Main contributor documentation, or you can just jump directly to the [contributing section](http://git.k8s.io/community/contributors/guide#contributing)
-- [Contributor Cheat Sheet](https://git.k8s.io/community/contributors/guide/contributor-cheatsheet.md) - Common resources for existing developers
+- [Contributor Cheat Sheet](https://git.k8s.io/community/contributors/guide/contributor-cheatsheet) - Common resources for existing developers
## Mentorship
diff --git a/tools/deb-tools/vendor/k8s.io/klog/LICENSE b/tools/deb-tools/vendor/k8s.io/klog/v2/LICENSE
similarity index 100%
rename from tools/deb-tools/vendor/k8s.io/klog/LICENSE
rename to tools/deb-tools/vendor/k8s.io/klog/v2/LICENSE
diff --git a/tools/deb-tools/vendor/k8s.io/klog/OWNERS b/tools/deb-tools/vendor/k8s.io/klog/v2/OWNERS
similarity index 100%
rename from tools/deb-tools/vendor/k8s.io/klog/OWNERS
rename to tools/deb-tools/vendor/k8s.io/klog/v2/OWNERS
diff --git a/tools/deb-tools/vendor/k8s.io/klog/README.md b/tools/deb-tools/vendor/k8s.io/klog/v2/README.md
similarity index 85%
rename from tools/deb-tools/vendor/k8s.io/klog/README.md
rename to tools/deb-tools/vendor/k8s.io/klog/v2/README.md
index 841468b4..64d29622 100644
--- a/tools/deb-tools/vendor/k8s.io/klog/README.md
+++ b/tools/deb-tools/vendor/k8s.io/klog/v2/README.md
@@ -27,14 +27,20 @@ Historical context is available here:
How to use klog
===============
-- Replace imports for `github.com/golang/glog` with `k8s.io/klog`
+- Replace imports for `"github.com/golang/glog"` with `"k8s.io/klog/v2"`
- Use `klog.InitFlags(nil)` explicitly for initializing global flags as we no longer use `init()` method to register the flags
-- You can now use `log-file` instead of `log-dir` for logging to a single file (See `examples/log_file/usage_log_file.go`)
+- You can now use `log_file` instead of `log_dir` for logging to a single file (See `examples/log_file/usage_log_file.go`)
- If you want to redirect everything logged using klog somewhere else (say syslog!), you can use `klog.SetOutput()` method and supply a `io.Writer`. (See `examples/set_output/usage_set_output.go`)
- For more logging conventions (See [Logging Conventions](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-instrumentation/logging.md))
+**NOTE**: please use the newer go versions that support semantic import versioning in modules, ideally go 1.11.4 or greater.
+
+### Coexisting with klog/v2
+
+See [this example](examples/coexist_klog_v1_and_v2/) to see how to coexist with both klog/v1 and klog/v2.
+
### Coexisting with glog
-This package can be used side by side with glog. [This example](examples/coexist_glog/coexist_glog.go) shows how to initialize and syncronize flags from the global `flag.CommandLine` FlagSet. In addition, the example makes use of stderr as combined output by setting `alsologtostderr` (or `logtostderr`) to `true`.
+This package can be used side by side with glog. [This example](examples/coexist_glog/coexist_glog.go) shows how to initialize and synchronize flags from the global `flag.CommandLine` FlagSet. In addition, the example makes use of stderr as combined output by setting `alsologtostderr` (or `logtostderr`) to `true`.
## Community, discussion, contribution, and support
@@ -42,7 +48,7 @@ Learn how to engage with the Kubernetes community on the [community page](http:/
You can reach the maintainers of this project at:
-- [Slack](https://kubernetes.slack.com/messages/sig-architecture)
+- [Slack](https://kubernetes.slack.com/messages/klog)
- [Mailing List](https://groups.google.com/forum/#!forum/kubernetes-sig-architecture)
### Code of conduct
diff --git a/tools/deb-tools/vendor/k8s.io/klog/RELEASE.md b/tools/deb-tools/vendor/k8s.io/klog/v2/RELEASE.md
similarity index 100%
rename from tools/deb-tools/vendor/k8s.io/klog/RELEASE.md
rename to tools/deb-tools/vendor/k8s.io/klog/v2/RELEASE.md
diff --git a/tools/deb-tools/vendor/k8s.io/klog/v2/SECURITY.md b/tools/deb-tools/vendor/k8s.io/klog/v2/SECURITY.md
new file mode 100644
index 00000000..2083d44c
--- /dev/null
+++ b/tools/deb-tools/vendor/k8s.io/klog/v2/SECURITY.md
@@ -0,0 +1,22 @@
+# Security Policy
+
+## Security Announcements
+
+Join the [kubernetes-security-announce] group for security and vulnerability announcements.
+
+You can also subscribe to an RSS feed of the above using [this link][kubernetes-security-announce-rss].
+
+## Reporting a Vulnerability
+
+Instructions for reporting a vulnerability can be found on the
+[Kubernetes Security and Disclosure Information] page.
+
+## Supported Versions
+
+Information about supported Kubernetes versions can be found on the
+[Kubernetes version and version skew support policy] page on the Kubernetes website.
+
+[kubernetes-security-announce]: https://groups.google.com/forum/#!forum/kubernetes-security-announce
+[kubernetes-security-announce-rss]: https://groups.google.com/forum/feed/kubernetes-security-announce/msgs/rss_v2_0.xml?num=50
+[Kubernetes version and version skew support policy]: https://kubernetes.io/docs/setup/release/version-skew-policy/#supported-versions
+[Kubernetes Security and Disclosure Information]: https://kubernetes.io/docs/reference/issues-security/security/#report-a-vulnerability
diff --git a/tools/deb-tools/vendor/k8s.io/klog/SECURITY_CONTACTS b/tools/deb-tools/vendor/k8s.io/klog/v2/SECURITY_CONTACTS
similarity index 100%
rename from tools/deb-tools/vendor/k8s.io/klog/SECURITY_CONTACTS
rename to tools/deb-tools/vendor/k8s.io/klog/v2/SECURITY_CONTACTS
diff --git a/tools/deb-tools/vendor/k8s.io/klog/code-of-conduct.md b/tools/deb-tools/vendor/k8s.io/klog/v2/code-of-conduct.md
similarity index 100%
rename from tools/deb-tools/vendor/k8s.io/klog/code-of-conduct.md
rename to tools/deb-tools/vendor/k8s.io/klog/v2/code-of-conduct.md
diff --git a/tools/deb-tools/vendor/k8s.io/klog/v2/go.mod b/tools/deb-tools/vendor/k8s.io/klog/v2/go.mod
new file mode 100644
index 00000000..e396e31c
--- /dev/null
+++ b/tools/deb-tools/vendor/k8s.io/klog/v2/go.mod
@@ -0,0 +1,5 @@
+module k8s.io/klog/v2
+
+go 1.13
+
+require github.com/go-logr/logr v0.2.0
diff --git a/tools/deb-tools/vendor/k8s.io/klog/v2/go.sum b/tools/deb-tools/vendor/k8s.io/klog/v2/go.sum
new file mode 100644
index 00000000..8dfa7854
--- /dev/null
+++ b/tools/deb-tools/vendor/k8s.io/klog/v2/go.sum
@@ -0,0 +1,2 @@
+github.com/go-logr/logr v0.2.0 h1:QvGt2nLcHH0WK9orKa+ppBPAxREcH364nPUedEpK0TY=
+github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU=
diff --git a/tools/deb-tools/vendor/k8s.io/klog/klog.go b/tools/deb-tools/vendor/k8s.io/klog/v2/klog.go
similarity index 75%
rename from tools/deb-tools/vendor/k8s.io/klog/klog.go
rename to tools/deb-tools/vendor/k8s.io/klog/v2/klog.go
index 2712ce0a..23cced62 100644
--- a/tools/deb-tools/vendor/k8s.io/klog/klog.go
+++ b/tools/deb-tools/vendor/k8s.io/klog/v2/klog.go
@@ -87,6 +87,8 @@ import (
"sync"
"sync/atomic"
"time"
+
+ "github.com/go-logr/logr"
)
// severity identifies the sort of log: info, warning etc. It also implements
@@ -130,7 +132,7 @@ func (s *severity) String() string {
return strconv.FormatInt(int64(*s), 10)
}
-// Get is part of the flag.Value interface.
+// Get is part of the flag.Getter interface.
func (s *severity) Get() interface{} {
return *s
}
@@ -219,7 +221,7 @@ func (l *Level) String() string {
return strconv.FormatInt(int64(*l), 10)
}
-// Get is part of the flag.Value interface.
+// Get is part of the flag.Getter interface.
func (l *Level) Get() interface{} {
return *l
}
@@ -364,8 +366,11 @@ var errTraceSyntax = errors.New("syntax error: expect file.go:234")
func (t *traceLocation) Set(value string) error {
if value == "" {
// Unset.
+ logging.mu.Lock()
+ defer logging.mu.Unlock()
t.line = 0
t.file = ""
+ return nil
}
fields := strings.Split(value, ":")
if len(fields) != 2 {
@@ -408,6 +413,7 @@ func init() {
logging.skipHeaders = false
logging.addDirHeader = false
logging.skipLogHeaders = false
+ logging.oneOutput = false
go logging.flushDaemon()
}
@@ -425,8 +431,9 @@ func InitFlags(flagset *flag.FlagSet) {
flagset.BoolVar(&logging.toStderr, "logtostderr", logging.toStderr, "log to standard error instead of files")
flagset.BoolVar(&logging.alsoToStderr, "alsologtostderr", logging.alsoToStderr, "log to standard error as well as files")
flagset.Var(&logging.verbosity, "v", "number for the log level verbosity")
- flagset.BoolVar(&logging.skipHeaders, "add_dir_header", logging.addDirHeader, "If true, adds the file directory to the header")
+ flagset.BoolVar(&logging.addDirHeader, "add_dir_header", logging.addDirHeader, "If true, adds the file directory to the header of the log messages")
flagset.BoolVar(&logging.skipHeaders, "skip_headers", logging.skipHeaders, "If true, avoid header prefixes in the log messages")
+ flagset.BoolVar(&logging.oneOutput, "one_output", logging.oneOutput, "If true, only write logs to their native severity level (vs also writing to each lower severity level")
flagset.BoolVar(&logging.skipLogHeaders, "skip_log_headers", logging.skipLogHeaders, "If true, avoid headers when opening log files")
flagset.Var(&logging.stderrThreshold, "stderrthreshold", "logs at or above this threshold go to stderr")
flagset.Var(&logging.vmodule, "vmodule", "comma-separated list of pattern=N settings for file-filtered logging")
@@ -482,7 +489,7 @@ type loggingT struct {
logDir string
// If non-empty, specifies the path of the file to write logs. mutually exclusive
- // with the log-dir option.
+ // with the log_dir option.
logFile string
// When logFile is specified, this limiter makes sure the logFile won't exceeds a certain size. When exceeds, the
@@ -497,6 +504,15 @@ type loggingT struct {
// If true, add the file directory to the header
addDirHeader bool
+
+ // If set, all output will be redirected unconditionally to the provided logr.Logger
+ logr logr.Logger
+
+ // If true, messages will not be propagated to lower severity log levels
+ oneOutput bool
+
+ // If set, all output will be filtered through the filter.
+ filter LogFilter
}
// buffer holds a byte Buffer for reuse. The zero value is ready for use.
@@ -512,20 +528,20 @@ var logging loggingT
// l.mu is held.
func (l *loggingT) setVState(verbosity Level, filter []modulePat, setFilter bool) {
// Turn verbosity off so V will not fire while we are in transition.
- logging.verbosity.set(0)
+ l.verbosity.set(0)
// Ditto for filter length.
- atomic.StoreInt32(&logging.filterLength, 0)
+ atomic.StoreInt32(&l.filterLength, 0)
// Set the new filters and wipe the pc->Level map if the filter has changed.
if setFilter {
- logging.vmodule.filter = filter
- logging.vmap = make(map[uintptr]Level)
+ l.vmodule.filter = filter
+ l.vmap = make(map[uintptr]Level)
}
// Things are consistent now, so enable filtering and verbosity.
// They are enabled in order opposite to that in V.
- atomic.StoreInt32(&logging.filterLength, int32(len(filter)))
- logging.verbosity.set(verbosity)
+ atomic.StoreInt32(&l.filterLength, int32(len(filter)))
+ l.verbosity.set(verbosity)
}
// getBuffer returns a new, ready-to-use buffer.
@@ -679,44 +695,149 @@ func (buf *buffer) someDigits(i, d int) int {
return copy(buf.tmp[i:], buf.tmp[j:])
}
-func (l *loggingT) println(s severity, args ...interface{}) {
+func (l *loggingT) println(s severity, logr logr.Logger, filter LogFilter, args ...interface{}) {
buf, file, line := l.header(s, 0)
+ // if logr is set, we clear the generated header as we rely on the backing
+ // logr implementation to print headers
+ if logr != nil {
+ l.putBuffer(buf)
+ buf = l.getBuffer()
+ }
+ if filter != nil {
+ args = filter.Filter(args)
+ }
fmt.Fprintln(buf, args...)
- l.output(s, buf, file, line, false)
+ l.output(s, logr, buf, file, line, false)
}
-func (l *loggingT) print(s severity, args ...interface{}) {
- l.printDepth(s, 1, args...)
+func (l *loggingT) print(s severity, logr logr.Logger, filter LogFilter, args ...interface{}) {
+ l.printDepth(s, logr, filter, 1, args...)
}
-func (l *loggingT) printDepth(s severity, depth int, args ...interface{}) {
+func (l *loggingT) printDepth(s severity, logr logr.Logger, filter LogFilter, depth int, args ...interface{}) {
buf, file, line := l.header(s, depth)
+ // if logr is set, we clear the generated header as we rely on the backing
+ // logr implementation to print headers
+ if logr != nil {
+ l.putBuffer(buf)
+ buf = l.getBuffer()
+ }
+ if filter != nil {
+ args = filter.Filter(args)
+ }
fmt.Fprint(buf, args...)
if buf.Bytes()[buf.Len()-1] != '\n' {
buf.WriteByte('\n')
}
- l.output(s, buf, file, line, false)
+ l.output(s, logr, buf, file, line, false)
}
-func (l *loggingT) printf(s severity, format string, args ...interface{}) {
+func (l *loggingT) printf(s severity, logr logr.Logger, filter LogFilter, format string, args ...interface{}) {
buf, file, line := l.header(s, 0)
+ // if logr is set, we clear the generated header as we rely on the backing
+ // logr implementation to print headers
+ if logr != nil {
+ l.putBuffer(buf)
+ buf = l.getBuffer()
+ }
+ if filter != nil {
+ format, args = filter.FilterF(format, args)
+ }
fmt.Fprintf(buf, format, args...)
if buf.Bytes()[buf.Len()-1] != '\n' {
buf.WriteByte('\n')
}
- l.output(s, buf, file, line, false)
+ l.output(s, logr, buf, file, line, false)
}
// printWithFileLine behaves like print but uses the provided file and line number. If
// alsoLogToStderr is true, the log message always appears on standard error; it
// will also appear in the log file unless --logtostderr is set.
-func (l *loggingT) printWithFileLine(s severity, file string, line int, alsoToStderr bool, args ...interface{}) {
+func (l *loggingT) printWithFileLine(s severity, logr logr.Logger, filter LogFilter, file string, line int, alsoToStderr bool, args ...interface{}) {
buf := l.formatHeader(s, file, line)
+ // if logr is set, we clear the generated header as we rely on the backing
+ // logr implementation to print headers
+ if logr != nil {
+ l.putBuffer(buf)
+ buf = l.getBuffer()
+ }
+ if filter != nil {
+ args = filter.Filter(args)
+ }
fmt.Fprint(buf, args...)
if buf.Bytes()[buf.Len()-1] != '\n' {
buf.WriteByte('\n')
}
- l.output(s, buf, file, line, alsoToStderr)
+ l.output(s, logr, buf, file, line, alsoToStderr)
+}
+
+// if loggr is specified, will call loggr.Error, otherwise output with logging module.
+func (l *loggingT) errorS(err error, loggr logr.Logger, filter LogFilter, msg string, keysAndValues ...interface{}) {
+ if filter != nil {
+ msg, keysAndValues = filter.FilterS(msg, keysAndValues)
+ }
+ if loggr != nil {
+ loggr.Error(err, msg, keysAndValues...)
+ return
+ }
+ l.printS(err, msg, keysAndValues...)
+}
+
+// if loggr is specified, will call loggr.Info, otherwise output with logging module.
+func (l *loggingT) infoS(loggr logr.Logger, filter LogFilter, msg string, keysAndValues ...interface{}) {
+ if filter != nil {
+ msg, keysAndValues = filter.FilterS(msg, keysAndValues)
+ }
+ if loggr != nil {
+ loggr.Info(msg, keysAndValues...)
+ return
+ }
+ l.printS(nil, msg, keysAndValues...)
+}
+
+// printS is called from infoS and errorS if loggr is not specified.
+// if err arguments is specified, will output to errorLog severity
+func (l *loggingT) printS(err error, msg string, keysAndValues ...interface{}) {
+ b := &bytes.Buffer{}
+ b.WriteString(fmt.Sprintf("%q", msg))
+ if err != nil {
+ b.WriteByte(' ')
+ b.WriteString(fmt.Sprintf("err=%q", err.Error()))
+ }
+ kvListFormat(b, keysAndValues...)
+ var s severity
+ if err == nil {
+ s = infoLog
+ } else {
+ s = errorLog
+ }
+ l.printDepth(s, logging.logr, nil, 2, b)
+}
+
+const missingValue = "(MISSING)"
+
+func kvListFormat(b *bytes.Buffer, keysAndValues ...interface{}) {
+ for i := 0; i < len(keysAndValues); i += 2 {
+ var v interface{}
+ k := keysAndValues[i]
+ if i+1 < len(keysAndValues) {
+ v = keysAndValues[i+1]
+ } else {
+ v = missingValue
+ }
+ b.WriteByte(' ')
+
+ switch v.(type) {
+ case string, error:
+ b.WriteString(fmt.Sprintf("%s=%q", k, v))
+ default:
+ if _, ok := v.(fmt.Stringer); ok {
+ b.WriteString(fmt.Sprintf("%s=%q", k, v))
+ } else {
+ b.WriteString(fmt.Sprintf("%s=%+v", k, v))
+ }
+ }
+ }
}
// redirectBuffer is used to set an alternate destination for the logs
@@ -736,6 +857,18 @@ func (rb *redirectBuffer) Write(bytes []byte) (n int, err error) {
return rb.w.Write(bytes)
}
+// SetLogger will set the backing logr implementation for klog.
+// If set, all log lines will be suppressed from the regular Output, and
+// redirected to the logr implementation.
+// All log lines include the 'severity', 'file' and 'line' values attached as
+// structured logging values.
+// Use as:
+// ...
+// klog.SetLogger(zapr.NewLogger(zapLog))
+func SetLogger(logr logr.Logger) {
+ logging.logr = logr
+}
+
// SetOutput sets the output destination for all severities
func SetOutput(w io.Writer) {
logging.mu.Lock()
@@ -762,8 +895,16 @@ func SetOutputBySeverity(name string, w io.Writer) {
logging.file[sev] = rb
}
+// LogToStderr sets whether to log exclusively to stderr, bypassing outputs
+func LogToStderr(stderr bool) {
+ logging.mu.Lock()
+ defer logging.mu.Unlock()
+
+ logging.toStderr = stderr
+}
+
// output writes the data to the log files and releases the buffer.
-func (l *loggingT) output(s severity, buf *buffer, file string, line int, alsoToStderr bool) {
+func (l *loggingT) output(s severity, log logr.Logger, buf *buffer, file string, line int, alsoToStderr bool) {
l.mu.Lock()
if l.traceLocation.isSet() {
if l.traceLocation.match(file, line) {
@@ -771,7 +912,15 @@ func (l *loggingT) output(s severity, buf *buffer, file string, line int, alsoTo
}
}
data := buf.Bytes()
- if l.toStderr {
+ if log != nil {
+ // TODO: set 'severity' and caller information as structured log info
+ // keysAndValues := []interface{}{"severity", severityName[s], "file", file, "line", line}
+ if s == errorLog {
+ l.logr.Error(nil, string(data))
+ } else {
+ log.Info(string(data))
+ }
+ } else if l.toStderr {
os.Stderr.Write(data)
} else {
if alsoToStderr || l.alsoToStderr || s >= l.stderrThreshold.get() {
@@ -796,18 +945,22 @@ func (l *loggingT) output(s severity, buf *buffer, file string, line int, alsoTo
}
}
- switch s {
- case fatalLog:
- l.file[fatalLog].Write(data)
- fallthrough
- case errorLog:
- l.file[errorLog].Write(data)
- fallthrough
- case warningLog:
- l.file[warningLog].Write(data)
- fallthrough
- case infoLog:
- l.file[infoLog].Write(data)
+ if l.oneOutput {
+ l.file[s].Write(data)
+ } else {
+ switch s {
+ case fatalLog:
+ l.file[fatalLog].Write(data)
+ fallthrough
+ case errorLog:
+ l.file[errorLog].Write(data)
+ fallthrough
+ case warningLog:
+ l.file[warningLog].Write(data)
+ fallthrough
+ case infoLog:
+ l.file[infoLog].Write(data)
+ }
}
}
}
@@ -819,14 +972,12 @@ func (l *loggingT) output(s severity, buf *buffer, file string, line int, alsoTo
os.Exit(1)
}
// Dump all goroutine stacks before exiting.
- // First, make sure we see the trace for the current goroutine on standard error.
- // If -logtostderr has been specified, the loop below will do that anyway
- // as the first stack in the full dump.
- if !l.toStderr {
- os.Stderr.Write(stacks(false))
+ trace := stacks(true)
+ // Write the stack trace for all goroutines to the stderr.
+ if l.toStderr || l.alsoToStderr || s >= l.stderrThreshold.get() || alsoToStderr {
+ os.Stderr.Write(trace)
}
// Write the stack trace for all goroutines to the files.
- trace := stacks(true)
logExitFunc = func(error) {} // If we get a write error, we'll still exit below.
for log := fatalLog; log >= infoLog; log-- {
if f := l.file[log]; f != nil { // Can be nil if -logtostderr is set.
@@ -956,11 +1107,19 @@ func (sb *syncBuffer) rotateFile(now time.Time, startup bool) error {
}
var err error
sb.file, _, err = create(severityName[sb.sev], now, startup)
- sb.nbytes = 0
if err != nil {
return err
}
-
+ if startup {
+ fileInfo, err := sb.file.Stat()
+ if err != nil {
+ return fmt.Errorf("file stat could not get fileinfo: %v", err)
+ }
+ // init file size
+ sb.nbytes = uint64(fileInfo.Size())
+ } else {
+ sb.nbytes = 0
+ }
sb.Writer = bufio.NewWriterSize(sb.file, bufferSize)
if sb.logger.skipLogHeaders {
@@ -1076,7 +1235,7 @@ func (lb logBridge) Write(b []byte) (n int, err error) {
}
// printWithFileLine with alsoToStderr=true, so standard log messages
// always appear on standard error.
- logging.printWithFileLine(severity(lb), file, line, true, text)
+ logging.printWithFileLine(severity(lb), logging.logr, logging.filter, file, line, true, text)
return len(b), nil
}
@@ -1108,32 +1267,44 @@ func (l *loggingT) setV(pc uintptr) Level {
// Verbose is a boolean type that implements Infof (like Printf) etc.
// See the documentation of V for more information.
-type Verbose bool
+type Verbose struct {
+ enabled bool
+ logr logr.Logger
+ filter LogFilter
+}
+
+func newVerbose(level Level, b bool) Verbose {
+ if logging.logr == nil {
+ return Verbose{b, nil, logging.filter}
+ }
+ return Verbose{b, logging.logr.V(int(level)), logging.filter}
+}
// V reports whether verbosity at the call site is at least the requested level.
-// The returned value is a boolean of type Verbose, which implements Info, Infoln
+// The returned value is a struct of type Verbose, which implements Info, Infoln
// and Infof. These methods will write to the Info log if called.
// Thus, one may write either
-// if klog.V(2) { klog.Info("log this") }
+// if glog.V(2).Enabled() { klog.Info("log this") }
// or
// klog.V(2).Info("log this")
// The second form is shorter but the first is cheaper if logging is off because it does
// not evaluate its arguments.
//
// Whether an individual call to V generates a log record depends on the setting of
-// the -v and --vmodule flags; both are off by default. If the level in the call to
-// V is at least the value of -v, or of -vmodule for the source file containing the
-// call, the V call will log.
+// the -v and -vmodule flags; both are off by default. The V call will log if its level
+// is less than or equal to the value of the -v flag, or alternatively if its level is
+// less than or equal to the value of the -vmodule pattern matching the source file
+// containing the call.
func V(level Level) Verbose {
// This function tries hard to be cheap unless there's work to do.
// The fast path is two atomic loads and compares.
// Here is a cheap but safe test to see if V logging is enabled globally.
if logging.verbosity.get() >= level {
- return Verbose(true)
+ return newVerbose(level, true)
}
- // It's off globally but it vmodule may still be set.
+ // It's off globally but vmodule may still be set.
// Here is another cheap but safe test to see if vmodule is enabled.
if atomic.LoadInt32(&logging.filterLength) > 0 {
// Now we need a proper lock to use the logging structure. The pcs field
@@ -1142,138 +1313,193 @@ func V(level Level) Verbose {
logging.mu.Lock()
defer logging.mu.Unlock()
if runtime.Callers(2, logging.pcs[:]) == 0 {
- return Verbose(false)
+ return newVerbose(level, false)
}
v, ok := logging.vmap[logging.pcs[0]]
if !ok {
v = logging.setV(logging.pcs[0])
}
- return Verbose(v >= level)
+ return newVerbose(level, v >= level)
}
- return Verbose(false)
+ return newVerbose(level, false)
+}
+
+// Enabled will return true if this log level is enabled, guarded by the value
+// of v.
+// See the documentation of V for usage.
+func (v Verbose) Enabled() bool {
+ return v.enabled
}
// Info is equivalent to the global Info function, guarded by the value of v.
// See the documentation of V for usage.
func (v Verbose) Info(args ...interface{}) {
- if v {
- logging.print(infoLog, args...)
+ if v.enabled {
+ logging.print(infoLog, v.logr, v.filter, args...)
}
}
// Infoln is equivalent to the global Infoln function, guarded by the value of v.
// See the documentation of V for usage.
func (v Verbose) Infoln(args ...interface{}) {
- if v {
- logging.println(infoLog, args...)
+ if v.enabled {
+ logging.println(infoLog, v.logr, v.filter, args...)
}
}
// Infof is equivalent to the global Infof function, guarded by the value of v.
// See the documentation of V for usage.
func (v Verbose) Infof(format string, args ...interface{}) {
- if v {
- logging.printf(infoLog, format, args...)
+ if v.enabled {
+ logging.printf(infoLog, v.logr, v.filter, format, args...)
+ }
+}
+
+// InfoS is equivalent to the global InfoS function, guarded by the value of v.
+// See the documentation of V for usage.
+func (v Verbose) InfoS(msg string, keysAndValues ...interface{}) {
+ if v.enabled {
+ logging.infoS(v.logr, v.filter, msg, keysAndValues...)
+ }
+}
+
+// Deprecated: Use ErrorS instead.
+func (v Verbose) Error(err error, msg string, args ...interface{}) {
+ if v.enabled {
+ logging.errorS(err, v.logr, v.filter, msg, args...)
+ }
+}
+
+// ErrorS is equivalent to the global Error function, guarded by the value of v.
+// See the documentation of V for usage.
+func (v Verbose) ErrorS(err error, msg string, keysAndValues ...interface{}) {
+ if v.enabled {
+ logging.errorS(err, v.logr, v.filter, msg, keysAndValues...)
}
}
// Info logs to the INFO log.
// Arguments are handled in the manner of fmt.Print; a newline is appended if missing.
func Info(args ...interface{}) {
- logging.print(infoLog, args...)
+ logging.print(infoLog, logging.logr, logging.filter, args...)
}
// InfoDepth acts as Info but uses depth to determine which call frame to log.
// InfoDepth(0, "msg") is the same as Info("msg").
func InfoDepth(depth int, args ...interface{}) {
- logging.printDepth(infoLog, depth, args...)
+ logging.printDepth(infoLog, logging.logr, logging.filter, depth, args...)
}
// Infoln logs to the INFO log.
// Arguments are handled in the manner of fmt.Println; a newline is always appended.
func Infoln(args ...interface{}) {
- logging.println(infoLog, args...)
+ logging.println(infoLog, logging.logr, logging.filter, args...)
}
// Infof logs to the INFO log.
// Arguments are handled in the manner of fmt.Printf; a newline is appended if missing.
func Infof(format string, args ...interface{}) {
- logging.printf(infoLog, format, args...)
+ logging.printf(infoLog, logging.logr, logging.filter, format, args...)
+}
+
+// InfoS structured logs to the INFO log.
+// The msg argument used to add constant description to the log line.
+// The key/value pairs would be join by "=" ; a newline is always appended.
+//
+// Basic examples:
+// >> klog.InfoS("Pod status updated", "pod", "kubedns", "status", "ready")
+// output:
+// >> I1025 00:15:15.525108 1 controller_utils.go:116] "Pod status updated" pod="kubedns" status="ready"
+func InfoS(msg string, keysAndValues ...interface{}) {
+ logging.infoS(logging.logr, logging.filter, msg, keysAndValues...)
}
// Warning logs to the WARNING and INFO logs.
// Arguments are handled in the manner of fmt.Print; a newline is appended if missing.
func Warning(args ...interface{}) {
- logging.print(warningLog, args...)
+ logging.print(warningLog, logging.logr, logging.filter, args...)
}
// WarningDepth acts as Warning but uses depth to determine which call frame to log.
// WarningDepth(0, "msg") is the same as Warning("msg").
func WarningDepth(depth int, args ...interface{}) {
- logging.printDepth(warningLog, depth, args...)
+ logging.printDepth(warningLog, logging.logr, logging.filter, depth, args...)
}
// Warningln logs to the WARNING and INFO logs.
// Arguments are handled in the manner of fmt.Println; a newline is always appended.
func Warningln(args ...interface{}) {
- logging.println(warningLog, args...)
+ logging.println(warningLog, logging.logr, logging.filter, args...)
}
// Warningf logs to the WARNING and INFO logs.
// Arguments are handled in the manner of fmt.Printf; a newline is appended if missing.
func Warningf(format string, args ...interface{}) {
- logging.printf(warningLog, format, args...)
+ logging.printf(warningLog, logging.logr, logging.filter, format, args...)
}
// Error logs to the ERROR, WARNING, and INFO logs.
// Arguments are handled in the manner of fmt.Print; a newline is appended if missing.
func Error(args ...interface{}) {
- logging.print(errorLog, args...)
+ logging.print(errorLog, logging.logr, logging.filter, args...)
}
// ErrorDepth acts as Error but uses depth to determine which call frame to log.
// ErrorDepth(0, "msg") is the same as Error("msg").
func ErrorDepth(depth int, args ...interface{}) {
- logging.printDepth(errorLog, depth, args...)
+ logging.printDepth(errorLog, logging.logr, logging.filter, depth, args...)
}
// Errorln logs to the ERROR, WARNING, and INFO logs.
// Arguments are handled in the manner of fmt.Println; a newline is always appended.
func Errorln(args ...interface{}) {
- logging.println(errorLog, args...)
+ logging.println(errorLog, logging.logr, logging.filter, args...)
}
// Errorf logs to the ERROR, WARNING, and INFO logs.
// Arguments are handled in the manner of fmt.Printf; a newline is appended if missing.
func Errorf(format string, args ...interface{}) {
- logging.printf(errorLog, format, args...)
+ logging.printf(errorLog, logging.logr, logging.filter, format, args...)
+}
+
+// ErrorS structured logs to the ERROR, WARNING, and INFO logs.
+// the err argument used as "err" field of log line.
+// The msg argument used to add constant description to the log line.
+// The key/value pairs would be join by "=" ; a newline is always appended.
+//
+// Basic examples:
+// >> klog.ErrorS(err, "Failed to update pod status")
+// output:
+// >> E1025 00:15:15.525108 1 controller_utils.go:114] "Failed to update pod status" err="timeout"
+func ErrorS(err error, msg string, keysAndValues ...interface{}) {
+ logging.errorS(err, logging.logr, logging.filter, msg, keysAndValues...)
}
// Fatal logs to the FATAL, ERROR, WARNING, and INFO logs,
// including a stack trace of all running goroutines, then calls os.Exit(255).
// Arguments are handled in the manner of fmt.Print; a newline is appended if missing.
func Fatal(args ...interface{}) {
- logging.print(fatalLog, args...)
+ logging.print(fatalLog, logging.logr, logging.filter, args...)
}
// FatalDepth acts as Fatal but uses depth to determine which call frame to log.
// FatalDepth(0, "msg") is the same as Fatal("msg").
func FatalDepth(depth int, args ...interface{}) {
- logging.printDepth(fatalLog, depth, args...)
+ logging.printDepth(fatalLog, logging.logr, logging.filter, depth, args...)
}
// Fatalln logs to the FATAL, ERROR, WARNING, and INFO logs,
// including a stack trace of all running goroutines, then calls os.Exit(255).
// Arguments are handled in the manner of fmt.Println; a newline is always appended.
func Fatalln(args ...interface{}) {
- logging.println(fatalLog, args...)
+ logging.println(fatalLog, logging.logr, logging.filter, args...)
}
// Fatalf logs to the FATAL, ERROR, WARNING, and INFO logs,
// including a stack trace of all running goroutines, then calls os.Exit(255).
// Arguments are handled in the manner of fmt.Printf; a newline is appended if missing.
func Fatalf(format string, args ...interface{}) {
- logging.printf(fatalLog, format, args...)
+ logging.printf(fatalLog, logging.logr, logging.filter, format, args...)
}
// fatalNoStacks is non-zero if we are to exit without dumping goroutine stacks.
@@ -1284,25 +1510,77 @@ var fatalNoStacks uint32
// Arguments are handled in the manner of fmt.Print; a newline is appended if missing.
func Exit(args ...interface{}) {
atomic.StoreUint32(&fatalNoStacks, 1)
- logging.print(fatalLog, args...)
+ logging.print(fatalLog, logging.logr, logging.filter, args...)
}
// ExitDepth acts as Exit but uses depth to determine which call frame to log.
// ExitDepth(0, "msg") is the same as Exit("msg").
func ExitDepth(depth int, args ...interface{}) {
atomic.StoreUint32(&fatalNoStacks, 1)
- logging.printDepth(fatalLog, depth, args...)
+ logging.printDepth(fatalLog, logging.logr, logging.filter, depth, args...)
}
// Exitln logs to the FATAL, ERROR, WARNING, and INFO logs, then calls os.Exit(1).
func Exitln(args ...interface{}) {
atomic.StoreUint32(&fatalNoStacks, 1)
- logging.println(fatalLog, args...)
+ logging.println(fatalLog, logging.logr, logging.filter, args...)
}
// Exitf logs to the FATAL, ERROR, WARNING, and INFO logs, then calls os.Exit(1).
// Arguments are handled in the manner of fmt.Printf; a newline is appended if missing.
func Exitf(format string, args ...interface{}) {
atomic.StoreUint32(&fatalNoStacks, 1)
- logging.printf(fatalLog, format, args...)
+ logging.printf(fatalLog, logging.logr, logging.filter, format, args...)
+}
+
+// LogFilter is a collection of functions that can filter all logging calls,
+// e.g. for sanitization of arguments and prevent accidental leaking of secrets.
+type LogFilter interface {
+ Filter(args []interface{}) []interface{}
+ FilterF(format string, args []interface{}) (string, []interface{})
+ FilterS(msg string, keysAndValues []interface{}) (string, []interface{})
+}
+
+func SetLogFilter(filter LogFilter) {
+ logging.mu.Lock()
+ defer logging.mu.Unlock()
+
+ logging.filter = filter
+}
+
+// ObjectRef references a kubernetes object
+type ObjectRef struct {
+ Name string `json:"name"`
+ Namespace string `json:"namespace,omitempty"`
+}
+
+func (ref ObjectRef) String() string {
+ if ref.Namespace != "" {
+ return fmt.Sprintf("%s/%s", ref.Namespace, ref.Name)
+ }
+ return ref.Name
+}
+
+// KMetadata is a subset of the kubernetes k8s.io/apimachinery/pkg/apis/meta/v1.Object interface
+// this interface may expand in the future, but will always be a subset of the
+// kubernetes k8s.io/apimachinery/pkg/apis/meta/v1.Object interface
+type KMetadata interface {
+ GetName() string
+ GetNamespace() string
+}
+
+// KObj returns ObjectRef from ObjectMeta
+func KObj(obj KMetadata) ObjectRef {
+ return ObjectRef{
+ Name: obj.GetName(),
+ Namespace: obj.GetNamespace(),
+ }
+}
+
+// KRef returns ObjectRef from name and namespace
+func KRef(namespace, name string) ObjectRef {
+ return ObjectRef{
+ Name: name,
+ Namespace: namespace,
+ }
}
diff --git a/tools/deb-tools/vendor/k8s.io/klog/klog_file.go b/tools/deb-tools/vendor/k8s.io/klog/v2/klog_file.go
similarity index 77%
rename from tools/deb-tools/vendor/k8s.io/klog/klog_file.go
rename to tools/deb-tools/vendor/k8s.io/klog/v2/klog_file.go
index e4010ad4..de830d92 100644
--- a/tools/deb-tools/vendor/k8s.io/klog/klog_file.go
+++ b/tools/deb-tools/vendor/k8s.io/klog/v2/klog_file.go
@@ -24,6 +24,7 @@ import (
"os"
"os/user"
"path/filepath"
+ "runtime"
"strings"
"sync"
"time"
@@ -43,25 +44,49 @@ func createLogDirs() {
}
var (
- pid = os.Getpid()
- program = filepath.Base(os.Args[0])
- host = "unknownhost"
- userName = "unknownuser"
+ pid = os.Getpid()
+ program = filepath.Base(os.Args[0])
+ host = "unknownhost"
+ userName = "unknownuser"
+ userNameOnce sync.Once
)
func init() {
- h, err := os.Hostname()
- if err == nil {
+ if h, err := os.Hostname(); err == nil {
host = shortHostname(h)
}
+}
- current, err := user.Current()
- if err == nil {
- userName = current.Username
- }
+func getUserName() string {
+ userNameOnce.Do(func() {
+ // On Windows, the Go 'user' package requires netapi32.dll.
+ // This affects Windows Nano Server:
+ // https://github.com/golang/go/issues/21867
+ // Fallback to using environment variables.
+ if runtime.GOOS == "windows" {
+ u := os.Getenv("USERNAME")
+ if len(u) == 0 {
+ return
+ }
+ // Sanitize the USERNAME since it may contain filepath separators.
+ u = strings.Replace(u, `\`, "_", -1)
+
+ // user.Current().Username normally produces something like 'USERDOMAIN\USERNAME'
+ d := os.Getenv("USERDOMAIN")
+ if len(d) != 0 {
+ userName = d + "_" + u
+ } else {
+ userName = u
+ }
+ } else {
+ current, err := user.Current()
+ if err == nil {
+ userName = current.Username
+ }
+ }
+ })
- // Sanitize userName since it may contain filepath separators on Windows.
- userName = strings.Replace(userName, `\`, "_", -1)
+ return userName
}
// shortHostname returns its argument, truncating at the first period.
@@ -79,7 +104,7 @@ func logName(tag string, t time.Time) (name, link string) {
name = fmt.Sprintf("%s.%s.%s.log.%s.%04d%02d%02d-%02d%02d%02d.%d",
program,
host,
- userName,
+ getUserName(),
tag,
t.Year(),
t.Month(),
diff --git a/tools/deb-tools/vendor/modules.txt b/tools/deb-tools/vendor/modules.txt
index b909a770..1cea56d7 100644
--- a/tools/deb-tools/vendor/modules.txt
+++ b/tools/deb-tools/vendor/modules.txt
@@ -1,9 +1,11 @@
# github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb
github.com/blakesmith/ar
+# github.com/go-logr/logr v0.2.0
+github.com/go-logr/logr
# github.com/ulikunitz/xz v0.5.8
github.com/ulikunitz/xz
github.com/ulikunitz/xz/internal/hash
github.com/ulikunitz/xz/internal/xlog
github.com/ulikunitz/xz/lzma
-# k8s.io/klog v1.0.0
-k8s.io/klog
+# k8s.io/klog/v2 v2.4.0
+k8s.io/klog/v2
diff --git a/vendor/cloud.google.com/go/compute/metadata/.repo-metadata.json b/vendor/cloud.google.com/go/compute/metadata/.repo-metadata.json
deleted file mode 100644
index ca022ccc..00000000
--- a/vendor/cloud.google.com/go/compute/metadata/.repo-metadata.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "name": "metadata",
- "name_pretty": "Google Compute Engine Metadata API",
- "product_documentation": "https://cloud.google.com/compute/docs/storing-retrieving-metadata",
- "client_documentation": "https://godoc.org/cloud.google.com/go/compute/metadata",
- "release_level": "ga",
- "language": "go",
- "repo": "googleapis/google-cloud-go",
- "distribution_name": "cloud.google.com/go/compute/metadata",
- "api_id": "compute:metadata",
- "requires_billing": false
-}
diff --git a/vendor/cloud.google.com/go/compute/metadata/metadata.go b/vendor/cloud.google.com/go/compute/metadata/metadata.go
index 0b50c2a7..1a7a4c7e 100644
--- a/vendor/cloud.google.com/go/compute/metadata/metadata.go
+++ b/vendor/cloud.google.com/go/compute/metadata/metadata.go
@@ -61,25 +61,14 @@ var (
instID = &cachedValue{k: "instance/id", trim: true}
)
-var (
- defaultClient = &Client{hc: &http.Client{
- Transport: &http.Transport{
- Dial: (&net.Dialer{
- Timeout: 2 * time.Second,
- KeepAlive: 30 * time.Second,
- }).Dial,
- ResponseHeaderTimeout: 2 * time.Second,
- },
- }}
- subscribeClient = &Client{hc: &http.Client{
- Transport: &http.Transport{
- Dial: (&net.Dialer{
- Timeout: 2 * time.Second,
- KeepAlive: 30 * time.Second,
- }).Dial,
- },
- }}
-)
+var defaultClient = &Client{hc: &http.Client{
+ Transport: &http.Transport{
+ Dial: (&net.Dialer{
+ Timeout: 2 * time.Second,
+ KeepAlive: 30 * time.Second,
+ }).Dial,
+ },
+}}
// NotDefinedError is returned when requested metadata is not defined.
//
@@ -206,10 +195,9 @@ func systemInfoSuggestsGCE() bool {
return name == "Google" || name == "Google Compute Engine"
}
-// Subscribe calls Client.Subscribe on a client designed for subscribing (one with no
-// ResponseHeaderTimeout).
+// Subscribe calls Client.Subscribe on the default client.
func Subscribe(suffix string, fn func(v string, ok bool) error) error {
- return subscribeClient.Subscribe(suffix, fn)
+ return defaultClient.Subscribe(suffix, fn)
}
// Get calls Client.Get on the default client.
@@ -280,9 +268,14 @@ type Client struct {
hc *http.Client
}
-// NewClient returns a Client that can be used to fetch metadata. All HTTP requests
-// will use the given http.Client instead of the default client.
+// NewClient returns a Client that can be used to fetch metadata.
+// Returns the client that uses the specified http.Client for HTTP requests.
+// If nil is specified, returns the default client.
func NewClient(c *http.Client) *Client {
+ if c == nil {
+ return defaultClient
+ }
+
return &Client{hc: c}
}
diff --git a/vendor/github.com/Azure/azure-pipeline-go/LICENSE b/vendor/github.com/Azure/azure-pipeline-go/LICENSE
new file mode 100644
index 00000000..d1ca00f2
--- /dev/null
+++ b/vendor/github.com/Azure/azure-pipeline-go/LICENSE
@@ -0,0 +1,21 @@
+ MIT License
+
+ Copyright (c) Microsoft Corporation. All rights reserved.
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE
\ No newline at end of file
diff --git a/vendor/github.com/Azure/azure-pipeline-go/pipeline/BUILD.bazel b/vendor/github.com/Azure/azure-pipeline-go/pipeline/BUILD.bazel
new file mode 100644
index 00000000..f009e5e5
--- /dev/null
+++ b/vendor/github.com/Azure/azure-pipeline-go/pipeline/BUILD.bazel
@@ -0,0 +1,21 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_library")
+
+go_library(
+ name = "go_default_library",
+ srcs = [
+ "core.go",
+ "defaultlog.go",
+ "defaultlog_syslog.go",
+ "defaultlog_windows.go",
+ "doc.go",
+ "error.go",
+ "progress.go",
+ "request.go",
+ "response.go",
+ "version.go",
+ ],
+ importmap = "kope.io/etcd-manager/vendor/github.com/Azure/azure-pipeline-go/pipeline",
+ importpath = "github.com/Azure/azure-pipeline-go/pipeline",
+ visibility = ["//visibility:public"],
+ deps = ["//vendor/github.com/mattn/go-ieproxy:go_default_library"],
+)
diff --git a/vendor/github.com/Azure/azure-pipeline-go/pipeline/core.go b/vendor/github.com/Azure/azure-pipeline-go/pipeline/core.go
new file mode 100644
index 00000000..d7b866cd
--- /dev/null
+++ b/vendor/github.com/Azure/azure-pipeline-go/pipeline/core.go
@@ -0,0 +1,284 @@
+package pipeline
+
+import (
+ "context"
+ "github.com/mattn/go-ieproxy"
+ "net"
+ "net/http"
+ "os"
+ "time"
+)
+
+// The Factory interface represents an object that can create its Policy object. Each HTTP request sent
+// requires that this Factory create a new instance of its Policy object.
+type Factory interface {
+ New(next Policy, po *PolicyOptions) Policy
+}
+
+// FactoryFunc is an adapter that allows the use of an ordinary function as a Factory interface.
+type FactoryFunc func(next Policy, po *PolicyOptions) PolicyFunc
+
+// New calls f(next,po).
+func (f FactoryFunc) New(next Policy, po *PolicyOptions) Policy {
+ return f(next, po)
+}
+
+// The Policy interface represents a mutable Policy object created by a Factory. The object can mutate/process
+// the HTTP request and then forward it on to the next Policy object in the linked-list. The returned
+// Response goes backward through the linked-list for additional processing.
+// NOTE: Request is passed by value so changes do not change the caller's version of
+// the request. However, Request has some fields that reference mutable objects (not strings).
+// These references are copied; a deep copy is not performed. Specifically, this means that
+// you should avoid modifying the objects referred to by these fields: URL, Header, Body,
+// GetBody, TransferEncoding, Form, MultipartForm, Trailer, TLS, Cancel, and Response.
+type Policy interface {
+ Do(ctx context.Context, request Request) (Response, error)
+}
+
+// PolicyFunc is an adapter that allows the use of an ordinary function as a Policy interface.
+type PolicyFunc func(ctx context.Context, request Request) (Response, error)
+
+// Do calls f(ctx, request).
+func (f PolicyFunc) Do(ctx context.Context, request Request) (Response, error) {
+ return f(ctx, request)
+}
+
+// Options configures a Pipeline's behavior.
+type Options struct {
+ HTTPSender Factory // If sender is nil, then the pipeline's default client is used to send the HTTP requests.
+ Log LogOptions
+}
+
+// LogLevel tells a logger the minimum level to log. When code reports a log entry,
+// the LogLevel indicates the level of the log entry. The logger only records entries
+// whose level is at least the level it was told to log. See the Log* constants.
+// For example, if a logger is configured with LogError, then LogError, LogPanic,
+// and LogFatal entries will be logged; lower level entries are ignored.
+type LogLevel uint32
+
+const (
+ // LogNone tells a logger not to log any entries passed to it.
+ LogNone LogLevel = iota
+
+ // LogFatal tells a logger to log all LogFatal entries passed to it.
+ LogFatal
+
+ // LogPanic tells a logger to log all LogPanic and LogFatal entries passed to it.
+ LogPanic
+
+ // LogError tells a logger to log all LogError, LogPanic and LogFatal entries passed to it.
+ LogError
+
+ // LogWarning tells a logger to log all LogWarning, LogError, LogPanic and LogFatal entries passed to it.
+ LogWarning
+
+ // LogInfo tells a logger to log all LogInfo, LogWarning, LogError, LogPanic and LogFatal entries passed to it.
+ LogInfo
+
+ // LogDebug tells a logger to log all LogDebug, LogInfo, LogWarning, LogError, LogPanic and LogFatal entries passed to it.
+ LogDebug
+)
+
+// LogOptions configures the pipeline's logging mechanism & level filtering.
+type LogOptions struct {
+ Log func(level LogLevel, message string)
+
+ // ShouldLog is called periodically allowing you to return whether the specified LogLevel should be logged or not.
+ // An application can return different values over the its lifetime; this allows the application to dynamically
+ // alter what is logged. NOTE: This method can be called by multiple goroutines simultaneously so make sure
+ // you implement it in a goroutine-safe way. If nil, nothing is logged (the equivalent of returning LogNone).
+ // Usually, the function will be implemented simply like this: return level <= LogWarning
+ ShouldLog func(level LogLevel) bool
+}
+
+type pipeline struct {
+ factories []Factory
+ options Options
+}
+
+// The Pipeline interface represents an ordered list of Factory objects and an object implementing the HTTPSender interface.
+// You construct a Pipeline by calling the pipeline.NewPipeline function. To send an HTTP request, call pipeline.NewRequest
+// and then call Pipeline's Do method passing a context, the request, and a method-specific Factory (or nil). Passing a
+// method-specific Factory allows this one call to Do to inject a Policy into the linked-list. The policy is injected where
+// the MethodFactoryMarker (see the pipeline.MethodFactoryMarker function) is in the slice of Factory objects.
+//
+// When Do is called, the Pipeline object asks each Factory object to construct its Policy object and adds each Policy to a linked-list.
+// THen, Do sends the Context and Request through all the Policy objects. The final Policy object sends the request over the network
+// (via the HTTPSender object passed to NewPipeline) and the response is returned backwards through all the Policy objects.
+// Since Pipeline and Factory objects are goroutine-safe, you typically create 1 Pipeline object and reuse it to make many HTTP requests.
+type Pipeline interface {
+ Do(ctx context.Context, methodFactory Factory, request Request) (Response, error)
+}
+
+// NewPipeline creates a new goroutine-safe Pipeline object from the slice of Factory objects and the specified options.
+func NewPipeline(factories []Factory, o Options) Pipeline {
+ if o.HTTPSender == nil {
+ o.HTTPSender = newDefaultHTTPClientFactory()
+ }
+ if o.Log.Log == nil {
+ o.Log.Log = func(LogLevel, string) {} // No-op logger
+ }
+ return &pipeline{factories: factories, options: o}
+}
+
+// Do is called for each and every HTTP request. It tells each Factory to create its own (mutable) Policy object
+// replacing a MethodFactoryMarker factory (if it exists) with the methodFactory passed in. Then, the Context and Request
+// are sent through the pipeline of Policy objects (which can transform the Request's URL/query parameters/headers) and
+// ultimately sends the transformed HTTP request over the network.
+func (p *pipeline) Do(ctx context.Context, methodFactory Factory, request Request) (Response, error) {
+ response, err := p.newPolicies(methodFactory).Do(ctx, request)
+ request.close()
+ return response, err
+}
+
+func (p *pipeline) newPolicies(methodFactory Factory) Policy {
+ // The last Policy is the one that actually sends the request over the wire and gets the response.
+ // It is overridable via the Options' HTTPSender field.
+ po := &PolicyOptions{pipeline: p} // One object shared by all policy objects
+ next := p.options.HTTPSender.New(nil, po)
+
+ // Walk over the slice of Factory objects in reverse (from wire to API)
+ markers := 0
+ for i := len(p.factories) - 1; i >= 0; i-- {
+ factory := p.factories[i]
+ if _, ok := factory.(methodFactoryMarker); ok {
+ markers++
+ if markers > 1 {
+ panic("MethodFactoryMarker can only appear once in the pipeline")
+ }
+ if methodFactory != nil {
+ // Replace MethodFactoryMarker with passed-in methodFactory
+ next = methodFactory.New(next, po)
+ }
+ } else {
+ // Use the slice's Factory to construct its Policy
+ next = factory.New(next, po)
+ }
+ }
+
+ // Each Factory has created its Policy
+ if markers == 0 && methodFactory != nil {
+ panic("Non-nil methodFactory requires MethodFactoryMarker in the pipeline")
+ }
+ return next // Return head of the Policy object linked-list
+}
+
+// A PolicyOptions represents optional information that can be used by a node in the
+// linked-list of Policy objects. A PolicyOptions is passed to the Factory's New method
+// which passes it (if desired) to the Policy object it creates. Today, the Policy object
+// uses the options to perform logging. But, in the future, this could be used for more.
+type PolicyOptions struct {
+ pipeline *pipeline
+}
+
+// ShouldLog returns true if the specified log level should be logged.
+func (po *PolicyOptions) ShouldLog(level LogLevel) bool {
+ if po.pipeline.options.Log.ShouldLog != nil {
+ return po.pipeline.options.Log.ShouldLog(level)
+ }
+ return false
+}
+
+// Log logs a string to the Pipeline's Logger.
+func (po *PolicyOptions) Log(level LogLevel, msg string) {
+ if !po.ShouldLog(level) {
+ return // Short circuit message formatting if we're not logging it
+ }
+
+ // We are logging it, ensure trailing newline
+ if len(msg) == 0 || msg[len(msg)-1] != '\n' {
+ msg += "\n" // Ensure trailing newline
+ }
+ po.pipeline.options.Log.Log(level, msg)
+
+ // If logger doesn't handle fatal/panic, we'll do it here.
+ if level == LogFatal {
+ os.Exit(1)
+ } else if level == LogPanic {
+ panic(msg)
+ }
+}
+
+var pipelineHTTPClient = newDefaultHTTPClient()
+
+func newDefaultHTTPClient() *http.Client {
+ // We want the Transport to have a large connection pool
+ return &http.Client{
+ Transport: &http.Transport{
+ Proxy: ieproxy.GetProxyFunc(),
+ // We use Dial instead of DialContext as DialContext has been reported to cause slower performance.
+ Dial /*Context*/ : (&net.Dialer{
+ Timeout: 30 * time.Second,
+ KeepAlive: 30 * time.Second,
+ DualStack: true,
+ }).Dial, /*Context*/
+ MaxIdleConns: 0, // No limit
+ MaxIdleConnsPerHost: 100,
+ IdleConnTimeout: 90 * time.Second,
+ TLSHandshakeTimeout: 10 * time.Second,
+ ExpectContinueTimeout: 1 * time.Second,
+ DisableKeepAlives: false,
+ DisableCompression: false,
+ MaxResponseHeaderBytes: 0,
+ //ResponseHeaderTimeout: time.Duration{},
+ //ExpectContinueTimeout: time.Duration{},
+ },
+ }
+}
+
+// newDefaultHTTPClientFactory creates a DefaultHTTPClientPolicyFactory object that sends HTTP requests to a Go's default http.Client.
+func newDefaultHTTPClientFactory() Factory {
+ return FactoryFunc(func(next Policy, po *PolicyOptions) PolicyFunc {
+ return func(ctx context.Context, request Request) (Response, error) {
+ r, err := pipelineHTTPClient.Do(request.WithContext(ctx))
+ if err != nil {
+ err = NewError(err, "HTTP request failed")
+ }
+ return NewHTTPResponse(r), err
+ }
+ })
+}
+
+var mfm = methodFactoryMarker{} // Singleton
+
+// MethodFactoryMarker returns a special marker Factory object. When Pipeline's Do method is called, any
+// MethodMarkerFactory object is replaced with the specified methodFactory object. If nil is passed fro Do's
+// methodFactory parameter, then the MethodFactoryMarker is ignored as the linked-list of Policy objects is created.
+func MethodFactoryMarker() Factory {
+ return mfm
+}
+
+type methodFactoryMarker struct {
+}
+
+func (methodFactoryMarker) New(next Policy, po *PolicyOptions) Policy {
+ panic("methodFactoryMarker policy should have been replaced with a method policy")
+}
+
+// LogSanitizer can be implemented to clean secrets from lines logged by ForceLog
+// By default no implemetation is provided here, because pipeline may be used in many different
+// contexts, so the correct implementation is context-dependent
+type LogSanitizer interface {
+ SanitizeLogMessage(raw string) string
+}
+
+var sanitizer LogSanitizer
+var enableForceLog bool = true
+
+// SetLogSanitizer can be called to supply a custom LogSanitizer.
+// There is no threadsafety or locking on the underlying variable,
+// so call this function just once at startup of your application
+// (Don't later try to change the sanitizer on the fly).
+func SetLogSanitizer(s LogSanitizer)(){
+ sanitizer = s
+}
+
+// SetForceLogEnabled can be used to disable ForceLog
+// There is no threadsafety or locking on the underlying variable,
+// so call this function just once at startup of your application
+// (Don't later try to change the setting on the fly).
+func SetForceLogEnabled(enable bool)() {
+ enableForceLog = enable
+}
+
+
diff --git a/vendor/github.com/Azure/azure-pipeline-go/pipeline/defaultlog.go b/vendor/github.com/Azure/azure-pipeline-go/pipeline/defaultlog.go
new file mode 100644
index 00000000..e7ce4970
--- /dev/null
+++ b/vendor/github.com/Azure/azure-pipeline-go/pipeline/defaultlog.go
@@ -0,0 +1,14 @@
+package pipeline
+
+
+// ForceLog should rarely be used. It forceable logs an entry to the
+// Windows Event Log (on Windows) or to the SysLog (on Linux)
+func ForceLog(level LogLevel, msg string) {
+ if !enableForceLog {
+ return
+ }
+ if sanitizer != nil {
+ msg = sanitizer.SanitizeLogMessage(msg)
+ }
+ forceLog(level, msg)
+}
diff --git a/vendor/github.com/Azure/azure-pipeline-go/pipeline/defaultlog_syslog.go b/vendor/github.com/Azure/azure-pipeline-go/pipeline/defaultlog_syslog.go
new file mode 100644
index 00000000..819509a1
--- /dev/null
+++ b/vendor/github.com/Azure/azure-pipeline-go/pipeline/defaultlog_syslog.go
@@ -0,0 +1,33 @@
+// +build !windows,!nacl,!plan9
+
+package pipeline
+
+import (
+ "log"
+ "log/syslog"
+)
+
+// forceLog should rarely be used. It forceable logs an entry to the
+// Windows Event Log (on Windows) or to the SysLog (on Linux)
+func forceLog(level LogLevel, msg string) {
+ if defaultLogger == nil {
+ return // Return fast if we failed to create the logger.
+ }
+ // We are logging it, ensure trailing newline
+ if len(msg) == 0 || msg[len(msg)-1] != '\n' {
+ msg += "\n" // Ensure trailing newline
+ }
+ switch level {
+ case LogFatal:
+ defaultLogger.Fatal(msg)
+ case LogPanic:
+ defaultLogger.Panic(msg)
+ case LogError, LogWarning, LogInfo:
+ defaultLogger.Print(msg)
+ }
+}
+
+var defaultLogger = func() *log.Logger {
+ l, _ := syslog.NewLogger(syslog.LOG_USER|syslog.LOG_WARNING, log.LstdFlags)
+ return l
+}()
diff --git a/vendor/github.com/Azure/azure-pipeline-go/pipeline/defaultlog_windows.go b/vendor/github.com/Azure/azure-pipeline-go/pipeline/defaultlog_windows.go
new file mode 100644
index 00000000..5fcf4001
--- /dev/null
+++ b/vendor/github.com/Azure/azure-pipeline-go/pipeline/defaultlog_windows.go
@@ -0,0 +1,61 @@
+package pipeline
+
+import (
+ "os"
+ "syscall"
+ "unsafe"
+)
+
+// forceLog should rarely be used. It forceable logs an entry to the
+// Windows Event Log (on Windows) or to the SysLog (on Linux)
+func forceLog(level LogLevel, msg string) {
+ var el eventType
+ switch level {
+ case LogError, LogFatal, LogPanic:
+ el = elError
+ case LogWarning:
+ el = elWarning
+ case LogInfo:
+ el = elInfo
+ }
+ // We are logging it, ensure trailing newline
+ if len(msg) == 0 || msg[len(msg)-1] != '\n' {
+ msg += "\n" // Ensure trailing newline
+ }
+ reportEvent(el, 0, msg)
+}
+
+type eventType int16
+
+const (
+ elSuccess eventType = 0
+ elError eventType = 1
+ elWarning eventType = 2
+ elInfo eventType = 4
+)
+
+var reportEvent = func() func(eventType eventType, eventID int32, msg string) {
+ advAPI32 := syscall.MustLoadDLL("advapi32.dll") // lower case to tie in with Go's sysdll registration
+ registerEventSource := advAPI32.MustFindProc("RegisterEventSourceW")
+
+ sourceName, _ := os.Executable()
+ sourceNameUTF16, _ := syscall.UTF16PtrFromString(sourceName)
+ handle, _, lastErr := registerEventSource.Call(uintptr(0), uintptr(unsafe.Pointer(sourceNameUTF16)))
+ if lastErr == nil { // On error, logging is a no-op
+ return func(eventType eventType, eventID int32, msg string) {}
+ }
+ reportEvent := advAPI32.MustFindProc("ReportEventW")
+ return func(eventType eventType, eventID int32, msg string) {
+ s, _ := syscall.UTF16PtrFromString(msg)
+ _, _, _ = reportEvent.Call(
+ uintptr(handle), // HANDLE hEventLog
+ uintptr(eventType), // WORD wType
+ uintptr(0), // WORD wCategory
+ uintptr(eventID), // DWORD dwEventID
+ uintptr(0), // PSID lpUserSid
+ uintptr(1), // WORD wNumStrings
+ uintptr(0), // DWORD dwDataSize
+ uintptr(unsafe.Pointer(&s)), // LPCTSTR *lpStrings
+ uintptr(0)) // LPVOID lpRawData
+ }
+}()
diff --git a/vendor/github.com/Azure/azure-pipeline-go/pipeline/doc.go b/vendor/github.com/Azure/azure-pipeline-go/pipeline/doc.go
new file mode 100644
index 00000000..b5ab05f4
--- /dev/null
+++ b/vendor/github.com/Azure/azure-pipeline-go/pipeline/doc.go
@@ -0,0 +1,161 @@
+// Copyright 2017 Microsoft Corporation. All rights reserved.
+// Use of this source code is governed by an MIT
+// license that can be found in the LICENSE file.
+
+/*
+Package pipeline implements an HTTP request/response middleware pipeline whose
+policy objects mutate an HTTP request's URL, query parameters, and/or headers before
+the request is sent over the wire.
+
+Not all policy objects mutate an HTTP request; some policy objects simply impact the
+flow of requests/responses by performing operations such as logging, retry policies,
+timeouts, failure injection, and deserialization of response payloads.
+
+Implementing the Policy Interface
+
+To implement a policy, define a struct that implements the pipeline.Policy interface's Do method. Your Do
+method is called when an HTTP request wants to be sent over the network. Your Do method can perform any
+operation(s) it desires. For example, it can log the outgoing request, mutate the URL, headers, and/or query
+parameters, inject a failure, etc. Your Do method must then forward the HTTP request to next Policy object
+in a linked-list ensuring that the remaining Policy objects perform their work. Ultimately, the last Policy
+object sends the HTTP request over the network (by calling the HTTPSender's Do method).
+
+When an HTTP response comes back, each Policy object in the linked-list gets a chance to process the response
+(in reverse order). The Policy object can log the response, retry the operation if due to a transient failure
+or timeout, deserialize the response body, etc. Ultimately, the last Policy object returns the HTTP response
+to the code that initiated the original HTTP request.
+
+Here is a template for how to define a pipeline.Policy object:
+
+ type myPolicy struct {
+ node PolicyNode
+ // TODO: Add configuration/setting fields here (if desired)...
+ }
+
+ func (p *myPolicy) Do(ctx context.Context, request pipeline.Request) (pipeline.Response, error) {
+ // TODO: Mutate/process the HTTP request here...
+ response, err := p.node.Do(ctx, request) // Forward HTTP request to next Policy & get HTTP response
+ // TODO: Mutate/process the HTTP response here...
+ return response, err // Return response/error to previous Policy
+ }
+
+Implementing the Factory Interface
+
+Each Policy struct definition requires a factory struct definition that implements the pipeline.Factory interface's New
+method. The New method is called when application code wants to initiate a new HTTP request. Factory's New method is
+passed a pipeline.PolicyNode object which contains a reference to the owning pipeline.Pipeline object (discussed later) and
+a reference to the next Policy object in the linked list. The New method should create its corresponding Policy object
+passing it the PolicyNode and any other configuration/settings fields appropriate for the specific Policy object.
+
+Here is a template for how to define a pipeline.Policy object:
+
+ // NOTE: Once created & initialized, Factory objects should be goroutine-safe (ex: immutable);
+ // this allows reuse (efficient use of memory) and makes these objects usable by multiple goroutines concurrently.
+ type myPolicyFactory struct {
+ // TODO: Add any configuration/setting fields if desired...
+ }
+
+ func (f *myPolicyFactory) New(node pipeline.PolicyNode) Policy {
+ return &myPolicy{node: node} // TODO: Also initialize any configuration/setting fields here (if desired)...
+ }
+
+Using your Factory and Policy objects via a Pipeline
+
+To use the Factory and Policy objects, an application constructs a slice of Factory objects and passes
+this slice to the pipeline.NewPipeline function.
+
+ func NewPipeline(factories []pipeline.Factory, sender pipeline.HTTPSender) Pipeline
+
+This function also requires an object implementing the HTTPSender interface. For simple scenarios,
+passing nil for HTTPSender causes a standard Go http.Client object to be created and used to actually
+send the HTTP response over the network. For more advanced scenarios, you can pass your own HTTPSender
+object in. This allows sharing of http.Client objects or the use of custom-configured http.Client objects
+or other objects that can simulate the network requests for testing purposes.
+
+Now that you have a pipeline.Pipeline object, you can create a pipeline.Request object (which is a simple
+wrapper around Go's standard http.Request object) and pass it to Pipeline's Do method along with passing a
+context.Context for cancelling the HTTP request (if desired).
+
+ type Pipeline interface {
+ Do(ctx context.Context, methodFactory pipeline.Factory, request pipeline.Request) (pipeline.Response, error)
+ }
+
+Do iterates over the slice of Factory objects and tells each one to create its corresponding
+Policy object. After the linked-list of Policy objects have been created, Do calls the first
+Policy object passing it the Context & HTTP request parameters. These parameters now flow through
+all the Policy objects giving each object a chance to look at and/or mutate the HTTP request.
+The last Policy object sends the message over the network.
+
+When the network operation completes, the HTTP response and error return values pass
+back through the same Policy objects in reverse order. Most Policy objects ignore the
+response/error but some log the result, retry the operation (depending on the exact
+reason the operation failed), or deserialize the response's body. Your own Policy
+objects can do whatever they like when processing outgoing requests or incoming responses.
+
+Note that after an I/O request runs to completion, the Policy objects for that request
+are garbage collected. However, Pipeline object (like Factory objects) are goroutine-safe allowing
+them to be created once and reused over many I/O operations. This allows for efficient use of
+memory and also makes them safely usable by multiple goroutines concurrently.
+
+Inserting a Method-Specific Factory into the Linked-List of Policy Objects
+
+While Pipeline and Factory objects can be reused over many different operations, it is
+common to have special behavior for a specific operation/method. For example, a method
+may need to deserialize the response's body to an instance of a specific data type.
+To accommodate this, the Pipeline's Do method takes an additional method-specific
+Factory object. The Do method tells this Factory to create a Policy object and
+injects this method-specific Policy object into the linked-list of Policy objects.
+
+When creating a Pipeline object, the slice of Factory objects passed must have 1
+(and only 1) entry marking where the method-specific Factory should be injected.
+The Factory marker is obtained by calling the pipeline.MethodFactoryMarker() function:
+
+ func MethodFactoryMarker() pipeline.Factory
+
+Creating an HTTP Request Object
+
+The HTTP request object passed to Pipeline's Do method is not Go's http.Request struct.
+Instead, it is a pipeline.Request struct which is a simple wrapper around Go's standard
+http.Request. You create a pipeline.Request object by calling the pipeline.NewRequest function:
+
+ func NewRequest(method string, url url.URL, options pipeline.RequestOptions) (request pipeline.Request, err error)
+
+To this function, you must pass a pipeline.RequestOptions that looks like this:
+
+ type RequestOptions struct {
+ // The readable and seekable stream to be sent to the server as the request's body.
+ Body io.ReadSeeker
+
+ // The callback method (if not nil) to be invoked to report progress as the stream is uploaded in the HTTP request.
+ Progress ProgressReceiver
+ }
+
+The method and struct ensure that the request's body stream is a read/seekable stream.
+A seekable stream is required so that upon retry, the final Policy object can seek
+the stream back to the beginning before retrying the network request and re-uploading the
+body. In addition, you can associate a ProgressReceiver callback function which will be
+invoked periodically to report progress while bytes are being read from the body stream
+and sent over the network.
+
+Processing the HTTP Response
+
+When an HTTP response comes in from the network, a reference to Go's http.Response struct is
+embedded in a struct that implements the pipeline.Response interface:
+
+ type Response interface {
+ Response() *http.Response
+ }
+
+This interface is returned through all the Policy objects. Each Policy object can call the Response
+interface's Response method to examine (or mutate) the embedded http.Response object.
+
+A Policy object can internally define another struct (implementing the pipeline.Response interface)
+that embeds an http.Response and adds additional fields and return this structure to other Policy
+objects. This allows a Policy object to deserialize the body to some other struct and return the
+original http.Response and the additional struct back through the Policy chain. Other Policy objects
+can see the Response but cannot see the additional struct with the deserialized body. After all the
+Policy objects have returned, the pipeline.Response interface is returned by Pipeline's Do method.
+The caller of this method can perform a type assertion attempting to get back to the struct type
+really returned by the Policy object. If the type assertion is successful, the caller now has
+access to both the http.Response and the deserialized struct object.*/
+package pipeline
diff --git a/vendor/github.com/Azure/azure-pipeline-go/pipeline/error.go b/vendor/github.com/Azure/azure-pipeline-go/pipeline/error.go
new file mode 100644
index 00000000..5d3d4339
--- /dev/null
+++ b/vendor/github.com/Azure/azure-pipeline-go/pipeline/error.go
@@ -0,0 +1,184 @@
+package pipeline
+
+import (
+ "fmt"
+ "runtime"
+)
+
+type causer interface {
+ Cause() error
+}
+
+func errorWithPC(msg string, pc uintptr) string {
+ s := ""
+ if fn := runtime.FuncForPC(pc); fn != nil {
+ file, line := fn.FileLine(pc)
+ s = fmt.Sprintf("-> %v, %v:%v\n", fn.Name(), file, line)
+ }
+ s += msg + "\n\n"
+ return s
+}
+
+func getPC(callersToSkip int) uintptr {
+ // Get the PC of Initialize method's caller.
+ pc := [1]uintptr{}
+ _ = runtime.Callers(callersToSkip, pc[:])
+ return pc[0]
+}
+
+// ErrorNode can be an embedded field in a private error object. This field
+// adds Program Counter support and a 'cause' (reference to a preceding error).
+// When initializing a error type with this embedded field, initialize the
+// ErrorNode field by calling ErrorNode{}.Initialize(cause).
+type ErrorNode struct {
+ pc uintptr // Represents a Program Counter that you can get symbols for.
+ cause error // Refers to the preceding error (or nil)
+}
+
+// Error returns a string with the PC's symbols or "" if the PC is invalid.
+// When defining a new error type, have its Error method call this one passing
+// it the string representation of the error.
+func (e *ErrorNode) Error(msg string) string {
+ s := errorWithPC(msg, e.pc)
+ if e.cause != nil {
+ s += e.cause.Error() + "\n"
+ }
+ return s
+}
+
+// Cause returns the error that preceded this error.
+func (e *ErrorNode) Cause() error { return e.cause }
+
+// Unwrap provides compatibility for Go 1.13 error chains.
+func (e *ErrorNode) Unwrap() error { return e.cause }
+
+// Temporary returns true if the error occurred due to a temporary condition.
+func (e ErrorNode) Temporary() bool {
+ type temporary interface {
+ Temporary() bool
+ }
+
+ for err := e.cause; err != nil; {
+ if t, ok := err.(temporary); ok {
+ return t.Temporary()
+ }
+
+ if cause, ok := err.(causer); ok {
+ err = cause.Cause()
+ } else {
+ err = nil
+ }
+ }
+ return false
+}
+
+// Timeout returns true if the error occurred due to time expiring.
+func (e ErrorNode) Timeout() bool {
+ type timeout interface {
+ Timeout() bool
+ }
+
+ for err := e.cause; err != nil; {
+ if t, ok := err.(timeout); ok {
+ return t.Timeout()
+ }
+
+ if cause, ok := err.(causer); ok {
+ err = cause.Cause()
+ } else {
+ err = nil
+ }
+ }
+ return false
+}
+
+// Initialize is used to initialize an embedded ErrorNode field.
+// It captures the caller's program counter and saves the cause (preceding error).
+// To initialize the field, use "ErrorNode{}.Initialize(cause, 3)". A callersToSkip
+// value of 3 is very common; but, depending on your code nesting, you may need
+// a different value.
+func (ErrorNode) Initialize(cause error, callersToSkip int) ErrorNode {
+ pc := getPC(callersToSkip)
+ return ErrorNode{pc: pc, cause: cause}
+}
+
+// Cause walks all the preceding errors and return the originating error.
+func Cause(err error) error {
+ for err != nil {
+ cause, ok := err.(causer)
+ if !ok {
+ break
+ }
+ err = cause.Cause()
+ }
+ return err
+}
+
+// ErrorNodeNoCause can be an embedded field in a private error object. This field
+// adds Program Counter support.
+// When initializing a error type with this embedded field, initialize the
+// ErrorNodeNoCause field by calling ErrorNodeNoCause{}.Initialize().
+type ErrorNodeNoCause struct {
+ pc uintptr // Represents a Program Counter that you can get symbols for.
+}
+
+// Error returns a string with the PC's symbols or "" if the PC is invalid.
+// When defining a new error type, have its Error method call this one passing
+// it the string representation of the error.
+func (e *ErrorNodeNoCause) Error(msg string) string {
+ return errorWithPC(msg, e.pc)
+}
+
+// Temporary returns true if the error occurred due to a temporary condition.
+func (e ErrorNodeNoCause) Temporary() bool {
+ return false
+}
+
+// Timeout returns true if the error occurred due to time expiring.
+func (e ErrorNodeNoCause) Timeout() bool {
+ return false
+}
+
+// Initialize is used to initialize an embedded ErrorNode field.
+// It captures the caller's program counter.
+// To initialize the field, use "ErrorNodeNoCause{}.Initialize(3)". A callersToSkip
+// value of 3 is very common; but, depending on your code nesting, you may need
+// a different value.
+func (ErrorNodeNoCause) Initialize(callersToSkip int) ErrorNodeNoCause {
+ pc := getPC(callersToSkip)
+ return ErrorNodeNoCause{pc: pc}
+}
+
+// NewError creates a simple string error (like Error.New). But, this
+// error also captures the caller's Program Counter and the preceding error (if provided).
+func NewError(cause error, msg string) error {
+ if cause != nil {
+ return &pcError{
+ ErrorNode: ErrorNode{}.Initialize(cause, 3),
+ msg: msg,
+ }
+ }
+ return &pcErrorNoCause{
+ ErrorNodeNoCause: ErrorNodeNoCause{}.Initialize(3),
+ msg: msg,
+ }
+}
+
+// pcError is a simple string error (like error.New) with an ErrorNode (PC & cause).
+type pcError struct {
+ ErrorNode
+ msg string
+}
+
+// Error satisfies the error interface. It shows the error with Program Counter
+// symbols and calls Error on the preceding error so you can see the full error chain.
+func (e *pcError) Error() string { return e.ErrorNode.Error(e.msg) }
+
+// pcErrorNoCause is a simple string error (like error.New) with an ErrorNode (PC).
+type pcErrorNoCause struct {
+ ErrorNodeNoCause
+ msg string
+}
+
+// Error satisfies the error interface. It shows the error with Program Counter symbols.
+func (e *pcErrorNoCause) Error() string { return e.ErrorNodeNoCause.Error(e.msg) }
diff --git a/vendor/github.com/Azure/azure-pipeline-go/pipeline/progress.go b/vendor/github.com/Azure/azure-pipeline-go/pipeline/progress.go
new file mode 100644
index 00000000..efa3c8ed
--- /dev/null
+++ b/vendor/github.com/Azure/azure-pipeline-go/pipeline/progress.go
@@ -0,0 +1,82 @@
+package pipeline
+
+import "io"
+
+// ********** The following is common between the request body AND the response body.
+
+// ProgressReceiver defines the signature of a callback function invoked as progress is reported.
+type ProgressReceiver func(bytesTransferred int64)
+
+// ********** The following are specific to the request body (a ReadSeekCloser)
+
+// This struct is used when sending a body to the network
+type requestBodyProgress struct {
+ requestBody io.ReadSeeker // Seeking is required to support retries
+ pr ProgressReceiver
+}
+
+// NewRequestBodyProgress adds progress reporting to an HTTP request's body stream.
+func NewRequestBodyProgress(requestBody io.ReadSeeker, pr ProgressReceiver) io.ReadSeeker {
+ if pr == nil {
+ panic("pr must not be nil")
+ }
+ return &requestBodyProgress{requestBody: requestBody, pr: pr}
+}
+
+// Read reads a block of data from an inner stream and reports progress
+func (rbp *requestBodyProgress) Read(p []byte) (n int, err error) {
+ n, err = rbp.requestBody.Read(p)
+ if err != nil {
+ return
+ }
+ // Invokes the user's callback method to report progress
+ position, err := rbp.requestBody.Seek(0, io.SeekCurrent)
+ if err != nil {
+ panic(err)
+ }
+ rbp.pr(position)
+ return
+}
+
+func (rbp *requestBodyProgress) Seek(offset int64, whence int) (offsetFromStart int64, err error) {
+ return rbp.requestBody.Seek(offset, whence)
+}
+
+// requestBodyProgress supports Close but the underlying stream may not; if it does, Close will close it.
+func (rbp *requestBodyProgress) Close() error {
+ if c, ok := rbp.requestBody.(io.Closer); ok {
+ return c.Close()
+ }
+ return nil
+}
+
+// ********** The following are specific to the response body (a ReadCloser)
+
+// This struct is used when sending a body to the network
+type responseBodyProgress struct {
+ responseBody io.ReadCloser
+ pr ProgressReceiver
+ offset int64
+}
+
+// NewResponseBodyProgress adds progress reporting to an HTTP response's body stream.
+func NewResponseBodyProgress(responseBody io.ReadCloser, pr ProgressReceiver) io.ReadCloser {
+ if pr == nil {
+ panic("pr must not be nil")
+ }
+ return &responseBodyProgress{responseBody: responseBody, pr: pr, offset: 0}
+}
+
+// Read reads a block of data from an inner stream and reports progress
+func (rbp *responseBodyProgress) Read(p []byte) (n int, err error) {
+ n, err = rbp.responseBody.Read(p)
+ rbp.offset += int64(n)
+
+ // Invokes the user's callback method to report progress
+ rbp.pr(rbp.offset)
+ return
+}
+
+func (rbp *responseBodyProgress) Close() error {
+ return rbp.responseBody.Close()
+}
diff --git a/vendor/github.com/Azure/azure-pipeline-go/pipeline/request.go b/vendor/github.com/Azure/azure-pipeline-go/pipeline/request.go
new file mode 100644
index 00000000..1fbe72bd
--- /dev/null
+++ b/vendor/github.com/Azure/azure-pipeline-go/pipeline/request.go
@@ -0,0 +1,147 @@
+package pipeline
+
+import (
+ "io"
+ "net/http"
+ "net/url"
+ "strconv"
+)
+
+// Request is a thin wrapper over an http.Request. The wrapper provides several helper methods.
+type Request struct {
+ *http.Request
+}
+
+// NewRequest initializes a new HTTP request object with any desired options.
+func NewRequest(method string, url url.URL, body io.ReadSeeker) (request Request, err error) {
+ // Note: the url is passed by value so that any pipeline operations that modify it do so on a copy.
+
+ // This code to construct an http.Request is copied from http.NewRequest(); we intentionally omitted removeEmptyPort for now.
+ request.Request = &http.Request{
+ Method: method,
+ URL: &url,
+ Proto: "HTTP/1.1",
+ ProtoMajor: 1,
+ ProtoMinor: 1,
+ Header: make(http.Header),
+ Host: url.Host,
+ }
+
+ if body != nil {
+ err = request.SetBody(body)
+ }
+ return
+}
+
+// SetBody sets the body and content length, assumes body is not nil.
+func (r Request) SetBody(body io.ReadSeeker) error {
+ size, err := body.Seek(0, io.SeekEnd)
+ if err != nil {
+ return err
+ }
+
+ body.Seek(0, io.SeekStart)
+ r.ContentLength = size
+ r.Header["Content-Length"] = []string{strconv.FormatInt(size, 10)}
+
+ if size != 0 {
+ r.Body = &retryableRequestBody{body: body}
+ r.GetBody = func() (io.ReadCloser, error) {
+ _, err := body.Seek(0, io.SeekStart)
+ if err != nil {
+ return nil, err
+ }
+ return r.Body, nil
+ }
+ } else {
+ // in case the body is an empty stream, we need to use http.NoBody to explicitly provide no content
+ r.Body = http.NoBody
+ r.GetBody = func() (io.ReadCloser, error) {
+ return http.NoBody, nil
+ }
+
+ // close the user-provided empty body
+ if c, ok := body.(io.Closer); ok {
+ c.Close()
+ }
+ }
+
+ return nil
+}
+
+// Copy makes a copy of an http.Request. Specifically, it makes a deep copy
+// of its Method, URL, Host, Proto(Major/Minor), Header. ContentLength, Close,
+// RemoteAddr, RequestURI. Copy makes a shallow copy of the Body, GetBody, TLS,
+// Cancel, Response, and ctx fields. Copy panics if any of these fields are
+// not nil: TransferEncoding, Form, PostForm, MultipartForm, or Trailer.
+func (r Request) Copy() Request {
+ if r.TransferEncoding != nil || r.Form != nil || r.PostForm != nil || r.MultipartForm != nil || r.Trailer != nil {
+ panic("Can't make a deep copy of the http.Request because at least one of the following is not nil:" +
+ "TransferEncoding, Form, PostForm, MultipartForm, or Trailer.")
+ }
+ copy := *r.Request // Copy the request
+ urlCopy := *(r.Request.URL) // Copy the URL
+ copy.URL = &urlCopy
+ copy.Header = http.Header{} // Copy the header
+ for k, vs := range r.Header {
+ for _, value := range vs {
+ copy.Header.Add(k, value)
+ }
+ }
+ return Request{Request: ©} // Return the copy
+}
+
+func (r Request) close() error {
+ if r.Body != nil && r.Body != http.NoBody {
+ c, ok := r.Body.(*retryableRequestBody)
+ if !ok {
+ panic("unexpected request body type (should be *retryableReadSeekerCloser)")
+ }
+ return c.realClose()
+ }
+ return nil
+}
+
+// RewindBody seeks the request's Body stream back to the beginning so it can be resent when retrying an operation.
+func (r Request) RewindBody() error {
+ if r.Body != nil && r.Body != http.NoBody {
+ s, ok := r.Body.(io.Seeker)
+ if !ok {
+ panic("unexpected request body type (should be io.Seeker)")
+ }
+
+ // Reset the stream back to the beginning
+ _, err := s.Seek(0, io.SeekStart)
+ return err
+ }
+ return nil
+}
+
+// ********** The following type/methods implement the retryableRequestBody (a ReadSeekCloser)
+
+// This struct is used when sending a body to the network
+type retryableRequestBody struct {
+ body io.ReadSeeker // Seeking is required to support retries
+}
+
+// Read reads a block of data from an inner stream and reports progress
+func (b *retryableRequestBody) Read(p []byte) (n int, err error) {
+ return b.body.Read(p)
+}
+
+func (b *retryableRequestBody) Seek(offset int64, whence int) (offsetFromStart int64, err error) {
+ return b.body.Seek(offset, whence)
+}
+
+func (b *retryableRequestBody) Close() error {
+ // We don't want the underlying transport to close the request body on transient failures so this is a nop.
+ // The pipeline closes the request body upon success.
+ return nil
+}
+
+func (b *retryableRequestBody) realClose() error {
+ if c, ok := b.body.(io.Closer); ok {
+ return c.Close()
+ }
+ return nil
+}
diff --git a/vendor/github.com/Azure/azure-pipeline-go/pipeline/response.go b/vendor/github.com/Azure/azure-pipeline-go/pipeline/response.go
new file mode 100644
index 00000000..f2dc1648
--- /dev/null
+++ b/vendor/github.com/Azure/azure-pipeline-go/pipeline/response.go
@@ -0,0 +1,74 @@
+package pipeline
+
+import (
+ "bytes"
+ "fmt"
+ "net/http"
+ "sort"
+ "strings"
+)
+
+// The Response interface exposes an http.Response object as it returns through the pipeline of Policy objects.
+// This ensures that Policy objects have access to the HTTP response. However, the object this interface encapsulates
+// might be a struct with additional fields that is created by a Policy object (typically a method-specific Factory).
+// The method that injected the method-specific Factory gets this returned Response and performs a type assertion
+// to the expected struct and returns the struct to its caller.
+type Response interface {
+ Response() *http.Response
+}
+
+// This is the default struct that has the http.Response.
+// A method can replace this struct with its own struct containing an http.Response
+// field and any other additional fields.
+type httpResponse struct {
+ response *http.Response
+}
+
+// NewHTTPResponse is typically called by a Policy object to return a Response object.
+func NewHTTPResponse(response *http.Response) Response {
+ return &httpResponse{response: response}
+}
+
+// This method satisfies the public Response interface's Response method
+func (r httpResponse) Response() *http.Response {
+ return r.response
+}
+
+// WriteRequestWithResponse appends a formatted HTTP request into a Buffer. If request and/or err are
+// not nil, then these are also written into the Buffer.
+func WriteRequestWithResponse(b *bytes.Buffer, request *http.Request, response *http.Response, err error) {
+ // Write the request into the buffer.
+ fmt.Fprint(b, " "+request.Method+" "+request.URL.String()+"\n")
+ writeHeader(b, request.Header)
+ if response != nil {
+ fmt.Fprintln(b, " --------------------------------------------------------------------------------")
+ fmt.Fprint(b, " RESPONSE Status: "+response.Status+"\n")
+ writeHeader(b, response.Header)
+ }
+ if err != nil {
+ fmt.Fprintln(b, " --------------------------------------------------------------------------------")
+ fmt.Fprint(b, " ERROR:\n"+err.Error()+"\n")
+ }
+}
+
+// formatHeaders appends an HTTP request's or response's header into a Buffer.
+func writeHeader(b *bytes.Buffer, header map[string][]string) {
+ if len(header) == 0 {
+ b.WriteString(" (no headers)\n")
+ return
+ }
+ keys := make([]string, 0, len(header))
+ // Alphabetize the headers
+ for k := range header {
+ keys = append(keys, k)
+ }
+ sort.Strings(keys)
+ for _, k := range keys {
+ // Redact the value of any Authorization header to prevent security information from persisting in logs
+ value := interface{}("REDACTED")
+ if !strings.EqualFold(k, "Authorization") {
+ value = header[k]
+ }
+ fmt.Fprintf(b, " %s: %+v\n", k, value)
+ }
+}
diff --git a/vendor/github.com/Azure/azure-pipeline-go/pipeline/version.go b/vendor/github.com/Azure/azure-pipeline-go/pipeline/version.go
new file mode 100644
index 00000000..899f996b
--- /dev/null
+++ b/vendor/github.com/Azure/azure-pipeline-go/pipeline/version.go
@@ -0,0 +1,9 @@
+package pipeline
+
+const (
+ // UserAgent is the string to be used in the user agent string when making requests.
+ UserAgent = "azure-pipeline-go/" + Version
+
+ // Version is the semantic version (see http://semver.org) of the pipeline package.
+ Version = "0.2.1"
+)
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/LICENSE b/vendor/github.com/Azure/azure-storage-blob-go/LICENSE
new file mode 100644
index 00000000..d1ca00f2
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/LICENSE
@@ -0,0 +1,21 @@
+ MIT License
+
+ Copyright (c) Microsoft Corporation. All rights reserved.
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE
\ No newline at end of file
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/BUILD.bazel b/vendor/github.com/Azure/azure-storage-blob-go/azblob/BUILD.bazel
new file mode 100644
index 00000000..6a0b479d
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/BUILD.bazel
@@ -0,0 +1,89 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_library")
+
+go_library(
+ name = "go_default_library",
+ srcs = [
+ "access_conditions.go",
+ "chunkwriting.go",
+ "highlevel.go",
+ "parsing_urls.go",
+ "sas_service.go",
+ "service_codes_blob.go",
+ "storage_account_credential.go",
+ "url_append_blob.go",
+ "url_blob.go",
+ "url_block_blob.go",
+ "url_container.go",
+ "url_page_blob.go",
+ "url_service.go",
+ "user_delegation_credential.go",
+ "version.go",
+ "zc_credential_anonymous.go",
+ "zc_credential_shared_key.go",
+ "zc_credential_token.go",
+ "zc_mmf_unix.go",
+ "zc_mmf_windows.go",
+ "zc_pipeline.go",
+ "zc_policy_request_log.go",
+ "zc_policy_retry.go",
+ "zc_policy_telemetry.go",
+ "zc_policy_unique_request_id.go",
+ "zc_retry_reader.go",
+ "zc_sas_account.go",
+ "zc_sas_query_params.go",
+ "zc_service_codes_common.go",
+ "zc_storage_error.go",
+ "zc_util_validate.go",
+ "zc_uuid.go",
+ "zt_doc.go",
+ "zz_generated_append_blob.go",
+ "zz_generated_blob.go",
+ "zz_generated_block_blob.go",
+ "zz_generated_client.go",
+ "zz_generated_container.go",
+ "zz_generated_models.go",
+ "zz_generated_page_blob.go",
+ "zz_generated_responder_policy.go",
+ "zz_generated_response_error.go",
+ "zz_generated_service.go",
+ "zz_generated_validation.go",
+ "zz_generated_version.go",
+ "zz_response_helpers.go",
+ ],
+ importmap = "kope.io/etcd-manager/vendor/github.com/Azure/azure-storage-blob-go/azblob",
+ importpath = "github.com/Azure/azure-storage-blob-go/azblob",
+ visibility = ["//visibility:public"],
+ deps = [
+ "//vendor/github.com/Azure/azure-pipeline-go/pipeline:go_default_library",
+ "//vendor/github.com/google/uuid:go_default_library",
+ ] + select({
+ "@io_bazel_rules_go//go/platform:android": [
+ "//vendor/golang.org/x/sys/unix:go_default_library",
+ ],
+ "@io_bazel_rules_go//go/platform:darwin": [
+ "//vendor/golang.org/x/sys/unix:go_default_library",
+ ],
+ "@io_bazel_rules_go//go/platform:dragonfly": [
+ "//vendor/golang.org/x/sys/unix:go_default_library",
+ ],
+ "@io_bazel_rules_go//go/platform:freebsd": [
+ "//vendor/golang.org/x/sys/unix:go_default_library",
+ ],
+ "@io_bazel_rules_go//go/platform:ios": [
+ "//vendor/golang.org/x/sys/unix:go_default_library",
+ ],
+ "@io_bazel_rules_go//go/platform:linux": [
+ "//vendor/golang.org/x/sys/unix:go_default_library",
+ ],
+ "@io_bazel_rules_go//go/platform:netbsd": [
+ "//vendor/golang.org/x/sys/unix:go_default_library",
+ ],
+ "@io_bazel_rules_go//go/platform:openbsd": [
+ "//vendor/golang.org/x/sys/unix:go_default_library",
+ ],
+ "@io_bazel_rules_go//go/platform:solaris": [
+ "//vendor/golang.org/x/sys/unix:go_default_library",
+ ],
+ "//conditions:default": [],
+ }),
+)
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/access_conditions.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/access_conditions.go
new file mode 100644
index 00000000..25fe6842
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/access_conditions.go
@@ -0,0 +1,65 @@
+package azblob
+
+import (
+ "time"
+)
+
+// ModifiedAccessConditions identifies standard HTTP access conditions which you optionally set.
+type ModifiedAccessConditions struct {
+ IfModifiedSince time.Time
+ IfUnmodifiedSince time.Time
+ IfMatch ETag
+ IfNoneMatch ETag
+}
+
+// pointers is for internal infrastructure. It returns the fields as pointers.
+func (ac ModifiedAccessConditions) pointers() (ims *time.Time, ius *time.Time, ime *ETag, inme *ETag) {
+ if !ac.IfModifiedSince.IsZero() {
+ ims = &ac.IfModifiedSince
+ }
+ if !ac.IfUnmodifiedSince.IsZero() {
+ ius = &ac.IfUnmodifiedSince
+ }
+ if ac.IfMatch != ETagNone {
+ ime = &ac.IfMatch
+ }
+ if ac.IfNoneMatch != ETagNone {
+ inme = &ac.IfNoneMatch
+ }
+ return
+}
+
+// ContainerAccessConditions identifies container-specific access conditions which you optionally set.
+type ContainerAccessConditions struct {
+ ModifiedAccessConditions
+ LeaseAccessConditions
+}
+
+// BlobAccessConditions identifies blob-specific access conditions which you optionally set.
+type BlobAccessConditions struct {
+ ModifiedAccessConditions
+ LeaseAccessConditions
+}
+
+// LeaseAccessConditions identifies lease access conditions for a container or blob which you optionally set.
+type LeaseAccessConditions struct {
+ LeaseID string
+}
+
+// pointers is for internal infrastructure. It returns the fields as pointers.
+func (ac LeaseAccessConditions) pointers() (leaseID *string) {
+ if ac.LeaseID != "" {
+ leaseID = &ac.LeaseID
+ }
+ return
+}
+
+/*
+// getInt32 is for internal infrastructure. It is used with access condition values where
+// 0 (the default setting) is meaningful. The library interprets 0 as do not send the header
+// and the privately-storage field in the access condition object is stored as +1 higher than desired.
+// THis method returns true, if the value is > 0 (explicitly set) and the stored value - 1 (the set desired value).
+func getInt32(value int32) (bool, int32) {
+ return value > 0, value - 1
+}
+*/
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/blob.json b/vendor/github.com/Azure/azure-storage-blob-go/azblob/blob.json
new file mode 100644
index 00000000..09addf08
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/blob.json
@@ -0,0 +1,8009 @@
+{
+ "swagger": "2.0",
+ "info": {
+ "title": "Azure Blob Storage",
+ "version": "2018-11-09",
+ "x-ms-code-generation-settings": {
+ "header": "MIT",
+ "strictSpecAdherence": false
+ }
+ },
+ "x-ms-parameterized-host": {
+ "hostTemplate": "{url}",
+ "useSchemePrefix": false,
+ "positionInOperation": "first",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Url"
+ }
+ ]
+ },
+ "securityDefinitions": {
+ "blob_shared_key": {
+ "type": "apiKey",
+ "name": "Authorization",
+ "in": "header"
+ }
+ },
+ "schemes": [
+ "https"
+ ],
+ "consumes": [
+ "application/xml"
+ ],
+ "produces": [
+ "application/xml"
+ ],
+ "paths": {},
+ "x-ms-paths": {
+ "/?restype=service&comp=properties": {
+ "put": {
+ "tags": [
+ "service"
+ ],
+ "operationId": "Service_SetProperties",
+ "description": "Sets properties for a storage account's Blob service endpoint, including properties for Storage Analytics and CORS (Cross-Origin Resource Sharing) rules",
+ "parameters": [
+ {
+ "$ref": "#/parameters/StorageServiceProperties"
+ },
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "202": {
+ "description": "Success (Accepted)",
+ "headers": {
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "get": {
+ "tags": [
+ "service"
+ ],
+ "operationId": "Service_GetProperties",
+ "description": "gets the properties of a storage account's Blob service, including properties for Storage Analytics and CORS (Cross-Origin Resource Sharing) rules.",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success.",
+ "headers": {
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageServiceProperties"
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "restype",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "service"
+ ]
+ },
+ {
+ "name": "comp",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "properties"
+ ]
+ }
+ ]
+ },
+ "/?restype=service&comp=stats": {
+ "get": {
+ "tags": [
+ "service"
+ ],
+ "operationId": "Service_GetStatistics",
+ "description": "Retrieves statistics related to replication for the Blob service. It is only available on the secondary location endpoint when read-access geo-redundant replication is enabled for the storage account.",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success.",
+ "headers": {
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageServiceStats"
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "restype",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "service"
+ ]
+ },
+ {
+ "name": "comp",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "stats"
+ ]
+ }
+ ]
+ },
+ "/?comp=list": {
+ "get": {
+ "tags": [
+ "service"
+ ],
+ "operationId": "Service_ListContainersSegment",
+ "description": "The List Containers Segment operation returns a list of the containers under the specified account",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Prefix"
+ },
+ {
+ "$ref": "#/parameters/Marker"
+ },
+ {
+ "$ref": "#/parameters/MaxResults"
+ },
+ {
+ "$ref": "#/parameters/ListContainersInclude"
+ },
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success.",
+ "headers": {
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/ListContainersSegmentResponse"
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ },
+ "x-ms-pageable": {
+ "nextLinkName": "NextMarker"
+ }
+ },
+ "parameters": [
+ {
+ "name": "comp",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "list"
+ ]
+ }
+ ]
+ },
+ "/?restype=service&comp=userdelegationkey": {
+ "post": {
+ "tags": [
+ "service"
+ ],
+ "operationId": "Service_GetUserDelegationKey",
+ "description": "Retrieves a user delgation key for the Blob service. This is only a valid operation when using bearer token authentication.",
+ "parameters": [
+ {
+ "$ref": "#/parameters/KeyInfo"
+ },
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success.",
+ "headers": {
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/UserDelegationKey"
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "restype",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "service"
+ ]
+ },
+ {
+ "name": "comp",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "userdelegationkey"
+ ]
+ }
+ ]
+ },
+ "/?restype=account&comp=properties": {
+ "get": {
+ "tags": [
+ "service"
+ ],
+ "operationId": "Service_GetAccountInfo",
+ "description": "Returns the sku name and account kind ",
+ "parameters": [
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success (OK)",
+ "headers": {
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ },
+ "x-ms-sku-name": {
+ "x-ms-client-name": "SkuName",
+ "type": "string",
+ "enum": [
+ "Standard_LRS",
+ "Standard_GRS",
+ "Standard_RAGRS",
+ "Standard_ZRS",
+ "Premium_LRS"
+ ],
+ "x-ms-enum": {
+ "name": "SkuName",
+ "modelAsString": false
+ },
+ "description": "Identifies the sku name of the account"
+ },
+ "x-ms-account-kind": {
+ "x-ms-client-name": "AccountKind",
+ "type": "string",
+ "enum": [
+ "Storage",
+ "BlobStorage",
+ "StorageV2"
+ ],
+ "x-ms-enum": {
+ "name": "AccountKind",
+ "modelAsString": false
+ },
+ "description": "Identifies the account kind"
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "restype",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "account"
+ ]
+ },
+ {
+ "name": "comp",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "properties"
+ ]
+ }
+ ]
+ },
+ "/{containerName}?restype=container": {
+ "put": {
+ "tags": [
+ "container"
+ ],
+ "operationId": "Container_Create",
+ "description": "creates a new container under the specified account. If the container with the same name already exists, the operation fails",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/Metadata"
+ },
+ {
+ "$ref": "#/parameters/BlobPublicAccess"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Success, Container created.",
+ "headers": {
+ "ETag": {
+ "type": "string",
+ "format": "etag",
+ "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes."
+ },
+ "Last-Modified": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob."
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "get": {
+ "tags": [
+ "container"
+ ],
+ "operationId": "Container_GetProperties",
+ "description": "returns all user-defined metadata and system properties for the specified container. The data returned does not include the container's list of blobs",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdOptional"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "headers": {
+ "x-ms-meta": {
+ "type": "string",
+ "x-ms-client-name": "Metadata",
+ "x-ms-header-collection-prefix": "x-ms-meta-"
+ },
+ "ETag": {
+ "type": "string",
+ "format": "etag",
+ "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes."
+ },
+ "Last-Modified": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob."
+ },
+ "x-ms-lease-duration": {
+ "x-ms-client-name": "LeaseDuration",
+ "description": "When a blob is leased, specifies whether the lease is of infinite or fixed duration.",
+ "type": "string",
+ "enum": [
+ "infinite",
+ "fixed"
+ ],
+ "x-ms-enum": {
+ "name": "LeaseDurationType",
+ "modelAsString": false
+ }
+ },
+ "x-ms-lease-state": {
+ "x-ms-client-name": "LeaseState",
+ "description": "Lease state of the blob.",
+ "type": "string",
+ "enum": [
+ "available",
+ "leased",
+ "expired",
+ "breaking",
+ "broken"
+ ],
+ "x-ms-enum": {
+ "name": "LeaseStateType",
+ "modelAsString": false
+ }
+ },
+ "x-ms-lease-status": {
+ "x-ms-client-name": "LeaseStatus",
+ "description": "The current lease status of the blob.",
+ "type": "string",
+ "enum": [
+ "locked",
+ "unlocked"
+ ],
+ "x-ms-enum": {
+ "name": "LeaseStatusType",
+ "modelAsString": false
+ }
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ },
+ "x-ms-blob-public-access": {
+ "x-ms-client-name": "BlobPublicAccess",
+ "description": "Indicated whether data in the container may be accessed publicly and the level of access",
+ "type": "string",
+ "enum": [
+ "container",
+ "blob"
+ ],
+ "x-ms-enum": {
+ "name": "PublicAccessType",
+ "modelAsString": true
+ }
+ },
+ "x-ms-has-immutability-policy": {
+ "x-ms-client-name": "HasImmutabilityPolicy",
+ "description": "Indicates whether the container has an immutability policy set on it.",
+ "type": "boolean"
+ },
+ "x-ms-has-legal-hold": {
+ "x-ms-client-name": "HasLegalHold",
+ "description": "Indicates whether the container has a legal hold.",
+ "type": "boolean"
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "container"
+ ],
+ "operationId": "Container_Delete",
+ "description": "operation marks the specified container for deletion. The container and any blobs contained within it are later deleted during garbage collection",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdOptional"
+ },
+ {
+ "$ref": "#/parameters/IfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "202": {
+ "description": "Accepted",
+ "headers": {
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "restype",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "container"
+ ]
+ }
+ ]
+ },
+ "/{containerName}?restype=container&comp=metadata": {
+ "put": {
+ "tags": [
+ "container"
+ ],
+ "operationId": "Container_SetMetadata",
+ "description": "operation sets one or more user-defined name-value pairs for the specified container.",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdOptional"
+ },
+ {
+ "$ref": "#/parameters/Metadata"
+ },
+ {
+ "$ref": "#/parameters/IfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "headers": {
+ "ETag": {
+ "type": "string",
+ "format": "etag",
+ "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes."
+ },
+ "Last-Modified": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob."
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "restype",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "container"
+ ]
+ },
+ {
+ "name": "comp",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "metadata"
+ ]
+ }
+ ]
+ },
+ "/{containerName}?restype=container&comp=acl": {
+ "get": {
+ "tags": [
+ "container"
+ ],
+ "operationId": "Container_GetAccessPolicy",
+ "description": "gets the permissions for the specified container. The permissions indicate whether container data may be accessed publicly.",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdOptional"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "headers": {
+ "x-ms-blob-public-access": {
+ "x-ms-client-name": "BlobPublicAccess",
+ "description": "Indicated whether data in the container may be accessed publicly and the level of access",
+ "type": "string",
+ "enum": [
+ "container",
+ "blob"
+ ],
+ "x-ms-enum": {
+ "name": "PublicAccessType",
+ "modelAsString": true
+ }
+ },
+ "ETag": {
+ "type": "string",
+ "format": "etag",
+ "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes."
+ },
+ "Last-Modified": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob."
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/SignedIdentifiers"
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "put": {
+ "tags": [
+ "container"
+ ],
+ "operationId": "Container_SetAccessPolicy",
+ "description": "sets the permissions for the specified container. The permissions indicate whether blobs in a container may be accessed publicly.",
+ "parameters": [
+ {
+ "$ref": "#/parameters/ContainerAcl"
+ },
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdOptional"
+ },
+ {
+ "$ref": "#/parameters/BlobPublicAccess"
+ },
+ {
+ "$ref": "#/parameters/IfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success.",
+ "headers": {
+ "ETag": {
+ "type": "string",
+ "format": "etag",
+ "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes."
+ },
+ "Last-Modified": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob."
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "restype",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "container"
+ ]
+ },
+ {
+ "name": "comp",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "acl"
+ ]
+ }
+ ]
+ },
+ "/{containerName}?comp=lease&restype=container&acquire": {
+ "put": {
+ "tags": [
+ "container"
+ ],
+ "operationId": "Container_AcquireLease",
+ "description": "[Update] establishes and manages a lock on a container for delete operations. The lock duration can be 15 to 60 seconds, or can be infinite",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/LeaseDuration"
+ },
+ {
+ "$ref": "#/parameters/ProposedLeaseIdOptional"
+ },
+ {
+ "$ref": "#/parameters/IfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "The Acquire operation completed successfully.",
+ "headers": {
+ "ETag": {
+ "type": "string",
+ "format": "etag",
+ "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes."
+ },
+ "Last-Modified": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob."
+ },
+ "x-ms-lease-id": {
+ "x-ms-client-name": "LeaseId",
+ "type": "string",
+ "description": "Uniquely identifies a container's lease"
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "comp",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "lease"
+ ]
+ },
+ {
+ "name": "restype",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "container"
+ ]
+ },
+ {
+ "name": "x-ms-lease-action",
+ "x-ms-client-name": "action",
+ "in": "header",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "acquire"
+ ],
+ "x-ms-enum": {
+ "name": "LeaseAction",
+ "modelAsString": false
+ },
+ "x-ms-parameter-location": "method",
+ "description": "Describes what lease action to take."
+ }
+ ]
+ },
+ "/{containerName}?comp=lease&restype=container&release": {
+ "put": {
+ "tags": [
+ "container"
+ ],
+ "operationId": "Container_ReleaseLease",
+ "description": "[Update] establishes and manages a lock on a container for delete operations. The lock duration can be 15 to 60 seconds, or can be infinite",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdRequired"
+ },
+ {
+ "$ref": "#/parameters/IfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "The Release operation completed successfully.",
+ "headers": {
+ "ETag": {
+ "type": "string",
+ "format": "etag",
+ "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes."
+ },
+ "Last-Modified": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob."
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "comp",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "lease"
+ ]
+ },
+ {
+ "name": "restype",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "container"
+ ]
+ },
+ {
+ "name": "x-ms-lease-action",
+ "x-ms-client-name": "action",
+ "in": "header",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "release"
+ ],
+ "x-ms-enum": {
+ "name": "LeaseAction",
+ "modelAsString": false
+ },
+ "x-ms-parameter-location": "method",
+ "description": "Describes what lease action to take."
+ }
+ ]
+ },
+ "/{containerName}?comp=lease&restype=container&renew": {
+ "put": {
+ "tags": [
+ "container"
+ ],
+ "operationId": "Container_RenewLease",
+ "description": "[Update] establishes and manages a lock on a container for delete operations. The lock duration can be 15 to 60 seconds, or can be infinite",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdRequired"
+ },
+ {
+ "$ref": "#/parameters/IfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "The Renew operation completed successfully.",
+ "headers": {
+ "ETag": {
+ "type": "string",
+ "format": "etag",
+ "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes."
+ },
+ "Last-Modified": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob."
+ },
+ "x-ms-lease-id": {
+ "x-ms-client-name": "LeaseId",
+ "type": "string",
+ "description": "Uniquely identifies a container's lease"
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "comp",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "lease"
+ ]
+ },
+ {
+ "name": "restype",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "container"
+ ]
+ },
+ {
+ "name": "x-ms-lease-action",
+ "x-ms-client-name": "action",
+ "in": "header",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "renew"
+ ],
+ "x-ms-enum": {
+ "name": "LeaseAction",
+ "modelAsString": false
+ },
+ "x-ms-parameter-location": "method",
+ "description": "Describes what lease action to take."
+ }
+ ]
+ },
+ "/{containerName}?comp=lease&restype=container&break": {
+ "put": {
+ "tags": [
+ "container"
+ ],
+ "operationId": "Container_BreakLease",
+ "description": "[Update] establishes and manages a lock on a container for delete operations. The lock duration can be 15 to 60 seconds, or can be infinite",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/LeaseBreakPeriod"
+ },
+ {
+ "$ref": "#/parameters/IfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "202": {
+ "description": "The Break operation completed successfully.",
+ "headers": {
+ "ETag": {
+ "type": "string",
+ "format": "etag",
+ "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes."
+ },
+ "Last-Modified": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob."
+ },
+ "x-ms-lease-time": {
+ "x-ms-client-name": "LeaseTime",
+ "type": "integer",
+ "description": "Approximate time remaining in the lease period, in seconds."
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "comp",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "lease"
+ ]
+ },
+ {
+ "name": "restype",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "container"
+ ]
+ },
+ {
+ "name": "x-ms-lease-action",
+ "x-ms-client-name": "action",
+ "in": "header",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "break"
+ ],
+ "x-ms-enum": {
+ "name": "LeaseAction",
+ "modelAsString": false
+ },
+ "x-ms-parameter-location": "method",
+ "description": "Describes what lease action to take."
+ }
+ ]
+ },
+ "/{containerName}?comp=lease&restype=container&change": {
+ "put": {
+ "tags": [
+ "container"
+ ],
+ "operationId": "Container_ChangeLease",
+ "description": "[Update] establishes and manages a lock on a container for delete operations. The lock duration can be 15 to 60 seconds, or can be infinite",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdRequired"
+ },
+ {
+ "$ref": "#/parameters/ProposedLeaseIdRequired"
+ },
+ {
+ "$ref": "#/parameters/IfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "The Change operation completed successfully.",
+ "headers": {
+ "ETag": {
+ "type": "string",
+ "format": "etag",
+ "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes."
+ },
+ "Last-Modified": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob."
+ },
+ "x-ms-lease-id": {
+ "x-ms-client-name": "LeaseId",
+ "type": "string",
+ "description": "Uniquely identifies a container's lease"
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "comp",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "lease"
+ ]
+ },
+ {
+ "name": "restype",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "container"
+ ]
+ },
+ {
+ "name": "x-ms-lease-action",
+ "x-ms-client-name": "action",
+ "in": "header",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "change"
+ ],
+ "x-ms-enum": {
+ "name": "LeaseAction",
+ "modelAsString": false
+ },
+ "x-ms-parameter-location": "method",
+ "description": "Describes what lease action to take."
+ }
+ ]
+ },
+ "/{containerName}?restype=container&comp=list&flat": {
+ "get": {
+ "tags": [
+ "containers"
+ ],
+ "operationId": "Container_ListBlobFlatSegment",
+ "description": "[Update] The List Blobs operation returns a list of the blobs under the specified container",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Prefix"
+ },
+ {
+ "$ref": "#/parameters/Marker"
+ },
+ {
+ "$ref": "#/parameters/MaxResults"
+ },
+ {
+ "$ref": "#/parameters/ListBlobsInclude"
+ },
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success.",
+ "headers": {
+ "Content-Type": {
+ "type": "string",
+ "description": "The media type of the body of the response. For List Blobs this is 'application/xml'"
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/ListBlobsFlatSegmentResponse"
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ },
+ "x-ms-pageable": {
+ "nextLinkName": "NextMarker"
+ }
+ },
+ "parameters": [
+ {
+ "name": "restype",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "container"
+ ]
+ },
+ {
+ "name": "comp",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "list"
+ ]
+ }
+ ]
+ },
+ "/{containerName}?restype=container&comp=list&hierarchy": {
+ "get": {
+ "tags": [
+ "containers"
+ ],
+ "operationId": "Container_ListBlobHierarchySegment",
+ "description": "[Update] The List Blobs operation returns a list of the blobs under the specified container",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Prefix"
+ },
+ {
+ "$ref": "#/parameters/Delimiter"
+ },
+ {
+ "$ref": "#/parameters/Marker"
+ },
+ {
+ "$ref": "#/parameters/MaxResults"
+ },
+ {
+ "$ref": "#/parameters/ListBlobsInclude"
+ },
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success.",
+ "headers": {
+ "Content-Type": {
+ "type": "string",
+ "description": "The media type of the body of the response. For List Blobs this is 'application/xml'"
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/ListBlobsHierarchySegmentResponse"
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ },
+ "x-ms-pageable": {
+ "nextLinkName": "NextMarker"
+ }
+ },
+ "parameters": [
+ {
+ "name": "restype",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "container"
+ ]
+ },
+ {
+ "name": "comp",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "list"
+ ]
+ }
+ ]
+ },
+ "/{containerName}?restype=account&comp=properties": {
+ "get": {
+ "tags": [
+ "container"
+ ],
+ "operationId": "Container_GetAccountInfo",
+ "description": "Returns the sku name and account kind ",
+ "parameters": [
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success (OK)",
+ "headers": {
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ },
+ "x-ms-sku-name": {
+ "x-ms-client-name": "SkuName",
+ "type": "string",
+ "enum": [
+ "Standard_LRS",
+ "Standard_GRS",
+ "Standard_RAGRS",
+ "Standard_ZRS",
+ "Premium_LRS"
+ ],
+ "x-ms-enum": {
+ "name": "SkuName",
+ "modelAsString": false
+ },
+ "description": "Identifies the sku name of the account"
+ },
+ "x-ms-account-kind": {
+ "x-ms-client-name": "AccountKind",
+ "type": "string",
+ "enum": [
+ "Storage",
+ "BlobStorage",
+ "StorageV2"
+ ],
+ "x-ms-enum": {
+ "name": "AccountKind",
+ "modelAsString": false
+ },
+ "description": "Identifies the account kind"
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "restype",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "account"
+ ]
+ },
+ {
+ "name": "comp",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "properties"
+ ]
+ }
+ ]
+ },
+ "/{containerName}/{blob}": {
+ "get": {
+ "tags": [
+ "blob"
+ ],
+ "operationId": "Blob_Download",
+ "description": "The Download operation reads or downloads a blob from the system, including its metadata and properties. You can also call Download to read a snapshot.",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Snapshot"
+ },
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/Range"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdOptional"
+ },
+ {
+ "$ref": "#/parameters/GetRangeContentMD5"
+ },
+ {
+ "$ref": "#/parameters/IfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfMatch"
+ },
+ {
+ "$ref": "#/parameters/IfNoneMatch"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Returns the content of the entire blob.",
+ "headers": {
+ "Last-Modified": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob."
+ },
+ "x-ms-meta": {
+ "type": "string",
+ "x-ms-client-name": "Metadata",
+ "x-ms-header-collection-prefix": "x-ms-meta-"
+ },
+ "Content-Length": {
+ "type": "integer",
+ "format": "int64",
+ "description": "The number of bytes present in the response body."
+ },
+ "Content-Type": {
+ "type": "string",
+ "description": "The media type of the body of the response. For Download Blob this is 'application/octet-stream'"
+ },
+ "Content-Range": {
+ "type": "string",
+ "description": "Indicates the range of bytes returned in the event that the client requested a subset of the blob by setting the 'Range' request header."
+ },
+ "ETag": {
+ "type": "string",
+ "format": "etag",
+ "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes."
+ },
+ "Content-MD5": {
+ "type": "string",
+ "format": "byte",
+ "description": "If the blob has an MD5 hash and this operation is to read the full blob, this response header is returned so that the client can check for message content integrity."
+ },
+ "Content-Encoding": {
+ "type": "string",
+ "description": "This header returns the value that was specified for the Content-Encoding request header"
+ },
+ "Cache-Control": {
+ "type": "string",
+ "description": "This header is returned if it was previously specified for the blob."
+ },
+ "Content-Disposition": {
+ "type": "string",
+ "description": "This header returns the value that was specified for the 'x-ms-blob-content-disposition' header. The Content-Disposition response header field conveys additional information about how to process the response payload, and also can be used to attach additional metadata. For example, if set to attachment, it indicates that the user-agent should not display the response, but instead show a Save As dialog with a filename other than the blob name specified."
+ },
+ "Content-Language": {
+ "type": "string",
+ "description": "This header returns the value that was specified for the Content-Language request header."
+ },
+ "x-ms-blob-sequence-number": {
+ "x-ms-client-name": "BlobSequenceNumber",
+ "type": "integer",
+ "format": "int64",
+ "description": "The current sequence number for a page blob. This header is not returned for block blobs or append blobs"
+ },
+ "x-ms-blob-type": {
+ "x-ms-client-name": "BlobType",
+ "description": "The blob's type.",
+ "type": "string",
+ "enum": [
+ "BlockBlob",
+ "PageBlob",
+ "AppendBlob"
+ ],
+ "x-ms-enum": {
+ "name": "BlobType",
+ "modelAsString": false
+ }
+ },
+ "x-ms-copy-completion-time": {
+ "x-ms-client-name": "CopyCompletionTime",
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "Conclusion time of the last attempted Copy Blob operation where this blob was the destination blob. This value can specify the time of a completed, aborted, or failed copy attempt. This header does not appear if a copy is pending, if this blob has never been the destination in a Copy Blob operation, or if this blob has been modified after a concluded Copy Blob operation using Set Blob Properties, Put Blob, or Put Block List."
+ },
+ "x-ms-copy-status-description": {
+ "x-ms-client-name": "CopyStatusDescription",
+ "type": "string",
+ "description": "Only appears when x-ms-copy-status is failed or pending. Describes the cause of the last fatal or non-fatal copy operation failure. This header does not appear if this blob has never been the destination in a Copy Blob operation, or if this blob has been modified after a concluded Copy Blob operation using Set Blob Properties, Put Blob, or Put Block List"
+ },
+ "x-ms-copy-id": {
+ "x-ms-client-name": "CopyId",
+ "type": "string",
+ "description": "String identifier for this copy operation. Use with Get Blob Properties to check the status of this copy operation, or pass to Abort Copy Blob to abort a pending copy."
+ },
+ "x-ms-copy-progress": {
+ "x-ms-client-name": "CopyProgress",
+ "type": "string",
+ "description": "Contains the number of bytes copied and the total bytes in the source in the last attempted Copy Blob operation where this blob was the destination blob. Can show between 0 and Content-Length bytes copied. This header does not appear if this blob has never been the destination in a Copy Blob operation, or if this blob has been modified after a concluded Copy Blob operation using Set Blob Properties, Put Blob, or Put Block List"
+ },
+ "x-ms-copy-source": {
+ "x-ms-client-name": "CopySource",
+ "type": "string",
+ "description": "URL up to 2 KB in length that specifies the source blob or file used in the last attempted Copy Blob operation where this blob was the destination blob. This header does not appear if this blob has never been the destination in a Copy Blob operation, or if this blob has been modified after a concluded Copy Blob operation using Set Blob Properties, Put Blob, or Put Block List."
+ },
+ "x-ms-copy-status": {
+ "x-ms-client-name": "CopyStatus",
+ "description": "State of the copy operation identified by x-ms-copy-id.",
+ "type": "string",
+ "enum": [
+ "pending",
+ "success",
+ "aborted",
+ "failed"
+ ],
+ "x-ms-enum": {
+ "name": "CopyStatusType",
+ "modelAsString": false
+ }
+ },
+ "x-ms-lease-duration": {
+ "x-ms-client-name": "LeaseDuration",
+ "description": "When a blob is leased, specifies whether the lease is of infinite or fixed duration.",
+ "type": "string",
+ "enum": [
+ "infinite",
+ "fixed"
+ ],
+ "x-ms-enum": {
+ "name": "LeaseDurationType",
+ "modelAsString": false
+ }
+ },
+ "x-ms-lease-state": {
+ "x-ms-client-name": "LeaseState",
+ "description": "Lease state of the blob.",
+ "type": "string",
+ "enum": [
+ "available",
+ "leased",
+ "expired",
+ "breaking",
+ "broken"
+ ],
+ "x-ms-enum": {
+ "name": "LeaseStateType",
+ "modelAsString": false
+ }
+ },
+ "x-ms-lease-status": {
+ "x-ms-client-name": "LeaseStatus",
+ "description": "The current lease status of the blob.",
+ "type": "string",
+ "enum": [
+ "locked",
+ "unlocked"
+ ],
+ "x-ms-enum": {
+ "name": "LeaseStatusType",
+ "modelAsString": false
+ }
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Accept-Ranges": {
+ "type": "string",
+ "description": "Indicates that the service supports requests for partial blob content."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ },
+ "x-ms-blob-committed-block-count": {
+ "x-ms-client-name": "BlobCommittedBlockCount",
+ "type": "integer",
+ "description": "The number of committed blocks present in the blob. This header is returned only for append blobs."
+ },
+ "x-ms-server-encrypted": {
+ "x-ms-client-name": "IsServerEncrypted",
+ "type": "boolean",
+ "description": "The value of this header is set to true if the blob data and application metadata are completely encrypted using the specified algorithm. Otherwise, the value is set to false (when the blob is unencrypted, or if only parts of the blob/application metadata are encrypted)."
+ },
+ "x-ms-blob-content-md5": {
+ "x-ms-client-name": "BlobContentMD5",
+ "type": "string",
+ "format": "byte",
+ "description": "If the blob has a MD5 hash, and if request contains range header (Range or x-ms-range), this response header is returned with the value of the whole blob's MD5 value. This value may or may not be equal to the value returned in Content-MD5 header, with the latter calculated from the requested range"
+ }
+ },
+ "schema": {
+ "type": "object",
+ "format": "file"
+ }
+ },
+ "206": {
+ "description": "Returns the content of a specified range of the blob.",
+ "headers": {
+ "Last-Modified": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob."
+ },
+ "x-ms-meta": {
+ "type": "string",
+ "x-ms-client-name": "Metadata",
+ "x-ms-header-collection-prefix": "x-ms-meta-"
+ },
+ "Content-Length": {
+ "type": "integer",
+ "format": "int64",
+ "description": "The number of bytes present in the response body."
+ },
+ "Content-Type": {
+ "type": "string",
+ "description": "The media type of the body of the response. For Download Blob this is 'application/octet-stream'"
+ },
+ "Content-Range": {
+ "type": "string",
+ "description": "Indicates the range of bytes returned in the event that the client requested a subset of the blob by setting the 'Range' request header."
+ },
+ "ETag": {
+ "type": "string",
+ "format": "etag",
+ "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes."
+ },
+ "Content-MD5": {
+ "type": "string",
+ "format": "byte",
+ "description": "If the blob has an MD5 hash and this operation is to read the full blob, this response header is returned so that the client can check for message content integrity."
+ },
+ "Content-Encoding": {
+ "type": "string",
+ "description": "This header returns the value that was specified for the Content-Encoding request header"
+ },
+ "Cache-Control": {
+ "type": "string",
+ "description": "This header is returned if it was previously specified for the blob."
+ },
+ "Content-Disposition": {
+ "type": "string",
+ "description": "This header returns the value that was specified for the 'x-ms-blob-content-disposition' header. The Content-Disposition response header field conveys additional information about how to process the response payload, and also can be used to attach additional metadata. For example, if set to attachment, it indicates that the user-agent should not display the response, but instead show a Save As dialog with a filename other than the blob name specified."
+ },
+ "Content-Language": {
+ "type": "string",
+ "description": "This header returns the value that was specified for the Content-Language request header."
+ },
+ "x-ms-blob-sequence-number": {
+ "x-ms-client-name": "BlobSequenceNumber",
+ "type": "integer",
+ "format": "int64",
+ "description": "The current sequence number for a page blob. This header is not returned for block blobs or append blobs"
+ },
+ "x-ms-blob-type": {
+ "x-ms-client-name": "BlobType",
+ "description": "The blob's type.",
+ "type": "string",
+ "enum": [
+ "BlockBlob",
+ "PageBlob",
+ "AppendBlob"
+ ],
+ "x-ms-enum": {
+ "name": "BlobType",
+ "modelAsString": false
+ }
+ },
+ "x-ms-copy-completion-time": {
+ "x-ms-client-name": "CopyCompletionTime",
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "Conclusion time of the last attempted Copy Blob operation where this blob was the destination blob. This value can specify the time of a completed, aborted, or failed copy attempt. This header does not appear if a copy is pending, if this blob has never been the destination in a Copy Blob operation, or if this blob has been modified after a concluded Copy Blob operation using Set Blob Properties, Put Blob, or Put Block List."
+ },
+ "x-ms-copy-status-description": {
+ "x-ms-client-name": "CopyStatusDescription",
+ "type": "string",
+ "description": "Only appears when x-ms-copy-status is failed or pending. Describes the cause of the last fatal or non-fatal copy operation failure. This header does not appear if this blob has never been the destination in a Copy Blob operation, or if this blob has been modified after a concluded Copy Blob operation using Set Blob Properties, Put Blob, or Put Block List"
+ },
+ "x-ms-copy-id": {
+ "x-ms-client-name": "CopyId",
+ "type": "string",
+ "description": "String identifier for this copy operation. Use with Get Blob Properties to check the status of this copy operation, or pass to Abort Copy Blob to abort a pending copy."
+ },
+ "x-ms-copy-progress": {
+ "x-ms-client-name": "CopyProgress",
+ "type": "string",
+ "description": "Contains the number of bytes copied and the total bytes in the source in the last attempted Copy Blob operation where this blob was the destination blob. Can show between 0 and Content-Length bytes copied. This header does not appear if this blob has never been the destination in a Copy Blob operation, or if this blob has been modified after a concluded Copy Blob operation using Set Blob Properties, Put Blob, or Put Block List"
+ },
+ "x-ms-copy-source": {
+ "x-ms-client-name": "CopySource",
+ "type": "string",
+ "description": "URL up to 2 KB in length that specifies the source blob or file used in the last attempted Copy Blob operation where this blob was the destination blob. This header does not appear if this blob has never been the destination in a Copy Blob operation, or if this blob has been modified after a concluded Copy Blob operation using Set Blob Properties, Put Blob, or Put Block List."
+ },
+ "x-ms-copy-status": {
+ "x-ms-client-name": "CopyStatus",
+ "description": "State of the copy operation identified by x-ms-copy-id.",
+ "type": "string",
+ "enum": [
+ "pending",
+ "success",
+ "aborted",
+ "failed"
+ ],
+ "x-ms-enum": {
+ "name": "CopyStatusType",
+ "modelAsString": false
+ }
+ },
+ "x-ms-lease-duration": {
+ "x-ms-client-name": "LeaseDuration",
+ "description": "When a blob is leased, specifies whether the lease is of infinite or fixed duration.",
+ "type": "string",
+ "enum": [
+ "infinite",
+ "fixed"
+ ],
+ "x-ms-enum": {
+ "name": "LeaseDurationType",
+ "modelAsString": false
+ }
+ },
+ "x-ms-lease-state": {
+ "x-ms-client-name": "LeaseState",
+ "description": "Lease state of the blob.",
+ "type": "string",
+ "enum": [
+ "available",
+ "leased",
+ "expired",
+ "breaking",
+ "broken"
+ ],
+ "x-ms-enum": {
+ "name": "LeaseStateType",
+ "modelAsString": false
+ }
+ },
+ "x-ms-lease-status": {
+ "x-ms-client-name": "LeaseStatus",
+ "description": "The current lease status of the blob.",
+ "type": "string",
+ "enum": [
+ "locked",
+ "unlocked"
+ ],
+ "x-ms-enum": {
+ "name": "LeaseStatusType",
+ "modelAsString": false
+ }
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Accept-Ranges": {
+ "type": "string",
+ "description": "Indicates that the service supports requests for partial blob content."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ },
+ "x-ms-blob-committed-block-count": {
+ "x-ms-client-name": "BlobCommittedBlockCount",
+ "type": "integer",
+ "description": "The number of committed blocks present in the blob. This header is returned only for append blobs."
+ },
+ "x-ms-server-encrypted": {
+ "x-ms-client-name": "IsServerEncrypted",
+ "type": "boolean",
+ "description": "The value of this header is set to true if the blob data and application metadata are completely encrypted using the specified algorithm. Otherwise, the value is set to false (when the blob is unencrypted, or if only parts of the blob/application metadata are encrypted)."
+ },
+ "x-ms-blob-content-md5": {
+ "x-ms-client-name": "BlobContentMD5",
+ "type": "string",
+ "format": "byte",
+ "description": "If the blob has a MD5 hash, and if request contains range header (Range or x-ms-range), this response header is returned with the value of the whole blob's MD5 value. This value may or may not be equal to the value returned in Content-MD5 header, with the latter calculated from the requested range"
+ }
+ },
+ "schema": {
+ "type": "object",
+ "format": "file"
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "head": {
+ "tags": [
+ "blob"
+ ],
+ "operationId": "Blob_GetProperties",
+ "description": "The Get Properties operation returns all user-defined metadata, standard HTTP properties, and system properties for the blob. It does not return the content of the blob.",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Snapshot"
+ },
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdOptional"
+ },
+ {
+ "$ref": "#/parameters/IfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfMatch"
+ },
+ {
+ "$ref": "#/parameters/IfNoneMatch"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Returns the properties of the blob.",
+ "headers": {
+ "Last-Modified": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "Returns the date and time the blob was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob."
+ },
+ "x-ms-creation-time": {
+ "x-ms-client-name": "CreationTime",
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "Returns the date and time the blob was created."
+ },
+ "x-ms-meta": {
+ "type": "string",
+ "x-ms-client-name": "Metadata",
+ "x-ms-header-collection-prefix": "x-ms-meta-"
+ },
+ "x-ms-blob-type": {
+ "x-ms-client-name": "BlobType",
+ "description": "The blob's type.",
+ "type": "string",
+ "enum": [
+ "BlockBlob",
+ "PageBlob",
+ "AppendBlob"
+ ],
+ "x-ms-enum": {
+ "name": "BlobType",
+ "modelAsString": false
+ }
+ },
+ "x-ms-copy-completion-time": {
+ "x-ms-client-name": "CopyCompletionTime",
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "Conclusion time of the last attempted Copy Blob operation where this blob was the destination blob. This value can specify the time of a completed, aborted, or failed copy attempt. This header does not appear if a copy is pending, if this blob has never been the destination in a Copy Blob operation, or if this blob has been modified after a concluded Copy Blob operation using Set Blob Properties, Put Blob, or Put Block List."
+ },
+ "x-ms-copy-status-description": {
+ "x-ms-client-name": "CopyStatusDescription",
+ "type": "string",
+ "description": "Only appears when x-ms-copy-status is failed or pending. Describes the cause of the last fatal or non-fatal copy operation failure. This header does not appear if this blob has never been the destination in a Copy Blob operation, or if this blob has been modified after a concluded Copy Blob operation using Set Blob Properties, Put Blob, or Put Block List"
+ },
+ "x-ms-copy-id": {
+ "x-ms-client-name": "CopyId",
+ "type": "string",
+ "description": "String identifier for this copy operation. Use with Get Blob Properties to check the status of this copy operation, or pass to Abort Copy Blob to abort a pending copy."
+ },
+ "x-ms-copy-progress": {
+ "x-ms-client-name": "CopyProgress",
+ "type": "string",
+ "description": "Contains the number of bytes copied and the total bytes in the source in the last attempted Copy Blob operation where this blob was the destination blob. Can show between 0 and Content-Length bytes copied. This header does not appear if this blob has never been the destination in a Copy Blob operation, or if this blob has been modified after a concluded Copy Blob operation using Set Blob Properties, Put Blob, or Put Block List"
+ },
+ "x-ms-copy-source": {
+ "x-ms-client-name": "CopySource",
+ "type": "string",
+ "description": "URL up to 2 KB in length that specifies the source blob or file used in the last attempted Copy Blob operation where this blob was the destination blob. This header does not appear if this blob has never been the destination in a Copy Blob operation, or if this blob has been modified after a concluded Copy Blob operation using Set Blob Properties, Put Blob, or Put Block List."
+ },
+ "x-ms-copy-status": {
+ "x-ms-client-name": "CopyStatus",
+ "description": "State of the copy operation identified by x-ms-copy-id.",
+ "type": "string",
+ "enum": [
+ "pending",
+ "success",
+ "aborted",
+ "failed"
+ ],
+ "x-ms-enum": {
+ "name": "CopyStatusType",
+ "modelAsString": false
+ }
+ },
+ "x-ms-incremental-copy": {
+ "x-ms-client-name": "IsIncrementalCopy",
+ "type": "boolean",
+ "description": "Included if the blob is incremental copy blob."
+ },
+ "x-ms-copy-destination-snapshot": {
+ "x-ms-client-name": "DestinationSnapshot",
+ "type": "string",
+ "description": "Included if the blob is incremental copy blob or incremental copy snapshot, if x-ms-copy-status is success. Snapshot time of the last successful incremental copy snapshot for this blob."
+ },
+ "x-ms-lease-duration": {
+ "x-ms-client-name": "LeaseDuration",
+ "description": "When a blob is leased, specifies whether the lease is of infinite or fixed duration.",
+ "type": "string",
+ "enum": [
+ "infinite",
+ "fixed"
+ ],
+ "x-ms-enum": {
+ "name": "LeaseDurationType",
+ "modelAsString": false
+ }
+ },
+ "x-ms-lease-state": {
+ "x-ms-client-name": "LeaseState",
+ "description": "Lease state of the blob.",
+ "type": "string",
+ "enum": [
+ "available",
+ "leased",
+ "expired",
+ "breaking",
+ "broken"
+ ],
+ "x-ms-enum": {
+ "name": "LeaseStateType",
+ "modelAsString": false
+ }
+ },
+ "x-ms-lease-status": {
+ "x-ms-client-name": "LeaseStatus",
+ "description": "The current lease status of the blob.",
+ "type": "string",
+ "enum": [
+ "locked",
+ "unlocked"
+ ],
+ "x-ms-enum": {
+ "name": "LeaseStatusType",
+ "modelAsString": false
+ }
+ },
+ "Content-Length": {
+ "type": "integer",
+ "format": "int64",
+ "description": "The number of bytes present in the response body."
+ },
+ "Content-Type": {
+ "type": "string",
+ "description": "The content type specified for the blob. The default content type is 'application/octet-stream'"
+ },
+ "ETag": {
+ "type": "string",
+ "format": "etag",
+ "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes."
+ },
+ "Content-MD5": {
+ "type": "string",
+ "format": "byte",
+ "description": "If the blob has an MD5 hash and this operation is to read the full blob, this response header is returned so that the client can check for message content integrity."
+ },
+ "Content-Encoding": {
+ "type": "string",
+ "description": "This header returns the value that was specified for the Content-Encoding request header"
+ },
+ "Content-Disposition": {
+ "type": "string",
+ "description": "This header returns the value that was specified for the 'x-ms-blob-content-disposition' header. The Content-Disposition response header field conveys additional information about how to process the response payload, and also can be used to attach additional metadata. For example, if set to attachment, it indicates that the user-agent should not display the response, but instead show a Save As dialog with a filename other than the blob name specified."
+ },
+ "Content-Language": {
+ "type": "string",
+ "description": "This header returns the value that was specified for the Content-Language request header."
+ },
+ "Cache-Control": {
+ "type": "string",
+ "description": "This header is returned if it was previously specified for the blob."
+ },
+ "x-ms-blob-sequence-number": {
+ "x-ms-client-name": "BlobSequenceNumber",
+ "type": "integer",
+ "format": "int64",
+ "description": "The current sequence number for a page blob. This header is not returned for block blobs or append blobs"
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ },
+ "Accept-Ranges": {
+ "type": "string",
+ "description": "Indicates that the service supports requests for partial blob content."
+ },
+ "x-ms-blob-committed-block-count": {
+ "x-ms-client-name": "BlobCommittedBlockCount",
+ "type": "integer",
+ "description": "The number of committed blocks present in the blob. This header is returned only for append blobs."
+ },
+ "x-ms-server-encrypted": {
+ "x-ms-client-name": "IsServerEncrypted",
+ "type": "boolean",
+ "description": "The value of this header is set to true if the blob data and application metadata are completely encrypted using the specified algorithm. Otherwise, the value is set to false (when the blob is unencrypted, or if only parts of the blob/application metadata are encrypted)."
+ },
+ "x-ms-access-tier": {
+ "x-ms-client-name": "AccessTier",
+ "type": "string",
+ "description": "The tier of page blob on a premium storage account or tier of block blob on blob storage LRS accounts. For a list of allowed premium page blob tiers, see https://docs.microsoft.com/en-us/azure/virtual-machines/windows/premium-storage#features. For blob storage LRS accounts, valid values are Hot/Cool/Archive."
+ },
+ "x-ms-access-tier-inferred": {
+ "x-ms-client-name": "AccessTierInferred",
+ "type": "boolean",
+ "description": "For page blobs on a premium storage account only. If the access tier is not explicitly set on the blob, the tier is inferred based on its content length and this header will be returned with true value."
+ },
+ "x-ms-archive-status": {
+ "x-ms-client-name": "ArchiveStatus",
+ "type": "string",
+ "description": "For blob storage LRS accounts, valid values are rehydrate-pending-to-hot/rehydrate-pending-to-cool. If the blob is being rehydrated and is not complete then this header is returned indicating that rehydrate is pending and also tells the destination tier."
+ },
+ "x-ms-access-tier-change-time": {
+ "x-ms-client-name": "AccessTierChangeTime",
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "The time the tier was changed on the object. This is only returned if the tier on the block blob was ever set."
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "blob"
+ ],
+ "operationId": "Blob_Delete",
+ "description": "If the storage account's soft delete feature is disabled then, when a blob is deleted, it is permanently removed from the storage account. If the storage account's soft delete feature is enabled, then, when a blob is deleted, it is marked for deletion and becomes inaccessible immediately. However, the blob service retains the blob or snapshot for the number of days specified by the DeleteRetentionPolicy section of [Storage service properties] (Set-Blob-Service-Properties.md). After the specified number of days has passed, the blob's data is permanently removed from the storage account. Note that you continue to be charged for the soft-deleted blob's storage until it is permanently removed. Use the List Blobs API and specify the \"include=deleted\" query parameter to discover which blobs and snapshots have been soft deleted. You can then use the Undelete Blob API to restore a soft-deleted blob. All other operations on a soft-deleted blob or snapshot causes the service to return an HTTP status code of 404 (ResourceNotFound).",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Snapshot"
+ },
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdOptional"
+ },
+ {
+ "$ref": "#/parameters/DeleteSnapshots"
+ },
+ {
+ "$ref": "#/parameters/IfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfMatch"
+ },
+ {
+ "$ref": "#/parameters/IfNoneMatch"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "202": {
+ "description": "The delete request was accepted and the blob will be deleted.",
+ "headers": {
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ }
+ },
+ "/{containerName}/{blob}?PageBlob": {
+ "put": {
+ "tags": [
+ "blob"
+ ],
+ "operationId": "PageBlob_Create",
+ "description": "The Create operation creates a new page blob.",
+ "consumes": [
+ "application/octet-stream"
+ ],
+ "parameters": [
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/ContentLength"
+ },
+ {
+ "$ref": "#/parameters/BlobContentType"
+ },
+ {
+ "$ref": "#/parameters/BlobContentEncoding"
+ },
+ {
+ "$ref": "#/parameters/BlobContentLanguage"
+ },
+ {
+ "$ref": "#/parameters/BlobContentMD5"
+ },
+ {
+ "$ref": "#/parameters/BlobCacheControl"
+ },
+ {
+ "$ref": "#/parameters/Metadata"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdOptional"
+ },
+ {
+ "$ref": "#/parameters/BlobContentDisposition"
+ },
+ {
+ "$ref": "#/parameters/IfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfMatch"
+ },
+ {
+ "$ref": "#/parameters/IfNoneMatch"
+ },
+ {
+ "$ref": "#/parameters/BlobContentLengthRequired"
+ },
+ {
+ "$ref": "#/parameters/BlobSequenceNumber"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "The blob was created.",
+ "headers": {
+ "ETag": {
+ "type": "string",
+ "format": "etag",
+ "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes."
+ },
+ "Last-Modified": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob."
+ },
+ "Content-MD5": {
+ "type": "string",
+ "format": "byte",
+ "description": "If the blob has an MD5 hash and this operation is to read the full blob, this response header is returned so that the client can check for message content integrity."
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ },
+ "x-ms-request-server-encrypted": {
+ "x-ms-client-name": "IsServerEncrypted",
+ "type": "boolean",
+ "description": "The value of this header is set to true if the contents of the request are successfully encrypted using the specified algorithm, and false otherwise."
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "x-ms-blob-type",
+ "x-ms-client-name": "blobType",
+ "in": "header",
+ "required": true,
+ "x-ms-parameter-location": "method",
+ "description": "Specifies the type of blob to create: block blob, page blob, or append blob.",
+ "type": "string",
+ "enum": [
+ "PageBlob"
+ ],
+ "x-ms-enum": {
+ "name": "BlobType",
+ "modelAsString": false
+ }
+ }
+ ]
+ },
+ "/{containerName}/{blob}?AppendBlob": {
+ "put": {
+ "tags": [
+ "blob"
+ ],
+ "operationId": "AppendBlob_Create",
+ "description": "The Create Append Blob operation creates a new append blob.",
+ "consumes": [
+ "application/octet-stream"
+ ],
+ "parameters": [
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/ContentLength"
+ },
+ {
+ "$ref": "#/parameters/BlobContentType"
+ },
+ {
+ "$ref": "#/parameters/BlobContentEncoding"
+ },
+ {
+ "$ref": "#/parameters/BlobContentLanguage"
+ },
+ {
+ "$ref": "#/parameters/BlobContentMD5"
+ },
+ {
+ "$ref": "#/parameters/BlobCacheControl"
+ },
+ {
+ "$ref": "#/parameters/Metadata"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdOptional"
+ },
+ {
+ "$ref": "#/parameters/BlobContentDisposition"
+ },
+ {
+ "$ref": "#/parameters/IfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfMatch"
+ },
+ {
+ "$ref": "#/parameters/IfNoneMatch"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "The blob was created.",
+ "headers": {
+ "ETag": {
+ "type": "string",
+ "format": "etag",
+ "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes."
+ },
+ "Last-Modified": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob."
+ },
+ "Content-MD5": {
+ "type": "string",
+ "format": "byte",
+ "description": "If the blob has an MD5 hash and this operation is to read the full blob, this response header is returned so that the client can check for message content integrity."
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ },
+ "x-ms-request-server-encrypted": {
+ "x-ms-client-name": "IsServerEncrypted",
+ "type": "boolean",
+ "description": "The value of this header is set to true if the contents of the request are successfully encrypted using the specified algorithm, and false otherwise."
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "x-ms-blob-type",
+ "x-ms-client-name": "blobType",
+ "in": "header",
+ "required": true,
+ "x-ms-parameter-location": "method",
+ "description": "Specifies the type of blob to create: block blob, page blob, or append blob.",
+ "type": "string",
+ "enum": [
+ "AppendBlob"
+ ],
+ "x-ms-enum": {
+ "name": "BlobType",
+ "modelAsString": false
+ }
+ }
+ ]
+ },
+ "/{containerName}/{blob}?BlockBlob": {
+ "put": {
+ "tags": [
+ "blob"
+ ],
+ "operationId": "BlockBlob_Upload",
+ "description": "The Upload Block Blob operation updates the content of an existing block blob. Updating an existing block blob overwrites any existing metadata on the blob. Partial updates are not supported with Put Blob; the content of the existing blob is overwritten with the content of the new blob. To perform a partial update of the content of a block blob, use the Put Block List operation.",
+ "consumes": [
+ "application/octet-stream"
+ ],
+ "parameters": [
+ {
+ "$ref": "#/parameters/Body"
+ },
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/ContentLength"
+ },
+ {
+ "$ref": "#/parameters/BlobContentType"
+ },
+ {
+ "$ref": "#/parameters/BlobContentEncoding"
+ },
+ {
+ "$ref": "#/parameters/BlobContentLanguage"
+ },
+ {
+ "$ref": "#/parameters/BlobContentMD5"
+ },
+ {
+ "$ref": "#/parameters/BlobCacheControl"
+ },
+ {
+ "$ref": "#/parameters/Metadata"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdOptional"
+ },
+ {
+ "$ref": "#/parameters/BlobContentDisposition"
+ },
+ {
+ "$ref": "#/parameters/IfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfMatch"
+ },
+ {
+ "$ref": "#/parameters/IfNoneMatch"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "The blob was updated.",
+ "headers": {
+ "ETag": {
+ "type": "string",
+ "format": "etag",
+ "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes."
+ },
+ "Last-Modified": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob."
+ },
+ "Content-MD5": {
+ "type": "string",
+ "format": "byte",
+ "description": "If the blob has an MD5 hash and this operation is to read the full blob, this response header is returned so that the client can check for message content integrity."
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ },
+ "x-ms-request-server-encrypted": {
+ "x-ms-client-name": "IsServerEncrypted",
+ "type": "boolean",
+ "description": "The value of this header is set to true if the contents of the request are successfully encrypted using the specified algorithm, and false otherwise."
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "x-ms-blob-type",
+ "x-ms-client-name": "blobType",
+ "in": "header",
+ "required": true,
+ "x-ms-parameter-location": "method",
+ "description": "Specifies the type of blob to create: block blob, page blob, or append blob.",
+ "type": "string",
+ "enum": [
+ "BlockBlob"
+ ],
+ "x-ms-enum": {
+ "name": "BlobType",
+ "modelAsString": false
+ }
+ }
+ ]
+ },
+ "/{containerName}/{blob}?comp=undelete": {
+ "put": {
+ "tags": [
+ "blob"
+ ],
+ "operationId": "Blob_Undelete",
+ "description": "Undelete a blob that was previously soft deleted",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "The blob was undeleted successfully.",
+ "headers": {
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated."
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "comp",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "undelete"
+ ]
+ }
+ ]
+ },
+ "/{containerName}/{blob}?comp=properties&SetHTTPHeaders": {
+ "put": {
+ "tags": [
+ "blob"
+ ],
+ "operationId": "Blob_SetHTTPHeaders",
+ "description": "The Set HTTP Headers operation sets system properties on the blob",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/BlobCacheControl"
+ },
+ {
+ "$ref": "#/parameters/BlobContentType"
+ },
+ {
+ "$ref": "#/parameters/BlobContentMD5"
+ },
+ {
+ "$ref": "#/parameters/BlobContentEncoding"
+ },
+ {
+ "$ref": "#/parameters/BlobContentLanguage"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdOptional"
+ },
+ {
+ "$ref": "#/parameters/IfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfMatch"
+ },
+ {
+ "$ref": "#/parameters/IfNoneMatch"
+ },
+ {
+ "$ref": "#/parameters/BlobContentDisposition"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "The properties were set successfully.",
+ "headers": {
+ "ETag": {
+ "type": "string",
+ "format": "etag",
+ "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes."
+ },
+ "Last-Modified": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob."
+ },
+ "x-ms-blob-sequence-number": {
+ "x-ms-client-name": "BlobSequenceNumber",
+ "type": "integer",
+ "format": "int64",
+ "description": "The current sequence number for a page blob. This header is not returned for block blobs or append blobs"
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "comp",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "properties"
+ ]
+ }
+ ]
+ },
+ "/{containerName}/{blob}?comp=metadata": {
+ "put": {
+ "tags": [
+ "blob"
+ ],
+ "operationId": "Blob_SetMetadata",
+ "description": "The Set Blob Metadata operation sets user-defined metadata for the specified blob as one or more name-value pairs",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/Metadata"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdOptional"
+ },
+ {
+ "$ref": "#/parameters/IfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfMatch"
+ },
+ {
+ "$ref": "#/parameters/IfNoneMatch"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "The metadata was set successfully.",
+ "headers": {
+ "ETag": {
+ "type": "string",
+ "format": "etag",
+ "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes."
+ },
+ "Last-Modified": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob."
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ },
+ "x-ms-request-server-encrypted": {
+ "x-ms-client-name": "IsServerEncrypted",
+ "type": "boolean",
+ "description": "The value of this header is set to true if the contents of the request are successfully encrypted using the specified algorithm, and false otherwise."
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "comp",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "metadata"
+ ]
+ }
+ ]
+ },
+ "/{containerName}/{blob}?comp=lease&acquire": {
+ "put": {
+ "tags": [
+ "blob"
+ ],
+ "operationId": "Blob_AcquireLease",
+ "description": "[Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete operations",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/LeaseDuration"
+ },
+ {
+ "$ref": "#/parameters/ProposedLeaseIdOptional"
+ },
+ {
+ "$ref": "#/parameters/IfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfMatch"
+ },
+ {
+ "$ref": "#/parameters/IfNoneMatch"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "The Acquire operation completed successfully.",
+ "headers": {
+ "ETag": {
+ "type": "string",
+ "format": "etag",
+ "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes."
+ },
+ "Last-Modified": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "Returns the date and time the blob was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob."
+ },
+ "x-ms-lease-id": {
+ "x-ms-client-name": "LeaseId",
+ "type": "string",
+ "description": "Uniquely identifies a blobs's lease"
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "comp",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "lease"
+ ]
+ },
+ {
+ "name": "x-ms-lease-action",
+ "x-ms-client-name": "action",
+ "in": "header",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "acquire"
+ ],
+ "x-ms-enum": {
+ "name": "LeaseAction",
+ "modelAsString": false
+ },
+ "x-ms-parameter-location": "method",
+ "description": "Describes what lease action to take."
+ }
+ ]
+ },
+ "/{containerName}/{blob}?comp=lease&release": {
+ "put": {
+ "tags": [
+ "blob"
+ ],
+ "operationId": "Blob_ReleaseLease",
+ "description": "[Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete operations",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdRequired"
+ },
+ {
+ "$ref": "#/parameters/IfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfMatch"
+ },
+ {
+ "$ref": "#/parameters/IfNoneMatch"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "The Release operation completed successfully.",
+ "headers": {
+ "ETag": {
+ "type": "string",
+ "format": "etag",
+ "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes."
+ },
+ "Last-Modified": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "Returns the date and time the blob was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob."
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "comp",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "lease"
+ ]
+ },
+ {
+ "name": "x-ms-lease-action",
+ "x-ms-client-name": "action",
+ "in": "header",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "release"
+ ],
+ "x-ms-enum": {
+ "name": "LeaseAction",
+ "modelAsString": false
+ },
+ "x-ms-parameter-location": "method",
+ "description": "Describes what lease action to take."
+ }
+ ]
+ },
+ "/{containerName}/{blob}?comp=lease&renew": {
+ "put": {
+ "tags": [
+ "blob"
+ ],
+ "operationId": "Blob_RenewLease",
+ "description": "[Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete operations",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdRequired"
+ },
+ {
+ "$ref": "#/parameters/IfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfMatch"
+ },
+ {
+ "$ref": "#/parameters/IfNoneMatch"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "The Renew operation completed successfully.",
+ "headers": {
+ "ETag": {
+ "type": "string",
+ "format": "etag",
+ "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes."
+ },
+ "Last-Modified": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "Returns the date and time the blob was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob."
+ },
+ "x-ms-lease-id": {
+ "x-ms-client-name": "LeaseId",
+ "type": "string",
+ "description": "Uniquely identifies a blobs's lease"
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "comp",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "lease"
+ ]
+ },
+ {
+ "name": "x-ms-lease-action",
+ "x-ms-client-name": "action",
+ "in": "header",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "renew"
+ ],
+ "x-ms-enum": {
+ "name": "LeaseAction",
+ "modelAsString": false
+ },
+ "x-ms-parameter-location": "method",
+ "description": "Describes what lease action to take."
+ }
+ ]
+ },
+ "/{containerName}/{blob}?comp=lease&change": {
+ "put": {
+ "tags": [
+ "blob"
+ ],
+ "operationId": "Blob_ChangeLease",
+ "description": "[Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete operations",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdRequired"
+ },
+ {
+ "$ref": "#/parameters/ProposedLeaseIdRequired"
+ },
+ {
+ "$ref": "#/parameters/IfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfMatch"
+ },
+ {
+ "$ref": "#/parameters/IfNoneMatch"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "The Change operation completed successfully.",
+ "headers": {
+ "ETag": {
+ "type": "string",
+ "format": "etag",
+ "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes."
+ },
+ "Last-Modified": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "Returns the date and time the blob was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob."
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-lease-id": {
+ "x-ms-client-name": "LeaseId",
+ "type": "string",
+ "description": "Uniquely identifies a blobs's lease"
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "comp",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "lease"
+ ]
+ },
+ {
+ "name": "x-ms-lease-action",
+ "x-ms-client-name": "action",
+ "in": "header",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "change"
+ ],
+ "x-ms-enum": {
+ "name": "LeaseAction",
+ "modelAsString": false
+ },
+ "x-ms-parameter-location": "method",
+ "description": "Describes what lease action to take."
+ }
+ ]
+ },
+ "/{containerName}/{blob}?comp=lease&break": {
+ "put": {
+ "tags": [
+ "blob"
+ ],
+ "operationId": "Blob_BreakLease",
+ "description": "[Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete operations",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/LeaseBreakPeriod"
+ },
+ {
+ "$ref": "#/parameters/IfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfMatch"
+ },
+ {
+ "$ref": "#/parameters/IfNoneMatch"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "202": {
+ "description": "The Break operation completed successfully.",
+ "headers": {
+ "ETag": {
+ "type": "string",
+ "format": "etag",
+ "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes."
+ },
+ "Last-Modified": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "Returns the date and time the blob was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob."
+ },
+ "x-ms-lease-time": {
+ "x-ms-client-name": "LeaseTime",
+ "type": "integer",
+ "description": "Approximate time remaining in the lease period, in seconds."
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "comp",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "lease"
+ ]
+ },
+ {
+ "name": "x-ms-lease-action",
+ "x-ms-client-name": "action",
+ "in": "header",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "break"
+ ],
+ "x-ms-enum": {
+ "name": "LeaseAction",
+ "modelAsString": false
+ },
+ "x-ms-parameter-location": "method",
+ "description": "Describes what lease action to take."
+ }
+ ]
+ },
+ "/{containerName}/{blob}?comp=snapshot": {
+ "put": {
+ "tags": [
+ "blob"
+ ],
+ "operationId": "Blob_CreateSnapshot",
+ "description": "The Create Snapshot operation creates a read-only snapshot of a blob",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/Metadata"
+ },
+ {
+ "$ref": "#/parameters/IfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfMatch"
+ },
+ {
+ "$ref": "#/parameters/IfNoneMatch"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdOptional"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "The snaptshot was taken successfully.",
+ "headers": {
+ "x-ms-snapshot": {
+ "x-ms-client-name": "Snapshot",
+ "type": "string",
+ "description": "Uniquely identifies the snapshot and indicates the snapshot version. It may be used in subsequent requests to access the snapshot"
+ },
+ "ETag": {
+ "type": "string",
+ "format": "etag",
+ "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes."
+ },
+ "Last-Modified": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob."
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "comp",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "snapshot"
+ ]
+ }
+ ]
+ },
+ "/{containerName}/{blob}?comp=copy": {
+ "put": {
+ "tags": [
+ "blob"
+ ],
+ "operationId": "Blob_StartCopyFromURL",
+ "description": "The Start Copy From URL operation copies a blob or an internet resource to a new blob.",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/Metadata"
+ },
+ {
+ "$ref": "#/parameters/SourceIfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/SourceIfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/SourceIfMatch"
+ },
+ {
+ "$ref": "#/parameters/SourceIfNoneMatch"
+ },
+ {
+ "$ref": "#/parameters/IfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfMatch"
+ },
+ {
+ "$ref": "#/parameters/IfNoneMatch"
+ },
+ {
+ "$ref": "#/parameters/CopySource"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdOptional"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "202": {
+ "description": "The copy blob has been accepted with the specified copy status.",
+ "headers": {
+ "ETag": {
+ "type": "string",
+ "format": "etag",
+ "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes."
+ },
+ "Last-Modified": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob."
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ },
+ "x-ms-copy-id": {
+ "x-ms-client-name": "CopyId",
+ "type": "string",
+ "description": "String identifier for this copy operation. Use with Get Blob Properties to check the status of this copy operation, or pass to Abort Copy Blob to abort a pending copy."
+ },
+ "x-ms-copy-status": {
+ "x-ms-client-name": "CopyStatus",
+ "description": "State of the copy operation identified by x-ms-copy-id.",
+ "type": "string",
+ "enum": [
+ "pending",
+ "success",
+ "aborted",
+ "failed"
+ ],
+ "x-ms-enum": {
+ "name": "CopyStatusType",
+ "modelAsString": false
+ }
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": []
+ },
+ "/{containerName}/{blob}?comp=copy&sync": {
+ "put": {
+ "tags": [
+ "blob"
+ ],
+ "operationId": "Blob_CopyFromURL",
+ "description": "The Copy From URL operation copies a blob or an internet resource to a new blob. It will not return a response until the copy is complete.",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/Metadata"
+ },
+ {
+ "$ref": "#/parameters/SourceIfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/SourceIfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/SourceIfMatch"
+ },
+ {
+ "$ref": "#/parameters/SourceIfNoneMatch"
+ },
+ {
+ "$ref": "#/parameters/IfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfMatch"
+ },
+ {
+ "$ref": "#/parameters/IfNoneMatch"
+ },
+ {
+ "$ref": "#/parameters/CopySource"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdOptional"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "202": {
+ "description": "The copy has completed.",
+ "headers": {
+ "ETag": {
+ "type": "string",
+ "format": "etag",
+ "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes."
+ },
+ "Last-Modified": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob."
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ },
+ "x-ms-copy-id": {
+ "x-ms-client-name": "CopyId",
+ "type": "string",
+ "description": "String identifier for this copy operation."
+ },
+ "x-ms-copy-status": {
+ "x-ms-client-name": "CopyStatus",
+ "description": "State of the copy operation identified by x-ms-copy-id.",
+ "type": "string",
+ "enum": [
+ "success"
+ ],
+ "x-ms-enum": {
+ "name": "SyncCopyStatusType",
+ "modelAsString": false
+ }
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "x-ms-requires-sync",
+ "in": "header",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "true"
+ ]
+ }
+ ]
+ },
+ "/{containerName}/{blob}?comp=copy©id={CopyId}": {
+ "put": {
+ "tags": [
+ "blob"
+ ],
+ "operationId": "Blob_AbortCopyFromURL",
+ "description": "The Abort Copy From URL operation aborts a pending Copy From URL operation, and leaves a destination blob with zero length and full metadata.",
+ "parameters": [
+ {
+ "$ref": "#/parameters/CopyId"
+ },
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdOptional"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "The delete request was accepted and the blob will be deleted.",
+ "headers": {
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "comp",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "copy"
+ ]
+ },
+ {
+ "name": "x-ms-copy-action",
+ "x-ms-client-name": "copyActionAbortConstant",
+ "in": "header",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "abort"
+ ],
+ "x-ms-parameter-location": "method"
+ }
+ ]
+ },
+ "/{containerName}/{blob}?comp=tier": {
+ "put": {
+ "tags": [
+ "blobs"
+ ],
+ "operationId": "Blob_SetTier",
+ "description": "The Set Tier operation sets the tier on a blob. The operation is allowed on a page blob in a premium storage account and on a block blob in a blob storage account (locally redundant storage only). A premium page blob's tier determines the allowed size, IOPS, and bandwidth of the blob. A block blob's tier determines Hot/Cool/Archive storage type. This operation does not update the blob's ETag.",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/AccessTier"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdOptional"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "The new tier will take effect immediately.",
+ "headers": {
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and newer."
+ }
+ }
+ },
+ "202": {
+ "description": "The transition to the new tier is pending.",
+ "headers": {
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and newer."
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "comp",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "tier"
+ ]
+ }
+ ]
+ },
+ "/{containerName}/{blob}?restype=account&comp=properties": {
+ "get": {
+ "tags": [
+ "blob"
+ ],
+ "operationId": "Blob_GetAccountInfo",
+ "description": "Returns the sku name and account kind ",
+ "parameters": [
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success (OK)",
+ "headers": {
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ },
+ "x-ms-sku-name": {
+ "x-ms-client-name": "SkuName",
+ "type": "string",
+ "enum": [
+ "Standard_LRS",
+ "Standard_GRS",
+ "Standard_RAGRS",
+ "Standard_ZRS",
+ "Premium_LRS"
+ ],
+ "x-ms-enum": {
+ "name": "SkuName",
+ "modelAsString": false
+ },
+ "description": "Identifies the sku name of the account"
+ },
+ "x-ms-account-kind": {
+ "x-ms-client-name": "AccountKind",
+ "type": "string",
+ "enum": [
+ "Storage",
+ "BlobStorage",
+ "StorageV2"
+ ],
+ "x-ms-enum": {
+ "name": "AccountKind",
+ "modelAsString": false
+ },
+ "description": "Identifies the account kind"
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "restype",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "account"
+ ]
+ },
+ {
+ "name": "comp",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "properties"
+ ]
+ }
+ ]
+ },
+ "/{containerName}/{blob}?comp=block": {
+ "put": {
+ "tags": [
+ "blockblob"
+ ],
+ "operationId": "BlockBlob_StageBlock",
+ "description": "The Stage Block operation creates a new block to be committed as part of a blob",
+ "consumes": [
+ "application/octet-stream"
+ ],
+ "parameters": [
+ {
+ "$ref": "#/parameters/BlockId"
+ },
+ {
+ "$ref": "#/parameters/ContentLength"
+ },
+ {
+ "$ref": "#/parameters/ContentMD5"
+ },
+ {
+ "$ref": "#/parameters/Body"
+ },
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdOptional"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "The block was created.",
+ "headers": {
+ "Content-MD5": {
+ "type": "string",
+ "format": "byte",
+ "description": "If the blob has an MD5 hash and this operation is to read the full blob, this response header is returned so that the client can check for message content integrity."
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ },
+ "x-ms-request-server-encrypted": {
+ "x-ms-client-name": "IsServerEncrypted",
+ "type": "boolean",
+ "description": "The value of this header is set to true if the contents of the request are successfully encrypted using the specified algorithm, and false otherwise."
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "comp",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "block"
+ ]
+ }
+ ]
+ },
+ "/{containerName}/{blob}?comp=block&fromURL": {
+ "put": {
+ "tags": [
+ "blockblob"
+ ],
+ "operationId": "BlockBlob_StageBlockFromURL",
+ "description": "The Stage Block operation creates a new block to be committed as part of a blob where the contents are read from a URL.",
+ "parameters": [
+ {
+ "$ref": "#/parameters/BlockId"
+ },
+ {
+ "$ref": "#/parameters/ContentLength"
+ },
+ {
+ "$ref": "#/parameters/SourceUrl"
+ },
+ {
+ "$ref": "#/parameters/SourceRange"
+ },
+ {
+ "$ref": "#/parameters/SourceContentMD5"
+ },
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdOptional"
+ },
+ {
+ "$ref": "#/parameters/SourceIfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/SourceIfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/SourceIfMatch"
+ },
+ {
+ "$ref": "#/parameters/SourceIfNoneMatch"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "The block was created.",
+ "headers": {
+ "Content-MD5": {
+ "type": "string",
+ "format": "byte",
+ "description": "If the blob has an MD5 hash and this operation is to read the full blob, this response header is returned so that the client can check for message content integrity."
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ },
+ "x-ms-request-server-encrypted": {
+ "x-ms-client-name": "IsServerEncrypted",
+ "type": "boolean",
+ "description": "The value of this header is set to true if the contents of the request are successfully encrypted using the specified algorithm, and false otherwise."
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "comp",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "block"
+ ]
+ }
+ ]
+ },
+ "/{containerName}/{blob}?comp=blocklist": {
+ "put": {
+ "tags": [
+ "blockblob"
+ ],
+ "operationId": "BlockBlob_CommitBlockList",
+ "description": "The Commit Block List operation writes a blob by specifying the list of block IDs that make up the blob. In order to be written as part of a blob, a block must have been successfully written to the server in a prior Put Block operation. You can call Put Block List to update a blob by uploading only those blocks that have changed, then committing the new and existing blocks together. You can do this by specifying whether to commit a block from the committed block list or from the uncommitted block list, or to commit the most recently uploaded version of the block, whichever list it may belong to.",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/BlobCacheControl"
+ },
+ {
+ "$ref": "#/parameters/BlobContentType"
+ },
+ {
+ "$ref": "#/parameters/BlobContentEncoding"
+ },
+ {
+ "$ref": "#/parameters/BlobContentLanguage"
+ },
+ {
+ "$ref": "#/parameters/BlobContentMD5"
+ },
+ {
+ "$ref": "#/parameters/Metadata"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdOptional"
+ },
+ {
+ "$ref": "#/parameters/BlobContentDisposition"
+ },
+ {
+ "$ref": "#/parameters/IfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfMatch"
+ },
+ {
+ "$ref": "#/parameters/IfNoneMatch"
+ },
+ {
+ "name": "blocks",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/BlockLookupList"
+ }
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "The block list was recorded.",
+ "headers": {
+ "ETag": {
+ "type": "string",
+ "format": "etag",
+ "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes."
+ },
+ "Last-Modified": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob."
+ },
+ "Content-MD5": {
+ "type": "string",
+ "format": "byte",
+ "description": "If the blob has an MD5 hash and this operation is to read the full blob, this response header is returned so that the client can check for message content integrity."
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ },
+ "x-ms-request-server-encrypted": {
+ "x-ms-client-name": "IsServerEncrypted",
+ "type": "boolean",
+ "description": "The value of this header is set to true if the contents of the request are successfully encrypted using the specified algorithm, and false otherwise."
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "get": {
+ "tags": [
+ "blockblob"
+ ],
+ "operationId": "BlockBlob_GetBlockList",
+ "description": "The Get Block List operation retrieves the list of blocks that have been uploaded as part of a block blob",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Snapshot"
+ },
+ {
+ "$ref": "#/parameters/BlockListType"
+ },
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdOptional"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "The page range was written.",
+ "headers": {
+ "Last-Modified": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob."
+ },
+ "ETag": {
+ "type": "string",
+ "format": "etag",
+ "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes."
+ },
+ "Content-Type": {
+ "type": "string",
+ "description": "The media type of the body of the response. For Get Block List this is 'application/xml'"
+ },
+ "x-ms-blob-content-length": {
+ "x-ms-client-name": "BlobContentLength",
+ "type": "integer",
+ "format": "int64",
+ "description": "The size of the blob in bytes."
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/BlockList"
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "comp",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "blocklist"
+ ]
+ }
+ ]
+ },
+ "/{containerName}/{blob}?comp=page&update": {
+ "put": {
+ "tags": [
+ "pageblob"
+ ],
+ "operationId": "PageBlob_UploadPages",
+ "description": "The Upload Pages operation writes a range of pages to a page blob",
+ "consumes": [
+ "application/octet-stream"
+ ],
+ "parameters": [
+ {
+ "$ref": "#/parameters/Body"
+ },
+ {
+ "$ref": "#/parameters/ContentLength"
+ },
+ {
+ "$ref": "#/parameters/ContentMD5"
+ },
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/Range"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdOptional"
+ },
+ {
+ "$ref": "#/parameters/IfSequenceNumberLessThanOrEqualTo"
+ },
+ {
+ "$ref": "#/parameters/IfSequenceNumberLessThan"
+ },
+ {
+ "$ref": "#/parameters/IfSequenceNumberEqualTo"
+ },
+ {
+ "$ref": "#/parameters/IfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfMatch"
+ },
+ {
+ "$ref": "#/parameters/IfNoneMatch"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "The page range was written.",
+ "headers": {
+ "ETag": {
+ "type": "string",
+ "format": "etag",
+ "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes."
+ },
+ "Last-Modified": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob."
+ },
+ "Content-MD5": {
+ "type": "string",
+ "format": "byte",
+ "description": "If the blob has an MD5 hash and this operation is to read the full blob, this response header is returned so that the client can check for message content integrity."
+ },
+ "x-ms-blob-sequence-number": {
+ "x-ms-client-name": "BlobSequenceNumber",
+ "type": "integer",
+ "format": "int64",
+ "description": "The current sequence number for the page blob."
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ },
+ "x-ms-request-server-encrypted": {
+ "x-ms-client-name": "IsServerEncrypted",
+ "type": "boolean",
+ "description": "The value of this header is set to true if the contents of the request are successfully encrypted using the specified algorithm, and false otherwise."
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "comp",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "page"
+ ]
+ },
+ {
+ "name": "x-ms-page-write",
+ "x-ms-client-name": "pageWrite",
+ "in": "header",
+ "required": true,
+ "x-ms-parameter-location": "method",
+ "description": "Required. You may specify one of the following options:\n - Update: Writes the bytes specified by the request body into the specified range. The Range and Content-Length headers must match to perform the update.\n - Clear: Clears the specified range and releases the space used in storage for that range. To clear a range, set the Content-Length header to zero, and the Range header to a value that indicates the range to clear, up to maximum blob size.",
+ "type": "string",
+ "enum": [
+ "update"
+ ],
+ "x-ms-enum": {
+ "name": "PageWriteType",
+ "modelAsString": false
+ }
+ }
+ ]
+ },
+ "/{containerName}/{blob}?comp=page&clear": {
+ "put": {
+ "tags": [
+ "pageblob"
+ ],
+ "operationId": "PageBlob_ClearPages",
+ "description": "The Clear Pages operation clears a set of pages from a page blob",
+ "consumes": [
+ "application/octet-stream"
+ ],
+ "parameters": [
+ {
+ "$ref": "#/parameters/ContentLength"
+ },
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/Range"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdOptional"
+ },
+ {
+ "$ref": "#/parameters/IfSequenceNumberLessThanOrEqualTo"
+ },
+ {
+ "$ref": "#/parameters/IfSequenceNumberLessThan"
+ },
+ {
+ "$ref": "#/parameters/IfSequenceNumberEqualTo"
+ },
+ {
+ "$ref": "#/parameters/IfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfMatch"
+ },
+ {
+ "$ref": "#/parameters/IfNoneMatch"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "The page range was cleared.",
+ "headers": {
+ "ETag": {
+ "type": "string",
+ "format": "etag",
+ "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes."
+ },
+ "Last-Modified": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob."
+ },
+ "Content-MD5": {
+ "type": "string",
+ "format": "byte",
+ "description": "If the blob has an MD5 hash and this operation is to read the full blob, this response header is returned so that the client can check for message content integrity."
+ },
+ "x-ms-blob-sequence-number": {
+ "x-ms-client-name": "BlobSequenceNumber",
+ "type": "integer",
+ "format": "int64",
+ "description": "The current sequence number for the page blob."
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "comp",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "page"
+ ]
+ },
+ {
+ "name": "x-ms-page-write",
+ "x-ms-client-name": "pageWrite",
+ "in": "header",
+ "required": true,
+ "x-ms-parameter-location": "method",
+ "description": "Required. You may specify one of the following options:\n - Update: Writes the bytes specified by the request body into the specified range. The Range and Content-Length headers must match to perform the update.\n - Clear: Clears the specified range and releases the space used in storage for that range. To clear a range, set the Content-Length header to zero, and the Range header to a value that indicates the range to clear, up to maximum blob size.",
+ "type": "string",
+ "enum": [
+ "clear"
+ ],
+ "x-ms-enum": {
+ "name": "PageWriteType",
+ "modelAsString": false
+ }
+ }
+ ]
+ },
+ "/{containerName}/{blob}?comp=page&update&fromUrl": {
+ "put": {
+ "tags": [
+ "pageblob"
+ ],
+ "operationId": "PageBlob_UploadPagesFromURL",
+ "description": "The Upload Pages operation writes a range of pages to a page blob where the contents are read from a URL",
+ "consumes": [
+ "application/octet-stream"
+ ],
+ "parameters": [
+ {
+ "$ref": "#/parameters/SourceUrl"
+ },
+ {
+ "$ref": "#/parameters/SourceRangeRequiredPutPageFromUrl"
+ },
+ {
+ "$ref": "#/parameters/SourceContentMD5"
+ },
+ {
+ "$ref": "#/parameters/ContentLength"
+ },
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/RangeRequiredPutPageFromUrl"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdOptional"
+ },
+ {
+ "$ref": "#/parameters/IfSequenceNumberLessThanOrEqualTo"
+ },
+ {
+ "$ref": "#/parameters/IfSequenceNumberLessThan"
+ },
+ {
+ "$ref": "#/parameters/IfSequenceNumberEqualTo"
+ },
+ {
+ "$ref": "#/parameters/IfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfMatch"
+ },
+ {
+ "$ref": "#/parameters/IfNoneMatch"
+ },
+ {
+ "$ref": "#/parameters/SourceIfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/SourceIfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/SourceIfMatch"
+ },
+ {
+ "$ref": "#/parameters/SourceIfNoneMatch"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "The page range was written.",
+ "headers": {
+ "ETag": {
+ "type": "string",
+ "format": "etag",
+ "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes."
+ },
+ "Last-Modified": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob."
+ },
+ "Content-MD5": {
+ "type": "string",
+ "format": "byte",
+ "description": "If the blob has an MD5 hash and this operation is to read the full blob, this response header is returned so that the client can check for message content integrity."
+ },
+ "x-ms-blob-sequence-number": {
+ "x-ms-client-name": "BlobSequenceNumber",
+ "type": "integer",
+ "format": "int64",
+ "description": "The current sequence number for the page blob."
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ },
+ "x-ms-request-server-encrypted": {
+ "x-ms-client-name": "IsServerEncrypted",
+ "type": "boolean",
+ "description": "The value of this header is set to true if the contents of the request are successfully encrypted using the specified algorithm, and false otherwise."
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "comp",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "page"
+ ]
+ },
+ {
+ "name": "x-ms-page-write",
+ "x-ms-client-name": "pageWrite",
+ "in": "header",
+ "required": true,
+ "x-ms-parameter-location": "method",
+ "description": "Required. You may specify one of the following options:\n - Update: Writes the bytes specified by the request body into the specified range. The Range and Content-Length headers must match to perform the update.\n - Clear: Clears the specified range and releases the space used in storage for that range. To clear a range, set the Content-Length header to zero, and the Range header to a value that indicates the range to clear, up to maximum blob size.",
+ "type": "string",
+ "enum": [
+ "update"
+ ],
+ "x-ms-enum": {
+ "name": "PageWriteType",
+ "modelAsString": false
+ }
+ }
+ ]
+ },
+ "/{containerName}/{blob}?comp=pagelist": {
+ "get": {
+ "tags": [
+ "pageblob"
+ ],
+ "operationId": "PageBlob_GetPageRanges",
+ "description": "The Get Page Ranges operation returns the list of valid page ranges for a page blob or snapshot of a page blob",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Snapshot"
+ },
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/Range"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdOptional"
+ },
+ {
+ "$ref": "#/parameters/IfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfMatch"
+ },
+ {
+ "$ref": "#/parameters/IfNoneMatch"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Information on the page blob was found.",
+ "headers": {
+ "Last-Modified": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob."
+ },
+ "ETag": {
+ "type": "string",
+ "format": "etag",
+ "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes."
+ },
+ "x-ms-blob-content-length": {
+ "x-ms-client-name": "BlobContentLength",
+ "type": "integer",
+ "format": "int64",
+ "description": "The size of the blob in bytes."
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/PageList"
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "comp",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "pagelist"
+ ]
+ }
+ ]
+ },
+ "/{containerName}/{blob}?comp=pagelist&diff": {
+ "get": {
+ "tags": [
+ "pageblob"
+ ],
+ "operationId": "PageBlob_GetPageRangesDiff",
+ "description": "The Get Page Ranges Diff operation returns the list of valid page ranges for a page blob that were changed between target blob and previous snapshot.",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Snapshot"
+ },
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/PrevSnapshot"
+ },
+ {
+ "$ref": "#/parameters/Range"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdOptional"
+ },
+ {
+ "$ref": "#/parameters/IfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfMatch"
+ },
+ {
+ "$ref": "#/parameters/IfNoneMatch"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Information on the page blob was found.",
+ "headers": {
+ "Last-Modified": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob."
+ },
+ "ETag": {
+ "type": "string",
+ "format": "etag",
+ "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes."
+ },
+ "x-ms-blob-content-length": {
+ "x-ms-client-name": "BlobContentLength",
+ "type": "integer",
+ "format": "int64",
+ "description": "The size of the blob in bytes."
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/PageList"
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "comp",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "pagelist"
+ ]
+ }
+ ]
+ },
+ "/{containerName}/{blob}?comp=properties&Resize": {
+ "put": {
+ "tags": [
+ "pageblob"
+ ],
+ "operationId": "PageBlob_Resize",
+ "description": "Resize the Blob",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdOptional"
+ },
+ {
+ "$ref": "#/parameters/IfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfMatch"
+ },
+ {
+ "$ref": "#/parameters/IfNoneMatch"
+ },
+ {
+ "$ref": "#/parameters/BlobContentLengthRequired"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "The Blob was resized successfully",
+ "headers": {
+ "ETag": {
+ "type": "string",
+ "format": "etag",
+ "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes."
+ },
+ "Last-Modified": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob."
+ },
+ "x-ms-blob-sequence-number": {
+ "x-ms-client-name": "BlobSequenceNumber",
+ "type": "integer",
+ "format": "int64",
+ "description": "The current sequence number for a page blob. This header is not returned for block blobs or append blobs"
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "comp",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "properties"
+ ]
+ }
+ ]
+ },
+ "/{containerName}/{blob}?comp=properties&UpdateSequenceNumber": {
+ "put": {
+ "tags": [
+ "pageblob"
+ ],
+ "operationId": "PageBlob_UpdateSequenceNumber",
+ "description": "Update the sequence number of the blob",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdOptional"
+ },
+ {
+ "$ref": "#/parameters/IfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfMatch"
+ },
+ {
+ "$ref": "#/parameters/IfNoneMatch"
+ },
+ {
+ "$ref": "#/parameters/SequenceNumberAction"
+ },
+ {
+ "$ref": "#/parameters/BlobSequenceNumber"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "The sequence numbers were updated successfully.",
+ "headers": {
+ "ETag": {
+ "type": "string",
+ "format": "etag",
+ "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes."
+ },
+ "Last-Modified": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob."
+ },
+ "x-ms-blob-sequence-number": {
+ "x-ms-client-name": "BlobSequenceNumber",
+ "type": "integer",
+ "format": "int64",
+ "description": "The current sequence number for a page blob. This header is not returned for block blobs or append blobs"
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "comp",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "properties"
+ ]
+ }
+ ]
+ },
+ "/{containerName}/{blob}?comp=incrementalcopy": {
+ "put": {
+ "tags": [
+ "pageblob"
+ ],
+ "operationId": "PageBlob_CopyIncremental",
+ "description": "The Copy Incremental operation copies a snapshot of the source page blob to a destination page blob. The snapshot is copied such that only the differential changes between the previously copied snapshot are transferred to the destination. The copied snapshots are complete copies of the original snapshot and can be read or copied from as usual. This API is supported since REST version 2016-05-31.",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/IfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfMatch"
+ },
+ {
+ "$ref": "#/parameters/IfNoneMatch"
+ },
+ {
+ "$ref": "#/parameters/CopySource"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "202": {
+ "description": "The blob was copied.",
+ "headers": {
+ "ETag": {
+ "type": "string",
+ "format": "etag",
+ "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes."
+ },
+ "Last-Modified": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob."
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ },
+ "x-ms-copy-id": {
+ "x-ms-client-name": "CopyId",
+ "type": "string",
+ "description": "String identifier for this copy operation. Use with Get Blob Properties to check the status of this copy operation, or pass to Abort Copy Blob to abort a pending copy."
+ },
+ "x-ms-copy-status": {
+ "x-ms-client-name": "CopyStatus",
+ "description": "State of the copy operation identified by x-ms-copy-id.",
+ "type": "string",
+ "enum": [
+ "pending",
+ "success",
+ "aborted",
+ "failed"
+ ],
+ "x-ms-enum": {
+ "name": "CopyStatusType",
+ "modelAsString": false
+ }
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "comp",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "incrementalcopy"
+ ]
+ }
+ ]
+ },
+ "/{containerName}/{blob}?comp=appendblock": {
+ "put": {
+ "tags": [
+ "appendblob"
+ ],
+ "consumes": [
+ "application/octet-stream"
+ ],
+ "operationId": "AppendBlob_AppendBlock",
+ "description": "The Append Block operation commits a new block of data to the end of an existing append blob. The Append Block operation is permitted only if the blob was created with x-ms-blob-type set to AppendBlob. Append Block is supported only on version 2015-02-21 version or later.",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Body"
+ },
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/ContentLength"
+ },
+ {
+ "$ref": "#/parameters/ContentMD5"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdOptional"
+ },
+ {
+ "$ref": "#/parameters/BlobConditionMaxSize"
+ },
+ {
+ "$ref": "#/parameters/BlobConditionAppendPos"
+ },
+ {
+ "$ref": "#/parameters/IfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfMatch"
+ },
+ {
+ "$ref": "#/parameters/IfNoneMatch"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "The block was created.",
+ "headers": {
+ "ETag": {
+ "type": "string",
+ "format": "etag",
+ "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes."
+ },
+ "Last-Modified": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob."
+ },
+ "Content-MD5": {
+ "type": "string",
+ "format": "byte",
+ "description": "If the blob has an MD5 hash and this operation is to read the full blob, this response header is returned so that the client can check for message content integrity."
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ },
+ "x-ms-blob-append-offset": {
+ "x-ms-client-name": "BlobAppendOffset",
+ "type": "string",
+ "description": "This response header is returned only for append operations. It returns the offset at which the block was committed, in bytes."
+ },
+ "x-ms-blob-committed-block-count": {
+ "x-ms-client-name": "BlobCommittedBlockCount",
+ "type": "integer",
+ "description": "The number of committed blocks present in the blob. This header is returned only for append blobs."
+ },
+ "x-ms-request-server-encrypted": {
+ "x-ms-client-name": "IsServerEncrypted",
+ "type": "boolean",
+ "description": "The value of this header is set to true if the contents of the request are successfully encrypted using the specified algorithm, and false otherwise."
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "comp",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "appendblock"
+ ]
+ }
+ ]
+ },
+ "/{containerName}/{blob}?comp=appendblock&fromUrl": {
+ "put": {
+ "tags": [
+ "appendblob"
+ ],
+ "operationId": "AppendBlob_AppendBlockFromUrl",
+ "description": "The Append Block operation commits a new block of data to the end of an existing append blob where the contents are read from a source url. The Append Block operation is permitted only if the blob was created with x-ms-blob-type set to AppendBlob. Append Block is supported only on version 2015-02-21 version or later.",
+ "parameters": [
+ {
+ "$ref": "#/parameters/SourceUrl"
+ },
+ {
+ "$ref": "#/parameters/SourceRange"
+ },
+ {
+ "$ref": "#/parameters/SourceContentMD5"
+ },
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/ContentLength"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdOptional"
+ },
+ {
+ "$ref": "#/parameters/BlobConditionMaxSize"
+ },
+ {
+ "$ref": "#/parameters/BlobConditionAppendPos"
+ },
+ {
+ "$ref": "#/parameters/IfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfMatch"
+ },
+ {
+ "$ref": "#/parameters/IfNoneMatch"
+ },
+ {
+ "$ref": "#/parameters/SourceIfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/SourceIfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/SourceIfMatch"
+ },
+ {
+ "$ref": "#/parameters/SourceIfNoneMatch"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "The block was created.",
+ "headers": {
+ "ETag": {
+ "type": "string",
+ "format": "etag",
+ "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes."
+ },
+ "Last-Modified": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob."
+ },
+ "Content-MD5": {
+ "type": "string",
+ "format": "byte",
+ "description": "If the blob has an MD5 hash and this operation is to read the full blob, this response header is returned so that the client can check for message content integrity."
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ },
+ "x-ms-blob-append-offset": {
+ "x-ms-client-name": "BlobAppendOffset",
+ "type": "string",
+ "description": "This response header is returned only for append operations. It returns the offset at which the block was committed, in bytes."
+ },
+ "x-ms-blob-committed-block-count": {
+ "x-ms-client-name": "BlobCommittedBlockCount",
+ "type": "integer",
+ "description": "The number of committed blocks present in the blob. This header is returned only for append blobs."
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "comp",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "appendblock"
+ ]
+ }
+ ]
+ }
+ },
+ "definitions": {
+ "KeyInfo": {
+ "type": "object",
+ "required": [
+ "Start",
+ "Expiry"
+ ],
+ "description": "Key information",
+ "properties": {
+ "Start": {
+ "description": "The date-time the key is active in ISO 8601 UTC time",
+ "type": "string"
+ },
+ "Expiry": {
+ "description": "The date-time the key expires in ISO 8601 UTC time",
+ "type": "string"
+ }
+ }
+ },
+ "UserDelegationKey": {
+ "type": "object",
+ "required": [
+ "SignedOid",
+ "SignedTid",
+ "SignedStart",
+ "SignedExpiry",
+ "SignedService",
+ "SignedVersion",
+ "Value"
+ ],
+ "description": "A user delegation key",
+ "properties": {
+ "SignedOid": {
+ "description": "The Azure Active Directory object ID in GUID format.",
+ "type": "string"
+ },
+ "SignedTid": {
+ "description": "The Azure Active Directory tenant ID in GUID format",
+ "type": "string"
+ },
+ "SignedStart": {
+ "description": "The date-time the key is active",
+ "type": "string",
+ "format": "date-time"
+ },
+ "SignedExpiry": {
+ "description": "The date-time the key expires",
+ "type": "string",
+ "format": "date-time"
+ },
+ "SignedService": {
+ "description": "Abbreviation of the Azure Storage service that accepts the key",
+ "type": "string"
+ },
+ "SignedVersion": {
+ "description": "The service version that created the key",
+ "type": "string"
+ },
+ "Value": {
+ "description": "The key as a base64 string",
+ "type": "string"
+ }
+ }
+ },
+ "PublicAccessType": {
+ "type": "string",
+ "enum": [
+ "container",
+ "blob"
+ ],
+ "x-ms-enum": {
+ "name": "PublicAccessType",
+ "modelAsString": true
+ }
+ },
+ "CopyStatus": {
+ "type": "string",
+ "enum": [
+ "pending",
+ "success",
+ "aborted",
+ "failed"
+ ],
+ "x-ms-enum": {
+ "name": "CopyStatusType",
+ "modelAsString": false
+ }
+ },
+ "LeaseDuration": {
+ "type": "string",
+ "enum": [
+ "infinite",
+ "fixed"
+ ],
+ "x-ms-enum": {
+ "name": "LeaseDurationType",
+ "modelAsString": false
+ }
+ },
+ "LeaseState": {
+ "type": "string",
+ "enum": [
+ "available",
+ "leased",
+ "expired",
+ "breaking",
+ "broken"
+ ],
+ "x-ms-enum": {
+ "name": "LeaseStateType",
+ "modelAsString": false
+ }
+ },
+ "LeaseStatus": {
+ "type": "string",
+ "enum": [
+ "locked",
+ "unlocked"
+ ],
+ "x-ms-enum": {
+ "name": "LeaseStatusType",
+ "modelAsString": false
+ }
+ },
+ "StorageError": {
+ "type": "object",
+ "properties": {
+ "Code": {
+ "type": "string"
+ },
+ "Message": {
+ "type": "string"
+ }
+ }
+ },
+ "AccessPolicy": {
+ "type": "object",
+ "required": [
+ "Start",
+ "Expiry",
+ "Permission"
+ ],
+ "description": "An Access policy",
+ "properties": {
+ "Start": {
+ "description": "the date-time the policy is active",
+ "type": "string",
+ "format": "date-time"
+ },
+ "Expiry": {
+ "description": "the date-time the policy expires",
+ "type": "string",
+ "format": "date-time"
+ },
+ "Permission": {
+ "description": "the permissions for the acl policy",
+ "type": "string"
+ }
+ }
+ },
+ "AccessTier": {
+ "type": "string",
+ "enum": [
+ "P4",
+ "P6",
+ "P10",
+ "P20",
+ "P30",
+ "P40",
+ "P50",
+ "Hot",
+ "Cool",
+ "Archive"
+ ],
+ "x-ms-enum": {
+ "name": "AccessTier",
+ "modelAsString": true
+ }
+ },
+ "ArchiveStatus": {
+ "type": "string",
+ "enum": [
+ "rehydrate-pending-to-hot",
+ "rehydrate-pending-to-cool"
+ ],
+ "x-ms-enum": {
+ "name": "ArchiveStatus",
+ "modelAsString": true
+ }
+ },
+ "BlobItem": {
+ "xml": {
+ "name": "Blob"
+ },
+ "description": "An Azure Storage blob",
+ "type": "object",
+ "required": [
+ "Name",
+ "Deleted",
+ "Snapshot",
+ "Properties"
+ ],
+ "properties": {
+ "Name": {
+ "type": "string"
+ },
+ "Deleted": {
+ "type": "boolean"
+ },
+ "Snapshot": {
+ "type": "string"
+ },
+ "Properties": {
+ "$ref": "#/definitions/BlobProperties"
+ },
+ "Metadata": {
+ "$ref": "#/definitions/Metadata"
+ }
+ }
+ },
+ "BlobProperties": {
+ "xml": {
+ "name": "Properties"
+ },
+ "description": "Properties of a blob",
+ "type": "object",
+ "required": [
+ "Etag",
+ "Last-Modified"
+ ],
+ "properties": {
+ "Creation-Time": {
+ "type": "string",
+ "format": "date-time-rfc1123"
+ },
+ "Last-Modified": {
+ "type": "string",
+ "format": "date-time-rfc1123"
+ },
+ "Etag": {
+ "type": "string",
+ "format": "etag"
+ },
+ "Content-Length": {
+ "type": "integer",
+ "format": "int64",
+ "description": "Size in bytes"
+ },
+ "Content-Type": {
+ "type": "string"
+ },
+ "Content-Encoding": {
+ "type": "string"
+ },
+ "Content-Language": {
+ "type": "string"
+ },
+ "Content-MD5": {
+ "type": "string",
+ "format": "byte"
+ },
+ "Content-Disposition": {
+ "type": "string"
+ },
+ "Cache-Control": {
+ "type": "string"
+ },
+ "x-ms-blob-sequence-number": {
+ "x-ms-client-name": "blobSequenceNumber",
+ "type": "integer",
+ "format": "int64"
+ },
+ "BlobType": {
+ "type": "string",
+ "enum": [
+ "BlockBlob",
+ "PageBlob",
+ "AppendBlob"
+ ],
+ "x-ms-enum": {
+ "name": "BlobType",
+ "modelAsString": false
+ }
+ },
+ "LeaseStatus": {
+ "$ref": "#/definitions/LeaseStatus"
+ },
+ "LeaseState": {
+ "$ref": "#/definitions/LeaseState"
+ },
+ "LeaseDuration": {
+ "$ref": "#/definitions/LeaseDuration"
+ },
+ "CopyId": {
+ "type": "string"
+ },
+ "CopyStatus": {
+ "$ref": "#/definitions/CopyStatus"
+ },
+ "CopySource": {
+ "type": "string"
+ },
+ "CopyProgress": {
+ "type": "string"
+ },
+ "CopyCompletionTime": {
+ "type": "string",
+ "format": "date-time-rfc1123"
+ },
+ "CopyStatusDescription": {
+ "type": "string"
+ },
+ "ServerEncrypted": {
+ "type": "boolean"
+ },
+ "IncrementalCopy": {
+ "type": "boolean"
+ },
+ "DestinationSnapshot": {
+ "type": "string"
+ },
+ "DeletedTime": {
+ "type": "string",
+ "format": "date-time-rfc1123"
+ },
+ "RemainingRetentionDays": {
+ "type": "integer"
+ },
+ "AccessTier": {
+ "$ref": "#/definitions/AccessTier"
+ },
+ "AccessTierInferred": {
+ "type": "boolean"
+ },
+ "ArchiveStatus": {
+ "$ref": "#/definitions/ArchiveStatus"
+ },
+ "AccessTierChangeTime": {
+ "type": "string",
+ "format": "date-time-rfc1123"
+ }
+ }
+ },
+ "ListBlobsFlatSegmentResponse": {
+ "xml": {
+ "name": "EnumerationResults"
+ },
+ "description": "An enumeration of blobs",
+ "type": "object",
+ "required": [
+ "ServiceEndpoint",
+ "ContainerName",
+ "Segment"
+ ],
+ "properties": {
+ "ServiceEndpoint": {
+ "type": "string",
+ "xml": {
+ "attribute": true
+ }
+ },
+ "ContainerName": {
+ "type": "string",
+ "xml": {
+ "attribute": true
+ }
+ },
+ "Prefix": {
+ "type": "string"
+ },
+ "Marker": {
+ "type": "string"
+ },
+ "MaxResults": {
+ "type": "integer"
+ },
+ "Delimiter": {
+ "type": "string"
+ },
+ "Segment": {
+ "$ref": "#/definitions/BlobFlatListSegment"
+ },
+ "NextMarker": {
+ "type": "string"
+ }
+ }
+ },
+ "ListBlobsHierarchySegmentResponse": {
+ "xml": {
+ "name": "EnumerationResults"
+ },
+ "description": "An enumeration of blobs",
+ "type": "object",
+ "required": [
+ "ServiceEndpoint",
+ "ContainerName",
+ "Segment"
+ ],
+ "properties": {
+ "ServiceEndpoint": {
+ "type": "string",
+ "xml": {
+ "attribute": true
+ }
+ },
+ "ContainerName": {
+ "type": "string",
+ "xml": {
+ "attribute": true
+ }
+ },
+ "Prefix": {
+ "type": "string"
+ },
+ "Marker": {
+ "type": "string"
+ },
+ "MaxResults": {
+ "type": "integer"
+ },
+ "Delimiter": {
+ "type": "string"
+ },
+ "Segment": {
+ "$ref": "#/definitions/BlobHierarchyListSegment"
+ },
+ "NextMarker": {
+ "type": "string"
+ }
+ }
+ },
+ "BlobFlatListSegment": {
+ "xml": {
+ "name": "Blobs"
+ },
+ "required": [
+ "BlobItems"
+ ],
+ "type": "object",
+ "properties": {
+ "BlobItems": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/BlobItem"
+ }
+ }
+ }
+ },
+ "BlobHierarchyListSegment": {
+ "xml": {
+ "name": "Blobs"
+ },
+ "type": "object",
+ "required": [
+ "BlobItems"
+ ],
+ "properties": {
+ "BlobPrefixes": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/BlobPrefix"
+ }
+ },
+ "BlobItems": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/BlobItem"
+ }
+ }
+ }
+ },
+ "BlobPrefix": {
+ "type": "object",
+ "required": [
+ "Name"
+ ],
+ "properties": {
+ "Name": {
+ "type": "string"
+ }
+ }
+ },
+ "Block": {
+ "type": "object",
+ "required": [
+ "Name",
+ "Size"
+ ],
+ "description": "Represents a single block in a block blob. It describes the block's ID and size.",
+ "properties": {
+ "Name": {
+ "description": "The base64 encoded block ID.",
+ "type": "string"
+ },
+ "Size": {
+ "description": "The block size in bytes.",
+ "type": "integer"
+ }
+ }
+ },
+ "BlockList": {
+ "type": "object",
+ "properties": {
+ "CommittedBlocks": {
+ "xml": {
+ "wrapped": true
+ },
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Block"
+ }
+ },
+ "UncommittedBlocks": {
+ "xml": {
+ "wrapped": true
+ },
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Block"
+ }
+ }
+ }
+ },
+ "BlockLookupList": {
+ "type": "object",
+ "properties": {
+ "Committed": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "xml": {
+ "name": "Committed"
+ }
+ }
+ },
+ "Uncommitted": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "xml": {
+ "name": "Uncommitted"
+ }
+ }
+ },
+ "Latest": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "xml": {
+ "name": "Latest"
+ }
+ }
+ }
+ },
+ "xml": {
+ "name": "BlockList"
+ }
+ },
+ "ContainerItem": {
+ "xml": {
+ "name": "Container"
+ },
+ "type": "object",
+ "required": [
+ "Name",
+ "Properties"
+ ],
+ "description": "An Azure Storage container",
+ "properties": {
+ "Name": {
+ "type": "string"
+ },
+ "Properties": {
+ "$ref": "#/definitions/ContainerProperties"
+ },
+ "Metadata": {
+ "$ref": "#/definitions/Metadata"
+ }
+ }
+ },
+ "ContainerProperties": {
+ "type": "object",
+ "required": [
+ "Last-Modified",
+ "Etag"
+ ],
+ "description": "Properties of a container",
+ "properties": {
+ "Last-Modified": {
+ "type": "string",
+ "format": "date-time-rfc1123"
+ },
+ "Etag": {
+ "type": "string",
+ "format": "etag"
+ },
+ "LeaseStatus": {
+ "$ref": "#/definitions/LeaseStatus"
+ },
+ "LeaseState": {
+ "$ref": "#/definitions/LeaseState"
+ },
+ "LeaseDuration": {
+ "$ref": "#/definitions/LeaseDuration"
+ },
+ "PublicAccess": {
+ "$ref": "#/definitions/PublicAccessType"
+ },
+ "HasImmutabilityPolicy": {
+ "type": "boolean"
+ },
+ "HasLegalHold": {
+ "type": "boolean"
+ }
+ }
+ },
+ "ListContainersSegmentResponse": {
+ "xml": {
+ "name": "EnumerationResults"
+ },
+ "description": "An enumeration of containers",
+ "type": "object",
+ "required": [
+ "ServiceEndpoint",
+ "ContainerItems"
+ ],
+ "properties": {
+ "ServiceEndpoint": {
+ "type": "string",
+ "xml": {
+ "attribute": true
+ }
+ },
+ "Prefix": {
+ "type": "string"
+ },
+ "Marker": {
+ "type": "string"
+ },
+ "MaxResults": {
+ "type": "integer"
+ },
+ "ContainerItems": {
+ "xml": {
+ "wrapped": true,
+ "name": "Containers"
+ },
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ContainerItem"
+ }
+ },
+ "NextMarker": {
+ "type": "string"
+ }
+ }
+ },
+ "CorsRule": {
+ "description": "CORS is an HTTP feature that enables a web application running under one domain to access resources in another domain. Web browsers implement a security restriction known as same-origin policy that prevents a web page from calling APIs in a different domain; CORS provides a secure way to allow one domain (the origin domain) to call APIs in another domain",
+ "type": "object",
+ "required": [
+ "AllowedOrigins",
+ "AllowedMethods",
+ "AllowedHeaders",
+ "ExposedHeaders",
+ "MaxAgeInSeconds"
+ ],
+ "properties": {
+ "AllowedOrigins": {
+ "description": "The origin domains that are permitted to make a request against the storage service via CORS. The origin domain is the domain from which the request originates. Note that the origin must be an exact case-sensitive match with the origin that the user age sends to the service. You can also use the wildcard character '*' to allow all origin domains to make requests via CORS.",
+ "type": "string"
+ },
+ "AllowedMethods": {
+ "description": "The methods (HTTP request verbs) that the origin domain may use for a CORS request. (comma separated)",
+ "type": "string"
+ },
+ "AllowedHeaders": {
+ "description": "the request headers that the origin domain may specify on the CORS request.",
+ "type": "string"
+ },
+ "ExposedHeaders": {
+ "description": "The response headers that may be sent in the response to the CORS request and exposed by the browser to the request issuer",
+ "type": "string"
+ },
+ "MaxAgeInSeconds": {
+ "description": "The maximum amount time that a browser should cache the preflight OPTIONS request.",
+ "type": "integer",
+ "minimum": 0
+ }
+ }
+ },
+ "ErrorCode": {
+ "description": "Error codes returned by the service",
+ "type": "string",
+ "enum": [
+ "AccountAlreadyExists",
+ "AccountBeingCreated",
+ "AccountIsDisabled",
+ "AuthenticationFailed",
+ "AuthorizationFailure",
+ "ConditionHeadersNotSupported",
+ "ConditionNotMet",
+ "EmptyMetadataKey",
+ "InsufficientAccountPermissions",
+ "InternalError",
+ "InvalidAuthenticationInfo",
+ "InvalidHeaderValue",
+ "InvalidHttpVerb",
+ "InvalidInput",
+ "InvalidMd5",
+ "InvalidMetadata",
+ "InvalidQueryParameterValue",
+ "InvalidRange",
+ "InvalidResourceName",
+ "InvalidUri",
+ "InvalidXmlDocument",
+ "InvalidXmlNodeValue",
+ "Md5Mismatch",
+ "MetadataTooLarge",
+ "MissingContentLengthHeader",
+ "MissingRequiredQueryParameter",
+ "MissingRequiredHeader",
+ "MissingRequiredXmlNode",
+ "MultipleConditionHeadersNotSupported",
+ "OperationTimedOut",
+ "OutOfRangeInput",
+ "OutOfRangeQueryParameterValue",
+ "RequestBodyTooLarge",
+ "ResourceTypeMismatch",
+ "RequestUrlFailedToParse",
+ "ResourceAlreadyExists",
+ "ResourceNotFound",
+ "ServerBusy",
+ "UnsupportedHeader",
+ "UnsupportedXmlNode",
+ "UnsupportedQueryParameter",
+ "UnsupportedHttpVerb",
+ "AppendPositionConditionNotMet",
+ "BlobAlreadyExists",
+ "BlobNotFound",
+ "BlobOverwritten",
+ "BlobTierInadequateForContentLength",
+ "BlockCountExceedsLimit",
+ "BlockListTooLong",
+ "CannotChangeToLowerTier",
+ "CannotVerifyCopySource",
+ "ContainerAlreadyExists",
+ "ContainerBeingDeleted",
+ "ContainerDisabled",
+ "ContainerNotFound",
+ "ContentLengthLargerThanTierLimit",
+ "CopyAcrossAccountsNotSupported",
+ "CopyIdMismatch",
+ "FeatureVersionMismatch",
+ "IncrementalCopyBlobMismatch",
+ "IncrementalCopyOfEralierVersionSnapshotNotAllowed",
+ "IncrementalCopySourceMustBeSnapshot",
+ "InfiniteLeaseDurationRequired",
+ "InvalidBlobOrBlock",
+ "InvalidBlobTier",
+ "InvalidBlobType",
+ "InvalidBlockId",
+ "InvalidBlockList",
+ "InvalidOperation",
+ "InvalidPageRange",
+ "InvalidSourceBlobType",
+ "InvalidSourceBlobUrl",
+ "InvalidVersionForPageBlobOperation",
+ "LeaseAlreadyPresent",
+ "LeaseAlreadyBroken",
+ "LeaseIdMismatchWithBlobOperation",
+ "LeaseIdMismatchWithContainerOperation",
+ "LeaseIdMismatchWithLeaseOperation",
+ "LeaseIdMissing",
+ "LeaseIsBreakingAndCannotBeAcquired",
+ "LeaseIsBreakingAndCannotBeChanged",
+ "LeaseIsBrokenAndCannotBeRenewed",
+ "LeaseLost",
+ "LeaseNotPresentWithBlobOperation",
+ "LeaseNotPresentWithContainerOperation",
+ "LeaseNotPresentWithLeaseOperation",
+ "MaxBlobSizeConditionNotMet",
+ "NoPendingCopyOperation",
+ "OperationNotAllowedOnIncrementalCopyBlob",
+ "PendingCopyOperation",
+ "PreviousSnapshotCannotBeNewer",
+ "PreviousSnapshotNotFound",
+ "PreviousSnapshotOperationNotSupported",
+ "SequenceNumberConditionNotMet",
+ "SequenceNumberIncrementTooLarge",
+ "SnapshotCountExceeded",
+ "SnaphotOperationRateExceeded",
+ "SnapshotsPresent",
+ "SourceConditionNotMet",
+ "SystemInUse",
+ "TargetConditionNotMet",
+ "UnauthorizedBlobOverwrite",
+ "BlobBeingRehydrated",
+ "BlobArchived",
+ "BlobNotArchived"
+ ],
+ "x-ms-enum": {
+ "name": "StorageErrorCode",
+ "modelAsString": true
+ }
+ },
+ "GeoReplication": {
+ "description": "Geo-Replication information for the Secondary Storage Service",
+ "type": "object",
+ "required": [
+ "Status",
+ "LastSyncTime"
+ ],
+ "properties": {
+ "Status": {
+ "description": "The status of the secondary location",
+ "type": "string",
+ "enum": [
+ "live",
+ "bootstrap",
+ "unavailable"
+ ],
+ "x-ms-enum": {
+ "name": "GeoReplicationStatusType",
+ "modelAsString": true
+ }
+ },
+ "LastSyncTime": {
+ "description": "A GMT date/time value, to the second. All primary writes preceding this value are guaranteed to be available for read operations at the secondary. Primary writes after this point in time may or may not be available for reads.",
+ "type": "string",
+ "format": "date-time-rfc1123"
+ }
+ }
+ },
+ "Logging": {
+ "description": "Azure Analytics Logging settings.",
+ "type": "object",
+ "required": [
+ "Version",
+ "Delete",
+ "Read",
+ "Write",
+ "RetentionPolicy"
+ ],
+ "properties": {
+ "Version": {
+ "description": "The version of Storage Analytics to configure.",
+ "type": "string"
+ },
+ "Delete": {
+ "description": "Indicates whether all delete requests should be logged.",
+ "type": "boolean"
+ },
+ "Read": {
+ "description": "Indicates whether all read requests should be logged.",
+ "type": "boolean"
+ },
+ "Write": {
+ "description": "Indicates whether all write requests should be logged.",
+ "type": "boolean"
+ },
+ "RetentionPolicy": {
+ "$ref": "#/definitions/RetentionPolicy"
+ }
+ }
+ },
+ "Metadata": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "Metrics": {
+ "description": "a summary of request statistics grouped by API in hour or minute aggregates for blobs",
+ "required": [
+ "Enabled"
+ ],
+ "properties": {
+ "Version": {
+ "description": "The version of Storage Analytics to configure.",
+ "type": "string"
+ },
+ "Enabled": {
+ "description": "Indicates whether metrics are enabled for the Blob service.",
+ "type": "boolean"
+ },
+ "IncludeAPIs": {
+ "description": "Indicates whether metrics should generate summary statistics for called API operations.",
+ "type": "boolean"
+ },
+ "RetentionPolicy": {
+ "$ref": "#/definitions/RetentionPolicy"
+ }
+ }
+ },
+ "PageList": {
+ "description": "the list of pages",
+ "type": "object",
+ "properties": {
+ "PageRange": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/PageRange"
+ }
+ },
+ "ClearRange": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ClearRange"
+ }
+ }
+ }
+ },
+ "PageRange": {
+ "type": "object",
+ "required": [
+ "Start",
+ "End"
+ ],
+ "properties": {
+ "Start": {
+ "type": "integer",
+ "format": "int64",
+ "xml": {
+ "name": "Start"
+ }
+ },
+ "End": {
+ "type": "integer",
+ "format": "int64",
+ "xml": {
+ "name": "End"
+ }
+ }
+ },
+ "xml": {
+ "name": "PageRange"
+ }
+ },
+ "ClearRange": {
+ "type": "object",
+ "required": [
+ "Start",
+ "End"
+ ],
+ "properties": {
+ "Start": {
+ "type": "integer",
+ "format": "int64",
+ "xml": {
+ "name": "Start"
+ }
+ },
+ "End": {
+ "type": "integer",
+ "format": "int64",
+ "xml": {
+ "name": "End"
+ }
+ }
+ },
+ "xml": {
+ "name": "ClearRange"
+ }
+ },
+ "RetentionPolicy": {
+ "description": "the retention policy which determines how long the associated data should persist",
+ "type": "object",
+ "required": [
+ "Enabled"
+ ],
+ "properties": {
+ "Enabled": {
+ "description": "Indicates whether a retention policy is enabled for the storage service",
+ "type": "boolean"
+ },
+ "Days": {
+ "description": "Indicates the number of days that metrics or logging or soft-deleted data should be retained. All data older than this value will be deleted",
+ "type": "integer",
+ "minimum": 1
+ }
+ }
+ },
+ "SignedIdentifier": {
+ "xml": {
+ "name": "SignedIdentifier"
+ },
+ "description": "signed identifier",
+ "type": "object",
+ "required": [
+ "Id",
+ "AccessPolicy"
+ ],
+ "properties": {
+ "Id": {
+ "type": "string",
+ "description": "a unique id"
+ },
+ "AccessPolicy": {
+ "$ref": "#/definitions/AccessPolicy"
+ }
+ }
+ },
+ "SignedIdentifiers": {
+ "description": "a collection of signed identifiers",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/SignedIdentifier"
+ },
+ "xml": {
+ "wrapped": true,
+ "name": "SignedIdentifiers"
+ }
+ },
+ "StaticWebsite": {
+ "description": "The properties that enable an account to host a static website",
+ "type": "object",
+ "required": [
+ "Enabled"
+ ],
+ "properties": {
+ "Enabled": {
+ "description": "Indicates whether this account is hosting a static website",
+ "type": "boolean"
+ },
+ "IndexDocument": {
+ "description": "The default name of the index page under each directory",
+ "type": "string"
+ },
+ "ErrorDocument404Path": {
+ "description": "The absolute path of the custom 404 page",
+ "type": "string"
+ }
+ }
+ },
+ "StorageServiceProperties": {
+ "description": "Storage Service Properties.",
+ "type": "object",
+ "properties": {
+ "Logging": {
+ "$ref": "#/definitions/Logging"
+ },
+ "HourMetrics": {
+ "$ref": "#/definitions/Metrics"
+ },
+ "MinuteMetrics": {
+ "$ref": "#/definitions/Metrics"
+ },
+ "Cors": {
+ "description": "The set of CORS rules.",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/CorsRule"
+ },
+ "xml": {
+ "wrapped": true
+ }
+ },
+ "DefaultServiceVersion": {
+ "description": "The default version to use for requests to the Blob service if an incoming request's version is not specified. Possible values include version 2008-10-27 and all more recent versions",
+ "type": "string"
+ },
+ "DeleteRetentionPolicy": {
+ "$ref": "#/definitions/RetentionPolicy"
+ },
+ "StaticWebsite": {
+ "$ref": "#/definitions/StaticWebsite"
+ }
+ }
+ },
+ "StorageServiceStats": {
+ "description": "Stats for the storage service.",
+ "type": "object",
+ "properties": {
+ "GeoReplication": {
+ "$ref": "#/definitions/GeoReplication"
+ }
+ }
+ }
+ },
+ "parameters": {
+ "Url": {
+ "name": "url",
+ "description": "The URL of the service account, container, or blob that is the targe of the desired operation.",
+ "required": true,
+ "type": "string",
+ "in": "path",
+ "x-ms-skip-url-encoding": true
+ },
+ "ApiVersionParameter": {
+ "name": "x-ms-version",
+ "x-ms-client-name": "version",
+ "in": "header",
+ "required": true,
+ "type": "string",
+ "description": "Specifies the version of the operation to use for this request.",
+ "enum": [
+ "2018-11-09"
+ ]
+ },
+ "Blob": {
+ "name": "blob",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "^[a-zA-Z0-9]+(?:/[a-zA-Z0-9]+)*(?:\\.[a-zA-Z0-9]+){0,1}$",
+ "minLength": 1,
+ "maxLength": 1024,
+ "x-ms-parameter-location": "method",
+ "description": "The blob name."
+ },
+ "BlobCacheControl": {
+ "name": "x-ms-blob-cache-control",
+ "x-ms-client-name": "blobCacheControl",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "x-ms-parameter-location": "method",
+ "x-ms-parameter-grouping": {
+ "name": "blob-HTTP-headers"
+ },
+ "description": "Optional. Sets the blob's cache control. If specified, this property is stored with the blob and returned with a read request."
+ },
+ "BlobConditionAppendPos": {
+ "name": "x-ms-blob-condition-appendpos",
+ "x-ms-client-name": "appendPosition",
+ "in": "header",
+ "required": false,
+ "type": "integer",
+ "format": "int64",
+ "x-ms-parameter-location": "method",
+ "x-ms-parameter-grouping": {
+ "name": "append-position-access-conditions"
+ },
+ "description": "Optional conditional header, used only for the Append Block operation. A number indicating the byte offset to compare. Append Block will succeed only if the append position is equal to this number. If it is not, the request will fail with the AppendPositionConditionNotMet error (HTTP status code 412 - Precondition Failed)."
+ },
+ "BlobConditionMaxSize": {
+ "name": "x-ms-blob-condition-maxsize",
+ "x-ms-client-name": "maxSize",
+ "in": "header",
+ "required": false,
+ "type": "integer",
+ "format": "int64",
+ "x-ms-parameter-location": "method",
+ "x-ms-parameter-grouping": {
+ "name": "append-position-access-conditions"
+ },
+ "description": "Optional conditional header. The max length in bytes permitted for the append blob. If the Append Block operation would cause the blob to exceed that limit or if the blob size is already greater than the value specified in this header, the request will fail with MaxBlobSizeConditionNotMet error (HTTP status code 412 - Precondition Failed)."
+ },
+ "BlobPublicAccess": {
+ "name": "x-ms-blob-public-access",
+ "x-ms-client-name": "access",
+ "in": "header",
+ "required": false,
+ "x-ms-parameter-location": "method",
+ "description": "Specifies whether data in the container may be accessed publicly and the level of access",
+ "type": "string",
+ "enum": [
+ "container",
+ "blob"
+ ],
+ "x-ms-enum": {
+ "name": "PublicAccessType",
+ "modelAsString": true
+ }
+ },
+ "AccessTier": {
+ "name": "x-ms-access-tier",
+ "x-ms-client-name": "tier",
+ "in": "header",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "P4",
+ "P6",
+ "P10",
+ "P20",
+ "P30",
+ "P40",
+ "P50",
+ "Hot",
+ "Cool",
+ "Archive"
+ ],
+ "x-ms-enum": {
+ "name": "AccessTier",
+ "modelAsString": true
+ },
+ "x-ms-parameter-location": "method",
+ "description": "Indicates the tier to be set on the blob."
+ },
+ "BlobContentDisposition": {
+ "name": "x-ms-blob-content-disposition",
+ "x-ms-client-name": "blobContentDisposition",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "x-ms-parameter-location": "method",
+ "x-ms-parameter-grouping": {
+ "name": "blob-HTTP-headers"
+ },
+ "description": "Optional. Sets the blob's Content-Disposition header."
+ },
+ "BlobContentEncoding": {
+ "name": "x-ms-blob-content-encoding",
+ "x-ms-client-name": "blobContentEncoding",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "x-ms-parameter-location": "method",
+ "x-ms-parameter-grouping": {
+ "name": "blob-HTTP-headers"
+ },
+ "description": "Optional. Sets the blob's content encoding. If specified, this property is stored with the blob and returned with a read request."
+ },
+ "BlobContentLanguage": {
+ "name": "x-ms-blob-content-language",
+ "x-ms-client-name": "blobContentLanguage",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "x-ms-parameter-location": "method",
+ "x-ms-parameter-grouping": {
+ "name": "blob-HTTP-headers"
+ },
+ "description": "Optional. Set the blob's content language. If specified, this property is stored with the blob and returned with a read request."
+ },
+ "BlobContentLengthOptional": {
+ "name": "x-ms-blob-content-length",
+ "x-ms-client-name": "blobContentLength",
+ "in": "header",
+ "required": false,
+ "type": "integer",
+ "format": "int64",
+ "x-ms-parameter-location": "method",
+ "description": "This header specifies the maximum size for the page blob, up to 1 TB. The page blob size must be aligned to a 512-byte boundary."
+ },
+ "BlobContentLengthRequired": {
+ "name": "x-ms-blob-content-length",
+ "x-ms-client-name": "blobContentLength",
+ "in": "header",
+ "required": true,
+ "type": "integer",
+ "format": "int64",
+ "x-ms-parameter-location": "method",
+ "description": "This header specifies the maximum size for the page blob, up to 1 TB. The page blob size must be aligned to a 512-byte boundary."
+ },
+ "BlobContentMD5": {
+ "name": "x-ms-blob-content-md5",
+ "x-ms-client-name": "blobContentMD5",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "format": "byte",
+ "x-ms-parameter-location": "method",
+ "x-ms-parameter-grouping": {
+ "name": "blob-HTTP-headers"
+ },
+ "description": "Optional. An MD5 hash of the blob content. Note that this hash is not validated, as the hashes for the individual blocks were validated when each was uploaded."
+ },
+ "BlobContentType": {
+ "name": "x-ms-blob-content-type",
+ "x-ms-client-name": "blobContentType",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "x-ms-parameter-location": "method",
+ "x-ms-parameter-grouping": {
+ "name": "blob-HTTP-headers"
+ },
+ "description": "Optional. Sets the blob's content type. If specified, this property is stored with the blob and returned with a read request."
+ },
+ "BlobSequenceNumber": {
+ "name": "x-ms-blob-sequence-number",
+ "x-ms-client-name": "blobSequenceNumber",
+ "in": "header",
+ "required": false,
+ "type": "integer",
+ "format": "int64",
+ "default": 0,
+ "x-ms-parameter-location": "method",
+ "description": "Set for page blobs only. The sequence number is a user-controlled value that you can use to track requests. The value of the sequence number must be between 0 and 2^63 - 1."
+ },
+ "BlockId": {
+ "name": "blockid",
+ "x-ms-client-name": "blockId",
+ "in": "query",
+ "type": "string",
+ "required": true,
+ "x-ms-parameter-location": "method",
+ "description": "A valid Base64 string value that identifies the block. Prior to encoding, the string must be less than or equal to 64 bytes in size. For a given blob, the length of the value specified for the blockid parameter must be the same size for each block."
+ },
+ "BlockListType": {
+ "name": "blocklisttype",
+ "x-ms-client-name": "listType",
+ "in": "query",
+ "required": true,
+ "default": "committed",
+ "x-ms-parameter-location": "method",
+ "description": "Specifies whether to return the list of committed blocks, the list of uncommitted blocks, or both lists together.",
+ "type": "string",
+ "enum": [
+ "committed",
+ "uncommitted",
+ "all"
+ ],
+ "x-ms-enum": {
+ "name": "BlockListType",
+ "modelAsString": false
+ }
+ },
+ "Body": {
+ "name": "body",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "type": "object",
+ "format": "file"
+ },
+ "x-ms-parameter-location": "method",
+ "description": "Initial data"
+ },
+ "ContainerAcl": {
+ "name": "containerAcl",
+ "in": "body",
+ "schema": {
+ "$ref": "#/definitions/SignedIdentifiers"
+ },
+ "x-ms-parameter-location": "method",
+ "description": "the acls for the container"
+ },
+ "CopyId": {
+ "name": "copyid",
+ "x-ms-client-name": "copyId",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "x-ms-parameter-location": "method",
+ "description": "The copy identifier provided in the x-ms-copy-id header of the original Copy Blob operation."
+ },
+ "ClientRequestId": {
+ "name": "x-ms-client-request-id",
+ "x-ms-client-name": "requestId",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "x-ms-parameter-location": "method",
+ "description": "Provides a client-generated, opaque value with a 1 KB character limit that is recorded in the analytics logs when storage analytics logging is enabled."
+ },
+ "ContainerName": {
+ "name": "containerName",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "x-ms-parameter-location": "method",
+ "description": "The container name."
+ },
+
+ "ContentLength": {
+ "name": "Content-Length",
+ "in": "header",
+ "required": true,
+ "type": "integer",
+ "format": "int64",
+ "x-ms-parameter-location": "method",
+ "description": "The length of the request."
+ },
+ "ContentMD5": {
+ "name": "Content-MD5",
+ "x-ms-client-name": "transactionalContentMD5",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "format": "byte",
+ "x-ms-parameter-location": "method",
+ "description": "Specify the transactional md5 for the body, to be validated by the service."
+ },
+ "CopySource": {
+ "name": "x-ms-copy-source",
+ "x-ms-client-name": "copySource",
+ "in": "header",
+ "required": true,
+ "type": "string",
+ "format": "url",
+ "x-ms-parameter-location": "method",
+ "description": "Specifies the name of the source page blob snapshot. This value is a URL of up to 2 KB in length that specifies a page blob snapshot. The value should be URL-encoded as it would appear in a request URI. The source blob must either be public or must be authenticated via a shared access signature."
+ },
+ "DeleteSnapshots": {
+ "name": "x-ms-delete-snapshots",
+ "x-ms-client-name": "deleteSnapshots",
+ "description": "Required if the blob has associated snapshots. Specify one of the following two options: include: Delete the base blob and all of its snapshots. only: Delete only the blob's snapshots and not the blob itself",
+ "x-ms-parameter-location": "method",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "enum": [
+ "include",
+ "only"
+ ],
+ "x-ms-enum": {
+ "name": "DeleteSnapshotsOptionType",
+ "modelAsString": false
+ }
+ },
+ "Delimiter": {
+ "name": "delimiter",
+ "description": "When the request includes this parameter, the operation returns a BlobPrefix element in the response body that acts as a placeholder for all blobs whose names begin with the same substring up to the appearance of the delimiter character. The delimiter may be a single character or a string.",
+ "type": "string",
+ "x-ms-parameter-location": "method",
+ "in": "query",
+ "required": true
+ },
+ "GetRangeContentMD5": {
+ "name": "x-ms-range-get-content-md5",
+ "x-ms-client-name": "rangeGetContentMD5",
+ "in": "header",
+ "required": false,
+ "type": "boolean",
+ "x-ms-parameter-location": "method",
+ "description": "When set to true and specified together with the Range, the service returns the MD5 hash for the range, as long as the range is less than or equal to 4 MB in size."
+ },
+ "IfMatch": {
+ "name": "If-Match",
+ "x-ms-client-name": "ifMatch",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "format": "etag",
+ "x-ms-parameter-location": "method",
+ "x-ms-parameter-grouping": {
+ "name": "modified-access-conditions"
+ },
+ "description": "Specify an ETag value to operate only on blobs with a matching value."
+ },
+ "IfModifiedSince": {
+ "name": "If-Modified-Since",
+ "x-ms-client-name": "ifModifiedSince",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "x-ms-parameter-location": "method",
+ "x-ms-parameter-grouping": {
+ "name": "modified-access-conditions"
+ },
+ "description": "Specify this header value to operate only on a blob if it has been modified since the specified date/time."
+ },
+ "IfNoneMatch": {
+ "name": "If-None-Match",
+ "x-ms-client-name": "ifNoneMatch",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "format": "etag",
+ "x-ms-parameter-location": "method",
+ "x-ms-parameter-grouping": {
+ "name": "modified-access-conditions"
+ },
+ "description": "Specify an ETag value to operate only on blobs without a matching value."
+ },
+ "IfUnmodifiedSince": {
+ "name": "If-Unmodified-Since",
+ "x-ms-client-name": "ifUnmodifiedSince",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "x-ms-parameter-location": "method",
+ "x-ms-parameter-grouping": {
+ "name": "modified-access-conditions"
+ },
+ "description": "Specify this header value to operate only on a blob if it has not been modified since the specified date/time."
+ },
+ "IfSequenceNumberEqualTo": {
+ "name": "x-ms-if-sequence-number-eq",
+ "x-ms-client-name": "ifSequenceNumberEqualTo",
+ "in": "header",
+ "required": false,
+ "type": "integer",
+ "format": "int64",
+ "x-ms-parameter-location": "method",
+ "x-ms-parameter-grouping": {
+ "name": "sequence-number-access-conditions"
+ },
+ "description": "Specify this header value to operate only on a blob if it has the specified sequence number."
+ },
+ "IfSequenceNumberLessThan": {
+ "name": "x-ms-if-sequence-number-lt",
+ "x-ms-client-name": "ifSequenceNumberLessThan",
+ "in": "header",
+ "required": false,
+ "type": "integer",
+ "format": "int64",
+ "x-ms-parameter-location": "method",
+ "x-ms-parameter-grouping": {
+ "name": "sequence-number-access-conditions"
+ },
+ "description": "Specify this header value to operate only on a blob if it has a sequence number less than the specified."
+ },
+ "IfSequenceNumberLessThanOrEqualTo": {
+ "name": "x-ms-if-sequence-number-le",
+ "x-ms-client-name": "ifSequenceNumberLessThanOrEqualTo",
+ "in": "header",
+ "required": false,
+ "type": "integer",
+ "format": "int64",
+ "x-ms-parameter-location": "method",
+ "x-ms-parameter-grouping": {
+ "name": "sequence-number-access-conditions"
+ },
+ "description": "Specify this header value to operate only on a blob if it has a sequence number less than or equal to the specified."
+ },
+ "KeyInfo": {
+ "name": "KeyInfo",
+ "in": "body",
+ "x-ms-parameter-location": "method",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/KeyInfo"
+ }
+ },
+ "ListBlobsInclude": {
+ "name": "include",
+ "in": "query",
+ "required": false,
+ "type": "array",
+ "collectionFormat": "csv",
+ "items": {
+ "type": "string",
+ "enum": [
+ "copy",
+ "deleted",
+ "metadata",
+ "snapshots",
+ "uncommittedblobs"
+ ],
+ "x-ms-enum": {
+ "name": "ListBlobsIncludeItem",
+ "modelAsString": false
+ }
+ },
+ "x-ms-parameter-location": "method",
+ "description": "Include this parameter to specify one or more datasets to include in the response."
+ },
+ "ListContainersInclude": {
+ "name": "include",
+ "in": "query",
+ "required": false,
+ "type": "string",
+ "enum": [
+ "metadata"
+ ],
+ "x-ms-enum": {
+ "name": "ListContainersIncludeType",
+ "modelAsString": false
+ },
+ "x-ms-parameter-location": "method",
+ "description": "Include this parameter to specify that the container's metadata be returned as part of the response body."
+ },
+ "LeaseBreakPeriod": {
+ "name": "x-ms-lease-break-period",
+ "x-ms-client-name": "breakPeriod",
+ "in": "header",
+ "required": false,
+ "type": "integer",
+ "x-ms-parameter-location": "method",
+ "description": "For a break operation, proposed duration the lease should continue before it is broken, in seconds, between 0 and 60. This break period is only used if it is shorter than the time remaining on the lease. If longer, the time remaining on the lease is used. A new lease will not be available before the break period has expired, but the lease may be held for longer than the break period. If this header does not appear with a break operation, a fixed-duration lease breaks after the remaining lease period elapses, and an infinite lease breaks immediately."
+ },
+ "LeaseDuration": {
+ "name": "x-ms-lease-duration",
+ "x-ms-client-name": "duration",
+ "in": "header",
+ "required": false,
+ "type": "integer",
+ "x-ms-parameter-location": "method",
+ "description": "Specifies the duration of the lease, in seconds, or negative one (-1) for a lease that never expires. A non-infinite lease can be between 15 and 60 seconds. A lease duration cannot be changed using renew or change."
+ },
+ "LeaseIdOptional": {
+ "name": "x-ms-lease-id",
+ "x-ms-client-name": "leaseId",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "x-ms-parameter-location": "method",
+ "x-ms-parameter-grouping": {
+ "name": "lease-access-conditions"
+ },
+ "description": "If specified, the operation only succeeds if the resource's lease is active and matches this ID."
+ },
+ "LeaseIdRequired": {
+ "name": "x-ms-lease-id",
+ "x-ms-client-name": "leaseId",
+ "in": "header",
+ "required": true,
+ "type": "string",
+ "x-ms-parameter-location": "method",
+ "description": "Specifies the current lease ID on the resource."
+ },
+ "Marker": {
+ "name": "marker",
+ "in": "query",
+ "required": false,
+ "type": "string",
+ "description": "A string value that identifies the portion of the list of containers to be returned with the next listing operation. The operation returns the NextMarker value within the response body if the listing operation did not return all containers remaining to be listed with the current page. The NextMarker value can be used as the value for the marker parameter in a subsequent call to request the next page of list items. The marker value is opaque to the client.",
+ "x-ms-parameter-location": "method"
+ },
+ "MaxResults": {
+ "name": "maxresults",
+ "in": "query",
+ "required": false,
+ "type": "integer",
+ "minimum": 1,
+ "x-ms-parameter-location": "method",
+ "description": "Specifies the maximum number of containers to return. If the request does not specify maxresults, or specifies a value greater than 5000, the server will return up to 5000 items. Note that if the listing operation crosses a partition boundary, then the service will return a continuation token for retrieving the remainder of the results. For this reason, it is possible that the service will return fewer results than specified by maxresults, or than the default of 5000."
+ },
+ "Metadata": {
+ "name": "x-ms-meta",
+ "x-ms-client-name": "metadata",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "x-ms-parameter-location": "method",
+ "description": "Optional. Specifies a user-defined name-value pair associated with the blob. If no name-value pairs are specified, the operation will copy the metadata from the source blob or file to the destination blob. If one or more name-value pairs are specified, the destination blob is created with the specified metadata, and metadata is not copied from the source blob or file. Note that beginning with version 2009-09-19, metadata names must adhere to the naming rules for C# identifiers. See Naming and Referencing Containers, Blobs, and Metadata for more information.",
+ "x-ms-header-collection-prefix": "x-ms-meta-"
+ },
+ "Prefix": {
+ "name": "prefix",
+ "in": "query",
+ "required": false,
+ "type": "string",
+ "description": "Filters the results to return only containers whose name begins with the specified prefix.",
+ "x-ms-parameter-location": "method"
+ },
+ "PrevSnapshot": {
+ "name": "prevsnapshot",
+ "in": "query",
+ "required": false,
+ "type": "string",
+ "x-ms-parameter-location": "method",
+ "description": "Optional in version 2015-07-08 and newer. The prevsnapshot parameter is a DateTime value that specifies that the response will contain only pages that were changed between target blob and previous snapshot. Changed pages include both updated and cleared pages. The target blob may be a snapshot, as long as the snapshot specified by prevsnapshot is the older of the two. Note that incremental snapshots are currently supported only for blobs created on or after January 1, 2016."
+ },
+ "ProposedLeaseIdOptional": {
+ "name": "x-ms-proposed-lease-id",
+ "x-ms-client-name": "proposedLeaseId",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "x-ms-parameter-location": "method",
+ "description": "Proposed lease ID, in a GUID string format. The Blob service returns 400 (Invalid request) if the proposed lease ID is not in the correct format. See Guid Constructor (String) for a list of valid GUID string formats."
+ },
+ "ProposedLeaseIdRequired": {
+ "name": "x-ms-proposed-lease-id",
+ "x-ms-client-name": "proposedLeaseId",
+ "in": "header",
+ "required": true,
+ "type": "string",
+ "x-ms-parameter-location": "method",
+ "description": "Proposed lease ID, in a GUID string format. The Blob service returns 400 (Invalid request) if the proposed lease ID is not in the correct format. See Guid Constructor (String) for a list of valid GUID string formats."
+ },
+ "Range": {
+ "name": "x-ms-range",
+ "x-ms-client-name": "range",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "x-ms-parameter-location": "method",
+ "description": "Return only the bytes of the blob in the specified range."
+ },
+ "RangeRequiredPutPageFromUrl": {
+ "name": "x-ms-range",
+ "x-ms-client-name": "range",
+ "in": "header",
+ "required": true,
+ "type": "string",
+ "x-ms-parameter-location": "method",
+ "description": "The range of bytes to which the source range would be written. The range should be 512 aligned and range-end is required."
+ },
+ "SequenceNumberAction": {
+ "name": "x-ms-sequence-number-action",
+ "x-ms-client-name": "sequenceNumberAction",
+ "in": "header",
+ "required": true,
+ "x-ms-parameter-location": "method",
+ "description": "Required if the x-ms-blob-sequence-number header is set for the request. This property applies to page blobs only. This property indicates how the service should modify the blob's sequence number",
+ "type": "string",
+ "enum": [
+ "max",
+ "update",
+ "increment"
+ ],
+ "x-ms-enum": {
+ "name": "SequenceNumberActionType",
+ "modelAsString": false
+ }
+ },
+ "Snapshot": {
+ "name": "snapshot",
+ "in": "query",
+ "required": false,
+ "type": "string",
+ "x-ms-parameter-location": "method",
+ "description": "The snapshot parameter is an opaque DateTime value that, when present, specifies the blob snapshot to retrieve. For more information on working with blob snapshots, see Creating a Snapshot of a Blob."
+ },
+ "SourceContentMD5": {
+ "name": "x-ms-source-content-md5",
+ "x-ms-client-name": "sourceContentMD5",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "format": "byte",
+ "x-ms-parameter-location": "method",
+ "description": "Specify the md5 calculated for the range of bytes that must be read from the copy source."
+ },
+ "SourceRange": {
+ "name": "x-ms-source-range",
+ "x-ms-client-name": "sourceRange",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "x-ms-parameter-location": "method",
+ "description": "Bytes of source data in the specified range."
+ },
+ "SourceRangeRequiredPutPageFromUrl": {
+ "name": "x-ms-source-range",
+ "x-ms-client-name": "sourceRange",
+ "in": "header",
+ "required": true,
+ "type": "string",
+ "x-ms-parameter-location": "method",
+ "description": "Bytes of source data in the specified range. The length of this range should match the ContentLength header and x-ms-range/Range destination range header."
+ },
+ "SourceIfMatch": {
+ "name": "x-ms-source-if-match",
+ "x-ms-client-name": "sourceIfMatch",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "format": "etag",
+ "x-ms-parameter-location": "method",
+ "x-ms-parameter-grouping": {
+ "name": "source-modified-access-conditions"
+ },
+ "description": "Specify an ETag value to operate only on blobs with a matching value."
+ },
+ "SourceIfModifiedSince": {
+ "name": "x-ms-source-if-modified-since",
+ "x-ms-client-name": "sourceIfModifiedSince",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "x-ms-parameter-location": "method",
+ "x-ms-parameter-grouping": {
+ "name": "source-modified-access-conditions"
+ },
+ "description": "Specify this header value to operate only on a blob if it has been modified since the specified date/time."
+ },
+ "SourceIfNoneMatch": {
+ "name": "x-ms-source-if-none-match",
+ "x-ms-client-name": "sourceIfNoneMatch",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "format": "etag",
+ "x-ms-parameter-location": "method",
+ "x-ms-parameter-grouping": {
+ "name": "source-modified-access-conditions"
+ },
+ "description": "Specify an ETag value to operate only on blobs without a matching value."
+ },
+ "SourceIfUnmodifiedSince": {
+ "name": "x-ms-source-if-unmodified-since",
+ "x-ms-client-name": "sourceIfUnmodifiedSince",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "x-ms-parameter-location": "method",
+ "x-ms-parameter-grouping": {
+ "name": "source-modified-access-conditions"
+ },
+ "description": "Specify this header value to operate only on a blob if it has not been modified since the specified date/time."
+ },
+ "SourceLeaseId": {
+ "name": "x-ms-source-lease-id",
+ "x-ms-client-name": "sourceLeaseId",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "x-ms-parameter-location": "method",
+ "description": "A lease ID for the source path. If specified, the source path must have an active lease and the leaase ID must match."
+ },
+ "SourceUrl": {
+ "name": "x-ms-copy-source",
+ "x-ms-client-name": "sourceUrl",
+ "in": "header",
+ "required": true,
+ "type": "string",
+ "format": "url",
+ "x-ms-parameter-location": "method",
+ "description": "Specify a URL to the copy source."
+ },
+ "StorageServiceProperties": {
+ "name": "StorageServiceProperties",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/StorageServiceProperties"
+ },
+ "x-ms-parameter-location": "method",
+ "description": "The StorageService properties."
+ },
+ "Timeout": {
+ "name": "timeout",
+ "in": "query",
+ "required": false,
+ "type": "integer",
+ "minimum": 0,
+ "x-ms-parameter-location": "method",
+ "description": "The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations."
+ }
+ }
+}
\ No newline at end of file
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/chunkwriting.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/chunkwriting.go
new file mode 100644
index 00000000..12b6c344
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/chunkwriting.go
@@ -0,0 +1,238 @@
+package azblob
+
+import (
+ "bytes"
+ "context"
+ "encoding/base64"
+ "encoding/binary"
+ "errors"
+ "fmt"
+ "io"
+ "sync"
+
+ guuid "github.com/google/uuid"
+)
+
+// blockWriter provides methods to upload blocks that represent a file to a server and commit them.
+// This allows us to provide a local implementation that fakes the server for hermetic testing.
+type blockWriter interface {
+ StageBlock(context.Context, string, io.ReadSeeker, LeaseAccessConditions, []byte) (*BlockBlobStageBlockResponse, error)
+ CommitBlockList(context.Context, []string, BlobHTTPHeaders, Metadata, BlobAccessConditions) (*BlockBlobCommitBlockListResponse, error)
+}
+
+// copyFromReader copies a source io.Reader to blob storage using concurrent uploads.
+// TODO(someone): The existing model provides a buffer size and buffer limit as limiting factors. The buffer size is probably
+// useless other than needing to be above some number, as the network stack is going to hack up the buffer over some size. The
+// max buffers is providing a cap on how much memory we use (by multiplying it times the buffer size) and how many go routines can upload
+// at a time. I think having a single max memory dial would be more efficient. We can choose an internal buffer size that works
+// well, 4 MiB or 8 MiB, and autoscale to as many goroutines within the memory limit. This gives a single dial to tweak and we can
+// choose a max value for the memory setting based on internal transfers within Azure (which will give us the maximum throughput model).
+// We can even provide a utility to dial this number in for customer networks to optimize their copies.
+func copyFromReader(ctx context.Context, from io.Reader, to blockWriter, o UploadStreamToBlockBlobOptions) (*BlockBlobCommitBlockListResponse, error) {
+ o.defaults()
+
+ ctx, cancel := context.WithCancel(ctx)
+ defer cancel()
+
+ cp := &copier{
+ ctx: ctx,
+ cancel: cancel,
+ reader: from,
+ to: to,
+ id: newID(),
+ o: o,
+ ch: make(chan copierChunk, 1),
+ errCh: make(chan error, 1),
+ buffers: sync.Pool{
+ New: func() interface{} {
+ return make([]byte, o.BufferSize)
+ },
+ },
+ }
+
+ // Starts the pools of concurrent writers.
+ cp.wg.Add(o.MaxBuffers)
+ for i := 0; i < o.MaxBuffers; i++ {
+ go cp.writer()
+ }
+
+ // Send all our chunks until we get an error.
+ var err error
+ for {
+ if err = cp.sendChunk(); err != nil {
+ break
+ }
+ }
+ // If the error is not EOF, then we have a problem.
+ if err != nil && !errors.Is(err, io.EOF) {
+ return nil, err
+ }
+
+ // Close out our upload.
+ if err := cp.close(); err != nil {
+ return nil, err
+ }
+
+ return cp.result, nil
+}
+
+// copier streams a file via chunks in parallel from a reader representing a file.
+// Do not use directly, instead use copyFromReader().
+type copier struct {
+ // ctx holds the context of a copier. This is normally a faux pas to store a Context in a struct. In this case,
+ // the copier has the lifetime of a function call, so its fine.
+ ctx context.Context
+ cancel context.CancelFunc
+
+ // reader is the source to be written to storage.
+ reader io.Reader
+ // to is the location we are writing our chunks to.
+ to blockWriter
+
+ id *id
+ o UploadStreamToBlockBlobOptions
+
+ // num is the current chunk we are on.
+ num int32
+ // ch is used to pass the next chunk of data from our reader to one of the writers.
+ ch chan copierChunk
+ // errCh is used to hold the first error from our concurrent writers.
+ errCh chan error
+ // wg provides a count of how many writers we are waiting to finish.
+ wg sync.WaitGroup
+ // buffers provides a pool of chunks that can be reused.
+ buffers sync.Pool
+
+ // result holds the final result from blob storage after we have submitted all chunks.
+ result *BlockBlobCommitBlockListResponse
+}
+
+type copierChunk struct {
+ buffer []byte
+ id string
+}
+
+// getErr returns an error by priority. First, if a function set an error, it returns that error. Next, if the Context has an error
+// it returns that error. Otherwise it is nil. getErr supports only returning an error once per copier.
+func (c *copier) getErr() error {
+ select {
+ case err := <-c.errCh:
+ return err
+ default:
+ }
+ return c.ctx.Err()
+}
+
+// sendChunk reads data from out internal reader, creates a chunk, and sends it to be written via a channel.
+// sendChunk returns io.EOF when the reader returns an io.EOF or io.ErrUnexpectedEOF.
+func (c *copier) sendChunk() error {
+ if err := c.getErr(); err != nil {
+ return err
+ }
+
+ buffer := c.buffers.Get().([]byte)
+ n, err := io.ReadFull(c.reader, buffer)
+ switch {
+ case err == nil && n == 0:
+ return nil
+ case err == nil:
+ c.ch <- copierChunk{
+ buffer: buffer[0:n],
+ id: c.id.next(),
+ }
+ return nil
+ case err != nil && (err == io.EOF || err == io.ErrUnexpectedEOF) && n == 0:
+ return io.EOF
+ }
+
+ if err == io.EOF || err == io.ErrUnexpectedEOF {
+ c.ch <- copierChunk{
+ buffer: buffer[0:n],
+ id: c.id.next(),
+ }
+ return io.EOF
+ }
+ if err := c.getErr(); err != nil {
+ return err
+ }
+ return err
+}
+
+// writer writes chunks sent on a channel.
+func (c *copier) writer() {
+ defer c.wg.Done()
+
+ for chunk := range c.ch {
+ if err := c.write(chunk); err != nil {
+ if !errors.Is(err, context.Canceled) {
+ select {
+ case c.errCh <- err:
+ c.cancel()
+ default:
+ }
+ return
+ }
+ }
+ }
+}
+
+// write uploads a chunk to blob storage.
+func (c *copier) write(chunk copierChunk) error {
+ defer c.buffers.Put(chunk.buffer)
+
+ if err := c.ctx.Err(); err != nil {
+ return err
+ }
+
+ _, err := c.to.StageBlock(c.ctx, chunk.id, bytes.NewReader(chunk.buffer), LeaseAccessConditions{}, nil)
+ if err != nil {
+ return fmt.Errorf("write error: %w", err)
+ }
+ return nil
+}
+
+// close commits our blocks to blob storage and closes our writer.
+func (c *copier) close() error {
+ close(c.ch)
+ c.wg.Wait()
+
+ if err := c.getErr(); err != nil {
+ return err
+ }
+
+ var err error
+ c.result, err = c.to.CommitBlockList(c.ctx, c.id.issued(), c.o.BlobHTTPHeaders, c.o.Metadata, c.o.AccessConditions)
+ return err
+}
+
+// id allows the creation of unique IDs based on UUID4 + an int32. This autoincrements.
+type id struct {
+ u [64]byte
+ num uint32
+ all []string
+}
+
+// newID constructs a new id.
+func newID() *id {
+ uu := guuid.New()
+ u := [64]byte{}
+ copy(u[:], uu[:])
+ return &id{u: u}
+}
+
+// next returns the next ID. This is not thread-safe.
+func (id *id) next() string {
+ defer func() { id.num++ }()
+
+ binary.BigEndian.PutUint32((id.u[len(guuid.UUID{}):]), id.num)
+ str := base64.StdEncoding.EncodeToString(id.u[:])
+ id.all = append(id.all, str)
+
+ return str
+}
+
+// issued returns all ids that have been issued. This returned value shares the internal slice so it is not safe to modify the return.
+// The value is only valid until the next time next() is called.
+func (id *id) issued() []string {
+ return id.all
+}
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/highlevel.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/highlevel.go
new file mode 100644
index 00000000..7588aeb6
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/highlevel.go
@@ -0,0 +1,396 @@
+package azblob
+
+import (
+ "context"
+ "encoding/base64"
+ "io"
+ "net/http"
+
+ "bytes"
+ "os"
+ "sync"
+ "time"
+
+ "errors"
+
+ "github.com/Azure/azure-pipeline-go/pipeline"
+)
+
+// CommonResponse returns the headers common to all blob REST API responses.
+type CommonResponse interface {
+ // ETag returns the value for header ETag.
+ ETag() ETag
+
+ // LastModified returns the value for header Last-Modified.
+ LastModified() time.Time
+
+ // RequestID returns the value for header x-ms-request-id.
+ RequestID() string
+
+ // Date returns the value for header Date.
+ Date() time.Time
+
+ // Version returns the value for header x-ms-version.
+ Version() string
+
+ // Response returns the raw HTTP response object.
+ Response() *http.Response
+}
+
+// UploadToBlockBlobOptions identifies options used by the UploadBufferToBlockBlob and UploadFileToBlockBlob functions.
+type UploadToBlockBlobOptions struct {
+ // BlockSize specifies the block size to use; the default (and maximum size) is BlockBlobMaxStageBlockBytes.
+ BlockSize int64
+
+ // Progress is a function that is invoked periodically as bytes are sent to the BlockBlobURL.
+ // Note that the progress reporting is not always increasing; it can go down when retrying a request.
+ Progress pipeline.ProgressReceiver
+
+ // BlobHTTPHeaders indicates the HTTP headers to be associated with the blob.
+ BlobHTTPHeaders BlobHTTPHeaders
+
+ // Metadata indicates the metadata to be associated with the blob when PutBlockList is called.
+ Metadata Metadata
+
+ // AccessConditions indicates the access conditions for the block blob.
+ AccessConditions BlobAccessConditions
+
+ // Parallelism indicates the maximum number of blocks to upload in parallel (0=default)
+ Parallelism uint16
+}
+
+// UploadBufferToBlockBlob uploads a buffer in blocks to a block blob.
+func UploadBufferToBlockBlob(ctx context.Context, b []byte,
+ blockBlobURL BlockBlobURL, o UploadToBlockBlobOptions) (CommonResponse, error) {
+ bufferSize := int64(len(b))
+ if o.BlockSize == 0 {
+ // If bufferSize > (BlockBlobMaxStageBlockBytes * BlockBlobMaxBlocks), then error
+ if bufferSize > BlockBlobMaxStageBlockBytes*BlockBlobMaxBlocks {
+ return nil, errors.New("buffer is too large to upload to a block blob")
+ }
+ // If bufferSize <= BlockBlobMaxUploadBlobBytes, then Upload should be used with just 1 I/O request
+ if bufferSize <= BlockBlobMaxUploadBlobBytes {
+ o.BlockSize = BlockBlobMaxUploadBlobBytes // Default if unspecified
+ } else {
+ o.BlockSize = bufferSize / BlockBlobMaxBlocks // buffer / max blocks = block size to use all 50,000 blocks
+ if o.BlockSize < BlobDefaultDownloadBlockSize { // If the block size is smaller than 4MB, round up to 4MB
+ o.BlockSize = BlobDefaultDownloadBlockSize
+ }
+ // StageBlock will be called with blockSize blocks and a Parallelism of (BufferSize / BlockSize).
+ }
+ }
+
+ if bufferSize <= BlockBlobMaxUploadBlobBytes {
+ // If the size can fit in 1 Upload call, do it this way
+ var body io.ReadSeeker = bytes.NewReader(b)
+ if o.Progress != nil {
+ body = pipeline.NewRequestBodyProgress(body, o.Progress)
+ }
+ return blockBlobURL.Upload(ctx, body, o.BlobHTTPHeaders, o.Metadata, o.AccessConditions)
+ }
+
+ var numBlocks = uint16(((bufferSize - 1) / o.BlockSize) + 1)
+
+ blockIDList := make([]string, numBlocks) // Base-64 encoded block IDs
+ progress := int64(0)
+ progressLock := &sync.Mutex{}
+
+ err := DoBatchTransfer(ctx, BatchTransferOptions{
+ OperationName: "UploadBufferToBlockBlob",
+ TransferSize: bufferSize,
+ ChunkSize: o.BlockSize,
+ Parallelism: o.Parallelism,
+ Operation: func(offset int64, count int64, ctx context.Context) error {
+ // This function is called once per block.
+ // It is passed this block's offset within the buffer and its count of bytes
+ // Prepare to read the proper block/section of the buffer
+ var body io.ReadSeeker = bytes.NewReader(b[offset : offset+count])
+ blockNum := offset / o.BlockSize
+ if o.Progress != nil {
+ blockProgress := int64(0)
+ body = pipeline.NewRequestBodyProgress(body,
+ func(bytesTransferred int64) {
+ diff := bytesTransferred - blockProgress
+ blockProgress = bytesTransferred
+ progressLock.Lock() // 1 goroutine at a time gets a progress report
+ progress += diff
+ o.Progress(progress)
+ progressLock.Unlock()
+ })
+ }
+
+ // Block IDs are unique values to avoid issue if 2+ clients are uploading blocks
+ // at the same time causing PutBlockList to get a mix of blocks from all the clients.
+ blockIDList[blockNum] = base64.StdEncoding.EncodeToString(newUUID().bytes())
+ _, err := blockBlobURL.StageBlock(ctx, blockIDList[blockNum], body, o.AccessConditions.LeaseAccessConditions, nil)
+ return err
+ },
+ })
+ if err != nil {
+ return nil, err
+ }
+ // All put blocks were successful, call Put Block List to finalize the blob
+ return blockBlobURL.CommitBlockList(ctx, blockIDList, o.BlobHTTPHeaders, o.Metadata, o.AccessConditions)
+}
+
+// UploadFileToBlockBlob uploads a file in blocks to a block blob.
+func UploadFileToBlockBlob(ctx context.Context, file *os.File,
+ blockBlobURL BlockBlobURL, o UploadToBlockBlobOptions) (CommonResponse, error) {
+
+ stat, err := file.Stat()
+ if err != nil {
+ return nil, err
+ }
+ m := mmf{} // Default to an empty slice; used for 0-size file
+ if stat.Size() != 0 {
+ m, err = newMMF(file, false, 0, int(stat.Size()))
+ if err != nil {
+ return nil, err
+ }
+ defer m.unmap()
+ }
+ return UploadBufferToBlockBlob(ctx, m, blockBlobURL, o)
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+const BlobDefaultDownloadBlockSize = int64(4 * 1024 * 1024) // 4MB
+
+// DownloadFromBlobOptions identifies options used by the DownloadBlobToBuffer and DownloadBlobToFile functions.
+type DownloadFromBlobOptions struct {
+ // BlockSize specifies the block size to use for each parallel download; the default size is BlobDefaultDownloadBlockSize.
+ BlockSize int64
+
+ // Progress is a function that is invoked periodically as bytes are received.
+ Progress pipeline.ProgressReceiver
+
+ // AccessConditions indicates the access conditions used when making HTTP GET requests against the blob.
+ AccessConditions BlobAccessConditions
+
+ // Parallelism indicates the maximum number of blocks to download in parallel (0=default)
+ Parallelism uint16
+
+ // RetryReaderOptionsPerBlock is used when downloading each block.
+ RetryReaderOptionsPerBlock RetryReaderOptions
+}
+
+// downloadBlobToBuffer downloads an Azure blob to a buffer with parallel.
+func downloadBlobToBuffer(ctx context.Context, blobURL BlobURL, offset int64, count int64,
+ b []byte, o DownloadFromBlobOptions, initialDownloadResponse *DownloadResponse) error {
+ if o.BlockSize == 0 {
+ o.BlockSize = BlobDefaultDownloadBlockSize
+ }
+
+ if count == CountToEnd { // If size not specified, calculate it
+ if initialDownloadResponse != nil {
+ count = initialDownloadResponse.ContentLength() - offset // if we have the length, use it
+ } else {
+ // If we don't have the length at all, get it
+ dr, err := blobURL.Download(ctx, 0, CountToEnd, o.AccessConditions, false)
+ if err != nil {
+ return err
+ }
+ count = dr.ContentLength() - offset
+ }
+ }
+
+ // Prepare and do parallel download.
+ progress := int64(0)
+ progressLock := &sync.Mutex{}
+
+ err := DoBatchTransfer(ctx, BatchTransferOptions{
+ OperationName: "downloadBlobToBuffer",
+ TransferSize: count,
+ ChunkSize: o.BlockSize,
+ Parallelism: o.Parallelism,
+ Operation: func(chunkStart int64, count int64, ctx context.Context) error {
+ dr, err := blobURL.Download(ctx, chunkStart+offset, count, o.AccessConditions, false)
+ if err != nil {
+ return err
+ }
+ body := dr.Body(o.RetryReaderOptionsPerBlock)
+ if o.Progress != nil {
+ rangeProgress := int64(0)
+ body = pipeline.NewResponseBodyProgress(
+ body,
+ func(bytesTransferred int64) {
+ diff := bytesTransferred - rangeProgress
+ rangeProgress = bytesTransferred
+ progressLock.Lock()
+ progress += diff
+ o.Progress(progress)
+ progressLock.Unlock()
+ })
+ }
+ _, err = io.ReadFull(body, b[chunkStart:chunkStart+count])
+ body.Close()
+ return err
+ },
+ })
+ if err != nil {
+ return err
+ }
+ return nil
+}
+
+// DownloadBlobToBuffer downloads an Azure blob to a buffer with parallel.
+// Offset and count are optional, pass 0 for both to download the entire blob.
+func DownloadBlobToBuffer(ctx context.Context, blobURL BlobURL, offset int64, count int64,
+ b []byte, o DownloadFromBlobOptions) error {
+ return downloadBlobToBuffer(ctx, blobURL, offset, count, b, o, nil)
+}
+
+// DownloadBlobToFile downloads an Azure blob to a local file.
+// The file would be truncated if the size doesn't match.
+// Offset and count are optional, pass 0 for both to download the entire blob.
+func DownloadBlobToFile(ctx context.Context, blobURL BlobURL, offset int64, count int64,
+ file *os.File, o DownloadFromBlobOptions) error {
+ // 1. Calculate the size of the destination file
+ var size int64
+
+ if count == CountToEnd {
+ // Try to get Azure blob's size
+ props, err := blobURL.GetProperties(ctx, o.AccessConditions)
+ if err != nil {
+ return err
+ }
+ size = props.ContentLength() - offset
+ } else {
+ size = count
+ }
+
+ // 2. Compare and try to resize local file's size if it doesn't match Azure blob's size.
+ stat, err := file.Stat()
+ if err != nil {
+ return err
+ }
+ if stat.Size() != size {
+ if err = file.Truncate(size); err != nil {
+ return err
+ }
+ }
+
+ if size > 0 {
+ // 3. Set mmap and call downloadBlobToBuffer.
+ m, err := newMMF(file, true, 0, int(size))
+ if err != nil {
+ return err
+ }
+ defer m.unmap()
+ return downloadBlobToBuffer(ctx, blobURL, offset, size, m, o, nil)
+ } else { // if the blob's size is 0, there is no need in downloading it
+ return nil
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+// BatchTransferOptions identifies options used by DoBatchTransfer.
+type BatchTransferOptions struct {
+ TransferSize int64
+ ChunkSize int64
+ Parallelism uint16
+ Operation func(offset int64, chunkSize int64, ctx context.Context) error
+ OperationName string
+}
+
+// DoBatchTransfer helps to execute operations in a batch manner.
+// Can be used by users to customize batch works (for other scenarios that the SDK does not provide)
+func DoBatchTransfer(ctx context.Context, o BatchTransferOptions) error {
+ if o.ChunkSize == 0 {
+ return errors.New("ChunkSize cannot be 0")
+ }
+
+ if o.Parallelism == 0 {
+ o.Parallelism = 5 // default Parallelism
+ }
+
+ // Prepare and do parallel operations.
+ numChunks := uint16(((o.TransferSize - 1) / o.ChunkSize) + 1)
+ operationChannel := make(chan func() error, o.Parallelism) // Create the channel that release 'Parallelism' goroutines concurrently
+ operationResponseChannel := make(chan error, numChunks) // Holds each response
+ ctx, cancel := context.WithCancel(ctx)
+ defer cancel()
+
+ // Create the goroutines that process each operation (in parallel).
+ for g := uint16(0); g < o.Parallelism; g++ {
+ //grIndex := g
+ go func() {
+ for f := range operationChannel {
+ err := f()
+ operationResponseChannel <- err
+ }
+ }()
+ }
+
+ // Add each chunk's operation to the channel.
+ for chunkNum := uint16(0); chunkNum < numChunks; chunkNum++ {
+ curChunkSize := o.ChunkSize
+
+ if chunkNum == numChunks-1 { // Last chunk
+ curChunkSize = o.TransferSize - (int64(chunkNum) * o.ChunkSize) // Remove size of all transferred chunks from total
+ }
+ offset := int64(chunkNum) * o.ChunkSize
+
+ operationChannel <- func() error {
+ return o.Operation(offset, curChunkSize, ctx)
+ }
+ }
+ close(operationChannel)
+
+ // Wait for the operations to complete.
+ var firstErr error = nil
+ for chunkNum := uint16(0); chunkNum < numChunks; chunkNum++ {
+ responseError := <-operationResponseChannel
+ // record the first error (the original error which should cause the other chunks to fail with canceled context)
+ if responseError != nil && firstErr == nil {
+ cancel() // As soon as any operation fails, cancel all remaining operation calls
+ firstErr = responseError
+ }
+ }
+ return firstErr
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////
+
+const _1MiB = 1024 * 1024
+
+type UploadStreamToBlockBlobOptions struct {
+ // BufferSize sizes the buffer used to read data from source. If < 1 MiB, defaults to 1 MiB.
+ BufferSize int
+ // MaxBuffers defines the number of simultaneous uploads will be performed to upload the file.
+ MaxBuffers int
+ BlobHTTPHeaders BlobHTTPHeaders
+ Metadata Metadata
+ AccessConditions BlobAccessConditions
+}
+
+func (u *UploadStreamToBlockBlobOptions) defaults() {
+ if u.MaxBuffers == 0 {
+ u.MaxBuffers = 1
+ }
+
+ if u.BufferSize < _1MiB {
+ u.BufferSize = _1MiB
+ }
+}
+
+// UploadStreamToBlockBlob copies the file held in io.Reader to the Blob at blockBlobURL.
+// A Context deadline or cancellation will cause this to error.
+func UploadStreamToBlockBlob(ctx context.Context, reader io.Reader, blockBlobURL BlockBlobURL,
+ o UploadStreamToBlockBlobOptions) (CommonResponse, error) {
+ o.defaults()
+
+ result, err := copyFromReader(ctx, reader, blockBlobURL, o)
+ if err != nil {
+ return nil, err
+ }
+
+ return result, nil
+}
+
+// UploadStreamOptions (defunct) was used internally. This will be removed or made private in a future version.
+type UploadStreamOptions struct {
+ BufferSize int
+ MaxBuffers int
+}
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/parsing_urls.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/parsing_urls.go
new file mode 100644
index 00000000..067939b1
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/parsing_urls.go
@@ -0,0 +1,153 @@
+package azblob
+
+import (
+ "net"
+ "net/url"
+ "strings"
+)
+
+const (
+ snapshot = "snapshot"
+ SnapshotTimeFormat = "2006-01-02T15:04:05.0000000Z07:00"
+)
+
+// A BlobURLParts object represents the components that make up an Azure Storage Container/Blob URL. You parse an
+// existing URL into its parts by calling NewBlobURLParts(). You construct a URL from parts by calling URL().
+// NOTE: Changing any SAS-related field requires computing a new SAS signature.
+type BlobURLParts struct {
+ Scheme string // Ex: "https://"
+ Host string // Ex: "account.blob.core.windows.net", "10.132.141.33", "10.132.141.33:80"
+ IPEndpointStyleInfo IPEndpointStyleInfo
+ ContainerName string // "" if no container
+ BlobName string // "" if no blob
+ Snapshot string // "" if not a snapshot
+ SAS SASQueryParameters
+ UnparsedParams string
+}
+
+// IPEndpointStyleInfo is used for IP endpoint style URL when working with Azure storage emulator.
+// Ex: "https://10.132.141.33/accountname/containername"
+type IPEndpointStyleInfo struct {
+ AccountName string // "" if not using IP endpoint style
+}
+
+// isIPEndpointStyle checkes if URL's host is IP, in this case the storage account endpoint will be composed as:
+// http(s)://IP(:port)/storageaccount/container/...
+// As url's Host property, host could be both host or host:port
+func isIPEndpointStyle(host string) bool {
+ if host == "" {
+ return false
+ }
+ if h, _, err := net.SplitHostPort(host); err == nil {
+ host = h
+ }
+ // For IPv6, there could be case where SplitHostPort fails for cannot finding port.
+ // In this case, eliminate the '[' and ']' in the URL.
+ // For details about IPv6 URL, please refer to https://tools.ietf.org/html/rfc2732
+ if host[0] == '[' && host[len(host)-1] == ']' {
+ host = host[1 : len(host)-1]
+ }
+ return net.ParseIP(host) != nil
+}
+
+// NewBlobURLParts parses a URL initializing BlobURLParts' fields including any SAS-related & snapshot query parameters. Any other
+// query parameters remain in the UnparsedParams field. This method overwrites all fields in the BlobURLParts object.
+func NewBlobURLParts(u url.URL) BlobURLParts {
+ up := BlobURLParts{
+ Scheme: u.Scheme,
+ Host: u.Host,
+ }
+
+ // Find the container & blob names (if any)
+ if u.Path != "" {
+ path := u.Path
+ if path[0] == '/' {
+ path = path[1:] // If path starts with a slash, remove it
+ }
+ if isIPEndpointStyle(up.Host) {
+ if accountEndIndex := strings.Index(path, "/"); accountEndIndex == -1 { // Slash not found; path has account name & no container name or blob
+ up.IPEndpointStyleInfo.AccountName = path
+ } else {
+ up.IPEndpointStyleInfo.AccountName = path[:accountEndIndex] // The account name is the part between the slashes
+ path = path[accountEndIndex+1:] // path refers to portion after the account name now (container & blob names)
+ }
+ }
+
+ containerEndIndex := strings.Index(path, "/") // Find the next slash (if it exists)
+ if containerEndIndex == -1 { // Slash not found; path has container name & no blob name
+ up.ContainerName = path
+ } else {
+ up.ContainerName = path[:containerEndIndex] // The container name is the part between the slashes
+ up.BlobName = path[containerEndIndex+1:] // The blob name is after the container slash
+ }
+ }
+
+ // Convert the query parameters to a case-sensitive map & trim whitespace
+ paramsMap := u.Query()
+
+ up.Snapshot = "" // Assume no snapshot
+ if snapshotStr, ok := caseInsensitiveValues(paramsMap).Get(snapshot); ok {
+ up.Snapshot = snapshotStr[0]
+ // If we recognized the query parameter, remove it from the map
+ delete(paramsMap, snapshot)
+ }
+ up.SAS = newSASQueryParameters(paramsMap, true)
+ up.UnparsedParams = paramsMap.Encode()
+ return up
+}
+
+type caseInsensitiveValues url.Values // map[string][]string
+func (values caseInsensitiveValues) Get(key string) ([]string, bool) {
+ key = strings.ToLower(key)
+ for k, v := range values {
+ if strings.ToLower(k) == key {
+ return v, true
+ }
+ }
+ return []string{}, false
+}
+
+// URL returns a URL object whose fields are initialized from the BlobURLParts fields. The URL's RawQuery
+// field contains the SAS, snapshot, and unparsed query parameters.
+func (up BlobURLParts) URL() url.URL {
+ path := ""
+ if isIPEndpointStyle(up.Host) && up.IPEndpointStyleInfo.AccountName != "" {
+ path += "/" + up.IPEndpointStyleInfo.AccountName
+ }
+ // Concatenate container & blob names (if they exist)
+ if up.ContainerName != "" {
+ path += "/" + up.ContainerName
+ if up.BlobName != "" {
+ path += "/" + up.BlobName
+ }
+ }
+
+ rawQuery := up.UnparsedParams
+
+ //If no snapshot is initially provided, fill it in from the SAS query properties to help the user
+ if up.Snapshot == "" && !up.SAS.snapshotTime.IsZero() {
+ up.Snapshot = up.SAS.snapshotTime.Format(SnapshotTimeFormat)
+ }
+
+ // Concatenate blob snapshot query parameter (if it exists)
+ if up.Snapshot != "" {
+ if len(rawQuery) > 0 {
+ rawQuery += "&"
+ }
+ rawQuery += snapshot + "=" + up.Snapshot
+ }
+ sas := up.SAS.Encode()
+ if sas != "" {
+ if len(rawQuery) > 0 {
+ rawQuery += "&"
+ }
+ rawQuery += sas
+ }
+ u := url.URL{
+ Scheme: up.Scheme,
+ Host: up.Host,
+ Path: path,
+ RawQuery: rawQuery,
+ }
+ return u
+}
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/sas_service.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/sas_service.go
new file mode 100644
index 00000000..4d45d3ec
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/sas_service.go
@@ -0,0 +1,256 @@
+package azblob
+
+import (
+ "bytes"
+ "fmt"
+ "strings"
+ "time"
+)
+
+// BlobSASSignatureValues is used to generate a Shared Access Signature (SAS) for an Azure Storage container or blob.
+// For more information, see https://docs.microsoft.com/rest/api/storageservices/constructing-a-service-sas
+type BlobSASSignatureValues struct {
+ Version string `param:"sv"` // If not specified, this defaults to SASVersion
+ Protocol SASProtocol `param:"spr"` // See the SASProtocol* constants
+ StartTime time.Time `param:"st"` // Not specified if IsZero
+ ExpiryTime time.Time `param:"se"` // Not specified if IsZero
+ SnapshotTime time.Time
+ Permissions string `param:"sp"` // Create by initializing a ContainerSASPermissions or BlobSASPermissions and then call String()
+ IPRange IPRange `param:"sip"`
+ Identifier string `param:"si"`
+ ContainerName string
+ BlobName string // Use "" to create a Container SAS
+ CacheControl string // rscc
+ ContentDisposition string // rscd
+ ContentEncoding string // rsce
+ ContentLanguage string // rscl
+ ContentType string // rsct
+}
+
+// NewSASQueryParameters uses an account's StorageAccountCredential to sign this signature values to produce
+// the proper SAS query parameters.
+// See: StorageAccountCredential. Compatible with both UserDelegationCredential and SharedKeyCredential
+func (v BlobSASSignatureValues) NewSASQueryParameters(credential StorageAccountCredential) (SASQueryParameters, error) {
+ resource := "c"
+ if credential == nil {
+ return SASQueryParameters{}, fmt.Errorf("cannot sign SAS query without StorageAccountCredential")
+ }
+
+ if !v.SnapshotTime.IsZero() {
+ resource = "bs"
+ //Make sure the permission characters are in the correct order
+ perms := &BlobSASPermissions{}
+ if err := perms.Parse(v.Permissions); err != nil {
+ return SASQueryParameters{}, err
+ }
+ v.Permissions = perms.String()
+ } else if v.BlobName == "" {
+ // Make sure the permission characters are in the correct order
+ perms := &ContainerSASPermissions{}
+ if err := perms.Parse(v.Permissions); err != nil {
+ return SASQueryParameters{}, err
+ }
+ v.Permissions = perms.String()
+ } else {
+ resource = "b"
+ // Make sure the permission characters are in the correct order
+ perms := &BlobSASPermissions{}
+ if err := perms.Parse(v.Permissions); err != nil {
+ return SASQueryParameters{}, err
+ }
+ v.Permissions = perms.String()
+ }
+ if v.Version == "" {
+ v.Version = SASVersion
+ }
+ startTime, expiryTime, snapshotTime := FormatTimesForSASSigning(v.StartTime, v.ExpiryTime, v.SnapshotTime)
+
+ signedIdentifier := v.Identifier
+
+ udk := credential.getUDKParams()
+
+ if udk != nil {
+ udkStart, udkExpiry, _ := FormatTimesForSASSigning(udk.SignedStart, udk.SignedExpiry, time.Time{})
+ //I don't like this answer to combining the functions
+ //But because signedIdentifier and the user delegation key strings share a place, this is an _OK_ way to do it.
+ signedIdentifier = strings.Join([]string{
+ udk.SignedOid,
+ udk.SignedTid,
+ udkStart,
+ udkExpiry,
+ udk.SignedService,
+ udk.SignedVersion,
+ }, "\n")
+ }
+
+ // String to sign: http://msdn.microsoft.com/en-us/library/azure/dn140255.aspx
+ stringToSign := strings.Join([]string{
+ v.Permissions,
+ startTime,
+ expiryTime,
+ getCanonicalName(credential.AccountName(), v.ContainerName, v.BlobName),
+ signedIdentifier,
+ v.IPRange.String(),
+ string(v.Protocol),
+ v.Version,
+ resource,
+ snapshotTime, // signed timestamp
+ v.CacheControl, // rscc
+ v.ContentDisposition, // rscd
+ v.ContentEncoding, // rsce
+ v.ContentLanguage, // rscl
+ v.ContentType}, // rsct
+ "\n")
+
+ signature := ""
+ signature = credential.ComputeHMACSHA256(stringToSign)
+
+ p := SASQueryParameters{
+ // Common SAS parameters
+ version: v.Version,
+ protocol: v.Protocol,
+ startTime: v.StartTime,
+ expiryTime: v.ExpiryTime,
+ permissions: v.Permissions,
+ ipRange: v.IPRange,
+
+ // Container/Blob-specific SAS parameters
+ resource: resource,
+ identifier: v.Identifier,
+ cacheControl: v.CacheControl,
+ contentDisposition: v.ContentDisposition,
+ contentEncoding: v.ContentEncoding,
+ contentLanguage: v.ContentLanguage,
+ contentType: v.ContentType,
+ snapshotTime: v.SnapshotTime,
+
+ // Calculated SAS signature
+ signature: signature,
+ }
+
+ //User delegation SAS specific parameters
+ if udk != nil {
+ p.signedOid = udk.SignedOid
+ p.signedTid = udk.SignedTid
+ p.signedStart = udk.SignedStart
+ p.signedExpiry = udk.SignedExpiry
+ p.signedService = udk.SignedService
+ p.signedVersion = udk.SignedVersion
+ }
+
+ return p, nil
+}
+
+// getCanonicalName computes the canonical name for a container or blob resource for SAS signing.
+func getCanonicalName(account string, containerName string, blobName string) string {
+ // Container: "/blob/account/containername"
+ // Blob: "/blob/account/containername/blobname"
+ elements := []string{"/blob/", account, "/", containerName}
+ if blobName != "" {
+ elements = append(elements, "/", strings.Replace(blobName, "\\", "/", -1))
+ }
+ return strings.Join(elements, "")
+}
+
+// The ContainerSASPermissions type simplifies creating the permissions string for an Azure Storage container SAS.
+// Initialize an instance of this type and then call its String method to set BlobSASSignatureValues's Permissions field.
+type ContainerSASPermissions struct {
+ Read, Add, Create, Write, Delete, List bool
+}
+
+// String produces the SAS permissions string for an Azure Storage container.
+// Call this method to set BlobSASSignatureValues's Permissions field.
+func (p ContainerSASPermissions) String() string {
+ var b bytes.Buffer
+ if p.Read {
+ b.WriteRune('r')
+ }
+ if p.Add {
+ b.WriteRune('a')
+ }
+ if p.Create {
+ b.WriteRune('c')
+ }
+ if p.Write {
+ b.WriteRune('w')
+ }
+ if p.Delete {
+ b.WriteRune('d')
+ }
+ if p.List {
+ b.WriteRune('l')
+ }
+ return b.String()
+}
+
+// Parse initializes the ContainerSASPermissions's fields from a string.
+func (p *ContainerSASPermissions) Parse(s string) error {
+ *p = ContainerSASPermissions{} // Clear the flags
+ for _, r := range s {
+ switch r {
+ case 'r':
+ p.Read = true
+ case 'a':
+ p.Add = true
+ case 'c':
+ p.Create = true
+ case 'w':
+ p.Write = true
+ case 'd':
+ p.Delete = true
+ case 'l':
+ p.List = true
+ default:
+ return fmt.Errorf("Invalid permission: '%v'", r)
+ }
+ }
+ return nil
+}
+
+// The BlobSASPermissions type simplifies creating the permissions string for an Azure Storage blob SAS.
+// Initialize an instance of this type and then call its String method to set BlobSASSignatureValues's Permissions field.
+type BlobSASPermissions struct{ Read, Add, Create, Write, Delete bool }
+
+// String produces the SAS permissions string for an Azure Storage blob.
+// Call this method to set BlobSASSignatureValues's Permissions field.
+func (p BlobSASPermissions) String() string {
+ var b bytes.Buffer
+ if p.Read {
+ b.WriteRune('r')
+ }
+ if p.Add {
+ b.WriteRune('a')
+ }
+ if p.Create {
+ b.WriteRune('c')
+ }
+ if p.Write {
+ b.WriteRune('w')
+ }
+ if p.Delete {
+ b.WriteRune('d')
+ }
+ return b.String()
+}
+
+// Parse initializes the BlobSASPermissions's fields from a string.
+func (p *BlobSASPermissions) Parse(s string) error {
+ *p = BlobSASPermissions{} // Clear the flags
+ for _, r := range s {
+ switch r {
+ case 'r':
+ p.Read = true
+ case 'a':
+ p.Add = true
+ case 'c':
+ p.Create = true
+ case 'w':
+ p.Write = true
+ case 'd':
+ p.Delete = true
+ default:
+ return fmt.Errorf("Invalid permission: '%v'", r)
+ }
+ }
+ return nil
+}
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/service_codes_blob.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/service_codes_blob.go
new file mode 100644
index 00000000..d260f8ae
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/service_codes_blob.go
@@ -0,0 +1,195 @@
+package azblob
+
+// https://docs.microsoft.com/en-us/rest/api/storageservices/blob-service-error-codes
+
+// ServiceCode values indicate a service failure.
+const (
+ // ServiceCodeAppendPositionConditionNotMet means the append position condition specified was not met.
+ ServiceCodeAppendPositionConditionNotMet ServiceCodeType = "AppendPositionConditionNotMet"
+
+ // ServiceCodeBlobAlreadyExists means the specified blob already exists.
+ ServiceCodeBlobAlreadyExists ServiceCodeType = "BlobAlreadyExists"
+
+ // ServiceCodeBlobNotFound means the specified blob does not exist.
+ ServiceCodeBlobNotFound ServiceCodeType = "BlobNotFound"
+
+ // ServiceCodeBlobOverwritten means the blob has been recreated since the previous snapshot was taken.
+ ServiceCodeBlobOverwritten ServiceCodeType = "BlobOverwritten"
+
+ // ServiceCodeBlobTierInadequateForContentLength means the specified blob tier size limit cannot be less than content length.
+ ServiceCodeBlobTierInadequateForContentLength ServiceCodeType = "BlobTierInadequateForContentLength"
+
+ // ServiceCodeBlockCountExceedsLimit means the committed block count cannot exceed the maximum limit of 50,000 blocks
+ // or that the uncommitted block count cannot exceed the maximum limit of 100,000 blocks.
+ ServiceCodeBlockCountExceedsLimit ServiceCodeType = "BlockCountExceedsLimit"
+
+ // ServiceCodeBlockListTooLong means the block list may not contain more than 50,000 blocks.
+ ServiceCodeBlockListTooLong ServiceCodeType = "BlockListTooLong"
+
+ // ServiceCodeCannotChangeToLowerTier means that a higher blob tier has already been explicitly set.
+ ServiceCodeCannotChangeToLowerTier ServiceCodeType = "CannotChangeToLowerTier"
+
+ // ServiceCodeCannotVerifyCopySource means that the service could not verify the copy source within the specified time.
+ // Examine the HTTP status code and message for more information about the failure.
+ ServiceCodeCannotVerifyCopySource ServiceCodeType = "CannotVerifyCopySource"
+
+ // ServiceCodeContainerAlreadyExists means the specified container already exists.
+ ServiceCodeContainerAlreadyExists ServiceCodeType = "ContainerAlreadyExists"
+
+ // ServiceCodeContainerBeingDeleted means the specified container is being deleted.
+ ServiceCodeContainerBeingDeleted ServiceCodeType = "ContainerBeingDeleted"
+
+ // ServiceCodeContainerDisabled means the specified container has been disabled by the administrator.
+ ServiceCodeContainerDisabled ServiceCodeType = "ContainerDisabled"
+
+ // ServiceCodeContainerNotFound means the specified container does not exist.
+ ServiceCodeContainerNotFound ServiceCodeType = "ContainerNotFound"
+
+ // ServiceCodeContentLengthLargerThanTierLimit means the blob's content length cannot exceed its tier limit.
+ ServiceCodeContentLengthLargerThanTierLimit ServiceCodeType = "ContentLengthLargerThanTierLimit"
+
+ // ServiceCodeCopyAcrossAccountsNotSupported means the copy source account and destination account must be the same.
+ ServiceCodeCopyAcrossAccountsNotSupported ServiceCodeType = "CopyAcrossAccountsNotSupported"
+
+ // ServiceCodeCopyIDMismatch means the specified copy ID did not match the copy ID for the pending copy operation.
+ ServiceCodeCopyIDMismatch ServiceCodeType = "CopyIdMismatch"
+
+ // ServiceCodeFeatureVersionMismatch means the type of blob in the container is unrecognized by this version or
+ // that the operation for AppendBlob requires at least version 2015-02-21.
+ ServiceCodeFeatureVersionMismatch ServiceCodeType = "FeatureVersionMismatch"
+
+ // ServiceCodeIncrementalCopyBlobMismatch means the specified source blob is different than the copy source of the existing incremental copy blob.
+ ServiceCodeIncrementalCopyBlobMismatch ServiceCodeType = "IncrementalCopyBlobMismatch"
+
+ // ServiceCodeIncrementalCopyOfEralierVersionSnapshotNotAllowed means the specified snapshot is earlier than the last snapshot copied into the incremental copy blob.
+ ServiceCodeIncrementalCopyOfEralierVersionSnapshotNotAllowed ServiceCodeType = "IncrementalCopyOfEralierVersionSnapshotNotAllowed"
+
+ // ServiceCodeIncrementalCopySourceMustBeSnapshot means the source for incremental copy request must be a snapshot.
+ ServiceCodeIncrementalCopySourceMustBeSnapshot ServiceCodeType = "IncrementalCopySourceMustBeSnapshot"
+
+ // ServiceCodeInfiniteLeaseDurationRequired means the lease ID matched, but the specified lease must be an infinite-duration lease.
+ ServiceCodeInfiniteLeaseDurationRequired ServiceCodeType = "InfiniteLeaseDurationRequired"
+
+ // ServiceCodeInvalidBlobOrBlock means the specified blob or block content is invalid.
+ ServiceCodeInvalidBlobOrBlock ServiceCodeType = "InvalidBlobOrBlock"
+
+ // ServiceCodeInvalidBlobType means the blob type is invalid for this operation.
+ ServiceCodeInvalidBlobType ServiceCodeType = "InvalidBlobType"
+
+ // ServiceCodeInvalidBlockID means the specified block ID is invalid. The block ID must be Base64-encoded.
+ ServiceCodeInvalidBlockID ServiceCodeType = "InvalidBlockId"
+
+ // ServiceCodeInvalidBlockList means the specified block list is invalid.
+ ServiceCodeInvalidBlockList ServiceCodeType = "InvalidBlockList"
+
+ // ServiceCodeInvalidOperation means an invalid operation against a blob snapshot.
+ ServiceCodeInvalidOperation ServiceCodeType = "InvalidOperation"
+
+ // ServiceCodeInvalidPageRange means the page range specified is invalid.
+ ServiceCodeInvalidPageRange ServiceCodeType = "InvalidPageRange"
+
+ // ServiceCodeInvalidSourceBlobType means the copy source blob type is invalid for this operation.
+ ServiceCodeInvalidSourceBlobType ServiceCodeType = "InvalidSourceBlobType"
+
+ // ServiceCodeInvalidSourceBlobURL means the source URL for incremental copy request must be valid Azure Storage blob URL.
+ ServiceCodeInvalidSourceBlobURL ServiceCodeType = "InvalidSourceBlobUrl"
+
+ // ServiceCodeInvalidVersionForPageBlobOperation means that all operations on page blobs require at least version 2009-09-19.
+ ServiceCodeInvalidVersionForPageBlobOperation ServiceCodeType = "InvalidVersionForPageBlobOperation"
+
+ // ServiceCodeLeaseAlreadyPresent means there is already a lease present.
+ ServiceCodeLeaseAlreadyPresent ServiceCodeType = "LeaseAlreadyPresent"
+
+ // ServiceCodeLeaseAlreadyBroken means the lease has already been broken and cannot be broken again.
+ ServiceCodeLeaseAlreadyBroken ServiceCodeType = "LeaseAlreadyBroken"
+
+ // ServiceCodeLeaseIDMismatchWithBlobOperation means the lease ID specified did not match the lease ID for the blob.
+ ServiceCodeLeaseIDMismatchWithBlobOperation ServiceCodeType = "LeaseIdMismatchWithBlobOperation"
+
+ // ServiceCodeLeaseIDMismatchWithContainerOperation means the lease ID specified did not match the lease ID for the container.
+ ServiceCodeLeaseIDMismatchWithContainerOperation ServiceCodeType = "LeaseIdMismatchWithContainerOperation"
+
+ // ServiceCodeLeaseIDMismatchWithLeaseOperation means the lease ID specified did not match the lease ID for the blob/container.
+ ServiceCodeLeaseIDMismatchWithLeaseOperation ServiceCodeType = "LeaseIdMismatchWithLeaseOperation"
+
+ // ServiceCodeLeaseIDMissing means there is currently a lease on the blob/container and no lease ID was specified in the request.
+ ServiceCodeLeaseIDMissing ServiceCodeType = "LeaseIdMissing"
+
+ // ServiceCodeLeaseIsBreakingAndCannotBeAcquired means the lease ID matched, but the lease is currently in breaking state and cannot be acquired until it is broken.
+ ServiceCodeLeaseIsBreakingAndCannotBeAcquired ServiceCodeType = "LeaseIsBreakingAndCannotBeAcquired"
+
+ // ServiceCodeLeaseIsBreakingAndCannotBeChanged means the lease ID matched, but the lease is currently in breaking state and cannot be changed.
+ ServiceCodeLeaseIsBreakingAndCannotBeChanged ServiceCodeType = "LeaseIsBreakingAndCannotBeChanged"
+
+ // ServiceCodeLeaseIsBrokenAndCannotBeRenewed means the lease ID matched, but the lease has been broken explicitly and cannot be renewed.
+ ServiceCodeLeaseIsBrokenAndCannotBeRenewed ServiceCodeType = "LeaseIsBrokenAndCannotBeRenewed"
+
+ // ServiceCodeLeaseLost means a lease ID was specified, but the lease for the blob/container has expired.
+ ServiceCodeLeaseLost ServiceCodeType = "LeaseLost"
+
+ // ServiceCodeLeaseNotPresentWithBlobOperation means there is currently no lease on the blob.
+ ServiceCodeLeaseNotPresentWithBlobOperation ServiceCodeType = "LeaseNotPresentWithBlobOperation"
+
+ // ServiceCodeLeaseNotPresentWithContainerOperation means there is currently no lease on the container.
+ ServiceCodeLeaseNotPresentWithContainerOperation ServiceCodeType = "LeaseNotPresentWithContainerOperation"
+
+ // ServiceCodeLeaseNotPresentWithLeaseOperation means there is currently no lease on the blob/container.
+ ServiceCodeLeaseNotPresentWithLeaseOperation ServiceCodeType = "LeaseNotPresentWithLeaseOperation"
+
+ // ServiceCodeMaxBlobSizeConditionNotMet means the max blob size condition specified was not met.
+ ServiceCodeMaxBlobSizeConditionNotMet ServiceCodeType = "MaxBlobSizeConditionNotMet"
+
+ // ServiceCodeNoPendingCopyOperation means there is currently no pending copy operation.
+ ServiceCodeNoPendingCopyOperation ServiceCodeType = "NoPendingCopyOperation"
+
+ // ServiceCodeOperationNotAllowedOnIncrementalCopyBlob means the specified operation is not allowed on an incremental copy blob.
+ ServiceCodeOperationNotAllowedOnIncrementalCopyBlob ServiceCodeType = "OperationNotAllowedOnIncrementalCopyBlob"
+
+ // ServiceCodePendingCopyOperation means there is currently a pending copy operation.
+ ServiceCodePendingCopyOperation ServiceCodeType = "PendingCopyOperation"
+
+ // ServiceCodePreviousSnapshotCannotBeNewer means the prevsnapshot query parameter value cannot be newer than snapshot query parameter value.
+ ServiceCodePreviousSnapshotCannotBeNewer ServiceCodeType = "PreviousSnapshotCannotBeNewer"
+
+ // ServiceCodePreviousSnapshotNotFound means the previous snapshot is not found.
+ ServiceCodePreviousSnapshotNotFound ServiceCodeType = "PreviousSnapshotNotFound"
+
+ // ServiceCodePreviousSnapshotOperationNotSupported means that differential Get Page Ranges is not supported on the previous snapshot.
+ ServiceCodePreviousSnapshotOperationNotSupported ServiceCodeType = "PreviousSnapshotOperationNotSupported"
+
+ // ServiceCodeSequenceNumberConditionNotMet means the sequence number condition specified was not met.
+ ServiceCodeSequenceNumberConditionNotMet ServiceCodeType = "SequenceNumberConditionNotMet"
+
+ // ServiceCodeSequenceNumberIncrementTooLarge means the sequence number increment cannot be performed because it would result in overflow of the sequence number.
+ ServiceCodeSequenceNumberIncrementTooLarge ServiceCodeType = "SequenceNumberIncrementTooLarge"
+
+ // ServiceCodeSnapshotCountExceeded means the snapshot count against this blob has been exceeded.
+ ServiceCodeSnapshotCountExceeded ServiceCodeType = "SnapshotCountExceeded"
+
+ // ServiceCodeSnaphotOperationRateExceeded means the rate of snapshot operations against this blob has been exceeded.
+ ServiceCodeSnaphotOperationRateExceeded ServiceCodeType = "SnaphotOperationRateExceeded"
+
+ // ServiceCodeSnapshotsPresent means this operation is not permitted while the blob has snapshots.
+ ServiceCodeSnapshotsPresent ServiceCodeType = "SnapshotsPresent"
+
+ // ServiceCodeSourceConditionNotMet means the source condition specified using HTTP conditional header(s) is not met.
+ ServiceCodeSourceConditionNotMet ServiceCodeType = "SourceConditionNotMet"
+
+ // ServiceCodeSystemInUse means this blob is in use by the system.
+ ServiceCodeSystemInUse ServiceCodeType = "SystemInUse"
+
+ // ServiceCodeTargetConditionNotMet means the target condition specified using HTTP conditional header(s) is not met.
+ ServiceCodeTargetConditionNotMet ServiceCodeType = "TargetConditionNotMet"
+
+ // ServiceCodeUnauthorizedBlobOverwrite means this request is not authorized to perform blob overwrites.
+ ServiceCodeUnauthorizedBlobOverwrite ServiceCodeType = "UnauthorizedBlobOverwrite"
+
+ // ServiceCodeBlobBeingRehydrated means this operation is not permitted because the blob is being rehydrated.
+ ServiceCodeBlobBeingRehydrated ServiceCodeType = "BlobBeingRehydrated"
+
+ // ServiceCodeBlobArchived means this operation is not permitted on an archived blob.
+ ServiceCodeBlobArchived ServiceCodeType = "BlobArchived"
+
+ // ServiceCodeBlobNotArchived means this blob is currently not in the archived state.
+ ServiceCodeBlobNotArchived ServiceCodeType = "BlobNotArchived"
+)
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/storage_account_credential.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/storage_account_credential.go
new file mode 100644
index 00000000..b89b18bb
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/storage_account_credential.go
@@ -0,0 +1,8 @@
+package azblob
+
+// StorageAccountCredential is a wrapper interface for SharedKeyCredential and UserDelegationCredential
+type StorageAccountCredential interface {
+ AccountName() string
+ ComputeHMACSHA256(message string) (base64String string)
+ getUDKParams() *UserDelegationKey
+}
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/url_append_blob.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/url_append_blob.go
new file mode 100644
index 00000000..3cb6badc
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/url_append_blob.go
@@ -0,0 +1,138 @@
+package azblob
+
+import (
+ "context"
+ "io"
+ "net/url"
+
+ "github.com/Azure/azure-pipeline-go/pipeline"
+)
+
+const (
+ // AppendBlobMaxAppendBlockBytes indicates the maximum number of bytes that can be sent in a call to AppendBlock.
+ AppendBlobMaxAppendBlockBytes = 4 * 1024 * 1024 // 4MB
+
+ // AppendBlobMaxBlocks indicates the maximum number of blocks allowed in an append blob.
+ AppendBlobMaxBlocks = 50000
+)
+
+// AppendBlobURL defines a set of operations applicable to append blobs.
+type AppendBlobURL struct {
+ BlobURL
+ abClient appendBlobClient
+}
+
+// NewAppendBlobURL creates an AppendBlobURL object using the specified URL and request policy pipeline.
+func NewAppendBlobURL(url url.URL, p pipeline.Pipeline) AppendBlobURL {
+ blobClient := newBlobClient(url, p)
+ abClient := newAppendBlobClient(url, p)
+ return AppendBlobURL{BlobURL: BlobURL{blobClient: blobClient}, abClient: abClient}
+}
+
+// WithPipeline creates a new AppendBlobURL object identical to the source but with the specific request policy pipeline.
+func (ab AppendBlobURL) WithPipeline(p pipeline.Pipeline) AppendBlobURL {
+ return NewAppendBlobURL(ab.blobClient.URL(), p)
+}
+
+// WithSnapshot creates a new AppendBlobURL object identical to the source but with the specified snapshot timestamp.
+// Pass "" to remove the snapshot returning a URL to the base blob.
+func (ab AppendBlobURL) WithSnapshot(snapshot string) AppendBlobURL {
+ p := NewBlobURLParts(ab.URL())
+ p.Snapshot = snapshot
+ return NewAppendBlobURL(p.URL(), ab.blobClient.Pipeline())
+}
+
+func (ab AppendBlobURL) GetAccountInfo(ctx context.Context) (*BlobGetAccountInfoResponse, error) {
+ return ab.blobClient.GetAccountInfo(ctx)
+}
+
+// Create creates a 0-length append blob. Call AppendBlock to append data to an append blob.
+// For more information, see https://docs.microsoft.com/rest/api/storageservices/put-blob.
+func (ab AppendBlobURL) Create(ctx context.Context, h BlobHTTPHeaders, metadata Metadata, ac BlobAccessConditions) (*AppendBlobCreateResponse, error) {
+ ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch := ac.ModifiedAccessConditions.pointers()
+ return ab.abClient.Create(ctx, 0, nil,
+ &h.ContentType, &h.ContentEncoding, &h.ContentLanguage, h.ContentMD5,
+ &h.CacheControl, metadata, ac.LeaseAccessConditions.pointers(), &h.ContentDisposition,
+ nil, nil, EncryptionAlgorithmNone, // CPK
+ ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, nil)
+}
+
+// AppendBlock writes a stream to a new block of data to the end of the existing append blob.
+// This method panics if the stream is not at position 0.
+// Note that the http client closes the body stream after the request is sent to the service.
+// For more information, see https://docs.microsoft.com/rest/api/storageservices/append-block.
+func (ab AppendBlobURL) AppendBlock(ctx context.Context, body io.ReadSeeker, ac AppendBlobAccessConditions, transactionalMD5 []byte) (*AppendBlobAppendBlockResponse, error) {
+ ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := ac.ModifiedAccessConditions.pointers()
+ ifAppendPositionEqual, ifMaxSizeLessThanOrEqual := ac.AppendPositionAccessConditions.pointers()
+ count, err := validateSeekableStreamAt0AndGetCount(body)
+ if err != nil {
+ return nil, err
+ }
+ return ab.abClient.AppendBlock(ctx, body, count, nil,
+ transactionalMD5,
+ nil, // CRC
+ ac.LeaseAccessConditions.pointers(),
+ ifMaxSizeLessThanOrEqual, ifAppendPositionEqual,
+ nil, nil, EncryptionAlgorithmNone, // CPK
+ ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, nil)
+}
+
+// AppendBlockFromURL copies a new block of data from source URL to the end of the existing append blob.
+// For more information, see https://docs.microsoft.com/rest/api/storageservices/append-block-from-url.
+func (ab AppendBlobURL) AppendBlockFromURL(ctx context.Context, sourceURL url.URL, offset int64, count int64, destinationAccessConditions AppendBlobAccessConditions, sourceAccessConditions ModifiedAccessConditions, transactionalMD5 []byte) (*AppendBlobAppendBlockFromURLResponse, error) {
+ ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := destinationAccessConditions.ModifiedAccessConditions.pointers()
+ sourceIfModifiedSince, sourceIfUnmodifiedSince, sourceIfMatchETag, sourceIfNoneMatchETag := sourceAccessConditions.pointers()
+ ifAppendPositionEqual, ifMaxSizeLessThanOrEqual := destinationAccessConditions.AppendPositionAccessConditions.pointers()
+ return ab.abClient.AppendBlockFromURL(ctx, sourceURL.String(), 0, httpRange{offset: offset, count: count}.pointers(),
+ transactionalMD5, nil, nil, nil,
+ nil, nil, EncryptionAlgorithmNone, // CPK
+ destinationAccessConditions.LeaseAccessConditions.pointers(),
+ ifMaxSizeLessThanOrEqual, ifAppendPositionEqual,
+ ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, sourceIfModifiedSince, sourceIfUnmodifiedSince, sourceIfMatchETag, sourceIfNoneMatchETag, nil)
+}
+
+type AppendBlobAccessConditions struct {
+ ModifiedAccessConditions
+ LeaseAccessConditions
+ AppendPositionAccessConditions
+}
+
+// AppendPositionAccessConditions identifies append blob-specific access conditions which you optionally set.
+type AppendPositionAccessConditions struct {
+ // IfAppendPositionEqual ensures that the AppendBlock operation succeeds
+ // only if the append position is equal to a value.
+ // IfAppendPositionEqual=0 means no 'IfAppendPositionEqual' header specified.
+ // IfAppendPositionEqual>0 means 'IfAppendPositionEqual' header specified with its value
+ // IfAppendPositionEqual==-1 means IfAppendPositionEqual' header specified with a value of 0
+ IfAppendPositionEqual int64
+
+ // IfMaxSizeLessThanOrEqual ensures that the AppendBlock operation succeeds
+ // only if the append blob's size is less than or equal to a value.
+ // IfMaxSizeLessThanOrEqual=0 means no 'IfMaxSizeLessThanOrEqual' header specified.
+ // IfMaxSizeLessThanOrEqual>0 means 'IfMaxSizeLessThanOrEqual' header specified with its value
+ // IfMaxSizeLessThanOrEqual==-1 means 'IfMaxSizeLessThanOrEqual' header specified with a value of 0
+ IfMaxSizeLessThanOrEqual int64
+}
+
+// pointers is for internal infrastructure. It returns the fields as pointers.
+func (ac AppendPositionAccessConditions) pointers() (iape *int64, imsltoe *int64) {
+ var zero int64 // defaults to 0
+ switch ac.IfAppendPositionEqual {
+ case -1:
+ iape = &zero
+ case 0:
+ iape = nil
+ default:
+ iape = &ac.IfAppendPositionEqual
+ }
+
+ switch ac.IfMaxSizeLessThanOrEqual {
+ case -1:
+ imsltoe = &zero
+ case 0:
+ imsltoe = nil
+ default:
+ imsltoe = &ac.IfMaxSizeLessThanOrEqual
+ }
+ return
+}
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/url_blob.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/url_blob.go
new file mode 100644
index 00000000..e6be6aaf
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/url_blob.go
@@ -0,0 +1,225 @@
+package azblob
+
+import (
+ "context"
+ "net/url"
+
+ "github.com/Azure/azure-pipeline-go/pipeline"
+)
+
+// A BlobURL represents a URL to an Azure Storage blob; the blob may be a block blob, append blob, or page blob.
+type BlobURL struct {
+ blobClient blobClient
+}
+
+// NewBlobURL creates a BlobURL object using the specified URL and request policy pipeline.
+func NewBlobURL(url url.URL, p pipeline.Pipeline) BlobURL {
+ blobClient := newBlobClient(url, p)
+ return BlobURL{blobClient: blobClient}
+}
+
+// URL returns the URL endpoint used by the BlobURL object.
+func (b BlobURL) URL() url.URL {
+ return b.blobClient.URL()
+}
+
+// String returns the URL as a string.
+func (b BlobURL) String() string {
+ u := b.URL()
+ return u.String()
+}
+
+func (b BlobURL) GetAccountInfo(ctx context.Context) (*BlobGetAccountInfoResponse, error) {
+ return b.blobClient.GetAccountInfo(ctx)
+}
+
+// WithPipeline creates a new BlobURL object identical to the source but with the specified request policy pipeline.
+func (b BlobURL) WithPipeline(p pipeline.Pipeline) BlobURL {
+ return NewBlobURL(b.blobClient.URL(), p)
+}
+
+// WithSnapshot creates a new BlobURL object identical to the source but with the specified snapshot timestamp.
+// Pass "" to remove the snapshot returning a URL to the base blob.
+func (b BlobURL) WithSnapshot(snapshot string) BlobURL {
+ p := NewBlobURLParts(b.URL())
+ p.Snapshot = snapshot
+ return NewBlobURL(p.URL(), b.blobClient.Pipeline())
+}
+
+// ToAppendBlobURL creates an AppendBlobURL using the source's URL and pipeline.
+func (b BlobURL) ToAppendBlobURL() AppendBlobURL {
+ return NewAppendBlobURL(b.URL(), b.blobClient.Pipeline())
+}
+
+// ToBlockBlobURL creates a BlockBlobURL using the source's URL and pipeline.
+func (b BlobURL) ToBlockBlobURL() BlockBlobURL {
+ return NewBlockBlobURL(b.URL(), b.blobClient.Pipeline())
+}
+
+// ToPageBlobURL creates a PageBlobURL using the source's URL and pipeline.
+func (b BlobURL) ToPageBlobURL() PageBlobURL {
+ return NewPageBlobURL(b.URL(), b.blobClient.Pipeline())
+}
+
+// DownloadBlob reads a range of bytes from a blob. The response also includes the blob's properties and metadata.
+// Passing azblob.CountToEnd (0) for count will download the blob from the offset to the end.
+// For more information, see https://docs.microsoft.com/rest/api/storageservices/get-blob.
+func (b BlobURL) Download(ctx context.Context, offset int64, count int64, ac BlobAccessConditions, rangeGetContentMD5 bool) (*DownloadResponse, error) {
+ var xRangeGetContentMD5 *bool
+ if rangeGetContentMD5 {
+ xRangeGetContentMD5 = &rangeGetContentMD5
+ }
+ ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := ac.ModifiedAccessConditions.pointers()
+ dr, err := b.blobClient.Download(ctx, nil, nil,
+ httpRange{offset: offset, count: count}.pointers(),
+ ac.LeaseAccessConditions.pointers(), xRangeGetContentMD5, nil,
+ nil, nil, EncryptionAlgorithmNone, // CPK
+ ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, nil)
+ if err != nil {
+ return nil, err
+ }
+ return &DownloadResponse{
+ b: b,
+ r: dr,
+ ctx: ctx,
+ getInfo: HTTPGetterInfo{Offset: offset, Count: count, ETag: dr.ETag()},
+ }, err
+}
+
+// DeleteBlob marks the specified blob or snapshot for deletion. The blob is later deleted during garbage collection.
+// Note that deleting a blob also deletes all its snapshots.
+// For more information, see https://docs.microsoft.com/rest/api/storageservices/delete-blob.
+func (b BlobURL) Delete(ctx context.Context, deleteOptions DeleteSnapshotsOptionType, ac BlobAccessConditions) (*BlobDeleteResponse, error) {
+ ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := ac.ModifiedAccessConditions.pointers()
+ return b.blobClient.Delete(ctx, nil, nil, ac.LeaseAccessConditions.pointers(), deleteOptions,
+ ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, nil)
+}
+
+// Undelete restores the contents and metadata of a soft-deleted blob and any associated soft-deleted snapshots.
+// For more information, see https://docs.microsoft.com/rest/api/storageservices/undelete-blob.
+func (b BlobURL) Undelete(ctx context.Context) (*BlobUndeleteResponse, error) {
+ return b.blobClient.Undelete(ctx, nil, nil)
+}
+
+// SetTier operation sets the tier on a blob. The operation is allowed on a page
+// blob in a premium storage account and on a block blob in a blob storage account (locally
+// redundant storage only). A premium page blob's tier determines the allowed size, IOPS, and
+// bandwidth of the blob. A block blob's tier determines Hot/Cool/Archive storage type. This operation
+// does not update the blob's ETag.
+// For detailed information about block blob level tiering see https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blob-storage-tiers.
+func (b BlobURL) SetTier(ctx context.Context, tier AccessTierType, lac LeaseAccessConditions) (*BlobSetTierResponse, error) {
+ return b.blobClient.SetTier(ctx, tier, nil, RehydratePriorityNone, nil, lac.pointers())
+}
+
+// GetBlobProperties returns the blob's properties.
+// For more information, see https://docs.microsoft.com/rest/api/storageservices/get-blob-properties.
+func (b BlobURL) GetProperties(ctx context.Context, ac BlobAccessConditions) (*BlobGetPropertiesResponse, error) {
+ ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := ac.ModifiedAccessConditions.pointers()
+ return b.blobClient.GetProperties(ctx, nil, nil, ac.LeaseAccessConditions.pointers(),
+ nil, nil, EncryptionAlgorithmNone, // CPK
+ ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, nil)
+}
+
+// SetBlobHTTPHeaders changes a blob's HTTP headers.
+// For more information, see https://docs.microsoft.com/rest/api/storageservices/set-blob-properties.
+func (b BlobURL) SetHTTPHeaders(ctx context.Context, h BlobHTTPHeaders, ac BlobAccessConditions) (*BlobSetHTTPHeadersResponse, error) {
+ ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := ac.ModifiedAccessConditions.pointers()
+ return b.blobClient.SetHTTPHeaders(ctx, nil,
+ &h.CacheControl, &h.ContentType, h.ContentMD5, &h.ContentEncoding, &h.ContentLanguage,
+ ac.LeaseAccessConditions.pointers(), ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag,
+ &h.ContentDisposition, nil)
+}
+
+// SetBlobMetadata changes a blob's metadata.
+// https://docs.microsoft.com/rest/api/storageservices/set-blob-metadata.
+func (b BlobURL) SetMetadata(ctx context.Context, metadata Metadata, ac BlobAccessConditions) (*BlobSetMetadataResponse, error) {
+ ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := ac.ModifiedAccessConditions.pointers()
+ return b.blobClient.SetMetadata(ctx, nil, metadata, ac.LeaseAccessConditions.pointers(),
+ nil, nil, EncryptionAlgorithmNone, // CPK
+ ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, nil)
+}
+
+// CreateSnapshot creates a read-only snapshot of a blob.
+// For more information, see https://docs.microsoft.com/rest/api/storageservices/snapshot-blob.
+func (b BlobURL) CreateSnapshot(ctx context.Context, metadata Metadata, ac BlobAccessConditions) (*BlobCreateSnapshotResponse, error) {
+ // CreateSnapshot does NOT panic if the user tries to create a snapshot using a URL that already has a snapshot query parameter
+ // because checking this would be a performance hit for a VERY unusual path and I don't think the common case should suffer this
+ // performance hit.
+ ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := ac.ModifiedAccessConditions.pointers()
+ return b.blobClient.CreateSnapshot(ctx, nil, metadata,
+ nil, nil, EncryptionAlgorithmNone, // CPK
+ ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, ac.LeaseAccessConditions.pointers(), nil)
+}
+
+// AcquireLease acquires a lease on the blob for write and delete operations. The lease duration must be between
+// 15 to 60 seconds, or infinite (-1).
+// For more information, see https://docs.microsoft.com/rest/api/storageservices/lease-blob.
+func (b BlobURL) AcquireLease(ctx context.Context, proposedID string, duration int32, ac ModifiedAccessConditions) (*BlobAcquireLeaseResponse, error) {
+ ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := ac.pointers()
+ return b.blobClient.AcquireLease(ctx, nil, &duration, &proposedID,
+ ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, nil)
+}
+
+// RenewLease renews the blob's previously-acquired lease.
+// For more information, see https://docs.microsoft.com/rest/api/storageservices/lease-blob.
+func (b BlobURL) RenewLease(ctx context.Context, leaseID string, ac ModifiedAccessConditions) (*BlobRenewLeaseResponse, error) {
+ ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := ac.pointers()
+ return b.blobClient.RenewLease(ctx, leaseID, nil,
+ ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, nil)
+}
+
+// ReleaseLease releases the blob's previously-acquired lease.
+// For more information, see https://docs.microsoft.com/rest/api/storageservices/lease-blob.
+func (b BlobURL) ReleaseLease(ctx context.Context, leaseID string, ac ModifiedAccessConditions) (*BlobReleaseLeaseResponse, error) {
+ ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := ac.pointers()
+ return b.blobClient.ReleaseLease(ctx, leaseID, nil,
+ ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, nil)
+}
+
+// BreakLease breaks the blob's previously-acquired lease (if it exists). Pass the LeaseBreakDefault (-1)
+// constant to break a fixed-duration lease when it expires or an infinite lease immediately.
+// For more information, see https://docs.microsoft.com/rest/api/storageservices/lease-blob.
+func (b BlobURL) BreakLease(ctx context.Context, breakPeriodInSeconds int32, ac ModifiedAccessConditions) (*BlobBreakLeaseResponse, error) {
+ ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := ac.pointers()
+ return b.blobClient.BreakLease(ctx, nil, leasePeriodPointer(breakPeriodInSeconds),
+ ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, nil)
+}
+
+// ChangeLease changes the blob's lease ID.
+// For more information, see https://docs.microsoft.com/rest/api/storageservices/lease-blob.
+func (b BlobURL) ChangeLease(ctx context.Context, leaseID string, proposedID string, ac ModifiedAccessConditions) (*BlobChangeLeaseResponse, error) {
+ ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := ac.pointers()
+ return b.blobClient.ChangeLease(ctx, leaseID, proposedID,
+ nil, ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, nil)
+}
+
+// LeaseBreakNaturally tells ContainerURL's or BlobURL's BreakLease method to break the lease using service semantics.
+const LeaseBreakNaturally = -1
+
+func leasePeriodPointer(period int32) (p *int32) {
+ if period != LeaseBreakNaturally {
+ p = &period
+ }
+ return nil
+}
+
+// StartCopyFromURL copies the data at the source URL to a blob.
+// For more information, see https://docs.microsoft.com/rest/api/storageservices/copy-blob.
+func (b BlobURL) StartCopyFromURL(ctx context.Context, source url.URL, metadata Metadata, srcac ModifiedAccessConditions, dstac BlobAccessConditions) (*BlobStartCopyFromURLResponse, error) {
+ srcIfModifiedSince, srcIfUnmodifiedSince, srcIfMatchETag, srcIfNoneMatchETag := srcac.pointers()
+ dstIfModifiedSince, dstIfUnmodifiedSince, dstIfMatchETag, dstIfNoneMatchETag := dstac.ModifiedAccessConditions.pointers()
+ dstLeaseID := dstac.LeaseAccessConditions.pointers()
+
+ return b.blobClient.StartCopyFromURL(ctx, source.String(), nil, metadata,
+ AccessTierNone, RehydratePriorityNone, srcIfModifiedSince, srcIfUnmodifiedSince,
+ srcIfMatchETag, srcIfNoneMatchETag,
+ dstIfModifiedSince, dstIfUnmodifiedSince,
+ dstIfMatchETag, dstIfNoneMatchETag,
+ dstLeaseID, nil)
+}
+
+// AbortCopyFromURL stops a pending copy that was previously started and leaves a destination blob with 0 length and metadata.
+// For more information, see https://docs.microsoft.com/rest/api/storageservices/abort-copy-blob.
+func (b BlobURL) AbortCopyFromURL(ctx context.Context, copyID string, ac LeaseAccessConditions) (*BlobAbortCopyFromURLResponse, error) {
+ return b.blobClient.AbortCopyFromURL(ctx, copyID, nil, ac.pointers(), nil)
+}
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/url_block_blob.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/url_block_blob.go
new file mode 100644
index 00000000..6fd35e2d
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/url_block_blob.go
@@ -0,0 +1,134 @@
+package azblob
+
+import (
+ "context"
+ "io"
+ "net/url"
+
+ "github.com/Azure/azure-pipeline-go/pipeline"
+)
+
+const (
+ // BlockBlobMaxUploadBlobBytes indicates the maximum number of bytes that can be sent in a call to Upload.
+ BlockBlobMaxUploadBlobBytes = 256 * 1024 * 1024 // 256MB
+
+ // BlockBlobMaxStageBlockBytes indicates the maximum number of bytes that can be sent in a call to StageBlock.
+ BlockBlobMaxStageBlockBytes = 100 * 1024 * 1024 // 100MB
+
+ // BlockBlobMaxBlocks indicates the maximum number of blocks allowed in a block blob.
+ BlockBlobMaxBlocks = 50000
+)
+
+// BlockBlobURL defines a set of operations applicable to block blobs.
+type BlockBlobURL struct {
+ BlobURL
+ bbClient blockBlobClient
+}
+
+// NewBlockBlobURL creates a BlockBlobURL object using the specified URL and request policy pipeline.
+func NewBlockBlobURL(url url.URL, p pipeline.Pipeline) BlockBlobURL {
+ blobClient := newBlobClient(url, p)
+ bbClient := newBlockBlobClient(url, p)
+ return BlockBlobURL{BlobURL: BlobURL{blobClient: blobClient}, bbClient: bbClient}
+}
+
+// WithPipeline creates a new BlockBlobURL object identical to the source but with the specific request policy pipeline.
+func (bb BlockBlobURL) WithPipeline(p pipeline.Pipeline) BlockBlobURL {
+ return NewBlockBlobURL(bb.blobClient.URL(), p)
+}
+
+// WithSnapshot creates a new BlockBlobURL object identical to the source but with the specified snapshot timestamp.
+// Pass "" to remove the snapshot returning a URL to the base blob.
+func (bb BlockBlobURL) WithSnapshot(snapshot string) BlockBlobURL {
+ p := NewBlobURLParts(bb.URL())
+ p.Snapshot = snapshot
+ return NewBlockBlobURL(p.URL(), bb.blobClient.Pipeline())
+}
+
+func (bb BlockBlobURL) GetAccountInfo(ctx context.Context) (*BlobGetAccountInfoResponse, error) {
+ return bb.blobClient.GetAccountInfo(ctx)
+}
+
+// Upload creates a new block blob or overwrites an existing block blob.
+// Updating an existing block blob overwrites any existing metadata on the blob. Partial updates are not
+// supported with Upload; the content of the existing blob is overwritten with the new content. To
+// perform a partial update of a block blob, use StageBlock and CommitBlockList.
+// This method panics if the stream is not at position 0.
+// Note that the http client closes the body stream after the request is sent to the service.
+// For more information, see https://docs.microsoft.com/rest/api/storageservices/put-blob.
+func (bb BlockBlobURL) Upload(ctx context.Context, body io.ReadSeeker, h BlobHTTPHeaders, metadata Metadata, ac BlobAccessConditions) (*BlockBlobUploadResponse, error) {
+ ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := ac.ModifiedAccessConditions.pointers()
+ count, err := validateSeekableStreamAt0AndGetCount(body)
+ if err != nil {
+ return nil, err
+ }
+ return bb.bbClient.Upload(ctx, body, count, nil, nil,
+ &h.ContentType, &h.ContentEncoding, &h.ContentLanguage, h.ContentMD5,
+ &h.CacheControl, metadata, ac.LeaseAccessConditions.pointers(), &h.ContentDisposition,
+ nil, nil, EncryptionAlgorithmNone, // CPK
+ AccessTierNone, ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag,
+ nil)
+}
+
+// StageBlock uploads the specified block to the block blob's "staging area" to be later committed by a call to CommitBlockList.
+// Note that the http client closes the body stream after the request is sent to the service.
+// For more information, see https://docs.microsoft.com/rest/api/storageservices/put-block.
+func (bb BlockBlobURL) StageBlock(ctx context.Context, base64BlockID string, body io.ReadSeeker, ac LeaseAccessConditions, transactionalMD5 []byte) (*BlockBlobStageBlockResponse, error) {
+ count, err := validateSeekableStreamAt0AndGetCount(body)
+ if err != nil {
+ return nil, err
+ }
+ return bb.bbClient.StageBlock(ctx, base64BlockID, count, body, transactionalMD5, nil, nil, ac.pointers(),
+ nil, nil, EncryptionAlgorithmNone, // CPK
+ nil)
+}
+
+// StageBlockFromURL copies the specified block from a source URL to the block blob's "staging area" to be later committed by a call to CommitBlockList.
+// If count is CountToEnd (0), then data is read from specified offset to the end.
+// For more information, see https://docs.microsoft.com/en-us/rest/api/storageservices/put-block-from-url.
+func (bb BlockBlobURL) StageBlockFromURL(ctx context.Context, base64BlockID string, sourceURL url.URL, offset int64, count int64, destinationAccessConditions LeaseAccessConditions, sourceAccessConditions ModifiedAccessConditions) (*BlockBlobStageBlockFromURLResponse, error) {
+ sourceIfModifiedSince, sourceIfUnmodifiedSince, sourceIfMatchETag, sourceIfNoneMatchETag := sourceAccessConditions.pointers()
+ return bb.bbClient.StageBlockFromURL(ctx, base64BlockID, 0, sourceURL.String(), httpRange{offset: offset, count: count}.pointers(), nil, nil, nil,
+ nil, nil, EncryptionAlgorithmNone, // CPK
+ destinationAccessConditions.pointers(), sourceIfModifiedSince, sourceIfUnmodifiedSince, sourceIfMatchETag, sourceIfNoneMatchETag, nil)
+}
+
+// CommitBlockList writes a blob by specifying the list of block IDs that make up the blob.
+// In order to be written as part of a blob, a block must have been successfully written
+// to the server in a prior PutBlock operation. You can call PutBlockList to update a blob
+// by uploading only those blocks that have changed, then committing the new and existing
+// blocks together. Any blocks not specified in the block list and permanently deleted.
+// For more information, see https://docs.microsoft.com/rest/api/storageservices/put-block-list.
+func (bb BlockBlobURL) CommitBlockList(ctx context.Context, base64BlockIDs []string, h BlobHTTPHeaders,
+ metadata Metadata, ac BlobAccessConditions) (*BlockBlobCommitBlockListResponse, error) {
+ ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := ac.ModifiedAccessConditions.pointers()
+ return bb.bbClient.CommitBlockList(ctx, BlockLookupList{Latest: base64BlockIDs}, nil,
+ &h.CacheControl, &h.ContentType, &h.ContentEncoding, &h.ContentLanguage, h.ContentMD5, nil, nil,
+ metadata, ac.LeaseAccessConditions.pointers(), &h.ContentDisposition,
+ nil, nil, EncryptionAlgorithmNone, // CPK
+ AccessTierNone,
+ ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, nil)
+}
+
+// GetBlockList returns the list of blocks that have been uploaded as part of a block blob using the specified block list filter.
+// For more information, see https://docs.microsoft.com/rest/api/storageservices/get-block-list.
+func (bb BlockBlobURL) GetBlockList(ctx context.Context, listType BlockListType, ac LeaseAccessConditions) (*BlockList, error) {
+ return bb.bbClient.GetBlockList(ctx, listType, nil, nil, ac.pointers(), nil)
+}
+
+// CopyFromURL synchronously copies the data at the source URL to a block blob, with sizes up to 256 MB.
+// For more information, see https://docs.microsoft.com/en-us/rest/api/storageservices/copy-blob-from-url.
+func (bb BlockBlobURL) CopyFromURL(ctx context.Context, source url.URL, metadata Metadata,
+ srcac ModifiedAccessConditions, dstac BlobAccessConditions, srcContentMD5 []byte) (*BlobCopyFromURLResponse, error) {
+
+ srcIfModifiedSince, srcIfUnmodifiedSince, srcIfMatchETag, srcIfNoneMatchETag := srcac.pointers()
+ dstIfModifiedSince, dstIfUnmodifiedSince, dstIfMatchETag, dstIfNoneMatchETag := dstac.ModifiedAccessConditions.pointers()
+ dstLeaseID := dstac.LeaseAccessConditions.pointers()
+
+ return bb.blobClient.CopyFromURL(ctx, source.String(), nil, metadata, AccessTierNone,
+ srcIfModifiedSince, srcIfUnmodifiedSince,
+ srcIfMatchETag, srcIfNoneMatchETag,
+ dstIfModifiedSince, dstIfUnmodifiedSince,
+ dstIfMatchETag, dstIfNoneMatchETag,
+ dstLeaseID, nil, srcContentMD5)
+}
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/url_container.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/url_container.go
new file mode 100644
index 00000000..801239d8
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/url_container.go
@@ -0,0 +1,299 @@
+package azblob
+
+import (
+ "bytes"
+ "context"
+ "errors"
+ "fmt"
+ "net/url"
+
+ "github.com/Azure/azure-pipeline-go/pipeline"
+)
+
+// A ContainerURL represents a URL to the Azure Storage container allowing you to manipulate its blobs.
+type ContainerURL struct {
+ client containerClient
+}
+
+// NewContainerURL creates a ContainerURL object using the specified URL and request policy pipeline.
+func NewContainerURL(url url.URL, p pipeline.Pipeline) ContainerURL {
+ client := newContainerClient(url, p)
+ return ContainerURL{client: client}
+}
+
+// URL returns the URL endpoint used by the ContainerURL object.
+func (c ContainerURL) URL() url.URL {
+ return c.client.URL()
+}
+
+// String returns the URL as a string.
+func (c ContainerURL) String() string {
+ u := c.URL()
+ return u.String()
+}
+
+func (c ContainerURL) GetAccountInfo(ctx context.Context) (*ContainerGetAccountInfoResponse, error) {
+ return c.client.GetAccountInfo(ctx)
+}
+
+// WithPipeline creates a new ContainerURL object identical to the source but with the specified request policy pipeline.
+func (c ContainerURL) WithPipeline(p pipeline.Pipeline) ContainerURL {
+ return NewContainerURL(c.URL(), p)
+}
+
+// NewBlobURL creates a new BlobURL object by concatenating blobName to the end of
+// ContainerURL's URL. The new BlobURL uses the same request policy pipeline as the ContainerURL.
+// To change the pipeline, create the BlobURL and then call its WithPipeline method passing in the
+// desired pipeline object. Or, call this package's NewBlobURL instead of calling this object's
+// NewBlobURL method.
+func (c ContainerURL) NewBlobURL(blobName string) BlobURL {
+ blobURL := appendToURLPath(c.URL(), blobName)
+ return NewBlobURL(blobURL, c.client.Pipeline())
+}
+
+// NewAppendBlobURL creates a new AppendBlobURL object by concatenating blobName to the end of
+// ContainerURL's URL. The new AppendBlobURL uses the same request policy pipeline as the ContainerURL.
+// To change the pipeline, create the AppendBlobURL and then call its WithPipeline method passing in the
+// desired pipeline object. Or, call this package's NewAppendBlobURL instead of calling this object's
+// NewAppendBlobURL method.
+func (c ContainerURL) NewAppendBlobURL(blobName string) AppendBlobURL {
+ blobURL := appendToURLPath(c.URL(), blobName)
+ return NewAppendBlobURL(blobURL, c.client.Pipeline())
+}
+
+// NewBlockBlobURL creates a new BlockBlobURL object by concatenating blobName to the end of
+// ContainerURL's URL. The new BlockBlobURL uses the same request policy pipeline as the ContainerURL.
+// To change the pipeline, create the BlockBlobURL and then call its WithPipeline method passing in the
+// desired pipeline object. Or, call this package's NewBlockBlobURL instead of calling this object's
+// NewBlockBlobURL method.
+func (c ContainerURL) NewBlockBlobURL(blobName string) BlockBlobURL {
+ blobURL := appendToURLPath(c.URL(), blobName)
+ return NewBlockBlobURL(blobURL, c.client.Pipeline())
+}
+
+// NewPageBlobURL creates a new PageBlobURL object by concatenating blobName to the end of
+// ContainerURL's URL. The new PageBlobURL uses the same request policy pipeline as the ContainerURL.
+// To change the pipeline, create the PageBlobURL and then call its WithPipeline method passing in the
+// desired pipeline object. Or, call this package's NewPageBlobURL instead of calling this object's
+// NewPageBlobURL method.
+func (c ContainerURL) NewPageBlobURL(blobName string) PageBlobURL {
+ blobURL := appendToURLPath(c.URL(), blobName)
+ return NewPageBlobURL(blobURL, c.client.Pipeline())
+}
+
+// Create creates a new container within a storage account. If a container with the same name already exists, the operation fails.
+// For more information, see https://docs.microsoft.com/rest/api/storageservices/create-container.
+func (c ContainerURL) Create(ctx context.Context, metadata Metadata, publicAccessType PublicAccessType) (*ContainerCreateResponse, error) {
+ return c.client.Create(ctx, nil, metadata, publicAccessType, nil)
+}
+
+// Delete marks the specified container for deletion. The container and any blobs contained within it are later deleted during garbage collection.
+// For more information, see https://docs.microsoft.com/rest/api/storageservices/delete-container.
+func (c ContainerURL) Delete(ctx context.Context, ac ContainerAccessConditions) (*ContainerDeleteResponse, error) {
+ if ac.IfMatch != ETagNone || ac.IfNoneMatch != ETagNone {
+ return nil, errors.New("the IfMatch and IfNoneMatch access conditions must have their default values because they are ignored by the service")
+ }
+
+ ifModifiedSince, ifUnmodifiedSince, _, _ := ac.ModifiedAccessConditions.pointers()
+ return c.client.Delete(ctx, nil, ac.LeaseAccessConditions.pointers(),
+ ifModifiedSince, ifUnmodifiedSince, nil)
+}
+
+// GetProperties returns the container's properties.
+// For more information, see https://docs.microsoft.com/rest/api/storageservices/get-container-metadata.
+func (c ContainerURL) GetProperties(ctx context.Context, ac LeaseAccessConditions) (*ContainerGetPropertiesResponse, error) {
+ // NOTE: GetMetadata actually calls GetProperties internally because GetProperties returns the metadata AND the properties.
+ // This allows us to not expose a GetProperties method at all simplifying the API.
+ return c.client.GetProperties(ctx, nil, ac.pointers(), nil)
+}
+
+// SetMetadata sets the container's metadata.
+// For more information, see https://docs.microsoft.com/rest/api/storageservices/set-container-metadata.
+func (c ContainerURL) SetMetadata(ctx context.Context, metadata Metadata, ac ContainerAccessConditions) (*ContainerSetMetadataResponse, error) {
+ if !ac.IfUnmodifiedSince.IsZero() || ac.IfMatch != ETagNone || ac.IfNoneMatch != ETagNone {
+ return nil, errors.New("the IfUnmodifiedSince, IfMatch, and IfNoneMatch must have their default values because they are ignored by the blob service")
+ }
+ ifModifiedSince, _, _, _ := ac.ModifiedAccessConditions.pointers()
+ return c.client.SetMetadata(ctx, nil, ac.LeaseAccessConditions.pointers(), metadata, ifModifiedSince, nil)
+}
+
+// GetAccessPolicy returns the container's access policy. The access policy indicates whether container's blobs may be accessed publicly.
+// For more information, see https://docs.microsoft.com/rest/api/storageservices/get-container-acl.
+func (c ContainerURL) GetAccessPolicy(ctx context.Context, ac LeaseAccessConditions) (*SignedIdentifiers, error) {
+ return c.client.GetAccessPolicy(ctx, nil, ac.pointers(), nil)
+}
+
+// The AccessPolicyPermission type simplifies creating the permissions string for a container's access policy.
+// Initialize an instance of this type and then call its String method to set AccessPolicy's Permission field.
+type AccessPolicyPermission struct {
+ Read, Add, Create, Write, Delete, List bool
+}
+
+// String produces the access policy permission string for an Azure Storage container.
+// Call this method to set AccessPolicy's Permission field.
+func (p AccessPolicyPermission) String() string {
+ var b bytes.Buffer
+ if p.Read {
+ b.WriteRune('r')
+ }
+ if p.Add {
+ b.WriteRune('a')
+ }
+ if p.Create {
+ b.WriteRune('c')
+ }
+ if p.Write {
+ b.WriteRune('w')
+ }
+ if p.Delete {
+ b.WriteRune('d')
+ }
+ if p.List {
+ b.WriteRune('l')
+ }
+ return b.String()
+}
+
+// Parse initializes the AccessPolicyPermission's fields from a string.
+func (p *AccessPolicyPermission) Parse(s string) error {
+ *p = AccessPolicyPermission{} // Clear the flags
+ for _, r := range s {
+ switch r {
+ case 'r':
+ p.Read = true
+ case 'a':
+ p.Add = true
+ case 'c':
+ p.Create = true
+ case 'w':
+ p.Write = true
+ case 'd':
+ p.Delete = true
+ case 'l':
+ p.List = true
+ default:
+ return fmt.Errorf("invalid permission: '%v'", r)
+ }
+ }
+ return nil
+}
+
+// SetAccessPolicy sets the container's permissions. The access policy indicates whether blobs in a container may be accessed publicly.
+// For more information, see https://docs.microsoft.com/rest/api/storageservices/set-container-acl.
+func (c ContainerURL) SetAccessPolicy(ctx context.Context, accessType PublicAccessType, si []SignedIdentifier,
+ ac ContainerAccessConditions) (*ContainerSetAccessPolicyResponse, error) {
+ if ac.IfMatch != ETagNone || ac.IfNoneMatch != ETagNone {
+ return nil, errors.New("the IfMatch and IfNoneMatch access conditions must have their default values because they are ignored by the service")
+ }
+ ifModifiedSince, ifUnmodifiedSince, _, _ := ac.ModifiedAccessConditions.pointers()
+ return c.client.SetAccessPolicy(ctx, si, nil, ac.LeaseAccessConditions.pointers(),
+ accessType, ifModifiedSince, ifUnmodifiedSince, nil)
+}
+
+// AcquireLease acquires a lease on the container for delete operations. The lease duration must be between 15 to 60 seconds, or infinite (-1).
+// For more information, see https://docs.microsoft.com/rest/api/storageservices/lease-container.
+func (c ContainerURL) AcquireLease(ctx context.Context, proposedID string, duration int32, ac ModifiedAccessConditions) (*ContainerAcquireLeaseResponse, error) {
+ ifModifiedSince, ifUnmodifiedSince, _, _ := ac.pointers()
+ return c.client.AcquireLease(ctx, nil, &duration, &proposedID,
+ ifModifiedSince, ifUnmodifiedSince, nil)
+}
+
+// RenewLease renews the container's previously-acquired lease.
+// For more information, see https://docs.microsoft.com/rest/api/storageservices/lease-container.
+func (c ContainerURL) RenewLease(ctx context.Context, leaseID string, ac ModifiedAccessConditions) (*ContainerRenewLeaseResponse, error) {
+ ifModifiedSince, ifUnmodifiedSince, _, _ := ac.pointers()
+ return c.client.RenewLease(ctx, leaseID, nil, ifModifiedSince, ifUnmodifiedSince, nil)
+}
+
+// ReleaseLease releases the container's previously-acquired lease.
+// For more information, see https://docs.microsoft.com/rest/api/storageservices/lease-container.
+func (c ContainerURL) ReleaseLease(ctx context.Context, leaseID string, ac ModifiedAccessConditions) (*ContainerReleaseLeaseResponse, error) {
+ ifModifiedSince, ifUnmodifiedSince, _, _ := ac.pointers()
+ return c.client.ReleaseLease(ctx, leaseID, nil, ifModifiedSince, ifUnmodifiedSince, nil)
+}
+
+// BreakLease breaks the container's previously-acquired lease (if it exists).
+// For more information, see https://docs.microsoft.com/rest/api/storageservices/lease-container.
+func (c ContainerURL) BreakLease(ctx context.Context, period int32, ac ModifiedAccessConditions) (*ContainerBreakLeaseResponse, error) {
+ ifModifiedSince, ifUnmodifiedSince, _, _ := ac.pointers()
+ return c.client.BreakLease(ctx, nil, leasePeriodPointer(period), ifModifiedSince, ifUnmodifiedSince, nil)
+}
+
+// ChangeLease changes the container's lease ID.
+// For more information, see https://docs.microsoft.com/rest/api/storageservices/lease-container.
+func (c ContainerURL) ChangeLease(ctx context.Context, leaseID string, proposedID string, ac ModifiedAccessConditions) (*ContainerChangeLeaseResponse, error) {
+ ifModifiedSince, ifUnmodifiedSince, _, _ := ac.pointers()
+ return c.client.ChangeLease(ctx, leaseID, proposedID, nil, ifModifiedSince, ifUnmodifiedSince, nil)
+}
+
+// ListBlobsFlatSegment returns a single segment of blobs starting from the specified Marker. Use an empty
+// Marker to start enumeration from the beginning. Blob names are returned in lexicographic order.
+// After getting a segment, process it, and then call ListBlobsFlatSegment again (passing the the
+// previously-returned Marker) to get the next segment.
+// For more information, see https://docs.microsoft.com/rest/api/storageservices/list-blobs.
+func (c ContainerURL) ListBlobsFlatSegment(ctx context.Context, marker Marker, o ListBlobsSegmentOptions) (*ListBlobsFlatSegmentResponse, error) {
+ prefix, include, maxResults := o.pointers()
+ return c.client.ListBlobFlatSegment(ctx, prefix, marker.Val, maxResults, include, nil, nil)
+}
+
+// ListBlobsHierarchySegment returns a single segment of blobs starting from the specified Marker. Use an empty
+// Marker to start enumeration from the beginning. Blob names are returned in lexicographic order.
+// After getting a segment, process it, and then call ListBlobsHierarchicalSegment again (passing the the
+// previously-returned Marker) to get the next segment.
+// For more information, see https://docs.microsoft.com/rest/api/storageservices/list-blobs.
+func (c ContainerURL) ListBlobsHierarchySegment(ctx context.Context, marker Marker, delimiter string, o ListBlobsSegmentOptions) (*ListBlobsHierarchySegmentResponse, error) {
+ if o.Details.Snapshots {
+ return nil, errors.New("snapshots are not supported in this listing operation")
+ }
+ prefix, include, maxResults := o.pointers()
+ return c.client.ListBlobHierarchySegment(ctx, delimiter, prefix, marker.Val, maxResults, include, nil, nil)
+}
+
+// ListBlobsSegmentOptions defines options available when calling ListBlobs.
+type ListBlobsSegmentOptions struct {
+ Details BlobListingDetails // No IncludeType header is produced if ""
+ Prefix string // No Prefix header is produced if ""
+
+ // SetMaxResults sets the maximum desired results you want the service to return. Note, the
+ // service may return fewer results than requested.
+ // MaxResults=0 means no 'MaxResults' header specified.
+ MaxResults int32
+}
+
+func (o *ListBlobsSegmentOptions) pointers() (prefix *string, include []ListBlobsIncludeItemType, maxResults *int32) {
+ if o.Prefix != "" {
+ prefix = &o.Prefix
+ }
+ include = o.Details.slice()
+ if o.MaxResults != 0 {
+ maxResults = &o.MaxResults
+ }
+ return
+}
+
+// BlobListingDetails indicates what additional information the service should return with each blob.
+type BlobListingDetails struct {
+ Copy, Metadata, Snapshots, UncommittedBlobs, Deleted bool
+}
+
+// string produces the Include query parameter's value.
+func (d *BlobListingDetails) slice() []ListBlobsIncludeItemType {
+ items := []ListBlobsIncludeItemType{}
+ // NOTE: Multiple strings MUST be appended in alphabetic order or signing the string for authentication fails!
+ if d.Copy {
+ items = append(items, ListBlobsIncludeItemCopy)
+ }
+ if d.Deleted {
+ items = append(items, ListBlobsIncludeItemDeleted)
+ }
+ if d.Metadata {
+ items = append(items, ListBlobsIncludeItemMetadata)
+ }
+ if d.Snapshots {
+ items = append(items, ListBlobsIncludeItemSnapshots)
+ }
+ if d.UncommittedBlobs {
+ items = append(items, ListBlobsIncludeItemUncommittedblobs)
+ }
+ return items
+}
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/url_page_blob.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/url_page_blob.go
new file mode 100644
index 00000000..76fac2aa
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/url_page_blob.go
@@ -0,0 +1,233 @@
+package azblob
+
+import (
+ "context"
+ "fmt"
+ "io"
+ "net/url"
+ "strconv"
+
+ "github.com/Azure/azure-pipeline-go/pipeline"
+)
+
+const (
+ // PageBlobPageBytes indicates the number of bytes in a page (512).
+ PageBlobPageBytes = 512
+
+ // PageBlobMaxPutPagesBytes indicates the maximum number of bytes that can be sent in a call to PutPage.
+ PageBlobMaxUploadPagesBytes = 4 * 1024 * 1024 // 4MB
+)
+
+// PageBlobURL defines a set of operations applicable to page blobs.
+type PageBlobURL struct {
+ BlobURL
+ pbClient pageBlobClient
+}
+
+// NewPageBlobURL creates a PageBlobURL object using the specified URL and request policy pipeline.
+func NewPageBlobURL(url url.URL, p pipeline.Pipeline) PageBlobURL {
+ blobClient := newBlobClient(url, p)
+ pbClient := newPageBlobClient(url, p)
+ return PageBlobURL{BlobURL: BlobURL{blobClient: blobClient}, pbClient: pbClient}
+}
+
+// WithPipeline creates a new PageBlobURL object identical to the source but with the specific request policy pipeline.
+func (pb PageBlobURL) WithPipeline(p pipeline.Pipeline) PageBlobURL {
+ return NewPageBlobURL(pb.blobClient.URL(), p)
+}
+
+// WithSnapshot creates a new PageBlobURL object identical to the source but with the specified snapshot timestamp.
+// Pass "" to remove the snapshot returning a URL to the base blob.
+func (pb PageBlobURL) WithSnapshot(snapshot string) PageBlobURL {
+ p := NewBlobURLParts(pb.URL())
+ p.Snapshot = snapshot
+ return NewPageBlobURL(p.URL(), pb.blobClient.Pipeline())
+}
+
+func (pb PageBlobURL) GetAccountInfo(ctx context.Context) (*BlobGetAccountInfoResponse, error) {
+ return pb.blobClient.GetAccountInfo(ctx)
+}
+
+// Create creates a page blob of the specified length. Call PutPage to upload data data to a page blob.
+// For more information, see https://docs.microsoft.com/rest/api/storageservices/put-blob.
+func (pb PageBlobURL) Create(ctx context.Context, size int64, sequenceNumber int64, h BlobHTTPHeaders, metadata Metadata, ac BlobAccessConditions) (*PageBlobCreateResponse, error) {
+ ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := ac.ModifiedAccessConditions.pointers()
+ return pb.pbClient.Create(ctx, 0, size, nil, PremiumPageBlobAccessTierNone,
+ &h.ContentType, &h.ContentEncoding, &h.ContentLanguage, h.ContentMD5, &h.CacheControl,
+ metadata, ac.LeaseAccessConditions.pointers(), &h.ContentDisposition,
+ nil, nil, EncryptionAlgorithmNone, // CPK
+ ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, &sequenceNumber, nil)
+}
+
+// UploadPages writes 1 or more pages to the page blob. The start offset and the stream size must be a multiple of 512 bytes.
+// This method panics if the stream is not at position 0.
+// Note that the http client closes the body stream after the request is sent to the service.
+// For more information, see https://docs.microsoft.com/rest/api/storageservices/put-page.
+func (pb PageBlobURL) UploadPages(ctx context.Context, offset int64, body io.ReadSeeker, ac PageBlobAccessConditions, transactionalMD5 []byte) (*PageBlobUploadPagesResponse, error) {
+ count, err := validateSeekableStreamAt0AndGetCount(body)
+ if err != nil {
+ return nil, err
+ }
+ ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := ac.ModifiedAccessConditions.pointers()
+ ifSequenceNumberLessThanOrEqual, ifSequenceNumberLessThan, ifSequenceNumberEqual := ac.SequenceNumberAccessConditions.pointers()
+ return pb.pbClient.UploadPages(ctx, body, count, transactionalMD5, nil, nil,
+ PageRange{Start: offset, End: offset + count - 1}.pointers(),
+ ac.LeaseAccessConditions.pointers(),
+ nil, nil, EncryptionAlgorithmNone, // CPK
+ ifSequenceNumberLessThanOrEqual, ifSequenceNumberLessThan, ifSequenceNumberEqual,
+ ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, nil)
+}
+
+// UploadPagesFromURL copies 1 or more pages from a source URL to the page blob.
+// The sourceOffset specifies the start offset of source data to copy from.
+// The destOffset specifies the start offset of data in page blob will be written to.
+// The count must be a multiple of 512 bytes.
+// For more information, see https://docs.microsoft.com/rest/api/storageservices/put-page-from-url.
+func (pb PageBlobURL) UploadPagesFromURL(ctx context.Context, sourceURL url.URL, sourceOffset int64, destOffset int64, count int64, transactionalMD5 []byte, destinationAccessConditions PageBlobAccessConditions, sourceAccessConditions ModifiedAccessConditions) (*PageBlobUploadPagesFromURLResponse, error) {
+ ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := destinationAccessConditions.ModifiedAccessConditions.pointers()
+ sourceIfModifiedSince, sourceIfUnmodifiedSince, sourceIfMatchETag, sourceIfNoneMatchETag := sourceAccessConditions.pointers()
+ ifSequenceNumberLessThanOrEqual, ifSequenceNumberLessThan, ifSequenceNumberEqual := destinationAccessConditions.SequenceNumberAccessConditions.pointers()
+ return pb.pbClient.UploadPagesFromURL(ctx, sourceURL.String(), *PageRange{Start: sourceOffset, End: sourceOffset + count - 1}.pointers(), 0,
+ *PageRange{Start: destOffset, End: destOffset + count - 1}.pointers(), transactionalMD5, nil, nil,
+ nil, nil, EncryptionAlgorithmNone, // CPK
+ destinationAccessConditions.LeaseAccessConditions.pointers(),
+ ifSequenceNumberLessThanOrEqual, ifSequenceNumberLessThan, ifSequenceNumberEqual,
+ ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, sourceIfModifiedSince, sourceIfUnmodifiedSince, sourceIfMatchETag, sourceIfNoneMatchETag, nil)
+}
+
+// ClearPages frees the specified pages from the page blob.
+// For more information, see https://docs.microsoft.com/rest/api/storageservices/put-page.
+func (pb PageBlobURL) ClearPages(ctx context.Context, offset int64, count int64, ac PageBlobAccessConditions) (*PageBlobClearPagesResponse, error) {
+ ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := ac.ModifiedAccessConditions.pointers()
+ ifSequenceNumberLessThanOrEqual, ifSequenceNumberLessThan, ifSequenceNumberEqual := ac.SequenceNumberAccessConditions.pointers()
+ return pb.pbClient.ClearPages(ctx, 0, nil,
+ PageRange{Start: offset, End: offset + count - 1}.pointers(),
+ ac.LeaseAccessConditions.pointers(),
+ nil, nil, EncryptionAlgorithmNone, // CPK
+ ifSequenceNumberLessThanOrEqual, ifSequenceNumberLessThan,
+ ifSequenceNumberEqual, ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, nil)
+}
+
+// GetPageRanges returns the list of valid page ranges for a page blob or snapshot of a page blob.
+// For more information, see https://docs.microsoft.com/rest/api/storageservices/get-page-ranges.
+func (pb PageBlobURL) GetPageRanges(ctx context.Context, offset int64, count int64, ac BlobAccessConditions) (*PageList, error) {
+ ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := ac.ModifiedAccessConditions.pointers()
+ return pb.pbClient.GetPageRanges(ctx, nil, nil,
+ httpRange{offset: offset, count: count}.pointers(),
+ ac.LeaseAccessConditions.pointers(),
+ ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, nil)
+}
+
+// GetPageRangesDiff gets the collection of page ranges that differ between a specified snapshot and this page blob.
+// For more information, see https://docs.microsoft.com/rest/api/storageservices/get-page-ranges.
+func (pb PageBlobURL) GetPageRangesDiff(ctx context.Context, offset int64, count int64, prevSnapshot string, ac BlobAccessConditions) (*PageList, error) {
+ ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := ac.ModifiedAccessConditions.pointers()
+ return pb.pbClient.GetPageRangesDiff(ctx, nil, nil, &prevSnapshot,
+ httpRange{offset: offset, count: count}.pointers(),
+ ac.LeaseAccessConditions.pointers(),
+ ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag,
+ nil)
+}
+
+// Resize resizes the page blob to the specified size (which must be a multiple of 512).
+// For more information, see https://docs.microsoft.com/rest/api/storageservices/set-blob-properties.
+func (pb PageBlobURL) Resize(ctx context.Context, size int64, ac BlobAccessConditions) (*PageBlobResizeResponse, error) {
+ ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := ac.ModifiedAccessConditions.pointers()
+ return pb.pbClient.Resize(ctx, size, nil, ac.LeaseAccessConditions.pointers(),
+ nil, nil, EncryptionAlgorithmNone, // CPK
+ ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, nil)
+}
+
+// SetSequenceNumber sets the page blob's sequence number.
+func (pb PageBlobURL) UpdateSequenceNumber(ctx context.Context, action SequenceNumberActionType, sequenceNumber int64,
+ ac BlobAccessConditions) (*PageBlobUpdateSequenceNumberResponse, error) {
+ sn := &sequenceNumber
+ if action == SequenceNumberActionIncrement {
+ sn = nil
+ }
+ ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch := ac.ModifiedAccessConditions.pointers()
+ return pb.pbClient.UpdateSequenceNumber(ctx, action, nil,
+ ac.LeaseAccessConditions.pointers(), ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch,
+ sn, nil)
+}
+
+// StartIncrementalCopy begins an operation to start an incremental copy from one page blob's snapshot to this page blob.
+// The snapshot is copied such that only the differential changes between the previously copied snapshot are transferred to the destination.
+// The copied snapshots are complete copies of the original snapshot and can be read or copied from as usual.
+// For more information, see https://docs.microsoft.com/rest/api/storageservices/incremental-copy-blob and
+// https://docs.microsoft.com/en-us/azure/virtual-machines/windows/incremental-snapshots.
+func (pb PageBlobURL) StartCopyIncremental(ctx context.Context, source url.URL, snapshot string, ac BlobAccessConditions) (*PageBlobCopyIncrementalResponse, error) {
+ ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := ac.ModifiedAccessConditions.pointers()
+ qp := source.Query()
+ qp.Set("snapshot", snapshot)
+ source.RawQuery = qp.Encode()
+ return pb.pbClient.CopyIncremental(ctx, source.String(), nil,
+ ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, nil)
+}
+
+func (pr PageRange) pointers() *string {
+ endOffset := strconv.FormatInt(int64(pr.End), 10)
+ asString := fmt.Sprintf("bytes=%v-%s", pr.Start, endOffset)
+ return &asString
+}
+
+type PageBlobAccessConditions struct {
+ ModifiedAccessConditions
+ LeaseAccessConditions
+ SequenceNumberAccessConditions
+}
+
+// SequenceNumberAccessConditions identifies page blob-specific access conditions which you optionally set.
+type SequenceNumberAccessConditions struct {
+ // IfSequenceNumberLessThan ensures that the page blob operation succeeds
+ // only if the blob's sequence number is less than a value.
+ // IfSequenceNumberLessThan=0 means no 'IfSequenceNumberLessThan' header specified.
+ // IfSequenceNumberLessThan>0 means 'IfSequenceNumberLessThan' header specified with its value
+ // IfSequenceNumberLessThan==-1 means 'IfSequenceNumberLessThan' header specified with a value of 0
+ IfSequenceNumberLessThan int64
+
+ // IfSequenceNumberLessThanOrEqual ensures that the page blob operation succeeds
+ // only if the blob's sequence number is less than or equal to a value.
+ // IfSequenceNumberLessThanOrEqual=0 means no 'IfSequenceNumberLessThanOrEqual' header specified.
+ // IfSequenceNumberLessThanOrEqual>0 means 'IfSequenceNumberLessThanOrEqual' header specified with its value
+ // IfSequenceNumberLessThanOrEqual=-1 means 'IfSequenceNumberLessThanOrEqual' header specified with a value of 0
+ IfSequenceNumberLessThanOrEqual int64
+
+ // IfSequenceNumberEqual ensures that the page blob operation succeeds
+ // only if the blob's sequence number is equal to a value.
+ // IfSequenceNumberEqual=0 means no 'IfSequenceNumberEqual' header specified.
+ // IfSequenceNumberEqual>0 means 'IfSequenceNumberEqual' header specified with its value
+ // IfSequenceNumberEqual=-1 means 'IfSequenceNumberEqual' header specified with a value of 0
+ IfSequenceNumberEqual int64
+}
+
+// pointers is for internal infrastructure. It returns the fields as pointers.
+func (ac SequenceNumberAccessConditions) pointers() (snltoe *int64, snlt *int64, sne *int64) {
+ var zero int64 // Defaults to 0
+ switch ac.IfSequenceNumberLessThan {
+ case -1:
+ snlt = &zero
+ case 0:
+ snlt = nil
+ default:
+ snlt = &ac.IfSequenceNumberLessThan
+ }
+
+ switch ac.IfSequenceNumberLessThanOrEqual {
+ case -1:
+ snltoe = &zero
+ case 0:
+ snltoe = nil
+ default:
+ snltoe = &ac.IfSequenceNumberLessThanOrEqual
+ }
+ switch ac.IfSequenceNumberEqual {
+ case -1:
+ sne = &zero
+ case 0:
+ sne = nil
+ default:
+ sne = &ac.IfSequenceNumberEqual
+ }
+ return
+}
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/url_service.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/url_service.go
new file mode 100644
index 00000000..5d7481ad
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/url_service.go
@@ -0,0 +1,159 @@
+package azblob
+
+import (
+ "context"
+ "net/url"
+ "strings"
+ "time"
+
+ "github.com/Azure/azure-pipeline-go/pipeline"
+)
+
+const (
+ // ContainerNameRoot is the special Azure Storage name used to identify a storage account's root container.
+ ContainerNameRoot = "$root"
+
+ // ContainerNameLogs is the special Azure Storage name used to identify a storage account's logs container.
+ ContainerNameLogs = "$logs"
+)
+
+// A ServiceURL represents a URL to the Azure Storage Blob service allowing you to manipulate blob containers.
+type ServiceURL struct {
+ client serviceClient
+}
+
+// NewServiceURL creates a ServiceURL object using the specified URL and request policy pipeline.
+func NewServiceURL(primaryURL url.URL, p pipeline.Pipeline) ServiceURL {
+ client := newServiceClient(primaryURL, p)
+ return ServiceURL{client: client}
+}
+
+//GetUserDelegationCredential obtains a UserDelegationKey object using the base ServiceURL object.
+//OAuth is required for this call, as well as any role that can delegate access to the storage account.
+func (s ServiceURL) GetUserDelegationCredential(ctx context.Context, info KeyInfo, timeout *int32, requestID *string) (UserDelegationCredential, error) {
+ sc := newServiceClient(s.client.url, s.client.p)
+ udk, err := sc.GetUserDelegationKey(ctx, info, timeout, requestID)
+ if err != nil {
+ return UserDelegationCredential{}, err
+ }
+ return NewUserDelegationCredential(strings.Split(s.client.url.Host, ".")[0], *udk), nil
+}
+
+//TODO this was supposed to be generated
+//NewKeyInfo creates a new KeyInfo struct with the correct time formatting & conversion
+func NewKeyInfo(Start, Expiry time.Time) KeyInfo {
+ return KeyInfo{
+ Start: Start.UTC().Format(SASTimeFormat),
+ Expiry: Expiry.UTC().Format(SASTimeFormat),
+ }
+}
+
+func (s ServiceURL) GetAccountInfo(ctx context.Context) (*ServiceGetAccountInfoResponse, error) {
+ return s.client.GetAccountInfo(ctx)
+}
+
+// URL returns the URL endpoint used by the ServiceURL object.
+func (s ServiceURL) URL() url.URL {
+ return s.client.URL()
+}
+
+// String returns the URL as a string.
+func (s ServiceURL) String() string {
+ u := s.URL()
+ return u.String()
+}
+
+// WithPipeline creates a new ServiceURL object identical to the source but with the specified request policy pipeline.
+func (s ServiceURL) WithPipeline(p pipeline.Pipeline) ServiceURL {
+ return NewServiceURL(s.URL(), p)
+}
+
+// NewContainerURL creates a new ContainerURL object by concatenating containerName to the end of
+// ServiceURL's URL. The new ContainerURL uses the same request policy pipeline as the ServiceURL.
+// To change the pipeline, create the ContainerURL and then call its WithPipeline method passing in the
+// desired pipeline object. Or, call this package's NewContainerURL instead of calling this object's
+// NewContainerURL method.
+func (s ServiceURL) NewContainerURL(containerName string) ContainerURL {
+ containerURL := appendToURLPath(s.URL(), containerName)
+ return NewContainerURL(containerURL, s.client.Pipeline())
+}
+
+// appendToURLPath appends a string to the end of a URL's path (prefixing the string with a '/' if required)
+func appendToURLPath(u url.URL, name string) url.URL {
+ // e.g. "https://ms.com/a/b/?k1=v1&k2=v2#f"
+ // When you call url.Parse() this is what you'll get:
+ // Scheme: "https"
+ // Opaque: ""
+ // User: nil
+ // Host: "ms.com"
+ // Path: "/a/b/" This should start with a / and it might or might not have a trailing slash
+ // RawPath: ""
+ // ForceQuery: false
+ // RawQuery: "k1=v1&k2=v2"
+ // Fragment: "f"
+ if len(u.Path) == 0 || u.Path[len(u.Path)-1] != '/' {
+ u.Path += "/" // Append "/" to end before appending name
+ }
+ u.Path += name
+ return u
+}
+
+// ListContainersFlatSegment returns a single segment of containers starting from the specified Marker. Use an empty
+// Marker to start enumeration from the beginning. Container names are returned in lexicographic order.
+// After getting a segment, process it, and then call ListContainersFlatSegment again (passing the the
+// previously-returned Marker) to get the next segment. For more information, see
+// https://docs.microsoft.com/rest/api/storageservices/list-containers2.
+func (s ServiceURL) ListContainersSegment(ctx context.Context, marker Marker, o ListContainersSegmentOptions) (*ListContainersSegmentResponse, error) {
+ prefix, include, maxResults := o.pointers()
+ return s.client.ListContainersSegment(ctx, prefix, marker.Val, maxResults, include, nil, nil)
+}
+
+// ListContainersOptions defines options available when calling ListContainers.
+type ListContainersSegmentOptions struct {
+ Detail ListContainersDetail // No IncludeType header is produced if ""
+ Prefix string // No Prefix header is produced if ""
+ MaxResults int32 // 0 means unspecified
+ // TODO: update swagger to generate this type?
+}
+
+func (o *ListContainersSegmentOptions) pointers() (prefix *string, include ListContainersIncludeType, maxResults *int32) {
+ if o.Prefix != "" {
+ prefix = &o.Prefix
+ }
+ if o.MaxResults != 0 {
+ maxResults = &o.MaxResults
+ }
+ include = ListContainersIncludeType(o.Detail.string())
+ return
+}
+
+// ListContainersFlatDetail indicates what additional information the service should return with each container.
+type ListContainersDetail struct {
+ // Tells the service whether to return metadata for each container.
+ Metadata bool
+}
+
+// string produces the Include query parameter's value.
+func (d *ListContainersDetail) string() string {
+ items := make([]string, 0, 1)
+ // NOTE: Multiple strings MUST be appended in alphabetic order or signing the string for authentication fails!
+ if d.Metadata {
+ items = append(items, string(ListContainersIncludeMetadata))
+ }
+ if len(items) > 0 {
+ return strings.Join(items, ",")
+ }
+ return string(ListContainersIncludeNone)
+}
+
+func (bsu ServiceURL) GetProperties(ctx context.Context) (*StorageServiceProperties, error) {
+ return bsu.client.GetProperties(ctx, nil, nil)
+}
+
+func (bsu ServiceURL) SetProperties(ctx context.Context, properties StorageServiceProperties) (*ServiceSetPropertiesResponse, error) {
+ return bsu.client.SetProperties(ctx, properties, nil, nil)
+}
+
+func (bsu ServiceURL) GetStatistics(ctx context.Context) (*StorageServiceStats, error) {
+ return bsu.client.GetStatistics(ctx, nil, nil)
+}
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/user_delegation_credential.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/user_delegation_credential.go
new file mode 100644
index 00000000..9fcbbc40
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/user_delegation_credential.go
@@ -0,0 +1,38 @@
+package azblob
+
+import (
+ "crypto/hmac"
+ "crypto/sha256"
+ "encoding/base64"
+)
+
+// NewUserDelegationCredential creates a new UserDelegationCredential using a Storage account's name and a user delegation key from it
+func NewUserDelegationCredential(accountName string, key UserDelegationKey) UserDelegationCredential {
+ return UserDelegationCredential{
+ accountName: accountName,
+ accountKey: key,
+ }
+}
+
+type UserDelegationCredential struct {
+ accountName string
+ accountKey UserDelegationKey
+}
+
+// AccountName returns the Storage account's name
+func (f UserDelegationCredential) AccountName() string {
+ return f.accountName
+}
+
+// ComputeHMAC
+func (f UserDelegationCredential) ComputeHMACSHA256(message string) (base64String string) {
+ bytes, _ := base64.StdEncoding.DecodeString(f.accountKey.Value)
+ h := hmac.New(sha256.New, bytes)
+ h.Write([]byte(message))
+ return base64.StdEncoding.EncodeToString(h.Sum(nil))
+}
+
+// Private method to return important parameters for NewSASQueryParameters
+func (f UserDelegationCredential) getUDKParams() *UserDelegationKey {
+ return &f.accountKey
+}
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/version.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/version.go
new file mode 100644
index 00000000..263441a5
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/version.go
@@ -0,0 +1,3 @@
+package azblob
+
+const serviceLibVersion = "0.10"
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_credential_anonymous.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_credential_anonymous.go
new file mode 100644
index 00000000..a81987d5
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_credential_anonymous.go
@@ -0,0 +1,55 @@
+package azblob
+
+import (
+ "context"
+
+ "github.com/Azure/azure-pipeline-go/pipeline"
+)
+
+// Credential represent any credential type; it is used to create a credential policy Factory.
+type Credential interface {
+ pipeline.Factory
+ credentialMarker()
+}
+
+type credentialFunc pipeline.FactoryFunc
+
+func (f credentialFunc) New(next pipeline.Policy, po *pipeline.PolicyOptions) pipeline.Policy {
+ return f(next, po)
+}
+
+// credentialMarker is a package-internal method that exists just to satisfy the Credential interface.
+func (credentialFunc) credentialMarker() {}
+
+//////////////////////////////
+
+// NewAnonymousCredential creates an anonymous credential for use with HTTP(S) requests that read public resource
+// or for use with Shared Access Signatures (SAS).
+func NewAnonymousCredential() Credential {
+ return anonymousCredentialFactory
+}
+
+var anonymousCredentialFactory Credential = &anonymousCredentialPolicyFactory{} // Singleton
+
+// anonymousCredentialPolicyFactory is the credential's policy factory.
+type anonymousCredentialPolicyFactory struct {
+}
+
+// New creates a credential policy object.
+func (f *anonymousCredentialPolicyFactory) New(next pipeline.Policy, po *pipeline.PolicyOptions) pipeline.Policy {
+ return &anonymousCredentialPolicy{next: next}
+}
+
+// credentialMarker is a package-internal method that exists just to satisfy the Credential interface.
+func (*anonymousCredentialPolicyFactory) credentialMarker() {}
+
+// anonymousCredentialPolicy is the credential's policy object.
+type anonymousCredentialPolicy struct {
+ next pipeline.Policy
+}
+
+// Do implements the credential's policy interface.
+func (p anonymousCredentialPolicy) Do(ctx context.Context, request pipeline.Request) (pipeline.Response, error) {
+ // For anonymous credentials, this is effectively a no-op
+ return p.next.Do(ctx, request)
+}
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_credential_shared_key.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_credential_shared_key.go
new file mode 100644
index 00000000..3e27552f
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_credential_shared_key.go
@@ -0,0 +1,205 @@
+package azblob
+
+import (
+ "bytes"
+ "context"
+ "crypto/hmac"
+ "crypto/sha256"
+ "encoding/base64"
+ "errors"
+ "net/http"
+ "net/url"
+ "sort"
+ "strings"
+ "time"
+
+ "github.com/Azure/azure-pipeline-go/pipeline"
+)
+
+// NewSharedKeyCredential creates an immutable SharedKeyCredential containing the
+// storage account's name and either its primary or secondary key.
+func NewSharedKeyCredential(accountName, accountKey string) (*SharedKeyCredential, error) {
+ bytes, err := base64.StdEncoding.DecodeString(accountKey)
+ if err != nil {
+ return &SharedKeyCredential{}, err
+ }
+ return &SharedKeyCredential{accountName: accountName, accountKey: bytes}, nil
+}
+
+// SharedKeyCredential contains an account's name and its primary or secondary key.
+// It is immutable making it shareable and goroutine-safe.
+type SharedKeyCredential struct {
+ // Only the NewSharedKeyCredential method should set these; all other methods should treat them as read-only
+ accountName string
+ accountKey []byte
+}
+
+// AccountName returns the Storage account's name.
+func (f SharedKeyCredential) AccountName() string {
+ return f.accountName
+}
+
+func (f SharedKeyCredential) getAccountKey() []byte {
+ return f.accountKey
+}
+
+// noop function to satisfy StorageAccountCredential interface
+func (f SharedKeyCredential) getUDKParams() *UserDelegationKey {
+ return nil
+}
+
+// New creates a credential policy object.
+func (f *SharedKeyCredential) New(next pipeline.Policy, po *pipeline.PolicyOptions) pipeline.Policy {
+ return pipeline.PolicyFunc(func(ctx context.Context, request pipeline.Request) (pipeline.Response, error) {
+ // Add a x-ms-date header if it doesn't already exist
+ if d := request.Header.Get(headerXmsDate); d == "" {
+ request.Header[headerXmsDate] = []string{time.Now().UTC().Format(http.TimeFormat)}
+ }
+ stringToSign, err := f.buildStringToSign(request)
+ if err != nil {
+ return nil, err
+ }
+ signature := f.ComputeHMACSHA256(stringToSign)
+ authHeader := strings.Join([]string{"SharedKey ", f.accountName, ":", signature}, "")
+ request.Header[headerAuthorization] = []string{authHeader}
+
+ response, err := next.Do(ctx, request)
+ if err != nil && response != nil && response.Response() != nil && response.Response().StatusCode == http.StatusForbidden {
+ // Service failed to authenticate request, log it
+ po.Log(pipeline.LogError, "===== HTTP Forbidden status, String-to-Sign:\n"+stringToSign+"\n===============================\n")
+ }
+ return response, err
+ })
+}
+
+// credentialMarker is a package-internal method that exists just to satisfy the Credential interface.
+func (*SharedKeyCredential) credentialMarker() {}
+
+// Constants ensuring that header names are correctly spelled and consistently cased.
+const (
+ headerAuthorization = "Authorization"
+ headerCacheControl = "Cache-Control"
+ headerContentEncoding = "Content-Encoding"
+ headerContentDisposition = "Content-Disposition"
+ headerContentLanguage = "Content-Language"
+ headerContentLength = "Content-Length"
+ headerContentMD5 = "Content-MD5"
+ headerContentType = "Content-Type"
+ headerDate = "Date"
+ headerIfMatch = "If-Match"
+ headerIfModifiedSince = "If-Modified-Since"
+ headerIfNoneMatch = "If-None-Match"
+ headerIfUnmodifiedSince = "If-Unmodified-Since"
+ headerRange = "Range"
+ headerUserAgent = "User-Agent"
+ headerXmsDate = "x-ms-date"
+ headerXmsVersion = "x-ms-version"
+)
+
+// ComputeHMACSHA256 generates a hash signature for an HTTP request or for a SAS.
+func (f SharedKeyCredential) ComputeHMACSHA256(message string) (base64String string) {
+ h := hmac.New(sha256.New, f.accountKey)
+ h.Write([]byte(message))
+ return base64.StdEncoding.EncodeToString(h.Sum(nil))
+}
+
+func (f *SharedKeyCredential) buildStringToSign(request pipeline.Request) (string, error) {
+ // https://docs.microsoft.com/en-us/rest/api/storageservices/authentication-for-the-azure-storage-services
+ headers := request.Header
+ contentLength := headers.Get(headerContentLength)
+ if contentLength == "0" {
+ contentLength = ""
+ }
+
+ canonicalizedResource, err := f.buildCanonicalizedResource(request.URL)
+ if err != nil {
+ return "", err
+ }
+
+ stringToSign := strings.Join([]string{
+ request.Method,
+ headers.Get(headerContentEncoding),
+ headers.Get(headerContentLanguage),
+ contentLength,
+ headers.Get(headerContentMD5),
+ headers.Get(headerContentType),
+ "", // Empty date because x-ms-date is expected (as per web page above)
+ headers.Get(headerIfModifiedSince),
+ headers.Get(headerIfMatch),
+ headers.Get(headerIfNoneMatch),
+ headers.Get(headerIfUnmodifiedSince),
+ headers.Get(headerRange),
+ buildCanonicalizedHeader(headers),
+ canonicalizedResource,
+ }, "\n")
+ return stringToSign, nil
+}
+
+func buildCanonicalizedHeader(headers http.Header) string {
+ cm := map[string][]string{}
+ for k, v := range headers {
+ headerName := strings.TrimSpace(strings.ToLower(k))
+ if strings.HasPrefix(headerName, "x-ms-") {
+ cm[headerName] = v // NOTE: the value must not have any whitespace around it.
+ }
+ }
+ if len(cm) == 0 {
+ return ""
+ }
+
+ keys := make([]string, 0, len(cm))
+ for key := range cm {
+ keys = append(keys, key)
+ }
+ sort.Strings(keys)
+ ch := bytes.NewBufferString("")
+ for i, key := range keys {
+ if i > 0 {
+ ch.WriteRune('\n')
+ }
+ ch.WriteString(key)
+ ch.WriteRune(':')
+ ch.WriteString(strings.Join(cm[key], ","))
+ }
+ return string(ch.Bytes())
+}
+
+func (f *SharedKeyCredential) buildCanonicalizedResource(u *url.URL) (string, error) {
+ // https://docs.microsoft.com/en-us/rest/api/storageservices/authentication-for-the-azure-storage-services
+ cr := bytes.NewBufferString("/")
+ cr.WriteString(f.accountName)
+
+ if len(u.Path) > 0 {
+ // Any portion of the CanonicalizedResource string that is derived from
+ // the resource's URI should be encoded exactly as it is in the URI.
+ // -- https://msdn.microsoft.com/en-gb/library/azure/dd179428.aspx
+ cr.WriteString(u.EscapedPath())
+ } else {
+ // a slash is required to indicate the root path
+ cr.WriteString("/")
+ }
+
+ // params is a map[string][]string; param name is key; params values is []string
+ params, err := url.ParseQuery(u.RawQuery) // Returns URL decoded values
+ if err != nil {
+ return "", errors.New("parsing query parameters must succeed, otherwise there might be serious problems in the SDK/generated code")
+ }
+
+ if len(params) > 0 { // There is at least 1 query parameter
+ paramNames := []string{} // We use this to sort the parameter key names
+ for paramName := range params {
+ paramNames = append(paramNames, paramName) // paramNames must be lowercase
+ }
+ sort.Strings(paramNames)
+
+ for _, paramName := range paramNames {
+ paramValues := params[paramName]
+ sort.Strings(paramValues)
+
+ // Join the sorted key values separated by ','
+ // Then prepend "keyName:"; then add this string to the buffer
+ cr.WriteString("\n" + paramName + ":" + strings.Join(paramValues, ","))
+ }
+ }
+ return string(cr.Bytes()), nil
+}
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_credential_token.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_credential_token.go
new file mode 100644
index 00000000..7e78d25f
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_credential_token.go
@@ -0,0 +1,137 @@
+package azblob
+
+import (
+ "context"
+ "errors"
+ "sync/atomic"
+
+ "runtime"
+ "sync"
+ "time"
+
+ "github.com/Azure/azure-pipeline-go/pipeline"
+)
+
+// TokenRefresher represents a callback method that you write; this method is called periodically
+// so you can refresh the token credential's value.
+type TokenRefresher func(credential TokenCredential) time.Duration
+
+// TokenCredential represents a token credential (which is also a pipeline.Factory).
+type TokenCredential interface {
+ Credential
+ Token() string
+ SetToken(newToken string)
+}
+
+// NewTokenCredential creates a token credential for use with role-based access control (RBAC) access to Azure Storage
+// resources. You initialize the TokenCredential with an initial token value. If you pass a non-nil value for
+// tokenRefresher, then the function you pass will be called immediately so it can refresh and change the
+// TokenCredential's token value by calling SetToken. Your tokenRefresher function must return a time.Duration
+// indicating how long the TokenCredential object should wait before calling your tokenRefresher function again.
+// If your tokenRefresher callback fails to refresh the token, you can return a duration of 0 to stop your
+// TokenCredential object from ever invoking tokenRefresher again. Also, oen way to deal with failing to refresh a
+// token is to cancel a context.Context object used by requests that have the TokenCredential object in their pipeline.
+func NewTokenCredential(initialToken string, tokenRefresher TokenRefresher) TokenCredential {
+ tc := &tokenCredential{}
+ tc.SetToken(initialToken) // We don't set it above to guarantee atomicity
+ if tokenRefresher == nil {
+ return tc // If no callback specified, return the simple tokenCredential
+ }
+
+ tcwr := &tokenCredentialWithRefresh{token: tc}
+ tcwr.token.startRefresh(tokenRefresher)
+ runtime.SetFinalizer(tcwr, func(deadTC *tokenCredentialWithRefresh) {
+ deadTC.token.stopRefresh()
+ deadTC.token = nil // Sanity (not really required)
+ })
+ return tcwr
+}
+
+// tokenCredentialWithRefresh is a wrapper over a token credential.
+// When this wrapper object gets GC'd, it stops the tokenCredential's timer
+// which allows the tokenCredential object to also be GC'd.
+type tokenCredentialWithRefresh struct {
+ token *tokenCredential
+}
+
+// credentialMarker is a package-internal method that exists just to satisfy the Credential interface.
+func (*tokenCredentialWithRefresh) credentialMarker() {}
+
+// Token returns the current token value
+func (f *tokenCredentialWithRefresh) Token() string { return f.token.Token() }
+
+// SetToken changes the current token value
+func (f *tokenCredentialWithRefresh) SetToken(token string) { f.token.SetToken(token) }
+
+// New satisfies pipeline.Factory's New method creating a pipeline policy object.
+func (f *tokenCredentialWithRefresh) New(next pipeline.Policy, po *pipeline.PolicyOptions) pipeline.Policy {
+ return f.token.New(next, po)
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+// tokenCredential is a pipeline.Factory is the credential's policy factory.
+type tokenCredential struct {
+ token atomic.Value
+
+ // The members below are only used if the user specified a tokenRefresher callback function.
+ timer *time.Timer
+ tokenRefresher TokenRefresher
+ lock sync.Mutex
+ stopped bool
+}
+
+// credentialMarker is a package-internal method that exists just to satisfy the Credential interface.
+func (*tokenCredential) credentialMarker() {}
+
+// Token returns the current token value
+func (f *tokenCredential) Token() string { return f.token.Load().(string) }
+
+// SetToken changes the current token value
+func (f *tokenCredential) SetToken(token string) { f.token.Store(token) }
+
+// startRefresh calls refresh which immediately calls tokenRefresher
+// and then starts a timer to call tokenRefresher in the future.
+func (f *tokenCredential) startRefresh(tokenRefresher TokenRefresher) {
+ f.tokenRefresher = tokenRefresher
+ f.stopped = false // In case user calls StartRefresh, StopRefresh, & then StartRefresh again
+ f.refresh()
+}
+
+// refresh calls the user's tokenRefresher so they can refresh the token (by
+// calling SetToken) and then starts another time (based on the returned duration)
+// in order to refresh the token again in the future.
+func (f *tokenCredential) refresh() {
+ d := f.tokenRefresher(f) // Invoke the user's refresh callback outside of the lock
+ if d > 0 { // If duration is 0 or negative, refresher wants to not be called again
+ f.lock.Lock()
+ if !f.stopped {
+ f.timer = time.AfterFunc(d, f.refresh)
+ }
+ f.lock.Unlock()
+ }
+}
+
+// stopRefresh stops any pending timer and sets stopped field to true to prevent
+// any new timer from starting.
+// NOTE: Stopping the timer allows the GC to destroy the tokenCredential object.
+func (f *tokenCredential) stopRefresh() {
+ f.lock.Lock()
+ f.stopped = true
+ if f.timer != nil {
+ f.timer.Stop()
+ }
+ f.lock.Unlock()
+}
+
+// New satisfies pipeline.Factory's New method creating a pipeline policy object.
+func (f *tokenCredential) New(next pipeline.Policy, po *pipeline.PolicyOptions) pipeline.Policy {
+ return pipeline.PolicyFunc(func(ctx context.Context, request pipeline.Request) (pipeline.Response, error) {
+ if request.URL.Scheme != "https" {
+ // HTTPS must be used, otherwise the tokens are at the risk of being exposed
+ return nil, errors.New("token credentials require a URL using the https protocol scheme")
+ }
+ request.Header[headerAuthorization] = []string{"Bearer " + f.Token()}
+ return next.Do(ctx, request)
+ })
+}
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_mmf_unix.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_mmf_unix.go
new file mode 100644
index 00000000..00642f93
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_mmf_unix.go
@@ -0,0 +1,28 @@
+// +build linux darwin freebsd openbsd netbsd dragonfly solaris
+
+package azblob
+
+import (
+ "os"
+
+ "golang.org/x/sys/unix"
+)
+
+type mmf []byte
+
+func newMMF(file *os.File, writable bool, offset int64, length int) (mmf, error) {
+ prot, flags := unix.PROT_READ, unix.MAP_SHARED // Assume read-only
+ if writable {
+ prot, flags = unix.PROT_READ|unix.PROT_WRITE, unix.MAP_SHARED
+ }
+ addr, err := unix.Mmap(int(file.Fd()), offset, length, prot, flags)
+ return mmf(addr), err
+}
+
+func (m *mmf) unmap() {
+ err := unix.Munmap(*m)
+ *m = nil
+ if err != nil {
+ panic("if we are unable to unmap the memory-mapped file, there is serious concern for memory corruption")
+ }
+}
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_mmf_windows.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_mmf_windows.go
new file mode 100644
index 00000000..2743644e
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_mmf_windows.go
@@ -0,0 +1,38 @@
+package azblob
+
+import (
+ "os"
+ "reflect"
+ "syscall"
+ "unsafe"
+)
+
+type mmf []byte
+
+func newMMF(file *os.File, writable bool, offset int64, length int) (mmf, error) {
+ prot, access := uint32(syscall.PAGE_READONLY), uint32(syscall.FILE_MAP_READ) // Assume read-only
+ if writable {
+ prot, access = uint32(syscall.PAGE_READWRITE), uint32(syscall.FILE_MAP_WRITE)
+ }
+ hMMF, errno := syscall.CreateFileMapping(syscall.Handle(file.Fd()), nil, prot, uint32(int64(length)>>32), uint32(int64(length)&0xffffffff), nil)
+ if hMMF == 0 {
+ return nil, os.NewSyscallError("CreateFileMapping", errno)
+ }
+ defer syscall.CloseHandle(hMMF)
+ addr, errno := syscall.MapViewOfFile(hMMF, access, uint32(offset>>32), uint32(offset&0xffffffff), uintptr(length))
+ m := mmf{}
+ h := (*reflect.SliceHeader)(unsafe.Pointer(&m))
+ h.Data = addr
+ h.Len = length
+ h.Cap = h.Len
+ return m, nil
+}
+
+func (m *mmf) unmap() {
+ addr := uintptr(unsafe.Pointer(&(([]byte)(*m)[0])))
+ *m = mmf{}
+ err := syscall.UnmapViewOfFile(addr)
+ if err != nil {
+ panic("if we are unable to unmap the memory-mapped file, there is serious concern for memory corruption")
+ }
+}
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_pipeline.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_pipeline.go
new file mode 100644
index 00000000..7c249a29
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_pipeline.go
@@ -0,0 +1,46 @@
+package azblob
+
+import (
+ "github.com/Azure/azure-pipeline-go/pipeline"
+)
+
+// PipelineOptions is used to configure a request policy pipeline's retry policy and logging.
+type PipelineOptions struct {
+ // Log configures the pipeline's logging infrastructure indicating what information is logged and where.
+ Log pipeline.LogOptions
+
+ // Retry configures the built-in retry policy behavior.
+ Retry RetryOptions
+
+ // RequestLog configures the built-in request logging policy.
+ RequestLog RequestLogOptions
+
+ // Telemetry configures the built-in telemetry policy behavior.
+ Telemetry TelemetryOptions
+
+ // HTTPSender configures the sender of HTTP requests
+ HTTPSender pipeline.Factory
+}
+
+// NewPipeline creates a Pipeline using the specified credentials and options.
+func NewPipeline(c Credential, o PipelineOptions) pipeline.Pipeline {
+ // Closest to API goes first; closest to the wire goes last
+ f := []pipeline.Factory{
+ NewTelemetryPolicyFactory(o.Telemetry),
+ NewUniqueRequestIDPolicyFactory(),
+ NewRetryPolicyFactory(o.Retry),
+ }
+
+ if _, ok := c.(*anonymousCredentialPolicyFactory); !ok {
+ // For AnonymousCredential, we optimize out the policy factory since it doesn't do anything
+ // NOTE: The credential's policy factory must appear close to the wire so it can sign any
+ // changes made by other factories (like UniqueRequestIDPolicyFactory)
+ f = append(f, c)
+ }
+ f = append(f,
+ NewRequestLogPolicyFactory(o.RequestLog),
+ pipeline.MethodFactoryMarker()) // indicates at what stage in the pipeline the method factory is invoked
+
+
+ return pipeline.NewPipeline(f, pipeline.Options{HTTPSender: o.HTTPSender, Log: o.Log})
+}
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_policy_request_log.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_policy_request_log.go
new file mode 100644
index 00000000..0a362ea8
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_policy_request_log.go
@@ -0,0 +1,182 @@
+package azblob
+
+import (
+ "bytes"
+ "context"
+ "fmt"
+ "net/http"
+ "net/url"
+ "runtime"
+ "strings"
+ "time"
+
+ "github.com/Azure/azure-pipeline-go/pipeline"
+)
+
+// RequestLogOptions configures the retry policy's behavior.
+type RequestLogOptions struct {
+ // LogWarningIfTryOverThreshold logs a warning if a tried operation takes longer than the specified
+ // duration (-1=no logging; 0=default threshold).
+ LogWarningIfTryOverThreshold time.Duration
+}
+
+func (o RequestLogOptions) defaults() RequestLogOptions {
+ if o.LogWarningIfTryOverThreshold == 0 {
+ // It would be good to relate this to https://azure.microsoft.com/en-us/support/legal/sla/storage/v1_2/
+ // But this monitors the time to get the HTTP response; NOT the time to download the response body.
+ o.LogWarningIfTryOverThreshold = 3 * time.Second // Default to 3 seconds
+ }
+ return o
+}
+
+// NewRequestLogPolicyFactory creates a RequestLogPolicyFactory object configured using the specified options.
+func NewRequestLogPolicyFactory(o RequestLogOptions) pipeline.Factory {
+ o = o.defaults() // Force defaults to be calculated
+ return pipeline.FactoryFunc(func(next pipeline.Policy, po *pipeline.PolicyOptions) pipeline.PolicyFunc {
+ // These variables are per-policy; shared by multiple calls to Do
+ var try int32
+ operationStart := time.Now() // If this is the 1st try, record the operation state time
+ return func(ctx context.Context, request pipeline.Request) (response pipeline.Response, err error) {
+ try++ // The first try is #1 (not #0)
+
+ // Log the outgoing request as informational
+ if po.ShouldLog(pipeline.LogInfo) {
+ b := &bytes.Buffer{}
+ fmt.Fprintf(b, "==> OUTGOING REQUEST (Try=%d)\n", try)
+ pipeline.WriteRequestWithResponse(b, prepareRequestForLogging(request), nil, nil)
+ po.Log(pipeline.LogInfo, b.String())
+ }
+
+ // Set the time for this particular retry operation and then Do the operation.
+ tryStart := time.Now()
+ response, err = next.Do(ctx, request) // Make the request
+ tryEnd := time.Now()
+ tryDuration := tryEnd.Sub(tryStart)
+ opDuration := tryEnd.Sub(operationStart)
+
+ logLevel, forceLog := pipeline.LogInfo, false // Default logging information
+
+ // If the response took too long, we'll upgrade to warning.
+ if o.LogWarningIfTryOverThreshold > 0 && tryDuration > o.LogWarningIfTryOverThreshold {
+ // Log a warning if the try duration exceeded the specified threshold
+ logLevel, forceLog = pipeline.LogWarning, true
+ }
+
+ if err == nil { // We got a response from the service
+ sc := response.Response().StatusCode
+ if ((sc >= 400 && sc <= 499) && sc != http.StatusNotFound && sc != http.StatusConflict && sc != http.StatusPreconditionFailed && sc != http.StatusRequestedRangeNotSatisfiable) || (sc >= 500 && sc <= 599) {
+ logLevel, forceLog = pipeline.LogError, true // Promote to Error any 4xx (except those listed is an error) or any 5xx
+ } else {
+ // For other status codes, we leave the level as is.
+ }
+ } else { // This error did not get an HTTP response from the service; upgrade the severity to Error
+ logLevel, forceLog = pipeline.LogError, true
+ }
+
+ if shouldLog := po.ShouldLog(logLevel); forceLog || shouldLog {
+ // We're going to log this; build the string to log
+ b := &bytes.Buffer{}
+ slow := ""
+ if o.LogWarningIfTryOverThreshold > 0 && tryDuration > o.LogWarningIfTryOverThreshold {
+ slow = fmt.Sprintf("[SLOW >%v]", o.LogWarningIfTryOverThreshold)
+ }
+ fmt.Fprintf(b, "==> REQUEST/RESPONSE (Try=%d/%v%s, OpTime=%v) -- ", try, tryDuration, slow, opDuration)
+ if err != nil { // This HTTP request did not get a response from the service
+ fmt.Fprint(b, "REQUEST ERROR\n")
+ } else {
+ if logLevel == pipeline.LogError {
+ fmt.Fprint(b, "RESPONSE STATUS CODE ERROR\n")
+ } else {
+ fmt.Fprint(b, "RESPONSE SUCCESSFULLY RECEIVED\n")
+ }
+ }
+
+ pipeline.WriteRequestWithResponse(b, prepareRequestForLogging(request), response.Response(), err)
+ if logLevel <= pipeline.LogError {
+ b.Write(stack()) // For errors (or lower levels), we append the stack trace (an expensive operation)
+ }
+ msg := b.String()
+
+ if forceLog {
+ pipeline.ForceLog(logLevel, msg)
+ }
+ if shouldLog {
+ po.Log(logLevel, msg)
+ }
+ }
+ return response, err
+ }
+ })
+}
+
+// RedactSigQueryParam redacts the 'sig' query parameter in URL's raw query to protect secret.
+func RedactSigQueryParam(rawQuery string) (bool, string) {
+ rawQuery = strings.ToLower(rawQuery) // lowercase the string so we can look for ?sig= and &sig=
+ sigFound := strings.Contains(rawQuery, "?sig=")
+ if !sigFound {
+ sigFound = strings.Contains(rawQuery, "&sig=")
+ if !sigFound {
+ return sigFound, rawQuery // [?|&]sig= not found; return same rawQuery passed in (no memory allocation)
+ }
+ }
+ // [?|&]sig= found, redact its value
+ values, _ := url.ParseQuery(rawQuery)
+ for name := range values {
+ if strings.EqualFold(name, "sig") {
+ values[name] = []string{"REDACTED"}
+ }
+ }
+ return sigFound, values.Encode()
+}
+
+func prepareRequestForLogging(request pipeline.Request) *http.Request {
+ req := request
+ if sigFound, rawQuery := RedactSigQueryParam(req.URL.RawQuery); sigFound {
+ // Make copy so we don't destroy the query parameters we actually need to send in the request
+ req = request.Copy()
+ req.Request.URL.RawQuery = rawQuery
+ }
+
+ return prepareRequestForServiceLogging(req)
+}
+
+func stack() []byte {
+ buf := make([]byte, 1024)
+ for {
+ n := runtime.Stack(buf, false)
+ if n < len(buf) {
+ return buf[:n]
+ }
+ buf = make([]byte, 2*len(buf))
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////////////
+// Redact phase useful for blob and file service only. For other services,
+// this method can directly return request.Request.
+///////////////////////////////////////////////////////////////////////////////////////
+func prepareRequestForServiceLogging(request pipeline.Request) *http.Request {
+ req := request
+ if exist, key := doesHeaderExistCaseInsensitive(req.Header, xMsCopySourceHeader); exist {
+ req = request.Copy()
+ url, err := url.Parse(req.Header.Get(key))
+ if err == nil {
+ if sigFound, rawQuery := RedactSigQueryParam(url.RawQuery); sigFound {
+ url.RawQuery = rawQuery
+ req.Header.Set(xMsCopySourceHeader, url.String())
+ }
+ }
+ }
+ return req.Request
+}
+
+const xMsCopySourceHeader = "x-ms-copy-source"
+
+func doesHeaderExistCaseInsensitive(header http.Header, key string) (bool, string) {
+ for keyInHeader := range header {
+ if strings.EqualFold(keyInHeader, key) {
+ return true, keyInHeader
+ }
+ }
+ return false, ""
+}
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_policy_retry.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_policy_retry.go
new file mode 100644
index 00000000..0894fcc3
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_policy_retry.go
@@ -0,0 +1,414 @@
+package azblob
+
+import (
+ "context"
+ "errors"
+ "io"
+ "io/ioutil"
+ "math/rand"
+ "net"
+ "net/http"
+ "strconv"
+ "strings"
+ "time"
+
+ "github.com/Azure/azure-pipeline-go/pipeline"
+)
+
+// RetryPolicy tells the pipeline what kind of retry policy to use. See the RetryPolicy* constants.
+type RetryPolicy int32
+
+const (
+ // RetryPolicyExponential tells the pipeline to use an exponential back-off retry policy
+ RetryPolicyExponential RetryPolicy = 0
+
+ // RetryPolicyFixed tells the pipeline to use a fixed back-off retry policy
+ RetryPolicyFixed RetryPolicy = 1
+)
+
+// RetryOptions configures the retry policy's behavior.
+type RetryOptions struct {
+ // Policy tells the pipeline what kind of retry policy to use. See the RetryPolicy* constants.\
+ // A value of zero means that you accept our default policy.
+ Policy RetryPolicy
+
+ // MaxTries specifies the maximum number of attempts an operation will be tried before producing an error (0=default).
+ // A value of zero means that you accept our default policy. A value of 1 means 1 try and no retries.
+ MaxTries int32
+
+ // TryTimeout indicates the maximum time allowed for any single try of an HTTP request.
+ // A value of zero means that you accept our default timeout. NOTE: When transferring large amounts
+ // of data, the default TryTimeout will probably not be sufficient. You should override this value
+ // based on the bandwidth available to the host machine and proximity to the Storage service. A good
+ // starting point may be something like (60 seconds per MB of anticipated-payload-size).
+ TryTimeout time.Duration
+
+ // RetryDelay specifies the amount of delay to use before retrying an operation (0=default).
+ // When RetryPolicy is specified as RetryPolicyExponential, the delay increases exponentially
+ // with each retry up to a maximum specified by MaxRetryDelay.
+ // If you specify 0, then you must also specify 0 for MaxRetryDelay.
+ // If you specify RetryDelay, then you must also specify MaxRetryDelay, and MaxRetryDelay should be
+ // equal to or greater than RetryDelay.
+ RetryDelay time.Duration
+
+ // MaxRetryDelay specifies the maximum delay allowed before retrying an operation (0=default).
+ // If you specify 0, then you must also specify 0 for RetryDelay.
+ MaxRetryDelay time.Duration
+
+ // RetryReadsFromSecondaryHost specifies whether the retry policy should retry a read operation against another host.
+ // If RetryReadsFromSecondaryHost is "" (the default) then operations are not retried against another host.
+ // NOTE: Before setting this field, make sure you understand the issues around reading stale & potentially-inconsistent
+ // data at this webpage: https://docs.microsoft.com/en-us/azure/storage/common/storage-designing-ha-apps-with-ragrs
+ RetryReadsFromSecondaryHost string // Comment this our for non-Blob SDKs
+}
+
+func (o RetryOptions) retryReadsFromSecondaryHost() string {
+ return o.RetryReadsFromSecondaryHost // This is for the Blob SDK only
+ //return "" // This is for non-blob SDKs
+}
+
+func (o RetryOptions) defaults() RetryOptions {
+ // We assume the following:
+ // 1. o.Policy should either be RetryPolicyExponential or RetryPolicyFixed
+ // 2. o.MaxTries >= 0
+ // 3. o.TryTimeout, o.RetryDelay, and o.MaxRetryDelay >=0
+ // 4. o.RetryDelay <= o.MaxRetryDelay
+ // 5. Both o.RetryDelay and o.MaxRetryDelay must be 0 or neither can be 0
+
+ IfDefault := func(current *time.Duration, desired time.Duration) {
+ if *current == time.Duration(0) {
+ *current = desired
+ }
+ }
+
+ // Set defaults if unspecified
+ if o.MaxTries == 0 {
+ o.MaxTries = 4
+ }
+ switch o.Policy {
+ case RetryPolicyExponential:
+ IfDefault(&o.TryTimeout, 1*time.Minute)
+ IfDefault(&o.RetryDelay, 4*time.Second)
+ IfDefault(&o.MaxRetryDelay, 120*time.Second)
+
+ case RetryPolicyFixed:
+ IfDefault(&o.TryTimeout, 1*time.Minute)
+ IfDefault(&o.RetryDelay, 30*time.Second)
+ IfDefault(&o.MaxRetryDelay, 120*time.Second)
+ }
+ return o
+}
+
+func (o RetryOptions) calcDelay(try int32) time.Duration { // try is >=1; never 0
+ pow := func(number int64, exponent int32) int64 { // pow is nested helper function
+ var result int64 = 1
+ for n := int32(0); n < exponent; n++ {
+ result *= number
+ }
+ return result
+ }
+
+ delay := time.Duration(0)
+ switch o.Policy {
+ case RetryPolicyExponential:
+ delay = time.Duration(pow(2, try-1)-1) * o.RetryDelay
+
+ case RetryPolicyFixed:
+ if try > 1 { // Any try after the 1st uses the fixed delay
+ delay = o.RetryDelay
+ }
+ }
+
+ // Introduce some jitter: [0.0, 1.0) / 2 = [0.0, 0.5) + 0.8 = [0.8, 1.3)
+ // For casts and rounding - be careful, as per https://github.com/golang/go/issues/20757
+ delay = time.Duration(float32(delay) * (rand.Float32()/2 + 0.8)) // NOTE: We want math/rand; not crypto/rand
+ if delay > o.MaxRetryDelay {
+ delay = o.MaxRetryDelay
+ }
+ return delay
+}
+
+// NewRetryPolicyFactory creates a RetryPolicyFactory object configured using the specified options.
+func NewRetryPolicyFactory(o RetryOptions) pipeline.Factory {
+ o = o.defaults() // Force defaults to be calculated
+ return pipeline.FactoryFunc(func(next pipeline.Policy, po *pipeline.PolicyOptions) pipeline.PolicyFunc {
+ return func(ctx context.Context, request pipeline.Request) (response pipeline.Response, err error) {
+ // Before each try, we'll select either the primary or secondary URL.
+ primaryTry := int32(0) // This indicates how many tries we've attempted against the primary DC
+
+ // We only consider retrying against a secondary if we have a read request (GET/HEAD) AND this policy has a Secondary URL it can use
+ considerSecondary := (request.Method == http.MethodGet || request.Method == http.MethodHead) && o.retryReadsFromSecondaryHost() != ""
+
+ // Exponential retry algorithm: ((2 ^ attempt) - 1) * delay * random(0.8, 1.2)
+ // When to retry: connection failure or temporary/timeout. NOTE: StorageError considers HTTP 500/503 as temporary & is therefore retryable
+ // If using a secondary:
+ // Even tries go against primary; odd tries go against the secondary
+ // For a primary wait ((2 ^ primaryTries - 1) * delay * random(0.8, 1.2)
+ // If secondary gets a 404, don't fail, retry but future retries are only against the primary
+ // When retrying against a secondary, ignore the retry count and wait (.1 second * random(0.8, 1.2))
+ for try := int32(1); try <= o.MaxTries; try++ {
+ logf("\n=====> Try=%d\n", try)
+
+ // Determine which endpoint to try. It's primary if there is no secondary or if it is an add # attempt.
+ tryingPrimary := !considerSecondary || (try%2 == 1)
+ // Select the correct host and delay
+ if tryingPrimary {
+ primaryTry++
+ delay := o.calcDelay(primaryTry)
+ logf("Primary try=%d, Delay=%v\n", primaryTry, delay)
+ time.Sleep(delay) // The 1st try returns 0 delay
+ } else {
+ // For casts and rounding - be careful, as per https://github.com/golang/go/issues/20757
+ delay := time.Duration(float32(time.Second) * (rand.Float32()/2 + 0.8))
+ logf("Secondary try=%d, Delay=%v\n", try-primaryTry, delay)
+ time.Sleep(delay) // Delay with some jitter before trying secondary
+ }
+
+ // Clone the original request to ensure that each try starts with the original (unmutated) request.
+ requestCopy := request.Copy()
+
+ // For each try, seek to the beginning of the Body stream. We do this even for the 1st try because
+ // the stream may not be at offset 0 when we first get it and we want the same behavior for the
+ // 1st try as for additional tries.
+ err = requestCopy.RewindBody()
+ if err != nil {
+ return nil, errors.New("we must be able to seek on the Body Stream, otherwise retries would cause data corruption")
+ }
+
+ if !tryingPrimary {
+ requestCopy.URL.Host = o.retryReadsFromSecondaryHost()
+ requestCopy.Host = o.retryReadsFromSecondaryHost()
+ }
+
+ // Set the server-side timeout query parameter "timeout=[seconds]"
+ timeout := int32(o.TryTimeout.Seconds()) // Max seconds per try
+ if deadline, ok := ctx.Deadline(); ok { // If user's ctx has a deadline, make the timeout the smaller of the two
+ t := int32(deadline.Sub(time.Now()).Seconds()) // Duration from now until user's ctx reaches its deadline
+ logf("MaxTryTimeout=%d secs, TimeTilDeadline=%d sec\n", timeout, t)
+ if t < timeout {
+ timeout = t
+ }
+ if timeout < 0 {
+ timeout = 0 // If timeout ever goes negative, set it to zero; this happen while debugging
+ }
+ logf("TryTimeout adjusted to=%d sec\n", timeout)
+ }
+ q := requestCopy.Request.URL.Query()
+ q.Set("timeout", strconv.Itoa(int(timeout+1))) // Add 1 to "round up"
+ requestCopy.Request.URL.RawQuery = q.Encode()
+ logf("Url=%s\n", requestCopy.Request.URL.String())
+
+ // Set the time for this particular retry operation and then Do the operation.
+ tryCtx, tryCancel := context.WithTimeout(ctx, time.Second*time.Duration(timeout))
+ //requestCopy.Body = &deadlineExceededReadCloser{r: requestCopy.Request.Body}
+ response, err = next.Do(tryCtx, requestCopy) // Make the request
+ /*err = improveDeadlineExceeded(err)
+ if err == nil {
+ response.Response().Body = &deadlineExceededReadCloser{r: response.Response().Body}
+ }*/
+ logf("Err=%v, response=%v\n", err, response)
+
+ action := "" // This MUST get changed within the switch code below
+ switch {
+ case ctx.Err() != nil:
+ action = "NoRetry: Op timeout"
+ case !tryingPrimary && response != nil && response.Response() != nil && response.Response().StatusCode == http.StatusNotFound:
+ // If attempt was against the secondary & it returned a StatusNotFound (404), then
+ // the resource was not found. This may be due to replication delay. So, in this
+ // case, we'll never try the secondary again for this operation.
+ considerSecondary = false
+ action = "Retry: Secondary URL returned 404"
+ case err != nil:
+ // NOTE: Protocol Responder returns non-nil if REST API returns invalid status code for the invoked operation.
+ // Use ServiceCode to verify if the error is related to storage service-side,
+ // ServiceCode is set only when error related to storage service happened.
+ if stErr, ok := err.(StorageError); ok {
+ if stErr.Temporary() {
+ action = "Retry: StorageError with error service code and Temporary()"
+ } else if stErr.Response() != nil && isSuccessStatusCode(stErr.Response()) { // TODO: This is a temporarily work around, remove this after protocol layer fix the issue that net.Error is wrapped as storageError
+ action = "Retry: StorageError with success status code"
+ } else {
+ action = "NoRetry: StorageError not Temporary() and without retriable status code"
+ }
+ } else if netErr, ok := err.(net.Error); ok {
+ // Use non-retriable net.Error list, but not retriable list.
+ // As there are errors without Temporary() implementation,
+ // while need be retried, like 'connection reset by peer', 'transport connection broken' and etc.
+ // So the SDK do retry for most of the case, unless the error should not be retried for sure.
+ if !isNotRetriable(netErr) {
+ action = "Retry: net.Error and not in the non-retriable list"
+ } else {
+ action = "NoRetry: net.Error and in the non-retriable list"
+ }
+ } else if err == io.ErrUnexpectedEOF {
+ action = "Retry: unexpected EOF"
+ } else {
+ action = "NoRetry: unrecognized error"
+ }
+ default:
+ action = "NoRetry: successful HTTP request" // no error
+ }
+
+ logf("Action=%s\n", action)
+ // fmt.Println(action + "\n") // This is where we could log the retry operation; action is why we're retrying
+ if action[0] != 'R' { // Retry only if action starts with 'R'
+ if err != nil {
+ tryCancel() // If we're returning an error, cancel this current/last per-retry timeout context
+ } else {
+ // We wrap the last per-try context in a body and overwrite the Response's Body field with our wrapper.
+ // So, when the user closes the Body, the our per-try context gets closed too.
+ // Another option, is that the Last Policy do this wrapping for a per-retry context (not for the user's context)
+ if response == nil || response.Response() == nil {
+ // We do panic in the case response or response.Response() is nil,
+ // as for client, the response should not be nil if request is sent and the operations is executed successfully.
+ // Another option, is that execute the cancel function when response or response.Response() is nil,
+ // as in this case, current per-try has nothing to do in future.
+ return nil, errors.New("invalid state, response should not be nil when the operation is executed successfully")
+ }
+ response.Response().Body = &contextCancelReadCloser{cf: tryCancel, body: response.Response().Body}
+ }
+ break // Don't retry
+ }
+ if response != nil && response.Response() != nil && response.Response().Body != nil {
+ // If we're going to retry and we got a previous response, then flush its body to avoid leaking its TCP connection
+ body := response.Response().Body
+ io.Copy(ioutil.Discard, body)
+ body.Close()
+ }
+ // If retrying, cancel the current per-try timeout context
+ tryCancel()
+ }
+ return response, err // Not retryable or too many retries; return the last response/error
+ }
+ })
+}
+
+// contextCancelReadCloser helps to invoke context's cancelFunc properly when the ReadCloser is closed.
+type contextCancelReadCloser struct {
+ cf context.CancelFunc
+ body io.ReadCloser
+}
+
+func (rc *contextCancelReadCloser) Read(p []byte) (n int, err error) {
+ return rc.body.Read(p)
+}
+
+func (rc *contextCancelReadCloser) Close() error {
+ err := rc.body.Close()
+ if rc.cf != nil {
+ rc.cf()
+ }
+ return err
+}
+
+// isNotRetriable checks if the provided net.Error isn't retriable.
+func isNotRetriable(errToParse net.Error) bool {
+ // No error, so this is NOT retriable.
+ if errToParse == nil {
+ return true
+ }
+
+ // The error is either temporary or a timeout so it IS retriable (not not retriable).
+ if errToParse.Temporary() || errToParse.Timeout() {
+ return false
+ }
+
+ genericErr := error(errToParse)
+
+ // From here all the error are neither Temporary() nor Timeout().
+ switch err := errToParse.(type) {
+ case *net.OpError:
+ // The net.Error is also a net.OpError but the inner error is nil, so this is not retriable.
+ if err.Err == nil {
+ return true
+ }
+ genericErr = err.Err
+ }
+
+ switch genericErr.(type) {
+ case *net.AddrError, net.UnknownNetworkError, *net.DNSError, net.InvalidAddrError, *net.ParseError, *net.DNSConfigError:
+ // If the error is one of the ones listed, then it is NOT retriable.
+ return true
+ }
+
+ // If it's invalid header field name/value error thrown by http module, then it is NOT retriable.
+ // This could happen when metadata's key or value is invalid. (RoundTrip in transport.go)
+ if strings.Contains(genericErr.Error(), "invalid header field") {
+ return true
+ }
+
+ // Assume the error is retriable.
+ return false
+}
+
+var successStatusCodes = []int{http.StatusOK, http.StatusCreated, http.StatusAccepted, http.StatusNoContent, http.StatusPartialContent}
+
+func isSuccessStatusCode(resp *http.Response) bool {
+ if resp == nil {
+ return false
+ }
+ for _, i := range successStatusCodes {
+ if i == resp.StatusCode {
+ return true
+ }
+ }
+ return false
+}
+
+// According to https://github.com/golang/go/wiki/CompilerOptimizations, the compiler will inline this method and hopefully optimize all calls to it away
+var logf = func(format string, a ...interface{}) {}
+
+// Use this version to see the retry method's code path (import "fmt")
+//var logf = fmt.Printf
+
+/*
+type deadlineExceededReadCloser struct {
+ r io.ReadCloser
+}
+
+func (r *deadlineExceededReadCloser) Read(p []byte) (int, error) {
+ n, err := 0, io.EOF
+ if r.r != nil {
+ n, err = r.r.Read(p)
+ }
+ return n, improveDeadlineExceeded(err)
+}
+func (r *deadlineExceededReadCloser) Seek(offset int64, whence int) (int64, error) {
+ // For an HTTP request, the ReadCloser MUST also implement seek
+ // For an HTTP response, Seek MUST not be called (or this will panic)
+ o, err := r.r.(io.Seeker).Seek(offset, whence)
+ return o, improveDeadlineExceeded(err)
+}
+func (r *deadlineExceededReadCloser) Close() error {
+ if c, ok := r.r.(io.Closer); ok {
+ c.Close()
+ }
+ return nil
+}
+
+// timeoutError is the internal struct that implements our richer timeout error.
+type deadlineExceeded struct {
+ responseError
+}
+
+var _ net.Error = (*deadlineExceeded)(nil) // Ensure deadlineExceeded implements the net.Error interface at compile time
+
+// improveDeadlineExceeded creates a timeoutError object that implements the error interface IF cause is a context.DeadlineExceeded error.
+func improveDeadlineExceeded(cause error) error {
+ // If cause is not DeadlineExceeded, return the same error passed in.
+ if cause != context.DeadlineExceeded {
+ return cause
+ }
+ // Else, convert DeadlineExceeded to our timeoutError which gives a richer string message
+ return &deadlineExceeded{
+ responseError: responseError{
+ ErrorNode: pipeline.ErrorNode{}.Initialize(cause, 3),
+ },
+ }
+}
+
+// Error implements the error interface's Error method to return a string representation of the error.
+func (e *deadlineExceeded) Error() string {
+ return e.ErrorNode.Error("context deadline exceeded; when creating a pipeline, consider increasing RetryOptions' TryTimeout field")
+}
+*/
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_policy_telemetry.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_policy_telemetry.go
new file mode 100644
index 00000000..608e1051
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_policy_telemetry.go
@@ -0,0 +1,51 @@
+package azblob
+
+import (
+ "bytes"
+ "context"
+ "fmt"
+ "os"
+ "runtime"
+
+ "github.com/Azure/azure-pipeline-go/pipeline"
+)
+
+// TelemetryOptions configures the telemetry policy's behavior.
+type TelemetryOptions struct {
+ // Value is a string prepended to each request's User-Agent and sent to the service.
+ // The service records the user-agent in logs for diagnostics and tracking of client requests.
+ Value string
+}
+
+// NewTelemetryPolicyFactory creates a factory that can create telemetry policy objects
+// which add telemetry information to outgoing HTTP requests.
+func NewTelemetryPolicyFactory(o TelemetryOptions) pipeline.Factory {
+ b := &bytes.Buffer{}
+ b.WriteString(o.Value)
+ if b.Len() > 0 {
+ b.WriteRune(' ')
+ }
+ fmt.Fprintf(b, "Azure-Storage/%s %s", serviceLibVersion, platformInfo)
+ telemetryValue := b.String()
+
+ return pipeline.FactoryFunc(func(next pipeline.Policy, po *pipeline.PolicyOptions) pipeline.PolicyFunc {
+ return func(ctx context.Context, request pipeline.Request) (pipeline.Response, error) {
+ request.Header.Set("User-Agent", telemetryValue)
+ return next.Do(ctx, request)
+ }
+ })
+}
+
+// NOTE: the ONLY function that should write to this variable is this func
+var platformInfo = func() string {
+ // Azure-Storage/version (runtime; os type and version)”
+ // Azure-Storage/1.4.0 (NODE-VERSION v4.5.0; Windows_NT 10.0.14393)'
+ operatingSystem := runtime.GOOS // Default OS string
+ switch operatingSystem {
+ case "windows":
+ operatingSystem = os.Getenv("OS") // Get more specific OS information
+ case "linux": // accept default OS info
+ case "freebsd": // accept default OS info
+ }
+ return fmt.Sprintf("(%s; %s)", runtime.Version(), operatingSystem)
+}()
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_policy_unique_request_id.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_policy_unique_request_id.go
new file mode 100644
index 00000000..a75c7d1d
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_policy_unique_request_id.go
@@ -0,0 +1,24 @@
+package azblob
+
+import (
+ "context"
+
+ "github.com/Azure/azure-pipeline-go/pipeline"
+)
+
+// NewUniqueRequestIDPolicyFactory creates a UniqueRequestIDPolicyFactory object
+// that sets the request's x-ms-client-request-id header if it doesn't already exist.
+func NewUniqueRequestIDPolicyFactory() pipeline.Factory {
+ return pipeline.FactoryFunc(func(next pipeline.Policy, po *pipeline.PolicyOptions) pipeline.PolicyFunc {
+ // This is Policy's Do method:
+ return func(ctx context.Context, request pipeline.Request) (pipeline.Response, error) {
+ id := request.Header.Get(xMsClientRequestID)
+ if id == "" { // Add a unique request ID if the caller didn't specify one already
+ request.Header.Set(xMsClientRequestID, newUUID().String())
+ }
+ return next.Do(ctx, request)
+ }
+ })
+}
+
+const xMsClientRequestID = "x-ms-client-request-id"
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_retry_reader.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_retry_reader.go
new file mode 100644
index 00000000..15b7c40e
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_retry_reader.go
@@ -0,0 +1,184 @@
+package azblob
+
+import (
+ "context"
+ "io"
+ "net"
+ "net/http"
+ "strings"
+ "sync"
+)
+
+const CountToEnd = 0
+
+// HTTPGetter is a function type that refers to a method that performs an HTTP GET operation.
+type HTTPGetter func(ctx context.Context, i HTTPGetterInfo) (*http.Response, error)
+
+// HTTPGetterInfo is passed to an HTTPGetter function passing it parameters
+// that should be used to make an HTTP GET request.
+type HTTPGetterInfo struct {
+ // Offset specifies the start offset that should be used when
+ // creating the HTTP GET request's Range header
+ Offset int64
+
+ // Count specifies the count of bytes that should be used to calculate
+ // the end offset when creating the HTTP GET request's Range header
+ Count int64
+
+ // ETag specifies the resource's etag that should be used when creating
+ // the HTTP GET request's If-Match header
+ ETag ETag
+}
+
+// FailedReadNotifier is a function type that represents the notification function called when a read fails
+type FailedReadNotifier func(failureCount int, lastError error, offset int64, count int64, willRetry bool)
+
+// RetryReaderOptions contains properties which can help to decide when to do retry.
+type RetryReaderOptions struct {
+ // MaxRetryRequests specifies the maximum number of HTTP GET requests that will be made
+ // while reading from a RetryReader. A value of zero means that no additional HTTP
+ // GET requests will be made.
+ MaxRetryRequests int
+ doInjectError bool
+ doInjectErrorRound int
+ injectedError error
+
+ // NotifyFailedRead is called, if non-nil, after any failure to read. Expected usage is diagnostic logging.
+ NotifyFailedRead FailedReadNotifier
+
+ // TreatEarlyCloseAsError can be set to true to prevent retries after "read on closed response body". By default,
+ // retryReader has the following special behaviour: closing the response body before it is all read is treated as a
+ // retryable error. This is to allow callers to force a retry by closing the body from another goroutine (e.g. if the =
+ // read is too slow, caller may want to force a retry in the hope that the retry will be quicker). If
+ // TreatEarlyCloseAsError is true, then retryReader's special behaviour is suppressed, and "read on closed body" is instead
+ // treated as a fatal (non-retryable) error.
+ // Note that setting TreatEarlyCloseAsError only guarantees that Closing will produce a fatal error if the Close happens
+ // from the same "thread" (goroutine) as Read. Concurrent Close calls from other goroutines may instead produce network errors
+ // which will be retried.
+ TreatEarlyCloseAsError bool
+}
+
+// retryReader implements io.ReaderCloser methods.
+// retryReader tries to read from response, and if there is retriable network error
+// returned during reading, it will retry according to retry reader option through executing
+// user defined action with provided data to get a new response, and continue the overall reading process
+// through reading from the new response.
+type retryReader struct {
+ ctx context.Context
+ info HTTPGetterInfo
+ countWasBounded bool
+ o RetryReaderOptions
+ getter HTTPGetter
+
+ // we support Close-ing during Reads (from other goroutines), so we protect the shared state, which is response
+ responseMu *sync.Mutex
+ response *http.Response
+}
+
+// NewRetryReader creates a retry reader.
+func NewRetryReader(ctx context.Context, initialResponse *http.Response,
+ info HTTPGetterInfo, o RetryReaderOptions, getter HTTPGetter) io.ReadCloser {
+ return &retryReader{
+ ctx: ctx,
+ getter: getter,
+ info: info,
+ countWasBounded: info.Count != CountToEnd,
+ response: initialResponse,
+ responseMu: &sync.Mutex{},
+ o: o}
+}
+
+func (s *retryReader) setResponse(r *http.Response) {
+ s.responseMu.Lock()
+ defer s.responseMu.Unlock()
+ s.response = r
+}
+
+func (s *retryReader) Read(p []byte) (n int, err error) {
+ for try := 0; ; try++ {
+ //fmt.Println(try) // Comment out for debugging.
+ if s.countWasBounded && s.info.Count == CountToEnd {
+ // User specified an original count and the remaining bytes are 0, return 0, EOF
+ return 0, io.EOF
+ }
+
+ s.responseMu.Lock()
+ resp := s.response
+ s.responseMu.Unlock()
+ if resp == nil { // We don't have a response stream to read from, try to get one.
+ newResponse, err := s.getter(s.ctx, s.info)
+ if err != nil {
+ return 0, err
+ }
+ // Successful GET; this is the network stream we'll read from.
+ s.setResponse(newResponse)
+ resp = newResponse
+ }
+ n, err := resp.Body.Read(p) // Read from the stream (this will return non-nil err if forceRetry is called, from another goroutine, while it is running)
+
+ // Injection mechanism for testing.
+ if s.o.doInjectError && try == s.o.doInjectErrorRound {
+ if s.o.injectedError != nil {
+ err = s.o.injectedError
+ } else {
+ err = &net.DNSError{IsTemporary: true}
+ }
+ }
+
+ // We successfully read data or end EOF.
+ if err == nil || err == io.EOF {
+ s.info.Offset += int64(n) // Increments the start offset in case we need to make a new HTTP request in the future
+ if s.info.Count != CountToEnd {
+ s.info.Count -= int64(n) // Decrement the count in case we need to make a new HTTP request in the future
+ }
+ return n, err // Return the return to the caller
+ }
+ s.Close() // Error, close stream
+ s.setResponse(nil) // Our stream is no longer good
+
+ // Check the retry count and error code, and decide whether to retry.
+ retriesExhausted := try >= s.o.MaxRetryRequests
+ _, isNetError := err.(net.Error)
+ isUnexpectedEOF := err == io.ErrUnexpectedEOF
+ willRetry := (isNetError || isUnexpectedEOF || s.wasRetryableEarlyClose(err)) && !retriesExhausted
+
+ // Notify, for logging purposes, of any failures
+ if s.o.NotifyFailedRead != nil {
+ failureCount := try + 1 // because try is zero-based
+ s.o.NotifyFailedRead(failureCount, err, s.info.Offset, s.info.Count, willRetry)
+ }
+
+ if willRetry {
+ continue
+ // Loop around and try to get and read from new stream.
+ }
+ return n, err // Not retryable, or retries exhausted, so just return
+ }
+}
+
+// By default, we allow early Closing, from another concurrent goroutine, to be used to force a retry
+// Is this safe, to close early from another goroutine? Early close ultimately ends up calling
+// net.Conn.Close, and that is documented as "Any blocked Read or Write operations will be unblocked and return errors"
+// which is exactly the behaviour we want.
+// NOTE: that if caller has forced an early Close from a separate goroutine (separate from the Read)
+// then there are two different types of error that may happen - either the one one we check for here,
+// or a net.Error (due to closure of connection). Which one happens depends on timing. We only need this routine
+// to check for one, since the other is a net.Error, which our main Read retry loop is already handing.
+func (s *retryReader) wasRetryableEarlyClose(err error) bool {
+ if s.o.TreatEarlyCloseAsError {
+ return false // user wants all early closes to be errors, and so not retryable
+ }
+ // unfortunately, http.errReadOnClosedResBody is private, so the best we can do here is to check for its text
+ return strings.HasSuffix(err.Error(), ReadOnClosedBodyMessage)
+}
+
+const ReadOnClosedBodyMessage = "read on closed response body"
+
+func (s *retryReader) Close() error {
+ s.responseMu.Lock()
+ defer s.responseMu.Unlock()
+ if s.response != nil && s.response.Body != nil {
+ return s.response.Body.Close()
+ }
+ return nil
+}
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_sas_account.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_sas_account.go
new file mode 100644
index 00000000..c000c48e
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_sas_account.go
@@ -0,0 +1,219 @@
+package azblob
+
+import (
+ "bytes"
+ "errors"
+ "fmt"
+ "strings"
+ "time"
+)
+
+// AccountSASSignatureValues is used to generate a Shared Access Signature (SAS) for an Azure Storage account.
+// For more information, see https://docs.microsoft.com/rest/api/storageservices/constructing-an-account-sas
+type AccountSASSignatureValues struct {
+ Version string `param:"sv"` // If not specified, this defaults to SASVersion
+ Protocol SASProtocol `param:"spr"` // See the SASProtocol* constants
+ StartTime time.Time `param:"st"` // Not specified if IsZero
+ ExpiryTime time.Time `param:"se"` // Not specified if IsZero
+ Permissions string `param:"sp"` // Create by initializing a AccountSASPermissions and then call String()
+ IPRange IPRange `param:"sip"`
+ Services string `param:"ss"` // Create by initializing AccountSASServices and then call String()
+ ResourceTypes string `param:"srt"` // Create by initializing AccountSASResourceTypes and then call String()
+}
+
+// NewSASQueryParameters uses an account's shared key credential to sign this signature values to produce
+// the proper SAS query parameters.
+func (v AccountSASSignatureValues) NewSASQueryParameters(sharedKeyCredential *SharedKeyCredential) (SASQueryParameters, error) {
+ // https://docs.microsoft.com/en-us/rest/api/storageservices/Constructing-an-Account-SAS
+ if v.ExpiryTime.IsZero() || v.Permissions == "" || v.ResourceTypes == "" || v.Services == "" {
+ return SASQueryParameters{}, errors.New("account SAS is missing at least one of these: ExpiryTime, Permissions, Service, or ResourceType")
+ }
+ if v.Version == "" {
+ v.Version = SASVersion
+ }
+ perms := &AccountSASPermissions{}
+ if err := perms.Parse(v.Permissions); err != nil {
+ return SASQueryParameters{}, err
+ }
+ v.Permissions = perms.String()
+
+ startTime, expiryTime, _ := FormatTimesForSASSigning(v.StartTime, v.ExpiryTime, time.Time{})
+
+ stringToSign := strings.Join([]string{
+ sharedKeyCredential.AccountName(),
+ v.Permissions,
+ v.Services,
+ v.ResourceTypes,
+ startTime,
+ expiryTime,
+ v.IPRange.String(),
+ string(v.Protocol),
+ v.Version,
+ ""}, // That right, the account SAS requires a terminating extra newline
+ "\n")
+
+ signature := sharedKeyCredential.ComputeHMACSHA256(stringToSign)
+ p := SASQueryParameters{
+ // Common SAS parameters
+ version: v.Version,
+ protocol: v.Protocol,
+ startTime: v.StartTime,
+ expiryTime: v.ExpiryTime,
+ permissions: v.Permissions,
+ ipRange: v.IPRange,
+
+ // Account-specific SAS parameters
+ services: v.Services,
+ resourceTypes: v.ResourceTypes,
+
+ // Calculated SAS signature
+ signature: signature,
+ }
+
+ return p, nil
+}
+
+// The AccountSASPermissions type simplifies creating the permissions string for an Azure Storage Account SAS.
+// Initialize an instance of this type and then call its String method to set AccountSASSignatureValues's Permissions field.
+type AccountSASPermissions struct {
+ Read, Write, Delete, List, Add, Create, Update, Process bool
+}
+
+// String produces the SAS permissions string for an Azure Storage account.
+// Call this method to set AccountSASSignatureValues's Permissions field.
+func (p AccountSASPermissions) String() string {
+ var buffer bytes.Buffer
+ if p.Read {
+ buffer.WriteRune('r')
+ }
+ if p.Write {
+ buffer.WriteRune('w')
+ }
+ if p.Delete {
+ buffer.WriteRune('d')
+ }
+ if p.List {
+ buffer.WriteRune('l')
+ }
+ if p.Add {
+ buffer.WriteRune('a')
+ }
+ if p.Create {
+ buffer.WriteRune('c')
+ }
+ if p.Update {
+ buffer.WriteRune('u')
+ }
+ if p.Process {
+ buffer.WriteRune('p')
+ }
+ return buffer.String()
+}
+
+// Parse initializes the AccountSASPermissions's fields from a string.
+func (p *AccountSASPermissions) Parse(s string) error {
+ *p = AccountSASPermissions{} // Clear out the flags
+ for _, r := range s {
+ switch r {
+ case 'r':
+ p.Read = true
+ case 'w':
+ p.Write = true
+ case 'd':
+ p.Delete = true
+ case 'l':
+ p.List = true
+ case 'a':
+ p.Add = true
+ case 'c':
+ p.Create = true
+ case 'u':
+ p.Update = true
+ case 'p':
+ p.Process = true
+ default:
+ return fmt.Errorf("Invalid permission character: '%v'", r)
+ }
+ }
+ return nil
+}
+
+// The AccountSASServices type simplifies creating the services string for an Azure Storage Account SAS.
+// Initialize an instance of this type and then call its String method to set AccountSASSignatureValues's Services field.
+type AccountSASServices struct {
+ Blob, Queue, File bool
+}
+
+// String produces the SAS services string for an Azure Storage account.
+// Call this method to set AccountSASSignatureValues's Services field.
+func (s AccountSASServices) String() string {
+ var buffer bytes.Buffer
+ if s.Blob {
+ buffer.WriteRune('b')
+ }
+ if s.Queue {
+ buffer.WriteRune('q')
+ }
+ if s.File {
+ buffer.WriteRune('f')
+ }
+ return buffer.String()
+}
+
+// Parse initializes the AccountSASServices' fields from a string.
+func (a *AccountSASServices) Parse(s string) error {
+ *a = AccountSASServices{} // Clear out the flags
+ for _, r := range s {
+ switch r {
+ case 'b':
+ a.Blob = true
+ case 'q':
+ a.Queue = true
+ case 'f':
+ a.File = true
+ default:
+ return fmt.Errorf("Invalid service character: '%v'", r)
+ }
+ }
+ return nil
+}
+
+// The AccountSASResourceTypes type simplifies creating the resource types string for an Azure Storage Account SAS.
+// Initialize an instance of this type and then call its String method to set AccountSASSignatureValues's ResourceTypes field.
+type AccountSASResourceTypes struct {
+ Service, Container, Object bool
+}
+
+// String produces the SAS resource types string for an Azure Storage account.
+// Call this method to set AccountSASSignatureValues's ResourceTypes field.
+func (rt AccountSASResourceTypes) String() string {
+ var buffer bytes.Buffer
+ if rt.Service {
+ buffer.WriteRune('s')
+ }
+ if rt.Container {
+ buffer.WriteRune('c')
+ }
+ if rt.Object {
+ buffer.WriteRune('o')
+ }
+ return buffer.String()
+}
+
+// Parse initializes the AccountSASResourceType's fields from a string.
+func (rt *AccountSASResourceTypes) Parse(s string) error {
+ *rt = AccountSASResourceTypes{} // Clear out the flags
+ for _, r := range s {
+ switch r {
+ case 's':
+ rt.Service = true
+ case 'c':
+ rt.Container = true
+ case 'o':
+ rt.Object = true
+ default:
+ return fmt.Errorf("Invalid resource type: '%v'", r)
+ }
+ }
+ return nil
+}
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_sas_query_params.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_sas_query_params.go
new file mode 100644
index 00000000..427b1709
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_sas_query_params.go
@@ -0,0 +1,358 @@
+package azblob
+
+import (
+ "errors"
+ "net"
+ "net/url"
+ "strings"
+ "time"
+)
+
+// SASVersion indicates the SAS version.
+const SASVersion = ServiceVersion
+
+type SASProtocol string
+
+const (
+ // SASProtocolHTTPS can be specified for a SAS protocol
+ SASProtocolHTTPS SASProtocol = "https"
+
+ // SASProtocolHTTPSandHTTP can be specified for a SAS protocol
+ SASProtocolHTTPSandHTTP SASProtocol = "https,http"
+)
+
+// FormatTimesForSASSigning converts a time.Time to a snapshotTimeFormat string suitable for a
+// SASField's StartTime or ExpiryTime fields. Returns "" if value.IsZero().
+func FormatTimesForSASSigning(startTime, expiryTime, snapshotTime time.Time) (string, string, string) {
+ ss := ""
+ if !startTime.IsZero() {
+ ss = formatSASTimeWithDefaultFormat(&startTime)
+ }
+ se := ""
+ if !expiryTime.IsZero() {
+ se = formatSASTimeWithDefaultFormat(&expiryTime)
+ }
+ sh := ""
+ if !snapshotTime.IsZero() {
+ sh = snapshotTime.Format(SnapshotTimeFormat)
+ }
+ return ss, se, sh
+}
+
+// SASTimeFormat represents the format of a SAS start or expiry time. Use it when formatting/parsing a time.Time.
+const SASTimeFormat = "2006-01-02T15:04:05Z" //"2017-07-27T00:00:00Z" // ISO 8601
+var SASTimeFormats = []string{"2006-01-02T15:04:05.0000000Z", SASTimeFormat, "2006-01-02T15:04Z", "2006-01-02"} // ISO 8601 formats, please refer to https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas for more details.
+
+// formatSASTimeWithDefaultFormat format time with ISO 8601 in "yyyy-MM-ddTHH:mm:ssZ".
+func formatSASTimeWithDefaultFormat(t *time.Time) string {
+ return formatSASTime(t, SASTimeFormat) // By default, "yyyy-MM-ddTHH:mm:ssZ" is used
+}
+
+// formatSASTime format time with given format, use ISO 8601 in "yyyy-MM-ddTHH:mm:ssZ" by default.
+func formatSASTime(t *time.Time, format string) string {
+ if format != "" {
+ return t.Format(format)
+ }
+ return t.Format(SASTimeFormat) // By default, "yyyy-MM-ddTHH:mm:ssZ" is used
+}
+
+// parseSASTimeString try to parse sas time string.
+func parseSASTimeString(val string) (t time.Time, timeFormat string, err error) {
+ for _, sasTimeFormat := range SASTimeFormats {
+ t, err = time.Parse(sasTimeFormat, val)
+ if err == nil {
+ timeFormat = sasTimeFormat
+ break
+ }
+ }
+
+ if err != nil {
+ err = errors.New("fail to parse time with IOS 8601 formats, please refer to https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas for more details")
+ }
+
+ return
+}
+
+// https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas
+
+// A SASQueryParameters object represents the components that make up an Azure Storage SAS' query parameters.
+// You parse a map of query parameters into its fields by calling NewSASQueryParameters(). You add the components
+// to a query parameter map by calling AddToValues().
+// NOTE: Changing any field requires computing a new SAS signature using a XxxSASSignatureValues type.
+//
+// This type defines the components used by all Azure Storage resources (Containers, Blobs, Files, & Queues).
+type SASQueryParameters struct {
+ // All members are immutable or values so copies of this struct are goroutine-safe.
+ version string `param:"sv"`
+ services string `param:"ss"`
+ resourceTypes string `param:"srt"`
+ protocol SASProtocol `param:"spr"`
+ startTime time.Time `param:"st"`
+ expiryTime time.Time `param:"se"`
+ snapshotTime time.Time `param:"snapshot"`
+ ipRange IPRange `param:"sip"`
+ identifier string `param:"si"`
+ resource string `param:"sr"`
+ permissions string `param:"sp"`
+ signature string `param:"sig"`
+ cacheControl string `param:"rscc"`
+ contentDisposition string `param:"rscd"`
+ contentEncoding string `param:"rsce"`
+ contentLanguage string `param:"rscl"`
+ contentType string `param:"rsct"`
+ signedOid string `param:"skoid"`
+ signedTid string `param:"sktid"`
+ signedStart time.Time `param:"skt"`
+ signedExpiry time.Time `param:"ske"`
+ signedService string `param:"sks"`
+ signedVersion string `param:"skv"`
+
+ // private member used for startTime and expiryTime formatting.
+ stTimeFormat string
+ seTimeFormat string
+}
+
+func (p *SASQueryParameters) SignedOid() string {
+ return p.signedOid
+}
+
+func (p *SASQueryParameters) SignedTid() string {
+ return p.signedTid
+}
+
+func (p *SASQueryParameters) SignedStart() time.Time {
+ return p.signedStart
+}
+
+func (p *SASQueryParameters) SignedExpiry() time.Time {
+ return p.signedExpiry
+}
+
+func (p *SASQueryParameters) SignedService() string {
+ return p.signedService
+}
+
+func (p *SASQueryParameters) SignedVersion() string {
+ return p.signedVersion
+}
+
+func (p *SASQueryParameters) SnapshotTime() time.Time {
+ return p.snapshotTime
+}
+
+func (p *SASQueryParameters) Version() string {
+ return p.version
+}
+
+func (p *SASQueryParameters) Services() string {
+ return p.services
+}
+func (p *SASQueryParameters) ResourceTypes() string {
+ return p.resourceTypes
+}
+func (p *SASQueryParameters) Protocol() SASProtocol {
+ return p.protocol
+}
+func (p *SASQueryParameters) StartTime() time.Time {
+ return p.startTime
+}
+func (p *SASQueryParameters) ExpiryTime() time.Time {
+ return p.expiryTime
+}
+
+func (p *SASQueryParameters) IPRange() IPRange {
+ return p.ipRange
+}
+
+func (p *SASQueryParameters) Identifier() string {
+ return p.identifier
+}
+
+func (p *SASQueryParameters) Resource() string {
+ return p.resource
+}
+func (p *SASQueryParameters) Permissions() string {
+ return p.permissions
+}
+
+func (p *SASQueryParameters) Signature() string {
+ return p.signature
+}
+
+func (p *SASQueryParameters) CacheControl() string {
+ return p.cacheControl
+}
+
+func (p *SASQueryParameters) ContentDisposition() string {
+ return p.contentDisposition
+}
+
+func (p *SASQueryParameters) ContentEncoding() string {
+ return p.contentEncoding
+}
+
+func (p *SASQueryParameters) ContentLanguage() string {
+ return p.contentLanguage
+}
+
+func (p *SASQueryParameters) ContentType() string {
+ return p.contentType
+}
+
+// IPRange represents a SAS IP range's start IP and (optionally) end IP.
+type IPRange struct {
+ Start net.IP // Not specified if length = 0
+ End net.IP // Not specified if length = 0
+}
+
+// String returns a string representation of an IPRange.
+func (ipr *IPRange) String() string {
+ if len(ipr.Start) == 0 {
+ return ""
+ }
+ start := ipr.Start.String()
+ if len(ipr.End) == 0 {
+ return start
+ }
+ return start + "-" + ipr.End.String()
+}
+
+// NewSASQueryParameters creates and initializes a SASQueryParameters object based on the
+// query parameter map's passed-in values. If deleteSASParametersFromValues is true,
+// all SAS-related query parameters are removed from the passed-in map. If
+// deleteSASParametersFromValues is false, the map passed-in map is unaltered.
+func newSASQueryParameters(values url.Values, deleteSASParametersFromValues bool) SASQueryParameters {
+ p := SASQueryParameters{}
+ for k, v := range values {
+ val := v[0]
+ isSASKey := true
+ switch strings.ToLower(k) {
+ case "sv":
+ p.version = val
+ case "ss":
+ p.services = val
+ case "srt":
+ p.resourceTypes = val
+ case "spr":
+ p.protocol = SASProtocol(val)
+ case "snapshot":
+ p.snapshotTime, _ = time.Parse(SnapshotTimeFormat, val)
+ case "st":
+ p.startTime, p.stTimeFormat, _ = parseSASTimeString(val)
+ case "se":
+ p.expiryTime, p.seTimeFormat, _ = parseSASTimeString(val)
+ case "sip":
+ dashIndex := strings.Index(val, "-")
+ if dashIndex == -1 {
+ p.ipRange.Start = net.ParseIP(val)
+ } else {
+ p.ipRange.Start = net.ParseIP(val[:dashIndex])
+ p.ipRange.End = net.ParseIP(val[dashIndex+1:])
+ }
+ case "si":
+ p.identifier = val
+ case "sr":
+ p.resource = val
+ case "sp":
+ p.permissions = val
+ case "sig":
+ p.signature = val
+ case "rscc":
+ p.cacheControl = val
+ case "rscd":
+ p.contentDisposition = val
+ case "rsce":
+ p.contentEncoding = val
+ case "rscl":
+ p.contentLanguage = val
+ case "rsct":
+ p.contentType = val
+ case "skoid":
+ p.signedOid = val
+ case "sktid":
+ p.signedTid = val
+ case "skt":
+ p.signedStart, _ = time.Parse(SASTimeFormat, val)
+ case "ske":
+ p.signedExpiry, _ = time.Parse(SASTimeFormat, val)
+ case "sks":
+ p.signedService = val
+ case "skv":
+ p.signedVersion = val
+ default:
+ isSASKey = false // We didn't recognize the query parameter
+ }
+ if isSASKey && deleteSASParametersFromValues {
+ delete(values, k)
+ }
+ }
+ return p
+}
+
+// AddToValues adds the SAS components to the specified query parameters map.
+func (p *SASQueryParameters) addToValues(v url.Values) url.Values {
+ if p.version != "" {
+ v.Add("sv", p.version)
+ }
+ if p.services != "" {
+ v.Add("ss", p.services)
+ }
+ if p.resourceTypes != "" {
+ v.Add("srt", p.resourceTypes)
+ }
+ if p.protocol != "" {
+ v.Add("spr", string(p.protocol))
+ }
+ if !p.startTime.IsZero() {
+ v.Add("st", formatSASTime(&(p.startTime), p.stTimeFormat))
+ }
+ if !p.expiryTime.IsZero() {
+ v.Add("se", formatSASTime(&(p.expiryTime), p.seTimeFormat))
+ }
+ if len(p.ipRange.Start) > 0 {
+ v.Add("sip", p.ipRange.String())
+ }
+ if p.identifier != "" {
+ v.Add("si", p.identifier)
+ }
+ if p.resource != "" {
+ v.Add("sr", p.resource)
+ }
+ if p.permissions != "" {
+ v.Add("sp", p.permissions)
+ }
+ if p.signedOid != "" {
+ v.Add("skoid", p.signedOid)
+ v.Add("sktid", p.signedTid)
+ v.Add("skt", p.signedStart.Format(SASTimeFormat))
+ v.Add("ske", p.signedExpiry.Format(SASTimeFormat))
+ v.Add("sks", p.signedService)
+ v.Add("skv", p.signedVersion)
+ }
+ if p.signature != "" {
+ v.Add("sig", p.signature)
+ }
+ if p.cacheControl != "" {
+ v.Add("rscc", p.cacheControl)
+ }
+ if p.contentDisposition != "" {
+ v.Add("rscd", p.contentDisposition)
+ }
+ if p.contentEncoding != "" {
+ v.Add("rsce", p.contentEncoding)
+ }
+ if p.contentLanguage != "" {
+ v.Add("rscl", p.contentLanguage)
+ }
+ if p.contentType != "" {
+ v.Add("rsct", p.contentType)
+ }
+ return v
+}
+
+// Encode encodes the SAS query parameters into URL encoded form sorted by key.
+func (p *SASQueryParameters) Encode() string {
+ v := url.Values{}
+ p.addToValues(v)
+ return v.Encode()
+}
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_service_codes_common.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_service_codes_common.go
new file mode 100644
index 00000000..765beb24
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_service_codes_common.go
@@ -0,0 +1,131 @@
+package azblob
+
+// https://docs.microsoft.com/en-us/rest/api/storageservices/common-rest-api-error-codes
+
+const (
+ // ServiceCodeNone is the default value. It indicates that the error was related to the service or that the service didn't return a code.
+ ServiceCodeNone ServiceCodeType = ""
+
+ // ServiceCodeAccountAlreadyExists means the specified account already exists.
+ ServiceCodeAccountAlreadyExists ServiceCodeType = "AccountAlreadyExists"
+
+ // ServiceCodeAccountBeingCreated means the specified account is in the process of being created (403).
+ ServiceCodeAccountBeingCreated ServiceCodeType = "AccountBeingCreated"
+
+ // ServiceCodeAccountIsDisabled means the specified account is disabled (403).
+ ServiceCodeAccountIsDisabled ServiceCodeType = "AccountIsDisabled"
+
+ // ServiceCodeAuthenticationFailed means the server failed to authenticate the request. Make sure the value of the Authorization header is formed correctly including the signature (403).
+ ServiceCodeAuthenticationFailed ServiceCodeType = "AuthenticationFailed"
+
+ // ServiceCodeConditionHeadersNotSupported means the condition headers are not supported (400).
+ ServiceCodeConditionHeadersNotSupported ServiceCodeType = "ConditionHeadersNotSupported"
+
+ // ServiceCodeConditionNotMet means the condition specified in the conditional header(s) was not met for a read/write operation (304/412).
+ ServiceCodeConditionNotMet ServiceCodeType = "ConditionNotMet"
+
+ // ServiceCodeEmptyMetadataKey means the key for one of the metadata key-value pairs is empty (400).
+ ServiceCodeEmptyMetadataKey ServiceCodeType = "EmptyMetadataKey"
+
+ // ServiceCodeInsufficientAccountPermissions means read operations are currently disabled or Write operations are not allowed or The account being accessed does not have sufficient permissions to execute this operation (403).
+ ServiceCodeInsufficientAccountPermissions ServiceCodeType = "InsufficientAccountPermissions"
+
+ // ServiceCodeInternalError means the server encountered an internal error. Please retry the request (500).
+ ServiceCodeInternalError ServiceCodeType = "InternalError"
+
+ // ServiceCodeInvalidAuthenticationInfo means the authentication information was not provided in the correct format. Verify the value of Authorization header (400).
+ ServiceCodeInvalidAuthenticationInfo ServiceCodeType = "InvalidAuthenticationInfo"
+
+ // ServiceCodeInvalidHeaderValue means the value provided for one of the HTTP headers was not in the correct format (400).
+ ServiceCodeInvalidHeaderValue ServiceCodeType = "InvalidHeaderValue"
+
+ // ServiceCodeInvalidHTTPVerb means the HTTP verb specified was not recognized by the server (400).
+ ServiceCodeInvalidHTTPVerb ServiceCodeType = "InvalidHttpVerb"
+
+ // ServiceCodeInvalidInput means one of the request inputs is not valid (400).
+ ServiceCodeInvalidInput ServiceCodeType = "InvalidInput"
+
+ // ServiceCodeInvalidMd5 means the MD5 value specified in the request is invalid. The MD5 value must be 128 bits and Base64-encoded (400).
+ ServiceCodeInvalidMd5 ServiceCodeType = "InvalidMd5"
+
+ // ServiceCodeInvalidMetadata means the specified metadata is invalid. It includes characters that are not permitted (400).
+ ServiceCodeInvalidMetadata ServiceCodeType = "InvalidMetadata"
+
+ // ServiceCodeInvalidQueryParameterValue means an invalid value was specified for one of the query parameters in the request URI (400).
+ ServiceCodeInvalidQueryParameterValue ServiceCodeType = "InvalidQueryParameterValue"
+
+ // ServiceCodeInvalidRange means the range specified is invalid for the current size of the resource (416).
+ ServiceCodeInvalidRange ServiceCodeType = "InvalidRange"
+
+ // ServiceCodeInvalidResourceName means the specified resource name contains invalid characters (400).
+ ServiceCodeInvalidResourceName ServiceCodeType = "InvalidResourceName"
+
+ // ServiceCodeInvalidURI means the requested URI does not represent any resource on the server (400).
+ ServiceCodeInvalidURI ServiceCodeType = "InvalidUri"
+
+ // ServiceCodeInvalidXMLDocument means the specified XML is not syntactically valid (400).
+ ServiceCodeInvalidXMLDocument ServiceCodeType = "InvalidXmlDocument"
+
+ // ServiceCodeInvalidXMLNodeValue means the value provided for one of the XML nodes in the request body was not in the correct format (400).
+ ServiceCodeInvalidXMLNodeValue ServiceCodeType = "InvalidXmlNodeValue"
+
+ // ServiceCodeMd5Mismatch means the MD5 value specified in the request did not match the MD5 value calculated by the server (400).
+ ServiceCodeMd5Mismatch ServiceCodeType = "Md5Mismatch"
+
+ // ServiceCodeMetadataTooLarge means the size of the specified metadata exceeds the maximum size permitted (400).
+ ServiceCodeMetadataTooLarge ServiceCodeType = "MetadataTooLarge"
+
+ // ServiceCodeMissingContentLengthHeader means the Content-Length header was not specified (411).
+ ServiceCodeMissingContentLengthHeader ServiceCodeType = "MissingContentLengthHeader"
+
+ // ServiceCodeMissingRequiredQueryParameter means a required query parameter was not specified for this request (400).
+ ServiceCodeMissingRequiredQueryParameter ServiceCodeType = "MissingRequiredQueryParameter"
+
+ // ServiceCodeMissingRequiredHeader means a required HTTP header was not specified (400).
+ ServiceCodeMissingRequiredHeader ServiceCodeType = "MissingRequiredHeader"
+
+ // ServiceCodeMissingRequiredXMLNode means a required XML node was not specified in the request body (400).
+ ServiceCodeMissingRequiredXMLNode ServiceCodeType = "MissingRequiredXmlNode"
+
+ // ServiceCodeMultipleConditionHeadersNotSupported means multiple condition headers are not supported (400).
+ ServiceCodeMultipleConditionHeadersNotSupported ServiceCodeType = "MultipleConditionHeadersNotSupported"
+
+ // ServiceCodeOperationTimedOut means the operation could not be completed within the permitted time (500).
+ ServiceCodeOperationTimedOut ServiceCodeType = "OperationTimedOut"
+
+ // ServiceCodeOutOfRangeInput means one of the request inputs is out of range (400).
+ ServiceCodeOutOfRangeInput ServiceCodeType = "OutOfRangeInput"
+
+ // ServiceCodeOutOfRangeQueryParameterValue means a query parameter specified in the request URI is outside the permissible range (400).
+ ServiceCodeOutOfRangeQueryParameterValue ServiceCodeType = "OutOfRangeQueryParameterValue"
+
+ // ServiceCodeRequestBodyTooLarge means the size of the request body exceeds the maximum size permitted (413).
+ ServiceCodeRequestBodyTooLarge ServiceCodeType = "RequestBodyTooLarge"
+
+ // ServiceCodeResourceTypeMismatch means the specified resource type does not match the type of the existing resource (409).
+ ServiceCodeResourceTypeMismatch ServiceCodeType = "ResourceTypeMismatch"
+
+ // ServiceCodeRequestURLFailedToParse means the url in the request could not be parsed (400).
+ ServiceCodeRequestURLFailedToParse ServiceCodeType = "RequestUrlFailedToParse"
+
+ // ServiceCodeResourceAlreadyExists means the specified resource already exists (409).
+ ServiceCodeResourceAlreadyExists ServiceCodeType = "ResourceAlreadyExists"
+
+ // ServiceCodeResourceNotFound means the specified resource does not exist (404).
+ ServiceCodeResourceNotFound ServiceCodeType = "ResourceNotFound"
+
+ // ServiceCodeServerBusy means the server is currently unable to receive requests. Please retry your request or Ingress/egress is over the account limit or operations per second is over the account limit (503).
+ ServiceCodeServerBusy ServiceCodeType = "ServerBusy"
+
+ // ServiceCodeUnsupportedHeader means one of the HTTP headers specified in the request is not supported (400).
+ ServiceCodeUnsupportedHeader ServiceCodeType = "UnsupportedHeader"
+
+ // ServiceCodeUnsupportedXMLNode means one of the XML nodes specified in the request body is not supported (400).
+ ServiceCodeUnsupportedXMLNode ServiceCodeType = "UnsupportedXmlNode"
+
+ // ServiceCodeUnsupportedQueryParameter means one of the query parameters specified in the request URI is not supported (400).
+ ServiceCodeUnsupportedQueryParameter ServiceCodeType = "UnsupportedQueryParameter"
+
+ // ServiceCodeUnsupportedHTTPVerb means the resource doesn't support the specified HTTP verb (405).
+ ServiceCodeUnsupportedHTTPVerb ServiceCodeType = "UnsupportedHttpVerb"
+)
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_storage_error.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_storage_error.go
new file mode 100644
index 00000000..e7872a8a
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_storage_error.go
@@ -0,0 +1,111 @@
+package azblob
+
+import (
+ "bytes"
+ "encoding/xml"
+ "fmt"
+ "net/http"
+ "sort"
+
+ "github.com/Azure/azure-pipeline-go/pipeline"
+)
+
+func init() {
+ // wire up our custom error handling constructor
+ responseErrorFactory = newStorageError
+}
+
+// ServiceCodeType is a string identifying a storage service error.
+// For more information, see https://docs.microsoft.com/en-us/rest/api/storageservices/status-and-error-codes2
+type ServiceCodeType string
+
+// StorageError identifies a responder-generated network or response parsing error.
+type StorageError interface {
+ // ResponseError implements error's Error(), net.Error's Temporary() and Timeout() methods & Response().
+ ResponseError
+
+ // ServiceCode returns a service error code. Your code can use this to make error recovery decisions.
+ ServiceCode() ServiceCodeType
+}
+
+// storageError is the internal struct that implements the public StorageError interface.
+type storageError struct {
+ responseError
+ serviceCode ServiceCodeType
+ details map[string]string
+}
+
+// newStorageError creates an error object that implements the error interface.
+func newStorageError(cause error, response *http.Response, description string) error {
+ return &storageError{
+ responseError: responseError{
+ ErrorNode: pipeline.ErrorNode{}.Initialize(cause, 3),
+ response: response,
+ description: description,
+ },
+ serviceCode: ServiceCodeType(response.Header.Get("x-ms-error-code")),
+ }
+}
+
+// ServiceCode returns service-error information. The caller may examine these values but should not modify any of them.
+func (e *storageError) ServiceCode() ServiceCodeType {
+ return e.serviceCode
+}
+
+// Error implements the error interface's Error method to return a string representation of the error.
+func (e *storageError) Error() string {
+ b := &bytes.Buffer{}
+ fmt.Fprintf(b, "===== RESPONSE ERROR (ServiceCode=%s) =====\n", e.serviceCode)
+ fmt.Fprintf(b, "Description=%s, Details: ", e.description)
+ if len(e.details) == 0 {
+ b.WriteString("(none)\n")
+ } else {
+ b.WriteRune('\n')
+ keys := make([]string, 0, len(e.details))
+ // Alphabetize the details
+ for k := range e.details {
+ keys = append(keys, k)
+ }
+ sort.Strings(keys)
+ for _, k := range keys {
+ fmt.Fprintf(b, " %s: %+v\n", k, e.details[k])
+ }
+ }
+ req := pipeline.Request{Request: e.response.Request}.Copy() // Make a copy of the response's request
+ pipeline.WriteRequestWithResponse(b, prepareRequestForLogging(req), e.response, nil)
+ return e.ErrorNode.Error(b.String())
+}
+
+// Temporary returns true if the error occurred due to a temporary condition (including an HTTP status of 500 or 503).
+func (e *storageError) Temporary() bool {
+ if e.response != nil {
+ if (e.response.StatusCode == http.StatusInternalServerError) || (e.response.StatusCode == http.StatusServiceUnavailable) {
+ return true
+ }
+ }
+ return e.ErrorNode.Temporary()
+}
+
+// UnmarshalXML performs custom unmarshalling of XML-formatted Azure storage request errors.
+func (e *storageError) UnmarshalXML(d *xml.Decoder, start xml.StartElement) (err error) {
+ tokName := ""
+ var t xml.Token
+ for t, err = d.Token(); err == nil; t, err = d.Token() {
+ switch tt := t.(type) {
+ case xml.StartElement:
+ tokName = tt.Name.Local
+ break
+ case xml.CharData:
+ switch tokName {
+ case "Message":
+ e.description = string(tt)
+ default:
+ if e.details == nil {
+ e.details = map[string]string{}
+ }
+ e.details[tokName] = string(tt)
+ }
+ }
+ }
+ return nil
+}
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_util_validate.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_util_validate.go
new file mode 100644
index 00000000..d7b2507e
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_util_validate.go
@@ -0,0 +1,64 @@
+package azblob
+
+import (
+ "errors"
+ "fmt"
+ "io"
+ "strconv"
+)
+
+// httpRange defines a range of bytes within an HTTP resource, starting at offset and
+// ending at offset+count. A zero-value httpRange indicates the entire resource. An httpRange
+// which has an offset but na zero value count indicates from the offset to the resource's end.
+type httpRange struct {
+ offset int64
+ count int64
+}
+
+func (r httpRange) pointers() *string {
+ if r.offset == 0 && r.count == CountToEnd { // Do common case first for performance
+ return nil // No specified range
+ }
+ endOffset := "" // if count == CountToEnd (0)
+ if r.count > 0 {
+ endOffset = strconv.FormatInt((r.offset+r.count)-1, 10)
+ }
+ dataRange := fmt.Sprintf("bytes=%v-%s", r.offset, endOffset)
+ return &dataRange
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+func validateSeekableStreamAt0AndGetCount(body io.ReadSeeker) (int64, error) {
+ if body == nil { // nil body's are "logically" seekable to 0 and are 0 bytes long
+ return 0, nil
+ }
+
+ err := validateSeekableStreamAt0(body)
+ if err != nil {
+ return 0, err
+ }
+
+ count, err := body.Seek(0, io.SeekEnd)
+ if err != nil {
+ return 0, errors.New("body stream must be seekable")
+ }
+
+ body.Seek(0, io.SeekStart)
+ return count, nil
+}
+
+// return an error if body is not a valid seekable stream at 0
+func validateSeekableStreamAt0(body io.ReadSeeker) error {
+ if body == nil { // nil body's are "logically" seekable to 0
+ return nil
+ }
+ if pos, err := body.Seek(0, io.SeekCurrent); pos != 0 || err != nil {
+ // Help detect programmer error
+ if err != nil {
+ return errors.New("body stream must be seekable")
+ }
+ return errors.New("body stream must be set to position 0")
+ }
+ return nil
+}
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_uuid.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_uuid.go
new file mode 100644
index 00000000..66799f9c
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_uuid.go
@@ -0,0 +1,77 @@
+package azblob
+
+import (
+ "crypto/rand"
+ "fmt"
+ "strconv"
+)
+
+// The UUID reserved variants.
+const (
+ reservedNCS byte = 0x80
+ reservedRFC4122 byte = 0x40
+ reservedMicrosoft byte = 0x20
+ reservedFuture byte = 0x00
+)
+
+// A UUID representation compliant with specification in RFC 4122 document.
+type uuid [16]byte
+
+// NewUUID returns a new uuid using RFC 4122 algorithm.
+func newUUID() (u uuid) {
+ u = uuid{}
+ // Set all bits to randomly (or pseudo-randomly) chosen values.
+ rand.Read(u[:])
+ u[8] = (u[8] | reservedRFC4122) & 0x7F // u.setVariant(ReservedRFC4122)
+
+ var version byte = 4
+ u[6] = (u[6] & 0xF) | (version << 4) // u.setVersion(4)
+ return
+}
+
+// String returns an unparsed version of the generated UUID sequence.
+func (u uuid) String() string {
+ return fmt.Sprintf("%x-%x-%x-%x-%x", u[0:4], u[4:6], u[6:8], u[8:10], u[10:])
+}
+
+// ParseUUID parses a string formatted as "003020100-0504-0706-0809-0a0b0c0d0e0f"
+// or "{03020100-0504-0706-0809-0a0b0c0d0e0f}" into a UUID.
+func parseUUID(uuidStr string) uuid {
+ char := func(hexString string) byte {
+ i, _ := strconv.ParseUint(hexString, 16, 8)
+ return byte(i)
+ }
+ if uuidStr[0] == '{' {
+ uuidStr = uuidStr[1:] // Skip over the '{'
+ }
+ // 03020100 - 05 04 - 07 06 - 08 09 - 0a 0b 0c 0d 0e 0f
+ // 1 11 1 11 11 1 12 22 2 22 22 22 33 33 33
+ // 01234567 8 90 12 3 45 67 8 90 12 3 45 67 89 01 23 45
+ uuidVal := uuid{
+ char(uuidStr[0:2]),
+ char(uuidStr[2:4]),
+ char(uuidStr[4:6]),
+ char(uuidStr[6:8]),
+
+ char(uuidStr[9:11]),
+ char(uuidStr[11:13]),
+
+ char(uuidStr[14:16]),
+ char(uuidStr[16:18]),
+
+ char(uuidStr[19:21]),
+ char(uuidStr[21:23]),
+
+ char(uuidStr[24:26]),
+ char(uuidStr[26:28]),
+ char(uuidStr[28:30]),
+ char(uuidStr[30:32]),
+ char(uuidStr[32:34]),
+ char(uuidStr[34:36]),
+ }
+ return uuidVal
+}
+
+func (u uuid) bytes() []byte {
+ return u[:]
+}
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zt_doc.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zt_doc.go
new file mode 100644
index 00000000..6b3779c0
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zt_doc.go
@@ -0,0 +1,89 @@
+// Copyright 2017 Microsoft Corporation. All rights reserved.
+// Use of this source code is governed by an MIT
+// license that can be found in the LICENSE file.
+
+/*
+Package azblob allows you to manipulate Azure Storage containers and blobs objects.
+
+URL Types
+
+The most common types you'll work with are the XxxURL types. The methods of these types make requests
+against the Azure Storage Service.
+
+ - ServiceURL's methods perform operations on a storage account.
+ - ContainerURL's methods perform operations on an account's container.
+ - BlockBlobURL's methods perform operations on a container's block blob.
+ - AppendBlobURL's methods perform operations on a container's append blob.
+ - PageBlobURL's methods perform operations on a container's page blob.
+ - BlobURL's methods perform operations on a container's blob regardless of the blob's type.
+
+Internally, each XxxURL object contains a URL and a request pipeline. The URL indicates the endpoint where each HTTP
+request is sent and the pipeline indicates how the outgoing HTTP request and incoming HTTP response is processed.
+The pipeline specifies things like retry policies, logging, deserialization of HTTP response payloads, and more.
+
+Pipelines are threadsafe and may be shared by multiple XxxURL objects. When you create a ServiceURL, you pass
+an initial pipeline. When you call ServiceURL's NewContainerURL method, the new ContainerURL object has its own
+URL but it shares the same pipeline as the parent ServiceURL object.
+
+To work with a blob, call one of ContainerURL's 4 NewXxxBlobURL methods depending on how you want to treat the blob.
+To treat the blob as a block blob, append blob, or page blob, call NewBlockBlobURL, NewAppendBlobURL, or NewPageBlobURL
+respectively. These three types are all identical except for the methods they expose; each type exposes the methods
+relevant to the type of blob represented. If you're not sure how you want to treat a blob, you can call NewBlobURL;
+this returns an object whose methods are relevant to any kind of blob. When you call ContainerURL's NewXxxBlobURL,
+the new XxxBlobURL object has its own URL but it shares the same pipeline as the parent ContainerURL object. You
+can easily switch between blob types (method sets) by calling a ToXxxBlobURL method.
+
+If you'd like to use a different pipeline with a ServiceURL, ContainerURL, or XxxBlobURL object, then call the XxxURL
+object's WithPipeline method passing in the desired pipeline. The WithPipeline methods create a new XxxURL object
+with the same URL as the original but with the specified pipeline.
+
+Note that XxxURL objects use little memory, are goroutine-safe, and many objects share the same pipeline. This means that
+XxxURL objects share a lot of system resources making them very efficient.
+
+All of XxxURL's methods that make HTTP requests return rich error handling information so you can discern network failures,
+transient failures, timeout failures, service failures, etc. See the StorageError interface for more information and an
+example of how to do deal with errors.
+
+URL and Shared Access Signature Manipulation
+
+The library includes a BlobURLParts type for deconstructing and reconstructing URLs. And you can use the following types
+for generating and parsing Shared Access Signature (SAS)
+ - Use the AccountSASSignatureValues type to create a SAS for a storage account.
+ - Use the BlobSASSignatureValues type to create a SAS for a container or blob.
+ - Use the SASQueryParameters type to turn signature values in to query parameres or to parse query parameters.
+
+To generate a SAS, you must use the SharedKeyCredential type.
+
+Credentials
+
+When creating a request pipeline, you must specify one of this package's credential types.
+ - Call the NewAnonymousCredential function for requests that contain a Shared Access Signature (SAS).
+ - Call the NewSharedKeyCredential function (with an account name & key) to access any account resources. You must also use this
+ to generate Shared Access Signatures.
+
+HTTP Request Policy Factories
+
+This package defines several request policy factories for use with the pipeline package.
+Most applications will not use these factories directly; instead, the NewPipeline
+function creates these factories, initializes them (via the PipelineOptions type)
+and returns a pipeline object for use by the XxxURL objects.
+
+However, for advanced scenarios, developers can access these policy factories directly
+and even create their own and then construct their own pipeline in order to affect HTTP
+requests and responses performed by the XxxURL objects. For example, developers can
+introduce their own logging, random failures, request recording & playback for fast
+testing, HTTP request pacing, alternate retry mechanisms, metering, metrics, etc. The
+possibilities are endless!
+
+Below are the request pipeline policy factory functions that are provided with this
+package:
+ - NewRetryPolicyFactory Enables rich retry semantics for failed HTTP requests.
+ - NewRequestLogPolicyFactory Enables rich logging support for HTTP requests/responses & failures.
+ - NewTelemetryPolicyFactory Enables simple modification of the HTTP request's User-Agent header so each request reports the SDK version & language/runtime making the requests.
+ - NewUniqueRequestIDPolicyFactory Adds a x-ms-client-request-id header with a unique UUID value to an HTTP request to help with diagnosing failures.
+
+Also, note that all the NewXxxCredential functions return request policy factory objects which get injected into the pipeline.
+*/
+package azblob
+
+// TokenCredential Use this to access resources using Role-Based Access Control (RBAC).
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_append_blob.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_append_blob.go
new file mode 100644
index 00000000..f17c7f88
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_append_blob.go
@@ -0,0 +1,403 @@
+package azblob
+
+// Code generated by Microsoft (R) AutoRest Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+ "context"
+ "encoding/base64"
+ "github.com/Azure/azure-pipeline-go/pipeline"
+ "io"
+ "io/ioutil"
+ "net/http"
+ "net/url"
+ "strconv"
+ "time"
+)
+
+// appendBlobClient is the client for the AppendBlob methods of the Azblob service.
+type appendBlobClient struct {
+ managementClient
+}
+
+// newAppendBlobClient creates an instance of the appendBlobClient client.
+func newAppendBlobClient(url url.URL, p pipeline.Pipeline) appendBlobClient {
+ return appendBlobClient{newManagementClient(url, p)}
+}
+
+// AppendBlock the Append Block operation commits a new block of data to the end of an existing append blob. The Append
+// Block operation is permitted only if the blob was created with x-ms-blob-type set to AppendBlob. Append Block is
+// supported only on version 2015-02-21 version or later.
+//
+// body is initial data body will be closed upon successful return. Callers should ensure closure when receiving an
+// error.contentLength is the length of the request. timeout is the timeout parameter is expressed in seconds. For more
+// information, see Setting
+// Timeouts for Blob Service Operations. transactionalContentMD5 is specify the transactional md5 for the body, to
+// be validated by the service. transactionalContentCrc64 is specify the transactional crc64 for the body, to be
+// validated by the service. leaseID is if specified, the operation only succeeds if the resource's lease is active and
+// matches this ID. maxSize is optional conditional header. The max length in bytes permitted for the append blob. If
+// the Append Block operation would cause the blob to exceed that limit or if the blob size is already greater than the
+// value specified in this header, the request will fail with MaxBlobSizeConditionNotMet error (HTTP status code 412 -
+// Precondition Failed). appendPosition is optional conditional header, used only for the Append Block operation. A
+// number indicating the byte offset to compare. Append Block will succeed only if the append position is equal to this
+// number. If it is not, the request will fail with the AppendPositionConditionNotMet error (HTTP status code 412 -
+// Precondition Failed). encryptionKey is optional. Specifies the encryption key to use to encrypt the data provided in
+// the request. If not specified, encryption is performed with the root account encryption key. For more information,
+// see Encryption at Rest for Azure Storage Services. encryptionKeySha256 is the SHA-256 hash of the provided
+// encryption key. Must be provided if the x-ms-encryption-key header is provided. encryptionAlgorithm is the algorithm
+// used to produce the encryption key hash. Currently, the only accepted value is "AES256". Must be provided if the
+// x-ms-encryption-key header is provided. ifModifiedSince is specify this header value to operate only on a blob if it
+// has been modified since the specified date/time. ifUnmodifiedSince is specify this header value to operate only on a
+// blob if it has not been modified since the specified date/time. ifMatch is specify an ETag value to operate only on
+// blobs with a matching value. ifNoneMatch is specify an ETag value to operate only on blobs without a matching value.
+// requestID is provides a client-generated, opaque value with a 1 KB character limit that is recorded in the analytics
+// logs when storage analytics logging is enabled.
+func (client appendBlobClient) AppendBlock(ctx context.Context, body io.ReadSeeker, contentLength int64, timeout *int32, transactionalContentMD5 []byte, transactionalContentCrc64 []byte, leaseID *string, maxSize *int64, appendPosition *int64, encryptionKey *string, encryptionKeySha256 *string, encryptionAlgorithm EncryptionAlgorithmType, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (*AppendBlobAppendBlockResponse, error) {
+ if err := validate([]validation{
+ {targetValue: body,
+ constraints: []constraint{{target: "body", name: null, rule: true, chain: nil}}},
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.appendBlockPreparer(body, contentLength, timeout, transactionalContentMD5, transactionalContentCrc64, leaseID, maxSize, appendPosition, encryptionKey, encryptionKeySha256, encryptionAlgorithm, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.appendBlockResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*AppendBlobAppendBlockResponse), err
+}
+
+// appendBlockPreparer prepares the AppendBlock request.
+func (client appendBlobClient) appendBlockPreparer(body io.ReadSeeker, contentLength int64, timeout *int32, transactionalContentMD5 []byte, transactionalContentCrc64 []byte, leaseID *string, maxSize *int64, appendPosition *int64, encryptionKey *string, encryptionKeySha256 *string, encryptionAlgorithm EncryptionAlgorithmType, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("PUT", client.url, body)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ params.Set("comp", "appendblock")
+ req.URL.RawQuery = params.Encode()
+ req.Header.Set("Content-Length", strconv.FormatInt(contentLength, 10))
+ if transactionalContentMD5 != nil {
+ req.Header.Set("Content-MD5", base64.StdEncoding.EncodeToString(transactionalContentMD5))
+ }
+ if transactionalContentCrc64 != nil {
+ req.Header.Set("x-ms-content-crc64", base64.StdEncoding.EncodeToString(transactionalContentCrc64))
+ }
+ if leaseID != nil {
+ req.Header.Set("x-ms-lease-id", *leaseID)
+ }
+ if maxSize != nil {
+ req.Header.Set("x-ms-blob-condition-maxsize", strconv.FormatInt(*maxSize, 10))
+ }
+ if appendPosition != nil {
+ req.Header.Set("x-ms-blob-condition-appendpos", strconv.FormatInt(*appendPosition, 10))
+ }
+ if encryptionKey != nil {
+ req.Header.Set("x-ms-encryption-key", *encryptionKey)
+ }
+ if encryptionKeySha256 != nil {
+ req.Header.Set("x-ms-encryption-key-sha256", *encryptionKeySha256)
+ }
+ if encryptionAlgorithm != EncryptionAlgorithmNone {
+ req.Header.Set("x-ms-encryption-algorithm", string(encryptionAlgorithm))
+ }
+ if ifModifiedSince != nil {
+ req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifUnmodifiedSince != nil {
+ req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifMatch != nil {
+ req.Header.Set("If-Match", string(*ifMatch))
+ }
+ if ifNoneMatch != nil {
+ req.Header.Set("If-None-Match", string(*ifNoneMatch))
+ }
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ return req, nil
+}
+
+// appendBlockResponder handles the response to the AppendBlock request.
+func (client appendBlobClient) appendBlockResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK, http.StatusCreated)
+ if resp == nil {
+ return nil, err
+ }
+ io.Copy(ioutil.Discard, resp.Response().Body)
+ resp.Response().Body.Close()
+ return &AppendBlobAppendBlockResponse{rawResponse: resp.Response()}, err
+}
+
+// AppendBlockFromURL the Append Block operation commits a new block of data to the end of an existing append blob
+// where the contents are read from a source url. The Append Block operation is permitted only if the blob was created
+// with x-ms-blob-type set to AppendBlob. Append Block is supported only on version 2015-02-21 version or later.
+//
+// sourceURL is specify a URL to the copy source. contentLength is the length of the request. sourceRange is bytes of
+// source data in the specified range. sourceContentMD5 is specify the md5 calculated for the range of bytes that must
+// be read from the copy source. sourceContentcrc64 is specify the crc64 calculated for the range of bytes that must be
+// read from the copy source. timeout is the timeout parameter is expressed in seconds. For more information, see Setting
+// Timeouts for Blob Service Operations. transactionalContentMD5 is specify the transactional md5 for the body, to
+// be validated by the service. encryptionKey is optional. Specifies the encryption key to use to encrypt the data
+// provided in the request. If not specified, encryption is performed with the root account encryption key. For more
+// information, see Encryption at Rest for Azure Storage Services. encryptionKeySha256 is the SHA-256 hash of the
+// provided encryption key. Must be provided if the x-ms-encryption-key header is provided. encryptionAlgorithm is the
+// algorithm used to produce the encryption key hash. Currently, the only accepted value is "AES256". Must be provided
+// if the x-ms-encryption-key header is provided. leaseID is if specified, the operation only succeeds if the
+// resource's lease is active and matches this ID. maxSize is optional conditional header. The max length in bytes
+// permitted for the append blob. If the Append Block operation would cause the blob to exceed that limit or if the
+// blob size is already greater than the value specified in this header, the request will fail with
+// MaxBlobSizeConditionNotMet error (HTTP status code 412 - Precondition Failed). appendPosition is optional
+// conditional header, used only for the Append Block operation. A number indicating the byte offset to compare. Append
+// Block will succeed only if the append position is equal to this number. If it is not, the request will fail with the
+// AppendPositionConditionNotMet error (HTTP status code 412 - Precondition Failed). ifModifiedSince is specify this
+// header value to operate only on a blob if it has been modified since the specified date/time. ifUnmodifiedSince is
+// specify this header value to operate only on a blob if it has not been modified since the specified date/time.
+// ifMatch is specify an ETag value to operate only on blobs with a matching value. ifNoneMatch is specify an ETag
+// value to operate only on blobs without a matching value. sourceIfModifiedSince is specify this header value to
+// operate only on a blob if it has been modified since the specified date/time. sourceIfUnmodifiedSince is specify
+// this header value to operate only on a blob if it has not been modified since the specified date/time. sourceIfMatch
+// is specify an ETag value to operate only on blobs with a matching value. sourceIfNoneMatch is specify an ETag value
+// to operate only on blobs without a matching value. requestID is provides a client-generated, opaque value with a 1
+// KB character limit that is recorded in the analytics logs when storage analytics logging is enabled.
+func (client appendBlobClient) AppendBlockFromURL(ctx context.Context, sourceURL string, contentLength int64, sourceRange *string, sourceContentMD5 []byte, sourceContentcrc64 []byte, timeout *int32, transactionalContentMD5 []byte, encryptionKey *string, encryptionKeySha256 *string, encryptionAlgorithm EncryptionAlgorithmType, leaseID *string, maxSize *int64, appendPosition *int64, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, sourceIfModifiedSince *time.Time, sourceIfUnmodifiedSince *time.Time, sourceIfMatch *ETag, sourceIfNoneMatch *ETag, requestID *string) (*AppendBlobAppendBlockFromURLResponse, error) {
+ if err := validate([]validation{
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.appendBlockFromURLPreparer(sourceURL, contentLength, sourceRange, sourceContentMD5, sourceContentcrc64, timeout, transactionalContentMD5, encryptionKey, encryptionKeySha256, encryptionAlgorithm, leaseID, maxSize, appendPosition, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, sourceIfModifiedSince, sourceIfUnmodifiedSince, sourceIfMatch, sourceIfNoneMatch, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.appendBlockFromURLResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*AppendBlobAppendBlockFromURLResponse), err
+}
+
+// appendBlockFromURLPreparer prepares the AppendBlockFromURL request.
+func (client appendBlobClient) appendBlockFromURLPreparer(sourceURL string, contentLength int64, sourceRange *string, sourceContentMD5 []byte, sourceContentcrc64 []byte, timeout *int32, transactionalContentMD5 []byte, encryptionKey *string, encryptionKeySha256 *string, encryptionAlgorithm EncryptionAlgorithmType, leaseID *string, maxSize *int64, appendPosition *int64, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, sourceIfModifiedSince *time.Time, sourceIfUnmodifiedSince *time.Time, sourceIfMatch *ETag, sourceIfNoneMatch *ETag, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("PUT", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ params.Set("comp", "appendblock")
+ req.URL.RawQuery = params.Encode()
+ req.Header.Set("x-ms-copy-source", sourceURL)
+ if sourceRange != nil {
+ req.Header.Set("x-ms-source-range", *sourceRange)
+ }
+ if sourceContentMD5 != nil {
+ req.Header.Set("x-ms-source-content-md5", base64.StdEncoding.EncodeToString(sourceContentMD5))
+ }
+ if sourceContentcrc64 != nil {
+ req.Header.Set("x-ms-source-content-crc64", base64.StdEncoding.EncodeToString(sourceContentcrc64))
+ }
+ req.Header.Set("Content-Length", strconv.FormatInt(contentLength, 10))
+ if transactionalContentMD5 != nil {
+ req.Header.Set("Content-MD5", base64.StdEncoding.EncodeToString(transactionalContentMD5))
+ }
+ if encryptionKey != nil {
+ req.Header.Set("x-ms-encryption-key", *encryptionKey)
+ }
+ if encryptionKeySha256 != nil {
+ req.Header.Set("x-ms-encryption-key-sha256", *encryptionKeySha256)
+ }
+ if encryptionAlgorithm != EncryptionAlgorithmNone {
+ req.Header.Set("x-ms-encryption-algorithm", string(encryptionAlgorithm))
+ }
+ if leaseID != nil {
+ req.Header.Set("x-ms-lease-id", *leaseID)
+ }
+ if maxSize != nil {
+ req.Header.Set("x-ms-blob-condition-maxsize", strconv.FormatInt(*maxSize, 10))
+ }
+ if appendPosition != nil {
+ req.Header.Set("x-ms-blob-condition-appendpos", strconv.FormatInt(*appendPosition, 10))
+ }
+ if ifModifiedSince != nil {
+ req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifUnmodifiedSince != nil {
+ req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifMatch != nil {
+ req.Header.Set("If-Match", string(*ifMatch))
+ }
+ if ifNoneMatch != nil {
+ req.Header.Set("If-None-Match", string(*ifNoneMatch))
+ }
+ if sourceIfModifiedSince != nil {
+ req.Header.Set("x-ms-source-if-modified-since", (*sourceIfModifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if sourceIfUnmodifiedSince != nil {
+ req.Header.Set("x-ms-source-if-unmodified-since", (*sourceIfUnmodifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if sourceIfMatch != nil {
+ req.Header.Set("x-ms-source-if-match", string(*sourceIfMatch))
+ }
+ if sourceIfNoneMatch != nil {
+ req.Header.Set("x-ms-source-if-none-match", string(*sourceIfNoneMatch))
+ }
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ return req, nil
+}
+
+// appendBlockFromURLResponder handles the response to the AppendBlockFromURL request.
+func (client appendBlobClient) appendBlockFromURLResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK, http.StatusCreated)
+ if resp == nil {
+ return nil, err
+ }
+ io.Copy(ioutil.Discard, resp.Response().Body)
+ resp.Response().Body.Close()
+ return &AppendBlobAppendBlockFromURLResponse{rawResponse: resp.Response()}, err
+}
+
+// Create the Create Append Blob operation creates a new append blob.
+//
+// contentLength is the length of the request. timeout is the timeout parameter is expressed in seconds. For more
+// information, see Setting
+// Timeouts for Blob Service Operations. blobContentType is optional. Sets the blob's content type. If specified,
+// this property is stored with the blob and returned with a read request. blobContentEncoding is optional. Sets the
+// blob's content encoding. If specified, this property is stored with the blob and returned with a read request.
+// blobContentLanguage is optional. Set the blob's content language. If specified, this property is stored with the
+// blob and returned with a read request. blobContentMD5 is optional. An MD5 hash of the blob content. Note that this
+// hash is not validated, as the hashes for the individual blocks were validated when each was uploaded.
+// blobCacheControl is optional. Sets the blob's cache control. If specified, this property is stored with the blob and
+// returned with a read request. metadata is optional. Specifies a user-defined name-value pair associated with the
+// blob. If no name-value pairs are specified, the operation will copy the metadata from the source blob or file to the
+// destination blob. If one or more name-value pairs are specified, the destination blob is created with the specified
+// metadata, and metadata is not copied from the source blob or file. Note that beginning with version 2009-09-19,
+// metadata names must adhere to the naming rules for C# identifiers. See Naming and Referencing Containers, Blobs, and
+// Metadata for more information. leaseID is if specified, the operation only succeeds if the resource's lease is
+// active and matches this ID. blobContentDisposition is optional. Sets the blob's Content-Disposition header.
+// encryptionKey is optional. Specifies the encryption key to use to encrypt the data provided in the request. If not
+// specified, encryption is performed with the root account encryption key. For more information, see Encryption at
+// Rest for Azure Storage Services. encryptionKeySha256 is the SHA-256 hash of the provided encryption key. Must be
+// provided if the x-ms-encryption-key header is provided. encryptionAlgorithm is the algorithm used to produce the
+// encryption key hash. Currently, the only accepted value is "AES256". Must be provided if the x-ms-encryption-key
+// header is provided. ifModifiedSince is specify this header value to operate only on a blob if it has been modified
+// since the specified date/time. ifUnmodifiedSince is specify this header value to operate only on a blob if it has
+// not been modified since the specified date/time. ifMatch is specify an ETag value to operate only on blobs with a
+// matching value. ifNoneMatch is specify an ETag value to operate only on blobs without a matching value. requestID is
+// provides a client-generated, opaque value with a 1 KB character limit that is recorded in the analytics logs when
+// storage analytics logging is enabled.
+func (client appendBlobClient) Create(ctx context.Context, contentLength int64, timeout *int32, blobContentType *string, blobContentEncoding *string, blobContentLanguage *string, blobContentMD5 []byte, blobCacheControl *string, metadata map[string]string, leaseID *string, blobContentDisposition *string, encryptionKey *string, encryptionKeySha256 *string, encryptionAlgorithm EncryptionAlgorithmType, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (*AppendBlobCreateResponse, error) {
+ if err := validate([]validation{
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.createPreparer(contentLength, timeout, blobContentType, blobContentEncoding, blobContentLanguage, blobContentMD5, blobCacheControl, metadata, leaseID, blobContentDisposition, encryptionKey, encryptionKeySha256, encryptionAlgorithm, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.createResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*AppendBlobCreateResponse), err
+}
+
+// createPreparer prepares the Create request.
+func (client appendBlobClient) createPreparer(contentLength int64, timeout *int32, blobContentType *string, blobContentEncoding *string, blobContentLanguage *string, blobContentMD5 []byte, blobCacheControl *string, metadata map[string]string, leaseID *string, blobContentDisposition *string, encryptionKey *string, encryptionKeySha256 *string, encryptionAlgorithm EncryptionAlgorithmType, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("PUT", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ req.URL.RawQuery = params.Encode()
+ req.Header.Set("Content-Length", strconv.FormatInt(contentLength, 10))
+ if blobContentType != nil {
+ req.Header.Set("x-ms-blob-content-type", *blobContentType)
+ }
+ if blobContentEncoding != nil {
+ req.Header.Set("x-ms-blob-content-encoding", *blobContentEncoding)
+ }
+ if blobContentLanguage != nil {
+ req.Header.Set("x-ms-blob-content-language", *blobContentLanguage)
+ }
+ if blobContentMD5 != nil {
+ req.Header.Set("x-ms-blob-content-md5", base64.StdEncoding.EncodeToString(blobContentMD5))
+ }
+ if blobCacheControl != nil {
+ req.Header.Set("x-ms-blob-cache-control", *blobCacheControl)
+ }
+ if metadata != nil {
+ for k, v := range metadata {
+ req.Header.Set("x-ms-meta-"+k, v)
+ }
+ }
+ if leaseID != nil {
+ req.Header.Set("x-ms-lease-id", *leaseID)
+ }
+ if blobContentDisposition != nil {
+ req.Header.Set("x-ms-blob-content-disposition", *blobContentDisposition)
+ }
+ if encryptionKey != nil {
+ req.Header.Set("x-ms-encryption-key", *encryptionKey)
+ }
+ if encryptionKeySha256 != nil {
+ req.Header.Set("x-ms-encryption-key-sha256", *encryptionKeySha256)
+ }
+ if encryptionAlgorithm != EncryptionAlgorithmNone {
+ req.Header.Set("x-ms-encryption-algorithm", string(encryptionAlgorithm))
+ }
+ if ifModifiedSince != nil {
+ req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifUnmodifiedSince != nil {
+ req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifMatch != nil {
+ req.Header.Set("If-Match", string(*ifMatch))
+ }
+ if ifNoneMatch != nil {
+ req.Header.Set("If-None-Match", string(*ifNoneMatch))
+ }
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ req.Header.Set("x-ms-blob-type", "AppendBlob")
+ return req, nil
+}
+
+// createResponder handles the response to the Create request.
+func (client appendBlobClient) createResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK, http.StatusCreated)
+ if resp == nil {
+ return nil, err
+ }
+ io.Copy(ioutil.Discard, resp.Response().Body)
+ resp.Response().Body.Close()
+ return &AppendBlobCreateResponse{rawResponse: resp.Response()}, err
+}
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_blob.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_blob.go
new file mode 100644
index 00000000..492dfdb2
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_blob.go
@@ -0,0 +1,1620 @@
+package azblob
+
+// Code generated by Microsoft (R) AutoRest Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+ "context"
+ "encoding/base64"
+ "io"
+ "io/ioutil"
+ "net/http"
+ "net/url"
+ "strconv"
+ "time"
+
+ "github.com/Azure/azure-pipeline-go/pipeline"
+)
+
+// blobClient is the client for the Blob methods of the Azblob service.
+type blobClient struct {
+ managementClient
+}
+
+// newBlobClient creates an instance of the blobClient client.
+func newBlobClient(url url.URL, p pipeline.Pipeline) blobClient {
+ return blobClient{newManagementClient(url, p)}
+}
+
+// AbortCopyFromURL the Abort Copy From URL operation aborts a pending Copy From URL operation, and leaves a
+// destination blob with zero length and full metadata.
+//
+// copyID is the copy identifier provided in the x-ms-copy-id header of the original Copy Blob operation. timeout is
+// the timeout parameter is expressed in seconds. For more information, see Setting
+// Timeouts for Blob Service Operations. leaseID is if specified, the operation only succeeds if the resource's
+// lease is active and matches this ID. requestID is provides a client-generated, opaque value with a 1 KB character
+// limit that is recorded in the analytics logs when storage analytics logging is enabled.
+func (client blobClient) AbortCopyFromURL(ctx context.Context, copyID string, timeout *int32, leaseID *string, requestID *string) (*BlobAbortCopyFromURLResponse, error) {
+ if err := validate([]validation{
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.abortCopyFromURLPreparer(copyID, timeout, leaseID, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.abortCopyFromURLResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*BlobAbortCopyFromURLResponse), err
+}
+
+// abortCopyFromURLPreparer prepares the AbortCopyFromURL request.
+func (client blobClient) abortCopyFromURLPreparer(copyID string, timeout *int32, leaseID *string, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("PUT", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ params.Set("copyid", copyID)
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ params.Set("comp", "copy")
+ req.URL.RawQuery = params.Encode()
+ if leaseID != nil {
+ req.Header.Set("x-ms-lease-id", *leaseID)
+ }
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ req.Header.Set("x-ms-copy-action", "abort")
+ return req, nil
+}
+
+// abortCopyFromURLResponder handles the response to the AbortCopyFromURL request.
+func (client blobClient) abortCopyFromURLResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK, http.StatusNoContent)
+ if resp == nil {
+ return nil, err
+ }
+ io.Copy(ioutil.Discard, resp.Response().Body)
+ resp.Response().Body.Close()
+ return &BlobAbortCopyFromURLResponse{rawResponse: resp.Response()}, err
+}
+
+// AcquireLease [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete
+// operations
+//
+// timeout is the timeout parameter is expressed in seconds. For more information, see Setting
+// Timeouts for Blob Service Operations. duration is specifies the duration of the lease, in seconds, or negative
+// one (-1) for a lease that never expires. A non-infinite lease can be between 15 and 60 seconds. A lease duration
+// cannot be changed using renew or change. proposedLeaseID is proposed lease ID, in a GUID string format. The Blob
+// service returns 400 (Invalid request) if the proposed lease ID is not in the correct format. See Guid Constructor
+// (String) for a list of valid GUID string formats. ifModifiedSince is specify this header value to operate only on a
+// blob if it has been modified since the specified date/time. ifUnmodifiedSince is specify this header value to
+// operate only on a blob if it has not been modified since the specified date/time. ifMatch is specify an ETag value
+// to operate only on blobs with a matching value. ifNoneMatch is specify an ETag value to operate only on blobs
+// without a matching value. requestID is provides a client-generated, opaque value with a 1 KB character limit that is
+// recorded in the analytics logs when storage analytics logging is enabled.
+func (client blobClient) AcquireLease(ctx context.Context, timeout *int32, duration *int32, proposedLeaseID *string, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (*BlobAcquireLeaseResponse, error) {
+ if err := validate([]validation{
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.acquireLeasePreparer(timeout, duration, proposedLeaseID, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.acquireLeaseResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*BlobAcquireLeaseResponse), err
+}
+
+// acquireLeasePreparer prepares the AcquireLease request.
+func (client blobClient) acquireLeasePreparer(timeout *int32, duration *int32, proposedLeaseID *string, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("PUT", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ params.Set("comp", "lease")
+ req.URL.RawQuery = params.Encode()
+ if duration != nil {
+ req.Header.Set("x-ms-lease-duration", strconv.FormatInt(int64(*duration), 10))
+ }
+ if proposedLeaseID != nil {
+ req.Header.Set("x-ms-proposed-lease-id", *proposedLeaseID)
+ }
+ if ifModifiedSince != nil {
+ req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifUnmodifiedSince != nil {
+ req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifMatch != nil {
+ req.Header.Set("If-Match", string(*ifMatch))
+ }
+ if ifNoneMatch != nil {
+ req.Header.Set("If-None-Match", string(*ifNoneMatch))
+ }
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ req.Header.Set("x-ms-lease-action", "acquire")
+ return req, nil
+}
+
+// acquireLeaseResponder handles the response to the AcquireLease request.
+func (client blobClient) acquireLeaseResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK, http.StatusCreated)
+ if resp == nil {
+ return nil, err
+ }
+ io.Copy(ioutil.Discard, resp.Response().Body)
+ resp.Response().Body.Close()
+ return &BlobAcquireLeaseResponse{rawResponse: resp.Response()}, err
+}
+
+// BreakLease [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete
+// operations
+//
+// timeout is the timeout parameter is expressed in seconds. For more information, see Setting
+// Timeouts for Blob Service Operations. breakPeriod is for a break operation, proposed duration the lease should
+// continue before it is broken, in seconds, between 0 and 60. This break period is only used if it is shorter than the
+// time remaining on the lease. If longer, the time remaining on the lease is used. A new lease will not be available
+// before the break period has expired, but the lease may be held for longer than the break period. If this header does
+// not appear with a break operation, a fixed-duration lease breaks after the remaining lease period elapses, and an
+// infinite lease breaks immediately. ifModifiedSince is specify this header value to operate only on a blob if it has
+// been modified since the specified date/time. ifUnmodifiedSince is specify this header value to operate only on a
+// blob if it has not been modified since the specified date/time. ifMatch is specify an ETag value to operate only on
+// blobs with a matching value. ifNoneMatch is specify an ETag value to operate only on blobs without a matching value.
+// requestID is provides a client-generated, opaque value with a 1 KB character limit that is recorded in the analytics
+// logs when storage analytics logging is enabled.
+func (client blobClient) BreakLease(ctx context.Context, timeout *int32, breakPeriod *int32, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (*BlobBreakLeaseResponse, error) {
+ if err := validate([]validation{
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.breakLeasePreparer(timeout, breakPeriod, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.breakLeaseResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*BlobBreakLeaseResponse), err
+}
+
+// breakLeasePreparer prepares the BreakLease request.
+func (client blobClient) breakLeasePreparer(timeout *int32, breakPeriod *int32, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("PUT", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ params.Set("comp", "lease")
+ req.URL.RawQuery = params.Encode()
+ if breakPeriod != nil {
+ req.Header.Set("x-ms-lease-break-period", strconv.FormatInt(int64(*breakPeriod), 10))
+ }
+ if ifModifiedSince != nil {
+ req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifUnmodifiedSince != nil {
+ req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifMatch != nil {
+ req.Header.Set("If-Match", string(*ifMatch))
+ }
+ if ifNoneMatch != nil {
+ req.Header.Set("If-None-Match", string(*ifNoneMatch))
+ }
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ req.Header.Set("x-ms-lease-action", "break")
+ return req, nil
+}
+
+// breakLeaseResponder handles the response to the BreakLease request.
+func (client blobClient) breakLeaseResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK, http.StatusAccepted)
+ if resp == nil {
+ return nil, err
+ }
+ io.Copy(ioutil.Discard, resp.Response().Body)
+ resp.Response().Body.Close()
+ return &BlobBreakLeaseResponse{rawResponse: resp.Response()}, err
+}
+
+// ChangeLease [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete
+// operations
+//
+// leaseID is specifies the current lease ID on the resource. proposedLeaseID is proposed lease ID, in a GUID string
+// format. The Blob service returns 400 (Invalid request) if the proposed lease ID is not in the correct format. See
+// Guid Constructor (String) for a list of valid GUID string formats. timeout is the timeout parameter is expressed in
+// seconds. For more information, see Setting
+// Timeouts for Blob Service Operations. ifModifiedSince is specify this header value to operate only on a blob if
+// it has been modified since the specified date/time. ifUnmodifiedSince is specify this header value to operate only
+// on a blob if it has not been modified since the specified date/time. ifMatch is specify an ETag value to operate
+// only on blobs with a matching value. ifNoneMatch is specify an ETag value to operate only on blobs without a
+// matching value. requestID is provides a client-generated, opaque value with a 1 KB character limit that is recorded
+// in the analytics logs when storage analytics logging is enabled.
+func (client blobClient) ChangeLease(ctx context.Context, leaseID string, proposedLeaseID string, timeout *int32, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (*BlobChangeLeaseResponse, error) {
+ if err := validate([]validation{
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.changeLeasePreparer(leaseID, proposedLeaseID, timeout, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.changeLeaseResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*BlobChangeLeaseResponse), err
+}
+
+// changeLeasePreparer prepares the ChangeLease request.
+func (client blobClient) changeLeasePreparer(leaseID string, proposedLeaseID string, timeout *int32, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("PUT", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ params.Set("comp", "lease")
+ req.URL.RawQuery = params.Encode()
+ req.Header.Set("x-ms-lease-id", leaseID)
+ req.Header.Set("x-ms-proposed-lease-id", proposedLeaseID)
+ if ifModifiedSince != nil {
+ req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifUnmodifiedSince != nil {
+ req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifMatch != nil {
+ req.Header.Set("If-Match", string(*ifMatch))
+ }
+ if ifNoneMatch != nil {
+ req.Header.Set("If-None-Match", string(*ifNoneMatch))
+ }
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ req.Header.Set("x-ms-lease-action", "change")
+ return req, nil
+}
+
+// changeLeaseResponder handles the response to the ChangeLease request.
+func (client blobClient) changeLeaseResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK)
+ if resp == nil {
+ return nil, err
+ }
+ io.Copy(ioutil.Discard, resp.Response().Body)
+ resp.Response().Body.Close()
+ return &BlobChangeLeaseResponse{rawResponse: resp.Response()}, err
+}
+
+// CopyFromURL the Copy From URL operation copies a blob or an internet resource to a new blob. It will not return a
+// response until the copy is complete.
+//
+// copySource is specifies the name of the source page blob snapshot. This value is a URL of up to 2 KB in length that
+// specifies a page blob snapshot. The value should be URL-encoded as it would appear in a request URI. The source blob
+// must either be public or must be authenticated via a shared access signature. timeout is the timeout parameter is
+// expressed in seconds. For more information, see Setting
+// Timeouts for Blob Service Operations. metadata is optional. Specifies a user-defined name-value pair associated
+// with the blob. If no name-value pairs are specified, the operation will copy the metadata from the source blob or
+// file to the destination blob. If one or more name-value pairs are specified, the destination blob is created with
+// the specified metadata, and metadata is not copied from the source blob or file. Note that beginning with version
+// 2009-09-19, metadata names must adhere to the naming rules for C# identifiers. See Naming and Referencing
+// Containers, Blobs, and Metadata for more information. tier is optional. Indicates the tier to be set on the blob.
+// sourceIfModifiedSince is specify this header value to operate only on a blob if it has been modified since the
+// specified date/time. sourceIfUnmodifiedSince is specify this header value to operate only on a blob if it has not
+// been modified since the specified date/time. sourceIfMatch is specify an ETag value to operate only on blobs with a
+// matching value. sourceIfNoneMatch is specify an ETag value to operate only on blobs without a matching value.
+// ifModifiedSince is specify this header value to operate only on a blob if it has been modified since the specified
+// date/time. ifUnmodifiedSince is specify this header value to operate only on a blob if it has not been modified
+// since the specified date/time. ifMatch is specify an ETag value to operate only on blobs with a matching value.
+// ifNoneMatch is specify an ETag value to operate only on blobs without a matching value. leaseID is if specified, the
+// operation only succeeds if the resource's lease is active and matches this ID. requestID is provides a
+// client-generated, opaque value with a 1 KB character limit that is recorded in the analytics logs when storage
+// analytics logging is enabled. sourceContentMD5 is specify the md5 calculated for the range of bytes that must be
+// read from the copy source.
+func (client blobClient) CopyFromURL(ctx context.Context, copySource string, timeout *int32, metadata map[string]string, tier AccessTierType, sourceIfModifiedSince *time.Time, sourceIfUnmodifiedSince *time.Time, sourceIfMatch *ETag, sourceIfNoneMatch *ETag, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, leaseID *string, requestID *string, sourceContentMD5 []byte) (*BlobCopyFromURLResponse, error) {
+ if err := validate([]validation{
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.copyFromURLPreparer(copySource, timeout, metadata, tier, sourceIfModifiedSince, sourceIfUnmodifiedSince, sourceIfMatch, sourceIfNoneMatch, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, leaseID, requestID, sourceContentMD5)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.copyFromURLResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*BlobCopyFromURLResponse), err
+}
+
+// copyFromURLPreparer prepares the CopyFromURL request.
+func (client blobClient) copyFromURLPreparer(copySource string, timeout *int32, metadata map[string]string, tier AccessTierType, sourceIfModifiedSince *time.Time, sourceIfUnmodifiedSince *time.Time, sourceIfMatch *ETag, sourceIfNoneMatch *ETag, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, leaseID *string, requestID *string, sourceContentMD5 []byte) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("PUT", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ req.URL.RawQuery = params.Encode()
+ if metadata != nil {
+ for k, v := range metadata {
+ req.Header.Set("x-ms-meta-"+k, v)
+ }
+ }
+ if tier != AccessTierNone {
+ req.Header.Set("x-ms-access-tier", string(tier))
+ }
+ if sourceIfModifiedSince != nil {
+ req.Header.Set("x-ms-source-if-modified-since", (*sourceIfModifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if sourceIfUnmodifiedSince != nil {
+ req.Header.Set("x-ms-source-if-unmodified-since", (*sourceIfUnmodifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if sourceIfMatch != nil {
+ req.Header.Set("x-ms-source-if-match", string(*sourceIfMatch))
+ }
+ if sourceIfNoneMatch != nil {
+ req.Header.Set("x-ms-source-if-none-match", string(*sourceIfNoneMatch))
+ }
+ if ifModifiedSince != nil {
+ req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifUnmodifiedSince != nil {
+ req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifMatch != nil {
+ req.Header.Set("If-Match", string(*ifMatch))
+ }
+ if ifNoneMatch != nil {
+ req.Header.Set("If-None-Match", string(*ifNoneMatch))
+ }
+ req.Header.Set("x-ms-copy-source", copySource)
+ if leaseID != nil {
+ req.Header.Set("x-ms-lease-id", *leaseID)
+ }
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ if sourceContentMD5 != nil {
+ req.Header.Set("x-ms-source-content-md5", base64.StdEncoding.EncodeToString(sourceContentMD5))
+ }
+ req.Header.Set("x-ms-requires-sync", "true")
+ return req, nil
+}
+
+// copyFromURLResponder handles the response to the CopyFromURL request.
+func (client blobClient) copyFromURLResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK, http.StatusAccepted)
+ if resp == nil {
+ return nil, err
+ }
+ io.Copy(ioutil.Discard, resp.Response().Body)
+ resp.Response().Body.Close()
+ return &BlobCopyFromURLResponse{rawResponse: resp.Response()}, err
+}
+
+// CreateSnapshot the Create Snapshot operation creates a read-only snapshot of a blob
+//
+// timeout is the timeout parameter is expressed in seconds. For more information, see Setting
+// Timeouts for Blob Service Operations. metadata is optional. Specifies a user-defined name-value pair associated
+// with the blob. If no name-value pairs are specified, the operation will copy the metadata from the source blob or
+// file to the destination blob. If one or more name-value pairs are specified, the destination blob is created with
+// the specified metadata, and metadata is not copied from the source blob or file. Note that beginning with version
+// 2009-09-19, metadata names must adhere to the naming rules for C# identifiers. See Naming and Referencing
+// Containers, Blobs, and Metadata for more information. encryptionKey is optional. Specifies the encryption key to use
+// to encrypt the data provided in the request. If not specified, encryption is performed with the root account
+// encryption key. For more information, see Encryption at Rest for Azure Storage Services. encryptionKeySha256 is the
+// SHA-256 hash of the provided encryption key. Must be provided if the x-ms-encryption-key header is provided.
+// encryptionAlgorithm is the algorithm used to produce the encryption key hash. Currently, the only accepted value is
+// "AES256". Must be provided if the x-ms-encryption-key header is provided. ifModifiedSince is specify this header
+// value to operate only on a blob if it has been modified since the specified date/time. ifUnmodifiedSince is specify
+// this header value to operate only on a blob if it has not been modified since the specified date/time. ifMatch is
+// specify an ETag value to operate only on blobs with a matching value. ifNoneMatch is specify an ETag value to
+// operate only on blobs without a matching value. leaseID is if specified, the operation only succeeds if the
+// resource's lease is active and matches this ID. requestID is provides a client-generated, opaque value with a 1 KB
+// character limit that is recorded in the analytics logs when storage analytics logging is enabled.
+func (client blobClient) CreateSnapshot(ctx context.Context, timeout *int32, metadata map[string]string, encryptionKey *string, encryptionKeySha256 *string, encryptionAlgorithm EncryptionAlgorithmType, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, leaseID *string, requestID *string) (*BlobCreateSnapshotResponse, error) {
+ if err := validate([]validation{
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.createSnapshotPreparer(timeout, metadata, encryptionKey, encryptionKeySha256, encryptionAlgorithm, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, leaseID, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.createSnapshotResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*BlobCreateSnapshotResponse), err
+}
+
+// createSnapshotPreparer prepares the CreateSnapshot request.
+func (client blobClient) createSnapshotPreparer(timeout *int32, metadata map[string]string, encryptionKey *string, encryptionKeySha256 *string, encryptionAlgorithm EncryptionAlgorithmType, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, leaseID *string, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("PUT", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ params.Set("comp", "snapshot")
+ req.URL.RawQuery = params.Encode()
+ if metadata != nil {
+ for k, v := range metadata {
+ req.Header.Set("x-ms-meta-"+k, v)
+ }
+ }
+ if encryptionKey != nil {
+ req.Header.Set("x-ms-encryption-key", *encryptionKey)
+ }
+ if encryptionKeySha256 != nil {
+ req.Header.Set("x-ms-encryption-key-sha256", *encryptionKeySha256)
+ }
+ if encryptionAlgorithm != EncryptionAlgorithmNone {
+ req.Header.Set("x-ms-encryption-algorithm", string(encryptionAlgorithm))
+ }
+ if ifModifiedSince != nil {
+ req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifUnmodifiedSince != nil {
+ req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifMatch != nil {
+ req.Header.Set("If-Match", string(*ifMatch))
+ }
+ if ifNoneMatch != nil {
+ req.Header.Set("If-None-Match", string(*ifNoneMatch))
+ }
+ if leaseID != nil {
+ req.Header.Set("x-ms-lease-id", *leaseID)
+ }
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ return req, nil
+}
+
+// createSnapshotResponder handles the response to the CreateSnapshot request.
+func (client blobClient) createSnapshotResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK, http.StatusCreated)
+ if resp == nil {
+ return nil, err
+ }
+ io.Copy(ioutil.Discard, resp.Response().Body)
+ resp.Response().Body.Close()
+ return &BlobCreateSnapshotResponse{rawResponse: resp.Response()}, err
+}
+
+// Delete if the storage account's soft delete feature is disabled then, when a blob is deleted, it is permanently
+// removed from the storage account. If the storage account's soft delete feature is enabled, then, when a blob is
+// deleted, it is marked for deletion and becomes inaccessible immediately. However, the blob service retains the blob
+// or snapshot for the number of days specified by the DeleteRetentionPolicy section of [Storage service properties]
+// (Set-Blob-Service-Properties.md). After the specified number of days has passed, the blob's data is permanently
+// removed from the storage account. Note that you continue to be charged for the soft-deleted blob's storage until it
+// is permanently removed. Use the List Blobs API and specify the "include=deleted" query parameter to discover which
+// blobs and snapshots have been soft deleted. You can then use the Undelete Blob API to restore a soft-deleted blob.
+// All other operations on a soft-deleted blob or snapshot causes the service to return an HTTP status code of 404
+// (ResourceNotFound).
+//
+// snapshot is the snapshot parameter is an opaque DateTime value that, when present, specifies the blob snapshot to
+// retrieve. For more information on working with blob snapshots, see Creating
+// a Snapshot of a Blob. timeout is the timeout parameter is expressed in seconds. For more information, see Setting
+// Timeouts for Blob Service Operations. leaseID is if specified, the operation only succeeds if the resource's
+// lease is active and matches this ID. deleteSnapshots is required if the blob has associated snapshots. Specify one
+// of the following two options: include: Delete the base blob and all of its snapshots. only: Delete only the blob's
+// snapshots and not the blob itself ifModifiedSince is specify this header value to operate only on a blob if it has
+// been modified since the specified date/time. ifUnmodifiedSince is specify this header value to operate only on a
+// blob if it has not been modified since the specified date/time. ifMatch is specify an ETag value to operate only on
+// blobs with a matching value. ifNoneMatch is specify an ETag value to operate only on blobs without a matching value.
+// requestID is provides a client-generated, opaque value with a 1 KB character limit that is recorded in the analytics
+// logs when storage analytics logging is enabled.
+func (client blobClient) Delete(ctx context.Context, snapshot *string, timeout *int32, leaseID *string, deleteSnapshots DeleteSnapshotsOptionType, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (*BlobDeleteResponse, error) {
+ if err := validate([]validation{
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.deletePreparer(snapshot, timeout, leaseID, deleteSnapshots, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.deleteResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*BlobDeleteResponse), err
+}
+
+// deletePreparer prepares the Delete request.
+func (client blobClient) deletePreparer(snapshot *string, timeout *int32, leaseID *string, deleteSnapshots DeleteSnapshotsOptionType, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("DELETE", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if snapshot != nil && len(*snapshot) > 0 {
+ params.Set("snapshot", *snapshot)
+ }
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ req.URL.RawQuery = params.Encode()
+ if leaseID != nil {
+ req.Header.Set("x-ms-lease-id", *leaseID)
+ }
+ if deleteSnapshots != DeleteSnapshotsOptionNone {
+ req.Header.Set("x-ms-delete-snapshots", string(deleteSnapshots))
+ }
+ if ifModifiedSince != nil {
+ req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifUnmodifiedSince != nil {
+ req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifMatch != nil {
+ req.Header.Set("If-Match", string(*ifMatch))
+ }
+ if ifNoneMatch != nil {
+ req.Header.Set("If-None-Match", string(*ifNoneMatch))
+ }
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ return req, nil
+}
+
+// deleteResponder handles the response to the Delete request.
+func (client blobClient) deleteResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK, http.StatusAccepted)
+ if resp == nil {
+ return nil, err
+ }
+ io.Copy(ioutil.Discard, resp.Response().Body)
+ resp.Response().Body.Close()
+ return &BlobDeleteResponse{rawResponse: resp.Response()}, err
+}
+
+// Download the Download operation reads or downloads a blob from the system, including its metadata and properties.
+// You can also call Download to read a snapshot.
+//
+// snapshot is the snapshot parameter is an opaque DateTime value that, when present, specifies the blob snapshot to
+// retrieve. For more information on working with blob snapshots, see Creating
+// a Snapshot of a Blob. timeout is the timeout parameter is expressed in seconds. For more information, see Setting
+// Timeouts for Blob Service Operations. rangeParameter is return only the bytes of the blob in the specified
+// range. leaseID is if specified, the operation only succeeds if the resource's lease is active and matches this ID.
+// rangeGetContentMD5 is when set to true and specified together with the Range, the service returns the MD5 hash for
+// the range, as long as the range is less than or equal to 4 MB in size. rangeGetContentCRC64 is when set to true and
+// specified together with the Range, the service returns the CRC64 hash for the range, as long as the range is less
+// than or equal to 4 MB in size. encryptionKey is optional. Specifies the encryption key to use to encrypt the data
+// provided in the request. If not specified, encryption is performed with the root account encryption key. For more
+// information, see Encryption at Rest for Azure Storage Services. encryptionKeySha256 is the SHA-256 hash of the
+// provided encryption key. Must be provided if the x-ms-encryption-key header is provided. encryptionAlgorithm is the
+// algorithm used to produce the encryption key hash. Currently, the only accepted value is "AES256". Must be provided
+// if the x-ms-encryption-key header is provided. ifModifiedSince is specify this header value to operate only on a
+// blob if it has been modified since the specified date/time. ifUnmodifiedSince is specify this header value to
+// operate only on a blob if it has not been modified since the specified date/time. ifMatch is specify an ETag value
+// to operate only on blobs with a matching value. ifNoneMatch is specify an ETag value to operate only on blobs
+// without a matching value. requestID is provides a client-generated, opaque value with a 1 KB character limit that is
+// recorded in the analytics logs when storage analytics logging is enabled.
+func (client blobClient) Download(ctx context.Context, snapshot *string, timeout *int32, rangeParameter *string, leaseID *string, rangeGetContentMD5 *bool, rangeGetContentCRC64 *bool, encryptionKey *string, encryptionKeySha256 *string, encryptionAlgorithm EncryptionAlgorithmType, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (*downloadResponse, error) {
+ if err := validate([]validation{
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.downloadPreparer(snapshot, timeout, rangeParameter, leaseID, rangeGetContentMD5, rangeGetContentCRC64, encryptionKey, encryptionKeySha256, encryptionAlgorithm, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.downloadResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*downloadResponse), err
+}
+
+// downloadPreparer prepares the Download request.
+func (client blobClient) downloadPreparer(snapshot *string, timeout *int32, rangeParameter *string, leaseID *string, rangeGetContentMD5 *bool, rangeGetContentCRC64 *bool, encryptionKey *string, encryptionKeySha256 *string, encryptionAlgorithm EncryptionAlgorithmType, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("GET", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if snapshot != nil && len(*snapshot) > 0 {
+ params.Set("snapshot", *snapshot)
+ }
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ req.URL.RawQuery = params.Encode()
+ if rangeParameter != nil {
+ req.Header.Set("x-ms-range", *rangeParameter)
+ }
+ if leaseID != nil {
+ req.Header.Set("x-ms-lease-id", *leaseID)
+ }
+ if rangeGetContentMD5 != nil {
+ req.Header.Set("x-ms-range-get-content-md5", strconv.FormatBool(*rangeGetContentMD5))
+ }
+ if rangeGetContentCRC64 != nil {
+ req.Header.Set("x-ms-range-get-content-crc64", strconv.FormatBool(*rangeGetContentCRC64))
+ }
+ if encryptionKey != nil {
+ req.Header.Set("x-ms-encryption-key", *encryptionKey)
+ }
+ if encryptionKeySha256 != nil {
+ req.Header.Set("x-ms-encryption-key-sha256", *encryptionKeySha256)
+ }
+ if encryptionAlgorithm != EncryptionAlgorithmNone {
+ req.Header.Set("x-ms-encryption-algorithm", string(encryptionAlgorithm))
+ }
+ if ifModifiedSince != nil {
+ req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifUnmodifiedSince != nil {
+ req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifMatch != nil {
+ req.Header.Set("If-Match", string(*ifMatch))
+ }
+ if ifNoneMatch != nil {
+ req.Header.Set("If-None-Match", string(*ifNoneMatch))
+ }
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ return req, nil
+}
+
+// downloadResponder handles the response to the Download request.
+func (client blobClient) downloadResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK, http.StatusPartialContent)
+ if resp == nil {
+ return nil, err
+ }
+ return &downloadResponse{rawResponse: resp.Response()}, err
+}
+
+// GetAccessControl get the owner, group, permissions, or access control list for a blob.
+//
+// timeout is the timeout parameter is expressed in seconds. For more information, see Setting
+// Timeouts for Blob Service Operations. upn is optional. Valid only when Hierarchical Namespace is enabled for the
+// account. If "true", the identity values returned in the x-ms-owner, x-ms-group, and x-ms-acl response headers will
+// be transformed from Azure Active Directory Object IDs to User Principal Names. If "false", the values will be
+// returned as Azure Active Directory Object IDs. The default value is false. leaseID is if specified, the operation
+// only succeeds if the resource's lease is active and matches this ID. ifMatch is specify an ETag value to operate
+// only on blobs with a matching value. ifNoneMatch is specify an ETag value to operate only on blobs without a
+// matching value. ifModifiedSince is specify this header value to operate only on a blob if it has been modified since
+// the specified date/time. ifUnmodifiedSince is specify this header value to operate only on a blob if it has not been
+// modified since the specified date/time. requestID is provides a client-generated, opaque value with a 1 KB character
+// limit that is recorded in the analytics logs when storage analytics logging is enabled.
+func (client blobClient) GetAccessControl(ctx context.Context, timeout *int32, upn *bool, leaseID *string, ifMatch *ETag, ifNoneMatch *ETag, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, requestID *string) (*BlobGetAccessControlResponse, error) {
+ if err := validate([]validation{
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.getAccessControlPreparer(timeout, upn, leaseID, ifMatch, ifNoneMatch, ifModifiedSince, ifUnmodifiedSince, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.getAccessControlResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*BlobGetAccessControlResponse), err
+}
+
+// getAccessControlPreparer prepares the GetAccessControl request.
+func (client blobClient) getAccessControlPreparer(timeout *int32, upn *bool, leaseID *string, ifMatch *ETag, ifNoneMatch *ETag, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("HEAD", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ if upn != nil {
+ params.Set("upn", strconv.FormatBool(*upn))
+ }
+ params.Set("action", "getAccessControl")
+ req.URL.RawQuery = params.Encode()
+ if leaseID != nil {
+ req.Header.Set("x-ms-lease-id", *leaseID)
+ }
+ if ifMatch != nil {
+ req.Header.Set("If-Match", string(*ifMatch))
+ }
+ if ifNoneMatch != nil {
+ req.Header.Set("If-None-Match", string(*ifNoneMatch))
+ }
+ if ifModifiedSince != nil {
+ req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifUnmodifiedSince != nil {
+ req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ req.Header.Set("x-ms-version", ServiceVersion)
+ return req, nil
+}
+
+// getAccessControlResponder handles the response to the GetAccessControl request.
+func (client blobClient) getAccessControlResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK)
+ if resp == nil {
+ return nil, err
+ }
+ io.Copy(ioutil.Discard, resp.Response().Body)
+ resp.Response().Body.Close()
+ return &BlobGetAccessControlResponse{rawResponse: resp.Response()}, err
+}
+
+// GetAccountInfo returns the sku name and account kind
+func (client blobClient) GetAccountInfo(ctx context.Context) (*BlobGetAccountInfoResponse, error) {
+ req, err := client.getAccountInfoPreparer()
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.getAccountInfoResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*BlobGetAccountInfoResponse), err
+}
+
+// getAccountInfoPreparer prepares the GetAccountInfo request.
+func (client blobClient) getAccountInfoPreparer() (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("GET", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ params.Set("restype", "account")
+ params.Set("comp", "properties")
+ req.URL.RawQuery = params.Encode()
+ req.Header.Set("x-ms-version", ServiceVersion)
+ return req, nil
+}
+
+// getAccountInfoResponder handles the response to the GetAccountInfo request.
+func (client blobClient) getAccountInfoResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK)
+ if resp == nil {
+ return nil, err
+ }
+ io.Copy(ioutil.Discard, resp.Response().Body)
+ resp.Response().Body.Close()
+ return &BlobGetAccountInfoResponse{rawResponse: resp.Response()}, err
+}
+
+// GetProperties the Get Properties operation returns all user-defined metadata, standard HTTP properties, and system
+// properties for the blob. It does not return the content of the blob.
+//
+// snapshot is the snapshot parameter is an opaque DateTime value that, when present, specifies the blob snapshot to
+// retrieve. For more information on working with blob snapshots, see Creating
+// a Snapshot of a Blob. timeout is the timeout parameter is expressed in seconds. For more information, see Setting
+// Timeouts for Blob Service Operations. leaseID is if specified, the operation only succeeds if the resource's
+// lease is active and matches this ID. encryptionKey is optional. Specifies the encryption key to use to encrypt the
+// data provided in the request. If not specified, encryption is performed with the root account encryption key. For
+// more information, see Encryption at Rest for Azure Storage Services. encryptionKeySha256 is the SHA-256 hash of the
+// provided encryption key. Must be provided if the x-ms-encryption-key header is provided. encryptionAlgorithm is the
+// algorithm used to produce the encryption key hash. Currently, the only accepted value is "AES256". Must be provided
+// if the x-ms-encryption-key header is provided. ifModifiedSince is specify this header value to operate only on a
+// blob if it has been modified since the specified date/time. ifUnmodifiedSince is specify this header value to
+// operate only on a blob if it has not been modified since the specified date/time. ifMatch is specify an ETag value
+// to operate only on blobs with a matching value. ifNoneMatch is specify an ETag value to operate only on blobs
+// without a matching value. requestID is provides a client-generated, opaque value with a 1 KB character limit that is
+// recorded in the analytics logs when storage analytics logging is enabled.
+func (client blobClient) GetProperties(ctx context.Context, snapshot *string, timeout *int32, leaseID *string, encryptionKey *string, encryptionKeySha256 *string, encryptionAlgorithm EncryptionAlgorithmType, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (*BlobGetPropertiesResponse, error) {
+ if err := validate([]validation{
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.getPropertiesPreparer(snapshot, timeout, leaseID, encryptionKey, encryptionKeySha256, encryptionAlgorithm, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.getPropertiesResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*BlobGetPropertiesResponse), err
+}
+
+// getPropertiesPreparer prepares the GetProperties request.
+func (client blobClient) getPropertiesPreparer(snapshot *string, timeout *int32, leaseID *string, encryptionKey *string, encryptionKeySha256 *string, encryptionAlgorithm EncryptionAlgorithmType, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("HEAD", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if snapshot != nil && len(*snapshot) > 0 {
+ params.Set("snapshot", *snapshot)
+ }
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ req.URL.RawQuery = params.Encode()
+ if leaseID != nil {
+ req.Header.Set("x-ms-lease-id", *leaseID)
+ }
+ if encryptionKey != nil {
+ req.Header.Set("x-ms-encryption-key", *encryptionKey)
+ }
+ if encryptionKeySha256 != nil {
+ req.Header.Set("x-ms-encryption-key-sha256", *encryptionKeySha256)
+ }
+ if encryptionAlgorithm != EncryptionAlgorithmNone {
+ req.Header.Set("x-ms-encryption-algorithm", string(encryptionAlgorithm))
+ }
+ if ifModifiedSince != nil {
+ req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifUnmodifiedSince != nil {
+ req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifMatch != nil {
+ req.Header.Set("If-Match", string(*ifMatch))
+ }
+ if ifNoneMatch != nil {
+ req.Header.Set("If-None-Match", string(*ifNoneMatch))
+ }
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ return req, nil
+}
+
+// getPropertiesResponder handles the response to the GetProperties request.
+func (client blobClient) getPropertiesResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK)
+ if resp == nil {
+ return nil, err
+ }
+ io.Copy(ioutil.Discard, resp.Response().Body)
+ resp.Response().Body.Close()
+ return &BlobGetPropertiesResponse{rawResponse: resp.Response()}, err
+}
+
+// ReleaseLease [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete
+// operations
+//
+// leaseID is specifies the current lease ID on the resource. timeout is the timeout parameter is expressed in seconds.
+// For more information, see Setting
+// Timeouts for Blob Service Operations. ifModifiedSince is specify this header value to operate only on a blob if
+// it has been modified since the specified date/time. ifUnmodifiedSince is specify this header value to operate only
+// on a blob if it has not been modified since the specified date/time. ifMatch is specify an ETag value to operate
+// only on blobs with a matching value. ifNoneMatch is specify an ETag value to operate only on blobs without a
+// matching value. requestID is provides a client-generated, opaque value with a 1 KB character limit that is recorded
+// in the analytics logs when storage analytics logging is enabled.
+func (client blobClient) ReleaseLease(ctx context.Context, leaseID string, timeout *int32, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (*BlobReleaseLeaseResponse, error) {
+ if err := validate([]validation{
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.releaseLeasePreparer(leaseID, timeout, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.releaseLeaseResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*BlobReleaseLeaseResponse), err
+}
+
+// releaseLeasePreparer prepares the ReleaseLease request.
+func (client blobClient) releaseLeasePreparer(leaseID string, timeout *int32, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("PUT", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ params.Set("comp", "lease")
+ req.URL.RawQuery = params.Encode()
+ req.Header.Set("x-ms-lease-id", leaseID)
+ if ifModifiedSince != nil {
+ req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifUnmodifiedSince != nil {
+ req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifMatch != nil {
+ req.Header.Set("If-Match", string(*ifMatch))
+ }
+ if ifNoneMatch != nil {
+ req.Header.Set("If-None-Match", string(*ifNoneMatch))
+ }
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ req.Header.Set("x-ms-lease-action", "release")
+ return req, nil
+}
+
+// releaseLeaseResponder handles the response to the ReleaseLease request.
+func (client blobClient) releaseLeaseResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK)
+ if resp == nil {
+ return nil, err
+ }
+ io.Copy(ioutil.Discard, resp.Response().Body)
+ resp.Response().Body.Close()
+ return &BlobReleaseLeaseResponse{rawResponse: resp.Response()}, err
+}
+
+// RenewLease [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete
+// operations
+//
+// leaseID is specifies the current lease ID on the resource. timeout is the timeout parameter is expressed in seconds.
+// For more information, see Setting
+// Timeouts for Blob Service Operations. ifModifiedSince is specify this header value to operate only on a blob if
+// it has been modified since the specified date/time. ifUnmodifiedSince is specify this header value to operate only
+// on a blob if it has not been modified since the specified date/time. ifMatch is specify an ETag value to operate
+// only on blobs with a matching value. ifNoneMatch is specify an ETag value to operate only on blobs without a
+// matching value. requestID is provides a client-generated, opaque value with a 1 KB character limit that is recorded
+// in the analytics logs when storage analytics logging is enabled.
+func (client blobClient) RenewLease(ctx context.Context, leaseID string, timeout *int32, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (*BlobRenewLeaseResponse, error) {
+ if err := validate([]validation{
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.renewLeasePreparer(leaseID, timeout, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.renewLeaseResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*BlobRenewLeaseResponse), err
+}
+
+// renewLeasePreparer prepares the RenewLease request.
+func (client blobClient) renewLeasePreparer(leaseID string, timeout *int32, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("PUT", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ params.Set("comp", "lease")
+ req.URL.RawQuery = params.Encode()
+ req.Header.Set("x-ms-lease-id", leaseID)
+ if ifModifiedSince != nil {
+ req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifUnmodifiedSince != nil {
+ req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifMatch != nil {
+ req.Header.Set("If-Match", string(*ifMatch))
+ }
+ if ifNoneMatch != nil {
+ req.Header.Set("If-None-Match", string(*ifNoneMatch))
+ }
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ req.Header.Set("x-ms-lease-action", "renew")
+ return req, nil
+}
+
+// renewLeaseResponder handles the response to the RenewLease request.
+func (client blobClient) renewLeaseResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK)
+ if resp == nil {
+ return nil, err
+ }
+ io.Copy(ioutil.Discard, resp.Response().Body)
+ resp.Response().Body.Close()
+ return &BlobRenewLeaseResponse{rawResponse: resp.Response()}, err
+}
+
+// SetAccessControl set the owner, group, permissions, or access control list for a blob.
+//
+// timeout is the timeout parameter is expressed in seconds. For more information, see Setting
+// Timeouts for Blob Service Operations. leaseID is if specified, the operation only succeeds if the resource's
+// lease is active and matches this ID. owner is optional. The owner of the blob or directory. group is optional. The
+// owning group of the blob or directory. posixPermissions is optional and only valid if Hierarchical Namespace is
+// enabled for the account. Sets POSIX access permissions for the file owner, the file owning group, and others. Each
+// class may be granted read, write, or execute permission. The sticky bit is also supported. Both symbolic
+// (rwxrw-rw-) and 4-digit octal notation (e.g. 0766) are supported. posixACL is sets POSIX access control rights on
+// files and directories. The value is a comma-separated list of access control entries. Each access control entry
+// (ACE) consists of a scope, a type, a user or group identifier, and permissions in the format
+// "[scope:][type]:[id]:[permissions]". ifMatch is specify an ETag value to operate only on blobs with a matching
+// value. ifNoneMatch is specify an ETag value to operate only on blobs without a matching value. ifModifiedSince is
+// specify this header value to operate only on a blob if it has been modified since the specified date/time.
+// ifUnmodifiedSince is specify this header value to operate only on a blob if it has not been modified since the
+// specified date/time. requestID is provides a client-generated, opaque value with a 1 KB character limit that is
+// recorded in the analytics logs when storage analytics logging is enabled.
+func (client blobClient) SetAccessControl(ctx context.Context, timeout *int32, leaseID *string, owner *string, group *string, posixPermissions *string, posixACL *string, ifMatch *ETag, ifNoneMatch *ETag, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, requestID *string) (*BlobSetAccessControlResponse, error) {
+ if err := validate([]validation{
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.setAccessControlPreparer(timeout, leaseID, owner, group, posixPermissions, posixACL, ifMatch, ifNoneMatch, ifModifiedSince, ifUnmodifiedSince, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.setAccessControlResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*BlobSetAccessControlResponse), err
+}
+
+// setAccessControlPreparer prepares the SetAccessControl request.
+func (client blobClient) setAccessControlPreparer(timeout *int32, leaseID *string, owner *string, group *string, posixPermissions *string, posixACL *string, ifMatch *ETag, ifNoneMatch *ETag, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("PATCH", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ params.Set("action", "setAccessControl")
+ req.URL.RawQuery = params.Encode()
+ if leaseID != nil {
+ req.Header.Set("x-ms-lease-id", *leaseID)
+ }
+ if owner != nil {
+ req.Header.Set("x-ms-owner", *owner)
+ }
+ if group != nil {
+ req.Header.Set("x-ms-group", *group)
+ }
+ if posixPermissions != nil {
+ req.Header.Set("x-ms-permissions", *posixPermissions)
+ }
+ if posixACL != nil {
+ req.Header.Set("x-ms-acl", *posixACL)
+ }
+ if ifMatch != nil {
+ req.Header.Set("If-Match", string(*ifMatch))
+ }
+ if ifNoneMatch != nil {
+ req.Header.Set("If-None-Match", string(*ifNoneMatch))
+ }
+ if ifModifiedSince != nil {
+ req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifUnmodifiedSince != nil {
+ req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ req.Header.Set("x-ms-version", ServiceVersion)
+ return req, nil
+}
+
+// setAccessControlResponder handles the response to the SetAccessControl request.
+func (client blobClient) setAccessControlResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK)
+ if resp == nil {
+ return nil, err
+ }
+ io.Copy(ioutil.Discard, resp.Response().Body)
+ resp.Response().Body.Close()
+ return &BlobSetAccessControlResponse{rawResponse: resp.Response()}, err
+}
+
+// SetHTTPHeaders the Set HTTP Headers operation sets system properties on the blob
+//
+// timeout is the timeout parameter is expressed in seconds. For more information, see Setting
+// Timeouts for Blob Service Operations. blobCacheControl is optional. Sets the blob's cache control. If specified,
+// this property is stored with the blob and returned with a read request. blobContentType is optional. Sets the blob's
+// content type. If specified, this property is stored with the blob and returned with a read request. blobContentMD5
+// is optional. An MD5 hash of the blob content. Note that this hash is not validated, as the hashes for the individual
+// blocks were validated when each was uploaded. blobContentEncoding is optional. Sets the blob's content encoding. If
+// specified, this property is stored with the blob and returned with a read request. blobContentLanguage is optional.
+// Set the blob's content language. If specified, this property is stored with the blob and returned with a read
+// request. leaseID is if specified, the operation only succeeds if the resource's lease is active and matches this ID.
+// ifModifiedSince is specify this header value to operate only on a blob if it has been modified since the specified
+// date/time. ifUnmodifiedSince is specify this header value to operate only on a blob if it has not been modified
+// since the specified date/time. ifMatch is specify an ETag value to operate only on blobs with a matching value.
+// ifNoneMatch is specify an ETag value to operate only on blobs without a matching value. blobContentDisposition is
+// optional. Sets the blob's Content-Disposition header. requestID is provides a client-generated, opaque value with a
+// 1 KB character limit that is recorded in the analytics logs when storage analytics logging is enabled.
+func (client blobClient) SetHTTPHeaders(ctx context.Context, timeout *int32, blobCacheControl *string, blobContentType *string, blobContentMD5 []byte, blobContentEncoding *string, blobContentLanguage *string, leaseID *string, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, blobContentDisposition *string, requestID *string) (*BlobSetHTTPHeadersResponse, error) {
+ if err := validate([]validation{
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.setHTTPHeadersPreparer(timeout, blobCacheControl, blobContentType, blobContentMD5, blobContentEncoding, blobContentLanguage, leaseID, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, blobContentDisposition, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.setHTTPHeadersResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*BlobSetHTTPHeadersResponse), err
+}
+
+// setHTTPHeadersPreparer prepares the SetHTTPHeaders request.
+func (client blobClient) setHTTPHeadersPreparer(timeout *int32, blobCacheControl *string, blobContentType *string, blobContentMD5 []byte, blobContentEncoding *string, blobContentLanguage *string, leaseID *string, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, blobContentDisposition *string, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("PUT", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ params.Set("comp", "properties")
+ req.URL.RawQuery = params.Encode()
+ if blobCacheControl != nil {
+ req.Header.Set("x-ms-blob-cache-control", *blobCacheControl)
+ }
+ if blobContentType != nil {
+ req.Header.Set("x-ms-blob-content-type", *blobContentType)
+ }
+ if blobContentMD5 != nil {
+ req.Header.Set("x-ms-blob-content-md5", base64.StdEncoding.EncodeToString(blobContentMD5))
+ }
+ if blobContentEncoding != nil {
+ req.Header.Set("x-ms-blob-content-encoding", *blobContentEncoding)
+ }
+ if blobContentLanguage != nil {
+ req.Header.Set("x-ms-blob-content-language", *blobContentLanguage)
+ }
+ if leaseID != nil {
+ req.Header.Set("x-ms-lease-id", *leaseID)
+ }
+ if ifModifiedSince != nil {
+ req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifUnmodifiedSince != nil {
+ req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifMatch != nil {
+ req.Header.Set("If-Match", string(*ifMatch))
+ }
+ if ifNoneMatch != nil {
+ req.Header.Set("If-None-Match", string(*ifNoneMatch))
+ }
+ if blobContentDisposition != nil {
+ req.Header.Set("x-ms-blob-content-disposition", *blobContentDisposition)
+ }
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ return req, nil
+}
+
+// setHTTPHeadersResponder handles the response to the SetHTTPHeaders request.
+func (client blobClient) setHTTPHeadersResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK)
+ if resp == nil {
+ return nil, err
+ }
+ io.Copy(ioutil.Discard, resp.Response().Body)
+ resp.Response().Body.Close()
+ return &BlobSetHTTPHeadersResponse{rawResponse: resp.Response()}, err
+}
+
+// SetMetadata the Set Blob Metadata operation sets user-defined metadata for the specified blob as one or more
+// name-value pairs
+//
+// timeout is the timeout parameter is expressed in seconds. For more information, see Setting
+// Timeouts for Blob Service Operations. metadata is optional. Specifies a user-defined name-value pair associated
+// with the blob. If no name-value pairs are specified, the operation will copy the metadata from the source blob or
+// file to the destination blob. If one or more name-value pairs are specified, the destination blob is created with
+// the specified metadata, and metadata is not copied from the source blob or file. Note that beginning with version
+// 2009-09-19, metadata names must adhere to the naming rules for C# identifiers. See Naming and Referencing
+// Containers, Blobs, and Metadata for more information. leaseID is if specified, the operation only succeeds if the
+// resource's lease is active and matches this ID. encryptionKey is optional. Specifies the encryption key to use to
+// encrypt the data provided in the request. If not specified, encryption is performed with the root account encryption
+// key. For more information, see Encryption at Rest for Azure Storage Services. encryptionKeySha256 is the SHA-256
+// hash of the provided encryption key. Must be provided if the x-ms-encryption-key header is provided.
+// encryptionAlgorithm is the algorithm used to produce the encryption key hash. Currently, the only accepted value is
+// "AES256". Must be provided if the x-ms-encryption-key header is provided. ifModifiedSince is specify this header
+// value to operate only on a blob if it has been modified since the specified date/time. ifUnmodifiedSince is specify
+// this header value to operate only on a blob if it has not been modified since the specified date/time. ifMatch is
+// specify an ETag value to operate only on blobs with a matching value. ifNoneMatch is specify an ETag value to
+// operate only on blobs without a matching value. requestID is provides a client-generated, opaque value with a 1 KB
+// character limit that is recorded in the analytics logs when storage analytics logging is enabled.
+func (client blobClient) SetMetadata(ctx context.Context, timeout *int32, metadata map[string]string, leaseID *string, encryptionKey *string, encryptionKeySha256 *string, encryptionAlgorithm EncryptionAlgorithmType, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (*BlobSetMetadataResponse, error) {
+ if err := validate([]validation{
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.setMetadataPreparer(timeout, metadata, leaseID, encryptionKey, encryptionKeySha256, encryptionAlgorithm, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.setMetadataResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*BlobSetMetadataResponse), err
+}
+
+// setMetadataPreparer prepares the SetMetadata request.
+func (client blobClient) setMetadataPreparer(timeout *int32, metadata map[string]string, leaseID *string, encryptionKey *string, encryptionKeySha256 *string, encryptionAlgorithm EncryptionAlgorithmType, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("PUT", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ params.Set("comp", "metadata")
+ req.URL.RawQuery = params.Encode()
+ if metadata != nil {
+ for k, v := range metadata {
+ req.Header.Set("x-ms-meta-"+k, v)
+ }
+ }
+ if leaseID != nil {
+ req.Header.Set("x-ms-lease-id", *leaseID)
+ }
+ if encryptionKey != nil {
+ req.Header.Set("x-ms-encryption-key", *encryptionKey)
+ }
+ if encryptionKeySha256 != nil {
+ req.Header.Set("x-ms-encryption-key-sha256", *encryptionKeySha256)
+ }
+ if encryptionAlgorithm != EncryptionAlgorithmNone {
+ req.Header.Set("x-ms-encryption-algorithm", string(encryptionAlgorithm))
+ }
+ if ifModifiedSince != nil {
+ req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifUnmodifiedSince != nil {
+ req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifMatch != nil {
+ req.Header.Set("If-Match", string(*ifMatch))
+ }
+ if ifNoneMatch != nil {
+ req.Header.Set("If-None-Match", string(*ifNoneMatch))
+ }
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ return req, nil
+}
+
+// setMetadataResponder handles the response to the SetMetadata request.
+func (client blobClient) setMetadataResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK)
+ if resp == nil {
+ return nil, err
+ }
+ io.Copy(ioutil.Discard, resp.Response().Body)
+ resp.Response().Body.Close()
+ return &BlobSetMetadataResponse{rawResponse: resp.Response()}, err
+}
+
+// SetTier the Set Tier operation sets the tier on a blob. The operation is allowed on a page blob in a premium storage
+// account and on a block blob in a blob storage account (locally redundant storage only). A premium page blob's tier
+// determines the allowed size, IOPS, and bandwidth of the blob. A block blob's tier determines Hot/Cool/Archive
+// storage type. This operation does not update the blob's ETag.
+//
+// tier is indicates the tier to be set on the blob. timeout is the timeout parameter is expressed in seconds. For more
+// information, see Setting
+// Timeouts for Blob Service Operations. rehydratePriority is optional: Indicates the priority with which to
+// rehydrate an archived blob. requestID is provides a client-generated, opaque value with a 1 KB character limit that
+// is recorded in the analytics logs when storage analytics logging is enabled. leaseID is if specified, the operation
+// only succeeds if the resource's lease is active and matches this ID.
+func (client blobClient) SetTier(ctx context.Context, tier AccessTierType, timeout *int32, rehydratePriority RehydratePriorityType, requestID *string, leaseID *string) (*BlobSetTierResponse, error) {
+ if err := validate([]validation{
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.setTierPreparer(tier, timeout, rehydratePriority, requestID, leaseID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.setTierResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*BlobSetTierResponse), err
+}
+
+// setTierPreparer prepares the SetTier request.
+func (client blobClient) setTierPreparer(tier AccessTierType, timeout *int32, rehydratePriority RehydratePriorityType, requestID *string, leaseID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("PUT", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ params.Set("comp", "tier")
+ req.URL.RawQuery = params.Encode()
+ req.Header.Set("x-ms-access-tier", string(tier))
+ if rehydratePriority != RehydratePriorityNone {
+ req.Header.Set("x-ms-rehydrate-priority", string(rehydratePriority))
+ }
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ if leaseID != nil {
+ req.Header.Set("x-ms-lease-id", *leaseID)
+ }
+ return req, nil
+}
+
+// setTierResponder handles the response to the SetTier request.
+func (client blobClient) setTierResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK, http.StatusAccepted)
+ if resp == nil {
+ return nil, err
+ }
+ io.Copy(ioutil.Discard, resp.Response().Body)
+ resp.Response().Body.Close()
+ return &BlobSetTierResponse{rawResponse: resp.Response()}, err
+}
+
+// StartCopyFromURL the Start Copy From URL operation copies a blob or an internet resource to a new blob.
+//
+// copySource is specifies the name of the source page blob snapshot. This value is a URL of up to 2 KB in length that
+// specifies a page blob snapshot. The value should be URL-encoded as it would appear in a request URI. The source blob
+// must either be public or must be authenticated via a shared access signature. timeout is the timeout parameter is
+// expressed in seconds. For more information, see Setting
+// Timeouts for Blob Service Operations. metadata is optional. Specifies a user-defined name-value pair associated
+// with the blob. If no name-value pairs are specified, the operation will copy the metadata from the source blob or
+// file to the destination blob. If one or more name-value pairs are specified, the destination blob is created with
+// the specified metadata, and metadata is not copied from the source blob or file. Note that beginning with version
+// 2009-09-19, metadata names must adhere to the naming rules for C# identifiers. See Naming and Referencing
+// Containers, Blobs, and Metadata for more information. tier is optional. Indicates the tier to be set on the blob.
+// rehydratePriority is optional: Indicates the priority with which to rehydrate an archived blob.
+// sourceIfModifiedSince is specify this header value to operate only on a blob if it has been modified since the
+// specified date/time. sourceIfUnmodifiedSince is specify this header value to operate only on a blob if it has not
+// been modified since the specified date/time. sourceIfMatch is specify an ETag value to operate only on blobs with a
+// matching value. sourceIfNoneMatch is specify an ETag value to operate only on blobs without a matching value.
+// ifModifiedSince is specify this header value to operate only on a blob if it has been modified since the specified
+// date/time. ifUnmodifiedSince is specify this header value to operate only on a blob if it has not been modified
+// since the specified date/time. ifMatch is specify an ETag value to operate only on blobs with a matching value.
+// ifNoneMatch is specify an ETag value to operate only on blobs without a matching value. leaseID is if specified, the
+// operation only succeeds if the resource's lease is active and matches this ID. requestID is provides a
+// client-generated, opaque value with a 1 KB character limit that is recorded in the analytics logs when storage
+// analytics logging is enabled.
+func (client blobClient) StartCopyFromURL(ctx context.Context, copySource string, timeout *int32, metadata map[string]string, tier AccessTierType, rehydratePriority RehydratePriorityType, sourceIfModifiedSince *time.Time, sourceIfUnmodifiedSince *time.Time, sourceIfMatch *ETag, sourceIfNoneMatch *ETag, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, leaseID *string, requestID *string) (*BlobStartCopyFromURLResponse, error) {
+ if err := validate([]validation{
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.startCopyFromURLPreparer(copySource, timeout, metadata, tier, rehydratePriority, sourceIfModifiedSince, sourceIfUnmodifiedSince, sourceIfMatch, sourceIfNoneMatch, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, leaseID, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.startCopyFromURLResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*BlobStartCopyFromURLResponse), err
+}
+
+// startCopyFromURLPreparer prepares the StartCopyFromURL request.
+func (client blobClient) startCopyFromURLPreparer(copySource string, timeout *int32, metadata map[string]string, tier AccessTierType, rehydratePriority RehydratePriorityType, sourceIfModifiedSince *time.Time, sourceIfUnmodifiedSince *time.Time, sourceIfMatch *ETag, sourceIfNoneMatch *ETag, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, leaseID *string, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("PUT", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ req.URL.RawQuery = params.Encode()
+ if metadata != nil {
+ for k, v := range metadata {
+ req.Header.Set("x-ms-meta-"+k, v)
+ }
+ }
+ if tier != AccessTierNone {
+ req.Header.Set("x-ms-access-tier", string(tier))
+ }
+ if rehydratePriority != RehydratePriorityNone {
+ req.Header.Set("x-ms-rehydrate-priority", string(rehydratePriority))
+ }
+ if sourceIfModifiedSince != nil {
+ req.Header.Set("x-ms-source-if-modified-since", (*sourceIfModifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if sourceIfUnmodifiedSince != nil {
+ req.Header.Set("x-ms-source-if-unmodified-since", (*sourceIfUnmodifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if sourceIfMatch != nil {
+ req.Header.Set("x-ms-source-if-match", string(*sourceIfMatch))
+ }
+ if sourceIfNoneMatch != nil {
+ req.Header.Set("x-ms-source-if-none-match", string(*sourceIfNoneMatch))
+ }
+ if ifModifiedSince != nil {
+ req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifUnmodifiedSince != nil {
+ req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifMatch != nil {
+ req.Header.Set("If-Match", string(*ifMatch))
+ }
+ if ifNoneMatch != nil {
+ req.Header.Set("If-None-Match", string(*ifNoneMatch))
+ }
+ req.Header.Set("x-ms-copy-source", copySource)
+ if leaseID != nil {
+ req.Header.Set("x-ms-lease-id", *leaseID)
+ }
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ return req, nil
+}
+
+// startCopyFromURLResponder handles the response to the StartCopyFromURL request.
+func (client blobClient) startCopyFromURLResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK, http.StatusAccepted)
+ if resp == nil {
+ return nil, err
+ }
+ io.Copy(ioutil.Discard, resp.Response().Body)
+ resp.Response().Body.Close()
+ return &BlobStartCopyFromURLResponse{rawResponse: resp.Response()}, err
+}
+
+// Undelete undelete a blob that was previously soft deleted
+//
+// timeout is the timeout parameter is expressed in seconds. For more information, see Setting
+// Timeouts for Blob Service Operations. requestID is provides a client-generated, opaque value with a 1 KB
+// character limit that is recorded in the analytics logs when storage analytics logging is enabled.
+func (client blobClient) Undelete(ctx context.Context, timeout *int32, requestID *string) (*BlobUndeleteResponse, error) {
+ if err := validate([]validation{
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.undeletePreparer(timeout, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.undeleteResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*BlobUndeleteResponse), err
+}
+
+// undeletePreparer prepares the Undelete request.
+func (client blobClient) undeletePreparer(timeout *int32, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("PUT", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ params.Set("comp", "undelete")
+ req.URL.RawQuery = params.Encode()
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ return req, nil
+}
+
+// undeleteResponder handles the response to the Undelete request.
+func (client blobClient) undeleteResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK)
+ if resp == nil {
+ return nil, err
+ }
+ io.Copy(ioutil.Discard, resp.Response().Body)
+ resp.Response().Body.Close()
+ return &BlobUndeleteResponse{rawResponse: resp.Response()}, err
+}
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_block_blob.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_block_blob.go
new file mode 100644
index 00000000..a9e913ec
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_block_blob.go
@@ -0,0 +1,592 @@
+package azblob
+
+// Code generated by Microsoft (R) AutoRest Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+ "bytes"
+ "context"
+ "encoding/base64"
+ "encoding/xml"
+ "github.com/Azure/azure-pipeline-go/pipeline"
+ "io"
+ "io/ioutil"
+ "net/http"
+ "net/url"
+ "strconv"
+ "time"
+)
+
+// blockBlobClient is the client for the BlockBlob methods of the Azblob service.
+type blockBlobClient struct {
+ managementClient
+}
+
+// newBlockBlobClient creates an instance of the blockBlobClient client.
+func newBlockBlobClient(url url.URL, p pipeline.Pipeline) blockBlobClient {
+ return blockBlobClient{newManagementClient(url, p)}
+}
+
+// CommitBlockList the Commit Block List operation writes a blob by specifying the list of block IDs that make up the
+// blob. In order to be written as part of a blob, a block must have been successfully written to the server in a prior
+// Put Block operation. You can call Put Block List to update a blob by uploading only those blocks that have changed,
+// then committing the new and existing blocks together. You can do this by specifying whether to commit a block from
+// the committed block list or from the uncommitted block list, or to commit the most recently uploaded version of the
+// block, whichever list it may belong to.
+//
+// timeout is the timeout parameter is expressed in seconds. For more information, see Setting
+// Timeouts for Blob Service Operations. blobCacheControl is optional. Sets the blob's cache control. If specified,
+// this property is stored with the blob and returned with a read request. blobContentType is optional. Sets the blob's
+// content type. If specified, this property is stored with the blob and returned with a read request.
+// blobContentEncoding is optional. Sets the blob's content encoding. If specified, this property is stored with the
+// blob and returned with a read request. blobContentLanguage is optional. Set the blob's content language. If
+// specified, this property is stored with the blob and returned with a read request. blobContentMD5 is optional. An
+// MD5 hash of the blob content. Note that this hash is not validated, as the hashes for the individual blocks were
+// validated when each was uploaded. transactionalContentMD5 is specify the transactional md5 for the body, to be
+// validated by the service. transactionalContentCrc64 is specify the transactional crc64 for the body, to be validated
+// by the service. metadata is optional. Specifies a user-defined name-value pair associated with the blob. If no
+// name-value pairs are specified, the operation will copy the metadata from the source blob or file to the destination
+// blob. If one or more name-value pairs are specified, the destination blob is created with the specified metadata,
+// and metadata is not copied from the source blob or file. Note that beginning with version 2009-09-19, metadata names
+// must adhere to the naming rules for C# identifiers. See Naming and Referencing Containers, Blobs, and Metadata for
+// more information. leaseID is if specified, the operation only succeeds if the resource's lease is active and matches
+// this ID. blobContentDisposition is optional. Sets the blob's Content-Disposition header. encryptionKey is optional.
+// Specifies the encryption key to use to encrypt the data provided in the request. If not specified, encryption is
+// performed with the root account encryption key. For more information, see Encryption at Rest for Azure Storage
+// Services. encryptionKeySha256 is the SHA-256 hash of the provided encryption key. Must be provided if the
+// x-ms-encryption-key header is provided. encryptionAlgorithm is the algorithm used to produce the encryption key
+// hash. Currently, the only accepted value is "AES256". Must be provided if the x-ms-encryption-key header is
+// provided. tier is optional. Indicates the tier to be set on the blob. ifModifiedSince is specify this header value
+// to operate only on a blob if it has been modified since the specified date/time. ifUnmodifiedSince is specify this
+// header value to operate only on a blob if it has not been modified since the specified date/time. ifMatch is specify
+// an ETag value to operate only on blobs with a matching value. ifNoneMatch is specify an ETag value to operate only
+// on blobs without a matching value. requestID is provides a client-generated, opaque value with a 1 KB character
+// limit that is recorded in the analytics logs when storage analytics logging is enabled.
+func (client blockBlobClient) CommitBlockList(ctx context.Context, blocks BlockLookupList, timeout *int32, blobCacheControl *string, blobContentType *string, blobContentEncoding *string, blobContentLanguage *string, blobContentMD5 []byte, transactionalContentMD5 []byte, transactionalContentCrc64 []byte, metadata map[string]string, leaseID *string, blobContentDisposition *string, encryptionKey *string, encryptionKeySha256 *string, encryptionAlgorithm EncryptionAlgorithmType, tier AccessTierType, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (*BlockBlobCommitBlockListResponse, error) {
+ if err := validate([]validation{
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.commitBlockListPreparer(blocks, timeout, blobCacheControl, blobContentType, blobContentEncoding, blobContentLanguage, blobContentMD5, transactionalContentMD5, transactionalContentCrc64, metadata, leaseID, blobContentDisposition, encryptionKey, encryptionKeySha256, encryptionAlgorithm, tier, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.commitBlockListResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*BlockBlobCommitBlockListResponse), err
+}
+
+// commitBlockListPreparer prepares the CommitBlockList request.
+func (client blockBlobClient) commitBlockListPreparer(blocks BlockLookupList, timeout *int32, blobCacheControl *string, blobContentType *string, blobContentEncoding *string, blobContentLanguage *string, blobContentMD5 []byte, transactionalContentMD5 []byte, transactionalContentCrc64 []byte, metadata map[string]string, leaseID *string, blobContentDisposition *string, encryptionKey *string, encryptionKeySha256 *string, encryptionAlgorithm EncryptionAlgorithmType, tier AccessTierType, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("PUT", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ params.Set("comp", "blocklist")
+ req.URL.RawQuery = params.Encode()
+ if blobCacheControl != nil {
+ req.Header.Set("x-ms-blob-cache-control", *blobCacheControl)
+ }
+ if blobContentType != nil {
+ req.Header.Set("x-ms-blob-content-type", *blobContentType)
+ }
+ if blobContentEncoding != nil {
+ req.Header.Set("x-ms-blob-content-encoding", *blobContentEncoding)
+ }
+ if blobContentLanguage != nil {
+ req.Header.Set("x-ms-blob-content-language", *blobContentLanguage)
+ }
+ if blobContentMD5 != nil {
+ req.Header.Set("x-ms-blob-content-md5", base64.StdEncoding.EncodeToString(blobContentMD5))
+ }
+ if transactionalContentMD5 != nil {
+ req.Header.Set("Content-MD5", base64.StdEncoding.EncodeToString(transactionalContentMD5))
+ }
+ if transactionalContentCrc64 != nil {
+ req.Header.Set("x-ms-content-crc64", base64.StdEncoding.EncodeToString(transactionalContentCrc64))
+ }
+ if metadata != nil {
+ for k, v := range metadata {
+ req.Header.Set("x-ms-meta-"+k, v)
+ }
+ }
+ if leaseID != nil {
+ req.Header.Set("x-ms-lease-id", *leaseID)
+ }
+ if blobContentDisposition != nil {
+ req.Header.Set("x-ms-blob-content-disposition", *blobContentDisposition)
+ }
+ if encryptionKey != nil {
+ req.Header.Set("x-ms-encryption-key", *encryptionKey)
+ }
+ if encryptionKeySha256 != nil {
+ req.Header.Set("x-ms-encryption-key-sha256", *encryptionKeySha256)
+ }
+ if encryptionAlgorithm != EncryptionAlgorithmNone {
+ req.Header.Set("x-ms-encryption-algorithm", string(encryptionAlgorithm))
+ }
+ if tier != AccessTierNone {
+ req.Header.Set("x-ms-access-tier", string(tier))
+ }
+ if ifModifiedSince != nil {
+ req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifUnmodifiedSince != nil {
+ req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifMatch != nil {
+ req.Header.Set("If-Match", string(*ifMatch))
+ }
+ if ifNoneMatch != nil {
+ req.Header.Set("If-None-Match", string(*ifNoneMatch))
+ }
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ b, err := xml.Marshal(blocks)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to marshal request body")
+ }
+ req.Header.Set("Content-Type", "application/xml")
+ err = req.SetBody(bytes.NewReader(b))
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to set request body")
+ }
+ return req, nil
+}
+
+// commitBlockListResponder handles the response to the CommitBlockList request.
+func (client blockBlobClient) commitBlockListResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK, http.StatusCreated)
+ if resp == nil {
+ return nil, err
+ }
+ io.Copy(ioutil.Discard, resp.Response().Body)
+ resp.Response().Body.Close()
+ return &BlockBlobCommitBlockListResponse{rawResponse: resp.Response()}, err
+}
+
+// GetBlockList the Get Block List operation retrieves the list of blocks that have been uploaded as part of a block
+// blob
+//
+// listType is specifies whether to return the list of committed blocks, the list of uncommitted blocks, or both lists
+// together. snapshot is the snapshot parameter is an opaque DateTime value that, when present, specifies the blob
+// snapshot to retrieve. For more information on working with blob snapshots, see Creating
+// a Snapshot of a Blob. timeout is the timeout parameter is expressed in seconds. For more information, see Setting
+// Timeouts for Blob Service Operations. leaseID is if specified, the operation only succeeds if the resource's
+// lease is active and matches this ID. requestID is provides a client-generated, opaque value with a 1 KB character
+// limit that is recorded in the analytics logs when storage analytics logging is enabled.
+func (client blockBlobClient) GetBlockList(ctx context.Context, listType BlockListType, snapshot *string, timeout *int32, leaseID *string, requestID *string) (*BlockList, error) {
+ if err := validate([]validation{
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.getBlockListPreparer(listType, snapshot, timeout, leaseID, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.getBlockListResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*BlockList), err
+}
+
+// getBlockListPreparer prepares the GetBlockList request.
+func (client blockBlobClient) getBlockListPreparer(listType BlockListType, snapshot *string, timeout *int32, leaseID *string, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("GET", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if snapshot != nil && len(*snapshot) > 0 {
+ params.Set("snapshot", *snapshot)
+ }
+ params.Set("blocklisttype", string(listType))
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ params.Set("comp", "blocklist")
+ req.URL.RawQuery = params.Encode()
+ if leaseID != nil {
+ req.Header.Set("x-ms-lease-id", *leaseID)
+ }
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ return req, nil
+}
+
+// getBlockListResponder handles the response to the GetBlockList request.
+func (client blockBlobClient) getBlockListResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK)
+ if resp == nil {
+ return nil, err
+ }
+ result := &BlockList{rawResponse: resp.Response()}
+ if err != nil {
+ return result, err
+ }
+ defer resp.Response().Body.Close()
+ b, err := ioutil.ReadAll(resp.Response().Body)
+ if err != nil {
+ return result, err
+ }
+ if len(b) > 0 {
+ b = removeBOM(b)
+ err = xml.Unmarshal(b, result)
+ if err != nil {
+ return result, NewResponseError(err, resp.Response(), "failed to unmarshal response body")
+ }
+ }
+ return result, nil
+}
+
+// StageBlock the Stage Block operation creates a new block to be committed as part of a blob
+//
+// blockID is a valid Base64 string value that identifies the block. Prior to encoding, the string must be less than or
+// equal to 64 bytes in size. For a given blob, the length of the value specified for the blockid parameter must be the
+// same size for each block. contentLength is the length of the request. body is initial data body will be closed upon
+// successful return. Callers should ensure closure when receiving an error.transactionalContentMD5 is specify the
+// transactional md5 for the body, to be validated by the service. transactionalContentCrc64 is specify the
+// transactional crc64 for the body, to be validated by the service. timeout is the timeout parameter is expressed in
+// seconds. For more information, see Setting
+// Timeouts for Blob Service Operations. leaseID is if specified, the operation only succeeds if the resource's
+// lease is active and matches this ID. encryptionKey is optional. Specifies the encryption key to use to encrypt the
+// data provided in the request. If not specified, encryption is performed with the root account encryption key. For
+// more information, see Encryption at Rest for Azure Storage Services. encryptionKeySha256 is the SHA-256 hash of the
+// provided encryption key. Must be provided if the x-ms-encryption-key header is provided. encryptionAlgorithm is the
+// algorithm used to produce the encryption key hash. Currently, the only accepted value is "AES256". Must be provided
+// if the x-ms-encryption-key header is provided. requestID is provides a client-generated, opaque value with a 1 KB
+// character limit that is recorded in the analytics logs when storage analytics logging is enabled.
+func (client blockBlobClient) StageBlock(ctx context.Context, blockID string, contentLength int64, body io.ReadSeeker, transactionalContentMD5 []byte, transactionalContentCrc64 []byte, timeout *int32, leaseID *string, encryptionKey *string, encryptionKeySha256 *string, encryptionAlgorithm EncryptionAlgorithmType, requestID *string) (*BlockBlobStageBlockResponse, error) {
+ if err := validate([]validation{
+ {targetValue: body,
+ constraints: []constraint{{target: "body", name: null, rule: true, chain: nil}}},
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.stageBlockPreparer(blockID, contentLength, body, transactionalContentMD5, transactionalContentCrc64, timeout, leaseID, encryptionKey, encryptionKeySha256, encryptionAlgorithm, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.stageBlockResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*BlockBlobStageBlockResponse), err
+}
+
+// stageBlockPreparer prepares the StageBlock request.
+func (client blockBlobClient) stageBlockPreparer(blockID string, contentLength int64, body io.ReadSeeker, transactionalContentMD5 []byte, transactionalContentCrc64 []byte, timeout *int32, leaseID *string, encryptionKey *string, encryptionKeySha256 *string, encryptionAlgorithm EncryptionAlgorithmType, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("PUT", client.url, body)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ params.Set("blockid", blockID)
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ params.Set("comp", "block")
+ req.URL.RawQuery = params.Encode()
+ req.Header.Set("Content-Length", strconv.FormatInt(contentLength, 10))
+ if transactionalContentMD5 != nil {
+ req.Header.Set("Content-MD5", base64.StdEncoding.EncodeToString(transactionalContentMD5))
+ }
+ if transactionalContentCrc64 != nil {
+ req.Header.Set("x-ms-content-crc64", base64.StdEncoding.EncodeToString(transactionalContentCrc64))
+ }
+ if leaseID != nil {
+ req.Header.Set("x-ms-lease-id", *leaseID)
+ }
+ if encryptionKey != nil {
+ req.Header.Set("x-ms-encryption-key", *encryptionKey)
+ }
+ if encryptionKeySha256 != nil {
+ req.Header.Set("x-ms-encryption-key-sha256", *encryptionKeySha256)
+ }
+ if encryptionAlgorithm != EncryptionAlgorithmNone {
+ req.Header.Set("x-ms-encryption-algorithm", string(encryptionAlgorithm))
+ }
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ return req, nil
+}
+
+// stageBlockResponder handles the response to the StageBlock request.
+func (client blockBlobClient) stageBlockResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK, http.StatusCreated)
+ if resp == nil {
+ return nil, err
+ }
+ io.Copy(ioutil.Discard, resp.Response().Body)
+ resp.Response().Body.Close()
+ return &BlockBlobStageBlockResponse{rawResponse: resp.Response()}, err
+}
+
+// StageBlockFromURL the Stage Block operation creates a new block to be committed as part of a blob where the contents
+// are read from a URL.
+//
+// blockID is a valid Base64 string value that identifies the block. Prior to encoding, the string must be less than or
+// equal to 64 bytes in size. For a given blob, the length of the value specified for the blockid parameter must be the
+// same size for each block. contentLength is the length of the request. sourceURL is specify a URL to the copy source.
+// sourceRange is bytes of source data in the specified range. sourceContentMD5 is specify the md5 calculated for the
+// range of bytes that must be read from the copy source. sourceContentcrc64 is specify the crc64 calculated for the
+// range of bytes that must be read from the copy source. timeout is the timeout parameter is expressed in seconds. For
+// more information, see Setting
+// Timeouts for Blob Service Operations. encryptionKey is optional. Specifies the encryption key to use to encrypt
+// the data provided in the request. If not specified, encryption is performed with the root account encryption key.
+// For more information, see Encryption at Rest for Azure Storage Services. encryptionKeySha256 is the SHA-256 hash of
+// the provided encryption key. Must be provided if the x-ms-encryption-key header is provided. encryptionAlgorithm is
+// the algorithm used to produce the encryption key hash. Currently, the only accepted value is "AES256". Must be
+// provided if the x-ms-encryption-key header is provided. leaseID is if specified, the operation only succeeds if the
+// resource's lease is active and matches this ID. sourceIfModifiedSince is specify this header value to operate only
+// on a blob if it has been modified since the specified date/time. sourceIfUnmodifiedSince is specify this header
+// value to operate only on a blob if it has not been modified since the specified date/time. sourceIfMatch is specify
+// an ETag value to operate only on blobs with a matching value. sourceIfNoneMatch is specify an ETag value to operate
+// only on blobs without a matching value. requestID is provides a client-generated, opaque value with a 1 KB character
+// limit that is recorded in the analytics logs when storage analytics logging is enabled.
+func (client blockBlobClient) StageBlockFromURL(ctx context.Context, blockID string, contentLength int64, sourceURL string, sourceRange *string, sourceContentMD5 []byte, sourceContentcrc64 []byte, timeout *int32, encryptionKey *string, encryptionKeySha256 *string, encryptionAlgorithm EncryptionAlgorithmType, leaseID *string, sourceIfModifiedSince *time.Time, sourceIfUnmodifiedSince *time.Time, sourceIfMatch *ETag, sourceIfNoneMatch *ETag, requestID *string) (*BlockBlobStageBlockFromURLResponse, error) {
+ if err := validate([]validation{
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.stageBlockFromURLPreparer(blockID, contentLength, sourceURL, sourceRange, sourceContentMD5, sourceContentcrc64, timeout, encryptionKey, encryptionKeySha256, encryptionAlgorithm, leaseID, sourceIfModifiedSince, sourceIfUnmodifiedSince, sourceIfMatch, sourceIfNoneMatch, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.stageBlockFromURLResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*BlockBlobStageBlockFromURLResponse), err
+}
+
+// stageBlockFromURLPreparer prepares the StageBlockFromURL request.
+func (client blockBlobClient) stageBlockFromURLPreparer(blockID string, contentLength int64, sourceURL string, sourceRange *string, sourceContentMD5 []byte, sourceContentcrc64 []byte, timeout *int32, encryptionKey *string, encryptionKeySha256 *string, encryptionAlgorithm EncryptionAlgorithmType, leaseID *string, sourceIfModifiedSince *time.Time, sourceIfUnmodifiedSince *time.Time, sourceIfMatch *ETag, sourceIfNoneMatch *ETag, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("PUT", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ params.Set("blockid", blockID)
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ params.Set("comp", "block")
+ req.URL.RawQuery = params.Encode()
+ req.Header.Set("Content-Length", strconv.FormatInt(contentLength, 10))
+ req.Header.Set("x-ms-copy-source", sourceURL)
+ if sourceRange != nil {
+ req.Header.Set("x-ms-source-range", *sourceRange)
+ }
+ if sourceContentMD5 != nil {
+ req.Header.Set("x-ms-source-content-md5", base64.StdEncoding.EncodeToString(sourceContentMD5))
+ }
+ if sourceContentcrc64 != nil {
+ req.Header.Set("x-ms-source-content-crc64", base64.StdEncoding.EncodeToString(sourceContentcrc64))
+ }
+ if encryptionKey != nil {
+ req.Header.Set("x-ms-encryption-key", *encryptionKey)
+ }
+ if encryptionKeySha256 != nil {
+ req.Header.Set("x-ms-encryption-key-sha256", *encryptionKeySha256)
+ }
+ if encryptionAlgorithm != EncryptionAlgorithmNone {
+ req.Header.Set("x-ms-encryption-algorithm", string(encryptionAlgorithm))
+ }
+ if leaseID != nil {
+ req.Header.Set("x-ms-lease-id", *leaseID)
+ }
+ if sourceIfModifiedSince != nil {
+ req.Header.Set("x-ms-source-if-modified-since", (*sourceIfModifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if sourceIfUnmodifiedSince != nil {
+ req.Header.Set("x-ms-source-if-unmodified-since", (*sourceIfUnmodifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if sourceIfMatch != nil {
+ req.Header.Set("x-ms-source-if-match", string(*sourceIfMatch))
+ }
+ if sourceIfNoneMatch != nil {
+ req.Header.Set("x-ms-source-if-none-match", string(*sourceIfNoneMatch))
+ }
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ return req, nil
+}
+
+// stageBlockFromURLResponder handles the response to the StageBlockFromURL request.
+func (client blockBlobClient) stageBlockFromURLResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK, http.StatusCreated)
+ if resp == nil {
+ return nil, err
+ }
+ io.Copy(ioutil.Discard, resp.Response().Body)
+ resp.Response().Body.Close()
+ return &BlockBlobStageBlockFromURLResponse{rawResponse: resp.Response()}, err
+}
+
+// Upload the Upload Block Blob operation updates the content of an existing block blob. Updating an existing block
+// blob overwrites any existing metadata on the blob. Partial updates are not supported with Put Blob; the content of
+// the existing blob is overwritten with the content of the new blob. To perform a partial update of the content of a
+// block blob, use the Put Block List operation.
+//
+// body is initial data body will be closed upon successful return. Callers should ensure closure when receiving an
+// error.contentLength is the length of the request. timeout is the timeout parameter is expressed in seconds. For more
+// information, see Setting
+// Timeouts for Blob Service Operations. transactionalContentMD5 is specify the transactional md5 for the body, to
+// be validated by the service. blobContentType is optional. Sets the blob's content type. If specified, this property
+// is stored with the blob and returned with a read request. blobContentEncoding is optional. Sets the blob's content
+// encoding. If specified, this property is stored with the blob and returned with a read request. blobContentLanguage
+// is optional. Set the blob's content language. If specified, this property is stored with the blob and returned with
+// a read request. blobContentMD5 is optional. An MD5 hash of the blob content. Note that this hash is not validated,
+// as the hashes for the individual blocks were validated when each was uploaded. blobCacheControl is optional. Sets
+// the blob's cache control. If specified, this property is stored with the blob and returned with a read request.
+// metadata is optional. Specifies a user-defined name-value pair associated with the blob. If no name-value pairs are
+// specified, the operation will copy the metadata from the source blob or file to the destination blob. If one or more
+// name-value pairs are specified, the destination blob is created with the specified metadata, and metadata is not
+// copied from the source blob or file. Note that beginning with version 2009-09-19, metadata names must adhere to the
+// naming rules for C# identifiers. See Naming and Referencing Containers, Blobs, and Metadata for more information.
+// leaseID is if specified, the operation only succeeds if the resource's lease is active and matches this ID.
+// blobContentDisposition is optional. Sets the blob's Content-Disposition header. encryptionKey is optional. Specifies
+// the encryption key to use to encrypt the data provided in the request. If not specified, encryption is performed
+// with the root account encryption key. For more information, see Encryption at Rest for Azure Storage Services.
+// encryptionKeySha256 is the SHA-256 hash of the provided encryption key. Must be provided if the x-ms-encryption-key
+// header is provided. encryptionAlgorithm is the algorithm used to produce the encryption key hash. Currently, the
+// only accepted value is "AES256". Must be provided if the x-ms-encryption-key header is provided. tier is optional.
+// Indicates the tier to be set on the blob. ifModifiedSince is specify this header value to operate only on a blob if
+// it has been modified since the specified date/time. ifUnmodifiedSince is specify this header value to operate only
+// on a blob if it has not been modified since the specified date/time. ifMatch is specify an ETag value to operate
+// only on blobs with a matching value. ifNoneMatch is specify an ETag value to operate only on blobs without a
+// matching value. requestID is provides a client-generated, opaque value with a 1 KB character limit that is recorded
+// in the analytics logs when storage analytics logging is enabled.
+func (client blockBlobClient) Upload(ctx context.Context, body io.ReadSeeker, contentLength int64, timeout *int32, transactionalContentMD5 []byte, blobContentType *string, blobContentEncoding *string, blobContentLanguage *string, blobContentMD5 []byte, blobCacheControl *string, metadata map[string]string, leaseID *string, blobContentDisposition *string, encryptionKey *string, encryptionKeySha256 *string, encryptionAlgorithm EncryptionAlgorithmType, tier AccessTierType, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (*BlockBlobUploadResponse, error) {
+ if err := validate([]validation{
+ {targetValue: body,
+ constraints: []constraint{{target: "body", name: null, rule: true, chain: nil}}},
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.uploadPreparer(body, contentLength, timeout, transactionalContentMD5, blobContentType, blobContentEncoding, blobContentLanguage, blobContentMD5, blobCacheControl, metadata, leaseID, blobContentDisposition, encryptionKey, encryptionKeySha256, encryptionAlgorithm, tier, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.uploadResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*BlockBlobUploadResponse), err
+}
+
+// uploadPreparer prepares the Upload request.
+func (client blockBlobClient) uploadPreparer(body io.ReadSeeker, contentLength int64, timeout *int32, transactionalContentMD5 []byte, blobContentType *string, blobContentEncoding *string, blobContentLanguage *string, blobContentMD5 []byte, blobCacheControl *string, metadata map[string]string, leaseID *string, blobContentDisposition *string, encryptionKey *string, encryptionKeySha256 *string, encryptionAlgorithm EncryptionAlgorithmType, tier AccessTierType, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("PUT", client.url, body)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ req.URL.RawQuery = params.Encode()
+ if transactionalContentMD5 != nil {
+ req.Header.Set("Content-MD5", base64.StdEncoding.EncodeToString(transactionalContentMD5))
+ }
+ req.Header.Set("Content-Length", strconv.FormatInt(contentLength, 10))
+ if blobContentType != nil {
+ req.Header.Set("x-ms-blob-content-type", *blobContentType)
+ }
+ if blobContentEncoding != nil {
+ req.Header.Set("x-ms-blob-content-encoding", *blobContentEncoding)
+ }
+ if blobContentLanguage != nil {
+ req.Header.Set("x-ms-blob-content-language", *blobContentLanguage)
+ }
+ if blobContentMD5 != nil {
+ req.Header.Set("x-ms-blob-content-md5", base64.StdEncoding.EncodeToString(blobContentMD5))
+ }
+ if blobCacheControl != nil {
+ req.Header.Set("x-ms-blob-cache-control", *blobCacheControl)
+ }
+ if metadata != nil {
+ for k, v := range metadata {
+ req.Header.Set("x-ms-meta-"+k, v)
+ }
+ }
+ if leaseID != nil {
+ req.Header.Set("x-ms-lease-id", *leaseID)
+ }
+ if blobContentDisposition != nil {
+ req.Header.Set("x-ms-blob-content-disposition", *blobContentDisposition)
+ }
+ if encryptionKey != nil {
+ req.Header.Set("x-ms-encryption-key", *encryptionKey)
+ }
+ if encryptionKeySha256 != nil {
+ req.Header.Set("x-ms-encryption-key-sha256", *encryptionKeySha256)
+ }
+ if encryptionAlgorithm != EncryptionAlgorithmNone {
+ req.Header.Set("x-ms-encryption-algorithm", string(encryptionAlgorithm))
+ }
+ if tier != AccessTierNone {
+ req.Header.Set("x-ms-access-tier", string(tier))
+ }
+ if ifModifiedSince != nil {
+ req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifUnmodifiedSince != nil {
+ req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifMatch != nil {
+ req.Header.Set("If-Match", string(*ifMatch))
+ }
+ if ifNoneMatch != nil {
+ req.Header.Set("If-None-Match", string(*ifNoneMatch))
+ }
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ req.Header.Set("x-ms-blob-type", "BlockBlob")
+ return req, nil
+}
+
+// uploadResponder handles the response to the Upload request.
+func (client blockBlobClient) uploadResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK, http.StatusCreated)
+ if resp == nil {
+ return nil, err
+ }
+ io.Copy(ioutil.Discard, resp.Response().Body)
+ resp.Response().Body.Close()
+ return &BlockBlobUploadResponse{rawResponse: resp.Response()}, err
+}
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_client.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_client.go
new file mode 100644
index 00000000..a882b325
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_client.go
@@ -0,0 +1,38 @@
+package azblob
+
+// Code generated by Microsoft (R) AutoRest Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+ "github.com/Azure/azure-pipeline-go/pipeline"
+ "net/url"
+)
+
+const (
+ // ServiceVersion specifies the version of the operations used in this package.
+ ServiceVersion = "2019-02-02"
+)
+
+// managementClient is the base client for Azblob.
+type managementClient struct {
+ url url.URL
+ p pipeline.Pipeline
+}
+
+// newManagementClient creates an instance of the managementClient client.
+func newManagementClient(url url.URL, p pipeline.Pipeline) managementClient {
+ return managementClient{
+ url: url,
+ p: p,
+ }
+}
+
+// URL returns a copy of the URL for this client.
+func (mc managementClient) URL() url.URL {
+ return mc.url
+}
+
+// Pipeline returns the pipeline for this client.
+func (mc managementClient) Pipeline() pipeline.Pipeline {
+ return mc.p
+}
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_container.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_container.go
new file mode 100644
index 00000000..599e8118
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_container.go
@@ -0,0 +1,1037 @@
+package azblob
+
+// Code generated by Microsoft (R) AutoRest Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+ "bytes"
+ "context"
+ "encoding/xml"
+ "github.com/Azure/azure-pipeline-go/pipeline"
+ "io"
+ "io/ioutil"
+ "net/http"
+ "net/url"
+ "strconv"
+ "time"
+)
+
+// containerClient is the client for the Container methods of the Azblob service.
+type containerClient struct {
+ managementClient
+}
+
+// newContainerClient creates an instance of the containerClient client.
+func newContainerClient(url url.URL, p pipeline.Pipeline) containerClient {
+ return containerClient{newManagementClient(url, p)}
+}
+
+// AcquireLease [Update] establishes and manages a lock on a container for delete operations. The lock duration can be
+// 15 to 60 seconds, or can be infinite
+//
+// timeout is the timeout parameter is expressed in seconds. For more information, see Setting
+// Timeouts for Blob Service Operations. duration is specifies the duration of the lease, in seconds, or negative
+// one (-1) for a lease that never expires. A non-infinite lease can be between 15 and 60 seconds. A lease duration
+// cannot be changed using renew or change. proposedLeaseID is proposed lease ID, in a GUID string format. The Blob
+// service returns 400 (Invalid request) if the proposed lease ID is not in the correct format. See Guid Constructor
+// (String) for a list of valid GUID string formats. ifModifiedSince is specify this header value to operate only on a
+// blob if it has been modified since the specified date/time. ifUnmodifiedSince is specify this header value to
+// operate only on a blob if it has not been modified since the specified date/time. requestID is provides a
+// client-generated, opaque value with a 1 KB character limit that is recorded in the analytics logs when storage
+// analytics logging is enabled.
+func (client containerClient) AcquireLease(ctx context.Context, timeout *int32, duration *int32, proposedLeaseID *string, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, requestID *string) (*ContainerAcquireLeaseResponse, error) {
+ if err := validate([]validation{
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.acquireLeasePreparer(timeout, duration, proposedLeaseID, ifModifiedSince, ifUnmodifiedSince, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.acquireLeaseResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*ContainerAcquireLeaseResponse), err
+}
+
+// acquireLeasePreparer prepares the AcquireLease request.
+func (client containerClient) acquireLeasePreparer(timeout *int32, duration *int32, proposedLeaseID *string, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("PUT", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ params.Set("comp", "lease")
+ params.Set("restype", "container")
+ req.URL.RawQuery = params.Encode()
+ if duration != nil {
+ req.Header.Set("x-ms-lease-duration", strconv.FormatInt(int64(*duration), 10))
+ }
+ if proposedLeaseID != nil {
+ req.Header.Set("x-ms-proposed-lease-id", *proposedLeaseID)
+ }
+ if ifModifiedSince != nil {
+ req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifUnmodifiedSince != nil {
+ req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ req.Header.Set("x-ms-lease-action", "acquire")
+ return req, nil
+}
+
+// acquireLeaseResponder handles the response to the AcquireLease request.
+func (client containerClient) acquireLeaseResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK, http.StatusCreated)
+ if resp == nil {
+ return nil, err
+ }
+ io.Copy(ioutil.Discard, resp.Response().Body)
+ resp.Response().Body.Close()
+ return &ContainerAcquireLeaseResponse{rawResponse: resp.Response()}, err
+}
+
+// BreakLease [Update] establishes and manages a lock on a container for delete operations. The lock duration can be 15
+// to 60 seconds, or can be infinite
+//
+// timeout is the timeout parameter is expressed in seconds. For more information, see Setting
+// Timeouts for Blob Service Operations. breakPeriod is for a break operation, proposed duration the lease should
+// continue before it is broken, in seconds, between 0 and 60. This break period is only used if it is shorter than the
+// time remaining on the lease. If longer, the time remaining on the lease is used. A new lease will not be available
+// before the break period has expired, but the lease may be held for longer than the break period. If this header does
+// not appear with a break operation, a fixed-duration lease breaks after the remaining lease period elapses, and an
+// infinite lease breaks immediately. ifModifiedSince is specify this header value to operate only on a blob if it has
+// been modified since the specified date/time. ifUnmodifiedSince is specify this header value to operate only on a
+// blob if it has not been modified since the specified date/time. requestID is provides a client-generated, opaque
+// value with a 1 KB character limit that is recorded in the analytics logs when storage analytics logging is enabled.
+func (client containerClient) BreakLease(ctx context.Context, timeout *int32, breakPeriod *int32, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, requestID *string) (*ContainerBreakLeaseResponse, error) {
+ if err := validate([]validation{
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.breakLeasePreparer(timeout, breakPeriod, ifModifiedSince, ifUnmodifiedSince, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.breakLeaseResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*ContainerBreakLeaseResponse), err
+}
+
+// breakLeasePreparer prepares the BreakLease request.
+func (client containerClient) breakLeasePreparer(timeout *int32, breakPeriod *int32, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("PUT", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ params.Set("comp", "lease")
+ params.Set("restype", "container")
+ req.URL.RawQuery = params.Encode()
+ if breakPeriod != nil {
+ req.Header.Set("x-ms-lease-break-period", strconv.FormatInt(int64(*breakPeriod), 10))
+ }
+ if ifModifiedSince != nil {
+ req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifUnmodifiedSince != nil {
+ req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ req.Header.Set("x-ms-lease-action", "break")
+ return req, nil
+}
+
+// breakLeaseResponder handles the response to the BreakLease request.
+func (client containerClient) breakLeaseResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK, http.StatusAccepted)
+ if resp == nil {
+ return nil, err
+ }
+ io.Copy(ioutil.Discard, resp.Response().Body)
+ resp.Response().Body.Close()
+ return &ContainerBreakLeaseResponse{rawResponse: resp.Response()}, err
+}
+
+// ChangeLease [Update] establishes and manages a lock on a container for delete operations. The lock duration can be
+// 15 to 60 seconds, or can be infinite
+//
+// leaseID is specifies the current lease ID on the resource. proposedLeaseID is proposed lease ID, in a GUID string
+// format. The Blob service returns 400 (Invalid request) if the proposed lease ID is not in the correct format. See
+// Guid Constructor (String) for a list of valid GUID string formats. timeout is the timeout parameter is expressed in
+// seconds. For more information, see Setting
+// Timeouts for Blob Service Operations. ifModifiedSince is specify this header value to operate only on a blob if
+// it has been modified since the specified date/time. ifUnmodifiedSince is specify this header value to operate only
+// on a blob if it has not been modified since the specified date/time. requestID is provides a client-generated,
+// opaque value with a 1 KB character limit that is recorded in the analytics logs when storage analytics logging is
+// enabled.
+func (client containerClient) ChangeLease(ctx context.Context, leaseID string, proposedLeaseID string, timeout *int32, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, requestID *string) (*ContainerChangeLeaseResponse, error) {
+ if err := validate([]validation{
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.changeLeasePreparer(leaseID, proposedLeaseID, timeout, ifModifiedSince, ifUnmodifiedSince, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.changeLeaseResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*ContainerChangeLeaseResponse), err
+}
+
+// changeLeasePreparer prepares the ChangeLease request.
+func (client containerClient) changeLeasePreparer(leaseID string, proposedLeaseID string, timeout *int32, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("PUT", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ params.Set("comp", "lease")
+ params.Set("restype", "container")
+ req.URL.RawQuery = params.Encode()
+ req.Header.Set("x-ms-lease-id", leaseID)
+ req.Header.Set("x-ms-proposed-lease-id", proposedLeaseID)
+ if ifModifiedSince != nil {
+ req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifUnmodifiedSince != nil {
+ req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ req.Header.Set("x-ms-lease-action", "change")
+ return req, nil
+}
+
+// changeLeaseResponder handles the response to the ChangeLease request.
+func (client containerClient) changeLeaseResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK)
+ if resp == nil {
+ return nil, err
+ }
+ io.Copy(ioutil.Discard, resp.Response().Body)
+ resp.Response().Body.Close()
+ return &ContainerChangeLeaseResponse{rawResponse: resp.Response()}, err
+}
+
+// Create creates a new container under the specified account. If the container with the same name already exists, the
+// operation fails
+//
+// timeout is the timeout parameter is expressed in seconds. For more information, see Setting
+// Timeouts for Blob Service Operations. metadata is optional. Specifies a user-defined name-value pair associated
+// with the blob. If no name-value pairs are specified, the operation will copy the metadata from the source blob or
+// file to the destination blob. If one or more name-value pairs are specified, the destination blob is created with
+// the specified metadata, and metadata is not copied from the source blob or file. Note that beginning with version
+// 2009-09-19, metadata names must adhere to the naming rules for C# identifiers. See Naming and Referencing
+// Containers, Blobs, and Metadata for more information. access is specifies whether data in the container may be
+// accessed publicly and the level of access requestID is provides a client-generated, opaque value with a 1 KB
+// character limit that is recorded in the analytics logs when storage analytics logging is enabled.
+func (client containerClient) Create(ctx context.Context, timeout *int32, metadata map[string]string, access PublicAccessType, requestID *string) (*ContainerCreateResponse, error) {
+ if err := validate([]validation{
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.createPreparer(timeout, metadata, access, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.createResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*ContainerCreateResponse), err
+}
+
+// createPreparer prepares the Create request.
+func (client containerClient) createPreparer(timeout *int32, metadata map[string]string, access PublicAccessType, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("PUT", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ params.Set("restype", "container")
+ req.URL.RawQuery = params.Encode()
+ if metadata != nil {
+ for k, v := range metadata {
+ req.Header.Set("x-ms-meta-"+k, v)
+ }
+ }
+ if access != PublicAccessNone {
+ req.Header.Set("x-ms-blob-public-access", string(access))
+ }
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ return req, nil
+}
+
+// createResponder handles the response to the Create request.
+func (client containerClient) createResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK, http.StatusCreated)
+ if resp == nil {
+ return nil, err
+ }
+ io.Copy(ioutil.Discard, resp.Response().Body)
+ resp.Response().Body.Close()
+ return &ContainerCreateResponse{rawResponse: resp.Response()}, err
+}
+
+// Delete operation marks the specified container for deletion. The container and any blobs contained within it are
+// later deleted during garbage collection
+//
+// timeout is the timeout parameter is expressed in seconds. For more information, see Setting
+// Timeouts for Blob Service Operations. leaseID is if specified, the operation only succeeds if the resource's
+// lease is active and matches this ID. ifModifiedSince is specify this header value to operate only on a blob if it
+// has been modified since the specified date/time. ifUnmodifiedSince is specify this header value to operate only on a
+// blob if it has not been modified since the specified date/time. requestID is provides a client-generated, opaque
+// value with a 1 KB character limit that is recorded in the analytics logs when storage analytics logging is enabled.
+func (client containerClient) Delete(ctx context.Context, timeout *int32, leaseID *string, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, requestID *string) (*ContainerDeleteResponse, error) {
+ if err := validate([]validation{
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.deletePreparer(timeout, leaseID, ifModifiedSince, ifUnmodifiedSince, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.deleteResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*ContainerDeleteResponse), err
+}
+
+// deletePreparer prepares the Delete request.
+func (client containerClient) deletePreparer(timeout *int32, leaseID *string, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("DELETE", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ params.Set("restype", "container")
+ req.URL.RawQuery = params.Encode()
+ if leaseID != nil {
+ req.Header.Set("x-ms-lease-id", *leaseID)
+ }
+ if ifModifiedSince != nil {
+ req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifUnmodifiedSince != nil {
+ req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ return req, nil
+}
+
+// deleteResponder handles the response to the Delete request.
+func (client containerClient) deleteResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK, http.StatusAccepted)
+ if resp == nil {
+ return nil, err
+ }
+ io.Copy(ioutil.Discard, resp.Response().Body)
+ resp.Response().Body.Close()
+ return &ContainerDeleteResponse{rawResponse: resp.Response()}, err
+}
+
+// GetAccessPolicy gets the permissions for the specified container. The permissions indicate whether container data
+// may be accessed publicly.
+//
+// timeout is the timeout parameter is expressed in seconds. For more information, see Setting
+// Timeouts for Blob Service Operations. leaseID is if specified, the operation only succeeds if the resource's
+// lease is active and matches this ID. requestID is provides a client-generated, opaque value with a 1 KB character
+// limit that is recorded in the analytics logs when storage analytics logging is enabled.
+func (client containerClient) GetAccessPolicy(ctx context.Context, timeout *int32, leaseID *string, requestID *string) (*SignedIdentifiers, error) {
+ if err := validate([]validation{
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.getAccessPolicyPreparer(timeout, leaseID, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.getAccessPolicyResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*SignedIdentifiers), err
+}
+
+// getAccessPolicyPreparer prepares the GetAccessPolicy request.
+func (client containerClient) getAccessPolicyPreparer(timeout *int32, leaseID *string, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("GET", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ params.Set("restype", "container")
+ params.Set("comp", "acl")
+ req.URL.RawQuery = params.Encode()
+ if leaseID != nil {
+ req.Header.Set("x-ms-lease-id", *leaseID)
+ }
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ return req, nil
+}
+
+// getAccessPolicyResponder handles the response to the GetAccessPolicy request.
+func (client containerClient) getAccessPolicyResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK)
+ if resp == nil {
+ return nil, err
+ }
+ result := &SignedIdentifiers{rawResponse: resp.Response()}
+ if err != nil {
+ return result, err
+ }
+ defer resp.Response().Body.Close()
+ b, err := ioutil.ReadAll(resp.Response().Body)
+ if err != nil {
+ return result, err
+ }
+ if len(b) > 0 {
+ b = removeBOM(b)
+ err = xml.Unmarshal(b, result)
+ if err != nil {
+ return result, NewResponseError(err, resp.Response(), "failed to unmarshal response body")
+ }
+ }
+ return result, nil
+}
+
+// GetAccountInfo returns the sku name and account kind
+func (client containerClient) GetAccountInfo(ctx context.Context) (*ContainerGetAccountInfoResponse, error) {
+ req, err := client.getAccountInfoPreparer()
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.getAccountInfoResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*ContainerGetAccountInfoResponse), err
+}
+
+// getAccountInfoPreparer prepares the GetAccountInfo request.
+func (client containerClient) getAccountInfoPreparer() (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("GET", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ params.Set("restype", "account")
+ params.Set("comp", "properties")
+ req.URL.RawQuery = params.Encode()
+ req.Header.Set("x-ms-version", ServiceVersion)
+ return req, nil
+}
+
+// getAccountInfoResponder handles the response to the GetAccountInfo request.
+func (client containerClient) getAccountInfoResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK)
+ if resp == nil {
+ return nil, err
+ }
+ io.Copy(ioutil.Discard, resp.Response().Body)
+ resp.Response().Body.Close()
+ return &ContainerGetAccountInfoResponse{rawResponse: resp.Response()}, err
+}
+
+// GetProperties returns all user-defined metadata and system properties for the specified container. The data returned
+// does not include the container's list of blobs
+//
+// timeout is the timeout parameter is expressed in seconds. For more information, see Setting
+// Timeouts for Blob Service Operations. leaseID is if specified, the operation only succeeds if the resource's
+// lease is active and matches this ID. requestID is provides a client-generated, opaque value with a 1 KB character
+// limit that is recorded in the analytics logs when storage analytics logging is enabled.
+func (client containerClient) GetProperties(ctx context.Context, timeout *int32, leaseID *string, requestID *string) (*ContainerGetPropertiesResponse, error) {
+ if err := validate([]validation{
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.getPropertiesPreparer(timeout, leaseID, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.getPropertiesResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*ContainerGetPropertiesResponse), err
+}
+
+// getPropertiesPreparer prepares the GetProperties request.
+func (client containerClient) getPropertiesPreparer(timeout *int32, leaseID *string, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("GET", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ params.Set("restype", "container")
+ req.URL.RawQuery = params.Encode()
+ if leaseID != nil {
+ req.Header.Set("x-ms-lease-id", *leaseID)
+ }
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ return req, nil
+}
+
+// getPropertiesResponder handles the response to the GetProperties request.
+func (client containerClient) getPropertiesResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK)
+ if resp == nil {
+ return nil, err
+ }
+ io.Copy(ioutil.Discard, resp.Response().Body)
+ resp.Response().Body.Close()
+ return &ContainerGetPropertiesResponse{rawResponse: resp.Response()}, err
+}
+
+// ListBlobFlatSegment [Update] The List Blobs operation returns a list of the blobs under the specified container
+//
+// prefix is filters the results to return only containers whose name begins with the specified prefix. marker is a
+// string value that identifies the portion of the list of containers to be returned with the next listing operation.
+// The operation returns the NextMarker value within the response body if the listing operation did not return all
+// containers remaining to be listed with the current page. The NextMarker value can be used as the value for the
+// marker parameter in a subsequent call to request the next page of list items. The marker value is opaque to the
+// client. maxresults is specifies the maximum number of containers to return. If the request does not specify
+// maxresults, or specifies a value greater than 5000, the server will return up to 5000 items. Note that if the
+// listing operation crosses a partition boundary, then the service will return a continuation token for retrieving the
+// remainder of the results. For this reason, it is possible that the service will return fewer results than specified
+// by maxresults, or than the default of 5000. include is include this parameter to specify one or more datasets to
+// include in the response. timeout is the timeout parameter is expressed in seconds. For more information, see Setting
+// Timeouts for Blob Service Operations. requestID is provides a client-generated, opaque value with a 1 KB
+// character limit that is recorded in the analytics logs when storage analytics logging is enabled.
+func (client containerClient) ListBlobFlatSegment(ctx context.Context, prefix *string, marker *string, maxresults *int32, include []ListBlobsIncludeItemType, timeout *int32, requestID *string) (*ListBlobsFlatSegmentResponse, error) {
+ if err := validate([]validation{
+ {targetValue: maxresults,
+ constraints: []constraint{{target: "maxresults", name: null, rule: false,
+ chain: []constraint{{target: "maxresults", name: inclusiveMinimum, rule: 1, chain: nil}}}}},
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.listBlobFlatSegmentPreparer(prefix, marker, maxresults, include, timeout, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.listBlobFlatSegmentResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*ListBlobsFlatSegmentResponse), err
+}
+
+// listBlobFlatSegmentPreparer prepares the ListBlobFlatSegment request.
+func (client containerClient) listBlobFlatSegmentPreparer(prefix *string, marker *string, maxresults *int32, include []ListBlobsIncludeItemType, timeout *int32, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("GET", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if prefix != nil && len(*prefix) > 0 {
+ params.Set("prefix", *prefix)
+ }
+ if marker != nil && len(*marker) > 0 {
+ params.Set("marker", *marker)
+ }
+ if maxresults != nil {
+ params.Set("maxresults", strconv.FormatInt(int64(*maxresults), 10))
+ }
+ if include != nil && len(include) > 0 {
+ params.Set("include", joinConst(include, ","))
+ }
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ params.Set("restype", "container")
+ params.Set("comp", "list")
+ req.URL.RawQuery = params.Encode()
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ return req, nil
+}
+
+// listBlobFlatSegmentResponder handles the response to the ListBlobFlatSegment request.
+func (client containerClient) listBlobFlatSegmentResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK)
+ if resp == nil {
+ return nil, err
+ }
+ result := &ListBlobsFlatSegmentResponse{rawResponse: resp.Response()}
+ if err != nil {
+ return result, err
+ }
+ defer resp.Response().Body.Close()
+ b, err := ioutil.ReadAll(resp.Response().Body)
+ if err != nil {
+ return result, err
+ }
+ if len(b) > 0 {
+ b = removeBOM(b)
+ err = xml.Unmarshal(b, result)
+ if err != nil {
+ return result, NewResponseError(err, resp.Response(), "failed to unmarshal response body")
+ }
+ }
+ return result, nil
+}
+
+// ListBlobHierarchySegment [Update] The List Blobs operation returns a list of the blobs under the specified container
+//
+// delimiter is when the request includes this parameter, the operation returns a BlobPrefix element in the response
+// body that acts as a placeholder for all blobs whose names begin with the same substring up to the appearance of the
+// delimiter character. The delimiter may be a single character or a string. prefix is filters the results to return
+// only containers whose name begins with the specified prefix. marker is a string value that identifies the portion of
+// the list of containers to be returned with the next listing operation. The operation returns the NextMarker value
+// within the response body if the listing operation did not return all containers remaining to be listed with the
+// current page. The NextMarker value can be used as the value for the marker parameter in a subsequent call to request
+// the next page of list items. The marker value is opaque to the client. maxresults is specifies the maximum number of
+// containers to return. If the request does not specify maxresults, or specifies a value greater than 5000, the server
+// will return up to 5000 items. Note that if the listing operation crosses a partition boundary, then the service will
+// return a continuation token for retrieving the remainder of the results. For this reason, it is possible that the
+// service will return fewer results than specified by maxresults, or than the default of 5000. include is include this
+// parameter to specify one or more datasets to include in the response. timeout is the timeout parameter is expressed
+// in seconds. For more information, see Setting
+// Timeouts for Blob Service Operations. requestID is provides a client-generated, opaque value with a 1 KB
+// character limit that is recorded in the analytics logs when storage analytics logging is enabled.
+func (client containerClient) ListBlobHierarchySegment(ctx context.Context, delimiter string, prefix *string, marker *string, maxresults *int32, include []ListBlobsIncludeItemType, timeout *int32, requestID *string) (*ListBlobsHierarchySegmentResponse, error) {
+ if err := validate([]validation{
+ {targetValue: maxresults,
+ constraints: []constraint{{target: "maxresults", name: null, rule: false,
+ chain: []constraint{{target: "maxresults", name: inclusiveMinimum, rule: 1, chain: nil}}}}},
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.listBlobHierarchySegmentPreparer(delimiter, prefix, marker, maxresults, include, timeout, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.listBlobHierarchySegmentResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*ListBlobsHierarchySegmentResponse), err
+}
+
+// listBlobHierarchySegmentPreparer prepares the ListBlobHierarchySegment request.
+func (client containerClient) listBlobHierarchySegmentPreparer(delimiter string, prefix *string, marker *string, maxresults *int32, include []ListBlobsIncludeItemType, timeout *int32, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("GET", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if prefix != nil && len(*prefix) > 0 {
+ params.Set("prefix", *prefix)
+ }
+ params.Set("delimiter", delimiter)
+ if marker != nil && len(*marker) > 0 {
+ params.Set("marker", *marker)
+ }
+ if maxresults != nil {
+ params.Set("maxresults", strconv.FormatInt(int64(*maxresults), 10))
+ }
+ if include != nil && len(include) > 0 {
+ params.Set("include", joinConst(include, ","))
+ }
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ params.Set("restype", "container")
+ params.Set("comp", "list")
+ req.URL.RawQuery = params.Encode()
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ return req, nil
+}
+
+// listBlobHierarchySegmentResponder handles the response to the ListBlobHierarchySegment request.
+func (client containerClient) listBlobHierarchySegmentResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK)
+ if resp == nil {
+ return nil, err
+ }
+ result := &ListBlobsHierarchySegmentResponse{rawResponse: resp.Response()}
+ if err != nil {
+ return result, err
+ }
+ defer resp.Response().Body.Close()
+ b, err := ioutil.ReadAll(resp.Response().Body)
+ if err != nil {
+ return result, err
+ }
+ if len(b) > 0 {
+ b = removeBOM(b)
+ err = xml.Unmarshal(b, result)
+ if err != nil {
+ return result, NewResponseError(err, resp.Response(), "failed to unmarshal response body")
+ }
+ }
+ return result, nil
+}
+
+// ReleaseLease [Update] establishes and manages a lock on a container for delete operations. The lock duration can be
+// 15 to 60 seconds, or can be infinite
+//
+// leaseID is specifies the current lease ID on the resource. timeout is the timeout parameter is expressed in seconds.
+// For more information, see Setting
+// Timeouts for Blob Service Operations. ifModifiedSince is specify this header value to operate only on a blob if
+// it has been modified since the specified date/time. ifUnmodifiedSince is specify this header value to operate only
+// on a blob if it has not been modified since the specified date/time. requestID is provides a client-generated,
+// opaque value with a 1 KB character limit that is recorded in the analytics logs when storage analytics logging is
+// enabled.
+func (client containerClient) ReleaseLease(ctx context.Context, leaseID string, timeout *int32, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, requestID *string) (*ContainerReleaseLeaseResponse, error) {
+ if err := validate([]validation{
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.releaseLeasePreparer(leaseID, timeout, ifModifiedSince, ifUnmodifiedSince, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.releaseLeaseResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*ContainerReleaseLeaseResponse), err
+}
+
+// releaseLeasePreparer prepares the ReleaseLease request.
+func (client containerClient) releaseLeasePreparer(leaseID string, timeout *int32, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("PUT", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ params.Set("comp", "lease")
+ params.Set("restype", "container")
+ req.URL.RawQuery = params.Encode()
+ req.Header.Set("x-ms-lease-id", leaseID)
+ if ifModifiedSince != nil {
+ req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifUnmodifiedSince != nil {
+ req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ req.Header.Set("x-ms-lease-action", "release")
+ return req, nil
+}
+
+// releaseLeaseResponder handles the response to the ReleaseLease request.
+func (client containerClient) releaseLeaseResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK)
+ if resp == nil {
+ return nil, err
+ }
+ io.Copy(ioutil.Discard, resp.Response().Body)
+ resp.Response().Body.Close()
+ return &ContainerReleaseLeaseResponse{rawResponse: resp.Response()}, err
+}
+
+// RenewLease [Update] establishes and manages a lock on a container for delete operations. The lock duration can be 15
+// to 60 seconds, or can be infinite
+//
+// leaseID is specifies the current lease ID on the resource. timeout is the timeout parameter is expressed in seconds.
+// For more information, see Setting
+// Timeouts for Blob Service Operations. ifModifiedSince is specify this header value to operate only on a blob if
+// it has been modified since the specified date/time. ifUnmodifiedSince is specify this header value to operate only
+// on a blob if it has not been modified since the specified date/time. requestID is provides a client-generated,
+// opaque value with a 1 KB character limit that is recorded in the analytics logs when storage analytics logging is
+// enabled.
+func (client containerClient) RenewLease(ctx context.Context, leaseID string, timeout *int32, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, requestID *string) (*ContainerRenewLeaseResponse, error) {
+ if err := validate([]validation{
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.renewLeasePreparer(leaseID, timeout, ifModifiedSince, ifUnmodifiedSince, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.renewLeaseResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*ContainerRenewLeaseResponse), err
+}
+
+// renewLeasePreparer prepares the RenewLease request.
+func (client containerClient) renewLeasePreparer(leaseID string, timeout *int32, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("PUT", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ params.Set("comp", "lease")
+ params.Set("restype", "container")
+ req.URL.RawQuery = params.Encode()
+ req.Header.Set("x-ms-lease-id", leaseID)
+ if ifModifiedSince != nil {
+ req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifUnmodifiedSince != nil {
+ req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ req.Header.Set("x-ms-lease-action", "renew")
+ return req, nil
+}
+
+// renewLeaseResponder handles the response to the RenewLease request.
+func (client containerClient) renewLeaseResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK)
+ if resp == nil {
+ return nil, err
+ }
+ io.Copy(ioutil.Discard, resp.Response().Body)
+ resp.Response().Body.Close()
+ return &ContainerRenewLeaseResponse{rawResponse: resp.Response()}, err
+}
+
+// SetAccessPolicy sets the permissions for the specified container. The permissions indicate whether blobs in a
+// container may be accessed publicly.
+//
+// containerACL is the acls for the container timeout is the timeout parameter is expressed in seconds. For more
+// information, see Setting
+// Timeouts for Blob Service Operations. leaseID is if specified, the operation only succeeds if the resource's
+// lease is active and matches this ID. access is specifies whether data in the container may be accessed publicly and
+// the level of access ifModifiedSince is specify this header value to operate only on a blob if it has been modified
+// since the specified date/time. ifUnmodifiedSince is specify this header value to operate only on a blob if it has
+// not been modified since the specified date/time. requestID is provides a client-generated, opaque value with a 1 KB
+// character limit that is recorded in the analytics logs when storage analytics logging is enabled.
+func (client containerClient) SetAccessPolicy(ctx context.Context, containerACL []SignedIdentifier, timeout *int32, leaseID *string, access PublicAccessType, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, requestID *string) (*ContainerSetAccessPolicyResponse, error) {
+ if err := validate([]validation{
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.setAccessPolicyPreparer(containerACL, timeout, leaseID, access, ifModifiedSince, ifUnmodifiedSince, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.setAccessPolicyResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*ContainerSetAccessPolicyResponse), err
+}
+
+// setAccessPolicyPreparer prepares the SetAccessPolicy request.
+func (client containerClient) setAccessPolicyPreparer(containerACL []SignedIdentifier, timeout *int32, leaseID *string, access PublicAccessType, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("PUT", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ params.Set("restype", "container")
+ params.Set("comp", "acl")
+ req.URL.RawQuery = params.Encode()
+ if leaseID != nil {
+ req.Header.Set("x-ms-lease-id", *leaseID)
+ }
+ if access != PublicAccessNone {
+ req.Header.Set("x-ms-blob-public-access", string(access))
+ }
+ if ifModifiedSince != nil {
+ req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifUnmodifiedSince != nil {
+ req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ b, err := xml.Marshal(SignedIdentifiers{Items: containerACL})
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to marshal request body")
+ }
+ req.Header.Set("Content-Type", "application/xml")
+ err = req.SetBody(bytes.NewReader(b))
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to set request body")
+ }
+ return req, nil
+}
+
+// setAccessPolicyResponder handles the response to the SetAccessPolicy request.
+func (client containerClient) setAccessPolicyResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK)
+ if resp == nil {
+ return nil, err
+ }
+ io.Copy(ioutil.Discard, resp.Response().Body)
+ resp.Response().Body.Close()
+ return &ContainerSetAccessPolicyResponse{rawResponse: resp.Response()}, err
+}
+
+// SetMetadata operation sets one or more user-defined name-value pairs for the specified container.
+//
+// timeout is the timeout parameter is expressed in seconds. For more information, see Setting
+// Timeouts for Blob Service Operations. leaseID is if specified, the operation only succeeds if the resource's
+// lease is active and matches this ID. metadata is optional. Specifies a user-defined name-value pair associated with
+// the blob. If no name-value pairs are specified, the operation will copy the metadata from the source blob or file to
+// the destination blob. If one or more name-value pairs are specified, the destination blob is created with the
+// specified metadata, and metadata is not copied from the source blob or file. Note that beginning with version
+// 2009-09-19, metadata names must adhere to the naming rules for C# identifiers. See Naming and Referencing
+// Containers, Blobs, and Metadata for more information. ifModifiedSince is specify this header value to operate only
+// on a blob if it has been modified since the specified date/time. requestID is provides a client-generated, opaque
+// value with a 1 KB character limit that is recorded in the analytics logs when storage analytics logging is enabled.
+func (client containerClient) SetMetadata(ctx context.Context, timeout *int32, leaseID *string, metadata map[string]string, ifModifiedSince *time.Time, requestID *string) (*ContainerSetMetadataResponse, error) {
+ if err := validate([]validation{
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.setMetadataPreparer(timeout, leaseID, metadata, ifModifiedSince, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.setMetadataResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*ContainerSetMetadataResponse), err
+}
+
+// setMetadataPreparer prepares the SetMetadata request.
+func (client containerClient) setMetadataPreparer(timeout *int32, leaseID *string, metadata map[string]string, ifModifiedSince *time.Time, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("PUT", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ params.Set("restype", "container")
+ params.Set("comp", "metadata")
+ req.URL.RawQuery = params.Encode()
+ if leaseID != nil {
+ req.Header.Set("x-ms-lease-id", *leaseID)
+ }
+ if metadata != nil {
+ for k, v := range metadata {
+ req.Header.Set("x-ms-meta-"+k, v)
+ }
+ }
+ if ifModifiedSince != nil {
+ req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ return req, nil
+}
+
+// setMetadataResponder handles the response to the SetMetadata request.
+func (client containerClient) setMetadataResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK)
+ if resp == nil {
+ return nil, err
+ }
+ io.Copy(ioutil.Discard, resp.Response().Body)
+ resp.Response().Body.Close()
+ return &ContainerSetMetadataResponse{rawResponse: resp.Response()}, err
+}
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_models.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_models.go
new file mode 100644
index 00000000..6c4e81d4
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_models.go
@@ -0,0 +1,6421 @@
+package azblob
+
+// Code generated by Microsoft (R) AutoRest Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+ "encoding/base64"
+ "encoding/xml"
+ "errors"
+ "io"
+ "net/http"
+ "reflect"
+ "strconv"
+ "strings"
+ "time"
+ "unsafe"
+)
+
+// ETag is an entity tag.
+type ETag string
+
+const (
+ // ETagNone represents an empty entity tag.
+ ETagNone ETag = ""
+
+ // ETagAny matches any entity tag.
+ ETagAny ETag = "*"
+)
+
+// Metadata contains metadata key/value pairs.
+type Metadata map[string]string
+
+const mdPrefix = "x-ms-meta-"
+
+const mdPrefixLen = len(mdPrefix)
+
+// UnmarshalXML implements the xml.Unmarshaler interface for Metadata.
+func (md *Metadata) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
+ tokName := ""
+ for t, err := d.Token(); err == nil; t, err = d.Token() {
+ switch tt := t.(type) {
+ case xml.StartElement:
+ tokName = strings.ToLower(tt.Name.Local)
+ break
+ case xml.CharData:
+ if *md == nil {
+ *md = Metadata{}
+ }
+ (*md)[tokName] = string(tt)
+ break
+ }
+ }
+ return nil
+}
+
+// Marker represents an opaque value used in paged responses.
+type Marker struct {
+ Val *string
+}
+
+// NotDone returns true if the list enumeration should be started or is not yet complete. Specifically, NotDone returns true
+// for a just-initialized (zero value) Marker indicating that you should make an initial request to get a result portion from
+// the service. NotDone also returns true whenever the service returns an interim result portion. NotDone returns false only
+// after the service has returned the final result portion.
+func (m Marker) NotDone() bool {
+ return m.Val == nil || *m.Val != ""
+}
+
+// UnmarshalXML implements the xml.Unmarshaler interface for Marker.
+func (m *Marker) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
+ var out string
+ err := d.DecodeElement(&out, &start)
+ m.Val = &out
+ return err
+}
+
+// concatenates a slice of const values with the specified separator between each item
+func joinConst(s interface{}, sep string) string {
+ v := reflect.ValueOf(s)
+ if v.Kind() != reflect.Slice && v.Kind() != reflect.Array {
+ panic("s wasn't a slice or array")
+ }
+ ss := make([]string, 0, v.Len())
+ for i := 0; i < v.Len(); i++ {
+ ss = append(ss, v.Index(i).String())
+ }
+ return strings.Join(ss, sep)
+}
+
+func validateError(err error) {
+ if err != nil {
+ panic(err)
+ }
+}
+
+// AccessTierType enumerates the values for access tier type.
+type AccessTierType string
+
+const (
+ // AccessTierArchive ...
+ AccessTierArchive AccessTierType = "Archive"
+ // AccessTierCool ...
+ AccessTierCool AccessTierType = "Cool"
+ // AccessTierHot ...
+ AccessTierHot AccessTierType = "Hot"
+ // AccessTierNone represents an empty AccessTierType.
+ AccessTierNone AccessTierType = ""
+ // AccessTierP10 ...
+ AccessTierP10 AccessTierType = "P10"
+ // AccessTierP15 ...
+ AccessTierP15 AccessTierType = "P15"
+ // AccessTierP20 ...
+ AccessTierP20 AccessTierType = "P20"
+ // AccessTierP30 ...
+ AccessTierP30 AccessTierType = "P30"
+ // AccessTierP4 ...
+ AccessTierP4 AccessTierType = "P4"
+ // AccessTierP40 ...
+ AccessTierP40 AccessTierType = "P40"
+ // AccessTierP50 ...
+ AccessTierP50 AccessTierType = "P50"
+ // AccessTierP6 ...
+ AccessTierP6 AccessTierType = "P6"
+ // AccessTierP60 ...
+ AccessTierP60 AccessTierType = "P60"
+ // AccessTierP70 ...
+ AccessTierP70 AccessTierType = "P70"
+ // AccessTierP80 ...
+ AccessTierP80 AccessTierType = "P80"
+)
+
+// PossibleAccessTierTypeValues returns an array of possible values for the AccessTierType const type.
+func PossibleAccessTierTypeValues() []AccessTierType {
+ return []AccessTierType{AccessTierArchive, AccessTierCool, AccessTierHot, AccessTierNone, AccessTierP10, AccessTierP15, AccessTierP20, AccessTierP30, AccessTierP4, AccessTierP40, AccessTierP50, AccessTierP6, AccessTierP60, AccessTierP70, AccessTierP80}
+}
+
+// AccountKindType enumerates the values for account kind type.
+type AccountKindType string
+
+const (
+ // AccountKindBlobStorage ...
+ AccountKindBlobStorage AccountKindType = "BlobStorage"
+ // AccountKindNone represents an empty AccountKindType.
+ AccountKindNone AccountKindType = ""
+ // AccountKindStorage ...
+ AccountKindStorage AccountKindType = "Storage"
+ // AccountKindStorageV2 ...
+ AccountKindStorageV2 AccountKindType = "StorageV2"
+)
+
+// PossibleAccountKindTypeValues returns an array of possible values for the AccountKindType const type.
+func PossibleAccountKindTypeValues() []AccountKindType {
+ return []AccountKindType{AccountKindBlobStorage, AccountKindNone, AccountKindStorage, AccountKindStorageV2}
+}
+
+// ArchiveStatusType enumerates the values for archive status type.
+type ArchiveStatusType string
+
+const (
+ // ArchiveStatusNone represents an empty ArchiveStatusType.
+ ArchiveStatusNone ArchiveStatusType = ""
+ // ArchiveStatusRehydratePendingToCool ...
+ ArchiveStatusRehydratePendingToCool ArchiveStatusType = "rehydrate-pending-to-cool"
+ // ArchiveStatusRehydratePendingToHot ...
+ ArchiveStatusRehydratePendingToHot ArchiveStatusType = "rehydrate-pending-to-hot"
+)
+
+// PossibleArchiveStatusTypeValues returns an array of possible values for the ArchiveStatusType const type.
+func PossibleArchiveStatusTypeValues() []ArchiveStatusType {
+ return []ArchiveStatusType{ArchiveStatusNone, ArchiveStatusRehydratePendingToCool, ArchiveStatusRehydratePendingToHot}
+}
+
+// BlobType enumerates the values for blob type.
+type BlobType string
+
+const (
+ // BlobAppendBlob ...
+ BlobAppendBlob BlobType = "AppendBlob"
+ // BlobBlockBlob ...
+ BlobBlockBlob BlobType = "BlockBlob"
+ // BlobNone represents an empty BlobType.
+ BlobNone BlobType = ""
+ // BlobPageBlob ...
+ BlobPageBlob BlobType = "PageBlob"
+)
+
+// PossibleBlobTypeValues returns an array of possible values for the BlobType const type.
+func PossibleBlobTypeValues() []BlobType {
+ return []BlobType{BlobAppendBlob, BlobBlockBlob, BlobNone, BlobPageBlob}
+}
+
+// BlockListType enumerates the values for block list type.
+type BlockListType string
+
+const (
+ // BlockListAll ...
+ BlockListAll BlockListType = "all"
+ // BlockListCommitted ...
+ BlockListCommitted BlockListType = "committed"
+ // BlockListNone represents an empty BlockListType.
+ BlockListNone BlockListType = ""
+ // BlockListUncommitted ...
+ BlockListUncommitted BlockListType = "uncommitted"
+)
+
+// PossibleBlockListTypeValues returns an array of possible values for the BlockListType const type.
+func PossibleBlockListTypeValues() []BlockListType {
+ return []BlockListType{BlockListAll, BlockListCommitted, BlockListNone, BlockListUncommitted}
+}
+
+// CopyStatusType enumerates the values for copy status type.
+type CopyStatusType string
+
+const (
+ // CopyStatusAborted ...
+ CopyStatusAborted CopyStatusType = "aborted"
+ // CopyStatusFailed ...
+ CopyStatusFailed CopyStatusType = "failed"
+ // CopyStatusNone represents an empty CopyStatusType.
+ CopyStatusNone CopyStatusType = ""
+ // CopyStatusPending ...
+ CopyStatusPending CopyStatusType = "pending"
+ // CopyStatusSuccess ...
+ CopyStatusSuccess CopyStatusType = "success"
+)
+
+// PossibleCopyStatusTypeValues returns an array of possible values for the CopyStatusType const type.
+func PossibleCopyStatusTypeValues() []CopyStatusType {
+ return []CopyStatusType{CopyStatusAborted, CopyStatusFailed, CopyStatusNone, CopyStatusPending, CopyStatusSuccess}
+}
+
+// DeleteSnapshotsOptionType enumerates the values for delete snapshots option type.
+type DeleteSnapshotsOptionType string
+
+const (
+ // DeleteSnapshotsOptionInclude ...
+ DeleteSnapshotsOptionInclude DeleteSnapshotsOptionType = "include"
+ // DeleteSnapshotsOptionNone represents an empty DeleteSnapshotsOptionType.
+ DeleteSnapshotsOptionNone DeleteSnapshotsOptionType = ""
+ // DeleteSnapshotsOptionOnly ...
+ DeleteSnapshotsOptionOnly DeleteSnapshotsOptionType = "only"
+)
+
+// PossibleDeleteSnapshotsOptionTypeValues returns an array of possible values for the DeleteSnapshotsOptionType const type.
+func PossibleDeleteSnapshotsOptionTypeValues() []DeleteSnapshotsOptionType {
+ return []DeleteSnapshotsOptionType{DeleteSnapshotsOptionInclude, DeleteSnapshotsOptionNone, DeleteSnapshotsOptionOnly}
+}
+
+// EncryptionAlgorithmType enumerates the values for encryption algorithm type.
+type EncryptionAlgorithmType string
+
+const (
+ // EncryptionAlgorithmAES256 ...
+ EncryptionAlgorithmAES256 EncryptionAlgorithmType = "AES256"
+ // EncryptionAlgorithmNone represents an empty EncryptionAlgorithmType.
+ EncryptionAlgorithmNone EncryptionAlgorithmType = ""
+)
+
+// PossibleEncryptionAlgorithmTypeValues returns an array of possible values for the EncryptionAlgorithmType const type.
+func PossibleEncryptionAlgorithmTypeValues() []EncryptionAlgorithmType {
+ return []EncryptionAlgorithmType{EncryptionAlgorithmAES256, EncryptionAlgorithmNone}
+}
+
+// GeoReplicationStatusType enumerates the values for geo replication status type.
+type GeoReplicationStatusType string
+
+const (
+ // GeoReplicationStatusBootstrap ...
+ GeoReplicationStatusBootstrap GeoReplicationStatusType = "bootstrap"
+ // GeoReplicationStatusLive ...
+ GeoReplicationStatusLive GeoReplicationStatusType = "live"
+ // GeoReplicationStatusNone represents an empty GeoReplicationStatusType.
+ GeoReplicationStatusNone GeoReplicationStatusType = ""
+ // GeoReplicationStatusUnavailable ...
+ GeoReplicationStatusUnavailable GeoReplicationStatusType = "unavailable"
+)
+
+// PossibleGeoReplicationStatusTypeValues returns an array of possible values for the GeoReplicationStatusType const type.
+func PossibleGeoReplicationStatusTypeValues() []GeoReplicationStatusType {
+ return []GeoReplicationStatusType{GeoReplicationStatusBootstrap, GeoReplicationStatusLive, GeoReplicationStatusNone, GeoReplicationStatusUnavailable}
+}
+
+// LeaseDurationType enumerates the values for lease duration type.
+type LeaseDurationType string
+
+const (
+ // LeaseDurationFixed ...
+ LeaseDurationFixed LeaseDurationType = "fixed"
+ // LeaseDurationInfinite ...
+ LeaseDurationInfinite LeaseDurationType = "infinite"
+ // LeaseDurationNone represents an empty LeaseDurationType.
+ LeaseDurationNone LeaseDurationType = ""
+)
+
+// PossibleLeaseDurationTypeValues returns an array of possible values for the LeaseDurationType const type.
+func PossibleLeaseDurationTypeValues() []LeaseDurationType {
+ return []LeaseDurationType{LeaseDurationFixed, LeaseDurationInfinite, LeaseDurationNone}
+}
+
+// LeaseStateType enumerates the values for lease state type.
+type LeaseStateType string
+
+const (
+ // LeaseStateAvailable ...
+ LeaseStateAvailable LeaseStateType = "available"
+ // LeaseStateBreaking ...
+ LeaseStateBreaking LeaseStateType = "breaking"
+ // LeaseStateBroken ...
+ LeaseStateBroken LeaseStateType = "broken"
+ // LeaseStateExpired ...
+ LeaseStateExpired LeaseStateType = "expired"
+ // LeaseStateLeased ...
+ LeaseStateLeased LeaseStateType = "leased"
+ // LeaseStateNone represents an empty LeaseStateType.
+ LeaseStateNone LeaseStateType = ""
+)
+
+// PossibleLeaseStateTypeValues returns an array of possible values for the LeaseStateType const type.
+func PossibleLeaseStateTypeValues() []LeaseStateType {
+ return []LeaseStateType{LeaseStateAvailable, LeaseStateBreaking, LeaseStateBroken, LeaseStateExpired, LeaseStateLeased, LeaseStateNone}
+}
+
+// LeaseStatusType enumerates the values for lease status type.
+type LeaseStatusType string
+
+const (
+ // LeaseStatusLocked ...
+ LeaseStatusLocked LeaseStatusType = "locked"
+ // LeaseStatusNone represents an empty LeaseStatusType.
+ LeaseStatusNone LeaseStatusType = ""
+ // LeaseStatusUnlocked ...
+ LeaseStatusUnlocked LeaseStatusType = "unlocked"
+)
+
+// PossibleLeaseStatusTypeValues returns an array of possible values for the LeaseStatusType const type.
+func PossibleLeaseStatusTypeValues() []LeaseStatusType {
+ return []LeaseStatusType{LeaseStatusLocked, LeaseStatusNone, LeaseStatusUnlocked}
+}
+
+// ListBlobsIncludeItemType enumerates the values for list blobs include item type.
+type ListBlobsIncludeItemType string
+
+const (
+ // ListBlobsIncludeItemCopy ...
+ ListBlobsIncludeItemCopy ListBlobsIncludeItemType = "copy"
+ // ListBlobsIncludeItemDeleted ...
+ ListBlobsIncludeItemDeleted ListBlobsIncludeItemType = "deleted"
+ // ListBlobsIncludeItemMetadata ...
+ ListBlobsIncludeItemMetadata ListBlobsIncludeItemType = "metadata"
+ // ListBlobsIncludeItemNone represents an empty ListBlobsIncludeItemType.
+ ListBlobsIncludeItemNone ListBlobsIncludeItemType = ""
+ // ListBlobsIncludeItemSnapshots ...
+ ListBlobsIncludeItemSnapshots ListBlobsIncludeItemType = "snapshots"
+ // ListBlobsIncludeItemUncommittedblobs ...
+ ListBlobsIncludeItemUncommittedblobs ListBlobsIncludeItemType = "uncommittedblobs"
+)
+
+// PossibleListBlobsIncludeItemTypeValues returns an array of possible values for the ListBlobsIncludeItemType const type.
+func PossibleListBlobsIncludeItemTypeValues() []ListBlobsIncludeItemType {
+ return []ListBlobsIncludeItemType{ListBlobsIncludeItemCopy, ListBlobsIncludeItemDeleted, ListBlobsIncludeItemMetadata, ListBlobsIncludeItemNone, ListBlobsIncludeItemSnapshots, ListBlobsIncludeItemUncommittedblobs}
+}
+
+// ListContainersIncludeType enumerates the values for list containers include type.
+type ListContainersIncludeType string
+
+const (
+ // ListContainersIncludeMetadata ...
+ ListContainersIncludeMetadata ListContainersIncludeType = "metadata"
+ // ListContainersIncludeNone represents an empty ListContainersIncludeType.
+ ListContainersIncludeNone ListContainersIncludeType = ""
+)
+
+// PossibleListContainersIncludeTypeValues returns an array of possible values for the ListContainersIncludeType const type.
+func PossibleListContainersIncludeTypeValues() []ListContainersIncludeType {
+ return []ListContainersIncludeType{ListContainersIncludeMetadata, ListContainersIncludeNone}
+}
+
+// PathRenameModeType enumerates the values for path rename mode type.
+type PathRenameModeType string
+
+const (
+ // PathRenameModeLegacy ...
+ PathRenameModeLegacy PathRenameModeType = "legacy"
+ // PathRenameModeNone represents an empty PathRenameModeType.
+ PathRenameModeNone PathRenameModeType = ""
+ // PathRenameModePosix ...
+ PathRenameModePosix PathRenameModeType = "posix"
+)
+
+// PossiblePathRenameModeTypeValues returns an array of possible values for the PathRenameModeType const type.
+func PossiblePathRenameModeTypeValues() []PathRenameModeType {
+ return []PathRenameModeType{PathRenameModeLegacy, PathRenameModeNone, PathRenameModePosix}
+}
+
+// PremiumPageBlobAccessTierType enumerates the values for premium page blob access tier type.
+type PremiumPageBlobAccessTierType string
+
+const (
+ // PremiumPageBlobAccessTierNone represents an empty PremiumPageBlobAccessTierType.
+ PremiumPageBlobAccessTierNone PremiumPageBlobAccessTierType = ""
+ // PremiumPageBlobAccessTierP10 ...
+ PremiumPageBlobAccessTierP10 PremiumPageBlobAccessTierType = "P10"
+ // PremiumPageBlobAccessTierP15 ...
+ PremiumPageBlobAccessTierP15 PremiumPageBlobAccessTierType = "P15"
+ // PremiumPageBlobAccessTierP20 ...
+ PremiumPageBlobAccessTierP20 PremiumPageBlobAccessTierType = "P20"
+ // PremiumPageBlobAccessTierP30 ...
+ PremiumPageBlobAccessTierP30 PremiumPageBlobAccessTierType = "P30"
+ // PremiumPageBlobAccessTierP4 ...
+ PremiumPageBlobAccessTierP4 PremiumPageBlobAccessTierType = "P4"
+ // PremiumPageBlobAccessTierP40 ...
+ PremiumPageBlobAccessTierP40 PremiumPageBlobAccessTierType = "P40"
+ // PremiumPageBlobAccessTierP50 ...
+ PremiumPageBlobAccessTierP50 PremiumPageBlobAccessTierType = "P50"
+ // PremiumPageBlobAccessTierP6 ...
+ PremiumPageBlobAccessTierP6 PremiumPageBlobAccessTierType = "P6"
+ // PremiumPageBlobAccessTierP60 ...
+ PremiumPageBlobAccessTierP60 PremiumPageBlobAccessTierType = "P60"
+ // PremiumPageBlobAccessTierP70 ...
+ PremiumPageBlobAccessTierP70 PremiumPageBlobAccessTierType = "P70"
+ // PremiumPageBlobAccessTierP80 ...
+ PremiumPageBlobAccessTierP80 PremiumPageBlobAccessTierType = "P80"
+)
+
+// PossiblePremiumPageBlobAccessTierTypeValues returns an array of possible values for the PremiumPageBlobAccessTierType const type.
+func PossiblePremiumPageBlobAccessTierTypeValues() []PremiumPageBlobAccessTierType {
+ return []PremiumPageBlobAccessTierType{PremiumPageBlobAccessTierNone, PremiumPageBlobAccessTierP10, PremiumPageBlobAccessTierP15, PremiumPageBlobAccessTierP20, PremiumPageBlobAccessTierP30, PremiumPageBlobAccessTierP4, PremiumPageBlobAccessTierP40, PremiumPageBlobAccessTierP50, PremiumPageBlobAccessTierP6, PremiumPageBlobAccessTierP60, PremiumPageBlobAccessTierP70, PremiumPageBlobAccessTierP80}
+}
+
+// PublicAccessType enumerates the values for public access type.
+type PublicAccessType string
+
+const (
+ // PublicAccessBlob ...
+ PublicAccessBlob PublicAccessType = "blob"
+ // PublicAccessContainer ...
+ PublicAccessContainer PublicAccessType = "container"
+ // PublicAccessNone represents an empty PublicAccessType.
+ PublicAccessNone PublicAccessType = ""
+)
+
+// PossiblePublicAccessTypeValues returns an array of possible values for the PublicAccessType const type.
+func PossiblePublicAccessTypeValues() []PublicAccessType {
+ return []PublicAccessType{PublicAccessBlob, PublicAccessContainer, PublicAccessNone}
+}
+
+// RehydratePriorityType enumerates the values for rehydrate priority type.
+type RehydratePriorityType string
+
+const (
+ // RehydratePriorityHigh ...
+ RehydratePriorityHigh RehydratePriorityType = "High"
+ // RehydratePriorityNone represents an empty RehydratePriorityType.
+ RehydratePriorityNone RehydratePriorityType = ""
+ // RehydratePriorityStandard ...
+ RehydratePriorityStandard RehydratePriorityType = "Standard"
+)
+
+// PossibleRehydratePriorityTypeValues returns an array of possible values for the RehydratePriorityType const type.
+func PossibleRehydratePriorityTypeValues() []RehydratePriorityType {
+ return []RehydratePriorityType{RehydratePriorityHigh, RehydratePriorityNone, RehydratePriorityStandard}
+}
+
+// SequenceNumberActionType enumerates the values for sequence number action type.
+type SequenceNumberActionType string
+
+const (
+ // SequenceNumberActionIncrement ...
+ SequenceNumberActionIncrement SequenceNumberActionType = "increment"
+ // SequenceNumberActionMax ...
+ SequenceNumberActionMax SequenceNumberActionType = "max"
+ // SequenceNumberActionNone represents an empty SequenceNumberActionType.
+ SequenceNumberActionNone SequenceNumberActionType = ""
+ // SequenceNumberActionUpdate ...
+ SequenceNumberActionUpdate SequenceNumberActionType = "update"
+)
+
+// PossibleSequenceNumberActionTypeValues returns an array of possible values for the SequenceNumberActionType const type.
+func PossibleSequenceNumberActionTypeValues() []SequenceNumberActionType {
+ return []SequenceNumberActionType{SequenceNumberActionIncrement, SequenceNumberActionMax, SequenceNumberActionNone, SequenceNumberActionUpdate}
+}
+
+// SkuNameType enumerates the values for sku name type.
+type SkuNameType string
+
+const (
+ // SkuNameNone represents an empty SkuNameType.
+ SkuNameNone SkuNameType = ""
+ // SkuNamePremiumLRS ...
+ SkuNamePremiumLRS SkuNameType = "Premium_LRS"
+ // SkuNameStandardGRS ...
+ SkuNameStandardGRS SkuNameType = "Standard_GRS"
+ // SkuNameStandardLRS ...
+ SkuNameStandardLRS SkuNameType = "Standard_LRS"
+ // SkuNameStandardRAGRS ...
+ SkuNameStandardRAGRS SkuNameType = "Standard_RAGRS"
+ // SkuNameStandardZRS ...
+ SkuNameStandardZRS SkuNameType = "Standard_ZRS"
+)
+
+// PossibleSkuNameTypeValues returns an array of possible values for the SkuNameType const type.
+func PossibleSkuNameTypeValues() []SkuNameType {
+ return []SkuNameType{SkuNameNone, SkuNamePremiumLRS, SkuNameStandardGRS, SkuNameStandardLRS, SkuNameStandardRAGRS, SkuNameStandardZRS}
+}
+
+// StorageErrorCodeType enumerates the values for storage error code type.
+type StorageErrorCodeType string
+
+const (
+ // StorageErrorCodeAccountAlreadyExists ...
+ StorageErrorCodeAccountAlreadyExists StorageErrorCodeType = "AccountAlreadyExists"
+ // StorageErrorCodeAccountBeingCreated ...
+ StorageErrorCodeAccountBeingCreated StorageErrorCodeType = "AccountBeingCreated"
+ // StorageErrorCodeAccountIsDisabled ...
+ StorageErrorCodeAccountIsDisabled StorageErrorCodeType = "AccountIsDisabled"
+ // StorageErrorCodeAppendPositionConditionNotMet ...
+ StorageErrorCodeAppendPositionConditionNotMet StorageErrorCodeType = "AppendPositionConditionNotMet"
+ // StorageErrorCodeAuthenticationFailed ...
+ StorageErrorCodeAuthenticationFailed StorageErrorCodeType = "AuthenticationFailed"
+ // StorageErrorCodeAuthorizationFailure ...
+ StorageErrorCodeAuthorizationFailure StorageErrorCodeType = "AuthorizationFailure"
+ // StorageErrorCodeAuthorizationPermissionMismatch ...
+ StorageErrorCodeAuthorizationPermissionMismatch StorageErrorCodeType = "AuthorizationPermissionMismatch"
+ // StorageErrorCodeAuthorizationProtocolMismatch ...
+ StorageErrorCodeAuthorizationProtocolMismatch StorageErrorCodeType = "AuthorizationProtocolMismatch"
+ // StorageErrorCodeAuthorizationResourceTypeMismatch ...
+ StorageErrorCodeAuthorizationResourceTypeMismatch StorageErrorCodeType = "AuthorizationResourceTypeMismatch"
+ // StorageErrorCodeAuthorizationServiceMismatch ...
+ StorageErrorCodeAuthorizationServiceMismatch StorageErrorCodeType = "AuthorizationServiceMismatch"
+ // StorageErrorCodeAuthorizationSourceIPMismatch ...
+ StorageErrorCodeAuthorizationSourceIPMismatch StorageErrorCodeType = "AuthorizationSourceIPMismatch"
+ // StorageErrorCodeBlobAlreadyExists ...
+ StorageErrorCodeBlobAlreadyExists StorageErrorCodeType = "BlobAlreadyExists"
+ // StorageErrorCodeBlobArchived ...
+ StorageErrorCodeBlobArchived StorageErrorCodeType = "BlobArchived"
+ // StorageErrorCodeBlobBeingRehydrated ...
+ StorageErrorCodeBlobBeingRehydrated StorageErrorCodeType = "BlobBeingRehydrated"
+ // StorageErrorCodeBlobNotArchived ...
+ StorageErrorCodeBlobNotArchived StorageErrorCodeType = "BlobNotArchived"
+ // StorageErrorCodeBlobNotFound ...
+ StorageErrorCodeBlobNotFound StorageErrorCodeType = "BlobNotFound"
+ // StorageErrorCodeBlobOverwritten ...
+ StorageErrorCodeBlobOverwritten StorageErrorCodeType = "BlobOverwritten"
+ // StorageErrorCodeBlobTierInadequateForContentLength ...
+ StorageErrorCodeBlobTierInadequateForContentLength StorageErrorCodeType = "BlobTierInadequateForContentLength"
+ // StorageErrorCodeBlockCountExceedsLimit ...
+ StorageErrorCodeBlockCountExceedsLimit StorageErrorCodeType = "BlockCountExceedsLimit"
+ // StorageErrorCodeBlockListTooLong ...
+ StorageErrorCodeBlockListTooLong StorageErrorCodeType = "BlockListTooLong"
+ // StorageErrorCodeCannotChangeToLowerTier ...
+ StorageErrorCodeCannotChangeToLowerTier StorageErrorCodeType = "CannotChangeToLowerTier"
+ // StorageErrorCodeCannotVerifyCopySource ...
+ StorageErrorCodeCannotVerifyCopySource StorageErrorCodeType = "CannotVerifyCopySource"
+ // StorageErrorCodeConditionHeadersNotSupported ...
+ StorageErrorCodeConditionHeadersNotSupported StorageErrorCodeType = "ConditionHeadersNotSupported"
+ // StorageErrorCodeConditionNotMet ...
+ StorageErrorCodeConditionNotMet StorageErrorCodeType = "ConditionNotMet"
+ // StorageErrorCodeContainerAlreadyExists ...
+ StorageErrorCodeContainerAlreadyExists StorageErrorCodeType = "ContainerAlreadyExists"
+ // StorageErrorCodeContainerBeingDeleted ...
+ StorageErrorCodeContainerBeingDeleted StorageErrorCodeType = "ContainerBeingDeleted"
+ // StorageErrorCodeContainerDisabled ...
+ StorageErrorCodeContainerDisabled StorageErrorCodeType = "ContainerDisabled"
+ // StorageErrorCodeContainerNotFound ...
+ StorageErrorCodeContainerNotFound StorageErrorCodeType = "ContainerNotFound"
+ // StorageErrorCodeContentLengthLargerThanTierLimit ...
+ StorageErrorCodeContentLengthLargerThanTierLimit StorageErrorCodeType = "ContentLengthLargerThanTierLimit"
+ // StorageErrorCodeCopyAcrossAccountsNotSupported ...
+ StorageErrorCodeCopyAcrossAccountsNotSupported StorageErrorCodeType = "CopyAcrossAccountsNotSupported"
+ // StorageErrorCodeCopyIDMismatch ...
+ StorageErrorCodeCopyIDMismatch StorageErrorCodeType = "CopyIdMismatch"
+ // StorageErrorCodeEmptyMetadataKey ...
+ StorageErrorCodeEmptyMetadataKey StorageErrorCodeType = "EmptyMetadataKey"
+ // StorageErrorCodeFeatureVersionMismatch ...
+ StorageErrorCodeFeatureVersionMismatch StorageErrorCodeType = "FeatureVersionMismatch"
+ // StorageErrorCodeIncrementalCopyBlobMismatch ...
+ StorageErrorCodeIncrementalCopyBlobMismatch StorageErrorCodeType = "IncrementalCopyBlobMismatch"
+ // StorageErrorCodeIncrementalCopyOfEralierVersionSnapshotNotAllowed ...
+ StorageErrorCodeIncrementalCopyOfEralierVersionSnapshotNotAllowed StorageErrorCodeType = "IncrementalCopyOfEralierVersionSnapshotNotAllowed"
+ // StorageErrorCodeIncrementalCopySourceMustBeSnapshot ...
+ StorageErrorCodeIncrementalCopySourceMustBeSnapshot StorageErrorCodeType = "IncrementalCopySourceMustBeSnapshot"
+ // StorageErrorCodeInfiniteLeaseDurationRequired ...
+ StorageErrorCodeInfiniteLeaseDurationRequired StorageErrorCodeType = "InfiniteLeaseDurationRequired"
+ // StorageErrorCodeInsufficientAccountPermissions ...
+ StorageErrorCodeInsufficientAccountPermissions StorageErrorCodeType = "InsufficientAccountPermissions"
+ // StorageErrorCodeInternalError ...
+ StorageErrorCodeInternalError StorageErrorCodeType = "InternalError"
+ // StorageErrorCodeInvalidAuthenticationInfo ...
+ StorageErrorCodeInvalidAuthenticationInfo StorageErrorCodeType = "InvalidAuthenticationInfo"
+ // StorageErrorCodeInvalidBlobOrBlock ...
+ StorageErrorCodeInvalidBlobOrBlock StorageErrorCodeType = "InvalidBlobOrBlock"
+ // StorageErrorCodeInvalidBlobTier ...
+ StorageErrorCodeInvalidBlobTier StorageErrorCodeType = "InvalidBlobTier"
+ // StorageErrorCodeInvalidBlobType ...
+ StorageErrorCodeInvalidBlobType StorageErrorCodeType = "InvalidBlobType"
+ // StorageErrorCodeInvalidBlockID ...
+ StorageErrorCodeInvalidBlockID StorageErrorCodeType = "InvalidBlockId"
+ // StorageErrorCodeInvalidBlockList ...
+ StorageErrorCodeInvalidBlockList StorageErrorCodeType = "InvalidBlockList"
+ // StorageErrorCodeInvalidHeaderValue ...
+ StorageErrorCodeInvalidHeaderValue StorageErrorCodeType = "InvalidHeaderValue"
+ // StorageErrorCodeInvalidHTTPVerb ...
+ StorageErrorCodeInvalidHTTPVerb StorageErrorCodeType = "InvalidHttpVerb"
+ // StorageErrorCodeInvalidInput ...
+ StorageErrorCodeInvalidInput StorageErrorCodeType = "InvalidInput"
+ // StorageErrorCodeInvalidMd5 ...
+ StorageErrorCodeInvalidMd5 StorageErrorCodeType = "InvalidMd5"
+ // StorageErrorCodeInvalidMetadata ...
+ StorageErrorCodeInvalidMetadata StorageErrorCodeType = "InvalidMetadata"
+ // StorageErrorCodeInvalidOperation ...
+ StorageErrorCodeInvalidOperation StorageErrorCodeType = "InvalidOperation"
+ // StorageErrorCodeInvalidPageRange ...
+ StorageErrorCodeInvalidPageRange StorageErrorCodeType = "InvalidPageRange"
+ // StorageErrorCodeInvalidQueryParameterValue ...
+ StorageErrorCodeInvalidQueryParameterValue StorageErrorCodeType = "InvalidQueryParameterValue"
+ // StorageErrorCodeInvalidRange ...
+ StorageErrorCodeInvalidRange StorageErrorCodeType = "InvalidRange"
+ // StorageErrorCodeInvalidResourceName ...
+ StorageErrorCodeInvalidResourceName StorageErrorCodeType = "InvalidResourceName"
+ // StorageErrorCodeInvalidSourceBlobType ...
+ StorageErrorCodeInvalidSourceBlobType StorageErrorCodeType = "InvalidSourceBlobType"
+ // StorageErrorCodeInvalidSourceBlobURL ...
+ StorageErrorCodeInvalidSourceBlobURL StorageErrorCodeType = "InvalidSourceBlobUrl"
+ // StorageErrorCodeInvalidURI ...
+ StorageErrorCodeInvalidURI StorageErrorCodeType = "InvalidUri"
+ // StorageErrorCodeInvalidVersionForPageBlobOperation ...
+ StorageErrorCodeInvalidVersionForPageBlobOperation StorageErrorCodeType = "InvalidVersionForPageBlobOperation"
+ // StorageErrorCodeInvalidXMLDocument ...
+ StorageErrorCodeInvalidXMLDocument StorageErrorCodeType = "InvalidXmlDocument"
+ // StorageErrorCodeInvalidXMLNodeValue ...
+ StorageErrorCodeInvalidXMLNodeValue StorageErrorCodeType = "InvalidXmlNodeValue"
+ // StorageErrorCodeLeaseAlreadyBroken ...
+ StorageErrorCodeLeaseAlreadyBroken StorageErrorCodeType = "LeaseAlreadyBroken"
+ // StorageErrorCodeLeaseAlreadyPresent ...
+ StorageErrorCodeLeaseAlreadyPresent StorageErrorCodeType = "LeaseAlreadyPresent"
+ // StorageErrorCodeLeaseIDMismatchWithBlobOperation ...
+ StorageErrorCodeLeaseIDMismatchWithBlobOperation StorageErrorCodeType = "LeaseIdMismatchWithBlobOperation"
+ // StorageErrorCodeLeaseIDMismatchWithContainerOperation ...
+ StorageErrorCodeLeaseIDMismatchWithContainerOperation StorageErrorCodeType = "LeaseIdMismatchWithContainerOperation"
+ // StorageErrorCodeLeaseIDMismatchWithLeaseOperation ...
+ StorageErrorCodeLeaseIDMismatchWithLeaseOperation StorageErrorCodeType = "LeaseIdMismatchWithLeaseOperation"
+ // StorageErrorCodeLeaseIDMissing ...
+ StorageErrorCodeLeaseIDMissing StorageErrorCodeType = "LeaseIdMissing"
+ // StorageErrorCodeLeaseIsBreakingAndCannotBeAcquired ...
+ StorageErrorCodeLeaseIsBreakingAndCannotBeAcquired StorageErrorCodeType = "LeaseIsBreakingAndCannotBeAcquired"
+ // StorageErrorCodeLeaseIsBreakingAndCannotBeChanged ...
+ StorageErrorCodeLeaseIsBreakingAndCannotBeChanged StorageErrorCodeType = "LeaseIsBreakingAndCannotBeChanged"
+ // StorageErrorCodeLeaseIsBrokenAndCannotBeRenewed ...
+ StorageErrorCodeLeaseIsBrokenAndCannotBeRenewed StorageErrorCodeType = "LeaseIsBrokenAndCannotBeRenewed"
+ // StorageErrorCodeLeaseLost ...
+ StorageErrorCodeLeaseLost StorageErrorCodeType = "LeaseLost"
+ // StorageErrorCodeLeaseNotPresentWithBlobOperation ...
+ StorageErrorCodeLeaseNotPresentWithBlobOperation StorageErrorCodeType = "LeaseNotPresentWithBlobOperation"
+ // StorageErrorCodeLeaseNotPresentWithContainerOperation ...
+ StorageErrorCodeLeaseNotPresentWithContainerOperation StorageErrorCodeType = "LeaseNotPresentWithContainerOperation"
+ // StorageErrorCodeLeaseNotPresentWithLeaseOperation ...
+ StorageErrorCodeLeaseNotPresentWithLeaseOperation StorageErrorCodeType = "LeaseNotPresentWithLeaseOperation"
+ // StorageErrorCodeMaxBlobSizeConditionNotMet ...
+ StorageErrorCodeMaxBlobSizeConditionNotMet StorageErrorCodeType = "MaxBlobSizeConditionNotMet"
+ // StorageErrorCodeMd5Mismatch ...
+ StorageErrorCodeMd5Mismatch StorageErrorCodeType = "Md5Mismatch"
+ // StorageErrorCodeMetadataTooLarge ...
+ StorageErrorCodeMetadataTooLarge StorageErrorCodeType = "MetadataTooLarge"
+ // StorageErrorCodeMissingContentLengthHeader ...
+ StorageErrorCodeMissingContentLengthHeader StorageErrorCodeType = "MissingContentLengthHeader"
+ // StorageErrorCodeMissingRequiredHeader ...
+ StorageErrorCodeMissingRequiredHeader StorageErrorCodeType = "MissingRequiredHeader"
+ // StorageErrorCodeMissingRequiredQueryParameter ...
+ StorageErrorCodeMissingRequiredQueryParameter StorageErrorCodeType = "MissingRequiredQueryParameter"
+ // StorageErrorCodeMissingRequiredXMLNode ...
+ StorageErrorCodeMissingRequiredXMLNode StorageErrorCodeType = "MissingRequiredXmlNode"
+ // StorageErrorCodeMultipleConditionHeadersNotSupported ...
+ StorageErrorCodeMultipleConditionHeadersNotSupported StorageErrorCodeType = "MultipleConditionHeadersNotSupported"
+ // StorageErrorCodeNone represents an empty StorageErrorCodeType.
+ StorageErrorCodeNone StorageErrorCodeType = ""
+ // StorageErrorCodeNoPendingCopyOperation ...
+ StorageErrorCodeNoPendingCopyOperation StorageErrorCodeType = "NoPendingCopyOperation"
+ // StorageErrorCodeOperationNotAllowedOnIncrementalCopyBlob ...
+ StorageErrorCodeOperationNotAllowedOnIncrementalCopyBlob StorageErrorCodeType = "OperationNotAllowedOnIncrementalCopyBlob"
+ // StorageErrorCodeOperationTimedOut ...
+ StorageErrorCodeOperationTimedOut StorageErrorCodeType = "OperationTimedOut"
+ // StorageErrorCodeOutOfRangeInput ...
+ StorageErrorCodeOutOfRangeInput StorageErrorCodeType = "OutOfRangeInput"
+ // StorageErrorCodeOutOfRangeQueryParameterValue ...
+ StorageErrorCodeOutOfRangeQueryParameterValue StorageErrorCodeType = "OutOfRangeQueryParameterValue"
+ // StorageErrorCodePendingCopyOperation ...
+ StorageErrorCodePendingCopyOperation StorageErrorCodeType = "PendingCopyOperation"
+ // StorageErrorCodePreviousSnapshotCannotBeNewer ...
+ StorageErrorCodePreviousSnapshotCannotBeNewer StorageErrorCodeType = "PreviousSnapshotCannotBeNewer"
+ // StorageErrorCodePreviousSnapshotNotFound ...
+ StorageErrorCodePreviousSnapshotNotFound StorageErrorCodeType = "PreviousSnapshotNotFound"
+ // StorageErrorCodePreviousSnapshotOperationNotSupported ...
+ StorageErrorCodePreviousSnapshotOperationNotSupported StorageErrorCodeType = "PreviousSnapshotOperationNotSupported"
+ // StorageErrorCodeRequestBodyTooLarge ...
+ StorageErrorCodeRequestBodyTooLarge StorageErrorCodeType = "RequestBodyTooLarge"
+ // StorageErrorCodeRequestURLFailedToParse ...
+ StorageErrorCodeRequestURLFailedToParse StorageErrorCodeType = "RequestUrlFailedToParse"
+ // StorageErrorCodeResourceAlreadyExists ...
+ StorageErrorCodeResourceAlreadyExists StorageErrorCodeType = "ResourceAlreadyExists"
+ // StorageErrorCodeResourceNotFound ...
+ StorageErrorCodeResourceNotFound StorageErrorCodeType = "ResourceNotFound"
+ // StorageErrorCodeResourceTypeMismatch ...
+ StorageErrorCodeResourceTypeMismatch StorageErrorCodeType = "ResourceTypeMismatch"
+ // StorageErrorCodeSequenceNumberConditionNotMet ...
+ StorageErrorCodeSequenceNumberConditionNotMet StorageErrorCodeType = "SequenceNumberConditionNotMet"
+ // StorageErrorCodeSequenceNumberIncrementTooLarge ...
+ StorageErrorCodeSequenceNumberIncrementTooLarge StorageErrorCodeType = "SequenceNumberIncrementTooLarge"
+ // StorageErrorCodeServerBusy ...
+ StorageErrorCodeServerBusy StorageErrorCodeType = "ServerBusy"
+ // StorageErrorCodeSnaphotOperationRateExceeded ...
+ StorageErrorCodeSnaphotOperationRateExceeded StorageErrorCodeType = "SnaphotOperationRateExceeded"
+ // StorageErrorCodeSnapshotCountExceeded ...
+ StorageErrorCodeSnapshotCountExceeded StorageErrorCodeType = "SnapshotCountExceeded"
+ // StorageErrorCodeSnapshotsPresent ...
+ StorageErrorCodeSnapshotsPresent StorageErrorCodeType = "SnapshotsPresent"
+ // StorageErrorCodeSourceConditionNotMet ...
+ StorageErrorCodeSourceConditionNotMet StorageErrorCodeType = "SourceConditionNotMet"
+ // StorageErrorCodeSystemInUse ...
+ StorageErrorCodeSystemInUse StorageErrorCodeType = "SystemInUse"
+ // StorageErrorCodeTargetConditionNotMet ...
+ StorageErrorCodeTargetConditionNotMet StorageErrorCodeType = "TargetConditionNotMet"
+ // StorageErrorCodeUnauthorizedBlobOverwrite ...
+ StorageErrorCodeUnauthorizedBlobOverwrite StorageErrorCodeType = "UnauthorizedBlobOverwrite"
+ // StorageErrorCodeUnsupportedHeader ...
+ StorageErrorCodeUnsupportedHeader StorageErrorCodeType = "UnsupportedHeader"
+ // StorageErrorCodeUnsupportedHTTPVerb ...
+ StorageErrorCodeUnsupportedHTTPVerb StorageErrorCodeType = "UnsupportedHttpVerb"
+ // StorageErrorCodeUnsupportedQueryParameter ...
+ StorageErrorCodeUnsupportedQueryParameter StorageErrorCodeType = "UnsupportedQueryParameter"
+ // StorageErrorCodeUnsupportedXMLNode ...
+ StorageErrorCodeUnsupportedXMLNode StorageErrorCodeType = "UnsupportedXmlNode"
+)
+
+// PossibleStorageErrorCodeTypeValues returns an array of possible values for the StorageErrorCodeType const type.
+func PossibleStorageErrorCodeTypeValues() []StorageErrorCodeType {
+ return []StorageErrorCodeType{StorageErrorCodeAccountAlreadyExists, StorageErrorCodeAccountBeingCreated, StorageErrorCodeAccountIsDisabled, StorageErrorCodeAppendPositionConditionNotMet, StorageErrorCodeAuthenticationFailed, StorageErrorCodeAuthorizationFailure, StorageErrorCodeAuthorizationPermissionMismatch, StorageErrorCodeAuthorizationProtocolMismatch, StorageErrorCodeAuthorizationResourceTypeMismatch, StorageErrorCodeAuthorizationServiceMismatch, StorageErrorCodeAuthorizationSourceIPMismatch, StorageErrorCodeBlobAlreadyExists, StorageErrorCodeBlobArchived, StorageErrorCodeBlobBeingRehydrated, StorageErrorCodeBlobNotArchived, StorageErrorCodeBlobNotFound, StorageErrorCodeBlobOverwritten, StorageErrorCodeBlobTierInadequateForContentLength, StorageErrorCodeBlockCountExceedsLimit, StorageErrorCodeBlockListTooLong, StorageErrorCodeCannotChangeToLowerTier, StorageErrorCodeCannotVerifyCopySource, StorageErrorCodeConditionHeadersNotSupported, StorageErrorCodeConditionNotMet, StorageErrorCodeContainerAlreadyExists, StorageErrorCodeContainerBeingDeleted, StorageErrorCodeContainerDisabled, StorageErrorCodeContainerNotFound, StorageErrorCodeContentLengthLargerThanTierLimit, StorageErrorCodeCopyAcrossAccountsNotSupported, StorageErrorCodeCopyIDMismatch, StorageErrorCodeEmptyMetadataKey, StorageErrorCodeFeatureVersionMismatch, StorageErrorCodeIncrementalCopyBlobMismatch, StorageErrorCodeIncrementalCopyOfEralierVersionSnapshotNotAllowed, StorageErrorCodeIncrementalCopySourceMustBeSnapshot, StorageErrorCodeInfiniteLeaseDurationRequired, StorageErrorCodeInsufficientAccountPermissions, StorageErrorCodeInternalError, StorageErrorCodeInvalidAuthenticationInfo, StorageErrorCodeInvalidBlobOrBlock, StorageErrorCodeInvalidBlobTier, StorageErrorCodeInvalidBlobType, StorageErrorCodeInvalidBlockID, StorageErrorCodeInvalidBlockList, StorageErrorCodeInvalidHeaderValue, StorageErrorCodeInvalidHTTPVerb, StorageErrorCodeInvalidInput, StorageErrorCodeInvalidMd5, StorageErrorCodeInvalidMetadata, StorageErrorCodeInvalidOperation, StorageErrorCodeInvalidPageRange, StorageErrorCodeInvalidQueryParameterValue, StorageErrorCodeInvalidRange, StorageErrorCodeInvalidResourceName, StorageErrorCodeInvalidSourceBlobType, StorageErrorCodeInvalidSourceBlobURL, StorageErrorCodeInvalidURI, StorageErrorCodeInvalidVersionForPageBlobOperation, StorageErrorCodeInvalidXMLDocument, StorageErrorCodeInvalidXMLNodeValue, StorageErrorCodeLeaseAlreadyBroken, StorageErrorCodeLeaseAlreadyPresent, StorageErrorCodeLeaseIDMismatchWithBlobOperation, StorageErrorCodeLeaseIDMismatchWithContainerOperation, StorageErrorCodeLeaseIDMismatchWithLeaseOperation, StorageErrorCodeLeaseIDMissing, StorageErrorCodeLeaseIsBreakingAndCannotBeAcquired, StorageErrorCodeLeaseIsBreakingAndCannotBeChanged, StorageErrorCodeLeaseIsBrokenAndCannotBeRenewed, StorageErrorCodeLeaseLost, StorageErrorCodeLeaseNotPresentWithBlobOperation, StorageErrorCodeLeaseNotPresentWithContainerOperation, StorageErrorCodeLeaseNotPresentWithLeaseOperation, StorageErrorCodeMaxBlobSizeConditionNotMet, StorageErrorCodeMd5Mismatch, StorageErrorCodeMetadataTooLarge, StorageErrorCodeMissingContentLengthHeader, StorageErrorCodeMissingRequiredHeader, StorageErrorCodeMissingRequiredQueryParameter, StorageErrorCodeMissingRequiredXMLNode, StorageErrorCodeMultipleConditionHeadersNotSupported, StorageErrorCodeNone, StorageErrorCodeNoPendingCopyOperation, StorageErrorCodeOperationNotAllowedOnIncrementalCopyBlob, StorageErrorCodeOperationTimedOut, StorageErrorCodeOutOfRangeInput, StorageErrorCodeOutOfRangeQueryParameterValue, StorageErrorCodePendingCopyOperation, StorageErrorCodePreviousSnapshotCannotBeNewer, StorageErrorCodePreviousSnapshotNotFound, StorageErrorCodePreviousSnapshotOperationNotSupported, StorageErrorCodeRequestBodyTooLarge, StorageErrorCodeRequestURLFailedToParse, StorageErrorCodeResourceAlreadyExists, StorageErrorCodeResourceNotFound, StorageErrorCodeResourceTypeMismatch, StorageErrorCodeSequenceNumberConditionNotMet, StorageErrorCodeSequenceNumberIncrementTooLarge, StorageErrorCodeServerBusy, StorageErrorCodeSnaphotOperationRateExceeded, StorageErrorCodeSnapshotCountExceeded, StorageErrorCodeSnapshotsPresent, StorageErrorCodeSourceConditionNotMet, StorageErrorCodeSystemInUse, StorageErrorCodeTargetConditionNotMet, StorageErrorCodeUnauthorizedBlobOverwrite, StorageErrorCodeUnsupportedHeader, StorageErrorCodeUnsupportedHTTPVerb, StorageErrorCodeUnsupportedQueryParameter, StorageErrorCodeUnsupportedXMLNode}
+}
+
+// SyncCopyStatusType enumerates the values for sync copy status type.
+type SyncCopyStatusType string
+
+const (
+ // SyncCopyStatusNone represents an empty SyncCopyStatusType.
+ SyncCopyStatusNone SyncCopyStatusType = ""
+ // SyncCopyStatusSuccess ...
+ SyncCopyStatusSuccess SyncCopyStatusType = "success"
+)
+
+// PossibleSyncCopyStatusTypeValues returns an array of possible values for the SyncCopyStatusType const type.
+func PossibleSyncCopyStatusTypeValues() []SyncCopyStatusType {
+ return []SyncCopyStatusType{SyncCopyStatusNone, SyncCopyStatusSuccess}
+}
+
+// AccessPolicy - An Access policy
+type AccessPolicy struct {
+ // Start - the date-time the policy is active
+ Start time.Time `xml:"Start"`
+ // Expiry - the date-time the policy expires
+ Expiry time.Time `xml:"Expiry"`
+ // Permission - the permissions for the acl policy
+ Permission string `xml:"Permission"`
+}
+
+// MarshalXML implements the xml.Marshaler interface for AccessPolicy.
+func (ap AccessPolicy) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
+ ap2 := (*accessPolicy)(unsafe.Pointer(&ap))
+ return e.EncodeElement(*ap2, start)
+}
+
+// UnmarshalXML implements the xml.Unmarshaler interface for AccessPolicy.
+func (ap *AccessPolicy) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
+ ap2 := (*accessPolicy)(unsafe.Pointer(ap))
+ return d.DecodeElement(ap2, &start)
+}
+
+// AppendBlobAppendBlockFromURLResponse ...
+type AppendBlobAppendBlockFromURLResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (ababfur AppendBlobAppendBlockFromURLResponse) Response() *http.Response {
+ return ababfur.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (ababfur AppendBlobAppendBlockFromURLResponse) StatusCode() int {
+ return ababfur.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (ababfur AppendBlobAppendBlockFromURLResponse) Status() string {
+ return ababfur.rawResponse.Status
+}
+
+// BlobAppendOffset returns the value for header x-ms-blob-append-offset.
+func (ababfur AppendBlobAppendBlockFromURLResponse) BlobAppendOffset() string {
+ return ababfur.rawResponse.Header.Get("x-ms-blob-append-offset")
+}
+
+// BlobCommittedBlockCount returns the value for header x-ms-blob-committed-block-count.
+func (ababfur AppendBlobAppendBlockFromURLResponse) BlobCommittedBlockCount() int32 {
+ s := ababfur.rawResponse.Header.Get("x-ms-blob-committed-block-count")
+ if s == "" {
+ return -1
+ }
+ i, err := strconv.ParseInt(s, 10, 32)
+ if err != nil {
+ i = 0
+ }
+ return int32(i)
+}
+
+// ContentMD5 returns the value for header Content-MD5.
+func (ababfur AppendBlobAppendBlockFromURLResponse) ContentMD5() []byte {
+ s := ababfur.rawResponse.Header.Get("Content-MD5")
+ if s == "" {
+ return nil
+ }
+ b, err := base64.StdEncoding.DecodeString(s)
+ if err != nil {
+ b = nil
+ }
+ return b
+}
+
+// Date returns the value for header Date.
+func (ababfur AppendBlobAppendBlockFromURLResponse) Date() time.Time {
+ s := ababfur.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// EncryptionKeySha256 returns the value for header x-ms-encryption-key-sha256.
+func (ababfur AppendBlobAppendBlockFromURLResponse) EncryptionKeySha256() string {
+ return ababfur.rawResponse.Header.Get("x-ms-encryption-key-sha256")
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (ababfur AppendBlobAppendBlockFromURLResponse) ErrorCode() string {
+ return ababfur.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// ETag returns the value for header ETag.
+func (ababfur AppendBlobAppendBlockFromURLResponse) ETag() ETag {
+ return ETag(ababfur.rawResponse.Header.Get("ETag"))
+}
+
+// IsServerEncrypted returns the value for header x-ms-request-server-encrypted.
+func (ababfur AppendBlobAppendBlockFromURLResponse) IsServerEncrypted() string {
+ return ababfur.rawResponse.Header.Get("x-ms-request-server-encrypted")
+}
+
+// LastModified returns the value for header Last-Modified.
+func (ababfur AppendBlobAppendBlockFromURLResponse) LastModified() time.Time {
+ s := ababfur.rawResponse.Header.Get("Last-Modified")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (ababfur AppendBlobAppendBlockFromURLResponse) RequestID() string {
+ return ababfur.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (ababfur AppendBlobAppendBlockFromURLResponse) Version() string {
+ return ababfur.rawResponse.Header.Get("x-ms-version")
+}
+
+// XMsContentCrc64 returns the value for header x-ms-content-crc64.
+func (ababfur AppendBlobAppendBlockFromURLResponse) XMsContentCrc64() []byte {
+ s := ababfur.rawResponse.Header.Get("x-ms-content-crc64")
+ if s == "" {
+ return nil
+ }
+ b, err := base64.StdEncoding.DecodeString(s)
+ if err != nil {
+ b = nil
+ }
+ return b
+}
+
+// AppendBlobAppendBlockResponse ...
+type AppendBlobAppendBlockResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (ababr AppendBlobAppendBlockResponse) Response() *http.Response {
+ return ababr.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (ababr AppendBlobAppendBlockResponse) StatusCode() int {
+ return ababr.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (ababr AppendBlobAppendBlockResponse) Status() string {
+ return ababr.rawResponse.Status
+}
+
+// BlobAppendOffset returns the value for header x-ms-blob-append-offset.
+func (ababr AppendBlobAppendBlockResponse) BlobAppendOffset() string {
+ return ababr.rawResponse.Header.Get("x-ms-blob-append-offset")
+}
+
+// BlobCommittedBlockCount returns the value for header x-ms-blob-committed-block-count.
+func (ababr AppendBlobAppendBlockResponse) BlobCommittedBlockCount() int32 {
+ s := ababr.rawResponse.Header.Get("x-ms-blob-committed-block-count")
+ if s == "" {
+ return -1
+ }
+ i, err := strconv.ParseInt(s, 10, 32)
+ if err != nil {
+ i = 0
+ }
+ return int32(i)
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (ababr AppendBlobAppendBlockResponse) ClientRequestID() string {
+ return ababr.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// ContentMD5 returns the value for header Content-MD5.
+func (ababr AppendBlobAppendBlockResponse) ContentMD5() []byte {
+ s := ababr.rawResponse.Header.Get("Content-MD5")
+ if s == "" {
+ return nil
+ }
+ b, err := base64.StdEncoding.DecodeString(s)
+ if err != nil {
+ b = nil
+ }
+ return b
+}
+
+// Date returns the value for header Date.
+func (ababr AppendBlobAppendBlockResponse) Date() time.Time {
+ s := ababr.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// EncryptionKeySha256 returns the value for header x-ms-encryption-key-sha256.
+func (ababr AppendBlobAppendBlockResponse) EncryptionKeySha256() string {
+ return ababr.rawResponse.Header.Get("x-ms-encryption-key-sha256")
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (ababr AppendBlobAppendBlockResponse) ErrorCode() string {
+ return ababr.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// ETag returns the value for header ETag.
+func (ababr AppendBlobAppendBlockResponse) ETag() ETag {
+ return ETag(ababr.rawResponse.Header.Get("ETag"))
+}
+
+// IsServerEncrypted returns the value for header x-ms-request-server-encrypted.
+func (ababr AppendBlobAppendBlockResponse) IsServerEncrypted() string {
+ return ababr.rawResponse.Header.Get("x-ms-request-server-encrypted")
+}
+
+// LastModified returns the value for header Last-Modified.
+func (ababr AppendBlobAppendBlockResponse) LastModified() time.Time {
+ s := ababr.rawResponse.Header.Get("Last-Modified")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (ababr AppendBlobAppendBlockResponse) RequestID() string {
+ return ababr.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (ababr AppendBlobAppendBlockResponse) Version() string {
+ return ababr.rawResponse.Header.Get("x-ms-version")
+}
+
+// XMsContentCrc64 returns the value for header x-ms-content-crc64.
+func (ababr AppendBlobAppendBlockResponse) XMsContentCrc64() []byte {
+ s := ababr.rawResponse.Header.Get("x-ms-content-crc64")
+ if s == "" {
+ return nil
+ }
+ b, err := base64.StdEncoding.DecodeString(s)
+ if err != nil {
+ b = nil
+ }
+ return b
+}
+
+// AppendBlobCreateResponse ...
+type AppendBlobCreateResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (abcr AppendBlobCreateResponse) Response() *http.Response {
+ return abcr.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (abcr AppendBlobCreateResponse) StatusCode() int {
+ return abcr.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (abcr AppendBlobCreateResponse) Status() string {
+ return abcr.rawResponse.Status
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (abcr AppendBlobCreateResponse) ClientRequestID() string {
+ return abcr.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// ContentMD5 returns the value for header Content-MD5.
+func (abcr AppendBlobCreateResponse) ContentMD5() []byte {
+ s := abcr.rawResponse.Header.Get("Content-MD5")
+ if s == "" {
+ return nil
+ }
+ b, err := base64.StdEncoding.DecodeString(s)
+ if err != nil {
+ b = nil
+ }
+ return b
+}
+
+// Date returns the value for header Date.
+func (abcr AppendBlobCreateResponse) Date() time.Time {
+ s := abcr.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// EncryptionKeySha256 returns the value for header x-ms-encryption-key-sha256.
+func (abcr AppendBlobCreateResponse) EncryptionKeySha256() string {
+ return abcr.rawResponse.Header.Get("x-ms-encryption-key-sha256")
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (abcr AppendBlobCreateResponse) ErrorCode() string {
+ return abcr.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// ETag returns the value for header ETag.
+func (abcr AppendBlobCreateResponse) ETag() ETag {
+ return ETag(abcr.rawResponse.Header.Get("ETag"))
+}
+
+// IsServerEncrypted returns the value for header x-ms-request-server-encrypted.
+func (abcr AppendBlobCreateResponse) IsServerEncrypted() string {
+ return abcr.rawResponse.Header.Get("x-ms-request-server-encrypted")
+}
+
+// LastModified returns the value for header Last-Modified.
+func (abcr AppendBlobCreateResponse) LastModified() time.Time {
+ s := abcr.rawResponse.Header.Get("Last-Modified")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (abcr AppendBlobCreateResponse) RequestID() string {
+ return abcr.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (abcr AppendBlobCreateResponse) Version() string {
+ return abcr.rawResponse.Header.Get("x-ms-version")
+}
+
+// BlobAbortCopyFromURLResponse ...
+type BlobAbortCopyFromURLResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (bacfur BlobAbortCopyFromURLResponse) Response() *http.Response {
+ return bacfur.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (bacfur BlobAbortCopyFromURLResponse) StatusCode() int {
+ return bacfur.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (bacfur BlobAbortCopyFromURLResponse) Status() string {
+ return bacfur.rawResponse.Status
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (bacfur BlobAbortCopyFromURLResponse) ClientRequestID() string {
+ return bacfur.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// Date returns the value for header Date.
+func (bacfur BlobAbortCopyFromURLResponse) Date() time.Time {
+ s := bacfur.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (bacfur BlobAbortCopyFromURLResponse) ErrorCode() string {
+ return bacfur.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (bacfur BlobAbortCopyFromURLResponse) RequestID() string {
+ return bacfur.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (bacfur BlobAbortCopyFromURLResponse) Version() string {
+ return bacfur.rawResponse.Header.Get("x-ms-version")
+}
+
+// BlobAcquireLeaseResponse ...
+type BlobAcquireLeaseResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (balr BlobAcquireLeaseResponse) Response() *http.Response {
+ return balr.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (balr BlobAcquireLeaseResponse) StatusCode() int {
+ return balr.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (balr BlobAcquireLeaseResponse) Status() string {
+ return balr.rawResponse.Status
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (balr BlobAcquireLeaseResponse) ClientRequestID() string {
+ return balr.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// Date returns the value for header Date.
+func (balr BlobAcquireLeaseResponse) Date() time.Time {
+ s := balr.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (balr BlobAcquireLeaseResponse) ErrorCode() string {
+ return balr.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// ETag returns the value for header ETag.
+func (balr BlobAcquireLeaseResponse) ETag() ETag {
+ return ETag(balr.rawResponse.Header.Get("ETag"))
+}
+
+// LastModified returns the value for header Last-Modified.
+func (balr BlobAcquireLeaseResponse) LastModified() time.Time {
+ s := balr.rawResponse.Header.Get("Last-Modified")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// LeaseID returns the value for header x-ms-lease-id.
+func (balr BlobAcquireLeaseResponse) LeaseID() string {
+ return balr.rawResponse.Header.Get("x-ms-lease-id")
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (balr BlobAcquireLeaseResponse) RequestID() string {
+ return balr.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (balr BlobAcquireLeaseResponse) Version() string {
+ return balr.rawResponse.Header.Get("x-ms-version")
+}
+
+// BlobBreakLeaseResponse ...
+type BlobBreakLeaseResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (bblr BlobBreakLeaseResponse) Response() *http.Response {
+ return bblr.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (bblr BlobBreakLeaseResponse) StatusCode() int {
+ return bblr.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (bblr BlobBreakLeaseResponse) Status() string {
+ return bblr.rawResponse.Status
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (bblr BlobBreakLeaseResponse) ClientRequestID() string {
+ return bblr.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// Date returns the value for header Date.
+func (bblr BlobBreakLeaseResponse) Date() time.Time {
+ s := bblr.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (bblr BlobBreakLeaseResponse) ErrorCode() string {
+ return bblr.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// ETag returns the value for header ETag.
+func (bblr BlobBreakLeaseResponse) ETag() ETag {
+ return ETag(bblr.rawResponse.Header.Get("ETag"))
+}
+
+// LastModified returns the value for header Last-Modified.
+func (bblr BlobBreakLeaseResponse) LastModified() time.Time {
+ s := bblr.rawResponse.Header.Get("Last-Modified")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// LeaseTime returns the value for header x-ms-lease-time.
+func (bblr BlobBreakLeaseResponse) LeaseTime() int32 {
+ s := bblr.rawResponse.Header.Get("x-ms-lease-time")
+ if s == "" {
+ return -1
+ }
+ i, err := strconv.ParseInt(s, 10, 32)
+ if err != nil {
+ i = 0
+ }
+ return int32(i)
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (bblr BlobBreakLeaseResponse) RequestID() string {
+ return bblr.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (bblr BlobBreakLeaseResponse) Version() string {
+ return bblr.rawResponse.Header.Get("x-ms-version")
+}
+
+// BlobChangeLeaseResponse ...
+type BlobChangeLeaseResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (bclr BlobChangeLeaseResponse) Response() *http.Response {
+ return bclr.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (bclr BlobChangeLeaseResponse) StatusCode() int {
+ return bclr.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (bclr BlobChangeLeaseResponse) Status() string {
+ return bclr.rawResponse.Status
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (bclr BlobChangeLeaseResponse) ClientRequestID() string {
+ return bclr.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// Date returns the value for header Date.
+func (bclr BlobChangeLeaseResponse) Date() time.Time {
+ s := bclr.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (bclr BlobChangeLeaseResponse) ErrorCode() string {
+ return bclr.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// ETag returns the value for header ETag.
+func (bclr BlobChangeLeaseResponse) ETag() ETag {
+ return ETag(bclr.rawResponse.Header.Get("ETag"))
+}
+
+// LastModified returns the value for header Last-Modified.
+func (bclr BlobChangeLeaseResponse) LastModified() time.Time {
+ s := bclr.rawResponse.Header.Get("Last-Modified")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// LeaseID returns the value for header x-ms-lease-id.
+func (bclr BlobChangeLeaseResponse) LeaseID() string {
+ return bclr.rawResponse.Header.Get("x-ms-lease-id")
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (bclr BlobChangeLeaseResponse) RequestID() string {
+ return bclr.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (bclr BlobChangeLeaseResponse) Version() string {
+ return bclr.rawResponse.Header.Get("x-ms-version")
+}
+
+// BlobCopyFromURLResponse ...
+type BlobCopyFromURLResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (bcfur BlobCopyFromURLResponse) Response() *http.Response {
+ return bcfur.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (bcfur BlobCopyFromURLResponse) StatusCode() int {
+ return bcfur.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (bcfur BlobCopyFromURLResponse) Status() string {
+ return bcfur.rawResponse.Status
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (bcfur BlobCopyFromURLResponse) ClientRequestID() string {
+ return bcfur.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// ContentMD5 returns the value for header Content-MD5.
+func (bcfur BlobCopyFromURLResponse) ContentMD5() []byte {
+ s := bcfur.rawResponse.Header.Get("Content-MD5")
+ if s == "" {
+ return nil
+ }
+ b, err := base64.StdEncoding.DecodeString(s)
+ if err != nil {
+ b = nil
+ }
+ return b
+}
+
+// CopyID returns the value for header x-ms-copy-id.
+func (bcfur BlobCopyFromURLResponse) CopyID() string {
+ return bcfur.rawResponse.Header.Get("x-ms-copy-id")
+}
+
+// CopyStatus returns the value for header x-ms-copy-status.
+func (bcfur BlobCopyFromURLResponse) CopyStatus() SyncCopyStatusType {
+ return SyncCopyStatusType(bcfur.rawResponse.Header.Get("x-ms-copy-status"))
+}
+
+// Date returns the value for header Date.
+func (bcfur BlobCopyFromURLResponse) Date() time.Time {
+ s := bcfur.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (bcfur BlobCopyFromURLResponse) ErrorCode() string {
+ return bcfur.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// ETag returns the value for header ETag.
+func (bcfur BlobCopyFromURLResponse) ETag() ETag {
+ return ETag(bcfur.rawResponse.Header.Get("ETag"))
+}
+
+// LastModified returns the value for header Last-Modified.
+func (bcfur BlobCopyFromURLResponse) LastModified() time.Time {
+ s := bcfur.rawResponse.Header.Get("Last-Modified")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (bcfur BlobCopyFromURLResponse) RequestID() string {
+ return bcfur.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (bcfur BlobCopyFromURLResponse) Version() string {
+ return bcfur.rawResponse.Header.Get("x-ms-version")
+}
+
+// XMsContentCrc64 returns the value for header x-ms-content-crc64.
+func (bcfur BlobCopyFromURLResponse) XMsContentCrc64() []byte {
+ s := bcfur.rawResponse.Header.Get("x-ms-content-crc64")
+ if s == "" {
+ return nil
+ }
+ b, err := base64.StdEncoding.DecodeString(s)
+ if err != nil {
+ b = nil
+ }
+ return b
+}
+
+// BlobCreateSnapshotResponse ...
+type BlobCreateSnapshotResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (bcsr BlobCreateSnapshotResponse) Response() *http.Response {
+ return bcsr.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (bcsr BlobCreateSnapshotResponse) StatusCode() int {
+ return bcsr.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (bcsr BlobCreateSnapshotResponse) Status() string {
+ return bcsr.rawResponse.Status
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (bcsr BlobCreateSnapshotResponse) ClientRequestID() string {
+ return bcsr.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// Date returns the value for header Date.
+func (bcsr BlobCreateSnapshotResponse) Date() time.Time {
+ s := bcsr.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (bcsr BlobCreateSnapshotResponse) ErrorCode() string {
+ return bcsr.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// ETag returns the value for header ETag.
+func (bcsr BlobCreateSnapshotResponse) ETag() ETag {
+ return ETag(bcsr.rawResponse.Header.Get("ETag"))
+}
+
+// IsServerEncrypted returns the value for header x-ms-request-server-encrypted.
+func (bcsr BlobCreateSnapshotResponse) IsServerEncrypted() string {
+ return bcsr.rawResponse.Header.Get("x-ms-request-server-encrypted")
+}
+
+// LastModified returns the value for header Last-Modified.
+func (bcsr BlobCreateSnapshotResponse) LastModified() time.Time {
+ s := bcsr.rawResponse.Header.Get("Last-Modified")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (bcsr BlobCreateSnapshotResponse) RequestID() string {
+ return bcsr.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Snapshot returns the value for header x-ms-snapshot.
+func (bcsr BlobCreateSnapshotResponse) Snapshot() string {
+ return bcsr.rawResponse.Header.Get("x-ms-snapshot")
+}
+
+// Version returns the value for header x-ms-version.
+func (bcsr BlobCreateSnapshotResponse) Version() string {
+ return bcsr.rawResponse.Header.Get("x-ms-version")
+}
+
+// BlobDeleteResponse ...
+type BlobDeleteResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (bdr BlobDeleteResponse) Response() *http.Response {
+ return bdr.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (bdr BlobDeleteResponse) StatusCode() int {
+ return bdr.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (bdr BlobDeleteResponse) Status() string {
+ return bdr.rawResponse.Status
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (bdr BlobDeleteResponse) ClientRequestID() string {
+ return bdr.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// Date returns the value for header Date.
+func (bdr BlobDeleteResponse) Date() time.Time {
+ s := bdr.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (bdr BlobDeleteResponse) ErrorCode() string {
+ return bdr.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (bdr BlobDeleteResponse) RequestID() string {
+ return bdr.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (bdr BlobDeleteResponse) Version() string {
+ return bdr.rawResponse.Header.Get("x-ms-version")
+}
+
+// BlobFlatListSegment ...
+type BlobFlatListSegment struct {
+ // XMLName is used for marshalling and is subject to removal in a future release.
+ XMLName xml.Name `xml:"Blobs"`
+ BlobItems []BlobItem `xml:"Blob"`
+}
+
+// BlobGetAccessControlResponse ...
+type BlobGetAccessControlResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (bgacr BlobGetAccessControlResponse) Response() *http.Response {
+ return bgacr.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (bgacr BlobGetAccessControlResponse) StatusCode() int {
+ return bgacr.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (bgacr BlobGetAccessControlResponse) Status() string {
+ return bgacr.rawResponse.Status
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (bgacr BlobGetAccessControlResponse) ClientRequestID() string {
+ return bgacr.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// Date returns the value for header Date.
+func (bgacr BlobGetAccessControlResponse) Date() time.Time {
+ s := bgacr.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// ETag returns the value for header ETag.
+func (bgacr BlobGetAccessControlResponse) ETag() ETag {
+ return ETag(bgacr.rawResponse.Header.Get("ETag"))
+}
+
+// LastModified returns the value for header Last-Modified.
+func (bgacr BlobGetAccessControlResponse) LastModified() time.Time {
+ s := bgacr.rawResponse.Header.Get("Last-Modified")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (bgacr BlobGetAccessControlResponse) RequestID() string {
+ return bgacr.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (bgacr BlobGetAccessControlResponse) Version() string {
+ return bgacr.rawResponse.Header.Get("x-ms-version")
+}
+
+// XMsACL returns the value for header x-ms-acl.
+func (bgacr BlobGetAccessControlResponse) XMsACL() string {
+ return bgacr.rawResponse.Header.Get("x-ms-acl")
+}
+
+// XMsGroup returns the value for header x-ms-group.
+func (bgacr BlobGetAccessControlResponse) XMsGroup() string {
+ return bgacr.rawResponse.Header.Get("x-ms-group")
+}
+
+// XMsOwner returns the value for header x-ms-owner.
+func (bgacr BlobGetAccessControlResponse) XMsOwner() string {
+ return bgacr.rawResponse.Header.Get("x-ms-owner")
+}
+
+// XMsPermissions returns the value for header x-ms-permissions.
+func (bgacr BlobGetAccessControlResponse) XMsPermissions() string {
+ return bgacr.rawResponse.Header.Get("x-ms-permissions")
+}
+
+// BlobGetAccountInfoResponse ...
+type BlobGetAccountInfoResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (bgair BlobGetAccountInfoResponse) Response() *http.Response {
+ return bgair.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (bgair BlobGetAccountInfoResponse) StatusCode() int {
+ return bgair.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (bgair BlobGetAccountInfoResponse) Status() string {
+ return bgair.rawResponse.Status
+}
+
+// AccountKind returns the value for header x-ms-account-kind.
+func (bgair BlobGetAccountInfoResponse) AccountKind() AccountKindType {
+ return AccountKindType(bgair.rawResponse.Header.Get("x-ms-account-kind"))
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (bgair BlobGetAccountInfoResponse) ClientRequestID() string {
+ return bgair.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// Date returns the value for header Date.
+func (bgair BlobGetAccountInfoResponse) Date() time.Time {
+ s := bgair.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (bgair BlobGetAccountInfoResponse) ErrorCode() string {
+ return bgair.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (bgair BlobGetAccountInfoResponse) RequestID() string {
+ return bgair.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// SkuName returns the value for header x-ms-sku-name.
+func (bgair BlobGetAccountInfoResponse) SkuName() SkuNameType {
+ return SkuNameType(bgair.rawResponse.Header.Get("x-ms-sku-name"))
+}
+
+// Version returns the value for header x-ms-version.
+func (bgair BlobGetAccountInfoResponse) Version() string {
+ return bgair.rawResponse.Header.Get("x-ms-version")
+}
+
+// BlobGetPropertiesResponse ...
+type BlobGetPropertiesResponse struct {
+ rawResponse *http.Response
+}
+
+// NewMetadata returns user-defined key/value pairs.
+func (bgpr BlobGetPropertiesResponse) NewMetadata() Metadata {
+ md := Metadata{}
+ for k, v := range bgpr.rawResponse.Header {
+ if len(k) > mdPrefixLen {
+ if prefix := k[0:mdPrefixLen]; strings.EqualFold(prefix, mdPrefix) {
+ md[strings.ToLower(k[mdPrefixLen:])] = v[0]
+ }
+ }
+ }
+ return md
+}
+
+// Response returns the raw HTTP response object.
+func (bgpr BlobGetPropertiesResponse) Response() *http.Response {
+ return bgpr.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (bgpr BlobGetPropertiesResponse) StatusCode() int {
+ return bgpr.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (bgpr BlobGetPropertiesResponse) Status() string {
+ return bgpr.rawResponse.Status
+}
+
+// AcceptRanges returns the value for header Accept-Ranges.
+func (bgpr BlobGetPropertiesResponse) AcceptRanges() string {
+ return bgpr.rawResponse.Header.Get("Accept-Ranges")
+}
+
+// AccessTier returns the value for header x-ms-access-tier.
+func (bgpr BlobGetPropertiesResponse) AccessTier() string {
+ return bgpr.rawResponse.Header.Get("x-ms-access-tier")
+}
+
+// AccessTierChangeTime returns the value for header x-ms-access-tier-change-time.
+func (bgpr BlobGetPropertiesResponse) AccessTierChangeTime() time.Time {
+ s := bgpr.rawResponse.Header.Get("x-ms-access-tier-change-time")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// AccessTierInferred returns the value for header x-ms-access-tier-inferred.
+func (bgpr BlobGetPropertiesResponse) AccessTierInferred() string {
+ return bgpr.rawResponse.Header.Get("x-ms-access-tier-inferred")
+}
+
+// ArchiveStatus returns the value for header x-ms-archive-status.
+func (bgpr BlobGetPropertiesResponse) ArchiveStatus() string {
+ return bgpr.rawResponse.Header.Get("x-ms-archive-status")
+}
+
+// BlobCommittedBlockCount returns the value for header x-ms-blob-committed-block-count.
+func (bgpr BlobGetPropertiesResponse) BlobCommittedBlockCount() int32 {
+ s := bgpr.rawResponse.Header.Get("x-ms-blob-committed-block-count")
+ if s == "" {
+ return -1
+ }
+ i, err := strconv.ParseInt(s, 10, 32)
+ if err != nil {
+ i = 0
+ }
+ return int32(i)
+}
+
+// BlobSequenceNumber returns the value for header x-ms-blob-sequence-number.
+func (bgpr BlobGetPropertiesResponse) BlobSequenceNumber() int64 {
+ s := bgpr.rawResponse.Header.Get("x-ms-blob-sequence-number")
+ if s == "" {
+ return -1
+ }
+ i, err := strconv.ParseInt(s, 10, 64)
+ if err != nil {
+ i = 0
+ }
+ return i
+}
+
+// BlobType returns the value for header x-ms-blob-type.
+func (bgpr BlobGetPropertiesResponse) BlobType() BlobType {
+ return BlobType(bgpr.rawResponse.Header.Get("x-ms-blob-type"))
+}
+
+// CacheControl returns the value for header Cache-Control.
+func (bgpr BlobGetPropertiesResponse) CacheControl() string {
+ return bgpr.rawResponse.Header.Get("Cache-Control")
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (bgpr BlobGetPropertiesResponse) ClientRequestID() string {
+ return bgpr.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// ContentDisposition returns the value for header Content-Disposition.
+func (bgpr BlobGetPropertiesResponse) ContentDisposition() string {
+ return bgpr.rawResponse.Header.Get("Content-Disposition")
+}
+
+// ContentEncoding returns the value for header Content-Encoding.
+func (bgpr BlobGetPropertiesResponse) ContentEncoding() string {
+ return bgpr.rawResponse.Header.Get("Content-Encoding")
+}
+
+// ContentLanguage returns the value for header Content-Language.
+func (bgpr BlobGetPropertiesResponse) ContentLanguage() string {
+ return bgpr.rawResponse.Header.Get("Content-Language")
+}
+
+// ContentLength returns the value for header Content-Length.
+func (bgpr BlobGetPropertiesResponse) ContentLength() int64 {
+ s := bgpr.rawResponse.Header.Get("Content-Length")
+ if s == "" {
+ return -1
+ }
+ i, err := strconv.ParseInt(s, 10, 64)
+ if err != nil {
+ i = 0
+ }
+ return i
+}
+
+// ContentMD5 returns the value for header Content-MD5.
+func (bgpr BlobGetPropertiesResponse) ContentMD5() []byte {
+ s := bgpr.rawResponse.Header.Get("Content-MD5")
+ if s == "" {
+ return nil
+ }
+ b, err := base64.StdEncoding.DecodeString(s)
+ if err != nil {
+ b = nil
+ }
+ return b
+}
+
+// ContentType returns the value for header Content-Type.
+func (bgpr BlobGetPropertiesResponse) ContentType() string {
+ return bgpr.rawResponse.Header.Get("Content-Type")
+}
+
+// CopyCompletionTime returns the value for header x-ms-copy-completion-time.
+func (bgpr BlobGetPropertiesResponse) CopyCompletionTime() time.Time {
+ s := bgpr.rawResponse.Header.Get("x-ms-copy-completion-time")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// CopyID returns the value for header x-ms-copy-id.
+func (bgpr BlobGetPropertiesResponse) CopyID() string {
+ return bgpr.rawResponse.Header.Get("x-ms-copy-id")
+}
+
+// CopyProgress returns the value for header x-ms-copy-progress.
+func (bgpr BlobGetPropertiesResponse) CopyProgress() string {
+ return bgpr.rawResponse.Header.Get("x-ms-copy-progress")
+}
+
+// CopySource returns the value for header x-ms-copy-source.
+func (bgpr BlobGetPropertiesResponse) CopySource() string {
+ return bgpr.rawResponse.Header.Get("x-ms-copy-source")
+}
+
+// CopyStatus returns the value for header x-ms-copy-status.
+func (bgpr BlobGetPropertiesResponse) CopyStatus() CopyStatusType {
+ return CopyStatusType(bgpr.rawResponse.Header.Get("x-ms-copy-status"))
+}
+
+// CopyStatusDescription returns the value for header x-ms-copy-status-description.
+func (bgpr BlobGetPropertiesResponse) CopyStatusDescription() string {
+ return bgpr.rawResponse.Header.Get("x-ms-copy-status-description")
+}
+
+// CreationTime returns the value for header x-ms-creation-time.
+func (bgpr BlobGetPropertiesResponse) CreationTime() time.Time {
+ s := bgpr.rawResponse.Header.Get("x-ms-creation-time")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// Date returns the value for header Date.
+func (bgpr BlobGetPropertiesResponse) Date() time.Time {
+ s := bgpr.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// DestinationSnapshot returns the value for header x-ms-copy-destination-snapshot.
+func (bgpr BlobGetPropertiesResponse) DestinationSnapshot() string {
+ return bgpr.rawResponse.Header.Get("x-ms-copy-destination-snapshot")
+}
+
+// EncryptionKeySha256 returns the value for header x-ms-encryption-key-sha256.
+func (bgpr BlobGetPropertiesResponse) EncryptionKeySha256() string {
+ return bgpr.rawResponse.Header.Get("x-ms-encryption-key-sha256")
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (bgpr BlobGetPropertiesResponse) ErrorCode() string {
+ return bgpr.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// ETag returns the value for header ETag.
+func (bgpr BlobGetPropertiesResponse) ETag() ETag {
+ return ETag(bgpr.rawResponse.Header.Get("ETag"))
+}
+
+// IsIncrementalCopy returns the value for header x-ms-incremental-copy.
+func (bgpr BlobGetPropertiesResponse) IsIncrementalCopy() string {
+ return bgpr.rawResponse.Header.Get("x-ms-incremental-copy")
+}
+
+// IsServerEncrypted returns the value for header x-ms-server-encrypted.
+func (bgpr BlobGetPropertiesResponse) IsServerEncrypted() string {
+ return bgpr.rawResponse.Header.Get("x-ms-server-encrypted")
+}
+
+// LastModified returns the value for header Last-Modified.
+func (bgpr BlobGetPropertiesResponse) LastModified() time.Time {
+ s := bgpr.rawResponse.Header.Get("Last-Modified")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// LeaseDuration returns the value for header x-ms-lease-duration.
+func (bgpr BlobGetPropertiesResponse) LeaseDuration() LeaseDurationType {
+ return LeaseDurationType(bgpr.rawResponse.Header.Get("x-ms-lease-duration"))
+}
+
+// LeaseState returns the value for header x-ms-lease-state.
+func (bgpr BlobGetPropertiesResponse) LeaseState() LeaseStateType {
+ return LeaseStateType(bgpr.rawResponse.Header.Get("x-ms-lease-state"))
+}
+
+// LeaseStatus returns the value for header x-ms-lease-status.
+func (bgpr BlobGetPropertiesResponse) LeaseStatus() LeaseStatusType {
+ return LeaseStatusType(bgpr.rawResponse.Header.Get("x-ms-lease-status"))
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (bgpr BlobGetPropertiesResponse) RequestID() string {
+ return bgpr.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (bgpr BlobGetPropertiesResponse) Version() string {
+ return bgpr.rawResponse.Header.Get("x-ms-version")
+}
+
+// BlobHierarchyListSegment ...
+type BlobHierarchyListSegment struct {
+ // XMLName is used for marshalling and is subject to removal in a future release.
+ XMLName xml.Name `xml:"Blobs"`
+ BlobPrefixes []BlobPrefix `xml:"BlobPrefix"`
+ BlobItems []BlobItem `xml:"Blob"`
+}
+
+// BlobItem - An Azure Storage blob
+type BlobItem struct {
+ // XMLName is used for marshalling and is subject to removal in a future release.
+ XMLName xml.Name `xml:"Blob"`
+ Name string `xml:"Name"`
+ Deleted bool `xml:"Deleted"`
+ Snapshot string `xml:"Snapshot"`
+ Properties BlobProperties `xml:"Properties"`
+ Metadata Metadata `xml:"Metadata"`
+}
+
+// BlobPrefix ...
+type BlobPrefix struct {
+ Name string `xml:"Name"`
+}
+
+// BlobProperties - Properties of a blob
+type BlobProperties struct {
+ // XMLName is used for marshalling and is subject to removal in a future release.
+ XMLName xml.Name `xml:"Properties"`
+ CreationTime *time.Time `xml:"Creation-Time"`
+ LastModified time.Time `xml:"Last-Modified"`
+ Etag ETag `xml:"Etag"`
+ // ContentLength - Size in bytes
+ ContentLength *int64 `xml:"Content-Length"`
+ ContentType *string `xml:"Content-Type"`
+ ContentEncoding *string `xml:"Content-Encoding"`
+ ContentLanguage *string `xml:"Content-Language"`
+ ContentMD5 []byte `xml:"Content-MD5"`
+ ContentDisposition *string `xml:"Content-Disposition"`
+ CacheControl *string `xml:"Cache-Control"`
+ BlobSequenceNumber *int64 `xml:"x-ms-blob-sequence-number"`
+ // BlobType - Possible values include: 'BlobBlockBlob', 'BlobPageBlob', 'BlobAppendBlob', 'BlobNone'
+ BlobType BlobType `xml:"BlobType"`
+ // LeaseStatus - Possible values include: 'LeaseStatusLocked', 'LeaseStatusUnlocked', 'LeaseStatusNone'
+ LeaseStatus LeaseStatusType `xml:"LeaseStatus"`
+ // LeaseState - Possible values include: 'LeaseStateAvailable', 'LeaseStateLeased', 'LeaseStateExpired', 'LeaseStateBreaking', 'LeaseStateBroken', 'LeaseStateNone'
+ LeaseState LeaseStateType `xml:"LeaseState"`
+ // LeaseDuration - Possible values include: 'LeaseDurationInfinite', 'LeaseDurationFixed', 'LeaseDurationNone'
+ LeaseDuration LeaseDurationType `xml:"LeaseDuration"`
+ CopyID *string `xml:"CopyId"`
+ // CopyStatus - Possible values include: 'CopyStatusPending', 'CopyStatusSuccess', 'CopyStatusAborted', 'CopyStatusFailed', 'CopyStatusNone'
+ CopyStatus CopyStatusType `xml:"CopyStatus"`
+ CopySource *string `xml:"CopySource"`
+ CopyProgress *string `xml:"CopyProgress"`
+ CopyCompletionTime *time.Time `xml:"CopyCompletionTime"`
+ CopyStatusDescription *string `xml:"CopyStatusDescription"`
+ ServerEncrypted *bool `xml:"ServerEncrypted"`
+ IncrementalCopy *bool `xml:"IncrementalCopy"`
+ DestinationSnapshot *string `xml:"DestinationSnapshot"`
+ DeletedTime *time.Time `xml:"DeletedTime"`
+ RemainingRetentionDays *int32 `xml:"RemainingRetentionDays"`
+ // AccessTier - Possible values include: 'AccessTierP4', 'AccessTierP6', 'AccessTierP10', 'AccessTierP15', 'AccessTierP20', 'AccessTierP30', 'AccessTierP40', 'AccessTierP50', 'AccessTierP60', 'AccessTierP70', 'AccessTierP80', 'AccessTierHot', 'AccessTierCool', 'AccessTierArchive', 'AccessTierNone'
+ AccessTier AccessTierType `xml:"AccessTier"`
+ AccessTierInferred *bool `xml:"AccessTierInferred"`
+ // ArchiveStatus - Possible values include: 'ArchiveStatusRehydratePendingToHot', 'ArchiveStatusRehydratePendingToCool', 'ArchiveStatusNone'
+ ArchiveStatus ArchiveStatusType `xml:"ArchiveStatus"`
+ CustomerProvidedKeySha256 *string `xml:"CustomerProvidedKeySha256"`
+ AccessTierChangeTime *time.Time `xml:"AccessTierChangeTime"`
+}
+
+// MarshalXML implements the xml.Marshaler interface for BlobProperties.
+func (bp BlobProperties) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
+ bp2 := (*blobProperties)(unsafe.Pointer(&bp))
+ return e.EncodeElement(*bp2, start)
+}
+
+// UnmarshalXML implements the xml.Unmarshaler interface for BlobProperties.
+func (bp *BlobProperties) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
+ bp2 := (*blobProperties)(unsafe.Pointer(bp))
+ return d.DecodeElement(bp2, &start)
+}
+
+// BlobReleaseLeaseResponse ...
+type BlobReleaseLeaseResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (brlr BlobReleaseLeaseResponse) Response() *http.Response {
+ return brlr.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (brlr BlobReleaseLeaseResponse) StatusCode() int {
+ return brlr.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (brlr BlobReleaseLeaseResponse) Status() string {
+ return brlr.rawResponse.Status
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (brlr BlobReleaseLeaseResponse) ClientRequestID() string {
+ return brlr.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// Date returns the value for header Date.
+func (brlr BlobReleaseLeaseResponse) Date() time.Time {
+ s := brlr.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (brlr BlobReleaseLeaseResponse) ErrorCode() string {
+ return brlr.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// ETag returns the value for header ETag.
+func (brlr BlobReleaseLeaseResponse) ETag() ETag {
+ return ETag(brlr.rawResponse.Header.Get("ETag"))
+}
+
+// LastModified returns the value for header Last-Modified.
+func (brlr BlobReleaseLeaseResponse) LastModified() time.Time {
+ s := brlr.rawResponse.Header.Get("Last-Modified")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (brlr BlobReleaseLeaseResponse) RequestID() string {
+ return brlr.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (brlr BlobReleaseLeaseResponse) Version() string {
+ return brlr.rawResponse.Header.Get("x-ms-version")
+}
+
+// BlobRenameResponse ...
+type BlobRenameResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (brr BlobRenameResponse) Response() *http.Response {
+ return brr.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (brr BlobRenameResponse) StatusCode() int {
+ return brr.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (brr BlobRenameResponse) Status() string {
+ return brr.rawResponse.Status
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (brr BlobRenameResponse) ClientRequestID() string {
+ return brr.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// ContentLength returns the value for header Content-Length.
+func (brr BlobRenameResponse) ContentLength() int64 {
+ s := brr.rawResponse.Header.Get("Content-Length")
+ if s == "" {
+ return -1
+ }
+ i, err := strconv.ParseInt(s, 10, 64)
+ if err != nil {
+ i = 0
+ }
+ return i
+}
+
+// Date returns the value for header Date.
+func (brr BlobRenameResponse) Date() time.Time {
+ s := brr.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// ETag returns the value for header ETag.
+func (brr BlobRenameResponse) ETag() ETag {
+ return ETag(brr.rawResponse.Header.Get("ETag"))
+}
+
+// LastModified returns the value for header Last-Modified.
+func (brr BlobRenameResponse) LastModified() time.Time {
+ s := brr.rawResponse.Header.Get("Last-Modified")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (brr BlobRenameResponse) RequestID() string {
+ return brr.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (brr BlobRenameResponse) Version() string {
+ return brr.rawResponse.Header.Get("x-ms-version")
+}
+
+// BlobRenewLeaseResponse ...
+type BlobRenewLeaseResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (brlr BlobRenewLeaseResponse) Response() *http.Response {
+ return brlr.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (brlr BlobRenewLeaseResponse) StatusCode() int {
+ return brlr.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (brlr BlobRenewLeaseResponse) Status() string {
+ return brlr.rawResponse.Status
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (brlr BlobRenewLeaseResponse) ClientRequestID() string {
+ return brlr.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// Date returns the value for header Date.
+func (brlr BlobRenewLeaseResponse) Date() time.Time {
+ s := brlr.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (brlr BlobRenewLeaseResponse) ErrorCode() string {
+ return brlr.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// ETag returns the value for header ETag.
+func (brlr BlobRenewLeaseResponse) ETag() ETag {
+ return ETag(brlr.rawResponse.Header.Get("ETag"))
+}
+
+// LastModified returns the value for header Last-Modified.
+func (brlr BlobRenewLeaseResponse) LastModified() time.Time {
+ s := brlr.rawResponse.Header.Get("Last-Modified")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// LeaseID returns the value for header x-ms-lease-id.
+func (brlr BlobRenewLeaseResponse) LeaseID() string {
+ return brlr.rawResponse.Header.Get("x-ms-lease-id")
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (brlr BlobRenewLeaseResponse) RequestID() string {
+ return brlr.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (brlr BlobRenewLeaseResponse) Version() string {
+ return brlr.rawResponse.Header.Get("x-ms-version")
+}
+
+// BlobSetAccessControlResponse ...
+type BlobSetAccessControlResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (bsacr BlobSetAccessControlResponse) Response() *http.Response {
+ return bsacr.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (bsacr BlobSetAccessControlResponse) StatusCode() int {
+ return bsacr.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (bsacr BlobSetAccessControlResponse) Status() string {
+ return bsacr.rawResponse.Status
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (bsacr BlobSetAccessControlResponse) ClientRequestID() string {
+ return bsacr.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// Date returns the value for header Date.
+func (bsacr BlobSetAccessControlResponse) Date() time.Time {
+ s := bsacr.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// ETag returns the value for header ETag.
+func (bsacr BlobSetAccessControlResponse) ETag() ETag {
+ return ETag(bsacr.rawResponse.Header.Get("ETag"))
+}
+
+// LastModified returns the value for header Last-Modified.
+func (bsacr BlobSetAccessControlResponse) LastModified() time.Time {
+ s := bsacr.rawResponse.Header.Get("Last-Modified")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (bsacr BlobSetAccessControlResponse) RequestID() string {
+ return bsacr.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (bsacr BlobSetAccessControlResponse) Version() string {
+ return bsacr.rawResponse.Header.Get("x-ms-version")
+}
+
+// BlobSetHTTPHeadersResponse ...
+type BlobSetHTTPHeadersResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (bshhr BlobSetHTTPHeadersResponse) Response() *http.Response {
+ return bshhr.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (bshhr BlobSetHTTPHeadersResponse) StatusCode() int {
+ return bshhr.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (bshhr BlobSetHTTPHeadersResponse) Status() string {
+ return bshhr.rawResponse.Status
+}
+
+// BlobSequenceNumber returns the value for header x-ms-blob-sequence-number.
+func (bshhr BlobSetHTTPHeadersResponse) BlobSequenceNumber() int64 {
+ s := bshhr.rawResponse.Header.Get("x-ms-blob-sequence-number")
+ if s == "" {
+ return -1
+ }
+ i, err := strconv.ParseInt(s, 10, 64)
+ if err != nil {
+ i = 0
+ }
+ return i
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (bshhr BlobSetHTTPHeadersResponse) ClientRequestID() string {
+ return bshhr.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// Date returns the value for header Date.
+func (bshhr BlobSetHTTPHeadersResponse) Date() time.Time {
+ s := bshhr.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (bshhr BlobSetHTTPHeadersResponse) ErrorCode() string {
+ return bshhr.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// ETag returns the value for header ETag.
+func (bshhr BlobSetHTTPHeadersResponse) ETag() ETag {
+ return ETag(bshhr.rawResponse.Header.Get("ETag"))
+}
+
+// LastModified returns the value for header Last-Modified.
+func (bshhr BlobSetHTTPHeadersResponse) LastModified() time.Time {
+ s := bshhr.rawResponse.Header.Get("Last-Modified")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (bshhr BlobSetHTTPHeadersResponse) RequestID() string {
+ return bshhr.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (bshhr BlobSetHTTPHeadersResponse) Version() string {
+ return bshhr.rawResponse.Header.Get("x-ms-version")
+}
+
+// BlobSetMetadataResponse ...
+type BlobSetMetadataResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (bsmr BlobSetMetadataResponse) Response() *http.Response {
+ return bsmr.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (bsmr BlobSetMetadataResponse) StatusCode() int {
+ return bsmr.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (bsmr BlobSetMetadataResponse) Status() string {
+ return bsmr.rawResponse.Status
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (bsmr BlobSetMetadataResponse) ClientRequestID() string {
+ return bsmr.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// Date returns the value for header Date.
+func (bsmr BlobSetMetadataResponse) Date() time.Time {
+ s := bsmr.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// EncryptionKeySha256 returns the value for header x-ms-encryption-key-sha256.
+func (bsmr BlobSetMetadataResponse) EncryptionKeySha256() string {
+ return bsmr.rawResponse.Header.Get("x-ms-encryption-key-sha256")
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (bsmr BlobSetMetadataResponse) ErrorCode() string {
+ return bsmr.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// ETag returns the value for header ETag.
+func (bsmr BlobSetMetadataResponse) ETag() ETag {
+ return ETag(bsmr.rawResponse.Header.Get("ETag"))
+}
+
+// IsServerEncrypted returns the value for header x-ms-request-server-encrypted.
+func (bsmr BlobSetMetadataResponse) IsServerEncrypted() string {
+ return bsmr.rawResponse.Header.Get("x-ms-request-server-encrypted")
+}
+
+// LastModified returns the value for header Last-Modified.
+func (bsmr BlobSetMetadataResponse) LastModified() time.Time {
+ s := bsmr.rawResponse.Header.Get("Last-Modified")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (bsmr BlobSetMetadataResponse) RequestID() string {
+ return bsmr.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (bsmr BlobSetMetadataResponse) Version() string {
+ return bsmr.rawResponse.Header.Get("x-ms-version")
+}
+
+// BlobSetTierResponse ...
+type BlobSetTierResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (bstr BlobSetTierResponse) Response() *http.Response {
+ return bstr.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (bstr BlobSetTierResponse) StatusCode() int {
+ return bstr.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (bstr BlobSetTierResponse) Status() string {
+ return bstr.rawResponse.Status
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (bstr BlobSetTierResponse) ClientRequestID() string {
+ return bstr.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (bstr BlobSetTierResponse) ErrorCode() string {
+ return bstr.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (bstr BlobSetTierResponse) RequestID() string {
+ return bstr.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (bstr BlobSetTierResponse) Version() string {
+ return bstr.rawResponse.Header.Get("x-ms-version")
+}
+
+// BlobStartCopyFromURLResponse ...
+type BlobStartCopyFromURLResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (bscfur BlobStartCopyFromURLResponse) Response() *http.Response {
+ return bscfur.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (bscfur BlobStartCopyFromURLResponse) StatusCode() int {
+ return bscfur.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (bscfur BlobStartCopyFromURLResponse) Status() string {
+ return bscfur.rawResponse.Status
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (bscfur BlobStartCopyFromURLResponse) ClientRequestID() string {
+ return bscfur.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// CopyID returns the value for header x-ms-copy-id.
+func (bscfur BlobStartCopyFromURLResponse) CopyID() string {
+ return bscfur.rawResponse.Header.Get("x-ms-copy-id")
+}
+
+// CopyStatus returns the value for header x-ms-copy-status.
+func (bscfur BlobStartCopyFromURLResponse) CopyStatus() CopyStatusType {
+ return CopyStatusType(bscfur.rawResponse.Header.Get("x-ms-copy-status"))
+}
+
+// Date returns the value for header Date.
+func (bscfur BlobStartCopyFromURLResponse) Date() time.Time {
+ s := bscfur.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (bscfur BlobStartCopyFromURLResponse) ErrorCode() string {
+ return bscfur.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// ETag returns the value for header ETag.
+func (bscfur BlobStartCopyFromURLResponse) ETag() ETag {
+ return ETag(bscfur.rawResponse.Header.Get("ETag"))
+}
+
+// LastModified returns the value for header Last-Modified.
+func (bscfur BlobStartCopyFromURLResponse) LastModified() time.Time {
+ s := bscfur.rawResponse.Header.Get("Last-Modified")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (bscfur BlobStartCopyFromURLResponse) RequestID() string {
+ return bscfur.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (bscfur BlobStartCopyFromURLResponse) Version() string {
+ return bscfur.rawResponse.Header.Get("x-ms-version")
+}
+
+// BlobUndeleteResponse ...
+type BlobUndeleteResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (bur BlobUndeleteResponse) Response() *http.Response {
+ return bur.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (bur BlobUndeleteResponse) StatusCode() int {
+ return bur.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (bur BlobUndeleteResponse) Status() string {
+ return bur.rawResponse.Status
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (bur BlobUndeleteResponse) ClientRequestID() string {
+ return bur.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// Date returns the value for header Date.
+func (bur BlobUndeleteResponse) Date() time.Time {
+ s := bur.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (bur BlobUndeleteResponse) ErrorCode() string {
+ return bur.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (bur BlobUndeleteResponse) RequestID() string {
+ return bur.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (bur BlobUndeleteResponse) Version() string {
+ return bur.rawResponse.Header.Get("x-ms-version")
+}
+
+// Block - Represents a single block in a block blob. It describes the block's ID and size.
+type Block struct {
+ // Name - The base64 encoded block ID.
+ Name string `xml:"Name"`
+ // Size - The block size in bytes.
+ Size int32 `xml:"Size"`
+}
+
+// BlockBlobCommitBlockListResponse ...
+type BlockBlobCommitBlockListResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (bbcblr BlockBlobCommitBlockListResponse) Response() *http.Response {
+ return bbcblr.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (bbcblr BlockBlobCommitBlockListResponse) StatusCode() int {
+ return bbcblr.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (bbcblr BlockBlobCommitBlockListResponse) Status() string {
+ return bbcblr.rawResponse.Status
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (bbcblr BlockBlobCommitBlockListResponse) ClientRequestID() string {
+ return bbcblr.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// ContentMD5 returns the value for header Content-MD5.
+func (bbcblr BlockBlobCommitBlockListResponse) ContentMD5() []byte {
+ s := bbcblr.rawResponse.Header.Get("Content-MD5")
+ if s == "" {
+ return nil
+ }
+ b, err := base64.StdEncoding.DecodeString(s)
+ if err != nil {
+ b = nil
+ }
+ return b
+}
+
+// Date returns the value for header Date.
+func (bbcblr BlockBlobCommitBlockListResponse) Date() time.Time {
+ s := bbcblr.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// EncryptionKeySha256 returns the value for header x-ms-encryption-key-sha256.
+func (bbcblr BlockBlobCommitBlockListResponse) EncryptionKeySha256() string {
+ return bbcblr.rawResponse.Header.Get("x-ms-encryption-key-sha256")
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (bbcblr BlockBlobCommitBlockListResponse) ErrorCode() string {
+ return bbcblr.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// ETag returns the value for header ETag.
+func (bbcblr BlockBlobCommitBlockListResponse) ETag() ETag {
+ return ETag(bbcblr.rawResponse.Header.Get("ETag"))
+}
+
+// IsServerEncrypted returns the value for header x-ms-request-server-encrypted.
+func (bbcblr BlockBlobCommitBlockListResponse) IsServerEncrypted() string {
+ return bbcblr.rawResponse.Header.Get("x-ms-request-server-encrypted")
+}
+
+// LastModified returns the value for header Last-Modified.
+func (bbcblr BlockBlobCommitBlockListResponse) LastModified() time.Time {
+ s := bbcblr.rawResponse.Header.Get("Last-Modified")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (bbcblr BlockBlobCommitBlockListResponse) RequestID() string {
+ return bbcblr.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (bbcblr BlockBlobCommitBlockListResponse) Version() string {
+ return bbcblr.rawResponse.Header.Get("x-ms-version")
+}
+
+// XMsContentCrc64 returns the value for header x-ms-content-crc64.
+func (bbcblr BlockBlobCommitBlockListResponse) XMsContentCrc64() []byte {
+ s := bbcblr.rawResponse.Header.Get("x-ms-content-crc64")
+ if s == "" {
+ return nil
+ }
+ b, err := base64.StdEncoding.DecodeString(s)
+ if err != nil {
+ b = nil
+ }
+ return b
+}
+
+// BlockBlobStageBlockFromURLResponse ...
+type BlockBlobStageBlockFromURLResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (bbsbfur BlockBlobStageBlockFromURLResponse) Response() *http.Response {
+ return bbsbfur.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (bbsbfur BlockBlobStageBlockFromURLResponse) StatusCode() int {
+ return bbsbfur.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (bbsbfur BlockBlobStageBlockFromURLResponse) Status() string {
+ return bbsbfur.rawResponse.Status
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (bbsbfur BlockBlobStageBlockFromURLResponse) ClientRequestID() string {
+ return bbsbfur.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// ContentMD5 returns the value for header Content-MD5.
+func (bbsbfur BlockBlobStageBlockFromURLResponse) ContentMD5() []byte {
+ s := bbsbfur.rawResponse.Header.Get("Content-MD5")
+ if s == "" {
+ return nil
+ }
+ b, err := base64.StdEncoding.DecodeString(s)
+ if err != nil {
+ b = nil
+ }
+ return b
+}
+
+// Date returns the value for header Date.
+func (bbsbfur BlockBlobStageBlockFromURLResponse) Date() time.Time {
+ s := bbsbfur.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// EncryptionKeySha256 returns the value for header x-ms-encryption-key-sha256.
+func (bbsbfur BlockBlobStageBlockFromURLResponse) EncryptionKeySha256() string {
+ return bbsbfur.rawResponse.Header.Get("x-ms-encryption-key-sha256")
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (bbsbfur BlockBlobStageBlockFromURLResponse) ErrorCode() string {
+ return bbsbfur.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// IsServerEncrypted returns the value for header x-ms-request-server-encrypted.
+func (bbsbfur BlockBlobStageBlockFromURLResponse) IsServerEncrypted() string {
+ return bbsbfur.rawResponse.Header.Get("x-ms-request-server-encrypted")
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (bbsbfur BlockBlobStageBlockFromURLResponse) RequestID() string {
+ return bbsbfur.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (bbsbfur BlockBlobStageBlockFromURLResponse) Version() string {
+ return bbsbfur.rawResponse.Header.Get("x-ms-version")
+}
+
+// XMsContentCrc64 returns the value for header x-ms-content-crc64.
+func (bbsbfur BlockBlobStageBlockFromURLResponse) XMsContentCrc64() []byte {
+ s := bbsbfur.rawResponse.Header.Get("x-ms-content-crc64")
+ if s == "" {
+ return nil
+ }
+ b, err := base64.StdEncoding.DecodeString(s)
+ if err != nil {
+ b = nil
+ }
+ return b
+}
+
+// BlockBlobStageBlockResponse ...
+type BlockBlobStageBlockResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (bbsbr BlockBlobStageBlockResponse) Response() *http.Response {
+ return bbsbr.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (bbsbr BlockBlobStageBlockResponse) StatusCode() int {
+ return bbsbr.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (bbsbr BlockBlobStageBlockResponse) Status() string {
+ return bbsbr.rawResponse.Status
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (bbsbr BlockBlobStageBlockResponse) ClientRequestID() string {
+ return bbsbr.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// ContentMD5 returns the value for header Content-MD5.
+func (bbsbr BlockBlobStageBlockResponse) ContentMD5() []byte {
+ s := bbsbr.rawResponse.Header.Get("Content-MD5")
+ if s == "" {
+ return nil
+ }
+ b, err := base64.StdEncoding.DecodeString(s)
+ if err != nil {
+ b = nil
+ }
+ return b
+}
+
+// Date returns the value for header Date.
+func (bbsbr BlockBlobStageBlockResponse) Date() time.Time {
+ s := bbsbr.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// EncryptionKeySha256 returns the value for header x-ms-encryption-key-sha256.
+func (bbsbr BlockBlobStageBlockResponse) EncryptionKeySha256() string {
+ return bbsbr.rawResponse.Header.Get("x-ms-encryption-key-sha256")
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (bbsbr BlockBlobStageBlockResponse) ErrorCode() string {
+ return bbsbr.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// IsServerEncrypted returns the value for header x-ms-request-server-encrypted.
+func (bbsbr BlockBlobStageBlockResponse) IsServerEncrypted() string {
+ return bbsbr.rawResponse.Header.Get("x-ms-request-server-encrypted")
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (bbsbr BlockBlobStageBlockResponse) RequestID() string {
+ return bbsbr.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (bbsbr BlockBlobStageBlockResponse) Version() string {
+ return bbsbr.rawResponse.Header.Get("x-ms-version")
+}
+
+// XMsContentCrc64 returns the value for header x-ms-content-crc64.
+func (bbsbr BlockBlobStageBlockResponse) XMsContentCrc64() []byte {
+ s := bbsbr.rawResponse.Header.Get("x-ms-content-crc64")
+ if s == "" {
+ return nil
+ }
+ b, err := base64.StdEncoding.DecodeString(s)
+ if err != nil {
+ b = nil
+ }
+ return b
+}
+
+// BlockBlobUploadResponse ...
+type BlockBlobUploadResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (bbur BlockBlobUploadResponse) Response() *http.Response {
+ return bbur.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (bbur BlockBlobUploadResponse) StatusCode() int {
+ return bbur.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (bbur BlockBlobUploadResponse) Status() string {
+ return bbur.rawResponse.Status
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (bbur BlockBlobUploadResponse) ClientRequestID() string {
+ return bbur.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// ContentMD5 returns the value for header Content-MD5.
+func (bbur BlockBlobUploadResponse) ContentMD5() []byte {
+ s := bbur.rawResponse.Header.Get("Content-MD5")
+ if s == "" {
+ return nil
+ }
+ b, err := base64.StdEncoding.DecodeString(s)
+ if err != nil {
+ b = nil
+ }
+ return b
+}
+
+// Date returns the value for header Date.
+func (bbur BlockBlobUploadResponse) Date() time.Time {
+ s := bbur.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// EncryptionKeySha256 returns the value for header x-ms-encryption-key-sha256.
+func (bbur BlockBlobUploadResponse) EncryptionKeySha256() string {
+ return bbur.rawResponse.Header.Get("x-ms-encryption-key-sha256")
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (bbur BlockBlobUploadResponse) ErrorCode() string {
+ return bbur.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// ETag returns the value for header ETag.
+func (bbur BlockBlobUploadResponse) ETag() ETag {
+ return ETag(bbur.rawResponse.Header.Get("ETag"))
+}
+
+// IsServerEncrypted returns the value for header x-ms-request-server-encrypted.
+func (bbur BlockBlobUploadResponse) IsServerEncrypted() string {
+ return bbur.rawResponse.Header.Get("x-ms-request-server-encrypted")
+}
+
+// LastModified returns the value for header Last-Modified.
+func (bbur BlockBlobUploadResponse) LastModified() time.Time {
+ s := bbur.rawResponse.Header.Get("Last-Modified")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (bbur BlockBlobUploadResponse) RequestID() string {
+ return bbur.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (bbur BlockBlobUploadResponse) Version() string {
+ return bbur.rawResponse.Header.Get("x-ms-version")
+}
+
+// BlockList ...
+type BlockList struct {
+ rawResponse *http.Response
+ CommittedBlocks []Block `xml:"CommittedBlocks>Block"`
+ UncommittedBlocks []Block `xml:"UncommittedBlocks>Block"`
+}
+
+// Response returns the raw HTTP response object.
+func (bl BlockList) Response() *http.Response {
+ return bl.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (bl BlockList) StatusCode() int {
+ return bl.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (bl BlockList) Status() string {
+ return bl.rawResponse.Status
+}
+
+// BlobContentLength returns the value for header x-ms-blob-content-length.
+func (bl BlockList) BlobContentLength() int64 {
+ s := bl.rawResponse.Header.Get("x-ms-blob-content-length")
+ if s == "" {
+ return -1
+ }
+ i, err := strconv.ParseInt(s, 10, 64)
+ if err != nil {
+ i = 0
+ }
+ return i
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (bl BlockList) ClientRequestID() string {
+ return bl.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// ContentType returns the value for header Content-Type.
+func (bl BlockList) ContentType() string {
+ return bl.rawResponse.Header.Get("Content-Type")
+}
+
+// Date returns the value for header Date.
+func (bl BlockList) Date() time.Time {
+ s := bl.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (bl BlockList) ErrorCode() string {
+ return bl.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// ETag returns the value for header ETag.
+func (bl BlockList) ETag() ETag {
+ return ETag(bl.rawResponse.Header.Get("ETag"))
+}
+
+// LastModified returns the value for header Last-Modified.
+func (bl BlockList) LastModified() time.Time {
+ s := bl.rawResponse.Header.Get("Last-Modified")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (bl BlockList) RequestID() string {
+ return bl.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (bl BlockList) Version() string {
+ return bl.rawResponse.Header.Get("x-ms-version")
+}
+
+// BlockLookupList ...
+type BlockLookupList struct {
+ // XMLName is used for marshalling and is subject to removal in a future release.
+ XMLName xml.Name `xml:"BlockList"`
+ Committed []string `xml:"Committed"`
+ Uncommitted []string `xml:"Uncommitted"`
+ Latest []string `xml:"Latest"`
+}
+
+// ClearRange ...
+type ClearRange struct {
+ Start int64 `xml:"Start"`
+ End int64 `xml:"End"`
+}
+
+// ContainerAcquireLeaseResponse ...
+type ContainerAcquireLeaseResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (calr ContainerAcquireLeaseResponse) Response() *http.Response {
+ return calr.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (calr ContainerAcquireLeaseResponse) StatusCode() int {
+ return calr.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (calr ContainerAcquireLeaseResponse) Status() string {
+ return calr.rawResponse.Status
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (calr ContainerAcquireLeaseResponse) ClientRequestID() string {
+ return calr.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// Date returns the value for header Date.
+func (calr ContainerAcquireLeaseResponse) Date() time.Time {
+ s := calr.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (calr ContainerAcquireLeaseResponse) ErrorCode() string {
+ return calr.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// ETag returns the value for header ETag.
+func (calr ContainerAcquireLeaseResponse) ETag() ETag {
+ return ETag(calr.rawResponse.Header.Get("ETag"))
+}
+
+// LastModified returns the value for header Last-Modified.
+func (calr ContainerAcquireLeaseResponse) LastModified() time.Time {
+ s := calr.rawResponse.Header.Get("Last-Modified")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// LeaseID returns the value for header x-ms-lease-id.
+func (calr ContainerAcquireLeaseResponse) LeaseID() string {
+ return calr.rawResponse.Header.Get("x-ms-lease-id")
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (calr ContainerAcquireLeaseResponse) RequestID() string {
+ return calr.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (calr ContainerAcquireLeaseResponse) Version() string {
+ return calr.rawResponse.Header.Get("x-ms-version")
+}
+
+// ContainerBreakLeaseResponse ...
+type ContainerBreakLeaseResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (cblr ContainerBreakLeaseResponse) Response() *http.Response {
+ return cblr.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (cblr ContainerBreakLeaseResponse) StatusCode() int {
+ return cblr.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (cblr ContainerBreakLeaseResponse) Status() string {
+ return cblr.rawResponse.Status
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (cblr ContainerBreakLeaseResponse) ClientRequestID() string {
+ return cblr.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// Date returns the value for header Date.
+func (cblr ContainerBreakLeaseResponse) Date() time.Time {
+ s := cblr.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (cblr ContainerBreakLeaseResponse) ErrorCode() string {
+ return cblr.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// ETag returns the value for header ETag.
+func (cblr ContainerBreakLeaseResponse) ETag() ETag {
+ return ETag(cblr.rawResponse.Header.Get("ETag"))
+}
+
+// LastModified returns the value for header Last-Modified.
+func (cblr ContainerBreakLeaseResponse) LastModified() time.Time {
+ s := cblr.rawResponse.Header.Get("Last-Modified")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// LeaseTime returns the value for header x-ms-lease-time.
+func (cblr ContainerBreakLeaseResponse) LeaseTime() int32 {
+ s := cblr.rawResponse.Header.Get("x-ms-lease-time")
+ if s == "" {
+ return -1
+ }
+ i, err := strconv.ParseInt(s, 10, 32)
+ if err != nil {
+ i = 0
+ }
+ return int32(i)
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (cblr ContainerBreakLeaseResponse) RequestID() string {
+ return cblr.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (cblr ContainerBreakLeaseResponse) Version() string {
+ return cblr.rawResponse.Header.Get("x-ms-version")
+}
+
+// ContainerChangeLeaseResponse ...
+type ContainerChangeLeaseResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (cclr ContainerChangeLeaseResponse) Response() *http.Response {
+ return cclr.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (cclr ContainerChangeLeaseResponse) StatusCode() int {
+ return cclr.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (cclr ContainerChangeLeaseResponse) Status() string {
+ return cclr.rawResponse.Status
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (cclr ContainerChangeLeaseResponse) ClientRequestID() string {
+ return cclr.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// Date returns the value for header Date.
+func (cclr ContainerChangeLeaseResponse) Date() time.Time {
+ s := cclr.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (cclr ContainerChangeLeaseResponse) ErrorCode() string {
+ return cclr.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// ETag returns the value for header ETag.
+func (cclr ContainerChangeLeaseResponse) ETag() ETag {
+ return ETag(cclr.rawResponse.Header.Get("ETag"))
+}
+
+// LastModified returns the value for header Last-Modified.
+func (cclr ContainerChangeLeaseResponse) LastModified() time.Time {
+ s := cclr.rawResponse.Header.Get("Last-Modified")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// LeaseID returns the value for header x-ms-lease-id.
+func (cclr ContainerChangeLeaseResponse) LeaseID() string {
+ return cclr.rawResponse.Header.Get("x-ms-lease-id")
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (cclr ContainerChangeLeaseResponse) RequestID() string {
+ return cclr.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (cclr ContainerChangeLeaseResponse) Version() string {
+ return cclr.rawResponse.Header.Get("x-ms-version")
+}
+
+// ContainerCreateResponse ...
+type ContainerCreateResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (ccr ContainerCreateResponse) Response() *http.Response {
+ return ccr.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (ccr ContainerCreateResponse) StatusCode() int {
+ return ccr.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (ccr ContainerCreateResponse) Status() string {
+ return ccr.rawResponse.Status
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (ccr ContainerCreateResponse) ClientRequestID() string {
+ return ccr.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// Date returns the value for header Date.
+func (ccr ContainerCreateResponse) Date() time.Time {
+ s := ccr.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (ccr ContainerCreateResponse) ErrorCode() string {
+ return ccr.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// ETag returns the value for header ETag.
+func (ccr ContainerCreateResponse) ETag() ETag {
+ return ETag(ccr.rawResponse.Header.Get("ETag"))
+}
+
+// LastModified returns the value for header Last-Modified.
+func (ccr ContainerCreateResponse) LastModified() time.Time {
+ s := ccr.rawResponse.Header.Get("Last-Modified")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (ccr ContainerCreateResponse) RequestID() string {
+ return ccr.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (ccr ContainerCreateResponse) Version() string {
+ return ccr.rawResponse.Header.Get("x-ms-version")
+}
+
+// ContainerDeleteResponse ...
+type ContainerDeleteResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (cdr ContainerDeleteResponse) Response() *http.Response {
+ return cdr.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (cdr ContainerDeleteResponse) StatusCode() int {
+ return cdr.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (cdr ContainerDeleteResponse) Status() string {
+ return cdr.rawResponse.Status
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (cdr ContainerDeleteResponse) ClientRequestID() string {
+ return cdr.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// Date returns the value for header Date.
+func (cdr ContainerDeleteResponse) Date() time.Time {
+ s := cdr.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (cdr ContainerDeleteResponse) ErrorCode() string {
+ return cdr.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (cdr ContainerDeleteResponse) RequestID() string {
+ return cdr.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (cdr ContainerDeleteResponse) Version() string {
+ return cdr.rawResponse.Header.Get("x-ms-version")
+}
+
+// ContainerGetAccountInfoResponse ...
+type ContainerGetAccountInfoResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (cgair ContainerGetAccountInfoResponse) Response() *http.Response {
+ return cgair.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (cgair ContainerGetAccountInfoResponse) StatusCode() int {
+ return cgair.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (cgair ContainerGetAccountInfoResponse) Status() string {
+ return cgair.rawResponse.Status
+}
+
+// AccountKind returns the value for header x-ms-account-kind.
+func (cgair ContainerGetAccountInfoResponse) AccountKind() AccountKindType {
+ return AccountKindType(cgair.rawResponse.Header.Get("x-ms-account-kind"))
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (cgair ContainerGetAccountInfoResponse) ClientRequestID() string {
+ return cgair.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// Date returns the value for header Date.
+func (cgair ContainerGetAccountInfoResponse) Date() time.Time {
+ s := cgair.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (cgair ContainerGetAccountInfoResponse) ErrorCode() string {
+ return cgair.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (cgair ContainerGetAccountInfoResponse) RequestID() string {
+ return cgair.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// SkuName returns the value for header x-ms-sku-name.
+func (cgair ContainerGetAccountInfoResponse) SkuName() SkuNameType {
+ return SkuNameType(cgair.rawResponse.Header.Get("x-ms-sku-name"))
+}
+
+// Version returns the value for header x-ms-version.
+func (cgair ContainerGetAccountInfoResponse) Version() string {
+ return cgair.rawResponse.Header.Get("x-ms-version")
+}
+
+// ContainerGetPropertiesResponse ...
+type ContainerGetPropertiesResponse struct {
+ rawResponse *http.Response
+}
+
+// NewMetadata returns user-defined key/value pairs.
+func (cgpr ContainerGetPropertiesResponse) NewMetadata() Metadata {
+ md := Metadata{}
+ for k, v := range cgpr.rawResponse.Header {
+ if len(k) > mdPrefixLen {
+ if prefix := k[0:mdPrefixLen]; strings.EqualFold(prefix, mdPrefix) {
+ md[strings.ToLower(k[mdPrefixLen:])] = v[0]
+ }
+ }
+ }
+ return md
+}
+
+// Response returns the raw HTTP response object.
+func (cgpr ContainerGetPropertiesResponse) Response() *http.Response {
+ return cgpr.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (cgpr ContainerGetPropertiesResponse) StatusCode() int {
+ return cgpr.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (cgpr ContainerGetPropertiesResponse) Status() string {
+ return cgpr.rawResponse.Status
+}
+
+// BlobPublicAccess returns the value for header x-ms-blob-public-access.
+func (cgpr ContainerGetPropertiesResponse) BlobPublicAccess() PublicAccessType {
+ return PublicAccessType(cgpr.rawResponse.Header.Get("x-ms-blob-public-access"))
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (cgpr ContainerGetPropertiesResponse) ClientRequestID() string {
+ return cgpr.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// Date returns the value for header Date.
+func (cgpr ContainerGetPropertiesResponse) Date() time.Time {
+ s := cgpr.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (cgpr ContainerGetPropertiesResponse) ErrorCode() string {
+ return cgpr.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// ETag returns the value for header ETag.
+func (cgpr ContainerGetPropertiesResponse) ETag() ETag {
+ return ETag(cgpr.rawResponse.Header.Get("ETag"))
+}
+
+// HasImmutabilityPolicy returns the value for header x-ms-has-immutability-policy.
+func (cgpr ContainerGetPropertiesResponse) HasImmutabilityPolicy() string {
+ return cgpr.rawResponse.Header.Get("x-ms-has-immutability-policy")
+}
+
+// HasLegalHold returns the value for header x-ms-has-legal-hold.
+func (cgpr ContainerGetPropertiesResponse) HasLegalHold() string {
+ return cgpr.rawResponse.Header.Get("x-ms-has-legal-hold")
+}
+
+// LastModified returns the value for header Last-Modified.
+func (cgpr ContainerGetPropertiesResponse) LastModified() time.Time {
+ s := cgpr.rawResponse.Header.Get("Last-Modified")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// LeaseDuration returns the value for header x-ms-lease-duration.
+func (cgpr ContainerGetPropertiesResponse) LeaseDuration() LeaseDurationType {
+ return LeaseDurationType(cgpr.rawResponse.Header.Get("x-ms-lease-duration"))
+}
+
+// LeaseState returns the value for header x-ms-lease-state.
+func (cgpr ContainerGetPropertiesResponse) LeaseState() LeaseStateType {
+ return LeaseStateType(cgpr.rawResponse.Header.Get("x-ms-lease-state"))
+}
+
+// LeaseStatus returns the value for header x-ms-lease-status.
+func (cgpr ContainerGetPropertiesResponse) LeaseStatus() LeaseStatusType {
+ return LeaseStatusType(cgpr.rawResponse.Header.Get("x-ms-lease-status"))
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (cgpr ContainerGetPropertiesResponse) RequestID() string {
+ return cgpr.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (cgpr ContainerGetPropertiesResponse) Version() string {
+ return cgpr.rawResponse.Header.Get("x-ms-version")
+}
+
+// ContainerItem - An Azure Storage container
+type ContainerItem struct {
+ // XMLName is used for marshalling and is subject to removal in a future release.
+ XMLName xml.Name `xml:"Container"`
+ Name string `xml:"Name"`
+ Properties ContainerProperties `xml:"Properties"`
+ Metadata Metadata `xml:"Metadata"`
+}
+
+// ContainerProperties - Properties of a container
+type ContainerProperties struct {
+ LastModified time.Time `xml:"Last-Modified"`
+ Etag ETag `xml:"Etag"`
+ // LeaseStatus - Possible values include: 'LeaseStatusLocked', 'LeaseStatusUnlocked', 'LeaseStatusNone'
+ LeaseStatus LeaseStatusType `xml:"LeaseStatus"`
+ // LeaseState - Possible values include: 'LeaseStateAvailable', 'LeaseStateLeased', 'LeaseStateExpired', 'LeaseStateBreaking', 'LeaseStateBroken', 'LeaseStateNone'
+ LeaseState LeaseStateType `xml:"LeaseState"`
+ // LeaseDuration - Possible values include: 'LeaseDurationInfinite', 'LeaseDurationFixed', 'LeaseDurationNone'
+ LeaseDuration LeaseDurationType `xml:"LeaseDuration"`
+ // PublicAccess - Possible values include: 'PublicAccessContainer', 'PublicAccessBlob', 'PublicAccessNone'
+ PublicAccess PublicAccessType `xml:"PublicAccess"`
+ HasImmutabilityPolicy *bool `xml:"HasImmutabilityPolicy"`
+ HasLegalHold *bool `xml:"HasLegalHold"`
+}
+
+// MarshalXML implements the xml.Marshaler interface for ContainerProperties.
+func (cp ContainerProperties) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
+ cp2 := (*containerProperties)(unsafe.Pointer(&cp))
+ return e.EncodeElement(*cp2, start)
+}
+
+// UnmarshalXML implements the xml.Unmarshaler interface for ContainerProperties.
+func (cp *ContainerProperties) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
+ cp2 := (*containerProperties)(unsafe.Pointer(cp))
+ return d.DecodeElement(cp2, &start)
+}
+
+// ContainerReleaseLeaseResponse ...
+type ContainerReleaseLeaseResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (crlr ContainerReleaseLeaseResponse) Response() *http.Response {
+ return crlr.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (crlr ContainerReleaseLeaseResponse) StatusCode() int {
+ return crlr.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (crlr ContainerReleaseLeaseResponse) Status() string {
+ return crlr.rawResponse.Status
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (crlr ContainerReleaseLeaseResponse) ClientRequestID() string {
+ return crlr.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// Date returns the value for header Date.
+func (crlr ContainerReleaseLeaseResponse) Date() time.Time {
+ s := crlr.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (crlr ContainerReleaseLeaseResponse) ErrorCode() string {
+ return crlr.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// ETag returns the value for header ETag.
+func (crlr ContainerReleaseLeaseResponse) ETag() ETag {
+ return ETag(crlr.rawResponse.Header.Get("ETag"))
+}
+
+// LastModified returns the value for header Last-Modified.
+func (crlr ContainerReleaseLeaseResponse) LastModified() time.Time {
+ s := crlr.rawResponse.Header.Get("Last-Modified")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (crlr ContainerReleaseLeaseResponse) RequestID() string {
+ return crlr.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (crlr ContainerReleaseLeaseResponse) Version() string {
+ return crlr.rawResponse.Header.Get("x-ms-version")
+}
+
+// ContainerRenewLeaseResponse ...
+type ContainerRenewLeaseResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (crlr ContainerRenewLeaseResponse) Response() *http.Response {
+ return crlr.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (crlr ContainerRenewLeaseResponse) StatusCode() int {
+ return crlr.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (crlr ContainerRenewLeaseResponse) Status() string {
+ return crlr.rawResponse.Status
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (crlr ContainerRenewLeaseResponse) ClientRequestID() string {
+ return crlr.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// Date returns the value for header Date.
+func (crlr ContainerRenewLeaseResponse) Date() time.Time {
+ s := crlr.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (crlr ContainerRenewLeaseResponse) ErrorCode() string {
+ return crlr.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// ETag returns the value for header ETag.
+func (crlr ContainerRenewLeaseResponse) ETag() ETag {
+ return ETag(crlr.rawResponse.Header.Get("ETag"))
+}
+
+// LastModified returns the value for header Last-Modified.
+func (crlr ContainerRenewLeaseResponse) LastModified() time.Time {
+ s := crlr.rawResponse.Header.Get("Last-Modified")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// LeaseID returns the value for header x-ms-lease-id.
+func (crlr ContainerRenewLeaseResponse) LeaseID() string {
+ return crlr.rawResponse.Header.Get("x-ms-lease-id")
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (crlr ContainerRenewLeaseResponse) RequestID() string {
+ return crlr.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (crlr ContainerRenewLeaseResponse) Version() string {
+ return crlr.rawResponse.Header.Get("x-ms-version")
+}
+
+// ContainerSetAccessPolicyResponse ...
+type ContainerSetAccessPolicyResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (csapr ContainerSetAccessPolicyResponse) Response() *http.Response {
+ return csapr.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (csapr ContainerSetAccessPolicyResponse) StatusCode() int {
+ return csapr.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (csapr ContainerSetAccessPolicyResponse) Status() string {
+ return csapr.rawResponse.Status
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (csapr ContainerSetAccessPolicyResponse) ClientRequestID() string {
+ return csapr.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// Date returns the value for header Date.
+func (csapr ContainerSetAccessPolicyResponse) Date() time.Time {
+ s := csapr.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (csapr ContainerSetAccessPolicyResponse) ErrorCode() string {
+ return csapr.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// ETag returns the value for header ETag.
+func (csapr ContainerSetAccessPolicyResponse) ETag() ETag {
+ return ETag(csapr.rawResponse.Header.Get("ETag"))
+}
+
+// LastModified returns the value for header Last-Modified.
+func (csapr ContainerSetAccessPolicyResponse) LastModified() time.Time {
+ s := csapr.rawResponse.Header.Get("Last-Modified")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (csapr ContainerSetAccessPolicyResponse) RequestID() string {
+ return csapr.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (csapr ContainerSetAccessPolicyResponse) Version() string {
+ return csapr.rawResponse.Header.Get("x-ms-version")
+}
+
+// ContainerSetMetadataResponse ...
+type ContainerSetMetadataResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (csmr ContainerSetMetadataResponse) Response() *http.Response {
+ return csmr.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (csmr ContainerSetMetadataResponse) StatusCode() int {
+ return csmr.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (csmr ContainerSetMetadataResponse) Status() string {
+ return csmr.rawResponse.Status
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (csmr ContainerSetMetadataResponse) ClientRequestID() string {
+ return csmr.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// Date returns the value for header Date.
+func (csmr ContainerSetMetadataResponse) Date() time.Time {
+ s := csmr.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (csmr ContainerSetMetadataResponse) ErrorCode() string {
+ return csmr.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// ETag returns the value for header ETag.
+func (csmr ContainerSetMetadataResponse) ETag() ETag {
+ return ETag(csmr.rawResponse.Header.Get("ETag"))
+}
+
+// LastModified returns the value for header Last-Modified.
+func (csmr ContainerSetMetadataResponse) LastModified() time.Time {
+ s := csmr.rawResponse.Header.Get("Last-Modified")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (csmr ContainerSetMetadataResponse) RequestID() string {
+ return csmr.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (csmr ContainerSetMetadataResponse) Version() string {
+ return csmr.rawResponse.Header.Get("x-ms-version")
+}
+
+// CorsRule - CORS is an HTTP feature that enables a web application running under one domain to access
+// resources in another domain. Web browsers implement a security restriction known as same-origin policy that
+// prevents a web page from calling APIs in a different domain; CORS provides a secure way to allow one domain
+// (the origin domain) to call APIs in another domain
+type CorsRule struct {
+ // AllowedOrigins - The origin domains that are permitted to make a request against the storage service via CORS. The origin domain is the domain from which the request originates. Note that the origin must be an exact case-sensitive match with the origin that the user age sends to the service. You can also use the wildcard character '*' to allow all origin domains to make requests via CORS.
+ AllowedOrigins string `xml:"AllowedOrigins"`
+ // AllowedMethods - The methods (HTTP request verbs) that the origin domain may use for a CORS request. (comma separated)
+ AllowedMethods string `xml:"AllowedMethods"`
+ // AllowedHeaders - the request headers that the origin domain may specify on the CORS request.
+ AllowedHeaders string `xml:"AllowedHeaders"`
+ // ExposedHeaders - The response headers that may be sent in the response to the CORS request and exposed by the browser to the request issuer
+ ExposedHeaders string `xml:"ExposedHeaders"`
+ // MaxAgeInSeconds - The maximum amount time that a browser should cache the preflight OPTIONS request.
+ MaxAgeInSeconds int32 `xml:"MaxAgeInSeconds"`
+}
+
+// DataLakeStorageError ...
+type DataLakeStorageError struct {
+ // Error - The service error response object.
+ Error *DataLakeStorageErrorError `xml:"error"`
+}
+
+// DataLakeStorageErrorError - The service error response object.
+type DataLakeStorageErrorError struct {
+ // XMLName is used for marshalling and is subject to removal in a future release.
+ XMLName xml.Name `xml:"DataLakeStorageError_error"`
+ // Code - The service error code.
+ Code *string `xml:"Code"`
+ // Message - The service error message.
+ Message *string `xml:"Message"`
+}
+
+// DirectoryCreateResponse ...
+type DirectoryCreateResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (dcr DirectoryCreateResponse) Response() *http.Response {
+ return dcr.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (dcr DirectoryCreateResponse) StatusCode() int {
+ return dcr.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (dcr DirectoryCreateResponse) Status() string {
+ return dcr.rawResponse.Status
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (dcr DirectoryCreateResponse) ClientRequestID() string {
+ return dcr.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// ContentLength returns the value for header Content-Length.
+func (dcr DirectoryCreateResponse) ContentLength() int64 {
+ s := dcr.rawResponse.Header.Get("Content-Length")
+ if s == "" {
+ return -1
+ }
+ i, err := strconv.ParseInt(s, 10, 64)
+ if err != nil {
+ i = 0
+ }
+ return i
+}
+
+// Date returns the value for header Date.
+func (dcr DirectoryCreateResponse) Date() time.Time {
+ s := dcr.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// ETag returns the value for header ETag.
+func (dcr DirectoryCreateResponse) ETag() ETag {
+ return ETag(dcr.rawResponse.Header.Get("ETag"))
+}
+
+// LastModified returns the value for header Last-Modified.
+func (dcr DirectoryCreateResponse) LastModified() time.Time {
+ s := dcr.rawResponse.Header.Get("Last-Modified")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (dcr DirectoryCreateResponse) RequestID() string {
+ return dcr.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (dcr DirectoryCreateResponse) Version() string {
+ return dcr.rawResponse.Header.Get("x-ms-version")
+}
+
+// DirectoryDeleteResponse ...
+type DirectoryDeleteResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (ddr DirectoryDeleteResponse) Response() *http.Response {
+ return ddr.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (ddr DirectoryDeleteResponse) StatusCode() int {
+ return ddr.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (ddr DirectoryDeleteResponse) Status() string {
+ return ddr.rawResponse.Status
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (ddr DirectoryDeleteResponse) ClientRequestID() string {
+ return ddr.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// Date returns the value for header Date.
+func (ddr DirectoryDeleteResponse) Date() time.Time {
+ s := ddr.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// Marker returns the value for header x-ms-continuation.
+func (ddr DirectoryDeleteResponse) Marker() string {
+ return ddr.rawResponse.Header.Get("x-ms-continuation")
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (ddr DirectoryDeleteResponse) RequestID() string {
+ return ddr.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (ddr DirectoryDeleteResponse) Version() string {
+ return ddr.rawResponse.Header.Get("x-ms-version")
+}
+
+// DirectoryGetAccessControlResponse ...
+type DirectoryGetAccessControlResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (dgacr DirectoryGetAccessControlResponse) Response() *http.Response {
+ return dgacr.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (dgacr DirectoryGetAccessControlResponse) StatusCode() int {
+ return dgacr.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (dgacr DirectoryGetAccessControlResponse) Status() string {
+ return dgacr.rawResponse.Status
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (dgacr DirectoryGetAccessControlResponse) ClientRequestID() string {
+ return dgacr.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// Date returns the value for header Date.
+func (dgacr DirectoryGetAccessControlResponse) Date() time.Time {
+ s := dgacr.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// ETag returns the value for header ETag.
+func (dgacr DirectoryGetAccessControlResponse) ETag() ETag {
+ return ETag(dgacr.rawResponse.Header.Get("ETag"))
+}
+
+// LastModified returns the value for header Last-Modified.
+func (dgacr DirectoryGetAccessControlResponse) LastModified() time.Time {
+ s := dgacr.rawResponse.Header.Get("Last-Modified")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (dgacr DirectoryGetAccessControlResponse) RequestID() string {
+ return dgacr.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (dgacr DirectoryGetAccessControlResponse) Version() string {
+ return dgacr.rawResponse.Header.Get("x-ms-version")
+}
+
+// XMsACL returns the value for header x-ms-acl.
+func (dgacr DirectoryGetAccessControlResponse) XMsACL() string {
+ return dgacr.rawResponse.Header.Get("x-ms-acl")
+}
+
+// XMsGroup returns the value for header x-ms-group.
+func (dgacr DirectoryGetAccessControlResponse) XMsGroup() string {
+ return dgacr.rawResponse.Header.Get("x-ms-group")
+}
+
+// XMsOwner returns the value for header x-ms-owner.
+func (dgacr DirectoryGetAccessControlResponse) XMsOwner() string {
+ return dgacr.rawResponse.Header.Get("x-ms-owner")
+}
+
+// XMsPermissions returns the value for header x-ms-permissions.
+func (dgacr DirectoryGetAccessControlResponse) XMsPermissions() string {
+ return dgacr.rawResponse.Header.Get("x-ms-permissions")
+}
+
+// DirectoryRenameResponse ...
+type DirectoryRenameResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (drr DirectoryRenameResponse) Response() *http.Response {
+ return drr.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (drr DirectoryRenameResponse) StatusCode() int {
+ return drr.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (drr DirectoryRenameResponse) Status() string {
+ return drr.rawResponse.Status
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (drr DirectoryRenameResponse) ClientRequestID() string {
+ return drr.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// ContentLength returns the value for header Content-Length.
+func (drr DirectoryRenameResponse) ContentLength() int64 {
+ s := drr.rawResponse.Header.Get("Content-Length")
+ if s == "" {
+ return -1
+ }
+ i, err := strconv.ParseInt(s, 10, 64)
+ if err != nil {
+ i = 0
+ }
+ return i
+}
+
+// Date returns the value for header Date.
+func (drr DirectoryRenameResponse) Date() time.Time {
+ s := drr.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// ETag returns the value for header ETag.
+func (drr DirectoryRenameResponse) ETag() ETag {
+ return ETag(drr.rawResponse.Header.Get("ETag"))
+}
+
+// LastModified returns the value for header Last-Modified.
+func (drr DirectoryRenameResponse) LastModified() time.Time {
+ s := drr.rawResponse.Header.Get("Last-Modified")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// Marker returns the value for header x-ms-continuation.
+func (drr DirectoryRenameResponse) Marker() string {
+ return drr.rawResponse.Header.Get("x-ms-continuation")
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (drr DirectoryRenameResponse) RequestID() string {
+ return drr.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (drr DirectoryRenameResponse) Version() string {
+ return drr.rawResponse.Header.Get("x-ms-version")
+}
+
+// DirectorySetAccessControlResponse ...
+type DirectorySetAccessControlResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (dsacr DirectorySetAccessControlResponse) Response() *http.Response {
+ return dsacr.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (dsacr DirectorySetAccessControlResponse) StatusCode() int {
+ return dsacr.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (dsacr DirectorySetAccessControlResponse) Status() string {
+ return dsacr.rawResponse.Status
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (dsacr DirectorySetAccessControlResponse) ClientRequestID() string {
+ return dsacr.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// Date returns the value for header Date.
+func (dsacr DirectorySetAccessControlResponse) Date() time.Time {
+ s := dsacr.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// ETag returns the value for header ETag.
+func (dsacr DirectorySetAccessControlResponse) ETag() ETag {
+ return ETag(dsacr.rawResponse.Header.Get("ETag"))
+}
+
+// LastModified returns the value for header Last-Modified.
+func (dsacr DirectorySetAccessControlResponse) LastModified() time.Time {
+ s := dsacr.rawResponse.Header.Get("Last-Modified")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (dsacr DirectorySetAccessControlResponse) RequestID() string {
+ return dsacr.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (dsacr DirectorySetAccessControlResponse) Version() string {
+ return dsacr.rawResponse.Header.Get("x-ms-version")
+}
+
+// downloadResponse - Wraps the response from the blobClient.Download method.
+type downloadResponse struct {
+ rawResponse *http.Response
+}
+
+// NewMetadata returns user-defined key/value pairs.
+func (dr downloadResponse) NewMetadata() Metadata {
+ md := Metadata{}
+ for k, v := range dr.rawResponse.Header {
+ if len(k) > mdPrefixLen {
+ if prefix := k[0:mdPrefixLen]; strings.EqualFold(prefix, mdPrefix) {
+ md[strings.ToLower(k[mdPrefixLen:])] = v[0]
+ }
+ }
+ }
+ return md
+}
+
+// Response returns the raw HTTP response object.
+func (dr downloadResponse) Response() *http.Response {
+ return dr.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (dr downloadResponse) StatusCode() int {
+ return dr.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (dr downloadResponse) Status() string {
+ return dr.rawResponse.Status
+}
+
+// Body returns the raw HTTP response object's Body.
+func (dr downloadResponse) Body() io.ReadCloser {
+ return dr.rawResponse.Body
+}
+
+// AcceptRanges returns the value for header Accept-Ranges.
+func (dr downloadResponse) AcceptRanges() string {
+ return dr.rawResponse.Header.Get("Accept-Ranges")
+}
+
+// BlobCommittedBlockCount returns the value for header x-ms-blob-committed-block-count.
+func (dr downloadResponse) BlobCommittedBlockCount() int32 {
+ s := dr.rawResponse.Header.Get("x-ms-blob-committed-block-count")
+ if s == "" {
+ return -1
+ }
+ i, err := strconv.ParseInt(s, 10, 32)
+ if err != nil {
+ i = 0
+ }
+ return int32(i)
+}
+
+// BlobContentMD5 returns the value for header x-ms-blob-content-md5.
+func (dr downloadResponse) BlobContentMD5() []byte {
+ s := dr.rawResponse.Header.Get("x-ms-blob-content-md5")
+ if s == "" {
+ return nil
+ }
+ b, err := base64.StdEncoding.DecodeString(s)
+ if err != nil {
+ b = nil
+ }
+ return b
+}
+
+// BlobSequenceNumber returns the value for header x-ms-blob-sequence-number.
+func (dr downloadResponse) BlobSequenceNumber() int64 {
+ s := dr.rawResponse.Header.Get("x-ms-blob-sequence-number")
+ if s == "" {
+ return -1
+ }
+ i, err := strconv.ParseInt(s, 10, 64)
+ if err != nil {
+ i = 0
+ }
+ return i
+}
+
+// BlobType returns the value for header x-ms-blob-type.
+func (dr downloadResponse) BlobType() BlobType {
+ return BlobType(dr.rawResponse.Header.Get("x-ms-blob-type"))
+}
+
+// CacheControl returns the value for header Cache-Control.
+func (dr downloadResponse) CacheControl() string {
+ return dr.rawResponse.Header.Get("Cache-Control")
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (dr downloadResponse) ClientRequestID() string {
+ return dr.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// ContentCrc64 returns the value for header x-ms-content-crc64.
+func (dr downloadResponse) ContentCrc64() []byte {
+ s := dr.rawResponse.Header.Get("x-ms-content-crc64")
+ if s == "" {
+ return nil
+ }
+ b, err := base64.StdEncoding.DecodeString(s)
+ if err != nil {
+ b = nil
+ }
+ return b
+}
+
+// ContentDisposition returns the value for header Content-Disposition.
+func (dr downloadResponse) ContentDisposition() string {
+ return dr.rawResponse.Header.Get("Content-Disposition")
+}
+
+// ContentEncoding returns the value for header Content-Encoding.
+func (dr downloadResponse) ContentEncoding() string {
+ return dr.rawResponse.Header.Get("Content-Encoding")
+}
+
+// ContentLanguage returns the value for header Content-Language.
+func (dr downloadResponse) ContentLanguage() string {
+ return dr.rawResponse.Header.Get("Content-Language")
+}
+
+// ContentLength returns the value for header Content-Length.
+func (dr downloadResponse) ContentLength() int64 {
+ s := dr.rawResponse.Header.Get("Content-Length")
+ if s == "" {
+ return -1
+ }
+ i, err := strconv.ParseInt(s, 10, 64)
+ if err != nil {
+ i = 0
+ }
+ return i
+}
+
+// ContentMD5 returns the value for header Content-MD5.
+func (dr downloadResponse) ContentMD5() []byte {
+ s := dr.rawResponse.Header.Get("Content-MD5")
+ if s == "" {
+ return nil
+ }
+ b, err := base64.StdEncoding.DecodeString(s)
+ if err != nil {
+ b = nil
+ }
+ return b
+}
+
+// ContentRange returns the value for header Content-Range.
+func (dr downloadResponse) ContentRange() string {
+ return dr.rawResponse.Header.Get("Content-Range")
+}
+
+// ContentType returns the value for header Content-Type.
+func (dr downloadResponse) ContentType() string {
+ return dr.rawResponse.Header.Get("Content-Type")
+}
+
+// CopyCompletionTime returns the value for header x-ms-copy-completion-time.
+func (dr downloadResponse) CopyCompletionTime() time.Time {
+ s := dr.rawResponse.Header.Get("x-ms-copy-completion-time")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// CopyID returns the value for header x-ms-copy-id.
+func (dr downloadResponse) CopyID() string {
+ return dr.rawResponse.Header.Get("x-ms-copy-id")
+}
+
+// CopyProgress returns the value for header x-ms-copy-progress.
+func (dr downloadResponse) CopyProgress() string {
+ return dr.rawResponse.Header.Get("x-ms-copy-progress")
+}
+
+// CopySource returns the value for header x-ms-copy-source.
+func (dr downloadResponse) CopySource() string {
+ return dr.rawResponse.Header.Get("x-ms-copy-source")
+}
+
+// CopyStatus returns the value for header x-ms-copy-status.
+func (dr downloadResponse) CopyStatus() CopyStatusType {
+ return CopyStatusType(dr.rawResponse.Header.Get("x-ms-copy-status"))
+}
+
+// CopyStatusDescription returns the value for header x-ms-copy-status-description.
+func (dr downloadResponse) CopyStatusDescription() string {
+ return dr.rawResponse.Header.Get("x-ms-copy-status-description")
+}
+
+// Date returns the value for header Date.
+func (dr downloadResponse) Date() time.Time {
+ s := dr.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// EncryptionKeySha256 returns the value for header x-ms-encryption-key-sha256.
+func (dr downloadResponse) EncryptionKeySha256() string {
+ return dr.rawResponse.Header.Get("x-ms-encryption-key-sha256")
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (dr downloadResponse) ErrorCode() string {
+ return dr.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// ETag returns the value for header ETag.
+func (dr downloadResponse) ETag() ETag {
+ return ETag(dr.rawResponse.Header.Get("ETag"))
+}
+
+// IsServerEncrypted returns the value for header x-ms-server-encrypted.
+func (dr downloadResponse) IsServerEncrypted() string {
+ return dr.rawResponse.Header.Get("x-ms-server-encrypted")
+}
+
+// LastModified returns the value for header Last-Modified.
+func (dr downloadResponse) LastModified() time.Time {
+ s := dr.rawResponse.Header.Get("Last-Modified")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// LeaseDuration returns the value for header x-ms-lease-duration.
+func (dr downloadResponse) LeaseDuration() LeaseDurationType {
+ return LeaseDurationType(dr.rawResponse.Header.Get("x-ms-lease-duration"))
+}
+
+// LeaseState returns the value for header x-ms-lease-state.
+func (dr downloadResponse) LeaseState() LeaseStateType {
+ return LeaseStateType(dr.rawResponse.Header.Get("x-ms-lease-state"))
+}
+
+// LeaseStatus returns the value for header x-ms-lease-status.
+func (dr downloadResponse) LeaseStatus() LeaseStatusType {
+ return LeaseStatusType(dr.rawResponse.Header.Get("x-ms-lease-status"))
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (dr downloadResponse) RequestID() string {
+ return dr.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (dr downloadResponse) Version() string {
+ return dr.rawResponse.Header.Get("x-ms-version")
+}
+
+// GeoReplication - Geo-Replication information for the Secondary Storage Service
+type GeoReplication struct {
+ // Status - The status of the secondary location. Possible values include: 'GeoReplicationStatusLive', 'GeoReplicationStatusBootstrap', 'GeoReplicationStatusUnavailable', 'GeoReplicationStatusNone'
+ Status GeoReplicationStatusType `xml:"Status"`
+ // LastSyncTime - A GMT date/time value, to the second. All primary writes preceding this value are guaranteed to be available for read operations at the secondary. Primary writes after this point in time may or may not be available for reads.
+ LastSyncTime time.Time `xml:"LastSyncTime"`
+}
+
+// MarshalXML implements the xml.Marshaler interface for GeoReplication.
+func (gr GeoReplication) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
+ gr2 := (*geoReplication)(unsafe.Pointer(&gr))
+ return e.EncodeElement(*gr2, start)
+}
+
+// UnmarshalXML implements the xml.Unmarshaler interface for GeoReplication.
+func (gr *GeoReplication) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
+ gr2 := (*geoReplication)(unsafe.Pointer(gr))
+ return d.DecodeElement(gr2, &start)
+}
+
+// KeyInfo - Key information
+type KeyInfo struct {
+ // Start - The date-time the key is active in ISO 8601 UTC time
+ Start string `xml:"Start"`
+ // Expiry - The date-time the key expires in ISO 8601 UTC time
+ Expiry string `xml:"Expiry"`
+}
+
+// ListBlobsFlatSegmentResponse - An enumeration of blobs
+type ListBlobsFlatSegmentResponse struct {
+ rawResponse *http.Response
+ // XMLName is used for marshalling and is subject to removal in a future release.
+ XMLName xml.Name `xml:"EnumerationResults"`
+ ServiceEndpoint string `xml:"ServiceEndpoint,attr"`
+ ContainerName string `xml:"ContainerName,attr"`
+ Prefix *string `xml:"Prefix"`
+ Marker *string `xml:"Marker"`
+ MaxResults *int32 `xml:"MaxResults"`
+ Segment BlobFlatListSegment `xml:"Blobs"`
+ NextMarker Marker `xml:"NextMarker"`
+}
+
+// Response returns the raw HTTP response object.
+func (lbfsr ListBlobsFlatSegmentResponse) Response() *http.Response {
+ return lbfsr.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (lbfsr ListBlobsFlatSegmentResponse) StatusCode() int {
+ return lbfsr.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (lbfsr ListBlobsFlatSegmentResponse) Status() string {
+ return lbfsr.rawResponse.Status
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (lbfsr ListBlobsFlatSegmentResponse) ClientRequestID() string {
+ return lbfsr.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// ContentType returns the value for header Content-Type.
+func (lbfsr ListBlobsFlatSegmentResponse) ContentType() string {
+ return lbfsr.rawResponse.Header.Get("Content-Type")
+}
+
+// Date returns the value for header Date.
+func (lbfsr ListBlobsFlatSegmentResponse) Date() time.Time {
+ s := lbfsr.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (lbfsr ListBlobsFlatSegmentResponse) ErrorCode() string {
+ return lbfsr.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (lbfsr ListBlobsFlatSegmentResponse) RequestID() string {
+ return lbfsr.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (lbfsr ListBlobsFlatSegmentResponse) Version() string {
+ return lbfsr.rawResponse.Header.Get("x-ms-version")
+}
+
+// ListBlobsHierarchySegmentResponse - An enumeration of blobs
+type ListBlobsHierarchySegmentResponse struct {
+ rawResponse *http.Response
+ // XMLName is used for marshalling and is subject to removal in a future release.
+ XMLName xml.Name `xml:"EnumerationResults"`
+ ServiceEndpoint string `xml:"ServiceEndpoint,attr"`
+ ContainerName string `xml:"ContainerName,attr"`
+ Prefix *string `xml:"Prefix"`
+ Marker *string `xml:"Marker"`
+ MaxResults *int32 `xml:"MaxResults"`
+ Delimiter *string `xml:"Delimiter"`
+ Segment BlobHierarchyListSegment `xml:"Blobs"`
+ NextMarker Marker `xml:"NextMarker"`
+}
+
+// Response returns the raw HTTP response object.
+func (lbhsr ListBlobsHierarchySegmentResponse) Response() *http.Response {
+ return lbhsr.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (lbhsr ListBlobsHierarchySegmentResponse) StatusCode() int {
+ return lbhsr.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (lbhsr ListBlobsHierarchySegmentResponse) Status() string {
+ return lbhsr.rawResponse.Status
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (lbhsr ListBlobsHierarchySegmentResponse) ClientRequestID() string {
+ return lbhsr.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// ContentType returns the value for header Content-Type.
+func (lbhsr ListBlobsHierarchySegmentResponse) ContentType() string {
+ return lbhsr.rawResponse.Header.Get("Content-Type")
+}
+
+// Date returns the value for header Date.
+func (lbhsr ListBlobsHierarchySegmentResponse) Date() time.Time {
+ s := lbhsr.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (lbhsr ListBlobsHierarchySegmentResponse) ErrorCode() string {
+ return lbhsr.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (lbhsr ListBlobsHierarchySegmentResponse) RequestID() string {
+ return lbhsr.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (lbhsr ListBlobsHierarchySegmentResponse) Version() string {
+ return lbhsr.rawResponse.Header.Get("x-ms-version")
+}
+
+// ListContainersSegmentResponse - An enumeration of containers
+type ListContainersSegmentResponse struct {
+ rawResponse *http.Response
+ // XMLName is used for marshalling and is subject to removal in a future release.
+ XMLName xml.Name `xml:"EnumerationResults"`
+ ServiceEndpoint string `xml:"ServiceEndpoint,attr"`
+ Prefix *string `xml:"Prefix"`
+ Marker *string `xml:"Marker"`
+ MaxResults *int32 `xml:"MaxResults"`
+ ContainerItems []ContainerItem `xml:"Containers>Container"`
+ NextMarker Marker `xml:"NextMarker"`
+}
+
+// Response returns the raw HTTP response object.
+func (lcsr ListContainersSegmentResponse) Response() *http.Response {
+ return lcsr.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (lcsr ListContainersSegmentResponse) StatusCode() int {
+ return lcsr.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (lcsr ListContainersSegmentResponse) Status() string {
+ return lcsr.rawResponse.Status
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (lcsr ListContainersSegmentResponse) ClientRequestID() string {
+ return lcsr.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (lcsr ListContainersSegmentResponse) ErrorCode() string {
+ return lcsr.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (lcsr ListContainersSegmentResponse) RequestID() string {
+ return lcsr.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (lcsr ListContainersSegmentResponse) Version() string {
+ return lcsr.rawResponse.Header.Get("x-ms-version")
+}
+
+// Logging - Azure Analytics Logging settings.
+type Logging struct {
+ // Version - The version of Storage Analytics to configure.
+ Version string `xml:"Version"`
+ // Delete - Indicates whether all delete requests should be logged.
+ Delete bool `xml:"Delete"`
+ // Read - Indicates whether all read requests should be logged.
+ Read bool `xml:"Read"`
+ // Write - Indicates whether all write requests should be logged.
+ Write bool `xml:"Write"`
+ RetentionPolicy RetentionPolicy `xml:"RetentionPolicy"`
+}
+
+// Metrics - a summary of request statistics grouped by API in hour or minute aggregates for blobs
+type Metrics struct {
+ // Version - The version of Storage Analytics to configure.
+ Version *string `xml:"Version"`
+ // Enabled - Indicates whether metrics are enabled for the Blob service.
+ Enabled bool `xml:"Enabled"`
+ // IncludeAPIs - Indicates whether metrics should generate summary statistics for called API operations.
+ IncludeAPIs *bool `xml:"IncludeAPIs"`
+ RetentionPolicy *RetentionPolicy `xml:"RetentionPolicy"`
+}
+
+// PageBlobClearPagesResponse ...
+type PageBlobClearPagesResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (pbcpr PageBlobClearPagesResponse) Response() *http.Response {
+ return pbcpr.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (pbcpr PageBlobClearPagesResponse) StatusCode() int {
+ return pbcpr.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (pbcpr PageBlobClearPagesResponse) Status() string {
+ return pbcpr.rawResponse.Status
+}
+
+// BlobSequenceNumber returns the value for header x-ms-blob-sequence-number.
+func (pbcpr PageBlobClearPagesResponse) BlobSequenceNumber() int64 {
+ s := pbcpr.rawResponse.Header.Get("x-ms-blob-sequence-number")
+ if s == "" {
+ return -1
+ }
+ i, err := strconv.ParseInt(s, 10, 64)
+ if err != nil {
+ i = 0
+ }
+ return i
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (pbcpr PageBlobClearPagesResponse) ClientRequestID() string {
+ return pbcpr.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// ContentMD5 returns the value for header Content-MD5.
+func (pbcpr PageBlobClearPagesResponse) ContentMD5() []byte {
+ s := pbcpr.rawResponse.Header.Get("Content-MD5")
+ if s == "" {
+ return nil
+ }
+ b, err := base64.StdEncoding.DecodeString(s)
+ if err != nil {
+ b = nil
+ }
+ return b
+}
+
+// Date returns the value for header Date.
+func (pbcpr PageBlobClearPagesResponse) Date() time.Time {
+ s := pbcpr.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (pbcpr PageBlobClearPagesResponse) ErrorCode() string {
+ return pbcpr.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// ETag returns the value for header ETag.
+func (pbcpr PageBlobClearPagesResponse) ETag() ETag {
+ return ETag(pbcpr.rawResponse.Header.Get("ETag"))
+}
+
+// LastModified returns the value for header Last-Modified.
+func (pbcpr PageBlobClearPagesResponse) LastModified() time.Time {
+ s := pbcpr.rawResponse.Header.Get("Last-Modified")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (pbcpr PageBlobClearPagesResponse) RequestID() string {
+ return pbcpr.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (pbcpr PageBlobClearPagesResponse) Version() string {
+ return pbcpr.rawResponse.Header.Get("x-ms-version")
+}
+
+// XMsContentCrc64 returns the value for header x-ms-content-crc64.
+func (pbcpr PageBlobClearPagesResponse) XMsContentCrc64() []byte {
+ s := pbcpr.rawResponse.Header.Get("x-ms-content-crc64")
+ if s == "" {
+ return nil
+ }
+ b, err := base64.StdEncoding.DecodeString(s)
+ if err != nil {
+ b = nil
+ }
+ return b
+}
+
+// PageBlobCopyIncrementalResponse ...
+type PageBlobCopyIncrementalResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (pbcir PageBlobCopyIncrementalResponse) Response() *http.Response {
+ return pbcir.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (pbcir PageBlobCopyIncrementalResponse) StatusCode() int {
+ return pbcir.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (pbcir PageBlobCopyIncrementalResponse) Status() string {
+ return pbcir.rawResponse.Status
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (pbcir PageBlobCopyIncrementalResponse) ClientRequestID() string {
+ return pbcir.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// CopyID returns the value for header x-ms-copy-id.
+func (pbcir PageBlobCopyIncrementalResponse) CopyID() string {
+ return pbcir.rawResponse.Header.Get("x-ms-copy-id")
+}
+
+// CopyStatus returns the value for header x-ms-copy-status.
+func (pbcir PageBlobCopyIncrementalResponse) CopyStatus() CopyStatusType {
+ return CopyStatusType(pbcir.rawResponse.Header.Get("x-ms-copy-status"))
+}
+
+// Date returns the value for header Date.
+func (pbcir PageBlobCopyIncrementalResponse) Date() time.Time {
+ s := pbcir.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (pbcir PageBlobCopyIncrementalResponse) ErrorCode() string {
+ return pbcir.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// ETag returns the value for header ETag.
+func (pbcir PageBlobCopyIncrementalResponse) ETag() ETag {
+ return ETag(pbcir.rawResponse.Header.Get("ETag"))
+}
+
+// LastModified returns the value for header Last-Modified.
+func (pbcir PageBlobCopyIncrementalResponse) LastModified() time.Time {
+ s := pbcir.rawResponse.Header.Get("Last-Modified")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (pbcir PageBlobCopyIncrementalResponse) RequestID() string {
+ return pbcir.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (pbcir PageBlobCopyIncrementalResponse) Version() string {
+ return pbcir.rawResponse.Header.Get("x-ms-version")
+}
+
+// PageBlobCreateResponse ...
+type PageBlobCreateResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (pbcr PageBlobCreateResponse) Response() *http.Response {
+ return pbcr.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (pbcr PageBlobCreateResponse) StatusCode() int {
+ return pbcr.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (pbcr PageBlobCreateResponse) Status() string {
+ return pbcr.rawResponse.Status
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (pbcr PageBlobCreateResponse) ClientRequestID() string {
+ return pbcr.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// ContentMD5 returns the value for header Content-MD5.
+func (pbcr PageBlobCreateResponse) ContentMD5() []byte {
+ s := pbcr.rawResponse.Header.Get("Content-MD5")
+ if s == "" {
+ return nil
+ }
+ b, err := base64.StdEncoding.DecodeString(s)
+ if err != nil {
+ b = nil
+ }
+ return b
+}
+
+// Date returns the value for header Date.
+func (pbcr PageBlobCreateResponse) Date() time.Time {
+ s := pbcr.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// EncryptionKeySha256 returns the value for header x-ms-encryption-key-sha256.
+func (pbcr PageBlobCreateResponse) EncryptionKeySha256() string {
+ return pbcr.rawResponse.Header.Get("x-ms-encryption-key-sha256")
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (pbcr PageBlobCreateResponse) ErrorCode() string {
+ return pbcr.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// ETag returns the value for header ETag.
+func (pbcr PageBlobCreateResponse) ETag() ETag {
+ return ETag(pbcr.rawResponse.Header.Get("ETag"))
+}
+
+// IsServerEncrypted returns the value for header x-ms-request-server-encrypted.
+func (pbcr PageBlobCreateResponse) IsServerEncrypted() string {
+ return pbcr.rawResponse.Header.Get("x-ms-request-server-encrypted")
+}
+
+// LastModified returns the value for header Last-Modified.
+func (pbcr PageBlobCreateResponse) LastModified() time.Time {
+ s := pbcr.rawResponse.Header.Get("Last-Modified")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (pbcr PageBlobCreateResponse) RequestID() string {
+ return pbcr.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (pbcr PageBlobCreateResponse) Version() string {
+ return pbcr.rawResponse.Header.Get("x-ms-version")
+}
+
+// PageBlobResizeResponse ...
+type PageBlobResizeResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (pbrr PageBlobResizeResponse) Response() *http.Response {
+ return pbrr.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (pbrr PageBlobResizeResponse) StatusCode() int {
+ return pbrr.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (pbrr PageBlobResizeResponse) Status() string {
+ return pbrr.rawResponse.Status
+}
+
+// BlobSequenceNumber returns the value for header x-ms-blob-sequence-number.
+func (pbrr PageBlobResizeResponse) BlobSequenceNumber() int64 {
+ s := pbrr.rawResponse.Header.Get("x-ms-blob-sequence-number")
+ if s == "" {
+ return -1
+ }
+ i, err := strconv.ParseInt(s, 10, 64)
+ if err != nil {
+ i = 0
+ }
+ return i
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (pbrr PageBlobResizeResponse) ClientRequestID() string {
+ return pbrr.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// Date returns the value for header Date.
+func (pbrr PageBlobResizeResponse) Date() time.Time {
+ s := pbrr.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (pbrr PageBlobResizeResponse) ErrorCode() string {
+ return pbrr.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// ETag returns the value for header ETag.
+func (pbrr PageBlobResizeResponse) ETag() ETag {
+ return ETag(pbrr.rawResponse.Header.Get("ETag"))
+}
+
+// LastModified returns the value for header Last-Modified.
+func (pbrr PageBlobResizeResponse) LastModified() time.Time {
+ s := pbrr.rawResponse.Header.Get("Last-Modified")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (pbrr PageBlobResizeResponse) RequestID() string {
+ return pbrr.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (pbrr PageBlobResizeResponse) Version() string {
+ return pbrr.rawResponse.Header.Get("x-ms-version")
+}
+
+// PageBlobUpdateSequenceNumberResponse ...
+type PageBlobUpdateSequenceNumberResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (pbusnr PageBlobUpdateSequenceNumberResponse) Response() *http.Response {
+ return pbusnr.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (pbusnr PageBlobUpdateSequenceNumberResponse) StatusCode() int {
+ return pbusnr.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (pbusnr PageBlobUpdateSequenceNumberResponse) Status() string {
+ return pbusnr.rawResponse.Status
+}
+
+// BlobSequenceNumber returns the value for header x-ms-blob-sequence-number.
+func (pbusnr PageBlobUpdateSequenceNumberResponse) BlobSequenceNumber() int64 {
+ s := pbusnr.rawResponse.Header.Get("x-ms-blob-sequence-number")
+ if s == "" {
+ return -1
+ }
+ i, err := strconv.ParseInt(s, 10, 64)
+ if err != nil {
+ i = 0
+ }
+ return i
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (pbusnr PageBlobUpdateSequenceNumberResponse) ClientRequestID() string {
+ return pbusnr.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// Date returns the value for header Date.
+func (pbusnr PageBlobUpdateSequenceNumberResponse) Date() time.Time {
+ s := pbusnr.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (pbusnr PageBlobUpdateSequenceNumberResponse) ErrorCode() string {
+ return pbusnr.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// ETag returns the value for header ETag.
+func (pbusnr PageBlobUpdateSequenceNumberResponse) ETag() ETag {
+ return ETag(pbusnr.rawResponse.Header.Get("ETag"))
+}
+
+// LastModified returns the value for header Last-Modified.
+func (pbusnr PageBlobUpdateSequenceNumberResponse) LastModified() time.Time {
+ s := pbusnr.rawResponse.Header.Get("Last-Modified")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (pbusnr PageBlobUpdateSequenceNumberResponse) RequestID() string {
+ return pbusnr.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (pbusnr PageBlobUpdateSequenceNumberResponse) Version() string {
+ return pbusnr.rawResponse.Header.Get("x-ms-version")
+}
+
+// PageBlobUploadPagesFromURLResponse ...
+type PageBlobUploadPagesFromURLResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (pbupfur PageBlobUploadPagesFromURLResponse) Response() *http.Response {
+ return pbupfur.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (pbupfur PageBlobUploadPagesFromURLResponse) StatusCode() int {
+ return pbupfur.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (pbupfur PageBlobUploadPagesFromURLResponse) Status() string {
+ return pbupfur.rawResponse.Status
+}
+
+// BlobSequenceNumber returns the value for header x-ms-blob-sequence-number.
+func (pbupfur PageBlobUploadPagesFromURLResponse) BlobSequenceNumber() int64 {
+ s := pbupfur.rawResponse.Header.Get("x-ms-blob-sequence-number")
+ if s == "" {
+ return -1
+ }
+ i, err := strconv.ParseInt(s, 10, 64)
+ if err != nil {
+ i = 0
+ }
+ return i
+}
+
+// ContentMD5 returns the value for header Content-MD5.
+func (pbupfur PageBlobUploadPagesFromURLResponse) ContentMD5() []byte {
+ s := pbupfur.rawResponse.Header.Get("Content-MD5")
+ if s == "" {
+ return nil
+ }
+ b, err := base64.StdEncoding.DecodeString(s)
+ if err != nil {
+ b = nil
+ }
+ return b
+}
+
+// Date returns the value for header Date.
+func (pbupfur PageBlobUploadPagesFromURLResponse) Date() time.Time {
+ s := pbupfur.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// EncryptionKeySha256 returns the value for header x-ms-encryption-key-sha256.
+func (pbupfur PageBlobUploadPagesFromURLResponse) EncryptionKeySha256() string {
+ return pbupfur.rawResponse.Header.Get("x-ms-encryption-key-sha256")
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (pbupfur PageBlobUploadPagesFromURLResponse) ErrorCode() string {
+ return pbupfur.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// ETag returns the value for header ETag.
+func (pbupfur PageBlobUploadPagesFromURLResponse) ETag() ETag {
+ return ETag(pbupfur.rawResponse.Header.Get("ETag"))
+}
+
+// IsServerEncrypted returns the value for header x-ms-request-server-encrypted.
+func (pbupfur PageBlobUploadPagesFromURLResponse) IsServerEncrypted() string {
+ return pbupfur.rawResponse.Header.Get("x-ms-request-server-encrypted")
+}
+
+// LastModified returns the value for header Last-Modified.
+func (pbupfur PageBlobUploadPagesFromURLResponse) LastModified() time.Time {
+ s := pbupfur.rawResponse.Header.Get("Last-Modified")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (pbupfur PageBlobUploadPagesFromURLResponse) RequestID() string {
+ return pbupfur.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (pbupfur PageBlobUploadPagesFromURLResponse) Version() string {
+ return pbupfur.rawResponse.Header.Get("x-ms-version")
+}
+
+// XMsContentCrc64 returns the value for header x-ms-content-crc64.
+func (pbupfur PageBlobUploadPagesFromURLResponse) XMsContentCrc64() []byte {
+ s := pbupfur.rawResponse.Header.Get("x-ms-content-crc64")
+ if s == "" {
+ return nil
+ }
+ b, err := base64.StdEncoding.DecodeString(s)
+ if err != nil {
+ b = nil
+ }
+ return b
+}
+
+// PageBlobUploadPagesResponse ...
+type PageBlobUploadPagesResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (pbupr PageBlobUploadPagesResponse) Response() *http.Response {
+ return pbupr.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (pbupr PageBlobUploadPagesResponse) StatusCode() int {
+ return pbupr.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (pbupr PageBlobUploadPagesResponse) Status() string {
+ return pbupr.rawResponse.Status
+}
+
+// BlobSequenceNumber returns the value for header x-ms-blob-sequence-number.
+func (pbupr PageBlobUploadPagesResponse) BlobSequenceNumber() int64 {
+ s := pbupr.rawResponse.Header.Get("x-ms-blob-sequence-number")
+ if s == "" {
+ return -1
+ }
+ i, err := strconv.ParseInt(s, 10, 64)
+ if err != nil {
+ i = 0
+ }
+ return i
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (pbupr PageBlobUploadPagesResponse) ClientRequestID() string {
+ return pbupr.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// ContentMD5 returns the value for header Content-MD5.
+func (pbupr PageBlobUploadPagesResponse) ContentMD5() []byte {
+ s := pbupr.rawResponse.Header.Get("Content-MD5")
+ if s == "" {
+ return nil
+ }
+ b, err := base64.StdEncoding.DecodeString(s)
+ if err != nil {
+ b = nil
+ }
+ return b
+}
+
+// Date returns the value for header Date.
+func (pbupr PageBlobUploadPagesResponse) Date() time.Time {
+ s := pbupr.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// EncryptionKeySha256 returns the value for header x-ms-encryption-key-sha256.
+func (pbupr PageBlobUploadPagesResponse) EncryptionKeySha256() string {
+ return pbupr.rawResponse.Header.Get("x-ms-encryption-key-sha256")
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (pbupr PageBlobUploadPagesResponse) ErrorCode() string {
+ return pbupr.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// ETag returns the value for header ETag.
+func (pbupr PageBlobUploadPagesResponse) ETag() ETag {
+ return ETag(pbupr.rawResponse.Header.Get("ETag"))
+}
+
+// IsServerEncrypted returns the value for header x-ms-request-server-encrypted.
+func (pbupr PageBlobUploadPagesResponse) IsServerEncrypted() string {
+ return pbupr.rawResponse.Header.Get("x-ms-request-server-encrypted")
+}
+
+// LastModified returns the value for header Last-Modified.
+func (pbupr PageBlobUploadPagesResponse) LastModified() time.Time {
+ s := pbupr.rawResponse.Header.Get("Last-Modified")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (pbupr PageBlobUploadPagesResponse) RequestID() string {
+ return pbupr.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (pbupr PageBlobUploadPagesResponse) Version() string {
+ return pbupr.rawResponse.Header.Get("x-ms-version")
+}
+
+// XMsContentCrc64 returns the value for header x-ms-content-crc64.
+func (pbupr PageBlobUploadPagesResponse) XMsContentCrc64() []byte {
+ s := pbupr.rawResponse.Header.Get("x-ms-content-crc64")
+ if s == "" {
+ return nil
+ }
+ b, err := base64.StdEncoding.DecodeString(s)
+ if err != nil {
+ b = nil
+ }
+ return b
+}
+
+// PageList - the list of pages
+type PageList struct {
+ rawResponse *http.Response
+ PageRange []PageRange `xml:"PageRange"`
+ ClearRange []ClearRange `xml:"ClearRange"`
+}
+
+// Response returns the raw HTTP response object.
+func (pl PageList) Response() *http.Response {
+ return pl.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (pl PageList) StatusCode() int {
+ return pl.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (pl PageList) Status() string {
+ return pl.rawResponse.Status
+}
+
+// BlobContentLength returns the value for header x-ms-blob-content-length.
+func (pl PageList) BlobContentLength() int64 {
+ s := pl.rawResponse.Header.Get("x-ms-blob-content-length")
+ if s == "" {
+ return -1
+ }
+ i, err := strconv.ParseInt(s, 10, 64)
+ if err != nil {
+ i = 0
+ }
+ return i
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (pl PageList) ClientRequestID() string {
+ return pl.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// Date returns the value for header Date.
+func (pl PageList) Date() time.Time {
+ s := pl.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (pl PageList) ErrorCode() string {
+ return pl.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// ETag returns the value for header ETag.
+func (pl PageList) ETag() ETag {
+ return ETag(pl.rawResponse.Header.Get("ETag"))
+}
+
+// LastModified returns the value for header Last-Modified.
+func (pl PageList) LastModified() time.Time {
+ s := pl.rawResponse.Header.Get("Last-Modified")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (pl PageList) RequestID() string {
+ return pl.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (pl PageList) Version() string {
+ return pl.rawResponse.Header.Get("x-ms-version")
+}
+
+// PageRange ...
+type PageRange struct {
+ Start int64 `xml:"Start"`
+ End int64 `xml:"End"`
+}
+
+// RetentionPolicy - the retention policy which determines how long the associated data should persist
+type RetentionPolicy struct {
+ // Enabled - Indicates whether a retention policy is enabled for the storage service
+ Enabled bool `xml:"Enabled"`
+ // Days - Indicates the number of days that metrics or logging or soft-deleted data should be retained. All data older than this value will be deleted
+ Days *int32 `xml:"Days"`
+}
+
+// ServiceGetAccountInfoResponse ...
+type ServiceGetAccountInfoResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (sgair ServiceGetAccountInfoResponse) Response() *http.Response {
+ return sgair.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (sgair ServiceGetAccountInfoResponse) StatusCode() int {
+ return sgair.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (sgair ServiceGetAccountInfoResponse) Status() string {
+ return sgair.rawResponse.Status
+}
+
+// AccountKind returns the value for header x-ms-account-kind.
+func (sgair ServiceGetAccountInfoResponse) AccountKind() AccountKindType {
+ return AccountKindType(sgair.rawResponse.Header.Get("x-ms-account-kind"))
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (sgair ServiceGetAccountInfoResponse) ClientRequestID() string {
+ return sgair.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// Date returns the value for header Date.
+func (sgair ServiceGetAccountInfoResponse) Date() time.Time {
+ s := sgair.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (sgair ServiceGetAccountInfoResponse) ErrorCode() string {
+ return sgair.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (sgair ServiceGetAccountInfoResponse) RequestID() string {
+ return sgair.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// SkuName returns the value for header x-ms-sku-name.
+func (sgair ServiceGetAccountInfoResponse) SkuName() SkuNameType {
+ return SkuNameType(sgair.rawResponse.Header.Get("x-ms-sku-name"))
+}
+
+// Version returns the value for header x-ms-version.
+func (sgair ServiceGetAccountInfoResponse) Version() string {
+ return sgair.rawResponse.Header.Get("x-ms-version")
+}
+
+// ServiceSetPropertiesResponse ...
+type ServiceSetPropertiesResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (sspr ServiceSetPropertiesResponse) Response() *http.Response {
+ return sspr.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (sspr ServiceSetPropertiesResponse) StatusCode() int {
+ return sspr.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (sspr ServiceSetPropertiesResponse) Status() string {
+ return sspr.rawResponse.Status
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (sspr ServiceSetPropertiesResponse) ClientRequestID() string {
+ return sspr.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (sspr ServiceSetPropertiesResponse) ErrorCode() string {
+ return sspr.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (sspr ServiceSetPropertiesResponse) RequestID() string {
+ return sspr.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (sspr ServiceSetPropertiesResponse) Version() string {
+ return sspr.rawResponse.Header.Get("x-ms-version")
+}
+
+// SignedIdentifier - signed identifier
+type SignedIdentifier struct {
+ // ID - a unique id
+ ID string `xml:"Id"`
+ AccessPolicy AccessPolicy `xml:"AccessPolicy"`
+}
+
+// SignedIdentifiers - Wraps the response from the containerClient.GetAccessPolicy method.
+type SignedIdentifiers struct {
+ rawResponse *http.Response
+ Items []SignedIdentifier `xml:"SignedIdentifier"`
+}
+
+// Response returns the raw HTTP response object.
+func (si SignedIdentifiers) Response() *http.Response {
+ return si.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (si SignedIdentifiers) StatusCode() int {
+ return si.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (si SignedIdentifiers) Status() string {
+ return si.rawResponse.Status
+}
+
+// BlobPublicAccess returns the value for header x-ms-blob-public-access.
+func (si SignedIdentifiers) BlobPublicAccess() PublicAccessType {
+ return PublicAccessType(si.rawResponse.Header.Get("x-ms-blob-public-access"))
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (si SignedIdentifiers) ClientRequestID() string {
+ return si.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// Date returns the value for header Date.
+func (si SignedIdentifiers) Date() time.Time {
+ s := si.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (si SignedIdentifiers) ErrorCode() string {
+ return si.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// ETag returns the value for header ETag.
+func (si SignedIdentifiers) ETag() ETag {
+ return ETag(si.rawResponse.Header.Get("ETag"))
+}
+
+// LastModified returns the value for header Last-Modified.
+func (si SignedIdentifiers) LastModified() time.Time {
+ s := si.rawResponse.Header.Get("Last-Modified")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (si SignedIdentifiers) RequestID() string {
+ return si.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (si SignedIdentifiers) Version() string {
+ return si.rawResponse.Header.Get("x-ms-version")
+}
+
+// StaticWebsite - The properties that enable an account to host a static website
+type StaticWebsite struct {
+ // Enabled - Indicates whether this account is hosting a static website
+ Enabled bool `xml:"Enabled"`
+ // IndexDocument - The default name of the index page under each directory
+ IndexDocument *string `xml:"IndexDocument"`
+ // ErrorDocument404Path - The absolute path of the custom 404 page
+ ErrorDocument404Path *string `xml:"ErrorDocument404Path"`
+}
+
+// StorageServiceProperties - Storage Service Properties.
+type StorageServiceProperties struct {
+ rawResponse *http.Response
+ Logging *Logging `xml:"Logging"`
+ HourMetrics *Metrics `xml:"HourMetrics"`
+ MinuteMetrics *Metrics `xml:"MinuteMetrics"`
+ // Cors - The set of CORS rules.
+ Cors []CorsRule `xml:"Cors>CorsRule"`
+ // DefaultServiceVersion - The default version to use for requests to the Blob service if an incoming request's version is not specified. Possible values include version 2008-10-27 and all more recent versions
+ DefaultServiceVersion *string `xml:"DefaultServiceVersion"`
+ DeleteRetentionPolicy *RetentionPolicy `xml:"DeleteRetentionPolicy"`
+ StaticWebsite *StaticWebsite `xml:"StaticWebsite"`
+}
+
+// Response returns the raw HTTP response object.
+func (ssp StorageServiceProperties) Response() *http.Response {
+ return ssp.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (ssp StorageServiceProperties) StatusCode() int {
+ return ssp.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (ssp StorageServiceProperties) Status() string {
+ return ssp.rawResponse.Status
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (ssp StorageServiceProperties) ClientRequestID() string {
+ return ssp.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (ssp StorageServiceProperties) ErrorCode() string {
+ return ssp.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (ssp StorageServiceProperties) RequestID() string {
+ return ssp.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (ssp StorageServiceProperties) Version() string {
+ return ssp.rawResponse.Header.Get("x-ms-version")
+}
+
+// StorageServiceStats - Stats for the storage service.
+type StorageServiceStats struct {
+ rawResponse *http.Response
+ GeoReplication *GeoReplication `xml:"GeoReplication"`
+}
+
+// Response returns the raw HTTP response object.
+func (sss StorageServiceStats) Response() *http.Response {
+ return sss.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (sss StorageServiceStats) StatusCode() int {
+ return sss.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (sss StorageServiceStats) Status() string {
+ return sss.rawResponse.Status
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (sss StorageServiceStats) ClientRequestID() string {
+ return sss.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// Date returns the value for header Date.
+func (sss StorageServiceStats) Date() time.Time {
+ s := sss.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (sss StorageServiceStats) ErrorCode() string {
+ return sss.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (sss StorageServiceStats) RequestID() string {
+ return sss.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (sss StorageServiceStats) Version() string {
+ return sss.rawResponse.Header.Get("x-ms-version")
+}
+
+// SubmitBatchResponse - Wraps the response from the serviceClient.SubmitBatch method.
+type SubmitBatchResponse struct {
+ rawResponse *http.Response
+}
+
+// Response returns the raw HTTP response object.
+func (sbr SubmitBatchResponse) Response() *http.Response {
+ return sbr.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (sbr SubmitBatchResponse) StatusCode() int {
+ return sbr.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (sbr SubmitBatchResponse) Status() string {
+ return sbr.rawResponse.Status
+}
+
+// Body returns the raw HTTP response object's Body.
+func (sbr SubmitBatchResponse) Body() io.ReadCloser {
+ return sbr.rawResponse.Body
+}
+
+// ContentType returns the value for header Content-Type.
+func (sbr SubmitBatchResponse) ContentType() string {
+ return sbr.rawResponse.Header.Get("Content-Type")
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (sbr SubmitBatchResponse) ErrorCode() string {
+ return sbr.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (sbr SubmitBatchResponse) RequestID() string {
+ return sbr.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (sbr SubmitBatchResponse) Version() string {
+ return sbr.rawResponse.Header.Get("x-ms-version")
+}
+
+// UserDelegationKey - A user delegation key
+type UserDelegationKey struct {
+ rawResponse *http.Response
+ // SignedOid - The Azure Active Directory object ID in GUID format.
+ SignedOid string `xml:"SignedOid"`
+ // SignedTid - The Azure Active Directory tenant ID in GUID format
+ SignedTid string `xml:"SignedTid"`
+ // SignedStart - The date-time the key is active
+ SignedStart time.Time `xml:"SignedStart"`
+ // SignedExpiry - The date-time the key expires
+ SignedExpiry time.Time `xml:"SignedExpiry"`
+ // SignedService - Abbreviation of the Azure Storage service that accepts the key
+ SignedService string `xml:"SignedService"`
+ // SignedVersion - The service version that created the key
+ SignedVersion string `xml:"SignedVersion"`
+ // Value - The key as a base64 string
+ Value string `xml:"Value"`
+}
+
+// MarshalXML implements the xml.Marshaler interface for UserDelegationKey.
+func (udk UserDelegationKey) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
+ udk2 := (*userDelegationKey)(unsafe.Pointer(&udk))
+ return e.EncodeElement(*udk2, start)
+}
+
+// UnmarshalXML implements the xml.Unmarshaler interface for UserDelegationKey.
+func (udk *UserDelegationKey) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
+ udk2 := (*userDelegationKey)(unsafe.Pointer(udk))
+ return d.DecodeElement(udk2, &start)
+}
+
+// Response returns the raw HTTP response object.
+func (udk UserDelegationKey) Response() *http.Response {
+ return udk.rawResponse
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (udk UserDelegationKey) StatusCode() int {
+ return udk.rawResponse.StatusCode
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (udk UserDelegationKey) Status() string {
+ return udk.rawResponse.Status
+}
+
+// ClientRequestID returns the value for header x-ms-client-request-id.
+func (udk UserDelegationKey) ClientRequestID() string {
+ return udk.rawResponse.Header.Get("x-ms-client-request-id")
+}
+
+// Date returns the value for header Date.
+func (udk UserDelegationKey) Date() time.Time {
+ s := udk.rawResponse.Header.Get("Date")
+ if s == "" {
+ return time.Time{}
+ }
+ t, err := time.Parse(time.RFC1123, s)
+ if err != nil {
+ t = time.Time{}
+ }
+ return t
+}
+
+// ErrorCode returns the value for header x-ms-error-code.
+func (udk UserDelegationKey) ErrorCode() string {
+ return udk.rawResponse.Header.Get("x-ms-error-code")
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (udk UserDelegationKey) RequestID() string {
+ return udk.rawResponse.Header.Get("x-ms-request-id")
+}
+
+// Version returns the value for header x-ms-version.
+func (udk UserDelegationKey) Version() string {
+ return udk.rawResponse.Header.Get("x-ms-version")
+}
+
+func init() {
+ if reflect.TypeOf((*UserDelegationKey)(nil)).Elem().Size() != reflect.TypeOf((*userDelegationKey)(nil)).Elem().Size() {
+ validateError(errors.New("size mismatch between UserDelegationKey and userDelegationKey"))
+ }
+ if reflect.TypeOf((*AccessPolicy)(nil)).Elem().Size() != reflect.TypeOf((*accessPolicy)(nil)).Elem().Size() {
+ validateError(errors.New("size mismatch between AccessPolicy and accessPolicy"))
+ }
+ if reflect.TypeOf((*BlobProperties)(nil)).Elem().Size() != reflect.TypeOf((*blobProperties)(nil)).Elem().Size() {
+ validateError(errors.New("size mismatch between BlobProperties and blobProperties"))
+ }
+ if reflect.TypeOf((*ContainerProperties)(nil)).Elem().Size() != reflect.TypeOf((*containerProperties)(nil)).Elem().Size() {
+ validateError(errors.New("size mismatch between ContainerProperties and containerProperties"))
+ }
+ if reflect.TypeOf((*GeoReplication)(nil)).Elem().Size() != reflect.TypeOf((*geoReplication)(nil)).Elem().Size() {
+ validateError(errors.New("size mismatch between GeoReplication and geoReplication"))
+ }
+}
+
+const (
+ rfc3339Format = "2006-01-02T15:04:05Z" //This was wrong in the generated code, FYI
+)
+
+// used to convert times from UTC to GMT before sending across the wire
+var gmt = time.FixedZone("GMT", 0)
+
+// internal type used for marshalling time in RFC1123 format
+type timeRFC1123 struct {
+ time.Time
+}
+
+// MarshalText implements the encoding.TextMarshaler interface for timeRFC1123.
+func (t timeRFC1123) MarshalText() ([]byte, error) {
+ return []byte(t.Format(time.RFC1123)), nil
+}
+
+// UnmarshalText implements the encoding.TextUnmarshaler interface for timeRFC1123.
+func (t *timeRFC1123) UnmarshalText(data []byte) (err error) {
+ t.Time, err = time.Parse(time.RFC1123, string(data))
+ return
+}
+
+// internal type used for marshalling time in RFC3339 format
+type timeRFC3339 struct {
+ time.Time
+}
+
+// MarshalText implements the encoding.TextMarshaler interface for timeRFC3339.
+func (t timeRFC3339) MarshalText() ([]byte, error) {
+ return []byte(t.Format(rfc3339Format)), nil
+}
+
+// UnmarshalText implements the encoding.TextUnmarshaler interface for timeRFC3339.
+func (t *timeRFC3339) UnmarshalText(data []byte) (err error) {
+ t.Time, err = time.Parse(rfc3339Format, string(data))
+ return
+}
+
+// internal type used for marshalling base64 encoded strings
+type base64Encoded struct {
+ b []byte
+}
+
+// MarshalText implements the encoding.TextMarshaler interface for base64Encoded.
+func (c base64Encoded) MarshalText() ([]byte, error) {
+ return []byte(base64.StdEncoding.EncodeToString(c.b)), nil
+}
+
+// UnmarshalText implements the encoding.TextUnmarshaler interface for base64Encoded.
+func (c *base64Encoded) UnmarshalText(data []byte) error {
+ b, err := base64.StdEncoding.DecodeString(string(data))
+ if err != nil {
+ return err
+ }
+ c.b = b
+ return nil
+}
+
+// internal type used for marshalling
+type userDelegationKey struct {
+ rawResponse *http.Response
+ SignedOid string `xml:"SignedOid"`
+ SignedTid string `xml:"SignedTid"`
+ SignedStart timeRFC3339 `xml:"SignedStart"`
+ SignedExpiry timeRFC3339 `xml:"SignedExpiry"`
+ SignedService string `xml:"SignedService"`
+ SignedVersion string `xml:"SignedVersion"`
+ Value string `xml:"Value"`
+}
+
+// internal type used for marshalling
+type accessPolicy struct {
+ Start timeRFC3339 `xml:"Start"`
+ Expiry timeRFC3339 `xml:"Expiry"`
+ Permission string `xml:"Permission"`
+}
+
+// internal type used for marshalling
+type blobProperties struct {
+ // XMLName is used for marshalling and is subject to removal in a future release.
+ XMLName xml.Name `xml:"Properties"`
+ CreationTime *timeRFC1123 `xml:"Creation-Time"`
+ LastModified timeRFC1123 `xml:"Last-Modified"`
+ Etag ETag `xml:"Etag"`
+ ContentLength *int64 `xml:"Content-Length"`
+ ContentType *string `xml:"Content-Type"`
+ ContentEncoding *string `xml:"Content-Encoding"`
+ ContentLanguage *string `xml:"Content-Language"`
+ ContentMD5 base64Encoded `xml:"Content-MD5"`
+ ContentDisposition *string `xml:"Content-Disposition"`
+ CacheControl *string `xml:"Cache-Control"`
+ BlobSequenceNumber *int64 `xml:"x-ms-blob-sequence-number"`
+ BlobType BlobType `xml:"BlobType"`
+ LeaseStatus LeaseStatusType `xml:"LeaseStatus"`
+ LeaseState LeaseStateType `xml:"LeaseState"`
+ LeaseDuration LeaseDurationType `xml:"LeaseDuration"`
+ CopyID *string `xml:"CopyId"`
+ CopyStatus CopyStatusType `xml:"CopyStatus"`
+ CopySource *string `xml:"CopySource"`
+ CopyProgress *string `xml:"CopyProgress"`
+ CopyCompletionTime *timeRFC1123 `xml:"CopyCompletionTime"`
+ CopyStatusDescription *string `xml:"CopyStatusDescription"`
+ ServerEncrypted *bool `xml:"ServerEncrypted"`
+ IncrementalCopy *bool `xml:"IncrementalCopy"`
+ DestinationSnapshot *string `xml:"DestinationSnapshot"`
+ DeletedTime *timeRFC1123 `xml:"DeletedTime"`
+ RemainingRetentionDays *int32 `xml:"RemainingRetentionDays"`
+ AccessTier AccessTierType `xml:"AccessTier"`
+ AccessTierInferred *bool `xml:"AccessTierInferred"`
+ ArchiveStatus ArchiveStatusType `xml:"ArchiveStatus"`
+ CustomerProvidedKeySha256 *string `xml:"CustomerProvidedKeySha256"`
+ AccessTierChangeTime *timeRFC1123 `xml:"AccessTierChangeTime"`
+}
+
+// internal type used for marshalling
+type containerProperties struct {
+ LastModified timeRFC1123 `xml:"Last-Modified"`
+ Etag ETag `xml:"Etag"`
+ LeaseStatus LeaseStatusType `xml:"LeaseStatus"`
+ LeaseState LeaseStateType `xml:"LeaseState"`
+ LeaseDuration LeaseDurationType `xml:"LeaseDuration"`
+ PublicAccess PublicAccessType `xml:"PublicAccess"`
+ HasImmutabilityPolicy *bool `xml:"HasImmutabilityPolicy"`
+ HasLegalHold *bool `xml:"HasLegalHold"`
+}
+
+// internal type used for marshalling
+type geoReplication struct {
+ Status GeoReplicationStatusType `xml:"Status"`
+ LastSyncTime timeRFC1123 `xml:"LastSyncTime"`
+}
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_page_blob.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_page_blob.go
new file mode 100644
index 00000000..b40873f3
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_page_blob.go
@@ -0,0 +1,977 @@
+package azblob
+
+// Code generated by Microsoft (R) AutoRest Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+ "context"
+ "encoding/base64"
+ "encoding/xml"
+ "github.com/Azure/azure-pipeline-go/pipeline"
+ "io"
+ "io/ioutil"
+ "net/http"
+ "net/url"
+ "strconv"
+ "time"
+)
+
+// pageBlobClient is the client for the PageBlob methods of the Azblob service.
+type pageBlobClient struct {
+ managementClient
+}
+
+// newPageBlobClient creates an instance of the pageBlobClient client.
+func newPageBlobClient(url url.URL, p pipeline.Pipeline) pageBlobClient {
+ return pageBlobClient{newManagementClient(url, p)}
+}
+
+// ClearPages the Clear Pages operation clears a set of pages from a page blob
+//
+// contentLength is the length of the request. timeout is the timeout parameter is expressed in seconds. For more
+// information, see Setting
+// Timeouts for Blob Service Operations. rangeParameter is return only the bytes of the blob in the specified
+// range. leaseID is if specified, the operation only succeeds if the resource's lease is active and matches this ID.
+// encryptionKey is optional. Specifies the encryption key to use to encrypt the data provided in the request. If not
+// specified, encryption is performed with the root account encryption key. For more information, see Encryption at
+// Rest for Azure Storage Services. encryptionKeySha256 is the SHA-256 hash of the provided encryption key. Must be
+// provided if the x-ms-encryption-key header is provided. encryptionAlgorithm is the algorithm used to produce the
+// encryption key hash. Currently, the only accepted value is "AES256". Must be provided if the x-ms-encryption-key
+// header is provided. ifSequenceNumberLessThanOrEqualTo is specify this header value to operate only on a blob if it
+// has a sequence number less than or equal to the specified. ifSequenceNumberLessThan is specify this header value to
+// operate only on a blob if it has a sequence number less than the specified. ifSequenceNumberEqualTo is specify this
+// header value to operate only on a blob if it has the specified sequence number. ifModifiedSince is specify this
+// header value to operate only on a blob if it has been modified since the specified date/time. ifUnmodifiedSince is
+// specify this header value to operate only on a blob if it has not been modified since the specified date/time.
+// ifMatch is specify an ETag value to operate only on blobs with a matching value. ifNoneMatch is specify an ETag
+// value to operate only on blobs without a matching value. requestID is provides a client-generated, opaque value with
+// a 1 KB character limit that is recorded in the analytics logs when storage analytics logging is enabled.
+func (client pageBlobClient) ClearPages(ctx context.Context, contentLength int64, timeout *int32, rangeParameter *string, leaseID *string, encryptionKey *string, encryptionKeySha256 *string, encryptionAlgorithm EncryptionAlgorithmType, ifSequenceNumberLessThanOrEqualTo *int64, ifSequenceNumberLessThan *int64, ifSequenceNumberEqualTo *int64, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (*PageBlobClearPagesResponse, error) {
+ if err := validate([]validation{
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.clearPagesPreparer(contentLength, timeout, rangeParameter, leaseID, encryptionKey, encryptionKeySha256, encryptionAlgorithm, ifSequenceNumberLessThanOrEqualTo, ifSequenceNumberLessThan, ifSequenceNumberEqualTo, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.clearPagesResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*PageBlobClearPagesResponse), err
+}
+
+// clearPagesPreparer prepares the ClearPages request.
+func (client pageBlobClient) clearPagesPreparer(contentLength int64, timeout *int32, rangeParameter *string, leaseID *string, encryptionKey *string, encryptionKeySha256 *string, encryptionAlgorithm EncryptionAlgorithmType, ifSequenceNumberLessThanOrEqualTo *int64, ifSequenceNumberLessThan *int64, ifSequenceNumberEqualTo *int64, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("PUT", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ params.Set("comp", "page")
+ req.URL.RawQuery = params.Encode()
+ req.Header.Set("Content-Length", strconv.FormatInt(contentLength, 10))
+ if rangeParameter != nil {
+ req.Header.Set("x-ms-range", *rangeParameter)
+ }
+ if leaseID != nil {
+ req.Header.Set("x-ms-lease-id", *leaseID)
+ }
+ if encryptionKey != nil {
+ req.Header.Set("x-ms-encryption-key", *encryptionKey)
+ }
+ if encryptionKeySha256 != nil {
+ req.Header.Set("x-ms-encryption-key-sha256", *encryptionKeySha256)
+ }
+ if encryptionAlgorithm != EncryptionAlgorithmNone {
+ req.Header.Set("x-ms-encryption-algorithm", string(encryptionAlgorithm))
+ }
+ if ifSequenceNumberLessThanOrEqualTo != nil {
+ req.Header.Set("x-ms-if-sequence-number-le", strconv.FormatInt(*ifSequenceNumberLessThanOrEqualTo, 10))
+ }
+ if ifSequenceNumberLessThan != nil {
+ req.Header.Set("x-ms-if-sequence-number-lt", strconv.FormatInt(*ifSequenceNumberLessThan, 10))
+ }
+ if ifSequenceNumberEqualTo != nil {
+ req.Header.Set("x-ms-if-sequence-number-eq", strconv.FormatInt(*ifSequenceNumberEqualTo, 10))
+ }
+ if ifModifiedSince != nil {
+ req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifUnmodifiedSince != nil {
+ req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifMatch != nil {
+ req.Header.Set("If-Match", string(*ifMatch))
+ }
+ if ifNoneMatch != nil {
+ req.Header.Set("If-None-Match", string(*ifNoneMatch))
+ }
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ req.Header.Set("x-ms-page-write", "clear")
+ return req, nil
+}
+
+// clearPagesResponder handles the response to the ClearPages request.
+func (client pageBlobClient) clearPagesResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK, http.StatusCreated)
+ if resp == nil {
+ return nil, err
+ }
+ io.Copy(ioutil.Discard, resp.Response().Body)
+ resp.Response().Body.Close()
+ return &PageBlobClearPagesResponse{rawResponse: resp.Response()}, err
+}
+
+// CopyIncremental the Copy Incremental operation copies a snapshot of the source page blob to a destination page blob.
+// The snapshot is copied such that only the differential changes between the previously copied snapshot are
+// transferred to the destination. The copied snapshots are complete copies of the original snapshot and can be read or
+// copied from as usual. This API is supported since REST version 2016-05-31.
+//
+// copySource is specifies the name of the source page blob snapshot. This value is a URL of up to 2 KB in length that
+// specifies a page blob snapshot. The value should be URL-encoded as it would appear in a request URI. The source blob
+// must either be public or must be authenticated via a shared access signature. timeout is the timeout parameter is
+// expressed in seconds. For more information, see Setting
+// Timeouts for Blob Service Operations. ifModifiedSince is specify this header value to operate only on a blob if
+// it has been modified since the specified date/time. ifUnmodifiedSince is specify this header value to operate only
+// on a blob if it has not been modified since the specified date/time. ifMatch is specify an ETag value to operate
+// only on blobs with a matching value. ifNoneMatch is specify an ETag value to operate only on blobs without a
+// matching value. requestID is provides a client-generated, opaque value with a 1 KB character limit that is recorded
+// in the analytics logs when storage analytics logging is enabled.
+func (client pageBlobClient) CopyIncremental(ctx context.Context, copySource string, timeout *int32, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (*PageBlobCopyIncrementalResponse, error) {
+ if err := validate([]validation{
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.copyIncrementalPreparer(copySource, timeout, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.copyIncrementalResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*PageBlobCopyIncrementalResponse), err
+}
+
+// copyIncrementalPreparer prepares the CopyIncremental request.
+func (client pageBlobClient) copyIncrementalPreparer(copySource string, timeout *int32, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("PUT", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ params.Set("comp", "incrementalcopy")
+ req.URL.RawQuery = params.Encode()
+ if ifModifiedSince != nil {
+ req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifUnmodifiedSince != nil {
+ req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifMatch != nil {
+ req.Header.Set("If-Match", string(*ifMatch))
+ }
+ if ifNoneMatch != nil {
+ req.Header.Set("If-None-Match", string(*ifNoneMatch))
+ }
+ req.Header.Set("x-ms-copy-source", copySource)
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ return req, nil
+}
+
+// copyIncrementalResponder handles the response to the CopyIncremental request.
+func (client pageBlobClient) copyIncrementalResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK, http.StatusAccepted)
+ if resp == nil {
+ return nil, err
+ }
+ io.Copy(ioutil.Discard, resp.Response().Body)
+ resp.Response().Body.Close()
+ return &PageBlobCopyIncrementalResponse{rawResponse: resp.Response()}, err
+}
+
+// Create the Create operation creates a new page blob.
+//
+// contentLength is the length of the request. blobContentLength is this header specifies the maximum size for the page
+// blob, up to 1 TB. The page blob size must be aligned to a 512-byte boundary. timeout is the timeout parameter is
+// expressed in seconds. For more information, see Setting
+// Timeouts for Blob Service Operations. tier is optional. Indicates the tier to be set on the page blob.
+// blobContentType is optional. Sets the blob's content type. If specified, this property is stored with the blob and
+// returned with a read request. blobContentEncoding is optional. Sets the blob's content encoding. If specified, this
+// property is stored with the blob and returned with a read request. blobContentLanguage is optional. Set the blob's
+// content language. If specified, this property is stored with the blob and returned with a read request.
+// blobContentMD5 is optional. An MD5 hash of the blob content. Note that this hash is not validated, as the hashes for
+// the individual blocks were validated when each was uploaded. blobCacheControl is optional. Sets the blob's cache
+// control. If specified, this property is stored with the blob and returned with a read request. metadata is optional.
+// Specifies a user-defined name-value pair associated with the blob. If no name-value pairs are specified, the
+// operation will copy the metadata from the source blob or file to the destination blob. If one or more name-value
+// pairs are specified, the destination blob is created with the specified metadata, and metadata is not copied from
+// the source blob or file. Note that beginning with version 2009-09-19, metadata names must adhere to the naming rules
+// for C# identifiers. See Naming and Referencing Containers, Blobs, and Metadata for more information. leaseID is if
+// specified, the operation only succeeds if the resource's lease is active and matches this ID. blobContentDisposition
+// is optional. Sets the blob's Content-Disposition header. encryptionKey is optional. Specifies the encryption key to
+// use to encrypt the data provided in the request. If not specified, encryption is performed with the root account
+// encryption key. For more information, see Encryption at Rest for Azure Storage Services. encryptionKeySha256 is the
+// SHA-256 hash of the provided encryption key. Must be provided if the x-ms-encryption-key header is provided.
+// encryptionAlgorithm is the algorithm used to produce the encryption key hash. Currently, the only accepted value is
+// "AES256". Must be provided if the x-ms-encryption-key header is provided. ifModifiedSince is specify this header
+// value to operate only on a blob if it has been modified since the specified date/time. ifUnmodifiedSince is specify
+// this header value to operate only on a blob if it has not been modified since the specified date/time. ifMatch is
+// specify an ETag value to operate only on blobs with a matching value. ifNoneMatch is specify an ETag value to
+// operate only on blobs without a matching value. blobSequenceNumber is set for page blobs only. The sequence number
+// is a user-controlled value that you can use to track requests. The value of the sequence number must be between 0
+// and 2^63 - 1. requestID is provides a client-generated, opaque value with a 1 KB character limit that is recorded in
+// the analytics logs when storage analytics logging is enabled.
+func (client pageBlobClient) Create(ctx context.Context, contentLength int64, blobContentLength int64, timeout *int32, tier PremiumPageBlobAccessTierType, blobContentType *string, blobContentEncoding *string, blobContentLanguage *string, blobContentMD5 []byte, blobCacheControl *string, metadata map[string]string, leaseID *string, blobContentDisposition *string, encryptionKey *string, encryptionKeySha256 *string, encryptionAlgorithm EncryptionAlgorithmType, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, blobSequenceNumber *int64, requestID *string) (*PageBlobCreateResponse, error) {
+ if err := validate([]validation{
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.createPreparer(contentLength, blobContentLength, timeout, tier, blobContentType, blobContentEncoding, blobContentLanguage, blobContentMD5, blobCacheControl, metadata, leaseID, blobContentDisposition, encryptionKey, encryptionKeySha256, encryptionAlgorithm, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, blobSequenceNumber, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.createResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*PageBlobCreateResponse), err
+}
+
+// createPreparer prepares the Create request.
+func (client pageBlobClient) createPreparer(contentLength int64, blobContentLength int64, timeout *int32, tier PremiumPageBlobAccessTierType, blobContentType *string, blobContentEncoding *string, blobContentLanguage *string, blobContentMD5 []byte, blobCacheControl *string, metadata map[string]string, leaseID *string, blobContentDisposition *string, encryptionKey *string, encryptionKeySha256 *string, encryptionAlgorithm EncryptionAlgorithmType, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, blobSequenceNumber *int64, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("PUT", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ req.URL.RawQuery = params.Encode()
+ req.Header.Set("Content-Length", strconv.FormatInt(contentLength, 10))
+ if tier != PremiumPageBlobAccessTierNone {
+ req.Header.Set("x-ms-access-tier", string(tier))
+ }
+ if blobContentType != nil {
+ req.Header.Set("x-ms-blob-content-type", *blobContentType)
+ }
+ if blobContentEncoding != nil {
+ req.Header.Set("x-ms-blob-content-encoding", *blobContentEncoding)
+ }
+ if blobContentLanguage != nil {
+ req.Header.Set("x-ms-blob-content-language", *blobContentLanguage)
+ }
+ if blobContentMD5 != nil {
+ req.Header.Set("x-ms-blob-content-md5", base64.StdEncoding.EncodeToString(blobContentMD5))
+ }
+ if blobCacheControl != nil {
+ req.Header.Set("x-ms-blob-cache-control", *blobCacheControl)
+ }
+ if metadata != nil {
+ for k, v := range metadata {
+ req.Header.Set("x-ms-meta-"+k, v)
+ }
+ }
+ if leaseID != nil {
+ req.Header.Set("x-ms-lease-id", *leaseID)
+ }
+ if blobContentDisposition != nil {
+ req.Header.Set("x-ms-blob-content-disposition", *blobContentDisposition)
+ }
+ if encryptionKey != nil {
+ req.Header.Set("x-ms-encryption-key", *encryptionKey)
+ }
+ if encryptionKeySha256 != nil {
+ req.Header.Set("x-ms-encryption-key-sha256", *encryptionKeySha256)
+ }
+ if encryptionAlgorithm != EncryptionAlgorithmNone {
+ req.Header.Set("x-ms-encryption-algorithm", string(encryptionAlgorithm))
+ }
+ if ifModifiedSince != nil {
+ req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifUnmodifiedSince != nil {
+ req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifMatch != nil {
+ req.Header.Set("If-Match", string(*ifMatch))
+ }
+ if ifNoneMatch != nil {
+ req.Header.Set("If-None-Match", string(*ifNoneMatch))
+ }
+ req.Header.Set("x-ms-blob-content-length", strconv.FormatInt(blobContentLength, 10))
+ if blobSequenceNumber != nil {
+ req.Header.Set("x-ms-blob-sequence-number", strconv.FormatInt(*blobSequenceNumber, 10))
+ }
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ req.Header.Set("x-ms-blob-type", "PageBlob")
+ return req, nil
+}
+
+// createResponder handles the response to the Create request.
+func (client pageBlobClient) createResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK, http.StatusCreated)
+ if resp == nil {
+ return nil, err
+ }
+ io.Copy(ioutil.Discard, resp.Response().Body)
+ resp.Response().Body.Close()
+ return &PageBlobCreateResponse{rawResponse: resp.Response()}, err
+}
+
+// GetPageRanges the Get Page Ranges operation returns the list of valid page ranges for a page blob or snapshot of a
+// page blob
+//
+// snapshot is the snapshot parameter is an opaque DateTime value that, when present, specifies the blob snapshot to
+// retrieve. For more information on working with blob snapshots, see Creating
+// a Snapshot of a Blob. timeout is the timeout parameter is expressed in seconds. For more information, see Setting
+// Timeouts for Blob Service Operations. rangeParameter is return only the bytes of the blob in the specified
+// range. leaseID is if specified, the operation only succeeds if the resource's lease is active and matches this ID.
+// ifModifiedSince is specify this header value to operate only on a blob if it has been modified since the specified
+// date/time. ifUnmodifiedSince is specify this header value to operate only on a blob if it has not been modified
+// since the specified date/time. ifMatch is specify an ETag value to operate only on blobs with a matching value.
+// ifNoneMatch is specify an ETag value to operate only on blobs without a matching value. requestID is provides a
+// client-generated, opaque value with a 1 KB character limit that is recorded in the analytics logs when storage
+// analytics logging is enabled.
+func (client pageBlobClient) GetPageRanges(ctx context.Context, snapshot *string, timeout *int32, rangeParameter *string, leaseID *string, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (*PageList, error) {
+ if err := validate([]validation{
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.getPageRangesPreparer(snapshot, timeout, rangeParameter, leaseID, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.getPageRangesResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*PageList), err
+}
+
+// getPageRangesPreparer prepares the GetPageRanges request.
+func (client pageBlobClient) getPageRangesPreparer(snapshot *string, timeout *int32, rangeParameter *string, leaseID *string, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("GET", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if snapshot != nil && len(*snapshot) > 0 {
+ params.Set("snapshot", *snapshot)
+ }
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ params.Set("comp", "pagelist")
+ req.URL.RawQuery = params.Encode()
+ if rangeParameter != nil {
+ req.Header.Set("x-ms-range", *rangeParameter)
+ }
+ if leaseID != nil {
+ req.Header.Set("x-ms-lease-id", *leaseID)
+ }
+ if ifModifiedSince != nil {
+ req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifUnmodifiedSince != nil {
+ req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifMatch != nil {
+ req.Header.Set("If-Match", string(*ifMatch))
+ }
+ if ifNoneMatch != nil {
+ req.Header.Set("If-None-Match", string(*ifNoneMatch))
+ }
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ return req, nil
+}
+
+// getPageRangesResponder handles the response to the GetPageRanges request.
+func (client pageBlobClient) getPageRangesResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK)
+ if resp == nil {
+ return nil, err
+ }
+ result := &PageList{rawResponse: resp.Response()}
+ if err != nil {
+ return result, err
+ }
+ defer resp.Response().Body.Close()
+ b, err := ioutil.ReadAll(resp.Response().Body)
+ if err != nil {
+ return result, err
+ }
+ if len(b) > 0 {
+ b = removeBOM(b)
+ err = xml.Unmarshal(b, result)
+ if err != nil {
+ return result, NewResponseError(err, resp.Response(), "failed to unmarshal response body")
+ }
+ }
+ return result, nil
+}
+
+// GetPageRangesDiff the Get Page Ranges Diff operation returns the list of valid page ranges for a page blob that were
+// changed between target blob and previous snapshot.
+//
+// snapshot is the snapshot parameter is an opaque DateTime value that, when present, specifies the blob snapshot to
+// retrieve. For more information on working with blob snapshots, see Creating
+// a Snapshot of a Blob. timeout is the timeout parameter is expressed in seconds. For more information, see Setting
+// Timeouts for Blob Service Operations. prevsnapshot is optional in version 2015-07-08 and newer. The prevsnapshot
+// parameter is a DateTime value that specifies that the response will contain only pages that were changed between
+// target blob and previous snapshot. Changed pages include both updated and cleared pages. The target blob may be a
+// snapshot, as long as the snapshot specified by prevsnapshot is the older of the two. Note that incremental snapshots
+// are currently supported only for blobs created on or after January 1, 2016. rangeParameter is return only the bytes
+// of the blob in the specified range. leaseID is if specified, the operation only succeeds if the resource's lease is
+// active and matches this ID. ifModifiedSince is specify this header value to operate only on a blob if it has been
+// modified since the specified date/time. ifUnmodifiedSince is specify this header value to operate only on a blob if
+// it has not been modified since the specified date/time. ifMatch is specify an ETag value to operate only on blobs
+// with a matching value. ifNoneMatch is specify an ETag value to operate only on blobs without a matching value.
+// requestID is provides a client-generated, opaque value with a 1 KB character limit that is recorded in the analytics
+// logs when storage analytics logging is enabled.
+func (client pageBlobClient) GetPageRangesDiff(ctx context.Context, snapshot *string, timeout *int32, prevsnapshot *string, rangeParameter *string, leaseID *string, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (*PageList, error) {
+ if err := validate([]validation{
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.getPageRangesDiffPreparer(snapshot, timeout, prevsnapshot, rangeParameter, leaseID, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.getPageRangesDiffResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*PageList), err
+}
+
+// getPageRangesDiffPreparer prepares the GetPageRangesDiff request.
+func (client pageBlobClient) getPageRangesDiffPreparer(snapshot *string, timeout *int32, prevsnapshot *string, rangeParameter *string, leaseID *string, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("GET", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if snapshot != nil && len(*snapshot) > 0 {
+ params.Set("snapshot", *snapshot)
+ }
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ if prevsnapshot != nil && len(*prevsnapshot) > 0 {
+ params.Set("prevsnapshot", *prevsnapshot)
+ }
+ params.Set("comp", "pagelist")
+ req.URL.RawQuery = params.Encode()
+ if rangeParameter != nil {
+ req.Header.Set("x-ms-range", *rangeParameter)
+ }
+ if leaseID != nil {
+ req.Header.Set("x-ms-lease-id", *leaseID)
+ }
+ if ifModifiedSince != nil {
+ req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifUnmodifiedSince != nil {
+ req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifMatch != nil {
+ req.Header.Set("If-Match", string(*ifMatch))
+ }
+ if ifNoneMatch != nil {
+ req.Header.Set("If-None-Match", string(*ifNoneMatch))
+ }
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ return req, nil
+}
+
+// getPageRangesDiffResponder handles the response to the GetPageRangesDiff request.
+func (client pageBlobClient) getPageRangesDiffResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK)
+ if resp == nil {
+ return nil, err
+ }
+ result := &PageList{rawResponse: resp.Response()}
+ if err != nil {
+ return result, err
+ }
+ defer resp.Response().Body.Close()
+ b, err := ioutil.ReadAll(resp.Response().Body)
+ if err != nil {
+ return result, err
+ }
+ if len(b) > 0 {
+ b = removeBOM(b)
+ err = xml.Unmarshal(b, result)
+ if err != nil {
+ return result, NewResponseError(err, resp.Response(), "failed to unmarshal response body")
+ }
+ }
+ return result, nil
+}
+
+// Resize resize the Blob
+//
+// blobContentLength is this header specifies the maximum size for the page blob, up to 1 TB. The page blob size must
+// be aligned to a 512-byte boundary. timeout is the timeout parameter is expressed in seconds. For more information,
+// see Setting
+// Timeouts for Blob Service Operations. leaseID is if specified, the operation only succeeds if the resource's
+// lease is active and matches this ID. encryptionKey is optional. Specifies the encryption key to use to encrypt the
+// data provided in the request. If not specified, encryption is performed with the root account encryption key. For
+// more information, see Encryption at Rest for Azure Storage Services. encryptionKeySha256 is the SHA-256 hash of the
+// provided encryption key. Must be provided if the x-ms-encryption-key header is provided. encryptionAlgorithm is the
+// algorithm used to produce the encryption key hash. Currently, the only accepted value is "AES256". Must be provided
+// if the x-ms-encryption-key header is provided. ifModifiedSince is specify this header value to operate only on a
+// blob if it has been modified since the specified date/time. ifUnmodifiedSince is specify this header value to
+// operate only on a blob if it has not been modified since the specified date/time. ifMatch is specify an ETag value
+// to operate only on blobs with a matching value. ifNoneMatch is specify an ETag value to operate only on blobs
+// without a matching value. requestID is provides a client-generated, opaque value with a 1 KB character limit that is
+// recorded in the analytics logs when storage analytics logging is enabled.
+func (client pageBlobClient) Resize(ctx context.Context, blobContentLength int64, timeout *int32, leaseID *string, encryptionKey *string, encryptionKeySha256 *string, encryptionAlgorithm EncryptionAlgorithmType, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (*PageBlobResizeResponse, error) {
+ if err := validate([]validation{
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.resizePreparer(blobContentLength, timeout, leaseID, encryptionKey, encryptionKeySha256, encryptionAlgorithm, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.resizeResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*PageBlobResizeResponse), err
+}
+
+// resizePreparer prepares the Resize request.
+func (client pageBlobClient) resizePreparer(blobContentLength int64, timeout *int32, leaseID *string, encryptionKey *string, encryptionKeySha256 *string, encryptionAlgorithm EncryptionAlgorithmType, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("PUT", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ params.Set("comp", "properties")
+ req.URL.RawQuery = params.Encode()
+ if leaseID != nil {
+ req.Header.Set("x-ms-lease-id", *leaseID)
+ }
+ if encryptionKey != nil {
+ req.Header.Set("x-ms-encryption-key", *encryptionKey)
+ }
+ if encryptionKeySha256 != nil {
+ req.Header.Set("x-ms-encryption-key-sha256", *encryptionKeySha256)
+ }
+ if encryptionAlgorithm != EncryptionAlgorithmNone {
+ req.Header.Set("x-ms-encryption-algorithm", string(encryptionAlgorithm))
+ }
+ if ifModifiedSince != nil {
+ req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifUnmodifiedSince != nil {
+ req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifMatch != nil {
+ req.Header.Set("If-Match", string(*ifMatch))
+ }
+ if ifNoneMatch != nil {
+ req.Header.Set("If-None-Match", string(*ifNoneMatch))
+ }
+ req.Header.Set("x-ms-blob-content-length", strconv.FormatInt(blobContentLength, 10))
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ return req, nil
+}
+
+// resizeResponder handles the response to the Resize request.
+func (client pageBlobClient) resizeResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK)
+ if resp == nil {
+ return nil, err
+ }
+ io.Copy(ioutil.Discard, resp.Response().Body)
+ resp.Response().Body.Close()
+ return &PageBlobResizeResponse{rawResponse: resp.Response()}, err
+}
+
+// UpdateSequenceNumber update the sequence number of the blob
+//
+// sequenceNumberAction is required if the x-ms-blob-sequence-number header is set for the request. This property
+// applies to page blobs only. This property indicates how the service should modify the blob's sequence number timeout
+// is the timeout parameter is expressed in seconds. For more information, see Setting
+// Timeouts for Blob Service Operations. leaseID is if specified, the operation only succeeds if the resource's
+// lease is active and matches this ID. ifModifiedSince is specify this header value to operate only on a blob if it
+// has been modified since the specified date/time. ifUnmodifiedSince is specify this header value to operate only on a
+// blob if it has not been modified since the specified date/time. ifMatch is specify an ETag value to operate only on
+// blobs with a matching value. ifNoneMatch is specify an ETag value to operate only on blobs without a matching value.
+// blobSequenceNumber is set for page blobs only. The sequence number is a user-controlled value that you can use to
+// track requests. The value of the sequence number must be between 0 and 2^63 - 1. requestID is provides a
+// client-generated, opaque value with a 1 KB character limit that is recorded in the analytics logs when storage
+// analytics logging is enabled.
+func (client pageBlobClient) UpdateSequenceNumber(ctx context.Context, sequenceNumberAction SequenceNumberActionType, timeout *int32, leaseID *string, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, blobSequenceNumber *int64, requestID *string) (*PageBlobUpdateSequenceNumberResponse, error) {
+ if err := validate([]validation{
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.updateSequenceNumberPreparer(sequenceNumberAction, timeout, leaseID, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, blobSequenceNumber, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.updateSequenceNumberResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*PageBlobUpdateSequenceNumberResponse), err
+}
+
+// updateSequenceNumberPreparer prepares the UpdateSequenceNumber request.
+func (client pageBlobClient) updateSequenceNumberPreparer(sequenceNumberAction SequenceNumberActionType, timeout *int32, leaseID *string, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, blobSequenceNumber *int64, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("PUT", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ params.Set("comp", "properties")
+ req.URL.RawQuery = params.Encode()
+ if leaseID != nil {
+ req.Header.Set("x-ms-lease-id", *leaseID)
+ }
+ if ifModifiedSince != nil {
+ req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifUnmodifiedSince != nil {
+ req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifMatch != nil {
+ req.Header.Set("If-Match", string(*ifMatch))
+ }
+ if ifNoneMatch != nil {
+ req.Header.Set("If-None-Match", string(*ifNoneMatch))
+ }
+ req.Header.Set("x-ms-sequence-number-action", string(sequenceNumberAction))
+ if blobSequenceNumber != nil {
+ req.Header.Set("x-ms-blob-sequence-number", strconv.FormatInt(*blobSequenceNumber, 10))
+ }
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ return req, nil
+}
+
+// updateSequenceNumberResponder handles the response to the UpdateSequenceNumber request.
+func (client pageBlobClient) updateSequenceNumberResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK)
+ if resp == nil {
+ return nil, err
+ }
+ io.Copy(ioutil.Discard, resp.Response().Body)
+ resp.Response().Body.Close()
+ return &PageBlobUpdateSequenceNumberResponse{rawResponse: resp.Response()}, err
+}
+
+// UploadPages the Upload Pages operation writes a range of pages to a page blob
+//
+// body is initial data body will be closed upon successful return. Callers should ensure closure when receiving an
+// error.contentLength is the length of the request. transactionalContentMD5 is specify the transactional md5 for the
+// body, to be validated by the service. transactionalContentCrc64 is specify the transactional crc64 for the body, to
+// be validated by the service. timeout is the timeout parameter is expressed in seconds. For more information, see Setting
+// Timeouts for Blob Service Operations. rangeParameter is return only the bytes of the blob in the specified
+// range. leaseID is if specified, the operation only succeeds if the resource's lease is active and matches this ID.
+// encryptionKey is optional. Specifies the encryption key to use to encrypt the data provided in the request. If not
+// specified, encryption is performed with the root account encryption key. For more information, see Encryption at
+// Rest for Azure Storage Services. encryptionKeySha256 is the SHA-256 hash of the provided encryption key. Must be
+// provided if the x-ms-encryption-key header is provided. encryptionAlgorithm is the algorithm used to produce the
+// encryption key hash. Currently, the only accepted value is "AES256". Must be provided if the x-ms-encryption-key
+// header is provided. ifSequenceNumberLessThanOrEqualTo is specify this header value to operate only on a blob if it
+// has a sequence number less than or equal to the specified. ifSequenceNumberLessThan is specify this header value to
+// operate only on a blob if it has a sequence number less than the specified. ifSequenceNumberEqualTo is specify this
+// header value to operate only on a blob if it has the specified sequence number. ifModifiedSince is specify this
+// header value to operate only on a blob if it has been modified since the specified date/time. ifUnmodifiedSince is
+// specify this header value to operate only on a blob if it has not been modified since the specified date/time.
+// ifMatch is specify an ETag value to operate only on blobs with a matching value. ifNoneMatch is specify an ETag
+// value to operate only on blobs without a matching value. requestID is provides a client-generated, opaque value with
+// a 1 KB character limit that is recorded in the analytics logs when storage analytics logging is enabled.
+func (client pageBlobClient) UploadPages(ctx context.Context, body io.ReadSeeker, contentLength int64, transactionalContentMD5 []byte, transactionalContentCrc64 []byte, timeout *int32, rangeParameter *string, leaseID *string, encryptionKey *string, encryptionKeySha256 *string, encryptionAlgorithm EncryptionAlgorithmType, ifSequenceNumberLessThanOrEqualTo *int64, ifSequenceNumberLessThan *int64, ifSequenceNumberEqualTo *int64, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (*PageBlobUploadPagesResponse, error) {
+ if err := validate([]validation{
+ {targetValue: body,
+ constraints: []constraint{{target: "body", name: null, rule: true, chain: nil}}},
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.uploadPagesPreparer(body, contentLength, transactionalContentMD5, transactionalContentCrc64, timeout, rangeParameter, leaseID, encryptionKey, encryptionKeySha256, encryptionAlgorithm, ifSequenceNumberLessThanOrEqualTo, ifSequenceNumberLessThan, ifSequenceNumberEqualTo, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.uploadPagesResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*PageBlobUploadPagesResponse), err
+}
+
+// uploadPagesPreparer prepares the UploadPages request.
+func (client pageBlobClient) uploadPagesPreparer(body io.ReadSeeker, contentLength int64, transactionalContentMD5 []byte, transactionalContentCrc64 []byte, timeout *int32, rangeParameter *string, leaseID *string, encryptionKey *string, encryptionKeySha256 *string, encryptionAlgorithm EncryptionAlgorithmType, ifSequenceNumberLessThanOrEqualTo *int64, ifSequenceNumberLessThan *int64, ifSequenceNumberEqualTo *int64, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("PUT", client.url, body)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ params.Set("comp", "page")
+ req.URL.RawQuery = params.Encode()
+ req.Header.Set("Content-Length", strconv.FormatInt(contentLength, 10))
+ if transactionalContentMD5 != nil {
+ req.Header.Set("Content-MD5", base64.StdEncoding.EncodeToString(transactionalContentMD5))
+ }
+ if transactionalContentCrc64 != nil {
+ req.Header.Set("x-ms-content-crc64", base64.StdEncoding.EncodeToString(transactionalContentCrc64))
+ }
+ if rangeParameter != nil {
+ req.Header.Set("x-ms-range", *rangeParameter)
+ }
+ if leaseID != nil {
+ req.Header.Set("x-ms-lease-id", *leaseID)
+ }
+ if encryptionKey != nil {
+ req.Header.Set("x-ms-encryption-key", *encryptionKey)
+ }
+ if encryptionKeySha256 != nil {
+ req.Header.Set("x-ms-encryption-key-sha256", *encryptionKeySha256)
+ }
+ if encryptionAlgorithm != EncryptionAlgorithmNone {
+ req.Header.Set("x-ms-encryption-algorithm", string(encryptionAlgorithm))
+ }
+ if ifSequenceNumberLessThanOrEqualTo != nil {
+ req.Header.Set("x-ms-if-sequence-number-le", strconv.FormatInt(*ifSequenceNumberLessThanOrEqualTo, 10))
+ }
+ if ifSequenceNumberLessThan != nil {
+ req.Header.Set("x-ms-if-sequence-number-lt", strconv.FormatInt(*ifSequenceNumberLessThan, 10))
+ }
+ if ifSequenceNumberEqualTo != nil {
+ req.Header.Set("x-ms-if-sequence-number-eq", strconv.FormatInt(*ifSequenceNumberEqualTo, 10))
+ }
+ if ifModifiedSince != nil {
+ req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifUnmodifiedSince != nil {
+ req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifMatch != nil {
+ req.Header.Set("If-Match", string(*ifMatch))
+ }
+ if ifNoneMatch != nil {
+ req.Header.Set("If-None-Match", string(*ifNoneMatch))
+ }
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ req.Header.Set("x-ms-page-write", "update")
+ return req, nil
+}
+
+// uploadPagesResponder handles the response to the UploadPages request.
+func (client pageBlobClient) uploadPagesResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK, http.StatusCreated)
+ if resp == nil {
+ return nil, err
+ }
+ io.Copy(ioutil.Discard, resp.Response().Body)
+ resp.Response().Body.Close()
+ return &PageBlobUploadPagesResponse{rawResponse: resp.Response()}, err
+}
+
+// UploadPagesFromURL the Upload Pages operation writes a range of pages to a page blob where the contents are read
+// from a URL
+//
+// sourceURL is specify a URL to the copy source. sourceRange is bytes of source data in the specified range. The
+// length of this range should match the ContentLength header and x-ms-range/Range destination range header.
+// contentLength is the length of the request. rangeParameter is the range of bytes to which the source range would be
+// written. The range should be 512 aligned and range-end is required. sourceContentMD5 is specify the md5 calculated
+// for the range of bytes that must be read from the copy source. sourceContentcrc64 is specify the crc64 calculated
+// for the range of bytes that must be read from the copy source. timeout is the timeout parameter is expressed in
+// seconds. For more information, see Setting
+// Timeouts for Blob Service Operations. encryptionKey is optional. Specifies the encryption key to use to encrypt
+// the data provided in the request. If not specified, encryption is performed with the root account encryption key.
+// For more information, see Encryption at Rest for Azure Storage Services. encryptionKeySha256 is the SHA-256 hash of
+// the provided encryption key. Must be provided if the x-ms-encryption-key header is provided. encryptionAlgorithm is
+// the algorithm used to produce the encryption key hash. Currently, the only accepted value is "AES256". Must be
+// provided if the x-ms-encryption-key header is provided. leaseID is if specified, the operation only succeeds if the
+// resource's lease is active and matches this ID. ifSequenceNumberLessThanOrEqualTo is specify this header value to
+// operate only on a blob if it has a sequence number less than or equal to the specified. ifSequenceNumberLessThan is
+// specify this header value to operate only on a blob if it has a sequence number less than the specified.
+// ifSequenceNumberEqualTo is specify this header value to operate only on a blob if it has the specified sequence
+// number. ifModifiedSince is specify this header value to operate only on a blob if it has been modified since the
+// specified date/time. ifUnmodifiedSince is specify this header value to operate only on a blob if it has not been
+// modified since the specified date/time. ifMatch is specify an ETag value to operate only on blobs with a matching
+// value. ifNoneMatch is specify an ETag value to operate only on blobs without a matching value. sourceIfModifiedSince
+// is specify this header value to operate only on a blob if it has been modified since the specified date/time.
+// sourceIfUnmodifiedSince is specify this header value to operate only on a blob if it has not been modified since the
+// specified date/time. sourceIfMatch is specify an ETag value to operate only on blobs with a matching value.
+// sourceIfNoneMatch is specify an ETag value to operate only on blobs without a matching value. requestID is provides
+// a client-generated, opaque value with a 1 KB character limit that is recorded in the analytics logs when storage
+// analytics logging is enabled.
+func (client pageBlobClient) UploadPagesFromURL(ctx context.Context, sourceURL string, sourceRange string, contentLength int64, rangeParameter string, sourceContentMD5 []byte, sourceContentcrc64 []byte, timeout *int32, encryptionKey *string, encryptionKeySha256 *string, encryptionAlgorithm EncryptionAlgorithmType, leaseID *string, ifSequenceNumberLessThanOrEqualTo *int64, ifSequenceNumberLessThan *int64, ifSequenceNumberEqualTo *int64, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, sourceIfModifiedSince *time.Time, sourceIfUnmodifiedSince *time.Time, sourceIfMatch *ETag, sourceIfNoneMatch *ETag, requestID *string) (*PageBlobUploadPagesFromURLResponse, error) {
+ if err := validate([]validation{
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.uploadPagesFromURLPreparer(sourceURL, sourceRange, contentLength, rangeParameter, sourceContentMD5, sourceContentcrc64, timeout, encryptionKey, encryptionKeySha256, encryptionAlgorithm, leaseID, ifSequenceNumberLessThanOrEqualTo, ifSequenceNumberLessThan, ifSequenceNumberEqualTo, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, sourceIfModifiedSince, sourceIfUnmodifiedSince, sourceIfMatch, sourceIfNoneMatch, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.uploadPagesFromURLResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*PageBlobUploadPagesFromURLResponse), err
+}
+
+// uploadPagesFromURLPreparer prepares the UploadPagesFromURL request.
+func (client pageBlobClient) uploadPagesFromURLPreparer(sourceURL string, sourceRange string, contentLength int64, rangeParameter string, sourceContentMD5 []byte, sourceContentcrc64 []byte, timeout *int32, encryptionKey *string, encryptionKeySha256 *string, encryptionAlgorithm EncryptionAlgorithmType, leaseID *string, ifSequenceNumberLessThanOrEqualTo *int64, ifSequenceNumberLessThan *int64, ifSequenceNumberEqualTo *int64, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, sourceIfModifiedSince *time.Time, sourceIfUnmodifiedSince *time.Time, sourceIfMatch *ETag, sourceIfNoneMatch *ETag, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("PUT", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ params.Set("comp", "page")
+ req.URL.RawQuery = params.Encode()
+ req.Header.Set("x-ms-copy-source", sourceURL)
+ req.Header.Set("x-ms-source-range", sourceRange)
+ if sourceContentMD5 != nil {
+ req.Header.Set("x-ms-source-content-md5", base64.StdEncoding.EncodeToString(sourceContentMD5))
+ }
+ if sourceContentcrc64 != nil {
+ req.Header.Set("x-ms-source-content-crc64", base64.StdEncoding.EncodeToString(sourceContentcrc64))
+ }
+ req.Header.Set("Content-Length", strconv.FormatInt(contentLength, 10))
+ req.Header.Set("x-ms-range", rangeParameter)
+ if encryptionKey != nil {
+ req.Header.Set("x-ms-encryption-key", *encryptionKey)
+ }
+ if encryptionKeySha256 != nil {
+ req.Header.Set("x-ms-encryption-key-sha256", *encryptionKeySha256)
+ }
+ if encryptionAlgorithm != EncryptionAlgorithmNone {
+ req.Header.Set("x-ms-encryption-algorithm", string(encryptionAlgorithm))
+ }
+ if leaseID != nil {
+ req.Header.Set("x-ms-lease-id", *leaseID)
+ }
+ if ifSequenceNumberLessThanOrEqualTo != nil {
+ req.Header.Set("x-ms-if-sequence-number-le", strconv.FormatInt(*ifSequenceNumberLessThanOrEqualTo, 10))
+ }
+ if ifSequenceNumberLessThan != nil {
+ req.Header.Set("x-ms-if-sequence-number-lt", strconv.FormatInt(*ifSequenceNumberLessThan, 10))
+ }
+ if ifSequenceNumberEqualTo != nil {
+ req.Header.Set("x-ms-if-sequence-number-eq", strconv.FormatInt(*ifSequenceNumberEqualTo, 10))
+ }
+ if ifModifiedSince != nil {
+ req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifUnmodifiedSince != nil {
+ req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if ifMatch != nil {
+ req.Header.Set("If-Match", string(*ifMatch))
+ }
+ if ifNoneMatch != nil {
+ req.Header.Set("If-None-Match", string(*ifNoneMatch))
+ }
+ if sourceIfModifiedSince != nil {
+ req.Header.Set("x-ms-source-if-modified-since", (*sourceIfModifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if sourceIfUnmodifiedSince != nil {
+ req.Header.Set("x-ms-source-if-unmodified-since", (*sourceIfUnmodifiedSince).In(gmt).Format(time.RFC1123))
+ }
+ if sourceIfMatch != nil {
+ req.Header.Set("x-ms-source-if-match", string(*sourceIfMatch))
+ }
+ if sourceIfNoneMatch != nil {
+ req.Header.Set("x-ms-source-if-none-match", string(*sourceIfNoneMatch))
+ }
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ req.Header.Set("x-ms-page-write", "update")
+ return req, nil
+}
+
+// uploadPagesFromURLResponder handles the response to the UploadPagesFromURL request.
+func (client pageBlobClient) uploadPagesFromURLResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK, http.StatusCreated)
+ if resp == nil {
+ return nil, err
+ }
+ io.Copy(ioutil.Discard, resp.Response().Body)
+ resp.Response().Body.Close()
+ return &PageBlobUploadPagesFromURLResponse{rawResponse: resp.Response()}, err
+}
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_responder_policy.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_responder_policy.go
new file mode 100644
index 00000000..8a023d0a
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_responder_policy.go
@@ -0,0 +1,74 @@
+package azblob
+
+// Code generated by Microsoft (R) AutoRest Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+ "bytes"
+ "context"
+ "encoding/xml"
+ "github.com/Azure/azure-pipeline-go/pipeline"
+ "io/ioutil"
+)
+
+type responder func(resp pipeline.Response) (result pipeline.Response, err error)
+
+// ResponderPolicyFactory is a Factory capable of creating a responder pipeline.
+type responderPolicyFactory struct {
+ responder responder
+}
+
+// New creates a responder policy factory.
+func (arpf responderPolicyFactory) New(next pipeline.Policy, po *pipeline.PolicyOptions) pipeline.Policy {
+ return responderPolicy{next: next, responder: arpf.responder}
+}
+
+type responderPolicy struct {
+ next pipeline.Policy
+ responder responder
+}
+
+// Do sends the request to the service and validates/deserializes the HTTP response.
+func (arp responderPolicy) Do(ctx context.Context, request pipeline.Request) (pipeline.Response, error) {
+ resp, err := arp.next.Do(ctx, request)
+ if err != nil {
+ return resp, err
+ }
+ return arp.responder(resp)
+}
+
+// validateResponse checks an HTTP response's status code against a legal set of codes.
+// If the response code is not legal, then validateResponse reads all of the response's body
+// (containing error information) and returns a response error.
+func validateResponse(resp pipeline.Response, successStatusCodes ...int) error {
+ if resp == nil {
+ return NewResponseError(nil, nil, "nil response")
+ }
+ responseCode := resp.Response().StatusCode
+ for _, i := range successStatusCodes {
+ if i == responseCode {
+ return nil
+ }
+ }
+ // only close the body in the failure case. in the
+ // success case responders will close the body as required.
+ defer resp.Response().Body.Close()
+ b, err := ioutil.ReadAll(resp.Response().Body)
+ if err != nil {
+ return err
+ }
+ // the service code, description and details will be populated during unmarshalling
+ responseError := NewResponseError(nil, resp.Response(), resp.Response().Status)
+ if len(b) > 0 {
+ if err = xml.Unmarshal(b, &responseError); err != nil {
+ return NewResponseError(err, resp.Response(), "failed to unmarshal response body")
+ }
+ }
+ return responseError
+}
+
+// removes any BOM from the byte slice
+func removeBOM(b []byte) []byte {
+ // UTF8
+ return bytes.TrimPrefix(b, []byte("\xef\xbb\xbf"))
+}
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_response_error.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_response_error.go
new file mode 100644
index 00000000..3dcc75bb
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_response_error.go
@@ -0,0 +1,95 @@
+package azblob
+
+// Code generated by Microsoft (R) AutoRest Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+ "bytes"
+ "fmt"
+ "github.com/Azure/azure-pipeline-go/pipeline"
+ "net"
+ "net/http"
+)
+
+// if you want to provide custom error handling set this variable to your constructor function
+var responseErrorFactory func(cause error, response *http.Response, description string) error
+
+// ResponseError identifies a responder-generated network or response parsing error.
+type ResponseError interface {
+ // Error exposes the Error(), Temporary() and Timeout() methods.
+ net.Error // Includes the Go error interface
+ // Response returns the HTTP response. You may examine this but you should not modify it.
+ Response() *http.Response
+}
+
+// NewResponseError creates an error object that implements the error interface.
+func NewResponseError(cause error, response *http.Response, description string) error {
+ if responseErrorFactory != nil {
+ return responseErrorFactory(cause, response, description)
+ }
+ return &responseError{
+ ErrorNode: pipeline.ErrorNode{}.Initialize(cause, 3),
+ response: response,
+ description: description,
+ }
+}
+
+// responseError is the internal struct that implements the public ResponseError interface.
+type responseError struct {
+ pipeline.ErrorNode // This is embedded so that responseError "inherits" Error, Temporary, Timeout, and Cause
+ response *http.Response
+ description string
+}
+
+// Error implements the error interface's Error method to return a string representation of the error.
+func (e *responseError) Error() string {
+ b := &bytes.Buffer{}
+ fmt.Fprintf(b, "===== RESPONSE ERROR (Code=%v) =====\n", e.response.StatusCode)
+ fmt.Fprintf(b, "Status=%s, Description: %s\n", e.response.Status, e.description)
+ s := b.String()
+ return e.ErrorNode.Error(s)
+}
+
+// Response implements the ResponseError interface's method to return the HTTP response.
+func (e *responseError) Response() *http.Response {
+ return e.response
+}
+
+// RFC7807 PROBLEM ------------------------------------------------------------------------------------
+// RFC7807Problem ... This type can be publicly embedded in another type that wants to add additional members.
+/*type RFC7807Problem struct {
+ // Mandatory: A (relative) URI reference identifying the problem type (it MAY refer to human-readable documentation).
+ typeURI string // Should default to "about:blank"
+ // Optional: Short, human-readable summary (maybe localized).
+ title string
+ // Optional: HTTP status code generated by the origin server
+ status int
+ // Optional: Human-readable explanation for this problem occurance.
+ // Should help client correct the problem. Clients should NOT parse this string.
+ detail string
+ // Optional: A (relative) URI identifying this specific problem occurence (it may or may not be dereferenced).
+ instance string
+}
+// NewRFC7807Problem ...
+func NewRFC7807Problem(typeURI string, status int, titleFormat string, a ...interface{}) error {
+ return &RFC7807Problem{
+ typeURI: typeURI,
+ status: status,
+ title: fmt.Sprintf(titleFormat, a...),
+ }
+}
+// Error returns the error information as a string.
+func (e *RFC7807Problem) Error() string {
+ return e.title
+}
+// TypeURI ...
+func (e *RFC7807Problem) TypeURI() string {
+ if e.typeURI == "" {
+ e.typeURI = "about:blank"
+ }
+ return e.typeURI
+}
+// Members ...
+func (e *RFC7807Problem) Members() (status int, title, detail, instance string) {
+ return e.status, e.title, e.detail, e.instance
+}*/
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_service.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_service.go
new file mode 100644
index 00000000..ac41cd08
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_service.go
@@ -0,0 +1,526 @@
+package azblob
+
+// Code generated by Microsoft (R) AutoRest Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+ "bytes"
+ "context"
+ "encoding/xml"
+ "github.com/Azure/azure-pipeline-go/pipeline"
+ "io"
+ "io/ioutil"
+ "net/http"
+ "net/url"
+ "strconv"
+)
+
+// serviceClient is the client for the Service methods of the Azblob service.
+type serviceClient struct {
+ managementClient
+}
+
+// newServiceClient creates an instance of the serviceClient client.
+func newServiceClient(url url.URL, p pipeline.Pipeline) serviceClient {
+ return serviceClient{newManagementClient(url, p)}
+}
+
+// GetAccountInfo returns the sku name and account kind
+func (client serviceClient) GetAccountInfo(ctx context.Context) (*ServiceGetAccountInfoResponse, error) {
+ req, err := client.getAccountInfoPreparer()
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.getAccountInfoResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*ServiceGetAccountInfoResponse), err
+}
+
+// getAccountInfoPreparer prepares the GetAccountInfo request.
+func (client serviceClient) getAccountInfoPreparer() (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("GET", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ params.Set("restype", "account")
+ params.Set("comp", "properties")
+ req.URL.RawQuery = params.Encode()
+ req.Header.Set("x-ms-version", ServiceVersion)
+ return req, nil
+}
+
+// getAccountInfoResponder handles the response to the GetAccountInfo request.
+func (client serviceClient) getAccountInfoResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK)
+ if resp == nil {
+ return nil, err
+ }
+ io.Copy(ioutil.Discard, resp.Response().Body)
+ resp.Response().Body.Close()
+ return &ServiceGetAccountInfoResponse{rawResponse: resp.Response()}, err
+}
+
+// GetProperties gets the properties of a storage account's Blob service, including properties for Storage Analytics
+// and CORS (Cross-Origin Resource Sharing) rules.
+//
+// timeout is the timeout parameter is expressed in seconds. For more information, see Setting
+// Timeouts for Blob Service Operations. requestID is provides a client-generated, opaque value with a 1 KB
+// character limit that is recorded in the analytics logs when storage analytics logging is enabled.
+func (client serviceClient) GetProperties(ctx context.Context, timeout *int32, requestID *string) (*StorageServiceProperties, error) {
+ if err := validate([]validation{
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.getPropertiesPreparer(timeout, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.getPropertiesResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*StorageServiceProperties), err
+}
+
+// getPropertiesPreparer prepares the GetProperties request.
+func (client serviceClient) getPropertiesPreparer(timeout *int32, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("GET", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ params.Set("restype", "service")
+ params.Set("comp", "properties")
+ req.URL.RawQuery = params.Encode()
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ return req, nil
+}
+
+// getPropertiesResponder handles the response to the GetProperties request.
+func (client serviceClient) getPropertiesResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK)
+ if resp == nil {
+ return nil, err
+ }
+ result := &StorageServiceProperties{rawResponse: resp.Response()}
+ if err != nil {
+ return result, err
+ }
+ defer resp.Response().Body.Close()
+ b, err := ioutil.ReadAll(resp.Response().Body)
+ if err != nil {
+ return result, err
+ }
+ if len(b) > 0 {
+ b = removeBOM(b)
+ err = xml.Unmarshal(b, result)
+ if err != nil {
+ return result, NewResponseError(err, resp.Response(), "failed to unmarshal response body")
+ }
+ }
+ return result, nil
+}
+
+// GetStatistics retrieves statistics related to replication for the Blob service. It is only available on the
+// secondary location endpoint when read-access geo-redundant replication is enabled for the storage account.
+//
+// timeout is the timeout parameter is expressed in seconds. For more information, see Setting
+// Timeouts for Blob Service Operations. requestID is provides a client-generated, opaque value with a 1 KB
+// character limit that is recorded in the analytics logs when storage analytics logging is enabled.
+func (client serviceClient) GetStatistics(ctx context.Context, timeout *int32, requestID *string) (*StorageServiceStats, error) {
+ if err := validate([]validation{
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.getStatisticsPreparer(timeout, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.getStatisticsResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*StorageServiceStats), err
+}
+
+// getStatisticsPreparer prepares the GetStatistics request.
+func (client serviceClient) getStatisticsPreparer(timeout *int32, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("GET", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ params.Set("restype", "service")
+ params.Set("comp", "stats")
+ req.URL.RawQuery = params.Encode()
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ return req, nil
+}
+
+// getStatisticsResponder handles the response to the GetStatistics request.
+func (client serviceClient) getStatisticsResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK)
+ if resp == nil {
+ return nil, err
+ }
+ result := &StorageServiceStats{rawResponse: resp.Response()}
+ if err != nil {
+ return result, err
+ }
+ defer resp.Response().Body.Close()
+ b, err := ioutil.ReadAll(resp.Response().Body)
+ if err != nil {
+ return result, err
+ }
+ if len(b) > 0 {
+ b = removeBOM(b)
+ err = xml.Unmarshal(b, result)
+ if err != nil {
+ return result, NewResponseError(err, resp.Response(), "failed to unmarshal response body")
+ }
+ }
+ return result, nil
+}
+
+// GetUserDelegationKey retrieves a user delegation key for the Blob service. This is only a valid operation when using
+// bearer token authentication.
+//
+// timeout is the timeout parameter is expressed in seconds. For more information, see Setting
+// Timeouts for Blob Service Operations. requestID is provides a client-generated, opaque value with a 1 KB
+// character limit that is recorded in the analytics logs when storage analytics logging is enabled.
+func (client serviceClient) GetUserDelegationKey(ctx context.Context, keyInfo KeyInfo, timeout *int32, requestID *string) (*UserDelegationKey, error) {
+ if err := validate([]validation{
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.getUserDelegationKeyPreparer(keyInfo, timeout, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.getUserDelegationKeyResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*UserDelegationKey), err
+}
+
+// getUserDelegationKeyPreparer prepares the GetUserDelegationKey request.
+func (client serviceClient) getUserDelegationKeyPreparer(keyInfo KeyInfo, timeout *int32, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("POST", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ params.Set("restype", "service")
+ params.Set("comp", "userdelegationkey")
+ req.URL.RawQuery = params.Encode()
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ b, err := xml.Marshal(keyInfo)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to marshal request body")
+ }
+ req.Header.Set("Content-Type", "application/xml")
+ err = req.SetBody(bytes.NewReader(b))
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to set request body")
+ }
+ return req, nil
+}
+
+// getUserDelegationKeyResponder handles the response to the GetUserDelegationKey request.
+func (client serviceClient) getUserDelegationKeyResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK)
+ if resp == nil {
+ return nil, err
+ }
+ result := &UserDelegationKey{rawResponse: resp.Response()}
+ if err != nil {
+ return result, err
+ }
+ defer resp.Response().Body.Close()
+ b, err := ioutil.ReadAll(resp.Response().Body)
+ if err != nil {
+ return result, err
+ }
+ if len(b) > 0 {
+ b = removeBOM(b)
+ err = xml.Unmarshal(b, result)
+ if err != nil {
+ return result, NewResponseError(err, resp.Response(), "failed to unmarshal response body")
+ }
+ }
+ return result, nil
+}
+
+// ListContainersSegment the List Containers Segment operation returns a list of the containers under the specified
+// account
+//
+// prefix is filters the results to return only containers whose name begins with the specified prefix. marker is a
+// string value that identifies the portion of the list of containers to be returned with the next listing operation.
+// The operation returns the NextMarker value within the response body if the listing operation did not return all
+// containers remaining to be listed with the current page. The NextMarker value can be used as the value for the
+// marker parameter in a subsequent call to request the next page of list items. The marker value is opaque to the
+// client. maxresults is specifies the maximum number of containers to return. If the request does not specify
+// maxresults, or specifies a value greater than 5000, the server will return up to 5000 items. Note that if the
+// listing operation crosses a partition boundary, then the service will return a continuation token for retrieving the
+// remainder of the results. For this reason, it is possible that the service will return fewer results than specified
+// by maxresults, or than the default of 5000. include is include this parameter to specify that the container's
+// metadata be returned as part of the response body. timeout is the timeout parameter is expressed in seconds. For
+// more information, see Setting
+// Timeouts for Blob Service Operations. requestID is provides a client-generated, opaque value with a 1 KB
+// character limit that is recorded in the analytics logs when storage analytics logging is enabled.
+func (client serviceClient) ListContainersSegment(ctx context.Context, prefix *string, marker *string, maxresults *int32, include ListContainersIncludeType, timeout *int32, requestID *string) (*ListContainersSegmentResponse, error) {
+ if err := validate([]validation{
+ {targetValue: maxresults,
+ constraints: []constraint{{target: "maxresults", name: null, rule: false,
+ chain: []constraint{{target: "maxresults", name: inclusiveMinimum, rule: 1, chain: nil}}}}},
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.listContainersSegmentPreparer(prefix, marker, maxresults, include, timeout, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.listContainersSegmentResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*ListContainersSegmentResponse), err
+}
+
+// listContainersSegmentPreparer prepares the ListContainersSegment request.
+func (client serviceClient) listContainersSegmentPreparer(prefix *string, marker *string, maxresults *int32, include ListContainersIncludeType, timeout *int32, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("GET", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if prefix != nil && len(*prefix) > 0 {
+ params.Set("prefix", *prefix)
+ }
+ if marker != nil && len(*marker) > 0 {
+ params.Set("marker", *marker)
+ }
+ if maxresults != nil {
+ params.Set("maxresults", strconv.FormatInt(int64(*maxresults), 10))
+ }
+ if include != ListContainersIncludeNone {
+ params.Set("include", string(include))
+ }
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ params.Set("comp", "list")
+ req.URL.RawQuery = params.Encode()
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ return req, nil
+}
+
+// listContainersSegmentResponder handles the response to the ListContainersSegment request.
+func (client serviceClient) listContainersSegmentResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK)
+ if resp == nil {
+ return nil, err
+ }
+ result := &ListContainersSegmentResponse{rawResponse: resp.Response()}
+ if err != nil {
+ return result, err
+ }
+ defer resp.Response().Body.Close()
+ b, err := ioutil.ReadAll(resp.Response().Body)
+ if err != nil {
+ return result, err
+ }
+ if len(b) > 0 {
+ b = removeBOM(b)
+ err = xml.Unmarshal(b, result)
+ if err != nil {
+ return result, NewResponseError(err, resp.Response(), "failed to unmarshal response body")
+ }
+ }
+ return result, nil
+}
+
+// SetProperties sets properties for a storage account's Blob service endpoint, including properties for Storage
+// Analytics and CORS (Cross-Origin Resource Sharing) rules
+//
+// storageServiceProperties is the StorageService properties. timeout is the timeout parameter is expressed in seconds.
+// For more information, see Setting
+// Timeouts for Blob Service Operations. requestID is provides a client-generated, opaque value with a 1 KB
+// character limit that is recorded in the analytics logs when storage analytics logging is enabled.
+func (client serviceClient) SetProperties(ctx context.Context, storageServiceProperties StorageServiceProperties, timeout *int32, requestID *string) (*ServiceSetPropertiesResponse, error) {
+ if err := validate([]validation{
+ {targetValue: storageServiceProperties,
+ constraints: []constraint{{target: "storageServiceProperties.Logging", name: null, rule: false,
+ chain: []constraint{{target: "storageServiceProperties.Logging.RetentionPolicy", name: null, rule: true,
+ chain: []constraint{{target: "storageServiceProperties.Logging.RetentionPolicy.Days", name: null, rule: false,
+ chain: []constraint{{target: "storageServiceProperties.Logging.RetentionPolicy.Days", name: inclusiveMinimum, rule: 1, chain: nil}}},
+ }},
+ }},
+ {target: "storageServiceProperties.HourMetrics", name: null, rule: false,
+ chain: []constraint{{target: "storageServiceProperties.HourMetrics.RetentionPolicy", name: null, rule: false,
+ chain: []constraint{{target: "storageServiceProperties.HourMetrics.RetentionPolicy.Days", name: null, rule: false,
+ chain: []constraint{{target: "storageServiceProperties.HourMetrics.RetentionPolicy.Days", name: inclusiveMinimum, rule: 1, chain: nil}}},
+ }},
+ }},
+ {target: "storageServiceProperties.MinuteMetrics", name: null, rule: false,
+ chain: []constraint{{target: "storageServiceProperties.MinuteMetrics.RetentionPolicy", name: null, rule: false,
+ chain: []constraint{{target: "storageServiceProperties.MinuteMetrics.RetentionPolicy.Days", name: null, rule: false,
+ chain: []constraint{{target: "storageServiceProperties.MinuteMetrics.RetentionPolicy.Days", name: inclusiveMinimum, rule: 1, chain: nil}}},
+ }},
+ }},
+ {target: "storageServiceProperties.DeleteRetentionPolicy", name: null, rule: false,
+ chain: []constraint{{target: "storageServiceProperties.DeleteRetentionPolicy.Days", name: null, rule: false,
+ chain: []constraint{{target: "storageServiceProperties.DeleteRetentionPolicy.Days", name: inclusiveMinimum, rule: 1, chain: nil}}},
+ }}}},
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.setPropertiesPreparer(storageServiceProperties, timeout, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.setPropertiesResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*ServiceSetPropertiesResponse), err
+}
+
+// setPropertiesPreparer prepares the SetProperties request.
+func (client serviceClient) setPropertiesPreparer(storageServiceProperties StorageServiceProperties, timeout *int32, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("PUT", client.url, nil)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ params.Set("restype", "service")
+ params.Set("comp", "properties")
+ req.URL.RawQuery = params.Encode()
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ b, err := xml.Marshal(storageServiceProperties)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to marshal request body")
+ }
+ req.Header.Set("Content-Type", "application/xml")
+ err = req.SetBody(bytes.NewReader(b))
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to set request body")
+ }
+ return req, nil
+}
+
+// setPropertiesResponder handles the response to the SetProperties request.
+func (client serviceClient) setPropertiesResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK, http.StatusAccepted)
+ if resp == nil {
+ return nil, err
+ }
+ io.Copy(ioutil.Discard, resp.Response().Body)
+ resp.Response().Body.Close()
+ return &ServiceSetPropertiesResponse{rawResponse: resp.Response()}, err
+}
+
+// SubmitBatch the Batch operation allows multiple API calls to be embedded into a single HTTP request.
+//
+// body is initial data body will be closed upon successful return. Callers should ensure closure when receiving an
+// error.contentLength is the length of the request. multipartContentType is required. The value of this header must be
+// multipart/mixed with a batch boundary. Example header value: multipart/mixed; boundary=batch_ timeout is the
+// timeout parameter is expressed in seconds. For more information, see Setting
+// Timeouts for Blob Service Operations. requestID is provides a client-generated, opaque value with a 1 KB
+// character limit that is recorded in the analytics logs when storage analytics logging is enabled.
+func (client serviceClient) SubmitBatch(ctx context.Context, body io.ReadSeeker, contentLength int64, multipartContentType string, timeout *int32, requestID *string) (*SubmitBatchResponse, error) {
+ if err := validate([]validation{
+ {targetValue: body,
+ constraints: []constraint{{target: "body", name: null, rule: true, chain: nil}}},
+ {targetValue: timeout,
+ constraints: []constraint{{target: "timeout", name: null, rule: false,
+ chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil {
+ return nil, err
+ }
+ req, err := client.submitBatchPreparer(body, contentLength, multipartContentType, timeout, requestID)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.submitBatchResponder}, req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*SubmitBatchResponse), err
+}
+
+// submitBatchPreparer prepares the SubmitBatch request.
+func (client serviceClient) submitBatchPreparer(body io.ReadSeeker, contentLength int64, multipartContentType string, timeout *int32, requestID *string) (pipeline.Request, error) {
+ req, err := pipeline.NewRequest("POST", client.url, body)
+ if err != nil {
+ return req, pipeline.NewError(err, "failed to create request")
+ }
+ params := req.URL.Query()
+ if timeout != nil {
+ params.Set("timeout", strconv.FormatInt(int64(*timeout), 10))
+ }
+ params.Set("comp", "batch")
+ req.URL.RawQuery = params.Encode()
+ req.Header.Set("Content-Length", strconv.FormatInt(contentLength, 10))
+ req.Header.Set("Content-Type", multipartContentType)
+ req.Header.Set("x-ms-version", ServiceVersion)
+ if requestID != nil {
+ req.Header.Set("x-ms-client-request-id", *requestID)
+ }
+ return req, nil
+}
+
+// submitBatchResponder handles the response to the SubmitBatch request.
+func (client serviceClient) submitBatchResponder(resp pipeline.Response) (pipeline.Response, error) {
+ err := validateResponse(resp, http.StatusOK)
+ if resp == nil {
+ return nil, err
+ }
+ return &SubmitBatchResponse{rawResponse: resp.Response()}, err
+}
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_validation.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_validation.go
new file mode 100644
index 00000000..98a2614e
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_validation.go
@@ -0,0 +1,367 @@
+package azblob
+
+// Code generated by Microsoft (R) AutoRest Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+ "fmt"
+ "github.com/Azure/azure-pipeline-go/pipeline"
+ "reflect"
+ "regexp"
+ "strings"
+)
+
+// Constraint stores constraint name, target field name
+// Rule and chain validations.
+type constraint struct {
+ // Target field name for validation.
+ target string
+
+ // Constraint name e.g. minLength, MaxLength, Pattern, etc.
+ name string
+
+ // Rule for constraint e.g. greater than 10, less than 5 etc.
+ rule interface{}
+
+ // Chain validations for struct type
+ chain []constraint
+}
+
+// Validation stores parameter-wise validation.
+type validation struct {
+ targetValue interface{}
+ constraints []constraint
+}
+
+// Constraint list
+const (
+ empty = "Empty"
+ null = "Null"
+ readOnly = "ReadOnly"
+ pattern = "Pattern"
+ maxLength = "MaxLength"
+ minLength = "MinLength"
+ maxItems = "MaxItems"
+ minItems = "MinItems"
+ multipleOf = "MultipleOf"
+ uniqueItems = "UniqueItems"
+ inclusiveMaximum = "InclusiveMaximum"
+ exclusiveMaximum = "ExclusiveMaximum"
+ exclusiveMinimum = "ExclusiveMinimum"
+ inclusiveMinimum = "InclusiveMinimum"
+)
+
+// Validate method validates constraints on parameter
+// passed in validation array.
+func validate(m []validation) error {
+ for _, item := range m {
+ v := reflect.ValueOf(item.targetValue)
+ for _, constraint := range item.constraints {
+ var err error
+ switch v.Kind() {
+ case reflect.Ptr:
+ err = validatePtr(v, constraint)
+ case reflect.String:
+ err = validateString(v, constraint)
+ case reflect.Struct:
+ err = validateStruct(v, constraint)
+ case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
+ err = validateInt(v, constraint)
+ case reflect.Float32, reflect.Float64:
+ err = validateFloat(v, constraint)
+ case reflect.Array, reflect.Slice, reflect.Map:
+ err = validateArrayMap(v, constraint)
+ default:
+ err = createError(v, constraint, fmt.Sprintf("unknown type %v", v.Kind()))
+ }
+ if err != nil {
+ return err
+ }
+ }
+ }
+ return nil
+}
+
+func validateStruct(x reflect.Value, v constraint, name ...string) error {
+ //Get field name from target name which is in format a.b.c
+ s := strings.Split(v.target, ".")
+ f := x.FieldByName(s[len(s)-1])
+ if isZero(f) {
+ return createError(x, v, fmt.Sprintf("field %q doesn't exist", v.target))
+ }
+ err := validate([]validation{
+ {
+ targetValue: getInterfaceValue(f),
+ constraints: []constraint{v},
+ },
+ })
+ return err
+}
+
+func validatePtr(x reflect.Value, v constraint) error {
+ if v.name == readOnly {
+ if !x.IsNil() {
+ return createError(x.Elem(), v, "readonly parameter; must send as nil or empty in request")
+ }
+ return nil
+ }
+ if x.IsNil() {
+ return checkNil(x, v)
+ }
+ if v.chain != nil {
+ return validate([]validation{
+ {
+ targetValue: getInterfaceValue(x.Elem()),
+ constraints: v.chain,
+ },
+ })
+ }
+ return nil
+}
+
+func validateInt(x reflect.Value, v constraint) error {
+ i := x.Int()
+ r, ok := v.rule.(int)
+ if !ok {
+ return createError(x, v, fmt.Sprintf("rule must be integer value for %v constraint; got: %v", v.name, v.rule))
+ }
+ switch v.name {
+ case multipleOf:
+ if i%int64(r) != 0 {
+ return createError(x, v, fmt.Sprintf("value must be a multiple of %v", r))
+ }
+ case exclusiveMinimum:
+ if i <= int64(r) {
+ return createError(x, v, fmt.Sprintf("value must be greater than %v", r))
+ }
+ case exclusiveMaximum:
+ if i >= int64(r) {
+ return createError(x, v, fmt.Sprintf("value must be less than %v", r))
+ }
+ case inclusiveMinimum:
+ if i < int64(r) {
+ return createError(x, v, fmt.Sprintf("value must be greater than or equal to %v", r))
+ }
+ case inclusiveMaximum:
+ if i > int64(r) {
+ return createError(x, v, fmt.Sprintf("value must be less than or equal to %v", r))
+ }
+ default:
+ return createError(x, v, fmt.Sprintf("constraint %v is not applicable for type integer", v.name))
+ }
+ return nil
+}
+
+func validateFloat(x reflect.Value, v constraint) error {
+ f := x.Float()
+ r, ok := v.rule.(float64)
+ if !ok {
+ return createError(x, v, fmt.Sprintf("rule must be float value for %v constraint; got: %v", v.name, v.rule))
+ }
+ switch v.name {
+ case exclusiveMinimum:
+ if f <= r {
+ return createError(x, v, fmt.Sprintf("value must be greater than %v", r))
+ }
+ case exclusiveMaximum:
+ if f >= r {
+ return createError(x, v, fmt.Sprintf("value must be less than %v", r))
+ }
+ case inclusiveMinimum:
+ if f < r {
+ return createError(x, v, fmt.Sprintf("value must be greater than or equal to %v", r))
+ }
+ case inclusiveMaximum:
+ if f > r {
+ return createError(x, v, fmt.Sprintf("value must be less than or equal to %v", r))
+ }
+ default:
+ return createError(x, v, fmt.Sprintf("constraint %s is not applicable for type float", v.name))
+ }
+ return nil
+}
+
+func validateString(x reflect.Value, v constraint) error {
+ s := x.String()
+ switch v.name {
+ case empty:
+ if len(s) == 0 {
+ return checkEmpty(x, v)
+ }
+ case pattern:
+ reg, err := regexp.Compile(v.rule.(string))
+ if err != nil {
+ return createError(x, v, err.Error())
+ }
+ if !reg.MatchString(s) {
+ return createError(x, v, fmt.Sprintf("value doesn't match pattern %v", v.rule))
+ }
+ case maxLength:
+ if _, ok := v.rule.(int); !ok {
+ return createError(x, v, fmt.Sprintf("rule must be integer value for %v constraint; got: %v", v.name, v.rule))
+ }
+ if len(s) > v.rule.(int) {
+ return createError(x, v, fmt.Sprintf("value length must be less than %v", v.rule))
+ }
+ case minLength:
+ if _, ok := v.rule.(int); !ok {
+ return createError(x, v, fmt.Sprintf("rule must be integer value for %v constraint; got: %v", v.name, v.rule))
+ }
+ if len(s) < v.rule.(int) {
+ return createError(x, v, fmt.Sprintf("value length must be greater than %v", v.rule))
+ }
+ case readOnly:
+ if len(s) > 0 {
+ return createError(reflect.ValueOf(s), v, "readonly parameter; must send as nil or empty in request")
+ }
+ default:
+ return createError(x, v, fmt.Sprintf("constraint %s is not applicable to string type", v.name))
+ }
+ if v.chain != nil {
+ return validate([]validation{
+ {
+ targetValue: getInterfaceValue(x),
+ constraints: v.chain,
+ },
+ })
+ }
+ return nil
+}
+
+func validateArrayMap(x reflect.Value, v constraint) error {
+ switch v.name {
+ case null:
+ if x.IsNil() {
+ return checkNil(x, v)
+ }
+ case empty:
+ if x.IsNil() || x.Len() == 0 {
+ return checkEmpty(x, v)
+ }
+ case maxItems:
+ if _, ok := v.rule.(int); !ok {
+ return createError(x, v, fmt.Sprintf("rule must be integer for %v constraint; got: %v", v.name, v.rule))
+ }
+ if x.Len() > v.rule.(int) {
+ return createError(x, v, fmt.Sprintf("maximum item limit is %v; got: %v", v.rule, x.Len()))
+ }
+ case minItems:
+ if _, ok := v.rule.(int); !ok {
+ return createError(x, v, fmt.Sprintf("rule must be integer for %v constraint; got: %v", v.name, v.rule))
+ }
+ if x.Len() < v.rule.(int) {
+ return createError(x, v, fmt.Sprintf("minimum item limit is %v; got: %v", v.rule, x.Len()))
+ }
+ case uniqueItems:
+ if x.Kind() == reflect.Array || x.Kind() == reflect.Slice {
+ if !checkForUniqueInArray(x) {
+ return createError(x, v, fmt.Sprintf("all items in parameter %q must be unique; got:%v", v.target, x))
+ }
+ } else if x.Kind() == reflect.Map {
+ if !checkForUniqueInMap(x) {
+ return createError(x, v, fmt.Sprintf("all items in parameter %q must be unique; got:%v", v.target, x))
+ }
+ } else {
+ return createError(x, v, fmt.Sprintf("type must be array, slice or map for constraint %v; got: %v", v.name, x.Kind()))
+ }
+ case readOnly:
+ if x.Len() != 0 {
+ return createError(x, v, "readonly parameter; must send as nil or empty in request")
+ }
+ case pattern:
+ reg, err := regexp.Compile(v.rule.(string))
+ if err != nil {
+ return createError(x, v, err.Error())
+ }
+ keys := x.MapKeys()
+ for _, k := range keys {
+ if !reg.MatchString(k.String()) {
+ return createError(k, v, fmt.Sprintf("map key doesn't match pattern %v", v.rule))
+ }
+ }
+ default:
+ return createError(x, v, fmt.Sprintf("constraint %v is not applicable to array, slice and map type", v.name))
+ }
+ if v.chain != nil {
+ return validate([]validation{
+ {
+ targetValue: getInterfaceValue(x),
+ constraints: v.chain,
+ },
+ })
+ }
+ return nil
+}
+
+func checkNil(x reflect.Value, v constraint) error {
+ if _, ok := v.rule.(bool); !ok {
+ return createError(x, v, fmt.Sprintf("rule must be bool value for %v constraint; got: %v", v.name, v.rule))
+ }
+ if v.rule.(bool) {
+ return createError(x, v, "value can not be null; required parameter")
+ }
+ return nil
+}
+
+func checkEmpty(x reflect.Value, v constraint) error {
+ if _, ok := v.rule.(bool); !ok {
+ return createError(x, v, fmt.Sprintf("rule must be bool value for %v constraint; got: %v", v.name, v.rule))
+ }
+ if v.rule.(bool) {
+ return createError(x, v, "value can not be null or empty; required parameter")
+ }
+ return nil
+}
+
+func checkForUniqueInArray(x reflect.Value) bool {
+ if x == reflect.Zero(reflect.TypeOf(x)) || x.Len() == 0 {
+ return false
+ }
+ arrOfInterface := make([]interface{}, x.Len())
+ for i := 0; i < x.Len(); i++ {
+ arrOfInterface[i] = x.Index(i).Interface()
+ }
+ m := make(map[interface{}]bool)
+ for _, val := range arrOfInterface {
+ if m[val] {
+ return false
+ }
+ m[val] = true
+ }
+ return true
+}
+
+func checkForUniqueInMap(x reflect.Value) bool {
+ if x == reflect.Zero(reflect.TypeOf(x)) || x.Len() == 0 {
+ return false
+ }
+ mapOfInterface := make(map[interface{}]interface{}, x.Len())
+ keys := x.MapKeys()
+ for _, k := range keys {
+ mapOfInterface[k.Interface()] = x.MapIndex(k).Interface()
+ }
+ m := make(map[interface{}]bool)
+ for _, val := range mapOfInterface {
+ if m[val] {
+ return false
+ }
+ m[val] = true
+ }
+ return true
+}
+
+func getInterfaceValue(x reflect.Value) interface{} {
+ if x.Kind() == reflect.Invalid {
+ return nil
+ }
+ return x.Interface()
+}
+
+func isZero(x interface{}) bool {
+ return x == reflect.Zero(reflect.TypeOf(x)).Interface()
+}
+
+func createError(x reflect.Value, v constraint, message string) error {
+ return pipeline.NewError(nil, fmt.Sprintf("validation failed: parameter=%s constraint=%s value=%#v details: %s",
+ v.target, v.name, getInterfaceValue(x), message))
+}
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_version.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_version.go
new file mode 100644
index 00000000..a193925c
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_version.go
@@ -0,0 +1,14 @@
+package azblob
+
+// Code generated by Microsoft (R) AutoRest Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// UserAgent returns the UserAgent string to use when sending http.Requests.
+func UserAgent() string {
+ return "Azure-SDK-For-Go/0.0.0 azblob/2019-02-02"
+}
+
+// Version returns the semantic version (see http://semver.org) of the client.
+func Version() string {
+ return "0.0.0"
+}
diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_response_helpers.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_response_helpers.go
new file mode 100644
index 00000000..9dcc5063
--- /dev/null
+++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_response_helpers.go
@@ -0,0 +1,242 @@
+package azblob
+
+import (
+ "context"
+ "io"
+ "net/http"
+ "time"
+)
+
+// BlobHTTPHeaders contains read/writeable blob properties.
+type BlobHTTPHeaders struct {
+ ContentType string
+ ContentMD5 []byte
+ ContentEncoding string
+ ContentLanguage string
+ ContentDisposition string
+ CacheControl string
+}
+
+// NewHTTPHeaders returns the user-modifiable properties for this blob.
+func (bgpr BlobGetPropertiesResponse) NewHTTPHeaders() BlobHTTPHeaders {
+ return BlobHTTPHeaders{
+ ContentType: bgpr.ContentType(),
+ ContentEncoding: bgpr.ContentEncoding(),
+ ContentLanguage: bgpr.ContentLanguage(),
+ ContentDisposition: bgpr.ContentDisposition(),
+ CacheControl: bgpr.CacheControl(),
+ ContentMD5: bgpr.ContentMD5(),
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+// NewHTTPHeaders returns the user-modifiable properties for this blob.
+func (dr downloadResponse) NewHTTPHeaders() BlobHTTPHeaders {
+ return BlobHTTPHeaders{
+ ContentType: dr.ContentType(),
+ ContentEncoding: dr.ContentEncoding(),
+ ContentLanguage: dr.ContentLanguage(),
+ ContentDisposition: dr.ContentDisposition(),
+ CacheControl: dr.CacheControl(),
+ ContentMD5: dr.ContentMD5(),
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+// DownloadResponse wraps AutoRest generated DownloadResponse and helps to provide info for retry.
+type DownloadResponse struct {
+ r *downloadResponse
+ ctx context.Context
+ b BlobURL
+ getInfo HTTPGetterInfo
+}
+
+// Body constructs new RetryReader stream for reading data. If a connection failes
+// while reading, it will make additional requests to reestablish a connection and
+// continue reading. Specifying a RetryReaderOption's with MaxRetryRequests set to 0
+// (the default), returns the original response body and no retries will be performed.
+func (r *DownloadResponse) Body(o RetryReaderOptions) io.ReadCloser {
+ if o.MaxRetryRequests == 0 { // No additional retries
+ return r.Response().Body
+ }
+ return NewRetryReader(r.ctx, r.Response(), r.getInfo, o,
+ func(ctx context.Context, getInfo HTTPGetterInfo) (*http.Response, error) {
+ resp, err := r.b.Download(ctx, getInfo.Offset, getInfo.Count,
+ BlobAccessConditions{
+ ModifiedAccessConditions: ModifiedAccessConditions{IfMatch: getInfo.ETag},
+ },
+ false)
+ if err != nil {
+ return nil, err
+ }
+ return resp.Response(), err
+ },
+ )
+}
+
+// Response returns the raw HTTP response object.
+func (r DownloadResponse) Response() *http.Response {
+ return r.r.Response()
+}
+
+// NewHTTPHeaders returns the user-modifiable properties for this blob.
+func (r DownloadResponse) NewHTTPHeaders() BlobHTTPHeaders {
+ return r.r.NewHTTPHeaders()
+}
+
+// BlobContentMD5 returns the value for header x-ms-blob-content-md5.
+func (r DownloadResponse) BlobContentMD5() []byte {
+ return r.r.BlobContentMD5()
+}
+
+// ContentMD5 returns the value for header Content-MD5.
+func (r DownloadResponse) ContentMD5() []byte {
+ return r.r.ContentMD5()
+}
+
+// StatusCode returns the HTTP status code of the response, e.g. 200.
+func (r DownloadResponse) StatusCode() int {
+ return r.r.StatusCode()
+}
+
+// Status returns the HTTP status message of the response, e.g. "200 OK".
+func (r DownloadResponse) Status() string {
+ return r.r.Status()
+}
+
+// AcceptRanges returns the value for header Accept-Ranges.
+func (r DownloadResponse) AcceptRanges() string {
+ return r.r.AcceptRanges()
+}
+
+// BlobCommittedBlockCount returns the value for header x-ms-blob-committed-block-count.
+func (r DownloadResponse) BlobCommittedBlockCount() int32 {
+ return r.r.BlobCommittedBlockCount()
+}
+
+// BlobSequenceNumber returns the value for header x-ms-blob-sequence-number.
+func (r DownloadResponse) BlobSequenceNumber() int64 {
+ return r.r.BlobSequenceNumber()
+}
+
+// BlobType returns the value for header x-ms-blob-type.
+func (r DownloadResponse) BlobType() BlobType {
+ return r.r.BlobType()
+}
+
+// CacheControl returns the value for header Cache-Control.
+func (r DownloadResponse) CacheControl() string {
+ return r.r.CacheControl()
+}
+
+// ContentDisposition returns the value for header Content-Disposition.
+func (r DownloadResponse) ContentDisposition() string {
+ return r.r.ContentDisposition()
+}
+
+// ContentEncoding returns the value for header Content-Encoding.
+func (r DownloadResponse) ContentEncoding() string {
+ return r.r.ContentEncoding()
+}
+
+// ContentLanguage returns the value for header Content-Language.
+func (r DownloadResponse) ContentLanguage() string {
+ return r.r.ContentLanguage()
+}
+
+// ContentLength returns the value for header Content-Length.
+func (r DownloadResponse) ContentLength() int64 {
+ return r.r.ContentLength()
+}
+
+// ContentRange returns the value for header Content-Range.
+func (r DownloadResponse) ContentRange() string {
+ return r.r.ContentRange()
+}
+
+// ContentType returns the value for header Content-Type.
+func (r DownloadResponse) ContentType() string {
+ return r.r.ContentType()
+}
+
+// CopyCompletionTime returns the value for header x-ms-copy-completion-time.
+func (r DownloadResponse) CopyCompletionTime() time.Time {
+ return r.r.CopyCompletionTime()
+}
+
+// CopyID returns the value for header x-ms-copy-id.
+func (r DownloadResponse) CopyID() string {
+ return r.r.CopyID()
+}
+
+// CopyProgress returns the value for header x-ms-copy-progress.
+func (r DownloadResponse) CopyProgress() string {
+ return r.r.CopyProgress()
+}
+
+// CopySource returns the value for header x-ms-copy-source.
+func (r DownloadResponse) CopySource() string {
+ return r.r.CopySource()
+}
+
+// CopyStatus returns the value for header x-ms-copy-status.
+func (r DownloadResponse) CopyStatus() CopyStatusType {
+ return r.r.CopyStatus()
+}
+
+// CopyStatusDescription returns the value for header x-ms-copy-status-description.
+func (r DownloadResponse) CopyStatusDescription() string {
+ return r.r.CopyStatusDescription()
+}
+
+// Date returns the value for header Date.
+func (r DownloadResponse) Date() time.Time {
+ return r.r.Date()
+}
+
+// ETag returns the value for header ETag.
+func (r DownloadResponse) ETag() ETag {
+ return r.r.ETag()
+}
+
+// IsServerEncrypted returns the value for header x-ms-server-encrypted.
+func (r DownloadResponse) IsServerEncrypted() string {
+ return r.r.IsServerEncrypted()
+}
+
+// LastModified returns the value for header Last-Modified.
+func (r DownloadResponse) LastModified() time.Time {
+ return r.r.LastModified()
+}
+
+// LeaseDuration returns the value for header x-ms-lease-duration.
+func (r DownloadResponse) LeaseDuration() LeaseDurationType {
+ return r.r.LeaseDuration()
+}
+
+// LeaseState returns the value for header x-ms-lease-state.
+func (r DownloadResponse) LeaseState() LeaseStateType {
+ return r.r.LeaseState()
+}
+
+// LeaseStatus returns the value for header x-ms-lease-status.
+func (r DownloadResponse) LeaseStatus() LeaseStatusType {
+ return r.r.LeaseStatus()
+}
+
+// RequestID returns the value for header x-ms-request-id.
+func (r DownloadResponse) RequestID() string {
+ return r.r.RequestID()
+}
+
+// Version returns the value for header x-ms-version.
+func (r DownloadResponse) Version() string {
+ return r.r.Version()
+}
+
+// NewMetadata returns user-defined key/value pairs.
+func (r DownloadResponse) NewMetadata() Metadata {
+ return r.r.NewMetadata()
+}
diff --git a/vendor/github.com/aws/aws-sdk-go/aws/credentials/credentials.go b/vendor/github.com/aws/aws-sdk-go/aws/credentials/credentials.go
index c43b1bc0..a880a3de 100644
--- a/vendor/github.com/aws/aws-sdk-go/aws/credentials/credentials.go
+++ b/vendor/github.com/aws/aws-sdk-go/aws/credentials/credentials.go
@@ -50,7 +50,7 @@ package credentials
import (
"fmt"
- "sync/atomic"
+ "sync"
"time"
"github.com/aws/aws-sdk-go/aws/awserr"
@@ -207,9 +207,10 @@ func (e *Expiry) ExpiresAt() time.Time {
// first instance of the credentials Value. All calls to Get() after that
// will return the cached credentials Value until IsExpired() returns true.
type Credentials struct {
- creds atomic.Value
- sf singleflight.Group
+ sf singleflight.Group
+ m sync.RWMutex
+ creds Value
provider Provider
}
@@ -218,7 +219,6 @@ func NewCredentials(provider Provider) *Credentials {
c := &Credentials{
provider: provider,
}
- c.creds.Store(Value{})
return c
}
@@ -235,8 +235,17 @@ func NewCredentials(provider Provider) *Credentials {
//
// Passed in Context is equivalent to aws.Context, and context.Context.
func (c *Credentials) GetWithContext(ctx Context) (Value, error) {
- if curCreds := c.creds.Load(); !c.isExpired(curCreds) {
- return curCreds.(Value), nil
+ // Check if credentials are cached, and not expired.
+ select {
+ case curCreds, ok := <-c.asyncIsExpired():
+ // ok will only be true, of the credentials were not expired. ok will
+ // be false and have no value if the credentials are expired.
+ if ok {
+ return curCreds, nil
+ }
+ case <-ctx.Done():
+ return Value{}, awserr.New("RequestCanceled",
+ "request context canceled", ctx.Err())
}
// Cannot pass context down to the actual retrieve, because the first
@@ -254,18 +263,23 @@ func (c *Credentials) GetWithContext(ctx Context) (Value, error) {
}
}
-func (c *Credentials) singleRetrieve(ctx Context) (creds interface{}, err error) {
- if curCreds := c.creds.Load(); !c.isExpired(curCreds) {
- return curCreds.(Value), nil
+func (c *Credentials) singleRetrieve(ctx Context) (interface{}, error) {
+ c.m.Lock()
+ defer c.m.Unlock()
+
+ if curCreds := c.creds; !c.isExpiredLocked(curCreds) {
+ return curCreds, nil
}
+ var creds Value
+ var err error
if p, ok := c.provider.(ProviderWithContext); ok {
creds, err = p.RetrieveWithContext(ctx)
} else {
creds, err = c.provider.Retrieve()
}
if err == nil {
- c.creds.Store(creds)
+ c.creds = creds
}
return creds, err
@@ -290,7 +304,10 @@ func (c *Credentials) Get() (Value, error) {
// This will override the Provider's expired state, and force Credentials
// to call the Provider's Retrieve().
func (c *Credentials) Expire() {
- c.creds.Store(Value{})
+ c.m.Lock()
+ defer c.m.Unlock()
+
+ c.creds = Value{}
}
// IsExpired returns if the credentials are no longer valid, and need
@@ -299,11 +316,32 @@ func (c *Credentials) Expire() {
// If the Credentials were forced to be expired with Expire() this will
// reflect that override.
func (c *Credentials) IsExpired() bool {
- return c.isExpired(c.creds.Load())
+ c.m.RLock()
+ defer c.m.RUnlock()
+
+ return c.isExpiredLocked(c.creds)
}
-// isExpired helper method wrapping the definition of expired credentials.
-func (c *Credentials) isExpired(creds interface{}) bool {
+// asyncIsExpired returns a channel of credentials Value. If the channel is
+// closed the credentials are expired and credentials value are not empty.
+func (c *Credentials) asyncIsExpired() <-chan Value {
+ ch := make(chan Value, 1)
+ go func() {
+ c.m.RLock()
+ defer c.m.RUnlock()
+
+ if curCreds := c.creds; !c.isExpiredLocked(curCreds) {
+ ch <- curCreds
+ }
+
+ close(ch)
+ }()
+
+ return ch
+}
+
+// isExpiredLocked helper method wrapping the definition of expired credentials.
+func (c *Credentials) isExpiredLocked(creds interface{}) bool {
return creds == nil || creds.(Value) == Value{} || c.provider.IsExpired()
}
@@ -311,13 +349,17 @@ func (c *Credentials) isExpired(creds interface{}) bool {
// the underlying Provider, if it supports that interface. Otherwise, it returns
// an error.
func (c *Credentials) ExpiresAt() (time.Time, error) {
+ c.m.RLock()
+ defer c.m.RUnlock()
+
expirer, ok := c.provider.(Expirer)
if !ok {
return time.Time{}, awserr.New("ProviderNotExpirer",
- fmt.Sprintf("provider %s does not support ExpiresAt()", c.creds.Load().(Value).ProviderName),
+ fmt.Sprintf("provider %s does not support ExpiresAt()",
+ c.creds.ProviderName),
nil)
}
- if c.creds.Load().(Value) == (Value{}) {
+ if c.creds == (Value{}) {
// set expiration time to the distant past
return time.Time{}, nil
}
diff --git a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go
index 4e5bdbb7..c3039108 100644
--- a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go
+++ b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go
@@ -723,6 +723,7 @@ var awsPartition = partition{
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
"eu-north-1": endpoint{},
+ "eu-south-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"eu-west-3": endpoint{},
@@ -837,6 +838,7 @@ var awsPartition = partition{
Protocols: []string{"http", "https"},
},
Endpoints: endpoints{
+ "af-south-1": endpoint{},
"ap-east-1": endpoint{},
"ap-northeast-1": endpoint{},
"ap-northeast-2": endpoint{},
@@ -846,6 +848,7 @@ var awsPartition = partition{
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
"eu-north-1": endpoint{},
+ "eu-south-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"eu-west-3": endpoint{},
@@ -860,6 +863,7 @@ var awsPartition = partition{
"backup": service{
Endpoints: endpoints{
+ "af-south-1": endpoint{},
"ap-east-1": endpoint{},
"ap-northeast-1": endpoint{},
"ap-northeast-2": endpoint{},
@@ -869,6 +873,7 @@ var awsPartition = partition{
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
"eu-north-1": endpoint{},
+ "eu-south-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"eu-west-3": endpoint{},
@@ -2036,12 +2041,42 @@ var awsPartition = partition{
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"eu-west-3": endpoint{},
- "me-south-1": endpoint{},
- "sa-east-1": endpoint{},
- "us-east-1": endpoint{},
- "us-east-2": endpoint{},
- "us-west-1": endpoint{},
- "us-west-2": endpoint{},
+ "fips-ca-central-1": endpoint{
+ Hostname: "ebs-fips.ca-central-1.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "ca-central-1",
+ },
+ },
+ "fips-us-east-1": endpoint{
+ Hostname: "ebs-fips.us-east-1.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "us-east-1",
+ },
+ },
+ "fips-us-east-2": endpoint{
+ Hostname: "ebs-fips.us-east-2.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "us-east-2",
+ },
+ },
+ "fips-us-west-1": endpoint{
+ Hostname: "ebs-fips.us-west-1.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "us-west-1",
+ },
+ },
+ "fips-us-west-2": endpoint{
+ Hostname: "ebs-fips.us-west-2.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "us-west-2",
+ },
+ },
+ "me-south-1": endpoint{},
+ "sa-east-1": endpoint{},
+ "us-east-1": endpoint{},
+ "us-east-2": endpoint{},
+ "us-west-1": endpoint{},
+ "us-west-2": endpoint{},
},
},
"ec2": service{
@@ -2192,6 +2227,12 @@ var awsPartition = partition{
Region: "us-east-2",
},
},
+ "fips-us-west-1": endpoint{
+ Hostname: "fips.eks.us-west-1.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "us-west-1",
+ },
+ },
"fips-us-west-2": endpoint{
Hostname: "fips.eks.us-west-2.amazonaws.com",
CredentialScope: credentialScope{
@@ -3455,6 +3496,7 @@ var awsPartition = partition{
"sa-east-1": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
+ "us-west-1": endpoint{},
"us-west-2": endpoint{},
},
},
@@ -3518,11 +3560,35 @@ var awsPartition = partition{
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"eu-west-3": endpoint{},
- "sa-east-1": endpoint{},
- "us-east-1": endpoint{},
- "us-east-2": endpoint{},
- "us-west-1": endpoint{},
- "us-west-2": endpoint{},
+ "fips-us-east-1": endpoint{
+ Hostname: "lakeformation-fips.us-east-1.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "us-east-1",
+ },
+ },
+ "fips-us-east-2": endpoint{
+ Hostname: "lakeformation-fips.us-east-2.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "us-east-2",
+ },
+ },
+ "fips-us-west-1": endpoint{
+ Hostname: "lakeformation-fips.us-west-1.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "us-west-1",
+ },
+ },
+ "fips-us-west-2": endpoint{
+ Hostname: "lakeformation-fips.us-west-2.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "us-west-2",
+ },
+ },
+ "sa-east-1": endpoint{},
+ "us-east-1": endpoint{},
+ "us-east-2": endpoint{},
+ "us-west-1": endpoint{},
+ "us-west-2": endpoint{},
},
},
"lambda": service{
@@ -4408,6 +4474,7 @@ var awsPartition = partition{
"ap-northeast-1": endpoint{},
"ap-northeast-2": endpoint{},
"ap-south-1": endpoint{},
+ "ap-southeast-1": endpoint{},
"ap-southeast-2": endpoint{},
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
@@ -4828,6 +4895,12 @@ var awsPartition = partition{
Region: "us-east-1",
},
},
+ "fips-aws-global": endpoint{
+ Hostname: "route53-fips.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "us-east-1",
+ },
+ },
},
},
"route53domains": service{
@@ -5436,10 +5509,16 @@ var awsPartition = partition{
"eu-west-3": endpoint{},
"me-south-1": endpoint{},
"sa-east-1": endpoint{},
- "us-east-1": endpoint{},
- "us-east-2": endpoint{},
- "us-west-1": endpoint{},
- "us-west-2": endpoint{},
+ "servicediscovery-fips": endpoint{
+ Hostname: "servicediscovery-fips.ca-central-1.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "ca-central-1",
+ },
+ },
+ "us-east-1": endpoint{},
+ "us-east-2": endpoint{},
+ "us-west-1": endpoint{},
+ "us-west-2": endpoint{},
},
},
"servicequotas": service{
@@ -5795,6 +5874,12 @@ var awsPartition = partition{
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"eu-west-3": endpoint{},
+ "fips-ca-central-1": endpoint{
+ Hostname: "ssm-fips.ca-central-1.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "ca-central-1",
+ },
+ },
"fips-us-east-1": endpoint{
Hostname: "ssm-fips.us-east-1.amazonaws.com",
CredentialScope: credentialScope{
@@ -5821,34 +5906,10 @@ var awsPartition = partition{
},
"me-south-1": endpoint{},
"sa-east-1": endpoint{},
- "ssm-facade-fips-us-east-1": endpoint{
- Hostname: "ssm-facade-fips.us-east-1.amazonaws.com",
- CredentialScope: credentialScope{
- Region: "us-east-1",
- },
- },
- "ssm-facade-fips-us-east-2": endpoint{
- Hostname: "ssm-facade-fips.us-east-2.amazonaws.com",
- CredentialScope: credentialScope{
- Region: "us-east-2",
- },
- },
- "ssm-facade-fips-us-west-1": endpoint{
- Hostname: "ssm-facade-fips.us-west-1.amazonaws.com",
- CredentialScope: credentialScope{
- Region: "us-west-1",
- },
- },
- "ssm-facade-fips-us-west-2": endpoint{
- Hostname: "ssm-facade-fips.us-west-2.amazonaws.com",
- CredentialScope: credentialScope{
- Region: "us-west-2",
- },
- },
- "us-east-1": endpoint{},
- "us-east-2": endpoint{},
- "us-west-1": endpoint{},
- "us-west-2": endpoint{},
+ "us-east-1": endpoint{},
+ "us-east-2": endpoint{},
+ "us-west-1": endpoint{},
+ "us-west-2": endpoint{},
},
},
"states": service{
@@ -6190,7 +6251,9 @@ var awsPartition = partition{
Endpoints: endpoints{
"ap-southeast-2": endpoint{},
"ca-central-1": endpoint{},
+ "eu-central-1": endpoint{},
"eu-west-1": endpoint{},
+ "eu-west-2": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
"us-west-2": endpoint{},
@@ -7014,6 +7077,13 @@ var awscnPartition = partition{
"cn-northwest-1": endpoint{},
},
},
+ "fsx": service{
+
+ Endpoints: endpoints{
+ "cn-north-1": endpoint{},
+ "cn-northwest-1": endpoint{},
+ },
+ },
"gamelift": service{
Endpoints: endpoints{
@@ -7076,6 +7146,12 @@ var awscnPartition = partition{
"cn-northwest-1": endpoint{},
},
},
+ "iotanalytics": service{
+
+ Endpoints: endpoints{
+ "cn-north-1": endpoint{},
+ },
+ },
"iotevents": service{
Endpoints: endpoints{
@@ -7297,6 +7373,13 @@ var awscnPartition = partition{
"cn-northwest-1": endpoint{},
},
},
+ "securityhub": service{
+
+ Endpoints: endpoints{
+ "cn-north-1": endpoint{},
+ "cn-northwest-1": endpoint{},
+ },
+ },
"serverlessrepo": service{
Defaults: endpoint{
Protocols: []string{"https"},
@@ -7622,8 +7705,12 @@ var awsusgovPartition = partition{
},
},
Endpoints: endpoints{
- "us-gov-east-1": endpoint{},
- "us-gov-west-1": endpoint{},
+ "us-gov-east-1": endpoint{
+ Protocols: []string{"http", "https"},
+ },
+ "us-gov-west-1": endpoint{
+ Protocols: []string{"http", "https"},
+ },
},
},
"appstream2": service{
@@ -7678,8 +7765,12 @@ var awsusgovPartition = partition{
Protocols: []string{"http", "https"},
},
Endpoints: endpoints{
- "us-gov-east-1": endpoint{},
- "us-gov-west-1": endpoint{},
+ "us-gov-east-1": endpoint{
+ Protocols: []string{"http", "https"},
+ },
+ "us-gov-west-1": endpoint{
+ Protocols: []string{"http", "https"},
+ },
},
},
"backup": service{
@@ -7831,6 +7922,12 @@ var awsusgovPartition = partition{
"cognito-identity": service{
Endpoints: endpoints{
+ "fips-us-gov-west-1": endpoint{
+ Hostname: "cognito-identity-fips.us-gov-west-1.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "us-gov-west-1",
+ },
+ },
"us-gov-west-1": endpoint{},
},
},
@@ -8036,6 +8133,18 @@ var awsusgovPartition = partition{
Protocols: []string{"http", "https"},
},
Endpoints: endpoints{
+ "fips-us-gov-east-1": endpoint{
+ Hostname: "eks.us-gov-east-1.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "us-gov-east-1",
+ },
+ },
+ "fips-us-gov-west-1": endpoint{
+ Hostname: "eks.us-gov-west-1.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "us-gov-west-1",
+ },
+ },
"us-gov-east-1": endpoint{},
"us-gov-west-1": endpoint{},
},
@@ -8235,6 +8344,12 @@ var awsusgovPartition = partition{
Protocols: []string{"https"},
},
Endpoints: endpoints{
+ "dataplane-us-gov-west-1": endpoint{
+ Hostname: "greengrass-ats.iot.us-gov-west-1.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "us-gov-west-1",
+ },
+ },
"us-gov-west-1": endpoint{
Hostname: "greengrass.us-gov-west-1.amazonaws.com",
CredentialScope: credentialScope{
@@ -8249,6 +8364,7 @@ var awsusgovPartition = partition{
Protocols: []string{"https"},
},
Endpoints: endpoints{
+ "us-gov-east-1": endpoint{},
"us-gov-west-1": endpoint{},
"us-gov-west-1-fips": endpoint{
Hostname: "guardduty.us-gov-west-1.amazonaws.com",
@@ -8636,6 +8752,12 @@ var awsusgovPartition = partition{
Region: "us-gov-west-1",
},
},
+ "fips-aws-us-gov-global": endpoint{
+ Hostname: "route53.us-gov.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "us-gov-west-1",
+ },
+ },
},
},
"route53resolver": service{
@@ -8882,18 +9004,6 @@ var awsusgovPartition = partition{
Region: "us-gov-west-1",
},
},
- "ssm-facade-fips-us-gov-east-1": endpoint{
- Hostname: "ssm-facade.us-gov-east-1.amazonaws.com",
- CredentialScope: credentialScope{
- Region: "us-gov-east-1",
- },
- },
- "ssm-facade-fips-us-gov-west-1": endpoint{
- Hostname: "ssm-facade.us-gov-west-1.amazonaws.com",
- CredentialScope: credentialScope{
- Region: "us-gov-west-1",
- },
- },
"us-gov-east-1": endpoint{},
"us-gov-west-1": endpoint{},
},
@@ -9518,6 +9628,17 @@ var awsisobPartition = partition{
},
},
Services: services{
+ "api.ecr": service{
+
+ Endpoints: endpoints{
+ "us-isob-east-1": endpoint{
+ Hostname: "api.ecr.us-isob-east-1.sc2s.sgov.gov",
+ CredentialScope: credentialScope{
+ Region: "us-isob-east-1",
+ },
+ },
+ },
+ },
"application-autoscaling": service{
Defaults: endpoint{
Protocols: []string{"http", "https"},
@@ -9597,6 +9718,12 @@ var awsisobPartition = partition{
},
},
},
+ "ecs": service{
+
+ Endpoints: endpoints{
+ "us-isob-east-1": endpoint{},
+ },
+ },
"elasticache": service{
Endpoints: endpoints{
diff --git a/vendor/github.com/aws/aws-sdk-go/aws/version.go b/vendor/github.com/aws/aws-sdk-go/aws/version.go
index 3e11d66f..cc41ca0b 100644
--- a/vendor/github.com/aws/aws-sdk-go/aws/version.go
+++ b/vendor/github.com/aws/aws-sdk-go/aws/version.go
@@ -5,4 +5,4 @@ package aws
const SDKName = "aws-sdk-go"
// SDKVersion is the version of this SDK
-const SDKVersion = "1.35.10"
+const SDKVersion = "1.35.24"
diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/ini_parser.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/ini_parser.go
index cf9fad81..55fa73eb 100644
--- a/vendor/github.com/aws/aws-sdk-go/internal/ini/ini_parser.go
+++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/ini_parser.go
@@ -63,9 +63,10 @@ var parseTable = map[ASTKind]map[TokenType]int{
TokenNone: MarkCompleteState,
},
ASTKindEqualExpr: map[TokenType]int{
- TokenLit: ValueState,
- TokenWS: SkipTokenState,
- TokenNL: SkipState,
+ TokenLit: ValueState,
+ TokenWS: SkipTokenState,
+ TokenNL: SkipState,
+ TokenNone: SkipState,
},
ASTKindStatement: map[TokenType]int{
TokenLit: SectionState,
diff --git a/vendor/github.com/aws/aws-sdk-go/service/ec2/api.go b/vendor/github.com/aws/aws-sdk-go/service/ec2/api.go
index a0bb5c15..ba7661ad 100644
--- a/vendor/github.com/aws/aws-sdk-go/service/ec2/api.go
+++ b/vendor/github.com/aws/aws-sdk-go/service/ec2/api.go
@@ -1190,6 +1190,98 @@ func (c *EC2) AssociateDhcpOptionsWithContext(ctx aws.Context, input *AssociateD
return out, req.Send()
}
+const opAssociateEnclaveCertificateIamRole = "AssociateEnclaveCertificateIamRole"
+
+// AssociateEnclaveCertificateIamRoleRequest generates a "aws/request.Request" representing the
+// client's request for the AssociateEnclaveCertificateIamRole operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See AssociateEnclaveCertificateIamRole for more information on using the AssociateEnclaveCertificateIamRole
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the AssociateEnclaveCertificateIamRoleRequest method.
+// req, resp := client.AssociateEnclaveCertificateIamRoleRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateEnclaveCertificateIamRole
+func (c *EC2) AssociateEnclaveCertificateIamRoleRequest(input *AssociateEnclaveCertificateIamRoleInput) (req *request.Request, output *AssociateEnclaveCertificateIamRoleOutput) {
+ op := &request.Operation{
+ Name: opAssociateEnclaveCertificateIamRole,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &AssociateEnclaveCertificateIamRoleInput{}
+ }
+
+ output = &AssociateEnclaveCertificateIamRoleOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// AssociateEnclaveCertificateIamRole API operation for Amazon Elastic Compute Cloud.
+//
+// Associates an AWS Identity and Access Management (IAM) role with an AWS Certificate
+// Manager (ACM) certificate. This enables the certificate to be used by the
+// ACM for Nitro Enclaves application inside an enclave. For more information,
+// see AWS Certificate Manager for Nitro Enclaves (https://docs.aws.amazon.com/enclaves/latest/user/nitro-enclave-refapp.html)
+// in the AWS Nitro Enclaves User Guide.
+//
+// When the IAM role is associated with the ACM certificate, places the certificate,
+// certificate chain, and encrypted private key in an Amazon S3 bucket that
+// only the associated IAM role can access. The private key of the certificate
+// is encrypted with an AWS-managed KMS customer master (CMK) that has an attached
+// attestation-based CMK policy.
+//
+// To enable the IAM role to access the Amazon S3 object, you must grant it
+// permission to call s3:GetObject on the Amazon S3 bucket returned by the command.
+// To enable the IAM role to access the AWS KMS CMK, you must grant it permission
+// to call kms:Decrypt on AWS KMS CMK returned by the command. For more information,
+// see Grant the role permission to access the certificate and encryption key
+// (https://docs.aws.amazon.com/enclaves/latest/user/nitro-enclave-refapp.html#add-policy)
+// in the AWS Nitro Enclaves User Guide.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation AssociateEnclaveCertificateIamRole for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateEnclaveCertificateIamRole
+func (c *EC2) AssociateEnclaveCertificateIamRole(input *AssociateEnclaveCertificateIamRoleInput) (*AssociateEnclaveCertificateIamRoleOutput, error) {
+ req, out := c.AssociateEnclaveCertificateIamRoleRequest(input)
+ return out, req.Send()
+}
+
+// AssociateEnclaveCertificateIamRoleWithContext is the same as AssociateEnclaveCertificateIamRole with the addition of
+// the ability to pass a context and additional request options.
+//
+// See AssociateEnclaveCertificateIamRole for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) AssociateEnclaveCertificateIamRoleWithContext(ctx aws.Context, input *AssociateEnclaveCertificateIamRoleInput, opts ...request.Option) (*AssociateEnclaveCertificateIamRoleOutput, error) {
+ req, out := c.AssociateEnclaveCertificateIamRoleRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
const opAssociateIamInstanceProfile = "AssociateIamInstanceProfile"
// AssociateIamInstanceProfileRequest generates a "aws/request.Request" representing the
@@ -25354,6 +25446,13 @@ func (c *EC2) DescribeVpcEndpointServicesRequest(input *DescribeVpcEndpointServi
//
// Describes available services to which you can create a VPC endpoint.
//
+// When the service provider and the consumer have different accounts multiple
+// Availability Zones, and the consumer views the VPC endpoint service information,
+// the response only includes the common Availability Zones. For example, when
+// the service provider account uses us-east-1a and us-east-1c and the consumer
+// uses us-east-1a and us-east-1a and us-east-1b, the response includes the
+// VPC endpoint services in the common Availability Zone, us-east-1a.
+//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
@@ -26960,6 +27059,86 @@ func (c *EC2) DisassociateClientVpnTargetNetworkWithContext(ctx aws.Context, inp
return out, req.Send()
}
+const opDisassociateEnclaveCertificateIamRole = "DisassociateEnclaveCertificateIamRole"
+
+// DisassociateEnclaveCertificateIamRoleRequest generates a "aws/request.Request" representing the
+// client's request for the DisassociateEnclaveCertificateIamRole operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See DisassociateEnclaveCertificateIamRole for more information on using the DisassociateEnclaveCertificateIamRole
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the DisassociateEnclaveCertificateIamRoleRequest method.
+// req, resp := client.DisassociateEnclaveCertificateIamRoleRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateEnclaveCertificateIamRole
+func (c *EC2) DisassociateEnclaveCertificateIamRoleRequest(input *DisassociateEnclaveCertificateIamRoleInput) (req *request.Request, output *DisassociateEnclaveCertificateIamRoleOutput) {
+ op := &request.Operation{
+ Name: opDisassociateEnclaveCertificateIamRole,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &DisassociateEnclaveCertificateIamRoleInput{}
+ }
+
+ output = &DisassociateEnclaveCertificateIamRoleOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// DisassociateEnclaveCertificateIamRole API operation for Amazon Elastic Compute Cloud.
+//
+// Disassociates an IAM role from an AWS Certificate Manager (ACM) certificate.
+// Disassociating an IAM role from an ACM certificate removes the Amazon S3
+// object that contains the certificate, certificate chain, and encrypted private
+// key from the Amazon S3 bucket. It also revokes the IAM role's permission
+// to use the AWS Key Management Service (KMS) customer master key (CMK) used
+// to encrypt the private key. This effectively revokes the role's permission
+// to use the certificate.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation DisassociateEnclaveCertificateIamRole for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateEnclaveCertificateIamRole
+func (c *EC2) DisassociateEnclaveCertificateIamRole(input *DisassociateEnclaveCertificateIamRoleInput) (*DisassociateEnclaveCertificateIamRoleOutput, error) {
+ req, out := c.DisassociateEnclaveCertificateIamRoleRequest(input)
+ return out, req.Send()
+}
+
+// DisassociateEnclaveCertificateIamRoleWithContext is the same as DisassociateEnclaveCertificateIamRole with the addition of
+// the ability to pass a context and additional request options.
+//
+// See DisassociateEnclaveCertificateIamRole for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) DisassociateEnclaveCertificateIamRoleWithContext(ctx aws.Context, input *DisassociateEnclaveCertificateIamRoleInput, opts ...request.Option) (*DisassociateEnclaveCertificateIamRoleOutput, error) {
+ req, out := c.DisassociateEnclaveCertificateIamRoleRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
const opDisassociateIamInstanceProfile = "DisassociateIamInstanceProfile"
// DisassociateIamInstanceProfileRequest generates a "aws/request.Request" representing the
@@ -28289,6 +28468,85 @@ func (c *EC2) ExportTransitGatewayRoutesWithContext(ctx aws.Context, input *Expo
return out, req.Send()
}
+const opGetAssociatedEnclaveCertificateIamRoles = "GetAssociatedEnclaveCertificateIamRoles"
+
+// GetAssociatedEnclaveCertificateIamRolesRequest generates a "aws/request.Request" representing the
+// client's request for the GetAssociatedEnclaveCertificateIamRoles operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See GetAssociatedEnclaveCertificateIamRoles for more information on using the GetAssociatedEnclaveCertificateIamRoles
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the GetAssociatedEnclaveCertificateIamRolesRequest method.
+// req, resp := client.GetAssociatedEnclaveCertificateIamRolesRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetAssociatedEnclaveCertificateIamRoles
+func (c *EC2) GetAssociatedEnclaveCertificateIamRolesRequest(input *GetAssociatedEnclaveCertificateIamRolesInput) (req *request.Request, output *GetAssociatedEnclaveCertificateIamRolesOutput) {
+ op := &request.Operation{
+ Name: opGetAssociatedEnclaveCertificateIamRoles,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &GetAssociatedEnclaveCertificateIamRolesInput{}
+ }
+
+ output = &GetAssociatedEnclaveCertificateIamRolesOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// GetAssociatedEnclaveCertificateIamRoles API operation for Amazon Elastic Compute Cloud.
+//
+// Returns the IAM roles that are associated with the specified AWS Certificate
+// Manager (ACM) certificate. It also returns the name of the Amazon S3 bucket
+// and the Amazon S3 object key where the certificate, certificate chain, and
+// encrypted private key bundle are stored, and the ARN of the AWS Key Management
+// Service (KMS) customer master key (CMK) that's used to encrypt the private
+// key.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation GetAssociatedEnclaveCertificateIamRoles for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetAssociatedEnclaveCertificateIamRoles
+func (c *EC2) GetAssociatedEnclaveCertificateIamRoles(input *GetAssociatedEnclaveCertificateIamRolesInput) (*GetAssociatedEnclaveCertificateIamRolesOutput, error) {
+ req, out := c.GetAssociatedEnclaveCertificateIamRolesRequest(input)
+ return out, req.Send()
+}
+
+// GetAssociatedEnclaveCertificateIamRolesWithContext is the same as GetAssociatedEnclaveCertificateIamRoles with the addition of
+// the ability to pass a context and additional request options.
+//
+// See GetAssociatedEnclaveCertificateIamRoles for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) GetAssociatedEnclaveCertificateIamRolesWithContext(ctx aws.Context, input *GetAssociatedEnclaveCertificateIamRolesInput, opts ...request.Option) (*GetAssociatedEnclaveCertificateIamRolesOutput, error) {
+ req, out := c.GetAssociatedEnclaveCertificateIamRolesRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
const opGetAssociatedIpv6PoolCidrs = "GetAssociatedIpv6PoolCidrs"
// GetAssociatedIpv6PoolCidrsRequest generates a "aws/request.Request" representing the
@@ -34958,7 +35216,7 @@ func (c *EC2) RebootInstancesRequest(input *RebootInstancesInput) (req *request.
// succeeds if the instances are valid and belong to you. Requests to reboot
// terminated instances are ignored.
//
-// If an instance does not cleanly shut down within four minutes, Amazon EC2
+// If an instance does not cleanly shut down within a few minutes, Amazon EC2
// performs a hard reboot.
//
// For more information about troubleshooting, see Getting console output and
@@ -38230,7 +38488,7 @@ func (c *EC2) StartVpcEndpointServicePrivateDnsVerificationRequest(input *StartV
//
// Before the service provider runs this command, they must add a record to
// the DNS server. For more information, see Adding a TXT Record to Your Domain's
-// DNS Server (https://docs.aws.amazon.com/vpc/latest/userguide/ndpoint-services-dns-validation.html#add-dns-txt-record)
+// DNS Server (https://docs.aws.amazon.com/vpc/latest/userguide/endpoint-services-dns-validation.html#add-dns-txt-record)
// in the Amazon VPC User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -40779,6 +41037,109 @@ func (s AssociateDhcpOptionsOutput) GoString() string {
return s.String()
}
+type AssociateEnclaveCertificateIamRoleInput struct {
+ _ struct{} `type:"structure"`
+
+ // The ARN of the ACM certificate with which to associate the IAM role.
+ CertificateArn *string `min:"1" type:"string"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // The ARN of the IAM role to associate with the ACM certificate. You can associate
+ // up to 16 IAM roles with an ACM certificate.
+ RoleArn *string `min:"1" type:"string"`
+}
+
+// String returns the string representation
+func (s AssociateEnclaveCertificateIamRoleInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s AssociateEnclaveCertificateIamRoleInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *AssociateEnclaveCertificateIamRoleInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "AssociateEnclaveCertificateIamRoleInput"}
+ if s.CertificateArn != nil && len(*s.CertificateArn) < 1 {
+ invalidParams.Add(request.NewErrParamMinLen("CertificateArn", 1))
+ }
+ if s.RoleArn != nil && len(*s.RoleArn) < 1 {
+ invalidParams.Add(request.NewErrParamMinLen("RoleArn", 1))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetCertificateArn sets the CertificateArn field's value.
+func (s *AssociateEnclaveCertificateIamRoleInput) SetCertificateArn(v string) *AssociateEnclaveCertificateIamRoleInput {
+ s.CertificateArn = &v
+ return s
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *AssociateEnclaveCertificateIamRoleInput) SetDryRun(v bool) *AssociateEnclaveCertificateIamRoleInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetRoleArn sets the RoleArn field's value.
+func (s *AssociateEnclaveCertificateIamRoleInput) SetRoleArn(v string) *AssociateEnclaveCertificateIamRoleInput {
+ s.RoleArn = &v
+ return s
+}
+
+type AssociateEnclaveCertificateIamRoleOutput struct {
+ _ struct{} `type:"structure"`
+
+ // The name of the Amazon S3 bucket to which the certificate was uploaded.
+ CertificateS3BucketName *string `locationName:"certificateS3BucketName" type:"string"`
+
+ // The Amazon S3 object key where the certificate, certificate chain, and encrypted
+ // private key bundle are stored. The object key is formatted as follows: certificate_arn/role_arn.
+ CertificateS3ObjectKey *string `locationName:"certificateS3ObjectKey" type:"string"`
+
+ // The ID of the AWS KMS CMK used to encrypt the private key of the certificate.
+ EncryptionKmsKeyId *string `locationName:"encryptionKmsKeyId" type:"string"`
+}
+
+// String returns the string representation
+func (s AssociateEnclaveCertificateIamRoleOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s AssociateEnclaveCertificateIamRoleOutput) GoString() string {
+ return s.String()
+}
+
+// SetCertificateS3BucketName sets the CertificateS3BucketName field's value.
+func (s *AssociateEnclaveCertificateIamRoleOutput) SetCertificateS3BucketName(v string) *AssociateEnclaveCertificateIamRoleOutput {
+ s.CertificateS3BucketName = &v
+ return s
+}
+
+// SetCertificateS3ObjectKey sets the CertificateS3ObjectKey field's value.
+func (s *AssociateEnclaveCertificateIamRoleOutput) SetCertificateS3ObjectKey(v string) *AssociateEnclaveCertificateIamRoleOutput {
+ s.CertificateS3ObjectKey = &v
+ return s
+}
+
+// SetEncryptionKmsKeyId sets the EncryptionKmsKeyId field's value.
+func (s *AssociateEnclaveCertificateIamRoleOutput) SetEncryptionKmsKeyId(v string) *AssociateEnclaveCertificateIamRoleOutput {
+ s.EncryptionKmsKeyId = &v
+ return s
+}
+
type AssociateIamInstanceProfileInput struct {
_ struct{} `type:"structure"`
@@ -41337,6 +41698,59 @@ func (s *AssociateVpcCidrBlockOutput) SetVpcId(v string) *AssociateVpcCidrBlockO
return s
}
+// Information about the associated IAM roles.
+type AssociatedRole struct {
+ _ struct{} `type:"structure"`
+
+ // The ARN of the associated IAM role.
+ AssociatedRoleArn *string `locationName:"associatedRoleArn" min:"1" type:"string"`
+
+ // The name of the Amazon S3 bucket in which the Amazon S3 object is stored.
+ CertificateS3BucketName *string `locationName:"certificateS3BucketName" type:"string"`
+
+ // The key of the Amazon S3 object ey where the certificate, certificate chain,
+ // and encrypted private key bundle is stored. The object key is formated as
+ // follows: certificate_arn/role_arn.
+ CertificateS3ObjectKey *string `locationName:"certificateS3ObjectKey" type:"string"`
+
+ // The ID of the KMS customer master key (CMK) used to encrypt the private key.
+ EncryptionKmsKeyId *string `locationName:"encryptionKmsKeyId" type:"string"`
+}
+
+// String returns the string representation
+func (s AssociatedRole) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s AssociatedRole) GoString() string {
+ return s.String()
+}
+
+// SetAssociatedRoleArn sets the AssociatedRoleArn field's value.
+func (s *AssociatedRole) SetAssociatedRoleArn(v string) *AssociatedRole {
+ s.AssociatedRoleArn = &v
+ return s
+}
+
+// SetCertificateS3BucketName sets the CertificateS3BucketName field's value.
+func (s *AssociatedRole) SetCertificateS3BucketName(v string) *AssociatedRole {
+ s.CertificateS3BucketName = &v
+ return s
+}
+
+// SetCertificateS3ObjectKey sets the CertificateS3ObjectKey field's value.
+func (s *AssociatedRole) SetCertificateS3ObjectKey(v string) *AssociatedRole {
+ s.CertificateS3ObjectKey = &v
+ return s
+}
+
+// SetEncryptionKmsKeyId sets the EncryptionKmsKeyId field's value.
+func (s *AssociatedRole) SetEncryptionKmsKeyId(v string) *AssociatedRole {
+ s.EncryptionKmsKeyId = &v
+ return s
+}
+
// Describes a target network that is associated with a Client VPN endpoint.
// A target network is a subnet in a VPC.
type AssociatedTargetNetwork struct {
@@ -41604,6 +42018,11 @@ type AttachNetworkInterfaceInput struct {
// InstanceId is a required field
InstanceId *string `locationName:"instanceId" type:"string" required:"true"`
+ // The index of the network card. Some instance types support multiple network
+ // cards. The primary network interface must be assigned to network card index
+ // 0. The default is network card index 0.
+ NetworkCardIndex *int64 `type:"integer"`
+
// The ID of the network interface.
//
// NetworkInterfaceId is a required field
@@ -41657,6 +42076,12 @@ func (s *AttachNetworkInterfaceInput) SetInstanceId(v string) *AttachNetworkInte
return s
}
+// SetNetworkCardIndex sets the NetworkCardIndex field's value.
+func (s *AttachNetworkInterfaceInput) SetNetworkCardIndex(v int64) *AttachNetworkInterfaceInput {
+ s.NetworkCardIndex = &v
+ return s
+}
+
// SetNetworkInterfaceId sets the NetworkInterfaceId field's value.
func (s *AttachNetworkInterfaceInput) SetNetworkInterfaceId(v string) *AttachNetworkInterfaceInput {
s.NetworkInterfaceId = &v
@@ -41669,6 +42094,9 @@ type AttachNetworkInterfaceOutput struct {
// The ID of the network interface attachment.
AttachmentId *string `locationName:"attachmentId" type:"string"`
+
+ // The index of the network card.
+ NetworkCardIndex *int64 `locationName:"networkCardIndex" type:"integer"`
}
// String returns the string representation
@@ -41687,6 +42115,12 @@ func (s *AttachNetworkInterfaceOutput) SetAttachmentId(v string) *AttachNetworkI
return s
}
+// SetNetworkCardIndex sets the NetworkCardIndex field's value.
+func (s *AttachNetworkInterfaceOutput) SetNetworkCardIndex(v int64) *AttachNetworkInterfaceOutput {
+ s.NetworkCardIndex = &v
+ return s
+}
+
type AttachVolumeInput struct {
_ struct{} `type:"structure"`
@@ -43945,7 +44379,7 @@ func (s *CapacityReservationGroup) SetOwnerId(v string) *CapacityReservationGrou
// For more information about Capacity Reservations, see On-Demand Capacity
// Reservations (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-capacity-reservations.html)
// in the Amazon Elastic Compute Cloud User Guide. For examples of using Capacity
-// Reservations in an EC2 Fleet, see EC2 Fleet Example Configurations (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-examples.html)
+// Reservations in an EC2 Fleet, see EC2 Fleet example configurations (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-examples.html)
// in the Amazon Elastic Compute Cloud User Guide.
type CapacityReservationOptions struct {
_ struct{} `type:"structure"`
@@ -43990,7 +44424,7 @@ func (s *CapacityReservationOptions) SetUsageStrategy(v string) *CapacityReserva
// For more information about Capacity Reservations, see On-Demand Capacity
// Reservations (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-capacity-reservations.html)
// in the Amazon Elastic Compute Cloud User Guide. For examples of using Capacity
-// Reservations in an EC2 Fleet, see EC2 Fleet Example Configurations (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-examples.html)
+// Reservations in an EC2 Fleet, see EC2 Fleet example configurations (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-examples.html)
// in the Amazon Elastic Compute Cloud User Guide.
type CapacityReservationOptionsRequest struct {
_ struct{} `type:"structure"`
@@ -44559,6 +44993,84 @@ func (s *ClientCertificateRevocationListStatus) SetMessage(v string) *ClientCert
return s
}
+// The options for managing connection authorization for new client connections.
+type ClientConnectOptions struct {
+ _ struct{} `type:"structure"`
+
+ // Indicates whether client connect options are enabled. The default is false
+ // (not enabled).
+ Enabled *bool `type:"boolean"`
+
+ // The Amazon Resource Name (ARN) of the AWS Lambda function used for connection
+ // authorization.
+ LambdaFunctionArn *string `type:"string"`
+}
+
+// String returns the string representation
+func (s ClientConnectOptions) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ClientConnectOptions) GoString() string {
+ return s.String()
+}
+
+// SetEnabled sets the Enabled field's value.
+func (s *ClientConnectOptions) SetEnabled(v bool) *ClientConnectOptions {
+ s.Enabled = &v
+ return s
+}
+
+// SetLambdaFunctionArn sets the LambdaFunctionArn field's value.
+func (s *ClientConnectOptions) SetLambdaFunctionArn(v string) *ClientConnectOptions {
+ s.LambdaFunctionArn = &v
+ return s
+}
+
+// The options for managing connection authorization for new client connections.
+type ClientConnectResponseOptions struct {
+ _ struct{} `type:"structure"`
+
+ // Indicates whether client connect options are enabled.
+ Enabled *bool `locationName:"enabled" type:"boolean"`
+
+ // The Amazon Resource Name (ARN) of the AWS Lambda function used for connection
+ // authorization.
+ LambdaFunctionArn *string `locationName:"lambdaFunctionArn" type:"string"`
+
+ // The status of any updates to the client connect options.
+ Status *ClientVpnEndpointAttributeStatus `locationName:"status" type:"structure"`
+}
+
+// String returns the string representation
+func (s ClientConnectResponseOptions) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ClientConnectResponseOptions) GoString() string {
+ return s.String()
+}
+
+// SetEnabled sets the Enabled field's value.
+func (s *ClientConnectResponseOptions) SetEnabled(v bool) *ClientConnectResponseOptions {
+ s.Enabled = &v
+ return s
+}
+
+// SetLambdaFunctionArn sets the LambdaFunctionArn field's value.
+func (s *ClientConnectResponseOptions) SetLambdaFunctionArn(v string) *ClientConnectResponseOptions {
+ s.LambdaFunctionArn = &v
+ return s
+}
+
+// SetStatus sets the Status field's value.
+func (s *ClientConnectResponseOptions) SetStatus(v *ClientVpnEndpointAttributeStatus) *ClientConnectResponseOptions {
+ s.Status = v
+ return s
+}
+
// Describes the client-specific data.
type ClientData struct {
_ struct{} `type:"structure"`
@@ -44611,7 +45123,7 @@ func (s *ClientData) SetUploadStart(v time.Time) *ClientData {
}
// Describes the authentication methods used by a Client VPN endpoint. For more
-// information, see Authentication (https://docs.aws.amazon.com/vpn/latest/clientvpn-admin/authentication-authrization.html#client-authentication)
+// information, see Authentication (https://docs.aws.amazon.com/vpn/latest/clientvpn-admin/client-authentication.html)
// in the AWS Client VPN Administrator Guide.
type ClientVpnAuthentication struct {
_ struct{} `type:"structure"`
@@ -44787,6 +45299,10 @@ type ClientVpnConnection struct {
// The number of packets sent by the client.
IngressPackets *string `locationName:"ingressPackets" type:"string"`
+ // The statuses returned by the client connect handler for posture compliance,
+ // if applicable.
+ PostureComplianceStatuses []*string `locationName:"postureComplianceStatusSet" locationNameList:"item" type:"list"`
+
// The current state of the client connection.
Status *ClientVpnConnectionStatus `locationName:"status" type:"structure"`
@@ -44868,6 +45384,12 @@ func (s *ClientVpnConnection) SetIngressPackets(v string) *ClientVpnConnection {
return s
}
+// SetPostureComplianceStatuses sets the PostureComplianceStatuses field's value.
+func (s *ClientVpnConnection) SetPostureComplianceStatuses(v []*string) *ClientVpnConnection {
+ s.PostureComplianceStatuses = v
+ return s
+}
+
// SetStatus sets the Status field's value.
func (s *ClientVpnConnection) SetStatus(v *ClientVpnConnectionStatus) *ClientVpnConnection {
s.Status = v
@@ -44936,6 +45458,9 @@ type ClientVpnEndpoint struct {
// are assigned.
ClientCidrBlock *string `locationName:"clientCidrBlock" type:"string"`
+ // The options for managing connection authorization for new client connections.
+ ClientConnectOptions *ClientConnectResponseOptions `locationName:"clientConnectOptions" type:"structure"`
+
// The ID of the Client VPN endpoint.
ClientVpnEndpointId *string `locationName:"clientVpnEndpointId" type:"string"`
@@ -44961,6 +45486,9 @@ type ClientVpnEndpoint struct {
// The IDs of the security groups for the target network.
SecurityGroupIds []*string `locationName:"securityGroupIdSet" locationNameList:"item" type:"list"`
+ // The URL of the self-service portal.
+ SelfServicePortalUrl *string `locationName:"selfServicePortalUrl" type:"string"`
+
// The ARN of the server certificate.
ServerCertificateArn *string `locationName:"serverCertificateArn" type:"string"`
@@ -45018,6 +45546,12 @@ func (s *ClientVpnEndpoint) SetClientCidrBlock(v string) *ClientVpnEndpoint {
return s
}
+// SetClientConnectOptions sets the ClientConnectOptions field's value.
+func (s *ClientVpnEndpoint) SetClientConnectOptions(v *ClientConnectResponseOptions) *ClientVpnEndpoint {
+ s.ClientConnectOptions = v
+ return s
+}
+
// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value.
func (s *ClientVpnEndpoint) SetClientVpnEndpointId(v string) *ClientVpnEndpoint {
s.ClientVpnEndpointId = &v
@@ -45066,6 +45600,12 @@ func (s *ClientVpnEndpoint) SetSecurityGroupIds(v []*string) *ClientVpnEndpoint
return s
}
+// SetSelfServicePortalUrl sets the SelfServicePortalUrl field's value.
+func (s *ClientVpnEndpoint) SetSelfServicePortalUrl(v string) *ClientVpnEndpoint {
+ s.SelfServicePortalUrl = &v
+ return s
+}
+
// SetServerCertificateArn sets the ServerCertificateArn field's value.
func (s *ClientVpnEndpoint) SetServerCertificateArn(v string) *ClientVpnEndpoint {
s.ServerCertificateArn = &v
@@ -45114,6 +45654,39 @@ func (s *ClientVpnEndpoint) SetVpnProtocol(v string) *ClientVpnEndpoint {
return s
}
+// Describes the status of the Client VPN endpoint attribute.
+type ClientVpnEndpointAttributeStatus struct {
+ _ struct{} `type:"structure"`
+
+ // The status code.
+ Code *string `locationName:"code" type:"string" enum:"ClientVpnEndpointAttributeStatusCode"`
+
+ // The status message.
+ Message *string `locationName:"message" type:"string"`
+}
+
+// String returns the string representation
+func (s ClientVpnEndpointAttributeStatus) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ClientVpnEndpointAttributeStatus) GoString() string {
+ return s.String()
+}
+
+// SetCode sets the Code field's value.
+func (s *ClientVpnEndpointAttributeStatus) SetCode(v string) *ClientVpnEndpointAttributeStatus {
+ s.Code = &v
+ return s
+}
+
+// SetMessage sets the Message field's value.
+func (s *ClientVpnEndpointAttributeStatus) SetMessage(v string) *ClientVpnEndpointAttributeStatus {
+ s.Message = &v
+ return s
+}
+
// Describes the state of a Client VPN endpoint.
type ClientVpnEndpointStatus struct {
_ struct{} `type:"structure"`
@@ -45875,29 +46448,25 @@ type CopyImageInput struct {
// in the Amazon Elastic Compute Cloud User Guide.
Encrypted *bool `locationName:"encrypted" type:"boolean"`
- // An identifier for the symmetric AWS Key Management Service (AWS KMS) customer
- // master key (CMK) to use when creating the encrypted volume. This parameter
- // is only required if you want to use a non-default CMK; if this parameter
- // is not specified, the default CMK for EBS is used. If a KmsKeyId is specified,
- // the Encrypted flag must also be set.
+ // The identifier of the symmetric AWS Key Management Service (AWS KMS) customer
+ // master key (CMK) to use when creating encrypted volumes. If this parameter
+ // is not specified, your AWS managed CMK for EBS is used. If you specify a
+ // CMK, you must also set the encrypted state to true.
//
- // To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias name,
- // or alias ARN. When using an alias name, prefix it with "alias/". For example:
+ // You can specify a CMK using any of the following:
//
- // * Key ID: 1234abcd-12ab-34cd-56ef-1234567890ab
+ // * Key ID. For example, 1234abcd-12ab-34cd-56ef-1234567890ab.
//
- // * Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
+ // * Key alias. For example, alias/ExampleAlias.
//
- // * Alias name: alias/ExampleAlias
+ // * Key ARN. For example, arn:aws:kms:us-east-1:012345678910:key/1234abcd-12ab-34cd-56ef-1234567890ab.
//
- // * Alias ARN: arn:aws:kms:us-east-2:111122223333:alias/ExampleAlias
+ // * Alias ARN. For example, arn:aws:kms:us-east-1:012345678910:alias/ExampleAlias.
//
- // AWS parses KmsKeyId asynchronously, meaning that the action you call may
- // appear to complete even though you provided an invalid identifier. This action
- // will eventually report failure.
+ // AWS authenticates the CMK asynchronously. Therefore, if you specify an identifier
+ // that is not valid, the action can appear to complete, but eventually fails.
//
- // The specified CMK must exist in the Region that the snapshot is being copied
- // to.
+ // The specified CMK must exist in the destination Region.
//
// Amazon EBS does not support asymmetric CMKs.
KmsKeyId *string `locationName:"kmsKeyId" type:"string"`
@@ -46056,11 +46625,11 @@ type CopySnapshotInput struct {
//
// You can specify the CMK using any of the following:
//
- // * Key ID. For example, key/1234abcd-12ab-34cd-56ef-1234567890ab.
+ // * Key ID. For example, 1234abcd-12ab-34cd-56ef-1234567890ab.
//
// * Key alias. For example, alias/ExampleAlias.
//
- // * Key ARN. For example, arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef.
+ // * Key ARN. For example, arn:aws:kms:us-east-1:012345678910:key/1234abcd-12ab-34cd-56ef-1234567890ab.
//
// * Alias ARN. For example, arn:aws:kms:us-east-1:012345678910:alias/ExampleAlias.
//
@@ -46625,6 +47194,9 @@ type CreateClientVpnEndpointInput struct {
// ClientCidrBlock is a required field
ClientCidrBlock *string `type:"string" required:"true"`
+ // The options for managing connection authorization for new client connections.
+ ClientConnectOptions *ClientConnectOptions `type:"structure"`
+
// Unique, case-sensitive identifier that you provide to ensure the idempotency
// of the request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html).
ClientToken *string `type:"string" idempotencyToken:"true"`
@@ -46663,6 +47235,11 @@ type CreateClientVpnEndpointInput struct {
// must also specify the ID of the VPC that contains the security groups.
SecurityGroupIds []*string `locationName:"SecurityGroupId" locationNameList:"item" type:"list"`
+ // Specify whether to enable the self-service portal for the Client VPN endpoint.
+ //
+ // Default Value: enabled
+ SelfServicePortal *string `type:"string" enum:"SelfServicePortal"`
+
// The ARN of the server certificate. For more information, see the AWS Certificate
// Manager User Guide (https://docs.aws.amazon.com/acm/latest/userguide/).
//
@@ -46743,6 +47320,12 @@ func (s *CreateClientVpnEndpointInput) SetClientCidrBlock(v string) *CreateClien
return s
}
+// SetClientConnectOptions sets the ClientConnectOptions field's value.
+func (s *CreateClientVpnEndpointInput) SetClientConnectOptions(v *ClientConnectOptions) *CreateClientVpnEndpointInput {
+ s.ClientConnectOptions = v
+ return s
+}
+
// SetClientToken sets the ClientToken field's value.
func (s *CreateClientVpnEndpointInput) SetClientToken(v string) *CreateClientVpnEndpointInput {
s.ClientToken = &v
@@ -46779,6 +47362,12 @@ func (s *CreateClientVpnEndpointInput) SetSecurityGroupIds(v []*string) *CreateC
return s
}
+// SetSelfServicePortal sets the SelfServicePortal field's value.
+func (s *CreateClientVpnEndpointInput) SetSelfServicePortal(v string) *CreateClientVpnEndpointInput {
+ s.SelfServicePortal = &v
+ return s
+}
+
// SetServerCertificateArn sets the ServerCertificateArn field's value.
func (s *CreateClientVpnEndpointInput) SetServerCertificateArn(v string) *CreateClientVpnEndpointInput {
s.ServerCertificateArn = &v
@@ -47515,7 +48104,7 @@ type CreateFleetInput struct {
// The key-value pair for tagging the EC2 Fleet request on creation. The value
// for ResourceType must be fleet, otherwise the fleet request fails. To tag
// instances at launch, specify the tags in the launch template (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html#create-launch-template).
- // For information about tagging after launch, see Tagging Your Resources (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#tag-resources).
+ // For information about tagging after launch, see Tagging your resources (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#tag-resources).
TagSpecifications []*TagSpecification `locationName:"TagSpecification" locationNameList:"item" type:"list"`
// The number of units to request.
@@ -47527,13 +48116,22 @@ type CreateFleetInput struct {
// expires.
TerminateInstancesWithExpiration *bool `type:"boolean"`
- // The type of the request. By default, the EC2 Fleet places an asynchronous
- // request for your desired capacity, and maintains it by replenishing interrupted
- // Spot Instances (maintain). A value of instant places a synchronous one-time
- // request, and returns errors for any instances that could not be launched.
- // A value of request places an asynchronous one-time request without maintaining
- // capacity or submitting requests in alternative capacity pools if capacity
- // is unavailable. For more information, see EC2 Fleet Request Types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-configuration-strategies.html#ec2-fleet-request-type)
+ // The type of request. The default value is maintain.
+ //
+ // * maintain - The EC2 Fleet plaees an asynchronous request for your desired
+ // capacity, and continues to maintain your desired Spot capacity by replenishing
+ // interrupted Spot Instances.
+ //
+ // * request - The EC2 Fleet places an asynchronous one-time request for
+ // your desired capacity, but does submit Spot requests in alternative capacity
+ // pools if Spot capacity is unavailable, and does not maintain Spot capacity
+ // if Spot Instances are interrupted.
+ //
+ // * instant - The EC2 Fleet places a synchronous one-time request for your
+ // desired capacity, and returns errors for any instances that could not
+ // be launched.
+ //
+ // For more information, see EC2 Fleet request types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-configuration-strategies.html#ec2-fleet-request-type)
// in the Amazon Elastic Compute Cloud User Guide.
Type *string `type:"string" enum:"FleetType"`
@@ -48275,7 +48873,9 @@ type CreateInstanceExportTaskInput struct {
Description *string `locationName:"description" type:"string"`
// The format and location for an instance export task.
- ExportToS3Task *ExportToS3TaskSpecification `locationName:"exportToS3" type:"structure"`
+ //
+ // ExportToS3Task is a required field
+ ExportToS3Task *ExportToS3TaskSpecification `locationName:"exportToS3" type:"structure" required:"true"`
// The ID of the instance.
//
@@ -48286,7 +48886,9 @@ type CreateInstanceExportTaskInput struct {
TagSpecifications []*TagSpecification `locationName:"TagSpecification" locationNameList:"item" type:"list"`
// The target virtualization environment.
- TargetEnvironment *string `locationName:"targetEnvironment" type:"string" enum:"ExportEnvironment"`
+ //
+ // TargetEnvironment is a required field
+ TargetEnvironment *string `locationName:"targetEnvironment" type:"string" required:"true" enum:"ExportEnvironment"`
}
// String returns the string representation
@@ -48302,9 +48904,15 @@ func (s CreateInstanceExportTaskInput) GoString() string {
// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateInstanceExportTaskInput) Validate() error {
invalidParams := request.ErrInvalidParams{Context: "CreateInstanceExportTaskInput"}
+ if s.ExportToS3Task == nil {
+ invalidParams.Add(request.NewErrParamRequired("ExportToS3Task"))
+ }
if s.InstanceId == nil {
invalidParams.Add(request.NewErrParamRequired("InstanceId"))
}
+ if s.TargetEnvironment == nil {
+ invalidParams.Add(request.NewErrParamRequired("TargetEnvironment"))
+ }
if invalidParams.Len() > 0 {
return invalidParams
@@ -50593,7 +51201,10 @@ func (s *CreateSnapshotsOutput) SetSnapshots(v []*SnapshotInfo) *CreateSnapshots
type CreateSpotDatafeedSubscriptionInput struct {
_ struct{} `type:"structure"`
- // The Amazon S3 bucket in which to store the Spot Instance data feed.
+ // The name of the Amazon S3 bucket in which to store the Spot Instance data
+ // feed. For more information about bucket names, see Rules for bucket naming
+ // (https://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html#bucketnamingrules)
+ // in the Amazon S3 Developer Guide.
//
// Bucket is a required field
Bucket *string `locationName:"bucket" type:"string" required:"true"`
@@ -50604,7 +51215,7 @@ type CreateSpotDatafeedSubscriptionInput struct {
// it is UnauthorizedOperation.
DryRun *bool `locationName:"dryRun" type:"boolean"`
- // A prefix for the data feed file names.
+ // The prefix for the data feed file names.
Prefix *string `locationName:"prefix" type:"string"`
}
@@ -52186,10 +52797,15 @@ func (s *CreateTransitGatewayVpcAttachmentOutput) SetTransitGatewayVpcAttachment
type CreateTransitGatewayVpcAttachmentRequestOptions struct {
_ struct{} `type:"structure"`
+ // Enable or disable support for appliance mode. If enabled, a traffic flow
+ // between a source and destination uses the same Availability Zone for the
+ // VPC attachment for the lifetime of that flow. The default is disable.
+ ApplianceModeSupport *string `type:"string" enum:"ApplianceModeSupportValue"`
+
// Enable or disable DNS support. The default is enable.
DnsSupport *string `type:"string" enum:"DnsSupportValue"`
- // Enable or disable IPv6 support. The default is enable.
+ // Enable or disable IPv6 support.
Ipv6Support *string `type:"string" enum:"Ipv6SupportValue"`
}
@@ -52203,6 +52819,12 @@ func (s CreateTransitGatewayVpcAttachmentRequestOptions) GoString() string {
return s.String()
}
+// SetApplianceModeSupport sets the ApplianceModeSupport field's value.
+func (s *CreateTransitGatewayVpcAttachmentRequestOptions) SetApplianceModeSupport(v string) *CreateTransitGatewayVpcAttachmentRequestOptions {
+ s.ApplianceModeSupport = &v
+ return s
+}
+
// SetDnsSupport sets the DnsSupport field's value.
func (s *CreateTransitGatewayVpcAttachmentRequestOptions) SetDnsSupport(v string) *CreateTransitGatewayVpcAttachmentRequestOptions {
s.DnsSupport = &v
@@ -52257,11 +52879,11 @@ type CreateVolumeInput struct {
//
// You can specify the CMK using any of the following:
//
- // * Key ID. For example, key/1234abcd-12ab-34cd-56ef-1234567890ab.
+ // * Key ID. For example, 1234abcd-12ab-34cd-56ef-1234567890ab.
//
// * Key alias. For example, alias/ExampleAlias.
//
- // * Key ARN. For example, arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef.
+ // * Key ARN. For example, arn:aws:kms:us-east-1:012345678910:key/1234abcd-12ab-34cd-56ef-1234567890ab.
//
// * Alias ARN. For example, arn:aws:kms:us-east-1:012345678910:alias/ExampleAlias.
//
@@ -61018,7 +61640,7 @@ type DescribeFlowLogsInput struct {
//
// * log-destination-type - The type of destination to which the flow log
// publishes data. Possible destination types include cloud-watch-logs and
- // S3.
+ // s3.
//
// * flow-log-id - The ID of the flow log.
//
@@ -62537,6 +63159,10 @@ type DescribeInstanceAttributeOutput struct {
// Indicates whether enhanced networking with ENA is enabled.
EnaSupport *AttributeBooleanValue `locationName:"enaSupport" type:"structure"`
+ // To enable the instance for AWS Nitro Enclaves, set this parameter to true;
+ // otherwise, set it to false.
+ EnclaveOptions *EnclaveOptions `locationName:"enclaveOptions" type:"structure"`
+
// The security groups associated with the instance.
Groups []*GroupIdentifier `locationName:"groupSet" locationNameList:"item" type:"list"`
@@ -62609,6 +63235,12 @@ func (s *DescribeInstanceAttributeOutput) SetEnaSupport(v *AttributeBooleanValue
return s
}
+// SetEnclaveOptions sets the EnclaveOptions field's value.
+func (s *DescribeInstanceAttributeOutput) SetEnclaveOptions(v *EnclaveOptions) *DescribeInstanceAttributeOutput {
+ s.EnclaveOptions = v
+ return s
+}
+
// SetGroups sets the Groups field's value.
func (s *DescribeInstanceAttributeOutput) SetGroups(v []*GroupIdentifier) *DescribeInstanceAttributeOutput {
s.Groups = v
@@ -63010,7 +63642,7 @@ type DescribeInstanceTypeOfferingsInput struct {
// type is region (default), the location is the Region code (for example,
// us-east-2.)
//
- // * instance-type - The instance type.
+ // * instance-type - The instance type. For example, c5.2xlarge.
Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
// The location type.
@@ -63122,52 +63754,52 @@ type DescribeInstanceTypesInput struct {
// One or more filters. Filter names and values are case-sensitive.
//
- // * auto-recovery-supported - Indicates whether auto recovery is supported.
- // (true | false)
+ // * auto-recovery-supported - Indicates whether auto recovery is supported
+ // (true | false).
//
- // * bare-metal - Indicates whether it is a bare metal instance type. (true
- // | false)
+ // * bare-metal - Indicates whether it is a bare metal instance type (true
+ // | false).
//
// * burstable-performance-supported - Indicates whether it is a burstable
- // performance instance type. (true | false)
+ // performance instance type (true | false).
//
// * current-generation - Indicates whether this instance type is the latest
- // generation instance type of an instance family. (true | false)
+ // generation instance type of an instance family (true | false).
//
// * ebs-info.ebs-optimized-info.baseline-bandwidth-in-mbps - The baseline
// bandwidth performance for an EBS-optimized instance type, in Mbps.
//
- // * ebs-info.ebs-optimized-info.baseline-throughput-in-mbps - The baseline
- // throughput performance for an EBS-optimized instance type, in MBps.
- //
// * ebs-info.ebs-optimized-info.baseline-iops - The baseline input/output
// storage operations per second for an EBS-optimized instance type.
//
+ // * ebs-info.ebs-optimized-info.baseline-throughput-in-mbps - The baseline
+ // throughput performance for an EBS-optimized instance type, in MB/s.
+ //
// * ebs-info.ebs-optimized-info.maximum-bandwidth-in-mbps - The maximum
// bandwidth performance for an EBS-optimized instance type, in Mbps.
//
- // * ebs-info.ebs-optimized-info.maximum-throughput-in-mbps - The maximum
- // throughput performance for an EBS-optimized instance type, in MBps.
- //
// * ebs-info.ebs-optimized-info.maximum-iops - The maximum input/output
// storage operations per second for an EBS-optimized instance type.
//
+ // * ebs-info.ebs-optimized-info.maximum-throughput-in-mbps - The maximum
+ // throughput performance for an EBS-optimized instance type, in MB/s.
+ //
// * ebs-info.ebs-optimized-support - Indicates whether the instance type
- // is EBS-optimized. (supported | unsupported | default)
+ // is EBS-optimized (supported | unsupported | default).
//
- // * ebs-info.encryption-support - Indicates whether EBS encryption is supported.
- // (supported | unsupported)
+ // * ebs-info.encryption-support - Indicates whether EBS encryption is supported
+ // (supported | unsupported).
//
// * ebs-info.nvme-support - Indicates whether non-volatile memory express
- // (NVMe) is supported or required. (required | supported | unsupported)
+ // (NVMe) is supported for EBS volumes (required | supported | unsupported).
//
// * free-tier-eligible - Indicates whether the instance type is eligible
- // to use in the free tier. (true | false)
+ // to use in the free tier (true | false).
//
- // * hibernation-supported - Indicates whether On-Demand hibernation is supported.
- // (true | false)
+ // * hibernation-supported - Indicates whether On-Demand hibernation is supported
+ // (true | false).
//
- // * hypervisor - The hypervisor used. (nitro | xen)
+ // * hypervisor - The hypervisor (nitro | xen).
//
// * instance-storage-info.disk.count - The number of local disks.
//
@@ -63175,21 +63807,27 @@ type DescribeInstanceTypesInput struct {
// storage disk, in GB.
//
// * instance-storage-info.disk.type - The storage technology for the local
- // instance storage disks. (hdd | ssd)
+ // instance storage disks (hdd | ssd).
+ //
+ // * instance-storage-info.nvme-support - Indicates whether non-volatile
+ // memory express (NVMe) is supported for instance store (required | supported)
+ // | unsupported).
//
// * instance-storage-info.total-size-in-gb - The total amount of storage
// available from all local instance storage, in GB.
//
// * instance-storage-supported - Indicates whether the instance type has
- // local instance storage. (true | false)
+ // local instance storage (true | false).
//
- // * memory-info.size-in-mib - The memory size.
+ // * instance-type - The instance type (for example c5.2xlarge or c5*).
//
- // * network-info.ena-support - Indicates whether Elastic Network Adapter
- // (ENA) is supported or required. (required | supported | unsupported)
+ // * memory-info.size-in-mib - The memory size.
//
// * network-info.efa-supported - Indicates whether the instance type supports
- // Elastic Fabric Adapter (EFA). (true | false)
+ // Elastic Fabric Adapter (EFA) (true | false).
+ //
+ // * network-info.ena-support - Indicates whether Elastic Network Adapter
+ // (ENA) is supported or required (required | supported | unsupported).
//
// * network-info.ipv4-addresses-per-interface - The maximum number of private
// IPv4 addresses per network interface.
@@ -63198,16 +63836,26 @@ type DescribeInstanceTypesInput struct {
// IPv6 addresses per network interface.
//
// * network-info.ipv6-supported - Indicates whether the instance type supports
- // IPv6. (true | false)
+ // IPv6 (true | false).
//
// * network-info.maximum-network-interfaces - The maximum number of network
// interfaces per instance.
//
- // * network-info.network-performance - Describes the network performance.
+ // * network-info.network-performance - The network performance (for example,
+ // "25 Gigabit").
+ //
+ // * processor-info.supported-architecture - The CPU architecture (arm64
+ // | i386 | x86_64).
//
// * processor-info.sustained-clock-speed-in-ghz - The CPU clock speed, in
// GHz.
//
+ // * supported-root-device-type - The root device type (ebs | instance-store).
+ //
+ // * supported-usage-class - The usage class (on-demand | spot).
+ //
+ // * supported-virtualization-type - The virtualization type (hvm | paravirtual).
+ //
// * vcpu-info.default-cores - The default number of cores for the instance
// type.
//
@@ -63216,6 +63864,12 @@ type DescribeInstanceTypesInput struct {
//
// * vcpu-info.default-vcpus - The default number of vCPUs for the instance
// type.
+ //
+ // * vcpu-info.valid-cores - The number of cores that can be configured for
+ // the instance type.
+ //
+ // * vcpu-info.valid-threads-per-core - The number of threads per core that
+ // can be configured for the instance type. For example, "1" or "1,2".
Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
// The instance types. For more information, see Instance Types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html)
@@ -68702,8 +69356,9 @@ type DescribeSpotPriceHistoryInput struct {
// * instance-type - The type of instance (for example, m3.medium).
//
// * product-description - The product description for the Spot price (Linux/UNIX
- // | SUSE Linux | Windows | Linux/UNIX (Amazon VPC) | SUSE Linux (Amazon
- // VPC) | Windows (Amazon VPC)).
+ // | Red Hat Enterprise Linux | SUSE Linux | Windows | Linux/UNIX (Amazon
+ // VPC) | Red Hat Enterprise Linux (Amazon VPC) | SUSE Linux (Amazon VPC)
+ // | Windows (Amazon VPC)).
//
// * spot-price - The Spot price. The value must match exactly (or use wildcards;
// greater than or less than comparison is not supported).
@@ -69835,6 +70490,16 @@ type DescribeTransitGatewayPeeringAttachmentsInput struct {
// | deleted | deleting | failed | failing | initiatingRequest | modifying
// | pendingAcceptance | pending | rollingBack | rejected | rejecting).
//
+ // * tag: - The key/value combination of a tag assigned to the resource.
+ // Use the tag key in the filter name and the tag value as the filter value.
+ // For example, to find all resources that have a tag with the key Owner
+ // and the value TeamA, specify tag:Owner for the filter name and TeamA for
+ // the filter value.
+ //
+ // * tag-key - The key of a tag assigned to the resource. Use this filter
+ // to find all resources that have a tag with a specific key, regardless
+ // of the tag value.
+ //
// * transit-gateway-id - The ID of the transit gateway.
Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
@@ -73675,6 +74340,89 @@ func (s *DisassociateClientVpnTargetNetworkOutput) SetStatus(v *AssociationStatu
return s
}
+type DisassociateEnclaveCertificateIamRoleInput struct {
+ _ struct{} `type:"structure"`
+
+ // The ARN of the ACM certificate from which to disassociate the IAM role.
+ CertificateArn *string `min:"1" type:"string"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // The ARN of the IAM role to disassociate.
+ RoleArn *string `min:"1" type:"string"`
+}
+
+// String returns the string representation
+func (s DisassociateEnclaveCertificateIamRoleInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DisassociateEnclaveCertificateIamRoleInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *DisassociateEnclaveCertificateIamRoleInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "DisassociateEnclaveCertificateIamRoleInput"}
+ if s.CertificateArn != nil && len(*s.CertificateArn) < 1 {
+ invalidParams.Add(request.NewErrParamMinLen("CertificateArn", 1))
+ }
+ if s.RoleArn != nil && len(*s.RoleArn) < 1 {
+ invalidParams.Add(request.NewErrParamMinLen("RoleArn", 1))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetCertificateArn sets the CertificateArn field's value.
+func (s *DisassociateEnclaveCertificateIamRoleInput) SetCertificateArn(v string) *DisassociateEnclaveCertificateIamRoleInput {
+ s.CertificateArn = &v
+ return s
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *DisassociateEnclaveCertificateIamRoleInput) SetDryRun(v bool) *DisassociateEnclaveCertificateIamRoleInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetRoleArn sets the RoleArn field's value.
+func (s *DisassociateEnclaveCertificateIamRoleInput) SetRoleArn(v string) *DisassociateEnclaveCertificateIamRoleInput {
+ s.RoleArn = &v
+ return s
+}
+
+type DisassociateEnclaveCertificateIamRoleOutput struct {
+ _ struct{} `type:"structure"`
+
+ // Returns true if the request succeeds; otherwise, it returns an error.
+ Return *bool `locationName:"return" type:"boolean"`
+}
+
+// String returns the string representation
+func (s DisassociateEnclaveCertificateIamRoleOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DisassociateEnclaveCertificateIamRoleOutput) GoString() string {
+ return s.String()
+}
+
+// SetReturn sets the Return field's value.
+func (s *DisassociateEnclaveCertificateIamRoleOutput) SetReturn(v bool) *DisassociateEnclaveCertificateIamRoleOutput {
+ s.Return = &v
+ return s
+}
+
type DisassociateIamInstanceProfileInput struct {
_ struct{} `type:"structure"`
@@ -74586,7 +75334,7 @@ type EbsInfo struct {
// Describes the optimized EBS performance for the instance type.
EbsOptimizedInfo *EbsOptimizedInfo `locationName:"ebsOptimizedInfo" type:"structure"`
- // Indicates that the instance type is Amazon EBS-optimized. For more information,
+ // Indicates whether the instance type is Amazon EBS-optimized. For more information,
// see Amazon EBS-Optimized Instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSOptimized.html)
// in Amazon EC2 User Guide for Linux Instances.
EbsOptimizedSupport *string `locationName:"ebsOptimizedSupport" type:"string" enum:"EbsOptimizedSupport"`
@@ -74730,7 +75478,7 @@ type EbsOptimizedInfo struct {
BaselineIops *int64 `locationName:"baselineIops" type:"integer"`
// The baseline throughput performance for an EBS-optimized instance type, in
- // MBps.
+ // MB/s.
BaselineThroughputInMBps *float64 `locationName:"baselineThroughputInMBps" type:"double"`
// The maximum bandwidth performance for an EBS-optimized instance type, in
@@ -74742,7 +75490,7 @@ type EbsOptimizedInfo struct {
MaximumIops *int64 `locationName:"maximumIops" type:"integer"`
// The maximum throughput performance for an EBS-optimized instance type, in
- // MBps.
+ // MB/s.
MaximumThroughputInMBps *float64 `locationName:"maximumThroughputInMBps" type:"double"`
}
@@ -75882,6 +76630,57 @@ func (s *EnableVpcClassicLinkOutput) SetReturn(v bool) *EnableVpcClassicLinkOutp
return s
}
+// Indicates whether the instance is enabled for AWS Nitro Enclaves.
+type EnclaveOptions struct {
+ _ struct{} `type:"structure"`
+
+ // If this parameter is set to true, the instance is enabled for AWS Nitro Enclaves;
+ // otherwise, it is not enabled for AWS Nitro Enclaves.
+ Enabled *bool `locationName:"enabled" type:"boolean"`
+}
+
+// String returns the string representation
+func (s EnclaveOptions) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s EnclaveOptions) GoString() string {
+ return s.String()
+}
+
+// SetEnabled sets the Enabled field's value.
+func (s *EnclaveOptions) SetEnabled(v bool) *EnclaveOptions {
+ s.Enabled = &v
+ return s
+}
+
+// Indicates whether the instance is enabled for AWS Nitro Enclaves. For more
+// information, see What is AWS Nitro Enclaves? (https://docs.aws.amazon.com/enclaves/latest/user/nitro-enclave.html)
+// in the AWS Nitro Enclaves User Guide.
+type EnclaveOptionsRequest struct {
+ _ struct{} `type:"structure"`
+
+ // To enable the instance for AWS Nitro Enclaves, set this parameter to true.
+ Enabled *bool `type:"boolean"`
+}
+
+// String returns the string representation
+func (s EnclaveOptionsRequest) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s EnclaveOptionsRequest) GoString() string {
+ return s.String()
+}
+
+// SetEnabled sets the Enabled field's value.
+func (s *EnclaveOptionsRequest) SetEnabled(v bool) *EnclaveOptionsRequest {
+ s.Enabled = &v
+ return s
+}
+
// Describes an EC2 Fleet or Spot Fleet event.
type EventInformation struct {
_ struct{} `type:"structure"`
@@ -76877,12 +77676,16 @@ func (s *FailedQueuedPurchaseDeletion) SetReservedInstancesId(v string) *FailedQ
return s
}
-// Describes the IAM SAML identity provider used for federated authentication.
+// Describes the IAM SAML identity providers used for federated authentication.
type FederatedAuthentication struct {
_ struct{} `type:"structure"`
// The Amazon Resource Name (ARN) of the IAM SAML identity provider.
SamlProviderArn *string `locationName:"samlProviderArn" type:"string"`
+
+ // The Amazon Resource Name (ARN) of the IAM SAML identity provider for the
+ // self-service portal.
+ SelfServiceSamlProviderArn *string `locationName:"selfServiceSamlProviderArn" type:"string"`
}
// String returns the string representation
@@ -76901,12 +77704,22 @@ func (s *FederatedAuthentication) SetSamlProviderArn(v string) *FederatedAuthent
return s
}
+// SetSelfServiceSamlProviderArn sets the SelfServiceSamlProviderArn field's value.
+func (s *FederatedAuthentication) SetSelfServiceSamlProviderArn(v string) *FederatedAuthentication {
+ s.SelfServiceSamlProviderArn = &v
+ return s
+}
+
// The IAM SAML identity provider used for federated authentication.
type FederatedAuthenticationRequest struct {
_ struct{} `type:"structure"`
// The Amazon Resource Name (ARN) of the IAM SAML identity provider.
SAMLProviderArn *string `type:"string"`
+
+ // The Amazon Resource Name (ARN) of the IAM SAML identity provider for the
+ // self-service portal.
+ SelfServiceSAMLProviderArn *string `type:"string"`
}
// String returns the string representation
@@ -76925,6 +77738,12 @@ func (s *FederatedAuthenticationRequest) SetSAMLProviderArn(v string) *Federated
return s
}
+// SetSelfServiceSAMLProviderArn sets the SelfServiceSAMLProviderArn field's value.
+func (s *FederatedAuthenticationRequest) SetSelfServiceSAMLProviderArn(v string) *FederatedAuthenticationRequest {
+ s.SelfServiceSAMLProviderArn = &v
+ return s
+}
+
// A filter name and value pair that is used to return a more specific list
// of results from a describe operation. Filters can be used to match a set
// of resources by specific criteria, such as tags, attributes, or IDs. The
@@ -77592,6 +78411,126 @@ func (s *FleetLaunchTemplateSpecificationRequest) SetVersion(v string) *FleetLau
return s
}
+// The strategy to use when Amazon EC2 emits a signal that your Spot Instance
+// is at an elevated risk of being interrupted.
+type FleetSpotCapacityRebalance struct {
+ _ struct{} `type:"structure"`
+
+ // To allow EC2 Fleet to launch a replacement Spot Instance when an instance
+ // rebalance notification is emitted for an existing Spot Instance in the fleet,
+ // specify launch. Only available for fleets of type maintain.
+ //
+ // When a replacement instance is launched, the instance marked for rebalance
+ // is not automatically terminated. You can terminate it, or you can wait until
+ // Amazon EC2 interrupts it. You are charged for both instances while they are
+ // running.
+ ReplacementStrategy *string `locationName:"replacementStrategy" type:"string" enum:"FleetReplacementStrategy"`
+}
+
+// String returns the string representation
+func (s FleetSpotCapacityRebalance) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s FleetSpotCapacityRebalance) GoString() string {
+ return s.String()
+}
+
+// SetReplacementStrategy sets the ReplacementStrategy field's value.
+func (s *FleetSpotCapacityRebalance) SetReplacementStrategy(v string) *FleetSpotCapacityRebalance {
+ s.ReplacementStrategy = &v
+ return s
+}
+
+// The Spot Instance replacement strategy to use when Amazon EC2 emits a signal
+// that your Spot Instance is at an elevated risk of being interrupted. For
+// more information, see Capacity rebalancing (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-configuration-strategies.html#ec2-fleet-capacity-rebalance)
+// in the Amazon Elastic Compute Cloud User Guide.
+type FleetSpotCapacityRebalanceRequest struct {
+ _ struct{} `type:"structure"`
+
+ // The replacement strategy to use. Only available for fleets of type maintain.
+ //
+ // To allow EC2 Fleet to launch a replacement Spot Instance when an instance
+ // rebalance notification is emitted for an existing Spot Instance in the fleet,
+ // specify launch. You must specify a value, otherwise you get an error.
+ //
+ // When a replacement instance is launched, the instance marked for rebalance
+ // is not automatically terminated. You can terminate it, or you can wait until
+ // Amazon EC2 interrupts it. You are charged for all instances while they are
+ // running.
+ ReplacementStrategy *string `type:"string" enum:"FleetReplacementStrategy"`
+}
+
+// String returns the string representation
+func (s FleetSpotCapacityRebalanceRequest) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s FleetSpotCapacityRebalanceRequest) GoString() string {
+ return s.String()
+}
+
+// SetReplacementStrategy sets the ReplacementStrategy field's value.
+func (s *FleetSpotCapacityRebalanceRequest) SetReplacementStrategy(v string) *FleetSpotCapacityRebalanceRequest {
+ s.ReplacementStrategy = &v
+ return s
+}
+
+// The strategies for managing your Spot Instances that are at an elevated risk
+// of being interrupted.
+type FleetSpotMaintenanceStrategies struct {
+ _ struct{} `type:"structure"`
+
+ // The strategy to use when Amazon EC2 emits a signal that your Spot Instance
+ // is at an elevated risk of being interrupted.
+ CapacityRebalance *FleetSpotCapacityRebalance `locationName:"capacityRebalance" type:"structure"`
+}
+
+// String returns the string representation
+func (s FleetSpotMaintenanceStrategies) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s FleetSpotMaintenanceStrategies) GoString() string {
+ return s.String()
+}
+
+// SetCapacityRebalance sets the CapacityRebalance field's value.
+func (s *FleetSpotMaintenanceStrategies) SetCapacityRebalance(v *FleetSpotCapacityRebalance) *FleetSpotMaintenanceStrategies {
+ s.CapacityRebalance = v
+ return s
+}
+
+// The strategies for managing your Spot Instances that are at an elevated risk
+// of being interrupted.
+type FleetSpotMaintenanceStrategiesRequest struct {
+ _ struct{} `type:"structure"`
+
+ // The strategy to use when Amazon EC2 emits a signal that your Spot Instance
+ // is at an elevated risk of being interrupted.
+ CapacityRebalance *FleetSpotCapacityRebalanceRequest `type:"structure"`
+}
+
+// String returns the string representation
+func (s FleetSpotMaintenanceStrategiesRequest) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s FleetSpotMaintenanceStrategiesRequest) GoString() string {
+ return s.String()
+}
+
+// SetCapacityRebalance sets the CapacityRebalance field's value.
+func (s *FleetSpotMaintenanceStrategiesRequest) SetCapacityRebalance(v *FleetSpotCapacityRebalanceRequest) *FleetSpotMaintenanceStrategiesRequest {
+ s.CapacityRebalance = v
+ return s
+}
+
// Describes a flow log.
type FlowLog struct {
_ struct{} `type:"structure"`
@@ -77806,7 +78745,7 @@ func (s *FpgaDeviceInfo) SetName(v string) *FpgaDeviceInfo {
type FpgaDeviceMemoryInfo struct {
_ struct{} `type:"structure"`
- // The size (in MiB) for the memory available to the FPGA accelerator.
+ // The size of the memory available to the FPGA accelerator, in MiB.
SizeInMiB *int64 `locationName:"sizeInMiB" type:"integer"`
}
@@ -78111,6 +79050,78 @@ func (s *FpgaInfo) SetTotalFpgaMemoryInMiB(v int64) *FpgaInfo {
return s
}
+type GetAssociatedEnclaveCertificateIamRolesInput struct {
+ _ struct{} `type:"structure"`
+
+ // The ARN of the ACM certificate for which to view the associated IAM roles,
+ // encryption keys, and Amazon S3 object information.
+ CertificateArn *string `min:"1" type:"string"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+}
+
+// String returns the string representation
+func (s GetAssociatedEnclaveCertificateIamRolesInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s GetAssociatedEnclaveCertificateIamRolesInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *GetAssociatedEnclaveCertificateIamRolesInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "GetAssociatedEnclaveCertificateIamRolesInput"}
+ if s.CertificateArn != nil && len(*s.CertificateArn) < 1 {
+ invalidParams.Add(request.NewErrParamMinLen("CertificateArn", 1))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetCertificateArn sets the CertificateArn field's value.
+func (s *GetAssociatedEnclaveCertificateIamRolesInput) SetCertificateArn(v string) *GetAssociatedEnclaveCertificateIamRolesInput {
+ s.CertificateArn = &v
+ return s
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *GetAssociatedEnclaveCertificateIamRolesInput) SetDryRun(v bool) *GetAssociatedEnclaveCertificateIamRolesInput {
+ s.DryRun = &v
+ return s
+}
+
+type GetAssociatedEnclaveCertificateIamRolesOutput struct {
+ _ struct{} `type:"structure"`
+
+ // Information about the associated IAM roles.
+ AssociatedRoles []*AssociatedRole `locationName:"associatedRoleSet" locationNameList:"item" type:"list"`
+}
+
+// String returns the string representation
+func (s GetAssociatedEnclaveCertificateIamRolesOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s GetAssociatedEnclaveCertificateIamRolesOutput) GoString() string {
+ return s.String()
+}
+
+// SetAssociatedRoles sets the AssociatedRoles field's value.
+func (s *GetAssociatedEnclaveCertificateIamRolesOutput) SetAssociatedRoles(v []*AssociatedRole) *GetAssociatedEnclaveCertificateIamRolesOutput {
+ s.AssociatedRoles = v
+ return s
+}
+
type GetAssociatedIpv6PoolCidrsInput struct {
_ struct{} `type:"structure"`
@@ -80314,7 +81325,7 @@ func (s *GpuDeviceInfo) SetName(v string) *GpuDeviceInfo {
type GpuDeviceMemoryInfo struct {
_ struct{} `type:"structure"`
- // The size (in MiB) for the memory available to the GPU accelerator.
+ // The size of the memory available to the GPU accelerator, in MiB.
SizeInMiB *int64 `locationName:"sizeInMiB" type:"integer"`
}
@@ -80341,7 +81352,8 @@ type GpuInfo struct {
// Describes the GPU accelerators for the instance type.
Gpus []*GpuDeviceInfo `locationName:"gpus" locationNameList:"item" type:"list"`
- // The total size of the memory for the GPU accelerators for the instance type.
+ // The total size of the memory for the GPU accelerators for the instance type,
+ // in MiB.
TotalGpuMemoryInMiB *int64 `locationName:"totalGpuMemoryInMiB" type:"integer"`
}
@@ -83277,6 +84289,9 @@ type Instance struct {
// Specifies whether enhanced networking with ENA is enabled.
EnaSupport *bool `locationName:"enaSupport" type:"boolean"`
+ // Indicates whether the instance is enabled for AWS Nitro Enclaves.
+ EnclaveOptions *EnclaveOptions `locationName:"enclaveOptions" type:"structure"`
+
// Indicates whether the instance is enabled for hibernation.
HibernationOptions *HibernationOptions `locationName:"hibernationOptions" type:"structure"`
@@ -83484,6 +84499,12 @@ func (s *Instance) SetEnaSupport(v bool) *Instance {
return s
}
+// SetEnclaveOptions sets the EnclaveOptions field's value.
+func (s *Instance) SetEnclaveOptions(v *EnclaveOptions) *Instance {
+ s.EnclaveOptions = v
+ return s
+}
+
// SetHibernationOptions sets the HibernationOptions field's value.
func (s *Instance) SetHibernationOptions(v *HibernationOptions) *Instance {
s.HibernationOptions = v
@@ -84483,6 +85504,9 @@ type InstanceNetworkInterfaceAttachment struct {
// The index of the device on the instance for the network interface attachment.
DeviceIndex *int64 `locationName:"deviceIndex" type:"integer"`
+ // The index of the network card.
+ NetworkCardIndex *int64 `locationName:"networkCardIndex" type:"integer"`
+
// The attachment state.
Status *string `locationName:"status" type:"string" enum:"AttachmentStatus"`
}
@@ -84521,6 +85545,12 @@ func (s *InstanceNetworkInterfaceAttachment) SetDeviceIndex(v int64) *InstanceNe
return s
}
+// SetNetworkCardIndex sets the NetworkCardIndex field's value.
+func (s *InstanceNetworkInterfaceAttachment) SetNetworkCardIndex(v int64) *InstanceNetworkInterfaceAttachment {
+ s.NetworkCardIndex = &v
+ return s
+}
+
// SetStatus sets the Status field's value.
func (s *InstanceNetworkInterfaceAttachment) SetStatus(v string) *InstanceNetworkInterfaceAttachment {
s.Status = &v
@@ -84565,8 +85595,10 @@ type InstanceNetworkInterfaceSpecification struct {
// creating a network interface when launching an instance.
Groups []*string `locationName:"SecurityGroupId" locationNameList:"SecurityGroupId" type:"list"`
- // The type of network interface. To create an Elastic Fabric Adapter (EFA),
- // specify efa. For more information, see Elastic Fabric Adapter (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html)
+ // The type of network interface.
+ //
+ // To create an Elastic Fabric Adapter (EFA), specify efa. For more information,
+ // see Elastic Fabric Adapter (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// If you are not creating an EFA, specify interface or omit this parameter.
@@ -84587,6 +85619,11 @@ type InstanceNetworkInterfaceSpecification struct {
// number of instances to launch.
Ipv6Addresses []*InstanceIpv6Address `locationName:"ipv6AddressesSet" queryName:"Ipv6Addresses" locationNameList:"item" type:"list"`
+ // The index of the network card. Some instance types support multiple network
+ // cards. The primary network interface must be assigned to network card index
+ // 0. The default is network card index 0.
+ NetworkCardIndex *int64 `type:"integer"`
+
// The ID of the network interface.
//
// If you are creating a Spot Fleet, omit this parameter because you can’t
@@ -84682,6 +85719,12 @@ func (s *InstanceNetworkInterfaceSpecification) SetIpv6Addresses(v []*InstanceIp
return s
}
+// SetNetworkCardIndex sets the NetworkCardIndex field's value.
+func (s *InstanceNetworkInterfaceSpecification) SetNetworkCardIndex(v int64) *InstanceNetworkInterfaceSpecification {
+ s.NetworkCardIndex = &v
+ return s
+}
+
// SetNetworkInterfaceId sets the NetworkInterfaceId field's value.
func (s *InstanceNetworkInterfaceSpecification) SetNetworkInterfaceId(v string) *InstanceNetworkInterfaceSpecification {
s.NetworkInterfaceId = &v
@@ -85132,9 +86175,13 @@ func (s *InstanceStatusSummary) SetStatus(v string) *InstanceStatusSummary {
type InstanceStorageInfo struct {
_ struct{} `type:"structure"`
- // Array describing the disks that are available for the instance type.
+ // Describes the disks that are available for the instance type.
Disks []*DiskInfo `locationName:"disks" locationNameList:"item" type:"list"`
+ // Indicates whether non-volatile memory express (NVMe) is supported for instance
+ // store.
+ NvmeSupport *string `locationName:"nvmeSupport" type:"string" enum:"EphemeralNvmeSupport"`
+
// The total size of the disks, in GB.
TotalSizeInGB *int64 `locationName:"totalSizeInGB" type:"long"`
}
@@ -85155,6 +86202,12 @@ func (s *InstanceStorageInfo) SetDisks(v []*DiskInfo) *InstanceStorageInfo {
return s
}
+// SetNvmeSupport sets the NvmeSupport field's value.
+func (s *InstanceStorageInfo) SetNvmeSupport(v string) *InstanceStorageInfo {
+ s.NvmeSupport = &v
+ return s
+}
+
// SetTotalSizeInGB sets the TotalSizeInGB field's value.
func (s *InstanceStorageInfo) SetTotalSizeInGB(v int64) *InstanceStorageInfo {
s.TotalSizeInGB = &v
@@ -85203,13 +86256,13 @@ type InstanceTypeInfo struct {
// Indicates whether auto recovery is supported.
AutoRecoverySupported *bool `locationName:"autoRecoverySupported" type:"boolean"`
- // Indicates whether the instance is bare metal.
+ // Indicates whether the instance is a bare metal instance type.
BareMetal *bool `locationName:"bareMetal" type:"boolean"`
// Indicates whether the instance type is a burstable performance instance type.
BurstablePerformanceSupported *bool `locationName:"burstablePerformanceSupported" type:"boolean"`
- // Indicates whether the instance type is a current generation.
+ // Indicates whether the instance type is current generation.
CurrentGeneration *bool `locationName:"currentGeneration" type:"boolean"`
// Indicates whether Dedicated Hosts are supported on the instance type.
@@ -85230,13 +86283,13 @@ type InstanceTypeInfo struct {
// Indicates whether On-Demand hibernation is supported.
HibernationSupported *bool `locationName:"hibernationSupported" type:"boolean"`
- // Indicates the hypervisor used for the instance type.
+ // The hypervisor for the instance type.
Hypervisor *string `locationName:"hypervisor" type:"string" enum:"InstanceTypeHypervisor"`
// Describes the Inference accelerator settings for the instance type.
InferenceAcceleratorInfo *InferenceAcceleratorInfo `locationName:"inferenceAcceleratorInfo" type:"structure"`
- // Describes the disks for the instance type.
+ // Describes the instance storage for the instance type.
InstanceStorageInfo *InstanceStorageInfo `locationName:"instanceStorageInfo" type:"structure"`
// Indicates whether instance storage is supported.
@@ -85258,7 +86311,7 @@ type InstanceTypeInfo struct {
// Describes the processor.
ProcessorInfo *ProcessorInfo `locationName:"processorInfo" type:"structure"`
- // Indicates the supported root device types.
+ // The supported root device types.
SupportedRootDeviceTypes []*string `locationName:"supportedRootDeviceTypes" locationNameList:"item" type:"list"`
// Indicates whether the instance type is offered for spot or On-Demand.
@@ -86855,6 +87908,57 @@ func (s *LaunchTemplateElasticInferenceAcceleratorResponse) SetType(v string) *L
return s
}
+// Indicates whether the instance is enabled for AWS Nitro Enclaves.
+type LaunchTemplateEnclaveOptions struct {
+ _ struct{} `type:"structure"`
+
+ // If this parameter is set to true, the instance is enabled for AWS Nitro Enclaves;
+ // otherwise, it is not enabled for AWS Nitro Enclaves.
+ Enabled *bool `locationName:"enabled" type:"boolean"`
+}
+
+// String returns the string representation
+func (s LaunchTemplateEnclaveOptions) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s LaunchTemplateEnclaveOptions) GoString() string {
+ return s.String()
+}
+
+// SetEnabled sets the Enabled field's value.
+func (s *LaunchTemplateEnclaveOptions) SetEnabled(v bool) *LaunchTemplateEnclaveOptions {
+ s.Enabled = &v
+ return s
+}
+
+// Indicates whether the instance is enabled for AWS Nitro Enclaves. For more
+// information, see What is AWS Nitro Enclaves? (https://docs.aws.amazon.com/enclaves/latest/user/nitro-enclave.html)
+// in the AWS Nitro Enclaves User Guide.
+type LaunchTemplateEnclaveOptionsRequest struct {
+ _ struct{} `type:"structure"`
+
+ // To enable the instance for AWS Nitro Enclaves, set this parameter to true.
+ Enabled *bool `type:"boolean"`
+}
+
+// String returns the string representation
+func (s LaunchTemplateEnclaveOptionsRequest) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s LaunchTemplateEnclaveOptionsRequest) GoString() string {
+ return s.String()
+}
+
+// SetEnabled sets the Enabled field's value.
+func (s *LaunchTemplateEnclaveOptionsRequest) SetEnabled(v bool) *LaunchTemplateEnclaveOptionsRequest {
+ s.Enabled = &v
+ return s
+}
+
// Indicates whether an instance is configured for hibernation.
type LaunchTemplateHibernationOptions struct {
_ struct{} `type:"structure"`
@@ -87221,6 +88325,9 @@ type LaunchTemplateInstanceNetworkInterfaceSpecification struct {
// The IPv6 addresses for the network interface.
Ipv6Addresses []*InstanceIpv6Address `locationName:"ipv6AddressesSet" locationNameList:"item" type:"list"`
+ // The index of the network card.
+ NetworkCardIndex *int64 `locationName:"networkCardIndex" type:"integer"`
+
// The ID of the network interface.
NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string"`
@@ -87301,6 +88408,12 @@ func (s *LaunchTemplateInstanceNetworkInterfaceSpecification) SetIpv6Addresses(v
return s
}
+// SetNetworkCardIndex sets the NetworkCardIndex field's value.
+func (s *LaunchTemplateInstanceNetworkInterfaceSpecification) SetNetworkCardIndex(v int64) *LaunchTemplateInstanceNetworkInterfaceSpecification {
+ s.NetworkCardIndex = &v
+ return s
+}
+
// SetNetworkInterfaceId sets the NetworkInterfaceId field's value.
func (s *LaunchTemplateInstanceNetworkInterfaceSpecification) SetNetworkInterfaceId(v string) *LaunchTemplateInstanceNetworkInterfaceSpecification {
s.NetworkInterfaceId = &v
@@ -87376,6 +88489,11 @@ type LaunchTemplateInstanceNetworkInterfaceSpecificationRequest struct {
// subnet. You can't use this option if you're specifying a number of IPv6 addresses.
Ipv6Addresses []*InstanceIpv6AddressRequest `locationNameList:"InstanceIpv6Address" type:"list"`
+ // The index of the network card. Some instance types support multiple network
+ // cards. The primary network interface must be assigned to network card index
+ // 0. The default is network card index 0.
+ NetworkCardIndex *int64 `type:"integer"`
+
// The ID of the network interface.
NetworkInterfaceId *string `type:"string"`
@@ -87456,6 +88574,12 @@ func (s *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest) SetIpv6Addr
return s
}
+// SetNetworkCardIndex sets the NetworkCardIndex field's value.
+func (s *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest) SetNetworkCardIndex(v int64) *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest {
+ s.NetworkCardIndex = &v
+ return s
+}
+
// SetNetworkInterfaceId sets the NetworkInterfaceId field's value.
func (s *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest) SetNetworkInterfaceId(v string) *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest {
s.NetworkInterfaceId = &v
@@ -89028,7 +90152,7 @@ func (s *ManagedPrefixList) SetVersion(v int64) *ManagedPrefixList {
type MemoryInfo struct {
_ struct{} `type:"structure"`
- // Size of the memory, in MiB.
+ // The size of the memory, in MiB.
SizeInMiB *int64 `locationName:"sizeInMiB" type:"long"`
}
@@ -89259,6 +90383,9 @@ func (s *ModifyCapacityReservationOutput) SetReturn(v bool) *ModifyCapacityReser
type ModifyClientVpnEndpointInput struct {
_ struct{} `type:"structure"`
+ // The options for managing connection authorization for new client connections.
+ ClientConnectOptions *ClientConnectOptions `type:"structure"`
+
// The ID of the Client VPN endpoint to modify.
//
// ClientVpnEndpointId is a required field
@@ -89294,6 +90421,9 @@ type ModifyClientVpnEndpointInput struct {
// The IDs of one or more security groups to apply to the target network.
SecurityGroupIds []*string `locationName:"SecurityGroupId" locationNameList:"item" type:"list"`
+ // Specify whether to enable the self-service portal for the Client VPN endpoint.
+ SelfServicePortal *string `type:"string" enum:"SelfServicePortal"`
+
// The ARN of the server certificate to be used. The server certificate must
// be provisioned in AWS Certificate Manager (ACM).
ServerCertificateArn *string `type:"string"`
@@ -89339,6 +90469,12 @@ func (s *ModifyClientVpnEndpointInput) Validate() error {
return nil
}
+// SetClientConnectOptions sets the ClientConnectOptions field's value.
+func (s *ModifyClientVpnEndpointInput) SetClientConnectOptions(v *ClientConnectOptions) *ModifyClientVpnEndpointInput {
+ s.ClientConnectOptions = v
+ return s
+}
+
// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value.
func (s *ModifyClientVpnEndpointInput) SetClientVpnEndpointId(v string) *ModifyClientVpnEndpointInput {
s.ClientVpnEndpointId = &v
@@ -89375,6 +90511,12 @@ func (s *ModifyClientVpnEndpointInput) SetSecurityGroupIds(v []*string) *ModifyC
return s
}
+// SetSelfServicePortal sets the SelfServicePortal field's value.
+func (s *ModifyClientVpnEndpointInput) SetSelfServicePortal(v string) *ModifyClientVpnEndpointInput {
+ s.SelfServicePortal = &v
+ return s
+}
+
// SetServerCertificateArn sets the ServerCertificateArn field's value.
func (s *ModifyClientVpnEndpointInput) SetServerCertificateArn(v string) *ModifyClientVpnEndpointInput {
s.ServerCertificateArn = &v
@@ -89527,11 +90669,11 @@ type ModifyEbsDefaultKmsKeyIdInput struct {
//
// You can specify the CMK using any of the following:
//
- // * Key ID. For example, key/1234abcd-12ab-34cd-56ef-1234567890ab.
+ // * Key ID. For example, 1234abcd-12ab-34cd-56ef-1234567890ab.
//
// * Key alias. For example, alias/ExampleAlias.
//
- // * Key ARN. For example, arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef.
+ // * Key ARN. For example, arn:aws:kms:us-east-1:012345678910:key/1234abcd-12ab-34cd-56ef-1234567890ab.
//
// * Alias ARN. For example, arn:aws:kms:us-east-1:012345678910:alias/ExampleAlias.
//
@@ -89626,9 +90768,7 @@ type ModifyFleetInput struct {
LaunchTemplateConfigs []*FleetLaunchTemplateConfigRequest `locationName:"LaunchTemplateConfig" locationNameList:"item" type:"list"`
// The size of the EC2 Fleet.
- //
- // TargetCapacitySpecification is a required field
- TargetCapacitySpecification *TargetCapacitySpecificationRequest `type:"structure" required:"true"`
+ TargetCapacitySpecification *TargetCapacitySpecificationRequest `type:"structure"`
}
// String returns the string representation
@@ -89647,9 +90787,6 @@ func (s *ModifyFleetInput) Validate() error {
if s.FleetId == nil {
invalidParams.Add(request.NewErrParamRequired("FleetId"))
}
- if s.TargetCapacitySpecification == nil {
- invalidParams.Add(request.NewErrParamRequired("TargetCapacitySpecification"))
- }
if s.LaunchTemplateConfigs != nil {
for i, v := range s.LaunchTemplateConfigs {
if v == nil {
@@ -92608,6 +93745,11 @@ func (s *ModifyTransitGatewayVpcAttachmentOutput) SetTransitGatewayVpcAttachment
type ModifyTransitGatewayVpcAttachmentRequestOptions struct {
_ struct{} `type:"structure"`
+ // Enable or disable support for appliance mode. If enabled, a traffic flow
+ // between a source and destination uses the same Availability Zone for the
+ // VPC attachment for the lifetime of that flow. The default is disable.
+ ApplianceModeSupport *string `type:"string" enum:"ApplianceModeSupportValue"`
+
// Enable or disable DNS support. The default is enable.
DnsSupport *string `type:"string" enum:"DnsSupportValue"`
@@ -92625,6 +93767,12 @@ func (s ModifyTransitGatewayVpcAttachmentRequestOptions) GoString() string {
return s.String()
}
+// SetApplianceModeSupport sets the ApplianceModeSupport field's value.
+func (s *ModifyTransitGatewayVpcAttachmentRequestOptions) SetApplianceModeSupport(v string) *ModifyTransitGatewayVpcAttachmentRequestOptions {
+ s.ApplianceModeSupport = &v
+ return s
+}
+
// SetDnsSupport sets the DnsSupport field's value.
func (s *ModifyTransitGatewayVpcAttachmentRequestOptions) SetDnsSupport(v string) *ModifyTransitGatewayVpcAttachmentRequestOptions {
s.DnsSupport = &v
@@ -94854,10 +96002,55 @@ func (s *NetworkAclEntry) SetRuleNumber(v int64) *NetworkAclEntry {
return s
}
+// Describes the network card support of the instance type.
+type NetworkCardInfo struct {
+ _ struct{} `type:"structure"`
+
+ // The maximum number of network interfaces for the network card.
+ MaximumNetworkInterfaces *int64 `locationName:"maximumNetworkInterfaces" type:"integer"`
+
+ // The index of the network card.
+ NetworkCardIndex *int64 `locationName:"networkCardIndex" type:"integer"`
+
+ // The network performance of the network card.
+ NetworkPerformance *string `locationName:"networkPerformance" type:"string"`
+}
+
+// String returns the string representation
+func (s NetworkCardInfo) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s NetworkCardInfo) GoString() string {
+ return s.String()
+}
+
+// SetMaximumNetworkInterfaces sets the MaximumNetworkInterfaces field's value.
+func (s *NetworkCardInfo) SetMaximumNetworkInterfaces(v int64) *NetworkCardInfo {
+ s.MaximumNetworkInterfaces = &v
+ return s
+}
+
+// SetNetworkCardIndex sets the NetworkCardIndex field's value.
+func (s *NetworkCardInfo) SetNetworkCardIndex(v int64) *NetworkCardInfo {
+ s.NetworkCardIndex = &v
+ return s
+}
+
+// SetNetworkPerformance sets the NetworkPerformance field's value.
+func (s *NetworkCardInfo) SetNetworkPerformance(v string) *NetworkCardInfo {
+ s.NetworkPerformance = &v
+ return s
+}
+
// Describes the networking features of the instance type.
type NetworkInfo struct {
_ struct{} `type:"structure"`
+ // The index of the default network card, starting at 0.
+ DefaultNetworkCardIndex *int64 `locationName:"defaultNetworkCardIndex" type:"integer"`
+
// Indicates whether Elastic Fabric Adapter (EFA) is supported.
EfaSupported *bool `locationName:"efaSupported" type:"boolean"`
@@ -94873,10 +96066,17 @@ type NetworkInfo struct {
// Indicates whether IPv6 is supported.
Ipv6Supported *bool `locationName:"ipv6Supported" type:"boolean"`
+ // The maximum number of physical network cards that can be allocated to the
+ // instance.
+ MaximumNetworkCards *int64 `locationName:"maximumNetworkCards" type:"integer"`
+
// The maximum number of network interfaces for the instance type.
MaximumNetworkInterfaces *int64 `locationName:"maximumNetworkInterfaces" type:"integer"`
- // Describes the network performance.
+ // Describes the network cards for the instance type.
+ NetworkCards []*NetworkCardInfo `locationName:"networkCards" locationNameList:"item" type:"list"`
+
+ // The network performance.
NetworkPerformance *string `locationName:"networkPerformance" type:"string"`
}
@@ -94890,6 +96090,12 @@ func (s NetworkInfo) GoString() string {
return s.String()
}
+// SetDefaultNetworkCardIndex sets the DefaultNetworkCardIndex field's value.
+func (s *NetworkInfo) SetDefaultNetworkCardIndex(v int64) *NetworkInfo {
+ s.DefaultNetworkCardIndex = &v
+ return s
+}
+
// SetEfaSupported sets the EfaSupported field's value.
func (s *NetworkInfo) SetEfaSupported(v bool) *NetworkInfo {
s.EfaSupported = &v
@@ -94920,12 +96126,24 @@ func (s *NetworkInfo) SetIpv6Supported(v bool) *NetworkInfo {
return s
}
+// SetMaximumNetworkCards sets the MaximumNetworkCards field's value.
+func (s *NetworkInfo) SetMaximumNetworkCards(v int64) *NetworkInfo {
+ s.MaximumNetworkCards = &v
+ return s
+}
+
// SetMaximumNetworkInterfaces sets the MaximumNetworkInterfaces field's value.
func (s *NetworkInfo) SetMaximumNetworkInterfaces(v int64) *NetworkInfo {
s.MaximumNetworkInterfaces = &v
return s
}
+// SetNetworkCards sets the NetworkCards field's value.
+func (s *NetworkInfo) SetNetworkCards(v []*NetworkCardInfo) *NetworkInfo {
+ s.NetworkCards = v
+ return s
+}
+
// SetNetworkPerformance sets the NetworkPerformance field's value.
func (s *NetworkInfo) SetNetworkPerformance(v string) *NetworkInfo {
s.NetworkPerformance = &v
@@ -95165,8 +96383,7 @@ type NetworkInterfaceAssociation struct {
// The public DNS name.
PublicDnsName *string `locationName:"publicDnsName" type:"string"`
- // The address of the Elastic IP address or Carrier IP address bound to the
- // network interface.
+ // The address of the Elastic IP address bound to the network interface.
PublicIp *string `locationName:"publicIp" type:"string"`
}
@@ -95244,6 +96461,9 @@ type NetworkInterfaceAttachment struct {
// The AWS account ID of the owner of the instance.
InstanceOwnerId *string `locationName:"instanceOwnerId" type:"string"`
+ // The index of the network card.
+ NetworkCardIndex *int64 `locationName:"networkCardIndex" type:"integer"`
+
// The attachment state.
Status *string `locationName:"status" type:"string" enum:"AttachmentStatus"`
}
@@ -95294,6 +96514,12 @@ func (s *NetworkInterfaceAttachment) SetInstanceOwnerId(v string) *NetworkInterf
return s
}
+// SetNetworkCardIndex sets the NetworkCardIndex field's value.
+func (s *NetworkInterfaceAttachment) SetNetworkCardIndex(v int64) *NetworkInterfaceAttachment {
+ s.NetworkCardIndex = &v
+ return s
+}
+
// SetStatus sets the Status field's value.
func (s *NetworkInterfaceAttachment) SetStatus(v string) *NetworkInterfaceAttachment {
s.Status = &v
@@ -96394,7 +97620,7 @@ func (s *PlacementGroup) SetTags(v []*Tag) *PlacementGroup {
type PlacementGroupInfo struct {
_ struct{} `type:"structure"`
- // A list of supported placement groups types.
+ // The supported placement group types.
SupportedStrategies []*string `locationName:"supportedStrategies" locationNameList:"item" type:"list"`
}
@@ -96909,7 +98135,7 @@ func (s *PrivateIpAddressSpecification) SetPrivateIpAddress(v string) *PrivateIp
type ProcessorInfo struct {
_ struct{} `type:"structure"`
- // A list of architectures supported by the instance type.
+ // The architectures supported by the instance type.
SupportedArchitectures []*string `locationName:"supportedArchitectures" locationNameList:"item" type:"list"`
// The speed of the processor, in GHz.
@@ -99800,6 +101026,13 @@ type RequestLaunchTemplateData struct {
// The elastic inference accelerator for the instance.
ElasticInferenceAccelerators []*LaunchTemplateElasticInferenceAccelerator `locationName:"ElasticInferenceAccelerator" locationNameList:"item" type:"list"`
+ // Indicates whether the instance is enabled for AWS Nitro Enclaves. For more
+ // information, see What is AWS Nitro Enclaves? (https://docs.aws.amazon.com/enclaves/latest/user/nitro-enclave.html)
+ // in the AWS Nitro Enclaves User Guide.
+ //
+ // You can't enable AWS Nitro Enclaves and hibernation on the same instance.
+ EnclaveOptions *LaunchTemplateEnclaveOptionsRequest `type:"structure"`
+
// Indicates whether an instance is enabled for hibernation. This parameter
// is valid only if the instance meets the hibernation prerequisites (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html#hibernating-prerequisites).
// For more information, see Hibernate Your Instance (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html)
@@ -99981,6 +101214,12 @@ func (s *RequestLaunchTemplateData) SetElasticInferenceAccelerators(v []*LaunchT
return s
}
+// SetEnclaveOptions sets the EnclaveOptions field's value.
+func (s *RequestLaunchTemplateData) SetEnclaveOptions(v *LaunchTemplateEnclaveOptionsRequest) *RequestLaunchTemplateData {
+ s.EnclaveOptions = v
+ return s
+}
+
// SetHibernationOptions sets the HibernationOptions field's value.
func (s *RequestLaunchTemplateData) SetHibernationOptions(v *LaunchTemplateHibernationOptionsRequest) *RequestLaunchTemplateData {
s.HibernationOptions = v
@@ -100205,6 +101444,9 @@ type RequestSpotInstancesInput struct {
//
// You can't specify an Availability Zone group or a launch group if you specify
// a duration.
+ //
+ // New accounts or accounts with no previous billing history with AWS are not
+ // eligible for Spot Instances with a defined duration (also known as Spot blocks).
BlockDurationMinutes *int64 `locationName:"blockDurationMinutes" type:"integer"`
// Unique, case-sensitive identifier that you provide to ensure the idempotency
@@ -100261,11 +101503,16 @@ type RequestSpotInstancesInput struct {
// date and time.
ValidFrom *time.Time `locationName:"validFrom" type:"timestamp"`
- // The end date of the request. If this is a one-time request, the request remains
- // active until all instances launch, the request is canceled, or this date
- // is reached. If the request is persistent, it remains active until it is canceled
- // or this date is reached. The default end date is 7 days from the current
- // date.
+ // The end date of the request, in UTC format (YYYY-MM-DDTHH:MM:SSZ).
+ //
+ // * For a persistent request, the request remains active until the ValidUntil
+ // date and time is reached. Otherwise, the request remains active until
+ // you cancel it.
+ //
+ // * For a one-time request, the request remains active until all instances
+ // launch, the request is canceled, or the ValidUntil date and time is reached.
+ // By default, the request is valid for 7 days from the date the request
+ // was created.
ValidUntil *time.Time `locationName:"validUntil" type:"timestamp"`
}
@@ -100587,7 +101834,9 @@ func (s *RequestSpotLaunchSpecification) SetUserData(v string) *RequestSpotLaunc
return s
}
-// Describes a reservation.
+// Describes a launch request for one or more instances, and includes owner,
+// requester, and security group information that applies to all instances in
+// the launch request.
type Reservation struct {
_ struct{} `type:"structure"`
@@ -101933,6 +103182,9 @@ type ResponseLaunchTemplateData struct {
// The elastic inference accelerator for the instance.
ElasticInferenceAccelerators []*LaunchTemplateElasticInferenceAcceleratorResponse `locationName:"elasticInferenceAcceleratorSet" locationNameList:"item" type:"list"`
+ // Indicates whether the instance is enabled for AWS Nitro Enclaves.
+ EnclaveOptions *LaunchTemplateEnclaveOptions `locationName:"enclaveOptions" type:"structure"`
+
// Indicates whether an instance is configured for hibernation. For more information,
// see Hibernate Your Instance (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html)
// in the Amazon Elastic Compute Cloud User Guide.
@@ -102051,6 +103303,12 @@ func (s *ResponseLaunchTemplateData) SetElasticInferenceAccelerators(v []*Launch
return s
}
+// SetEnclaveOptions sets the EnclaveOptions field's value.
+func (s *ResponseLaunchTemplateData) SetEnclaveOptions(v *LaunchTemplateEnclaveOptions) *ResponseLaunchTemplateData {
+ s.EnclaveOptions = v
+ return s
+}
+
// SetHibernationOptions sets the HibernationOptions field's value.
func (s *ResponseLaunchTemplateData) SetHibernationOptions(v *LaunchTemplateHibernationOptions) *ResponseLaunchTemplateData {
s.HibernationOptions = v
@@ -103171,9 +104429,18 @@ type RunInstancesInput struct {
// You cannot specify accelerators from different generations in the same request.
ElasticInferenceAccelerators []*ElasticInferenceAccelerator `locationName:"ElasticInferenceAccelerator" locationNameList:"item" type:"list"`
+ // Indicates whether the instance is enabled for AWS Nitro Enclaves. For more
+ // information, see What is AWS Nitro Enclaves? (https://docs.aws.amazon.com/enclaves/latest/user/nitro-enclave.html)
+ // in the AWS Nitro Enclaves User Guide.
+ //
+ // You can't enable AWS Nitro Enclaves and hibernation on the same instance.
+ EnclaveOptions *EnclaveOptionsRequest `type:"structure"`
+
// Indicates whether an instance is enabled for hibernation. For more information,
// see Hibernate your instance (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html)
// in the Amazon Elastic Compute Cloud User Guide.
+ //
+ // You can't enable hibernation and AWS Nitro Enclaves on the same instance.
HibernationOptions *HibernationOptionsRequest `type:"structure"`
// The IAM instance profile.
@@ -103462,6 +104729,12 @@ func (s *RunInstancesInput) SetElasticInferenceAccelerators(v []*ElasticInferenc
return s
}
+// SetEnclaveOptions sets the EnclaveOptions field's value.
+func (s *RunInstancesInput) SetEnclaveOptions(v *EnclaveOptionsRequest) *RunInstancesInput {
+ s.EnclaveOptions = v
+ return s
+}
+
// SetHibernationOptions sets the HibernationOptions field's value.
func (s *RunInstancesInput) SetHibernationOptions(v *HibernationOptionsRequest) *RunInstancesInput {
s.HibernationOptions = v
@@ -105838,10 +107111,8 @@ type Snapshot struct {
// key for the parent volume.
KmsKeyId *string `locationName:"kmsKeyId" type:"string"`
- // The AWS owner alias, as maintained by Amazon. The possible values are: amazon
- // | self | all | aws-marketplace | microsoft. This AWS owner alias is not to
- // be confused with the user-configured AWS account alias, which is set from
- // the IAM console.
+ // The AWS owner alias, from an Amazon-maintained list (amazon). This is not
+ // the user-configured AWS account alias set using the IAM console.
OwnerAlias *string `locationName:"ownerAlias" type:"string"`
// The AWS account ID of the EBS snapshot owner.
@@ -106354,11 +107625,48 @@ func (s *SnapshotTaskDetail) SetUserBucket(v *UserBucketDetails) *SnapshotTaskDe
return s
}
+// The Spot Instance replacement strategy to use when Amazon EC2 emits a signal
+// that your Spot Instance is at an elevated risk of being interrupted. For
+// more information, see Capacity rebalancing (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-configuration-strategies.html#spot-fleet-capacity-rebalance)
+// in the Amazon EC2 User Guide for Linux Instances.
+type SpotCapacityRebalance struct {
+ _ struct{} `type:"structure"`
+
+ // The replacement strategy to use. Only available for fleets of type maintain.
+ // You must specify a value, otherwise you get an error.
+ //
+ // To allow Spot Fleet to launch a replacement Spot Instance when an instance
+ // rebalance notification is emitted for a Spot Instance in the fleet, specify
+ // launch.
+ //
+ // When a replacement instance is launched, the instance marked for rebalance
+ // is not automatically terminated. You can terminate it, or you can wait until
+ // Amazon EC2 interrupts it. You are charged for all instances while they are
+ // running.
+ ReplacementStrategy *string `locationName:"replacementStrategy" type:"string" enum:"ReplacementStrategy"`
+}
+
+// String returns the string representation
+func (s SpotCapacityRebalance) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s SpotCapacityRebalance) GoString() string {
+ return s.String()
+}
+
+// SetReplacementStrategy sets the ReplacementStrategy field's value.
+func (s *SpotCapacityRebalance) SetReplacementStrategy(v string) *SpotCapacityRebalance {
+ s.ReplacementStrategy = &v
+ return s
+}
+
// Describes the data feed for a Spot Instance.
type SpotDatafeedSubscription struct {
_ struct{} `type:"structure"`
- // The Amazon S3 bucket where the Spot Instance data feed is located.
+ // The name of the Amazon S3 bucket where the Spot Instance data feed is located.
Bucket *string `locationName:"bucket" type:"string"`
// The fault codes for the Spot Instance request, if any.
@@ -106367,7 +107675,7 @@ type SpotDatafeedSubscription struct {
// The AWS account ID of the account.
OwnerId *string `locationName:"ownerId" type:"string"`
- // The prefix that is prepended to data feed files.
+ // The prefix for the data feed files.
Prefix *string `locationName:"prefix" type:"string"`
// The state of the Spot Instance data feed subscription.
@@ -106415,8 +107723,9 @@ func (s *SpotDatafeedSubscription) SetState(v string) *SpotDatafeedSubscription
}
// Describes the launch specification for one or more Spot Instances. If you
-// include On-Demand capacity in your fleet request, you can't use SpotFleetLaunchSpecification;
-// you must use LaunchTemplateConfig (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_LaunchTemplateConfig.html).
+// include On-Demand capacity in your fleet request or want to specify an EFA
+// network device, you can't use SpotFleetLaunchSpecification; you must use
+// LaunchTemplateConfig (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_LaunchTemplateConfig.html).
type SpotFleetLaunchSpecification struct {
_ struct{} `type:"structure"`
@@ -106459,6 +107768,9 @@ type SpotFleetLaunchSpecification struct {
// One or more network interfaces. If you specify a network interface, you must
// specify subnet IDs and security group IDs using the network interface.
+ //
+ // SpotFleetLaunchSpecification currently does not support Elastic Fabric Adapter
+ // (EFA). To specify an EFA, you must use LaunchTemplateConfig (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_LaunchTemplateConfig.html).
NetworkInterfaces []*InstanceNetworkInterfaceSpecification `locationName:"networkInterfaceSet" locationNameList:"item" type:"list"`
// The placement information.
@@ -106824,6 +108136,10 @@ type SpotFleetRequestConfigData struct {
// Indicates whether Spot Fleet should replace unhealthy instances.
ReplaceUnhealthyInstances *bool `locationName:"replaceUnhealthyInstances" type:"boolean"`
+ // The strategies for managing your Spot Instances that are at an elevated risk
+ // of being interrupted.
+ SpotMaintenanceStrategies *SpotMaintenanceStrategies `locationName:"spotMaintenanceStrategies" type:"structure"`
+
// The maximum amount per hour for Spot Instances that you're willing to pay.
// You can use the spotdMaxTotalPrice parameter, the onDemandMaxTotalPrice parameter,
// or both parameters to ensure that your fleet cost does not exceed your budget.
@@ -107013,6 +108329,12 @@ func (s *SpotFleetRequestConfigData) SetReplaceUnhealthyInstances(v bool) *SpotF
return s
}
+// SetSpotMaintenanceStrategies sets the SpotMaintenanceStrategies field's value.
+func (s *SpotFleetRequestConfigData) SetSpotMaintenanceStrategies(v *SpotMaintenanceStrategies) *SpotFleetRequestConfigData {
+ s.SpotMaintenanceStrategies = v
+ return s
+}
+
// SetSpotMaxTotalPrice sets the SpotMaxTotalPrice field's value.
func (s *SpotFleetRequestConfigData) SetSpotMaxTotalPrice(v string) *SpotFleetRequestConfigData {
s.SpotMaxTotalPrice = &v
@@ -107163,11 +108485,16 @@ type SpotInstanceRequest struct {
// The request becomes active at this date and time.
ValidFrom *time.Time `locationName:"validFrom" type:"timestamp"`
- // The end date of the request, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ).
- // If this is a one-time request, it remains active until all instances launch,
- // the request is canceled, or this date is reached. If the request is persistent,
- // it remains active until it is canceled or this date is reached. The default
- // end date is 7 days from the current date.
+ // The end date of the request, in UTC format (YYYY-MM-DDTHH:MM:SSZ).
+ //
+ // * For a persistent request, the request remains active until the validUntil
+ // date and time is reached. Otherwise, the request remains active until
+ // you cancel it.
+ //
+ // * For a one-time request, the request remains active until all instances
+ // launch, the request is canceled, or the validUntil date and time is reached.
+ // By default, the request is valid for 7 days from the date the request
+ // was created.
ValidUntil *time.Time `locationName:"validUntil" type:"timestamp"`
}
@@ -107372,6 +108699,32 @@ func (s *SpotInstanceStatus) SetUpdateTime(v time.Time) *SpotInstanceStatus {
return s
}
+// The strategies for managing your Spot Instances that are at an elevated risk
+// of being interrupted.
+type SpotMaintenanceStrategies struct {
+ _ struct{} `type:"structure"`
+
+ // The strategy to use when Amazon EC2 emits a signal that your Spot Instance
+ // is at an elevated risk of being interrupted.
+ CapacityRebalance *SpotCapacityRebalance `locationName:"capacityRebalance" type:"structure"`
+}
+
+// String returns the string representation
+func (s SpotMaintenanceStrategies) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s SpotMaintenanceStrategies) GoString() string {
+ return s.String()
+}
+
+// SetCapacityRebalance sets the CapacityRebalance field's value.
+func (s *SpotMaintenanceStrategies) SetCapacityRebalance(v *SpotCapacityRebalance) *SpotMaintenanceStrategies {
+ s.CapacityRebalance = v
+ return s
+}
+
// The options for Spot Instances.
type SpotMarketOptions struct {
_ struct{} `type:"structure"`
@@ -107379,6 +108732,17 @@ type SpotMarketOptions struct {
// The required duration for the Spot Instances (also known as Spot blocks),
// in minutes. This value must be a multiple of 60 (60, 120, 180, 240, 300,
// or 360).
+ //
+ // The duration period starts as soon as your Spot Instance receives its instance
+ // ID. At the end of the duration period, Amazon EC2 marks the Spot Instance
+ // for termination and provides a Spot Instance termination notice, which gives
+ // the instance a two-minute warning before it terminates.
+ //
+ // You can't specify an Availability Zone group or a launch group if you specify
+ // a duration.
+ //
+ // New accounts or accounts with no previous billing history with AWS are not
+ // eligible for Spot Instances with a defined duration (also known as Spot blocks).
BlockDurationMinutes *int64 `type:"integer"`
// The behavior when a Spot Instance is interrupted. The default is terminate.
@@ -107393,11 +108757,15 @@ type SpotMarketOptions struct {
// is set to either hibernate or stop.
SpotInstanceType *string `type:"string" enum:"SpotInstanceType"`
- // The end date of the request. For a one-time request, the request remains
- // active until all instances launch, the request is canceled, or this date
- // is reached. If the request is persistent, it remains active until it is canceled
- // or this date and time is reached. The default end date is 7 days from the
- // current date.
+ // The end date of the request, in UTC format (YYYY-MM-DDTHH:MM:SSZ). Supported
+ // only for persistent requests.
+ //
+ // * For a persistent request, the request remains active until the ValidUntil
+ // date and time is reached. Otherwise, the request remains active until
+ // you cancel it.
+ //
+ // * For a one-time request, ValidUntil is not supported. The request remains
+ // active until all instances launch or you cancel the request.
ValidUntil *time.Time `type:"timestamp"`
}
@@ -107469,6 +108837,10 @@ type SpotOptions struct {
// the number of Spot pools that you specify.
InstancePoolsToUseCount *int64 `locationName:"instancePoolsToUseCount" type:"integer"`
+ // The strategies for managing your workloads on your Spot Instances that will
+ // be interrupted. Currently only the capacity rebalance strategy is available.
+ MaintenanceStrategies *FleetSpotMaintenanceStrategies `locationName:"maintenanceStrategies" type:"structure"`
+
// The maximum amount per hour for Spot Instances that you're willing to pay.
MaxTotalPrice *string `locationName:"maxTotalPrice" type:"string"`
@@ -107513,6 +108885,12 @@ func (s *SpotOptions) SetInstancePoolsToUseCount(v int64) *SpotOptions {
return s
}
+// SetMaintenanceStrategies sets the MaintenanceStrategies field's value.
+func (s *SpotOptions) SetMaintenanceStrategies(v *FleetSpotMaintenanceStrategies) *SpotOptions {
+ s.MaintenanceStrategies = v
+ return s
+}
+
// SetMaxTotalPrice sets the MaxTotalPrice field's value.
func (s *SpotOptions) SetMaxTotalPrice(v string) *SpotOptions {
s.MaxTotalPrice = &v
@@ -107565,6 +108943,10 @@ type SpotOptionsRequest struct {
// across the number of Spot pools that you specify.
InstancePoolsToUseCount *int64 `type:"integer"`
+ // The strategies for managing your Spot Instances that are at an elevated risk
+ // of being interrupted.
+ MaintenanceStrategies *FleetSpotMaintenanceStrategiesRequest `type:"structure"`
+
// The maximum amount per hour for Spot Instances that you're willing to pay.
MaxTotalPrice *string `type:"string"`
@@ -107609,6 +108991,12 @@ func (s *SpotOptionsRequest) SetInstancePoolsToUseCount(v int64) *SpotOptionsReq
return s
}
+// SetMaintenanceStrategies sets the MaintenanceStrategies field's value.
+func (s *SpotOptionsRequest) SetMaintenanceStrategies(v *FleetSpotMaintenanceStrategiesRequest) *SpotOptionsRequest {
+ s.MaintenanceStrategies = v
+ return s
+}
+
// SetMaxTotalPrice sets the MaxTotalPrice field's value.
func (s *SpotOptionsRequest) SetMaxTotalPrice(v string) *SpotOptionsRequest {
s.MaxTotalPrice = &v
@@ -108692,12 +110080,12 @@ type TagSpecification struct {
_ struct{} `type:"structure"`
// The type of resource to tag. Currently, the resource types that support tagging
- // on creation are: capacity-reservation | client-vpn-endpoint | customer-gateway
- // | dedicated-host | dhcp-options | export-image-task | export-instance-task
- // | fleet | fpga-image | host-reservation | import-image-task | import-snapshot-task
- // | instance | internet-gateway | ipv4pool-ec2 | ipv6pool-ec2 | key-pair |
- // launch-template | placement-group | prefix-list | natgateway | network-acl
- // | route-table | security-group | spot-fleet-request | spot-instances-request
+ // on creation are: capacity-reservation | carrier-gateway | client-vpn-endpoint
+ // | customer-gateway | dedicated-host | dhcp-options | export-image-task |
+ // export-instance-task | fleet | fpga-image | host-reservation | import-image-task
+ // | import-snapshot-task | instance | internet-gateway | ipv4pool-ec2 | ipv6pool-ec2
+ // | key-pair | launch-template | placement-group | prefix-list | natgateway
+ // | network-acl | route-table | security-group | spot-fleet-request | spot-instances-request
// | snapshot | subnet | traffic-mirror-filter | traffic-mirror-session | traffic-mirror-target
// | transit-gateway | transit-gateway-attachment | transit-gateway-route-table
// | volume |vpc | vpc-peering-connection | vpc-endpoint (for interface and
@@ -111387,6 +112775,9 @@ func (s *TransitGatewayVpcAttachment) SetVpcOwnerId(v string) *TransitGatewayVpc
type TransitGatewayVpcAttachmentOptions struct {
_ struct{} `type:"structure"`
+ // Indicates whether appliance mode support is enabled.
+ ApplianceModeSupport *string `locationName:"applianceModeSupport" type:"string" enum:"ApplianceModeSupportValue"`
+
// Indicates whether DNS support is enabled.
DnsSupport *string `locationName:"dnsSupport" type:"string" enum:"DnsSupportValue"`
@@ -111404,6 +112795,12 @@ func (s TransitGatewayVpcAttachmentOptions) GoString() string {
return s.String()
}
+// SetApplianceModeSupport sets the ApplianceModeSupport field's value.
+func (s *TransitGatewayVpcAttachmentOptions) SetApplianceModeSupport(v string) *TransitGatewayVpcAttachmentOptions {
+ s.ApplianceModeSupport = &v
+ return s
+}
+
// SetDnsSupport sets the DnsSupport field's value.
func (s *TransitGatewayVpcAttachmentOptions) SetDnsSupport(v string) *TransitGatewayVpcAttachmentOptions {
s.DnsSupport = &v
@@ -112355,12 +113752,11 @@ type VCpuInfo struct {
// The default number of vCPUs for the instance type.
DefaultVCpus *int64 `locationName:"defaultVCpus" type:"integer"`
- // List of the valid number of cores that can be configured for the instance
- // type.
+ // The valid number of cores that can be configured for the instance type.
ValidCores []*int64 `locationName:"validCores" locationNameList:"item" type:"list"`
- // List of the valid number of threads per core that can be configured for the
- // instance type.
+ // The valid number of threads per core that can be configured for the instance
+ // type.
ValidThreadsPerCore []*int64 `locationName:"validThreadsPerCore" locationNameList:"item" type:"list"`
}
@@ -114929,6 +116325,22 @@ func AllowsMultipleInstanceTypes_Values() []string {
}
}
+const (
+ // ApplianceModeSupportValueEnable is a ApplianceModeSupportValue enum value
+ ApplianceModeSupportValueEnable = "enable"
+
+ // ApplianceModeSupportValueDisable is a ApplianceModeSupportValue enum value
+ ApplianceModeSupportValueDisable = "disable"
+)
+
+// ApplianceModeSupportValue_Values returns all elements of the ApplianceModeSupportValue enum
+func ApplianceModeSupportValue_Values() []string {
+ return []string{
+ ApplianceModeSupportValueEnable,
+ ApplianceModeSupportValueDisable,
+ }
+}
+
const (
// ArchitectureTypeI386 is a ArchitectureType enum value
ArchitectureTypeI386 = "i386"
@@ -115493,6 +116905,22 @@ func ClientVpnConnectionStatusCode_Values() []string {
}
}
+const (
+ // ClientVpnEndpointAttributeStatusCodeApplying is a ClientVpnEndpointAttributeStatusCode enum value
+ ClientVpnEndpointAttributeStatusCodeApplying = "applying"
+
+ // ClientVpnEndpointAttributeStatusCodeApplied is a ClientVpnEndpointAttributeStatusCode enum value
+ ClientVpnEndpointAttributeStatusCodeApplied = "applied"
+)
+
+// ClientVpnEndpointAttributeStatusCode_Values returns all elements of the ClientVpnEndpointAttributeStatusCode enum
+func ClientVpnEndpointAttributeStatusCode_Values() []string {
+ return []string{
+ ClientVpnEndpointAttributeStatusCodeApplying,
+ ClientVpnEndpointAttributeStatusCodeApplied,
+ }
+}
+
const (
// ClientVpnEndpointStatusCodePendingAssociate is a ClientVpnEndpointStatusCode enum value
ClientVpnEndpointStatusCodePendingAssociate = "pending-associate"
@@ -115961,6 +117389,26 @@ func EndDateType_Values() []string {
}
}
+const (
+ // EphemeralNvmeSupportUnsupported is a EphemeralNvmeSupport enum value
+ EphemeralNvmeSupportUnsupported = "unsupported"
+
+ // EphemeralNvmeSupportSupported is a EphemeralNvmeSupport enum value
+ EphemeralNvmeSupportSupported = "supported"
+
+ // EphemeralNvmeSupportRequired is a EphemeralNvmeSupport enum value
+ EphemeralNvmeSupportRequired = "required"
+)
+
+// EphemeralNvmeSupport_Values returns all elements of the EphemeralNvmeSupport enum
+func EphemeralNvmeSupport_Values() []string {
+ return []string{
+ EphemeralNvmeSupportUnsupported,
+ EphemeralNvmeSupportSupported,
+ EphemeralNvmeSupportRequired,
+ }
+}
+
const (
// EventCodeInstanceReboot is a EventCode enum value
EventCodeInstanceReboot = "instance-reboot"
@@ -116189,6 +117637,18 @@ func FleetOnDemandAllocationStrategy_Values() []string {
}
}
+const (
+ // FleetReplacementStrategyLaunch is a FleetReplacementStrategy enum value
+ FleetReplacementStrategyLaunch = "launch"
+)
+
+// FleetReplacementStrategy_Values returns all elements of the FleetReplacementStrategy enum
+func FleetReplacementStrategy_Values() []string {
+ return []string{
+ FleetReplacementStrategyLaunch,
+ }
+}
+
const (
// FleetStateCodeSubmitted is a FleetStateCode enum value
FleetStateCodeSubmitted = "submitted"
@@ -116547,6 +118007,9 @@ const (
// InstanceAttributeNameEnaSupport is a InstanceAttributeName enum value
InstanceAttributeNameEnaSupport = "enaSupport"
+
+ // InstanceAttributeNameEnclaveOptions is a InstanceAttributeName enum value
+ InstanceAttributeNameEnclaveOptions = "enclaveOptions"
)
// InstanceAttributeName_Values returns all elements of the InstanceAttributeName enum
@@ -116566,6 +118029,7 @@ func InstanceAttributeName_Values() []string {
InstanceAttributeNameEbsOptimized,
InstanceAttributeNameSriovNetSupport,
InstanceAttributeNameEnaSupport,
+ InstanceAttributeNameEnclaveOptions,
}
}
@@ -117414,6 +118878,9 @@ const (
// InstanceTypeP3dn24xlarge is a InstanceType enum value
InstanceTypeP3dn24xlarge = "p3dn.24xlarge"
+ // InstanceTypeP4d24xlarge is a InstanceType enum value
+ InstanceTypeP4d24xlarge = "p4d.24xlarge"
+
// InstanceTypeD2Xlarge is a InstanceType enum value
InstanceTypeD2Xlarge = "d2.xlarge"
@@ -118001,6 +119468,7 @@ func InstanceType_Values() []string {
InstanceTypeP38xlarge,
InstanceTypeP316xlarge,
InstanceTypeP3dn24xlarge,
+ InstanceTypeP4d24xlarge,
InstanceTypeD2Xlarge,
InstanceTypeD22xlarge,
InstanceTypeD24xlarge,
@@ -118941,6 +120409,18 @@ func RecurringChargeFrequency_Values() []string {
}
}
+const (
+ // ReplacementStrategyLaunch is a ReplacementStrategy enum value
+ ReplacementStrategyLaunch = "launch"
+)
+
+// ReplacementStrategy_Values returns all elements of the ReplacementStrategy enum
+func ReplacementStrategy_Values() []string {
+ return []string{
+ ReplacementStrategyLaunch,
+ }
+}
+
const (
// ReportInstanceReasonCodesInstanceStuckInState is a ReportInstanceReasonCodes enum value
ReportInstanceReasonCodesInstanceStuckInState = "instance-stuck-in-state"
@@ -119377,6 +120857,22 @@ func Scope_Values() []string {
}
}
+const (
+ // SelfServicePortalEnabled is a SelfServicePortal enum value
+ SelfServicePortalEnabled = "enabled"
+
+ // SelfServicePortalDisabled is a SelfServicePortal enum value
+ SelfServicePortalDisabled = "disabled"
+)
+
+// SelfServicePortal_Values returns all elements of the SelfServicePortal enum
+func SelfServicePortal_Values() []string {
+ return []string{
+ SelfServicePortalEnabled,
+ SelfServicePortalDisabled,
+ }
+}
+
const (
// ServiceStatePending is a ServiceState enum value
ServiceStatePending = "Pending"
diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/api.go b/vendor/github.com/aws/aws-sdk-go/service/s3/api.go
index bcf7f034..2ab5d1da 100644
--- a/vendor/github.com/aws/aws-sdk-go/service/s3/api.go
+++ b/vendor/github.com/aws/aws-sdk-go/service/s3/api.go
@@ -1212,6 +1212,106 @@ func (c *S3) DeleteBucketEncryptionWithContext(ctx aws.Context, input *DeleteBuc
return out, req.Send()
}
+const opDeleteBucketIntelligentTieringConfiguration = "DeleteBucketIntelligentTieringConfiguration"
+
+// DeleteBucketIntelligentTieringConfigurationRequest generates a "aws/request.Request" representing the
+// client's request for the DeleteBucketIntelligentTieringConfiguration operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See DeleteBucketIntelligentTieringConfiguration for more information on using the DeleteBucketIntelligentTieringConfiguration
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the DeleteBucketIntelligentTieringConfigurationRequest method.
+// req, resp := client.DeleteBucketIntelligentTieringConfigurationRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketIntelligentTieringConfiguration
+func (c *S3) DeleteBucketIntelligentTieringConfigurationRequest(input *DeleteBucketIntelligentTieringConfigurationInput) (req *request.Request, output *DeleteBucketIntelligentTieringConfigurationOutput) {
+ op := &request.Operation{
+ Name: opDeleteBucketIntelligentTieringConfiguration,
+ HTTPMethod: "DELETE",
+ HTTPPath: "/{Bucket}?intelligent-tiering",
+ }
+
+ if input == nil {
+ input = &DeleteBucketIntelligentTieringConfigurationInput{}
+ }
+
+ output = &DeleteBucketIntelligentTieringConfigurationOutput{}
+ req = c.newRequest(op, input, output)
+ req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
+ return
+}
+
+// DeleteBucketIntelligentTieringConfiguration API operation for Amazon Simple Storage Service.
+//
+// Deletes the S3 Intelligent-Tiering configuration from the specified bucket.
+//
+// The S3 Intelligent-Tiering storage class is designed to optimize storage
+// costs by automatically moving data to the most cost-effective storage access
+// tier, without additional operational overhead. S3 Intelligent-Tiering delivers
+// automatic cost savings by moving data between access tiers, when access patterns
+// change.
+//
+// The S3 Intelligent-Tiering storage class is suitable for objects larger than
+// 128 KB that you plan to store for at least 30 days. If the size of an object
+// is less than 128 KB, it is not eligible for auto-tiering. Smaller objects
+// can be stored, but they are always charged at the frequent access tier rates
+// in the S3 Intelligent-Tiering storage class.
+//
+// If you delete an object before the end of the 30-day minimum storage duration
+// period, you are charged for 30 days. For more information, see Storage class
+// for automatically optimizing frequently and infrequently accessed objects
+// (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access).
+//
+// Operations related to DeleteBucketIntelligentTieringConfiguration include:
+//
+// * GetBucketIntelligentTieringConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketIntelligentTieringConfiguration.html)
+//
+// * PutBucketIntelligentTieringConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketIntelligentTieringConfiguration.html)
+//
+// * ListBucketIntelligentTieringConfigurations (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketIntelligentTieringConfigurations.html)
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Simple Storage Service's
+// API operation DeleteBucketIntelligentTieringConfiguration for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketIntelligentTieringConfiguration
+func (c *S3) DeleteBucketIntelligentTieringConfiguration(input *DeleteBucketIntelligentTieringConfigurationInput) (*DeleteBucketIntelligentTieringConfigurationOutput, error) {
+ req, out := c.DeleteBucketIntelligentTieringConfigurationRequest(input)
+ return out, req.Send()
+}
+
+// DeleteBucketIntelligentTieringConfigurationWithContext is the same as DeleteBucketIntelligentTieringConfiguration with the addition of
+// the ability to pass a context and additional request options.
+//
+// See DeleteBucketIntelligentTieringConfiguration for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *S3) DeleteBucketIntelligentTieringConfigurationWithContext(ctx aws.Context, input *DeleteBucketIntelligentTieringConfigurationInput, opts ...request.Option) (*DeleteBucketIntelligentTieringConfigurationOutput, error) {
+ req, out := c.DeleteBucketIntelligentTieringConfigurationRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
const opDeleteBucketInventoryConfiguration = "DeleteBucketInventoryConfiguration"
// DeleteBucketInventoryConfigurationRequest generates a "aws/request.Request" representing the
@@ -2798,6 +2898,105 @@ func (c *S3) GetBucketEncryptionWithContext(ctx aws.Context, input *GetBucketEnc
return out, req.Send()
}
+const opGetBucketIntelligentTieringConfiguration = "GetBucketIntelligentTieringConfiguration"
+
+// GetBucketIntelligentTieringConfigurationRequest generates a "aws/request.Request" representing the
+// client's request for the GetBucketIntelligentTieringConfiguration operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See GetBucketIntelligentTieringConfiguration for more information on using the GetBucketIntelligentTieringConfiguration
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the GetBucketIntelligentTieringConfigurationRequest method.
+// req, resp := client.GetBucketIntelligentTieringConfigurationRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketIntelligentTieringConfiguration
+func (c *S3) GetBucketIntelligentTieringConfigurationRequest(input *GetBucketIntelligentTieringConfigurationInput) (req *request.Request, output *GetBucketIntelligentTieringConfigurationOutput) {
+ op := &request.Operation{
+ Name: opGetBucketIntelligentTieringConfiguration,
+ HTTPMethod: "GET",
+ HTTPPath: "/{Bucket}?intelligent-tiering",
+ }
+
+ if input == nil {
+ input = &GetBucketIntelligentTieringConfigurationInput{}
+ }
+
+ output = &GetBucketIntelligentTieringConfigurationOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// GetBucketIntelligentTieringConfiguration API operation for Amazon Simple Storage Service.
+//
+// Gets the S3 Intelligent-Tiering configuration from the specified bucket.
+//
+// The S3 Intelligent-Tiering storage class is designed to optimize storage
+// costs by automatically moving data to the most cost-effective storage access
+// tier, without additional operational overhead. S3 Intelligent-Tiering delivers
+// automatic cost savings by moving data between access tiers, when access patterns
+// change.
+//
+// The S3 Intelligent-Tiering storage class is suitable for objects larger than
+// 128 KB that you plan to store for at least 30 days. If the size of an object
+// is less than 128 KB, it is not eligible for auto-tiering. Smaller objects
+// can be stored, but they are always charged at the frequent access tier rates
+// in the S3 Intelligent-Tiering storage class.
+//
+// If you delete an object before the end of the 30-day minimum storage duration
+// period, you are charged for 30 days. For more information, see Storage class
+// for automatically optimizing frequently and infrequently accessed objects
+// (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access).
+//
+// Operations related to GetBucketIntelligentTieringConfiguration include:
+//
+// * DeleteBucketIntelligentTieringConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketIntelligentTieringConfiguration.html)
+//
+// * PutBucketIntelligentTieringConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketIntelligentTieringConfiguration.html)
+//
+// * ListBucketIntelligentTieringConfigurations (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketIntelligentTieringConfigurations.html)
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Simple Storage Service's
+// API operation GetBucketIntelligentTieringConfiguration for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketIntelligentTieringConfiguration
+func (c *S3) GetBucketIntelligentTieringConfiguration(input *GetBucketIntelligentTieringConfigurationInput) (*GetBucketIntelligentTieringConfigurationOutput, error) {
+ req, out := c.GetBucketIntelligentTieringConfigurationRequest(input)
+ return out, req.Send()
+}
+
+// GetBucketIntelligentTieringConfigurationWithContext is the same as GetBucketIntelligentTieringConfiguration with the addition of
+// the ability to pass a context and additional request options.
+//
+// See GetBucketIntelligentTieringConfiguration for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *S3) GetBucketIntelligentTieringConfigurationWithContext(ctx aws.Context, input *GetBucketIntelligentTieringConfigurationInput, opts ...request.Option) (*GetBucketIntelligentTieringConfigurationOutput, error) {
+ req, out := c.GetBucketIntelligentTieringConfigurationRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
const opGetBucketInventoryConfiguration = "GetBucketInventoryConfiguration"
// GetBucketInventoryConfigurationRequest generates a "aws/request.Request" representing the
@@ -4314,9 +4513,10 @@ func (c *S3) GetObjectRequest(input *GetObjectInput) (req *request.Request, outp
// For more information about returning the ACL of an object, see GetObjectAcl
// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAcl.html).
//
-// If the object you are retrieving is stored in the GLACIER or DEEP_ARCHIVE
-// storage classes, before you can retrieve the object you must first restore
-// a copy using RestoreObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html).
+// If the object you are retrieving is stored in the S3 Glacier, S3 Glacier
+// Deep Archive, S3 Intelligent-Tiering Archive, or S3 Intelligent-Tiering Deep
+// Archive storage classes, before you can retrieve the object you must first
+// restore a copy using RestoreObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html).
// Otherwise, this operation returns an InvalidObjectStateError error. For information
// about restoring archived objects, see Restoring Archived Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html).
//
@@ -4429,6 +4629,9 @@ func (c *S3) GetObjectRequest(input *GetObjectInput) (req *request.Request, outp
// * ErrCodeNoSuchKey "NoSuchKey"
// The specified key does not exist.
//
+// * ErrCodeInvalidObjectState "InvalidObjectState"
+// Object is archived and inaccessible until restored.
+//
// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObject
func (c *S3) GetObject(input *GetObjectInput) (*GetObjectOutput, error) {
req, out := c.GetObjectRequest(input)
@@ -5379,6 +5582,105 @@ func (c *S3) ListBucketAnalyticsConfigurationsWithContext(ctx aws.Context, input
return out, req.Send()
}
+const opListBucketIntelligentTieringConfigurations = "ListBucketIntelligentTieringConfigurations"
+
+// ListBucketIntelligentTieringConfigurationsRequest generates a "aws/request.Request" representing the
+// client's request for the ListBucketIntelligentTieringConfigurations operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See ListBucketIntelligentTieringConfigurations for more information on using the ListBucketIntelligentTieringConfigurations
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the ListBucketIntelligentTieringConfigurationsRequest method.
+// req, resp := client.ListBucketIntelligentTieringConfigurationsRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketIntelligentTieringConfigurations
+func (c *S3) ListBucketIntelligentTieringConfigurationsRequest(input *ListBucketIntelligentTieringConfigurationsInput) (req *request.Request, output *ListBucketIntelligentTieringConfigurationsOutput) {
+ op := &request.Operation{
+ Name: opListBucketIntelligentTieringConfigurations,
+ HTTPMethod: "GET",
+ HTTPPath: "/{Bucket}?intelligent-tiering",
+ }
+
+ if input == nil {
+ input = &ListBucketIntelligentTieringConfigurationsInput{}
+ }
+
+ output = &ListBucketIntelligentTieringConfigurationsOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// ListBucketIntelligentTieringConfigurations API operation for Amazon Simple Storage Service.
+//
+// Lists the S3 Intelligent-Tiering configuration from the specified bucket.
+//
+// The S3 Intelligent-Tiering storage class is designed to optimize storage
+// costs by automatically moving data to the most cost-effective storage access
+// tier, without additional operational overhead. S3 Intelligent-Tiering delivers
+// automatic cost savings by moving data between access tiers, when access patterns
+// change.
+//
+// The S3 Intelligent-Tiering storage class is suitable for objects larger than
+// 128 KB that you plan to store for at least 30 days. If the size of an object
+// is less than 128 KB, it is not eligible for auto-tiering. Smaller objects
+// can be stored, but they are always charged at the frequent access tier rates
+// in the S3 Intelligent-Tiering storage class.
+//
+// If you delete an object before the end of the 30-day minimum storage duration
+// period, you are charged for 30 days. For more information, see Storage class
+// for automatically optimizing frequently and infrequently accessed objects
+// (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access).
+//
+// Operations related to ListBucketIntelligentTieringConfigurations include:
+//
+// * DeleteBucketIntelligentTieringConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketIntelligentTieringConfiguration.html)
+//
+// * PutBucketIntelligentTieringConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketIntelligentTieringConfiguration.html)
+//
+// * GetBucketIntelligentTieringConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketIntelligentTieringConfiguration.html)
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Simple Storage Service's
+// API operation ListBucketIntelligentTieringConfigurations for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketIntelligentTieringConfigurations
+func (c *S3) ListBucketIntelligentTieringConfigurations(input *ListBucketIntelligentTieringConfigurationsInput) (*ListBucketIntelligentTieringConfigurationsOutput, error) {
+ req, out := c.ListBucketIntelligentTieringConfigurationsRequest(input)
+ return out, req.Send()
+}
+
+// ListBucketIntelligentTieringConfigurationsWithContext is the same as ListBucketIntelligentTieringConfigurations with the addition of
+// the ability to pass a context and additional request options.
+//
+// See ListBucketIntelligentTieringConfigurations for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *S3) ListBucketIntelligentTieringConfigurationsWithContext(ctx aws.Context, input *ListBucketIntelligentTieringConfigurationsInput, opts ...request.Option) (*ListBucketIntelligentTieringConfigurationsOutput, error) {
+ req, out := c.ListBucketIntelligentTieringConfigurationsRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
const opListBucketInventoryConfigurations = "ListBucketInventoryConfigurations"
// ListBucketInventoryConfigurationsRequest generates a "aws/request.Request" representing the
@@ -7066,6 +7368,106 @@ func (c *S3) PutBucketEncryptionWithContext(ctx aws.Context, input *PutBucketEnc
return out, req.Send()
}
+const opPutBucketIntelligentTieringConfiguration = "PutBucketIntelligentTieringConfiguration"
+
+// PutBucketIntelligentTieringConfigurationRequest generates a "aws/request.Request" representing the
+// client's request for the PutBucketIntelligentTieringConfiguration operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See PutBucketIntelligentTieringConfiguration for more information on using the PutBucketIntelligentTieringConfiguration
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the PutBucketIntelligentTieringConfigurationRequest method.
+// req, resp := client.PutBucketIntelligentTieringConfigurationRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketIntelligentTieringConfiguration
+func (c *S3) PutBucketIntelligentTieringConfigurationRequest(input *PutBucketIntelligentTieringConfigurationInput) (req *request.Request, output *PutBucketIntelligentTieringConfigurationOutput) {
+ op := &request.Operation{
+ Name: opPutBucketIntelligentTieringConfiguration,
+ HTTPMethod: "PUT",
+ HTTPPath: "/{Bucket}?intelligent-tiering",
+ }
+
+ if input == nil {
+ input = &PutBucketIntelligentTieringConfigurationInput{}
+ }
+
+ output = &PutBucketIntelligentTieringConfigurationOutput{}
+ req = c.newRequest(op, input, output)
+ req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
+ return
+}
+
+// PutBucketIntelligentTieringConfiguration API operation for Amazon Simple Storage Service.
+//
+// Puts a S3 Intelligent-Tiering configuration to the specified bucket.
+//
+// The S3 Intelligent-Tiering storage class is designed to optimize storage
+// costs by automatically moving data to the most cost-effective storage access
+// tier, without additional operational overhead. S3 Intelligent-Tiering delivers
+// automatic cost savings by moving data between access tiers, when access patterns
+// change.
+//
+// The S3 Intelligent-Tiering storage class is suitable for objects larger than
+// 128 KB that you plan to store for at least 30 days. If the size of an object
+// is less than 128 KB, it is not eligible for auto-tiering. Smaller objects
+// can be stored, but they are always charged at the frequent access tier rates
+// in the S3 Intelligent-Tiering storage class.
+//
+// If you delete an object before the end of the 30-day minimum storage duration
+// period, you are charged for 30 days. For more information, see Storage class
+// for automatically optimizing frequently and infrequently accessed objects
+// (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access).
+//
+// Operations related to PutBucketIntelligentTieringConfiguration include:
+//
+// * DeleteBucketIntelligentTieringConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketIntelligentTieringConfiguration.html)
+//
+// * GetBucketIntelligentTieringConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketIntelligentTieringConfiguration.html)
+//
+// * ListBucketIntelligentTieringConfigurations (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketIntelligentTieringConfigurations.html)
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Simple Storage Service's
+// API operation PutBucketIntelligentTieringConfiguration for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketIntelligentTieringConfiguration
+func (c *S3) PutBucketIntelligentTieringConfiguration(input *PutBucketIntelligentTieringConfigurationInput) (*PutBucketIntelligentTieringConfigurationOutput, error) {
+ req, out := c.PutBucketIntelligentTieringConfigurationRequest(input)
+ return out, req.Send()
+}
+
+// PutBucketIntelligentTieringConfigurationWithContext is the same as PutBucketIntelligentTieringConfiguration with the addition of
+// the ability to pass a context and additional request options.
+//
+// See PutBucketIntelligentTieringConfiguration for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *S3) PutBucketIntelligentTieringConfigurationWithContext(ctx aws.Context, input *PutBucketIntelligentTieringConfigurationInput, opts ...request.Option) (*PutBucketIntelligentTieringConfigurationOutput, error) {
+ req, out := c.PutBucketIntelligentTieringConfigurationRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
const opPutBucketInventoryConfiguration = "PutBucketInventoryConfiguration"
// PutBucketInventoryConfigurationRequest generates a "aws/request.Request" representing the
@@ -7950,14 +8352,14 @@ func (c *S3) PutBucketOwnershipControlsRequest(input *PutBucketOwnershipControls
// PutBucketOwnershipControls API operation for Amazon Simple Storage Service.
//
// Creates or modifies OwnershipControls for an Amazon S3 bucket. To use this
-// operation, you must have the s3:GetBucketOwnershipControls permission. For
+// operation, you must have the s3:PutBucketOwnershipControls permission. For
// more information about Amazon S3 permissions, see Specifying Permissions
// in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html).
//
// For information about Amazon S3 Object Ownership, see Using Object Ownership
// (https://docs.aws.amazon.com/AmazonS3/latest/dev/about-object-ownership.html).
//
-// The following operations are related to GetBucketOwnershipControls:
+// The following operations are related to PutBucketOwnershipControls:
//
// * GetBucketOwnershipControls
//
@@ -9599,58 +10001,56 @@ func (c *S3) RestoreObjectRequest(input *RestoreObjectInput) (req *request.Reque
//
// Restoring Archives
//
-// Objects in the GLACIER and DEEP_ARCHIVE storage classes are archived. To
-// access an archived object, you must first initiate a restore request. This
-// restores a temporary copy of the archived object. In a restore request, you
-// specify the number of days that you want the restored copy to exist. After
-// the specified period, Amazon S3 deletes the temporary copy but the object
-// remains archived in the GLACIER or DEEP_ARCHIVE storage class that object
-// was restored from.
+// Objects that you archive to the S3 Glacier, S3 Glacier Deep Archive, S3 Intelligent-Tiering
+// Archive, or S3 Intelligent-Tiering Deep Archive storage classes are not accessible
+// in real time. For objects in Archive Access tier or Deep Archive Access tier
+// you must first initiate a restore request, and then wait until the object
+// is moved into the Frequent Access tier. For objects in S3 Glacier or S3 Glacier
+// Deep Archive you must first initiate a restore request, and then wait until
+// a temporary copy of the object is available. To access an archived object,
+// you must restore the object for the duration (number of days) that you specify.
//
// To restore a specific object version, you can provide a version ID. If you
// don't provide a version ID, Amazon S3 restores the current version.
//
-// The time it takes restore jobs to finish depends on which storage class the
-// object is being restored from and which data access tier you specify.
-//
// When restoring an archived object (or using a select request), you can specify
// one of the following data access tier options in the Tier element of the
// request body:
//
// * Expedited - Expedited retrievals allow you to quickly access your data
-// stored in the GLACIER storage class when occasional urgent requests for
-// a subset of archives are required. For all but the largest archived objects
-// (250 MB+), data accessed using Expedited retrievals are typically made
-// available within 1–5 minutes. Provisioned capacity ensures that retrieval
-// capacity for Expedited retrievals is available when you need it. Expedited
-// retrievals and provisioned capacity are not available for the DEEP_ARCHIVE
-// storage class.
-//
-// * Standard - S3 Standard retrievals allow you to access any of your archived
-// objects within several hours. This is the default option for the GLACIER
-// and DEEP_ARCHIVE retrieval requests that do not specify the retrieval
-// option. S3 Standard retrievals typically complete within 3-5 hours from
-// the GLACIER storage class and typically complete within 12 hours from
-// the DEEP_ARCHIVE storage class.
-//
-// * Bulk - Bulk retrievals are Amazon S3 Glacier’s lowest-cost retrieval
-// option, enabling you to retrieve large amounts, even petabytes, of data
-// inexpensively in a day. Bulk retrievals typically complete within 5-12
-// hours from the GLACIER storage class and typically complete within 48
-// hours from the DEEP_ARCHIVE storage class.
+// stored in the S3 Glacier or S3 Intelligent-Tiering Archive storage class
+// when occasional urgent requests for a subset of archives are required.
+// For all but the largest archived objects (250 MB+), data accessed using
+// Expedited retrievals is typically made available within 1–5 minutes.
+// Provisioned capacity ensures that retrieval capacity for Expedited retrievals
+// is available when you need it. Expedited retrievals and provisioned capacity
+// are not available for objects stored in the S3 Glacier Deep Archive or
+// S3 Intelligent-Tiering Deep Archive storage class.
+//
+// * Standard - Standard retrievals allow you to access any of your archived
+// objects within several hours. This is the default option for retrieval
+// requests that do not specify the retrieval option. Standard retrievals
+// typically finish within 3–5 hours for objects stored in the S3 Glacier
+// or S3 Intelligent-Tiering Archive storage class. They typically finish
+// within 12 hours for objects stored in the S3 Glacier Deep Archive or S3
+// Intelligent-Tiering Deep Archive storage class. Standard retrievals are
+// free for objects stored in S3 Intelligent-Tiering.
+//
+// * Bulk - Bulk retrievals are the lowest-cost retrieval option in S3 Glacier,
+// enabling you to retrieve large amounts, even petabytes, of data inexpensively.
+// Bulk retrievals typically finish within 5–12 hours for objects stored
+// in the S3 Glacier or S3 Intelligent-Tiering Archive storage class. They
+// typically finish within 48 hours for objects stored in the S3 Glacier
+// Deep Archive or S3 Intelligent-Tiering Deep Archive storage class. Bulk
+// retrievals are free for objects stored in S3 Intelligent-Tiering.
//
// For more information about archive retrieval options and provisioned capacity
// for Expedited data access, see Restoring Archived Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html)
// in the Amazon Simple Storage Service Developer Guide.
//
// You can use Amazon S3 restore speed upgrade to change the restore speed to
-// a faster speed while it is in progress. You upgrade the speed of an in-progress
-// restoration by issuing another restore request to the same object, setting
-// a new Tier request element. When issuing a request to upgrade the restore
-// tier, you must choose a tier that is faster than the tier that the in-progress
-// restore is using. You must not change any other parameters, such as the Days
-// request element. For more information, see Upgrading the Speed of an In-Progress
-// Restore (https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html#restoring-objects-upgrade-tier.title.html)
+// a faster speed while it is in progress. For more information, see Upgrading
+// the speed of an in-progress restore (https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html#restoring-objects-upgrade-tier.title.html)
// in the Amazon Simple Storage Service Developer Guide.
//
// To get the status of object restoration, you can send a HEAD request. Operations
@@ -9679,11 +10079,11 @@ func (c *S3) RestoreObjectRequest(input *RestoreObjectInput) (req *request.Reque
//
// A successful operation returns either the 200 OK or 202 Accepted status code.
//
-// * If the object copy is not previously restored, then Amazon S3 returns
-// 202 Accepted in the response.
+// * If the object is not previously restored, then Amazon S3 returns 202
+// Accepted in the response.
//
-// * If the object copy is previously restored, Amazon S3 returns 200 OK
-// in the response.
+// * If the object is previously restored, Amazon S3 returns 200 OK in the
+// response.
//
// Special Errors
//
@@ -9691,11 +10091,11 @@ func (c *S3) RestoreObjectRequest(input *RestoreObjectInput) (req *request.Reque
// (This error does not apply to SELECT type requests.) HTTP Status Code:
// 409 Conflict SOAP Fault Code Prefix: Client
//
-// * Code: GlacierExpeditedRetrievalNotAvailable Cause: S3 Glacier expedited
-// retrievals are currently not available. Try again later. (Returned if
-// there is insufficient capacity to process the Expedited request. This
-// error applies only to Expedited retrievals and not to S3 Standard or Bulk
-// retrievals.) HTTP Status Code: 503 SOAP Fault Code Prefix: N/A
+// * Code: GlacierExpeditedRetrievalNotAvailable Cause: expedited retrievals
+// are currently not available. Try again later. (Returned if there is insufficient
+// capacity to process the Expedited request. This error applies only to
+// Expedited retrievals and not to S3 Standard or Bulk retrievals.) HTTP
+// Status Code: 503 SOAP Fault Code Prefix: N/A
//
// Related Resources
//
@@ -13919,6 +14319,110 @@ func (s DeleteBucketInput) updateArnableField(v string) (interface{}, error) {
return &s, nil
}
+type DeleteBucketIntelligentTieringConfigurationInput struct {
+ _ struct{} `locationName:"DeleteBucketIntelligentTieringConfigurationRequest" type:"structure"`
+
+ // The name of the Amazon S3 bucket whose configuration you want to modify or
+ // retrieve.
+ //
+ // Bucket is a required field
+ Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
+
+ // The ID used to identify the S3 Intelligent-Tiering configuration.
+ //
+ // Id is a required field
+ Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
+}
+
+// String returns the string representation
+func (s DeleteBucketIntelligentTieringConfigurationInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DeleteBucketIntelligentTieringConfigurationInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *DeleteBucketIntelligentTieringConfigurationInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "DeleteBucketIntelligentTieringConfigurationInput"}
+ if s.Bucket == nil {
+ invalidParams.Add(request.NewErrParamRequired("Bucket"))
+ }
+ if s.Bucket != nil && len(*s.Bucket) < 1 {
+ invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
+ }
+ if s.Id == nil {
+ invalidParams.Add(request.NewErrParamRequired("Id"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetBucket sets the Bucket field's value.
+func (s *DeleteBucketIntelligentTieringConfigurationInput) SetBucket(v string) *DeleteBucketIntelligentTieringConfigurationInput {
+ s.Bucket = &v
+ return s
+}
+
+func (s *DeleteBucketIntelligentTieringConfigurationInput) getBucket() (v string) {
+ if s.Bucket == nil {
+ return v
+ }
+ return *s.Bucket
+}
+
+// SetId sets the Id field's value.
+func (s *DeleteBucketIntelligentTieringConfigurationInput) SetId(v string) *DeleteBucketIntelligentTieringConfigurationInput {
+ s.Id = &v
+ return s
+}
+
+func (s *DeleteBucketIntelligentTieringConfigurationInput) getEndpointARN() (arn.Resource, error) {
+ if s.Bucket == nil {
+ return nil, fmt.Errorf("member Bucket is nil")
+ }
+ return parseEndpointARN(*s.Bucket)
+}
+
+func (s *DeleteBucketIntelligentTieringConfigurationInput) hasEndpointARN() bool {
+ if s.Bucket == nil {
+ return false
+ }
+ return arn.IsARN(*s.Bucket)
+}
+
+// updateArnableField updates the value of the input field that
+// takes an ARN as an input. This method is useful to backfill
+// the parsed resource name from ARN into the input member.
+// It returns a pointer to a modified copy of input and an error.
+// Note that original input is not modified.
+func (s DeleteBucketIntelligentTieringConfigurationInput) updateArnableField(v string) (interface{}, error) {
+ if s.Bucket == nil {
+ return nil, fmt.Errorf("member Bucket is nil")
+ }
+ s.Bucket = aws.String(v)
+ return &s, nil
+}
+
+type DeleteBucketIntelligentTieringConfigurationOutput struct {
+ _ struct{} `type:"structure"`
+}
+
+// String returns the string representation
+func (s DeleteBucketIntelligentTieringConfigurationOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DeleteBucketIntelligentTieringConfigurationOutput) GoString() string {
+ return s.String()
+}
+
type DeleteBucketInventoryConfigurationInput struct {
_ struct{} `locationName:"DeleteBucketInventoryConfigurationRequest" type:"structure"`
@@ -14269,6 +14773,9 @@ type DeleteBucketOwnershipControlsInput struct {
// Bucket is a required field
Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
+ // The account id of the expected bucket owner. If the bucket is owned by a
+ // different account, the request will fail with an HTTP 403 (Access Denied)
+ // error.
ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
}
@@ -14819,24 +15326,25 @@ func (s *DeleteMarkerEntry) SetVersionId(v string) *DeleteMarkerEntry {
return s
}
-// Specifies whether Amazon S3 replicates the delete markers. If you specify
-// a Filter, you must specify this element. However, in the latest version of
-// replication configuration (when Filter is specified), Amazon S3 doesn't replicate
-// delete markers. Therefore, the DeleteMarkerReplication element can contain
-// only Disabled. For an example configuration, see Basic Rule
-// Configuration (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-config-min-rule-config).
+// Specifies whether Amazon S3 replicates delete markers. If you specify a Filter
+// in your replication configuration, you must also include a DeleteMarkerReplication
+// element. If your Filter includes a Tag element, the DeleteMarkerReplication
+// Status must be set to Disabled, because Amazon S3 does not support replicating
+// delete markers for tag-based rules. For an example configuration, see Basic
+// Rule Configuration (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-config-min-rule-config).
//
-// If you don't specify the Filter element, Amazon S3 assumes that the replication
-// configuration is the earlier version, V1. In the earlier version, Amazon
-// S3 handled replication of delete markers differently. For more information,
+// For more information about delete marker replication, see Basic Rule Configuration
+// (https://docs.aws.amazon.com/AmazonS3/latest/dev/delete-marker-replication.html).
+//
+// If you are using an earlier version of the replication configuration, Amazon
+// S3 handles replication of delete markers differently. For more information,
// see Backward Compatibility (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-backward-compat-considerations).
type DeleteMarkerReplication struct {
_ struct{} `type:"structure"`
// Indicates whether to replicate delete markers.
//
- // In the current implementation, Amazon S3 doesn't replicate the delete markers.
- // The status must be Disabled.
+ // Indicates whether to replicate delete markers.
Status *string `type:"string" enum:"DeleteMarkerReplicationStatus"`
}
@@ -15597,9 +16105,8 @@ type Destination struct {
// is specified, you must specify this element.
EncryptionConfiguration *EncryptionConfiguration `type:"structure"`
- // A container specifying replication metrics-related settings enabling metrics
- // and Amazon S3 events for S3 Replication Time Control (S3 RTC). Must be specified
- // together with a ReplicationTime block.
+ // A container specifying replication metrics-related settings enabling replication
+ // metrics and events.
Metrics *Metrics `type:"structure"`
// A container specifying S3 Replication Time Control (S3 RTC), including whether
@@ -16928,6 +17435,119 @@ func (s *GetBucketEncryptionOutput) SetServerSideEncryptionConfiguration(v *Serv
return s
}
+type GetBucketIntelligentTieringConfigurationInput struct {
+ _ struct{} `locationName:"GetBucketIntelligentTieringConfigurationRequest" type:"structure"`
+
+ // The name of the Amazon S3 bucket whose configuration you want to modify or
+ // retrieve.
+ //
+ // Bucket is a required field
+ Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
+
+ // The ID used to identify the S3 Intelligent-Tiering configuration.
+ //
+ // Id is a required field
+ Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
+}
+
+// String returns the string representation
+func (s GetBucketIntelligentTieringConfigurationInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s GetBucketIntelligentTieringConfigurationInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *GetBucketIntelligentTieringConfigurationInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "GetBucketIntelligentTieringConfigurationInput"}
+ if s.Bucket == nil {
+ invalidParams.Add(request.NewErrParamRequired("Bucket"))
+ }
+ if s.Bucket != nil && len(*s.Bucket) < 1 {
+ invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
+ }
+ if s.Id == nil {
+ invalidParams.Add(request.NewErrParamRequired("Id"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetBucket sets the Bucket field's value.
+func (s *GetBucketIntelligentTieringConfigurationInput) SetBucket(v string) *GetBucketIntelligentTieringConfigurationInput {
+ s.Bucket = &v
+ return s
+}
+
+func (s *GetBucketIntelligentTieringConfigurationInput) getBucket() (v string) {
+ if s.Bucket == nil {
+ return v
+ }
+ return *s.Bucket
+}
+
+// SetId sets the Id field's value.
+func (s *GetBucketIntelligentTieringConfigurationInput) SetId(v string) *GetBucketIntelligentTieringConfigurationInput {
+ s.Id = &v
+ return s
+}
+
+func (s *GetBucketIntelligentTieringConfigurationInput) getEndpointARN() (arn.Resource, error) {
+ if s.Bucket == nil {
+ return nil, fmt.Errorf("member Bucket is nil")
+ }
+ return parseEndpointARN(*s.Bucket)
+}
+
+func (s *GetBucketIntelligentTieringConfigurationInput) hasEndpointARN() bool {
+ if s.Bucket == nil {
+ return false
+ }
+ return arn.IsARN(*s.Bucket)
+}
+
+// updateArnableField updates the value of the input field that
+// takes an ARN as an input. This method is useful to backfill
+// the parsed resource name from ARN into the input member.
+// It returns a pointer to a modified copy of input and an error.
+// Note that original input is not modified.
+func (s GetBucketIntelligentTieringConfigurationInput) updateArnableField(v string) (interface{}, error) {
+ if s.Bucket == nil {
+ return nil, fmt.Errorf("member Bucket is nil")
+ }
+ s.Bucket = aws.String(v)
+ return &s, nil
+}
+
+type GetBucketIntelligentTieringConfigurationOutput struct {
+ _ struct{} `type:"structure" payload:"IntelligentTieringConfiguration"`
+
+ // Container for S3 Intelligent-Tiering configuration.
+ IntelligentTieringConfiguration *IntelligentTieringConfiguration `type:"structure"`
+}
+
+// String returns the string representation
+func (s GetBucketIntelligentTieringConfigurationOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s GetBucketIntelligentTieringConfigurationOutput) GoString() string {
+ return s.String()
+}
+
+// SetIntelligentTieringConfiguration sets the IntelligentTieringConfiguration field's value.
+func (s *GetBucketIntelligentTieringConfigurationOutput) SetIntelligentTieringConfiguration(v *IntelligentTieringConfiguration) *GetBucketIntelligentTieringConfigurationOutput {
+ s.IntelligentTieringConfiguration = v
+ return s
+}
+
type GetBucketInventoryConfigurationInput struct {
_ struct{} `locationName:"GetBucketInventoryConfigurationRequest" type:"structure"`
@@ -17709,6 +18329,9 @@ type GetBucketOwnershipControlsInput struct {
// Bucket is a required field
Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
+ // The account id of the expected bucket owner. If the bucket is owned by a
+ // different account, the request will fail with an HTTP 403 (Access Denied)
+ // error.
ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
}
@@ -20261,7 +20884,7 @@ func (s *GetPublicAccessBlockOutput) SetPublicAccessBlockConfiguration(v *Public
type GlacierJobParameters struct {
_ struct{} `type:"structure"`
- // S3 Glacier retrieval tier at which the restore will be processed.
+ // Retrieval tier at which the restore will be processed.
//
// Tier is a required field
Tier *string `type:"string" required:"true" enum:"Tier"`
@@ -20809,6 +21432,9 @@ type HeadObjectOutput struct {
// Indicates that a range of bytes was specified.
AcceptRanges *string `location:"header" locationName:"accept-ranges" type:"string"`
+ // The archive state of the head object.
+ ArchiveStatus *string `location:"header" locationName:"x-amz-archive-status" type:"string" enum:"ArchiveStatus"`
+
// Specifies caching behavior along the request/reply chain.
CacheControl *string `location:"header" locationName:"Cache-Control" type:"string"`
@@ -20980,6 +21606,12 @@ func (s *HeadObjectOutput) SetAcceptRanges(v string) *HeadObjectOutput {
return s
}
+// SetArchiveStatus sets the ArchiveStatus field's value.
+func (s *HeadObjectOutput) SetArchiveStatus(v string) *HeadObjectOutput {
+ s.ArchiveStatus = &v
+ return s
+}
+
// SetCacheControl sets the CacheControl field's value.
func (s *HeadObjectOutput) SetCacheControl(v string) *HeadObjectOutput {
s.CacheControl = &v
@@ -21271,6 +21903,224 @@ func (s *InputSerialization) SetParquet(v *ParquetInput) *InputSerialization {
return s
}
+// A container for specifying S3 Intelligent-Tiering filters. The filters determine
+// the subset of objects to which the rule applies.
+type IntelligentTieringAndOperator struct {
+ _ struct{} `type:"structure"`
+
+ // An object key name prefix that identifies the subset of objects to which
+ // the configuration applies.
+ Prefix *string `type:"string"`
+
+ // All of these tags must exist in the object's tag set in order for the configuration
+ // to apply.
+ Tags []*Tag `locationName:"Tag" locationNameList:"Tag" type:"list" flattened:"true"`
+}
+
+// String returns the string representation
+func (s IntelligentTieringAndOperator) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s IntelligentTieringAndOperator) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *IntelligentTieringAndOperator) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "IntelligentTieringAndOperator"}
+ if s.Tags != nil {
+ for i, v := range s.Tags {
+ if v == nil {
+ continue
+ }
+ if err := v.Validate(); err != nil {
+ invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
+ }
+ }
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetPrefix sets the Prefix field's value.
+func (s *IntelligentTieringAndOperator) SetPrefix(v string) *IntelligentTieringAndOperator {
+ s.Prefix = &v
+ return s
+}
+
+// SetTags sets the Tags field's value.
+func (s *IntelligentTieringAndOperator) SetTags(v []*Tag) *IntelligentTieringAndOperator {
+ s.Tags = v
+ return s
+}
+
+// Specifies the S3 Intelligent-Tiering configuration for an Amazon S3 bucket.
+//
+// For information about the S3 Intelligent-Tiering storage class, see Storage
+// class for automatically optimizing frequently and infrequently accessed objects
+// (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access).
+type IntelligentTieringConfiguration struct {
+ _ struct{} `type:"structure"`
+
+ // Specifies a bucket filter. The configuration only includes objects that meet
+ // the filter's criteria.
+ Filter *IntelligentTieringFilter `type:"structure"`
+
+ // The ID used to identify the S3 Intelligent-Tiering configuration.
+ //
+ // Id is a required field
+ Id *string `type:"string" required:"true"`
+
+ // Specifies the status of the configuration.
+ //
+ // Status is a required field
+ Status *string `type:"string" required:"true" enum:"IntelligentTieringStatus"`
+
+ // Specifies the S3 Intelligent-Tiering storage class tier of the configuration.
+ //
+ // Tierings is a required field
+ Tierings []*Tiering `locationName:"Tiering" type:"list" flattened:"true" required:"true"`
+}
+
+// String returns the string representation
+func (s IntelligentTieringConfiguration) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s IntelligentTieringConfiguration) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *IntelligentTieringConfiguration) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "IntelligentTieringConfiguration"}
+ if s.Id == nil {
+ invalidParams.Add(request.NewErrParamRequired("Id"))
+ }
+ if s.Status == nil {
+ invalidParams.Add(request.NewErrParamRequired("Status"))
+ }
+ if s.Tierings == nil {
+ invalidParams.Add(request.NewErrParamRequired("Tierings"))
+ }
+ if s.Filter != nil {
+ if err := s.Filter.Validate(); err != nil {
+ invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
+ }
+ }
+ if s.Tierings != nil {
+ for i, v := range s.Tierings {
+ if v == nil {
+ continue
+ }
+ if err := v.Validate(); err != nil {
+ invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tierings", i), err.(request.ErrInvalidParams))
+ }
+ }
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetFilter sets the Filter field's value.
+func (s *IntelligentTieringConfiguration) SetFilter(v *IntelligentTieringFilter) *IntelligentTieringConfiguration {
+ s.Filter = v
+ return s
+}
+
+// SetId sets the Id field's value.
+func (s *IntelligentTieringConfiguration) SetId(v string) *IntelligentTieringConfiguration {
+ s.Id = &v
+ return s
+}
+
+// SetStatus sets the Status field's value.
+func (s *IntelligentTieringConfiguration) SetStatus(v string) *IntelligentTieringConfiguration {
+ s.Status = &v
+ return s
+}
+
+// SetTierings sets the Tierings field's value.
+func (s *IntelligentTieringConfiguration) SetTierings(v []*Tiering) *IntelligentTieringConfiguration {
+ s.Tierings = v
+ return s
+}
+
+// The Filter is used to identify objects that the S3 Intelligent-Tiering configuration
+// applies to.
+type IntelligentTieringFilter struct {
+ _ struct{} `type:"structure"`
+
+ // A conjunction (logical AND) of predicates, which is used in evaluating a
+ // metrics filter. The operator must have at least two predicates, and an object
+ // must match all of the predicates in order for the filter to apply.
+ And *IntelligentTieringAndOperator `type:"structure"`
+
+ // An object key name prefix that identifies the subset of objects to which
+ // the rule applies.
+ Prefix *string `type:"string"`
+
+ // A container of a key value name pair.
+ Tag *Tag `type:"structure"`
+}
+
+// String returns the string representation
+func (s IntelligentTieringFilter) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s IntelligentTieringFilter) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *IntelligentTieringFilter) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "IntelligentTieringFilter"}
+ if s.And != nil {
+ if err := s.And.Validate(); err != nil {
+ invalidParams.AddNested("And", err.(request.ErrInvalidParams))
+ }
+ }
+ if s.Tag != nil {
+ if err := s.Tag.Validate(); err != nil {
+ invalidParams.AddNested("Tag", err.(request.ErrInvalidParams))
+ }
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetAnd sets the And field's value.
+func (s *IntelligentTieringFilter) SetAnd(v *IntelligentTieringAndOperator) *IntelligentTieringFilter {
+ s.And = v
+ return s
+}
+
+// SetPrefix sets the Prefix field's value.
+func (s *IntelligentTieringFilter) SetPrefix(v string) *IntelligentTieringFilter {
+ s.Prefix = &v
+ return s
+}
+
+// SetTag sets the Tag field's value.
+func (s *IntelligentTieringFilter) SetTag(v *Tag) *IntelligentTieringFilter {
+ s.Tag = v
+ return s
+}
+
// Specifies the inventory configuration for an Amazon S3 bucket. For more information,
// see GET Bucket inventory (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETInventoryConfig.html)
// in the Amazon Simple Storage Service API Reference.
@@ -22331,6 +23181,147 @@ func (s *ListBucketAnalyticsConfigurationsOutput) SetNextContinuationToken(v str
return s
}
+type ListBucketIntelligentTieringConfigurationsInput struct {
+ _ struct{} `locationName:"ListBucketIntelligentTieringConfigurationsRequest" type:"structure"`
+
+ // The name of the Amazon S3 bucket whose configuration you want to modify or
+ // retrieve.
+ //
+ // Bucket is a required field
+ Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
+
+ // The ContinuationToken that represents a placeholder from where this request
+ // should begin.
+ ContinuationToken *string `location:"querystring" locationName:"continuation-token" type:"string"`
+}
+
+// String returns the string representation
+func (s ListBucketIntelligentTieringConfigurationsInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ListBucketIntelligentTieringConfigurationsInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *ListBucketIntelligentTieringConfigurationsInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "ListBucketIntelligentTieringConfigurationsInput"}
+ if s.Bucket == nil {
+ invalidParams.Add(request.NewErrParamRequired("Bucket"))
+ }
+ if s.Bucket != nil && len(*s.Bucket) < 1 {
+ invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetBucket sets the Bucket field's value.
+func (s *ListBucketIntelligentTieringConfigurationsInput) SetBucket(v string) *ListBucketIntelligentTieringConfigurationsInput {
+ s.Bucket = &v
+ return s
+}
+
+func (s *ListBucketIntelligentTieringConfigurationsInput) getBucket() (v string) {
+ if s.Bucket == nil {
+ return v
+ }
+ return *s.Bucket
+}
+
+// SetContinuationToken sets the ContinuationToken field's value.
+func (s *ListBucketIntelligentTieringConfigurationsInput) SetContinuationToken(v string) *ListBucketIntelligentTieringConfigurationsInput {
+ s.ContinuationToken = &v
+ return s
+}
+
+func (s *ListBucketIntelligentTieringConfigurationsInput) getEndpointARN() (arn.Resource, error) {
+ if s.Bucket == nil {
+ return nil, fmt.Errorf("member Bucket is nil")
+ }
+ return parseEndpointARN(*s.Bucket)
+}
+
+func (s *ListBucketIntelligentTieringConfigurationsInput) hasEndpointARN() bool {
+ if s.Bucket == nil {
+ return false
+ }
+ return arn.IsARN(*s.Bucket)
+}
+
+// updateArnableField updates the value of the input field that
+// takes an ARN as an input. This method is useful to backfill
+// the parsed resource name from ARN into the input member.
+// It returns a pointer to a modified copy of input and an error.
+// Note that original input is not modified.
+func (s ListBucketIntelligentTieringConfigurationsInput) updateArnableField(v string) (interface{}, error) {
+ if s.Bucket == nil {
+ return nil, fmt.Errorf("member Bucket is nil")
+ }
+ s.Bucket = aws.String(v)
+ return &s, nil
+}
+
+type ListBucketIntelligentTieringConfigurationsOutput struct {
+ _ struct{} `type:"structure"`
+
+ // The ContinuationToken that represents a placeholder from where this request
+ // should begin.
+ ContinuationToken *string `type:"string"`
+
+ // The list of S3 Intelligent-Tiering configurations for a bucket.
+ IntelligentTieringConfigurationList []*IntelligentTieringConfiguration `locationName:"IntelligentTieringConfiguration" type:"list" flattened:"true"`
+
+ // Indicates whether the returned list of analytics configurations is complete.
+ // A value of true indicates that the list is not complete and the NextContinuationToken
+ // will be provided for a subsequent request.
+ IsTruncated *bool `type:"boolean"`
+
+ // The marker used to continue this inventory configuration listing. Use the
+ // NextContinuationToken from this response to continue the listing in a subsequent
+ // request. The continuation token is an opaque value that Amazon S3 understands.
+ NextContinuationToken *string `type:"string"`
+}
+
+// String returns the string representation
+func (s ListBucketIntelligentTieringConfigurationsOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ListBucketIntelligentTieringConfigurationsOutput) GoString() string {
+ return s.String()
+}
+
+// SetContinuationToken sets the ContinuationToken field's value.
+func (s *ListBucketIntelligentTieringConfigurationsOutput) SetContinuationToken(v string) *ListBucketIntelligentTieringConfigurationsOutput {
+ s.ContinuationToken = &v
+ return s
+}
+
+// SetIntelligentTieringConfigurationList sets the IntelligentTieringConfigurationList field's value.
+func (s *ListBucketIntelligentTieringConfigurationsOutput) SetIntelligentTieringConfigurationList(v []*IntelligentTieringConfiguration) *ListBucketIntelligentTieringConfigurationsOutput {
+ s.IntelligentTieringConfigurationList = v
+ return s
+}
+
+// SetIsTruncated sets the IsTruncated field's value.
+func (s *ListBucketIntelligentTieringConfigurationsOutput) SetIsTruncated(v bool) *ListBucketIntelligentTieringConfigurationsOutput {
+ s.IsTruncated = &v
+ return s
+}
+
+// SetNextContinuationToken sets the NextContinuationToken field's value.
+func (s *ListBucketIntelligentTieringConfigurationsOutput) SetNextContinuationToken(v string) *ListBucketIntelligentTieringConfigurationsOutput {
+ s.NextContinuationToken = &v
+ return s
+}
+
type ListBucketInventoryConfigurationsInput struct {
_ struct{} `locationName:"ListBucketInventoryConfigurationsRequest" type:"structure"`
@@ -24548,17 +25539,14 @@ func (s *MetadataEntry) SetValue(v string) *MetadataEntry {
return s
}
-// A container specifying replication metrics-related settings enabling metrics
-// and Amazon S3 events for S3 Replication Time Control (S3 RTC). Must be specified
-// together with a ReplicationTime block.
+// A container specifying replication metrics-related settings enabling replication
+// metrics and events.
type Metrics struct {
_ struct{} `type:"structure"`
// A container specifying the time threshold for emitting the s3:Replication:OperationMissedThreshold
// event.
- //
- // EventThreshold is a required field
- EventThreshold *ReplicationTimeValue `type:"structure" required:"true"`
+ EventThreshold *ReplicationTimeValue `type:"structure"`
// Specifies whether the replication metrics are enabled.
//
@@ -24579,9 +25567,6 @@ func (s Metrics) GoString() string {
// Validate inspects the fields of the type to determine if they are valid.
func (s *Metrics) Validate() error {
invalidParams := request.ErrInvalidParams{Context: "Metrics"}
- if s.EventThreshold == nil {
- invalidParams.Add(request.NewErrParamRequired("EventThreshold"))
- }
if s.Status == nil {
invalidParams.Add(request.NewErrParamRequired("Status"))
}
@@ -25852,8 +26837,8 @@ type PublicAccessBlockConfiguration struct {
// Specifies whether Amazon S3 should restrict public bucket policies for this
// bucket. Setting this element to TRUE restricts access to this bucket to only
- // AWS services and authorized users within this account if the bucket has a
- // public policy.
+ // AWS service principals and authorized users within this account if the bucket
+ // has a public policy.
//
// Enabling this setting doesn't affect previously stored bucket policies, except
// that public and cross-account access within any public bucket policy, including
@@ -26556,6 +27541,129 @@ func (s PutBucketEncryptionOutput) GoString() string {
return s.String()
}
+type PutBucketIntelligentTieringConfigurationInput struct {
+ _ struct{} `locationName:"PutBucketIntelligentTieringConfigurationRequest" type:"structure" payload:"IntelligentTieringConfiguration"`
+
+ // The name of the Amazon S3 bucket whose configuration you want to modify or
+ // retrieve.
+ //
+ // Bucket is a required field
+ Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
+
+ // The ID used to identify the S3 Intelligent-Tiering configuration.
+ //
+ // Id is a required field
+ Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
+
+ // Container for S3 Intelligent-Tiering configuration.
+ //
+ // IntelligentTieringConfiguration is a required field
+ IntelligentTieringConfiguration *IntelligentTieringConfiguration `locationName:"IntelligentTieringConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
+}
+
+// String returns the string representation
+func (s PutBucketIntelligentTieringConfigurationInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s PutBucketIntelligentTieringConfigurationInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *PutBucketIntelligentTieringConfigurationInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "PutBucketIntelligentTieringConfigurationInput"}
+ if s.Bucket == nil {
+ invalidParams.Add(request.NewErrParamRequired("Bucket"))
+ }
+ if s.Bucket != nil && len(*s.Bucket) < 1 {
+ invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
+ }
+ if s.Id == nil {
+ invalidParams.Add(request.NewErrParamRequired("Id"))
+ }
+ if s.IntelligentTieringConfiguration == nil {
+ invalidParams.Add(request.NewErrParamRequired("IntelligentTieringConfiguration"))
+ }
+ if s.IntelligentTieringConfiguration != nil {
+ if err := s.IntelligentTieringConfiguration.Validate(); err != nil {
+ invalidParams.AddNested("IntelligentTieringConfiguration", err.(request.ErrInvalidParams))
+ }
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetBucket sets the Bucket field's value.
+func (s *PutBucketIntelligentTieringConfigurationInput) SetBucket(v string) *PutBucketIntelligentTieringConfigurationInput {
+ s.Bucket = &v
+ return s
+}
+
+func (s *PutBucketIntelligentTieringConfigurationInput) getBucket() (v string) {
+ if s.Bucket == nil {
+ return v
+ }
+ return *s.Bucket
+}
+
+// SetId sets the Id field's value.
+func (s *PutBucketIntelligentTieringConfigurationInput) SetId(v string) *PutBucketIntelligentTieringConfigurationInput {
+ s.Id = &v
+ return s
+}
+
+// SetIntelligentTieringConfiguration sets the IntelligentTieringConfiguration field's value.
+func (s *PutBucketIntelligentTieringConfigurationInput) SetIntelligentTieringConfiguration(v *IntelligentTieringConfiguration) *PutBucketIntelligentTieringConfigurationInput {
+ s.IntelligentTieringConfiguration = v
+ return s
+}
+
+func (s *PutBucketIntelligentTieringConfigurationInput) getEndpointARN() (arn.Resource, error) {
+ if s.Bucket == nil {
+ return nil, fmt.Errorf("member Bucket is nil")
+ }
+ return parseEndpointARN(*s.Bucket)
+}
+
+func (s *PutBucketIntelligentTieringConfigurationInput) hasEndpointARN() bool {
+ if s.Bucket == nil {
+ return false
+ }
+ return arn.IsARN(*s.Bucket)
+}
+
+// updateArnableField updates the value of the input field that
+// takes an ARN as an input. This method is useful to backfill
+// the parsed resource name from ARN into the input member.
+// It returns a pointer to a modified copy of input and an error.
+// Note that original input is not modified.
+func (s PutBucketIntelligentTieringConfigurationInput) updateArnableField(v string) (interface{}, error) {
+ if s.Bucket == nil {
+ return nil, fmt.Errorf("member Bucket is nil")
+ }
+ s.Bucket = aws.String(v)
+ return &s, nil
+}
+
+type PutBucketIntelligentTieringConfigurationOutput struct {
+ _ struct{} `type:"structure"`
+}
+
+// String returns the string representation
+func (s PutBucketIntelligentTieringConfigurationOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s PutBucketIntelligentTieringConfigurationOutput) GoString() string {
+ return s.String()
+}
+
type PutBucketInventoryConfigurationInput struct {
_ struct{} `locationName:"PutBucketInventoryConfigurationRequest" type:"structure" payload:"InventoryConfiguration"`
@@ -27409,6 +28517,9 @@ type PutBucketOwnershipControlsInput struct {
// Bucket is a required field
Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
+ // The account id of the expected bucket owner. If the bucket is owned by a
+ // different account, the request will fail with an HTTP 403 (Access Denied)
+ // error.
ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
// The OwnershipControls (BucketOwnerPreferred or ObjectWriter) that you want
@@ -27661,6 +28772,7 @@ type PutBucketReplicationInput struct {
// ReplicationConfiguration is a required field
ReplicationConfiguration *ReplicationConfiguration `locationName:"ReplicationConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
+ // A token to allow Object Lock to be enabled for an existing bucket.
Token *string `location:"header" locationName:"x-amz-bucket-object-lock-token" type:"string"`
}
@@ -30211,16 +31323,18 @@ func (s *ReplicationConfiguration) SetRules(v []*ReplicationRule) *ReplicationCo
type ReplicationRule struct {
_ struct{} `type:"structure"`
- // Specifies whether Amazon S3 replicates the delete markers. If you specify
- // a Filter, you must specify this element. However, in the latest version of
- // replication configuration (when Filter is specified), Amazon S3 doesn't replicate
- // delete markers. Therefore, the DeleteMarkerReplication element can contain
- // only Disabled. For an example configuration, see Basic Rule
- // Configuration (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-config-min-rule-config).
+ // Specifies whether Amazon S3 replicates delete markers. If you specify a Filter
+ // in your replication configuration, you must also include a DeleteMarkerReplication
+ // element. If your Filter includes a Tag element, the DeleteMarkerReplication
+ // Status must be set to Disabled, because Amazon S3 does not support replicating
+ // delete markers for tag-based rules. For an example configuration, see Basic
+ // Rule Configuration (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-config-min-rule-config).
+ //
+ // For more information about delete marker replication, see Basic Rule Configuration
+ // (https://docs.aws.amazon.com/AmazonS3/latest/dev/delete-marker-replication.html).
//
- // If you don't specify the Filter element, Amazon S3 assumes that the replication
- // configuration is the earlier version, V1. In the earlier version, Amazon
- // S3 handled replication of delete markers differently. For more information,
+ // If you are using an earlier version of the replication configuration, Amazon
+ // S3 handles replication of delete markers differently. For more information,
// see Backward Compatibility (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-backward-compat-considerations).
DeleteMarkerReplication *DeleteMarkerReplication `type:"structure"`
@@ -30666,7 +31780,7 @@ func (s *RequestProgress) SetEnabled(v bool) *RequestProgress {
type RestoreObjectInput struct {
_ struct{} `locationName:"RestoreObjectRequest" type:"structure" payload:"RestoreRequest"`
- // The bucket name or containing the object to restore.
+ // The bucket name containing the object to restore.
//
// When using this API with an access point, you must direct requests to the
// access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
@@ -30857,6 +31971,9 @@ type RestoreRequest struct {
// Lifetime of the active copy in days. Do not use with restores that specify
// OutputLocation.
+ //
+ // The Days element is required for regular restores, and must not be provided
+ // for select requests.
Days *int64 `type:"integer"`
// The optional description for the job.
@@ -30872,7 +31989,7 @@ type RestoreRequest struct {
// Describes the parameters for Select job types.
SelectParameters *SelectParameters `type:"structure"`
- // S3 Glacier retrieval tier at which the restore will be processed.
+ // Retrieval tier at which the restore will be processed.
Tier *string `type:"string" enum:"Tier"`
// Type of restore request.
@@ -32348,6 +33465,65 @@ func (s *TargetGrant) SetPermission(v string) *TargetGrant {
return s
}
+// The S3 Intelligent-Tiering storage class is designed to optimize storage
+// costs by automatically moving data to the most cost-effective storage access
+// tier, without additional operational overhead.
+type Tiering struct {
+ _ struct{} `type:"structure"`
+
+ // S3 Intelligent-Tiering access tier. See Storage class for automatically optimizing
+ // frequently and infrequently accessed objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access)
+ // for a list of access tiers in the S3 Intelligent-Tiering storage class.
+ //
+ // AccessTier is a required field
+ AccessTier *string `type:"string" required:"true" enum:"IntelligentTieringAccessTier"`
+
+ // The number of days that you want your archived data to be accessible. The
+ // minimum number of days specified in the restore request must be at least
+ // 90 days. If a smaller value is specifed it will be ignored.
+ //
+ // Days is a required field
+ Days *int64 `type:"integer" required:"true"`
+}
+
+// String returns the string representation
+func (s Tiering) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s Tiering) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *Tiering) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "Tiering"}
+ if s.AccessTier == nil {
+ invalidParams.Add(request.NewErrParamRequired("AccessTier"))
+ }
+ if s.Days == nil {
+ invalidParams.Add(request.NewErrParamRequired("Days"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetAccessTier sets the AccessTier field's value.
+func (s *Tiering) SetAccessTier(v string) *Tiering {
+ s.AccessTier = &v
+ return s
+}
+
+// SetDays sets the Days field's value.
+func (s *Tiering) SetDays(v int64) *Tiering {
+ s.Days = &v
+ return s
+}
+
// A container for specifying the configuration for publication of messages
// to an Amazon Simple Notification Service (Amazon SNS) topic when Amazon S3
// detects specified events.
@@ -33406,6 +34582,22 @@ func AnalyticsS3ExportFileFormat_Values() []string {
}
}
+const (
+ // ArchiveStatusArchiveAccess is a ArchiveStatus enum value
+ ArchiveStatusArchiveAccess = "ARCHIVE_ACCESS"
+
+ // ArchiveStatusDeepArchiveAccess is a ArchiveStatus enum value
+ ArchiveStatusDeepArchiveAccess = "DEEP_ARCHIVE_ACCESS"
+)
+
+// ArchiveStatus_Values returns all elements of the ArchiveStatus enum
+func ArchiveStatus_Values() []string {
+ return []string{
+ ArchiveStatusArchiveAccess,
+ ArchiveStatusDeepArchiveAccess,
+ }
+}
+
const (
// BucketAccelerateStatusEnabled is a BucketAccelerateStatus enum value
BucketAccelerateStatusEnabled = "Enabled"
@@ -33801,6 +34993,38 @@ func FilterRuleName_Values() []string {
}
}
+const (
+ // IntelligentTieringAccessTierArchiveAccess is a IntelligentTieringAccessTier enum value
+ IntelligentTieringAccessTierArchiveAccess = "ARCHIVE_ACCESS"
+
+ // IntelligentTieringAccessTierDeepArchiveAccess is a IntelligentTieringAccessTier enum value
+ IntelligentTieringAccessTierDeepArchiveAccess = "DEEP_ARCHIVE_ACCESS"
+)
+
+// IntelligentTieringAccessTier_Values returns all elements of the IntelligentTieringAccessTier enum
+func IntelligentTieringAccessTier_Values() []string {
+ return []string{
+ IntelligentTieringAccessTierArchiveAccess,
+ IntelligentTieringAccessTierDeepArchiveAccess,
+ }
+}
+
+const (
+ // IntelligentTieringStatusEnabled is a IntelligentTieringStatus enum value
+ IntelligentTieringStatusEnabled = "Enabled"
+
+ // IntelligentTieringStatusDisabled is a IntelligentTieringStatus enum value
+ IntelligentTieringStatusDisabled = "Disabled"
+)
+
+// IntelligentTieringStatus_Values returns all elements of the IntelligentTieringStatus enum
+func IntelligentTieringStatus_Values() []string {
+ return []string{
+ IntelligentTieringStatusEnabled,
+ IntelligentTieringStatusDisabled,
+ }
+}
+
const (
// InventoryFormatCsv is a InventoryFormat enum value
InventoryFormatCsv = "CSV"
diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/errors.go b/vendor/github.com/aws/aws-sdk-go/service/s3/errors.go
index dd73d460..f64b5513 100644
--- a/vendor/github.com/aws/aws-sdk-go/service/s3/errors.go
+++ b/vendor/github.com/aws/aws-sdk-go/service/s3/errors.go
@@ -21,6 +21,12 @@ const (
// bucket access control lists (ACLs).
ErrCodeBucketAlreadyOwnedByYou = "BucketAlreadyOwnedByYou"
+ // ErrCodeInvalidObjectState for service response error code
+ // "InvalidObjectState".
+ //
+ // Object is archived and inaccessible until restored.
+ ErrCodeInvalidObjectState = "InvalidObjectState"
+
// ErrCodeNoSuchBucket for service response error code
// "NoSuchBucket".
//
diff --git a/vendor/github.com/digitalocean/godo/.travis.yml b/vendor/github.com/digitalocean/godo/.travis.yml
deleted file mode 100644
index 5bbdb40f..00000000
--- a/vendor/github.com/digitalocean/godo/.travis.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-language: go
-
-go:
- - 1.7
- - 1.8
- - 1.9
- - "1.10"
- - tip
diff --git a/vendor/github.com/digitalocean/godo/.whitesource b/vendor/github.com/digitalocean/godo/.whitesource
new file mode 100644
index 00000000..6b6a735e
--- /dev/null
+++ b/vendor/github.com/digitalocean/godo/.whitesource
@@ -0,0 +1,8 @@
+{
+ "checkRunSettings": {
+ "vulnerableCheckRunConclusionLevel": "failure"
+ },
+ "issueSettings": {
+ "minSeverityLevel": "LOW"
+ }
+}
diff --git a/vendor/github.com/digitalocean/godo/1-click.go b/vendor/github.com/digitalocean/godo/1-click.go
new file mode 100644
index 00000000..d1ba001f
--- /dev/null
+++ b/vendor/github.com/digitalocean/godo/1-click.go
@@ -0,0 +1,81 @@
+package godo
+
+import (
+ "context"
+ "fmt"
+ "net/http"
+)
+
+const oneClickBasePath = "v2/1-clicks"
+
+// OneClickService is an interface for interacting with 1-clicks with the
+// DigitalOcean API.
+// See: https://developers.digitalocean.com/documentation/v2/#1-click-applications
+type OneClickService interface {
+ List(context.Context, string) ([]*OneClick, *Response, error)
+ InstallKubernetes(context.Context, *InstallKubernetesAppsRequest) (*InstallKubernetesAppsResponse, *Response, error)
+}
+
+var _ OneClickService = &OneClickServiceOp{}
+
+// OneClickServiceOp interfaces with 1-click endpoints in the DigitalOcean API.
+type OneClickServiceOp struct {
+ client *Client
+}
+
+// OneClick is the structure of a 1-click
+type OneClick struct {
+ Slug string `json:"slug"`
+ Type string `json:"type"`
+}
+
+// OneClicksRoot is the root of the json payload that contains a list of 1-clicks
+type OneClicksRoot struct {
+ List []*OneClick `json:"1_clicks"`
+}
+
+// InstallKubernetesAppsRequest represents a request required to install 1-click kubernetes apps
+type InstallKubernetesAppsRequest struct {
+ Slugs []string `json:"addon_slugs"`
+ ClusterUUID string `json:"cluster_uuid"`
+}
+
+// InstallKubernetesAppsResponse is the response of a kubernetes 1-click install request
+type InstallKubernetesAppsResponse struct {
+ Message string `json:"message"`
+}
+
+// List returns a list of the available 1-click applications.
+func (ocs *OneClickServiceOp) List(ctx context.Context, oneClickType string) ([]*OneClick, *Response, error) {
+ path := fmt.Sprintf(`%s?type=%s`, oneClickBasePath, oneClickType)
+
+ req, err := ocs.client.NewRequest(ctx, http.MethodGet, path, nil)
+ if err != nil {
+ return nil, nil, err
+ }
+
+ root := new(OneClicksRoot)
+ resp, err := ocs.client.Do(ctx, req, root)
+ if err != nil {
+ return nil, resp, err
+ }
+
+ return root.List, resp, nil
+}
+
+// InstallKubernetes installs an addon on a kubernetes cluster
+func (ocs *OneClickServiceOp) InstallKubernetes(ctx context.Context, install *InstallKubernetesAppsRequest) (*InstallKubernetesAppsResponse, *Response, error) {
+ path := fmt.Sprintf(oneClickBasePath + "/kubernetes")
+
+ req, err := ocs.client.NewRequest(ctx, http.MethodPost, path, install)
+ if err != nil {
+ return nil, nil, err
+ }
+
+ responseMessage := new(InstallKubernetesAppsResponse)
+ resp, err := ocs.client.Do(ctx, req, responseMessage)
+ if err != nil {
+ return nil, resp, err
+ }
+ return responseMessage, resp, err
+}
diff --git a/vendor/github.com/digitalocean/godo/BUILD.bazel b/vendor/github.com/digitalocean/godo/BUILD.bazel
index aa984bce..b96bb91d 100644
--- a/vendor/github.com/digitalocean/godo/BUILD.bazel
+++ b/vendor/github.com/digitalocean/godo/BUILD.bazel
@@ -3,8 +3,13 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library")
go_library(
name = "go_default_library",
srcs = [
+ "1-click.go",
"account.go",
"action.go",
+ "apps.gen.go",
+ "apps.go",
+ "balance.go",
+ "billing_history.go",
"cdn.go",
"certificates.go",
"databases.go",
@@ -19,12 +24,15 @@ go_library(
"godo.go",
"image_actions.go",
"images.go",
+ "invoices.go",
"keys.go",
"kubernetes.go",
"links.go",
"load_balancers.go",
+ "meta.go",
"projects.go",
"regions.go",
+ "registry.go",
"sizes.go",
"snapshots.go",
"storage.go",
@@ -37,5 +45,8 @@ go_library(
importmap = "kope.io/etcd-manager/vendor/github.com/digitalocean/godo",
importpath = "github.com/digitalocean/godo",
visibility = ["//visibility:public"],
- deps = ["//vendor/github.com/google/go-querystring/query:go_default_library"],
+ deps = [
+ "//vendor/github.com/google/go-querystring/query:go_default_library",
+ "//vendor/golang.org/x/oauth2:go_default_library",
+ ],
)
diff --git a/vendor/github.com/digitalocean/godo/CHANGELOG.md b/vendor/github.com/digitalocean/godo/CHANGELOG.md
index a33320a1..f4b6f716 100644
--- a/vendor/github.com/digitalocean/godo/CHANGELOG.md
+++ b/vendor/github.com/digitalocean/godo/CHANGELOG.md
@@ -1,5 +1,205 @@
# Change Log
+## [v1.54.0] - 2020-11-24
+
+- #417 - @waynr - registry: add support for garbage collection types
+
+## [v1.53.0] - 2020-11-20
+
+- #414 - @varshavaradarajan - kubernetes: add clusterlint support
+- #413 - @andrewsomething - images: Support updating distribution and description.
+
+## [v1.52.0] - 2020-11-05
+
+- #411 - @nicktate - apps: add unspecified type to image source registry types
+- #409 - @andrewsomething - registry: Add support for updating a subscription.
+- #408 - @nicktate - apps: update spec to include image source
+- #407 - @kamaln7 - apps: add the option to force build a new deployment
+
+## [v1.51.0] - 2020-11-02
+
+- #405 - @adamwg - registry: Support subscription options
+- #398 - @reeseconor - Add support for caching dependencies between GitHub Action runs
+- #404 - @andrewsomething - CONTRIBUTING.md: Suggest using github-changelog-generator.
+
+## [v1.50.0] - 2020-10-26
+
+- #400 - @waynr - registry: add garbage collection support
+- #402 - @snormore - apps: add catchall_document static site spec field and failed-deploy job type
+- #401 - @andrewlouis93 - VPC: adds option to set a VPC as the regional default
+
+## [v1.49.0] - 2020-10-21
+
+- #383 - @kamaln7 - apps: add ListRegions, Get/ListTiers, Get/ListInstanceSizes
+- #390 - @snormore - apps: add service spec internal_ports
+
+## [v1.48.0] - 2020-10-16
+
+- #388 - @varshavaradarajan - kubernetes - change docr integration api routes
+- #386 - @snormore - apps: pull in recent updates to jobs and domains
+
+## [v1.47.0] - 2020-10-14
+
+- #384 kubernetes - add registry related doks apis - @varshavaradarajan
+- #385 Fixed some typo in apps.gen.go and databases.go file - @devil-cyber
+- #382 Add GetKubeConfigWithExpiry (#334) - @ivanlemeshev
+- #381 Fix golint issues #377 - @sidsbrmnn
+- #380 refactor: Cyclomatic complexity issue - @DonRenando
+- #379 Run gofmt to fix some issues in codebase - @mycodeself
+
+## [v1.46.0] - 2020-10-05
+
+- #373 load balancers: add LB size field, currently in closed beta - @anitgandhi
+
+## [v1.45.0] - 2020-09-25
+
+**Note**: This release contains breaking changes to App Platform features currently in closed beta.
+
+- #369 update apps types to latest - @kamaln7
+- #368 Kubernetes: add taints field to node pool create and update requests - @timoreimann
+- #367 update apps types, address marshaling bug - @kamaln7
+
+## [v1.44.0] - 2020-09-08
+
+- #364 apps: support aggregate deployment logs - @kamaln7
+
+## [v1.43.0] - 2020-09-08
+
+- #362 update apps types - @kamaln7
+
+## [v1.42.1] - 2020-08-06
+
+- #360 domains: Allow for SRV records with port 0. - @andrewsomething
+
+## [v1.42.0] - 2020-07-22
+
+- #357 invoices: add category to InvoiceItem - @rbutler
+- #358 apps: add support for following logs - @nanzhong
+
+## [v1.41.0] - 2020-07-17
+
+- #355 kubernetes: Add support for surge upgrades - @varshavaradarajan
+
+## [v1.40.0] - 2020-07-16
+
+- #347 Make Rate limits thread safe - @roidelapluie
+- #353 Reuse TCP connection - @itsksaurabh
+
+## [v1.39.0] - 2020-07-14
+
+- #345, #346 Add app platform support [beta] - @nanzhong
+
+## [v1.38.0] - 2020-06-18
+
+- #341 Install 1-click applications on a Kubernetes cluster - @keladhruv
+- #340 Add RecordsByType, RecordsByName and RecordsByTypeAndName to the DomainsService - @viola
+
+## [v1.37.0] - 2020-06-01
+
+- #336 registry: URL encode repository names when building URLs. @adamwg
+- #335 Add 1-click service and request. @scottcrawford03
+
+## [v1.36.0] - 2020-05-12
+
+- #331 Expose expiry_seconds for Registry.DockerCredentials. @andrewsomething
+
+## [v1.35.1] - 2020-04-21
+
+- #328 Update vulnerable x/crypto dependency - @bentranter
+
+## [v1.35.0] - 2020-04-20
+
+- #326 Add TagCount field to registry/Repository - @nicktate
+- #325 Add DOCR EA routes - @nicktate
+- #324 Upgrade godo to Go 1.14 - @bentranter
+
+## [v1.34.0] - 2020-03-30
+
+- #320 Add VPC v3 attributes - @viola
+
+## [v1.33.1] - 2020-03-23
+
+- #318 upgrade github.com/stretchr/objx past 0.1.1 - @hilary
+
+## [v1.33.0] - 2020-03-20
+
+- #310 Add BillingHistory service and List endpoint - @rbutler
+- #316 load balancers: add new enable_backend_keepalive field - @anitgandhi
+
+## [v1.32.0] - 2020-03-04
+
+- #311 Add reset database user auth method - @zbarahal-do
+
+## [v1.31.0] - 2020-02-28
+
+- #305 invoices: GetPDF and GetCSV methods - @rbutler
+- #304 Add NewFromToken convenience method to init client - @bentranter
+- #301 invoices: Get, Summary, and List methods - @rbutler
+- #299 Fix param expiry_seconds for kubernetes.GetCredentials request - @velp
+
+## [v1.30.0] - 2020-02-03
+
+- #295 registry: support the created_at field - @adamwg
+- #293 doks: node pool labels - @snormore
+
+## [v1.29.0] - 2019-12-13
+
+- #288 Add Balance Get method - @rbutler
+- #286,#289 Deserialize meta field - @timoreimann
+
+## [v1.28.0] - 2019-12-04
+
+- #282 Add valid Redis eviction policy constants - @bentranter
+- #281 Remove databases info from top-level godoc string - @bentranter
+- #280 Fix VolumeSnapshotResourceType value volumesnapshot -> volume_snapshot - @aqche
+
+## [v1.27.0] - 2019-11-18
+
+- #278 add mysql user auth settings for database users - @gregmankes
+
+## [v1.26.0] - 2019-11-13
+
+- #272 dbaas: get and set mysql sql mode - @mikejholly
+
+## [v1.25.0] - 2019-11-13
+
+- #275 registry/docker-credentials: add support for the read/write parameter - @kamaln7
+- #273 implement the registry/docker-credentials endpoint - @kamaln7
+- #271 Add registry resource - @snormore
+
+## [v1.24.1] - 2019-11-04
+
+- #264 Update isLast to check p.Next - @aqche
+
+## [v1.24.0] - 2019-10-30
+
+- #267 Return []DatabaseFirewallRule in addition to raw response. - @andrewsomething
+
+## [v1.23.1] - 2019-10-30
+
+- #265 add support for getting/setting firewall rules - @gregmankes
+- #262 remove ResolveReference call - @mdanzinger
+- #261 Update CONTRIBUTING.md - @mdanzinger
+
+## [v1.22.0] - 2019-09-24
+
+- #259 Add Kubernetes GetCredentials method - @snormore
+
+## [v1.21.1] - 2019-09-19
+
+- #257 Upgrade to Go 1.13 - @bentranter
+
+## [v1.21.0] - 2019-09-16
+
+- #255 Add DropletID to Kubernetes Node instance - @snormore
+- #254 Add tags to Database, DatabaseReplica - @Zyqsempai
+
+## [v1.20.0] - 2019-09-06
+
+- #252 Add Kubernetes autoscale config fields - @snormore
+- #251 Support unset fields on Kubernetes cluster and node pool updates - @snormore
+- #250 Add Kubernetes GetUser method - @snormore
+
## [v1.19.0] - 2019-07-19
- #244 dbaas: add private-network-uuid field to create request
diff --git a/vendor/github.com/digitalocean/godo/CONTRIBUTING.md b/vendor/github.com/digitalocean/godo/CONTRIBUTING.md
index 89b096cf..23bbe202 100644
--- a/vendor/github.com/digitalocean/godo/CONTRIBUTING.md
+++ b/vendor/github.com/digitalocean/godo/CONTRIBUTING.md
@@ -1,54 +1,69 @@
# Contributing
-If you submit a pull request, please keep the following guidelines in mind:
+We love contributions! You are welcome to open a pull request, but it's a good idea to
+open an issue and discuss your idea with us first.
+
+Once you are ready to open a PR, please keep the following guidelines in mind:
1. Code should be `go fmt` compliant.
-2. Types, structs and funcs should be documented.
-3. Tests pass.
+1. Types, structs and funcs should be documented.
+1. Tests pass.
## Getting set up
-Assuming your `$GOPATH` is set up according to your desires, run:
-
-```sh
-go get github.com/digitalocean/godo
-go get -u github.com/stretchr/testify/assert
-```
-
-If outside `$GOPATH`, just clone the repository:
-
-```sh
-git clone github.com/digitalocean/godo
-```
+`godo` uses go modules. Just fork this repo, clone your fork and off you go!
## Running tests
When working on code in this repository, tests can be run via:
```sh
-go test .
+go test -mod=vendor .
```
## Versioning
-Godo follows [semver](https://www.semver.org) versioning semantics. New functionality should be accompanied by increment to the minor version number. The current strategy is to release often. Any code which is complete, tested, reviewed, and merged to master is worthy of release.
+Godo follows [semver](https://www.semver.org) versioning semantics.
+New functionality should be accompanied by increment to the minor
+version number. Any code merged to main is subject to release.
## Releasing
Releasing a new version of godo is currently a manual process.
-1. Update the `CHANGELOG.md` with your changes. If a version header for the next (unreleased) version does not exist, create one. Include one bullet point for each piece of new functionality in the release, including the pull request ID, description, and author(s).
+Submit a separate pull request for the version change from the pull
+request with your changes.
+
+1. Update the `CHANGELOG.md` with your changes. If a version header
+ for the next (unreleased) version does not exist, create one.
+ Include one bullet point for each piece of new functionality in the
+ release, including the pull request ID, description, and author(s).
+ For example:
```
## [v1.8.0] - 2019-03-13
-- #210 Expose tags on storage volume create/list/get. - @jcodybaker
-- #123 Update test dependencies - @digitalocean
+- #210 - @jcodybaker - Expose tags on storage volume create/list/get.
+- #123 - @digitalocean - Update test dependencies
+```
+
+ To generate a list of changes since the previous release in the correct
+ format, you can use [github-changelog-generator](https://github.com/digitalocean/github-changelog-generator).
+ It can be installed from source by running:
+
+```
+go get -u github.com/digitalocean/github-changelog-generator
+```
+
+ Next, list the changes by running:
+
+```
+github-changelog-generator -org digitalocean -repo godo
```
2. Update the `libraryVersion` number in `godo.go`.
3. Make a pull request with these changes. This PR should be separate from the PR containing the godo changes.
-4. Once the pull request has been merged, [draft a new release](https://github.com/digitalocean/godo/releases/new).
-5. Update the `Tag version` and `Release title` field with the new godo version. Be sure the version has a `v` prefixed in both places. Ex `v1.8.0`.
+4. Once the pull request has been merged, [draft a new release](https://github.com/digitalocean/godo/releases/new).
+5. Update the `Tag version` and `Release title` field with the new godo version. Be sure the version has a `v` prefixed in both places. Ex `v1.8.0`.
6. Copy the changelog bullet points to the description field.
7. Publish the release.
diff --git a/vendor/github.com/digitalocean/godo/README.md b/vendor/github.com/digitalocean/godo/README.md
index 770b182f..cd72d110 100644
--- a/vendor/github.com/digitalocean/godo/README.md
+++ b/vendor/github.com/digitalocean/godo/README.md
@@ -1,7 +1,8 @@
-[![Build Status](https://travis-ci.org/digitalocean/godo.svg)](https://travis-ci.org/digitalocean/godo)
-
# Godo
+[![Build Status](https://travis-ci.org/digitalocean/godo.svg)](https://travis-ci.org/digitalocean/godo)
+[![GoDoc](https://godoc.org/github.com/digitalocean/godo?status.svg)](https://godoc.org/github.com/digitalocean/godo)
+
Godo is a Go client library for accessing the DigitalOcean V2 API.
You can view the client API docs here: [http://godoc.org/github.com/digitalocean/godo](http://godoc.org/github.com/digitalocean/godo)
@@ -42,36 +43,16 @@ You can then use your token to create a new client:
package main
import (
- "context"
- "github.com/digitalocean/godo"
- "golang.org/x/oauth2"
+ "github.com/digitalocean/godo"
)
-const (
- pat = "mytoken"
-)
-
-type TokenSource struct {
- AccessToken string
-}
-
-func (t *TokenSource) Token() (*oauth2.Token, error) {
- token := &oauth2.Token{
- AccessToken: t.AccessToken,
- }
- return token, nil
-}
-
func main() {
- tokenSource := &TokenSource{
- AccessToken: pat,
- }
-
- oauthClient := oauth2.NewClient(context.Background(), tokenSource)
- client := godo.NewClient(oauthClient)
+ client := godo.NewFromToken("my-digitalocean-api-token")
}
```
+If you need to provide a `context.Context` to your new client, you should use [`godo.NewClient`](https://godoc.org/github.com/digitalocean/godo#NewClient) to manually construct a client instead.
+
## Examples
@@ -117,9 +98,7 @@ func DropletList(ctx context.Context, client *godo.Client) ([]godo.Droplet, erro
}
// append the current page's droplets to our list
- for _, d := range droplets {
- list = append(list, d)
- }
+ list = append(list, droplets...)
// if we are at the last page, break out the for loop
if resp.Links == nil || resp.Links.IsLastPage() {
diff --git a/vendor/github.com/digitalocean/godo/action.go b/vendor/github.com/digitalocean/godo/action.go
index 67ef3ab8..e3176005 100644
--- a/vendor/github.com/digitalocean/godo/action.go
+++ b/vendor/github.com/digitalocean/godo/action.go
@@ -34,6 +34,7 @@ var _ ActionsService = &ActionsServiceOp{}
type actionsRoot struct {
Actions []Action `json:"actions"`
Links *Links `json:"links"`
+ Meta *Meta `json:"meta"`
}
type actionRoot struct {
@@ -74,6 +75,9 @@ func (s *ActionsServiceOp) List(ctx context.Context, opt *ListOptions) ([]Action
if l := root.Links; l != nil {
resp.Links = l
}
+ if m := root.Meta; m != nil {
+ resp.Meta = m
+ }
return root.Actions, resp, err
}
diff --git a/vendor/github.com/digitalocean/godo/apps.gen.go b/vendor/github.com/digitalocean/godo/apps.gen.go
new file mode 100644
index 00000000..9e618c77
--- /dev/null
+++ b/vendor/github.com/digitalocean/godo/apps.gen.go
@@ -0,0 +1,464 @@
+// Code generated by golang.org/x/tools/cmd/bundle. DO NOT EDIT.
+// $ bundle -pkg godo -prefix ./dev/dist/godo
+
+package godo
+
+import (
+ "time"
+)
+
+// App An application's configuration and status.
+type App struct {
+ ID string `json:"id,omitempty"`
+ OwnerUUID string `json:"owner_uuid,omitempty"`
+ Spec *AppSpec `json:"spec"`
+ DefaultIngress string `json:"default_ingress,omitempty"`
+ CreatedAt time.Time `json:"created_at,omitempty"`
+ UpdatedAt time.Time `json:"updated_at,omitempty"`
+ ActiveDeployment *Deployment `json:"active_deployment,omitempty"`
+ InProgressDeployment *Deployment `json:"in_progress_deployment,omitempty"`
+ LastDeploymentCreatedAt time.Time `json:"last_deployment_created_at,omitempty"`
+ LiveURL string `json:"live_url,omitempty"`
+ Region *AppRegion `json:"region,omitempty"`
+ TierSlug string `json:"tier_slug,omitempty"`
+ LiveURLBase string `json:"live_url_base,omitempty"`
+ LiveDomain string `json:"live_domain,omitempty"`
+}
+
+// AppDatabaseSpec struct for AppDatabaseSpec
+type AppDatabaseSpec struct {
+ // The name. Must be unique across all components within the same app.
+ Name string `json:"name"`
+ Engine AppDatabaseSpecEngine `json:"engine,omitempty"`
+ Version string `json:"version,omitempty"`
+ // Deprecated.
+ Size string `json:"size,omitempty"`
+ // Deprecated.
+ NumNodes int64 `json:"num_nodes,omitempty"`
+ // Whether this is a production or dev database.
+ Production bool `json:"production,omitempty"`
+ // The name of the underlying DigitalOcean DBaaS cluster. This is required for production databases. For dev databases, if cluster_name is not set, a new cluster will be provisioned.
+ ClusterName string `json:"cluster_name,omitempty"`
+ // The name of the MySQL or PostgreSQL database to configure.
+ DBName string `json:"db_name,omitempty"`
+ // The name of the MySQL or PostgreSQL user to configure.
+ DBUser string `json:"db_user,omitempty"`
+}
+
+// AppDatabaseSpecEngine the model 'AppDatabaseSpecEngine'
+type AppDatabaseSpecEngine string
+
+// List of AppDatabaseSpecEngine
+const (
+ AppDatabaseSpecEngine_Unset AppDatabaseSpecEngine = "UNSET"
+ AppDatabaseSpecEngine_MySQL AppDatabaseSpecEngine = "MYSQL"
+ AppDatabaseSpecEngine_PG AppDatabaseSpecEngine = "PG"
+ AppDatabaseSpecEngine_Redis AppDatabaseSpecEngine = "REDIS"
+)
+
+// AppDomainSpec struct for AppDomainSpec
+type AppDomainSpec struct {
+ // The hostname.
+ Domain string `json:"domain"`
+ Type AppDomainSpecType `json:"type,omitempty"`
+ // Whether the domain includes all sub-domains, in addition to the given domain.
+ Wildcard bool `json:"wildcard,omitempty"`
+ Zone string `json:"zone,omitempty"`
+}
+
+// AppDomainSpecType - DEFAULT: The default .ondigitalocean.app domain assigned to this app. - PRIMARY: The primary domain for this app. This is the domain that is displayed as the default in the control panel, used in bindable environment variables, and any other places that reference an app's live URL. Only one domain may be set as primary. - ALIAS: A non-primary domain.
+type AppDomainSpecType string
+
+// List of AppDomainSpecType
+const (
+ AppDomainSpecType_Unspecified AppDomainSpecType = "UNSPECIFIED"
+ AppDomainSpecType_Default AppDomainSpecType = "DEFAULT"
+ AppDomainSpecType_Primary AppDomainSpecType = "PRIMARY"
+ AppDomainSpecType_Alias AppDomainSpecType = "ALIAS"
+)
+
+// AppJobSpec struct for AppJobSpec
+type AppJobSpec struct {
+ // The name. Must be unique across all components within the same app.
+ Name string `json:"name"`
+ Git *GitSourceSpec `json:"git,omitempty"`
+ GitHub *GitHubSourceSpec `json:"github,omitempty"`
+ Image *ImageSourceSpec `json:"image,omitempty"`
+ // The path to the Dockerfile relative to the root of the repo. If set, it will be used to build this component. Otherwise, App Platform will attempt to build it using buildpacks.
+ DockerfilePath string `json:"dockerfile_path,omitempty"`
+ // An optional build command to run while building this component from source.
+ BuildCommand string `json:"build_command,omitempty"`
+ // An optional run command to override the component's default.
+ RunCommand string `json:"run_command,omitempty"`
+ // An optional path to the working directory to use for the build. For Dockerfile builds, this will be used as the build context. Must be relative to the root of the repo.
+ SourceDir string `json:"source_dir,omitempty"`
+ // An environment slug describing the type of this app. For a full list, please refer to [the product documentation](https://www.digitalocean.com/docs/app-platform/).
+ EnvironmentSlug string `json:"environment_slug,omitempty"`
+ // A list of environment variables made available to the component.
+ Envs []*AppVariableDefinition `json:"envs,omitempty"`
+ // The instance size to use for this component.
+ InstanceSizeSlug string `json:"instance_size_slug,omitempty"`
+ InstanceCount int64 `json:"instance_count,omitempty"`
+ Kind AppJobSpecKind `json:"kind,omitempty"`
+}
+
+// AppJobSpecKind - UNSPECIFIED: Default job type, will auto-complete to POST_DEPLOY kind. - PRE_DEPLOY: Indicates a job that runs before an app deployment. - POST_DEPLOY: Indicates a job that runs after an app deployment. - FAILED_DEPLOY: Indicates a job that runs after a component fails to deploy.
+type AppJobSpecKind string
+
+// List of AppJobSpecKind
+const (
+ AppJobSpecKind_Unspecified AppJobSpecKind = "UNSPECIFIED"
+ AppJobSpecKind_PreDeploy AppJobSpecKind = "PRE_DEPLOY"
+ AppJobSpecKind_PostDeploy AppJobSpecKind = "POST_DEPLOY"
+ AppJobSpecKind_FailedDeploy AppJobSpecKind = "FAILED_DEPLOY"
+)
+
+// AppRouteSpec struct for AppRouteSpec
+type AppRouteSpec struct {
+ // An HTTP path prefix. Paths must start with / and must be unique across all components within an app.
+ Path string `json:"path,omitempty"`
+}
+
+// AppServiceSpec struct for AppServiceSpec
+type AppServiceSpec struct {
+ // The name. Must be unique across all components within the same app.
+ Name string `json:"name"`
+ Git *GitSourceSpec `json:"git,omitempty"`
+ GitHub *GitHubSourceSpec `json:"github,omitempty"`
+ Image *ImageSourceSpec `json:"image,omitempty"`
+ // The path to the Dockerfile relative to the root of the repo. If set, it will be used to build this component. Otherwise, App Platform will attempt to build it using buildpacks.
+ DockerfilePath string `json:"dockerfile_path,omitempty"`
+ // An optional build command to run while building this component from source.
+ BuildCommand string `json:"build_command,omitempty"`
+ // An optional run command to override the component's default.
+ RunCommand string `json:"run_command,omitempty"`
+ // An optional path to the working directory to use for the build. For Dockerfile builds, this will be used as the build context. Must be relative to the root of the repo.
+ SourceDir string `json:"source_dir,omitempty"`
+ // An environment slug describing the type of this app. For a full list, please refer to [the product documentation](https://www.digitalocean.com/docs/app-platform/).
+ EnvironmentSlug string `json:"environment_slug,omitempty"`
+ // A list of environment variables made available to the component.
+ Envs []*AppVariableDefinition `json:"envs,omitempty"`
+ InstanceSizeSlug string `json:"instance_size_slug,omitempty"`
+ InstanceCount int64 `json:"instance_count,omitempty"`
+ // The internal port on which this service's run command will listen. Default: 8080 If there is not an environment variable with the name `PORT`, one will be automatically added with its value set to the value of this field.
+ HTTPPort int64 `json:"http_port,omitempty"`
+ // A list of HTTP routes that should be routed to this component.
+ Routes []*AppRouteSpec `json:"routes,omitempty"`
+ HealthCheck *AppServiceSpecHealthCheck `json:"health_check,omitempty"`
+ CORS *AppCORSPolicy `json:"cors,omitempty"`
+ // The ports on which this service will listen for internal traffic.
+ InternalPorts []int64 `json:"internal_ports,omitempty"`
+}
+
+// AppServiceSpecHealthCheck struct for AppServiceSpecHealthCheck
+type AppServiceSpecHealthCheck struct {
+ // Deprecated. Use http_path instead.
+ Path string `json:"path,omitempty"`
+ // The number of seconds to wait before beginning health checks.
+ InitialDelaySeconds int32 `json:"initial_delay_seconds,omitempty"`
+ // The number of seconds to wait between health checks.
+ PeriodSeconds int32 `json:"period_seconds,omitempty"`
+ // The number of seconds after which the check times out.
+ TimeoutSeconds int32 `json:"timeout_seconds,omitempty"`
+ // The number of successful health checks before considered healthy.
+ SuccessThreshold int32 `json:"success_threshold,omitempty"`
+ // The number of failed health checks before considered unhealthy.
+ FailureThreshold int32 `json:"failure_threshold,omitempty"`
+ // The route path used for the HTTP health check ping. If not set, the HTTP health check will be disabled and a TCP health check used instead.
+ HTTPPath string `json:"http_path,omitempty"`
+}
+
+// AppSpec The desired configuration of an application.
+type AppSpec struct {
+ // The name of the app. Must be unique across all in the same account.
+ Name string `json:"name"`
+ // Workloads which expose publicy-accessible HTTP services.
+ Services []*AppServiceSpec `json:"services,omitempty"`
+ // Content which can be rendered to static web assets.
+ StaticSites []*AppStaticSiteSpec `json:"static_sites,omitempty"`
+ // Workloads which do not expose publicly-accessible HTTP services.
+ Workers []*AppWorkerSpec `json:"workers,omitempty"`
+ // Pre and post deployment workloads which do not expose publicly-accessible HTTP routes.
+ Jobs []*AppJobSpec `json:"jobs,omitempty"`
+ // Database instances which can provide persistence to workloads within the application.
+ Databases []*AppDatabaseSpec `json:"databases,omitempty"`
+ // A set of hostnames where the application will be available.
+ Domains []*AppDomainSpec `json:"domains,omitempty"`
+ Region string `json:"region,omitempty"`
+}
+
+// AppStaticSiteSpec struct for AppStaticSiteSpec
+type AppStaticSiteSpec struct {
+ // The name. Must be unique across all components within the same app.
+ Name string `json:"name"`
+ Git *GitSourceSpec `json:"git,omitempty"`
+ GitHub *GitHubSourceSpec `json:"github,omitempty"`
+ // The path to the Dockerfile relative to the root of the repo. If set, it will be used to build this component. Otherwise, App Platform will attempt to build it using buildpacks.
+ DockerfilePath string `json:"dockerfile_path,omitempty"`
+ // An optional build command to run while building this component from source.
+ BuildCommand string `json:"build_command,omitempty"`
+ // An optional path to the working directory to use for the build. For Dockerfile builds, this will be used as the build context. Must be relative to the root of the repo.
+ SourceDir string `json:"source_dir,omitempty"`
+ // An environment slug describing the type of this app. For a full list, please refer to [the product documentation](https://www.digitalocean.com/docs/app-platform/).
+ EnvironmentSlug string `json:"environment_slug,omitempty"`
+ // An optional path to where the built assets will be located, relative to the build context. If not set, App Platform will automatically scan for these directory names: `_static`, `dist`, `public`.
+ OutputDir string `json:"output_dir,omitempty"`
+ IndexDocument string `json:"index_document,omitempty"`
+ // The name of the error document to use when serving this static site. Default: 404.html. If no such file exists within the built assets, App Platform will supply one.
+ ErrorDocument string `json:"error_document,omitempty"`
+ // A list of environment variables made available to the component.
+ Envs []*AppVariableDefinition `json:"envs,omitempty"`
+ // A list of HTTP routes that should be routed to this component.
+ Routes []*AppRouteSpec `json:"routes,omitempty"`
+ CORS *AppCORSPolicy `json:"cors,omitempty"`
+ // The name of the document to use as the fallback for any requests to documents that are not found when serving this static site. Only 1 of `catchall_document` or `error_document` can be set.
+ CatchallDocument string `json:"catchall_document,omitempty"`
+}
+
+// AppVariableDefinition struct for AppVariableDefinition
+type AppVariableDefinition struct {
+ // The name
+ Key string `json:"key"`
+ // The value. If the type is `SECRET`, the value will be encrypted on first submission. On following submissions, the encrypted value should be used.
+ Value string `json:"value,omitempty"`
+ Scope AppVariableScope `json:"scope,omitempty"`
+ Type AppVariableType `json:"type,omitempty"`
+}
+
+// AppWorkerSpec struct for AppWorkerSpec
+type AppWorkerSpec struct {
+ // The name. Must be unique across all components within the same app.
+ Name string `json:"name"`
+ Git *GitSourceSpec `json:"git,omitempty"`
+ GitHub *GitHubSourceSpec `json:"github,omitempty"`
+ Image *ImageSourceSpec `json:"image,omitempty"`
+ // The path to the Dockerfile relative to the root of the repo. If set, it will be used to build this component. Otherwise, App Platform will attempt to build it using buildpacks.
+ DockerfilePath string `json:"dockerfile_path,omitempty"`
+ // An optional build command to run while building this component from source.
+ BuildCommand string `json:"build_command,omitempty"`
+ // An optional run command to override the component's default.
+ RunCommand string `json:"run_command,omitempty"`
+ // An optional path to the working directory to use for the build. For Dockerfile builds, this will be used as the build context. Must be relative to the root of the repo.
+ SourceDir string `json:"source_dir,omitempty"`
+ // An environment slug describing the type of this app. For a full list, please refer to [the product documentation](https://www.digitalocean.com/docs/app-platform/).
+ EnvironmentSlug string `json:"environment_slug,omitempty"`
+ // A list of environment variables made available to the component.
+ Envs []*AppVariableDefinition `json:"envs,omitempty"`
+ // The instance size to use for this component.
+ InstanceSizeSlug string `json:"instance_size_slug,omitempty"`
+ InstanceCount int64 `json:"instance_count,omitempty"`
+}
+
+// AppCORSPolicy struct for AppCORSPolicy
+type AppCORSPolicy struct {
+ // The set of allowed CORS origins.
+ AllowOrigins []*AppStringMatch `json:"allow_origins,omitempty"`
+}
+
+// Deployment struct for Deployment
+type Deployment struct {
+ ID string `json:"id,omitempty"`
+ Spec *AppSpec `json:"spec,omitempty"`
+ Services []*DeploymentService `json:"services,omitempty"`
+ StaticSites []*DeploymentStaticSite `json:"static_sites,omitempty"`
+ Workers []*DeploymentWorker `json:"workers,omitempty"`
+ Jobs []*DeploymentJob `json:"jobs,omitempty"`
+ PhaseLastUpdatedAt time.Time `json:"phase_last_updated_at,omitempty"`
+ CreatedAt time.Time `json:"created_at,omitempty"`
+ UpdatedAt time.Time `json:"updated_at,omitempty"`
+ Cause string `json:"cause,omitempty"`
+ ClonedFrom string `json:"cloned_from,omitempty"`
+ Progress *DeploymentProgress `json:"progress,omitempty"`
+ Phase DeploymentPhase `json:"phase,omitempty"`
+ TierSlug string `json:"tier_slug,omitempty"`
+}
+
+// DeploymentJob struct for DeploymentJob
+type DeploymentJob struct {
+ Name string `json:"name,omitempty"`
+ SourceCommitHash string `json:"source_commit_hash,omitempty"`
+}
+
+// DeploymentPhase the model 'DeploymentPhase'
+type DeploymentPhase string
+
+// List of DeploymentPhase
+const (
+ DeploymentPhase_Unknown DeploymentPhase = "UNKNOWN"
+ DeploymentPhase_PendingBuild DeploymentPhase = "PENDING_BUILD"
+ DeploymentPhase_Building DeploymentPhase = "BUILDING"
+ DeploymentPhase_PendingDeploy DeploymentPhase = "PENDING_DEPLOY"
+ DeploymentPhase_Deploying DeploymentPhase = "DEPLOYING"
+ DeploymentPhase_Active DeploymentPhase = "ACTIVE"
+ DeploymentPhase_Superseded DeploymentPhase = "SUPERSEDED"
+ DeploymentPhase_Error DeploymentPhase = "ERROR"
+ DeploymentPhase_Canceled DeploymentPhase = "CANCELED"
+)
+
+// DeploymentProgress struct for DeploymentProgress
+type DeploymentProgress struct {
+ PendingSteps int32 `json:"pending_steps,omitempty"`
+ RunningSteps int32 `json:"running_steps,omitempty"`
+ SuccessSteps int32 `json:"success_steps,omitempty"`
+ ErrorSteps int32 `json:"error_steps,omitempty"`
+ TotalSteps int32 `json:"total_steps,omitempty"`
+ Steps []*DeploymentProgressStep `json:"steps,omitempty"`
+ SummarySteps []*DeploymentProgressStep `json:"summary_steps,omitempty"`
+}
+
+// DeploymentService struct for DeploymentService
+type DeploymentService struct {
+ Name string `json:"name,omitempty"`
+ SourceCommitHash string `json:"source_commit_hash,omitempty"`
+}
+
+// DeploymentStaticSite struct for DeploymentStaticSite
+type DeploymentStaticSite struct {
+ Name string `json:"name,omitempty"`
+ SourceCommitHash string `json:"source_commit_hash,omitempty"`
+}
+
+// DeploymentWorker struct for DeploymentWorker
+type DeploymentWorker struct {
+ Name string `json:"name,omitempty"`
+ SourceCommitHash string `json:"source_commit_hash,omitempty"`
+}
+
+// GitHubSourceSpec struct for GitHubSourceSpec
+type GitHubSourceSpec struct {
+ Repo string `json:"repo,omitempty"`
+ Branch string `json:"branch,omitempty"`
+ DeployOnPush bool `json:"deploy_on_push,omitempty"`
+}
+
+// GitSourceSpec struct for GitSourceSpec
+type GitSourceSpec struct {
+ RepoCloneURL string `json:"repo_clone_url,omitempty"`
+ Branch string `json:"branch,omitempty"`
+}
+
+// ImageSourceSpec struct for ImageSourceSpec
+type ImageSourceSpec struct {
+ RegistryType ImageSourceSpecRegistryType `json:"registry_type,omitempty"`
+ // The registry name. Must be left empty for the `DOCR` registry type.
+ Registry string `json:"registry,omitempty"`
+ // The repository name.
+ Repository string `json:"repository,omitempty"`
+ // The repository tag. Defaults to `latest` if not provided.
+ Tag string `json:"tag,omitempty"`
+}
+
+// ImageSourceSpecRegistryType - UNSPECIFIED: Represents an unspecified registry type. - DOCR: The DigitalOcean container registry type.
+type ImageSourceSpecRegistryType string
+
+// List of ImageSourceSpecRegistryType
+const (
+ ImageSourceSpecRegistryType_Unspecified ImageSourceSpecRegistryType = "UNSPECIFIED"
+ ImageSourceSpecRegistryType_DOCR ImageSourceSpecRegistryType = "DOCR"
+)
+
+// AppInstanceSize struct for AppInstanceSize
+type AppInstanceSize struct {
+ Name string `json:"name,omitempty"`
+ Slug string `json:"slug,omitempty"`
+ CPUType AppInstanceSizeCPUType `json:"cpu_type,omitempty"`
+ CPUs string `json:"cpus,omitempty"`
+ MemoryBytes string `json:"memory_bytes,omitempty"`
+ USDPerMonth string `json:"usd_per_month,omitempty"`
+ USDPerSecond string `json:"usd_per_second,omitempty"`
+ TierSlug string `json:"tier_slug,omitempty"`
+ TierUpgradeTo string `json:"tier_upgrade_to,omitempty"`
+ TierDowngradeTo string `json:"tier_downgrade_to,omitempty"`
+}
+
+// AppInstanceSizeCPUType the model 'AppInstanceSizeCPUType'
+type AppInstanceSizeCPUType string
+
+// List of AppInstanceSizeCPUType
+const (
+ AppInstanceSizeCPUType_Unspecified AppInstanceSizeCPUType = "UNSPECIFIED"
+ AppInstanceSizeCPUType_Shared AppInstanceSizeCPUType = "SHARED"
+ AppInstanceSizeCPUType_Dedicated AppInstanceSizeCPUType = "DEDICATED"
+)
+
+// DeploymentProgressStep struct for DeploymentProgressStep
+type DeploymentProgressStep struct {
+ Name string `json:"name,omitempty"`
+ Status DeploymentProgressStepStatus `json:"status,omitempty"`
+ Steps []*DeploymentProgressStep `json:"steps,omitempty"`
+ StartedAt time.Time `json:"started_at,omitempty"`
+ EndedAt time.Time `json:"ended_at,omitempty"`
+ Reason *DeploymentProgressStepReason `json:"reason,omitempty"`
+ ComponentName string `json:"component_name,omitempty"`
+ // The base of a human-readable description of the step intended to be combined with the component name for presentation. For example: `message_base` = \"Building service\" `component_name` = \"api\"
+ MessageBase string `json:"message_base,omitempty"`
+}
+
+// DeploymentProgressStepStatus the model 'DeploymentProgressStepStatus'
+type DeploymentProgressStepStatus string
+
+// List of DeploymentProgressStepStatus
+const (
+ DeploymentProgressStepStatus_Unknown DeploymentProgressStepStatus = "UNKNOWN"
+ DeploymentProgressStepStatus_Pending DeploymentProgressStepStatus = "PENDING"
+ DeploymentProgressStepStatus_Running DeploymentProgressStepStatus = "RUNNING"
+ DeploymentProgressStepStatus_Error DeploymentProgressStepStatus = "ERROR"
+ DeploymentProgressStepStatus_Success DeploymentProgressStepStatus = "SUCCESS"
+)
+
+// AppRegion struct for AppRegion
+type AppRegion struct {
+ Slug string `json:"slug,omitempty"`
+ Label string `json:"label,omitempty"`
+ Flag string `json:"flag,omitempty"`
+ Continent string `json:"continent,omitempty"`
+ Disabled bool `json:"disabled,omitempty"`
+ DataCenters []string `json:"data_centers,omitempty"`
+ Reason string `json:"reason,omitempty"`
+ // Whether or not the region is presented as the default.
+ Default bool `json:"default,omitempty"`
+}
+
+// DeploymentProgressStepReason struct for DeploymentProgressStepReason
+type DeploymentProgressStepReason struct {
+ Code string `json:"code,omitempty"`
+ Message string `json:"message,omitempty"`
+}
+
+// AppStringMatch struct for AppStringMatch
+type AppStringMatch struct {
+ // Exact string match. Only 1 of `exact`, `prefix`, or `regex` must be set.
+ Exact string `json:"exact,omitempty"`
+ // Prefix-based match. Only 1 of `exact`, `prefix`, or `regex` must be set.
+ Prefix string `json:"prefix,omitempty"`
+ Regex string `json:"regex,omitempty"`
+}
+
+// AppTier struct for AppTier
+type AppTier struct {
+ Name string `json:"name,omitempty"`
+ Slug string `json:"slug,omitempty"`
+ StorageBytes string `json:"storage_bytes,omitempty"`
+ EgressBandwidthBytes string `json:"egress_bandwidth_bytes,omitempty"`
+ BuildSeconds string `json:"build_seconds,omitempty"`
+}
+
+// AppVariableScope the model 'AppVariableScope'
+type AppVariableScope string
+
+// List of AppVariableScope
+const (
+ AppVariableScope_Unset AppVariableScope = "UNSET"
+ AppVariableScope_RunTime AppVariableScope = "RUN_TIME"
+ AppVariableScope_BuildTime AppVariableScope = "BUILD_TIME"
+ AppVariableScope_RunAndBuildTime AppVariableScope = "RUN_AND_BUILD_TIME"
+)
+
+// AppVariableType the model 'AppVariableType'
+type AppVariableType string
+
+// List of AppVariableType
+const (
+ AppVariableType_General AppVariableType = "GENERAL"
+ AppVariableType_Secret AppVariableType = "SECRET"
+)
diff --git a/vendor/github.com/digitalocean/godo/apps.go b/vendor/github.com/digitalocean/godo/apps.go
new file mode 100644
index 00000000..95c386b2
--- /dev/null
+++ b/vendor/github.com/digitalocean/godo/apps.go
@@ -0,0 +1,330 @@
+package godo
+
+import (
+ "context"
+ "fmt"
+ "net/http"
+)
+
+const (
+ appsBasePath = "/v2/apps"
+)
+
+// AppLogType is the type of app logs.
+type AppLogType string
+
+const (
+ // AppLogTypeBuild represents build logs.
+ AppLogTypeBuild AppLogType = "BUILD"
+ // AppLogTypeDeploy represents deploy logs.
+ AppLogTypeDeploy AppLogType = "DEPLOY"
+ // AppLogTypeRun represents run logs.
+ AppLogTypeRun AppLogType = "RUN"
+)
+
+// AppsService is an interface for interfacing with the App Platform endpoints
+// of the DigitalOcean API.
+type AppsService interface {
+ Create(ctx context.Context, create *AppCreateRequest) (*App, *Response, error)
+ Get(ctx context.Context, appID string) (*App, *Response, error)
+ List(ctx context.Context, opts *ListOptions) ([]*App, *Response, error)
+ Update(ctx context.Context, appID string, update *AppUpdateRequest) (*App, *Response, error)
+ Delete(ctx context.Context, appID string) (*Response, error)
+
+ GetDeployment(ctx context.Context, appID, deploymentID string) (*Deployment, *Response, error)
+ ListDeployments(ctx context.Context, appID string, opts *ListOptions) ([]*Deployment, *Response, error)
+ CreateDeployment(ctx context.Context, appID string, create ...*DeploymentCreateRequest) (*Deployment, *Response, error)
+
+ GetLogs(ctx context.Context, appID, deploymentID, component string, logType AppLogType, follow bool) (*AppLogs, *Response, error)
+
+ ListRegions(ctx context.Context) ([]*AppRegion, *Response, error)
+
+ ListTiers(ctx context.Context) ([]*AppTier, *Response, error)
+ GetTier(ctx context.Context, slug string) (*AppTier, *Response, error)
+
+ ListInstanceSizes(ctx context.Context) ([]*AppInstanceSize, *Response, error)
+ GetInstanceSize(ctx context.Context, slug string) (*AppInstanceSize, *Response, error)
+}
+
+// AppLogs represent app logs.
+type AppLogs struct {
+ LiveURL string `json:"live_url"`
+ HistoricURLs []string `json:"historic_urls"`
+}
+
+// AppCreateRequest represents a request to create an app.
+type AppCreateRequest struct {
+ Spec *AppSpec `json:"spec"`
+}
+
+// AppUpdateRequest represents a request to update an app.
+type AppUpdateRequest struct {
+ Spec *AppSpec `json:"spec"`
+}
+
+// DeploymentCreateRequest represents a request to create a deployment.
+type DeploymentCreateRequest struct {
+ ForceBuild bool `json:"force_build"`
+}
+
+type appRoot struct {
+ App *App `json:"app"`
+}
+
+type appsRoot struct {
+ Apps []*App `json:"apps"`
+}
+
+type deploymentRoot struct {
+ Deployment *Deployment `json:"deployment"`
+}
+
+type deploymentsRoot struct {
+ Deployments []*Deployment `json:"deployments"`
+}
+
+type appTierRoot struct {
+ Tier *AppTier `json:"tier"`
+}
+
+type appTiersRoot struct {
+ Tiers []*AppTier `json:"tiers"`
+}
+
+type instanceSizeRoot struct {
+ InstanceSize *AppInstanceSize `json:"instance_size"`
+}
+
+type instanceSizesRoot struct {
+ InstanceSizes []*AppInstanceSize `json:"instance_sizes"`
+}
+
+type appRegionsRoot struct {
+ Regions []*AppRegion `json:"regions"`
+}
+
+// AppsServiceOp handles communication with Apps methods of the DigitalOcean API.
+type AppsServiceOp struct {
+ client *Client
+}
+
+// Create an app.
+func (s *AppsServiceOp) Create(ctx context.Context, create *AppCreateRequest) (*App, *Response, error) {
+ path := appsBasePath
+ req, err := s.client.NewRequest(ctx, http.MethodPost, path, create)
+ if err != nil {
+ return nil, nil, err
+ }
+
+ root := new(appRoot)
+ resp, err := s.client.Do(ctx, req, root)
+ if err != nil {
+ return nil, resp, err
+ }
+ return root.App, resp, nil
+}
+
+// Get an app.
+func (s *AppsServiceOp) Get(ctx context.Context, appID string) (*App, *Response, error) {
+ path := fmt.Sprintf("%s/%s", appsBasePath, appID)
+ req, err := s.client.NewRequest(ctx, http.MethodGet, path, nil)
+ if err != nil {
+ return nil, nil, err
+ }
+ root := new(appRoot)
+ resp, err := s.client.Do(ctx, req, root)
+ if err != nil {
+ return nil, resp, err
+ }
+ return root.App, resp, nil
+}
+
+// List apps.
+func (s *AppsServiceOp) List(ctx context.Context, opts *ListOptions) ([]*App, *Response, error) {
+ path := appsBasePath
+ req, err := s.client.NewRequest(ctx, http.MethodGet, path, nil)
+ if err != nil {
+ return nil, nil, err
+ }
+ root := new(appsRoot)
+ resp, err := s.client.Do(ctx, req, root)
+ if err != nil {
+ return nil, resp, err
+ }
+ return root.Apps, resp, nil
+}
+
+// Update an app.
+func (s *AppsServiceOp) Update(ctx context.Context, appID string, update *AppUpdateRequest) (*App, *Response, error) {
+ path := fmt.Sprintf("%s/%s", appsBasePath, appID)
+ req, err := s.client.NewRequest(ctx, http.MethodPut, path, update)
+ if err != nil {
+ return nil, nil, err
+ }
+
+ root := new(appRoot)
+ resp, err := s.client.Do(ctx, req, root)
+ if err != nil {
+ return nil, resp, err
+ }
+ return root.App, resp, nil
+}
+
+// Delete an app.
+func (s *AppsServiceOp) Delete(ctx context.Context, appID string) (*Response, error) {
+ path := fmt.Sprintf("%s/%s", appsBasePath, appID)
+ req, err := s.client.NewRequest(ctx, http.MethodDelete, path, nil)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := s.client.Do(ctx, req, nil)
+ if err != nil {
+ return resp, err
+ }
+ return resp, nil
+}
+
+// GetDeployment gets an app deployment.
+func (s *AppsServiceOp) GetDeployment(ctx context.Context, appID, deploymentID string) (*Deployment, *Response, error) {
+ path := fmt.Sprintf("%s/%s/deployments/%s", appsBasePath, appID, deploymentID)
+ req, err := s.client.NewRequest(ctx, http.MethodGet, path, nil)
+ if err != nil {
+ return nil, nil, err
+ }
+ root := new(deploymentRoot)
+ resp, err := s.client.Do(ctx, req, root)
+ if err != nil {
+ return nil, resp, err
+ }
+ return root.Deployment, resp, nil
+}
+
+// ListDeployments lists an app deployments.
+func (s *AppsServiceOp) ListDeployments(ctx context.Context, appID string, opts *ListOptions) ([]*Deployment, *Response, error) {
+ path := fmt.Sprintf("%s/%s/deployments", appsBasePath, appID)
+ req, err := s.client.NewRequest(ctx, http.MethodGet, path, nil)
+ if err != nil {
+ return nil, nil, err
+ }
+ root := new(deploymentsRoot)
+ resp, err := s.client.Do(ctx, req, root)
+ if err != nil {
+ return nil, resp, err
+ }
+ return root.Deployments, resp, nil
+}
+
+// CreateDeployment creates an app deployment.
+func (s *AppsServiceOp) CreateDeployment(ctx context.Context, appID string, create ...*DeploymentCreateRequest) (*Deployment, *Response, error) {
+ path := fmt.Sprintf("%s/%s/deployments", appsBasePath, appID)
+
+ var createReq *DeploymentCreateRequest
+ for _, c := range create {
+ createReq = c
+ }
+
+ req, err := s.client.NewRequest(ctx, http.MethodPost, path, createReq)
+ if err != nil {
+ return nil, nil, err
+ }
+ root := new(deploymentRoot)
+ resp, err := s.client.Do(ctx, req, root)
+ if err != nil {
+ return nil, resp, err
+ }
+ return root.Deployment, resp, nil
+}
+
+// GetLogs retrieves app logs.
+func (s *AppsServiceOp) GetLogs(ctx context.Context, appID, deploymentID, component string, logType AppLogType, follow bool) (*AppLogs, *Response, error) {
+ url := fmt.Sprintf("%s/%s/deployments/%s/logs?type=%s&follow=%t", appsBasePath, appID, deploymentID, logType, follow)
+ if component != "" {
+ url = fmt.Sprintf("%s&component_name=%s", url, component)
+ }
+
+ req, err := s.client.NewRequest(ctx, http.MethodGet, url, nil)
+ if err != nil {
+ return nil, nil, err
+ }
+ logs := new(AppLogs)
+ resp, err := s.client.Do(ctx, req, logs)
+ if err != nil {
+ return nil, resp, err
+ }
+ return logs, resp, nil
+}
+
+// ListRegions lists all regions supported by App Platform.
+func (s *AppsServiceOp) ListRegions(ctx context.Context) ([]*AppRegion, *Response, error) {
+ path := fmt.Sprintf("%s/regions", appsBasePath)
+ req, err := s.client.NewRequest(ctx, http.MethodGet, path, nil)
+ if err != nil {
+ return nil, nil, err
+ }
+ root := new(appRegionsRoot)
+ resp, err := s.client.Do(ctx, req, root)
+ if err != nil {
+ return nil, resp, err
+ }
+ return root.Regions, resp, nil
+}
+
+// ListTiers lists available app tiers.
+func (s *AppsServiceOp) ListTiers(ctx context.Context) ([]*AppTier, *Response, error) {
+ path := fmt.Sprintf("%s/tiers", appsBasePath)
+ req, err := s.client.NewRequest(ctx, http.MethodGet, path, nil)
+ if err != nil {
+ return nil, nil, err
+ }
+ root := new(appTiersRoot)
+ resp, err := s.client.Do(ctx, req, root)
+ if err != nil {
+ return nil, resp, err
+ }
+ return root.Tiers, resp, nil
+}
+
+// GetTier retrieves information about a specific app tier.
+func (s *AppsServiceOp) GetTier(ctx context.Context, slug string) (*AppTier, *Response, error) {
+ path := fmt.Sprintf("%s/tiers/%s", appsBasePath, slug)
+ req, err := s.client.NewRequest(ctx, http.MethodGet, path, nil)
+ if err != nil {
+ return nil, nil, err
+ }
+ root := new(appTierRoot)
+ resp, err := s.client.Do(ctx, req, root)
+ if err != nil {
+ return nil, resp, err
+ }
+ return root.Tier, resp, nil
+}
+
+// ListInstanceSizes lists available instance sizes for service, worker, and job components.
+func (s *AppsServiceOp) ListInstanceSizes(ctx context.Context) ([]*AppInstanceSize, *Response, error) {
+ path := fmt.Sprintf("%s/tiers/instance_sizes", appsBasePath)
+ req, err := s.client.NewRequest(ctx, http.MethodGet, path, nil)
+ if err != nil {
+ return nil, nil, err
+ }
+ root := new(instanceSizesRoot)
+ resp, err := s.client.Do(ctx, req, root)
+ if err != nil {
+ return nil, resp, err
+ }
+ return root.InstanceSizes, resp, nil
+}
+
+// GetInstanceSize retreives information about a specific instance size for service, worker, and job components.
+func (s *AppsServiceOp) GetInstanceSize(ctx context.Context, slug string) (*AppInstanceSize, *Response, error) {
+ path := fmt.Sprintf("%s/tiers/instance_sizes/%s", appsBasePath, slug)
+ req, err := s.client.NewRequest(ctx, http.MethodGet, path, nil)
+ if err != nil {
+ return nil, nil, err
+ }
+ root := new(instanceSizeRoot)
+ resp, err := s.client.Do(ctx, req, root)
+ if err != nil {
+ return nil, resp, err
+ }
+ return root.InstanceSize, resp, nil
+}
diff --git a/vendor/github.com/digitalocean/godo/balance.go b/vendor/github.com/digitalocean/godo/balance.go
new file mode 100644
index 00000000..4da69783
--- /dev/null
+++ b/vendor/github.com/digitalocean/godo/balance.go
@@ -0,0 +1,52 @@
+package godo
+
+import (
+ "context"
+ "net/http"
+ "time"
+)
+
+// BalanceService is an interface for interfacing with the Balance
+// endpoints of the DigitalOcean API
+// See: https://developers.digitalocean.com/documentation/v2/#balance
+type BalanceService interface {
+ Get(context.Context) (*Balance, *Response, error)
+}
+
+// BalanceServiceOp handles communication with the Balance related methods of
+// the DigitalOcean API.
+type BalanceServiceOp struct {
+ client *Client
+}
+
+var _ BalanceService = &BalanceServiceOp{}
+
+// Balance represents a DigitalOcean Balance
+type Balance struct {
+ MonthToDateBalance string `json:"month_to_date_balance"`
+ AccountBalance string `json:"account_balance"`
+ MonthToDateUsage string `json:"month_to_date_usage"`
+ GeneratedAt time.Time `json:"generated_at"`
+}
+
+func (r Balance) String() string {
+ return Stringify(r)
+}
+
+// Get DigitalOcean balance info
+func (s *BalanceServiceOp) Get(ctx context.Context) (*Balance, *Response, error) {
+ path := "v2/customers/my/balance"
+
+ req, err := s.client.NewRequest(ctx, http.MethodGet, path, nil)
+ if err != nil {
+ return nil, nil, err
+ }
+
+ root := new(Balance)
+ resp, err := s.client.Do(ctx, req, root)
+ if err != nil {
+ return nil, resp, err
+ }
+
+ return root, resp, err
+}
diff --git a/vendor/github.com/digitalocean/godo/billing_history.go b/vendor/github.com/digitalocean/godo/billing_history.go
new file mode 100644
index 00000000..a5101000
--- /dev/null
+++ b/vendor/github.com/digitalocean/godo/billing_history.go
@@ -0,0 +1,72 @@
+package godo
+
+import (
+ "context"
+ "net/http"
+ "time"
+)
+
+const billingHistoryBasePath = "v2/customers/my/billing_history"
+
+// BillingHistoryService is an interface for interfacing with the BillingHistory
+// endpoints of the DigitalOcean API
+// See: https://developers.digitalocean.com/documentation/v2/#billing_history
+type BillingHistoryService interface {
+ List(context.Context, *ListOptions) (*BillingHistory, *Response, error)
+}
+
+// BillingHistoryServiceOp handles communication with the BillingHistory related methods of
+// the DigitalOcean API.
+type BillingHistoryServiceOp struct {
+ client *Client
+}
+
+var _ BillingHistoryService = &BillingHistoryServiceOp{}
+
+// BillingHistory represents a DigitalOcean Billing History
+type BillingHistory struct {
+ BillingHistory []BillingHistoryEntry `json:"billing_history"`
+ Links *Links `json:"links"`
+ Meta *Meta `json:"meta"`
+}
+
+// BillingHistoryEntry represents an entry in a customer's Billing History
+type BillingHistoryEntry struct {
+ Description string `json:"description"`
+ Amount string `json:"amount"`
+ InvoiceID *string `json:"invoice_id"`
+ InvoiceUUID *string `json:"invoice_uuid"`
+ Date time.Time `json:"date"`
+ Type string `json:"type"`
+}
+
+func (b BillingHistory) String() string {
+ return Stringify(b)
+}
+
+// List the Billing History for a customer
+func (s *BillingHistoryServiceOp) List(ctx context.Context, opt *ListOptions) (*BillingHistory, *Response, error) {
+ path, err := addOptions(billingHistoryBasePath, opt)
+ if err != nil {
+ return nil, nil, err
+ }
+
+ req, err := s.client.NewRequest(ctx, http.MethodGet, path, nil)
+ if err != nil {
+ return nil, nil, err
+ }
+
+ root := new(BillingHistory)
+ resp, err := s.client.Do(ctx, req, root)
+ if err != nil {
+ return nil, resp, err
+ }
+ if l := root.Links; l != nil {
+ resp.Links = l
+ }
+ if m := root.Meta; m != nil {
+ resp.Meta = m
+ }
+
+ return root, resp, err
+}
diff --git a/vendor/github.com/digitalocean/godo/cdn.go b/vendor/github.com/digitalocean/godo/cdn.go
index 2e8f475a..4c97d117 100644
--- a/vendor/github.com/digitalocean/godo/cdn.go
+++ b/vendor/github.com/digitalocean/godo/cdn.go
@@ -47,6 +47,7 @@ type cdnRoot struct {
type cdnsRoot struct {
Endpoints []CDN `json:"endpoints"`
Links *Links `json:"links"`
+ Meta *Meta `json:"meta"`
}
// CDNCreateRequest represents a request to create a CDN.
@@ -93,6 +94,9 @@ func (c CDNServiceOp) List(ctx context.Context, opt *ListOptions) ([]CDN, *Respo
if l := root.Links; l != nil {
resp.Links = l
}
+ if m := root.Meta; m != nil {
+ resp.Meta = m
+ }
return root.Endpoints, resp, err
}
diff --git a/vendor/github.com/digitalocean/godo/certificates.go b/vendor/github.com/digitalocean/godo/certificates.go
index cbc3e16a..9a6bdb2d 100644
--- a/vendor/github.com/digitalocean/godo/certificates.go
+++ b/vendor/github.com/digitalocean/godo/certificates.go
@@ -46,6 +46,7 @@ type certificateRoot struct {
type certificatesRoot struct {
Certificates []Certificate `json:"certificates"`
Links *Links `json:"links"`
+ Meta *Meta `json:"meta"`
}
// CertificatesServiceOp handles communication with certificates methods of the DigitalOcean API.
@@ -93,6 +94,9 @@ func (c *CertificatesServiceOp) List(ctx context.Context, opt *ListOptions) ([]C
if l := root.Links; l != nil {
resp.Links = l
}
+ if m := root.Meta; m != nil {
+ resp.Meta = m
+ }
return root.Certificates, resp, nil
}
diff --git a/vendor/github.com/digitalocean/godo/databases.go b/vendor/github.com/digitalocean/godo/databases.go
index 8887fd0b..5d90d37d 100644
--- a/vendor/github.com/digitalocean/godo/databases.go
+++ b/vendor/github.com/digitalocean/godo/databases.go
@@ -4,29 +4,89 @@ import (
"context"
"fmt"
"net/http"
+ "strings"
"time"
)
const (
- databaseBasePath = "/v2/databases"
- databaseSinglePath = databaseBasePath + "/%s"
- databaseResizePath = databaseBasePath + "/%s/resize"
- databaseMigratePath = databaseBasePath + "/%s/migrate"
- databaseMaintenancePath = databaseBasePath + "/%s/maintenance"
- databaseBackupsPath = databaseBasePath + "/%s/backups"
- databaseUsersPath = databaseBasePath + "/%s/users"
- databaseUserPath = databaseBasePath + "/%s/users/%s"
- databaseDBPath = databaseBasePath + "/%s/dbs/%s"
- databaseDBsPath = databaseBasePath + "/%s/dbs"
- databasePoolPath = databaseBasePath + "/%s/pools/%s"
- databasePoolsPath = databaseBasePath + "/%s/pools"
- databaseReplicaPath = databaseBasePath + "/%s/replicas/%s"
- databaseReplicasPath = databaseBasePath + "/%s/replicas"
- evictionPolicyPath = databaseBasePath + "/%s/eviction_policy"
+ databaseBasePath = "/v2/databases"
+ databaseSinglePath = databaseBasePath + "/%s"
+ databaseResizePath = databaseBasePath + "/%s/resize"
+ databaseMigratePath = databaseBasePath + "/%s/migrate"
+ databaseMaintenancePath = databaseBasePath + "/%s/maintenance"
+ databaseBackupsPath = databaseBasePath + "/%s/backups"
+ databaseUsersPath = databaseBasePath + "/%s/users"
+ databaseUserPath = databaseBasePath + "/%s/users/%s"
+ databaseResetUserAuthPath = databaseUserPath + "/reset_auth"
+ databaseDBPath = databaseBasePath + "/%s/dbs/%s"
+ databaseDBsPath = databaseBasePath + "/%s/dbs"
+ databasePoolPath = databaseBasePath + "/%s/pools/%s"
+ databasePoolsPath = databaseBasePath + "/%s/pools"
+ databaseReplicaPath = databaseBasePath + "/%s/replicas/%s"
+ databaseReplicasPath = databaseBasePath + "/%s/replicas"
+ databaseEvictionPolicyPath = databaseBasePath + "/%s/eviction_policy"
+ databaseSQLModePath = databaseBasePath + "/%s/sql_mode"
+ databaseFirewallRulesPath = databaseBasePath + "/%s/firewall"
)
-// DatabasesService is an interface for interfacing with the databases endpoints
-// of the DigitalOcean API.
+// SQL Mode constants allow for MySQL-specific SQL flavor configuration.
+const (
+ SQLModeAllowInvalidDates = "ALLOW_INVALID_DATES"
+ SQLModeANSIQuotes = "ANSI_QUOTES"
+ SQLModeHighNotPrecedence = "HIGH_NOT_PRECEDENCE"
+ SQLModeIgnoreSpace = "IGNORE_SPACE"
+ SQLModeNoAuthCreateUser = "NO_AUTO_CREATE_USER"
+ SQLModeNoAutoValueOnZero = "NO_AUTO_VALUE_ON_ZERO"
+ SQLModeNoBackslashEscapes = "NO_BACKSLASH_ESCAPES"
+ SQLModeNoDirInCreate = "NO_DIR_IN_CREATE"
+ SQLModeNoEngineSubstitution = "NO_ENGINE_SUBSTITUTION"
+ SQLModeNoFieldOptions = "NO_FIELD_OPTIONS"
+ SQLModeNoKeyOptions = "NO_KEY_OPTIONS"
+ SQLModeNoTableOptions = "NO_TABLE_OPTIONS"
+ SQLModeNoUnsignedSubtraction = "NO_UNSIGNED_SUBTRACTION"
+ SQLModeNoZeroDate = "NO_ZERO_DATE"
+ SQLModeNoZeroInDate = "NO_ZERO_IN_DATE"
+ SQLModeOnlyFullGroupBy = "ONLY_FULL_GROUP_BY"
+ SQLModePadCharToFullLength = "PAD_CHAR_TO_FULL_LENGTH"
+ SQLModePipesAsConcat = "PIPES_AS_CONCAT"
+ SQLModeRealAsFloat = "REAL_AS_FLOAT"
+ SQLModeStrictAllTables = "STRICT_ALL_TABLES"
+ SQLModeStrictTransTables = "STRICT_TRANS_TABLES"
+ SQLModeANSI = "ANSI"
+ SQLModeDB2 = "DB2"
+ SQLModeMaxDB = "MAXDB"
+ SQLModeMSSQL = "MSSQL"
+ SQLModeMYSQL323 = "MYSQL323"
+ SQLModeMYSQL40 = "MYSQL40"
+ SQLModeOracle = "ORACLE"
+ SQLModePostgreSQL = "POSTGRESQL"
+ SQLModeTraditional = "TRADITIONAL"
+)
+
+// SQL Auth constants allow for MySQL-specific user auth plugins
+const (
+ SQLAuthPluginNative = "mysql_native_password"
+ SQLAuthPluginCachingSHA2 = "caching_sha2_password"
+)
+
+// Redis eviction policies supported by the managed Redis product.
+const (
+ EvictionPolicyNoEviction = "noeviction"
+ EvictionPolicyAllKeysLRU = "allkeys_lru"
+ EvictionPolicyAllKeysRandom = "allkeys_random"
+ EvictionPolicyVolatileLRU = "volatile_lru"
+ EvictionPolicyVolatileRandom = "volatile_random"
+ EvictionPolicyVolatileTTL = "volatile_ttl"
+)
+
+// The DatabasesService provides access to the DigitalOcean managed database
+// suite of products through the public API. Customers can create new database
+// clusters, migrate them between regions, create replicas and interact with
+// their configurations. Each database service is referred to as a Database. A
+// SQL database service can have multiple databases residing in the system. To
+// help make these entities distinct from Databases in godo, we refer to them
+// here as DatabaseDBs.
+//
// See: https://developers.digitalocean.com/documentation/v2#databases
type DatabasesService interface {
List(context.Context, *ListOptions) ([]Database, *Response, error)
@@ -41,6 +101,7 @@ type DatabasesService interface {
ListUsers(context.Context, string, *ListOptions) ([]DatabaseUser, *Response, error)
CreateUser(context.Context, string, *DatabaseCreateUserRequest) (*DatabaseUser, *Response, error)
DeleteUser(context.Context, string, string) (*Response, error)
+ ResetUserAuth(context.Context, string, string, *DatabaseResetUserAuthRequest) (*DatabaseUser, *Response, error)
ListDBs(context.Context, string, *ListOptions) ([]DatabaseDB, *Response, error)
CreateDB(context.Context, string, *DatabaseCreateDBRequest) (*DatabaseDB, *Response, error)
GetDB(context.Context, string, string) (*DatabaseDB, *Response, error)
@@ -55,6 +116,10 @@ type DatabasesService interface {
DeleteReplica(context.Context, string, string) (*Response, error)
GetEvictionPolicy(context.Context, string) (string, *Response, error)
SetEvictionPolicy(context.Context, string, string) (*Response, error)
+ GetSQLMode(context.Context, string) (string, *Response, error)
+ SetSQLMode(context.Context, string, ...string) (*Response, error)
+ GetFirewallRules(context.Context, string) ([]DatabaseFirewallRule, *Response, error)
+ UpdateFirewallRules(context.Context, string, *DatabaseUpdateFirewallRulesRequest) (*Response, error)
}
// DatabasesServiceOp handles communication with the Databases related methods
@@ -86,6 +151,7 @@ type Database struct {
MaintenanceWindow *DatabaseMaintenanceWindow `json:"maintenance_window,omitempty"`
CreatedAt time.Time `json:"created_at,omitempty"`
PrivateNetworkUUID string `json:"private_network_uuid,omitempty"`
+ Tags []string `json:"tags,omitempty"`
}
// DatabaseConnection represents a database connection
@@ -101,9 +167,15 @@ type DatabaseConnection struct {
// DatabaseUser represents a user in the database
type DatabaseUser struct {
- Name string `json:"name,omitempty"`
- Role string `json:"role,omitempty"`
- Password string `json:"password,omitempty"`
+ Name string `json:"name,omitempty"`
+ Role string `json:"role,omitempty"`
+ Password string `json:"password,omitempty"`
+ MySQLSettings *DatabaseMySQLUserSettings `json:"mysql_settings,omitempty"`
+}
+
+// DatabaseMySQLUserSettings contains MySQL-specific user settings
+type DatabaseMySQLUserSettings struct {
+ AuthPlugin string `json:"auth_plugin"`
}
// DatabaseMaintenanceWindow represents the maintenance_window of a database
@@ -123,13 +195,14 @@ type DatabaseBackup struct {
// DatabaseCreateRequest represents a request to create a database cluster
type DatabaseCreateRequest struct {
- Name string `json:"name,omitempty"`
- EngineSlug string `json:"engine,omitempty"`
- Version string `json:"version,omitempty"`
- SizeSlug string `json:"size,omitempty"`
- Region string `json:"region,omitempty"`
- NumNodes int `json:"num_nodes,omitempty"`
- PrivateNetworkUUID string `json:"private_network_uuid"`
+ Name string `json:"name,omitempty"`
+ EngineSlug string `json:"engine,omitempty"`
+ Version string `json:"version,omitempty"`
+ SizeSlug string `json:"size,omitempty"`
+ Region string `json:"region,omitempty"`
+ NumNodes int `json:"num_nodes,omitempty"`
+ PrivateNetworkUUID string `json:"private_network_uuid"`
+ Tags []string `json:"tags,omitempty"`
}
// DatabaseResizeRequest can be used to initiate a database resize operation.
@@ -167,6 +240,7 @@ type DatabaseReplica struct {
Status string `json:"status"`
CreatedAt time.Time `json:"created_at"`
PrivateNetworkUUID string `json:"private_network_uuid,omitempty"`
+ Tags []string `json:"tags,omitempty"`
}
// DatabasePool represents a database connection pool
@@ -191,7 +265,13 @@ type DatabaseCreatePoolRequest struct {
// DatabaseCreateUserRequest is used to create a new database user
type DatabaseCreateUserRequest struct {
- Name string `json:"name"`
+ Name string `json:"name"`
+ MySQLSettings *DatabaseMySQLUserSettings `json:"mysql_settings,omitempty"`
+}
+
+// DatabaseResetUserAuthRequest is used to reset a users DB auth
+type DatabaseResetUserAuthRequest struct {
+ MySQLSettings *DatabaseMySQLUserSettings `json:"mysql_settings,omitempty"`
}
// DatabaseCreateDBRequest is used to create a new engine-specific database within the cluster
@@ -201,10 +281,25 @@ type DatabaseCreateDBRequest struct {
// DatabaseCreateReplicaRequest is used to create a new read-only replica
type DatabaseCreateReplicaRequest struct {
- Name string `json:"name"`
- Region string `json:"region"`
- Size string `json:"size"`
- PrivateNetworkUUID string `json:"private_network_uuid"`
+ Name string `json:"name"`
+ Region string `json:"region"`
+ Size string `json:"size"`
+ PrivateNetworkUUID string `json:"private_network_uuid"`
+ Tags []string `json:"tags,omitempty"`
+}
+
+// DatabaseUpdateFirewallRulesRequest is used to set the firewall rules for a database
+type DatabaseUpdateFirewallRulesRequest struct {
+ Rules []*DatabaseFirewallRule `json:"rules"`
+}
+
+// DatabaseFirewallRule is a rule describing an inbound source to a database
+type DatabaseFirewallRule struct {
+ UUID string `json:"uuid"`
+ ClusterUUID string `json:"cluster_uuid"`
+ Type string `json:"type"`
+ Value string `json:"value"`
+ CreatedAt time.Time `json:"created_at"`
}
type databaseUserRoot struct {
@@ -255,6 +350,15 @@ type evictionPolicyRoot struct {
EvictionPolicy string `json:"eviction_policy"`
}
+type sqlModeRoot struct {
+ SQLMode string `json:"sql_mode"`
+}
+
+type databaseFirewallRuleRoot struct {
+ Rules []DatabaseFirewallRule `json:"rules"`
+}
+
+// URN returns a URN identifier for the database
func (d Database) URN() string {
return ToURN("dbaas", d.ID)
}
@@ -433,6 +537,21 @@ func (svc *DatabasesServiceOp) CreateUser(ctx context.Context, databaseID string
return root.User, resp, nil
}
+// ResetUserAuth will reset user authentication
+func (svc *DatabasesServiceOp) ResetUserAuth(ctx context.Context, databaseID, userID string, resetAuth *DatabaseResetUserAuthRequest) (*DatabaseUser, *Response, error) {
+ path := fmt.Sprintf(databaseResetUserAuthPath, databaseID, userID)
+ req, err := svc.client.NewRequest(ctx, http.MethodPost, path, resetAuth)
+ if err != nil {
+ return nil, nil, err
+ }
+ root := new(databaseUserRoot)
+ resp, err := svc.client.Do(ctx, req, root)
+ if err != nil {
+ return nil, resp, err
+ }
+ return root.User, resp, nil
+}
+
// DeleteUser will delete an existing database user
func (svc *DatabasesServiceOp) DeleteUser(ctx context.Context, databaseID, userID string) (*Response, error) {
path := fmt.Sprintf(databaseUserPath, databaseID, userID)
@@ -638,7 +757,7 @@ func (svc *DatabasesServiceOp) DeleteReplica(ctx context.Context, databaseID, na
// GetEvictionPolicy loads the eviction policy for a given Redis cluster.
func (svc *DatabasesServiceOp) GetEvictionPolicy(ctx context.Context, databaseID string) (string, *Response, error) {
- path := fmt.Sprintf(evictionPolicyPath, databaseID)
+ path := fmt.Sprintf(databaseEvictionPolicyPath, databaseID)
req, err := svc.client.NewRequest(ctx, http.MethodGet, path, nil)
if err != nil {
return "", nil, err
@@ -652,8 +771,11 @@ func (svc *DatabasesServiceOp) GetEvictionPolicy(ctx context.Context, databaseID
}
// SetEvictionPolicy updates the eviction policy for a given Redis cluster.
+//
+// The valid eviction policies are documented by the exported string constants
+// with the prefix `EvictionPolicy`.
func (svc *DatabasesServiceOp) SetEvictionPolicy(ctx context.Context, databaseID, policy string) (*Response, error) {
- path := fmt.Sprintf(evictionPolicyPath, databaseID)
+ path := fmt.Sprintf(databaseEvictionPolicyPath, databaseID)
root := &evictionPolicyRoot{EvictionPolicy: policy}
req, err := svc.client.NewRequest(ctx, http.MethodPut, path, root)
if err != nil {
@@ -665,3 +787,60 @@ func (svc *DatabasesServiceOp) SetEvictionPolicy(ctx context.Context, databaseID
}
return resp, nil
}
+
+// GetSQLMode loads the SQL Mode settings for a given MySQL cluster.
+func (svc *DatabasesServiceOp) GetSQLMode(ctx context.Context, databaseID string) (string, *Response, error) {
+ path := fmt.Sprintf(databaseSQLModePath, databaseID)
+ req, err := svc.client.NewRequest(ctx, http.MethodGet, path, nil)
+ if err != nil {
+ return "", nil, err
+ }
+ root := &sqlModeRoot{}
+ resp, err := svc.client.Do(ctx, req, root)
+ if err != nil {
+ return "", resp, err
+ }
+ return root.SQLMode, resp, nil
+}
+
+// SetSQLMode updates the SQL Mode settings for a given MySQL cluster.
+func (svc *DatabasesServiceOp) SetSQLMode(ctx context.Context, databaseID string, sqlModes ...string) (*Response, error) {
+ path := fmt.Sprintf(databaseSQLModePath, databaseID)
+ root := &sqlModeRoot{SQLMode: strings.Join(sqlModes, ",")}
+ req, err := svc.client.NewRequest(ctx, http.MethodPut, path, root)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := svc.client.Do(ctx, req, nil)
+ if err != nil {
+ return resp, err
+ }
+ return resp, nil
+}
+
+// GetFirewallRules loads the inbound sources for a given cluster.
+func (svc *DatabasesServiceOp) GetFirewallRules(ctx context.Context, databaseID string) ([]DatabaseFirewallRule, *Response, error) {
+ path := fmt.Sprintf(databaseFirewallRulesPath, databaseID)
+ root := new(databaseFirewallRuleRoot)
+ req, err := svc.client.NewRequest(ctx, http.MethodGet, path, nil)
+ if err != nil {
+ return nil, nil, err
+ }
+
+ resp, err := svc.client.Do(ctx, req, root)
+ if err != nil {
+ return nil, resp, err
+ }
+
+ return root.Rules, resp, nil
+}
+
+// UpdateFirewallRules sets the inbound sources for a given cluster.
+func (svc *DatabasesServiceOp) UpdateFirewallRules(ctx context.Context, databaseID string, firewallRulesReq *DatabaseUpdateFirewallRulesRequest) (*Response, error) {
+ path := fmt.Sprintf(databaseFirewallRulesPath, databaseID)
+ req, err := svc.client.NewRequest(ctx, http.MethodPut, path, firewallRulesReq)
+ if err != nil {
+ return nil, err
+ }
+ return svc.client.Do(ctx, req, nil)
+}
diff --git a/vendor/github.com/digitalocean/godo/doc.go b/vendor/github.com/digitalocean/godo/doc.go
index e22f6933..ac812e97 100644
--- a/vendor/github.com/digitalocean/godo/doc.go
+++ b/vendor/github.com/digitalocean/godo/doc.go
@@ -1,11 +1,2 @@
-// Package godo is the DigtalOcean API v2 client for Go
-//
-// Databases
-//
-// The Databases service provides access to the DigitalOcean managed database
-// suite of products. Customers can create new database clusters, migrate them
-// between regions, create replicas and interact with their configurations.
-// Each database service is refered to as a Database. A SQL database service
-// can have multiple databases residing in the system. To help make these
-// entities distinct from Databases in godo, we refer to them here as DatabaseDBs.
+// Package godo is the DigtalOcean API v2 client for Go.
package godo
diff --git a/vendor/github.com/digitalocean/godo/domains.go b/vendor/github.com/digitalocean/godo/domains.go
index 1014e9b9..835509fc 100644
--- a/vendor/github.com/digitalocean/godo/domains.go
+++ b/vendor/github.com/digitalocean/godo/domains.go
@@ -18,6 +18,9 @@ type DomainsService interface {
Delete(context.Context, string) (*Response, error)
Records(context.Context, string, *ListOptions) ([]DomainRecord, *Response, error)
+ RecordsByType(context.Context, string, string, *ListOptions) ([]DomainRecord, *Response, error)
+ RecordsByName(context.Context, string, string, *ListOptions) ([]DomainRecord, *Response, error)
+ RecordsByTypeAndName(context.Context, string, string, string, *ListOptions) ([]DomainRecord, *Response, error)
Record(context.Context, string, int) (*DomainRecord, *Response, error)
DeleteRecord(context.Context, string, int) (*Response, error)
EditRecord(context.Context, string, int, *DomainRecordEditRequest) (*DomainRecord, *Response, error)
@@ -47,6 +50,7 @@ type domainRoot struct {
type domainsRoot struct {
Domains []Domain `json:"domains"`
Links *Links `json:"links"`
+ Meta *Meta `json:"meta"`
}
// DomainCreateRequest respresents a request to create a domain.
@@ -73,7 +77,7 @@ type DomainRecord struct {
Name string `json:"name,omitempty"`
Data string `json:"data,omitempty"`
Priority int `json:"priority"`
- Port int `json:"port,omitempty"`
+ Port int `json:"port"`
TTL int `json:"ttl,omitempty"`
Weight int `json:"weight"`
Flags int `json:"flags"`
@@ -86,7 +90,7 @@ type DomainRecordEditRequest struct {
Name string `json:"name,omitempty"`
Data string `json:"data,omitempty"`
Priority int `json:"priority"`
- Port int `json:"port,omitempty"`
+ Port int `json:"port"`
TTL int `json:"ttl,omitempty"`
Weight int `json:"weight"`
Flags int `json:"flags"`
@@ -97,6 +101,7 @@ func (d Domain) String() string {
return Stringify(d)
}
+// URN returns the domain name in a valid DO API URN form.
func (d Domain) URN() string {
return ToURN("Domain", d.Name)
}
@@ -122,6 +127,9 @@ func (s DomainsServiceOp) List(ctx context.Context, opt *ListOptions) ([]Domain,
if l := root.Links; l != nil {
resp.Links = l
}
+ if m := root.Meta; m != nil {
+ resp.Meta = m
+ }
return root.Domains, resp, err
}
@@ -197,7 +205,7 @@ func (d DomainRecordEditRequest) String() string {
return Stringify(d)
}
-// Records returns a slice of DomainRecords for a domain
+// Records returns a slice of DomainRecord for a domain.
func (s *DomainsServiceOp) Records(ctx context.Context, domain string, opt *ListOptions) ([]DomainRecord, *Response, error) {
if len(domain) < 1 {
return nil, nil, NewArgError("domain", "cannot be an empty string")
@@ -209,21 +217,68 @@ func (s *DomainsServiceOp) Records(ctx context.Context, domain string, opt *List
return nil, nil, err
}
- req, err := s.client.NewRequest(ctx, http.MethodGet, path, nil)
+ return s.records(ctx, path)
+}
+
+// RecordsByType returns a slice of DomainRecord for a domain matched by record type.
+func (s *DomainsServiceOp) RecordsByType(ctx context.Context, domain, ofType string, opt *ListOptions) ([]DomainRecord, *Response, error) {
+ if len(domain) < 1 {
+ return nil, nil, NewArgError("domain", "cannot be an empty string")
+ }
+
+ if len(ofType) < 1 {
+ return nil, nil, NewArgError("type", "cannot be an empty string")
+ }
+
+ path := fmt.Sprintf("%s/%s/records?type=%s", domainsBasePath, domain, ofType)
+ path, err := addOptions(path, opt)
if err != nil {
return nil, nil, err
}
- root := new(domainRecordsRoot)
- resp, err := s.client.Do(ctx, req, root)
+ return s.records(ctx, path)
+}
+
+// RecordsByName returns a slice of DomainRecord for a domain matched by record name.
+func (s *DomainsServiceOp) RecordsByName(ctx context.Context, domain, name string, opt *ListOptions) ([]DomainRecord, *Response, error) {
+ if len(domain) < 1 {
+ return nil, nil, NewArgError("domain", "cannot be an empty string")
+ }
+
+ if len(name) < 1 {
+ return nil, nil, NewArgError("name", "cannot be an empty string")
+ }
+
+ path := fmt.Sprintf("%s/%s/records?name=%s", domainsBasePath, domain, name)
+ path, err := addOptions(path, opt)
if err != nil {
- return nil, resp, err
+ return nil, nil, err
}
- if l := root.Links; l != nil {
- resp.Links = l
+
+ return s.records(ctx, path)
+}
+
+// RecordsByTypeAndName returns a slice of DomainRecord for a domain matched by record type and name.
+func (s *DomainsServiceOp) RecordsByTypeAndName(ctx context.Context, domain, ofType, name string, opt *ListOptions) ([]DomainRecord, *Response, error) {
+ if len(domain) < 1 {
+ return nil, nil, NewArgError("domain", "cannot be an empty string")
}
- return root.DomainRecords, resp, err
+ if len(ofType) < 1 {
+ return nil, nil, NewArgError("type", "cannot be an empty string")
+ }
+
+ if len(name) < 1 {
+ return nil, nil, NewArgError("name", "cannot be an empty string")
+ }
+
+ path := fmt.Sprintf("%s/%s/records?type=%s&name=%s", domainsBasePath, domain, ofType, name)
+ path, err := addOptions(path, opt)
+ if err != nil {
+ return nil, nil, err
+ }
+
+ return s.records(ctx, path)
}
// Record returns the record id from a domain
@@ -335,3 +390,22 @@ func (s *DomainsServiceOp) CreateRecord(ctx context.Context,
return d.DomainRecord, resp, err
}
+
+// Performs a domain records request given a path.
+func (s *DomainsServiceOp) records(ctx context.Context, path string) ([]DomainRecord, *Response, error) {
+ req, err := s.client.NewRequest(ctx, http.MethodGet, path, nil)
+ if err != nil {
+ return nil, nil, err
+ }
+
+ root := new(domainRecordsRoot)
+ resp, err := s.client.Do(ctx, req, root)
+ if err != nil {
+ return nil, resp, err
+ }
+ if l := root.Links; l != nil {
+ resp.Links = l
+ }
+
+ return root.DomainRecords, resp, err
+}
diff --git a/vendor/github.com/digitalocean/godo/droplets.go b/vendor/github.com/digitalocean/godo/droplets.go
index 06d4debf..d08a905f 100644
--- a/vendor/github.com/digitalocean/godo/droplets.go
+++ b/vendor/github.com/digitalocean/godo/droplets.go
@@ -126,6 +126,7 @@ func (d Droplet) String() string {
return Stringify(d)
}
+// URN returns the droplet ID in a valid DO API URN form.
func (d Droplet) URN() string {
return ToURN("Droplet", d.ID)
}
@@ -139,21 +140,25 @@ type dropletRoot struct {
type dropletsRoot struct {
Droplets []Droplet `json:"droplets"`
Links *Links `json:"links"`
+ Meta *Meta `json:"meta"`
}
type kernelsRoot struct {
Kernels []Kernel `json:"kernels,omitempty"`
Links *Links `json:"links"`
+ Meta *Meta `json:"meta"`
}
type dropletSnapshotsRoot struct {
Snapshots []Image `json:"snapshots,omitempty"`
Links *Links `json:"links"`
+ Meta *Meta `json:"meta"`
}
type backupsRoot struct {
Backups []Image `json:"backups,omitempty"`
Links *Links `json:"links"`
+ Meta *Meta `json:"meta"`
}
// DropletCreateImage identifies an image for the create request. It prefers slug over ID.
@@ -295,6 +300,9 @@ func (s *DropletsServiceOp) list(ctx context.Context, path string) ([]Droplet, *
if l := root.Links; l != nil {
resp.Links = l
}
+ if m := root.Meta; m != nil {
+ resp.Meta = m
+ }
return root.Droplets, resp, err
}
@@ -449,6 +457,9 @@ func (s *DropletsServiceOp) Kernels(ctx context.Context, dropletID int, opt *Lis
if l := root.Links; l != nil {
resp.Links = l
}
+ if m := root.Meta; m != nil {
+ resp.Meta = m
+ }
return root.Kernels, resp, err
}
@@ -478,6 +489,9 @@ func (s *DropletsServiceOp) Actions(ctx context.Context, dropletID int, opt *Lis
if l := root.Links; l != nil {
resp.Links = l
}
+ if m := root.Meta; m != nil {
+ resp.Meta = m
+ }
return root.Actions, resp, err
}
@@ -507,6 +521,9 @@ func (s *DropletsServiceOp) Backups(ctx context.Context, dropletID int, opt *Lis
if l := root.Links; l != nil {
resp.Links = l
}
+ if m := root.Meta; m != nil {
+ resp.Meta = m
+ }
return root.Backups, resp, err
}
@@ -536,6 +553,9 @@ func (s *DropletsServiceOp) Snapshots(ctx context.Context, dropletID int, opt *L
if l := root.Links; l != nil {
resp.Links = l
}
+ if m := root.Meta; m != nil {
+ resp.Meta = m
+ }
return root.Snapshots, resp, err
}
diff --git a/vendor/github.com/digitalocean/godo/firewalls.go b/vendor/github.com/digitalocean/godo/firewalls.go
index 316b394a..0fb297b0 100644
--- a/vendor/github.com/digitalocean/godo/firewalls.go
+++ b/vendor/github.com/digitalocean/godo/firewalls.go
@@ -49,6 +49,7 @@ func (fw Firewall) String() string {
return Stringify(fw)
}
+// URN returns the firewall name in a valid DO API URN form.
func (fw Firewall) URN() string {
return ToURN("Firewall", fw.ID)
}
@@ -237,6 +238,7 @@ type firewallRoot struct {
type firewallsRoot struct {
Firewalls []Firewall `json:"firewalls"`
Links *Links `json:"links"`
+ Meta *Meta `json:"meta"`
}
func (fw *FirewallsServiceOp) createAndDoReq(ctx context.Context, method, path string, v interface{}) (*Response, error) {
@@ -262,6 +264,9 @@ func (fw *FirewallsServiceOp) listHelper(ctx context.Context, path string) ([]Fi
if l := root.Links; l != nil {
resp.Links = l
}
+ if m := root.Meta; m != nil {
+ resp.Meta = m
+ }
return root.Firewalls, resp, err
}
diff --git a/vendor/github.com/digitalocean/godo/floating_ips.go b/vendor/github.com/digitalocean/godo/floating_ips.go
index 4545e903..2de812ac 100644
--- a/vendor/github.com/digitalocean/godo/floating_ips.go
+++ b/vendor/github.com/digitalocean/godo/floating_ips.go
@@ -37,6 +37,7 @@ func (f FloatingIP) String() string {
return Stringify(f)
}
+// URN returns the floating IP in a valid DO API URN form.
func (f FloatingIP) URN() string {
return ToURN("FloatingIP", f.IP)
}
@@ -44,6 +45,7 @@ func (f FloatingIP) URN() string {
type floatingIPsRoot struct {
FloatingIPs []FloatingIP `json:"floating_ips"`
Links *Links `json:"links"`
+ Meta *Meta `json:"meta"`
}
type floatingIPRoot struct {
@@ -80,6 +82,9 @@ func (f *FloatingIPsServiceOp) List(ctx context.Context, opt *ListOptions) ([]Fl
if l := root.Links; l != nil {
resp.Links = l
}
+ if m := root.Meta; m != nil {
+ resp.Meta = m
+ }
return root.FloatingIPs, resp, err
}
diff --git a/vendor/github.com/digitalocean/godo/go.mod b/vendor/github.com/digitalocean/godo/go.mod
index aa30ea76..36753b19 100644
--- a/vendor/github.com/digitalocean/godo/go.mod
+++ b/vendor/github.com/digitalocean/godo/go.mod
@@ -1,9 +1,16 @@
module github.com/digitalocean/godo
-go 1.12
+go 1.14
require (
+ github.com/golang/protobuf v1.3.5 // indirect
github.com/google/go-querystring v1.0.0
- github.com/stretchr/testify v1.3.0
- golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a
+ github.com/stretchr/testify v1.4.0
+ golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e // indirect
+ golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d
+ google.golang.org/appengine v1.6.5 // indirect
)
+
+replace github.com/stretchr/objx => github.com/stretchr/objx v0.2.0
+
+replace golang.org/x/crypto => golang.org/x/crypto v0.0.0-20200420201142-3c4aac89819a
diff --git a/vendor/github.com/digitalocean/godo/go.sum b/vendor/github.com/digitalocean/godo/go.sum
index 2cac8a44..96790107 100644
--- a/vendor/github.com/digitalocean/godo/go.sum
+++ b/vendor/github.com/digitalocean/godo/go.sum
@@ -1,19 +1,43 @@
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM=
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.3.5 h1:F768QJ1E9tib+q5Sc8MkdJi1RxLTbRcTf8LJV56aRls=
+github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk=
github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk=
github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q=
+github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
+github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
+golang.org/x/crypto v0.0.0-20200420201142-3c4aac89819a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e h1:bRhVy7zSSasaqNksaRZiA5EEI+Ei4I1nO5Jh72wfHlg=
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a h1:tImsplftrFpALCYumobsd0K86vlAs/eXGFms2txfJfA=
-golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
+golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e h1:3G+cUijn7XD+S4eJFddp53Pv7+slrESplyjG25HgL+k=
+golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d h1:TzXSXBo42m9gQenoE3b9BGiEpg5IG2JkU5FkPIawgtw=
+golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
+golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
+google.golang.org/appengine v1.6.5 h1:tycE03LOZYQNhDpS27tcQdAzLCVMaj7QT2SXxebnpCM=
+google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
+gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
diff --git a/vendor/github.com/digitalocean/godo/godo.go b/vendor/github.com/digitalocean/godo/godo.go
index b813f9c7..67b67011 100644
--- a/vendor/github.com/digitalocean/godo/godo.go
+++ b/vendor/github.com/digitalocean/godo/godo.go
@@ -11,13 +11,15 @@ import (
"net/url"
"reflect"
"strconv"
+ "sync"
"time"
"github.com/google/go-querystring/query"
+ "golang.org/x/oauth2"
)
const (
- libraryVersion = "1.19.0"
+ libraryVersion = "1.54.0"
defaultBaseURL = "https://api.digitalocean.com/"
userAgent = "godo/" + libraryVersion
mediaType = "application/json"
@@ -39,18 +41,23 @@ type Client struct {
UserAgent string
// Rate contains the current rate limit for the client as determined by the most recent
- // API call.
- Rate Rate
+ // API call. It is not thread-safe. Please consider using GetRate() instead.
+ Rate Rate
+ ratemtx sync.Mutex
// Services used for communicating with the API
Account AccountService
Actions ActionsService
+ Apps AppsService
+ Balance BalanceService
+ BillingHistory BillingHistoryService
CDNs CDNService
Domains DomainsService
Droplets DropletsService
DropletActions DropletActionsService
Images ImagesService
ImageActions ImageActionsService
+ Invoices InvoicesService
Keys KeysService
Regions RegionsService
Sizes SizesService
@@ -65,8 +72,10 @@ type Client struct {
Firewalls FirewallsService
Projects ProjectsService
Kubernetes KubernetesService
+ Registry RegistryService
Databases DatabasesService
VPCs VPCsService
+ OneClick OneClickService
// Optional function called after every successful request made to the DO APIs
onRequestCompleted RequestCompletionCallback
@@ -93,6 +102,9 @@ type Response struct {
// request body and not the header.
Links *Links
+ // Meta describes generic information about the response.
+ Meta *Meta
+
// Monitoring URI
Monitor string
@@ -150,7 +162,20 @@ func addOptions(s string, opt interface{}) (string, error) {
return origURL.String(), nil
}
-// NewClient returns a new DigitalOcean API client.
+// NewFromToken returns a new DigitalOcean API client with the given API
+// token.
+func NewFromToken(token string) *Client {
+ ctx := context.Background()
+ ts := oauth2.StaticTokenSource(&oauth2.Token{AccessToken: token})
+ return NewClient(oauth2.NewClient(ctx, ts))
+}
+
+// NewClient returns a new DigitalOcean API client, using the given
+// http.Client to perform all requests.
+//
+// Users who wish to pass their own http.Client should use this method. If
+// you're in need of further customization, the godo.New method allows more
+// options, such as setting a custom URL or a custom user agent string.
func NewClient(httpClient *http.Client) *Client {
if httpClient == nil {
httpClient = http.DefaultClient
@@ -161,6 +186,9 @@ func NewClient(httpClient *http.Client) *Client {
c := &Client{client: httpClient, BaseURL: baseURL, UserAgent: userAgent}
c.Account = &AccountServiceOp{client: c}
c.Actions = &ActionsServiceOp{client: c}
+ c.Apps = &AppsServiceOp{client: c}
+ c.Balance = &BalanceServiceOp{client: c}
+ c.BillingHistory = &BillingHistoryServiceOp{client: c}
c.CDNs = &CDNServiceOp{client: c}
c.Certificates = &CertificatesServiceOp{client: c}
c.Domains = &DomainsServiceOp{client: c}
@@ -171,6 +199,7 @@ func NewClient(httpClient *http.Client) *Client {
c.FloatingIPActions = &FloatingIPActionsServiceOp{client: c}
c.Images = &ImagesServiceOp{client: c}
c.ImageActions = &ImageActionsServiceOp{client: c}
+ c.Invoices = &InvoicesServiceOp{client: c}
c.Keys = &KeysServiceOp{client: c}
c.LoadBalancers = &LoadBalancersServiceOp{client: c}
c.Projects = &ProjectsServiceOp{client: c}
@@ -181,8 +210,10 @@ func NewClient(httpClient *http.Client) *Client {
c.StorageActions = &StorageActionsServiceOp{client: c}
c.Tags = &TagsServiceOp{client: c}
c.Kubernetes = &KubernetesServiceOp{client: c}
+ c.Registry = &RegistryServiceOp{client: c}
c.Databases = &DatabasesServiceOp{client: c}
c.VPCs = &VPCsServiceOp{client: c}
+ c.OneClick = &OneClickServiceOp{client: c}
return c
}
@@ -190,7 +221,7 @@ func NewClient(httpClient *http.Client) *Client {
// ClientOpt are options for New.
type ClientOpt func(*Client) error
-// New returns a new DIgitalOcean API client instance.
+// New returns a new DigitalOcean API client instance.
func New(httpClient *http.Client, opts ...ClientOpt) (*Client, error) {
c := NewClient(httpClient)
for _, opt := range opts {
@@ -227,13 +258,11 @@ func SetUserAgent(ua string) ClientOpt {
// BaseURL of the Client. Relative URLS should always be specified without a preceding slash. If specified, the
// value pointed to by body is JSON encoded and included in as the request body.
func (c *Client) NewRequest(ctx context.Context, method, urlStr string, body interface{}) (*http.Request, error) {
- rel, err := url.Parse(urlStr)
+ u, err := c.BaseURL.Parse(urlStr)
if err != nil {
return nil, err
}
- u := c.BaseURL.ResolveReference(rel)
-
buf := new(bytes.Buffer)
if body != nil {
err = json.NewEncoder(buf).Encode(body)
@@ -258,6 +287,14 @@ func (c *Client) OnRequestCompleted(rc RequestCompletionCallback) {
c.onRequestCompleted = rc
}
+// GetRate returns the current rate limit for the client as determined by the most recent
+// API call. It is thread-safe.
+func (c *Client) GetRate() Rate {
+ c.ratemtx.Lock()
+ defer c.ratemtx.Unlock()
+ return c.Rate
+}
+
// newResponse creates a new Response for the provided http.Response
func newResponse(r *http.Response) *Response {
response := Response{Response: r}
@@ -294,13 +331,26 @@ func (c *Client) Do(ctx context.Context, req *http.Request, v interface{}) (*Res
}
defer func() {
+ // Ensure the response body is fully read and closed
+ // before we reconnect, so that we reuse the same TCPconnection.
+ // Close the previous response's body. But read at least some of
+ // the body so if it's small the underlying TCP connection will be
+ // re-used. No need to check for errors: if it fails, the Transport
+ // won't reuse it anyway.
+ const maxBodySlurpSize = 2 << 10
+ if resp.ContentLength == -1 || resp.ContentLength <= maxBodySlurpSize {
+ io.CopyN(ioutil.Discard, resp.Body, maxBodySlurpSize)
+ }
+
if rerr := resp.Body.Close(); err == nil {
err = rerr
}
}()
response := newResponse(resp)
+ c.ratemtx.Lock()
c.Rate = response.Rate
+ c.ratemtx.Unlock()
err = CheckResponse(resp)
if err != nil {
diff --git a/vendor/github.com/digitalocean/godo/images.go b/vendor/github.com/digitalocean/godo/images.go
index 69de4c07..cf57a3d5 100644
--- a/vendor/github.com/digitalocean/godo/images.go
+++ b/vendor/github.com/digitalocean/godo/images.go
@@ -52,7 +52,9 @@ type Image struct {
// ImageUpdateRequest represents a request to update an image.
type ImageUpdateRequest struct {
- Name string `json:"name"`
+ Name string `json:"name,omitempty"`
+ Distribution string `json:"distribution,omitempty"`
+ Description string `json:"description,omitempty"`
}
// CustomImageCreateRequest represents a request to create a custom image.
@@ -72,6 +74,7 @@ type imageRoot struct {
type imagesRoot struct {
Images []Image
Links *Links `json:"links"`
+ Meta *Meta `json:"meta"`
}
type listImageOptions struct {
@@ -131,6 +134,7 @@ func (s *ImagesServiceOp) GetBySlug(ctx context.Context, slug string) (*Image, *
return s.get(ctx, interface{}(slug))
}
+// Create a new image
func (s *ImagesServiceOp) Create(ctx context.Context, createRequest *CustomImageCreateRequest) (*Image, *Response, error) {
if createRequest == nil {
return nil, nil, NewArgError("createRequest", "cannot be nil")
@@ -236,6 +240,9 @@ func (s *ImagesServiceOp) list(ctx context.Context, opt *ListOptions, listOpt *l
if l := root.Links; l != nil {
resp.Links = l
}
+ if m := root.Meta; m != nil {
+ resp.Meta = m
+ }
return root.Images, resp, err
}
diff --git a/vendor/github.com/digitalocean/godo/invoices.go b/vendor/github.com/digitalocean/godo/invoices.go
new file mode 100644
index 00000000..c8d7f408
--- /dev/null
+++ b/vendor/github.com/digitalocean/godo/invoices.go
@@ -0,0 +1,226 @@
+package godo
+
+import (
+ "bytes"
+ "context"
+ "fmt"
+ "net/http"
+ "time"
+)
+
+const invoicesBasePath = "v2/customers/my/invoices"
+
+// InvoicesService is an interface for interfacing with the Invoice
+// endpoints of the DigitalOcean API
+// See: https://developers.digitalocean.com/documentation/v2/#invoices
+type InvoicesService interface {
+ Get(context.Context, string, *ListOptions) (*Invoice, *Response, error)
+ GetPDF(context.Context, string) ([]byte, *Response, error)
+ GetCSV(context.Context, string) ([]byte, *Response, error)
+ List(context.Context, *ListOptions) (*InvoiceList, *Response, error)
+ GetSummary(context.Context, string) (*InvoiceSummary, *Response, error)
+}
+
+// InvoicesServiceOp handles communication with the Invoice related methods of
+// the DigitalOcean API.
+type InvoicesServiceOp struct {
+ client *Client
+}
+
+var _ InvoicesService = &InvoicesServiceOp{}
+
+// Invoice represents a DigitalOcean Invoice
+type Invoice struct {
+ InvoiceItems []InvoiceItem `json:"invoice_items"`
+ Links *Links `json:"links"`
+ Meta *Meta `json:"meta"`
+}
+
+// InvoiceItem represents a line-item on a DigitalOcean Invoice
+type InvoiceItem struct {
+ Product string `json:"product"`
+ ResourceID string `json:"resource_id"`
+ ResourceUUID string `json:"resource_uuid"`
+ GroupDescription string `json:"group_description"`
+ Description string `json:"description"`
+ Amount string `json:"amount"`
+ Duration string `json:"duration"`
+ DurationUnit string `json:"duration_unit"`
+ StartTime time.Time `json:"start_time"`
+ EndTime time.Time `json:"end_time"`
+ ProjectName string `json:"project_name"`
+ Category string `json:"category"`
+}
+
+// InvoiceList contains a paginated list of all of a customer's invoices.
+// The InvoicePreview is the month-to-date usage generated by DigitalOcean.
+type InvoiceList struct {
+ Invoices []InvoiceListItem `json:"invoices"`
+ InvoicePreview InvoiceListItem `json:"invoice_preview"`
+ Links *Links `json:"links"`
+ Meta *Meta `json:"meta"`
+}
+
+// InvoiceListItem contains a small list of information about a customer's invoice.
+// More information can be found in the Invoice or InvoiceSummary
+type InvoiceListItem struct {
+ InvoiceUUID string `json:"invoice_uuid"`
+ Amount string `json:"amount"`
+ InvoicePeriod string `json:"invoice_period"`
+ UpdatedAt time.Time `json:"updated_at"`
+}
+
+// InvoiceSummary contains metadata and summarized usage for an invoice generated by DigitalOcean
+type InvoiceSummary struct {
+ InvoiceUUID string `json:"invoice_uuid"`
+ BillingPeriod string `json:"billing_period"`
+ Amount string `json:"amount"`
+ UserName string `json:"user_name"`
+ UserBillingAddress Address `json:"user_billing_address"`
+ UserCompany string `json:"user_company"`
+ UserEmail string `json:"user_email"`
+ ProductCharges InvoiceSummaryBreakdown `json:"product_charges"`
+ Overages InvoiceSummaryBreakdown `json:"overages"`
+ Taxes InvoiceSummaryBreakdown `json:"taxes"`
+ CreditsAndAdjustments InvoiceSummaryBreakdown `json:"credits_and_adjustments"`
+}
+
+// Address represents the billing address of a customer
+type Address struct {
+ AddressLine1 string `json:"address_line1"`
+ AddressLine2 string `json:"address_line2"`
+ City string `json:"city"`
+ Region string `json:"region"`
+ PostalCode string `json:"postal_code"`
+ CountryISO2Code string `json:"country_iso2_code"`
+ CreatedAt time.Time `json:"created_at"`
+ UpdatedAt time.Time `json:"updated_at"`
+}
+
+// InvoiceSummaryBreakdown is a grouped set of InvoiceItems from an invoice
+type InvoiceSummaryBreakdown struct {
+ Name string `json:"name"`
+ Amount string `json:"amount"`
+ Items []InvoiceSummaryBreakdownItem `json:"items"`
+}
+
+// InvoiceSummaryBreakdownItem further breaks down the InvoiceSummary by product
+type InvoiceSummaryBreakdownItem struct {
+ Name string `json:"name"`
+ Amount string `json:"amount"`
+ Count string `json:"count"`
+}
+
+func (i Invoice) String() string {
+ return Stringify(i)
+}
+
+// Get detailed invoice items for an Invoice
+func (s *InvoicesServiceOp) Get(ctx context.Context, invoiceUUID string, opt *ListOptions) (*Invoice, *Response, error) {
+ path := fmt.Sprintf("%s/%s", invoicesBasePath, invoiceUUID)
+ path, err := addOptions(path, opt)
+ if err != nil {
+ return nil, nil, err
+ }
+
+ req, err := s.client.NewRequest(ctx, http.MethodGet, path, nil)
+ if err != nil {
+ return nil, nil, err
+ }
+
+ root := new(Invoice)
+ resp, err := s.client.Do(ctx, req, root)
+ if err != nil {
+ return nil, resp, err
+ }
+ if l := root.Links; l != nil {
+ resp.Links = l
+ }
+ if m := root.Meta; m != nil {
+ resp.Meta = m
+ }
+
+ return root, resp, err
+}
+
+// List invoices for a customer
+func (s *InvoicesServiceOp) List(ctx context.Context, opt *ListOptions) (*InvoiceList, *Response, error) {
+ path := invoicesBasePath
+ path, err := addOptions(path, opt)
+ if err != nil {
+ return nil, nil, err
+ }
+
+ req, err := s.client.NewRequest(ctx, http.MethodGet, path, nil)
+ if err != nil {
+ return nil, nil, err
+ }
+
+ root := new(InvoiceList)
+ resp, err := s.client.Do(ctx, req, root)
+ if err != nil {
+ return nil, resp, err
+ }
+ if l := root.Links; l != nil {
+ resp.Links = l
+ }
+ if m := root.Meta; m != nil {
+ resp.Meta = m
+ }
+
+ return root, resp, err
+}
+
+// GetSummary returns a summary of metadata and summarized usage for an Invoice
+func (s *InvoicesServiceOp) GetSummary(ctx context.Context, invoiceUUID string) (*InvoiceSummary, *Response, error) {
+ path := fmt.Sprintf("%s/%s/summary", invoicesBasePath, invoiceUUID)
+
+ req, err := s.client.NewRequest(ctx, http.MethodGet, path, nil)
+ if err != nil {
+ return nil, nil, err
+ }
+
+ root := new(InvoiceSummary)
+ resp, err := s.client.Do(ctx, req, root)
+ if err != nil {
+ return nil, resp, err
+ }
+
+ return root, resp, err
+}
+
+// GetPDF returns the pdf for an Invoice
+func (s *InvoicesServiceOp) GetPDF(ctx context.Context, invoiceUUID string) ([]byte, *Response, error) {
+ path := fmt.Sprintf("%s/%s/pdf", invoicesBasePath, invoiceUUID)
+
+ req, err := s.client.NewRequest(ctx, http.MethodGet, path, nil)
+ if err != nil {
+ return nil, nil, err
+ }
+
+ var root bytes.Buffer
+ resp, err := s.client.Do(ctx, req, &root)
+ if err != nil {
+ return nil, resp, err
+ }
+
+ return root.Bytes(), resp, err
+}
+
+// GetCSV returns the csv for an Invoice
+func (s *InvoicesServiceOp) GetCSV(ctx context.Context, invoiceUUID string) ([]byte, *Response, error) {
+ path := fmt.Sprintf("%s/%s/csv", invoicesBasePath, invoiceUUID)
+
+ req, err := s.client.NewRequest(ctx, http.MethodGet, path, nil)
+ if err != nil {
+ return nil, nil, err
+ }
+
+ var root bytes.Buffer
+ resp, err := s.client.Do(ctx, req, &root)
+ if err != nil {
+ return nil, resp, err
+ }
+
+ return root.Bytes(), resp, err
+}
diff --git a/vendor/github.com/digitalocean/godo/keys.go b/vendor/github.com/digitalocean/godo/keys.go
index 9695c21f..b97554d1 100644
--- a/vendor/github.com/digitalocean/godo/keys.go
+++ b/vendor/github.com/digitalocean/godo/keys.go
@@ -46,6 +46,7 @@ type KeyUpdateRequest struct {
type keysRoot struct {
SSHKeys []Key `json:"ssh_keys"`
Links *Links `json:"links"`
+ Meta *Meta `json:"meta"`
}
type keyRoot struct {
@@ -83,6 +84,9 @@ func (s *KeysServiceOp) List(ctx context.Context, opt *ListOptions) ([]Key, *Res
if l := root.Links; l != nil {
resp.Links = l
}
+ if m := root.Meta; m != nil {
+ resp.Meta = m
+ }
return root.SSHKeys, resp, err
}
diff --git a/vendor/github.com/digitalocean/godo/kubernetes.go b/vendor/github.com/digitalocean/godo/kubernetes.go
index 254ec54e..93b40256 100644
--- a/vendor/github.com/digitalocean/godo/kubernetes.go
+++ b/vendor/github.com/digitalocean/godo/kubernetes.go
@@ -8,6 +8,7 @@ import (
"fmt"
"net/http"
"net/url"
+ "strconv"
"strings"
"time"
)
@@ -24,8 +25,11 @@ const (
type KubernetesService interface {
Create(context.Context, *KubernetesClusterCreateRequest) (*KubernetesCluster, *Response, error)
Get(context.Context, string) (*KubernetesCluster, *Response, error)
+ GetUser(context.Context, string) (*KubernetesClusterUser, *Response, error)
GetUpgrades(context.Context, string) ([]*KubernetesVersion, *Response, error)
GetKubeConfig(context.Context, string) (*KubernetesClusterConfig, *Response, error)
+ GetKubeConfigWithExpiry(context.Context, string, int64) (*KubernetesClusterConfig, *Response, error)
+ GetCredentials(context.Context, string, *KubernetesClusterCredentialsGetRequest) (*KubernetesClusterCredentials, *Response, error)
List(context.Context, *ListOptions) ([]*KubernetesCluster, *Response, error)
Update(context.Context, string, *KubernetesClusterUpdateRequest) (*KubernetesCluster, *Response, error)
Upgrade(context.Context, string, *KubernetesClusterUpgradeRequest) (*Response, error)
@@ -42,6 +46,11 @@ type KubernetesService interface {
DeleteNode(ctx context.Context, clusterID, poolID, nodeID string, req *KubernetesNodeDeleteRequest) (*Response, error)
GetOptions(context.Context) (*KubernetesOptions, *Response, error)
+ AddRegistry(ctx context.Context, req *KubernetesClusterRegistryRequest) (*Response, error)
+ RemoveRegistry(ctx context.Context, req *KubernetesClusterRegistryRequest) (*Response, error)
+
+ RunClusterlint(ctx context.Context, clusterID string, req *KubernetesRunClusterlintRequest) (string, *Response, error)
+ GetClusterlintResults(ctx context.Context, clusterID string, req *KubernetesGetClusterlintRequest) ([]*ClusterlintDiagnostic, *Response, error)
}
var _ KubernetesService = &KubernetesServiceOp{}
@@ -63,14 +72,16 @@ type KubernetesClusterCreateRequest struct {
MaintenancePolicy *KubernetesMaintenancePolicy `json:"maintenance_policy"`
AutoUpgrade bool `json:"auto_upgrade"`
+ SurgeUpgrade bool `json:"surge_upgrade"`
}
// KubernetesClusterUpdateRequest represents a request to update a Kubernetes cluster.
type KubernetesClusterUpdateRequest struct {
Name string `json:"name,omitempty"`
Tags []string `json:"tags,omitempty"`
- MaintenancePolicy *KubernetesMaintenancePolicy `json:"maintenance_policy"`
- AutoUpgrade bool `json:"auto_upgrade"`
+ MaintenancePolicy *KubernetesMaintenancePolicy `json:"maintenance_policy,omitempty"`
+ AutoUpgrade *bool `json:"auto_upgrade,omitempty"`
+ SurgeUpgrade bool `json:"surge_upgrade,omitempty"`
}
// KubernetesClusterUpgradeRequest represents a request to upgrade a Kubernetes cluster.
@@ -78,21 +89,46 @@ type KubernetesClusterUpgradeRequest struct {
VersionSlug string `json:"version,omitempty"`
}
+// Taint represents a Kubernetes taint that can be associated with a node pool
+// (and, transitively, with all nodes of that pool).
+type Taint struct {
+ Key string
+ Value string
+ Effect string
+}
+
+func (t Taint) String() string {
+ if t.Value == "" {
+ return fmt.Sprintf("%s:%s", t.Key, t.Effect)
+ }
+ return fmt.Sprintf("%s=%s:%s", t.Key, t.Value, t.Effect)
+}
+
// KubernetesNodePoolCreateRequest represents a request to create a node pool for a
// Kubernetes cluster.
type KubernetesNodePoolCreateRequest struct {
- Name string `json:"name,omitempty"`
- Size string `json:"size,omitempty"`
- Count int `json:"count,omitempty"`
- Tags []string `json:"tags,omitempty"`
+ Name string `json:"name,omitempty"`
+ Size string `json:"size,omitempty"`
+ Count int `json:"count,omitempty"`
+ Tags []string `json:"tags,omitempty"`
+ Labels map[string]string `json:"labels,omitempty"`
+ Taints []Taint `json:"taints,omitempty"`
+ AutoScale bool `json:"auto_scale,omitempty"`
+ MinNodes int `json:"min_nodes,omitempty"`
+ MaxNodes int `json:"max_nodes,omitempty"`
}
// KubernetesNodePoolUpdateRequest represents a request to update a node pool in a
// Kubernetes cluster.
type KubernetesNodePoolUpdateRequest struct {
- Name string `json:"name,omitempty"`
- Count int `json:"count,omitempty"`
- Tags []string `json:"tags,omitempty"`
+ Name string `json:"name,omitempty"`
+ Count *int `json:"count,omitempty"`
+ Tags []string `json:"tags,omitempty"`
+ Labels map[string]string `json:"labels,omitempty"`
+ Taints *[]Taint `json:"taints,omitempty"`
+ AutoScale *bool `json:"auto_scale,omitempty"`
+ MinNodes *int `json:"min_nodes,omitempty"`
+ MaxNodes *int `json:"max_nodes,omitempty"`
}
// KubernetesNodePoolRecycleNodesRequest is DEPRECATED please use DeleteNode
@@ -110,6 +146,27 @@ type KubernetesNodeDeleteRequest struct {
SkipDrain bool `json:"skip_drain,omitempty"`
}
+// KubernetesClusterCredentialsGetRequest is a request to get cluster credentials.
+type KubernetesClusterCredentialsGetRequest struct {
+ ExpirySeconds *int `json:"expiry_seconds,omitempty"`
+}
+
+// KubernetesClusterRegistryRequest represents clusters to integrate with docr registry
+type KubernetesClusterRegistryRequest struct {
+ ClusterUUIDs []string `json:"cluster_uuids,omitempty"`
+}
+
+type KubernetesRunClusterlintRequest struct {
+ IncludeGroups []string `json:"include_groups"`
+ ExcludeGroups []string `json:"exclude_groups"`
+ IncludeChecks []string `json:"include_checks"`
+ ExcludeChecks []string `json:"exclude_checks"`
+}
+
+type KubernetesGetClusterlintRequest struct {
+ RunId string `json:"run_id"`
+}
+
// KubernetesCluster represents a Kubernetes cluster.
type KubernetesCluster struct {
ID string `json:"id,omitempty"`
@@ -127,12 +184,30 @@ type KubernetesCluster struct {
MaintenancePolicy *KubernetesMaintenancePolicy `json:"maintenance_policy,omitempty"`
AutoUpgrade bool `json:"auto_upgrade,omitempty"`
+ SurgeUpgrade bool `json:"surge_upgrade,omitempty"`
+ RegistryEnabled bool `json:"registry_enabled,omitempty"`
Status *KubernetesClusterStatus `json:"status,omitempty"`
CreatedAt time.Time `json:"created_at,omitempty"`
UpdatedAt time.Time `json:"updated_at,omitempty"`
}
+// KubernetesClusterUser represents a Kubernetes cluster user.
+type KubernetesClusterUser struct {
+ Username string `json:"username,omitempty"`
+ Groups []string `json:"groups,omitempty"`
+}
+
+// KubernetesClusterCredentials represents Kubernetes cluster credentials.
+type KubernetesClusterCredentials struct {
+ Server string `json:"server"`
+ CertificateAuthorityData []byte `json:"certificate_authority_data"`
+ ClientCertificateData []byte `json:"client_certificate_data"`
+ ClientKeyData []byte `json:"client_key_data"`
+ Token string `json:"token"`
+ ExpiresAt time.Time `json:"expires_at"`
+}
+
// KubernetesMaintenancePolicy is a configuration to set the maintenance window
// of a cluster
type KubernetesMaintenancePolicy struct {
@@ -146,13 +221,36 @@ type KubernetesMaintenancePolicy struct {
type KubernetesMaintenancePolicyDay int
const (
+ // KubernetesMaintenanceDayAny sets the KubernetesMaintenancePolicyDay to any
+ // day of the week
KubernetesMaintenanceDayAny KubernetesMaintenancePolicyDay = iota
+
+ // KubernetesMaintenanceDayMonday sets the KubernetesMaintenancePolicyDay to
+ // Monday
KubernetesMaintenanceDayMonday
+
+ // KubernetesMaintenanceDayTuesday sets the KubernetesMaintenancePolicyDay to
+ // Tuesday
KubernetesMaintenanceDayTuesday
+
+ // KubernetesMaintenanceDayWednesday sets the KubernetesMaintenancePolicyDay to
+ // Wednesday
KubernetesMaintenanceDayWednesday
+
+ // KubernetesMaintenanceDayThursday sets the KubernetesMaintenancePolicyDay to
+ // Thursday
KubernetesMaintenanceDayThursday
+
+ // KubernetesMaintenanceDayFriday sets the KubernetesMaintenancePolicyDay to
+ // Friday
KubernetesMaintenanceDayFriday
+
+ // KubernetesMaintenanceDaySaturday sets the KubernetesMaintenancePolicyDay to
+ // Saturday
KubernetesMaintenanceDaySaturday
+
+ // KubernetesMaintenanceDaySunday sets the KubernetesMaintenancePolicyDay to
+ // Sunday
KubernetesMaintenanceDaySunday
)
@@ -198,6 +296,7 @@ func (k KubernetesMaintenancePolicyDay) String() string {
}
+// UnmarshalJSON parses the JSON string into KubernetesMaintenancePolicyDay
func (k *KubernetesMaintenancePolicyDay) UnmarshalJSON(data []byte) error {
var val string
if err := json.Unmarshal(data, &val); err != nil {
@@ -212,6 +311,7 @@ func (k *KubernetesMaintenancePolicyDay) UnmarshalJSON(data []byte) error {
return nil
}
+// MarshalJSON returns the JSON string for KubernetesMaintenancePolicyDay
func (k KubernetesMaintenancePolicyDay) MarshalJSON() ([]byte, error) {
if KubernetesMaintenanceDayAny <= k && k <= KubernetesMaintenanceDaySunday {
return json.Marshal(days[k])
@@ -267,20 +367,26 @@ type KubernetesClusterStatus struct {
// KubernetesNodePool represents a node pool in a Kubernetes cluster.
type KubernetesNodePool struct {
- ID string `json:"id,omitempty"`
- Name string `json:"name,omitempty"`
- Size string `json:"size,omitempty"`
- Count int `json:"count,omitempty"`
- Tags []string `json:"tags,omitempty"`
+ ID string `json:"id,omitempty"`
+ Name string `json:"name,omitempty"`
+ Size string `json:"size,omitempty"`
+ Count int `json:"count,omitempty"`
+ Tags []string `json:"tags,omitempty"`
+ Labels map[string]string `json:"labels,omitempty"`
+ Taints []Taint `json:"taints,omitempty"`
+ AutoScale bool `json:"auto_scale,omitempty"`
+ MinNodes int `json:"min_nodes,omitempty"`
+ MaxNodes int `json:"max_nodes,omitempty"`
Nodes []*KubernetesNode `json:"nodes,omitempty"`
}
// KubernetesNode represents a Node in a node pool in a Kubernetes cluster.
type KubernetesNode struct {
- ID string `json:"id,omitempty"`
- Name string `json:"name,omitempty"`
- Status *KubernetesNodeStatus `json:"status,omitempty"`
+ ID string `json:"id,omitempty"`
+ Name string `json:"name,omitempty"`
+ Status *KubernetesNodeStatus `json:"status,omitempty"`
+ DropletID string `json:"droplet_id,omitempty"`
CreatedAt time.Time `json:"created_at,omitempty"`
UpdatedAt time.Time `json:"updated_at,omitempty"`
@@ -317,15 +423,42 @@ type KubernetesRegion struct {
Slug string `json:"slug"`
}
+// ClusterlintDiagnostic is a diagnostic returned from clusterlint.
+type ClusterlintDiagnostic struct {
+ CheckName string `json:"check_name"`
+ Severity string `json:"severity"`
+ Message string `json:"message"`
+ Object *ClusterlintObject `json:"object"`
+}
+
+// ClusterlintObject is the object a clusterlint diagnostic refers to.
+type ClusterlintObject struct {
+ Kind string `json:"kind"`
+ Name string `json:"name"`
+ Namespace string `json:"namespace"`
+ Owners []*ClusterlintOwner `json:"owners,omitempty"`
+}
+
+// ClusterlintOwner indicates the resource that owns the offending object.
+type ClusterlintOwner struct {
+ Kind string `json:"kind"`
+ Name string `json:"name"`
+}
+
type kubernetesClustersRoot struct {
Clusters []*KubernetesCluster `json:"kubernetes_clusters,omitempty"`
Links *Links `json:"links,omitempty"`
+ Meta *Meta `json:"meta"`
}
type kubernetesClusterRoot struct {
Cluster *KubernetesCluster `json:"kubernetes_cluster,omitempty"`
}
+type kubernetesClusterUserRoot struct {
+ User *KubernetesClusterUser `json:"kubernetes_cluster_user,omitempty"`
+}
+
type kubernetesNodePoolRoot struct {
NodePool *KubernetesNodePool `json:"node_pool,omitempty"`
}
@@ -354,6 +487,21 @@ func (svc *KubernetesServiceOp) Get(ctx context.Context, clusterID string) (*Kub
return root.Cluster, resp, nil
}
+// GetUser retrieves the details of a Kubernetes cluster user.
+func (svc *KubernetesServiceOp) GetUser(ctx context.Context, clusterID string) (*KubernetesClusterUser, *Response, error) {
+ path := fmt.Sprintf("%s/%s/user", kubernetesClustersPath, clusterID)
+ req, err := svc.client.NewRequest(ctx, http.MethodGet, path, nil)
+ if err != nil {
+ return nil, nil, err
+ }
+ root := new(kubernetesClusterUserRoot)
+ resp, err := svc.client.Do(ctx, req, root)
+ if err != nil {
+ return nil, resp, err
+ }
+ return root.User, resp, nil
+}
+
// GetUpgrades retrieves versions a Kubernetes cluster can be upgraded to. An
// upgrade can be requested using `Upgrade`.
func (svc *KubernetesServiceOp) GetUpgrades(ctx context.Context, clusterID string) ([]*KubernetesVersion, *Response, error) {
@@ -416,6 +564,14 @@ func (svc *KubernetesServiceOp) List(ctx context.Context, opts *ListOptions) ([]
if err != nil {
return nil, resp, err
}
+
+ if l := root.Links; l != nil {
+ resp.Links = l
+ }
+ if m := root.Meta; m != nil {
+ resp.Meta = m
+ }
+
return root.Clusters, resp, nil
}
@@ -444,6 +600,47 @@ func (svc *KubernetesServiceOp) GetKubeConfig(ctx context.Context, clusterID str
return res, resp, nil
}
+// GetKubeConfigWithExpiry returns a Kubernetes config file for the specified cluster with expiry_seconds.
+func (svc *KubernetesServiceOp) GetKubeConfigWithExpiry(ctx context.Context, clusterID string, expirySeconds int64) (*KubernetesClusterConfig, *Response, error) {
+ path := fmt.Sprintf("%s/%s/kubeconfig", kubernetesClustersPath, clusterID)
+ req, err := svc.client.NewRequest(ctx, http.MethodGet, path, nil)
+ if err != nil {
+ return nil, nil, err
+ }
+ q := req.URL.Query()
+ q.Add("expiry_seconds", fmt.Sprintf("%d", expirySeconds))
+ req.URL.RawQuery = q.Encode()
+ configBytes := bytes.NewBuffer(nil)
+ resp, err := svc.client.Do(ctx, req, configBytes)
+ if err != nil {
+ return nil, resp, err
+ }
+ res := &KubernetesClusterConfig{
+ KubeconfigYAML: configBytes.Bytes(),
+ }
+ return res, resp, nil
+}
+
+// GetCredentials returns a Kubernetes API server credentials for the specified cluster.
+func (svc *KubernetesServiceOp) GetCredentials(ctx context.Context, clusterID string, get *KubernetesClusterCredentialsGetRequest) (*KubernetesClusterCredentials, *Response, error) {
+ path := fmt.Sprintf("%s/%s/credentials", kubernetesClustersPath, clusterID)
+ req, err := svc.client.NewRequest(ctx, http.MethodGet, path, nil)
+ if err != nil {
+ return nil, nil, err
+ }
+ q := req.URL.Query()
+ if get.ExpirySeconds != nil {
+ q.Add("expiry_seconds", strconv.Itoa(*get.ExpirySeconds))
+ }
+ req.URL.RawQuery = q.Encode()
+ credentials := new(KubernetesClusterCredentials)
+ resp, err := svc.client.Do(ctx, req, credentials)
+ if err != nil {
+ return nil, nil, err
+ }
+ return credentials, resp, nil
+}
+
// Update updates a Kubernetes cluster's properties.
func (svc *KubernetesServiceOp) Update(ctx context.Context, clusterID string, update *KubernetesClusterUpdateRequest) (*KubernetesCluster, *Response, error) {
path := fmt.Sprintf("%s/%s", kubernetesClustersPath, clusterID)
@@ -610,3 +807,79 @@ func (svc *KubernetesServiceOp) GetOptions(ctx context.Context) (*KubernetesOpti
}
return root.Options, resp, nil
}
+
+// AddRegistry integrates docr registry with all the specified clusters
+func (svc *KubernetesServiceOp) AddRegistry(ctx context.Context, req *KubernetesClusterRegistryRequest) (*Response, error) {
+ path := fmt.Sprintf("%s/registry", kubernetesBasePath)
+ request, err := svc.client.NewRequest(ctx, http.MethodPost, path, req)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := svc.client.Do(ctx, request, nil)
+ if err != nil {
+ return resp, err
+ }
+ return resp, nil
+}
+
+// RemoveRegistry removes docr registry support for all the specified clusters
+func (svc *KubernetesServiceOp) RemoveRegistry(ctx context.Context, req *KubernetesClusterRegistryRequest) (*Response, error) {
+ path := fmt.Sprintf("%s/registry", kubernetesBasePath)
+ request, err := svc.client.NewRequest(ctx, http.MethodDelete, path, req)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := svc.client.Do(ctx, request, nil)
+ if err != nil {
+ return resp, err
+ }
+ return resp, nil
+}
+
+type runClusterlintRoot struct {
+ RunID string `json:"run_id"`
+}
+
+// RunClusterlint schedules a clusterlint run for the specified cluster
+func (svc *KubernetesServiceOp) RunClusterlint(ctx context.Context, clusterID string, req *KubernetesRunClusterlintRequest) (string, *Response, error) {
+ path := fmt.Sprintf("%s/%s/clusterlint", kubernetesClustersPath, clusterID)
+ request, err := svc.client.NewRequest(ctx, http.MethodPost, path, req)
+ if err != nil {
+ return "", nil, err
+ }
+ root := new(runClusterlintRoot)
+ resp, err := svc.client.Do(ctx, request, root)
+ if err != nil {
+ return "", resp, err
+ }
+ return root.RunID, resp, nil
+}
+
+type clusterlintDiagnosticsRoot struct {
+ Diagnostics []*ClusterlintDiagnostic
+}
+
+// GetClusterlintResults fetches the diagnostics after clusterlint run completes
+func (svc *KubernetesServiceOp) GetClusterlintResults(ctx context.Context, clusterID string, req *KubernetesGetClusterlintRequest) ([]*ClusterlintDiagnostic, *Response, error) {
+ path := fmt.Sprintf("%s/%s/clusterlint", kubernetesClustersPath, clusterID)
+ if req != nil {
+ v := make(url.Values)
+ if req.RunId != "" {
+ v.Set("run_id", req.RunId)
+ }
+ if query := v.Encode(); query != "" {
+ path = path + "?" + query
+ }
+ }
+
+ request, err := svc.client.NewRequest(ctx, http.MethodGet, path, nil)
+ if err != nil {
+ return nil, nil, err
+ }
+ root := new(clusterlintDiagnosticsRoot)
+ resp, err := svc.client.Do(ctx, request, root)
+ if err != nil {
+ return nil, resp, err
+ }
+ return root.Diagnostics, resp, nil
+}
diff --git a/vendor/github.com/digitalocean/godo/links.go b/vendor/github.com/digitalocean/godo/links.go
index 20984417..6f350bf9 100644
--- a/vendor/github.com/digitalocean/godo/links.go
+++ b/vendor/github.com/digitalocean/godo/links.go
@@ -59,7 +59,7 @@ func (l *Links) IsLastPage() bool {
}
func (p *Pages) isLast() bool {
- return p.Last == ""
+ return p.Next == ""
}
func pageForURL(urlText string) (int, error) {
diff --git a/vendor/github.com/digitalocean/godo/load_balancers.go b/vendor/github.com/digitalocean/godo/load_balancers.go
index c565e229..b7debfe1 100644
--- a/vendor/github.com/digitalocean/godo/load_balancers.go
+++ b/vendor/github.com/digitalocean/godo/load_balancers.go
@@ -28,22 +28,24 @@ type LoadBalancersService interface {
// LoadBalancer represents a DigitalOcean load balancer configuration.
// Tags can only be provided upon the creation of a Load Balancer.
type LoadBalancer struct {
- ID string `json:"id,omitempty"`
- Name string `json:"name,omitempty"`
- IP string `json:"ip,omitempty"`
- Algorithm string `json:"algorithm,omitempty"`
- Status string `json:"status,omitempty"`
- Created string `json:"created_at,omitempty"`
- ForwardingRules []ForwardingRule `json:"forwarding_rules,omitempty"`
- HealthCheck *HealthCheck `json:"health_check,omitempty"`
- StickySessions *StickySessions `json:"sticky_sessions,omitempty"`
- Region *Region `json:"region,omitempty"`
- DropletIDs []int `json:"droplet_ids,omitempty"`
- Tag string `json:"tag,omitempty"`
- Tags []string `json:"tags,omitempty"`
- RedirectHttpToHttps bool `json:"redirect_http_to_https,omitempty"`
- EnableProxyProtocol bool `json:"enable_proxy_protocol,omitempty"`
- VPCUUID string `json:"vpc_uuid,omitempty"`
+ ID string `json:"id,omitempty"`
+ Name string `json:"name,omitempty"`
+ IP string `json:"ip,omitempty"`
+ SizeSlug string `json:"size,omitempty"`
+ Algorithm string `json:"algorithm,omitempty"`
+ Status string `json:"status,omitempty"`
+ Created string `json:"created_at,omitempty"`
+ ForwardingRules []ForwardingRule `json:"forwarding_rules,omitempty"`
+ HealthCheck *HealthCheck `json:"health_check,omitempty"`
+ StickySessions *StickySessions `json:"sticky_sessions,omitempty"`
+ Region *Region `json:"region,omitempty"`
+ DropletIDs []int `json:"droplet_ids,omitempty"`
+ Tag string `json:"tag,omitempty"`
+ Tags []string `json:"tags,omitempty"`
+ RedirectHttpToHttps bool `json:"redirect_http_to_https,omitempty"`
+ EnableProxyProtocol bool `json:"enable_proxy_protocol,omitempty"`
+ EnableBackendKeepalive bool `json:"enable_backend_keepalive,omitempty"`
+ VPCUUID string `json:"vpc_uuid,omitempty"`
}
// String creates a human-readable description of a LoadBalancer.
@@ -51,6 +53,7 @@ func (l LoadBalancer) String() string {
return Stringify(l)
}
+// URN returns the load balancer ID in a valid DO API URN form.
func (l LoadBalancer) URN() string {
return ToURN("LoadBalancer", l.ID)
}
@@ -59,15 +62,17 @@ func (l LoadBalancer) URN() string {
// Modifying the returned LoadBalancerRequest will not modify the original LoadBalancer.
func (l LoadBalancer) AsRequest() *LoadBalancerRequest {
r := LoadBalancerRequest{
- Name: l.Name,
- Algorithm: l.Algorithm,
- ForwardingRules: append([]ForwardingRule(nil), l.ForwardingRules...),
- DropletIDs: append([]int(nil), l.DropletIDs...),
- Tag: l.Tag,
- RedirectHttpToHttps: l.RedirectHttpToHttps,
- EnableProxyProtocol: l.EnableProxyProtocol,
- HealthCheck: l.HealthCheck,
- VPCUUID: l.VPCUUID,
+ Name: l.Name,
+ Algorithm: l.Algorithm,
+ SizeSlug: l.SizeSlug,
+ ForwardingRules: append([]ForwardingRule(nil), l.ForwardingRules...),
+ DropletIDs: append([]int(nil), l.DropletIDs...),
+ Tag: l.Tag,
+ RedirectHttpToHttps: l.RedirectHttpToHttps,
+ EnableProxyProtocol: l.EnableProxyProtocol,
+ EnableBackendKeepalive: l.EnableBackendKeepalive,
+ HealthCheck: l.HealthCheck,
+ VPCUUID: l.VPCUUID,
}
if l.HealthCheck != nil {
@@ -129,18 +134,20 @@ func (s StickySessions) String() string {
// LoadBalancerRequest represents the configuration to be applied to an existing or a new load balancer.
type LoadBalancerRequest struct {
- Name string `json:"name,omitempty"`
- Algorithm string `json:"algorithm,omitempty"`
- Region string `json:"region,omitempty"`
- ForwardingRules []ForwardingRule `json:"forwarding_rules,omitempty"`
- HealthCheck *HealthCheck `json:"health_check,omitempty"`
- StickySessions *StickySessions `json:"sticky_sessions,omitempty"`
- DropletIDs []int `json:"droplet_ids,omitempty"`
- Tag string `json:"tag,omitempty"`
- Tags []string `json:"tags,omitempty"`
- RedirectHttpToHttps bool `json:"redirect_http_to_https,omitempty"`
- EnableProxyProtocol bool `json:"enable_proxy_protocol,omitempty"`
- VPCUUID string `json:"vpc_uuid,omitempty"`
+ Name string `json:"name,omitempty"`
+ Algorithm string `json:"algorithm,omitempty"`
+ Region string `json:"region,omitempty"`
+ SizeSlug string `json:"size,omitempty"`
+ ForwardingRules []ForwardingRule `json:"forwarding_rules,omitempty"`
+ HealthCheck *HealthCheck `json:"health_check,omitempty"`
+ StickySessions *StickySessions `json:"sticky_sessions,omitempty"`
+ DropletIDs []int `json:"droplet_ids,omitempty"`
+ Tag string `json:"tag,omitempty"`
+ Tags []string `json:"tags,omitempty"`
+ RedirectHttpToHttps bool `json:"redirect_http_to_https,omitempty"`
+ EnableProxyProtocol bool `json:"enable_proxy_protocol,omitempty"`
+ EnableBackendKeepalive bool `json:"enable_backend_keepalive,omitempty"`
+ VPCUUID string `json:"vpc_uuid,omitempty"`
}
// String creates a human-readable description of a LoadBalancerRequest.
@@ -167,6 +174,7 @@ func (l dropletIDsRequest) String() string {
type loadBalancersRoot struct {
LoadBalancers []LoadBalancer `json:"load_balancers"`
Links *Links `json:"links"`
+ Meta *Meta `json:"meta"`
}
type loadBalancerRoot struct {
@@ -218,6 +226,9 @@ func (l *LoadBalancersServiceOp) List(ctx context.Context, opt *ListOptions) ([]
if l := root.Links; l != nil {
resp.Links = l
}
+ if m := root.Meta; m != nil {
+ resp.Meta = m
+ }
return root.LoadBalancers, resp, err
}
diff --git a/vendor/github.com/digitalocean/godo/meta.go b/vendor/github.com/digitalocean/godo/meta.go
new file mode 100644
index 00000000..d0b70178
--- /dev/null
+++ b/vendor/github.com/digitalocean/godo/meta.go
@@ -0,0 +1,6 @@
+package godo
+
+// Meta describes generic information about a response.
+type Meta struct {
+ Total int `json:"total"`
+}
diff --git a/vendor/github.com/digitalocean/godo/projects.go b/vendor/github.com/digitalocean/godo/projects.go
index 02ca0211..c31573b2 100644
--- a/vendor/github.com/digitalocean/godo/projects.go
+++ b/vendor/github.com/digitalocean/godo/projects.go
@@ -117,7 +117,7 @@ type ProjectResource struct {
Status string `json:"status,omitempty"`
}
-// ProjetResourceLinks specify the link for more information about the resource.
+// ProjectResourceLinks specify the link for more information about the resource.
type ProjectResourceLinks struct {
Self string `json:"self"`
}
@@ -125,6 +125,7 @@ type ProjectResourceLinks struct {
type projectsRoot struct {
Projects []Project `json:"projects"`
Links *Links `json:"links"`
+ Meta *Meta `json:"meta"`
}
type projectRoot struct {
@@ -134,6 +135,7 @@ type projectRoot struct {
type projectResourcesRoot struct {
Resources []ProjectResource `json:"resources"`
Links *Links `json:"links,omitempty"`
+ Meta *Meta `json:"meta"`
}
var _ ProjectsService = &ProjectsServiceOp{}
@@ -158,6 +160,9 @@ func (p *ProjectsServiceOp) List(ctx context.Context, opts *ListOptions) ([]Proj
if l := root.Links; l != nil {
resp.Links = l
}
+ if m := root.Meta; m != nil {
+ resp.Meta = m
+ }
return root.Projects, resp, err
}
@@ -238,13 +243,15 @@ func (p *ProjectsServiceOp) ListResources(ctx context.Context, projectID string,
if l := root.Links; l != nil {
resp.Links = l
}
+ if m := root.Meta; m != nil {
+ resp.Meta = m
+ }
return root.Resources, resp, err
}
// AssignResources assigns one or more resources to a project. AssignResources
// accepts resources in two possible formats:
-
// 1. The resource type, like `&Droplet{ID: 1}` or `&FloatingIP{IP: "1.2.3.4"}`
// 2. A valid DO URN as a string, like "do:droplet:1234"
//
diff --git a/vendor/github.com/digitalocean/godo/regions.go b/vendor/github.com/digitalocean/godo/regions.go
index 409959d9..b07175e8 100644
--- a/vendor/github.com/digitalocean/godo/regions.go
+++ b/vendor/github.com/digitalocean/godo/regions.go
@@ -32,6 +32,7 @@ type Region struct {
type regionsRoot struct {
Regions []Region
Links *Links `json:"links"`
+ Meta *Meta `json:"meta"`
}
func (r Region) String() string {
@@ -59,6 +60,9 @@ func (s *RegionsServiceOp) List(ctx context.Context, opt *ListOptions) ([]Region
if l := root.Links; l != nil {
resp.Links = l
}
+ if m := root.Meta; m != nil {
+ resp.Meta = m
+ }
return root.Regions, resp, err
}
diff --git a/vendor/github.com/digitalocean/godo/registry.go b/vendor/github.com/digitalocean/godo/registry.go
new file mode 100644
index 00000000..edcfe4f8
--- /dev/null
+++ b/vendor/github.com/digitalocean/godo/registry.go
@@ -0,0 +1,497 @@
+package godo
+
+import (
+ "bytes"
+ "context"
+ "fmt"
+ "net/http"
+ "net/url"
+ "strconv"
+ "time"
+)
+
+const (
+ registryPath = "/v2/registry"
+ // RegistryServer is the hostname of the DigitalOcean registry service
+ RegistryServer = "registry.digitalocean.com"
+)
+
+// RegistryService is an interface for interfacing with the Registry endpoints
+// of the DigitalOcean API.
+// See: https://developers.digitalocean.com/documentation/v2#registry
+type RegistryService interface {
+ Create(context.Context, *RegistryCreateRequest) (*Registry, *Response, error)
+ Get(context.Context) (*Registry, *Response, error)
+ Delete(context.Context) (*Response, error)
+ DockerCredentials(context.Context, *RegistryDockerCredentialsRequest) (*DockerCredentials, *Response, error)
+ ListRepositories(context.Context, string, *ListOptions) ([]*Repository, *Response, error)
+ ListRepositoryTags(context.Context, string, string, *ListOptions) ([]*RepositoryTag, *Response, error)
+ DeleteTag(context.Context, string, string, string) (*Response, error)
+ DeleteManifest(context.Context, string, string, string) (*Response, error)
+ StartGarbageCollection(context.Context, string, ...*StartGarbageCollectionRequest) (*GarbageCollection, *Response, error)
+ GetGarbageCollection(context.Context, string) (*GarbageCollection, *Response, error)
+ ListGarbageCollections(context.Context, string, *ListOptions) ([]*GarbageCollection, *Response, error)
+ UpdateGarbageCollection(context.Context, string, string, *UpdateGarbageCollectionRequest) (*GarbageCollection, *Response, error)
+ GetOptions(context.Context) (*RegistryOptions, *Response, error)
+ GetSubscription(context.Context) (*RegistrySubscription, *Response, error)
+ UpdateSubscription(context.Context, *RegistrySubscriptionUpdateRequest) (*RegistrySubscription, *Response, error)
+}
+
+var _ RegistryService = &RegistryServiceOp{}
+
+// RegistryServiceOp handles communication with Registry methods of the DigitalOcean API.
+type RegistryServiceOp struct {
+ client *Client
+}
+
+// RegistryCreateRequest represents a request to create a registry.
+type RegistryCreateRequest struct {
+ Name string `json:"name,omitempty"`
+ SubscriptionTierSlug string `json:"subscription_tier_slug,omitempty"`
+}
+
+// RegistryDockerCredentialsRequest represents a request to retrieve docker
+// credentials for a registry.
+type RegistryDockerCredentialsRequest struct {
+ ReadWrite bool `json:"read_write"`
+ ExpirySeconds *int `json:"expiry_seconds,omitempty"`
+}
+
+// Registry represents a registry.
+type Registry struct {
+ Name string `json:"name,omitempty"`
+ CreatedAt time.Time `json:"created_at,omitempty"`
+}
+
+// Repository represents a repository
+type Repository struct {
+ RegistryName string `json:"registry_name,omitempty"`
+ Name string `json:"name,omitempty"`
+ LatestTag *RepositoryTag `json:"latest_tag,omitempty"`
+ TagCount uint64 `json:"tag_count,omitempty"`
+}
+
+// RepositoryTag represents a repository tag
+type RepositoryTag struct {
+ RegistryName string `json:"registry_name,omitempty"`
+ Repository string `json:"repository,omitempty"`
+ Tag string `json:"tag,omitempty"`
+ ManifestDigest string `json:"manifest_digest,omitempty"`
+ CompressedSizeBytes uint64 `json:"compressed_size_bytes,omitempty"`
+ SizeBytes uint64 `json:"size_bytes,omitempty"`
+ UpdatedAt time.Time `json:"updated_at,omitempty"`
+}
+
+type registryRoot struct {
+ Registry *Registry `json:"registry,omitempty"`
+}
+
+type repositoriesRoot struct {
+ Repositories []*Repository `json:"repositories,omitempty"`
+ Links *Links `json:"links,omitempty"`
+ Meta *Meta `json:"meta"`
+}
+
+type repositoryTagsRoot struct {
+ Tags []*RepositoryTag `json:"tags,omitempty"`
+ Links *Links `json:"links,omitempty"`
+ Meta *Meta `json:"meta"`
+}
+
+// GarbageCollection represents a garbage collection.
+type GarbageCollection struct {
+ UUID string `json:"uuid"`
+ RegistryName string `json:"registry_name"`
+ Status string `json:"status"`
+ Type GarbageCollectionType `json:"type"`
+ CreatedAt time.Time `json:"created_at"`
+ UpdatedAt time.Time `json:"updated_at"`
+ BlobsDeleted uint64 `json:"blobs_deleted"`
+ FreedBytes uint64 `json:"freed_bytes"`
+}
+
+type garbageCollectionRoot struct {
+ GarbageCollection *GarbageCollection `json:"garbage_collection,omitempty"`
+}
+
+type garbageCollectionsRoot struct {
+ GarbageCollections []*GarbageCollection `json:"garbage_collections,omitempty"`
+ Links *Links `json:"links,omitempty"`
+ Meta *Meta `json:"meta"`
+}
+
+type GarbageCollectionType string
+
+const (
+ // GCTypeUntaggedManifestsOnly indicates that a garbage collection should
+ // only delete untagged manifests.
+ GCTypeUntaggedManifestsOnly = GarbageCollectionType("untagged manifests only")
+ // GCTypeUnreferencedBlobsOnly indicates that a garbage collection should
+ // only delete unreferenced blobs.
+ GCTypeUnreferencedBlobsOnly = GarbageCollectionType("unreferenced blobs only")
+ // GCTypeUntaggedManifestsAndUnreferencedBlobs indicates that a garbage
+ // collection should delete both untagged manifests and unreferenced blobs.
+ GCTypeUntaggedManifestsAndUnreferencedBlobs = GarbageCollectionType("untagged manifests and unreferenced blobs")
+)
+
+// StartGarbageCollectionRequest represents options to a garbage collection
+// start request.
+type StartGarbageCollectionRequest struct {
+ Type GarbageCollectionType `json:"type"`
+}
+
+// UpdateGarbageCollectionRequest represents a request to update a garbage
+// collection.
+type UpdateGarbageCollectionRequest struct {
+ Cancel bool `json:"cancel"`
+}
+
+// RegistryOptions are options for users when creating or updating a registry.
+type RegistryOptions struct {
+ SubscriptionTiers []*RegistrySubscriptionTier `json:"subscription_tiers,omitempty"`
+}
+
+type registryOptionsRoot struct {
+ Options *RegistryOptions `json:"options"`
+}
+
+// RegistrySubscriptionTier is a subscription tier for container registry.
+type RegistrySubscriptionTier struct {
+ Name string `json:"name"`
+ Slug string `json:"slug"`
+ IncludedRepositories uint64 `json:"included_repositories"`
+ IncludedStorageBytes uint64 `json:"included_storage_bytes"`
+ AllowStorageOverage bool `json:"allow_storage_overage"`
+ IncludedBandwidthBytes uint64 `json:"included_bandwidth_bytes"`
+ MonthlyPriceInCents uint64 `json:"monthly_price_in_cents"`
+ Eligible bool `json:"eligible,omitempty"`
+ // EligibilityReaons is included when Eligible is false, and indicates the
+ // reasons why this tier is not availble to the user.
+ EligibilityReasons []string `json:"eligibility_reasons,omitempty"`
+}
+
+// RegistrySubscription is a user's subscription.
+type RegistrySubscription struct {
+ Tier *RegistrySubscriptionTier `json:"tier"`
+ CreatedAt time.Time `json:"created_at"`
+ UpdatedAt time.Time `json:"updated_at"`
+}
+
+type registrySubscriptionRoot struct {
+ Subscription *RegistrySubscription `json:"subscription"`
+}
+
+// RegistrySubscriptionUpdateRequest represents a request to update the
+// subscription plan for a registry.
+type RegistrySubscriptionUpdateRequest struct {
+ TierSlug string `json:"tier_slug"`
+}
+
+// Get retrieves the details of a Registry.
+func (svc *RegistryServiceOp) Get(ctx context.Context) (*Registry, *Response, error) {
+ req, err := svc.client.NewRequest(ctx, http.MethodGet, registryPath, nil)
+ if err != nil {
+ return nil, nil, err
+ }
+ root := new(registryRoot)
+ resp, err := svc.client.Do(ctx, req, root)
+ if err != nil {
+ return nil, resp, err
+ }
+ return root.Registry, resp, nil
+}
+
+// Create creates a registry.
+func (svc *RegistryServiceOp) Create(ctx context.Context, create *RegistryCreateRequest) (*Registry, *Response, error) {
+ req, err := svc.client.NewRequest(ctx, http.MethodPost, registryPath, create)
+ if err != nil {
+ return nil, nil, err
+ }
+ root := new(registryRoot)
+ resp, err := svc.client.Do(ctx, req, root)
+ if err != nil {
+ return nil, resp, err
+ }
+ return root.Registry, resp, nil
+}
+
+// Delete deletes a registry. There is no way to recover a registry once it has
+// been destroyed.
+func (svc *RegistryServiceOp) Delete(ctx context.Context) (*Response, error) {
+ req, err := svc.client.NewRequest(ctx, http.MethodDelete, registryPath, nil)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := svc.client.Do(ctx, req, nil)
+ if err != nil {
+ return resp, err
+ }
+ return resp, nil
+}
+
+// DockerCredentials is the content of a Docker config file
+// that is used by the docker CLI
+// See: https://docs.docker.com/engine/reference/commandline/cli/#configjson-properties
+type DockerCredentials struct {
+ DockerConfigJSON []byte
+}
+
+// DockerCredentials retrieves a Docker config file containing the registry's credentials.
+func (svc *RegistryServiceOp) DockerCredentials(ctx context.Context, request *RegistryDockerCredentialsRequest) (*DockerCredentials, *Response, error) {
+ path := fmt.Sprintf("%s/%s", registryPath, "docker-credentials")
+ req, err := svc.client.NewRequest(ctx, http.MethodGet, path, nil)
+ if err != nil {
+ return nil, nil, err
+ }
+
+ q := req.URL.Query()
+ q.Add("read_write", strconv.FormatBool(request.ReadWrite))
+ if request.ExpirySeconds != nil {
+ q.Add("expiry_seconds", strconv.Itoa(*request.ExpirySeconds))
+ }
+ req.URL.RawQuery = q.Encode()
+
+ var buf bytes.Buffer
+ resp, err := svc.client.Do(ctx, req, &buf)
+ if err != nil {
+ return nil, resp, err
+ }
+
+ dc := &DockerCredentials{
+ DockerConfigJSON: buf.Bytes(),
+ }
+ return dc, resp, nil
+}
+
+// ListRepositories returns a list of the Repositories visible with the registry's credentials.
+func (svc *RegistryServiceOp) ListRepositories(ctx context.Context, registry string, opts *ListOptions) ([]*Repository, *Response, error) {
+ path := fmt.Sprintf("%s/%s/repositories", registryPath, registry)
+ path, err := addOptions(path, opts)
+ if err != nil {
+ return nil, nil, err
+ }
+ req, err := svc.client.NewRequest(ctx, http.MethodGet, path, nil)
+ if err != nil {
+ return nil, nil, err
+ }
+ root := new(repositoriesRoot)
+
+ resp, err := svc.client.Do(ctx, req, root)
+ if err != nil {
+ return nil, resp, err
+ }
+
+ if l := root.Links; l != nil {
+ resp.Links = l
+ }
+ if m := root.Meta; m != nil {
+ resp.Meta = m
+ }
+
+ return root.Repositories, resp, nil
+}
+
+// ListRepositoryTags returns a list of the RepositoryTags available within the given repository.
+func (svc *RegistryServiceOp) ListRepositoryTags(ctx context.Context, registry, repository string, opts *ListOptions) ([]*RepositoryTag, *Response, error) {
+ path := fmt.Sprintf("%s/%s/repositories/%s/tags", registryPath, registry, url.PathEscape(repository))
+ path, err := addOptions(path, opts)
+ if err != nil {
+ return nil, nil, err
+ }
+ req, err := svc.client.NewRequest(ctx, http.MethodGet, path, nil)
+ if err != nil {
+ return nil, nil, err
+ }
+ root := new(repositoryTagsRoot)
+
+ resp, err := svc.client.Do(ctx, req, root)
+ if err != nil {
+ return nil, resp, err
+ }
+
+ if l := root.Links; l != nil {
+ resp.Links = l
+ }
+ if m := root.Meta; m != nil {
+ resp.Meta = m
+ }
+
+ return root.Tags, resp, nil
+}
+
+// DeleteTag deletes a tag within a given repository.
+func (svc *RegistryServiceOp) DeleteTag(ctx context.Context, registry, repository, tag string) (*Response, error) {
+ path := fmt.Sprintf("%s/%s/repositories/%s/tags/%s", registryPath, registry, url.PathEscape(repository), tag)
+ req, err := svc.client.NewRequest(ctx, http.MethodDelete, path, nil)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := svc.client.Do(ctx, req, nil)
+ if err != nil {
+ return resp, err
+ }
+
+ return resp, nil
+}
+
+// DeleteManifest deletes a manifest by its digest within a given repository.
+func (svc *RegistryServiceOp) DeleteManifest(ctx context.Context, registry, repository, digest string) (*Response, error) {
+ path := fmt.Sprintf("%s/%s/repositories/%s/digests/%s", registryPath, registry, url.PathEscape(repository), digest)
+ req, err := svc.client.NewRequest(ctx, http.MethodDelete, path, nil)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := svc.client.Do(ctx, req, nil)
+ if err != nil {
+ return resp, err
+ }
+
+ return resp, nil
+}
+
+// StartGarbageCollection requests a garbage collection for the specified
+// registry.
+func (svc *RegistryServiceOp) StartGarbageCollection(ctx context.Context, registry string, request ...*StartGarbageCollectionRequest) (*GarbageCollection, *Response, error) {
+ path := fmt.Sprintf("%s/%s/garbage-collection", registryPath, registry)
+ var requestParams interface{}
+ if len(request) < 1 {
+ // default to only garbage collecting unreferenced blobs for backwards
+ // compatibility
+ requestParams = &StartGarbageCollectionRequest{
+ Type: GCTypeUnreferencedBlobsOnly,
+ }
+ } else {
+ requestParams = request[0]
+ }
+ req, err := svc.client.NewRequest(ctx, http.MethodPost, path, requestParams)
+ if err != nil {
+ return nil, nil, err
+ }
+
+ root := new(garbageCollectionRoot)
+ resp, err := svc.client.Do(ctx, req, root)
+ if err != nil {
+ return nil, resp, err
+ }
+
+ return root.GarbageCollection, resp, err
+}
+
+// GetGarbageCollection retrieves the currently-active garbage collection for
+// the specified registry; if there are no active garbage collections, then
+// return a 404/NotFound error. There can only be one active garbage
+// collection on a registry.
+func (svc *RegistryServiceOp) GetGarbageCollection(ctx context.Context, registry string) (*GarbageCollection, *Response, error) {
+ path := fmt.Sprintf("%s/%s/garbage-collection", registryPath, registry)
+ req, err := svc.client.NewRequest(ctx, http.MethodGet, path, nil)
+ if err != nil {
+ return nil, nil, err
+ }
+
+ root := new(garbageCollectionRoot)
+ resp, err := svc.client.Do(ctx, req, root)
+ if err != nil {
+ return nil, resp, err
+ }
+
+ return root.GarbageCollection, resp, nil
+}
+
+// ListGarbageCollections retrieves all garbage collections (active and
+// inactive) for the specified registry.
+func (svc *RegistryServiceOp) ListGarbageCollections(ctx context.Context, registry string, opts *ListOptions) ([]*GarbageCollection, *Response, error) {
+ path := fmt.Sprintf("%s/%s/garbage-collections", registryPath, registry)
+ path, err := addOptions(path, opts)
+ if err != nil {
+ return nil, nil, err
+ }
+ req, err := svc.client.NewRequest(ctx, http.MethodGet, path, nil)
+ if err != nil {
+ return nil, nil, err
+ }
+
+ root := new(garbageCollectionsRoot)
+ resp, err := svc.client.Do(ctx, req, root)
+ if err != nil {
+ return nil, resp, err
+ }
+
+ if root.Links != nil {
+ resp.Links = root.Links
+ }
+ if root.Meta != nil {
+ resp.Meta = root.Meta
+ }
+
+ return root.GarbageCollections, resp, nil
+}
+
+// UpdateGarbageCollection updates the specified garbage collection for the
+// specified registry. While only the currently-active garbage collection can
+// be updated we still require the exact garbage collection to be specified to
+// avoid race conditions that might may arise from issuing an update to the
+// implicit "currently-active" garbage collection. Returns the updated garbage
+// collection.
+func (svc *RegistryServiceOp) UpdateGarbageCollection(ctx context.Context, registry, gcUUID string, request *UpdateGarbageCollectionRequest) (*GarbageCollection, *Response, error) {
+ path := fmt.Sprintf("%s/%s/garbage-collection/%s", registryPath, registry, gcUUID)
+ req, err := svc.client.NewRequest(ctx, http.MethodPut, path, request)
+ if err != nil {
+ return nil, nil, err
+ }
+
+ root := new(garbageCollectionRoot)
+ resp, err := svc.client.Do(ctx, req, root)
+ if err != nil {
+ return nil, resp, err
+ }
+
+ return root.GarbageCollection, resp, nil
+}
+
+// GetOptions returns options the user can use when creating or updating a
+// registry.
+func (svc *RegistryServiceOp) GetOptions(ctx context.Context) (*RegistryOptions, *Response, error) {
+ path := fmt.Sprintf("%s/options", registryPath)
+ req, err := svc.client.NewRequest(ctx, http.MethodGet, path, nil)
+ if err != nil {
+ return nil, nil, err
+ }
+
+ root := new(registryOptionsRoot)
+ resp, err := svc.client.Do(ctx, req, root)
+ if err != nil {
+ return nil, resp, err
+ }
+
+ return root.Options, resp, nil
+}
+
+// GetSubscription retrieves the user's subscription.
+func (svc *RegistryServiceOp) GetSubscription(ctx context.Context) (*RegistrySubscription, *Response, error) {
+ path := fmt.Sprintf("%s/subscription", registryPath)
+ req, err := svc.client.NewRequest(ctx, http.MethodGet, path, nil)
+ if err != nil {
+ return nil, nil, err
+ }
+ root := new(registrySubscriptionRoot)
+ resp, err := svc.client.Do(ctx, req, root)
+ if err != nil {
+ return nil, resp, err
+ }
+ return root.Subscription, resp, nil
+}
+
+// UpdateSubscription updates the user's registry subscription.
+func (svc *RegistryServiceOp) UpdateSubscription(ctx context.Context, request *RegistrySubscriptionUpdateRequest) (*RegistrySubscription, *Response, error) {
+ path := fmt.Sprintf("%s/subscription", registryPath)
+ req, err := svc.client.NewRequest(ctx, http.MethodPost, path, request)
+ if err != nil {
+ return nil, nil, err
+ }
+ root := new(registrySubscriptionRoot)
+ resp, err := svc.client.Do(ctx, req, root)
+ if err != nil {
+ return nil, resp, err
+ }
+ return root.Subscription, resp, nil
+}
diff --git a/vendor/github.com/digitalocean/godo/sizes.go b/vendor/github.com/digitalocean/godo/sizes.go
index da8207c0..d2b93ea7 100644
--- a/vendor/github.com/digitalocean/godo/sizes.go
+++ b/vendor/github.com/digitalocean/godo/sizes.go
@@ -40,6 +40,7 @@ func (s Size) String() string {
type sizesRoot struct {
Sizes []Size
Links *Links `json:"links"`
+ Meta *Meta `json:"meta"`
}
// List all images
@@ -63,6 +64,9 @@ func (s *SizesServiceOp) List(ctx context.Context, opt *ListOptions) ([]Size, *R
if l := root.Links; l != nil {
resp.Links = l
}
+ if m := root.Meta; m != nil {
+ resp.Meta = m
+ }
return root.Sizes, resp, err
}
diff --git a/vendor/github.com/digitalocean/godo/snapshots.go b/vendor/github.com/digitalocean/godo/snapshots.go
index 17e62cbf..cf95ccc0 100644
--- a/vendor/github.com/digitalocean/godo/snapshots.go
+++ b/vendor/github.com/digitalocean/godo/snapshots.go
@@ -47,6 +47,7 @@ type snapshotRoot struct {
type snapshotsRoot struct {
Snapshots []Snapshot `json:"snapshots"`
Links *Links `json:"links,omitempty"`
+ Meta *Meta `json:"meta,omitempty"`
}
type listSnapshotOptions struct {
diff --git a/vendor/github.com/digitalocean/godo/storage.go b/vendor/github.com/digitalocean/godo/storage.go
index a4e13f8a..43856e38 100644
--- a/vendor/github.com/digitalocean/godo/storage.go
+++ b/vendor/github.com/digitalocean/godo/storage.go
@@ -15,7 +15,7 @@ const (
// StorageService is an interface for interfacing with the storage
// endpoints of the Digital Ocean API.
-// See: https://developers.digitalocean.com/documentation/v2#storage
+// See: https://developers.digitalocean.com/documentation/v2/#block-storage
type StorageService interface {
ListVolumes(context.Context, *ListVolumeParams) ([]Volume, *Response, error)
GetVolume(context.Context, string) (*Volume, *Response, error)
@@ -60,6 +60,7 @@ func (f Volume) String() string {
return Stringify(f)
}
+// URN returns the volume ID as a valid DO API URN
func (f Volume) URN() string {
return ToURN("Volume", f.ID)
}
@@ -67,6 +68,7 @@ func (f Volume) URN() string {
type storageVolumesRoot struct {
Volumes []Volume `json:"volumes"`
Links *Links `json:"links"`
+ Meta *Meta `json:"meta"`
}
type storageVolumeRoot struct {
@@ -122,6 +124,9 @@ func (svc *StorageServiceOp) ListVolumes(ctx context.Context, params *ListVolume
if l := root.Links; l != nil {
resp.Links = l
}
+ if m := root.Meta; m != nil {
+ resp.Meta = m
+ }
return root.Volumes, resp, nil
}
@@ -203,6 +208,9 @@ func (svc *StorageServiceOp) ListSnapshots(ctx context.Context, volumeID string,
if l := root.Links; l != nil {
resp.Links = l
}
+ if m := root.Meta; m != nil {
+ resp.Meta = m
+ }
return root.Snapshots, resp, nil
}
diff --git a/vendor/github.com/digitalocean/godo/storage_actions.go b/vendor/github.com/digitalocean/godo/storage_actions.go
index 94889756..234aba90 100644
--- a/vendor/github.com/digitalocean/godo/storage_actions.go
+++ b/vendor/github.com/digitalocean/godo/storage_actions.go
@@ -120,6 +120,9 @@ func (s *StorageActionsServiceOp) list(ctx context.Context, path string) ([]Acti
if l := root.Links; l != nil {
resp.Links = l
}
+ if m := root.Meta; m != nil {
+ resp.Meta = m
+ }
return root.Actions, resp, err
}
diff --git a/vendor/github.com/digitalocean/godo/strings.go b/vendor/github.com/digitalocean/godo/strings.go
index 4d5c0ad2..f92893ed 100644
--- a/vendor/github.com/digitalocean/godo/strings.go
+++ b/vendor/github.com/digitalocean/godo/strings.go
@@ -10,6 +10,8 @@ import (
var timestampType = reflect.TypeOf(Timestamp{})
+// ResourceWithURN is an interface for interfacing with the types
+// that implement the URN method.
type ResourceWithURN interface {
URN() string
}
diff --git a/vendor/github.com/digitalocean/godo/tags.go b/vendor/github.com/digitalocean/godo/tags.go
index 6651e6d1..6301e15f 100644
--- a/vendor/github.com/digitalocean/godo/tags.go
+++ b/vendor/github.com/digitalocean/godo/tags.go
@@ -42,7 +42,9 @@ const (
// LoadBalancerResourceType holds the string representing our ResourceType of LoadBalancer.
LoadBalancerResourceType ResourceType = "load_balancer"
// VolumeSnapshotResourceType holds the string representing our ResourceType for storage Snapshots.
- VolumeSnapshotResourceType ResourceType = "volumesnapshot"
+ VolumeSnapshotResourceType ResourceType = "volume_snapshot"
+ // DatabaseResourceType holds the string representing our ResourceType of Database.
+ DatabaseResourceType ResourceType = "database"
)
// Resource represent a single resource for associating/disassociating with tags
@@ -53,11 +55,13 @@ type Resource struct {
// TaggedResources represent the set of resources a tag is attached to
type TaggedResources struct {
- Count int `json:"count"`
- LastTaggedURI string `json:"last_tagged_uri,omitempty"`
- Droplets *TaggedDropletsResources `json:"droplets,omitempty"`
- Images *TaggedImagesResources `json:"images"`
- Volumes *TaggedVolumesResources `json:"volumes"`
+ Count int `json:"count"`
+ LastTaggedURI string `json:"last_tagged_uri,omitempty"`
+ Droplets *TaggedDropletsResources `json:"droplets,omitempty"`
+ Images *TaggedImagesResources `json:"images"`
+ Volumes *TaggedVolumesResources `json:"volumes"`
+ VolumeSnapshots *TaggedVolumeSnapshotsResources `json:"volume_snapshots"`
+ Databases *TaggedDatabasesResources `json:"databases"`
}
// TaggedDropletsResources represent the droplet resources a tag is attached to
@@ -79,6 +83,12 @@ type TaggedImagesResources TaggedResourcesData
// TaggedVolumesResources represent the volume resources a tag is attached to
type TaggedVolumesResources TaggedResourcesData
+// TaggedVolumeSnapshotsResources represent the volume snapshot resources a tag is attached to
+type TaggedVolumeSnapshotsResources TaggedResourcesData
+
+// TaggedDatabasesResources represent the database resources a tag is attached to
+type TaggedDatabasesResources TaggedResourcesData
+
// Tag represent DigitalOcean tag
type Tag struct {
Name string `json:"name,omitempty"`
@@ -103,6 +113,7 @@ type UntagResourcesRequest struct {
type tagsRoot struct {
Tags []Tag `json:"tags"`
Links *Links `json:"links"`
+ Meta *Meta `json:"meta"`
}
type tagRoot struct {
@@ -131,6 +142,9 @@ func (s *TagsServiceOp) List(ctx context.Context, opt *ListOptions) ([]Tag, *Res
if l := root.Links; l != nil {
resp.Links = l
}
+ if m := root.Meta; m != nil {
+ resp.Meta = m
+ }
return root.Tags, resp, err
}
diff --git a/vendor/github.com/digitalocean/godo/vpcs.go b/vendor/github.com/digitalocean/godo/vpcs.go
index 24752d37..6c7b141c 100644
--- a/vendor/github.com/digitalocean/godo/vpcs.go
+++ b/vendor/github.com/digitalocean/godo/vpcs.go
@@ -29,13 +29,17 @@ type VPCsServiceOp struct {
// VPCCreateRequest represents a request to create a Virtual Private Cloud.
type VPCCreateRequest struct {
- Name string `json:"name,omitempty"`
- RegionSlug string `json:"region,omitempty"`
+ Name string `json:"name,omitempty"`
+ RegionSlug string `json:"region,omitempty"`
+ Description string `json:"description,omitempty"`
+ IPRange string `json:"ip_range,omitempty"`
}
// VPCUpdateRequest represents a request to update a Virtual Private Cloud.
type VPCUpdateRequest struct {
- Name string `json:"name,omitempty"`
+ Name string `json:"name,omitempty"`
+ Description string `json:"description,omitempty"`
+ Default *bool `json:"default,omitempty"`
}
// VPCSetField allows one to set individual fields within a VPC configuration.
@@ -47,13 +51,30 @@ type VPCSetField interface {
// Ex.: VPCs.Set(..., VPCSetName("new-name"))
type VPCSetName string
+// VPCSetDescription is used when one want to set the `description` field of a VPC.
+// Ex.: VPCs.Set(..., VPCSetDescription("vpc description"))
+type VPCSetDescription string
+
+// VPCSetDefault is used when one wants to enable the `default` field of a VPC, to
+// set a VPC as the default one in the region
+// Ex.: VPCs.Set(..., VPCSetDefault())
+func VPCSetDefault() VPCSetField {
+ return &vpcSetDefault{}
+}
+
+// vpcSetDefault satisfies the VPCSetField interface
+type vpcSetDefault struct{}
+
// VPC represents a DigitalOcean Virtual Private Cloud configuration.
type VPC struct {
- ID string `json:"id,omitempty"`
- Name string `json:"name,omitempty"`
- RegionSlug string `json:"region,omitempty"`
- CreatedAt time.Time `json:"created_at,omitempty"`
- Default bool `json:"default,omitempty"`
+ ID string `json:"id,omitempty"`
+ URN string `json:"urn"`
+ Name string `json:"name,omitempty"`
+ Description string `json:"description,omitempty"`
+ IPRange string `json:"ip_range,omitempty"`
+ RegionSlug string `json:"region,omitempty"`
+ CreatedAt time.Time `json:"created_at,omitempty"`
+ Default bool `json:"default,omitempty"`
}
type vpcRoot struct {
@@ -63,6 +84,7 @@ type vpcRoot struct {
type vpcsRoot struct {
VPCs []*VPC `json:"vpcs"`
Links *Links `json:"links"`
+ Meta *Meta `json:"meta"`
}
// Get returns the details of a Virtual Private Cloud.
@@ -118,6 +140,9 @@ func (v *VPCsServiceOp) List(ctx context.Context, opt *ListOptions) ([]*VPC, *Re
if l := root.Links; l != nil {
resp.Links = l
}
+ if m := root.Meta; m != nil {
+ resp.Meta = m
+ }
return root.VPCs, resp, nil
}
@@ -143,6 +168,14 @@ func (n VPCSetName) vpcSetField(in map[string]interface{}) {
in["name"] = n
}
+func (n VPCSetDescription) vpcSetField(in map[string]interface{}) {
+ in["description"] = n
+}
+
+func (*vpcSetDefault) vpcSetField(in map[string]interface{}) {
+ in["default"] = true
+}
+
// Set updates specific properties of a Virtual Private Cloud.
func (v *VPCsServiceOp) Set(ctx context.Context, id string, fields ...VPCSetField) (*VPC, *Response, error) {
path := vpcsBasePath + "/" + id
diff --git a/vendor/github.com/go-logr/logr/BUILD.bazel b/vendor/github.com/go-logr/logr/BUILD.bazel
index c08eca10..e2af13c8 100644
--- a/vendor/github.com/go-logr/logr/BUILD.bazel
+++ b/vendor/github.com/go-logr/logr/BUILD.bazel
@@ -2,7 +2,10 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library")
go_library(
name = "go_default_library",
- srcs = ["logr.go"],
+ srcs = [
+ "discard.go",
+ "logr.go",
+ ],
importmap = "kope.io/etcd-manager/vendor/github.com/go-logr/logr",
importpath = "github.com/go-logr/logr",
visibility = ["//visibility:public"],
diff --git a/vendor/github.com/go-logr/logr/README.md b/vendor/github.com/go-logr/logr/README.md
index aca17f38..e9b5520a 100644
--- a/vendor/github.com/go-logr/logr/README.md
+++ b/vendor/github.com/go-logr/logr/README.md
@@ -41,6 +41,8 @@ There are implementations for the following logging libraries:
- **log** (the Go standard library logger):
[stdr](https://github.com/go-logr/stdr)
- **github.com/sirupsen/logrus**: [logrusr](https://github.com/bombsimon/logrusr)
+- **github.com/wojas/genericr**: [genericr](https://github.com/wojas/genericr) (makes it easy to implement your own backend)
+- **logfmt** (Heroku style [logging](https://www.brandur.org/logfmt)): [logfmtr](https://github.com/iand/logfmtr)
# FAQ
diff --git a/vendor/github.com/go-logr/logr/discard.go b/vendor/github.com/go-logr/logr/discard.go
new file mode 100644
index 00000000..267c796c
--- /dev/null
+++ b/vendor/github.com/go-logr/logr/discard.go
@@ -0,0 +1,35 @@
+package logr
+
+// Discard returns a valid Logger that discards all messages logged to it.
+// It can be used whenever the caller is not interested in the logs.
+func Discard() Logger {
+ return discardLogger{}
+}
+
+// discardLogger is a Logger that discards all messages.
+type discardLogger struct{}
+
+func (l discardLogger) Enabled() bool {
+ return false
+}
+
+func (l discardLogger) Info(msg string, keysAndValues ...interface{}) {
+}
+
+func (l discardLogger) Error(err error, msg string, keysAndValues ...interface{}) {
+}
+
+func (l discardLogger) V(level int) Logger {
+ return l
+}
+
+func (l discardLogger) WithValues(keysAndValues ...interface{}) Logger {
+ return l
+}
+
+func (l discardLogger) WithName(name string) Logger {
+ return l
+}
+
+// Verify that it actually implements the interface
+var _ Logger = discardLogger{}
diff --git a/vendor/github.com/go-logr/logr/logr.go b/vendor/github.com/go-logr/logr/logr.go
index e7d66dad..e86896c6 100644
--- a/vendor/github.com/go-logr/logr/logr.go
+++ b/vendor/github.com/go-logr/logr/logr.go
@@ -40,17 +40,16 @@ limitations under the License.
// we want to log that we've made some decision.
//
// With the traditional log package, we might write:
-// log.Printf(
-// "decided to set field foo to value %q for object %s/%s",
+// log.Printf("decided to set field foo to value %q for object %s/%s",
// targetValue, object.Namespace, object.Name)
//
// With logr's structured logging, we'd write:
-// // elsewhere in the file, set up the logger to log with the prefix of "reconcilers",
-// // and the named value target-type=Foo, for extra context.
-// log := mainLogger.WithName("reconcilers").WithValues("target-type", "Foo")
+// // elsewhere in the file, set up the logger to log with the prefix of
+// // "reconcilers", and the named value target-type=Foo, for extra context.
+// log := mainLogger.WithName("reconcilers").WithValues("target-type", "Foo")
//
-// // later on...
-// log.Info("setting field foo on object", "value", targetValue, "object", object)
+// // later on...
+// log.Info("setting foo on object", "value", targetValue, "object", object)
//
// Depending on our logging implementation, we could then make logging decisions
// based on field values (like only logging such events for objects in a certain
@@ -78,9 +77,9 @@ limitations under the License.
// Each log message from a Logger has four types of context:
// logger name, log verbosity, log message, and the named values.
//
-// The Logger name constists of a series of name "segments" added by successive
+// The Logger name consists of a series of name "segments" added by successive
// calls to WithName. These name segments will be joined in some way by the
-// underlying implementation. It is strongly reccomended that name segements
+// underlying implementation. It is strongly recommended that name segments
// contain simple identifiers (letters, digits, and hyphen), and do not contain
// characters that could muddle the log output or confuse the joining operation
// (e.g. whitespace, commas, periods, slashes, brackets, quotes, etc).
@@ -91,8 +90,8 @@ limitations under the License.
// and log messages for users to filter on. It's illegal to pass a log level
// below zero.
//
-// The log message consists of a constant message attached to the the log line.
-// This should generally be a simple description of what's occuring, and should
+// The log message consists of a constant message attached to the log line.
+// This should generally be a simple description of what's occurring, and should
// never be a format string.
//
// Variable information can then be attached using named values (key/value
@@ -125,11 +124,25 @@ limitations under the License.
// - `"ts"`: the timestamp for a log line.
//
// Implementations are encouraged to make use of these keys to represent the
-// above concepts, when neccessary (for example, in a pure-JSON output form, it
+// above concepts, when necessary (for example, in a pure-JSON output form, it
// would be necessary to represent at least message and timestamp as ordinary
// named values).
+//
+// Implementations may choose to give callers access to the underlying
+// logging implementation. The recommended pattern for this is:
+// // Underlier exposes access to the underlying logging implementation.
+// // Since callers only have a logr.Logger, they have to know which
+// // implementation is in use, so this interface is less of an abstraction
+// // and more of way to test type conversion.
+// type Underlier interface {
+// GetUnderlying()
+// }
package logr
+import (
+ "context"
+)
+
// TODO: consider adding back in format strings if they're really needed
// TODO: consider other bits of zap/zapcore functionality like ObjectMarshaller (for arbitrary objects)
// TODO: consider other bits of glog functionality like Flush, InfoDepth, OutputStats
@@ -171,7 +184,7 @@ type Logger interface {
// WithName adds a new element to the logger's name.
// Successive calls with WithName continue to append
- // suffixes to the logger's name. It's strongly reccomended
+ // suffixes to the logger's name. It's strongly recommended
// that name segments contain only letters, digits, and hyphens
// (see the package documentation for more information).
WithName(name string) Logger
@@ -180,3 +193,30 @@ type Logger interface {
// InfoLogger provides compatibility with code that relies on the v0.1.0 interface
// Deprecated: use Logger instead. This will be removed in a future release.
type InfoLogger = Logger
+
+type contextKey struct{}
+
+// FromContext returns a Logger constructed from ctx or nil if no
+// logger details are found.
+func FromContext(ctx context.Context) Logger {
+ if v, ok := ctx.Value(contextKey{}).(Logger); ok {
+ return v
+ }
+
+ return nil
+}
+
+// FromContextOrDiscard returns a Logger constructed from ctx or a Logger
+// that discards all messages if no logger details are found.
+func FromContextOrDiscard(ctx context.Context) Logger {
+ if v, ok := ctx.Value(contextKey{}).(Logger); ok {
+ return v
+ }
+
+ return discardLogger{}
+}
+
+// NewContext returns a new context derived from ctx that embeds the Logger.
+func NewContext(ctx context.Context, l Logger) context.Context {
+ return context.WithValue(ctx, contextKey{}, l)
+}
diff --git a/vendor/github.com/google/uuid/README.md b/vendor/github.com/google/uuid/README.md
index 9d92c11f..f765a46f 100644
--- a/vendor/github.com/google/uuid/README.md
+++ b/vendor/github.com/google/uuid/README.md
@@ -16,4 +16,4 @@ change is the ability to represent an invalid UUID (vs a NIL UUID).
Full `go doc` style documentation for the package can be viewed online without
installing this package by using the GoDoc site here:
-http://godoc.org/github.com/google/uuid
+http://pkg.go.dev/github.com/google/uuid
diff --git a/vendor/github.com/google/uuid/marshal.go b/vendor/github.com/google/uuid/marshal.go
index 7f9e0c6c..14bd3407 100644
--- a/vendor/github.com/google/uuid/marshal.go
+++ b/vendor/github.com/google/uuid/marshal.go
@@ -16,10 +16,11 @@ func (uuid UUID) MarshalText() ([]byte, error) {
// UnmarshalText implements encoding.TextUnmarshaler.
func (uuid *UUID) UnmarshalText(data []byte) error {
id, err := ParseBytes(data)
- if err == nil {
- *uuid = id
+ if err != nil {
+ return err
}
- return err
+ *uuid = id
+ return nil
}
// MarshalBinary implements encoding.BinaryMarshaler.
diff --git a/vendor/github.com/google/uuid/version1.go b/vendor/github.com/google/uuid/version1.go
index 199a1ac6..46310962 100644
--- a/vendor/github.com/google/uuid/version1.go
+++ b/vendor/github.com/google/uuid/version1.go
@@ -17,12 +17,6 @@ import (
//
// In most cases, New should be used.
func NewUUID() (UUID, error) {
- nodeMu.Lock()
- if nodeID == zeroID {
- setNodeInterface("")
- }
- nodeMu.Unlock()
-
var uuid UUID
now, seq, err := GetTime()
if err != nil {
@@ -38,7 +32,13 @@ func NewUUID() (UUID, error) {
binary.BigEndian.PutUint16(uuid[4:], timeMid)
binary.BigEndian.PutUint16(uuid[6:], timeHi)
binary.BigEndian.PutUint16(uuid[8:], seq)
+
+ nodeMu.Lock()
+ if nodeID == zeroID {
+ setNodeInterface("")
+ }
copy(uuid[10:], nodeID[:])
+ nodeMu.Unlock()
return uuid, nil
}
diff --git a/vendor/github.com/google/uuid/version4.go b/vendor/github.com/google/uuid/version4.go
index 84af91c9..c110465d 100644
--- a/vendor/github.com/google/uuid/version4.go
+++ b/vendor/github.com/google/uuid/version4.go
@@ -27,8 +27,13 @@ func New() UUID {
// equivalent to the odds of creating a few tens of trillions of UUIDs in a
// year and having one duplicate.
func NewRandom() (UUID, error) {
+ return NewRandomFromReader(rander)
+}
+
+// NewRandomFromReader returns a UUID based on bytes read from a given io.Reader.
+func NewRandomFromReader(r io.Reader) (UUID, error) {
var uuid UUID
- _, err := io.ReadFull(rander, uuid[:])
+ _, err := io.ReadFull(r, uuid[:])
if err != nil {
return Nil, err
}
diff --git a/vendor/github.com/mattn/go-ieproxy/.gitignore b/vendor/github.com/mattn/go-ieproxy/.gitignore
new file mode 100644
index 00000000..bc8a670e
--- /dev/null
+++ b/vendor/github.com/mattn/go-ieproxy/.gitignore
@@ -0,0 +1 @@
+.idea/*
\ No newline at end of file
diff --git a/vendor/github.com/mattn/go-ieproxy/BUILD.bazel b/vendor/github.com/mattn/go-ieproxy/BUILD.bazel
new file mode 100644
index 00000000..240bb9d1
--- /dev/null
+++ b/vendor/github.com/mattn/go-ieproxy/BUILD.bazel
@@ -0,0 +1,29 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_library")
+
+go_library(
+ name = "go_default_library",
+ srcs = [
+ "ieproxy.go",
+ "ieproxy_unix.go",
+ "ieproxy_windows.go",
+ "kernel32_data_windows.go",
+ "pac_unix.go",
+ "pac_windows.go",
+ "proxy_middleman.go",
+ "proxy_middleman_unix.go",
+ "proxy_middleman_windows.go",
+ "utils.go",
+ "winhttp_data_windows.go",
+ ],
+ importmap = "kope.io/etcd-manager/vendor/github.com/mattn/go-ieproxy",
+ importpath = "github.com/mattn/go-ieproxy",
+ visibility = ["//visibility:public"],
+ deps = select({
+ "@io_bazel_rules_go//go/platform:windows": [
+ "//vendor/golang.org/x/net/http/httpproxy:go_default_library",
+ "//vendor/golang.org/x/sys/windows:go_default_library",
+ "//vendor/golang.org/x/sys/windows/registry:go_default_library",
+ ],
+ "//conditions:default": [],
+ }),
+)
diff --git a/vendor/github.com/mattn/go-ieproxy/LICENSE b/vendor/github.com/mattn/go-ieproxy/LICENSE
new file mode 100644
index 00000000..7b7c0f85
--- /dev/null
+++ b/vendor/github.com/mattn/go-ieproxy/LICENSE
@@ -0,0 +1,23 @@
+MIT License
+
+Copyright (c) 2014 mattn
+Copyright (c) 2017 oliverpool
+Copyright (c) 2019 Adele Reed
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/vendor/github.com/mattn/go-ieproxy/README.md b/vendor/github.com/mattn/go-ieproxy/README.md
new file mode 100644
index 00000000..fbc801ae
--- /dev/null
+++ b/vendor/github.com/mattn/go-ieproxy/README.md
@@ -0,0 +1,49 @@
+# ieproxy
+
+Go package to detect the proxy settings on Windows platform.
+
+The settings are initially attempted to be read from the [`WinHttpGetIEProxyConfigForCurrentUser` DLL call](https://docs.microsoft.com/en-us/windows/desktop/api/winhttp/nf-winhttp-winhttpgetieproxyconfigforcurrentuser), but falls back to the registry (`CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings`) in the event the DLL call fails.
+
+For more information, take a look at the [documentation](https://godoc.org/github.com/mattn/go-ieproxy)
+
+## Methods
+
+You can either obtain a `net/http` compatible proxy function using `ieproxy.GetProxyFunc()`, set environment variables using `ieproxy.OverrideEnvWithStaticProxy()` (though no automatic configuration is available this way), or obtain the proxy settings via `ieproxy.GetConf()`.
+
+| Method | Supported configuration options: |
+|----------------------------------------|-----------------------------------------------|
+| `ieproxy.GetProxyFunc()` | Static, Specified script, and fully automatic |
+| `ieproxy.OverrideEnvWithStaticProxy()` | Static |
+| `ieproxy.GetConf()` | Depends on how you use it |
+
+## Examples
+
+### Using GetProxyFunc():
+
+```go
+func init() {
+ http.DefaultTransport.(*http.Transport).Proxy = ieproxy.GetProxyFunc()
+}
+```
+
+GetProxyFunc acts as a middleman between `net/http` and `mattn/go-ieproxy` in order to select the correct proxy configuration based off the details supplied in the config.
+
+### Using OverrideEnvWithStaticProxy():
+
+```go
+func init() {
+ ieproxy.OverrideEnvWithStaticProxy()
+ http.DefaultTransport.(*http.Transport).Proxy = http.ProxyFromEnvironment
+}
+```
+
+OverrideEnvWithStaticProxy overrides the relevant environment variables (`HTTP_PROXY`, `HTTPS_PROXY`, `NO_PROXY`) with the **static, manually configured** proxy details typically found in the registry.
+
+### Using GetConf():
+
+```go
+func main() {
+ conf := ieproxy.GetConf()
+ //Handle proxies how you want to.
+}
+```
diff --git a/vendor/github.com/mattn/go-ieproxy/go.mod b/vendor/github.com/mattn/go-ieproxy/go.mod
new file mode 100644
index 00000000..4090bb8e
--- /dev/null
+++ b/vendor/github.com/mattn/go-ieproxy/go.mod
@@ -0,0 +1,9 @@
+module github.com/mattn/go-ieproxy
+
+go 1.14
+
+require (
+ golang.org/x/net v0.0.0-20191112182307-2180aed22343
+ golang.org/x/sys v0.0.0-20191112214154-59a1497f0cea
+ golang.org/x/text v0.3.2 // indirect
+)
diff --git a/vendor/github.com/mattn/go-ieproxy/go.sum b/vendor/github.com/mattn/go-ieproxy/go.sum
new file mode 100644
index 00000000..a87acb1e
--- /dev/null
+++ b/vendor/github.com/mattn/go-ieproxy/go.sum
@@ -0,0 +1,11 @@
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/net v0.0.0-20191112182307-2180aed22343 h1:00ohfJ4K98s3m6BGUoBd8nyfp4Yl0GoIKvw5abItTjI=
+golang.org/x/net v0.0.0-20191112182307-2180aed22343/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20191112214154-59a1497f0cea h1:Mz1TMnfJDRJLk8S8OPCoJYgrsp/Se/2TBre2+vwX128=
+golang.org/x/sys v0.0.0-20191112214154-59a1497f0cea/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
+golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
diff --git a/vendor/github.com/mattn/go-ieproxy/ieproxy.go b/vendor/github.com/mattn/go-ieproxy/ieproxy.go
new file mode 100644
index 00000000..51fe18e3
--- /dev/null
+++ b/vendor/github.com/mattn/go-ieproxy/ieproxy.go
@@ -0,0 +1,51 @@
+// Package ieproxy is a utility to retrieve the proxy parameters (especially of Internet Explorer on windows)
+//
+// On windows, it gathers the parameters from the registry (regedit), while it uses env variable on other platforms
+package ieproxy
+
+import "os"
+
+// ProxyConf gathers the configuration for proxy
+type ProxyConf struct {
+ Static StaticProxyConf // static configuration
+ Automatic ProxyScriptConf // script configuration
+}
+
+// StaticProxyConf contains the configuration for static proxy
+type StaticProxyConf struct {
+ // Is the proxy active?
+ Active bool
+ // Proxy address for each scheme (http, https)
+ // "" (empty string) is the fallback proxy
+ Protocols map[string]string
+ // Addresses not to be browsed via the proxy (comma-separated, linux-like)
+ NoProxy string
+}
+
+// ProxyScriptConf contains the configuration for automatic proxy
+type ProxyScriptConf struct {
+ // Is the proxy active?
+ Active bool
+ // PreConfiguredURL of the .pac file.
+ // If this is empty and Active is true, auto-configuration should be assumed.
+ PreConfiguredURL string
+}
+
+// GetConf retrieves the proxy configuration from the Windows Regedit
+func GetConf() ProxyConf {
+ return getConf()
+}
+
+// OverrideEnvWithStaticProxy writes new values to the
+// `http_proxy`, `https_proxy` and `no_proxy` environment variables.
+// The values are taken from the Windows Regedit (should be called in `init()` function - see example)
+func OverrideEnvWithStaticProxy() {
+ overrideEnvWithStaticProxy(GetConf(), os.Setenv)
+}
+
+// FindProxyForURL computes the proxy for a given URL according to the pac file
+func (psc *ProxyScriptConf) FindProxyForURL(URL string) string {
+ return psc.findProxyForURL(URL)
+}
+
+type envSetter func(string, string) error
diff --git a/vendor/github.com/mattn/go-ieproxy/ieproxy_unix.go b/vendor/github.com/mattn/go-ieproxy/ieproxy_unix.go
new file mode 100644
index 00000000..dc2bccfc
--- /dev/null
+++ b/vendor/github.com/mattn/go-ieproxy/ieproxy_unix.go
@@ -0,0 +1,10 @@
+// +build !windows
+
+package ieproxy
+
+func getConf() ProxyConf {
+ return ProxyConf{}
+}
+
+func overrideEnvWithStaticProxy(pc ProxyConf, setenv envSetter) {
+}
diff --git a/vendor/github.com/mattn/go-ieproxy/ieproxy_windows.go b/vendor/github.com/mattn/go-ieproxy/ieproxy_windows.go
new file mode 100644
index 00000000..c7b29c0b
--- /dev/null
+++ b/vendor/github.com/mattn/go-ieproxy/ieproxy_windows.go
@@ -0,0 +1,213 @@
+package ieproxy
+
+import (
+ "strings"
+ "sync"
+ "unsafe"
+
+ "golang.org/x/sys/windows/registry"
+)
+
+type regeditValues struct {
+ ProxyServer string
+ ProxyOverride string
+ ProxyEnable uint64
+ AutoConfigURL string
+}
+
+var once sync.Once
+var windowsProxyConf ProxyConf
+
+// GetConf retrieves the proxy configuration from the Windows Regedit
+func getConf() ProxyConf {
+ once.Do(writeConf)
+ return windowsProxyConf
+}
+
+func writeConf() {
+ proxy := ""
+ proxyByPass := ""
+ autoConfigUrl := ""
+ autoDetect := false
+
+ // Try from IE first.
+ if ieCfg, err := getUserConfigFromWindowsSyscall(); err == nil {
+ defer globalFreeWrapper(ieCfg.lpszProxy)
+ defer globalFreeWrapper(ieCfg.lpszProxyBypass)
+ defer globalFreeWrapper(ieCfg.lpszAutoConfigUrl)
+
+ proxy = StringFromUTF16Ptr(ieCfg.lpszProxy)
+ proxyByPass = StringFromUTF16Ptr(ieCfg.lpszProxyBypass)
+ autoConfigUrl = StringFromUTF16Ptr(ieCfg.lpszAutoConfigUrl)
+ autoDetect = ieCfg.fAutoDetect
+ }
+
+ if proxy == "" && !autoDetect{
+ // Try WinHTTP default proxy.
+ if defaultCfg, err := getDefaultProxyConfiguration(); err == nil {
+ defer globalFreeWrapper(defaultCfg.lpszProxy)
+ defer globalFreeWrapper(defaultCfg.lpszProxyBypass)
+
+ // Always set both of these (they are a pair, it doesn't make sense to set one here and keep the value of the other from above)
+ proxy = StringFromUTF16Ptr(defaultCfg.lpszProxy)
+ proxyByPass = StringFromUTF16Ptr(defaultCfg.lpszProxyBypass)
+ }
+ }
+
+ if proxy == "" && !autoDetect {
+ // Fall back to IE registry or manual detection if nothing is found there..
+ regedit, _ := readRegedit() // If the syscall fails, backup to manual detection.
+ windowsProxyConf = parseRegedit(regedit)
+ return
+ }
+
+ // Setting the proxy settings.
+ windowsProxyConf = ProxyConf{
+ Static: StaticProxyConf{
+ Active: len(proxy) > 0,
+ },
+ Automatic: ProxyScriptConf{
+ Active: len(autoConfigUrl) > 0 || autoDetect,
+ },
+ }
+
+ if windowsProxyConf.Static.Active {
+ protocol := make(map[string]string)
+ for _, s := range strings.Split(proxy, ";") {
+ s = strings.TrimSpace(s)
+ if s == "" {
+ continue
+ }
+ pair := strings.SplitN(s, "=", 2)
+ if len(pair) > 1 {
+ protocol[pair[0]] = pair[1]
+ } else {
+ protocol[""] = pair[0]
+ }
+ }
+
+ windowsProxyConf.Static.Protocols = protocol
+ if len(proxyByPass) > 0 {
+ windowsProxyConf.Static.NoProxy = strings.Replace(proxyByPass, ";", ",", -1)
+ }
+ }
+
+ if windowsProxyConf.Automatic.Active {
+ windowsProxyConf.Automatic.PreConfiguredURL = autoConfigUrl
+ }
+}
+
+func getUserConfigFromWindowsSyscall() (*tWINHTTP_CURRENT_USER_IE_PROXY_CONFIG, error) {
+ if err := winHttpGetIEProxyConfigForCurrentUser.Find(); err != nil {
+ return nil, err
+ }
+ p := new(tWINHTTP_CURRENT_USER_IE_PROXY_CONFIG)
+ r, _, err := winHttpGetIEProxyConfigForCurrentUser.Call(uintptr(unsafe.Pointer(p)))
+ if rTrue(r) {
+ return p, nil
+ }
+ return nil, err
+}
+
+func getDefaultProxyConfiguration() (*tWINHTTP_PROXY_INFO, error) {
+ pInfo := new(tWINHTTP_PROXY_INFO)
+ if err := winHttpGetDefaultProxyConfiguration.Find(); err != nil {
+ return nil, err
+ }
+ r, _, err := winHttpGetDefaultProxyConfiguration.Call(uintptr(unsafe.Pointer(pInfo)))
+ if rTrue(r) {
+ return pInfo, nil
+ }
+ return nil, err
+}
+
+// OverrideEnvWithStaticProxy writes new values to the
+// http_proxy, https_proxy and no_proxy environment variables.
+// The values are taken from the Windows Regedit (should be called in init() function)
+func overrideEnvWithStaticProxy(conf ProxyConf, setenv envSetter) {
+ if conf.Static.Active {
+ for _, scheme := range []string{"http", "https"} {
+ url := mapFallback(scheme, "", conf.Static.Protocols)
+ setenv(scheme+"_proxy", url)
+ }
+ if conf.Static.NoProxy != "" {
+ setenv("no_proxy", conf.Static.NoProxy)
+ }
+ }
+}
+
+func parseRegedit(regedit regeditValues) ProxyConf {
+ protocol := make(map[string]string)
+ for _, s := range strings.Split(regedit.ProxyServer, ";") {
+ if s == "" {
+ continue
+ }
+ pair := strings.SplitN(s, "=", 2)
+ if len(pair) > 1 {
+ protocol[pair[0]] = pair[1]
+ } else {
+ protocol[""] = pair[0]
+ }
+ }
+
+ return ProxyConf{
+ Static: StaticProxyConf{
+ Active: regedit.ProxyEnable > 0,
+ Protocols: protocol,
+ NoProxy: strings.Replace(regedit.ProxyOverride, ";", ",", -1), // to match linux style
+ },
+ Automatic: ProxyScriptConf{
+ Active: regedit.AutoConfigURL != "",
+ PreConfiguredURL: regedit.AutoConfigURL,
+ },
+ }
+}
+
+func readRegedit() (values regeditValues, err error) {
+ var proxySettingsPerUser uint64 = 1 // 1 is the default value to consider current user
+ k, err := registry.OpenKey(registry.LOCAL_MACHINE, `Software\Policies\Microsoft\Windows\CurrentVersion\Internet Settings`, registry.QUERY_VALUE)
+ if err == nil {
+ //We had used the below variable tempPrxUsrSettings, because the Golang method GetIntegerValue
+ //sets the value to zero even it fails.
+ tempPrxUsrSettings, _, err := k.GetIntegerValue("ProxySettingsPerUser")
+ if err == nil {
+ //consider the value of tempPrxUsrSettings if it is a success
+ proxySettingsPerUser = tempPrxUsrSettings
+ }
+ k.Close()
+ }
+
+ var hkey registry.Key
+ if proxySettingsPerUser == 0 {
+ hkey = registry.LOCAL_MACHINE
+ } else {
+ hkey = registry.CURRENT_USER
+ }
+
+ k, err = registry.OpenKey(hkey, `Software\Microsoft\Windows\CurrentVersion\Internet Settings`, registry.QUERY_VALUE)
+ if err != nil {
+ return
+ }
+ defer k.Close()
+
+ values.ProxyServer, _, err = k.GetStringValue("ProxyServer")
+ if err != nil && err != registry.ErrNotExist {
+ return
+ }
+ values.ProxyOverride, _, err = k.GetStringValue("ProxyOverride")
+ if err != nil && err != registry.ErrNotExist {
+ return
+ }
+
+ values.ProxyEnable, _, err = k.GetIntegerValue("ProxyEnable")
+ if err != nil && err != registry.ErrNotExist {
+ return
+ }
+
+ values.AutoConfigURL, _, err = k.GetStringValue("AutoConfigURL")
+ if err != nil && err != registry.ErrNotExist {
+ return
+ }
+ err = nil
+ return
+}
diff --git a/vendor/github.com/mattn/go-ieproxy/kernel32_data_windows.go b/vendor/github.com/mattn/go-ieproxy/kernel32_data_windows.go
new file mode 100644
index 00000000..30ebbd22
--- /dev/null
+++ b/vendor/github.com/mattn/go-ieproxy/kernel32_data_windows.go
@@ -0,0 +1,19 @@
+package ieproxy
+
+import (
+ "golang.org/x/sys/windows"
+ "unsafe"
+)
+
+var kernel32 = windows.NewLazySystemDLL("kernel32.dll")
+var globalFree = kernel32.NewProc("GlobalFree")
+
+func globalFreeWrapper(ptr *uint16) {
+ if ptr != nil {
+ _, _, _ = globalFree.Call(uintptr(unsafe.Pointer(ptr)))
+ }
+}
+
+func rTrue(r uintptr) bool {
+ return r == 1
+}
diff --git a/vendor/github.com/mattn/go-ieproxy/pac_unix.go b/vendor/github.com/mattn/go-ieproxy/pac_unix.go
new file mode 100644
index 00000000..d44ec3cc
--- /dev/null
+++ b/vendor/github.com/mattn/go-ieproxy/pac_unix.go
@@ -0,0 +1,7 @@
+// +build !windows
+
+package ieproxy
+
+func (psc *ProxyScriptConf) findProxyForURL(URL string) string {
+ return ""
+}
diff --git a/vendor/github.com/mattn/go-ieproxy/pac_windows.go b/vendor/github.com/mattn/go-ieproxy/pac_windows.go
new file mode 100644
index 00000000..6a2ee677
--- /dev/null
+++ b/vendor/github.com/mattn/go-ieproxy/pac_windows.go
@@ -0,0 +1,72 @@
+package ieproxy
+
+import (
+ "strings"
+ "syscall"
+ "unsafe"
+)
+
+func (psc *ProxyScriptConf) findProxyForURL(URL string) string {
+ if !psc.Active {
+ return ""
+ }
+ proxy, _ := getProxyForURL(psc.PreConfiguredURL, URL)
+ i := strings.Index(proxy, ";")
+ if i >= 0 {
+ return proxy[:i]
+ }
+ return proxy
+}
+
+func getProxyForURL(pacfileURL, URL string) (string, error) {
+ pacfileURLPtr, err := syscall.UTF16PtrFromString(pacfileURL)
+ if err != nil {
+ return "", err
+ }
+ URLPtr, err := syscall.UTF16PtrFromString(URL)
+ if err != nil {
+ return "", err
+ }
+
+ handle, _, err := winHttpOpen.Call(0, 0, 0, 0, 0)
+ if handle == 0 {
+ return "", err
+ }
+ defer winHttpCloseHandle.Call(handle)
+
+ dwFlags := fWINHTTP_AUTOPROXY_CONFIG_URL
+ dwAutoDetectFlags := autoDetectFlag(0)
+ pfURLptr := pacfileURLPtr
+
+ if pacfileURL == "" {
+ dwFlags = fWINHTTP_AUTOPROXY_AUTO_DETECT
+ dwAutoDetectFlags = fWINHTTP_AUTO_DETECT_TYPE_DNS_A | fWINHTTP_AUTO_DETECT_TYPE_DHCP
+ pfURLptr = nil
+ }
+
+ options := tWINHTTP_AUTOPROXY_OPTIONS{
+ dwFlags: dwFlags, // adding cache might cause issues: https://github.com/mattn/go-ieproxy/issues/6
+ dwAutoDetectFlags: dwAutoDetectFlags,
+ lpszAutoConfigUrl: pfURLptr,
+ lpvReserved: nil,
+ dwReserved: 0,
+ fAutoLogonIfChallenged: true, // may not be optimal https://msdn.microsoft.com/en-us/library/windows/desktop/aa383153(v=vs.85).aspx
+ } // lpszProxyBypass isn't used as this only executes in cases where there (may) be a pac file (autodetect can fail), where lpszProxyBypass couldn't be returned.
+ // in the case that autodetect fails and no pre-specified pacfile is present, no proxy is returned.
+
+ info := new(tWINHTTP_PROXY_INFO)
+
+ ret, _, err := winHttpGetProxyForURL.Call(
+ handle,
+ uintptr(unsafe.Pointer(URLPtr)),
+ uintptr(unsafe.Pointer(&options)),
+ uintptr(unsafe.Pointer(info)),
+ )
+ if ret > 0 {
+ err = nil
+ }
+
+ defer globalFreeWrapper(info.lpszProxyBypass)
+ defer globalFreeWrapper(info.lpszProxy)
+ return StringFromUTF16Ptr(info.lpszProxy), err
+}
diff --git a/vendor/github.com/mattn/go-ieproxy/proxy_middleman.go b/vendor/github.com/mattn/go-ieproxy/proxy_middleman.go
new file mode 100644
index 00000000..b2ff9147
--- /dev/null
+++ b/vendor/github.com/mattn/go-ieproxy/proxy_middleman.go
@@ -0,0 +1,11 @@
+package ieproxy
+
+import (
+ "net/http"
+ "net/url"
+)
+
+// GetProxyFunc is a forwarder for the OS-Exclusive proxyMiddleman_os.go files
+func GetProxyFunc() func(*http.Request) (*url.URL, error) {
+ return proxyMiddleman()
+}
diff --git a/vendor/github.com/mattn/go-ieproxy/proxy_middleman_unix.go b/vendor/github.com/mattn/go-ieproxy/proxy_middleman_unix.go
new file mode 100644
index 00000000..d0b16ec2
--- /dev/null
+++ b/vendor/github.com/mattn/go-ieproxy/proxy_middleman_unix.go
@@ -0,0 +1,13 @@
+// +build !windows
+
+package ieproxy
+
+import (
+ "net/http"
+ "net/url"
+)
+
+func proxyMiddleman() func(req *http.Request) (i *url.URL, e error) {
+ // Fallthrough to ProxyFromEnvironment on all other OSes.
+ return http.ProxyFromEnvironment
+}
diff --git a/vendor/github.com/mattn/go-ieproxy/proxy_middleman_windows.go b/vendor/github.com/mattn/go-ieproxy/proxy_middleman_windows.go
new file mode 100644
index 00000000..7d314dbf
--- /dev/null
+++ b/vendor/github.com/mattn/go-ieproxy/proxy_middleman_windows.go
@@ -0,0 +1,52 @@
+package ieproxy
+
+import (
+ "net/http"
+ "net/url"
+
+ "golang.org/x/net/http/httpproxy"
+)
+
+func proxyMiddleman() func(req *http.Request) (i *url.URL, e error) {
+ // Get the proxy configuration
+ conf := GetConf()
+ envcfg := httpproxy.FromEnvironment()
+
+ if envcfg.HTTPProxy != "" || envcfg.HTTPSProxy != "" {
+ // If the user manually specifies environment variables, prefer those over the Windows config.
+ return http.ProxyFromEnvironment
+ }
+
+ return func(req *http.Request) (i *url.URL, e error) {
+ if conf.Automatic.Active {
+ host := conf.Automatic.FindProxyForURL(req.URL.String())
+ if host != "" {
+ return &url.URL{Host: host}, nil
+ }
+ }
+ if conf.Static.Active {
+ return staticProxy(conf, req)
+ }
+ // Should return no proxy; fallthrough.
+ return http.ProxyFromEnvironment(req)
+ }
+}
+
+func staticProxy(conf ProxyConf, req *http.Request) (i *url.URL, e error) {
+ // If static proxy obtaining is specified
+ prox := httpproxy.Config{
+ HTTPSProxy: mapFallback("https", "", conf.Static.Protocols),
+ HTTPProxy: mapFallback("http", "", conf.Static.Protocols),
+ NoProxy: conf.Static.NoProxy,
+ }
+ return prox.ProxyFunc()(req.URL)
+}
+
+// Return oKey or fbKey if oKey doesn't exist in the map.
+func mapFallback(oKey, fbKey string, m map[string]string) string {
+ if v, ok := m[oKey]; ok {
+ return v
+ } else {
+ return m[fbKey]
+ }
+}
diff --git a/vendor/github.com/mattn/go-ieproxy/utils.go b/vendor/github.com/mattn/go-ieproxy/utils.go
new file mode 100644
index 00000000..353b2311
--- /dev/null
+++ b/vendor/github.com/mattn/go-ieproxy/utils.go
@@ -0,0 +1,23 @@
+package ieproxy
+
+import (
+ "unicode/utf16"
+ "unsafe"
+)
+
+// StringFromUTF16Ptr converts a *uint16 C string to a Go String
+func StringFromUTF16Ptr(s *uint16) string {
+ if s == nil {
+ return ""
+ }
+
+ p := (*[1<<30 - 1]uint16)(unsafe.Pointer(s))
+
+ // find the string length
+ sz := 0
+ for p[sz] != 0 {
+ sz++
+ }
+
+ return string(utf16.Decode(p[:sz:sz]))
+}
diff --git a/vendor/github.com/mattn/go-ieproxy/winhttp_data_windows.go b/vendor/github.com/mattn/go-ieproxy/winhttp_data_windows.go
new file mode 100644
index 00000000..4d3b1677
--- /dev/null
+++ b/vendor/github.com/mattn/go-ieproxy/winhttp_data_windows.go
@@ -0,0 +1,51 @@
+package ieproxy
+
+import "golang.org/x/sys/windows"
+
+var winHttp = windows.NewLazySystemDLL("winhttp.dll")
+var winHttpGetProxyForURL = winHttp.NewProc("WinHttpGetProxyForUrl")
+var winHttpOpen = winHttp.NewProc("WinHttpOpen")
+var winHttpCloseHandle = winHttp.NewProc("WinHttpCloseHandle")
+var winHttpGetIEProxyConfigForCurrentUser = winHttp.NewProc("WinHttpGetIEProxyConfigForCurrentUser")
+var winHttpGetDefaultProxyConfiguration = winHttp.NewProc("WinHttpGetDefaultProxyConfiguration")
+
+type tWINHTTP_AUTOPROXY_OPTIONS struct {
+ dwFlags autoProxyFlag
+ dwAutoDetectFlags autoDetectFlag
+ lpszAutoConfigUrl *uint16
+ lpvReserved *uint16
+ dwReserved uint32
+ fAutoLogonIfChallenged bool
+}
+type autoProxyFlag uint32
+
+const (
+ fWINHTTP_AUTOPROXY_AUTO_DETECT = autoProxyFlag(0x00000001)
+ fWINHTTP_AUTOPROXY_CONFIG_URL = autoProxyFlag(0x00000002)
+ fWINHTTP_AUTOPROXY_NO_CACHE_CLIENT = autoProxyFlag(0x00080000)
+ fWINHTTP_AUTOPROXY_NO_CACHE_SVC = autoProxyFlag(0x00100000)
+ fWINHTTP_AUTOPROXY_NO_DIRECTACCESS = autoProxyFlag(0x00040000)
+ fWINHTTP_AUTOPROXY_RUN_INPROCESS = autoProxyFlag(0x00010000)
+ fWINHTTP_AUTOPROXY_RUN_OUTPROCESS_ONLY = autoProxyFlag(0x00020000)
+ fWINHTTP_AUTOPROXY_SORT_RESULTS = autoProxyFlag(0x00400000)
+)
+
+type autoDetectFlag uint32
+
+const (
+ fWINHTTP_AUTO_DETECT_TYPE_DHCP = autoDetectFlag(0x00000001)
+ fWINHTTP_AUTO_DETECT_TYPE_DNS_A = autoDetectFlag(0x00000002)
+)
+
+type tWINHTTP_PROXY_INFO struct {
+ dwAccessType uint32
+ lpszProxy *uint16
+ lpszProxyBypass *uint16
+}
+
+type tWINHTTP_CURRENT_USER_IE_PROXY_CONFIG struct {
+ fAutoDetect bool
+ lpszAutoConfigUrl *uint16
+ lpszProxy *uint16
+ lpszProxyBypass *uint16
+}
diff --git a/vendor/go.opencensus.io/go.sum b/vendor/go.opencensus.io/go.sum
index ed2a1d84..01c02972 100644
--- a/vendor/go.opencensus.io/go.sum
+++ b/vendor/go.opencensus.io/go.sum
@@ -67,6 +67,7 @@ google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZi
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.20.1 h1:Hz2g2wirWK7H0qIIhGIqRGTuMwTE8HEKFnDZZ7lm9NU=
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
diff --git a/vendor/go.opencensus.io/plugin/ochttp/trace.go b/vendor/go.opencensus.io/plugin/ochttp/trace.go
index 53e71305..ed3a5db5 100644
--- a/vendor/go.opencensus.io/plugin/ochttp/trace.go
+++ b/vendor/go.opencensus.io/plugin/ochttp/trace.go
@@ -204,7 +204,10 @@ func TraceStatus(httpStatusCode int, statusLine string) trace.Status {
code = trace.StatusCodeUnavailable
case http.StatusOK:
code = trace.StatusCodeOK
+ case http.StatusConflict:
+ code = trace.StatusCodeAlreadyExists
}
+
return trace.Status{Code: code, Message: codeToStr[code]}
}
diff --git a/vendor/golang.org/x/crypto/ssh/kex.go b/vendor/golang.org/x/crypto/ssh/kex.go
index 7eedb209..766e9293 100644
--- a/vendor/golang.org/x/crypto/ssh/kex.go
+++ b/vendor/golang.org/x/crypto/ssh/kex.go
@@ -557,8 +557,6 @@ type dhGEXSHA struct {
hashFunc crypto.Hash
}
-const numMRTests = 64
-
const (
dhGroupExchangeMinimumBits = 2048
dhGroupExchangePreferredBits = 2048
@@ -602,15 +600,8 @@ func (gex dhGEXSHA) Client(c packetConn, randSource io.Reader, magics *handshake
gex.p = kexDHGexGroup.P
gex.g = kexDHGexGroup.G
- // Check if p is safe by verifing that p and (p-1)/2 are primes
- one := big.NewInt(1)
- var pHalf = &big.Int{}
- pHalf.Rsh(gex.p, 1)
- if !gex.p.ProbablyPrime(numMRTests) || !pHalf.ProbablyPrime(numMRTests) {
- return nil, fmt.Errorf("ssh: server provided gex p is not safe")
- }
-
// Check if g is safe by verifing that g > 1 and g < p - 1
+ one := big.NewInt(1)
var pMinusOne = &big.Int{}
pMinusOne.Sub(gex.p, one)
if gex.g.Cmp(one) != 1 && gex.g.Cmp(pMinusOne) != -1 {
@@ -618,6 +609,8 @@ func (gex dhGEXSHA) Client(c packetConn, randSource io.Reader, magics *handshake
}
// Send GexInit
+ var pHalf = &big.Int{}
+ pHalf.Rsh(gex.p, 1)
x, err := rand.Int(randSource, pHalf)
if err != nil {
return nil, err
diff --git a/vendor/golang.org/x/net/http/httpproxy/BUILD.bazel b/vendor/golang.org/x/net/http/httpproxy/BUILD.bazel
new file mode 100644
index 00000000..345398cb
--- /dev/null
+++ b/vendor/golang.org/x/net/http/httpproxy/BUILD.bazel
@@ -0,0 +1,10 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_library")
+
+go_library(
+ name = "go_default_library",
+ srcs = ["proxy.go"],
+ importmap = "kope.io/etcd-manager/vendor/golang.org/x/net/http/httpproxy",
+ importpath = "golang.org/x/net/http/httpproxy",
+ visibility = ["//visibility:public"],
+ deps = ["//vendor/golang.org/x/net/idna:go_default_library"],
+)
diff --git a/vendor/golang.org/x/net/http/httpproxy/proxy.go b/vendor/golang.org/x/net/http/httpproxy/proxy.go
new file mode 100644
index 00000000..1415b077
--- /dev/null
+++ b/vendor/golang.org/x/net/http/httpproxy/proxy.go
@@ -0,0 +1,368 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Package httpproxy provides support for HTTP proxy determination
+// based on environment variables, as provided by net/http's
+// ProxyFromEnvironment function.
+//
+// The API is not subject to the Go 1 compatibility promise and may change at
+// any time.
+package httpproxy
+
+import (
+ "errors"
+ "fmt"
+ "net"
+ "net/url"
+ "os"
+ "strings"
+ "unicode/utf8"
+
+ "golang.org/x/net/idna"
+)
+
+// Config holds configuration for HTTP proxy settings. See
+// FromEnvironment for details.
+type Config struct {
+ // HTTPProxy represents the value of the HTTP_PROXY or
+ // http_proxy environment variable. It will be used as the proxy
+ // URL for HTTP requests unless overridden by NoProxy.
+ HTTPProxy string
+
+ // HTTPSProxy represents the HTTPS_PROXY or https_proxy
+ // environment variable. It will be used as the proxy URL for
+ // HTTPS requests unless overridden by NoProxy.
+ HTTPSProxy string
+
+ // NoProxy represents the NO_PROXY or no_proxy environment
+ // variable. It specifies a string that contains comma-separated values
+ // specifying hosts that should be excluded from proxying. Each value is
+ // represented by an IP address prefix (1.2.3.4), an IP address prefix in
+ // CIDR notation (1.2.3.4/8), a domain name, or a special DNS label (*).
+ // An IP address prefix and domain name can also include a literal port
+ // number (1.2.3.4:80).
+ // A domain name matches that name and all subdomains. A domain name with
+ // a leading "." matches subdomains only. For example "foo.com" matches
+ // "foo.com" and "bar.foo.com"; ".y.com" matches "x.y.com" but not "y.com".
+ // A single asterisk (*) indicates that no proxying should be done.
+ // A best effort is made to parse the string and errors are
+ // ignored.
+ NoProxy string
+
+ // CGI holds whether the current process is running
+ // as a CGI handler (FromEnvironment infers this from the
+ // presence of a REQUEST_METHOD environment variable).
+ // When this is set, ProxyForURL will return an error
+ // when HTTPProxy applies, because a client could be
+ // setting HTTP_PROXY maliciously. See https://golang.org/s/cgihttpproxy.
+ CGI bool
+}
+
+// config holds the parsed configuration for HTTP proxy settings.
+type config struct {
+ // Config represents the original configuration as defined above.
+ Config
+
+ // httpsProxy is the parsed URL of the HTTPSProxy if defined.
+ httpsProxy *url.URL
+
+ // httpProxy is the parsed URL of the HTTPProxy if defined.
+ httpProxy *url.URL
+
+ // ipMatchers represent all values in the NoProxy that are IP address
+ // prefixes or an IP address in CIDR notation.
+ ipMatchers []matcher
+
+ // domainMatchers represent all values in the NoProxy that are a domain
+ // name or hostname & domain name
+ domainMatchers []matcher
+}
+
+// FromEnvironment returns a Config instance populated from the
+// environment variables HTTP_PROXY, HTTPS_PROXY and NO_PROXY (or the
+// lowercase versions thereof). HTTPS_PROXY takes precedence over
+// HTTP_PROXY for https requests.
+//
+// The environment values may be either a complete URL or a
+// "host[:port]", in which case the "http" scheme is assumed. An error
+// is returned if the value is a different form.
+func FromEnvironment() *Config {
+ return &Config{
+ HTTPProxy: getEnvAny("HTTP_PROXY", "http_proxy"),
+ HTTPSProxy: getEnvAny("HTTPS_PROXY", "https_proxy"),
+ NoProxy: getEnvAny("NO_PROXY", "no_proxy"),
+ CGI: os.Getenv("REQUEST_METHOD") != "",
+ }
+}
+
+func getEnvAny(names ...string) string {
+ for _, n := range names {
+ if val := os.Getenv(n); val != "" {
+ return val
+ }
+ }
+ return ""
+}
+
+// ProxyFunc returns a function that determines the proxy URL to use for
+// a given request URL. Changing the contents of cfg will not affect
+// proxy functions created earlier.
+//
+// A nil URL and nil error are returned if no proxy is defined in the
+// environment, or a proxy should not be used for the given request, as
+// defined by NO_PROXY.
+//
+// As a special case, if req.URL.Host is "localhost" (with or without a
+// port number), then a nil URL and nil error will be returned.
+func (cfg *Config) ProxyFunc() func(reqURL *url.URL) (*url.URL, error) {
+ // Preprocess the Config settings for more efficient evaluation.
+ cfg1 := &config{
+ Config: *cfg,
+ }
+ cfg1.init()
+ return cfg1.proxyForURL
+}
+
+func (cfg *config) proxyForURL(reqURL *url.URL) (*url.URL, error) {
+ var proxy *url.URL
+ if reqURL.Scheme == "https" {
+ proxy = cfg.httpsProxy
+ } else if reqURL.Scheme == "http" {
+ proxy = cfg.httpProxy
+ if proxy != nil && cfg.CGI {
+ return nil, errors.New("refusing to use HTTP_PROXY value in CGI environment; see golang.org/s/cgihttpproxy")
+ }
+ }
+ if proxy == nil {
+ return nil, nil
+ }
+ if !cfg.useProxy(canonicalAddr(reqURL)) {
+ return nil, nil
+ }
+
+ return proxy, nil
+}
+
+func parseProxy(proxy string) (*url.URL, error) {
+ if proxy == "" {
+ return nil, nil
+ }
+
+ proxyURL, err := url.Parse(proxy)
+ if err != nil ||
+ (proxyURL.Scheme != "http" &&
+ proxyURL.Scheme != "https" &&
+ proxyURL.Scheme != "socks5") {
+ // proxy was bogus. Try prepending "http://" to it and
+ // see if that parses correctly. If not, we fall
+ // through and complain about the original one.
+ if proxyURL, err := url.Parse("http://" + proxy); err == nil {
+ return proxyURL, nil
+ }
+ }
+ if err != nil {
+ return nil, fmt.Errorf("invalid proxy address %q: %v", proxy, err)
+ }
+ return proxyURL, nil
+}
+
+// useProxy reports whether requests to addr should use a proxy,
+// according to the NO_PROXY or no_proxy environment variable.
+// addr is always a canonicalAddr with a host and port.
+func (cfg *config) useProxy(addr string) bool {
+ if len(addr) == 0 {
+ return true
+ }
+ host, port, err := net.SplitHostPort(addr)
+ if err != nil {
+ return false
+ }
+ if host == "localhost" {
+ return false
+ }
+ ip := net.ParseIP(host)
+ if ip != nil {
+ if ip.IsLoopback() {
+ return false
+ }
+ }
+
+ addr = strings.ToLower(strings.TrimSpace(host))
+
+ if ip != nil {
+ for _, m := range cfg.ipMatchers {
+ if m.match(addr, port, ip) {
+ return false
+ }
+ }
+ }
+ for _, m := range cfg.domainMatchers {
+ if m.match(addr, port, ip) {
+ return false
+ }
+ }
+ return true
+}
+
+func (c *config) init() {
+ if parsed, err := parseProxy(c.HTTPProxy); err == nil {
+ c.httpProxy = parsed
+ }
+ if parsed, err := parseProxy(c.HTTPSProxy); err == nil {
+ c.httpsProxy = parsed
+ }
+
+ for _, p := range strings.Split(c.NoProxy, ",") {
+ p = strings.ToLower(strings.TrimSpace(p))
+ if len(p) == 0 {
+ continue
+ }
+
+ if p == "*" {
+ c.ipMatchers = []matcher{allMatch{}}
+ c.domainMatchers = []matcher{allMatch{}}
+ return
+ }
+
+ // IPv4/CIDR, IPv6/CIDR
+ if _, pnet, err := net.ParseCIDR(p); err == nil {
+ c.ipMatchers = append(c.ipMatchers, cidrMatch{cidr: pnet})
+ continue
+ }
+
+ // IPv4:port, [IPv6]:port
+ phost, pport, err := net.SplitHostPort(p)
+ if err == nil {
+ if len(phost) == 0 {
+ // There is no host part, likely the entry is malformed; ignore.
+ continue
+ }
+ if phost[0] == '[' && phost[len(phost)-1] == ']' {
+ phost = phost[1 : len(phost)-1]
+ }
+ } else {
+ phost = p
+ }
+ // IPv4, IPv6
+ if pip := net.ParseIP(phost); pip != nil {
+ c.ipMatchers = append(c.ipMatchers, ipMatch{ip: pip, port: pport})
+ continue
+ }
+
+ if len(phost) == 0 {
+ // There is no host part, likely the entry is malformed; ignore.
+ continue
+ }
+
+ // domain.com or domain.com:80
+ // foo.com matches bar.foo.com
+ // .domain.com or .domain.com:port
+ // *.domain.com or *.domain.com:port
+ if strings.HasPrefix(phost, "*.") {
+ phost = phost[1:]
+ }
+ matchHost := false
+ if phost[0] != '.' {
+ matchHost = true
+ phost = "." + phost
+ }
+ c.domainMatchers = append(c.domainMatchers, domainMatch{host: phost, port: pport, matchHost: matchHost})
+ }
+}
+
+var portMap = map[string]string{
+ "http": "80",
+ "https": "443",
+ "socks5": "1080",
+}
+
+// canonicalAddr returns url.Host but always with a ":port" suffix
+func canonicalAddr(url *url.URL) string {
+ addr := url.Hostname()
+ if v, err := idnaASCII(addr); err == nil {
+ addr = v
+ }
+ port := url.Port()
+ if port == "" {
+ port = portMap[url.Scheme]
+ }
+ return net.JoinHostPort(addr, port)
+}
+
+// Given a string of the form "host", "host:port", or "[ipv6::address]:port",
+// return true if the string includes a port.
+func hasPort(s string) bool { return strings.LastIndex(s, ":") > strings.LastIndex(s, "]") }
+
+func idnaASCII(v string) (string, error) {
+ // TODO: Consider removing this check after verifying performance is okay.
+ // Right now punycode verification, length checks, context checks, and the
+ // permissible character tests are all omitted. It also prevents the ToASCII
+ // call from salvaging an invalid IDN, when possible. As a result it may be
+ // possible to have two IDNs that appear identical to the user where the
+ // ASCII-only version causes an error downstream whereas the non-ASCII
+ // version does not.
+ // Note that for correct ASCII IDNs ToASCII will only do considerably more
+ // work, but it will not cause an allocation.
+ if isASCII(v) {
+ return v, nil
+ }
+ return idna.Lookup.ToASCII(v)
+}
+
+func isASCII(s string) bool {
+ for i := 0; i < len(s); i++ {
+ if s[i] >= utf8.RuneSelf {
+ return false
+ }
+ }
+ return true
+}
+
+// matcher represents the matching rule for a given value in the NO_PROXY list
+type matcher interface {
+ // match returns true if the host and optional port or ip and optional port
+ // are allowed
+ match(host, port string, ip net.IP) bool
+}
+
+// allMatch matches on all possible inputs
+type allMatch struct{}
+
+func (a allMatch) match(host, port string, ip net.IP) bool {
+ return true
+}
+
+type cidrMatch struct {
+ cidr *net.IPNet
+}
+
+func (m cidrMatch) match(host, port string, ip net.IP) bool {
+ return m.cidr.Contains(ip)
+}
+
+type ipMatch struct {
+ ip net.IP
+ port string
+}
+
+func (m ipMatch) match(host, port string, ip net.IP) bool {
+ if m.ip.Equal(ip) {
+ return m.port == "" || m.port == port
+ }
+ return false
+}
+
+type domainMatch struct {
+ host string
+ port string
+
+ matchHost bool
+}
+
+func (m domainMatch) match(host, port string, ip net.IP) bool {
+ if strings.HasSuffix(host, m.host) || (m.matchHost && host == m.host[1:]) {
+ return m.port == "" || m.port == port
+ }
+ return false
+}
diff --git a/vendor/golang.org/x/net/http2/server.go b/vendor/golang.org/x/net/http2/server.go
index 345b7cd8..2aa859f7 100644
--- a/vendor/golang.org/x/net/http2/server.go
+++ b/vendor/golang.org/x/net/http2/server.go
@@ -1694,6 +1694,7 @@ func (sc *serverConn) processData(f *DataFrame) error {
if len(data) > 0 {
wrote, err := st.body.Write(data)
if err != nil {
+ sc.sendWindowUpdate(nil, int(f.Length)-wrote)
return streamError(id, ErrCodeStreamClosed)
}
if wrote != len(data) {
@@ -2020,7 +2021,11 @@ func (sc *serverConn) newWriterAndRequest(st *stream, f *MetaHeadersFrame) (*res
}
if bodyOpen {
if vv, ok := rp.header["Content-Length"]; ok {
- req.ContentLength, _ = strconv.ParseInt(vv[0], 10, 64)
+ if cl, err := strconv.ParseUint(vv[0], 10, 63); err == nil {
+ req.ContentLength = int64(cl)
+ } else {
+ req.ContentLength = 0
+ }
} else {
req.ContentLength = -1
}
@@ -2403,9 +2408,8 @@ func (rws *responseWriterState) writeChunk(p []byte) (n int, err error) {
var ctype, clen string
if clen = rws.snapHeader.Get("Content-Length"); clen != "" {
rws.snapHeader.Del("Content-Length")
- clen64, err := strconv.ParseInt(clen, 10, 64)
- if err == nil && clen64 >= 0 {
- rws.sentContentLen = clen64
+ if cl, err := strconv.ParseUint(clen, 10, 63); err == nil {
+ rws.sentContentLen = int64(cl)
} else {
clen = ""
}
diff --git a/vendor/golang.org/x/net/http2/transport.go b/vendor/golang.org/x/net/http2/transport.go
index 76a92e0c..8b129b79 100644
--- a/vendor/golang.org/x/net/http2/transport.go
+++ b/vendor/golang.org/x/net/http2/transport.go
@@ -154,12 +154,21 @@ func (t *Transport) pingTimeout() time.Duration {
// ConfigureTransport configures a net/http HTTP/1 Transport to use HTTP/2.
// It returns an error if t1 has already been HTTP/2-enabled.
+//
+// Use ConfigureTransports instead to configure the HTTP/2 Transport.
func ConfigureTransport(t1 *http.Transport) error {
- _, err := configureTransport(t1)
+ _, err := ConfigureTransports(t1)
return err
}
-func configureTransport(t1 *http.Transport) (*Transport, error) {
+// ConfigureTransports configures a net/http HTTP/1 Transport to use HTTP/2.
+// It returns a new HTTP/2 Transport for further configuration.
+// It returns an error if t1 has already been HTTP/2-enabled.
+func ConfigureTransports(t1 *http.Transport) (*Transport, error) {
+ return configureTransports(t1)
+}
+
+func configureTransports(t1 *http.Transport) (*Transport, error) {
connPool := new(clientConnPool)
t2 := &Transport{
ConnPool: noDialClientConnPool{connPool},
@@ -689,6 +698,7 @@ func (t *Transport) newClientConn(c net.Conn, singleUse bool) (*ClientConn, erro
cc.inflow.add(transportDefaultConnFlow + initialWindowSize)
cc.bw.Flush()
if cc.werr != nil {
+ cc.Close()
return nil, cc.werr
}
@@ -1080,6 +1090,15 @@ func (cc *ClientConn) roundTrip(req *http.Request) (res *http.Response, gotErrAf
bodyWriter := cc.t.getBodyWriterState(cs, body)
cs.on100 = bodyWriter.on100
+ defer func() {
+ cc.wmu.Lock()
+ werr := cc.werr
+ cc.wmu.Unlock()
+ if werr != nil {
+ cc.Close()
+ }
+ }()
+
cc.wmu.Lock()
endStream := !hasBody && !hasTrailers
werr := cc.writeHeaders(cs.ID, endStream, int(cc.maxFrameSize), hdrs)
@@ -1129,6 +1148,9 @@ func (cc *ClientConn) roundTrip(req *http.Request) (res *http.Response, gotErrAf
// we can keep it.
bodyWriter.cancel()
cs.abortRequestBodyWrite(errStopReqBodyWrite)
+ if hasBody && !bodyWritten {
+ <-bodyWriter.resc
+ }
}
if re.err != nil {
cc.forgetStreamID(cs.ID)
@@ -1149,6 +1171,7 @@ func (cc *ClientConn) roundTrip(req *http.Request) (res *http.Response, gotErrAf
} else {
bodyWriter.cancel()
cs.abortRequestBodyWrite(errStopReqBodyWriteAndCancel)
+ <-bodyWriter.resc
}
cc.forgetStreamID(cs.ID)
return nil, cs.getStartedWrite(), errTimeout
@@ -1158,6 +1181,7 @@ func (cc *ClientConn) roundTrip(req *http.Request) (res *http.Response, gotErrAf
} else {
bodyWriter.cancel()
cs.abortRequestBodyWrite(errStopReqBodyWriteAndCancel)
+ <-bodyWriter.resc
}
cc.forgetStreamID(cs.ID)
return nil, cs.getStartedWrite(), ctx.Err()
@@ -1167,6 +1191,7 @@ func (cc *ClientConn) roundTrip(req *http.Request) (res *http.Response, gotErrAf
} else {
bodyWriter.cancel()
cs.abortRequestBodyWrite(errStopReqBodyWriteAndCancel)
+ <-bodyWriter.resc
}
cc.forgetStreamID(cs.ID)
return nil, cs.getStartedWrite(), errRequestCanceled
@@ -1176,6 +1201,7 @@ func (cc *ClientConn) roundTrip(req *http.Request) (res *http.Response, gotErrAf
// forgetStreamID.
return nil, cs.getStartedWrite(), cs.resetErr
case err := <-bodyWriter.resc:
+ bodyWritten = true
// Prefer the read loop's response, if available. Issue 16102.
select {
case re := <-readLoopResCh:
@@ -1186,7 +1212,6 @@ func (cc *ClientConn) roundTrip(req *http.Request) (res *http.Response, gotErrAf
cc.forgetStreamID(cs.ID)
return nil, cs.getStartedWrite(), err
}
- bodyWritten = true
if d := cc.responseHeaderTimeout(); d != 0 {
timer := time.NewTimer(d)
defer timer.Stop()
@@ -2006,8 +2031,8 @@ func (rl *clientConnReadLoop) handleResponse(cs *clientStream, f *MetaHeadersFra
if !streamEnded || isHead {
res.ContentLength = -1
if clens := res.Header["Content-Length"]; len(clens) == 1 {
- if clen64, err := strconv.ParseInt(clens[0], 10, 64); err == nil {
- res.ContentLength = clen64
+ if cl, err := strconv.ParseUint(clens[0], 10, 63); err == nil {
+ res.ContentLength = int64(cl)
} else {
// TODO: care? unlike http/1, it won't mess up our framing, so it's
// more safe smuggling-wise to ignore.
@@ -2525,6 +2550,7 @@ func strSliceContains(ss []string, s string) bool {
type erringRoundTripper struct{ err error }
+func (rt erringRoundTripper) RoundTripErr() error { return rt.err }
func (rt erringRoundTripper) RoundTrip(*http.Request) (*http.Response, error) { return nil, rt.err }
// gzipReader wraps a response body so it can lazily
diff --git a/vendor/golang.org/x/net/idna/BUILD.bazel b/vendor/golang.org/x/net/idna/BUILD.bazel
index f5340a28..d6c46e98 100644
--- a/vendor/golang.org/x/net/idna/BUILD.bazel
+++ b/vendor/golang.org/x/net/idna/BUILD.bazel
@@ -8,7 +8,8 @@ go_library(
"punycode.go",
"tables10.0.0.go",
"tables11.0.0.go",
- "tables12.00.go",
+ "tables12.0.0.go",
+ "tables13.0.0.go",
"tables9.0.0.go",
"trie.go",
"trieval.go",
diff --git a/vendor/golang.org/x/net/idna/tables12.00.go b/vendor/golang.org/x/net/idna/tables12.0.0.go
similarity index 99%
rename from vendor/golang.org/x/net/idna/tables12.00.go
rename to vendor/golang.org/x/net/idna/tables12.0.0.go
index f4b8ea36..f39f0cb4 100644
--- a/vendor/golang.org/x/net/idna/tables12.00.go
+++ b/vendor/golang.org/x/net/idna/tables12.0.0.go
@@ -1,6 +1,6 @@
// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
-// +build go1.14
+// +build go1.14,!go1.16
package idna
diff --git a/vendor/golang.org/x/net/idna/tables13.0.0.go b/vendor/golang.org/x/net/idna/tables13.0.0.go
new file mode 100644
index 00000000..e8c7a36d
--- /dev/null
+++ b/vendor/golang.org/x/net/idna/tables13.0.0.go
@@ -0,0 +1,4839 @@
+// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
+
+// +build go1.16
+
+package idna
+
+// UnicodeVersion is the Unicode version from which the tables in this package are derived.
+const UnicodeVersion = "13.0.0"
+
+var mappings string = "" + // Size: 8188 bytes
+ "\x00\x01 \x03 ̈\x01a\x03 ̄\x012\x013\x03 ́\x03 ̧\x011\x01o\x051⁄4\x051⁄2" +
+ "\x053⁄4\x03i̇\x03l·\x03ʼn\x01s\x03dž\x03ⱥ\x03ⱦ\x01h\x01j\x01r\x01w\x01y" +
+ "\x03 ̆\x03 ̇\x03 ̊\x03 ̨\x03 ̃\x03 ̋\x01l\x01x\x04̈́\x03 ι\x01;\x05 ̈́" +
+ "\x04եւ\x04اٴ\x04وٴ\x04ۇٴ\x04يٴ\x06क़\x06ख़\x06ग़\x06ज़\x06ड़\x06ढ़\x06फ़" +
+ "\x06य़\x06ড়\x06ঢ়\x06য়\x06ਲ਼\x06ਸ਼\x06ਖ਼\x06ਗ਼\x06ਜ਼\x06ਫ਼\x06ଡ଼\x06ଢ଼" +
+ "\x06ํา\x06ໍາ\x06ຫນ\x06ຫມ\x06གྷ\x06ཌྷ\x06དྷ\x06བྷ\x06ཛྷ\x06ཀྵ\x06ཱི\x06ཱུ" +
+ "\x06ྲྀ\x09ྲཱྀ\x06ླྀ\x09ླཱྀ\x06ཱྀ\x06ྒྷ\x06ྜྷ\x06ྡྷ\x06ྦྷ\x06ྫྷ\x06ྐྵ\x02" +
+ "в\x02д\x02о\x02с\x02т\x02ъ\x02ѣ\x02æ\x01b\x01d\x01e\x02ǝ\x01g\x01i\x01k" +
+ "\x01m\x01n\x02ȣ\x01p\x01t\x01u\x02ɐ\x02ɑ\x02ə\x02ɛ\x02ɜ\x02ŋ\x02ɔ\x02ɯ" +
+ "\x01v\x02β\x02γ\x02δ\x02φ\x02χ\x02ρ\x02н\x02ɒ\x01c\x02ɕ\x02ð\x01f\x02ɟ" +
+ "\x02ɡ\x02ɥ\x02ɨ\x02ɩ\x02ɪ\x02ʝ\x02ɭ\x02ʟ\x02ɱ\x02ɰ\x02ɲ\x02ɳ\x02ɴ\x02ɵ" +
+ "\x02ɸ\x02ʂ\x02ʃ\x02ƫ\x02ʉ\x02ʊ\x02ʋ\x02ʌ\x01z\x02ʐ\x02ʑ\x02ʒ\x02θ\x02ss" +
+ "\x02ά\x02έ\x02ή\x02ί\x02ό\x02ύ\x02ώ\x05ἀι\x05ἁι\x05ἂι\x05ἃι\x05ἄι\x05ἅι" +
+ "\x05ἆι\x05ἇι\x05ἠι\x05ἡι\x05ἢι\x05ἣι\x05ἤι\x05ἥι\x05ἦι\x05ἧι\x05ὠι\x05ὡι" +
+ "\x05ὢι\x05ὣι\x05ὤι\x05ὥι\x05ὦι\x05ὧι\x05ὰι\x04αι\x04άι\x05ᾶι\x02ι\x05 ̈͂" +
+ "\x05ὴι\x04ηι\x04ήι\x05ῆι\x05 ̓̀\x05 ̓́\x05 ̓͂\x02ΐ\x05 ̔̀\x05 ̔́\x05 ̔͂" +
+ "\x02ΰ\x05 ̈̀\x01`\x05ὼι\x04ωι\x04ώι\x05ῶι\x06′′\x09′′′\x06‵‵\x09‵‵‵\x02!" +
+ "!\x02??\x02?!\x02!?\x0c′′′′\x010\x014\x015\x016\x017\x018\x019\x01+\x01=" +
+ "\x01(\x01)\x02rs\x02ħ\x02no\x01q\x02sm\x02tm\x02ω\x02å\x02א\x02ב\x02ג" +
+ "\x02ד\x02π\x051⁄7\x051⁄9\x061⁄10\x051⁄3\x052⁄3\x051⁄5\x052⁄5\x053⁄5\x054" +
+ "⁄5\x051⁄6\x055⁄6\x051⁄8\x053⁄8\x055⁄8\x057⁄8\x041⁄\x02ii\x02iv\x02vi" +
+ "\x04viii\x02ix\x02xi\x050⁄3\x06∫∫\x09∫∫∫\x06∮∮\x09∮∮∮\x0210\x0211\x0212" +
+ "\x0213\x0214\x0215\x0216\x0217\x0218\x0219\x0220\x04(10)\x04(11)\x04(12)" +
+ "\x04(13)\x04(14)\x04(15)\x04(16)\x04(17)\x04(18)\x04(19)\x04(20)\x0c∫∫∫∫" +
+ "\x02==\x05⫝̸\x02ɫ\x02ɽ\x02ȿ\x02ɀ\x01.\x04 ゙\x04 ゚\x06より\x06コト\x05(ᄀ)\x05" +
+ "(ᄂ)\x05(ᄃ)\x05(ᄅ)\x05(ᄆ)\x05(ᄇ)\x05(ᄉ)\x05(ᄋ)\x05(ᄌ)\x05(ᄎ)\x05(ᄏ)\x05(ᄐ" +
+ ")\x05(ᄑ)\x05(ᄒ)\x05(가)\x05(나)\x05(다)\x05(라)\x05(마)\x05(바)\x05(사)\x05(아)" +
+ "\x05(자)\x05(차)\x05(카)\x05(타)\x05(파)\x05(하)\x05(주)\x08(오전)\x08(오후)\x05(一)" +
+ "\x05(二)\x05(三)\x05(四)\x05(五)\x05(六)\x05(七)\x05(八)\x05(九)\x05(十)\x05(月)" +
+ "\x05(火)\x05(水)\x05(木)\x05(金)\x05(土)\x05(日)\x05(株)\x05(有)\x05(社)\x05(名)" +
+ "\x05(特)\x05(財)\x05(祝)\x05(労)\x05(代)\x05(呼)\x05(学)\x05(監)\x05(企)\x05(資)" +
+ "\x05(協)\x05(祭)\x05(休)\x05(自)\x05(至)\x0221\x0222\x0223\x0224\x0225\x0226" +
+ "\x0227\x0228\x0229\x0230\x0231\x0232\x0233\x0234\x0235\x06참고\x06주의\x0236" +
+ "\x0237\x0238\x0239\x0240\x0241\x0242\x0243\x0244\x0245\x0246\x0247\x0248" +
+ "\x0249\x0250\x041月\x042月\x043月\x044月\x045月\x046月\x047月\x048月\x049月\x0510" +
+ "月\x0511月\x0512月\x02hg\x02ev\x06令和\x0cアパート\x0cアルファ\x0cアンペア\x09アール\x0cイニ" +
+ "ング\x09インチ\x09ウォン\x0fエスクード\x0cエーカー\x09オンス\x09オーム\x09カイリ\x0cカラット\x0cカロリー" +
+ "\x09ガロン\x09ガンマ\x06ギガ\x09ギニー\x0cキュリー\x0cギルダー\x06キロ\x0fキログラム\x12キロメートル\x0f" +
+ "キロワット\x09グラム\x0fグラムトン\x0fクルゼイロ\x0cクローネ\x09ケース\x09コルナ\x09コーポ\x0cサイクル" +
+ "\x0fサンチーム\x0cシリング\x09センチ\x09セント\x09ダース\x06デシ\x06ドル\x06トン\x06ナノ\x09ノット" +
+ "\x09ハイツ\x0fパーセント\x09パーツ\x0cバーレル\x0fピアストル\x09ピクル\x06ピコ\x06ビル\x0fファラッド\x0c" +
+ "フィート\x0fブッシェル\x09フラン\x0fヘクタール\x06ペソ\x09ペニヒ\x09ヘルツ\x09ペンス\x09ページ\x09ベータ" +
+ "\x0cポイント\x09ボルト\x06ホン\x09ポンド\x09ホール\x09ホーン\x0cマイクロ\x09マイル\x09マッハ\x09マルク" +
+ "\x0fマンション\x0cミクロン\x06ミリ\x0fミリバール\x06メガ\x0cメガトン\x0cメートル\x09ヤード\x09ヤール\x09" +
+ "ユアン\x0cリットル\x06リラ\x09ルピー\x0cルーブル\x06レム\x0fレントゲン\x09ワット\x040点\x041点\x04" +
+ "2点\x043点\x044点\x045点\x046点\x047点\x048点\x049点\x0510点\x0511点\x0512点\x0513点" +
+ "\x0514点\x0515点\x0516点\x0517点\x0518点\x0519点\x0520点\x0521点\x0522点\x0523点" +
+ "\x0524点\x02da\x02au\x02ov\x02pc\x02dm\x02iu\x06平成\x06昭和\x06大正\x06明治\x0c株" +
+ "式会社\x02pa\x02na\x02ma\x02ka\x02kb\x02mb\x02gb\x04kcal\x02pf\x02nf\x02m" +
+ "g\x02kg\x02hz\x02ml\x02dl\x02kl\x02fm\x02nm\x02mm\x02cm\x02km\x02m2\x02m" +
+ "3\x05m∕s\x06m∕s2\x07rad∕s\x08rad∕s2\x02ps\x02ns\x02ms\x02pv\x02nv\x02mv" +
+ "\x02kv\x02pw\x02nw\x02mw\x02kw\x02bq\x02cc\x02cd\x06c∕kg\x02db\x02gy\x02" +
+ "ha\x02hp\x02in\x02kk\x02kt\x02lm\x02ln\x02lx\x02ph\x02pr\x02sr\x02sv\x02" +
+ "wb\x05v∕m\x05a∕m\x041日\x042日\x043日\x044日\x045日\x046日\x047日\x048日\x049日" +
+ "\x0510日\x0511日\x0512日\x0513日\x0514日\x0515日\x0516日\x0517日\x0518日\x0519日" +
+ "\x0520日\x0521日\x0522日\x0523日\x0524日\x0525日\x0526日\x0527日\x0528日\x0529日" +
+ "\x0530日\x0531日\x02ь\x02ɦ\x02ɬ\x02ʞ\x02ʇ\x02œ\x02ʍ\x04𤋮\x04𢡊\x04𢡄\x04𣏕" +
+ "\x04𥉉\x04𥳐\x04𧻓\x02ff\x02fi\x02fl\x02st\x04մն\x04մե\x04մի\x04վն\x04մխ" +
+ "\x04יִ\x04ײַ\x02ע\x02ה\x02כ\x02ל\x02ם\x02ר\x02ת\x04שׁ\x04שׂ\x06שּׁ\x06שּ" +
+ "ׂ\x04אַ\x04אָ\x04אּ\x04בּ\x04גּ\x04דּ\x04הּ\x04וּ\x04זּ\x04טּ\x04יּ\x04" +
+ "ךּ\x04כּ\x04לּ\x04מּ\x04נּ\x04סּ\x04ףּ\x04פּ\x04צּ\x04קּ\x04רּ\x04שּ" +
+ "\x04תּ\x04וֹ\x04בֿ\x04כֿ\x04פֿ\x04אל\x02ٱ\x02ٻ\x02پ\x02ڀ\x02ٺ\x02ٿ\x02ٹ" +
+ "\x02ڤ\x02ڦ\x02ڄ\x02ڃ\x02چ\x02ڇ\x02ڍ\x02ڌ\x02ڎ\x02ڈ\x02ژ\x02ڑ\x02ک\x02گ" +
+ "\x02ڳ\x02ڱ\x02ں\x02ڻ\x02ۀ\x02ہ\x02ھ\x02ے\x02ۓ\x02ڭ\x02ۇ\x02ۆ\x02ۈ\x02ۋ" +
+ "\x02ۅ\x02ۉ\x02ې\x02ى\x04ئا\x04ئە\x04ئو\x04ئۇ\x04ئۆ\x04ئۈ\x04ئې\x04ئى\x02" +
+ "ی\x04ئج\x04ئح\x04ئم\x04ئي\x04بج\x04بح\x04بخ\x04بم\x04بى\x04بي\x04تج\x04" +
+ "تح\x04تخ\x04تم\x04تى\x04تي\x04ثج\x04ثم\x04ثى\x04ثي\x04جح\x04جم\x04حج" +
+ "\x04حم\x04خج\x04خح\x04خم\x04سج\x04سح\x04سخ\x04سم\x04صح\x04صم\x04ضج\x04ضح" +
+ "\x04ضخ\x04ضم\x04طح\x04طم\x04ظم\x04عج\x04عم\x04غج\x04غم\x04فج\x04فح\x04فخ" +
+ "\x04فم\x04فى\x04في\x04قح\x04قم\x04قى\x04قي\x04كا\x04كج\x04كح\x04كخ\x04كل" +
+ "\x04كم\x04كى\x04كي\x04لج\x04لح\x04لخ\x04لم\x04لى\x04لي\x04مج\x04مح\x04مخ" +
+ "\x04مم\x04مى\x04مي\x04نج\x04نح\x04نخ\x04نم\x04نى\x04ني\x04هج\x04هم\x04هى" +
+ "\x04هي\x04يج\x04يح\x04يخ\x04يم\x04يى\x04يي\x04ذٰ\x04رٰ\x04ىٰ\x05 ٌّ\x05 " +
+ "ٍّ\x05 َّ\x05 ُّ\x05 ِّ\x05 ّٰ\x04ئر\x04ئز\x04ئن\x04بر\x04بز\x04بن\x04ت" +
+ "ر\x04تز\x04تن\x04ثر\x04ثز\x04ثن\x04ما\x04نر\x04نز\x04نن\x04ير\x04يز\x04" +
+ "ين\x04ئخ\x04ئه\x04به\x04ته\x04صخ\x04له\x04نه\x04هٰ\x04يه\x04ثه\x04سه" +
+ "\x04شم\x04شه\x06ـَّ\x06ـُّ\x06ـِّ\x04طى\x04طي\x04عى\x04عي\x04غى\x04غي" +
+ "\x04سى\x04سي\x04شى\x04شي\x04حى\x04حي\x04جى\x04جي\x04خى\x04خي\x04صى\x04صي" +
+ "\x04ضى\x04ضي\x04شج\x04شح\x04شخ\x04شر\x04سر\x04صر\x04ضر\x04اً\x06تجم\x06ت" +
+ "حج\x06تحم\x06تخم\x06تمج\x06تمح\x06تمخ\x06جمح\x06حمي\x06حمى\x06سحج\x06سج" +
+ "ح\x06سجى\x06سمح\x06سمج\x06سمم\x06صحح\x06صمم\x06شحم\x06شجي\x06شمخ\x06شمم" +
+ "\x06ضحى\x06ضخم\x06طمح\x06طمم\x06طمي\x06عجم\x06عمم\x06عمى\x06غمم\x06غمي" +
+ "\x06غمى\x06فخم\x06قمح\x06قمم\x06لحم\x06لحي\x06لحى\x06لجج\x06لخم\x06لمح" +
+ "\x06محج\x06محم\x06محي\x06مجح\x06مجم\x06مخج\x06مخم\x06مجخ\x06همج\x06همم" +
+ "\x06نحم\x06نحى\x06نجم\x06نجى\x06نمي\x06نمى\x06يمم\x06بخي\x06تجي\x06تجى" +
+ "\x06تخي\x06تخى\x06تمي\x06تمى\x06جمي\x06جحى\x06جمى\x06سخى\x06صحي\x06شحي" +
+ "\x06ضحي\x06لجي\x06لمي\x06يحي\x06يجي\x06يمي\x06ممي\x06قمي\x06نحي\x06عمي" +
+ "\x06كمي\x06نجح\x06مخي\x06لجم\x06كمم\x06جحي\x06حجي\x06مجي\x06فمي\x06بحي" +
+ "\x06سخي\x06نجي\x06صلے\x06قلے\x08الله\x08اكبر\x08محمد\x08صلعم\x08رسول\x08" +
+ "عليه\x08وسلم\x06صلى!صلى الله عليه وسلم\x0fجل جلاله\x08ریال\x01,\x01:" +
+ "\x01!\x01?\x01_\x01{\x01}\x01[\x01]\x01#\x01&\x01*\x01-\x01<\x01>\x01\\" +
+ "\x01$\x01%\x01@\x04ـً\x04ـَ\x04ـُ\x04ـِ\x04ـّ\x04ـْ\x02ء\x02آ\x02أ\x02ؤ" +
+ "\x02إ\x02ئ\x02ا\x02ب\x02ة\x02ت\x02ث\x02ج\x02ح\x02خ\x02د\x02ذ\x02ر\x02ز" +
+ "\x02س\x02ش\x02ص\x02ض\x02ط\x02ظ\x02ع\x02غ\x02ف\x02ق\x02ك\x02ل\x02م\x02ن" +
+ "\x02ه\x02و\x02ي\x04لآ\x04لأ\x04لإ\x04لا\x01\x22\x01'\x01/\x01^\x01|\x01~" +
+ "\x02¢\x02£\x02¬\x02¦\x02¥\x08𝅗𝅥\x08𝅘𝅥\x0c𝅘𝅥𝅮\x0c𝅘𝅥𝅯\x0c𝅘𝅥𝅰\x0c𝅘𝅥𝅱\x0c𝅘𝅥𝅲" +
+ "\x08𝆹𝅥\x08𝆺𝅥\x0c𝆹𝅥𝅮\x0c𝆺𝅥𝅮\x0c𝆹𝅥𝅯\x0c𝆺𝅥𝅯\x02ı\x02ȷ\x02α\x02ε\x02ζ\x02η" +
+ "\x02κ\x02λ\x02μ\x02ν\x02ξ\x02ο\x02σ\x02τ\x02υ\x02ψ\x03∇\x03∂\x02ϝ\x02ٮ" +
+ "\x02ڡ\x02ٯ\x020,\x021,\x022,\x023,\x024,\x025,\x026,\x027,\x028,\x029," +
+ "\x03(a)\x03(b)\x03(c)\x03(d)\x03(e)\x03(f)\x03(g)\x03(h)\x03(i)\x03(j)" +
+ "\x03(k)\x03(l)\x03(m)\x03(n)\x03(o)\x03(p)\x03(q)\x03(r)\x03(s)\x03(t)" +
+ "\x03(u)\x03(v)\x03(w)\x03(x)\x03(y)\x03(z)\x07〔s〕\x02wz\x02hv\x02sd\x03p" +
+ "pv\x02wc\x02mc\x02md\x02mr\x02dj\x06ほか\x06ココ\x03サ\x03手\x03字\x03双\x03デ" +
+ "\x03二\x03多\x03解\x03天\x03交\x03映\x03無\x03料\x03前\x03後\x03再\x03新\x03初\x03終" +
+ "\x03生\x03販\x03声\x03吹\x03演\x03投\x03捕\x03一\x03三\x03遊\x03左\x03中\x03右\x03指" +
+ "\x03走\x03打\x03禁\x03空\x03合\x03満\x03有\x03月\x03申\x03割\x03営\x03配\x09〔本〕\x09〔" +
+ "三〕\x09〔二〕\x09〔安〕\x09〔点〕\x09〔打〕\x09〔盗〕\x09〔勝〕\x09〔敗〕\x03得\x03可\x03丽\x03" +
+ "丸\x03乁\x03你\x03侮\x03侻\x03倂\x03偺\x03備\x03僧\x03像\x03㒞\x03免\x03兔\x03兤\x03" +
+ "具\x03㒹\x03內\x03冗\x03冤\x03仌\x03冬\x03况\x03凵\x03刃\x03㓟\x03刻\x03剆\x03剷\x03" +
+ "㔕\x03勇\x03勉\x03勤\x03勺\x03包\x03匆\x03北\x03卉\x03卑\x03博\x03即\x03卽\x03卿\x03" +
+ "灰\x03及\x03叟\x03叫\x03叱\x03吆\x03咞\x03吸\x03呈\x03周\x03咢\x03哶\x03唐\x03啓\x03" +
+ "啣\x03善\x03喙\x03喫\x03喳\x03嗂\x03圖\x03嘆\x03圗\x03噑\x03噴\x03切\x03壮\x03城\x03" +
+ "埴\x03堍\x03型\x03堲\x03報\x03墬\x03売\x03壷\x03夆\x03夢\x03奢\x03姬\x03娛\x03娧\x03" +
+ "姘\x03婦\x03㛮\x03嬈\x03嬾\x03寃\x03寘\x03寧\x03寳\x03寿\x03将\x03尢\x03㞁\x03屠\x03" +
+ "屮\x03峀\x03岍\x03嵃\x03嵮\x03嵫\x03嵼\x03巡\x03巢\x03㠯\x03巽\x03帨\x03帽\x03幩\x03" +
+ "㡢\x03㡼\x03庰\x03庳\x03庶\x03廊\x03廾\x03舁\x03弢\x03㣇\x03形\x03彫\x03㣣\x03徚\x03" +
+ "忍\x03志\x03忹\x03悁\x03㤺\x03㤜\x03悔\x03惇\x03慈\x03慌\x03慎\x03慺\x03憎\x03憲\x03" +
+ "憤\x03憯\x03懞\x03懲\x03懶\x03成\x03戛\x03扝\x03抱\x03拔\x03捐\x03挽\x03拼\x03捨\x03" +
+ "掃\x03揤\x03搢\x03揅\x03掩\x03㨮\x03摩\x03摾\x03撝\x03摷\x03㩬\x03敏\x03敬\x03旣\x03" +
+ "書\x03晉\x03㬙\x03暑\x03㬈\x03㫤\x03冒\x03冕\x03最\x03暜\x03肭\x03䏙\x03朗\x03望\x03" +
+ "朡\x03杞\x03杓\x03㭉\x03柺\x03枅\x03桒\x03梅\x03梎\x03栟\x03椔\x03㮝\x03楂\x03榣\x03" +
+ "槪\x03檨\x03櫛\x03㰘\x03次\x03歔\x03㱎\x03歲\x03殟\x03殺\x03殻\x03汎\x03沿\x03泍\x03" +
+ "汧\x03洖\x03派\x03海\x03流\x03浩\x03浸\x03涅\x03洴\x03港\x03湮\x03㴳\x03滋\x03滇\x03" +
+ "淹\x03潮\x03濆\x03瀹\x03瀞\x03瀛\x03㶖\x03灊\x03災\x03灷\x03炭\x03煅\x03熜\x03爨\x03" +
+ "爵\x03牐\x03犀\x03犕\x03獺\x03王\x03㺬\x03玥\x03㺸\x03瑇\x03瑜\x03瑱\x03璅\x03瓊\x03" +
+ "㼛\x03甤\x03甾\x03異\x03瘐\x03㿼\x03䀈\x03直\x03眞\x03真\x03睊\x03䀹\x03瞋\x03䁆\x03" +
+ "䂖\x03硎\x03碌\x03磌\x03䃣\x03祖\x03福\x03秫\x03䄯\x03穀\x03穊\x03穏\x03䈂\x03篆\x03" +
+ "築\x03䈧\x03糒\x03䊠\x03糨\x03糣\x03紀\x03絣\x03䌁\x03緇\x03縂\x03繅\x03䌴\x03䍙\x03" +
+ "罺\x03羕\x03翺\x03者\x03聠\x03聰\x03䏕\x03育\x03脃\x03䐋\x03脾\x03媵\x03舄\x03辞\x03" +
+ "䑫\x03芑\x03芋\x03芝\x03劳\x03花\x03芳\x03芽\x03苦\x03若\x03茝\x03荣\x03莭\x03茣\x03" +
+ "莽\x03菧\x03著\x03荓\x03菊\x03菌\x03菜\x03䔫\x03蓱\x03蓳\x03蔖\x03蕤\x03䕝\x03䕡\x03" +
+ "䕫\x03虐\x03虜\x03虧\x03虩\x03蚩\x03蚈\x03蜎\x03蛢\x03蝹\x03蜨\x03蝫\x03螆\x03蟡\x03" +
+ "蠁\x03䗹\x03衠\x03衣\x03裗\x03裞\x03䘵\x03裺\x03㒻\x03䚾\x03䛇\x03誠\x03諭\x03變\x03" +
+ "豕\x03貫\x03賁\x03贛\x03起\x03跋\x03趼\x03跰\x03軔\x03輸\x03邔\x03郱\x03鄑\x03鄛\x03" +
+ "鈸\x03鋗\x03鋘\x03鉼\x03鏹\x03鐕\x03開\x03䦕\x03閷\x03䧦\x03雃\x03嶲\x03霣\x03䩮\x03" +
+ "䩶\x03韠\x03䪲\x03頋\x03頩\x03飢\x03䬳\x03餩\x03馧\x03駂\x03駾\x03䯎\x03鬒\x03鱀\x03" +
+ "鳽\x03䳎\x03䳭\x03鵧\x03䳸\x03麻\x03䵖\x03黹\x03黾\x03鼅\x03鼏\x03鼖\x03鼻"
+
+var xorData string = "" + // Size: 4862 bytes
+ "\x02\x0c\x09\x02\xb0\xec\x02\xad\xd8\x02\xad\xd9\x02\x06\x07\x02\x0f\x12" +
+ "\x02\x0f\x1f\x02\x0f\x1d\x02\x01\x13\x02\x0f\x16\x02\x0f\x0b\x02\x0f3" +
+ "\x02\x0f7\x02\x0f?\x02\x0f/\x02\x0f*\x02\x0c&\x02\x0c*\x02\x0c;\x02\x0c9" +
+ "\x02\x0c%\x02\xab\xed\x02\xab\xe2\x02\xab\xe3\x02\xa9\xe0\x02\xa9\xe1" +
+ "\x02\xa9\xe6\x02\xa3\xcb\x02\xa3\xc8\x02\xa3\xc9\x02\x01#\x02\x01\x08" +
+ "\x02\x0e>\x02\x0e'\x02\x0f\x03\x02\x03\x0d\x02\x03\x09\x02\x03\x17\x02" +
+ "\x03\x0e\x02\x02\x03\x02\x011\x02\x01\x00\x02\x01\x10\x02\x03<\x02\x07" +
+ "\x0d\x02\x02\x0c\x02\x0c0\x02\x01\x03\x02\x01\x01\x02\x01 \x02\x01\x22" +
+ "\x02\x01)\x02\x01\x0a\x02\x01\x0c\x02\x02\x06\x02\x02\x02\x02\x03\x10" +
+ "\x03\x037 \x03\x0b+\x03\x021\x00\x02\x01\x04\x02\x01\x02\x02\x019\x02" +
+ "\x03\x1c\x02\x02$\x03\x80p$\x02\x03:\x02\x03\x0a\x03\xc1r.\x03\xc1r,\x03" +
+ "\xc1r\x02\x02\x02:\x02\x02>\x02\x02,\x02\x02\x10\x02\x02\x00\x03\xc1s<" +
+ "\x03\xc1s*\x03\xc2L$\x03\xc2L;\x02\x09)\x02\x0a\x19\x03\x83\xab\xe3\x03" +
+ "\x83\xab\xf2\x03 4\xe0\x03\x81\xab\xea\x03\x81\xab\xf3\x03 4\xef\x03\x96" +
+ "\xe1\xcd\x03\x84\xe5\xc3\x02\x0d\x11\x03\x8b\xec\xcb\x03\x94\xec\xcf\x03" +
+ "\x9a\xec\xc2\x03\x8b\xec\xdb\x03\x94\xec\xdf\x03\x9a\xec\xd2\x03\x01\x0c" +
+ "!\x03\x01\x0c#\x03ʠ\x9d\x03ʣ\x9c\x03ʢ\x9f\x03ʥ\x9e\x03ʤ\x91\x03ʧ\x90\x03" +
+ "ʦ\x93\x03ʩ\x92\x03ʨ\x95\x03\xca\xf3\xb5\x03\xca\xf0\xb4\x03\xca\xf1\xb7" +
+ "\x03\xca\xf6\xb6\x03\xca\xf7\x89\x03\xca\xf4\x88\x03\xca\xf5\x8b\x03\xca" +
+ "\xfa\x8a\x03\xca\xfb\x8d\x03\xca\xf8\x8c\x03\xca\xf9\x8f\x03\xca\xfe\x8e" +
+ "\x03\xca\xff\x81\x03\xca\xfc\x80\x03\xca\xfd\x83\x03\xca\xe2\x82\x03\xca" +
+ "\xe3\x85\x03\xca\xe0\x84\x03\xca\xe1\x87\x03\xca\xe6\x86\x03\xca\xe7\x99" +
+ "\x03\xca\xe4\x98\x03\xca\xe5\x9b\x03\xca\xea\x9a\x03\xca\xeb\x9d\x03\xca" +
+ "\xe8\x9c\x03ؓ\x89\x03ߔ\x8b\x02\x010\x03\x03\x04\x1e\x03\x04\x15\x12\x03" +
+ "\x0b\x05,\x03\x06\x04\x00\x03\x06\x04)\x03\x06\x044\x03\x06\x04<\x03\x06" +
+ "\x05\x1d\x03\x06\x06\x00\x03\x06\x06\x0a\x03\x06\x06'\x03\x06\x062\x03" +
+ "\x0786\x03\x079/\x03\x079 \x03\x07:\x0e\x03\x07:\x1b\x03\x07:%\x03\x07;/" +
+ "\x03\x07;%\x03\x074\x11\x03\x076\x09\x03\x077*\x03\x070\x01\x03\x070\x0f" +
+ "\x03\x070.\x03\x071\x16\x03\x071\x04\x03\x0710\x03\x072\x18\x03\x072-" +
+ "\x03\x073\x14\x03\x073>\x03\x07'\x09\x03\x07 \x00\x03\x07\x1f\x0b\x03" +
+ "\x07\x18#\x03\x07\x18(\x03\x07\x186\x03\x07\x18\x03\x03\x07\x19\x16\x03" +
+ "\x07\x116\x03\x07\x12'\x03\x07\x13\x10\x03\x07\x0c&\x03\x07\x0c\x08\x03" +
+ "\x07\x0c\x13\x03\x07\x0d\x02\x03\x07\x0d\x1c\x03\x07\x0b5\x03\x07\x0b" +
+ "\x0a\x03\x07\x0b\x01\x03\x07\x0b\x0f\x03\x07\x05\x00\x03\x07\x05\x09\x03" +
+ "\x07\x05\x0b\x03\x07\x07\x01\x03\x07\x07\x08\x03\x07\x00<\x03\x07\x00+" +
+ "\x03\x07\x01)\x03\x07\x01\x1b\x03\x07\x01\x08\x03\x07\x03?\x03\x0445\x03" +
+ "\x044\x08\x03\x0454\x03\x04)/\x03\x04)5\x03\x04+\x05\x03\x04+\x14\x03" +
+ "\x04+ \x03\x04+<\x03\x04*&\x03\x04*\x22\x03\x04&8\x03\x04!\x01\x03\x04!" +
+ "\x22\x03\x04\x11+\x03\x04\x10.\x03\x04\x104\x03\x04\x13=\x03\x04\x12\x04" +
+ "\x03\x04\x12\x0a\x03\x04\x0d\x1d\x03\x04\x0d\x07\x03\x04\x0d \x03\x05<>" +
+ "\x03\x055<\x03\x055!\x03\x055#\x03\x055&\x03\x054\x1d\x03\x054\x02\x03" +
+ "\x054\x07\x03\x0571\x03\x053\x1a\x03\x053\x16\x03\x05.<\x03\x05.\x07\x03" +
+ "\x05):\x03\x05)<\x03\x05)\x0c\x03\x05)\x15\x03\x05+-\x03\x05+5\x03\x05$" +
+ "\x1e\x03\x05$\x14\x03\x05'\x04\x03\x05'\x14\x03\x05&\x02\x03\x05\x226" +
+ "\x03\x05\x22\x0c\x03\x05\x22\x1c\x03\x05\x19\x0a\x03\x05\x1b\x09\x03\x05" +
+ "\x1b\x0c\x03\x05\x14\x07\x03\x05\x16?\x03\x05\x16\x0c\x03\x05\x0c\x05" +
+ "\x03\x05\x0e\x0f\x03\x05\x01\x0e\x03\x05\x00(\x03\x05\x030\x03\x05\x03" +
+ "\x06\x03\x0a==\x03\x0a=1\x03\x0a=,\x03\x0a=\x0c\x03\x0a??\x03\x0a<\x08" +
+ "\x03\x0a9!\x03\x0a9)\x03\x0a97\x03\x0a99\x03\x0a6\x0a\x03\x0a6\x1c\x03" +
+ "\x0a6\x17\x03\x0a7'\x03\x0a78\x03\x0a73\x03\x0a'\x01\x03\x0a'&\x03\x0a" +
+ "\x1f\x0e\x03\x0a\x1f\x03\x03\x0a\x1f3\x03\x0a\x1b/\x03\x0a\x18\x19\x03" +
+ "\x0a\x19\x01\x03\x0a\x16\x14\x03\x0a\x0e\x22\x03\x0a\x0f\x10\x03\x0a\x0f" +
+ "\x02\x03\x0a\x0f \x03\x0a\x0c\x04\x03\x0a\x0b>\x03\x0a\x0b+\x03\x0a\x08/" +
+ "\x03\x0a\x046\x03\x0a\x05\x14\x03\x0a\x00\x04\x03\x0a\x00\x10\x03\x0a" +
+ "\x00\x14\x03\x0b<3\x03\x0b;*\x03\x0b9\x22\x03\x0b9)\x03\x0b97\x03\x0b+" +
+ "\x10\x03\x0b((\x03\x0b&5\x03\x0b$\x1c\x03\x0b$\x12\x03\x0b%\x04\x03\x0b#" +
+ "<\x03\x0b#0\x03\x0b#\x0d\x03\x0b#\x19\x03\x0b!:\x03\x0b!\x1f\x03\x0b!" +
+ "\x00\x03\x0b\x1e5\x03\x0b\x1c\x1d\x03\x0b\x1d-\x03\x0b\x1d(\x03\x0b\x18." +
+ "\x03\x0b\x18 \x03\x0b\x18\x16\x03\x0b\x14\x13\x03\x0b\x15$\x03\x0b\x15" +
+ "\x22\x03\x0b\x12\x1b\x03\x0b\x12\x10\x03\x0b\x132\x03\x0b\x13=\x03\x0b" +
+ "\x12\x18\x03\x0b\x0c&\x03\x0b\x061\x03\x0b\x06:\x03\x0b\x05#\x03\x0b\x05" +
+ "<\x03\x0b\x04\x0b\x03\x0b\x04\x04\x03\x0b\x04\x1b\x03\x0b\x042\x03\x0b" +
+ "\x041\x03\x0b\x03\x03\x03\x0b\x03\x1d\x03\x0b\x03/\x03\x0b\x03+\x03\x0b" +
+ "\x02\x1b\x03\x0b\x02\x00\x03\x0b\x01\x1e\x03\x0b\x01\x08\x03\x0b\x015" +
+ "\x03\x06\x0d9\x03\x06\x0d=\x03\x06\x0d?\x03\x02\x001\x03\x02\x003\x03" +
+ "\x02\x02\x19\x03\x02\x006\x03\x02\x02\x1b\x03\x02\x004\x03\x02\x00<\x03" +
+ "\x02\x02\x0a\x03\x02\x02\x0e\x03\x02\x01\x1a\x03\x02\x01\x07\x03\x02\x01" +
+ "\x05\x03\x02\x01\x0b\x03\x02\x01%\x03\x02\x01\x0c\x03\x02\x01\x04\x03" +
+ "\x02\x01\x1c\x03\x02\x00.\x03\x02\x002\x03\x02\x00>\x03\x02\x00\x12\x03" +
+ "\x02\x00\x16\x03\x02\x011\x03\x02\x013\x03\x02\x02 \x03\x02\x02%\x03\x02" +
+ "\x02$\x03\x02\x028\x03\x02\x02;\x03\x02\x024\x03\x02\x012\x03\x02\x022" +
+ "\x03\x02\x02/\x03\x02\x01,\x03\x02\x01\x13\x03\x02\x01\x16\x03\x02\x01" +
+ "\x11\x03\x02\x01\x1e\x03\x02\x01\x15\x03\x02\x01\x17\x03\x02\x01\x0f\x03" +
+ "\x02\x01\x08\x03\x02\x00?\x03\x02\x03\x07\x03\x02\x03\x0d\x03\x02\x03" +
+ "\x13\x03\x02\x03\x1d\x03\x02\x03\x1f\x03\x02\x00\x03\x03\x02\x00\x0d\x03" +
+ "\x02\x00\x01\x03\x02\x00\x1b\x03\x02\x00\x19\x03\x02\x00\x18\x03\x02\x00" +
+ "\x13\x03\x02\x00/\x03\x07>\x12\x03\x07<\x1f\x03\x07>\x1d\x03\x06\x1d\x0e" +
+ "\x03\x07>\x1c\x03\x07>:\x03\x07>\x13\x03\x04\x12+\x03\x07?\x03\x03\x07>" +
+ "\x02\x03\x06\x224\x03\x06\x1a.\x03\x07<%\x03\x06\x1c\x0b\x03\x0609\x03" +
+ "\x05\x1f\x01\x03\x04'\x08\x03\x93\xfd\xf5\x03\x02\x0d \x03\x02\x0d#\x03" +
+ "\x02\x0d!\x03\x02\x0d&\x03\x02\x0d\x22\x03\x02\x0d/\x03\x02\x0d,\x03\x02" +
+ "\x0d$\x03\x02\x0d'\x03\x02\x0d%\x03\x02\x0d;\x03\x02\x0d=\x03\x02\x0d?" +
+ "\x03\x099.\x03\x08\x0b7\x03\x08\x02\x14\x03\x08\x14\x0d\x03\x08.:\x03" +
+ "\x089'\x03\x0f\x0b\x18\x03\x0f\x1c1\x03\x0f\x17&\x03\x0f9\x1f\x03\x0f0" +
+ "\x0c\x03\x0e\x0a9\x03\x0e\x056\x03\x0e\x1c#\x03\x0f\x13\x0e\x03\x072\x00" +
+ "\x03\x070\x0d\x03\x072\x0b\x03\x06\x11\x18\x03\x070\x10\x03\x06\x0f(\x03" +
+ "\x072\x05\x03\x06\x0f,\x03\x073\x15\x03\x06\x07\x08\x03\x05\x16\x02\x03" +
+ "\x04\x0b \x03\x05:8\x03\x05\x16%\x03\x0a\x0d\x1f\x03\x06\x16\x10\x03\x05" +
+ "\x1d5\x03\x05*;\x03\x05\x16\x1b\x03\x04.-\x03\x06\x1a\x19\x03\x04\x03," +
+ "\x03\x0b87\x03\x04/\x0a\x03\x06\x00,\x03\x04-\x01\x03\x04\x1e-\x03\x06/(" +
+ "\x03\x0a\x0b5\x03\x06\x0e7\x03\x06\x07.\x03\x0597\x03\x0a*%\x03\x0760" +
+ "\x03\x06\x0c;\x03\x05'\x00\x03\x072.\x03\x072\x08\x03\x06=\x01\x03\x06" +
+ "\x05\x1b\x03\x06\x06\x12\x03\x06$=\x03\x06'\x0d\x03\x04\x11\x0f\x03\x076" +
+ ",\x03\x06\x07;\x03\x06.,\x03\x86\xf9\xea\x03\x8f\xff\xeb\x02\x092\x02" +
+ "\x095\x02\x094\x02\x09;\x02\x09>\x02\x098\x02\x09*\x02\x09/\x02\x09,\x02" +
+ "\x09%\x02\x09&\x02\x09#\x02\x09 \x02\x08!\x02\x08%\x02\x08$\x02\x08+\x02" +
+ "\x08.\x02\x08*\x02\x08&\x02\x088\x02\x08>\x02\x084\x02\x086\x02\x080\x02" +
+ "\x08\x10\x02\x08\x17\x02\x08\x12\x02\x08\x1d\x02\x08\x1f\x02\x08\x13\x02" +
+ "\x08\x15\x02\x08\x14\x02\x08\x0c\x03\x8b\xfd\xd0\x03\x81\xec\xc6\x03\x87" +
+ "\xe0\x8a\x03-2\xe3\x03\x80\xef\xe4\x03-2\xea\x03\x88\xe6\xeb\x03\x8e\xe6" +
+ "\xe8\x03\x84\xe6\xe9\x03\x97\xe6\xee\x03-2\xf9\x03-2\xf6\x03\x8e\xe3\xad" +
+ "\x03\x80\xe3\x92\x03\x88\xe3\x90\x03\x8e\xe3\x90\x03\x80\xe3\x97\x03\x88" +
+ "\xe3\x95\x03\x88\xfe\xcb\x03\x8e\xfe\xca\x03\x84\xfe\xcd\x03\x91\xef\xc9" +
+ "\x03-2\xc1\x03-2\xc0\x03-2\xcb\x03\x88@\x09\x03\x8e@\x08\x03\x8f\xe0\xf5" +
+ "\x03\x8e\xe6\xf9\x03\x8e\xe0\xfa\x03\x93\xff\xf4\x03\x84\xee\xd3\x03\x0b" +
+ "(\x04\x023 \x03\x0b)\x08\x021;\x02\x01*\x03\x0b#\x10\x03\x0b 0\x03\x0b!" +
+ "\x10\x03\x0b!0\x03\x07\x15\x08\x03\x09?5\x03\x07\x1f\x08\x03\x07\x17\x0b" +
+ "\x03\x09\x1f\x15\x03\x0b\x1c7\x03\x0a+#\x03\x06\x1a\x1b\x03\x06\x1a\x14" +
+ "\x03\x0a\x01\x18\x03\x06#\x1b\x03\x0a2\x0c\x03\x0a\x01\x04\x03\x09#;\x03" +
+ "\x08='\x03\x08\x1a\x0a\x03\x07\x03\x07:+\x03\x07\x07*\x03\x06&\x1c\x03" +
+ "\x09\x0c\x16\x03\x09\x10\x0e\x03\x08'\x0f\x03\x08+\x09\x03\x074%\x03\x06" +
+ "!3\x03\x06\x03+\x03\x0b\x1e\x19\x03\x0a))\x03\x09\x08\x19\x03\x08,\x05" +
+ "\x03\x07<2\x03\x06\x1c>\x03\x0a\x111\x03\x09\x1b\x09\x03\x073.\x03\x07" +
+ "\x01\x00\x03\x09/,\x03\x07#>\x03\x07\x048\x03\x0a\x1f\x22\x03\x098>\x03" +
+ "\x09\x11\x00\x03\x08/\x17\x03\x06'\x22\x03\x0b\x1a+\x03\x0a\x22\x19\x03" +
+ "\x0a/1\x03\x0974\x03\x09\x0f\x22\x03\x08,\x22\x03\x08?\x14\x03\x07$5\x03" +
+ "\x07<3\x03\x07=*\x03\x07\x13\x18\x03\x068\x0a\x03\x06\x09\x16\x03\x06" +
+ "\x13\x00\x03\x08\x067\x03\x08\x01\x03\x03\x08\x12\x1d\x03\x07+7\x03\x06(" +
+ ";\x03\x06\x1c?\x03\x07\x0e\x17\x03\x0a\x06\x1d\x03\x0a\x19\x07\x03\x08" +
+ "\x14$\x03\x07$;\x03\x08,$\x03\x08\x06\x0d\x03\x07\x16\x0a\x03\x06>>\x03" +
+ "\x0a\x06\x12\x03\x0a\x14)\x03\x09\x0d\x1f\x03\x09\x12\x17\x03\x09\x19" +
+ "\x01\x03\x08\x11 \x03\x08\x1d'\x03\x06<\x1a\x03\x0a.\x00\x03\x07'\x18" +
+ "\x03\x0a\x22\x08\x03\x08\x0d\x0a\x03\x08\x13)\x03\x07*)\x03\x06<,\x03" +
+ "\x07\x0b\x1a\x03\x09.\x14\x03\x09\x0d\x1e\x03\x07\x0e#\x03\x0b\x1d'\x03" +
+ "\x0a\x0a8\x03\x09%2\x03\x08+&\x03\x080\x12\x03\x0a)4\x03\x08\x06\x1f\x03" +
+ "\x0b\x1b\x1a\x03\x0a\x1b\x0f\x03\x0b\x1d*\x03\x09\x16$\x03\x090\x11\x03" +
+ "\x08\x11\x08\x03\x0a*(\x03\x0a\x042\x03\x089,\x03\x074'\x03\x07\x0f\x05" +
+ "\x03\x09\x0b\x0a\x03\x07\x1b\x01\x03\x09\x17:\x03\x09.\x0d\x03\x07.\x11" +
+ "\x03\x09+\x15\x03\x080\x13\x03\x0b\x1f\x19\x03\x0a \x11\x03\x0a\x220\x03" +
+ "\x09\x07;\x03\x08\x16\x1c\x03\x07,\x13\x03\x07\x0e/\x03\x06\x221\x03\x0a" +
+ ".\x0a\x03\x0a7\x02\x03\x0a\x032\x03\x0a\x1d.\x03\x091\x06\x03\x09\x19:" +
+ "\x03\x08\x02/\x03\x060+\x03\x06\x0f-\x03\x06\x1c\x1f\x03\x06\x1d\x07\x03" +
+ "\x0a,\x11\x03\x09=\x0d\x03\x09\x0b;\x03\x07\x1b/\x03\x0a\x1f:\x03\x09 " +
+ "\x1f\x03\x09.\x10\x03\x094\x0b\x03\x09\x1a1\x03\x08#\x1a\x03\x084\x1d" +
+ "\x03\x08\x01\x1f\x03\x08\x11\x22\x03\x07'8\x03\x07\x1a>\x03\x0757\x03" +
+ "\x06&9\x03\x06+\x11\x03\x0a.\x0b\x03\x0a,>\x03\x0a4#\x03\x08%\x17\x03" +
+ "\x07\x05\x22\x03\x07\x0c\x0b\x03\x0a\x1d+\x03\x0a\x19\x16\x03\x09+\x1f" +
+ "\x03\x09\x08\x0b\x03\x08\x16\x18\x03\x08+\x12\x03\x0b\x1d\x0c\x03\x0a=" +
+ "\x10\x03\x0a\x09\x0d\x03\x0a\x10\x11\x03\x09&0\x03\x08(\x1f\x03\x087\x07" +
+ "\x03\x08\x185\x03\x07'6\x03\x06.\x05\x03\x06=\x04\x03\x06;;\x03\x06\x06," +
+ "\x03\x0b\x18>\x03\x08\x00\x18\x03\x06 \x03\x03\x06<\x00\x03\x09%\x18\x03" +
+ "\x0b\x1c<\x03\x0a%!\x03\x0a\x09\x12\x03\x0a\x16\x02\x03\x090'\x03\x09" +
+ "\x0e=\x03\x08 \x0e\x03\x08>\x03\x03\x074>\x03\x06&?\x03\x06\x19\x09\x03" +
+ "\x06?(\x03\x0a-\x0e\x03\x09:3\x03\x098:\x03\x09\x12\x0b\x03\x09\x1d\x17" +
+ "\x03\x087\x05\x03\x082\x14\x03\x08\x06%\x03\x08\x13\x1f\x03\x06\x06\x0e" +
+ "\x03\x0a\x22<\x03\x09/<\x03\x06>+\x03\x0a'?\x03\x0a\x13\x0c\x03\x09\x10<" +
+ "\x03\x07\x1b=\x03\x0a\x19\x13\x03\x09\x22\x1d\x03\x09\x07\x0d\x03\x08)" +
+ "\x1c\x03\x06=\x1a\x03\x0a/4\x03\x0a7\x11\x03\x0a\x16:\x03\x09?3\x03\x09:" +
+ "/\x03\x09\x05\x0a\x03\x09\x14\x06\x03\x087\x22\x03\x080\x07\x03\x08\x1a" +
+ "\x1f\x03\x07\x04(\x03\x07\x04\x09\x03\x06 %\x03\x06<\x08\x03\x0a+\x14" +
+ "\x03\x09\x1d\x16\x03\x0a70\x03\x08 >\x03\x0857\x03\x070\x0a\x03\x06=\x12" +
+ "\x03\x06\x16%\x03\x06\x1d,\x03\x099#\x03\x09\x10>\x03\x07 \x1e\x03\x08" +
+ "\x0c<\x03\x08\x0b\x18\x03\x08\x15+\x03\x08,:\x03\x08%\x22\x03\x07\x0a$" +
+ "\x03\x0b\x1c=\x03\x07+\x08\x03\x0a/\x05\x03\x0a \x07\x03\x0a\x12'\x03" +
+ "\x09#\x11\x03\x08\x1b\x15\x03\x0a\x06\x01\x03\x09\x1c\x1b\x03\x0922\x03" +
+ "\x07\x14<\x03\x07\x09\x04\x03\x061\x04\x03\x07\x0e\x01\x03\x0a\x13\x18" +
+ "\x03\x0a-\x0c\x03\x0a?\x0d\x03\x0a\x09\x0a\x03\x091&\x03\x0a/\x0b\x03" +
+ "\x08$<\x03\x083\x1d\x03\x08\x0c$\x03\x08\x0d\x07\x03\x08\x0d?\x03\x08" +
+ "\x0e\x14\x03\x065\x0a\x03\x08\x1a#\x03\x08\x16#\x03\x0702\x03\x07\x03" +
+ "\x1a\x03\x06(\x1d\x03\x06+\x1b\x03\x06\x0b\x05\x03\x06\x0b\x17\x03\x06" +
+ "\x0c\x04\x03\x06\x1e\x19\x03\x06+0\x03\x062\x18\x03\x0b\x16\x1e\x03\x0a+" +
+ "\x16\x03\x0a-?\x03\x0a#:\x03\x0a#\x10\x03\x0a%$\x03\x0a>+\x03\x0a01\x03" +
+ "\x0a1\x10\x03\x0a\x099\x03\x0a\x0a\x12\x03\x0a\x19\x1f\x03\x0a\x19\x12" +
+ "\x03\x09*)\x03\x09-\x16\x03\x09.1\x03\x09.2\x03\x09<\x0e\x03\x09> \x03" +
+ "\x093\x12\x03\x09\x0b\x01\x03\x09\x1c2\x03\x09\x11\x1c\x03\x09\x15%\x03" +
+ "\x08,&\x03\x08!\x22\x03\x089(\x03\x08\x0b\x1a\x03\x08\x0d2\x03\x08\x0c" +
+ "\x04\x03\x08\x0c\x06\x03\x08\x0c\x1f\x03\x08\x0c\x0c\x03\x08\x0f\x1f\x03" +
+ "\x08\x0f\x1d\x03\x08\x00\x14\x03\x08\x03\x14\x03\x08\x06\x16\x03\x08\x1e" +
+ "#\x03\x08\x11\x11\x03\x08\x10\x18\x03\x08\x14(\x03\x07)\x1e\x03\x07.1" +
+ "\x03\x07 $\x03\x07 '\x03\x078\x08\x03\x07\x0d0\x03\x07\x0f7\x03\x07\x05#" +
+ "\x03\x07\x05\x1a\x03\x07\x1a7\x03\x07\x1d-\x03\x07\x17\x10\x03\x06)\x1f" +
+ "\x03\x062\x0b\x03\x066\x16\x03\x06\x09\x11\x03\x09(\x1e\x03\x07!5\x03" +
+ "\x0b\x11\x16\x03\x0a/\x04\x03\x0a,\x1a\x03\x0b\x173\x03\x0a,1\x03\x0a/5" +
+ "\x03\x0a\x221\x03\x0a\x22\x0d\x03\x0a?%\x03\x0a<,\x03\x0a?#\x03\x0a>\x19" +
+ "\x03\x0a\x08&\x03\x0a\x0b\x0e\x03\x0a\x0c:\x03\x0a\x0c+\x03\x0a\x03\x22" +
+ "\x03\x0a\x06)\x03\x0a\x11\x10\x03\x0a\x11\x1a\x03\x0a\x17-\x03\x0a\x14(" +
+ "\x03\x09)\x1e\x03\x09/\x09\x03\x09.\x00\x03\x09,\x07\x03\x09/*\x03\x09-9" +
+ "\x03\x09\x228\x03\x09%\x09\x03\x09:\x12\x03\x09;\x1d\x03\x09?\x06\x03" +
+ "\x093%\x03\x096\x05\x03\x096\x08\x03\x097\x02\x03\x09\x07,\x03\x09\x04," +
+ "\x03\x09\x1f\x16\x03\x09\x11\x03\x03\x09\x11\x12\x03\x09\x168\x03\x08*" +
+ "\x05\x03\x08/2\x03\x084:\x03\x08\x22+\x03\x08 0\x03\x08&\x0a\x03\x08;" +
+ "\x10\x03\x08>$\x03\x08>\x18\x03\x0829\x03\x082:\x03\x081,\x03\x081<\x03" +
+ "\x081\x1c\x03\x087#\x03\x087*\x03\x08\x09'\x03\x08\x00\x1d\x03\x08\x05-" +
+ "\x03\x08\x1f4\x03\x08\x1d\x04\x03\x08\x16\x0f\x03\x07*7\x03\x07'!\x03" +
+ "\x07%\x1b\x03\x077\x0c\x03\x07\x0c1\x03\x07\x0c.\x03\x07\x00\x06\x03\x07" +
+ "\x01\x02\x03\x07\x010\x03\x07\x06=\x03\x07\x01\x03\x03\x07\x01\x13\x03" +
+ "\x07\x06\x06\x03\x07\x05\x0a\x03\x07\x1f\x09\x03\x07\x17:\x03\x06*1\x03" +
+ "\x06-\x1d\x03\x06\x223\x03\x062:\x03\x060$\x03\x066\x1e\x03\x064\x12\x03" +
+ "\x0645\x03\x06\x0b\x00\x03\x06\x0b7\x03\x06\x07\x1f\x03\x06\x15\x12\x03" +
+ "\x0c\x05\x0f\x03\x0b+\x0b\x03\x0b+-\x03\x06\x16\x1b\x03\x06\x15\x17\x03" +
+ "\x89\xca\xea\x03\x89\xca\xe8\x03\x0c8\x10\x03\x0c8\x01\x03\x0c8\x0f\x03" +
+ "\x0d8%\x03\x0d8!\x03\x0c8-\x03\x0c8/\x03\x0c8+\x03\x0c87\x03\x0c85\x03" +
+ "\x0c9\x09\x03\x0c9\x0d\x03\x0c9\x0f\x03\x0c9\x0b\x03\xcfu\x0c\x03\xcfu" +
+ "\x0f\x03\xcfu\x0e\x03\xcfu\x09\x03\x0c9\x10\x03\x0d9\x0c\x03\xcf`;\x03" +
+ "\xcf`>\x03\xcf`9\x03\xcf`8\x03\xcf`7\x03\xcf`*\x03\xcf`-\x03\xcf`,\x03" +
+ "\x0d\x1b\x1a\x03\x0d\x1b&\x03\x0c=.\x03\x0c=%\x03\x0c>\x1e\x03\x0c>\x14" +
+ "\x03\x0c?\x06\x03\x0c?\x0b\x03\x0c?\x0c\x03\x0c?\x0d\x03\x0c?\x02\x03" +
+ "\x0c>\x0f\x03\x0c>\x08\x03\x0c>\x09\x03\x0c>,\x03\x0c>\x0c\x03\x0c?\x13" +
+ "\x03\x0c?\x16\x03\x0c?\x15\x03\x0c?\x1c\x03\x0c?\x1f\x03\x0c?\x1d\x03" +
+ "\x0c?\x1a\x03\x0c?\x17\x03\x0c?\x08\x03\x0c?\x09\x03\x0c?\x0e\x03\x0c?" +
+ "\x04\x03\x0c?\x05\x03\x0c\x03\x0c=\x00\x03\x0c=\x06\x03\x0c=\x05\x03" +
+ "\x0c=\x0c\x03\x0c=\x0f\x03\x0c=\x0d\x03\x0c=\x0b\x03\x0c=\x07\x03\x0c=" +
+ "\x19\x03\x0c=\x15\x03\x0c=\x11\x03\x0c=1\x03\x0c=3\x03\x0c=0\x03\x0c=>" +
+ "\x03\x0c=2\x03\x0c=6\x03\x0c<\x07\x03\x0c<\x05\x03\x0e:!\x03\x0e:#\x03" +
+ "\x0e8\x09\x03\x0e:&\x03\x0e8\x0b\x03\x0e:$\x03\x0e:,\x03\x0e8\x1a\x03" +
+ "\x0e8\x1e\x03\x0e:*\x03\x0e:7\x03\x0e:5\x03\x0e:;\x03\x0e:\x15\x03\x0e:<" +
+ "\x03\x0e:4\x03\x0e:'\x03\x0e:-\x03\x0e:%\x03\x0e:?\x03\x0e:=\x03\x0e:)" +
+ "\x03\x0e:/\x03\xcfs'\x03\x0d=\x0f\x03\x0d+*\x03\x0d99\x03\x0d9;\x03\x0d9" +
+ "?\x03\x0d)\x0d\x03\x0d(%\x02\x01\x18\x02\x01(\x02\x01\x1e\x03\x0f$!\x03" +
+ "\x0f87\x03\x0f4\x0e\x03\x0f5\x1d\x03\x06'\x03\x03\x0f\x08\x18\x03\x0f" +
+ "\x0d\x1b\x03\x0e2=\x03\x0e;\x08\x03\x0e:\x0b\x03\x0e\x06$\x03\x0e\x0d)" +
+ "\x03\x0e\x16\x1f\x03\x0e\x16\x1b\x03\x0d$\x0a\x03\x05,\x1d\x03\x0d. \x03" +
+ "\x0d.#\x03\x0c(/\x03\x09%\x02\x03\x0d90\x03\x0d\x0e4\x03\x0d\x0d\x0f\x03" +
+ "\x0c#\x00\x03\x0c,\x1e\x03\x0c2\x0e\x03\x0c\x01\x17\x03\x0c\x09:\x03\x0e" +
+ "\x173\x03\x0c\x08\x03\x03\x0c\x11\x07\x03\x0c\x10\x18\x03\x0c\x1f\x1c" +
+ "\x03\x0c\x19\x0e\x03\x0c\x1a\x1f\x03\x0f0>\x03\x0b->\x03\x0b<+\x03\x0b8" +
+ "\x13\x03\x0b\x043\x03\x0b\x14\x03\x03\x0b\x16%\x03\x0d\x22&\x03\x0b\x1a" +
+ "\x1a\x03\x0b\x1a\x04\x03\x0a%9\x03\x0a&2\x03\x0a&0\x03\x0a!\x1a\x03\x0a!" +
+ "7\x03\x0a5\x10\x03\x0a=4\x03\x0a?\x0e\x03\x0a>\x10\x03\x0a\x00 \x03\x0a" +
+ "\x0f:\x03\x0a\x0f9\x03\x0a\x0b\x0a\x03\x0a\x17%\x03\x0a\x1b-\x03\x09-" +
+ "\x1a\x03\x09,4\x03\x09.,\x03\x09)\x09\x03\x096!\x03\x091\x1f\x03\x093" +
+ "\x16\x03\x0c+\x1f\x03\x098 \x03\x098=\x03\x0c(\x1a\x03\x0c(\x16\x03\x09" +
+ "\x0a+\x03\x09\x16\x12\x03\x09\x13\x0e\x03\x09\x153\x03\x08)!\x03\x09\x1a" +
+ "\x01\x03\x09\x18\x01\x03\x08%#\x03\x08>\x22\x03\x08\x05%\x03\x08\x02*" +
+ "\x03\x08\x15;\x03\x08\x1b7\x03\x0f\x07\x1d\x03\x0f\x04\x03\x03\x070\x0c" +
+ "\x03\x07;\x0b\x03\x07\x08\x17\x03\x07\x12\x06\x03\x06/-\x03\x0671\x03" +
+ "\x065+\x03\x06>7\x03\x06\x049\x03\x05+\x1e\x03\x05,\x17\x03\x05 \x1d\x03" +
+ "\x05\x22\x05\x03\x050\x1d"
+
+// lookup returns the trie value for the first UTF-8 encoding in s and
+// the width in bytes of this encoding. The size will be 0 if s does not
+// hold enough bytes to complete the encoding. len(s) must be greater than 0.
+func (t *idnaTrie) lookup(s []byte) (v uint16, sz int) {
+ c0 := s[0]
+ switch {
+ case c0 < 0x80: // is ASCII
+ return idnaValues[c0], 1
+ case c0 < 0xC2:
+ return 0, 1 // Illegal UTF-8: not a starter, not ASCII.
+ case c0 < 0xE0: // 2-byte UTF-8
+ if len(s) < 2 {
+ return 0, 0
+ }
+ i := idnaIndex[c0]
+ c1 := s[1]
+ if c1 < 0x80 || 0xC0 <= c1 {
+ return 0, 1 // Illegal UTF-8: not a continuation byte.
+ }
+ return t.lookupValue(uint32(i), c1), 2
+ case c0 < 0xF0: // 3-byte UTF-8
+ if len(s) < 3 {
+ return 0, 0
+ }
+ i := idnaIndex[c0]
+ c1 := s[1]
+ if c1 < 0x80 || 0xC0 <= c1 {
+ return 0, 1 // Illegal UTF-8: not a continuation byte.
+ }
+ o := uint32(i)<<6 + uint32(c1)
+ i = idnaIndex[o]
+ c2 := s[2]
+ if c2 < 0x80 || 0xC0 <= c2 {
+ return 0, 2 // Illegal UTF-8: not a continuation byte.
+ }
+ return t.lookupValue(uint32(i), c2), 3
+ case c0 < 0xF8: // 4-byte UTF-8
+ if len(s) < 4 {
+ return 0, 0
+ }
+ i := idnaIndex[c0]
+ c1 := s[1]
+ if c1 < 0x80 || 0xC0 <= c1 {
+ return 0, 1 // Illegal UTF-8: not a continuation byte.
+ }
+ o := uint32(i)<<6 + uint32(c1)
+ i = idnaIndex[o]
+ c2 := s[2]
+ if c2 < 0x80 || 0xC0 <= c2 {
+ return 0, 2 // Illegal UTF-8: not a continuation byte.
+ }
+ o = uint32(i)<<6 + uint32(c2)
+ i = idnaIndex[o]
+ c3 := s[3]
+ if c3 < 0x80 || 0xC0 <= c3 {
+ return 0, 3 // Illegal UTF-8: not a continuation byte.
+ }
+ return t.lookupValue(uint32(i), c3), 4
+ }
+ // Illegal rune
+ return 0, 1
+}
+
+// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.
+// s must start with a full and valid UTF-8 encoded rune.
+func (t *idnaTrie) lookupUnsafe(s []byte) uint16 {
+ c0 := s[0]
+ if c0 < 0x80 { // is ASCII
+ return idnaValues[c0]
+ }
+ i := idnaIndex[c0]
+ if c0 < 0xE0 { // 2-byte UTF-8
+ return t.lookupValue(uint32(i), s[1])
+ }
+ i = idnaIndex[uint32(i)<<6+uint32(s[1])]
+ if c0 < 0xF0 { // 3-byte UTF-8
+ return t.lookupValue(uint32(i), s[2])
+ }
+ i = idnaIndex[uint32(i)<<6+uint32(s[2])]
+ if c0 < 0xF8 { // 4-byte UTF-8
+ return t.lookupValue(uint32(i), s[3])
+ }
+ return 0
+}
+
+// lookupString returns the trie value for the first UTF-8 encoding in s and
+// the width in bytes of this encoding. The size will be 0 if s does not
+// hold enough bytes to complete the encoding. len(s) must be greater than 0.
+func (t *idnaTrie) lookupString(s string) (v uint16, sz int) {
+ c0 := s[0]
+ switch {
+ case c0 < 0x80: // is ASCII
+ return idnaValues[c0], 1
+ case c0 < 0xC2:
+ return 0, 1 // Illegal UTF-8: not a starter, not ASCII.
+ case c0 < 0xE0: // 2-byte UTF-8
+ if len(s) < 2 {
+ return 0, 0
+ }
+ i := idnaIndex[c0]
+ c1 := s[1]
+ if c1 < 0x80 || 0xC0 <= c1 {
+ return 0, 1 // Illegal UTF-8: not a continuation byte.
+ }
+ return t.lookupValue(uint32(i), c1), 2
+ case c0 < 0xF0: // 3-byte UTF-8
+ if len(s) < 3 {
+ return 0, 0
+ }
+ i := idnaIndex[c0]
+ c1 := s[1]
+ if c1 < 0x80 || 0xC0 <= c1 {
+ return 0, 1 // Illegal UTF-8: not a continuation byte.
+ }
+ o := uint32(i)<<6 + uint32(c1)
+ i = idnaIndex[o]
+ c2 := s[2]
+ if c2 < 0x80 || 0xC0 <= c2 {
+ return 0, 2 // Illegal UTF-8: not a continuation byte.
+ }
+ return t.lookupValue(uint32(i), c2), 3
+ case c0 < 0xF8: // 4-byte UTF-8
+ if len(s) < 4 {
+ return 0, 0
+ }
+ i := idnaIndex[c0]
+ c1 := s[1]
+ if c1 < 0x80 || 0xC0 <= c1 {
+ return 0, 1 // Illegal UTF-8: not a continuation byte.
+ }
+ o := uint32(i)<<6 + uint32(c1)
+ i = idnaIndex[o]
+ c2 := s[2]
+ if c2 < 0x80 || 0xC0 <= c2 {
+ return 0, 2 // Illegal UTF-8: not a continuation byte.
+ }
+ o = uint32(i)<<6 + uint32(c2)
+ i = idnaIndex[o]
+ c3 := s[3]
+ if c3 < 0x80 || 0xC0 <= c3 {
+ return 0, 3 // Illegal UTF-8: not a continuation byte.
+ }
+ return t.lookupValue(uint32(i), c3), 4
+ }
+ // Illegal rune
+ return 0, 1
+}
+
+// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.
+// s must start with a full and valid UTF-8 encoded rune.
+func (t *idnaTrie) lookupStringUnsafe(s string) uint16 {
+ c0 := s[0]
+ if c0 < 0x80 { // is ASCII
+ return idnaValues[c0]
+ }
+ i := idnaIndex[c0]
+ if c0 < 0xE0 { // 2-byte UTF-8
+ return t.lookupValue(uint32(i), s[1])
+ }
+ i = idnaIndex[uint32(i)<<6+uint32(s[1])]
+ if c0 < 0xF0 { // 3-byte UTF-8
+ return t.lookupValue(uint32(i), s[2])
+ }
+ i = idnaIndex[uint32(i)<<6+uint32(s[2])]
+ if c0 < 0xF8 { // 4-byte UTF-8
+ return t.lookupValue(uint32(i), s[3])
+ }
+ return 0
+}
+
+// idnaTrie. Total size: 30288 bytes (29.58 KiB). Checksum: c0cd84404a2f6f19.
+type idnaTrie struct{}
+
+func newIdnaTrie(i int) *idnaTrie {
+ return &idnaTrie{}
+}
+
+// lookupValue determines the type of block n and looks up the value for b.
+func (t *idnaTrie) lookupValue(n uint32, b byte) uint16 {
+ switch {
+ case n < 126:
+ return uint16(idnaValues[n<<6+uint32(b)])
+ default:
+ n -= 126
+ return uint16(idnaSparse.lookup(n, b))
+ }
+}
+
+// idnaValues: 128 blocks, 8192 entries, 16384 bytes
+// The third block is the zero block.
+var idnaValues = [8192]uint16{
+ // Block 0x0, offset 0x0
+ 0x00: 0x0080, 0x01: 0x0080, 0x02: 0x0080, 0x03: 0x0080, 0x04: 0x0080, 0x05: 0x0080,
+ 0x06: 0x0080, 0x07: 0x0080, 0x08: 0x0080, 0x09: 0x0080, 0x0a: 0x0080, 0x0b: 0x0080,
+ 0x0c: 0x0080, 0x0d: 0x0080, 0x0e: 0x0080, 0x0f: 0x0080, 0x10: 0x0080, 0x11: 0x0080,
+ 0x12: 0x0080, 0x13: 0x0080, 0x14: 0x0080, 0x15: 0x0080, 0x16: 0x0080, 0x17: 0x0080,
+ 0x18: 0x0080, 0x19: 0x0080, 0x1a: 0x0080, 0x1b: 0x0080, 0x1c: 0x0080, 0x1d: 0x0080,
+ 0x1e: 0x0080, 0x1f: 0x0080, 0x20: 0x0080, 0x21: 0x0080, 0x22: 0x0080, 0x23: 0x0080,
+ 0x24: 0x0080, 0x25: 0x0080, 0x26: 0x0080, 0x27: 0x0080, 0x28: 0x0080, 0x29: 0x0080,
+ 0x2a: 0x0080, 0x2b: 0x0080, 0x2c: 0x0080, 0x2d: 0x0008, 0x2e: 0x0008, 0x2f: 0x0080,
+ 0x30: 0x0008, 0x31: 0x0008, 0x32: 0x0008, 0x33: 0x0008, 0x34: 0x0008, 0x35: 0x0008,
+ 0x36: 0x0008, 0x37: 0x0008, 0x38: 0x0008, 0x39: 0x0008, 0x3a: 0x0080, 0x3b: 0x0080,
+ 0x3c: 0x0080, 0x3d: 0x0080, 0x3e: 0x0080, 0x3f: 0x0080,
+ // Block 0x1, offset 0x40
+ 0x40: 0x0080, 0x41: 0xe105, 0x42: 0xe105, 0x43: 0xe105, 0x44: 0xe105, 0x45: 0xe105,
+ 0x46: 0xe105, 0x47: 0xe105, 0x48: 0xe105, 0x49: 0xe105, 0x4a: 0xe105, 0x4b: 0xe105,
+ 0x4c: 0xe105, 0x4d: 0xe105, 0x4e: 0xe105, 0x4f: 0xe105, 0x50: 0xe105, 0x51: 0xe105,
+ 0x52: 0xe105, 0x53: 0xe105, 0x54: 0xe105, 0x55: 0xe105, 0x56: 0xe105, 0x57: 0xe105,
+ 0x58: 0xe105, 0x59: 0xe105, 0x5a: 0xe105, 0x5b: 0x0080, 0x5c: 0x0080, 0x5d: 0x0080,
+ 0x5e: 0x0080, 0x5f: 0x0080, 0x60: 0x0080, 0x61: 0x0008, 0x62: 0x0008, 0x63: 0x0008,
+ 0x64: 0x0008, 0x65: 0x0008, 0x66: 0x0008, 0x67: 0x0008, 0x68: 0x0008, 0x69: 0x0008,
+ 0x6a: 0x0008, 0x6b: 0x0008, 0x6c: 0x0008, 0x6d: 0x0008, 0x6e: 0x0008, 0x6f: 0x0008,
+ 0x70: 0x0008, 0x71: 0x0008, 0x72: 0x0008, 0x73: 0x0008, 0x74: 0x0008, 0x75: 0x0008,
+ 0x76: 0x0008, 0x77: 0x0008, 0x78: 0x0008, 0x79: 0x0008, 0x7a: 0x0008, 0x7b: 0x0080,
+ 0x7c: 0x0080, 0x7d: 0x0080, 0x7e: 0x0080, 0x7f: 0x0080,
+ // Block 0x2, offset 0x80
+ // Block 0x3, offset 0xc0
+ 0xc0: 0x0040, 0xc1: 0x0040, 0xc2: 0x0040, 0xc3: 0x0040, 0xc4: 0x0040, 0xc5: 0x0040,
+ 0xc6: 0x0040, 0xc7: 0x0040, 0xc8: 0x0040, 0xc9: 0x0040, 0xca: 0x0040, 0xcb: 0x0040,
+ 0xcc: 0x0040, 0xcd: 0x0040, 0xce: 0x0040, 0xcf: 0x0040, 0xd0: 0x0040, 0xd1: 0x0040,
+ 0xd2: 0x0040, 0xd3: 0x0040, 0xd4: 0x0040, 0xd5: 0x0040, 0xd6: 0x0040, 0xd7: 0x0040,
+ 0xd8: 0x0040, 0xd9: 0x0040, 0xda: 0x0040, 0xdb: 0x0040, 0xdc: 0x0040, 0xdd: 0x0040,
+ 0xde: 0x0040, 0xdf: 0x0040, 0xe0: 0x000a, 0xe1: 0x0018, 0xe2: 0x0018, 0xe3: 0x0018,
+ 0xe4: 0x0018, 0xe5: 0x0018, 0xe6: 0x0018, 0xe7: 0x0018, 0xe8: 0x001a, 0xe9: 0x0018,
+ 0xea: 0x0039, 0xeb: 0x0018, 0xec: 0x0018, 0xed: 0x03c0, 0xee: 0x0018, 0xef: 0x004a,
+ 0xf0: 0x0018, 0xf1: 0x0018, 0xf2: 0x0069, 0xf3: 0x0079, 0xf4: 0x008a, 0xf5: 0x0005,
+ 0xf6: 0x0018, 0xf7: 0x0008, 0xf8: 0x00aa, 0xf9: 0x00c9, 0xfa: 0x00d9, 0xfb: 0x0018,
+ 0xfc: 0x00e9, 0xfd: 0x0119, 0xfe: 0x0149, 0xff: 0x0018,
+ // Block 0x4, offset 0x100
+ 0x100: 0xe00d, 0x101: 0x0008, 0x102: 0xe00d, 0x103: 0x0008, 0x104: 0xe00d, 0x105: 0x0008,
+ 0x106: 0xe00d, 0x107: 0x0008, 0x108: 0xe00d, 0x109: 0x0008, 0x10a: 0xe00d, 0x10b: 0x0008,
+ 0x10c: 0xe00d, 0x10d: 0x0008, 0x10e: 0xe00d, 0x10f: 0x0008, 0x110: 0xe00d, 0x111: 0x0008,
+ 0x112: 0xe00d, 0x113: 0x0008, 0x114: 0xe00d, 0x115: 0x0008, 0x116: 0xe00d, 0x117: 0x0008,
+ 0x118: 0xe00d, 0x119: 0x0008, 0x11a: 0xe00d, 0x11b: 0x0008, 0x11c: 0xe00d, 0x11d: 0x0008,
+ 0x11e: 0xe00d, 0x11f: 0x0008, 0x120: 0xe00d, 0x121: 0x0008, 0x122: 0xe00d, 0x123: 0x0008,
+ 0x124: 0xe00d, 0x125: 0x0008, 0x126: 0xe00d, 0x127: 0x0008, 0x128: 0xe00d, 0x129: 0x0008,
+ 0x12a: 0xe00d, 0x12b: 0x0008, 0x12c: 0xe00d, 0x12d: 0x0008, 0x12e: 0xe00d, 0x12f: 0x0008,
+ 0x130: 0x0179, 0x131: 0x0008, 0x132: 0x0035, 0x133: 0x004d, 0x134: 0xe00d, 0x135: 0x0008,
+ 0x136: 0xe00d, 0x137: 0x0008, 0x138: 0x0008, 0x139: 0xe01d, 0x13a: 0x0008, 0x13b: 0xe03d,
+ 0x13c: 0x0008, 0x13d: 0xe01d, 0x13e: 0x0008, 0x13f: 0x0199,
+ // Block 0x5, offset 0x140
+ 0x140: 0x0199, 0x141: 0xe01d, 0x142: 0x0008, 0x143: 0xe03d, 0x144: 0x0008, 0x145: 0xe01d,
+ 0x146: 0x0008, 0x147: 0xe07d, 0x148: 0x0008, 0x149: 0x01b9, 0x14a: 0xe00d, 0x14b: 0x0008,
+ 0x14c: 0xe00d, 0x14d: 0x0008, 0x14e: 0xe00d, 0x14f: 0x0008, 0x150: 0xe00d, 0x151: 0x0008,
+ 0x152: 0xe00d, 0x153: 0x0008, 0x154: 0xe00d, 0x155: 0x0008, 0x156: 0xe00d, 0x157: 0x0008,
+ 0x158: 0xe00d, 0x159: 0x0008, 0x15a: 0xe00d, 0x15b: 0x0008, 0x15c: 0xe00d, 0x15d: 0x0008,
+ 0x15e: 0xe00d, 0x15f: 0x0008, 0x160: 0xe00d, 0x161: 0x0008, 0x162: 0xe00d, 0x163: 0x0008,
+ 0x164: 0xe00d, 0x165: 0x0008, 0x166: 0xe00d, 0x167: 0x0008, 0x168: 0xe00d, 0x169: 0x0008,
+ 0x16a: 0xe00d, 0x16b: 0x0008, 0x16c: 0xe00d, 0x16d: 0x0008, 0x16e: 0xe00d, 0x16f: 0x0008,
+ 0x170: 0xe00d, 0x171: 0x0008, 0x172: 0xe00d, 0x173: 0x0008, 0x174: 0xe00d, 0x175: 0x0008,
+ 0x176: 0xe00d, 0x177: 0x0008, 0x178: 0x0065, 0x179: 0xe01d, 0x17a: 0x0008, 0x17b: 0xe03d,
+ 0x17c: 0x0008, 0x17d: 0xe01d, 0x17e: 0x0008, 0x17f: 0x01d9,
+ // Block 0x6, offset 0x180
+ 0x180: 0x0008, 0x181: 0x007d, 0x182: 0xe00d, 0x183: 0x0008, 0x184: 0xe00d, 0x185: 0x0008,
+ 0x186: 0x007d, 0x187: 0xe07d, 0x188: 0x0008, 0x189: 0x0095, 0x18a: 0x00ad, 0x18b: 0xe03d,
+ 0x18c: 0x0008, 0x18d: 0x0008, 0x18e: 0x00c5, 0x18f: 0x00dd, 0x190: 0x00f5, 0x191: 0xe01d,
+ 0x192: 0x0008, 0x193: 0x010d, 0x194: 0x0125, 0x195: 0x0008, 0x196: 0x013d, 0x197: 0x013d,
+ 0x198: 0xe00d, 0x199: 0x0008, 0x19a: 0x0008, 0x19b: 0x0008, 0x19c: 0x010d, 0x19d: 0x0155,
+ 0x19e: 0x0008, 0x19f: 0x016d, 0x1a0: 0xe00d, 0x1a1: 0x0008, 0x1a2: 0xe00d, 0x1a3: 0x0008,
+ 0x1a4: 0xe00d, 0x1a5: 0x0008, 0x1a6: 0x0185, 0x1a7: 0xe07d, 0x1a8: 0x0008, 0x1a9: 0x019d,
+ 0x1aa: 0x0008, 0x1ab: 0x0008, 0x1ac: 0xe00d, 0x1ad: 0x0008, 0x1ae: 0x0185, 0x1af: 0xe0fd,
+ 0x1b0: 0x0008, 0x1b1: 0x01b5, 0x1b2: 0x01cd, 0x1b3: 0xe03d, 0x1b4: 0x0008, 0x1b5: 0xe01d,
+ 0x1b6: 0x0008, 0x1b7: 0x01e5, 0x1b8: 0xe00d, 0x1b9: 0x0008, 0x1ba: 0x0008, 0x1bb: 0x0008,
+ 0x1bc: 0xe00d, 0x1bd: 0x0008, 0x1be: 0x0008, 0x1bf: 0x0008,
+ // Block 0x7, offset 0x1c0
+ 0x1c0: 0x0008, 0x1c1: 0x0008, 0x1c2: 0x0008, 0x1c3: 0x0008, 0x1c4: 0x01e9, 0x1c5: 0x01e9,
+ 0x1c6: 0x01e9, 0x1c7: 0x01fd, 0x1c8: 0x0215, 0x1c9: 0x022d, 0x1ca: 0x0245, 0x1cb: 0x025d,
+ 0x1cc: 0x0275, 0x1cd: 0xe01d, 0x1ce: 0x0008, 0x1cf: 0xe0fd, 0x1d0: 0x0008, 0x1d1: 0xe01d,
+ 0x1d2: 0x0008, 0x1d3: 0xe03d, 0x1d4: 0x0008, 0x1d5: 0xe01d, 0x1d6: 0x0008, 0x1d7: 0xe07d,
+ 0x1d8: 0x0008, 0x1d9: 0xe01d, 0x1da: 0x0008, 0x1db: 0xe03d, 0x1dc: 0x0008, 0x1dd: 0x0008,
+ 0x1de: 0xe00d, 0x1df: 0x0008, 0x1e0: 0xe00d, 0x1e1: 0x0008, 0x1e2: 0xe00d, 0x1e3: 0x0008,
+ 0x1e4: 0xe00d, 0x1e5: 0x0008, 0x1e6: 0xe00d, 0x1e7: 0x0008, 0x1e8: 0xe00d, 0x1e9: 0x0008,
+ 0x1ea: 0xe00d, 0x1eb: 0x0008, 0x1ec: 0xe00d, 0x1ed: 0x0008, 0x1ee: 0xe00d, 0x1ef: 0x0008,
+ 0x1f0: 0x0008, 0x1f1: 0x028d, 0x1f2: 0x02a5, 0x1f3: 0x02bd, 0x1f4: 0xe00d, 0x1f5: 0x0008,
+ 0x1f6: 0x02d5, 0x1f7: 0x02ed, 0x1f8: 0xe00d, 0x1f9: 0x0008, 0x1fa: 0xe00d, 0x1fb: 0x0008,
+ 0x1fc: 0xe00d, 0x1fd: 0x0008, 0x1fe: 0xe00d, 0x1ff: 0x0008,
+ // Block 0x8, offset 0x200
+ 0x200: 0xe00d, 0x201: 0x0008, 0x202: 0xe00d, 0x203: 0x0008, 0x204: 0xe00d, 0x205: 0x0008,
+ 0x206: 0xe00d, 0x207: 0x0008, 0x208: 0xe00d, 0x209: 0x0008, 0x20a: 0xe00d, 0x20b: 0x0008,
+ 0x20c: 0xe00d, 0x20d: 0x0008, 0x20e: 0xe00d, 0x20f: 0x0008, 0x210: 0xe00d, 0x211: 0x0008,
+ 0x212: 0xe00d, 0x213: 0x0008, 0x214: 0xe00d, 0x215: 0x0008, 0x216: 0xe00d, 0x217: 0x0008,
+ 0x218: 0xe00d, 0x219: 0x0008, 0x21a: 0xe00d, 0x21b: 0x0008, 0x21c: 0xe00d, 0x21d: 0x0008,
+ 0x21e: 0xe00d, 0x21f: 0x0008, 0x220: 0x0305, 0x221: 0x0008, 0x222: 0xe00d, 0x223: 0x0008,
+ 0x224: 0xe00d, 0x225: 0x0008, 0x226: 0xe00d, 0x227: 0x0008, 0x228: 0xe00d, 0x229: 0x0008,
+ 0x22a: 0xe00d, 0x22b: 0x0008, 0x22c: 0xe00d, 0x22d: 0x0008, 0x22e: 0xe00d, 0x22f: 0x0008,
+ 0x230: 0xe00d, 0x231: 0x0008, 0x232: 0xe00d, 0x233: 0x0008, 0x234: 0x0008, 0x235: 0x0008,
+ 0x236: 0x0008, 0x237: 0x0008, 0x238: 0x0008, 0x239: 0x0008, 0x23a: 0x0209, 0x23b: 0xe03d,
+ 0x23c: 0x0008, 0x23d: 0x031d, 0x23e: 0x0229, 0x23f: 0x0008,
+ // Block 0x9, offset 0x240
+ 0x240: 0x0008, 0x241: 0x0008, 0x242: 0x0018, 0x243: 0x0018, 0x244: 0x0018, 0x245: 0x0018,
+ 0x246: 0x0008, 0x247: 0x0008, 0x248: 0x0008, 0x249: 0x0008, 0x24a: 0x0008, 0x24b: 0x0008,
+ 0x24c: 0x0008, 0x24d: 0x0008, 0x24e: 0x0008, 0x24f: 0x0008, 0x250: 0x0008, 0x251: 0x0008,
+ 0x252: 0x0018, 0x253: 0x0018, 0x254: 0x0018, 0x255: 0x0018, 0x256: 0x0018, 0x257: 0x0018,
+ 0x258: 0x029a, 0x259: 0x02ba, 0x25a: 0x02da, 0x25b: 0x02fa, 0x25c: 0x031a, 0x25d: 0x033a,
+ 0x25e: 0x0018, 0x25f: 0x0018, 0x260: 0x03ad, 0x261: 0x0359, 0x262: 0x01d9, 0x263: 0x0369,
+ 0x264: 0x03c5, 0x265: 0x0018, 0x266: 0x0018, 0x267: 0x0018, 0x268: 0x0018, 0x269: 0x0018,
+ 0x26a: 0x0018, 0x26b: 0x0018, 0x26c: 0x0008, 0x26d: 0x0018, 0x26e: 0x0008, 0x26f: 0x0018,
+ 0x270: 0x0018, 0x271: 0x0018, 0x272: 0x0018, 0x273: 0x0018, 0x274: 0x0018, 0x275: 0x0018,
+ 0x276: 0x0018, 0x277: 0x0018, 0x278: 0x0018, 0x279: 0x0018, 0x27a: 0x0018, 0x27b: 0x0018,
+ 0x27c: 0x0018, 0x27d: 0x0018, 0x27e: 0x0018, 0x27f: 0x0018,
+ // Block 0xa, offset 0x280
+ 0x280: 0x03dd, 0x281: 0x03dd, 0x282: 0x3308, 0x283: 0x03f5, 0x284: 0x0379, 0x285: 0x040d,
+ 0x286: 0x3308, 0x287: 0x3308, 0x288: 0x3308, 0x289: 0x3308, 0x28a: 0x3308, 0x28b: 0x3308,
+ 0x28c: 0x3308, 0x28d: 0x3308, 0x28e: 0x3308, 0x28f: 0x33c0, 0x290: 0x3308, 0x291: 0x3308,
+ 0x292: 0x3308, 0x293: 0x3308, 0x294: 0x3308, 0x295: 0x3308, 0x296: 0x3308, 0x297: 0x3308,
+ 0x298: 0x3308, 0x299: 0x3308, 0x29a: 0x3308, 0x29b: 0x3308, 0x29c: 0x3308, 0x29d: 0x3308,
+ 0x29e: 0x3308, 0x29f: 0x3308, 0x2a0: 0x3308, 0x2a1: 0x3308, 0x2a2: 0x3308, 0x2a3: 0x3308,
+ 0x2a4: 0x3308, 0x2a5: 0x3308, 0x2a6: 0x3308, 0x2a7: 0x3308, 0x2a8: 0x3308, 0x2a9: 0x3308,
+ 0x2aa: 0x3308, 0x2ab: 0x3308, 0x2ac: 0x3308, 0x2ad: 0x3308, 0x2ae: 0x3308, 0x2af: 0x3308,
+ 0x2b0: 0xe00d, 0x2b1: 0x0008, 0x2b2: 0xe00d, 0x2b3: 0x0008, 0x2b4: 0x0425, 0x2b5: 0x0008,
+ 0x2b6: 0xe00d, 0x2b7: 0x0008, 0x2b8: 0x0040, 0x2b9: 0x0040, 0x2ba: 0x03a2, 0x2bb: 0x0008,
+ 0x2bc: 0x0008, 0x2bd: 0x0008, 0x2be: 0x03c2, 0x2bf: 0x043d,
+ // Block 0xb, offset 0x2c0
+ 0x2c0: 0x0040, 0x2c1: 0x0040, 0x2c2: 0x0040, 0x2c3: 0x0040, 0x2c4: 0x008a, 0x2c5: 0x03d2,
+ 0x2c6: 0xe155, 0x2c7: 0x0455, 0x2c8: 0xe12d, 0x2c9: 0xe13d, 0x2ca: 0xe12d, 0x2cb: 0x0040,
+ 0x2cc: 0x03dd, 0x2cd: 0x0040, 0x2ce: 0x046d, 0x2cf: 0x0485, 0x2d0: 0x0008, 0x2d1: 0xe105,
+ 0x2d2: 0xe105, 0x2d3: 0xe105, 0x2d4: 0xe105, 0x2d5: 0xe105, 0x2d6: 0xe105, 0x2d7: 0xe105,
+ 0x2d8: 0xe105, 0x2d9: 0xe105, 0x2da: 0xe105, 0x2db: 0xe105, 0x2dc: 0xe105, 0x2dd: 0xe105,
+ 0x2de: 0xe105, 0x2df: 0xe105, 0x2e0: 0x049d, 0x2e1: 0x049d, 0x2e2: 0x0040, 0x2e3: 0x049d,
+ 0x2e4: 0x049d, 0x2e5: 0x049d, 0x2e6: 0x049d, 0x2e7: 0x049d, 0x2e8: 0x049d, 0x2e9: 0x049d,
+ 0x2ea: 0x049d, 0x2eb: 0x049d, 0x2ec: 0x0008, 0x2ed: 0x0008, 0x2ee: 0x0008, 0x2ef: 0x0008,
+ 0x2f0: 0x0008, 0x2f1: 0x0008, 0x2f2: 0x0008, 0x2f3: 0x0008, 0x2f4: 0x0008, 0x2f5: 0x0008,
+ 0x2f6: 0x0008, 0x2f7: 0x0008, 0x2f8: 0x0008, 0x2f9: 0x0008, 0x2fa: 0x0008, 0x2fb: 0x0008,
+ 0x2fc: 0x0008, 0x2fd: 0x0008, 0x2fe: 0x0008, 0x2ff: 0x0008,
+ // Block 0xc, offset 0x300
+ 0x300: 0x0008, 0x301: 0x0008, 0x302: 0xe00f, 0x303: 0x0008, 0x304: 0x0008, 0x305: 0x0008,
+ 0x306: 0x0008, 0x307: 0x0008, 0x308: 0x0008, 0x309: 0x0008, 0x30a: 0x0008, 0x30b: 0x0008,
+ 0x30c: 0x0008, 0x30d: 0x0008, 0x30e: 0x0008, 0x30f: 0xe0c5, 0x310: 0x04b5, 0x311: 0x04cd,
+ 0x312: 0xe0bd, 0x313: 0xe0f5, 0x314: 0xe0fd, 0x315: 0xe09d, 0x316: 0xe0b5, 0x317: 0x0008,
+ 0x318: 0xe00d, 0x319: 0x0008, 0x31a: 0xe00d, 0x31b: 0x0008, 0x31c: 0xe00d, 0x31d: 0x0008,
+ 0x31e: 0xe00d, 0x31f: 0x0008, 0x320: 0xe00d, 0x321: 0x0008, 0x322: 0xe00d, 0x323: 0x0008,
+ 0x324: 0xe00d, 0x325: 0x0008, 0x326: 0xe00d, 0x327: 0x0008, 0x328: 0xe00d, 0x329: 0x0008,
+ 0x32a: 0xe00d, 0x32b: 0x0008, 0x32c: 0xe00d, 0x32d: 0x0008, 0x32e: 0xe00d, 0x32f: 0x0008,
+ 0x330: 0x04e5, 0x331: 0xe185, 0x332: 0xe18d, 0x333: 0x0008, 0x334: 0x04fd, 0x335: 0x03dd,
+ 0x336: 0x0018, 0x337: 0xe07d, 0x338: 0x0008, 0x339: 0xe1d5, 0x33a: 0xe00d, 0x33b: 0x0008,
+ 0x33c: 0x0008, 0x33d: 0x0515, 0x33e: 0x052d, 0x33f: 0x052d,
+ // Block 0xd, offset 0x340
+ 0x340: 0x0008, 0x341: 0x0008, 0x342: 0x0008, 0x343: 0x0008, 0x344: 0x0008, 0x345: 0x0008,
+ 0x346: 0x0008, 0x347: 0x0008, 0x348: 0x0008, 0x349: 0x0008, 0x34a: 0x0008, 0x34b: 0x0008,
+ 0x34c: 0x0008, 0x34d: 0x0008, 0x34e: 0x0008, 0x34f: 0x0008, 0x350: 0x0008, 0x351: 0x0008,
+ 0x352: 0x0008, 0x353: 0x0008, 0x354: 0x0008, 0x355: 0x0008, 0x356: 0x0008, 0x357: 0x0008,
+ 0x358: 0x0008, 0x359: 0x0008, 0x35a: 0x0008, 0x35b: 0x0008, 0x35c: 0x0008, 0x35d: 0x0008,
+ 0x35e: 0x0008, 0x35f: 0x0008, 0x360: 0xe00d, 0x361: 0x0008, 0x362: 0xe00d, 0x363: 0x0008,
+ 0x364: 0xe00d, 0x365: 0x0008, 0x366: 0xe00d, 0x367: 0x0008, 0x368: 0xe00d, 0x369: 0x0008,
+ 0x36a: 0xe00d, 0x36b: 0x0008, 0x36c: 0xe00d, 0x36d: 0x0008, 0x36e: 0xe00d, 0x36f: 0x0008,
+ 0x370: 0xe00d, 0x371: 0x0008, 0x372: 0xe00d, 0x373: 0x0008, 0x374: 0xe00d, 0x375: 0x0008,
+ 0x376: 0xe00d, 0x377: 0x0008, 0x378: 0xe00d, 0x379: 0x0008, 0x37a: 0xe00d, 0x37b: 0x0008,
+ 0x37c: 0xe00d, 0x37d: 0x0008, 0x37e: 0xe00d, 0x37f: 0x0008,
+ // Block 0xe, offset 0x380
+ 0x380: 0xe00d, 0x381: 0x0008, 0x382: 0x0018, 0x383: 0x3308, 0x384: 0x3308, 0x385: 0x3308,
+ 0x386: 0x3308, 0x387: 0x3308, 0x388: 0x3318, 0x389: 0x3318, 0x38a: 0xe00d, 0x38b: 0x0008,
+ 0x38c: 0xe00d, 0x38d: 0x0008, 0x38e: 0xe00d, 0x38f: 0x0008, 0x390: 0xe00d, 0x391: 0x0008,
+ 0x392: 0xe00d, 0x393: 0x0008, 0x394: 0xe00d, 0x395: 0x0008, 0x396: 0xe00d, 0x397: 0x0008,
+ 0x398: 0xe00d, 0x399: 0x0008, 0x39a: 0xe00d, 0x39b: 0x0008, 0x39c: 0xe00d, 0x39d: 0x0008,
+ 0x39e: 0xe00d, 0x39f: 0x0008, 0x3a0: 0xe00d, 0x3a1: 0x0008, 0x3a2: 0xe00d, 0x3a3: 0x0008,
+ 0x3a4: 0xe00d, 0x3a5: 0x0008, 0x3a6: 0xe00d, 0x3a7: 0x0008, 0x3a8: 0xe00d, 0x3a9: 0x0008,
+ 0x3aa: 0xe00d, 0x3ab: 0x0008, 0x3ac: 0xe00d, 0x3ad: 0x0008, 0x3ae: 0xe00d, 0x3af: 0x0008,
+ 0x3b0: 0xe00d, 0x3b1: 0x0008, 0x3b2: 0xe00d, 0x3b3: 0x0008, 0x3b4: 0xe00d, 0x3b5: 0x0008,
+ 0x3b6: 0xe00d, 0x3b7: 0x0008, 0x3b8: 0xe00d, 0x3b9: 0x0008, 0x3ba: 0xe00d, 0x3bb: 0x0008,
+ 0x3bc: 0xe00d, 0x3bd: 0x0008, 0x3be: 0xe00d, 0x3bf: 0x0008,
+ // Block 0xf, offset 0x3c0
+ 0x3c0: 0x0040, 0x3c1: 0xe01d, 0x3c2: 0x0008, 0x3c3: 0xe03d, 0x3c4: 0x0008, 0x3c5: 0xe01d,
+ 0x3c6: 0x0008, 0x3c7: 0xe07d, 0x3c8: 0x0008, 0x3c9: 0xe01d, 0x3ca: 0x0008, 0x3cb: 0xe03d,
+ 0x3cc: 0x0008, 0x3cd: 0xe01d, 0x3ce: 0x0008, 0x3cf: 0x0008, 0x3d0: 0xe00d, 0x3d1: 0x0008,
+ 0x3d2: 0xe00d, 0x3d3: 0x0008, 0x3d4: 0xe00d, 0x3d5: 0x0008, 0x3d6: 0xe00d, 0x3d7: 0x0008,
+ 0x3d8: 0xe00d, 0x3d9: 0x0008, 0x3da: 0xe00d, 0x3db: 0x0008, 0x3dc: 0xe00d, 0x3dd: 0x0008,
+ 0x3de: 0xe00d, 0x3df: 0x0008, 0x3e0: 0xe00d, 0x3e1: 0x0008, 0x3e2: 0xe00d, 0x3e3: 0x0008,
+ 0x3e4: 0xe00d, 0x3e5: 0x0008, 0x3e6: 0xe00d, 0x3e7: 0x0008, 0x3e8: 0xe00d, 0x3e9: 0x0008,
+ 0x3ea: 0xe00d, 0x3eb: 0x0008, 0x3ec: 0xe00d, 0x3ed: 0x0008, 0x3ee: 0xe00d, 0x3ef: 0x0008,
+ 0x3f0: 0xe00d, 0x3f1: 0x0008, 0x3f2: 0xe00d, 0x3f3: 0x0008, 0x3f4: 0xe00d, 0x3f5: 0x0008,
+ 0x3f6: 0xe00d, 0x3f7: 0x0008, 0x3f8: 0xe00d, 0x3f9: 0x0008, 0x3fa: 0xe00d, 0x3fb: 0x0008,
+ 0x3fc: 0xe00d, 0x3fd: 0x0008, 0x3fe: 0xe00d, 0x3ff: 0x0008,
+ // Block 0x10, offset 0x400
+ 0x400: 0xe00d, 0x401: 0x0008, 0x402: 0xe00d, 0x403: 0x0008, 0x404: 0xe00d, 0x405: 0x0008,
+ 0x406: 0xe00d, 0x407: 0x0008, 0x408: 0xe00d, 0x409: 0x0008, 0x40a: 0xe00d, 0x40b: 0x0008,
+ 0x40c: 0xe00d, 0x40d: 0x0008, 0x40e: 0xe00d, 0x40f: 0x0008, 0x410: 0xe00d, 0x411: 0x0008,
+ 0x412: 0xe00d, 0x413: 0x0008, 0x414: 0xe00d, 0x415: 0x0008, 0x416: 0xe00d, 0x417: 0x0008,
+ 0x418: 0xe00d, 0x419: 0x0008, 0x41a: 0xe00d, 0x41b: 0x0008, 0x41c: 0xe00d, 0x41d: 0x0008,
+ 0x41e: 0xe00d, 0x41f: 0x0008, 0x420: 0xe00d, 0x421: 0x0008, 0x422: 0xe00d, 0x423: 0x0008,
+ 0x424: 0xe00d, 0x425: 0x0008, 0x426: 0xe00d, 0x427: 0x0008, 0x428: 0xe00d, 0x429: 0x0008,
+ 0x42a: 0xe00d, 0x42b: 0x0008, 0x42c: 0xe00d, 0x42d: 0x0008, 0x42e: 0xe00d, 0x42f: 0x0008,
+ 0x430: 0x0040, 0x431: 0x03f5, 0x432: 0x03f5, 0x433: 0x03f5, 0x434: 0x03f5, 0x435: 0x03f5,
+ 0x436: 0x03f5, 0x437: 0x03f5, 0x438: 0x03f5, 0x439: 0x03f5, 0x43a: 0x03f5, 0x43b: 0x03f5,
+ 0x43c: 0x03f5, 0x43d: 0x03f5, 0x43e: 0x03f5, 0x43f: 0x03f5,
+ // Block 0x11, offset 0x440
+ 0x440: 0x0840, 0x441: 0x0840, 0x442: 0x0840, 0x443: 0x0840, 0x444: 0x0840, 0x445: 0x0840,
+ 0x446: 0x0018, 0x447: 0x0018, 0x448: 0x0818, 0x449: 0x0018, 0x44a: 0x0018, 0x44b: 0x0818,
+ 0x44c: 0x0018, 0x44d: 0x0818, 0x44e: 0x0018, 0x44f: 0x0018, 0x450: 0x3308, 0x451: 0x3308,
+ 0x452: 0x3308, 0x453: 0x3308, 0x454: 0x3308, 0x455: 0x3308, 0x456: 0x3308, 0x457: 0x3308,
+ 0x458: 0x3308, 0x459: 0x3308, 0x45a: 0x3308, 0x45b: 0x0818, 0x45c: 0x0b40, 0x45d: 0x0040,
+ 0x45e: 0x0818, 0x45f: 0x0818, 0x460: 0x0a08, 0x461: 0x0808, 0x462: 0x0c08, 0x463: 0x0c08,
+ 0x464: 0x0c08, 0x465: 0x0c08, 0x466: 0x0a08, 0x467: 0x0c08, 0x468: 0x0a08, 0x469: 0x0c08,
+ 0x46a: 0x0a08, 0x46b: 0x0a08, 0x46c: 0x0a08, 0x46d: 0x0a08, 0x46e: 0x0a08, 0x46f: 0x0c08,
+ 0x470: 0x0c08, 0x471: 0x0c08, 0x472: 0x0c08, 0x473: 0x0a08, 0x474: 0x0a08, 0x475: 0x0a08,
+ 0x476: 0x0a08, 0x477: 0x0a08, 0x478: 0x0a08, 0x479: 0x0a08, 0x47a: 0x0a08, 0x47b: 0x0a08,
+ 0x47c: 0x0a08, 0x47d: 0x0a08, 0x47e: 0x0a08, 0x47f: 0x0a08,
+ // Block 0x12, offset 0x480
+ 0x480: 0x0818, 0x481: 0x0a08, 0x482: 0x0a08, 0x483: 0x0a08, 0x484: 0x0a08, 0x485: 0x0a08,
+ 0x486: 0x0a08, 0x487: 0x0a08, 0x488: 0x0c08, 0x489: 0x0a08, 0x48a: 0x0a08, 0x48b: 0x3308,
+ 0x48c: 0x3308, 0x48d: 0x3308, 0x48e: 0x3308, 0x48f: 0x3308, 0x490: 0x3308, 0x491: 0x3308,
+ 0x492: 0x3308, 0x493: 0x3308, 0x494: 0x3308, 0x495: 0x3308, 0x496: 0x3308, 0x497: 0x3308,
+ 0x498: 0x3308, 0x499: 0x3308, 0x49a: 0x3308, 0x49b: 0x3308, 0x49c: 0x3308, 0x49d: 0x3308,
+ 0x49e: 0x3308, 0x49f: 0x3308, 0x4a0: 0x0808, 0x4a1: 0x0808, 0x4a2: 0x0808, 0x4a3: 0x0808,
+ 0x4a4: 0x0808, 0x4a5: 0x0808, 0x4a6: 0x0808, 0x4a7: 0x0808, 0x4a8: 0x0808, 0x4a9: 0x0808,
+ 0x4aa: 0x0018, 0x4ab: 0x0818, 0x4ac: 0x0818, 0x4ad: 0x0818, 0x4ae: 0x0a08, 0x4af: 0x0a08,
+ 0x4b0: 0x3308, 0x4b1: 0x0c08, 0x4b2: 0x0c08, 0x4b3: 0x0c08, 0x4b4: 0x0808, 0x4b5: 0x0429,
+ 0x4b6: 0x0451, 0x4b7: 0x0479, 0x4b8: 0x04a1, 0x4b9: 0x0a08, 0x4ba: 0x0a08, 0x4bb: 0x0a08,
+ 0x4bc: 0x0a08, 0x4bd: 0x0a08, 0x4be: 0x0a08, 0x4bf: 0x0a08,
+ // Block 0x13, offset 0x4c0
+ 0x4c0: 0x0c08, 0x4c1: 0x0a08, 0x4c2: 0x0a08, 0x4c3: 0x0c08, 0x4c4: 0x0c08, 0x4c5: 0x0c08,
+ 0x4c6: 0x0c08, 0x4c7: 0x0c08, 0x4c8: 0x0c08, 0x4c9: 0x0c08, 0x4ca: 0x0c08, 0x4cb: 0x0c08,
+ 0x4cc: 0x0a08, 0x4cd: 0x0c08, 0x4ce: 0x0a08, 0x4cf: 0x0c08, 0x4d0: 0x0a08, 0x4d1: 0x0a08,
+ 0x4d2: 0x0c08, 0x4d3: 0x0c08, 0x4d4: 0x0818, 0x4d5: 0x0c08, 0x4d6: 0x3308, 0x4d7: 0x3308,
+ 0x4d8: 0x3308, 0x4d9: 0x3308, 0x4da: 0x3308, 0x4db: 0x3308, 0x4dc: 0x3308, 0x4dd: 0x0840,
+ 0x4de: 0x0018, 0x4df: 0x3308, 0x4e0: 0x3308, 0x4e1: 0x3308, 0x4e2: 0x3308, 0x4e3: 0x3308,
+ 0x4e4: 0x3308, 0x4e5: 0x0808, 0x4e6: 0x0808, 0x4e7: 0x3308, 0x4e8: 0x3308, 0x4e9: 0x0018,
+ 0x4ea: 0x3308, 0x4eb: 0x3308, 0x4ec: 0x3308, 0x4ed: 0x3308, 0x4ee: 0x0c08, 0x4ef: 0x0c08,
+ 0x4f0: 0x0008, 0x4f1: 0x0008, 0x4f2: 0x0008, 0x4f3: 0x0008, 0x4f4: 0x0008, 0x4f5: 0x0008,
+ 0x4f6: 0x0008, 0x4f7: 0x0008, 0x4f8: 0x0008, 0x4f9: 0x0008, 0x4fa: 0x0a08, 0x4fb: 0x0a08,
+ 0x4fc: 0x0a08, 0x4fd: 0x0808, 0x4fe: 0x0808, 0x4ff: 0x0a08,
+ // Block 0x14, offset 0x500
+ 0x500: 0x0818, 0x501: 0x0818, 0x502: 0x0818, 0x503: 0x0818, 0x504: 0x0818, 0x505: 0x0818,
+ 0x506: 0x0818, 0x507: 0x0818, 0x508: 0x0818, 0x509: 0x0818, 0x50a: 0x0818, 0x50b: 0x0818,
+ 0x50c: 0x0818, 0x50d: 0x0818, 0x50e: 0x0040, 0x50f: 0x0b40, 0x510: 0x0c08, 0x511: 0x3308,
+ 0x512: 0x0a08, 0x513: 0x0a08, 0x514: 0x0a08, 0x515: 0x0c08, 0x516: 0x0c08, 0x517: 0x0c08,
+ 0x518: 0x0c08, 0x519: 0x0c08, 0x51a: 0x0a08, 0x51b: 0x0a08, 0x51c: 0x0a08, 0x51d: 0x0a08,
+ 0x51e: 0x0c08, 0x51f: 0x0a08, 0x520: 0x0a08, 0x521: 0x0a08, 0x522: 0x0a08, 0x523: 0x0a08,
+ 0x524: 0x0a08, 0x525: 0x0a08, 0x526: 0x0a08, 0x527: 0x0a08, 0x528: 0x0c08, 0x529: 0x0a08,
+ 0x52a: 0x0c08, 0x52b: 0x0a08, 0x52c: 0x0c08, 0x52d: 0x0a08, 0x52e: 0x0a08, 0x52f: 0x0c08,
+ 0x530: 0x3308, 0x531: 0x3308, 0x532: 0x3308, 0x533: 0x3308, 0x534: 0x3308, 0x535: 0x3308,
+ 0x536: 0x3308, 0x537: 0x3308, 0x538: 0x3308, 0x539: 0x3308, 0x53a: 0x3308, 0x53b: 0x3308,
+ 0x53c: 0x3308, 0x53d: 0x3308, 0x53e: 0x3308, 0x53f: 0x3308,
+ // Block 0x15, offset 0x540
+ 0x540: 0x0c08, 0x541: 0x0a08, 0x542: 0x0a08, 0x543: 0x0a08, 0x544: 0x0a08, 0x545: 0x0a08,
+ 0x546: 0x0c08, 0x547: 0x0c08, 0x548: 0x0a08, 0x549: 0x0c08, 0x54a: 0x0a08, 0x54b: 0x0a08,
+ 0x54c: 0x0a08, 0x54d: 0x0a08, 0x54e: 0x0a08, 0x54f: 0x0a08, 0x550: 0x0a08, 0x551: 0x0a08,
+ 0x552: 0x0a08, 0x553: 0x0a08, 0x554: 0x0c08, 0x555: 0x0a08, 0x556: 0x0c08, 0x557: 0x0c08,
+ 0x558: 0x0c08, 0x559: 0x3308, 0x55a: 0x3308, 0x55b: 0x3308, 0x55c: 0x0040, 0x55d: 0x0040,
+ 0x55e: 0x0818, 0x55f: 0x0040, 0x560: 0x0a08, 0x561: 0x0808, 0x562: 0x0a08, 0x563: 0x0a08,
+ 0x564: 0x0a08, 0x565: 0x0a08, 0x566: 0x0808, 0x567: 0x0c08, 0x568: 0x0a08, 0x569: 0x0c08,
+ 0x56a: 0x0c08, 0x56b: 0x0040, 0x56c: 0x0040, 0x56d: 0x0040, 0x56e: 0x0040, 0x56f: 0x0040,
+ 0x570: 0x0040, 0x571: 0x0040, 0x572: 0x0040, 0x573: 0x0040, 0x574: 0x0040, 0x575: 0x0040,
+ 0x576: 0x0040, 0x577: 0x0040, 0x578: 0x0040, 0x579: 0x0040, 0x57a: 0x0040, 0x57b: 0x0040,
+ 0x57c: 0x0040, 0x57d: 0x0040, 0x57e: 0x0040, 0x57f: 0x0040,
+ // Block 0x16, offset 0x580
+ 0x580: 0x3008, 0x581: 0x3308, 0x582: 0x3308, 0x583: 0x3308, 0x584: 0x3308, 0x585: 0x3308,
+ 0x586: 0x3308, 0x587: 0x3308, 0x588: 0x3308, 0x589: 0x3008, 0x58a: 0x3008, 0x58b: 0x3008,
+ 0x58c: 0x3008, 0x58d: 0x3b08, 0x58e: 0x3008, 0x58f: 0x3008, 0x590: 0x0008, 0x591: 0x3308,
+ 0x592: 0x3308, 0x593: 0x3308, 0x594: 0x3308, 0x595: 0x3308, 0x596: 0x3308, 0x597: 0x3308,
+ 0x598: 0x04c9, 0x599: 0x0501, 0x59a: 0x0539, 0x59b: 0x0571, 0x59c: 0x05a9, 0x59d: 0x05e1,
+ 0x59e: 0x0619, 0x59f: 0x0651, 0x5a0: 0x0008, 0x5a1: 0x0008, 0x5a2: 0x3308, 0x5a3: 0x3308,
+ 0x5a4: 0x0018, 0x5a5: 0x0018, 0x5a6: 0x0008, 0x5a7: 0x0008, 0x5a8: 0x0008, 0x5a9: 0x0008,
+ 0x5aa: 0x0008, 0x5ab: 0x0008, 0x5ac: 0x0008, 0x5ad: 0x0008, 0x5ae: 0x0008, 0x5af: 0x0008,
+ 0x5b0: 0x0018, 0x5b1: 0x0008, 0x5b2: 0x0008, 0x5b3: 0x0008, 0x5b4: 0x0008, 0x5b5: 0x0008,
+ 0x5b6: 0x0008, 0x5b7: 0x0008, 0x5b8: 0x0008, 0x5b9: 0x0008, 0x5ba: 0x0008, 0x5bb: 0x0008,
+ 0x5bc: 0x0008, 0x5bd: 0x0008, 0x5be: 0x0008, 0x5bf: 0x0008,
+ // Block 0x17, offset 0x5c0
+ 0x5c0: 0x0008, 0x5c1: 0x3308, 0x5c2: 0x3008, 0x5c3: 0x3008, 0x5c4: 0x0040, 0x5c5: 0x0008,
+ 0x5c6: 0x0008, 0x5c7: 0x0008, 0x5c8: 0x0008, 0x5c9: 0x0008, 0x5ca: 0x0008, 0x5cb: 0x0008,
+ 0x5cc: 0x0008, 0x5cd: 0x0040, 0x5ce: 0x0040, 0x5cf: 0x0008, 0x5d0: 0x0008, 0x5d1: 0x0040,
+ 0x5d2: 0x0040, 0x5d3: 0x0008, 0x5d4: 0x0008, 0x5d5: 0x0008, 0x5d6: 0x0008, 0x5d7: 0x0008,
+ 0x5d8: 0x0008, 0x5d9: 0x0008, 0x5da: 0x0008, 0x5db: 0x0008, 0x5dc: 0x0008, 0x5dd: 0x0008,
+ 0x5de: 0x0008, 0x5df: 0x0008, 0x5e0: 0x0008, 0x5e1: 0x0008, 0x5e2: 0x0008, 0x5e3: 0x0008,
+ 0x5e4: 0x0008, 0x5e5: 0x0008, 0x5e6: 0x0008, 0x5e7: 0x0008, 0x5e8: 0x0008, 0x5e9: 0x0040,
+ 0x5ea: 0x0008, 0x5eb: 0x0008, 0x5ec: 0x0008, 0x5ed: 0x0008, 0x5ee: 0x0008, 0x5ef: 0x0008,
+ 0x5f0: 0x0008, 0x5f1: 0x0040, 0x5f2: 0x0008, 0x5f3: 0x0040, 0x5f4: 0x0040, 0x5f5: 0x0040,
+ 0x5f6: 0x0008, 0x5f7: 0x0008, 0x5f8: 0x0008, 0x5f9: 0x0008, 0x5fa: 0x0040, 0x5fb: 0x0040,
+ 0x5fc: 0x3308, 0x5fd: 0x0008, 0x5fe: 0x3008, 0x5ff: 0x3008,
+ // Block 0x18, offset 0x600
+ 0x600: 0x3008, 0x601: 0x3308, 0x602: 0x3308, 0x603: 0x3308, 0x604: 0x3308, 0x605: 0x0040,
+ 0x606: 0x0040, 0x607: 0x3008, 0x608: 0x3008, 0x609: 0x0040, 0x60a: 0x0040, 0x60b: 0x3008,
+ 0x60c: 0x3008, 0x60d: 0x3b08, 0x60e: 0x0008, 0x60f: 0x0040, 0x610: 0x0040, 0x611: 0x0040,
+ 0x612: 0x0040, 0x613: 0x0040, 0x614: 0x0040, 0x615: 0x0040, 0x616: 0x0040, 0x617: 0x3008,
+ 0x618: 0x0040, 0x619: 0x0040, 0x61a: 0x0040, 0x61b: 0x0040, 0x61c: 0x0689, 0x61d: 0x06c1,
+ 0x61e: 0x0040, 0x61f: 0x06f9, 0x620: 0x0008, 0x621: 0x0008, 0x622: 0x3308, 0x623: 0x3308,
+ 0x624: 0x0040, 0x625: 0x0040, 0x626: 0x0008, 0x627: 0x0008, 0x628: 0x0008, 0x629: 0x0008,
+ 0x62a: 0x0008, 0x62b: 0x0008, 0x62c: 0x0008, 0x62d: 0x0008, 0x62e: 0x0008, 0x62f: 0x0008,
+ 0x630: 0x0008, 0x631: 0x0008, 0x632: 0x0018, 0x633: 0x0018, 0x634: 0x0018, 0x635: 0x0018,
+ 0x636: 0x0018, 0x637: 0x0018, 0x638: 0x0018, 0x639: 0x0018, 0x63a: 0x0018, 0x63b: 0x0018,
+ 0x63c: 0x0008, 0x63d: 0x0018, 0x63e: 0x3308, 0x63f: 0x0040,
+ // Block 0x19, offset 0x640
+ 0x640: 0x0040, 0x641: 0x3308, 0x642: 0x3308, 0x643: 0x3008, 0x644: 0x0040, 0x645: 0x0008,
+ 0x646: 0x0008, 0x647: 0x0008, 0x648: 0x0008, 0x649: 0x0008, 0x64a: 0x0008, 0x64b: 0x0040,
+ 0x64c: 0x0040, 0x64d: 0x0040, 0x64e: 0x0040, 0x64f: 0x0008, 0x650: 0x0008, 0x651: 0x0040,
+ 0x652: 0x0040, 0x653: 0x0008, 0x654: 0x0008, 0x655: 0x0008, 0x656: 0x0008, 0x657: 0x0008,
+ 0x658: 0x0008, 0x659: 0x0008, 0x65a: 0x0008, 0x65b: 0x0008, 0x65c: 0x0008, 0x65d: 0x0008,
+ 0x65e: 0x0008, 0x65f: 0x0008, 0x660: 0x0008, 0x661: 0x0008, 0x662: 0x0008, 0x663: 0x0008,
+ 0x664: 0x0008, 0x665: 0x0008, 0x666: 0x0008, 0x667: 0x0008, 0x668: 0x0008, 0x669: 0x0040,
+ 0x66a: 0x0008, 0x66b: 0x0008, 0x66c: 0x0008, 0x66d: 0x0008, 0x66e: 0x0008, 0x66f: 0x0008,
+ 0x670: 0x0008, 0x671: 0x0040, 0x672: 0x0008, 0x673: 0x0731, 0x674: 0x0040, 0x675: 0x0008,
+ 0x676: 0x0769, 0x677: 0x0040, 0x678: 0x0008, 0x679: 0x0008, 0x67a: 0x0040, 0x67b: 0x0040,
+ 0x67c: 0x3308, 0x67d: 0x0040, 0x67e: 0x3008, 0x67f: 0x3008,
+ // Block 0x1a, offset 0x680
+ 0x680: 0x3008, 0x681: 0x3308, 0x682: 0x3308, 0x683: 0x0040, 0x684: 0x0040, 0x685: 0x0040,
+ 0x686: 0x0040, 0x687: 0x3308, 0x688: 0x3308, 0x689: 0x0040, 0x68a: 0x0040, 0x68b: 0x3308,
+ 0x68c: 0x3308, 0x68d: 0x3b08, 0x68e: 0x0040, 0x68f: 0x0040, 0x690: 0x0040, 0x691: 0x3308,
+ 0x692: 0x0040, 0x693: 0x0040, 0x694: 0x0040, 0x695: 0x0040, 0x696: 0x0040, 0x697: 0x0040,
+ 0x698: 0x0040, 0x699: 0x07a1, 0x69a: 0x07d9, 0x69b: 0x0811, 0x69c: 0x0008, 0x69d: 0x0040,
+ 0x69e: 0x0849, 0x69f: 0x0040, 0x6a0: 0x0040, 0x6a1: 0x0040, 0x6a2: 0x0040, 0x6a3: 0x0040,
+ 0x6a4: 0x0040, 0x6a5: 0x0040, 0x6a6: 0x0008, 0x6a7: 0x0008, 0x6a8: 0x0008, 0x6a9: 0x0008,
+ 0x6aa: 0x0008, 0x6ab: 0x0008, 0x6ac: 0x0008, 0x6ad: 0x0008, 0x6ae: 0x0008, 0x6af: 0x0008,
+ 0x6b0: 0x3308, 0x6b1: 0x3308, 0x6b2: 0x0008, 0x6b3: 0x0008, 0x6b4: 0x0008, 0x6b5: 0x3308,
+ 0x6b6: 0x0018, 0x6b7: 0x0040, 0x6b8: 0x0040, 0x6b9: 0x0040, 0x6ba: 0x0040, 0x6bb: 0x0040,
+ 0x6bc: 0x0040, 0x6bd: 0x0040, 0x6be: 0x0040, 0x6bf: 0x0040,
+ // Block 0x1b, offset 0x6c0
+ 0x6c0: 0x0040, 0x6c1: 0x3308, 0x6c2: 0x3308, 0x6c3: 0x3008, 0x6c4: 0x0040, 0x6c5: 0x0008,
+ 0x6c6: 0x0008, 0x6c7: 0x0008, 0x6c8: 0x0008, 0x6c9: 0x0008, 0x6ca: 0x0008, 0x6cb: 0x0008,
+ 0x6cc: 0x0008, 0x6cd: 0x0008, 0x6ce: 0x0040, 0x6cf: 0x0008, 0x6d0: 0x0008, 0x6d1: 0x0008,
+ 0x6d2: 0x0040, 0x6d3: 0x0008, 0x6d4: 0x0008, 0x6d5: 0x0008, 0x6d6: 0x0008, 0x6d7: 0x0008,
+ 0x6d8: 0x0008, 0x6d9: 0x0008, 0x6da: 0x0008, 0x6db: 0x0008, 0x6dc: 0x0008, 0x6dd: 0x0008,
+ 0x6de: 0x0008, 0x6df: 0x0008, 0x6e0: 0x0008, 0x6e1: 0x0008, 0x6e2: 0x0008, 0x6e3: 0x0008,
+ 0x6e4: 0x0008, 0x6e5: 0x0008, 0x6e6: 0x0008, 0x6e7: 0x0008, 0x6e8: 0x0008, 0x6e9: 0x0040,
+ 0x6ea: 0x0008, 0x6eb: 0x0008, 0x6ec: 0x0008, 0x6ed: 0x0008, 0x6ee: 0x0008, 0x6ef: 0x0008,
+ 0x6f0: 0x0008, 0x6f1: 0x0040, 0x6f2: 0x0008, 0x6f3: 0x0008, 0x6f4: 0x0040, 0x6f5: 0x0008,
+ 0x6f6: 0x0008, 0x6f7: 0x0008, 0x6f8: 0x0008, 0x6f9: 0x0008, 0x6fa: 0x0040, 0x6fb: 0x0040,
+ 0x6fc: 0x3308, 0x6fd: 0x0008, 0x6fe: 0x3008, 0x6ff: 0x3008,
+ // Block 0x1c, offset 0x700
+ 0x700: 0x3008, 0x701: 0x3308, 0x702: 0x3308, 0x703: 0x3308, 0x704: 0x3308, 0x705: 0x3308,
+ 0x706: 0x0040, 0x707: 0x3308, 0x708: 0x3308, 0x709: 0x3008, 0x70a: 0x0040, 0x70b: 0x3008,
+ 0x70c: 0x3008, 0x70d: 0x3b08, 0x70e: 0x0040, 0x70f: 0x0040, 0x710: 0x0008, 0x711: 0x0040,
+ 0x712: 0x0040, 0x713: 0x0040, 0x714: 0x0040, 0x715: 0x0040, 0x716: 0x0040, 0x717: 0x0040,
+ 0x718: 0x0040, 0x719: 0x0040, 0x71a: 0x0040, 0x71b: 0x0040, 0x71c: 0x0040, 0x71d: 0x0040,
+ 0x71e: 0x0040, 0x71f: 0x0040, 0x720: 0x0008, 0x721: 0x0008, 0x722: 0x3308, 0x723: 0x3308,
+ 0x724: 0x0040, 0x725: 0x0040, 0x726: 0x0008, 0x727: 0x0008, 0x728: 0x0008, 0x729: 0x0008,
+ 0x72a: 0x0008, 0x72b: 0x0008, 0x72c: 0x0008, 0x72d: 0x0008, 0x72e: 0x0008, 0x72f: 0x0008,
+ 0x730: 0x0018, 0x731: 0x0018, 0x732: 0x0040, 0x733: 0x0040, 0x734: 0x0040, 0x735: 0x0040,
+ 0x736: 0x0040, 0x737: 0x0040, 0x738: 0x0040, 0x739: 0x0008, 0x73a: 0x3308, 0x73b: 0x3308,
+ 0x73c: 0x3308, 0x73d: 0x3308, 0x73e: 0x3308, 0x73f: 0x3308,
+ // Block 0x1d, offset 0x740
+ 0x740: 0x0040, 0x741: 0x3308, 0x742: 0x3008, 0x743: 0x3008, 0x744: 0x0040, 0x745: 0x0008,
+ 0x746: 0x0008, 0x747: 0x0008, 0x748: 0x0008, 0x749: 0x0008, 0x74a: 0x0008, 0x74b: 0x0008,
+ 0x74c: 0x0008, 0x74d: 0x0040, 0x74e: 0x0040, 0x74f: 0x0008, 0x750: 0x0008, 0x751: 0x0040,
+ 0x752: 0x0040, 0x753: 0x0008, 0x754: 0x0008, 0x755: 0x0008, 0x756: 0x0008, 0x757: 0x0008,
+ 0x758: 0x0008, 0x759: 0x0008, 0x75a: 0x0008, 0x75b: 0x0008, 0x75c: 0x0008, 0x75d: 0x0008,
+ 0x75e: 0x0008, 0x75f: 0x0008, 0x760: 0x0008, 0x761: 0x0008, 0x762: 0x0008, 0x763: 0x0008,
+ 0x764: 0x0008, 0x765: 0x0008, 0x766: 0x0008, 0x767: 0x0008, 0x768: 0x0008, 0x769: 0x0040,
+ 0x76a: 0x0008, 0x76b: 0x0008, 0x76c: 0x0008, 0x76d: 0x0008, 0x76e: 0x0008, 0x76f: 0x0008,
+ 0x770: 0x0008, 0x771: 0x0040, 0x772: 0x0008, 0x773: 0x0008, 0x774: 0x0040, 0x775: 0x0008,
+ 0x776: 0x0008, 0x777: 0x0008, 0x778: 0x0008, 0x779: 0x0008, 0x77a: 0x0040, 0x77b: 0x0040,
+ 0x77c: 0x3308, 0x77d: 0x0008, 0x77e: 0x3008, 0x77f: 0x3308,
+ // Block 0x1e, offset 0x780
+ 0x780: 0x3008, 0x781: 0x3308, 0x782: 0x3308, 0x783: 0x3308, 0x784: 0x3308, 0x785: 0x0040,
+ 0x786: 0x0040, 0x787: 0x3008, 0x788: 0x3008, 0x789: 0x0040, 0x78a: 0x0040, 0x78b: 0x3008,
+ 0x78c: 0x3008, 0x78d: 0x3b08, 0x78e: 0x0040, 0x78f: 0x0040, 0x790: 0x0040, 0x791: 0x0040,
+ 0x792: 0x0040, 0x793: 0x0040, 0x794: 0x0040, 0x795: 0x3308, 0x796: 0x3308, 0x797: 0x3008,
+ 0x798: 0x0040, 0x799: 0x0040, 0x79a: 0x0040, 0x79b: 0x0040, 0x79c: 0x0881, 0x79d: 0x08b9,
+ 0x79e: 0x0040, 0x79f: 0x0008, 0x7a0: 0x0008, 0x7a1: 0x0008, 0x7a2: 0x3308, 0x7a3: 0x3308,
+ 0x7a4: 0x0040, 0x7a5: 0x0040, 0x7a6: 0x0008, 0x7a7: 0x0008, 0x7a8: 0x0008, 0x7a9: 0x0008,
+ 0x7aa: 0x0008, 0x7ab: 0x0008, 0x7ac: 0x0008, 0x7ad: 0x0008, 0x7ae: 0x0008, 0x7af: 0x0008,
+ 0x7b0: 0x0018, 0x7b1: 0x0008, 0x7b2: 0x0018, 0x7b3: 0x0018, 0x7b4: 0x0018, 0x7b5: 0x0018,
+ 0x7b6: 0x0018, 0x7b7: 0x0018, 0x7b8: 0x0040, 0x7b9: 0x0040, 0x7ba: 0x0040, 0x7bb: 0x0040,
+ 0x7bc: 0x0040, 0x7bd: 0x0040, 0x7be: 0x0040, 0x7bf: 0x0040,
+ // Block 0x1f, offset 0x7c0
+ 0x7c0: 0x0040, 0x7c1: 0x0040, 0x7c2: 0x3308, 0x7c3: 0x0008, 0x7c4: 0x0040, 0x7c5: 0x0008,
+ 0x7c6: 0x0008, 0x7c7: 0x0008, 0x7c8: 0x0008, 0x7c9: 0x0008, 0x7ca: 0x0008, 0x7cb: 0x0040,
+ 0x7cc: 0x0040, 0x7cd: 0x0040, 0x7ce: 0x0008, 0x7cf: 0x0008, 0x7d0: 0x0008, 0x7d1: 0x0040,
+ 0x7d2: 0x0008, 0x7d3: 0x0008, 0x7d4: 0x0008, 0x7d5: 0x0008, 0x7d6: 0x0040, 0x7d7: 0x0040,
+ 0x7d8: 0x0040, 0x7d9: 0x0008, 0x7da: 0x0008, 0x7db: 0x0040, 0x7dc: 0x0008, 0x7dd: 0x0040,
+ 0x7de: 0x0008, 0x7df: 0x0008, 0x7e0: 0x0040, 0x7e1: 0x0040, 0x7e2: 0x0040, 0x7e3: 0x0008,
+ 0x7e4: 0x0008, 0x7e5: 0x0040, 0x7e6: 0x0040, 0x7e7: 0x0040, 0x7e8: 0x0008, 0x7e9: 0x0008,
+ 0x7ea: 0x0008, 0x7eb: 0x0040, 0x7ec: 0x0040, 0x7ed: 0x0040, 0x7ee: 0x0008, 0x7ef: 0x0008,
+ 0x7f0: 0x0008, 0x7f1: 0x0008, 0x7f2: 0x0008, 0x7f3: 0x0008, 0x7f4: 0x0008, 0x7f5: 0x0008,
+ 0x7f6: 0x0008, 0x7f7: 0x0008, 0x7f8: 0x0008, 0x7f9: 0x0008, 0x7fa: 0x0040, 0x7fb: 0x0040,
+ 0x7fc: 0x0040, 0x7fd: 0x0040, 0x7fe: 0x3008, 0x7ff: 0x3008,
+ // Block 0x20, offset 0x800
+ 0x800: 0x3308, 0x801: 0x3008, 0x802: 0x3008, 0x803: 0x3008, 0x804: 0x3008, 0x805: 0x0040,
+ 0x806: 0x3308, 0x807: 0x3308, 0x808: 0x3308, 0x809: 0x0040, 0x80a: 0x3308, 0x80b: 0x3308,
+ 0x80c: 0x3308, 0x80d: 0x3b08, 0x80e: 0x0040, 0x80f: 0x0040, 0x810: 0x0040, 0x811: 0x0040,
+ 0x812: 0x0040, 0x813: 0x0040, 0x814: 0x0040, 0x815: 0x3308, 0x816: 0x3308, 0x817: 0x0040,
+ 0x818: 0x0008, 0x819: 0x0008, 0x81a: 0x0008, 0x81b: 0x0040, 0x81c: 0x0040, 0x81d: 0x0040,
+ 0x81e: 0x0040, 0x81f: 0x0040, 0x820: 0x0008, 0x821: 0x0008, 0x822: 0x3308, 0x823: 0x3308,
+ 0x824: 0x0040, 0x825: 0x0040, 0x826: 0x0008, 0x827: 0x0008, 0x828: 0x0008, 0x829: 0x0008,
+ 0x82a: 0x0008, 0x82b: 0x0008, 0x82c: 0x0008, 0x82d: 0x0008, 0x82e: 0x0008, 0x82f: 0x0008,
+ 0x830: 0x0040, 0x831: 0x0040, 0x832: 0x0040, 0x833: 0x0040, 0x834: 0x0040, 0x835: 0x0040,
+ 0x836: 0x0040, 0x837: 0x0018, 0x838: 0x0018, 0x839: 0x0018, 0x83a: 0x0018, 0x83b: 0x0018,
+ 0x83c: 0x0018, 0x83d: 0x0018, 0x83e: 0x0018, 0x83f: 0x0018,
+ // Block 0x21, offset 0x840
+ 0x840: 0x0008, 0x841: 0x3308, 0x842: 0x3008, 0x843: 0x3008, 0x844: 0x0018, 0x845: 0x0008,
+ 0x846: 0x0008, 0x847: 0x0008, 0x848: 0x0008, 0x849: 0x0008, 0x84a: 0x0008, 0x84b: 0x0008,
+ 0x84c: 0x0008, 0x84d: 0x0040, 0x84e: 0x0008, 0x84f: 0x0008, 0x850: 0x0008, 0x851: 0x0040,
+ 0x852: 0x0008, 0x853: 0x0008, 0x854: 0x0008, 0x855: 0x0008, 0x856: 0x0008, 0x857: 0x0008,
+ 0x858: 0x0008, 0x859: 0x0008, 0x85a: 0x0008, 0x85b: 0x0008, 0x85c: 0x0008, 0x85d: 0x0008,
+ 0x85e: 0x0008, 0x85f: 0x0008, 0x860: 0x0008, 0x861: 0x0008, 0x862: 0x0008, 0x863: 0x0008,
+ 0x864: 0x0008, 0x865: 0x0008, 0x866: 0x0008, 0x867: 0x0008, 0x868: 0x0008, 0x869: 0x0040,
+ 0x86a: 0x0008, 0x86b: 0x0008, 0x86c: 0x0008, 0x86d: 0x0008, 0x86e: 0x0008, 0x86f: 0x0008,
+ 0x870: 0x0008, 0x871: 0x0008, 0x872: 0x0008, 0x873: 0x0008, 0x874: 0x0040, 0x875: 0x0008,
+ 0x876: 0x0008, 0x877: 0x0008, 0x878: 0x0008, 0x879: 0x0008, 0x87a: 0x0040, 0x87b: 0x0040,
+ 0x87c: 0x3308, 0x87d: 0x0008, 0x87e: 0x3008, 0x87f: 0x3308,
+ // Block 0x22, offset 0x880
+ 0x880: 0x3008, 0x881: 0x3008, 0x882: 0x3008, 0x883: 0x3008, 0x884: 0x3008, 0x885: 0x0040,
+ 0x886: 0x3308, 0x887: 0x3008, 0x888: 0x3008, 0x889: 0x0040, 0x88a: 0x3008, 0x88b: 0x3008,
+ 0x88c: 0x3308, 0x88d: 0x3b08, 0x88e: 0x0040, 0x88f: 0x0040, 0x890: 0x0040, 0x891: 0x0040,
+ 0x892: 0x0040, 0x893: 0x0040, 0x894: 0x0040, 0x895: 0x3008, 0x896: 0x3008, 0x897: 0x0040,
+ 0x898: 0x0040, 0x899: 0x0040, 0x89a: 0x0040, 0x89b: 0x0040, 0x89c: 0x0040, 0x89d: 0x0040,
+ 0x89e: 0x0008, 0x89f: 0x0040, 0x8a0: 0x0008, 0x8a1: 0x0008, 0x8a2: 0x3308, 0x8a3: 0x3308,
+ 0x8a4: 0x0040, 0x8a5: 0x0040, 0x8a6: 0x0008, 0x8a7: 0x0008, 0x8a8: 0x0008, 0x8a9: 0x0008,
+ 0x8aa: 0x0008, 0x8ab: 0x0008, 0x8ac: 0x0008, 0x8ad: 0x0008, 0x8ae: 0x0008, 0x8af: 0x0008,
+ 0x8b0: 0x0040, 0x8b1: 0x0008, 0x8b2: 0x0008, 0x8b3: 0x0040, 0x8b4: 0x0040, 0x8b5: 0x0040,
+ 0x8b6: 0x0040, 0x8b7: 0x0040, 0x8b8: 0x0040, 0x8b9: 0x0040, 0x8ba: 0x0040, 0x8bb: 0x0040,
+ 0x8bc: 0x0040, 0x8bd: 0x0040, 0x8be: 0x0040, 0x8bf: 0x0040,
+ // Block 0x23, offset 0x8c0
+ 0x8c0: 0x3008, 0x8c1: 0x3308, 0x8c2: 0x3308, 0x8c3: 0x3308, 0x8c4: 0x3308, 0x8c5: 0x0040,
+ 0x8c6: 0x3008, 0x8c7: 0x3008, 0x8c8: 0x3008, 0x8c9: 0x0040, 0x8ca: 0x3008, 0x8cb: 0x3008,
+ 0x8cc: 0x3008, 0x8cd: 0x3b08, 0x8ce: 0x0008, 0x8cf: 0x0018, 0x8d0: 0x0040, 0x8d1: 0x0040,
+ 0x8d2: 0x0040, 0x8d3: 0x0040, 0x8d4: 0x0008, 0x8d5: 0x0008, 0x8d6: 0x0008, 0x8d7: 0x3008,
+ 0x8d8: 0x0018, 0x8d9: 0x0018, 0x8da: 0x0018, 0x8db: 0x0018, 0x8dc: 0x0018, 0x8dd: 0x0018,
+ 0x8de: 0x0018, 0x8df: 0x0008, 0x8e0: 0x0008, 0x8e1: 0x0008, 0x8e2: 0x3308, 0x8e3: 0x3308,
+ 0x8e4: 0x0040, 0x8e5: 0x0040, 0x8e6: 0x0008, 0x8e7: 0x0008, 0x8e8: 0x0008, 0x8e9: 0x0008,
+ 0x8ea: 0x0008, 0x8eb: 0x0008, 0x8ec: 0x0008, 0x8ed: 0x0008, 0x8ee: 0x0008, 0x8ef: 0x0008,
+ 0x8f0: 0x0018, 0x8f1: 0x0018, 0x8f2: 0x0018, 0x8f3: 0x0018, 0x8f4: 0x0018, 0x8f5: 0x0018,
+ 0x8f6: 0x0018, 0x8f7: 0x0018, 0x8f8: 0x0018, 0x8f9: 0x0018, 0x8fa: 0x0008, 0x8fb: 0x0008,
+ 0x8fc: 0x0008, 0x8fd: 0x0008, 0x8fe: 0x0008, 0x8ff: 0x0008,
+ // Block 0x24, offset 0x900
+ 0x900: 0x0040, 0x901: 0x0008, 0x902: 0x0008, 0x903: 0x0040, 0x904: 0x0008, 0x905: 0x0040,
+ 0x906: 0x0008, 0x907: 0x0008, 0x908: 0x0008, 0x909: 0x0008, 0x90a: 0x0008, 0x90b: 0x0040,
+ 0x90c: 0x0008, 0x90d: 0x0008, 0x90e: 0x0008, 0x90f: 0x0008, 0x910: 0x0008, 0x911: 0x0008,
+ 0x912: 0x0008, 0x913: 0x0008, 0x914: 0x0008, 0x915: 0x0008, 0x916: 0x0008, 0x917: 0x0008,
+ 0x918: 0x0008, 0x919: 0x0008, 0x91a: 0x0008, 0x91b: 0x0008, 0x91c: 0x0008, 0x91d: 0x0008,
+ 0x91e: 0x0008, 0x91f: 0x0008, 0x920: 0x0008, 0x921: 0x0008, 0x922: 0x0008, 0x923: 0x0008,
+ 0x924: 0x0040, 0x925: 0x0008, 0x926: 0x0040, 0x927: 0x0008, 0x928: 0x0008, 0x929: 0x0008,
+ 0x92a: 0x0008, 0x92b: 0x0008, 0x92c: 0x0008, 0x92d: 0x0008, 0x92e: 0x0008, 0x92f: 0x0008,
+ 0x930: 0x0008, 0x931: 0x3308, 0x932: 0x0008, 0x933: 0x0929, 0x934: 0x3308, 0x935: 0x3308,
+ 0x936: 0x3308, 0x937: 0x3308, 0x938: 0x3308, 0x939: 0x3308, 0x93a: 0x3b08, 0x93b: 0x3308,
+ 0x93c: 0x3308, 0x93d: 0x0008, 0x93e: 0x0040, 0x93f: 0x0040,
+ // Block 0x25, offset 0x940
+ 0x940: 0x0008, 0x941: 0x0008, 0x942: 0x0008, 0x943: 0x09d1, 0x944: 0x0008, 0x945: 0x0008,
+ 0x946: 0x0008, 0x947: 0x0008, 0x948: 0x0040, 0x949: 0x0008, 0x94a: 0x0008, 0x94b: 0x0008,
+ 0x94c: 0x0008, 0x94d: 0x0a09, 0x94e: 0x0008, 0x94f: 0x0008, 0x950: 0x0008, 0x951: 0x0008,
+ 0x952: 0x0a41, 0x953: 0x0008, 0x954: 0x0008, 0x955: 0x0008, 0x956: 0x0008, 0x957: 0x0a79,
+ 0x958: 0x0008, 0x959: 0x0008, 0x95a: 0x0008, 0x95b: 0x0008, 0x95c: 0x0ab1, 0x95d: 0x0008,
+ 0x95e: 0x0008, 0x95f: 0x0008, 0x960: 0x0008, 0x961: 0x0008, 0x962: 0x0008, 0x963: 0x0008,
+ 0x964: 0x0008, 0x965: 0x0008, 0x966: 0x0008, 0x967: 0x0008, 0x968: 0x0008, 0x969: 0x0ae9,
+ 0x96a: 0x0008, 0x96b: 0x0008, 0x96c: 0x0008, 0x96d: 0x0040, 0x96e: 0x0040, 0x96f: 0x0040,
+ 0x970: 0x0040, 0x971: 0x3308, 0x972: 0x3308, 0x973: 0x0b21, 0x974: 0x3308, 0x975: 0x0b59,
+ 0x976: 0x0b91, 0x977: 0x0bc9, 0x978: 0x0c19, 0x979: 0x0c51, 0x97a: 0x3308, 0x97b: 0x3308,
+ 0x97c: 0x3308, 0x97d: 0x3308, 0x97e: 0x3308, 0x97f: 0x3008,
+ // Block 0x26, offset 0x980
+ 0x980: 0x3308, 0x981: 0x0ca1, 0x982: 0x3308, 0x983: 0x3308, 0x984: 0x3b08, 0x985: 0x0018,
+ 0x986: 0x3308, 0x987: 0x3308, 0x988: 0x0008, 0x989: 0x0008, 0x98a: 0x0008, 0x98b: 0x0008,
+ 0x98c: 0x0008, 0x98d: 0x3308, 0x98e: 0x3308, 0x98f: 0x3308, 0x990: 0x3308, 0x991: 0x3308,
+ 0x992: 0x3308, 0x993: 0x0cd9, 0x994: 0x3308, 0x995: 0x3308, 0x996: 0x3308, 0x997: 0x3308,
+ 0x998: 0x0040, 0x999: 0x3308, 0x99a: 0x3308, 0x99b: 0x3308, 0x99c: 0x3308, 0x99d: 0x0d11,
+ 0x99e: 0x3308, 0x99f: 0x3308, 0x9a0: 0x3308, 0x9a1: 0x3308, 0x9a2: 0x0d49, 0x9a3: 0x3308,
+ 0x9a4: 0x3308, 0x9a5: 0x3308, 0x9a6: 0x3308, 0x9a7: 0x0d81, 0x9a8: 0x3308, 0x9a9: 0x3308,
+ 0x9aa: 0x3308, 0x9ab: 0x3308, 0x9ac: 0x0db9, 0x9ad: 0x3308, 0x9ae: 0x3308, 0x9af: 0x3308,
+ 0x9b0: 0x3308, 0x9b1: 0x3308, 0x9b2: 0x3308, 0x9b3: 0x3308, 0x9b4: 0x3308, 0x9b5: 0x3308,
+ 0x9b6: 0x3308, 0x9b7: 0x3308, 0x9b8: 0x3308, 0x9b9: 0x0df1, 0x9ba: 0x3308, 0x9bb: 0x3308,
+ 0x9bc: 0x3308, 0x9bd: 0x0040, 0x9be: 0x0018, 0x9bf: 0x0018,
+ // Block 0x27, offset 0x9c0
+ 0x9c0: 0x0008, 0x9c1: 0x0008, 0x9c2: 0x0008, 0x9c3: 0x0008, 0x9c4: 0x0008, 0x9c5: 0x0008,
+ 0x9c6: 0x0008, 0x9c7: 0x0008, 0x9c8: 0x0008, 0x9c9: 0x0008, 0x9ca: 0x0008, 0x9cb: 0x0008,
+ 0x9cc: 0x0008, 0x9cd: 0x0008, 0x9ce: 0x0008, 0x9cf: 0x0008, 0x9d0: 0x0008, 0x9d1: 0x0008,
+ 0x9d2: 0x0008, 0x9d3: 0x0008, 0x9d4: 0x0008, 0x9d5: 0x0008, 0x9d6: 0x0008, 0x9d7: 0x0008,
+ 0x9d8: 0x0008, 0x9d9: 0x0008, 0x9da: 0x0008, 0x9db: 0x0008, 0x9dc: 0x0008, 0x9dd: 0x0008,
+ 0x9de: 0x0008, 0x9df: 0x0008, 0x9e0: 0x0008, 0x9e1: 0x0008, 0x9e2: 0x0008, 0x9e3: 0x0008,
+ 0x9e4: 0x0008, 0x9e5: 0x0008, 0x9e6: 0x0008, 0x9e7: 0x0008, 0x9e8: 0x0008, 0x9e9: 0x0008,
+ 0x9ea: 0x0008, 0x9eb: 0x0008, 0x9ec: 0x0039, 0x9ed: 0x0ed1, 0x9ee: 0x0ee9, 0x9ef: 0x0008,
+ 0x9f0: 0x0ef9, 0x9f1: 0x0f09, 0x9f2: 0x0f19, 0x9f3: 0x0f31, 0x9f4: 0x0249, 0x9f5: 0x0f41,
+ 0x9f6: 0x0259, 0x9f7: 0x0f51, 0x9f8: 0x0359, 0x9f9: 0x0f61, 0x9fa: 0x0f71, 0x9fb: 0x0008,
+ 0x9fc: 0x00d9, 0x9fd: 0x0f81, 0x9fe: 0x0f99, 0x9ff: 0x0269,
+ // Block 0x28, offset 0xa00
+ 0xa00: 0x0fa9, 0xa01: 0x0fb9, 0xa02: 0x0279, 0xa03: 0x0039, 0xa04: 0x0fc9, 0xa05: 0x0fe1,
+ 0xa06: 0x05b5, 0xa07: 0x0ee9, 0xa08: 0x0ef9, 0xa09: 0x0f09, 0xa0a: 0x0ff9, 0xa0b: 0x1011,
+ 0xa0c: 0x1029, 0xa0d: 0x0f31, 0xa0e: 0x0008, 0xa0f: 0x0f51, 0xa10: 0x0f61, 0xa11: 0x1041,
+ 0xa12: 0x00d9, 0xa13: 0x1059, 0xa14: 0x05cd, 0xa15: 0x05cd, 0xa16: 0x0f99, 0xa17: 0x0fa9,
+ 0xa18: 0x0fb9, 0xa19: 0x05b5, 0xa1a: 0x1071, 0xa1b: 0x1089, 0xa1c: 0x05e5, 0xa1d: 0x1099,
+ 0xa1e: 0x10b1, 0xa1f: 0x10c9, 0xa20: 0x10e1, 0xa21: 0x10f9, 0xa22: 0x0f41, 0xa23: 0x0269,
+ 0xa24: 0x0fb9, 0xa25: 0x1089, 0xa26: 0x1099, 0xa27: 0x10b1, 0xa28: 0x1111, 0xa29: 0x10e1,
+ 0xa2a: 0x10f9, 0xa2b: 0x0008, 0xa2c: 0x0008, 0xa2d: 0x0008, 0xa2e: 0x0008, 0xa2f: 0x0008,
+ 0xa30: 0x0008, 0xa31: 0x0008, 0xa32: 0x0008, 0xa33: 0x0008, 0xa34: 0x0008, 0xa35: 0x0008,
+ 0xa36: 0x0008, 0xa37: 0x0008, 0xa38: 0x1129, 0xa39: 0x0008, 0xa3a: 0x0008, 0xa3b: 0x0008,
+ 0xa3c: 0x0008, 0xa3d: 0x0008, 0xa3e: 0x0008, 0xa3f: 0x0008,
+ // Block 0x29, offset 0xa40
+ 0xa40: 0x0008, 0xa41: 0x0008, 0xa42: 0x0008, 0xa43: 0x0008, 0xa44: 0x0008, 0xa45: 0x0008,
+ 0xa46: 0x0008, 0xa47: 0x0008, 0xa48: 0x0008, 0xa49: 0x0008, 0xa4a: 0x0008, 0xa4b: 0x0008,
+ 0xa4c: 0x0008, 0xa4d: 0x0008, 0xa4e: 0x0008, 0xa4f: 0x0008, 0xa50: 0x0008, 0xa51: 0x0008,
+ 0xa52: 0x0008, 0xa53: 0x0008, 0xa54: 0x0008, 0xa55: 0x0008, 0xa56: 0x0008, 0xa57: 0x0008,
+ 0xa58: 0x0008, 0xa59: 0x0008, 0xa5a: 0x0008, 0xa5b: 0x1141, 0xa5c: 0x1159, 0xa5d: 0x1169,
+ 0xa5e: 0x1181, 0xa5f: 0x1029, 0xa60: 0x1199, 0xa61: 0x11a9, 0xa62: 0x11c1, 0xa63: 0x11d9,
+ 0xa64: 0x11f1, 0xa65: 0x1209, 0xa66: 0x1221, 0xa67: 0x05fd, 0xa68: 0x1239, 0xa69: 0x1251,
+ 0xa6a: 0xe17d, 0xa6b: 0x1269, 0xa6c: 0x1281, 0xa6d: 0x1299, 0xa6e: 0x12b1, 0xa6f: 0x12c9,
+ 0xa70: 0x12e1, 0xa71: 0x12f9, 0xa72: 0x1311, 0xa73: 0x1329, 0xa74: 0x1341, 0xa75: 0x1359,
+ 0xa76: 0x1371, 0xa77: 0x1389, 0xa78: 0x0615, 0xa79: 0x13a1, 0xa7a: 0x13b9, 0xa7b: 0x13d1,
+ 0xa7c: 0x13e1, 0xa7d: 0x13f9, 0xa7e: 0x1411, 0xa7f: 0x1429,
+ // Block 0x2a, offset 0xa80
+ 0xa80: 0xe00d, 0xa81: 0x0008, 0xa82: 0xe00d, 0xa83: 0x0008, 0xa84: 0xe00d, 0xa85: 0x0008,
+ 0xa86: 0xe00d, 0xa87: 0x0008, 0xa88: 0xe00d, 0xa89: 0x0008, 0xa8a: 0xe00d, 0xa8b: 0x0008,
+ 0xa8c: 0xe00d, 0xa8d: 0x0008, 0xa8e: 0xe00d, 0xa8f: 0x0008, 0xa90: 0xe00d, 0xa91: 0x0008,
+ 0xa92: 0xe00d, 0xa93: 0x0008, 0xa94: 0xe00d, 0xa95: 0x0008, 0xa96: 0xe00d, 0xa97: 0x0008,
+ 0xa98: 0xe00d, 0xa99: 0x0008, 0xa9a: 0xe00d, 0xa9b: 0x0008, 0xa9c: 0xe00d, 0xa9d: 0x0008,
+ 0xa9e: 0xe00d, 0xa9f: 0x0008, 0xaa0: 0xe00d, 0xaa1: 0x0008, 0xaa2: 0xe00d, 0xaa3: 0x0008,
+ 0xaa4: 0xe00d, 0xaa5: 0x0008, 0xaa6: 0xe00d, 0xaa7: 0x0008, 0xaa8: 0xe00d, 0xaa9: 0x0008,
+ 0xaaa: 0xe00d, 0xaab: 0x0008, 0xaac: 0xe00d, 0xaad: 0x0008, 0xaae: 0xe00d, 0xaaf: 0x0008,
+ 0xab0: 0xe00d, 0xab1: 0x0008, 0xab2: 0xe00d, 0xab3: 0x0008, 0xab4: 0xe00d, 0xab5: 0x0008,
+ 0xab6: 0xe00d, 0xab7: 0x0008, 0xab8: 0xe00d, 0xab9: 0x0008, 0xaba: 0xe00d, 0xabb: 0x0008,
+ 0xabc: 0xe00d, 0xabd: 0x0008, 0xabe: 0xe00d, 0xabf: 0x0008,
+ // Block 0x2b, offset 0xac0
+ 0xac0: 0xe00d, 0xac1: 0x0008, 0xac2: 0xe00d, 0xac3: 0x0008, 0xac4: 0xe00d, 0xac5: 0x0008,
+ 0xac6: 0xe00d, 0xac7: 0x0008, 0xac8: 0xe00d, 0xac9: 0x0008, 0xaca: 0xe00d, 0xacb: 0x0008,
+ 0xacc: 0xe00d, 0xacd: 0x0008, 0xace: 0xe00d, 0xacf: 0x0008, 0xad0: 0xe00d, 0xad1: 0x0008,
+ 0xad2: 0xe00d, 0xad3: 0x0008, 0xad4: 0xe00d, 0xad5: 0x0008, 0xad6: 0x0008, 0xad7: 0x0008,
+ 0xad8: 0x0008, 0xad9: 0x0008, 0xada: 0x062d, 0xadb: 0x064d, 0xadc: 0x0008, 0xadd: 0x0008,
+ 0xade: 0x1441, 0xadf: 0x0008, 0xae0: 0xe00d, 0xae1: 0x0008, 0xae2: 0xe00d, 0xae3: 0x0008,
+ 0xae4: 0xe00d, 0xae5: 0x0008, 0xae6: 0xe00d, 0xae7: 0x0008, 0xae8: 0xe00d, 0xae9: 0x0008,
+ 0xaea: 0xe00d, 0xaeb: 0x0008, 0xaec: 0xe00d, 0xaed: 0x0008, 0xaee: 0xe00d, 0xaef: 0x0008,
+ 0xaf0: 0xe00d, 0xaf1: 0x0008, 0xaf2: 0xe00d, 0xaf3: 0x0008, 0xaf4: 0xe00d, 0xaf5: 0x0008,
+ 0xaf6: 0xe00d, 0xaf7: 0x0008, 0xaf8: 0xe00d, 0xaf9: 0x0008, 0xafa: 0xe00d, 0xafb: 0x0008,
+ 0xafc: 0xe00d, 0xafd: 0x0008, 0xafe: 0xe00d, 0xaff: 0x0008,
+ // Block 0x2c, offset 0xb00
+ 0xb00: 0x0008, 0xb01: 0x0008, 0xb02: 0x0008, 0xb03: 0x0008, 0xb04: 0x0008, 0xb05: 0x0008,
+ 0xb06: 0x0040, 0xb07: 0x0040, 0xb08: 0xe045, 0xb09: 0xe045, 0xb0a: 0xe045, 0xb0b: 0xe045,
+ 0xb0c: 0xe045, 0xb0d: 0xe045, 0xb0e: 0x0040, 0xb0f: 0x0040, 0xb10: 0x0008, 0xb11: 0x0008,
+ 0xb12: 0x0008, 0xb13: 0x0008, 0xb14: 0x0008, 0xb15: 0x0008, 0xb16: 0x0008, 0xb17: 0x0008,
+ 0xb18: 0x0040, 0xb19: 0xe045, 0xb1a: 0x0040, 0xb1b: 0xe045, 0xb1c: 0x0040, 0xb1d: 0xe045,
+ 0xb1e: 0x0040, 0xb1f: 0xe045, 0xb20: 0x0008, 0xb21: 0x0008, 0xb22: 0x0008, 0xb23: 0x0008,
+ 0xb24: 0x0008, 0xb25: 0x0008, 0xb26: 0x0008, 0xb27: 0x0008, 0xb28: 0xe045, 0xb29: 0xe045,
+ 0xb2a: 0xe045, 0xb2b: 0xe045, 0xb2c: 0xe045, 0xb2d: 0xe045, 0xb2e: 0xe045, 0xb2f: 0xe045,
+ 0xb30: 0x0008, 0xb31: 0x1459, 0xb32: 0x0008, 0xb33: 0x1471, 0xb34: 0x0008, 0xb35: 0x1489,
+ 0xb36: 0x0008, 0xb37: 0x14a1, 0xb38: 0x0008, 0xb39: 0x14b9, 0xb3a: 0x0008, 0xb3b: 0x14d1,
+ 0xb3c: 0x0008, 0xb3d: 0x14e9, 0xb3e: 0x0040, 0xb3f: 0x0040,
+ // Block 0x2d, offset 0xb40
+ 0xb40: 0x1501, 0xb41: 0x1531, 0xb42: 0x1561, 0xb43: 0x1591, 0xb44: 0x15c1, 0xb45: 0x15f1,
+ 0xb46: 0x1621, 0xb47: 0x1651, 0xb48: 0x1501, 0xb49: 0x1531, 0xb4a: 0x1561, 0xb4b: 0x1591,
+ 0xb4c: 0x15c1, 0xb4d: 0x15f1, 0xb4e: 0x1621, 0xb4f: 0x1651, 0xb50: 0x1681, 0xb51: 0x16b1,
+ 0xb52: 0x16e1, 0xb53: 0x1711, 0xb54: 0x1741, 0xb55: 0x1771, 0xb56: 0x17a1, 0xb57: 0x17d1,
+ 0xb58: 0x1681, 0xb59: 0x16b1, 0xb5a: 0x16e1, 0xb5b: 0x1711, 0xb5c: 0x1741, 0xb5d: 0x1771,
+ 0xb5e: 0x17a1, 0xb5f: 0x17d1, 0xb60: 0x1801, 0xb61: 0x1831, 0xb62: 0x1861, 0xb63: 0x1891,
+ 0xb64: 0x18c1, 0xb65: 0x18f1, 0xb66: 0x1921, 0xb67: 0x1951, 0xb68: 0x1801, 0xb69: 0x1831,
+ 0xb6a: 0x1861, 0xb6b: 0x1891, 0xb6c: 0x18c1, 0xb6d: 0x18f1, 0xb6e: 0x1921, 0xb6f: 0x1951,
+ 0xb70: 0x0008, 0xb71: 0x0008, 0xb72: 0x1981, 0xb73: 0x19b1, 0xb74: 0x19d9, 0xb75: 0x0040,
+ 0xb76: 0x0008, 0xb77: 0x1a01, 0xb78: 0xe045, 0xb79: 0xe045, 0xb7a: 0x0665, 0xb7b: 0x1459,
+ 0xb7c: 0x19b1, 0xb7d: 0x067e, 0xb7e: 0x1a31, 0xb7f: 0x069e,
+ // Block 0x2e, offset 0xb80
+ 0xb80: 0x06be, 0xb81: 0x1a4a, 0xb82: 0x1a79, 0xb83: 0x1aa9, 0xb84: 0x1ad1, 0xb85: 0x0040,
+ 0xb86: 0x0008, 0xb87: 0x1af9, 0xb88: 0x06dd, 0xb89: 0x1471, 0xb8a: 0x06f5, 0xb8b: 0x1489,
+ 0xb8c: 0x1aa9, 0xb8d: 0x1b2a, 0xb8e: 0x1b5a, 0xb8f: 0x1b8a, 0xb90: 0x0008, 0xb91: 0x0008,
+ 0xb92: 0x0008, 0xb93: 0x1bb9, 0xb94: 0x0040, 0xb95: 0x0040, 0xb96: 0x0008, 0xb97: 0x0008,
+ 0xb98: 0xe045, 0xb99: 0xe045, 0xb9a: 0x070d, 0xb9b: 0x14a1, 0xb9c: 0x0040, 0xb9d: 0x1bd2,
+ 0xb9e: 0x1c02, 0xb9f: 0x1c32, 0xba0: 0x0008, 0xba1: 0x0008, 0xba2: 0x0008, 0xba3: 0x1c61,
+ 0xba4: 0x0008, 0xba5: 0x0008, 0xba6: 0x0008, 0xba7: 0x0008, 0xba8: 0xe045, 0xba9: 0xe045,
+ 0xbaa: 0x0725, 0xbab: 0x14d1, 0xbac: 0xe04d, 0xbad: 0x1c7a, 0xbae: 0x03d2, 0xbaf: 0x1caa,
+ 0xbb0: 0x0040, 0xbb1: 0x0040, 0xbb2: 0x1cb9, 0xbb3: 0x1ce9, 0xbb4: 0x1d11, 0xbb5: 0x0040,
+ 0xbb6: 0x0008, 0xbb7: 0x1d39, 0xbb8: 0x073d, 0xbb9: 0x14b9, 0xbba: 0x0515, 0xbbb: 0x14e9,
+ 0xbbc: 0x1ce9, 0xbbd: 0x0756, 0xbbe: 0x0776, 0xbbf: 0x0040,
+ // Block 0x2f, offset 0xbc0
+ 0xbc0: 0x000a, 0xbc1: 0x000a, 0xbc2: 0x000a, 0xbc3: 0x000a, 0xbc4: 0x000a, 0xbc5: 0x000a,
+ 0xbc6: 0x000a, 0xbc7: 0x000a, 0xbc8: 0x000a, 0xbc9: 0x000a, 0xbca: 0x000a, 0xbcb: 0x03c0,
+ 0xbcc: 0x0003, 0xbcd: 0x0003, 0xbce: 0x0340, 0xbcf: 0x0b40, 0xbd0: 0x0018, 0xbd1: 0xe00d,
+ 0xbd2: 0x0018, 0xbd3: 0x0018, 0xbd4: 0x0018, 0xbd5: 0x0018, 0xbd6: 0x0018, 0xbd7: 0x0796,
+ 0xbd8: 0x0018, 0xbd9: 0x0018, 0xbda: 0x0018, 0xbdb: 0x0018, 0xbdc: 0x0018, 0xbdd: 0x0018,
+ 0xbde: 0x0018, 0xbdf: 0x0018, 0xbe0: 0x0018, 0xbe1: 0x0018, 0xbe2: 0x0018, 0xbe3: 0x0018,
+ 0xbe4: 0x0040, 0xbe5: 0x0040, 0xbe6: 0x0040, 0xbe7: 0x0018, 0xbe8: 0x0040, 0xbe9: 0x0040,
+ 0xbea: 0x0340, 0xbeb: 0x0340, 0xbec: 0x0340, 0xbed: 0x0340, 0xbee: 0x0340, 0xbef: 0x000a,
+ 0xbf0: 0x0018, 0xbf1: 0x0018, 0xbf2: 0x0018, 0xbf3: 0x1d69, 0xbf4: 0x1da1, 0xbf5: 0x0018,
+ 0xbf6: 0x1df1, 0xbf7: 0x1e29, 0xbf8: 0x0018, 0xbf9: 0x0018, 0xbfa: 0x0018, 0xbfb: 0x0018,
+ 0xbfc: 0x1e7a, 0xbfd: 0x0018, 0xbfe: 0x07b6, 0xbff: 0x0018,
+ // Block 0x30, offset 0xc00
+ 0xc00: 0x0018, 0xc01: 0x0018, 0xc02: 0x0018, 0xc03: 0x0018, 0xc04: 0x0018, 0xc05: 0x0018,
+ 0xc06: 0x0018, 0xc07: 0x1e92, 0xc08: 0x1eaa, 0xc09: 0x1ec2, 0xc0a: 0x0018, 0xc0b: 0x0018,
+ 0xc0c: 0x0018, 0xc0d: 0x0018, 0xc0e: 0x0018, 0xc0f: 0x0018, 0xc10: 0x0018, 0xc11: 0x0018,
+ 0xc12: 0x0018, 0xc13: 0x0018, 0xc14: 0x0018, 0xc15: 0x0018, 0xc16: 0x0018, 0xc17: 0x1ed9,
+ 0xc18: 0x0018, 0xc19: 0x0018, 0xc1a: 0x0018, 0xc1b: 0x0018, 0xc1c: 0x0018, 0xc1d: 0x0018,
+ 0xc1e: 0x0018, 0xc1f: 0x000a, 0xc20: 0x03c0, 0xc21: 0x0340, 0xc22: 0x0340, 0xc23: 0x0340,
+ 0xc24: 0x03c0, 0xc25: 0x0040, 0xc26: 0x0040, 0xc27: 0x0040, 0xc28: 0x0040, 0xc29: 0x0040,
+ 0xc2a: 0x0340, 0xc2b: 0x0340, 0xc2c: 0x0340, 0xc2d: 0x0340, 0xc2e: 0x0340, 0xc2f: 0x0340,
+ 0xc30: 0x1f41, 0xc31: 0x0f41, 0xc32: 0x0040, 0xc33: 0x0040, 0xc34: 0x1f51, 0xc35: 0x1f61,
+ 0xc36: 0x1f71, 0xc37: 0x1f81, 0xc38: 0x1f91, 0xc39: 0x1fa1, 0xc3a: 0x1fb2, 0xc3b: 0x07d5,
+ 0xc3c: 0x1fc2, 0xc3d: 0x1fd2, 0xc3e: 0x1fe2, 0xc3f: 0x0f71,
+ // Block 0x31, offset 0xc40
+ 0xc40: 0x1f41, 0xc41: 0x00c9, 0xc42: 0x0069, 0xc43: 0x0079, 0xc44: 0x1f51, 0xc45: 0x1f61,
+ 0xc46: 0x1f71, 0xc47: 0x1f81, 0xc48: 0x1f91, 0xc49: 0x1fa1, 0xc4a: 0x1fb2, 0xc4b: 0x07ed,
+ 0xc4c: 0x1fc2, 0xc4d: 0x1fd2, 0xc4e: 0x1fe2, 0xc4f: 0x0040, 0xc50: 0x0039, 0xc51: 0x0f09,
+ 0xc52: 0x00d9, 0xc53: 0x0369, 0xc54: 0x0ff9, 0xc55: 0x0249, 0xc56: 0x0f51, 0xc57: 0x0359,
+ 0xc58: 0x0f61, 0xc59: 0x0f71, 0xc5a: 0x0f99, 0xc5b: 0x01d9, 0xc5c: 0x0fa9, 0xc5d: 0x0040,
+ 0xc5e: 0x0040, 0xc5f: 0x0040, 0xc60: 0x0018, 0xc61: 0x0018, 0xc62: 0x0018, 0xc63: 0x0018,
+ 0xc64: 0x0018, 0xc65: 0x0018, 0xc66: 0x0018, 0xc67: 0x0018, 0xc68: 0x1ff1, 0xc69: 0x0018,
+ 0xc6a: 0x0018, 0xc6b: 0x0018, 0xc6c: 0x0018, 0xc6d: 0x0018, 0xc6e: 0x0018, 0xc6f: 0x0018,
+ 0xc70: 0x0018, 0xc71: 0x0018, 0xc72: 0x0018, 0xc73: 0x0018, 0xc74: 0x0018, 0xc75: 0x0018,
+ 0xc76: 0x0018, 0xc77: 0x0018, 0xc78: 0x0018, 0xc79: 0x0018, 0xc7a: 0x0018, 0xc7b: 0x0018,
+ 0xc7c: 0x0018, 0xc7d: 0x0018, 0xc7e: 0x0018, 0xc7f: 0x0018,
+ // Block 0x32, offset 0xc80
+ 0xc80: 0x0806, 0xc81: 0x0826, 0xc82: 0x1159, 0xc83: 0x0845, 0xc84: 0x0018, 0xc85: 0x0866,
+ 0xc86: 0x0886, 0xc87: 0x1011, 0xc88: 0x0018, 0xc89: 0x08a5, 0xc8a: 0x0f31, 0xc8b: 0x0249,
+ 0xc8c: 0x0249, 0xc8d: 0x0249, 0xc8e: 0x0249, 0xc8f: 0x2009, 0xc90: 0x0f41, 0xc91: 0x0f41,
+ 0xc92: 0x0359, 0xc93: 0x0359, 0xc94: 0x0018, 0xc95: 0x0f71, 0xc96: 0x2021, 0xc97: 0x0018,
+ 0xc98: 0x0018, 0xc99: 0x0f99, 0xc9a: 0x2039, 0xc9b: 0x0269, 0xc9c: 0x0269, 0xc9d: 0x0269,
+ 0xc9e: 0x0018, 0xc9f: 0x0018, 0xca0: 0x2049, 0xca1: 0x08c5, 0xca2: 0x2061, 0xca3: 0x0018,
+ 0xca4: 0x13d1, 0xca5: 0x0018, 0xca6: 0x2079, 0xca7: 0x0018, 0xca8: 0x13d1, 0xca9: 0x0018,
+ 0xcaa: 0x0f51, 0xcab: 0x2091, 0xcac: 0x0ee9, 0xcad: 0x1159, 0xcae: 0x0018, 0xcaf: 0x0f09,
+ 0xcb0: 0x0f09, 0xcb1: 0x1199, 0xcb2: 0x0040, 0xcb3: 0x0f61, 0xcb4: 0x00d9, 0xcb5: 0x20a9,
+ 0xcb6: 0x20c1, 0xcb7: 0x20d9, 0xcb8: 0x20f1, 0xcb9: 0x0f41, 0xcba: 0x0018, 0xcbb: 0x08e5,
+ 0xcbc: 0x2109, 0xcbd: 0x10b1, 0xcbe: 0x10b1, 0xcbf: 0x2109,
+ // Block 0x33, offset 0xcc0
+ 0xcc0: 0x0905, 0xcc1: 0x0018, 0xcc2: 0x0018, 0xcc3: 0x0018, 0xcc4: 0x0018, 0xcc5: 0x0ef9,
+ 0xcc6: 0x0ef9, 0xcc7: 0x0f09, 0xcc8: 0x0f41, 0xcc9: 0x0259, 0xcca: 0x0018, 0xccb: 0x0018,
+ 0xccc: 0x0018, 0xccd: 0x0018, 0xcce: 0x0008, 0xccf: 0x0018, 0xcd0: 0x2121, 0xcd1: 0x2151,
+ 0xcd2: 0x2181, 0xcd3: 0x21b9, 0xcd4: 0x21e9, 0xcd5: 0x2219, 0xcd6: 0x2249, 0xcd7: 0x2279,
+ 0xcd8: 0x22a9, 0xcd9: 0x22d9, 0xcda: 0x2309, 0xcdb: 0x2339, 0xcdc: 0x2369, 0xcdd: 0x2399,
+ 0xcde: 0x23c9, 0xcdf: 0x23f9, 0xce0: 0x0f41, 0xce1: 0x2421, 0xce2: 0x091d, 0xce3: 0x2439,
+ 0xce4: 0x1089, 0xce5: 0x2451, 0xce6: 0x093d, 0xce7: 0x2469, 0xce8: 0x2491, 0xce9: 0x0369,
+ 0xcea: 0x24a9, 0xceb: 0x095d, 0xcec: 0x0359, 0xced: 0x1159, 0xcee: 0x0ef9, 0xcef: 0x0f61,
+ 0xcf0: 0x0f41, 0xcf1: 0x2421, 0xcf2: 0x097d, 0xcf3: 0x2439, 0xcf4: 0x1089, 0xcf5: 0x2451,
+ 0xcf6: 0x099d, 0xcf7: 0x2469, 0xcf8: 0x2491, 0xcf9: 0x0369, 0xcfa: 0x24a9, 0xcfb: 0x09bd,
+ 0xcfc: 0x0359, 0xcfd: 0x1159, 0xcfe: 0x0ef9, 0xcff: 0x0f61,
+ // Block 0x34, offset 0xd00
+ 0xd00: 0x0018, 0xd01: 0x0018, 0xd02: 0x0018, 0xd03: 0x0018, 0xd04: 0x0018, 0xd05: 0x0018,
+ 0xd06: 0x0018, 0xd07: 0x0018, 0xd08: 0x0018, 0xd09: 0x0018, 0xd0a: 0x0018, 0xd0b: 0x0040,
+ 0xd0c: 0x0040, 0xd0d: 0x0040, 0xd0e: 0x0040, 0xd0f: 0x0040, 0xd10: 0x0040, 0xd11: 0x0040,
+ 0xd12: 0x0040, 0xd13: 0x0040, 0xd14: 0x0040, 0xd15: 0x0040, 0xd16: 0x0040, 0xd17: 0x0040,
+ 0xd18: 0x0040, 0xd19: 0x0040, 0xd1a: 0x0040, 0xd1b: 0x0040, 0xd1c: 0x0040, 0xd1d: 0x0040,
+ 0xd1e: 0x0040, 0xd1f: 0x0040, 0xd20: 0x00c9, 0xd21: 0x0069, 0xd22: 0x0079, 0xd23: 0x1f51,
+ 0xd24: 0x1f61, 0xd25: 0x1f71, 0xd26: 0x1f81, 0xd27: 0x1f91, 0xd28: 0x1fa1, 0xd29: 0x2601,
+ 0xd2a: 0x2619, 0xd2b: 0x2631, 0xd2c: 0x2649, 0xd2d: 0x2661, 0xd2e: 0x2679, 0xd2f: 0x2691,
+ 0xd30: 0x26a9, 0xd31: 0x26c1, 0xd32: 0x26d9, 0xd33: 0x26f1, 0xd34: 0x0a1e, 0xd35: 0x0a3e,
+ 0xd36: 0x0a5e, 0xd37: 0x0a7e, 0xd38: 0x0a9e, 0xd39: 0x0abe, 0xd3a: 0x0ade, 0xd3b: 0x0afe,
+ 0xd3c: 0x0b1e, 0xd3d: 0x270a, 0xd3e: 0x2732, 0xd3f: 0x275a,
+ // Block 0x35, offset 0xd40
+ 0xd40: 0x2782, 0xd41: 0x27aa, 0xd42: 0x27d2, 0xd43: 0x27fa, 0xd44: 0x2822, 0xd45: 0x284a,
+ 0xd46: 0x2872, 0xd47: 0x289a, 0xd48: 0x0040, 0xd49: 0x0040, 0xd4a: 0x0040, 0xd4b: 0x0040,
+ 0xd4c: 0x0040, 0xd4d: 0x0040, 0xd4e: 0x0040, 0xd4f: 0x0040, 0xd50: 0x0040, 0xd51: 0x0040,
+ 0xd52: 0x0040, 0xd53: 0x0040, 0xd54: 0x0040, 0xd55: 0x0040, 0xd56: 0x0040, 0xd57: 0x0040,
+ 0xd58: 0x0040, 0xd59: 0x0040, 0xd5a: 0x0040, 0xd5b: 0x0040, 0xd5c: 0x0b3e, 0xd5d: 0x0b5e,
+ 0xd5e: 0x0b7e, 0xd5f: 0x0b9e, 0xd60: 0x0bbe, 0xd61: 0x0bde, 0xd62: 0x0bfe, 0xd63: 0x0c1e,
+ 0xd64: 0x0c3e, 0xd65: 0x0c5e, 0xd66: 0x0c7e, 0xd67: 0x0c9e, 0xd68: 0x0cbe, 0xd69: 0x0cde,
+ 0xd6a: 0x0cfe, 0xd6b: 0x0d1e, 0xd6c: 0x0d3e, 0xd6d: 0x0d5e, 0xd6e: 0x0d7e, 0xd6f: 0x0d9e,
+ 0xd70: 0x0dbe, 0xd71: 0x0dde, 0xd72: 0x0dfe, 0xd73: 0x0e1e, 0xd74: 0x0e3e, 0xd75: 0x0e5e,
+ 0xd76: 0x0039, 0xd77: 0x0ee9, 0xd78: 0x1159, 0xd79: 0x0ef9, 0xd7a: 0x0f09, 0xd7b: 0x1199,
+ 0xd7c: 0x0f31, 0xd7d: 0x0249, 0xd7e: 0x0f41, 0xd7f: 0x0259,
+ // Block 0x36, offset 0xd80
+ 0xd80: 0x0f51, 0xd81: 0x0359, 0xd82: 0x0f61, 0xd83: 0x0f71, 0xd84: 0x00d9, 0xd85: 0x0f99,
+ 0xd86: 0x2039, 0xd87: 0x0269, 0xd88: 0x01d9, 0xd89: 0x0fa9, 0xd8a: 0x0fb9, 0xd8b: 0x1089,
+ 0xd8c: 0x0279, 0xd8d: 0x0369, 0xd8e: 0x0289, 0xd8f: 0x13d1, 0xd90: 0x0039, 0xd91: 0x0ee9,
+ 0xd92: 0x1159, 0xd93: 0x0ef9, 0xd94: 0x0f09, 0xd95: 0x1199, 0xd96: 0x0f31, 0xd97: 0x0249,
+ 0xd98: 0x0f41, 0xd99: 0x0259, 0xd9a: 0x0f51, 0xd9b: 0x0359, 0xd9c: 0x0f61, 0xd9d: 0x0f71,
+ 0xd9e: 0x00d9, 0xd9f: 0x0f99, 0xda0: 0x2039, 0xda1: 0x0269, 0xda2: 0x01d9, 0xda3: 0x0fa9,
+ 0xda4: 0x0fb9, 0xda5: 0x1089, 0xda6: 0x0279, 0xda7: 0x0369, 0xda8: 0x0289, 0xda9: 0x13d1,
+ 0xdaa: 0x1f41, 0xdab: 0x0018, 0xdac: 0x0018, 0xdad: 0x0018, 0xdae: 0x0018, 0xdaf: 0x0018,
+ 0xdb0: 0x0018, 0xdb1: 0x0018, 0xdb2: 0x0018, 0xdb3: 0x0018, 0xdb4: 0x0018, 0xdb5: 0x0018,
+ 0xdb6: 0x0018, 0xdb7: 0x0018, 0xdb8: 0x0018, 0xdb9: 0x0018, 0xdba: 0x0018, 0xdbb: 0x0018,
+ 0xdbc: 0x0018, 0xdbd: 0x0018, 0xdbe: 0x0018, 0xdbf: 0x0018,
+ // Block 0x37, offset 0xdc0
+ 0xdc0: 0x0008, 0xdc1: 0x0008, 0xdc2: 0x0008, 0xdc3: 0x0008, 0xdc4: 0x0008, 0xdc5: 0x0008,
+ 0xdc6: 0x0008, 0xdc7: 0x0008, 0xdc8: 0x0008, 0xdc9: 0x0008, 0xdca: 0x0008, 0xdcb: 0x0008,
+ 0xdcc: 0x0008, 0xdcd: 0x0008, 0xdce: 0x0008, 0xdcf: 0x0008, 0xdd0: 0x0008, 0xdd1: 0x0008,
+ 0xdd2: 0x0008, 0xdd3: 0x0008, 0xdd4: 0x0008, 0xdd5: 0x0008, 0xdd6: 0x0008, 0xdd7: 0x0008,
+ 0xdd8: 0x0008, 0xdd9: 0x0008, 0xdda: 0x0008, 0xddb: 0x0008, 0xddc: 0x0008, 0xddd: 0x0008,
+ 0xdde: 0x0008, 0xddf: 0x0040, 0xde0: 0xe00d, 0xde1: 0x0008, 0xde2: 0x2971, 0xde3: 0x0ed5,
+ 0xde4: 0x2989, 0xde5: 0x0008, 0xde6: 0x0008, 0xde7: 0xe07d, 0xde8: 0x0008, 0xde9: 0xe01d,
+ 0xdea: 0x0008, 0xdeb: 0xe03d, 0xdec: 0x0008, 0xded: 0x0fe1, 0xdee: 0x1281, 0xdef: 0x0fc9,
+ 0xdf0: 0x1141, 0xdf1: 0x0008, 0xdf2: 0xe00d, 0xdf3: 0x0008, 0xdf4: 0x0008, 0xdf5: 0xe01d,
+ 0xdf6: 0x0008, 0xdf7: 0x0008, 0xdf8: 0x0008, 0xdf9: 0x0008, 0xdfa: 0x0008, 0xdfb: 0x0008,
+ 0xdfc: 0x0259, 0xdfd: 0x1089, 0xdfe: 0x29a1, 0xdff: 0x29b9,
+ // Block 0x38, offset 0xe00
+ 0xe00: 0xe00d, 0xe01: 0x0008, 0xe02: 0xe00d, 0xe03: 0x0008, 0xe04: 0xe00d, 0xe05: 0x0008,
+ 0xe06: 0xe00d, 0xe07: 0x0008, 0xe08: 0xe00d, 0xe09: 0x0008, 0xe0a: 0xe00d, 0xe0b: 0x0008,
+ 0xe0c: 0xe00d, 0xe0d: 0x0008, 0xe0e: 0xe00d, 0xe0f: 0x0008, 0xe10: 0xe00d, 0xe11: 0x0008,
+ 0xe12: 0xe00d, 0xe13: 0x0008, 0xe14: 0xe00d, 0xe15: 0x0008, 0xe16: 0xe00d, 0xe17: 0x0008,
+ 0xe18: 0xe00d, 0xe19: 0x0008, 0xe1a: 0xe00d, 0xe1b: 0x0008, 0xe1c: 0xe00d, 0xe1d: 0x0008,
+ 0xe1e: 0xe00d, 0xe1f: 0x0008, 0xe20: 0xe00d, 0xe21: 0x0008, 0xe22: 0xe00d, 0xe23: 0x0008,
+ 0xe24: 0x0008, 0xe25: 0x0018, 0xe26: 0x0018, 0xe27: 0x0018, 0xe28: 0x0018, 0xe29: 0x0018,
+ 0xe2a: 0x0018, 0xe2b: 0xe03d, 0xe2c: 0x0008, 0xe2d: 0xe01d, 0xe2e: 0x0008, 0xe2f: 0x3308,
+ 0xe30: 0x3308, 0xe31: 0x3308, 0xe32: 0xe00d, 0xe33: 0x0008, 0xe34: 0x0040, 0xe35: 0x0040,
+ 0xe36: 0x0040, 0xe37: 0x0040, 0xe38: 0x0040, 0xe39: 0x0018, 0xe3a: 0x0018, 0xe3b: 0x0018,
+ 0xe3c: 0x0018, 0xe3d: 0x0018, 0xe3e: 0x0018, 0xe3f: 0x0018,
+ // Block 0x39, offset 0xe40
+ 0xe40: 0x2715, 0xe41: 0x2735, 0xe42: 0x2755, 0xe43: 0x2775, 0xe44: 0x2795, 0xe45: 0x27b5,
+ 0xe46: 0x27d5, 0xe47: 0x27f5, 0xe48: 0x2815, 0xe49: 0x2835, 0xe4a: 0x2855, 0xe4b: 0x2875,
+ 0xe4c: 0x2895, 0xe4d: 0x28b5, 0xe4e: 0x28d5, 0xe4f: 0x28f5, 0xe50: 0x2915, 0xe51: 0x2935,
+ 0xe52: 0x2955, 0xe53: 0x2975, 0xe54: 0x2995, 0xe55: 0x29b5, 0xe56: 0x0040, 0xe57: 0x0040,
+ 0xe58: 0x0040, 0xe59: 0x0040, 0xe5a: 0x0040, 0xe5b: 0x0040, 0xe5c: 0x0040, 0xe5d: 0x0040,
+ 0xe5e: 0x0040, 0xe5f: 0x0040, 0xe60: 0x0040, 0xe61: 0x0040, 0xe62: 0x0040, 0xe63: 0x0040,
+ 0xe64: 0x0040, 0xe65: 0x0040, 0xe66: 0x0040, 0xe67: 0x0040, 0xe68: 0x0040, 0xe69: 0x0040,
+ 0xe6a: 0x0040, 0xe6b: 0x0040, 0xe6c: 0x0040, 0xe6d: 0x0040, 0xe6e: 0x0040, 0xe6f: 0x0040,
+ 0xe70: 0x0040, 0xe71: 0x0040, 0xe72: 0x0040, 0xe73: 0x0040, 0xe74: 0x0040, 0xe75: 0x0040,
+ 0xe76: 0x0040, 0xe77: 0x0040, 0xe78: 0x0040, 0xe79: 0x0040, 0xe7a: 0x0040, 0xe7b: 0x0040,
+ 0xe7c: 0x0040, 0xe7d: 0x0040, 0xe7e: 0x0040, 0xe7f: 0x0040,
+ // Block 0x3a, offset 0xe80
+ 0xe80: 0x000a, 0xe81: 0x0018, 0xe82: 0x29d1, 0xe83: 0x0018, 0xe84: 0x0018, 0xe85: 0x0008,
+ 0xe86: 0x0008, 0xe87: 0x0008, 0xe88: 0x0018, 0xe89: 0x0018, 0xe8a: 0x0018, 0xe8b: 0x0018,
+ 0xe8c: 0x0018, 0xe8d: 0x0018, 0xe8e: 0x0018, 0xe8f: 0x0018, 0xe90: 0x0018, 0xe91: 0x0018,
+ 0xe92: 0x0018, 0xe93: 0x0018, 0xe94: 0x0018, 0xe95: 0x0018, 0xe96: 0x0018, 0xe97: 0x0018,
+ 0xe98: 0x0018, 0xe99: 0x0018, 0xe9a: 0x0018, 0xe9b: 0x0018, 0xe9c: 0x0018, 0xe9d: 0x0018,
+ 0xe9e: 0x0018, 0xe9f: 0x0018, 0xea0: 0x0018, 0xea1: 0x0018, 0xea2: 0x0018, 0xea3: 0x0018,
+ 0xea4: 0x0018, 0xea5: 0x0018, 0xea6: 0x0018, 0xea7: 0x0018, 0xea8: 0x0018, 0xea9: 0x0018,
+ 0xeaa: 0x3308, 0xeab: 0x3308, 0xeac: 0x3308, 0xead: 0x3308, 0xeae: 0x3018, 0xeaf: 0x3018,
+ 0xeb0: 0x0018, 0xeb1: 0x0018, 0xeb2: 0x0018, 0xeb3: 0x0018, 0xeb4: 0x0018, 0xeb5: 0x0018,
+ 0xeb6: 0xe125, 0xeb7: 0x0018, 0xeb8: 0x29d5, 0xeb9: 0x29f5, 0xeba: 0x2a15, 0xebb: 0x0018,
+ 0xebc: 0x0008, 0xebd: 0x0018, 0xebe: 0x0018, 0xebf: 0x0018,
+ // Block 0x3b, offset 0xec0
+ 0xec0: 0x2b55, 0xec1: 0x2b75, 0xec2: 0x2b95, 0xec3: 0x2bb5, 0xec4: 0x2bd5, 0xec5: 0x2bf5,
+ 0xec6: 0x2bf5, 0xec7: 0x2bf5, 0xec8: 0x2c15, 0xec9: 0x2c15, 0xeca: 0x2c15, 0xecb: 0x2c15,
+ 0xecc: 0x2c35, 0xecd: 0x2c35, 0xece: 0x2c35, 0xecf: 0x2c55, 0xed0: 0x2c75, 0xed1: 0x2c75,
+ 0xed2: 0x2a95, 0xed3: 0x2a95, 0xed4: 0x2c75, 0xed5: 0x2c75, 0xed6: 0x2c95, 0xed7: 0x2c95,
+ 0xed8: 0x2c75, 0xed9: 0x2c75, 0xeda: 0x2a95, 0xedb: 0x2a95, 0xedc: 0x2c75, 0xedd: 0x2c75,
+ 0xede: 0x2c55, 0xedf: 0x2c55, 0xee0: 0x2cb5, 0xee1: 0x2cb5, 0xee2: 0x2cd5, 0xee3: 0x2cd5,
+ 0xee4: 0x0040, 0xee5: 0x2cf5, 0xee6: 0x2d15, 0xee7: 0x2d35, 0xee8: 0x2d35, 0xee9: 0x2d55,
+ 0xeea: 0x2d75, 0xeeb: 0x2d95, 0xeec: 0x2db5, 0xeed: 0x2dd5, 0xeee: 0x2df5, 0xeef: 0x2e15,
+ 0xef0: 0x2e35, 0xef1: 0x2e55, 0xef2: 0x2e55, 0xef3: 0x2e75, 0xef4: 0x2e95, 0xef5: 0x2e95,
+ 0xef6: 0x2eb5, 0xef7: 0x2ed5, 0xef8: 0x2e75, 0xef9: 0x2ef5, 0xefa: 0x2f15, 0xefb: 0x2ef5,
+ 0xefc: 0x2e75, 0xefd: 0x2f35, 0xefe: 0x2f55, 0xeff: 0x2f75,
+ // Block 0x3c, offset 0xf00
+ 0xf00: 0x2f95, 0xf01: 0x2fb5, 0xf02: 0x2d15, 0xf03: 0x2cf5, 0xf04: 0x2fd5, 0xf05: 0x2ff5,
+ 0xf06: 0x3015, 0xf07: 0x3035, 0xf08: 0x3055, 0xf09: 0x3075, 0xf0a: 0x3095, 0xf0b: 0x30b5,
+ 0xf0c: 0x30d5, 0xf0d: 0x30f5, 0xf0e: 0x3115, 0xf0f: 0x0040, 0xf10: 0x0018, 0xf11: 0x0018,
+ 0xf12: 0x3135, 0xf13: 0x3155, 0xf14: 0x3175, 0xf15: 0x3195, 0xf16: 0x31b5, 0xf17: 0x31d5,
+ 0xf18: 0x31f5, 0xf19: 0x3215, 0xf1a: 0x3235, 0xf1b: 0x3255, 0xf1c: 0x3175, 0xf1d: 0x3275,
+ 0xf1e: 0x3295, 0xf1f: 0x32b5, 0xf20: 0x0008, 0xf21: 0x0008, 0xf22: 0x0008, 0xf23: 0x0008,
+ 0xf24: 0x0008, 0xf25: 0x0008, 0xf26: 0x0008, 0xf27: 0x0008, 0xf28: 0x0008, 0xf29: 0x0008,
+ 0xf2a: 0x0008, 0xf2b: 0x0008, 0xf2c: 0x0008, 0xf2d: 0x0008, 0xf2e: 0x0008, 0xf2f: 0x0008,
+ 0xf30: 0x0008, 0xf31: 0x0008, 0xf32: 0x0008, 0xf33: 0x0008, 0xf34: 0x0008, 0xf35: 0x0008,
+ 0xf36: 0x0008, 0xf37: 0x0008, 0xf38: 0x0008, 0xf39: 0x0008, 0xf3a: 0x0008, 0xf3b: 0x0008,
+ 0xf3c: 0x0008, 0xf3d: 0x0008, 0xf3e: 0x0008, 0xf3f: 0x0008,
+ // Block 0x3d, offset 0xf40
+ 0xf40: 0x36a2, 0xf41: 0x36d2, 0xf42: 0x3702, 0xf43: 0x3732, 0xf44: 0x32d5, 0xf45: 0x32f5,
+ 0xf46: 0x3315, 0xf47: 0x3335, 0xf48: 0x0018, 0xf49: 0x0018, 0xf4a: 0x0018, 0xf4b: 0x0018,
+ 0xf4c: 0x0018, 0xf4d: 0x0018, 0xf4e: 0x0018, 0xf4f: 0x0018, 0xf50: 0x3355, 0xf51: 0x3761,
+ 0xf52: 0x3779, 0xf53: 0x3791, 0xf54: 0x37a9, 0xf55: 0x37c1, 0xf56: 0x37d9, 0xf57: 0x37f1,
+ 0xf58: 0x3809, 0xf59: 0x3821, 0xf5a: 0x3839, 0xf5b: 0x3851, 0xf5c: 0x3869, 0xf5d: 0x3881,
+ 0xf5e: 0x3899, 0xf5f: 0x38b1, 0xf60: 0x3375, 0xf61: 0x3395, 0xf62: 0x33b5, 0xf63: 0x33d5,
+ 0xf64: 0x33f5, 0xf65: 0x33f5, 0xf66: 0x3415, 0xf67: 0x3435, 0xf68: 0x3455, 0xf69: 0x3475,
+ 0xf6a: 0x3495, 0xf6b: 0x34b5, 0xf6c: 0x34d5, 0xf6d: 0x34f5, 0xf6e: 0x3515, 0xf6f: 0x3535,
+ 0xf70: 0x3555, 0xf71: 0x3575, 0xf72: 0x3595, 0xf73: 0x35b5, 0xf74: 0x35d5, 0xf75: 0x35f5,
+ 0xf76: 0x3615, 0xf77: 0x3635, 0xf78: 0x3655, 0xf79: 0x3675, 0xf7a: 0x3695, 0xf7b: 0x36b5,
+ 0xf7c: 0x38c9, 0xf7d: 0x3901, 0xf7e: 0x36d5, 0xf7f: 0x0018,
+ // Block 0x3e, offset 0xf80
+ 0xf80: 0x36f5, 0xf81: 0x3715, 0xf82: 0x3735, 0xf83: 0x3755, 0xf84: 0x3775, 0xf85: 0x3795,
+ 0xf86: 0x37b5, 0xf87: 0x37d5, 0xf88: 0x37f5, 0xf89: 0x3815, 0xf8a: 0x3835, 0xf8b: 0x3855,
+ 0xf8c: 0x3875, 0xf8d: 0x3895, 0xf8e: 0x38b5, 0xf8f: 0x38d5, 0xf90: 0x38f5, 0xf91: 0x3915,
+ 0xf92: 0x3935, 0xf93: 0x3955, 0xf94: 0x3975, 0xf95: 0x3995, 0xf96: 0x39b5, 0xf97: 0x39d5,
+ 0xf98: 0x39f5, 0xf99: 0x3a15, 0xf9a: 0x3a35, 0xf9b: 0x3a55, 0xf9c: 0x3a75, 0xf9d: 0x3a95,
+ 0xf9e: 0x3ab5, 0xf9f: 0x3ad5, 0xfa0: 0x3af5, 0xfa1: 0x3b15, 0xfa2: 0x3b35, 0xfa3: 0x3b55,
+ 0xfa4: 0x3b75, 0xfa5: 0x3b95, 0xfa6: 0x1295, 0xfa7: 0x3bb5, 0xfa8: 0x3bd5, 0xfa9: 0x3bf5,
+ 0xfaa: 0x3c15, 0xfab: 0x3c35, 0xfac: 0x3c55, 0xfad: 0x3c75, 0xfae: 0x23b5, 0xfaf: 0x3c95,
+ 0xfb0: 0x3cb5, 0xfb1: 0x3939, 0xfb2: 0x3951, 0xfb3: 0x3969, 0xfb4: 0x3981, 0xfb5: 0x3999,
+ 0xfb6: 0x39b1, 0xfb7: 0x39c9, 0xfb8: 0x39e1, 0xfb9: 0x39f9, 0xfba: 0x3a11, 0xfbb: 0x3a29,
+ 0xfbc: 0x3a41, 0xfbd: 0x3a59, 0xfbe: 0x3a71, 0xfbf: 0x3a89,
+ // Block 0x3f, offset 0xfc0
+ 0xfc0: 0x3aa1, 0xfc1: 0x3ac9, 0xfc2: 0x3af1, 0xfc3: 0x3b19, 0xfc4: 0x3b41, 0xfc5: 0x3b69,
+ 0xfc6: 0x3b91, 0xfc7: 0x3bb9, 0xfc8: 0x3be1, 0xfc9: 0x3c09, 0xfca: 0x3c39, 0xfcb: 0x3c69,
+ 0xfcc: 0x3c99, 0xfcd: 0x3cd5, 0xfce: 0x3cb1, 0xfcf: 0x3cf5, 0xfd0: 0x3d15, 0xfd1: 0x3d2d,
+ 0xfd2: 0x3d45, 0xfd3: 0x3d5d, 0xfd4: 0x3d75, 0xfd5: 0x3d75, 0xfd6: 0x3d5d, 0xfd7: 0x3d8d,
+ 0xfd8: 0x07d5, 0xfd9: 0x3da5, 0xfda: 0x3dbd, 0xfdb: 0x3dd5, 0xfdc: 0x3ded, 0xfdd: 0x3e05,
+ 0xfde: 0x3e1d, 0xfdf: 0x3e35, 0xfe0: 0x3e4d, 0xfe1: 0x3e65, 0xfe2: 0x3e7d, 0xfe3: 0x3e95,
+ 0xfe4: 0x3ead, 0xfe5: 0x3ead, 0xfe6: 0x3ec5, 0xfe7: 0x3ec5, 0xfe8: 0x3edd, 0xfe9: 0x3edd,
+ 0xfea: 0x3ef5, 0xfeb: 0x3f0d, 0xfec: 0x3f25, 0xfed: 0x3f3d, 0xfee: 0x3f55, 0xfef: 0x3f55,
+ 0xff0: 0x3f6d, 0xff1: 0x3f6d, 0xff2: 0x3f6d, 0xff3: 0x3f85, 0xff4: 0x3f9d, 0xff5: 0x3fb5,
+ 0xff6: 0x3fcd, 0xff7: 0x3fb5, 0xff8: 0x3fe5, 0xff9: 0x3ffd, 0xffa: 0x3f85, 0xffb: 0x4015,
+ 0xffc: 0x402d, 0xffd: 0x402d, 0xffe: 0x402d, 0xfff: 0x3cc9,
+ // Block 0x40, offset 0x1000
+ 0x1000: 0x3d01, 0x1001: 0x3d69, 0x1002: 0x3dd1, 0x1003: 0x3e39, 0x1004: 0x3e89, 0x1005: 0x3ef1,
+ 0x1006: 0x3f41, 0x1007: 0x3f91, 0x1008: 0x4011, 0x1009: 0x4079, 0x100a: 0x40c9, 0x100b: 0x4119,
+ 0x100c: 0x4169, 0x100d: 0x41d1, 0x100e: 0x4239, 0x100f: 0x4289, 0x1010: 0x42d9, 0x1011: 0x4311,
+ 0x1012: 0x4361, 0x1013: 0x43c9, 0x1014: 0x4431, 0x1015: 0x4469, 0x1016: 0x44e9, 0x1017: 0x4581,
+ 0x1018: 0x4601, 0x1019: 0x4651, 0x101a: 0x46d1, 0x101b: 0x4751, 0x101c: 0x47b9, 0x101d: 0x4809,
+ 0x101e: 0x4859, 0x101f: 0x48a9, 0x1020: 0x4911, 0x1021: 0x4991, 0x1022: 0x49f9, 0x1023: 0x4a49,
+ 0x1024: 0x4a99, 0x1025: 0x4ae9, 0x1026: 0x4b21, 0x1027: 0x4b59, 0x1028: 0x4b91, 0x1029: 0x4bc9,
+ 0x102a: 0x4c19, 0x102b: 0x4c69, 0x102c: 0x4ce9, 0x102d: 0x4d39, 0x102e: 0x4da1, 0x102f: 0x4e21,
+ 0x1030: 0x4e71, 0x1031: 0x4ea9, 0x1032: 0x4ee1, 0x1033: 0x4f61, 0x1034: 0x4fc9, 0x1035: 0x5049,
+ 0x1036: 0x5099, 0x1037: 0x5119, 0x1038: 0x5151, 0x1039: 0x51a1, 0x103a: 0x51f1, 0x103b: 0x5241,
+ 0x103c: 0x5291, 0x103d: 0x52e1, 0x103e: 0x5349, 0x103f: 0x5399,
+ // Block 0x41, offset 0x1040
+ 0x1040: 0x53d1, 0x1041: 0x5421, 0x1042: 0x5471, 0x1043: 0x54c1, 0x1044: 0x5529, 0x1045: 0x5579,
+ 0x1046: 0x55c9, 0x1047: 0x5619, 0x1048: 0x5699, 0x1049: 0x5701, 0x104a: 0x5739, 0x104b: 0x57b9,
+ 0x104c: 0x57f1, 0x104d: 0x5859, 0x104e: 0x58c1, 0x104f: 0x5911, 0x1050: 0x5961, 0x1051: 0x59b1,
+ 0x1052: 0x5a19, 0x1053: 0x5a51, 0x1054: 0x5aa1, 0x1055: 0x5b09, 0x1056: 0x5b41, 0x1057: 0x5bc1,
+ 0x1058: 0x5c11, 0x1059: 0x5c39, 0x105a: 0x5c61, 0x105b: 0x5c89, 0x105c: 0x5cb1, 0x105d: 0x5cd9,
+ 0x105e: 0x5d01, 0x105f: 0x5d29, 0x1060: 0x5d51, 0x1061: 0x5d79, 0x1062: 0x5da1, 0x1063: 0x5dd1,
+ 0x1064: 0x5e01, 0x1065: 0x5e31, 0x1066: 0x5e61, 0x1067: 0x5e91, 0x1068: 0x5ec1, 0x1069: 0x5ef1,
+ 0x106a: 0x5f21, 0x106b: 0x5f51, 0x106c: 0x5f81, 0x106d: 0x5fb1, 0x106e: 0x5fe1, 0x106f: 0x6011,
+ 0x1070: 0x6041, 0x1071: 0x4045, 0x1072: 0x6071, 0x1073: 0x6089, 0x1074: 0x4065, 0x1075: 0x60a1,
+ 0x1076: 0x60b9, 0x1077: 0x60d1, 0x1078: 0x4085, 0x1079: 0x4085, 0x107a: 0x60e9, 0x107b: 0x6101,
+ 0x107c: 0x6139, 0x107d: 0x6171, 0x107e: 0x61a9, 0x107f: 0x61e1,
+ // Block 0x42, offset 0x1080
+ 0x1080: 0x6249, 0x1081: 0x6261, 0x1082: 0x40a5, 0x1083: 0x6279, 0x1084: 0x6291, 0x1085: 0x62a9,
+ 0x1086: 0x62c1, 0x1087: 0x62d9, 0x1088: 0x40c5, 0x1089: 0x62f1, 0x108a: 0x6319, 0x108b: 0x6331,
+ 0x108c: 0x40e5, 0x108d: 0x40e5, 0x108e: 0x6349, 0x108f: 0x6361, 0x1090: 0x6379, 0x1091: 0x4105,
+ 0x1092: 0x4125, 0x1093: 0x4145, 0x1094: 0x4165, 0x1095: 0x4185, 0x1096: 0x6391, 0x1097: 0x63a9,
+ 0x1098: 0x63c1, 0x1099: 0x63d9, 0x109a: 0x63f1, 0x109b: 0x41a5, 0x109c: 0x6409, 0x109d: 0x6421,
+ 0x109e: 0x6439, 0x109f: 0x41c5, 0x10a0: 0x41e5, 0x10a1: 0x6451, 0x10a2: 0x4205, 0x10a3: 0x4225,
+ 0x10a4: 0x4245, 0x10a5: 0x6469, 0x10a6: 0x4265, 0x10a7: 0x6481, 0x10a8: 0x64b1, 0x10a9: 0x6249,
+ 0x10aa: 0x4285, 0x10ab: 0x42a5, 0x10ac: 0x42c5, 0x10ad: 0x42e5, 0x10ae: 0x64e9, 0x10af: 0x6529,
+ 0x10b0: 0x6571, 0x10b1: 0x6589, 0x10b2: 0x4305, 0x10b3: 0x65a1, 0x10b4: 0x65b9, 0x10b5: 0x65d1,
+ 0x10b6: 0x4325, 0x10b7: 0x65e9, 0x10b8: 0x6601, 0x10b9: 0x65e9, 0x10ba: 0x6619, 0x10bb: 0x6631,
+ 0x10bc: 0x4345, 0x10bd: 0x6649, 0x10be: 0x6661, 0x10bf: 0x6649,
+ // Block 0x43, offset 0x10c0
+ 0x10c0: 0x4365, 0x10c1: 0x4385, 0x10c2: 0x0040, 0x10c3: 0x6679, 0x10c4: 0x6691, 0x10c5: 0x66a9,
+ 0x10c6: 0x66c1, 0x10c7: 0x0040, 0x10c8: 0x66f9, 0x10c9: 0x6711, 0x10ca: 0x6729, 0x10cb: 0x6741,
+ 0x10cc: 0x6759, 0x10cd: 0x6771, 0x10ce: 0x6439, 0x10cf: 0x6789, 0x10d0: 0x67a1, 0x10d1: 0x67b9,
+ 0x10d2: 0x43a5, 0x10d3: 0x67d1, 0x10d4: 0x62c1, 0x10d5: 0x43c5, 0x10d6: 0x43e5, 0x10d7: 0x67e9,
+ 0x10d8: 0x0040, 0x10d9: 0x4405, 0x10da: 0x6801, 0x10db: 0x6819, 0x10dc: 0x6831, 0x10dd: 0x6849,
+ 0x10de: 0x6861, 0x10df: 0x6891, 0x10e0: 0x68c1, 0x10e1: 0x68e9, 0x10e2: 0x6911, 0x10e3: 0x6939,
+ 0x10e4: 0x6961, 0x10e5: 0x6989, 0x10e6: 0x69b1, 0x10e7: 0x69d9, 0x10e8: 0x6a01, 0x10e9: 0x6a29,
+ 0x10ea: 0x6a59, 0x10eb: 0x6a89, 0x10ec: 0x6ab9, 0x10ed: 0x6ae9, 0x10ee: 0x6b19, 0x10ef: 0x6b49,
+ 0x10f0: 0x6b79, 0x10f1: 0x6ba9, 0x10f2: 0x6bd9, 0x10f3: 0x6c09, 0x10f4: 0x6c39, 0x10f5: 0x6c69,
+ 0x10f6: 0x6c99, 0x10f7: 0x6cc9, 0x10f8: 0x6cf9, 0x10f9: 0x6d29, 0x10fa: 0x6d59, 0x10fb: 0x6d89,
+ 0x10fc: 0x6db9, 0x10fd: 0x6de9, 0x10fe: 0x6e19, 0x10ff: 0x4425,
+ // Block 0x44, offset 0x1100
+ 0x1100: 0xe00d, 0x1101: 0x0008, 0x1102: 0xe00d, 0x1103: 0x0008, 0x1104: 0xe00d, 0x1105: 0x0008,
+ 0x1106: 0xe00d, 0x1107: 0x0008, 0x1108: 0xe00d, 0x1109: 0x0008, 0x110a: 0xe00d, 0x110b: 0x0008,
+ 0x110c: 0xe00d, 0x110d: 0x0008, 0x110e: 0xe00d, 0x110f: 0x0008, 0x1110: 0xe00d, 0x1111: 0x0008,
+ 0x1112: 0xe00d, 0x1113: 0x0008, 0x1114: 0xe00d, 0x1115: 0x0008, 0x1116: 0xe00d, 0x1117: 0x0008,
+ 0x1118: 0xe00d, 0x1119: 0x0008, 0x111a: 0xe00d, 0x111b: 0x0008, 0x111c: 0xe00d, 0x111d: 0x0008,
+ 0x111e: 0xe00d, 0x111f: 0x0008, 0x1120: 0xe00d, 0x1121: 0x0008, 0x1122: 0xe00d, 0x1123: 0x0008,
+ 0x1124: 0xe00d, 0x1125: 0x0008, 0x1126: 0xe00d, 0x1127: 0x0008, 0x1128: 0xe00d, 0x1129: 0x0008,
+ 0x112a: 0xe00d, 0x112b: 0x0008, 0x112c: 0xe00d, 0x112d: 0x0008, 0x112e: 0x0008, 0x112f: 0x3308,
+ 0x1130: 0x3318, 0x1131: 0x3318, 0x1132: 0x3318, 0x1133: 0x0018, 0x1134: 0x3308, 0x1135: 0x3308,
+ 0x1136: 0x3308, 0x1137: 0x3308, 0x1138: 0x3308, 0x1139: 0x3308, 0x113a: 0x3308, 0x113b: 0x3308,
+ 0x113c: 0x3308, 0x113d: 0x3308, 0x113e: 0x0018, 0x113f: 0x0008,
+ // Block 0x45, offset 0x1140
+ 0x1140: 0xe00d, 0x1141: 0x0008, 0x1142: 0xe00d, 0x1143: 0x0008, 0x1144: 0xe00d, 0x1145: 0x0008,
+ 0x1146: 0xe00d, 0x1147: 0x0008, 0x1148: 0xe00d, 0x1149: 0x0008, 0x114a: 0xe00d, 0x114b: 0x0008,
+ 0x114c: 0xe00d, 0x114d: 0x0008, 0x114e: 0xe00d, 0x114f: 0x0008, 0x1150: 0xe00d, 0x1151: 0x0008,
+ 0x1152: 0xe00d, 0x1153: 0x0008, 0x1154: 0xe00d, 0x1155: 0x0008, 0x1156: 0xe00d, 0x1157: 0x0008,
+ 0x1158: 0xe00d, 0x1159: 0x0008, 0x115a: 0xe00d, 0x115b: 0x0008, 0x115c: 0x0ea1, 0x115d: 0x6e49,
+ 0x115e: 0x3308, 0x115f: 0x3308, 0x1160: 0x0008, 0x1161: 0x0008, 0x1162: 0x0008, 0x1163: 0x0008,
+ 0x1164: 0x0008, 0x1165: 0x0008, 0x1166: 0x0008, 0x1167: 0x0008, 0x1168: 0x0008, 0x1169: 0x0008,
+ 0x116a: 0x0008, 0x116b: 0x0008, 0x116c: 0x0008, 0x116d: 0x0008, 0x116e: 0x0008, 0x116f: 0x0008,
+ 0x1170: 0x0008, 0x1171: 0x0008, 0x1172: 0x0008, 0x1173: 0x0008, 0x1174: 0x0008, 0x1175: 0x0008,
+ 0x1176: 0x0008, 0x1177: 0x0008, 0x1178: 0x0008, 0x1179: 0x0008, 0x117a: 0x0008, 0x117b: 0x0008,
+ 0x117c: 0x0008, 0x117d: 0x0008, 0x117e: 0x0008, 0x117f: 0x0008,
+ // Block 0x46, offset 0x1180
+ 0x1180: 0x0018, 0x1181: 0x0018, 0x1182: 0x0018, 0x1183: 0x0018, 0x1184: 0x0018, 0x1185: 0x0018,
+ 0x1186: 0x0018, 0x1187: 0x0018, 0x1188: 0x0018, 0x1189: 0x0018, 0x118a: 0x0018, 0x118b: 0x0018,
+ 0x118c: 0x0018, 0x118d: 0x0018, 0x118e: 0x0018, 0x118f: 0x0018, 0x1190: 0x0018, 0x1191: 0x0018,
+ 0x1192: 0x0018, 0x1193: 0x0018, 0x1194: 0x0018, 0x1195: 0x0018, 0x1196: 0x0018, 0x1197: 0x0008,
+ 0x1198: 0x0008, 0x1199: 0x0008, 0x119a: 0x0008, 0x119b: 0x0008, 0x119c: 0x0008, 0x119d: 0x0008,
+ 0x119e: 0x0008, 0x119f: 0x0008, 0x11a0: 0x0018, 0x11a1: 0x0018, 0x11a2: 0xe00d, 0x11a3: 0x0008,
+ 0x11a4: 0xe00d, 0x11a5: 0x0008, 0x11a6: 0xe00d, 0x11a7: 0x0008, 0x11a8: 0xe00d, 0x11a9: 0x0008,
+ 0x11aa: 0xe00d, 0x11ab: 0x0008, 0x11ac: 0xe00d, 0x11ad: 0x0008, 0x11ae: 0xe00d, 0x11af: 0x0008,
+ 0x11b0: 0x0008, 0x11b1: 0x0008, 0x11b2: 0xe00d, 0x11b3: 0x0008, 0x11b4: 0xe00d, 0x11b5: 0x0008,
+ 0x11b6: 0xe00d, 0x11b7: 0x0008, 0x11b8: 0xe00d, 0x11b9: 0x0008, 0x11ba: 0xe00d, 0x11bb: 0x0008,
+ 0x11bc: 0xe00d, 0x11bd: 0x0008, 0x11be: 0xe00d, 0x11bf: 0x0008,
+ // Block 0x47, offset 0x11c0
+ 0x11c0: 0xe00d, 0x11c1: 0x0008, 0x11c2: 0xe00d, 0x11c3: 0x0008, 0x11c4: 0xe00d, 0x11c5: 0x0008,
+ 0x11c6: 0xe00d, 0x11c7: 0x0008, 0x11c8: 0xe00d, 0x11c9: 0x0008, 0x11ca: 0xe00d, 0x11cb: 0x0008,
+ 0x11cc: 0xe00d, 0x11cd: 0x0008, 0x11ce: 0xe00d, 0x11cf: 0x0008, 0x11d0: 0xe00d, 0x11d1: 0x0008,
+ 0x11d2: 0xe00d, 0x11d3: 0x0008, 0x11d4: 0xe00d, 0x11d5: 0x0008, 0x11d6: 0xe00d, 0x11d7: 0x0008,
+ 0x11d8: 0xe00d, 0x11d9: 0x0008, 0x11da: 0xe00d, 0x11db: 0x0008, 0x11dc: 0xe00d, 0x11dd: 0x0008,
+ 0x11de: 0xe00d, 0x11df: 0x0008, 0x11e0: 0xe00d, 0x11e1: 0x0008, 0x11e2: 0xe00d, 0x11e3: 0x0008,
+ 0x11e4: 0xe00d, 0x11e5: 0x0008, 0x11e6: 0xe00d, 0x11e7: 0x0008, 0x11e8: 0xe00d, 0x11e9: 0x0008,
+ 0x11ea: 0xe00d, 0x11eb: 0x0008, 0x11ec: 0xe00d, 0x11ed: 0x0008, 0x11ee: 0xe00d, 0x11ef: 0x0008,
+ 0x11f0: 0xe0fd, 0x11f1: 0x0008, 0x11f2: 0x0008, 0x11f3: 0x0008, 0x11f4: 0x0008, 0x11f5: 0x0008,
+ 0x11f6: 0x0008, 0x11f7: 0x0008, 0x11f8: 0x0008, 0x11f9: 0xe01d, 0x11fa: 0x0008, 0x11fb: 0xe03d,
+ 0x11fc: 0x0008, 0x11fd: 0x4445, 0x11fe: 0xe00d, 0x11ff: 0x0008,
+ // Block 0x48, offset 0x1200
+ 0x1200: 0xe00d, 0x1201: 0x0008, 0x1202: 0xe00d, 0x1203: 0x0008, 0x1204: 0xe00d, 0x1205: 0x0008,
+ 0x1206: 0xe00d, 0x1207: 0x0008, 0x1208: 0x0008, 0x1209: 0x0018, 0x120a: 0x0018, 0x120b: 0xe03d,
+ 0x120c: 0x0008, 0x120d: 0x11d9, 0x120e: 0x0008, 0x120f: 0x0008, 0x1210: 0xe00d, 0x1211: 0x0008,
+ 0x1212: 0xe00d, 0x1213: 0x0008, 0x1214: 0x0008, 0x1215: 0x0008, 0x1216: 0xe00d, 0x1217: 0x0008,
+ 0x1218: 0xe00d, 0x1219: 0x0008, 0x121a: 0xe00d, 0x121b: 0x0008, 0x121c: 0xe00d, 0x121d: 0x0008,
+ 0x121e: 0xe00d, 0x121f: 0x0008, 0x1220: 0xe00d, 0x1221: 0x0008, 0x1222: 0xe00d, 0x1223: 0x0008,
+ 0x1224: 0xe00d, 0x1225: 0x0008, 0x1226: 0xe00d, 0x1227: 0x0008, 0x1228: 0xe00d, 0x1229: 0x0008,
+ 0x122a: 0x6e61, 0x122b: 0x1029, 0x122c: 0x11c1, 0x122d: 0x6e79, 0x122e: 0x1221, 0x122f: 0x0008,
+ 0x1230: 0x6e91, 0x1231: 0x6ea9, 0x1232: 0x1239, 0x1233: 0x4465, 0x1234: 0xe00d, 0x1235: 0x0008,
+ 0x1236: 0xe00d, 0x1237: 0x0008, 0x1238: 0xe00d, 0x1239: 0x0008, 0x123a: 0xe00d, 0x123b: 0x0008,
+ 0x123c: 0xe00d, 0x123d: 0x0008, 0x123e: 0xe00d, 0x123f: 0x0008,
+ // Block 0x49, offset 0x1240
+ 0x1240: 0x650d, 0x1241: 0x652d, 0x1242: 0x654d, 0x1243: 0x656d, 0x1244: 0x658d, 0x1245: 0x65ad,
+ 0x1246: 0x65cd, 0x1247: 0x65ed, 0x1248: 0x660d, 0x1249: 0x662d, 0x124a: 0x664d, 0x124b: 0x666d,
+ 0x124c: 0x668d, 0x124d: 0x66ad, 0x124e: 0x0008, 0x124f: 0x0008, 0x1250: 0x66cd, 0x1251: 0x0008,
+ 0x1252: 0x66ed, 0x1253: 0x0008, 0x1254: 0x0008, 0x1255: 0x670d, 0x1256: 0x672d, 0x1257: 0x674d,
+ 0x1258: 0x676d, 0x1259: 0x678d, 0x125a: 0x67ad, 0x125b: 0x67cd, 0x125c: 0x67ed, 0x125d: 0x680d,
+ 0x125e: 0x682d, 0x125f: 0x0008, 0x1260: 0x684d, 0x1261: 0x0008, 0x1262: 0x686d, 0x1263: 0x0008,
+ 0x1264: 0x0008, 0x1265: 0x688d, 0x1266: 0x68ad, 0x1267: 0x0008, 0x1268: 0x0008, 0x1269: 0x0008,
+ 0x126a: 0x68cd, 0x126b: 0x68ed, 0x126c: 0x690d, 0x126d: 0x692d, 0x126e: 0x694d, 0x126f: 0x696d,
+ 0x1270: 0x698d, 0x1271: 0x69ad, 0x1272: 0x69cd, 0x1273: 0x69ed, 0x1274: 0x6a0d, 0x1275: 0x6a2d,
+ 0x1276: 0x6a4d, 0x1277: 0x6a6d, 0x1278: 0x6a8d, 0x1279: 0x6aad, 0x127a: 0x6acd, 0x127b: 0x6aed,
+ 0x127c: 0x6b0d, 0x127d: 0x6b2d, 0x127e: 0x6b4d, 0x127f: 0x6b6d,
+ // Block 0x4a, offset 0x1280
+ 0x1280: 0x7acd, 0x1281: 0x7aed, 0x1282: 0x7b0d, 0x1283: 0x7b2d, 0x1284: 0x7b4d, 0x1285: 0x7b6d,
+ 0x1286: 0x7b8d, 0x1287: 0x7bad, 0x1288: 0x7bcd, 0x1289: 0x7bed, 0x128a: 0x7c0d, 0x128b: 0x7c2d,
+ 0x128c: 0x7c4d, 0x128d: 0x7c6d, 0x128e: 0x7c8d, 0x128f: 0x6f19, 0x1290: 0x6f41, 0x1291: 0x6f69,
+ 0x1292: 0x7cad, 0x1293: 0x7ccd, 0x1294: 0x7ced, 0x1295: 0x6f91, 0x1296: 0x6fb9, 0x1297: 0x6fe1,
+ 0x1298: 0x7d0d, 0x1299: 0x7d2d, 0x129a: 0x0040, 0x129b: 0x0040, 0x129c: 0x0040, 0x129d: 0x0040,
+ 0x129e: 0x0040, 0x129f: 0x0040, 0x12a0: 0x0040, 0x12a1: 0x0040, 0x12a2: 0x0040, 0x12a3: 0x0040,
+ 0x12a4: 0x0040, 0x12a5: 0x0040, 0x12a6: 0x0040, 0x12a7: 0x0040, 0x12a8: 0x0040, 0x12a9: 0x0040,
+ 0x12aa: 0x0040, 0x12ab: 0x0040, 0x12ac: 0x0040, 0x12ad: 0x0040, 0x12ae: 0x0040, 0x12af: 0x0040,
+ 0x12b0: 0x0040, 0x12b1: 0x0040, 0x12b2: 0x0040, 0x12b3: 0x0040, 0x12b4: 0x0040, 0x12b5: 0x0040,
+ 0x12b6: 0x0040, 0x12b7: 0x0040, 0x12b8: 0x0040, 0x12b9: 0x0040, 0x12ba: 0x0040, 0x12bb: 0x0040,
+ 0x12bc: 0x0040, 0x12bd: 0x0040, 0x12be: 0x0040, 0x12bf: 0x0040,
+ // Block 0x4b, offset 0x12c0
+ 0x12c0: 0x7009, 0x12c1: 0x7021, 0x12c2: 0x7039, 0x12c3: 0x7d4d, 0x12c4: 0x7d6d, 0x12c5: 0x7051,
+ 0x12c6: 0x7051, 0x12c7: 0x0040, 0x12c8: 0x0040, 0x12c9: 0x0040, 0x12ca: 0x0040, 0x12cb: 0x0040,
+ 0x12cc: 0x0040, 0x12cd: 0x0040, 0x12ce: 0x0040, 0x12cf: 0x0040, 0x12d0: 0x0040, 0x12d1: 0x0040,
+ 0x12d2: 0x0040, 0x12d3: 0x7069, 0x12d4: 0x7091, 0x12d5: 0x70b9, 0x12d6: 0x70e1, 0x12d7: 0x7109,
+ 0x12d8: 0x0040, 0x12d9: 0x0040, 0x12da: 0x0040, 0x12db: 0x0040, 0x12dc: 0x0040, 0x12dd: 0x7131,
+ 0x12de: 0x3308, 0x12df: 0x7159, 0x12e0: 0x7181, 0x12e1: 0x20a9, 0x12e2: 0x20f1, 0x12e3: 0x7199,
+ 0x12e4: 0x71b1, 0x12e5: 0x71c9, 0x12e6: 0x71e1, 0x12e7: 0x71f9, 0x12e8: 0x7211, 0x12e9: 0x1fb2,
+ 0x12ea: 0x7229, 0x12eb: 0x7251, 0x12ec: 0x7279, 0x12ed: 0x72b1, 0x12ee: 0x72e9, 0x12ef: 0x7311,
+ 0x12f0: 0x7339, 0x12f1: 0x7361, 0x12f2: 0x7389, 0x12f3: 0x73b1, 0x12f4: 0x73d9, 0x12f5: 0x7401,
+ 0x12f6: 0x7429, 0x12f7: 0x0040, 0x12f8: 0x7451, 0x12f9: 0x7479, 0x12fa: 0x74a1, 0x12fb: 0x74c9,
+ 0x12fc: 0x74f1, 0x12fd: 0x0040, 0x12fe: 0x7519, 0x12ff: 0x0040,
+ // Block 0x4c, offset 0x1300
+ 0x1300: 0x7541, 0x1301: 0x7569, 0x1302: 0x0040, 0x1303: 0x7591, 0x1304: 0x75b9, 0x1305: 0x0040,
+ 0x1306: 0x75e1, 0x1307: 0x7609, 0x1308: 0x7631, 0x1309: 0x7659, 0x130a: 0x7681, 0x130b: 0x76a9,
+ 0x130c: 0x76d1, 0x130d: 0x76f9, 0x130e: 0x7721, 0x130f: 0x7749, 0x1310: 0x7771, 0x1311: 0x7771,
+ 0x1312: 0x7789, 0x1313: 0x7789, 0x1314: 0x7789, 0x1315: 0x7789, 0x1316: 0x77a1, 0x1317: 0x77a1,
+ 0x1318: 0x77a1, 0x1319: 0x77a1, 0x131a: 0x77b9, 0x131b: 0x77b9, 0x131c: 0x77b9, 0x131d: 0x77b9,
+ 0x131e: 0x77d1, 0x131f: 0x77d1, 0x1320: 0x77d1, 0x1321: 0x77d1, 0x1322: 0x77e9, 0x1323: 0x77e9,
+ 0x1324: 0x77e9, 0x1325: 0x77e9, 0x1326: 0x7801, 0x1327: 0x7801, 0x1328: 0x7801, 0x1329: 0x7801,
+ 0x132a: 0x7819, 0x132b: 0x7819, 0x132c: 0x7819, 0x132d: 0x7819, 0x132e: 0x7831, 0x132f: 0x7831,
+ 0x1330: 0x7831, 0x1331: 0x7831, 0x1332: 0x7849, 0x1333: 0x7849, 0x1334: 0x7849, 0x1335: 0x7849,
+ 0x1336: 0x7861, 0x1337: 0x7861, 0x1338: 0x7861, 0x1339: 0x7861, 0x133a: 0x7879, 0x133b: 0x7879,
+ 0x133c: 0x7879, 0x133d: 0x7879, 0x133e: 0x7891, 0x133f: 0x7891,
+ // Block 0x4d, offset 0x1340
+ 0x1340: 0x7891, 0x1341: 0x7891, 0x1342: 0x78a9, 0x1343: 0x78a9, 0x1344: 0x78c1, 0x1345: 0x78c1,
+ 0x1346: 0x78d9, 0x1347: 0x78d9, 0x1348: 0x78f1, 0x1349: 0x78f1, 0x134a: 0x7909, 0x134b: 0x7909,
+ 0x134c: 0x7921, 0x134d: 0x7921, 0x134e: 0x7939, 0x134f: 0x7939, 0x1350: 0x7939, 0x1351: 0x7939,
+ 0x1352: 0x7951, 0x1353: 0x7951, 0x1354: 0x7951, 0x1355: 0x7951, 0x1356: 0x7969, 0x1357: 0x7969,
+ 0x1358: 0x7969, 0x1359: 0x7969, 0x135a: 0x7981, 0x135b: 0x7981, 0x135c: 0x7981, 0x135d: 0x7981,
+ 0x135e: 0x7999, 0x135f: 0x7999, 0x1360: 0x79b1, 0x1361: 0x79b1, 0x1362: 0x79b1, 0x1363: 0x79b1,
+ 0x1364: 0x79c9, 0x1365: 0x79c9, 0x1366: 0x79e1, 0x1367: 0x79e1, 0x1368: 0x79e1, 0x1369: 0x79e1,
+ 0x136a: 0x79f9, 0x136b: 0x79f9, 0x136c: 0x79f9, 0x136d: 0x79f9, 0x136e: 0x7a11, 0x136f: 0x7a11,
+ 0x1370: 0x7a29, 0x1371: 0x7a29, 0x1372: 0x0818, 0x1373: 0x0818, 0x1374: 0x0818, 0x1375: 0x0818,
+ 0x1376: 0x0818, 0x1377: 0x0818, 0x1378: 0x0818, 0x1379: 0x0818, 0x137a: 0x0818, 0x137b: 0x0818,
+ 0x137c: 0x0818, 0x137d: 0x0818, 0x137e: 0x0818, 0x137f: 0x0818,
+ // Block 0x4e, offset 0x1380
+ 0x1380: 0x0818, 0x1381: 0x0818, 0x1382: 0x0040, 0x1383: 0x0040, 0x1384: 0x0040, 0x1385: 0x0040,
+ 0x1386: 0x0040, 0x1387: 0x0040, 0x1388: 0x0040, 0x1389: 0x0040, 0x138a: 0x0040, 0x138b: 0x0040,
+ 0x138c: 0x0040, 0x138d: 0x0040, 0x138e: 0x0040, 0x138f: 0x0040, 0x1390: 0x0040, 0x1391: 0x0040,
+ 0x1392: 0x0040, 0x1393: 0x7a41, 0x1394: 0x7a41, 0x1395: 0x7a41, 0x1396: 0x7a41, 0x1397: 0x7a59,
+ 0x1398: 0x7a59, 0x1399: 0x7a71, 0x139a: 0x7a71, 0x139b: 0x7a89, 0x139c: 0x7a89, 0x139d: 0x0479,
+ 0x139e: 0x7aa1, 0x139f: 0x7aa1, 0x13a0: 0x7ab9, 0x13a1: 0x7ab9, 0x13a2: 0x7ad1, 0x13a3: 0x7ad1,
+ 0x13a4: 0x7ae9, 0x13a5: 0x7ae9, 0x13a6: 0x7ae9, 0x13a7: 0x7ae9, 0x13a8: 0x7b01, 0x13a9: 0x7b01,
+ 0x13aa: 0x7b19, 0x13ab: 0x7b19, 0x13ac: 0x7b41, 0x13ad: 0x7b41, 0x13ae: 0x7b69, 0x13af: 0x7b69,
+ 0x13b0: 0x7b91, 0x13b1: 0x7b91, 0x13b2: 0x7bb9, 0x13b3: 0x7bb9, 0x13b4: 0x7be1, 0x13b5: 0x7be1,
+ 0x13b6: 0x7c09, 0x13b7: 0x7c09, 0x13b8: 0x7c09, 0x13b9: 0x7c31, 0x13ba: 0x7c31, 0x13bb: 0x7c31,
+ 0x13bc: 0x7c59, 0x13bd: 0x7c59, 0x13be: 0x7c59, 0x13bf: 0x7c59,
+ // Block 0x4f, offset 0x13c0
+ 0x13c0: 0x8649, 0x13c1: 0x8671, 0x13c2: 0x8699, 0x13c3: 0x86c1, 0x13c4: 0x86e9, 0x13c5: 0x8711,
+ 0x13c6: 0x8739, 0x13c7: 0x8761, 0x13c8: 0x8789, 0x13c9: 0x87b1, 0x13ca: 0x87d9, 0x13cb: 0x8801,
+ 0x13cc: 0x8829, 0x13cd: 0x8851, 0x13ce: 0x8879, 0x13cf: 0x88a1, 0x13d0: 0x88c9, 0x13d1: 0x88f1,
+ 0x13d2: 0x8919, 0x13d3: 0x8941, 0x13d4: 0x8969, 0x13d5: 0x8991, 0x13d6: 0x89b9, 0x13d7: 0x89e1,
+ 0x13d8: 0x8a09, 0x13d9: 0x8a31, 0x13da: 0x8a59, 0x13db: 0x8a81, 0x13dc: 0x8aa9, 0x13dd: 0x8ad1,
+ 0x13de: 0x8afa, 0x13df: 0x8b2a, 0x13e0: 0x8b5a, 0x13e1: 0x8b8a, 0x13e2: 0x8bba, 0x13e3: 0x8bea,
+ 0x13e4: 0x8c19, 0x13e5: 0x8c41, 0x13e6: 0x7cc1, 0x13e7: 0x8c69, 0x13e8: 0x7c31, 0x13e9: 0x7ce9,
+ 0x13ea: 0x8c91, 0x13eb: 0x8cb9, 0x13ec: 0x7d89, 0x13ed: 0x8ce1, 0x13ee: 0x7db1, 0x13ef: 0x7dd9,
+ 0x13f0: 0x8d09, 0x13f1: 0x8d31, 0x13f2: 0x7e79, 0x13f3: 0x8d59, 0x13f4: 0x7ea1, 0x13f5: 0x7ec9,
+ 0x13f6: 0x8d81, 0x13f7: 0x8da9, 0x13f8: 0x7f19, 0x13f9: 0x8dd1, 0x13fa: 0x7f41, 0x13fb: 0x7f69,
+ 0x13fc: 0x83f1, 0x13fd: 0x8419, 0x13fe: 0x8491, 0x13ff: 0x84b9,
+ // Block 0x50, offset 0x1400
+ 0x1400: 0x84e1, 0x1401: 0x8581, 0x1402: 0x85a9, 0x1403: 0x85d1, 0x1404: 0x85f9, 0x1405: 0x8699,
+ 0x1406: 0x86c1, 0x1407: 0x86e9, 0x1408: 0x8df9, 0x1409: 0x8789, 0x140a: 0x8e21, 0x140b: 0x8e49,
+ 0x140c: 0x8879, 0x140d: 0x8e71, 0x140e: 0x88a1, 0x140f: 0x88c9, 0x1410: 0x8ad1, 0x1411: 0x8e99,
+ 0x1412: 0x8ec1, 0x1413: 0x8a09, 0x1414: 0x8ee9, 0x1415: 0x8a31, 0x1416: 0x8a59, 0x1417: 0x7c71,
+ 0x1418: 0x7c99, 0x1419: 0x8f11, 0x141a: 0x7cc1, 0x141b: 0x8f39, 0x141c: 0x7d11, 0x141d: 0x7d39,
+ 0x141e: 0x7d61, 0x141f: 0x7d89, 0x1420: 0x8f61, 0x1421: 0x7e01, 0x1422: 0x7e29, 0x1423: 0x7e51,
+ 0x1424: 0x7e79, 0x1425: 0x8f89, 0x1426: 0x7f19, 0x1427: 0x7f91, 0x1428: 0x7fb9, 0x1429: 0x7fe1,
+ 0x142a: 0x8009, 0x142b: 0x8031, 0x142c: 0x8081, 0x142d: 0x80a9, 0x142e: 0x80d1, 0x142f: 0x80f9,
+ 0x1430: 0x8121, 0x1431: 0x8149, 0x1432: 0x8fb1, 0x1433: 0x8171, 0x1434: 0x8199, 0x1435: 0x81c1,
+ 0x1436: 0x81e9, 0x1437: 0x8211, 0x1438: 0x8239, 0x1439: 0x8289, 0x143a: 0x82b1, 0x143b: 0x82d9,
+ 0x143c: 0x8301, 0x143d: 0x8329, 0x143e: 0x8351, 0x143f: 0x8379,
+ // Block 0x51, offset 0x1440
+ 0x1440: 0x83a1, 0x1441: 0x83c9, 0x1442: 0x8441, 0x1443: 0x8469, 0x1444: 0x8509, 0x1445: 0x8531,
+ 0x1446: 0x8559, 0x1447: 0x8581, 0x1448: 0x85a9, 0x1449: 0x8621, 0x144a: 0x8649, 0x144b: 0x8671,
+ 0x144c: 0x8699, 0x144d: 0x8fd9, 0x144e: 0x8711, 0x144f: 0x8739, 0x1450: 0x8761, 0x1451: 0x8789,
+ 0x1452: 0x8801, 0x1453: 0x8829, 0x1454: 0x8851, 0x1455: 0x8879, 0x1456: 0x9001, 0x1457: 0x88f1,
+ 0x1458: 0x8919, 0x1459: 0x9029, 0x145a: 0x8991, 0x145b: 0x89b9, 0x145c: 0x89e1, 0x145d: 0x8a09,
+ 0x145e: 0x9051, 0x145f: 0x7cc1, 0x1460: 0x8f39, 0x1461: 0x7d89, 0x1462: 0x8f61, 0x1463: 0x7e79,
+ 0x1464: 0x8f89, 0x1465: 0x7f19, 0x1466: 0x9079, 0x1467: 0x8121, 0x1468: 0x90a1, 0x1469: 0x90c9,
+ 0x146a: 0x90f1, 0x146b: 0x8581, 0x146c: 0x85a9, 0x146d: 0x8699, 0x146e: 0x8879, 0x146f: 0x9001,
+ 0x1470: 0x8a09, 0x1471: 0x9051, 0x1472: 0x9119, 0x1473: 0x9151, 0x1474: 0x9189, 0x1475: 0x91c1,
+ 0x1476: 0x91e9, 0x1477: 0x9211, 0x1478: 0x9239, 0x1479: 0x9261, 0x147a: 0x9289, 0x147b: 0x92b1,
+ 0x147c: 0x92d9, 0x147d: 0x9301, 0x147e: 0x9329, 0x147f: 0x9351,
+ // Block 0x52, offset 0x1480
+ 0x1480: 0x9379, 0x1481: 0x93a1, 0x1482: 0x93c9, 0x1483: 0x93f1, 0x1484: 0x9419, 0x1485: 0x9441,
+ 0x1486: 0x9469, 0x1487: 0x9491, 0x1488: 0x94b9, 0x1489: 0x94e1, 0x148a: 0x9509, 0x148b: 0x9531,
+ 0x148c: 0x90c9, 0x148d: 0x9559, 0x148e: 0x9581, 0x148f: 0x95a9, 0x1490: 0x95d1, 0x1491: 0x91c1,
+ 0x1492: 0x91e9, 0x1493: 0x9211, 0x1494: 0x9239, 0x1495: 0x9261, 0x1496: 0x9289, 0x1497: 0x92b1,
+ 0x1498: 0x92d9, 0x1499: 0x9301, 0x149a: 0x9329, 0x149b: 0x9351, 0x149c: 0x9379, 0x149d: 0x93a1,
+ 0x149e: 0x93c9, 0x149f: 0x93f1, 0x14a0: 0x9419, 0x14a1: 0x9441, 0x14a2: 0x9469, 0x14a3: 0x9491,
+ 0x14a4: 0x94b9, 0x14a5: 0x94e1, 0x14a6: 0x9509, 0x14a7: 0x9531, 0x14a8: 0x90c9, 0x14a9: 0x9559,
+ 0x14aa: 0x9581, 0x14ab: 0x95a9, 0x14ac: 0x95d1, 0x14ad: 0x94e1, 0x14ae: 0x9509, 0x14af: 0x9531,
+ 0x14b0: 0x90c9, 0x14b1: 0x90a1, 0x14b2: 0x90f1, 0x14b3: 0x8261, 0x14b4: 0x80a9, 0x14b5: 0x80d1,
+ 0x14b6: 0x80f9, 0x14b7: 0x94e1, 0x14b8: 0x9509, 0x14b9: 0x9531, 0x14ba: 0x8261, 0x14bb: 0x8289,
+ 0x14bc: 0x95f9, 0x14bd: 0x95f9, 0x14be: 0x0018, 0x14bf: 0x0018,
+ // Block 0x53, offset 0x14c0
+ 0x14c0: 0x0040, 0x14c1: 0x0040, 0x14c2: 0x0040, 0x14c3: 0x0040, 0x14c4: 0x0040, 0x14c5: 0x0040,
+ 0x14c6: 0x0040, 0x14c7: 0x0040, 0x14c8: 0x0040, 0x14c9: 0x0040, 0x14ca: 0x0040, 0x14cb: 0x0040,
+ 0x14cc: 0x0040, 0x14cd: 0x0040, 0x14ce: 0x0040, 0x14cf: 0x0040, 0x14d0: 0x9621, 0x14d1: 0x9659,
+ 0x14d2: 0x9659, 0x14d3: 0x9691, 0x14d4: 0x96c9, 0x14d5: 0x9701, 0x14d6: 0x9739, 0x14d7: 0x9771,
+ 0x14d8: 0x97a9, 0x14d9: 0x97a9, 0x14da: 0x97e1, 0x14db: 0x9819, 0x14dc: 0x9851, 0x14dd: 0x9889,
+ 0x14de: 0x98c1, 0x14df: 0x98f9, 0x14e0: 0x98f9, 0x14e1: 0x9931, 0x14e2: 0x9969, 0x14e3: 0x9969,
+ 0x14e4: 0x99a1, 0x14e5: 0x99a1, 0x14e6: 0x99d9, 0x14e7: 0x9a11, 0x14e8: 0x9a11, 0x14e9: 0x9a49,
+ 0x14ea: 0x9a81, 0x14eb: 0x9a81, 0x14ec: 0x9ab9, 0x14ed: 0x9ab9, 0x14ee: 0x9af1, 0x14ef: 0x9b29,
+ 0x14f0: 0x9b29, 0x14f1: 0x9b61, 0x14f2: 0x9b61, 0x14f3: 0x9b99, 0x14f4: 0x9bd1, 0x14f5: 0x9c09,
+ 0x14f6: 0x9c41, 0x14f7: 0x9c41, 0x14f8: 0x9c79, 0x14f9: 0x9cb1, 0x14fa: 0x9ce9, 0x14fb: 0x9d21,
+ 0x14fc: 0x9d59, 0x14fd: 0x9d59, 0x14fe: 0x9d91, 0x14ff: 0x9dc9,
+ // Block 0x54, offset 0x1500
+ 0x1500: 0xa999, 0x1501: 0xa9d1, 0x1502: 0xaa09, 0x1503: 0xa8f1, 0x1504: 0x9c09, 0x1505: 0x99d9,
+ 0x1506: 0xaa41, 0x1507: 0xaa79, 0x1508: 0x0040, 0x1509: 0x0040, 0x150a: 0x0040, 0x150b: 0x0040,
+ 0x150c: 0x0040, 0x150d: 0x0040, 0x150e: 0x0040, 0x150f: 0x0040, 0x1510: 0x0040, 0x1511: 0x0040,
+ 0x1512: 0x0040, 0x1513: 0x0040, 0x1514: 0x0040, 0x1515: 0x0040, 0x1516: 0x0040, 0x1517: 0x0040,
+ 0x1518: 0x0040, 0x1519: 0x0040, 0x151a: 0x0040, 0x151b: 0x0040, 0x151c: 0x0040, 0x151d: 0x0040,
+ 0x151e: 0x0040, 0x151f: 0x0040, 0x1520: 0x0040, 0x1521: 0x0040, 0x1522: 0x0040, 0x1523: 0x0040,
+ 0x1524: 0x0040, 0x1525: 0x0040, 0x1526: 0x0040, 0x1527: 0x0040, 0x1528: 0x0040, 0x1529: 0x0040,
+ 0x152a: 0x0040, 0x152b: 0x0040, 0x152c: 0x0040, 0x152d: 0x0040, 0x152e: 0x0040, 0x152f: 0x0040,
+ 0x1530: 0xaab1, 0x1531: 0xaae9, 0x1532: 0xab21, 0x1533: 0xab69, 0x1534: 0xabb1, 0x1535: 0xabf9,
+ 0x1536: 0xac41, 0x1537: 0xac89, 0x1538: 0xacd1, 0x1539: 0xad19, 0x153a: 0xad52, 0x153b: 0xae62,
+ 0x153c: 0xaee1, 0x153d: 0x0018, 0x153e: 0x0040, 0x153f: 0x0040,
+ // Block 0x55, offset 0x1540
+ 0x1540: 0x33c0, 0x1541: 0x33c0, 0x1542: 0x33c0, 0x1543: 0x33c0, 0x1544: 0x33c0, 0x1545: 0x33c0,
+ 0x1546: 0x33c0, 0x1547: 0x33c0, 0x1548: 0x33c0, 0x1549: 0x33c0, 0x154a: 0x33c0, 0x154b: 0x33c0,
+ 0x154c: 0x33c0, 0x154d: 0x33c0, 0x154e: 0x33c0, 0x154f: 0x33c0, 0x1550: 0xaf2a, 0x1551: 0x7d8d,
+ 0x1552: 0x0040, 0x1553: 0xaf3a, 0x1554: 0x03c2, 0x1555: 0xaf4a, 0x1556: 0xaf5a, 0x1557: 0x7dad,
+ 0x1558: 0x7dcd, 0x1559: 0x0040, 0x155a: 0x0040, 0x155b: 0x0040, 0x155c: 0x0040, 0x155d: 0x0040,
+ 0x155e: 0x0040, 0x155f: 0x0040, 0x1560: 0x3308, 0x1561: 0x3308, 0x1562: 0x3308, 0x1563: 0x3308,
+ 0x1564: 0x3308, 0x1565: 0x3308, 0x1566: 0x3308, 0x1567: 0x3308, 0x1568: 0x3308, 0x1569: 0x3308,
+ 0x156a: 0x3308, 0x156b: 0x3308, 0x156c: 0x3308, 0x156d: 0x3308, 0x156e: 0x3308, 0x156f: 0x3308,
+ 0x1570: 0x0040, 0x1571: 0x7ded, 0x1572: 0x7e0d, 0x1573: 0xaf6a, 0x1574: 0xaf6a, 0x1575: 0x1fd2,
+ 0x1576: 0x1fe2, 0x1577: 0xaf7a, 0x1578: 0xaf8a, 0x1579: 0x7e2d, 0x157a: 0x7e4d, 0x157b: 0x7e6d,
+ 0x157c: 0x7e2d, 0x157d: 0x7e8d, 0x157e: 0x7ead, 0x157f: 0x7e8d,
+ // Block 0x56, offset 0x1580
+ 0x1580: 0x7ecd, 0x1581: 0x7eed, 0x1582: 0x7f0d, 0x1583: 0x7eed, 0x1584: 0x7f2d, 0x1585: 0x0018,
+ 0x1586: 0x0018, 0x1587: 0xaf9a, 0x1588: 0xafaa, 0x1589: 0x7f4e, 0x158a: 0x7f6e, 0x158b: 0x7f8e,
+ 0x158c: 0x7fae, 0x158d: 0xaf6a, 0x158e: 0xaf6a, 0x158f: 0xaf6a, 0x1590: 0xaf2a, 0x1591: 0x7fcd,
+ 0x1592: 0x0040, 0x1593: 0x0040, 0x1594: 0x03c2, 0x1595: 0xaf3a, 0x1596: 0xaf5a, 0x1597: 0xaf4a,
+ 0x1598: 0x7fed, 0x1599: 0x1fd2, 0x159a: 0x1fe2, 0x159b: 0xaf7a, 0x159c: 0xaf8a, 0x159d: 0x7ecd,
+ 0x159e: 0x7f2d, 0x159f: 0xafba, 0x15a0: 0xafca, 0x15a1: 0xafda, 0x15a2: 0x1fb2, 0x15a3: 0xafe9,
+ 0x15a4: 0xaffa, 0x15a5: 0xb00a, 0x15a6: 0x1fc2, 0x15a7: 0x0040, 0x15a8: 0xb01a, 0x15a9: 0xb02a,
+ 0x15aa: 0xb03a, 0x15ab: 0xb04a, 0x15ac: 0x0040, 0x15ad: 0x0040, 0x15ae: 0x0040, 0x15af: 0x0040,
+ 0x15b0: 0x800e, 0x15b1: 0xb059, 0x15b2: 0x802e, 0x15b3: 0x0808, 0x15b4: 0x804e, 0x15b5: 0x0040,
+ 0x15b6: 0x806e, 0x15b7: 0xb081, 0x15b8: 0x808e, 0x15b9: 0xb0a9, 0x15ba: 0x80ae, 0x15bb: 0xb0d1,
+ 0x15bc: 0x80ce, 0x15bd: 0xb0f9, 0x15be: 0x80ee, 0x15bf: 0xb121,
+ // Block 0x57, offset 0x15c0
+ 0x15c0: 0xb149, 0x15c1: 0xb161, 0x15c2: 0xb161, 0x15c3: 0xb179, 0x15c4: 0xb179, 0x15c5: 0xb191,
+ 0x15c6: 0xb191, 0x15c7: 0xb1a9, 0x15c8: 0xb1a9, 0x15c9: 0xb1c1, 0x15ca: 0xb1c1, 0x15cb: 0xb1c1,
+ 0x15cc: 0xb1c1, 0x15cd: 0xb1d9, 0x15ce: 0xb1d9, 0x15cf: 0xb1f1, 0x15d0: 0xb1f1, 0x15d1: 0xb1f1,
+ 0x15d2: 0xb1f1, 0x15d3: 0xb209, 0x15d4: 0xb209, 0x15d5: 0xb221, 0x15d6: 0xb221, 0x15d7: 0xb221,
+ 0x15d8: 0xb221, 0x15d9: 0xb239, 0x15da: 0xb239, 0x15db: 0xb239, 0x15dc: 0xb239, 0x15dd: 0xb251,
+ 0x15de: 0xb251, 0x15df: 0xb251, 0x15e0: 0xb251, 0x15e1: 0xb269, 0x15e2: 0xb269, 0x15e3: 0xb269,
+ 0x15e4: 0xb269, 0x15e5: 0xb281, 0x15e6: 0xb281, 0x15e7: 0xb281, 0x15e8: 0xb281, 0x15e9: 0xb299,
+ 0x15ea: 0xb299, 0x15eb: 0xb2b1, 0x15ec: 0xb2b1, 0x15ed: 0xb2c9, 0x15ee: 0xb2c9, 0x15ef: 0xb2e1,
+ 0x15f0: 0xb2e1, 0x15f1: 0xb2f9, 0x15f2: 0xb2f9, 0x15f3: 0xb2f9, 0x15f4: 0xb2f9, 0x15f5: 0xb311,
+ 0x15f6: 0xb311, 0x15f7: 0xb311, 0x15f8: 0xb311, 0x15f9: 0xb329, 0x15fa: 0xb329, 0x15fb: 0xb329,
+ 0x15fc: 0xb329, 0x15fd: 0xb341, 0x15fe: 0xb341, 0x15ff: 0xb341,
+ // Block 0x58, offset 0x1600
+ 0x1600: 0xb341, 0x1601: 0xb359, 0x1602: 0xb359, 0x1603: 0xb359, 0x1604: 0xb359, 0x1605: 0xb371,
+ 0x1606: 0xb371, 0x1607: 0xb371, 0x1608: 0xb371, 0x1609: 0xb389, 0x160a: 0xb389, 0x160b: 0xb389,
+ 0x160c: 0xb389, 0x160d: 0xb3a1, 0x160e: 0xb3a1, 0x160f: 0xb3a1, 0x1610: 0xb3a1, 0x1611: 0xb3b9,
+ 0x1612: 0xb3b9, 0x1613: 0xb3b9, 0x1614: 0xb3b9, 0x1615: 0xb3d1, 0x1616: 0xb3d1, 0x1617: 0xb3d1,
+ 0x1618: 0xb3d1, 0x1619: 0xb3e9, 0x161a: 0xb3e9, 0x161b: 0xb3e9, 0x161c: 0xb3e9, 0x161d: 0xb401,
+ 0x161e: 0xb401, 0x161f: 0xb401, 0x1620: 0xb401, 0x1621: 0xb419, 0x1622: 0xb419, 0x1623: 0xb419,
+ 0x1624: 0xb419, 0x1625: 0xb431, 0x1626: 0xb431, 0x1627: 0xb431, 0x1628: 0xb431, 0x1629: 0xb449,
+ 0x162a: 0xb449, 0x162b: 0xb449, 0x162c: 0xb449, 0x162d: 0xb461, 0x162e: 0xb461, 0x162f: 0x7b01,
+ 0x1630: 0x7b01, 0x1631: 0xb479, 0x1632: 0xb479, 0x1633: 0xb479, 0x1634: 0xb479, 0x1635: 0xb491,
+ 0x1636: 0xb491, 0x1637: 0xb4b9, 0x1638: 0xb4b9, 0x1639: 0xb4e1, 0x163a: 0xb4e1, 0x163b: 0xb509,
+ 0x163c: 0xb509, 0x163d: 0x0040, 0x163e: 0x0040, 0x163f: 0x03c0,
+ // Block 0x59, offset 0x1640
+ 0x1640: 0x0040, 0x1641: 0xaf4a, 0x1642: 0xb532, 0x1643: 0xafba, 0x1644: 0xb02a, 0x1645: 0xb03a,
+ 0x1646: 0xafca, 0x1647: 0xb542, 0x1648: 0x1fd2, 0x1649: 0x1fe2, 0x164a: 0xafda, 0x164b: 0x1fb2,
+ 0x164c: 0xaf2a, 0x164d: 0xafe9, 0x164e: 0x29d1, 0x164f: 0xb552, 0x1650: 0x1f41, 0x1651: 0x00c9,
+ 0x1652: 0x0069, 0x1653: 0x0079, 0x1654: 0x1f51, 0x1655: 0x1f61, 0x1656: 0x1f71, 0x1657: 0x1f81,
+ 0x1658: 0x1f91, 0x1659: 0x1fa1, 0x165a: 0xaf3a, 0x165b: 0x03c2, 0x165c: 0xaffa, 0x165d: 0x1fc2,
+ 0x165e: 0xb00a, 0x165f: 0xaf5a, 0x1660: 0xb04a, 0x1661: 0x0039, 0x1662: 0x0ee9, 0x1663: 0x1159,
+ 0x1664: 0x0ef9, 0x1665: 0x0f09, 0x1666: 0x1199, 0x1667: 0x0f31, 0x1668: 0x0249, 0x1669: 0x0f41,
+ 0x166a: 0x0259, 0x166b: 0x0f51, 0x166c: 0x0359, 0x166d: 0x0f61, 0x166e: 0x0f71, 0x166f: 0x00d9,
+ 0x1670: 0x0f99, 0x1671: 0x2039, 0x1672: 0x0269, 0x1673: 0x01d9, 0x1674: 0x0fa9, 0x1675: 0x0fb9,
+ 0x1676: 0x1089, 0x1677: 0x0279, 0x1678: 0x0369, 0x1679: 0x0289, 0x167a: 0x13d1, 0x167b: 0xaf9a,
+ 0x167c: 0xb01a, 0x167d: 0xafaa, 0x167e: 0xb562, 0x167f: 0xaf6a,
+ // Block 0x5a, offset 0x1680
+ 0x1680: 0x1caa, 0x1681: 0x0039, 0x1682: 0x0ee9, 0x1683: 0x1159, 0x1684: 0x0ef9, 0x1685: 0x0f09,
+ 0x1686: 0x1199, 0x1687: 0x0f31, 0x1688: 0x0249, 0x1689: 0x0f41, 0x168a: 0x0259, 0x168b: 0x0f51,
+ 0x168c: 0x0359, 0x168d: 0x0f61, 0x168e: 0x0f71, 0x168f: 0x00d9, 0x1690: 0x0f99, 0x1691: 0x2039,
+ 0x1692: 0x0269, 0x1693: 0x01d9, 0x1694: 0x0fa9, 0x1695: 0x0fb9, 0x1696: 0x1089, 0x1697: 0x0279,
+ 0x1698: 0x0369, 0x1699: 0x0289, 0x169a: 0x13d1, 0x169b: 0xaf7a, 0x169c: 0xb572, 0x169d: 0xaf8a,
+ 0x169e: 0xb582, 0x169f: 0x810d, 0x16a0: 0x812d, 0x16a1: 0x29d1, 0x16a2: 0x814d, 0x16a3: 0x814d,
+ 0x16a4: 0x816d, 0x16a5: 0x818d, 0x16a6: 0x81ad, 0x16a7: 0x81cd, 0x16a8: 0x81ed, 0x16a9: 0x820d,
+ 0x16aa: 0x822d, 0x16ab: 0x824d, 0x16ac: 0x826d, 0x16ad: 0x828d, 0x16ae: 0x82ad, 0x16af: 0x82cd,
+ 0x16b0: 0x82ed, 0x16b1: 0x830d, 0x16b2: 0x832d, 0x16b3: 0x834d, 0x16b4: 0x836d, 0x16b5: 0x838d,
+ 0x16b6: 0x83ad, 0x16b7: 0x83cd, 0x16b8: 0x83ed, 0x16b9: 0x840d, 0x16ba: 0x842d, 0x16bb: 0x844d,
+ 0x16bc: 0x81ed, 0x16bd: 0x846d, 0x16be: 0x848d, 0x16bf: 0x824d,
+ // Block 0x5b, offset 0x16c0
+ 0x16c0: 0x84ad, 0x16c1: 0x84cd, 0x16c2: 0x84ed, 0x16c3: 0x850d, 0x16c4: 0x852d, 0x16c5: 0x854d,
+ 0x16c6: 0x856d, 0x16c7: 0x858d, 0x16c8: 0x850d, 0x16c9: 0x85ad, 0x16ca: 0x850d, 0x16cb: 0x85cd,
+ 0x16cc: 0x85cd, 0x16cd: 0x85ed, 0x16ce: 0x85ed, 0x16cf: 0x860d, 0x16d0: 0x854d, 0x16d1: 0x862d,
+ 0x16d2: 0x864d, 0x16d3: 0x862d, 0x16d4: 0x866d, 0x16d5: 0x864d, 0x16d6: 0x868d, 0x16d7: 0x868d,
+ 0x16d8: 0x86ad, 0x16d9: 0x86ad, 0x16da: 0x86cd, 0x16db: 0x86cd, 0x16dc: 0x864d, 0x16dd: 0x814d,
+ 0x16de: 0x86ed, 0x16df: 0x870d, 0x16e0: 0x0040, 0x16e1: 0x872d, 0x16e2: 0x874d, 0x16e3: 0x876d,
+ 0x16e4: 0x878d, 0x16e5: 0x876d, 0x16e6: 0x87ad, 0x16e7: 0x87cd, 0x16e8: 0x87ed, 0x16e9: 0x87ed,
+ 0x16ea: 0x880d, 0x16eb: 0x880d, 0x16ec: 0x882d, 0x16ed: 0x882d, 0x16ee: 0x880d, 0x16ef: 0x880d,
+ 0x16f0: 0x884d, 0x16f1: 0x886d, 0x16f2: 0x888d, 0x16f3: 0x88ad, 0x16f4: 0x88cd, 0x16f5: 0x88ed,
+ 0x16f6: 0x88ed, 0x16f7: 0x88ed, 0x16f8: 0x890d, 0x16f9: 0x890d, 0x16fa: 0x890d, 0x16fb: 0x890d,
+ 0x16fc: 0x87ed, 0x16fd: 0x87ed, 0x16fe: 0x87ed, 0x16ff: 0x0040,
+ // Block 0x5c, offset 0x1700
+ 0x1700: 0x0040, 0x1701: 0x0040, 0x1702: 0x874d, 0x1703: 0x872d, 0x1704: 0x892d, 0x1705: 0x872d,
+ 0x1706: 0x874d, 0x1707: 0x872d, 0x1708: 0x0040, 0x1709: 0x0040, 0x170a: 0x894d, 0x170b: 0x874d,
+ 0x170c: 0x896d, 0x170d: 0x892d, 0x170e: 0x896d, 0x170f: 0x874d, 0x1710: 0x0040, 0x1711: 0x0040,
+ 0x1712: 0x898d, 0x1713: 0x89ad, 0x1714: 0x88ad, 0x1715: 0x896d, 0x1716: 0x892d, 0x1717: 0x896d,
+ 0x1718: 0x0040, 0x1719: 0x0040, 0x171a: 0x89cd, 0x171b: 0x89ed, 0x171c: 0x89cd, 0x171d: 0x0040,
+ 0x171e: 0x0040, 0x171f: 0x0040, 0x1720: 0xb591, 0x1721: 0xb5a9, 0x1722: 0xb5c1, 0x1723: 0x8a0e,
+ 0x1724: 0xb5d9, 0x1725: 0xb5f1, 0x1726: 0x8a2d, 0x1727: 0x0040, 0x1728: 0x8a4d, 0x1729: 0x8a6d,
+ 0x172a: 0x8a8d, 0x172b: 0x8a6d, 0x172c: 0x8aad, 0x172d: 0x8acd, 0x172e: 0x8aed, 0x172f: 0x0040,
+ 0x1730: 0x0040, 0x1731: 0x0040, 0x1732: 0x0040, 0x1733: 0x0040, 0x1734: 0x0040, 0x1735: 0x0040,
+ 0x1736: 0x0040, 0x1737: 0x0040, 0x1738: 0x0040, 0x1739: 0x0340, 0x173a: 0x0340, 0x173b: 0x0340,
+ 0x173c: 0x0040, 0x173d: 0x0040, 0x173e: 0x0040, 0x173f: 0x0040,
+ // Block 0x5d, offset 0x1740
+ 0x1740: 0x0a08, 0x1741: 0x0a08, 0x1742: 0x0a08, 0x1743: 0x0a08, 0x1744: 0x0a08, 0x1745: 0x0c08,
+ 0x1746: 0x0808, 0x1747: 0x0c08, 0x1748: 0x0818, 0x1749: 0x0c08, 0x174a: 0x0c08, 0x174b: 0x0808,
+ 0x174c: 0x0808, 0x174d: 0x0908, 0x174e: 0x0c08, 0x174f: 0x0c08, 0x1750: 0x0c08, 0x1751: 0x0c08,
+ 0x1752: 0x0c08, 0x1753: 0x0a08, 0x1754: 0x0a08, 0x1755: 0x0a08, 0x1756: 0x0a08, 0x1757: 0x0908,
+ 0x1758: 0x0a08, 0x1759: 0x0a08, 0x175a: 0x0a08, 0x175b: 0x0a08, 0x175c: 0x0a08, 0x175d: 0x0c08,
+ 0x175e: 0x0a08, 0x175f: 0x0a08, 0x1760: 0x0a08, 0x1761: 0x0c08, 0x1762: 0x0808, 0x1763: 0x0808,
+ 0x1764: 0x0c08, 0x1765: 0x3308, 0x1766: 0x3308, 0x1767: 0x0040, 0x1768: 0x0040, 0x1769: 0x0040,
+ 0x176a: 0x0040, 0x176b: 0x0a18, 0x176c: 0x0a18, 0x176d: 0x0a18, 0x176e: 0x0a18, 0x176f: 0x0c18,
+ 0x1770: 0x0818, 0x1771: 0x0818, 0x1772: 0x0818, 0x1773: 0x0818, 0x1774: 0x0818, 0x1775: 0x0818,
+ 0x1776: 0x0818, 0x1777: 0x0040, 0x1778: 0x0040, 0x1779: 0x0040, 0x177a: 0x0040, 0x177b: 0x0040,
+ 0x177c: 0x0040, 0x177d: 0x0040, 0x177e: 0x0040, 0x177f: 0x0040,
+ // Block 0x5e, offset 0x1780
+ 0x1780: 0x0a08, 0x1781: 0x0c08, 0x1782: 0x0a08, 0x1783: 0x0c08, 0x1784: 0x0c08, 0x1785: 0x0c08,
+ 0x1786: 0x0a08, 0x1787: 0x0a08, 0x1788: 0x0a08, 0x1789: 0x0c08, 0x178a: 0x0a08, 0x178b: 0x0a08,
+ 0x178c: 0x0c08, 0x178d: 0x0a08, 0x178e: 0x0c08, 0x178f: 0x0c08, 0x1790: 0x0a08, 0x1791: 0x0c08,
+ 0x1792: 0x0040, 0x1793: 0x0040, 0x1794: 0x0040, 0x1795: 0x0040, 0x1796: 0x0040, 0x1797: 0x0040,
+ 0x1798: 0x0040, 0x1799: 0x0818, 0x179a: 0x0818, 0x179b: 0x0818, 0x179c: 0x0818, 0x179d: 0x0040,
+ 0x179e: 0x0040, 0x179f: 0x0040, 0x17a0: 0x0040, 0x17a1: 0x0040, 0x17a2: 0x0040, 0x17a3: 0x0040,
+ 0x17a4: 0x0040, 0x17a5: 0x0040, 0x17a6: 0x0040, 0x17a7: 0x0040, 0x17a8: 0x0040, 0x17a9: 0x0c18,
+ 0x17aa: 0x0c18, 0x17ab: 0x0c18, 0x17ac: 0x0c18, 0x17ad: 0x0a18, 0x17ae: 0x0a18, 0x17af: 0x0818,
+ 0x17b0: 0x0040, 0x17b1: 0x0040, 0x17b2: 0x0040, 0x17b3: 0x0040, 0x17b4: 0x0040, 0x17b5: 0x0040,
+ 0x17b6: 0x0040, 0x17b7: 0x0040, 0x17b8: 0x0040, 0x17b9: 0x0040, 0x17ba: 0x0040, 0x17bb: 0x0040,
+ 0x17bc: 0x0040, 0x17bd: 0x0040, 0x17be: 0x0040, 0x17bf: 0x0040,
+ // Block 0x5f, offset 0x17c0
+ 0x17c0: 0x3308, 0x17c1: 0x3308, 0x17c2: 0x3008, 0x17c3: 0x3008, 0x17c4: 0x0040, 0x17c5: 0x0008,
+ 0x17c6: 0x0008, 0x17c7: 0x0008, 0x17c8: 0x0008, 0x17c9: 0x0008, 0x17ca: 0x0008, 0x17cb: 0x0008,
+ 0x17cc: 0x0008, 0x17cd: 0x0040, 0x17ce: 0x0040, 0x17cf: 0x0008, 0x17d0: 0x0008, 0x17d1: 0x0040,
+ 0x17d2: 0x0040, 0x17d3: 0x0008, 0x17d4: 0x0008, 0x17d5: 0x0008, 0x17d6: 0x0008, 0x17d7: 0x0008,
+ 0x17d8: 0x0008, 0x17d9: 0x0008, 0x17da: 0x0008, 0x17db: 0x0008, 0x17dc: 0x0008, 0x17dd: 0x0008,
+ 0x17de: 0x0008, 0x17df: 0x0008, 0x17e0: 0x0008, 0x17e1: 0x0008, 0x17e2: 0x0008, 0x17e3: 0x0008,
+ 0x17e4: 0x0008, 0x17e5: 0x0008, 0x17e6: 0x0008, 0x17e7: 0x0008, 0x17e8: 0x0008, 0x17e9: 0x0040,
+ 0x17ea: 0x0008, 0x17eb: 0x0008, 0x17ec: 0x0008, 0x17ed: 0x0008, 0x17ee: 0x0008, 0x17ef: 0x0008,
+ 0x17f0: 0x0008, 0x17f1: 0x0040, 0x17f2: 0x0008, 0x17f3: 0x0008, 0x17f4: 0x0040, 0x17f5: 0x0008,
+ 0x17f6: 0x0008, 0x17f7: 0x0008, 0x17f8: 0x0008, 0x17f9: 0x0008, 0x17fa: 0x0040, 0x17fb: 0x3308,
+ 0x17fc: 0x3308, 0x17fd: 0x0008, 0x17fe: 0x3008, 0x17ff: 0x3008,
+ // Block 0x60, offset 0x1800
+ 0x1800: 0x3308, 0x1801: 0x3008, 0x1802: 0x3008, 0x1803: 0x3008, 0x1804: 0x3008, 0x1805: 0x0040,
+ 0x1806: 0x0040, 0x1807: 0x3008, 0x1808: 0x3008, 0x1809: 0x0040, 0x180a: 0x0040, 0x180b: 0x3008,
+ 0x180c: 0x3008, 0x180d: 0x3808, 0x180e: 0x0040, 0x180f: 0x0040, 0x1810: 0x0008, 0x1811: 0x0040,
+ 0x1812: 0x0040, 0x1813: 0x0040, 0x1814: 0x0040, 0x1815: 0x0040, 0x1816: 0x0040, 0x1817: 0x3008,
+ 0x1818: 0x0040, 0x1819: 0x0040, 0x181a: 0x0040, 0x181b: 0x0040, 0x181c: 0x0040, 0x181d: 0x0008,
+ 0x181e: 0x0008, 0x181f: 0x0008, 0x1820: 0x0008, 0x1821: 0x0008, 0x1822: 0x3008, 0x1823: 0x3008,
+ 0x1824: 0x0040, 0x1825: 0x0040, 0x1826: 0x3308, 0x1827: 0x3308, 0x1828: 0x3308, 0x1829: 0x3308,
+ 0x182a: 0x3308, 0x182b: 0x3308, 0x182c: 0x3308, 0x182d: 0x0040, 0x182e: 0x0040, 0x182f: 0x0040,
+ 0x1830: 0x3308, 0x1831: 0x3308, 0x1832: 0x3308, 0x1833: 0x3308, 0x1834: 0x3308, 0x1835: 0x0040,
+ 0x1836: 0x0040, 0x1837: 0x0040, 0x1838: 0x0040, 0x1839: 0x0040, 0x183a: 0x0040, 0x183b: 0x0040,
+ 0x183c: 0x0040, 0x183d: 0x0040, 0x183e: 0x0040, 0x183f: 0x0040,
+ // Block 0x61, offset 0x1840
+ 0x1840: 0x0008, 0x1841: 0x0008, 0x1842: 0x0008, 0x1843: 0x0008, 0x1844: 0x0008, 0x1845: 0x0008,
+ 0x1846: 0x0008, 0x1847: 0x0040, 0x1848: 0x0040, 0x1849: 0x0008, 0x184a: 0x0040, 0x184b: 0x0040,
+ 0x184c: 0x0008, 0x184d: 0x0008, 0x184e: 0x0008, 0x184f: 0x0008, 0x1850: 0x0008, 0x1851: 0x0008,
+ 0x1852: 0x0008, 0x1853: 0x0008, 0x1854: 0x0040, 0x1855: 0x0008, 0x1856: 0x0008, 0x1857: 0x0040,
+ 0x1858: 0x0008, 0x1859: 0x0008, 0x185a: 0x0008, 0x185b: 0x0008, 0x185c: 0x0008, 0x185d: 0x0008,
+ 0x185e: 0x0008, 0x185f: 0x0008, 0x1860: 0x0008, 0x1861: 0x0008, 0x1862: 0x0008, 0x1863: 0x0008,
+ 0x1864: 0x0008, 0x1865: 0x0008, 0x1866: 0x0008, 0x1867: 0x0008, 0x1868: 0x0008, 0x1869: 0x0008,
+ 0x186a: 0x0008, 0x186b: 0x0008, 0x186c: 0x0008, 0x186d: 0x0008, 0x186e: 0x0008, 0x186f: 0x0008,
+ 0x1870: 0x3008, 0x1871: 0x3008, 0x1872: 0x3008, 0x1873: 0x3008, 0x1874: 0x3008, 0x1875: 0x3008,
+ 0x1876: 0x0040, 0x1877: 0x3008, 0x1878: 0x3008, 0x1879: 0x0040, 0x187a: 0x0040, 0x187b: 0x3308,
+ 0x187c: 0x3308, 0x187d: 0x3808, 0x187e: 0x3b08, 0x187f: 0x0008,
+ // Block 0x62, offset 0x1880
+ 0x1880: 0x0039, 0x1881: 0x0ee9, 0x1882: 0x1159, 0x1883: 0x0ef9, 0x1884: 0x0f09, 0x1885: 0x1199,
+ 0x1886: 0x0f31, 0x1887: 0x0249, 0x1888: 0x0f41, 0x1889: 0x0259, 0x188a: 0x0f51, 0x188b: 0x0359,
+ 0x188c: 0x0f61, 0x188d: 0x0f71, 0x188e: 0x00d9, 0x188f: 0x0f99, 0x1890: 0x2039, 0x1891: 0x0269,
+ 0x1892: 0x01d9, 0x1893: 0x0fa9, 0x1894: 0x0fb9, 0x1895: 0x1089, 0x1896: 0x0279, 0x1897: 0x0369,
+ 0x1898: 0x0289, 0x1899: 0x13d1, 0x189a: 0x0039, 0x189b: 0x0ee9, 0x189c: 0x1159, 0x189d: 0x0ef9,
+ 0x189e: 0x0f09, 0x189f: 0x1199, 0x18a0: 0x0f31, 0x18a1: 0x0249, 0x18a2: 0x0f41, 0x18a3: 0x0259,
+ 0x18a4: 0x0f51, 0x18a5: 0x0359, 0x18a6: 0x0f61, 0x18a7: 0x0f71, 0x18a8: 0x00d9, 0x18a9: 0x0f99,
+ 0x18aa: 0x2039, 0x18ab: 0x0269, 0x18ac: 0x01d9, 0x18ad: 0x0fa9, 0x18ae: 0x0fb9, 0x18af: 0x1089,
+ 0x18b0: 0x0279, 0x18b1: 0x0369, 0x18b2: 0x0289, 0x18b3: 0x13d1, 0x18b4: 0x0039, 0x18b5: 0x0ee9,
+ 0x18b6: 0x1159, 0x18b7: 0x0ef9, 0x18b8: 0x0f09, 0x18b9: 0x1199, 0x18ba: 0x0f31, 0x18bb: 0x0249,
+ 0x18bc: 0x0f41, 0x18bd: 0x0259, 0x18be: 0x0f51, 0x18bf: 0x0359,
+ // Block 0x63, offset 0x18c0
+ 0x18c0: 0x0f61, 0x18c1: 0x0f71, 0x18c2: 0x00d9, 0x18c3: 0x0f99, 0x18c4: 0x2039, 0x18c5: 0x0269,
+ 0x18c6: 0x01d9, 0x18c7: 0x0fa9, 0x18c8: 0x0fb9, 0x18c9: 0x1089, 0x18ca: 0x0279, 0x18cb: 0x0369,
+ 0x18cc: 0x0289, 0x18cd: 0x13d1, 0x18ce: 0x0039, 0x18cf: 0x0ee9, 0x18d0: 0x1159, 0x18d1: 0x0ef9,
+ 0x18d2: 0x0f09, 0x18d3: 0x1199, 0x18d4: 0x0f31, 0x18d5: 0x0040, 0x18d6: 0x0f41, 0x18d7: 0x0259,
+ 0x18d8: 0x0f51, 0x18d9: 0x0359, 0x18da: 0x0f61, 0x18db: 0x0f71, 0x18dc: 0x00d9, 0x18dd: 0x0f99,
+ 0x18de: 0x2039, 0x18df: 0x0269, 0x18e0: 0x01d9, 0x18e1: 0x0fa9, 0x18e2: 0x0fb9, 0x18e3: 0x1089,
+ 0x18e4: 0x0279, 0x18e5: 0x0369, 0x18e6: 0x0289, 0x18e7: 0x13d1, 0x18e8: 0x0039, 0x18e9: 0x0ee9,
+ 0x18ea: 0x1159, 0x18eb: 0x0ef9, 0x18ec: 0x0f09, 0x18ed: 0x1199, 0x18ee: 0x0f31, 0x18ef: 0x0249,
+ 0x18f0: 0x0f41, 0x18f1: 0x0259, 0x18f2: 0x0f51, 0x18f3: 0x0359, 0x18f4: 0x0f61, 0x18f5: 0x0f71,
+ 0x18f6: 0x00d9, 0x18f7: 0x0f99, 0x18f8: 0x2039, 0x18f9: 0x0269, 0x18fa: 0x01d9, 0x18fb: 0x0fa9,
+ 0x18fc: 0x0fb9, 0x18fd: 0x1089, 0x18fe: 0x0279, 0x18ff: 0x0369,
+ // Block 0x64, offset 0x1900
+ 0x1900: 0x0289, 0x1901: 0x13d1, 0x1902: 0x0039, 0x1903: 0x0ee9, 0x1904: 0x1159, 0x1905: 0x0ef9,
+ 0x1906: 0x0f09, 0x1907: 0x1199, 0x1908: 0x0f31, 0x1909: 0x0249, 0x190a: 0x0f41, 0x190b: 0x0259,
+ 0x190c: 0x0f51, 0x190d: 0x0359, 0x190e: 0x0f61, 0x190f: 0x0f71, 0x1910: 0x00d9, 0x1911: 0x0f99,
+ 0x1912: 0x2039, 0x1913: 0x0269, 0x1914: 0x01d9, 0x1915: 0x0fa9, 0x1916: 0x0fb9, 0x1917: 0x1089,
+ 0x1918: 0x0279, 0x1919: 0x0369, 0x191a: 0x0289, 0x191b: 0x13d1, 0x191c: 0x0039, 0x191d: 0x0040,
+ 0x191e: 0x1159, 0x191f: 0x0ef9, 0x1920: 0x0040, 0x1921: 0x0040, 0x1922: 0x0f31, 0x1923: 0x0040,
+ 0x1924: 0x0040, 0x1925: 0x0259, 0x1926: 0x0f51, 0x1927: 0x0040, 0x1928: 0x0040, 0x1929: 0x0f71,
+ 0x192a: 0x00d9, 0x192b: 0x0f99, 0x192c: 0x2039, 0x192d: 0x0040, 0x192e: 0x01d9, 0x192f: 0x0fa9,
+ 0x1930: 0x0fb9, 0x1931: 0x1089, 0x1932: 0x0279, 0x1933: 0x0369, 0x1934: 0x0289, 0x1935: 0x13d1,
+ 0x1936: 0x0039, 0x1937: 0x0ee9, 0x1938: 0x1159, 0x1939: 0x0ef9, 0x193a: 0x0040, 0x193b: 0x1199,
+ 0x193c: 0x0040, 0x193d: 0x0249, 0x193e: 0x0f41, 0x193f: 0x0259,
+ // Block 0x65, offset 0x1940
+ 0x1940: 0x0f51, 0x1941: 0x0359, 0x1942: 0x0f61, 0x1943: 0x0f71, 0x1944: 0x0040, 0x1945: 0x0f99,
+ 0x1946: 0x2039, 0x1947: 0x0269, 0x1948: 0x01d9, 0x1949: 0x0fa9, 0x194a: 0x0fb9, 0x194b: 0x1089,
+ 0x194c: 0x0279, 0x194d: 0x0369, 0x194e: 0x0289, 0x194f: 0x13d1, 0x1950: 0x0039, 0x1951: 0x0ee9,
+ 0x1952: 0x1159, 0x1953: 0x0ef9, 0x1954: 0x0f09, 0x1955: 0x1199, 0x1956: 0x0f31, 0x1957: 0x0249,
+ 0x1958: 0x0f41, 0x1959: 0x0259, 0x195a: 0x0f51, 0x195b: 0x0359, 0x195c: 0x0f61, 0x195d: 0x0f71,
+ 0x195e: 0x00d9, 0x195f: 0x0f99, 0x1960: 0x2039, 0x1961: 0x0269, 0x1962: 0x01d9, 0x1963: 0x0fa9,
+ 0x1964: 0x0fb9, 0x1965: 0x1089, 0x1966: 0x0279, 0x1967: 0x0369, 0x1968: 0x0289, 0x1969: 0x13d1,
+ 0x196a: 0x0039, 0x196b: 0x0ee9, 0x196c: 0x1159, 0x196d: 0x0ef9, 0x196e: 0x0f09, 0x196f: 0x1199,
+ 0x1970: 0x0f31, 0x1971: 0x0249, 0x1972: 0x0f41, 0x1973: 0x0259, 0x1974: 0x0f51, 0x1975: 0x0359,
+ 0x1976: 0x0f61, 0x1977: 0x0f71, 0x1978: 0x00d9, 0x1979: 0x0f99, 0x197a: 0x2039, 0x197b: 0x0269,
+ 0x197c: 0x01d9, 0x197d: 0x0fa9, 0x197e: 0x0fb9, 0x197f: 0x1089,
+ // Block 0x66, offset 0x1980
+ 0x1980: 0x0279, 0x1981: 0x0369, 0x1982: 0x0289, 0x1983: 0x13d1, 0x1984: 0x0039, 0x1985: 0x0ee9,
+ 0x1986: 0x0040, 0x1987: 0x0ef9, 0x1988: 0x0f09, 0x1989: 0x1199, 0x198a: 0x0f31, 0x198b: 0x0040,
+ 0x198c: 0x0040, 0x198d: 0x0259, 0x198e: 0x0f51, 0x198f: 0x0359, 0x1990: 0x0f61, 0x1991: 0x0f71,
+ 0x1992: 0x00d9, 0x1993: 0x0f99, 0x1994: 0x2039, 0x1995: 0x0040, 0x1996: 0x01d9, 0x1997: 0x0fa9,
+ 0x1998: 0x0fb9, 0x1999: 0x1089, 0x199a: 0x0279, 0x199b: 0x0369, 0x199c: 0x0289, 0x199d: 0x0040,
+ 0x199e: 0x0039, 0x199f: 0x0ee9, 0x19a0: 0x1159, 0x19a1: 0x0ef9, 0x19a2: 0x0f09, 0x19a3: 0x1199,
+ 0x19a4: 0x0f31, 0x19a5: 0x0249, 0x19a6: 0x0f41, 0x19a7: 0x0259, 0x19a8: 0x0f51, 0x19a9: 0x0359,
+ 0x19aa: 0x0f61, 0x19ab: 0x0f71, 0x19ac: 0x00d9, 0x19ad: 0x0f99, 0x19ae: 0x2039, 0x19af: 0x0269,
+ 0x19b0: 0x01d9, 0x19b1: 0x0fa9, 0x19b2: 0x0fb9, 0x19b3: 0x1089, 0x19b4: 0x0279, 0x19b5: 0x0369,
+ 0x19b6: 0x0289, 0x19b7: 0x13d1, 0x19b8: 0x0039, 0x19b9: 0x0ee9, 0x19ba: 0x0040, 0x19bb: 0x0ef9,
+ 0x19bc: 0x0f09, 0x19bd: 0x1199, 0x19be: 0x0f31, 0x19bf: 0x0040,
+ // Block 0x67, offset 0x19c0
+ 0x19c0: 0x0f41, 0x19c1: 0x0259, 0x19c2: 0x0f51, 0x19c3: 0x0359, 0x19c4: 0x0f61, 0x19c5: 0x0040,
+ 0x19c6: 0x00d9, 0x19c7: 0x0040, 0x19c8: 0x0040, 0x19c9: 0x0040, 0x19ca: 0x01d9, 0x19cb: 0x0fa9,
+ 0x19cc: 0x0fb9, 0x19cd: 0x1089, 0x19ce: 0x0279, 0x19cf: 0x0369, 0x19d0: 0x0289, 0x19d1: 0x0040,
+ 0x19d2: 0x0039, 0x19d3: 0x0ee9, 0x19d4: 0x1159, 0x19d5: 0x0ef9, 0x19d6: 0x0f09, 0x19d7: 0x1199,
+ 0x19d8: 0x0f31, 0x19d9: 0x0249, 0x19da: 0x0f41, 0x19db: 0x0259, 0x19dc: 0x0f51, 0x19dd: 0x0359,
+ 0x19de: 0x0f61, 0x19df: 0x0f71, 0x19e0: 0x00d9, 0x19e1: 0x0f99, 0x19e2: 0x2039, 0x19e3: 0x0269,
+ 0x19e4: 0x01d9, 0x19e5: 0x0fa9, 0x19e6: 0x0fb9, 0x19e7: 0x1089, 0x19e8: 0x0279, 0x19e9: 0x0369,
+ 0x19ea: 0x0289, 0x19eb: 0x13d1, 0x19ec: 0x0039, 0x19ed: 0x0ee9, 0x19ee: 0x1159, 0x19ef: 0x0ef9,
+ 0x19f0: 0x0f09, 0x19f1: 0x1199, 0x19f2: 0x0f31, 0x19f3: 0x0249, 0x19f4: 0x0f41, 0x19f5: 0x0259,
+ 0x19f6: 0x0f51, 0x19f7: 0x0359, 0x19f8: 0x0f61, 0x19f9: 0x0f71, 0x19fa: 0x00d9, 0x19fb: 0x0f99,
+ 0x19fc: 0x2039, 0x19fd: 0x0269, 0x19fe: 0x01d9, 0x19ff: 0x0fa9,
+ // Block 0x68, offset 0x1a00
+ 0x1a00: 0x0fb9, 0x1a01: 0x1089, 0x1a02: 0x0279, 0x1a03: 0x0369, 0x1a04: 0x0289, 0x1a05: 0x13d1,
+ 0x1a06: 0x0039, 0x1a07: 0x0ee9, 0x1a08: 0x1159, 0x1a09: 0x0ef9, 0x1a0a: 0x0f09, 0x1a0b: 0x1199,
+ 0x1a0c: 0x0f31, 0x1a0d: 0x0249, 0x1a0e: 0x0f41, 0x1a0f: 0x0259, 0x1a10: 0x0f51, 0x1a11: 0x0359,
+ 0x1a12: 0x0f61, 0x1a13: 0x0f71, 0x1a14: 0x00d9, 0x1a15: 0x0f99, 0x1a16: 0x2039, 0x1a17: 0x0269,
+ 0x1a18: 0x01d9, 0x1a19: 0x0fa9, 0x1a1a: 0x0fb9, 0x1a1b: 0x1089, 0x1a1c: 0x0279, 0x1a1d: 0x0369,
+ 0x1a1e: 0x0289, 0x1a1f: 0x13d1, 0x1a20: 0x0039, 0x1a21: 0x0ee9, 0x1a22: 0x1159, 0x1a23: 0x0ef9,
+ 0x1a24: 0x0f09, 0x1a25: 0x1199, 0x1a26: 0x0f31, 0x1a27: 0x0249, 0x1a28: 0x0f41, 0x1a29: 0x0259,
+ 0x1a2a: 0x0f51, 0x1a2b: 0x0359, 0x1a2c: 0x0f61, 0x1a2d: 0x0f71, 0x1a2e: 0x00d9, 0x1a2f: 0x0f99,
+ 0x1a30: 0x2039, 0x1a31: 0x0269, 0x1a32: 0x01d9, 0x1a33: 0x0fa9, 0x1a34: 0x0fb9, 0x1a35: 0x1089,
+ 0x1a36: 0x0279, 0x1a37: 0x0369, 0x1a38: 0x0289, 0x1a39: 0x13d1, 0x1a3a: 0x0039, 0x1a3b: 0x0ee9,
+ 0x1a3c: 0x1159, 0x1a3d: 0x0ef9, 0x1a3e: 0x0f09, 0x1a3f: 0x1199,
+ // Block 0x69, offset 0x1a40
+ 0x1a40: 0x0f31, 0x1a41: 0x0249, 0x1a42: 0x0f41, 0x1a43: 0x0259, 0x1a44: 0x0f51, 0x1a45: 0x0359,
+ 0x1a46: 0x0f61, 0x1a47: 0x0f71, 0x1a48: 0x00d9, 0x1a49: 0x0f99, 0x1a4a: 0x2039, 0x1a4b: 0x0269,
+ 0x1a4c: 0x01d9, 0x1a4d: 0x0fa9, 0x1a4e: 0x0fb9, 0x1a4f: 0x1089, 0x1a50: 0x0279, 0x1a51: 0x0369,
+ 0x1a52: 0x0289, 0x1a53: 0x13d1, 0x1a54: 0x0039, 0x1a55: 0x0ee9, 0x1a56: 0x1159, 0x1a57: 0x0ef9,
+ 0x1a58: 0x0f09, 0x1a59: 0x1199, 0x1a5a: 0x0f31, 0x1a5b: 0x0249, 0x1a5c: 0x0f41, 0x1a5d: 0x0259,
+ 0x1a5e: 0x0f51, 0x1a5f: 0x0359, 0x1a60: 0x0f61, 0x1a61: 0x0f71, 0x1a62: 0x00d9, 0x1a63: 0x0f99,
+ 0x1a64: 0x2039, 0x1a65: 0x0269, 0x1a66: 0x01d9, 0x1a67: 0x0fa9, 0x1a68: 0x0fb9, 0x1a69: 0x1089,
+ 0x1a6a: 0x0279, 0x1a6b: 0x0369, 0x1a6c: 0x0289, 0x1a6d: 0x13d1, 0x1a6e: 0x0039, 0x1a6f: 0x0ee9,
+ 0x1a70: 0x1159, 0x1a71: 0x0ef9, 0x1a72: 0x0f09, 0x1a73: 0x1199, 0x1a74: 0x0f31, 0x1a75: 0x0249,
+ 0x1a76: 0x0f41, 0x1a77: 0x0259, 0x1a78: 0x0f51, 0x1a79: 0x0359, 0x1a7a: 0x0f61, 0x1a7b: 0x0f71,
+ 0x1a7c: 0x00d9, 0x1a7d: 0x0f99, 0x1a7e: 0x2039, 0x1a7f: 0x0269,
+ // Block 0x6a, offset 0x1a80
+ 0x1a80: 0x01d9, 0x1a81: 0x0fa9, 0x1a82: 0x0fb9, 0x1a83: 0x1089, 0x1a84: 0x0279, 0x1a85: 0x0369,
+ 0x1a86: 0x0289, 0x1a87: 0x13d1, 0x1a88: 0x0039, 0x1a89: 0x0ee9, 0x1a8a: 0x1159, 0x1a8b: 0x0ef9,
+ 0x1a8c: 0x0f09, 0x1a8d: 0x1199, 0x1a8e: 0x0f31, 0x1a8f: 0x0249, 0x1a90: 0x0f41, 0x1a91: 0x0259,
+ 0x1a92: 0x0f51, 0x1a93: 0x0359, 0x1a94: 0x0f61, 0x1a95: 0x0f71, 0x1a96: 0x00d9, 0x1a97: 0x0f99,
+ 0x1a98: 0x2039, 0x1a99: 0x0269, 0x1a9a: 0x01d9, 0x1a9b: 0x0fa9, 0x1a9c: 0x0fb9, 0x1a9d: 0x1089,
+ 0x1a9e: 0x0279, 0x1a9f: 0x0369, 0x1aa0: 0x0289, 0x1aa1: 0x13d1, 0x1aa2: 0x0039, 0x1aa3: 0x0ee9,
+ 0x1aa4: 0x1159, 0x1aa5: 0x0ef9, 0x1aa6: 0x0f09, 0x1aa7: 0x1199, 0x1aa8: 0x0f31, 0x1aa9: 0x0249,
+ 0x1aaa: 0x0f41, 0x1aab: 0x0259, 0x1aac: 0x0f51, 0x1aad: 0x0359, 0x1aae: 0x0f61, 0x1aaf: 0x0f71,
+ 0x1ab0: 0x00d9, 0x1ab1: 0x0f99, 0x1ab2: 0x2039, 0x1ab3: 0x0269, 0x1ab4: 0x01d9, 0x1ab5: 0x0fa9,
+ 0x1ab6: 0x0fb9, 0x1ab7: 0x1089, 0x1ab8: 0x0279, 0x1ab9: 0x0369, 0x1aba: 0x0289, 0x1abb: 0x13d1,
+ 0x1abc: 0x0039, 0x1abd: 0x0ee9, 0x1abe: 0x1159, 0x1abf: 0x0ef9,
+ // Block 0x6b, offset 0x1ac0
+ 0x1ac0: 0x0f09, 0x1ac1: 0x1199, 0x1ac2: 0x0f31, 0x1ac3: 0x0249, 0x1ac4: 0x0f41, 0x1ac5: 0x0259,
+ 0x1ac6: 0x0f51, 0x1ac7: 0x0359, 0x1ac8: 0x0f61, 0x1ac9: 0x0f71, 0x1aca: 0x00d9, 0x1acb: 0x0f99,
+ 0x1acc: 0x2039, 0x1acd: 0x0269, 0x1ace: 0x01d9, 0x1acf: 0x0fa9, 0x1ad0: 0x0fb9, 0x1ad1: 0x1089,
+ 0x1ad2: 0x0279, 0x1ad3: 0x0369, 0x1ad4: 0x0289, 0x1ad5: 0x13d1, 0x1ad6: 0x0039, 0x1ad7: 0x0ee9,
+ 0x1ad8: 0x1159, 0x1ad9: 0x0ef9, 0x1ada: 0x0f09, 0x1adb: 0x1199, 0x1adc: 0x0f31, 0x1add: 0x0249,
+ 0x1ade: 0x0f41, 0x1adf: 0x0259, 0x1ae0: 0x0f51, 0x1ae1: 0x0359, 0x1ae2: 0x0f61, 0x1ae3: 0x0f71,
+ 0x1ae4: 0x00d9, 0x1ae5: 0x0f99, 0x1ae6: 0x2039, 0x1ae7: 0x0269, 0x1ae8: 0x01d9, 0x1ae9: 0x0fa9,
+ 0x1aea: 0x0fb9, 0x1aeb: 0x1089, 0x1aec: 0x0279, 0x1aed: 0x0369, 0x1aee: 0x0289, 0x1aef: 0x13d1,
+ 0x1af0: 0x0039, 0x1af1: 0x0ee9, 0x1af2: 0x1159, 0x1af3: 0x0ef9, 0x1af4: 0x0f09, 0x1af5: 0x1199,
+ 0x1af6: 0x0f31, 0x1af7: 0x0249, 0x1af8: 0x0f41, 0x1af9: 0x0259, 0x1afa: 0x0f51, 0x1afb: 0x0359,
+ 0x1afc: 0x0f61, 0x1afd: 0x0f71, 0x1afe: 0x00d9, 0x1aff: 0x0f99,
+ // Block 0x6c, offset 0x1b00
+ 0x1b00: 0x2039, 0x1b01: 0x0269, 0x1b02: 0x01d9, 0x1b03: 0x0fa9, 0x1b04: 0x0fb9, 0x1b05: 0x1089,
+ 0x1b06: 0x0279, 0x1b07: 0x0369, 0x1b08: 0x0289, 0x1b09: 0x13d1, 0x1b0a: 0x0039, 0x1b0b: 0x0ee9,
+ 0x1b0c: 0x1159, 0x1b0d: 0x0ef9, 0x1b0e: 0x0f09, 0x1b0f: 0x1199, 0x1b10: 0x0f31, 0x1b11: 0x0249,
+ 0x1b12: 0x0f41, 0x1b13: 0x0259, 0x1b14: 0x0f51, 0x1b15: 0x0359, 0x1b16: 0x0f61, 0x1b17: 0x0f71,
+ 0x1b18: 0x00d9, 0x1b19: 0x0f99, 0x1b1a: 0x2039, 0x1b1b: 0x0269, 0x1b1c: 0x01d9, 0x1b1d: 0x0fa9,
+ 0x1b1e: 0x0fb9, 0x1b1f: 0x1089, 0x1b20: 0x0279, 0x1b21: 0x0369, 0x1b22: 0x0289, 0x1b23: 0x13d1,
+ 0x1b24: 0xbad1, 0x1b25: 0xbae9, 0x1b26: 0x0040, 0x1b27: 0x0040, 0x1b28: 0xbb01, 0x1b29: 0x1099,
+ 0x1b2a: 0x10b1, 0x1b2b: 0x10c9, 0x1b2c: 0xbb19, 0x1b2d: 0xbb31, 0x1b2e: 0xbb49, 0x1b2f: 0x1429,
+ 0x1b30: 0x1a31, 0x1b31: 0xbb61, 0x1b32: 0xbb79, 0x1b33: 0xbb91, 0x1b34: 0xbba9, 0x1b35: 0xbbc1,
+ 0x1b36: 0xbbd9, 0x1b37: 0x2109, 0x1b38: 0x1111, 0x1b39: 0x1429, 0x1b3a: 0xbbf1, 0x1b3b: 0xbc09,
+ 0x1b3c: 0xbc21, 0x1b3d: 0x10e1, 0x1b3e: 0x10f9, 0x1b3f: 0xbc39,
+ // Block 0x6d, offset 0x1b40
+ 0x1b40: 0x2079, 0x1b41: 0xbc51, 0x1b42: 0xbb01, 0x1b43: 0x1099, 0x1b44: 0x10b1, 0x1b45: 0x10c9,
+ 0x1b46: 0xbb19, 0x1b47: 0xbb31, 0x1b48: 0xbb49, 0x1b49: 0x1429, 0x1b4a: 0x1a31, 0x1b4b: 0xbb61,
+ 0x1b4c: 0xbb79, 0x1b4d: 0xbb91, 0x1b4e: 0xbba9, 0x1b4f: 0xbbc1, 0x1b50: 0xbbd9, 0x1b51: 0x2109,
+ 0x1b52: 0x1111, 0x1b53: 0xbbf1, 0x1b54: 0xbbf1, 0x1b55: 0xbc09, 0x1b56: 0xbc21, 0x1b57: 0x10e1,
+ 0x1b58: 0x10f9, 0x1b59: 0xbc39, 0x1b5a: 0x2079, 0x1b5b: 0xbc71, 0x1b5c: 0xbb19, 0x1b5d: 0x1429,
+ 0x1b5e: 0xbb61, 0x1b5f: 0x10e1, 0x1b60: 0x1111, 0x1b61: 0x2109, 0x1b62: 0xbb01, 0x1b63: 0x1099,
+ 0x1b64: 0x10b1, 0x1b65: 0x10c9, 0x1b66: 0xbb19, 0x1b67: 0xbb31, 0x1b68: 0xbb49, 0x1b69: 0x1429,
+ 0x1b6a: 0x1a31, 0x1b6b: 0xbb61, 0x1b6c: 0xbb79, 0x1b6d: 0xbb91, 0x1b6e: 0xbba9, 0x1b6f: 0xbbc1,
+ 0x1b70: 0xbbd9, 0x1b71: 0x2109, 0x1b72: 0x1111, 0x1b73: 0x1429, 0x1b74: 0xbbf1, 0x1b75: 0xbc09,
+ 0x1b76: 0xbc21, 0x1b77: 0x10e1, 0x1b78: 0x10f9, 0x1b79: 0xbc39, 0x1b7a: 0x2079, 0x1b7b: 0xbc51,
+ 0x1b7c: 0xbb01, 0x1b7d: 0x1099, 0x1b7e: 0x10b1, 0x1b7f: 0x10c9,
+ // Block 0x6e, offset 0x1b80
+ 0x1b80: 0xbb19, 0x1b81: 0xbb31, 0x1b82: 0xbb49, 0x1b83: 0x1429, 0x1b84: 0x1a31, 0x1b85: 0xbb61,
+ 0x1b86: 0xbb79, 0x1b87: 0xbb91, 0x1b88: 0xbba9, 0x1b89: 0xbbc1, 0x1b8a: 0xbbd9, 0x1b8b: 0x2109,
+ 0x1b8c: 0x1111, 0x1b8d: 0xbbf1, 0x1b8e: 0xbbf1, 0x1b8f: 0xbc09, 0x1b90: 0xbc21, 0x1b91: 0x10e1,
+ 0x1b92: 0x10f9, 0x1b93: 0xbc39, 0x1b94: 0x2079, 0x1b95: 0xbc71, 0x1b96: 0xbb19, 0x1b97: 0x1429,
+ 0x1b98: 0xbb61, 0x1b99: 0x10e1, 0x1b9a: 0x1111, 0x1b9b: 0x2109, 0x1b9c: 0xbb01, 0x1b9d: 0x1099,
+ 0x1b9e: 0x10b1, 0x1b9f: 0x10c9, 0x1ba0: 0xbb19, 0x1ba1: 0xbb31, 0x1ba2: 0xbb49, 0x1ba3: 0x1429,
+ 0x1ba4: 0x1a31, 0x1ba5: 0xbb61, 0x1ba6: 0xbb79, 0x1ba7: 0xbb91, 0x1ba8: 0xbba9, 0x1ba9: 0xbbc1,
+ 0x1baa: 0xbbd9, 0x1bab: 0x2109, 0x1bac: 0x1111, 0x1bad: 0x1429, 0x1bae: 0xbbf1, 0x1baf: 0xbc09,
+ 0x1bb0: 0xbc21, 0x1bb1: 0x10e1, 0x1bb2: 0x10f9, 0x1bb3: 0xbc39, 0x1bb4: 0x2079, 0x1bb5: 0xbc51,
+ 0x1bb6: 0xbb01, 0x1bb7: 0x1099, 0x1bb8: 0x10b1, 0x1bb9: 0x10c9, 0x1bba: 0xbb19, 0x1bbb: 0xbb31,
+ 0x1bbc: 0xbb49, 0x1bbd: 0x1429, 0x1bbe: 0x1a31, 0x1bbf: 0xbb61,
+ // Block 0x6f, offset 0x1bc0
+ 0x1bc0: 0xbb79, 0x1bc1: 0xbb91, 0x1bc2: 0xbba9, 0x1bc3: 0xbbc1, 0x1bc4: 0xbbd9, 0x1bc5: 0x2109,
+ 0x1bc6: 0x1111, 0x1bc7: 0xbbf1, 0x1bc8: 0xbbf1, 0x1bc9: 0xbc09, 0x1bca: 0xbc21, 0x1bcb: 0x10e1,
+ 0x1bcc: 0x10f9, 0x1bcd: 0xbc39, 0x1bce: 0x2079, 0x1bcf: 0xbc71, 0x1bd0: 0xbb19, 0x1bd1: 0x1429,
+ 0x1bd2: 0xbb61, 0x1bd3: 0x10e1, 0x1bd4: 0x1111, 0x1bd5: 0x2109, 0x1bd6: 0xbb01, 0x1bd7: 0x1099,
+ 0x1bd8: 0x10b1, 0x1bd9: 0x10c9, 0x1bda: 0xbb19, 0x1bdb: 0xbb31, 0x1bdc: 0xbb49, 0x1bdd: 0x1429,
+ 0x1bde: 0x1a31, 0x1bdf: 0xbb61, 0x1be0: 0xbb79, 0x1be1: 0xbb91, 0x1be2: 0xbba9, 0x1be3: 0xbbc1,
+ 0x1be4: 0xbbd9, 0x1be5: 0x2109, 0x1be6: 0x1111, 0x1be7: 0x1429, 0x1be8: 0xbbf1, 0x1be9: 0xbc09,
+ 0x1bea: 0xbc21, 0x1beb: 0x10e1, 0x1bec: 0x10f9, 0x1bed: 0xbc39, 0x1bee: 0x2079, 0x1bef: 0xbc51,
+ 0x1bf0: 0xbb01, 0x1bf1: 0x1099, 0x1bf2: 0x10b1, 0x1bf3: 0x10c9, 0x1bf4: 0xbb19, 0x1bf5: 0xbb31,
+ 0x1bf6: 0xbb49, 0x1bf7: 0x1429, 0x1bf8: 0x1a31, 0x1bf9: 0xbb61, 0x1bfa: 0xbb79, 0x1bfb: 0xbb91,
+ 0x1bfc: 0xbba9, 0x1bfd: 0xbbc1, 0x1bfe: 0xbbd9, 0x1bff: 0x2109,
+ // Block 0x70, offset 0x1c00
+ 0x1c00: 0x1111, 0x1c01: 0xbbf1, 0x1c02: 0xbbf1, 0x1c03: 0xbc09, 0x1c04: 0xbc21, 0x1c05: 0x10e1,
+ 0x1c06: 0x10f9, 0x1c07: 0xbc39, 0x1c08: 0x2079, 0x1c09: 0xbc71, 0x1c0a: 0xbb19, 0x1c0b: 0x1429,
+ 0x1c0c: 0xbb61, 0x1c0d: 0x10e1, 0x1c0e: 0x1111, 0x1c0f: 0x2109, 0x1c10: 0xbb01, 0x1c11: 0x1099,
+ 0x1c12: 0x10b1, 0x1c13: 0x10c9, 0x1c14: 0xbb19, 0x1c15: 0xbb31, 0x1c16: 0xbb49, 0x1c17: 0x1429,
+ 0x1c18: 0x1a31, 0x1c19: 0xbb61, 0x1c1a: 0xbb79, 0x1c1b: 0xbb91, 0x1c1c: 0xbba9, 0x1c1d: 0xbbc1,
+ 0x1c1e: 0xbbd9, 0x1c1f: 0x2109, 0x1c20: 0x1111, 0x1c21: 0x1429, 0x1c22: 0xbbf1, 0x1c23: 0xbc09,
+ 0x1c24: 0xbc21, 0x1c25: 0x10e1, 0x1c26: 0x10f9, 0x1c27: 0xbc39, 0x1c28: 0x2079, 0x1c29: 0xbc51,
+ 0x1c2a: 0xbb01, 0x1c2b: 0x1099, 0x1c2c: 0x10b1, 0x1c2d: 0x10c9, 0x1c2e: 0xbb19, 0x1c2f: 0xbb31,
+ 0x1c30: 0xbb49, 0x1c31: 0x1429, 0x1c32: 0x1a31, 0x1c33: 0xbb61, 0x1c34: 0xbb79, 0x1c35: 0xbb91,
+ 0x1c36: 0xbba9, 0x1c37: 0xbbc1, 0x1c38: 0xbbd9, 0x1c39: 0x2109, 0x1c3a: 0x1111, 0x1c3b: 0xbbf1,
+ 0x1c3c: 0xbbf1, 0x1c3d: 0xbc09, 0x1c3e: 0xbc21, 0x1c3f: 0x10e1,
+ // Block 0x71, offset 0x1c40
+ 0x1c40: 0x10f9, 0x1c41: 0xbc39, 0x1c42: 0x2079, 0x1c43: 0xbc71, 0x1c44: 0xbb19, 0x1c45: 0x1429,
+ 0x1c46: 0xbb61, 0x1c47: 0x10e1, 0x1c48: 0x1111, 0x1c49: 0x2109, 0x1c4a: 0xbc91, 0x1c4b: 0xbc91,
+ 0x1c4c: 0x0040, 0x1c4d: 0x0040, 0x1c4e: 0x1f41, 0x1c4f: 0x00c9, 0x1c50: 0x0069, 0x1c51: 0x0079,
+ 0x1c52: 0x1f51, 0x1c53: 0x1f61, 0x1c54: 0x1f71, 0x1c55: 0x1f81, 0x1c56: 0x1f91, 0x1c57: 0x1fa1,
+ 0x1c58: 0x1f41, 0x1c59: 0x00c9, 0x1c5a: 0x0069, 0x1c5b: 0x0079, 0x1c5c: 0x1f51, 0x1c5d: 0x1f61,
+ 0x1c5e: 0x1f71, 0x1c5f: 0x1f81, 0x1c60: 0x1f91, 0x1c61: 0x1fa1, 0x1c62: 0x1f41, 0x1c63: 0x00c9,
+ 0x1c64: 0x0069, 0x1c65: 0x0079, 0x1c66: 0x1f51, 0x1c67: 0x1f61, 0x1c68: 0x1f71, 0x1c69: 0x1f81,
+ 0x1c6a: 0x1f91, 0x1c6b: 0x1fa1, 0x1c6c: 0x1f41, 0x1c6d: 0x00c9, 0x1c6e: 0x0069, 0x1c6f: 0x0079,
+ 0x1c70: 0x1f51, 0x1c71: 0x1f61, 0x1c72: 0x1f71, 0x1c73: 0x1f81, 0x1c74: 0x1f91, 0x1c75: 0x1fa1,
+ 0x1c76: 0x1f41, 0x1c77: 0x00c9, 0x1c78: 0x0069, 0x1c79: 0x0079, 0x1c7a: 0x1f51, 0x1c7b: 0x1f61,
+ 0x1c7c: 0x1f71, 0x1c7d: 0x1f81, 0x1c7e: 0x1f91, 0x1c7f: 0x1fa1,
+ // Block 0x72, offset 0x1c80
+ 0x1c80: 0xe115, 0x1c81: 0xe115, 0x1c82: 0xe135, 0x1c83: 0xe135, 0x1c84: 0xe115, 0x1c85: 0xe115,
+ 0x1c86: 0xe175, 0x1c87: 0xe175, 0x1c88: 0xe115, 0x1c89: 0xe115, 0x1c8a: 0xe135, 0x1c8b: 0xe135,
+ 0x1c8c: 0xe115, 0x1c8d: 0xe115, 0x1c8e: 0xe1f5, 0x1c8f: 0xe1f5, 0x1c90: 0xe115, 0x1c91: 0xe115,
+ 0x1c92: 0xe135, 0x1c93: 0xe135, 0x1c94: 0xe115, 0x1c95: 0xe115, 0x1c96: 0xe175, 0x1c97: 0xe175,
+ 0x1c98: 0xe115, 0x1c99: 0xe115, 0x1c9a: 0xe135, 0x1c9b: 0xe135, 0x1c9c: 0xe115, 0x1c9d: 0xe115,
+ 0x1c9e: 0x8b3d, 0x1c9f: 0x8b3d, 0x1ca0: 0x04b5, 0x1ca1: 0x04b5, 0x1ca2: 0x0a08, 0x1ca3: 0x0a08,
+ 0x1ca4: 0x0a08, 0x1ca5: 0x0a08, 0x1ca6: 0x0a08, 0x1ca7: 0x0a08, 0x1ca8: 0x0a08, 0x1ca9: 0x0a08,
+ 0x1caa: 0x0a08, 0x1cab: 0x0a08, 0x1cac: 0x0a08, 0x1cad: 0x0a08, 0x1cae: 0x0a08, 0x1caf: 0x0a08,
+ 0x1cb0: 0x0a08, 0x1cb1: 0x0a08, 0x1cb2: 0x0a08, 0x1cb3: 0x0a08, 0x1cb4: 0x0a08, 0x1cb5: 0x0a08,
+ 0x1cb6: 0x0a08, 0x1cb7: 0x0a08, 0x1cb8: 0x0a08, 0x1cb9: 0x0a08, 0x1cba: 0x0a08, 0x1cbb: 0x0a08,
+ 0x1cbc: 0x0a08, 0x1cbd: 0x0a08, 0x1cbe: 0x0a08, 0x1cbf: 0x0a08,
+ // Block 0x73, offset 0x1cc0
+ 0x1cc0: 0xb1d9, 0x1cc1: 0xb1f1, 0x1cc2: 0xb251, 0x1cc3: 0xb299, 0x1cc4: 0x0040, 0x1cc5: 0xb461,
+ 0x1cc6: 0xb2e1, 0x1cc7: 0xb269, 0x1cc8: 0xb359, 0x1cc9: 0xb479, 0x1cca: 0xb3e9, 0x1ccb: 0xb401,
+ 0x1ccc: 0xb419, 0x1ccd: 0xb431, 0x1cce: 0xb2f9, 0x1ccf: 0xb389, 0x1cd0: 0xb3b9, 0x1cd1: 0xb329,
+ 0x1cd2: 0xb3d1, 0x1cd3: 0xb2c9, 0x1cd4: 0xb311, 0x1cd5: 0xb221, 0x1cd6: 0xb239, 0x1cd7: 0xb281,
+ 0x1cd8: 0xb2b1, 0x1cd9: 0xb341, 0x1cda: 0xb371, 0x1cdb: 0xb3a1, 0x1cdc: 0xbca9, 0x1cdd: 0x7999,
+ 0x1cde: 0xbcc1, 0x1cdf: 0xbcd9, 0x1ce0: 0x0040, 0x1ce1: 0xb1f1, 0x1ce2: 0xb251, 0x1ce3: 0x0040,
+ 0x1ce4: 0xb449, 0x1ce5: 0x0040, 0x1ce6: 0x0040, 0x1ce7: 0xb269, 0x1ce8: 0x0040, 0x1ce9: 0xb479,
+ 0x1cea: 0xb3e9, 0x1ceb: 0xb401, 0x1cec: 0xb419, 0x1ced: 0xb431, 0x1cee: 0xb2f9, 0x1cef: 0xb389,
+ 0x1cf0: 0xb3b9, 0x1cf1: 0xb329, 0x1cf2: 0xb3d1, 0x1cf3: 0x0040, 0x1cf4: 0xb311, 0x1cf5: 0xb221,
+ 0x1cf6: 0xb239, 0x1cf7: 0xb281, 0x1cf8: 0x0040, 0x1cf9: 0xb341, 0x1cfa: 0x0040, 0x1cfb: 0xb3a1,
+ 0x1cfc: 0x0040, 0x1cfd: 0x0040, 0x1cfe: 0x0040, 0x1cff: 0x0040,
+ // Block 0x74, offset 0x1d00
+ 0x1d00: 0x0040, 0x1d01: 0x0040, 0x1d02: 0xb251, 0x1d03: 0x0040, 0x1d04: 0x0040, 0x1d05: 0x0040,
+ 0x1d06: 0x0040, 0x1d07: 0xb269, 0x1d08: 0x0040, 0x1d09: 0xb479, 0x1d0a: 0x0040, 0x1d0b: 0xb401,
+ 0x1d0c: 0x0040, 0x1d0d: 0xb431, 0x1d0e: 0xb2f9, 0x1d0f: 0xb389, 0x1d10: 0x0040, 0x1d11: 0xb329,
+ 0x1d12: 0xb3d1, 0x1d13: 0x0040, 0x1d14: 0xb311, 0x1d15: 0x0040, 0x1d16: 0x0040, 0x1d17: 0xb281,
+ 0x1d18: 0x0040, 0x1d19: 0xb341, 0x1d1a: 0x0040, 0x1d1b: 0xb3a1, 0x1d1c: 0x0040, 0x1d1d: 0x7999,
+ 0x1d1e: 0x0040, 0x1d1f: 0xbcd9, 0x1d20: 0x0040, 0x1d21: 0xb1f1, 0x1d22: 0xb251, 0x1d23: 0x0040,
+ 0x1d24: 0xb449, 0x1d25: 0x0040, 0x1d26: 0x0040, 0x1d27: 0xb269, 0x1d28: 0xb359, 0x1d29: 0xb479,
+ 0x1d2a: 0xb3e9, 0x1d2b: 0x0040, 0x1d2c: 0xb419, 0x1d2d: 0xb431, 0x1d2e: 0xb2f9, 0x1d2f: 0xb389,
+ 0x1d30: 0xb3b9, 0x1d31: 0xb329, 0x1d32: 0xb3d1, 0x1d33: 0x0040, 0x1d34: 0xb311, 0x1d35: 0xb221,
+ 0x1d36: 0xb239, 0x1d37: 0xb281, 0x1d38: 0x0040, 0x1d39: 0xb341, 0x1d3a: 0xb371, 0x1d3b: 0xb3a1,
+ 0x1d3c: 0xbca9, 0x1d3d: 0x0040, 0x1d3e: 0xbcc1, 0x1d3f: 0x0040,
+ // Block 0x75, offset 0x1d40
+ 0x1d40: 0xb1d9, 0x1d41: 0xb1f1, 0x1d42: 0xb251, 0x1d43: 0xb299, 0x1d44: 0xb449, 0x1d45: 0xb461,
+ 0x1d46: 0xb2e1, 0x1d47: 0xb269, 0x1d48: 0xb359, 0x1d49: 0xb479, 0x1d4a: 0x0040, 0x1d4b: 0xb401,
+ 0x1d4c: 0xb419, 0x1d4d: 0xb431, 0x1d4e: 0xb2f9, 0x1d4f: 0xb389, 0x1d50: 0xb3b9, 0x1d51: 0xb329,
+ 0x1d52: 0xb3d1, 0x1d53: 0xb2c9, 0x1d54: 0xb311, 0x1d55: 0xb221, 0x1d56: 0xb239, 0x1d57: 0xb281,
+ 0x1d58: 0xb2b1, 0x1d59: 0xb341, 0x1d5a: 0xb371, 0x1d5b: 0xb3a1, 0x1d5c: 0x0040, 0x1d5d: 0x0040,
+ 0x1d5e: 0x0040, 0x1d5f: 0x0040, 0x1d60: 0x0040, 0x1d61: 0xb1f1, 0x1d62: 0xb251, 0x1d63: 0xb299,
+ 0x1d64: 0x0040, 0x1d65: 0xb461, 0x1d66: 0xb2e1, 0x1d67: 0xb269, 0x1d68: 0xb359, 0x1d69: 0xb479,
+ 0x1d6a: 0x0040, 0x1d6b: 0xb401, 0x1d6c: 0xb419, 0x1d6d: 0xb431, 0x1d6e: 0xb2f9, 0x1d6f: 0xb389,
+ 0x1d70: 0xb3b9, 0x1d71: 0xb329, 0x1d72: 0xb3d1, 0x1d73: 0xb2c9, 0x1d74: 0xb311, 0x1d75: 0xb221,
+ 0x1d76: 0xb239, 0x1d77: 0xb281, 0x1d78: 0xb2b1, 0x1d79: 0xb341, 0x1d7a: 0xb371, 0x1d7b: 0xb3a1,
+ 0x1d7c: 0x0040, 0x1d7d: 0x0040, 0x1d7e: 0x0040, 0x1d7f: 0x0040,
+ // Block 0x76, offset 0x1d80
+ 0x1d80: 0x0040, 0x1d81: 0xbcf2, 0x1d82: 0xbd0a, 0x1d83: 0xbd22, 0x1d84: 0xbd3a, 0x1d85: 0xbd52,
+ 0x1d86: 0xbd6a, 0x1d87: 0xbd82, 0x1d88: 0xbd9a, 0x1d89: 0xbdb2, 0x1d8a: 0xbdca, 0x1d8b: 0x0018,
+ 0x1d8c: 0x0018, 0x1d8d: 0x0018, 0x1d8e: 0x0018, 0x1d8f: 0x0018, 0x1d90: 0xbde2, 0x1d91: 0xbe02,
+ 0x1d92: 0xbe22, 0x1d93: 0xbe42, 0x1d94: 0xbe62, 0x1d95: 0xbe82, 0x1d96: 0xbea2, 0x1d97: 0xbec2,
+ 0x1d98: 0xbee2, 0x1d99: 0xbf02, 0x1d9a: 0xbf22, 0x1d9b: 0xbf42, 0x1d9c: 0xbf62, 0x1d9d: 0xbf82,
+ 0x1d9e: 0xbfa2, 0x1d9f: 0xbfc2, 0x1da0: 0xbfe2, 0x1da1: 0xc002, 0x1da2: 0xc022, 0x1da3: 0xc042,
+ 0x1da4: 0xc062, 0x1da5: 0xc082, 0x1da6: 0xc0a2, 0x1da7: 0xc0c2, 0x1da8: 0xc0e2, 0x1da9: 0xc102,
+ 0x1daa: 0xc121, 0x1dab: 0x1159, 0x1dac: 0x0269, 0x1dad: 0x66a9, 0x1dae: 0xc161, 0x1daf: 0x0018,
+ 0x1db0: 0x0039, 0x1db1: 0x0ee9, 0x1db2: 0x1159, 0x1db3: 0x0ef9, 0x1db4: 0x0f09, 0x1db5: 0x1199,
+ 0x1db6: 0x0f31, 0x1db7: 0x0249, 0x1db8: 0x0f41, 0x1db9: 0x0259, 0x1dba: 0x0f51, 0x1dbb: 0x0359,
+ 0x1dbc: 0x0f61, 0x1dbd: 0x0f71, 0x1dbe: 0x00d9, 0x1dbf: 0x0f99,
+ // Block 0x77, offset 0x1dc0
+ 0x1dc0: 0x2039, 0x1dc1: 0x0269, 0x1dc2: 0x01d9, 0x1dc3: 0x0fa9, 0x1dc4: 0x0fb9, 0x1dc5: 0x1089,
+ 0x1dc6: 0x0279, 0x1dc7: 0x0369, 0x1dc8: 0x0289, 0x1dc9: 0x13d1, 0x1dca: 0xc179, 0x1dcb: 0x65e9,
+ 0x1dcc: 0xc191, 0x1dcd: 0x1441, 0x1dce: 0xc1a9, 0x1dcf: 0xc1c9, 0x1dd0: 0x0018, 0x1dd1: 0x0018,
+ 0x1dd2: 0x0018, 0x1dd3: 0x0018, 0x1dd4: 0x0018, 0x1dd5: 0x0018, 0x1dd6: 0x0018, 0x1dd7: 0x0018,
+ 0x1dd8: 0x0018, 0x1dd9: 0x0018, 0x1dda: 0x0018, 0x1ddb: 0x0018, 0x1ddc: 0x0018, 0x1ddd: 0x0018,
+ 0x1dde: 0x0018, 0x1ddf: 0x0018, 0x1de0: 0x0018, 0x1de1: 0x0018, 0x1de2: 0x0018, 0x1de3: 0x0018,
+ 0x1de4: 0x0018, 0x1de5: 0x0018, 0x1de6: 0x0018, 0x1de7: 0x0018, 0x1de8: 0x0018, 0x1de9: 0x0018,
+ 0x1dea: 0xc1e1, 0x1deb: 0xc1f9, 0x1dec: 0xc211, 0x1ded: 0x0018, 0x1dee: 0x0018, 0x1def: 0x0018,
+ 0x1df0: 0x0018, 0x1df1: 0x0018, 0x1df2: 0x0018, 0x1df3: 0x0018, 0x1df4: 0x0018, 0x1df5: 0x0018,
+ 0x1df6: 0x0018, 0x1df7: 0x0018, 0x1df8: 0x0018, 0x1df9: 0x0018, 0x1dfa: 0x0018, 0x1dfb: 0x0018,
+ 0x1dfc: 0x0018, 0x1dfd: 0x0018, 0x1dfe: 0x0018, 0x1dff: 0x0018,
+ // Block 0x78, offset 0x1e00
+ 0x1e00: 0xc241, 0x1e01: 0xc279, 0x1e02: 0xc2b1, 0x1e03: 0x0040, 0x1e04: 0x0040, 0x1e05: 0x0040,
+ 0x1e06: 0x0040, 0x1e07: 0x0040, 0x1e08: 0x0040, 0x1e09: 0x0040, 0x1e0a: 0x0040, 0x1e0b: 0x0040,
+ 0x1e0c: 0x0040, 0x1e0d: 0x0040, 0x1e0e: 0x0040, 0x1e0f: 0x0040, 0x1e10: 0xc2d1, 0x1e11: 0xc2f1,
+ 0x1e12: 0xc311, 0x1e13: 0xc331, 0x1e14: 0xc351, 0x1e15: 0xc371, 0x1e16: 0xc391, 0x1e17: 0xc3b1,
+ 0x1e18: 0xc3d1, 0x1e19: 0xc3f1, 0x1e1a: 0xc411, 0x1e1b: 0xc431, 0x1e1c: 0xc451, 0x1e1d: 0xc471,
+ 0x1e1e: 0xc491, 0x1e1f: 0xc4b1, 0x1e20: 0xc4d1, 0x1e21: 0xc4f1, 0x1e22: 0xc511, 0x1e23: 0xc531,
+ 0x1e24: 0xc551, 0x1e25: 0xc571, 0x1e26: 0xc591, 0x1e27: 0xc5b1, 0x1e28: 0xc5d1, 0x1e29: 0xc5f1,
+ 0x1e2a: 0xc611, 0x1e2b: 0xc631, 0x1e2c: 0xc651, 0x1e2d: 0xc671, 0x1e2e: 0xc691, 0x1e2f: 0xc6b1,
+ 0x1e30: 0xc6d1, 0x1e31: 0xc6f1, 0x1e32: 0xc711, 0x1e33: 0xc731, 0x1e34: 0xc751, 0x1e35: 0xc771,
+ 0x1e36: 0xc791, 0x1e37: 0xc7b1, 0x1e38: 0xc7d1, 0x1e39: 0xc7f1, 0x1e3a: 0xc811, 0x1e3b: 0xc831,
+ 0x1e3c: 0x0040, 0x1e3d: 0x0040, 0x1e3e: 0x0040, 0x1e3f: 0x0040,
+ // Block 0x79, offset 0x1e40
+ 0x1e40: 0xcb61, 0x1e41: 0xcb81, 0x1e42: 0xcba1, 0x1e43: 0x8b55, 0x1e44: 0xcbc1, 0x1e45: 0xcbe1,
+ 0x1e46: 0xcc01, 0x1e47: 0xcc21, 0x1e48: 0xcc41, 0x1e49: 0xcc61, 0x1e4a: 0xcc81, 0x1e4b: 0xcca1,
+ 0x1e4c: 0xccc1, 0x1e4d: 0x8b75, 0x1e4e: 0xcce1, 0x1e4f: 0xcd01, 0x1e50: 0xcd21, 0x1e51: 0xcd41,
+ 0x1e52: 0x8b95, 0x1e53: 0xcd61, 0x1e54: 0xcd81, 0x1e55: 0xc491, 0x1e56: 0x8bb5, 0x1e57: 0xcda1,
+ 0x1e58: 0xcdc1, 0x1e59: 0xcde1, 0x1e5a: 0xce01, 0x1e5b: 0xce21, 0x1e5c: 0x8bd5, 0x1e5d: 0xce41,
+ 0x1e5e: 0xce61, 0x1e5f: 0xce81, 0x1e60: 0xcea1, 0x1e61: 0xcec1, 0x1e62: 0xc7f1, 0x1e63: 0xcee1,
+ 0x1e64: 0xcf01, 0x1e65: 0xcf21, 0x1e66: 0xcf41, 0x1e67: 0xcf61, 0x1e68: 0xcf81, 0x1e69: 0xcfa1,
+ 0x1e6a: 0xcfc1, 0x1e6b: 0xcfe1, 0x1e6c: 0xd001, 0x1e6d: 0xd021, 0x1e6e: 0xd041, 0x1e6f: 0xd061,
+ 0x1e70: 0xd081, 0x1e71: 0xd0a1, 0x1e72: 0xd0a1, 0x1e73: 0xd0a1, 0x1e74: 0x8bf5, 0x1e75: 0xd0c1,
+ 0x1e76: 0xd0e1, 0x1e77: 0xd101, 0x1e78: 0x8c15, 0x1e79: 0xd121, 0x1e7a: 0xd141, 0x1e7b: 0xd161,
+ 0x1e7c: 0xd181, 0x1e7d: 0xd1a1, 0x1e7e: 0xd1c1, 0x1e7f: 0xd1e1,
+ // Block 0x7a, offset 0x1e80
+ 0x1e80: 0xd201, 0x1e81: 0xd221, 0x1e82: 0xd241, 0x1e83: 0xd261, 0x1e84: 0xd281, 0x1e85: 0xd2a1,
+ 0x1e86: 0xd2a1, 0x1e87: 0xd2c1, 0x1e88: 0xd2e1, 0x1e89: 0xd301, 0x1e8a: 0xd321, 0x1e8b: 0xd341,
+ 0x1e8c: 0xd361, 0x1e8d: 0xd381, 0x1e8e: 0xd3a1, 0x1e8f: 0xd3c1, 0x1e90: 0xd3e1, 0x1e91: 0xd401,
+ 0x1e92: 0xd421, 0x1e93: 0xd441, 0x1e94: 0xd461, 0x1e95: 0xd481, 0x1e96: 0xd4a1, 0x1e97: 0xd4c1,
+ 0x1e98: 0xd4e1, 0x1e99: 0x8c35, 0x1e9a: 0xd501, 0x1e9b: 0xd521, 0x1e9c: 0xd541, 0x1e9d: 0xc371,
+ 0x1e9e: 0xd561, 0x1e9f: 0xd581, 0x1ea0: 0x8c55, 0x1ea1: 0x8c75, 0x1ea2: 0xd5a1, 0x1ea3: 0xd5c1,
+ 0x1ea4: 0xd5e1, 0x1ea5: 0xd601, 0x1ea6: 0xd621, 0x1ea7: 0xd641, 0x1ea8: 0x2040, 0x1ea9: 0xd661,
+ 0x1eaa: 0xd681, 0x1eab: 0xd681, 0x1eac: 0x8c95, 0x1ead: 0xd6a1, 0x1eae: 0xd6c1, 0x1eaf: 0xd6e1,
+ 0x1eb0: 0xd701, 0x1eb1: 0x8cb5, 0x1eb2: 0xd721, 0x1eb3: 0xd741, 0x1eb4: 0x2040, 0x1eb5: 0xd761,
+ 0x1eb6: 0xd781, 0x1eb7: 0xd7a1, 0x1eb8: 0xd7c1, 0x1eb9: 0xd7e1, 0x1eba: 0xd801, 0x1ebb: 0x8cd5,
+ 0x1ebc: 0xd821, 0x1ebd: 0x8cf5, 0x1ebe: 0xd841, 0x1ebf: 0xd861,
+ // Block 0x7b, offset 0x1ec0
+ 0x1ec0: 0xd881, 0x1ec1: 0xd8a1, 0x1ec2: 0xd8c1, 0x1ec3: 0xd8e1, 0x1ec4: 0xd901, 0x1ec5: 0xd921,
+ 0x1ec6: 0xd941, 0x1ec7: 0xd961, 0x1ec8: 0xd981, 0x1ec9: 0x8d15, 0x1eca: 0xd9a1, 0x1ecb: 0xd9c1,
+ 0x1ecc: 0xd9e1, 0x1ecd: 0xda01, 0x1ece: 0xda21, 0x1ecf: 0x8d35, 0x1ed0: 0xda41, 0x1ed1: 0x8d55,
+ 0x1ed2: 0x8d75, 0x1ed3: 0xda61, 0x1ed4: 0xda81, 0x1ed5: 0xda81, 0x1ed6: 0xdaa1, 0x1ed7: 0x8d95,
+ 0x1ed8: 0x8db5, 0x1ed9: 0xdac1, 0x1eda: 0xdae1, 0x1edb: 0xdb01, 0x1edc: 0xdb21, 0x1edd: 0xdb41,
+ 0x1ede: 0xdb61, 0x1edf: 0xdb81, 0x1ee0: 0xdba1, 0x1ee1: 0xdbc1, 0x1ee2: 0xdbe1, 0x1ee3: 0xdc01,
+ 0x1ee4: 0x8dd5, 0x1ee5: 0xdc21, 0x1ee6: 0xdc41, 0x1ee7: 0xdc61, 0x1ee8: 0xdc81, 0x1ee9: 0xdc61,
+ 0x1eea: 0xdca1, 0x1eeb: 0xdcc1, 0x1eec: 0xdce1, 0x1eed: 0xdd01, 0x1eee: 0xdd21, 0x1eef: 0xdd41,
+ 0x1ef0: 0xdd61, 0x1ef1: 0xdd81, 0x1ef2: 0xdda1, 0x1ef3: 0xddc1, 0x1ef4: 0xdde1, 0x1ef5: 0xde01,
+ 0x1ef6: 0xde21, 0x1ef7: 0xde41, 0x1ef8: 0x8df5, 0x1ef9: 0xde61, 0x1efa: 0xde81, 0x1efb: 0xdea1,
+ 0x1efc: 0xdec1, 0x1efd: 0xdee1, 0x1efe: 0x8e15, 0x1eff: 0xdf01,
+ // Block 0x7c, offset 0x1f00
+ 0x1f00: 0xe601, 0x1f01: 0xe621, 0x1f02: 0xe641, 0x1f03: 0xe661, 0x1f04: 0xe681, 0x1f05: 0xe6a1,
+ 0x1f06: 0x8f35, 0x1f07: 0xe6c1, 0x1f08: 0xe6e1, 0x1f09: 0xe701, 0x1f0a: 0xe721, 0x1f0b: 0xe741,
+ 0x1f0c: 0xe761, 0x1f0d: 0x8f55, 0x1f0e: 0xe781, 0x1f0f: 0xe7a1, 0x1f10: 0x8f75, 0x1f11: 0x8f95,
+ 0x1f12: 0xe7c1, 0x1f13: 0xe7e1, 0x1f14: 0xe801, 0x1f15: 0xe821, 0x1f16: 0xe841, 0x1f17: 0xe861,
+ 0x1f18: 0xe881, 0x1f19: 0xe8a1, 0x1f1a: 0xe8c1, 0x1f1b: 0x8fb5, 0x1f1c: 0xe8e1, 0x1f1d: 0x8fd5,
+ 0x1f1e: 0xe901, 0x1f1f: 0x2040, 0x1f20: 0xe921, 0x1f21: 0xe941, 0x1f22: 0xe961, 0x1f23: 0x8ff5,
+ 0x1f24: 0xe981, 0x1f25: 0xe9a1, 0x1f26: 0x9015, 0x1f27: 0x9035, 0x1f28: 0xe9c1, 0x1f29: 0xe9e1,
+ 0x1f2a: 0xea01, 0x1f2b: 0xea21, 0x1f2c: 0xea41, 0x1f2d: 0xea41, 0x1f2e: 0xea61, 0x1f2f: 0xea81,
+ 0x1f30: 0xeaa1, 0x1f31: 0xeac1, 0x1f32: 0xeae1, 0x1f33: 0xeb01, 0x1f34: 0xeb21, 0x1f35: 0x9055,
+ 0x1f36: 0xeb41, 0x1f37: 0x9075, 0x1f38: 0xeb61, 0x1f39: 0x9095, 0x1f3a: 0xeb81, 0x1f3b: 0x90b5,
+ 0x1f3c: 0x90d5, 0x1f3d: 0x90f5, 0x1f3e: 0xeba1, 0x1f3f: 0xebc1,
+ // Block 0x7d, offset 0x1f40
+ 0x1f40: 0xebe1, 0x1f41: 0x9115, 0x1f42: 0x9135, 0x1f43: 0x9155, 0x1f44: 0x9175, 0x1f45: 0xec01,
+ 0x1f46: 0xec21, 0x1f47: 0xec21, 0x1f48: 0xec41, 0x1f49: 0xec61, 0x1f4a: 0xec81, 0x1f4b: 0xeca1,
+ 0x1f4c: 0xecc1, 0x1f4d: 0x9195, 0x1f4e: 0xece1, 0x1f4f: 0xed01, 0x1f50: 0xed21, 0x1f51: 0xed41,
+ 0x1f52: 0x91b5, 0x1f53: 0xed61, 0x1f54: 0x91d5, 0x1f55: 0x91f5, 0x1f56: 0xed81, 0x1f57: 0xeda1,
+ 0x1f58: 0xedc1, 0x1f59: 0xede1, 0x1f5a: 0xee01, 0x1f5b: 0xee21, 0x1f5c: 0x9215, 0x1f5d: 0x9235,
+ 0x1f5e: 0x9255, 0x1f5f: 0x2040, 0x1f60: 0xee41, 0x1f61: 0x9275, 0x1f62: 0xee61, 0x1f63: 0xee81,
+ 0x1f64: 0xeea1, 0x1f65: 0x9295, 0x1f66: 0xeec1, 0x1f67: 0xeee1, 0x1f68: 0xef01, 0x1f69: 0xef21,
+ 0x1f6a: 0xef41, 0x1f6b: 0x92b5, 0x1f6c: 0xef61, 0x1f6d: 0xef81, 0x1f6e: 0xefa1, 0x1f6f: 0xefc1,
+ 0x1f70: 0xefe1, 0x1f71: 0xf001, 0x1f72: 0x92d5, 0x1f73: 0x92f5, 0x1f74: 0xf021, 0x1f75: 0x9315,
+ 0x1f76: 0xf041, 0x1f77: 0x9335, 0x1f78: 0xf061, 0x1f79: 0xf081, 0x1f7a: 0xf0a1, 0x1f7b: 0x9355,
+ 0x1f7c: 0x9375, 0x1f7d: 0xf0c1, 0x1f7e: 0x9395, 0x1f7f: 0xf0e1,
+ // Block 0x7e, offset 0x1f80
+ 0x1f80: 0xf721, 0x1f81: 0xf741, 0x1f82: 0xf761, 0x1f83: 0xf781, 0x1f84: 0xf7a1, 0x1f85: 0x9555,
+ 0x1f86: 0xf7c1, 0x1f87: 0xf7e1, 0x1f88: 0xf801, 0x1f89: 0xf821, 0x1f8a: 0xf841, 0x1f8b: 0x9575,
+ 0x1f8c: 0x9595, 0x1f8d: 0xf861, 0x1f8e: 0xf881, 0x1f8f: 0xf8a1, 0x1f90: 0xf8c1, 0x1f91: 0xf8e1,
+ 0x1f92: 0xf901, 0x1f93: 0x95b5, 0x1f94: 0xf921, 0x1f95: 0xf941, 0x1f96: 0xf961, 0x1f97: 0xf981,
+ 0x1f98: 0x95d5, 0x1f99: 0x95f5, 0x1f9a: 0xf9a1, 0x1f9b: 0xf9c1, 0x1f9c: 0xf9e1, 0x1f9d: 0x9615,
+ 0x1f9e: 0xfa01, 0x1f9f: 0xfa21, 0x1fa0: 0x684d, 0x1fa1: 0x9635, 0x1fa2: 0xfa41, 0x1fa3: 0xfa61,
+ 0x1fa4: 0xfa81, 0x1fa5: 0x9655, 0x1fa6: 0xfaa1, 0x1fa7: 0xfac1, 0x1fa8: 0xfae1, 0x1fa9: 0xfb01,
+ 0x1faa: 0xfb21, 0x1fab: 0xfb41, 0x1fac: 0xfb61, 0x1fad: 0x9675, 0x1fae: 0xfb81, 0x1faf: 0xfba1,
+ 0x1fb0: 0xfbc1, 0x1fb1: 0x9695, 0x1fb2: 0xfbe1, 0x1fb3: 0xfc01, 0x1fb4: 0xfc21, 0x1fb5: 0xfc41,
+ 0x1fb6: 0x7b6d, 0x1fb7: 0x96b5, 0x1fb8: 0xfc61, 0x1fb9: 0xfc81, 0x1fba: 0xfca1, 0x1fbb: 0x96d5,
+ 0x1fbc: 0xfcc1, 0x1fbd: 0x96f5, 0x1fbe: 0xfce1, 0x1fbf: 0xfce1,
+ // Block 0x7f, offset 0x1fc0
+ 0x1fc0: 0xfd01, 0x1fc1: 0x9715, 0x1fc2: 0xfd21, 0x1fc3: 0xfd41, 0x1fc4: 0xfd61, 0x1fc5: 0xfd81,
+ 0x1fc6: 0xfda1, 0x1fc7: 0xfdc1, 0x1fc8: 0xfde1, 0x1fc9: 0x9735, 0x1fca: 0xfe01, 0x1fcb: 0xfe21,
+ 0x1fcc: 0xfe41, 0x1fcd: 0xfe61, 0x1fce: 0xfe81, 0x1fcf: 0xfea1, 0x1fd0: 0x9755, 0x1fd1: 0xfec1,
+ 0x1fd2: 0x9775, 0x1fd3: 0x9795, 0x1fd4: 0x97b5, 0x1fd5: 0xfee1, 0x1fd6: 0xff01, 0x1fd7: 0xff21,
+ 0x1fd8: 0xff41, 0x1fd9: 0xff61, 0x1fda: 0xff81, 0x1fdb: 0xffa1, 0x1fdc: 0xffc1, 0x1fdd: 0x97d5,
+ 0x1fde: 0x0040, 0x1fdf: 0x0040, 0x1fe0: 0x0040, 0x1fe1: 0x0040, 0x1fe2: 0x0040, 0x1fe3: 0x0040,
+ 0x1fe4: 0x0040, 0x1fe5: 0x0040, 0x1fe6: 0x0040, 0x1fe7: 0x0040, 0x1fe8: 0x0040, 0x1fe9: 0x0040,
+ 0x1fea: 0x0040, 0x1feb: 0x0040, 0x1fec: 0x0040, 0x1fed: 0x0040, 0x1fee: 0x0040, 0x1fef: 0x0040,
+ 0x1ff0: 0x0040, 0x1ff1: 0x0040, 0x1ff2: 0x0040, 0x1ff3: 0x0040, 0x1ff4: 0x0040, 0x1ff5: 0x0040,
+ 0x1ff6: 0x0040, 0x1ff7: 0x0040, 0x1ff8: 0x0040, 0x1ff9: 0x0040, 0x1ffa: 0x0040, 0x1ffb: 0x0040,
+ 0x1ffc: 0x0040, 0x1ffd: 0x0040, 0x1ffe: 0x0040, 0x1fff: 0x0040,
+}
+
+// idnaIndex: 37 blocks, 2368 entries, 4736 bytes
+// Block 0 is the zero block.
+var idnaIndex = [2368]uint16{
+ // Block 0x0, offset 0x0
+ // Block 0x1, offset 0x40
+ // Block 0x2, offset 0x80
+ // Block 0x3, offset 0xc0
+ 0xc2: 0x01, 0xc3: 0x7e, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x04, 0xc7: 0x05,
+ 0xc8: 0x06, 0xc9: 0x7f, 0xca: 0x80, 0xcb: 0x07, 0xcc: 0x81, 0xcd: 0x08, 0xce: 0x09, 0xcf: 0x0a,
+ 0xd0: 0x82, 0xd1: 0x0b, 0xd2: 0x0c, 0xd3: 0x0d, 0xd4: 0x0e, 0xd5: 0x83, 0xd6: 0x84, 0xd7: 0x85,
+ 0xd8: 0x0f, 0xd9: 0x10, 0xda: 0x86, 0xdb: 0x11, 0xdc: 0x12, 0xdd: 0x87, 0xde: 0x88, 0xdf: 0x89,
+ 0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xe4: 0x06, 0xe5: 0x07, 0xe6: 0x07, 0xe7: 0x07,
+ 0xe8: 0x07, 0xe9: 0x08, 0xea: 0x09, 0xeb: 0x07, 0xec: 0x07, 0xed: 0x0a, 0xee: 0x0b, 0xef: 0x0c,
+ 0xf0: 0x1e, 0xf1: 0x1f, 0xf2: 0x1f, 0xf3: 0x21, 0xf4: 0x22,
+ // Block 0x4, offset 0x100
+ 0x120: 0x8a, 0x121: 0x13, 0x122: 0x8b, 0x123: 0x8c, 0x124: 0x8d, 0x125: 0x14, 0x126: 0x15, 0x127: 0x16,
+ 0x128: 0x17, 0x129: 0x18, 0x12a: 0x19, 0x12b: 0x1a, 0x12c: 0x1b, 0x12d: 0x1c, 0x12e: 0x1d, 0x12f: 0x8e,
+ 0x130: 0x8f, 0x131: 0x1e, 0x132: 0x1f, 0x133: 0x20, 0x134: 0x90, 0x135: 0x21, 0x136: 0x91, 0x137: 0x92,
+ 0x138: 0x93, 0x139: 0x94, 0x13a: 0x22, 0x13b: 0x95, 0x13c: 0x96, 0x13d: 0x23, 0x13e: 0x24, 0x13f: 0x97,
+ // Block 0x5, offset 0x140
+ 0x140: 0x98, 0x141: 0x99, 0x142: 0x9a, 0x143: 0x9b, 0x144: 0x9c, 0x145: 0x9d, 0x146: 0x9e, 0x147: 0x9f,
+ 0x148: 0xa0, 0x149: 0xa1, 0x14a: 0xa2, 0x14b: 0xa3, 0x14c: 0xa4, 0x14d: 0xa5, 0x14e: 0xa6, 0x14f: 0xa7,
+ 0x150: 0xa8, 0x151: 0xa0, 0x152: 0xa0, 0x153: 0xa0, 0x154: 0xa0, 0x155: 0xa0, 0x156: 0xa0, 0x157: 0xa0,
+ 0x158: 0xa0, 0x159: 0xa9, 0x15a: 0xaa, 0x15b: 0xab, 0x15c: 0xac, 0x15d: 0xad, 0x15e: 0xae, 0x15f: 0xaf,
+ 0x160: 0xb0, 0x161: 0xb1, 0x162: 0xb2, 0x163: 0xb3, 0x164: 0xb4, 0x165: 0xb5, 0x166: 0xb6, 0x167: 0xb7,
+ 0x168: 0xb8, 0x169: 0xb9, 0x16a: 0xba, 0x16b: 0xbb, 0x16c: 0xbc, 0x16d: 0xbd, 0x16e: 0xbe, 0x16f: 0xbf,
+ 0x170: 0xc0, 0x171: 0xc1, 0x172: 0xc2, 0x173: 0xc3, 0x174: 0x25, 0x175: 0x26, 0x176: 0x27, 0x177: 0xc4,
+ 0x178: 0x28, 0x179: 0x28, 0x17a: 0x29, 0x17b: 0x28, 0x17c: 0xc5, 0x17d: 0x2a, 0x17e: 0x2b, 0x17f: 0x2c,
+ // Block 0x6, offset 0x180
+ 0x180: 0x2d, 0x181: 0x2e, 0x182: 0x2f, 0x183: 0xc6, 0x184: 0x30, 0x185: 0x31, 0x186: 0xc7, 0x187: 0x9c,
+ 0x188: 0xc8, 0x189: 0xc9, 0x18a: 0x9c, 0x18b: 0x9c, 0x18c: 0xca, 0x18d: 0x9c, 0x18e: 0x9c, 0x18f: 0x9c,
+ 0x190: 0xcb, 0x191: 0x32, 0x192: 0x33, 0x193: 0x34, 0x194: 0x9c, 0x195: 0x9c, 0x196: 0x9c, 0x197: 0x9c,
+ 0x198: 0x9c, 0x199: 0x9c, 0x19a: 0x9c, 0x19b: 0x9c, 0x19c: 0x9c, 0x19d: 0x9c, 0x19e: 0x9c, 0x19f: 0x9c,
+ 0x1a0: 0x9c, 0x1a1: 0x9c, 0x1a2: 0x9c, 0x1a3: 0x9c, 0x1a4: 0x9c, 0x1a5: 0x9c, 0x1a6: 0x9c, 0x1a7: 0x9c,
+ 0x1a8: 0xcc, 0x1a9: 0xcd, 0x1aa: 0x9c, 0x1ab: 0xce, 0x1ac: 0x9c, 0x1ad: 0xcf, 0x1ae: 0xd0, 0x1af: 0x9c,
+ 0x1b0: 0xd1, 0x1b1: 0x35, 0x1b2: 0x28, 0x1b3: 0x36, 0x1b4: 0xd2, 0x1b5: 0xd3, 0x1b6: 0xd4, 0x1b7: 0xd5,
+ 0x1b8: 0xd6, 0x1b9: 0xd7, 0x1ba: 0xd8, 0x1bb: 0xd9, 0x1bc: 0xda, 0x1bd: 0xdb, 0x1be: 0xdc, 0x1bf: 0x37,
+ // Block 0x7, offset 0x1c0
+ 0x1c0: 0x38, 0x1c1: 0xdd, 0x1c2: 0xde, 0x1c3: 0xdf, 0x1c4: 0xe0, 0x1c5: 0x39, 0x1c6: 0x3a, 0x1c7: 0xe1,
+ 0x1c8: 0xe2, 0x1c9: 0x3b, 0x1ca: 0x3c, 0x1cb: 0x3d, 0x1cc: 0x3e, 0x1cd: 0x3f, 0x1ce: 0x40, 0x1cf: 0x41,
+ 0x1d0: 0xa0, 0x1d1: 0xa0, 0x1d2: 0xa0, 0x1d3: 0xa0, 0x1d4: 0xa0, 0x1d5: 0xa0, 0x1d6: 0xa0, 0x1d7: 0xa0,
+ 0x1d8: 0xa0, 0x1d9: 0xa0, 0x1da: 0xa0, 0x1db: 0xa0, 0x1dc: 0xa0, 0x1dd: 0xa0, 0x1de: 0xa0, 0x1df: 0xa0,
+ 0x1e0: 0xa0, 0x1e1: 0xa0, 0x1e2: 0xa0, 0x1e3: 0xa0, 0x1e4: 0xa0, 0x1e5: 0xa0, 0x1e6: 0xa0, 0x1e7: 0xa0,
+ 0x1e8: 0xa0, 0x1e9: 0xa0, 0x1ea: 0xa0, 0x1eb: 0xa0, 0x1ec: 0xa0, 0x1ed: 0xa0, 0x1ee: 0xa0, 0x1ef: 0xa0,
+ 0x1f0: 0xa0, 0x1f1: 0xa0, 0x1f2: 0xa0, 0x1f3: 0xa0, 0x1f4: 0xa0, 0x1f5: 0xa0, 0x1f6: 0xa0, 0x1f7: 0xa0,
+ 0x1f8: 0xa0, 0x1f9: 0xa0, 0x1fa: 0xa0, 0x1fb: 0xa0, 0x1fc: 0xa0, 0x1fd: 0xa0, 0x1fe: 0xa0, 0x1ff: 0xa0,
+ // Block 0x8, offset 0x200
+ 0x200: 0xa0, 0x201: 0xa0, 0x202: 0xa0, 0x203: 0xa0, 0x204: 0xa0, 0x205: 0xa0, 0x206: 0xa0, 0x207: 0xa0,
+ 0x208: 0xa0, 0x209: 0xa0, 0x20a: 0xa0, 0x20b: 0xa0, 0x20c: 0xa0, 0x20d: 0xa0, 0x20e: 0xa0, 0x20f: 0xa0,
+ 0x210: 0xa0, 0x211: 0xa0, 0x212: 0xa0, 0x213: 0xa0, 0x214: 0xa0, 0x215: 0xa0, 0x216: 0xa0, 0x217: 0xa0,
+ 0x218: 0xa0, 0x219: 0xa0, 0x21a: 0xa0, 0x21b: 0xa0, 0x21c: 0xa0, 0x21d: 0xa0, 0x21e: 0xa0, 0x21f: 0xa0,
+ 0x220: 0xa0, 0x221: 0xa0, 0x222: 0xa0, 0x223: 0xa0, 0x224: 0xa0, 0x225: 0xa0, 0x226: 0xa0, 0x227: 0xa0,
+ 0x228: 0xa0, 0x229: 0xa0, 0x22a: 0xa0, 0x22b: 0xa0, 0x22c: 0xa0, 0x22d: 0xa0, 0x22e: 0xa0, 0x22f: 0xa0,
+ 0x230: 0xa0, 0x231: 0xa0, 0x232: 0xa0, 0x233: 0xa0, 0x234: 0xa0, 0x235: 0xa0, 0x236: 0xa0, 0x237: 0x9c,
+ 0x238: 0xa0, 0x239: 0xa0, 0x23a: 0xa0, 0x23b: 0xa0, 0x23c: 0xa0, 0x23d: 0xa0, 0x23e: 0xa0, 0x23f: 0xa0,
+ // Block 0x9, offset 0x240
+ 0x240: 0xa0, 0x241: 0xa0, 0x242: 0xa0, 0x243: 0xa0, 0x244: 0xa0, 0x245: 0xa0, 0x246: 0xa0, 0x247: 0xa0,
+ 0x248: 0xa0, 0x249: 0xa0, 0x24a: 0xa0, 0x24b: 0xa0, 0x24c: 0xa0, 0x24d: 0xa0, 0x24e: 0xa0, 0x24f: 0xa0,
+ 0x250: 0xa0, 0x251: 0xa0, 0x252: 0xa0, 0x253: 0xa0, 0x254: 0xa0, 0x255: 0xa0, 0x256: 0xa0, 0x257: 0xa0,
+ 0x258: 0xa0, 0x259: 0xa0, 0x25a: 0xa0, 0x25b: 0xa0, 0x25c: 0xa0, 0x25d: 0xa0, 0x25e: 0xa0, 0x25f: 0xa0,
+ 0x260: 0xa0, 0x261: 0xa0, 0x262: 0xa0, 0x263: 0xa0, 0x264: 0xa0, 0x265: 0xa0, 0x266: 0xa0, 0x267: 0xa0,
+ 0x268: 0xa0, 0x269: 0xa0, 0x26a: 0xa0, 0x26b: 0xa0, 0x26c: 0xa0, 0x26d: 0xa0, 0x26e: 0xa0, 0x26f: 0xa0,
+ 0x270: 0xa0, 0x271: 0xa0, 0x272: 0xa0, 0x273: 0xa0, 0x274: 0xa0, 0x275: 0xa0, 0x276: 0xa0, 0x277: 0xa0,
+ 0x278: 0xa0, 0x279: 0xa0, 0x27a: 0xa0, 0x27b: 0xa0, 0x27c: 0xa0, 0x27d: 0xa0, 0x27e: 0xa0, 0x27f: 0xa0,
+ // Block 0xa, offset 0x280
+ 0x280: 0xa0, 0x281: 0xa0, 0x282: 0xa0, 0x283: 0xa0, 0x284: 0xa0, 0x285: 0xa0, 0x286: 0xa0, 0x287: 0xa0,
+ 0x288: 0xa0, 0x289: 0xa0, 0x28a: 0xa0, 0x28b: 0xa0, 0x28c: 0xa0, 0x28d: 0xa0, 0x28e: 0xa0, 0x28f: 0xa0,
+ 0x290: 0xa0, 0x291: 0xa0, 0x292: 0xa0, 0x293: 0xa0, 0x294: 0xa0, 0x295: 0xa0, 0x296: 0xa0, 0x297: 0xa0,
+ 0x298: 0xa0, 0x299: 0xa0, 0x29a: 0xa0, 0x29b: 0xa0, 0x29c: 0xa0, 0x29d: 0xa0, 0x29e: 0xa0, 0x29f: 0xa0,
+ 0x2a0: 0xa0, 0x2a1: 0xa0, 0x2a2: 0xa0, 0x2a3: 0xa0, 0x2a4: 0xa0, 0x2a5: 0xa0, 0x2a6: 0xa0, 0x2a7: 0xa0,
+ 0x2a8: 0xa0, 0x2a9: 0xa0, 0x2aa: 0xa0, 0x2ab: 0xa0, 0x2ac: 0xa0, 0x2ad: 0xa0, 0x2ae: 0xa0, 0x2af: 0xa0,
+ 0x2b0: 0xa0, 0x2b1: 0xa0, 0x2b2: 0xa0, 0x2b3: 0xa0, 0x2b4: 0xa0, 0x2b5: 0xa0, 0x2b6: 0xa0, 0x2b7: 0xa0,
+ 0x2b8: 0xa0, 0x2b9: 0xa0, 0x2ba: 0xa0, 0x2bb: 0xa0, 0x2bc: 0xa0, 0x2bd: 0xa0, 0x2be: 0xa0, 0x2bf: 0xe3,
+ // Block 0xb, offset 0x2c0
+ 0x2c0: 0xa0, 0x2c1: 0xa0, 0x2c2: 0xa0, 0x2c3: 0xa0, 0x2c4: 0xa0, 0x2c5: 0xa0, 0x2c6: 0xa0, 0x2c7: 0xa0,
+ 0x2c8: 0xa0, 0x2c9: 0xa0, 0x2ca: 0xa0, 0x2cb: 0xa0, 0x2cc: 0xa0, 0x2cd: 0xa0, 0x2ce: 0xa0, 0x2cf: 0xa0,
+ 0x2d0: 0xa0, 0x2d1: 0xa0, 0x2d2: 0xe4, 0x2d3: 0xe5, 0x2d4: 0xa0, 0x2d5: 0xa0, 0x2d6: 0xa0, 0x2d7: 0xa0,
+ 0x2d8: 0xe6, 0x2d9: 0x42, 0x2da: 0x43, 0x2db: 0xe7, 0x2dc: 0x44, 0x2dd: 0x45, 0x2de: 0x46, 0x2df: 0xe8,
+ 0x2e0: 0xe9, 0x2e1: 0xea, 0x2e2: 0xeb, 0x2e3: 0xec, 0x2e4: 0xed, 0x2e5: 0xee, 0x2e6: 0xef, 0x2e7: 0xf0,
+ 0x2e8: 0xf1, 0x2e9: 0xf2, 0x2ea: 0xf3, 0x2eb: 0xf4, 0x2ec: 0xf5, 0x2ed: 0xf6, 0x2ee: 0xf7, 0x2ef: 0xf8,
+ 0x2f0: 0xa0, 0x2f1: 0xa0, 0x2f2: 0xa0, 0x2f3: 0xa0, 0x2f4: 0xa0, 0x2f5: 0xa0, 0x2f6: 0xa0, 0x2f7: 0xa0,
+ 0x2f8: 0xa0, 0x2f9: 0xa0, 0x2fa: 0xa0, 0x2fb: 0xa0, 0x2fc: 0xa0, 0x2fd: 0xa0, 0x2fe: 0xa0, 0x2ff: 0xa0,
+ // Block 0xc, offset 0x300
+ 0x300: 0xa0, 0x301: 0xa0, 0x302: 0xa0, 0x303: 0xa0, 0x304: 0xa0, 0x305: 0xa0, 0x306: 0xa0, 0x307: 0xa0,
+ 0x308: 0xa0, 0x309: 0xa0, 0x30a: 0xa0, 0x30b: 0xa0, 0x30c: 0xa0, 0x30d: 0xa0, 0x30e: 0xa0, 0x30f: 0xa0,
+ 0x310: 0xa0, 0x311: 0xa0, 0x312: 0xa0, 0x313: 0xa0, 0x314: 0xa0, 0x315: 0xa0, 0x316: 0xa0, 0x317: 0xa0,
+ 0x318: 0xa0, 0x319: 0xa0, 0x31a: 0xa0, 0x31b: 0xa0, 0x31c: 0xa0, 0x31d: 0xa0, 0x31e: 0xf9, 0x31f: 0xfa,
+ // Block 0xd, offset 0x340
+ 0x340: 0xfb, 0x341: 0xfb, 0x342: 0xfb, 0x343: 0xfb, 0x344: 0xfb, 0x345: 0xfb, 0x346: 0xfb, 0x347: 0xfb,
+ 0x348: 0xfb, 0x349: 0xfb, 0x34a: 0xfb, 0x34b: 0xfb, 0x34c: 0xfb, 0x34d: 0xfb, 0x34e: 0xfb, 0x34f: 0xfb,
+ 0x350: 0xfb, 0x351: 0xfb, 0x352: 0xfb, 0x353: 0xfb, 0x354: 0xfb, 0x355: 0xfb, 0x356: 0xfb, 0x357: 0xfb,
+ 0x358: 0xfb, 0x359: 0xfb, 0x35a: 0xfb, 0x35b: 0xfb, 0x35c: 0xfb, 0x35d: 0xfb, 0x35e: 0xfb, 0x35f: 0xfb,
+ 0x360: 0xfb, 0x361: 0xfb, 0x362: 0xfb, 0x363: 0xfb, 0x364: 0xfb, 0x365: 0xfb, 0x366: 0xfb, 0x367: 0xfb,
+ 0x368: 0xfb, 0x369: 0xfb, 0x36a: 0xfb, 0x36b: 0xfb, 0x36c: 0xfb, 0x36d: 0xfb, 0x36e: 0xfb, 0x36f: 0xfb,
+ 0x370: 0xfb, 0x371: 0xfb, 0x372: 0xfb, 0x373: 0xfb, 0x374: 0xfb, 0x375: 0xfb, 0x376: 0xfb, 0x377: 0xfb,
+ 0x378: 0xfb, 0x379: 0xfb, 0x37a: 0xfb, 0x37b: 0xfb, 0x37c: 0xfb, 0x37d: 0xfb, 0x37e: 0xfb, 0x37f: 0xfb,
+ // Block 0xe, offset 0x380
+ 0x380: 0xfb, 0x381: 0xfb, 0x382: 0xfb, 0x383: 0xfb, 0x384: 0xfb, 0x385: 0xfb, 0x386: 0xfb, 0x387: 0xfb,
+ 0x388: 0xfb, 0x389: 0xfb, 0x38a: 0xfb, 0x38b: 0xfb, 0x38c: 0xfb, 0x38d: 0xfb, 0x38e: 0xfb, 0x38f: 0xfb,
+ 0x390: 0xfb, 0x391: 0xfb, 0x392: 0xfb, 0x393: 0xfb, 0x394: 0xfb, 0x395: 0xfb, 0x396: 0xfb, 0x397: 0xfb,
+ 0x398: 0xfb, 0x399: 0xfb, 0x39a: 0xfb, 0x39b: 0xfb, 0x39c: 0xfb, 0x39d: 0xfb, 0x39e: 0xfb, 0x39f: 0xfb,
+ 0x3a0: 0xfb, 0x3a1: 0xfb, 0x3a2: 0xfb, 0x3a3: 0xfb, 0x3a4: 0xfc, 0x3a5: 0xfd, 0x3a6: 0xfe, 0x3a7: 0xff,
+ 0x3a8: 0x47, 0x3a9: 0x100, 0x3aa: 0x101, 0x3ab: 0x48, 0x3ac: 0x49, 0x3ad: 0x4a, 0x3ae: 0x4b, 0x3af: 0x4c,
+ 0x3b0: 0x102, 0x3b1: 0x4d, 0x3b2: 0x4e, 0x3b3: 0x4f, 0x3b4: 0x50, 0x3b5: 0x51, 0x3b6: 0x103, 0x3b7: 0x52,
+ 0x3b8: 0x53, 0x3b9: 0x54, 0x3ba: 0x55, 0x3bb: 0x56, 0x3bc: 0x57, 0x3bd: 0x58, 0x3be: 0x59, 0x3bf: 0x5a,
+ // Block 0xf, offset 0x3c0
+ 0x3c0: 0x104, 0x3c1: 0x105, 0x3c2: 0xa0, 0x3c3: 0x106, 0x3c4: 0x107, 0x3c5: 0x9c, 0x3c6: 0x108, 0x3c7: 0x109,
+ 0x3c8: 0xfb, 0x3c9: 0xfb, 0x3ca: 0x10a, 0x3cb: 0x10b, 0x3cc: 0x10c, 0x3cd: 0x10d, 0x3ce: 0x10e, 0x3cf: 0x10f,
+ 0x3d0: 0x110, 0x3d1: 0xa0, 0x3d2: 0x111, 0x3d3: 0x112, 0x3d4: 0x113, 0x3d5: 0x114, 0x3d6: 0xfb, 0x3d7: 0xfb,
+ 0x3d8: 0xa0, 0x3d9: 0xa0, 0x3da: 0xa0, 0x3db: 0xa0, 0x3dc: 0x115, 0x3dd: 0x116, 0x3de: 0xfb, 0x3df: 0xfb,
+ 0x3e0: 0x117, 0x3e1: 0x118, 0x3e2: 0x119, 0x3e3: 0x11a, 0x3e4: 0x11b, 0x3e5: 0xfb, 0x3e6: 0x11c, 0x3e7: 0x11d,
+ 0x3e8: 0x11e, 0x3e9: 0x11f, 0x3ea: 0x120, 0x3eb: 0x5b, 0x3ec: 0x121, 0x3ed: 0x122, 0x3ee: 0x5c, 0x3ef: 0xfb,
+ 0x3f0: 0x123, 0x3f1: 0x124, 0x3f2: 0x125, 0x3f3: 0x126, 0x3f4: 0x127, 0x3f5: 0xfb, 0x3f6: 0xfb, 0x3f7: 0xfb,
+ 0x3f8: 0xfb, 0x3f9: 0x128, 0x3fa: 0x129, 0x3fb: 0xfb, 0x3fc: 0x12a, 0x3fd: 0x12b, 0x3fe: 0x12c, 0x3ff: 0x12d,
+ // Block 0x10, offset 0x400
+ 0x400: 0x12e, 0x401: 0x12f, 0x402: 0x130, 0x403: 0x131, 0x404: 0x132, 0x405: 0x133, 0x406: 0x134, 0x407: 0x135,
+ 0x408: 0x136, 0x409: 0xfb, 0x40a: 0x137, 0x40b: 0x138, 0x40c: 0x5d, 0x40d: 0x5e, 0x40e: 0xfb, 0x40f: 0xfb,
+ 0x410: 0x139, 0x411: 0x13a, 0x412: 0x13b, 0x413: 0x13c, 0x414: 0xfb, 0x415: 0xfb, 0x416: 0x13d, 0x417: 0x13e,
+ 0x418: 0x13f, 0x419: 0x140, 0x41a: 0x141, 0x41b: 0x142, 0x41c: 0x143, 0x41d: 0xfb, 0x41e: 0xfb, 0x41f: 0xfb,
+ 0x420: 0x144, 0x421: 0xfb, 0x422: 0x145, 0x423: 0x146, 0x424: 0x5f, 0x425: 0x147, 0x426: 0x148, 0x427: 0x149,
+ 0x428: 0x14a, 0x429: 0x14b, 0x42a: 0x14c, 0x42b: 0x14d, 0x42c: 0xfb, 0x42d: 0xfb, 0x42e: 0xfb, 0x42f: 0xfb,
+ 0x430: 0x14e, 0x431: 0x14f, 0x432: 0x150, 0x433: 0xfb, 0x434: 0x151, 0x435: 0x152, 0x436: 0x153, 0x437: 0xfb,
+ 0x438: 0xfb, 0x439: 0xfb, 0x43a: 0xfb, 0x43b: 0x154, 0x43c: 0xfb, 0x43d: 0xfb, 0x43e: 0x155, 0x43f: 0x156,
+ // Block 0x11, offset 0x440
+ 0x440: 0xa0, 0x441: 0xa0, 0x442: 0xa0, 0x443: 0xa0, 0x444: 0xa0, 0x445: 0xa0, 0x446: 0xa0, 0x447: 0xa0,
+ 0x448: 0xa0, 0x449: 0xa0, 0x44a: 0xa0, 0x44b: 0xa0, 0x44c: 0xa0, 0x44d: 0xa0, 0x44e: 0x157, 0x44f: 0xfb,
+ 0x450: 0x9c, 0x451: 0x158, 0x452: 0xa0, 0x453: 0xa0, 0x454: 0xa0, 0x455: 0x159, 0x456: 0xfb, 0x457: 0xfb,
+ 0x458: 0xfb, 0x459: 0xfb, 0x45a: 0xfb, 0x45b: 0xfb, 0x45c: 0xfb, 0x45d: 0xfb, 0x45e: 0xfb, 0x45f: 0xfb,
+ 0x460: 0xfb, 0x461: 0xfb, 0x462: 0xfb, 0x463: 0xfb, 0x464: 0xfb, 0x465: 0xfb, 0x466: 0xfb, 0x467: 0xfb,
+ 0x468: 0xfb, 0x469: 0xfb, 0x46a: 0xfb, 0x46b: 0xfb, 0x46c: 0xfb, 0x46d: 0xfb, 0x46e: 0xfb, 0x46f: 0xfb,
+ 0x470: 0xfb, 0x471: 0xfb, 0x472: 0xfb, 0x473: 0xfb, 0x474: 0xfb, 0x475: 0xfb, 0x476: 0xfb, 0x477: 0xfb,
+ 0x478: 0xfb, 0x479: 0xfb, 0x47a: 0xfb, 0x47b: 0xfb, 0x47c: 0xfb, 0x47d: 0xfb, 0x47e: 0xfb, 0x47f: 0xfb,
+ // Block 0x12, offset 0x480
+ 0x480: 0xa0, 0x481: 0xa0, 0x482: 0xa0, 0x483: 0xa0, 0x484: 0xa0, 0x485: 0xa0, 0x486: 0xa0, 0x487: 0xa0,
+ 0x488: 0xa0, 0x489: 0xa0, 0x48a: 0xa0, 0x48b: 0xa0, 0x48c: 0xa0, 0x48d: 0xa0, 0x48e: 0xa0, 0x48f: 0xa0,
+ 0x490: 0x15a, 0x491: 0xfb, 0x492: 0xfb, 0x493: 0xfb, 0x494: 0xfb, 0x495: 0xfb, 0x496: 0xfb, 0x497: 0xfb,
+ 0x498: 0xfb, 0x499: 0xfb, 0x49a: 0xfb, 0x49b: 0xfb, 0x49c: 0xfb, 0x49d: 0xfb, 0x49e: 0xfb, 0x49f: 0xfb,
+ 0x4a0: 0xfb, 0x4a1: 0xfb, 0x4a2: 0xfb, 0x4a3: 0xfb, 0x4a4: 0xfb, 0x4a5: 0xfb, 0x4a6: 0xfb, 0x4a7: 0xfb,
+ 0x4a8: 0xfb, 0x4a9: 0xfb, 0x4aa: 0xfb, 0x4ab: 0xfb, 0x4ac: 0xfb, 0x4ad: 0xfb, 0x4ae: 0xfb, 0x4af: 0xfb,
+ 0x4b0: 0xfb, 0x4b1: 0xfb, 0x4b2: 0xfb, 0x4b3: 0xfb, 0x4b4: 0xfb, 0x4b5: 0xfb, 0x4b6: 0xfb, 0x4b7: 0xfb,
+ 0x4b8: 0xfb, 0x4b9: 0xfb, 0x4ba: 0xfb, 0x4bb: 0xfb, 0x4bc: 0xfb, 0x4bd: 0xfb, 0x4be: 0xfb, 0x4bf: 0xfb,
+ // Block 0x13, offset 0x4c0
+ 0x4c0: 0xfb, 0x4c1: 0xfb, 0x4c2: 0xfb, 0x4c3: 0xfb, 0x4c4: 0xfb, 0x4c5: 0xfb, 0x4c6: 0xfb, 0x4c7: 0xfb,
+ 0x4c8: 0xfb, 0x4c9: 0xfb, 0x4ca: 0xfb, 0x4cb: 0xfb, 0x4cc: 0xfb, 0x4cd: 0xfb, 0x4ce: 0xfb, 0x4cf: 0xfb,
+ 0x4d0: 0xa0, 0x4d1: 0xa0, 0x4d2: 0xa0, 0x4d3: 0xa0, 0x4d4: 0xa0, 0x4d5: 0xa0, 0x4d6: 0xa0, 0x4d7: 0xa0,
+ 0x4d8: 0xa0, 0x4d9: 0x15b, 0x4da: 0xfb, 0x4db: 0xfb, 0x4dc: 0xfb, 0x4dd: 0xfb, 0x4de: 0xfb, 0x4df: 0xfb,
+ 0x4e0: 0xfb, 0x4e1: 0xfb, 0x4e2: 0xfb, 0x4e3: 0xfb, 0x4e4: 0xfb, 0x4e5: 0xfb, 0x4e6: 0xfb, 0x4e7: 0xfb,
+ 0x4e8: 0xfb, 0x4e9: 0xfb, 0x4ea: 0xfb, 0x4eb: 0xfb, 0x4ec: 0xfb, 0x4ed: 0xfb, 0x4ee: 0xfb, 0x4ef: 0xfb,
+ 0x4f0: 0xfb, 0x4f1: 0xfb, 0x4f2: 0xfb, 0x4f3: 0xfb, 0x4f4: 0xfb, 0x4f5: 0xfb, 0x4f6: 0xfb, 0x4f7: 0xfb,
+ 0x4f8: 0xfb, 0x4f9: 0xfb, 0x4fa: 0xfb, 0x4fb: 0xfb, 0x4fc: 0xfb, 0x4fd: 0xfb, 0x4fe: 0xfb, 0x4ff: 0xfb,
+ // Block 0x14, offset 0x500
+ 0x500: 0xfb, 0x501: 0xfb, 0x502: 0xfb, 0x503: 0xfb, 0x504: 0xfb, 0x505: 0xfb, 0x506: 0xfb, 0x507: 0xfb,
+ 0x508: 0xfb, 0x509: 0xfb, 0x50a: 0xfb, 0x50b: 0xfb, 0x50c: 0xfb, 0x50d: 0xfb, 0x50e: 0xfb, 0x50f: 0xfb,
+ 0x510: 0xfb, 0x511: 0xfb, 0x512: 0xfb, 0x513: 0xfb, 0x514: 0xfb, 0x515: 0xfb, 0x516: 0xfb, 0x517: 0xfb,
+ 0x518: 0xfb, 0x519: 0xfb, 0x51a: 0xfb, 0x51b: 0xfb, 0x51c: 0xfb, 0x51d: 0xfb, 0x51e: 0xfb, 0x51f: 0xfb,
+ 0x520: 0xa0, 0x521: 0xa0, 0x522: 0xa0, 0x523: 0xa0, 0x524: 0xa0, 0x525: 0xa0, 0x526: 0xa0, 0x527: 0xa0,
+ 0x528: 0x14d, 0x529: 0x15c, 0x52a: 0xfb, 0x52b: 0x15d, 0x52c: 0x15e, 0x52d: 0x15f, 0x52e: 0x160, 0x52f: 0xfb,
+ 0x530: 0xfb, 0x531: 0xfb, 0x532: 0xfb, 0x533: 0xfb, 0x534: 0xfb, 0x535: 0xfb, 0x536: 0xfb, 0x537: 0xfb,
+ 0x538: 0xfb, 0x539: 0x161, 0x53a: 0x162, 0x53b: 0xfb, 0x53c: 0xa0, 0x53d: 0x163, 0x53e: 0x164, 0x53f: 0x165,
+ // Block 0x15, offset 0x540
+ 0x540: 0xa0, 0x541: 0xa0, 0x542: 0xa0, 0x543: 0xa0, 0x544: 0xa0, 0x545: 0xa0, 0x546: 0xa0, 0x547: 0xa0,
+ 0x548: 0xa0, 0x549: 0xa0, 0x54a: 0xa0, 0x54b: 0xa0, 0x54c: 0xa0, 0x54d: 0xa0, 0x54e: 0xa0, 0x54f: 0xa0,
+ 0x550: 0xa0, 0x551: 0xa0, 0x552: 0xa0, 0x553: 0xa0, 0x554: 0xa0, 0x555: 0xa0, 0x556: 0xa0, 0x557: 0xa0,
+ 0x558: 0xa0, 0x559: 0xa0, 0x55a: 0xa0, 0x55b: 0xa0, 0x55c: 0xa0, 0x55d: 0xa0, 0x55e: 0xa0, 0x55f: 0x166,
+ 0x560: 0xa0, 0x561: 0xa0, 0x562: 0xa0, 0x563: 0xa0, 0x564: 0xa0, 0x565: 0xa0, 0x566: 0xa0, 0x567: 0xa0,
+ 0x568: 0xa0, 0x569: 0xa0, 0x56a: 0xa0, 0x56b: 0xa0, 0x56c: 0xa0, 0x56d: 0xa0, 0x56e: 0xa0, 0x56f: 0xa0,
+ 0x570: 0xa0, 0x571: 0xa0, 0x572: 0xa0, 0x573: 0x167, 0x574: 0x168, 0x575: 0xfb, 0x576: 0xfb, 0x577: 0xfb,
+ 0x578: 0xfb, 0x579: 0xfb, 0x57a: 0xfb, 0x57b: 0xfb, 0x57c: 0xfb, 0x57d: 0xfb, 0x57e: 0xfb, 0x57f: 0xfb,
+ // Block 0x16, offset 0x580
+ 0x580: 0xa0, 0x581: 0xa0, 0x582: 0xa0, 0x583: 0xa0, 0x584: 0x169, 0x585: 0x16a, 0x586: 0xa0, 0x587: 0xa0,
+ 0x588: 0xa0, 0x589: 0xa0, 0x58a: 0xa0, 0x58b: 0x16b, 0x58c: 0xfb, 0x58d: 0xfb, 0x58e: 0xfb, 0x58f: 0xfb,
+ 0x590: 0xfb, 0x591: 0xfb, 0x592: 0xfb, 0x593: 0xfb, 0x594: 0xfb, 0x595: 0xfb, 0x596: 0xfb, 0x597: 0xfb,
+ 0x598: 0xfb, 0x599: 0xfb, 0x59a: 0xfb, 0x59b: 0xfb, 0x59c: 0xfb, 0x59d: 0xfb, 0x59e: 0xfb, 0x59f: 0xfb,
+ 0x5a0: 0xfb, 0x5a1: 0xfb, 0x5a2: 0xfb, 0x5a3: 0xfb, 0x5a4: 0xfb, 0x5a5: 0xfb, 0x5a6: 0xfb, 0x5a7: 0xfb,
+ 0x5a8: 0xfb, 0x5a9: 0xfb, 0x5aa: 0xfb, 0x5ab: 0xfb, 0x5ac: 0xfb, 0x5ad: 0xfb, 0x5ae: 0xfb, 0x5af: 0xfb,
+ 0x5b0: 0xa0, 0x5b1: 0x16c, 0x5b2: 0x16d, 0x5b3: 0xfb, 0x5b4: 0xfb, 0x5b5: 0xfb, 0x5b6: 0xfb, 0x5b7: 0xfb,
+ 0x5b8: 0xfb, 0x5b9: 0xfb, 0x5ba: 0xfb, 0x5bb: 0xfb, 0x5bc: 0xfb, 0x5bd: 0xfb, 0x5be: 0xfb, 0x5bf: 0xfb,
+ // Block 0x17, offset 0x5c0
+ 0x5c0: 0x9c, 0x5c1: 0x9c, 0x5c2: 0x9c, 0x5c3: 0x16e, 0x5c4: 0x16f, 0x5c5: 0x170, 0x5c6: 0x171, 0x5c7: 0x172,
+ 0x5c8: 0x9c, 0x5c9: 0x173, 0x5ca: 0xfb, 0x5cb: 0x174, 0x5cc: 0x9c, 0x5cd: 0x175, 0x5ce: 0xfb, 0x5cf: 0xfb,
+ 0x5d0: 0x60, 0x5d1: 0x61, 0x5d2: 0x62, 0x5d3: 0x63, 0x5d4: 0x64, 0x5d5: 0x65, 0x5d6: 0x66, 0x5d7: 0x67,
+ 0x5d8: 0x68, 0x5d9: 0x69, 0x5da: 0x6a, 0x5db: 0x6b, 0x5dc: 0x6c, 0x5dd: 0x6d, 0x5de: 0x6e, 0x5df: 0x6f,
+ 0x5e0: 0x9c, 0x5e1: 0x9c, 0x5e2: 0x9c, 0x5e3: 0x9c, 0x5e4: 0x9c, 0x5e5: 0x9c, 0x5e6: 0x9c, 0x5e7: 0x9c,
+ 0x5e8: 0x176, 0x5e9: 0x177, 0x5ea: 0x178, 0x5eb: 0xfb, 0x5ec: 0xfb, 0x5ed: 0xfb, 0x5ee: 0xfb, 0x5ef: 0xfb,
+ 0x5f0: 0xfb, 0x5f1: 0xfb, 0x5f2: 0xfb, 0x5f3: 0xfb, 0x5f4: 0xfb, 0x5f5: 0xfb, 0x5f6: 0xfb, 0x5f7: 0xfb,
+ 0x5f8: 0xfb, 0x5f9: 0xfb, 0x5fa: 0xfb, 0x5fb: 0xfb, 0x5fc: 0xfb, 0x5fd: 0xfb, 0x5fe: 0xfb, 0x5ff: 0xfb,
+ // Block 0x18, offset 0x600
+ 0x600: 0x179, 0x601: 0xfb, 0x602: 0xfb, 0x603: 0xfb, 0x604: 0x17a, 0x605: 0x17b, 0x606: 0xfb, 0x607: 0xfb,
+ 0x608: 0xfb, 0x609: 0xfb, 0x60a: 0xfb, 0x60b: 0x17c, 0x60c: 0xfb, 0x60d: 0xfb, 0x60e: 0xfb, 0x60f: 0xfb,
+ 0x610: 0xfb, 0x611: 0xfb, 0x612: 0xfb, 0x613: 0xfb, 0x614: 0xfb, 0x615: 0xfb, 0x616: 0xfb, 0x617: 0xfb,
+ 0x618: 0xfb, 0x619: 0xfb, 0x61a: 0xfb, 0x61b: 0xfb, 0x61c: 0xfb, 0x61d: 0xfb, 0x61e: 0xfb, 0x61f: 0xfb,
+ 0x620: 0x123, 0x621: 0x123, 0x622: 0x123, 0x623: 0x17d, 0x624: 0x70, 0x625: 0x17e, 0x626: 0xfb, 0x627: 0xfb,
+ 0x628: 0xfb, 0x629: 0xfb, 0x62a: 0xfb, 0x62b: 0xfb, 0x62c: 0xfb, 0x62d: 0xfb, 0x62e: 0xfb, 0x62f: 0xfb,
+ 0x630: 0xfb, 0x631: 0x17f, 0x632: 0x180, 0x633: 0xfb, 0x634: 0x181, 0x635: 0xfb, 0x636: 0xfb, 0x637: 0xfb,
+ 0x638: 0x71, 0x639: 0x72, 0x63a: 0x73, 0x63b: 0x182, 0x63c: 0xfb, 0x63d: 0xfb, 0x63e: 0xfb, 0x63f: 0xfb,
+ // Block 0x19, offset 0x640
+ 0x640: 0x183, 0x641: 0x9c, 0x642: 0x184, 0x643: 0x185, 0x644: 0x74, 0x645: 0x75, 0x646: 0x186, 0x647: 0x187,
+ 0x648: 0x76, 0x649: 0x188, 0x64a: 0xfb, 0x64b: 0xfb, 0x64c: 0x9c, 0x64d: 0x9c, 0x64e: 0x9c, 0x64f: 0x9c,
+ 0x650: 0x9c, 0x651: 0x9c, 0x652: 0x9c, 0x653: 0x9c, 0x654: 0x9c, 0x655: 0x9c, 0x656: 0x9c, 0x657: 0x9c,
+ 0x658: 0x9c, 0x659: 0x9c, 0x65a: 0x9c, 0x65b: 0x189, 0x65c: 0x9c, 0x65d: 0x18a, 0x65e: 0x9c, 0x65f: 0x18b,
+ 0x660: 0x18c, 0x661: 0x18d, 0x662: 0x18e, 0x663: 0xfb, 0x664: 0x9c, 0x665: 0x18f, 0x666: 0x9c, 0x667: 0x190,
+ 0x668: 0x9c, 0x669: 0x191, 0x66a: 0x192, 0x66b: 0x193, 0x66c: 0x9c, 0x66d: 0x9c, 0x66e: 0x194, 0x66f: 0x195,
+ 0x670: 0xfb, 0x671: 0xfb, 0x672: 0xfb, 0x673: 0xfb, 0x674: 0xfb, 0x675: 0xfb, 0x676: 0xfb, 0x677: 0xfb,
+ 0x678: 0xfb, 0x679: 0xfb, 0x67a: 0xfb, 0x67b: 0xfb, 0x67c: 0xfb, 0x67d: 0xfb, 0x67e: 0xfb, 0x67f: 0xfb,
+ // Block 0x1a, offset 0x680
+ 0x680: 0xa0, 0x681: 0xa0, 0x682: 0xa0, 0x683: 0xa0, 0x684: 0xa0, 0x685: 0xa0, 0x686: 0xa0, 0x687: 0xa0,
+ 0x688: 0xa0, 0x689: 0xa0, 0x68a: 0xa0, 0x68b: 0xa0, 0x68c: 0xa0, 0x68d: 0xa0, 0x68e: 0xa0, 0x68f: 0xa0,
+ 0x690: 0xa0, 0x691: 0xa0, 0x692: 0xa0, 0x693: 0xa0, 0x694: 0xa0, 0x695: 0xa0, 0x696: 0xa0, 0x697: 0xa0,
+ 0x698: 0xa0, 0x699: 0xa0, 0x69a: 0xa0, 0x69b: 0x196, 0x69c: 0xa0, 0x69d: 0xa0, 0x69e: 0xa0, 0x69f: 0xa0,
+ 0x6a0: 0xa0, 0x6a1: 0xa0, 0x6a2: 0xa0, 0x6a3: 0xa0, 0x6a4: 0xa0, 0x6a5: 0xa0, 0x6a6: 0xa0, 0x6a7: 0xa0,
+ 0x6a8: 0xa0, 0x6a9: 0xa0, 0x6aa: 0xa0, 0x6ab: 0xa0, 0x6ac: 0xa0, 0x6ad: 0xa0, 0x6ae: 0xa0, 0x6af: 0xa0,
+ 0x6b0: 0xa0, 0x6b1: 0xa0, 0x6b2: 0xa0, 0x6b3: 0xa0, 0x6b4: 0xa0, 0x6b5: 0xa0, 0x6b6: 0xa0, 0x6b7: 0xa0,
+ 0x6b8: 0xa0, 0x6b9: 0xa0, 0x6ba: 0xa0, 0x6bb: 0xa0, 0x6bc: 0xa0, 0x6bd: 0xa0, 0x6be: 0xa0, 0x6bf: 0xa0,
+ // Block 0x1b, offset 0x6c0
+ 0x6c0: 0xa0, 0x6c1: 0xa0, 0x6c2: 0xa0, 0x6c3: 0xa0, 0x6c4: 0xa0, 0x6c5: 0xa0, 0x6c6: 0xa0, 0x6c7: 0xa0,
+ 0x6c8: 0xa0, 0x6c9: 0xa0, 0x6ca: 0xa0, 0x6cb: 0xa0, 0x6cc: 0xa0, 0x6cd: 0xa0, 0x6ce: 0xa0, 0x6cf: 0xa0,
+ 0x6d0: 0xa0, 0x6d1: 0xa0, 0x6d2: 0xa0, 0x6d3: 0xa0, 0x6d4: 0xa0, 0x6d5: 0xa0, 0x6d6: 0xa0, 0x6d7: 0xa0,
+ 0x6d8: 0xa0, 0x6d9: 0xa0, 0x6da: 0xa0, 0x6db: 0xa0, 0x6dc: 0x197, 0x6dd: 0xa0, 0x6de: 0xa0, 0x6df: 0xa0,
+ 0x6e0: 0x198, 0x6e1: 0xa0, 0x6e2: 0xa0, 0x6e3: 0xa0, 0x6e4: 0xa0, 0x6e5: 0xa0, 0x6e6: 0xa0, 0x6e7: 0xa0,
+ 0x6e8: 0xa0, 0x6e9: 0xa0, 0x6ea: 0xa0, 0x6eb: 0xa0, 0x6ec: 0xa0, 0x6ed: 0xa0, 0x6ee: 0xa0, 0x6ef: 0xa0,
+ 0x6f0: 0xa0, 0x6f1: 0xa0, 0x6f2: 0xa0, 0x6f3: 0xa0, 0x6f4: 0xa0, 0x6f5: 0xa0, 0x6f6: 0xa0, 0x6f7: 0xa0,
+ 0x6f8: 0xa0, 0x6f9: 0xa0, 0x6fa: 0xa0, 0x6fb: 0xa0, 0x6fc: 0xa0, 0x6fd: 0xa0, 0x6fe: 0xa0, 0x6ff: 0xa0,
+ // Block 0x1c, offset 0x700
+ 0x700: 0xa0, 0x701: 0xa0, 0x702: 0xa0, 0x703: 0xa0, 0x704: 0xa0, 0x705: 0xa0, 0x706: 0xa0, 0x707: 0xa0,
+ 0x708: 0xa0, 0x709: 0xa0, 0x70a: 0xa0, 0x70b: 0xa0, 0x70c: 0xa0, 0x70d: 0xa0, 0x70e: 0xa0, 0x70f: 0xa0,
+ 0x710: 0xa0, 0x711: 0xa0, 0x712: 0xa0, 0x713: 0xa0, 0x714: 0xa0, 0x715: 0xa0, 0x716: 0xa0, 0x717: 0xa0,
+ 0x718: 0xa0, 0x719: 0xa0, 0x71a: 0xa0, 0x71b: 0xa0, 0x71c: 0xa0, 0x71d: 0xa0, 0x71e: 0xa0, 0x71f: 0xa0,
+ 0x720: 0xa0, 0x721: 0xa0, 0x722: 0xa0, 0x723: 0xa0, 0x724: 0xa0, 0x725: 0xa0, 0x726: 0xa0, 0x727: 0xa0,
+ 0x728: 0xa0, 0x729: 0xa0, 0x72a: 0xa0, 0x72b: 0xa0, 0x72c: 0xa0, 0x72d: 0xa0, 0x72e: 0xa0, 0x72f: 0xa0,
+ 0x730: 0xa0, 0x731: 0xa0, 0x732: 0xa0, 0x733: 0xa0, 0x734: 0xa0, 0x735: 0xa0, 0x736: 0xa0, 0x737: 0xa0,
+ 0x738: 0xa0, 0x739: 0xa0, 0x73a: 0x199, 0x73b: 0xa0, 0x73c: 0xa0, 0x73d: 0xa0, 0x73e: 0xa0, 0x73f: 0xa0,
+ // Block 0x1d, offset 0x740
+ 0x740: 0xa0, 0x741: 0xa0, 0x742: 0xa0, 0x743: 0xa0, 0x744: 0xa0, 0x745: 0xa0, 0x746: 0xa0, 0x747: 0xa0,
+ 0x748: 0xa0, 0x749: 0xa0, 0x74a: 0xa0, 0x74b: 0xa0, 0x74c: 0xa0, 0x74d: 0xa0, 0x74e: 0xa0, 0x74f: 0xa0,
+ 0x750: 0xa0, 0x751: 0xa0, 0x752: 0xa0, 0x753: 0xa0, 0x754: 0xa0, 0x755: 0xa0, 0x756: 0xa0, 0x757: 0xa0,
+ 0x758: 0xa0, 0x759: 0xa0, 0x75a: 0xa0, 0x75b: 0xa0, 0x75c: 0xa0, 0x75d: 0xa0, 0x75e: 0xa0, 0x75f: 0xa0,
+ 0x760: 0xa0, 0x761: 0xa0, 0x762: 0xa0, 0x763: 0xa0, 0x764: 0xa0, 0x765: 0xa0, 0x766: 0xa0, 0x767: 0xa0,
+ 0x768: 0xa0, 0x769: 0xa0, 0x76a: 0xa0, 0x76b: 0xa0, 0x76c: 0xa0, 0x76d: 0xa0, 0x76e: 0xa0, 0x76f: 0x19a,
+ 0x770: 0xfb, 0x771: 0xfb, 0x772: 0xfb, 0x773: 0xfb, 0x774: 0xfb, 0x775: 0xfb, 0x776: 0xfb, 0x777: 0xfb,
+ 0x778: 0xfb, 0x779: 0xfb, 0x77a: 0xfb, 0x77b: 0xfb, 0x77c: 0xfb, 0x77d: 0xfb, 0x77e: 0xfb, 0x77f: 0xfb,
+ // Block 0x1e, offset 0x780
+ 0x780: 0xfb, 0x781: 0xfb, 0x782: 0xfb, 0x783: 0xfb, 0x784: 0xfb, 0x785: 0xfb, 0x786: 0xfb, 0x787: 0xfb,
+ 0x788: 0xfb, 0x789: 0xfb, 0x78a: 0xfb, 0x78b: 0xfb, 0x78c: 0xfb, 0x78d: 0xfb, 0x78e: 0xfb, 0x78f: 0xfb,
+ 0x790: 0xfb, 0x791: 0xfb, 0x792: 0xfb, 0x793: 0xfb, 0x794: 0xfb, 0x795: 0xfb, 0x796: 0xfb, 0x797: 0xfb,
+ 0x798: 0xfb, 0x799: 0xfb, 0x79a: 0xfb, 0x79b: 0xfb, 0x79c: 0xfb, 0x79d: 0xfb, 0x79e: 0xfb, 0x79f: 0xfb,
+ 0x7a0: 0x77, 0x7a1: 0x78, 0x7a2: 0x79, 0x7a3: 0x19b, 0x7a4: 0x7a, 0x7a5: 0x7b, 0x7a6: 0x19c, 0x7a7: 0x7c,
+ 0x7a8: 0x7d, 0x7a9: 0xfb, 0x7aa: 0xfb, 0x7ab: 0xfb, 0x7ac: 0xfb, 0x7ad: 0xfb, 0x7ae: 0xfb, 0x7af: 0xfb,
+ 0x7b0: 0xfb, 0x7b1: 0xfb, 0x7b2: 0xfb, 0x7b3: 0xfb, 0x7b4: 0xfb, 0x7b5: 0xfb, 0x7b6: 0xfb, 0x7b7: 0xfb,
+ 0x7b8: 0xfb, 0x7b9: 0xfb, 0x7ba: 0xfb, 0x7bb: 0xfb, 0x7bc: 0xfb, 0x7bd: 0xfb, 0x7be: 0xfb, 0x7bf: 0xfb,
+ // Block 0x1f, offset 0x7c0
+ 0x7c0: 0xa0, 0x7c1: 0xa0, 0x7c2: 0xa0, 0x7c3: 0xa0, 0x7c4: 0xa0, 0x7c5: 0xa0, 0x7c6: 0xa0, 0x7c7: 0xa0,
+ 0x7c8: 0xa0, 0x7c9: 0xa0, 0x7ca: 0xa0, 0x7cb: 0xa0, 0x7cc: 0xa0, 0x7cd: 0x19d, 0x7ce: 0xfb, 0x7cf: 0xfb,
+ 0x7d0: 0xfb, 0x7d1: 0xfb, 0x7d2: 0xfb, 0x7d3: 0xfb, 0x7d4: 0xfb, 0x7d5: 0xfb, 0x7d6: 0xfb, 0x7d7: 0xfb,
+ 0x7d8: 0xfb, 0x7d9: 0xfb, 0x7da: 0xfb, 0x7db: 0xfb, 0x7dc: 0xfb, 0x7dd: 0xfb, 0x7de: 0xfb, 0x7df: 0xfb,
+ 0x7e0: 0xfb, 0x7e1: 0xfb, 0x7e2: 0xfb, 0x7e3: 0xfb, 0x7e4: 0xfb, 0x7e5: 0xfb, 0x7e6: 0xfb, 0x7e7: 0xfb,
+ 0x7e8: 0xfb, 0x7e9: 0xfb, 0x7ea: 0xfb, 0x7eb: 0xfb, 0x7ec: 0xfb, 0x7ed: 0xfb, 0x7ee: 0xfb, 0x7ef: 0xfb,
+ 0x7f0: 0xfb, 0x7f1: 0xfb, 0x7f2: 0xfb, 0x7f3: 0xfb, 0x7f4: 0xfb, 0x7f5: 0xfb, 0x7f6: 0xfb, 0x7f7: 0xfb,
+ 0x7f8: 0xfb, 0x7f9: 0xfb, 0x7fa: 0xfb, 0x7fb: 0xfb, 0x7fc: 0xfb, 0x7fd: 0xfb, 0x7fe: 0xfb, 0x7ff: 0xfb,
+ // Block 0x20, offset 0x800
+ 0x810: 0x0d, 0x811: 0x0e, 0x812: 0x0f, 0x813: 0x10, 0x814: 0x11, 0x815: 0x0b, 0x816: 0x12, 0x817: 0x07,
+ 0x818: 0x13, 0x819: 0x0b, 0x81a: 0x0b, 0x81b: 0x14, 0x81c: 0x0b, 0x81d: 0x15, 0x81e: 0x16, 0x81f: 0x17,
+ 0x820: 0x07, 0x821: 0x07, 0x822: 0x07, 0x823: 0x07, 0x824: 0x07, 0x825: 0x07, 0x826: 0x07, 0x827: 0x07,
+ 0x828: 0x07, 0x829: 0x07, 0x82a: 0x18, 0x82b: 0x19, 0x82c: 0x1a, 0x82d: 0x07, 0x82e: 0x1b, 0x82f: 0x1c,
+ 0x830: 0x07, 0x831: 0x1d, 0x832: 0x0b, 0x833: 0x0b, 0x834: 0x0b, 0x835: 0x0b, 0x836: 0x0b, 0x837: 0x0b,
+ 0x838: 0x0b, 0x839: 0x0b, 0x83a: 0x0b, 0x83b: 0x0b, 0x83c: 0x0b, 0x83d: 0x0b, 0x83e: 0x0b, 0x83f: 0x0b,
+ // Block 0x21, offset 0x840
+ 0x840: 0x0b, 0x841: 0x0b, 0x842: 0x0b, 0x843: 0x0b, 0x844: 0x0b, 0x845: 0x0b, 0x846: 0x0b, 0x847: 0x0b,
+ 0x848: 0x0b, 0x849: 0x0b, 0x84a: 0x0b, 0x84b: 0x0b, 0x84c: 0x0b, 0x84d: 0x0b, 0x84e: 0x0b, 0x84f: 0x0b,
+ 0x850: 0x0b, 0x851: 0x0b, 0x852: 0x0b, 0x853: 0x0b, 0x854: 0x0b, 0x855: 0x0b, 0x856: 0x0b, 0x857: 0x0b,
+ 0x858: 0x0b, 0x859: 0x0b, 0x85a: 0x0b, 0x85b: 0x0b, 0x85c: 0x0b, 0x85d: 0x0b, 0x85e: 0x0b, 0x85f: 0x0b,
+ 0x860: 0x0b, 0x861: 0x0b, 0x862: 0x0b, 0x863: 0x0b, 0x864: 0x0b, 0x865: 0x0b, 0x866: 0x0b, 0x867: 0x0b,
+ 0x868: 0x0b, 0x869: 0x0b, 0x86a: 0x0b, 0x86b: 0x0b, 0x86c: 0x0b, 0x86d: 0x0b, 0x86e: 0x0b, 0x86f: 0x0b,
+ 0x870: 0x0b, 0x871: 0x0b, 0x872: 0x0b, 0x873: 0x0b, 0x874: 0x0b, 0x875: 0x0b, 0x876: 0x0b, 0x877: 0x0b,
+ 0x878: 0x0b, 0x879: 0x0b, 0x87a: 0x0b, 0x87b: 0x0b, 0x87c: 0x0b, 0x87d: 0x0b, 0x87e: 0x0b, 0x87f: 0x0b,
+ // Block 0x22, offset 0x880
+ 0x880: 0x19e, 0x881: 0x19f, 0x882: 0xfb, 0x883: 0xfb, 0x884: 0x1a0, 0x885: 0x1a0, 0x886: 0x1a0, 0x887: 0x1a1,
+ 0x888: 0xfb, 0x889: 0xfb, 0x88a: 0xfb, 0x88b: 0xfb, 0x88c: 0xfb, 0x88d: 0xfb, 0x88e: 0xfb, 0x88f: 0xfb,
+ 0x890: 0xfb, 0x891: 0xfb, 0x892: 0xfb, 0x893: 0xfb, 0x894: 0xfb, 0x895: 0xfb, 0x896: 0xfb, 0x897: 0xfb,
+ 0x898: 0xfb, 0x899: 0xfb, 0x89a: 0xfb, 0x89b: 0xfb, 0x89c: 0xfb, 0x89d: 0xfb, 0x89e: 0xfb, 0x89f: 0xfb,
+ 0x8a0: 0xfb, 0x8a1: 0xfb, 0x8a2: 0xfb, 0x8a3: 0xfb, 0x8a4: 0xfb, 0x8a5: 0xfb, 0x8a6: 0xfb, 0x8a7: 0xfb,
+ 0x8a8: 0xfb, 0x8a9: 0xfb, 0x8aa: 0xfb, 0x8ab: 0xfb, 0x8ac: 0xfb, 0x8ad: 0xfb, 0x8ae: 0xfb, 0x8af: 0xfb,
+ 0x8b0: 0xfb, 0x8b1: 0xfb, 0x8b2: 0xfb, 0x8b3: 0xfb, 0x8b4: 0xfb, 0x8b5: 0xfb, 0x8b6: 0xfb, 0x8b7: 0xfb,
+ 0x8b8: 0xfb, 0x8b9: 0xfb, 0x8ba: 0xfb, 0x8bb: 0xfb, 0x8bc: 0xfb, 0x8bd: 0xfb, 0x8be: 0xfb, 0x8bf: 0xfb,
+ // Block 0x23, offset 0x8c0
+ 0x8c0: 0x0b, 0x8c1: 0x0b, 0x8c2: 0x0b, 0x8c3: 0x0b, 0x8c4: 0x0b, 0x8c5: 0x0b, 0x8c6: 0x0b, 0x8c7: 0x0b,
+ 0x8c8: 0x0b, 0x8c9: 0x0b, 0x8ca: 0x0b, 0x8cb: 0x0b, 0x8cc: 0x0b, 0x8cd: 0x0b, 0x8ce: 0x0b, 0x8cf: 0x0b,
+ 0x8d0: 0x0b, 0x8d1: 0x0b, 0x8d2: 0x0b, 0x8d3: 0x0b, 0x8d4: 0x0b, 0x8d5: 0x0b, 0x8d6: 0x0b, 0x8d7: 0x0b,
+ 0x8d8: 0x0b, 0x8d9: 0x0b, 0x8da: 0x0b, 0x8db: 0x0b, 0x8dc: 0x0b, 0x8dd: 0x0b, 0x8de: 0x0b, 0x8df: 0x0b,
+ 0x8e0: 0x20, 0x8e1: 0x0b, 0x8e2: 0x0b, 0x8e3: 0x0b, 0x8e4: 0x0b, 0x8e5: 0x0b, 0x8e6: 0x0b, 0x8e7: 0x0b,
+ 0x8e8: 0x0b, 0x8e9: 0x0b, 0x8ea: 0x0b, 0x8eb: 0x0b, 0x8ec: 0x0b, 0x8ed: 0x0b, 0x8ee: 0x0b, 0x8ef: 0x0b,
+ 0x8f0: 0x0b, 0x8f1: 0x0b, 0x8f2: 0x0b, 0x8f3: 0x0b, 0x8f4: 0x0b, 0x8f5: 0x0b, 0x8f6: 0x0b, 0x8f7: 0x0b,
+ 0x8f8: 0x0b, 0x8f9: 0x0b, 0x8fa: 0x0b, 0x8fb: 0x0b, 0x8fc: 0x0b, 0x8fd: 0x0b, 0x8fe: 0x0b, 0x8ff: 0x0b,
+ // Block 0x24, offset 0x900
+ 0x900: 0x0b, 0x901: 0x0b, 0x902: 0x0b, 0x903: 0x0b, 0x904: 0x0b, 0x905: 0x0b, 0x906: 0x0b, 0x907: 0x0b,
+ 0x908: 0x0b, 0x909: 0x0b, 0x90a: 0x0b, 0x90b: 0x0b, 0x90c: 0x0b, 0x90d: 0x0b, 0x90e: 0x0b, 0x90f: 0x0b,
+}
+
+// idnaSparseOffset: 292 entries, 584 bytes
+var idnaSparseOffset = []uint16{0x0, 0x8, 0x19, 0x25, 0x27, 0x2c, 0x33, 0x3e, 0x4a, 0x4e, 0x5d, 0x62, 0x6c, 0x78, 0x85, 0x8b, 0x94, 0xa4, 0xb2, 0xbd, 0xca, 0xdb, 0xe5, 0xec, 0xf9, 0x10a, 0x111, 0x11c, 0x12b, 0x139, 0x143, 0x145, 0x14a, 0x14d, 0x150, 0x152, 0x15e, 0x169, 0x171, 0x177, 0x17d, 0x182, 0x187, 0x18a, 0x18e, 0x194, 0x199, 0x1a5, 0x1af, 0x1b5, 0x1c6, 0x1d0, 0x1d3, 0x1db, 0x1de, 0x1eb, 0x1f3, 0x1f7, 0x1fe, 0x206, 0x216, 0x222, 0x225, 0x22f, 0x23b, 0x247, 0x253, 0x25b, 0x260, 0x26d, 0x27e, 0x282, 0x28d, 0x291, 0x29a, 0x2a2, 0x2a8, 0x2ad, 0x2b0, 0x2b4, 0x2ba, 0x2be, 0x2c2, 0x2c6, 0x2cc, 0x2d4, 0x2db, 0x2e6, 0x2f0, 0x2f4, 0x2f7, 0x2fd, 0x301, 0x303, 0x306, 0x308, 0x30b, 0x315, 0x318, 0x327, 0x32b, 0x330, 0x333, 0x337, 0x33c, 0x341, 0x347, 0x358, 0x368, 0x36e, 0x372, 0x381, 0x386, 0x38e, 0x398, 0x3a3, 0x3ab, 0x3bc, 0x3c5, 0x3d5, 0x3e2, 0x3ee, 0x3f3, 0x400, 0x404, 0x409, 0x40b, 0x40d, 0x411, 0x413, 0x417, 0x420, 0x426, 0x42a, 0x43a, 0x444, 0x449, 0x44c, 0x452, 0x459, 0x45e, 0x462, 0x468, 0x46d, 0x476, 0x47b, 0x481, 0x488, 0x48f, 0x496, 0x49a, 0x49f, 0x4a2, 0x4a7, 0x4b3, 0x4b9, 0x4be, 0x4c5, 0x4cd, 0x4d2, 0x4d6, 0x4e6, 0x4ed, 0x4f1, 0x4f5, 0x4fc, 0x4fe, 0x501, 0x504, 0x508, 0x511, 0x515, 0x51d, 0x525, 0x52d, 0x539, 0x545, 0x54b, 0x554, 0x560, 0x567, 0x570, 0x57b, 0x582, 0x591, 0x59e, 0x5ab, 0x5b4, 0x5b8, 0x5c7, 0x5cf, 0x5da, 0x5e3, 0x5e9, 0x5f1, 0x5fa, 0x605, 0x608, 0x614, 0x61d, 0x620, 0x625, 0x62e, 0x633, 0x640, 0x64b, 0x654, 0x65e, 0x661, 0x66b, 0x674, 0x680, 0x68d, 0x69a, 0x6a8, 0x6af, 0x6b3, 0x6b7, 0x6ba, 0x6bf, 0x6c2, 0x6c7, 0x6ca, 0x6d1, 0x6d8, 0x6dc, 0x6e7, 0x6ea, 0x6ed, 0x6f0, 0x6f6, 0x6fc, 0x705, 0x708, 0x70b, 0x70e, 0x711, 0x718, 0x71b, 0x720, 0x72a, 0x72d, 0x731, 0x740, 0x74c, 0x750, 0x755, 0x759, 0x75e, 0x762, 0x767, 0x770, 0x77b, 0x781, 0x787, 0x78d, 0x793, 0x79c, 0x79f, 0x7a2, 0x7a6, 0x7aa, 0x7ae, 0x7b4, 0x7ba, 0x7bf, 0x7c2, 0x7d2, 0x7d9, 0x7dc, 0x7e1, 0x7e5, 0x7eb, 0x7f2, 0x7f6, 0x7fa, 0x803, 0x80a, 0x80f, 0x813, 0x821, 0x824, 0x827, 0x82b, 0x82f, 0x832, 0x842, 0x853, 0x856, 0x85b, 0x85d, 0x85f}
+
+// idnaSparseValues: 2146 entries, 8584 bytes
+var idnaSparseValues = [2146]valueRange{
+ // Block 0x0, offset 0x0
+ {value: 0x0000, lo: 0x07},
+ {value: 0xe105, lo: 0x80, hi: 0x96},
+ {value: 0x0018, lo: 0x97, hi: 0x97},
+ {value: 0xe105, lo: 0x98, hi: 0x9e},
+ {value: 0x001f, lo: 0x9f, hi: 0x9f},
+ {value: 0x0008, lo: 0xa0, hi: 0xb6},
+ {value: 0x0018, lo: 0xb7, hi: 0xb7},
+ {value: 0x0008, lo: 0xb8, hi: 0xbf},
+ // Block 0x1, offset 0x8
+ {value: 0x0000, lo: 0x10},
+ {value: 0x0008, lo: 0x80, hi: 0x80},
+ {value: 0xe01d, lo: 0x81, hi: 0x81},
+ {value: 0x0008, lo: 0x82, hi: 0x82},
+ {value: 0x0335, lo: 0x83, hi: 0x83},
+ {value: 0x034d, lo: 0x84, hi: 0x84},
+ {value: 0x0365, lo: 0x85, hi: 0x85},
+ {value: 0xe00d, lo: 0x86, hi: 0x86},
+ {value: 0x0008, lo: 0x87, hi: 0x87},
+ {value: 0xe00d, lo: 0x88, hi: 0x88},
+ {value: 0x0008, lo: 0x89, hi: 0x89},
+ {value: 0xe00d, lo: 0x8a, hi: 0x8a},
+ {value: 0x0008, lo: 0x8b, hi: 0x8b},
+ {value: 0xe00d, lo: 0x8c, hi: 0x8c},
+ {value: 0x0008, lo: 0x8d, hi: 0x8d},
+ {value: 0xe00d, lo: 0x8e, hi: 0x8e},
+ {value: 0x0008, lo: 0x8f, hi: 0xbf},
+ // Block 0x2, offset 0x19
+ {value: 0x0000, lo: 0x0b},
+ {value: 0x0008, lo: 0x80, hi: 0xaf},
+ {value: 0x0249, lo: 0xb0, hi: 0xb0},
+ {value: 0x037d, lo: 0xb1, hi: 0xb1},
+ {value: 0x0259, lo: 0xb2, hi: 0xb2},
+ {value: 0x0269, lo: 0xb3, hi: 0xb3},
+ {value: 0x034d, lo: 0xb4, hi: 0xb4},
+ {value: 0x0395, lo: 0xb5, hi: 0xb5},
+ {value: 0xe1bd, lo: 0xb6, hi: 0xb6},
+ {value: 0x0279, lo: 0xb7, hi: 0xb7},
+ {value: 0x0289, lo: 0xb8, hi: 0xb8},
+ {value: 0x0008, lo: 0xb9, hi: 0xbf},
+ // Block 0x3, offset 0x25
+ {value: 0x0000, lo: 0x01},
+ {value: 0x3308, lo: 0x80, hi: 0xbf},
+ // Block 0x4, offset 0x27
+ {value: 0x0000, lo: 0x04},
+ {value: 0x03f5, lo: 0x80, hi: 0x8f},
+ {value: 0xe105, lo: 0x90, hi: 0x9f},
+ {value: 0x049d, lo: 0xa0, hi: 0xaf},
+ {value: 0x0008, lo: 0xb0, hi: 0xbf},
+ // Block 0x5, offset 0x2c
+ {value: 0x0000, lo: 0x06},
+ {value: 0xe185, lo: 0x80, hi: 0x8f},
+ {value: 0x0545, lo: 0x90, hi: 0x96},
+ {value: 0x0040, lo: 0x97, hi: 0x98},
+ {value: 0x0008, lo: 0x99, hi: 0x99},
+ {value: 0x0018, lo: 0x9a, hi: 0x9f},
+ {value: 0x0008, lo: 0xa0, hi: 0xbf},
+ // Block 0x6, offset 0x33
+ {value: 0x0000, lo: 0x0a},
+ {value: 0x0008, lo: 0x80, hi: 0x86},
+ {value: 0x0401, lo: 0x87, hi: 0x87},
+ {value: 0x0008, lo: 0x88, hi: 0x88},
+ {value: 0x0018, lo: 0x89, hi: 0x8a},
+ {value: 0x0040, lo: 0x8b, hi: 0x8c},
+ {value: 0x0018, lo: 0x8d, hi: 0x8f},
+ {value: 0x0040, lo: 0x90, hi: 0x90},
+ {value: 0x3308, lo: 0x91, hi: 0xbd},
+ {value: 0x0818, lo: 0xbe, hi: 0xbe},
+ {value: 0x3308, lo: 0xbf, hi: 0xbf},
+ // Block 0x7, offset 0x3e
+ {value: 0x0000, lo: 0x0b},
+ {value: 0x0818, lo: 0x80, hi: 0x80},
+ {value: 0x3308, lo: 0x81, hi: 0x82},
+ {value: 0x0818, lo: 0x83, hi: 0x83},
+ {value: 0x3308, lo: 0x84, hi: 0x85},
+ {value: 0x0818, lo: 0x86, hi: 0x86},
+ {value: 0x3308, lo: 0x87, hi: 0x87},
+ {value: 0x0040, lo: 0x88, hi: 0x8f},
+ {value: 0x0808, lo: 0x90, hi: 0xaa},
+ {value: 0x0040, lo: 0xab, hi: 0xae},
+ {value: 0x0808, lo: 0xaf, hi: 0xb4},
+ {value: 0x0040, lo: 0xb5, hi: 0xbf},
+ // Block 0x8, offset 0x4a
+ {value: 0x0000, lo: 0x03},
+ {value: 0x0a08, lo: 0x80, hi: 0x87},
+ {value: 0x0c08, lo: 0x88, hi: 0x99},
+ {value: 0x0a08, lo: 0x9a, hi: 0xbf},
+ // Block 0x9, offset 0x4e
+ {value: 0x0000, lo: 0x0e},
+ {value: 0x3308, lo: 0x80, hi: 0x8a},
+ {value: 0x0040, lo: 0x8b, hi: 0x8c},
+ {value: 0x0c08, lo: 0x8d, hi: 0x8d},
+ {value: 0x0a08, lo: 0x8e, hi: 0x98},
+ {value: 0x0c08, lo: 0x99, hi: 0x9b},
+ {value: 0x0a08, lo: 0x9c, hi: 0xaa},
+ {value: 0x0c08, lo: 0xab, hi: 0xac},
+ {value: 0x0a08, lo: 0xad, hi: 0xb0},
+ {value: 0x0c08, lo: 0xb1, hi: 0xb1},
+ {value: 0x0a08, lo: 0xb2, hi: 0xb2},
+ {value: 0x0c08, lo: 0xb3, hi: 0xb4},
+ {value: 0x0a08, lo: 0xb5, hi: 0xb7},
+ {value: 0x0c08, lo: 0xb8, hi: 0xb9},
+ {value: 0x0a08, lo: 0xba, hi: 0xbf},
+ // Block 0xa, offset 0x5d
+ {value: 0x0000, lo: 0x04},
+ {value: 0x0808, lo: 0x80, hi: 0xa5},
+ {value: 0x3308, lo: 0xa6, hi: 0xb0},
+ {value: 0x0808, lo: 0xb1, hi: 0xb1},
+ {value: 0x0040, lo: 0xb2, hi: 0xbf},
+ // Block 0xb, offset 0x62
+ {value: 0x0000, lo: 0x09},
+ {value: 0x0808, lo: 0x80, hi: 0x89},
+ {value: 0x0a08, lo: 0x8a, hi: 0xaa},
+ {value: 0x3308, lo: 0xab, hi: 0xb3},
+ {value: 0x0808, lo: 0xb4, hi: 0xb5},
+ {value: 0x0018, lo: 0xb6, hi: 0xb9},
+ {value: 0x0818, lo: 0xba, hi: 0xba},
+ {value: 0x0040, lo: 0xbb, hi: 0xbc},
+ {value: 0x3308, lo: 0xbd, hi: 0xbd},
+ {value: 0x0818, lo: 0xbe, hi: 0xbf},
+ // Block 0xc, offset 0x6c
+ {value: 0x0000, lo: 0x0b},
+ {value: 0x0808, lo: 0x80, hi: 0x95},
+ {value: 0x3308, lo: 0x96, hi: 0x99},
+ {value: 0x0808, lo: 0x9a, hi: 0x9a},
+ {value: 0x3308, lo: 0x9b, hi: 0xa3},
+ {value: 0x0808, lo: 0xa4, hi: 0xa4},
+ {value: 0x3308, lo: 0xa5, hi: 0xa7},
+ {value: 0x0808, lo: 0xa8, hi: 0xa8},
+ {value: 0x3308, lo: 0xa9, hi: 0xad},
+ {value: 0x0040, lo: 0xae, hi: 0xaf},
+ {value: 0x0818, lo: 0xb0, hi: 0xbe},
+ {value: 0x0040, lo: 0xbf, hi: 0xbf},
+ // Block 0xd, offset 0x78
+ {value: 0x0000, lo: 0x0c},
+ {value: 0x0040, lo: 0x80, hi: 0x9f},
+ {value: 0x0a08, lo: 0xa0, hi: 0xa9},
+ {value: 0x0c08, lo: 0xaa, hi: 0xac},
+ {value: 0x0808, lo: 0xad, hi: 0xad},
+ {value: 0x0c08, lo: 0xae, hi: 0xae},
+ {value: 0x0a08, lo: 0xaf, hi: 0xb0},
+ {value: 0x0c08, lo: 0xb1, hi: 0xb2},
+ {value: 0x0a08, lo: 0xb3, hi: 0xb4},
+ {value: 0x0040, lo: 0xb5, hi: 0xb5},
+ {value: 0x0a08, lo: 0xb6, hi: 0xb8},
+ {value: 0x0c08, lo: 0xb9, hi: 0xb9},
+ {value: 0x0a08, lo: 0xba, hi: 0xbf},
+ // Block 0xe, offset 0x85
+ {value: 0x0000, lo: 0x05},
+ {value: 0x0a08, lo: 0x80, hi: 0x87},
+ {value: 0x0040, lo: 0x88, hi: 0x92},
+ {value: 0x3308, lo: 0x93, hi: 0xa1},
+ {value: 0x0840, lo: 0xa2, hi: 0xa2},
+ {value: 0x3308, lo: 0xa3, hi: 0xbf},
+ // Block 0xf, offset 0x8b
+ {value: 0x0000, lo: 0x08},
+ {value: 0x3308, lo: 0x80, hi: 0x82},
+ {value: 0x3008, lo: 0x83, hi: 0x83},
+ {value: 0x0008, lo: 0x84, hi: 0xb9},
+ {value: 0x3308, lo: 0xba, hi: 0xba},
+ {value: 0x3008, lo: 0xbb, hi: 0xbb},
+ {value: 0x3308, lo: 0xbc, hi: 0xbc},
+ {value: 0x0008, lo: 0xbd, hi: 0xbd},
+ {value: 0x3008, lo: 0xbe, hi: 0xbf},
+ // Block 0x10, offset 0x94
+ {value: 0x0000, lo: 0x0f},
+ {value: 0x3308, lo: 0x80, hi: 0x80},
+ {value: 0x3008, lo: 0x81, hi: 0x82},
+ {value: 0x0040, lo: 0x83, hi: 0x85},
+ {value: 0x3008, lo: 0x86, hi: 0x88},
+ {value: 0x0040, lo: 0x89, hi: 0x89},
+ {value: 0x3008, lo: 0x8a, hi: 0x8c},
+ {value: 0x3b08, lo: 0x8d, hi: 0x8d},
+ {value: 0x0040, lo: 0x8e, hi: 0x8f},
+ {value: 0x0008, lo: 0x90, hi: 0x90},
+ {value: 0x0040, lo: 0x91, hi: 0x96},
+ {value: 0x3008, lo: 0x97, hi: 0x97},
+ {value: 0x0040, lo: 0x98, hi: 0xa5},
+ {value: 0x0008, lo: 0xa6, hi: 0xaf},
+ {value: 0x0018, lo: 0xb0, hi: 0xba},
+ {value: 0x0040, lo: 0xbb, hi: 0xbf},
+ // Block 0x11, offset 0xa4
+ {value: 0x0000, lo: 0x0d},
+ {value: 0x3308, lo: 0x80, hi: 0x80},
+ {value: 0x3008, lo: 0x81, hi: 0x83},
+ {value: 0x3308, lo: 0x84, hi: 0x84},
+ {value: 0x0008, lo: 0x85, hi: 0x8c},
+ {value: 0x0040, lo: 0x8d, hi: 0x8d},
+ {value: 0x0008, lo: 0x8e, hi: 0x90},
+ {value: 0x0040, lo: 0x91, hi: 0x91},
+ {value: 0x0008, lo: 0x92, hi: 0xa8},
+ {value: 0x0040, lo: 0xa9, hi: 0xa9},
+ {value: 0x0008, lo: 0xaa, hi: 0xb9},
+ {value: 0x0040, lo: 0xba, hi: 0xbc},
+ {value: 0x0008, lo: 0xbd, hi: 0xbd},
+ {value: 0x3308, lo: 0xbe, hi: 0xbf},
+ // Block 0x12, offset 0xb2
+ {value: 0x0000, lo: 0x0a},
+ {value: 0x3308, lo: 0x80, hi: 0x81},
+ {value: 0x3008, lo: 0x82, hi: 0x83},
+ {value: 0x0008, lo: 0x84, hi: 0x8c},
+ {value: 0x0040, lo: 0x8d, hi: 0x8d},
+ {value: 0x0008, lo: 0x8e, hi: 0x90},
+ {value: 0x0040, lo: 0x91, hi: 0x91},
+ {value: 0x0008, lo: 0x92, hi: 0xba},
+ {value: 0x3b08, lo: 0xbb, hi: 0xbc},
+ {value: 0x0008, lo: 0xbd, hi: 0xbd},
+ {value: 0x3008, lo: 0xbe, hi: 0xbf},
+ // Block 0x13, offset 0xbd
+ {value: 0x0000, lo: 0x0c},
+ {value: 0x0040, lo: 0x80, hi: 0x80},
+ {value: 0x3308, lo: 0x81, hi: 0x81},
+ {value: 0x3008, lo: 0x82, hi: 0x83},
+ {value: 0x0040, lo: 0x84, hi: 0x84},
+ {value: 0x0008, lo: 0x85, hi: 0x96},
+ {value: 0x0040, lo: 0x97, hi: 0x99},
+ {value: 0x0008, lo: 0x9a, hi: 0xb1},
+ {value: 0x0040, lo: 0xb2, hi: 0xb2},
+ {value: 0x0008, lo: 0xb3, hi: 0xbb},
+ {value: 0x0040, lo: 0xbc, hi: 0xbc},
+ {value: 0x0008, lo: 0xbd, hi: 0xbd},
+ {value: 0x0040, lo: 0xbe, hi: 0xbf},
+ // Block 0x14, offset 0xca
+ {value: 0x0000, lo: 0x10},
+ {value: 0x0008, lo: 0x80, hi: 0x86},
+ {value: 0x0040, lo: 0x87, hi: 0x89},
+ {value: 0x3b08, lo: 0x8a, hi: 0x8a},
+ {value: 0x0040, lo: 0x8b, hi: 0x8e},
+ {value: 0x3008, lo: 0x8f, hi: 0x91},
+ {value: 0x3308, lo: 0x92, hi: 0x94},
+ {value: 0x0040, lo: 0x95, hi: 0x95},
+ {value: 0x3308, lo: 0x96, hi: 0x96},
+ {value: 0x0040, lo: 0x97, hi: 0x97},
+ {value: 0x3008, lo: 0x98, hi: 0x9f},
+ {value: 0x0040, lo: 0xa0, hi: 0xa5},
+ {value: 0x0008, lo: 0xa6, hi: 0xaf},
+ {value: 0x0040, lo: 0xb0, hi: 0xb1},
+ {value: 0x3008, lo: 0xb2, hi: 0xb3},
+ {value: 0x0018, lo: 0xb4, hi: 0xb4},
+ {value: 0x0040, lo: 0xb5, hi: 0xbf},
+ // Block 0x15, offset 0xdb
+ {value: 0x0000, lo: 0x09},
+ {value: 0x0040, lo: 0x80, hi: 0x80},
+ {value: 0x0008, lo: 0x81, hi: 0xb0},
+ {value: 0x3308, lo: 0xb1, hi: 0xb1},
+ {value: 0x0008, lo: 0xb2, hi: 0xb2},
+ {value: 0x08f1, lo: 0xb3, hi: 0xb3},
+ {value: 0x3308, lo: 0xb4, hi: 0xb9},
+ {value: 0x3b08, lo: 0xba, hi: 0xba},
+ {value: 0x0040, lo: 0xbb, hi: 0xbe},
+ {value: 0x0018, lo: 0xbf, hi: 0xbf},
+ // Block 0x16, offset 0xe5
+ {value: 0x0000, lo: 0x06},
+ {value: 0x0008, lo: 0x80, hi: 0x86},
+ {value: 0x3308, lo: 0x87, hi: 0x8e},
+ {value: 0x0018, lo: 0x8f, hi: 0x8f},
+ {value: 0x0008, lo: 0x90, hi: 0x99},
+ {value: 0x0018, lo: 0x9a, hi: 0x9b},
+ {value: 0x0040, lo: 0x9c, hi: 0xbf},
+ // Block 0x17, offset 0xec
+ {value: 0x0000, lo: 0x0c},
+ {value: 0x0008, lo: 0x80, hi: 0x84},
+ {value: 0x0040, lo: 0x85, hi: 0x85},
+ {value: 0x0008, lo: 0x86, hi: 0x86},
+ {value: 0x0040, lo: 0x87, hi: 0x87},
+ {value: 0x3308, lo: 0x88, hi: 0x8d},
+ {value: 0x0040, lo: 0x8e, hi: 0x8f},
+ {value: 0x0008, lo: 0x90, hi: 0x99},
+ {value: 0x0040, lo: 0x9a, hi: 0x9b},
+ {value: 0x0961, lo: 0x9c, hi: 0x9c},
+ {value: 0x0999, lo: 0x9d, hi: 0x9d},
+ {value: 0x0008, lo: 0x9e, hi: 0x9f},
+ {value: 0x0040, lo: 0xa0, hi: 0xbf},
+ // Block 0x18, offset 0xf9
+ {value: 0x0000, lo: 0x10},
+ {value: 0x0008, lo: 0x80, hi: 0x80},
+ {value: 0x0018, lo: 0x81, hi: 0x8a},
+ {value: 0x0008, lo: 0x8b, hi: 0x8b},
+ {value: 0xe03d, lo: 0x8c, hi: 0x8c},
+ {value: 0x0018, lo: 0x8d, hi: 0x97},
+ {value: 0x3308, lo: 0x98, hi: 0x99},
+ {value: 0x0018, lo: 0x9a, hi: 0x9f},
+ {value: 0x0008, lo: 0xa0, hi: 0xa9},
+ {value: 0x0018, lo: 0xaa, hi: 0xb4},
+ {value: 0x3308, lo: 0xb5, hi: 0xb5},
+ {value: 0x0018, lo: 0xb6, hi: 0xb6},
+ {value: 0x3308, lo: 0xb7, hi: 0xb7},
+ {value: 0x0018, lo: 0xb8, hi: 0xb8},
+ {value: 0x3308, lo: 0xb9, hi: 0xb9},
+ {value: 0x0018, lo: 0xba, hi: 0xbd},
+ {value: 0x3008, lo: 0xbe, hi: 0xbf},
+ // Block 0x19, offset 0x10a
+ {value: 0x0000, lo: 0x06},
+ {value: 0x0018, lo: 0x80, hi: 0x85},
+ {value: 0x3308, lo: 0x86, hi: 0x86},
+ {value: 0x0018, lo: 0x87, hi: 0x8c},
+ {value: 0x0040, lo: 0x8d, hi: 0x8d},
+ {value: 0x0018, lo: 0x8e, hi: 0x9a},
+ {value: 0x0040, lo: 0x9b, hi: 0xbf},
+ // Block 0x1a, offset 0x111
+ {value: 0x0000, lo: 0x0a},
+ {value: 0x0008, lo: 0x80, hi: 0xaa},
+ {value: 0x3008, lo: 0xab, hi: 0xac},
+ {value: 0x3308, lo: 0xad, hi: 0xb0},
+ {value: 0x3008, lo: 0xb1, hi: 0xb1},
+ {value: 0x3308, lo: 0xb2, hi: 0xb7},
+ {value: 0x3008, lo: 0xb8, hi: 0xb8},
+ {value: 0x3b08, lo: 0xb9, hi: 0xba},
+ {value: 0x3008, lo: 0xbb, hi: 0xbc},
+ {value: 0x3308, lo: 0xbd, hi: 0xbe},
+ {value: 0x0008, lo: 0xbf, hi: 0xbf},
+ // Block 0x1b, offset 0x11c
+ {value: 0x0000, lo: 0x0e},
+ {value: 0x0008, lo: 0x80, hi: 0x89},
+ {value: 0x0018, lo: 0x8a, hi: 0x8f},
+ {value: 0x0008, lo: 0x90, hi: 0x95},
+ {value: 0x3008, lo: 0x96, hi: 0x97},
+ {value: 0x3308, lo: 0x98, hi: 0x99},
+ {value: 0x0008, lo: 0x9a, hi: 0x9d},
+ {value: 0x3308, lo: 0x9e, hi: 0xa0},
+ {value: 0x0008, lo: 0xa1, hi: 0xa1},
+ {value: 0x3008, lo: 0xa2, hi: 0xa4},
+ {value: 0x0008, lo: 0xa5, hi: 0xa6},
+ {value: 0x3008, lo: 0xa7, hi: 0xad},
+ {value: 0x0008, lo: 0xae, hi: 0xb0},
+ {value: 0x3308, lo: 0xb1, hi: 0xb4},
+ {value: 0x0008, lo: 0xb5, hi: 0xbf},
+ // Block 0x1c, offset 0x12b
+ {value: 0x0000, lo: 0x0d},
+ {value: 0x0008, lo: 0x80, hi: 0x81},
+ {value: 0x3308, lo: 0x82, hi: 0x82},
+ {value: 0x3008, lo: 0x83, hi: 0x84},
+ {value: 0x3308, lo: 0x85, hi: 0x86},
+ {value: 0x3008, lo: 0x87, hi: 0x8c},
+ {value: 0x3308, lo: 0x8d, hi: 0x8d},
+ {value: 0x0008, lo: 0x8e, hi: 0x8e},
+ {value: 0x3008, lo: 0x8f, hi: 0x8f},
+ {value: 0x0008, lo: 0x90, hi: 0x99},
+ {value: 0x3008, lo: 0x9a, hi: 0x9c},
+ {value: 0x3308, lo: 0x9d, hi: 0x9d},
+ {value: 0x0018, lo: 0x9e, hi: 0x9f},
+ {value: 0x0040, lo: 0xa0, hi: 0xbf},
+ // Block 0x1d, offset 0x139
+ {value: 0x0000, lo: 0x09},
+ {value: 0x0040, lo: 0x80, hi: 0x86},
+ {value: 0x055d, lo: 0x87, hi: 0x87},
+ {value: 0x0040, lo: 0x88, hi: 0x8c},
+ {value: 0x055d, lo: 0x8d, hi: 0x8d},
+ {value: 0x0040, lo: 0x8e, hi: 0x8f},
+ {value: 0x0008, lo: 0x90, hi: 0xba},
+ {value: 0x0018, lo: 0xbb, hi: 0xbb},
+ {value: 0xe105, lo: 0xbc, hi: 0xbc},
+ {value: 0x0008, lo: 0xbd, hi: 0xbf},
+ // Block 0x1e, offset 0x143
+ {value: 0x0000, lo: 0x01},
+ {value: 0x0018, lo: 0x80, hi: 0xbf},
+ // Block 0x1f, offset 0x145
+ {value: 0x0000, lo: 0x04},
+ {value: 0x0018, lo: 0x80, hi: 0x9e},
+ {value: 0x0040, lo: 0x9f, hi: 0xa0},
+ {value: 0x2018, lo: 0xa1, hi: 0xb5},
+ {value: 0x0018, lo: 0xb6, hi: 0xbf},
+ // Block 0x20, offset 0x14a
+ {value: 0x0000, lo: 0x02},
+ {value: 0x0018, lo: 0x80, hi: 0xa7},
+ {value: 0x2018, lo: 0xa8, hi: 0xbf},
+ // Block 0x21, offset 0x14d
+ {value: 0x0000, lo: 0x02},
+ {value: 0x2018, lo: 0x80, hi: 0x82},
+ {value: 0x0018, lo: 0x83, hi: 0xbf},
+ // Block 0x22, offset 0x150
+ {value: 0x0000, lo: 0x01},
+ {value: 0x0008, lo: 0x80, hi: 0xbf},
+ // Block 0x23, offset 0x152
+ {value: 0x0000, lo: 0x0b},
+ {value: 0x0008, lo: 0x80, hi: 0x88},
+ {value: 0x0040, lo: 0x89, hi: 0x89},
+ {value: 0x0008, lo: 0x8a, hi: 0x8d},
+ {value: 0x0040, lo: 0x8e, hi: 0x8f},
+ {value: 0x0008, lo: 0x90, hi: 0x96},
+ {value: 0x0040, lo: 0x97, hi: 0x97},
+ {value: 0x0008, lo: 0x98, hi: 0x98},
+ {value: 0x0040, lo: 0x99, hi: 0x99},
+ {value: 0x0008, lo: 0x9a, hi: 0x9d},
+ {value: 0x0040, lo: 0x9e, hi: 0x9f},
+ {value: 0x0008, lo: 0xa0, hi: 0xbf},
+ // Block 0x24, offset 0x15e
+ {value: 0x0000, lo: 0x0a},
+ {value: 0x0008, lo: 0x80, hi: 0x88},
+ {value: 0x0040, lo: 0x89, hi: 0x89},
+ {value: 0x0008, lo: 0x8a, hi: 0x8d},
+ {value: 0x0040, lo: 0x8e, hi: 0x8f},
+ {value: 0x0008, lo: 0x90, hi: 0xb0},
+ {value: 0x0040, lo: 0xb1, hi: 0xb1},
+ {value: 0x0008, lo: 0xb2, hi: 0xb5},
+ {value: 0x0040, lo: 0xb6, hi: 0xb7},
+ {value: 0x0008, lo: 0xb8, hi: 0xbe},
+ {value: 0x0040, lo: 0xbf, hi: 0xbf},
+ // Block 0x25, offset 0x169
+ {value: 0x0000, lo: 0x07},
+ {value: 0x0008, lo: 0x80, hi: 0x80},
+ {value: 0x0040, lo: 0x81, hi: 0x81},
+ {value: 0x0008, lo: 0x82, hi: 0x85},
+ {value: 0x0040, lo: 0x86, hi: 0x87},
+ {value: 0x0008, lo: 0x88, hi: 0x96},
+ {value: 0x0040, lo: 0x97, hi: 0x97},
+ {value: 0x0008, lo: 0x98, hi: 0xbf},
+ // Block 0x26, offset 0x171
+ {value: 0x0000, lo: 0x05},
+ {value: 0x0008, lo: 0x80, hi: 0x90},
+ {value: 0x0040, lo: 0x91, hi: 0x91},
+ {value: 0x0008, lo: 0x92, hi: 0x95},
+ {value: 0x0040, lo: 0x96, hi: 0x97},
+ {value: 0x0008, lo: 0x98, hi: 0xbf},
+ // Block 0x27, offset 0x177
+ {value: 0x0000, lo: 0x05},
+ {value: 0x0008, lo: 0x80, hi: 0x9a},
+ {value: 0x0040, lo: 0x9b, hi: 0x9c},
+ {value: 0x3308, lo: 0x9d, hi: 0x9f},
+ {value: 0x0018, lo: 0xa0, hi: 0xbc},
+ {value: 0x0040, lo: 0xbd, hi: 0xbf},
+ // Block 0x28, offset 0x17d
+ {value: 0x0000, lo: 0x04},
+ {value: 0x0008, lo: 0x80, hi: 0x8f},
+ {value: 0x0018, lo: 0x90, hi: 0x99},
+ {value: 0x0040, lo: 0x9a, hi: 0x9f},
+ {value: 0x0008, lo: 0xa0, hi: 0xbf},
+ // Block 0x29, offset 0x182
+ {value: 0x0000, lo: 0x04},
+ {value: 0x0008, lo: 0x80, hi: 0xb5},
+ {value: 0x0040, lo: 0xb6, hi: 0xb7},
+ {value: 0xe045, lo: 0xb8, hi: 0xbd},
+ {value: 0x0040, lo: 0xbe, hi: 0xbf},
+ // Block 0x2a, offset 0x187
+ {value: 0x0000, lo: 0x02},
+ {value: 0x0018, lo: 0x80, hi: 0x80},
+ {value: 0x0008, lo: 0x81, hi: 0xbf},
+ // Block 0x2b, offset 0x18a
+ {value: 0x0000, lo: 0x03},
+ {value: 0x0008, lo: 0x80, hi: 0xac},
+ {value: 0x0018, lo: 0xad, hi: 0xae},
+ {value: 0x0008, lo: 0xaf, hi: 0xbf},
+ // Block 0x2c, offset 0x18e
+ {value: 0x0000, lo: 0x05},
+ {value: 0x0040, lo: 0x80, hi: 0x80},
+ {value: 0x0008, lo: 0x81, hi: 0x9a},
+ {value: 0x0018, lo: 0x9b, hi: 0x9c},
+ {value: 0x0040, lo: 0x9d, hi: 0x9f},
+ {value: 0x0008, lo: 0xa0, hi: 0xbf},
+ // Block 0x2d, offset 0x194
+ {value: 0x0000, lo: 0x04},
+ {value: 0x0008, lo: 0x80, hi: 0xaa},
+ {value: 0x0018, lo: 0xab, hi: 0xb0},
+ {value: 0x0008, lo: 0xb1, hi: 0xb8},
+ {value: 0x0040, lo: 0xb9, hi: 0xbf},
+ // Block 0x2e, offset 0x199
+ {value: 0x0000, lo: 0x0b},
+ {value: 0x0008, lo: 0x80, hi: 0x8c},
+ {value: 0x0040, lo: 0x8d, hi: 0x8d},
+ {value: 0x0008, lo: 0x8e, hi: 0x91},
+ {value: 0x3308, lo: 0x92, hi: 0x93},
+ {value: 0x3b08, lo: 0x94, hi: 0x94},
+ {value: 0x0040, lo: 0x95, hi: 0x9f},
+ {value: 0x0008, lo: 0xa0, hi: 0xb1},
+ {value: 0x3308, lo: 0xb2, hi: 0xb3},
+ {value: 0x3b08, lo: 0xb4, hi: 0xb4},
+ {value: 0x0018, lo: 0xb5, hi: 0xb6},
+ {value: 0x0040, lo: 0xb7, hi: 0xbf},
+ // Block 0x2f, offset 0x1a5
+ {value: 0x0000, lo: 0x09},
+ {value: 0x0008, lo: 0x80, hi: 0x91},
+ {value: 0x3308, lo: 0x92, hi: 0x93},
+ {value: 0x0040, lo: 0x94, hi: 0x9f},
+ {value: 0x0008, lo: 0xa0, hi: 0xac},
+ {value: 0x0040, lo: 0xad, hi: 0xad},
+ {value: 0x0008, lo: 0xae, hi: 0xb0},
+ {value: 0x0040, lo: 0xb1, hi: 0xb1},
+ {value: 0x3308, lo: 0xb2, hi: 0xb3},
+ {value: 0x0040, lo: 0xb4, hi: 0xbf},
+ // Block 0x30, offset 0x1af
+ {value: 0x0000, lo: 0x05},
+ {value: 0x0008, lo: 0x80, hi: 0xb3},
+ {value: 0x3340, lo: 0xb4, hi: 0xb5},
+ {value: 0x3008, lo: 0xb6, hi: 0xb6},
+ {value: 0x3308, lo: 0xb7, hi: 0xbd},
+ {value: 0x3008, lo: 0xbe, hi: 0xbf},
+ // Block 0x31, offset 0x1b5
+ {value: 0x0000, lo: 0x10},
+ {value: 0x3008, lo: 0x80, hi: 0x85},
+ {value: 0x3308, lo: 0x86, hi: 0x86},
+ {value: 0x3008, lo: 0x87, hi: 0x88},
+ {value: 0x3308, lo: 0x89, hi: 0x91},
+ {value: 0x3b08, lo: 0x92, hi: 0x92},
+ {value: 0x3308, lo: 0x93, hi: 0x93},
+ {value: 0x0018, lo: 0x94, hi: 0x96},
+ {value: 0x0008, lo: 0x97, hi: 0x97},
+ {value: 0x0018, lo: 0x98, hi: 0x9b},
+ {value: 0x0008, lo: 0x9c, hi: 0x9c},
+ {value: 0x3308, lo: 0x9d, hi: 0x9d},
+ {value: 0x0040, lo: 0x9e, hi: 0x9f},
+ {value: 0x0008, lo: 0xa0, hi: 0xa9},
+ {value: 0x0040, lo: 0xaa, hi: 0xaf},
+ {value: 0x0018, lo: 0xb0, hi: 0xb9},
+ {value: 0x0040, lo: 0xba, hi: 0xbf},
+ // Block 0x32, offset 0x1c6
+ {value: 0x0000, lo: 0x09},
+ {value: 0x0018, lo: 0x80, hi: 0x85},
+ {value: 0x0040, lo: 0x86, hi: 0x86},
+ {value: 0x0218, lo: 0x87, hi: 0x87},
+ {value: 0x0018, lo: 0x88, hi: 0x8a},
+ {value: 0x33c0, lo: 0x8b, hi: 0x8d},
+ {value: 0x0040, lo: 0x8e, hi: 0x8f},
+ {value: 0x0008, lo: 0x90, hi: 0x99},
+ {value: 0x0040, lo: 0x9a, hi: 0x9f},
+ {value: 0x0208, lo: 0xa0, hi: 0xbf},
+ // Block 0x33, offset 0x1d0
+ {value: 0x0000, lo: 0x02},
+ {value: 0x0208, lo: 0x80, hi: 0xb8},
+ {value: 0x0040, lo: 0xb9, hi: 0xbf},
+ // Block 0x34, offset 0x1d3
+ {value: 0x0000, lo: 0x07},
+ {value: 0x0008, lo: 0x80, hi: 0x84},
+ {value: 0x3308, lo: 0x85, hi: 0x86},
+ {value: 0x0208, lo: 0x87, hi: 0xa8},
+ {value: 0x3308, lo: 0xa9, hi: 0xa9},
+ {value: 0x0208, lo: 0xaa, hi: 0xaa},
+ {value: 0x0040, lo: 0xab, hi: 0xaf},
+ {value: 0x0008, lo: 0xb0, hi: 0xbf},
+ // Block 0x35, offset 0x1db
+ {value: 0x0000, lo: 0x02},
+ {value: 0x0008, lo: 0x80, hi: 0xb5},
+ {value: 0x0040, lo: 0xb6, hi: 0xbf},
+ // Block 0x36, offset 0x1de
+ {value: 0x0000, lo: 0x0c},
+ {value: 0x0008, lo: 0x80, hi: 0x9e},
+ {value: 0x0040, lo: 0x9f, hi: 0x9f},
+ {value: 0x3308, lo: 0xa0, hi: 0xa2},
+ {value: 0x3008, lo: 0xa3, hi: 0xa6},
+ {value: 0x3308, lo: 0xa7, hi: 0xa8},
+ {value: 0x3008, lo: 0xa9, hi: 0xab},
+ {value: 0x0040, lo: 0xac, hi: 0xaf},
+ {value: 0x3008, lo: 0xb0, hi: 0xb1},
+ {value: 0x3308, lo: 0xb2, hi: 0xb2},
+ {value: 0x3008, lo: 0xb3, hi: 0xb8},
+ {value: 0x3308, lo: 0xb9, hi: 0xbb},
+ {value: 0x0040, lo: 0xbc, hi: 0xbf},
+ // Block 0x37, offset 0x1eb
+ {value: 0x0000, lo: 0x07},
+ {value: 0x0018, lo: 0x80, hi: 0x80},
+ {value: 0x0040, lo: 0x81, hi: 0x83},
+ {value: 0x0018, lo: 0x84, hi: 0x85},
+ {value: 0x0008, lo: 0x86, hi: 0xad},
+ {value: 0x0040, lo: 0xae, hi: 0xaf},
+ {value: 0x0008, lo: 0xb0, hi: 0xb4},
+ {value: 0x0040, lo: 0xb5, hi: 0xbf},
+ // Block 0x38, offset 0x1f3
+ {value: 0x0000, lo: 0x03},
+ {value: 0x0008, lo: 0x80, hi: 0xab},
+ {value: 0x0040, lo: 0xac, hi: 0xaf},
+ {value: 0x0008, lo: 0xb0, hi: 0xbf},
+ // Block 0x39, offset 0x1f7
+ {value: 0x0000, lo: 0x06},
+ {value: 0x0008, lo: 0x80, hi: 0x89},
+ {value: 0x0040, lo: 0x8a, hi: 0x8f},
+ {value: 0x0008, lo: 0x90, hi: 0x99},
+ {value: 0x0028, lo: 0x9a, hi: 0x9a},
+ {value: 0x0040, lo: 0x9b, hi: 0x9d},
+ {value: 0x0018, lo: 0x9e, hi: 0xbf},
+ // Block 0x3a, offset 0x1fe
+ {value: 0x0000, lo: 0x07},
+ {value: 0x0008, lo: 0x80, hi: 0x96},
+ {value: 0x3308, lo: 0x97, hi: 0x98},
+ {value: 0x3008, lo: 0x99, hi: 0x9a},
+ {value: 0x3308, lo: 0x9b, hi: 0x9b},
+ {value: 0x0040, lo: 0x9c, hi: 0x9d},
+ {value: 0x0018, lo: 0x9e, hi: 0x9f},
+ {value: 0x0008, lo: 0xa0, hi: 0xbf},
+ // Block 0x3b, offset 0x206
+ {value: 0x0000, lo: 0x0f},
+ {value: 0x0008, lo: 0x80, hi: 0x94},
+ {value: 0x3008, lo: 0x95, hi: 0x95},
+ {value: 0x3308, lo: 0x96, hi: 0x96},
+ {value: 0x3008, lo: 0x97, hi: 0x97},
+ {value: 0x3308, lo: 0x98, hi: 0x9e},
+ {value: 0x0040, lo: 0x9f, hi: 0x9f},
+ {value: 0x3b08, lo: 0xa0, hi: 0xa0},
+ {value: 0x3008, lo: 0xa1, hi: 0xa1},
+ {value: 0x3308, lo: 0xa2, hi: 0xa2},
+ {value: 0x3008, lo: 0xa3, hi: 0xa4},
+ {value: 0x3308, lo: 0xa5, hi: 0xac},
+ {value: 0x3008, lo: 0xad, hi: 0xb2},
+ {value: 0x3308, lo: 0xb3, hi: 0xbc},
+ {value: 0x0040, lo: 0xbd, hi: 0xbe},
+ {value: 0x3308, lo: 0xbf, hi: 0xbf},
+ // Block 0x3c, offset 0x216
+ {value: 0x0000, lo: 0x0b},
+ {value: 0x0008, lo: 0x80, hi: 0x89},
+ {value: 0x0040, lo: 0x8a, hi: 0x8f},
+ {value: 0x0008, lo: 0x90, hi: 0x99},
+ {value: 0x0040, lo: 0x9a, hi: 0x9f},
+ {value: 0x0018, lo: 0xa0, hi: 0xa6},
+ {value: 0x0008, lo: 0xa7, hi: 0xa7},
+ {value: 0x0018, lo: 0xa8, hi: 0xad},
+ {value: 0x0040, lo: 0xae, hi: 0xaf},
+ {value: 0x3308, lo: 0xb0, hi: 0xbd},
+ {value: 0x3318, lo: 0xbe, hi: 0xbe},
+ {value: 0x3308, lo: 0xbf, hi: 0xbf},
+ // Block 0x3d, offset 0x222
+ {value: 0x0000, lo: 0x02},
+ {value: 0x3308, lo: 0x80, hi: 0x80},
+ {value: 0x0040, lo: 0x81, hi: 0xbf},
+ // Block 0x3e, offset 0x225
+ {value: 0x0000, lo: 0x09},
+ {value: 0x3308, lo: 0x80, hi: 0x83},
+ {value: 0x3008, lo: 0x84, hi: 0x84},
+ {value: 0x0008, lo: 0x85, hi: 0xb3},
+ {value: 0x3308, lo: 0xb4, hi: 0xb4},
+ {value: 0x3008, lo: 0xb5, hi: 0xb5},
+ {value: 0x3308, lo: 0xb6, hi: 0xba},
+ {value: 0x3008, lo: 0xbb, hi: 0xbb},
+ {value: 0x3308, lo: 0xbc, hi: 0xbc},
+ {value: 0x3008, lo: 0xbd, hi: 0xbf},
+ // Block 0x3f, offset 0x22f
+ {value: 0x0000, lo: 0x0b},
+ {value: 0x3008, lo: 0x80, hi: 0x81},
+ {value: 0x3308, lo: 0x82, hi: 0x82},
+ {value: 0x3008, lo: 0x83, hi: 0x83},
+ {value: 0x3808, lo: 0x84, hi: 0x84},
+ {value: 0x0008, lo: 0x85, hi: 0x8b},
+ {value: 0x0040, lo: 0x8c, hi: 0x8f},
+ {value: 0x0008, lo: 0x90, hi: 0x99},
+ {value: 0x0018, lo: 0x9a, hi: 0xaa},
+ {value: 0x3308, lo: 0xab, hi: 0xb3},
+ {value: 0x0018, lo: 0xb4, hi: 0xbc},
+ {value: 0x0040, lo: 0xbd, hi: 0xbf},
+ // Block 0x40, offset 0x23b
+ {value: 0x0000, lo: 0x0b},
+ {value: 0x3308, lo: 0x80, hi: 0x81},
+ {value: 0x3008, lo: 0x82, hi: 0x82},
+ {value: 0x0008, lo: 0x83, hi: 0xa0},
+ {value: 0x3008, lo: 0xa1, hi: 0xa1},
+ {value: 0x3308, lo: 0xa2, hi: 0xa5},
+ {value: 0x3008, lo: 0xa6, hi: 0xa7},
+ {value: 0x3308, lo: 0xa8, hi: 0xa9},
+ {value: 0x3808, lo: 0xaa, hi: 0xaa},
+ {value: 0x3b08, lo: 0xab, hi: 0xab},
+ {value: 0x3308, lo: 0xac, hi: 0xad},
+ {value: 0x0008, lo: 0xae, hi: 0xbf},
+ // Block 0x41, offset 0x247
+ {value: 0x0000, lo: 0x0b},
+ {value: 0x0008, lo: 0x80, hi: 0xa5},
+ {value: 0x3308, lo: 0xa6, hi: 0xa6},
+ {value: 0x3008, lo: 0xa7, hi: 0xa7},
+ {value: 0x3308, lo: 0xa8, hi: 0xa9},
+ {value: 0x3008, lo: 0xaa, hi: 0xac},
+ {value: 0x3308, lo: 0xad, hi: 0xad},
+ {value: 0x3008, lo: 0xae, hi: 0xae},
+ {value: 0x3308, lo: 0xaf, hi: 0xb1},
+ {value: 0x3808, lo: 0xb2, hi: 0xb3},
+ {value: 0x0040, lo: 0xb4, hi: 0xbb},
+ {value: 0x0018, lo: 0xbc, hi: 0xbf},
+ // Block 0x42, offset 0x253
+ {value: 0x0000, lo: 0x07},
+ {value: 0x0008, lo: 0x80, hi: 0xa3},
+ {value: 0x3008, lo: 0xa4, hi: 0xab},
+ {value: 0x3308, lo: 0xac, hi: 0xb3},
+ {value: 0x3008, lo: 0xb4, hi: 0xb5},
+ {value: 0x3308, lo: 0xb6, hi: 0xb7},
+ {value: 0x0040, lo: 0xb8, hi: 0xba},
+ {value: 0x0018, lo: 0xbb, hi: 0xbf},
+ // Block 0x43, offset 0x25b
+ {value: 0x0000, lo: 0x04},
+ {value: 0x0008, lo: 0x80, hi: 0x89},
+ {value: 0x0040, lo: 0x8a, hi: 0x8c},
+ {value: 0x0008, lo: 0x8d, hi: 0xbd},
+ {value: 0x0018, lo: 0xbe, hi: 0xbf},
+ // Block 0x44, offset 0x260
+ {value: 0x0000, lo: 0x0c},
+ {value: 0x0e29, lo: 0x80, hi: 0x80},
+ {value: 0x0e41, lo: 0x81, hi: 0x81},
+ {value: 0x0e59, lo: 0x82, hi: 0x82},
+ {value: 0x0e71, lo: 0x83, hi: 0x83},
+ {value: 0x0e89, lo: 0x84, hi: 0x85},
+ {value: 0x0ea1, lo: 0x86, hi: 0x86},
+ {value: 0x0eb9, lo: 0x87, hi: 0x87},
+ {value: 0x057d, lo: 0x88, hi: 0x88},
+ {value: 0x0040, lo: 0x89, hi: 0x8f},
+ {value: 0x059d, lo: 0x90, hi: 0xba},
+ {value: 0x0040, lo: 0xbb, hi: 0xbc},
+ {value: 0x059d, lo: 0xbd, hi: 0xbf},
+ // Block 0x45, offset 0x26d
+ {value: 0x0000, lo: 0x10},
+ {value: 0x0018, lo: 0x80, hi: 0x87},
+ {value: 0x0040, lo: 0x88, hi: 0x8f},
+ {value: 0x3308, lo: 0x90, hi: 0x92},
+ {value: 0x0018, lo: 0x93, hi: 0x93},
+ {value: 0x3308, lo: 0x94, hi: 0xa0},
+ {value: 0x3008, lo: 0xa1, hi: 0xa1},
+ {value: 0x3308, lo: 0xa2, hi: 0xa8},
+ {value: 0x0008, lo: 0xa9, hi: 0xac},
+ {value: 0x3308, lo: 0xad, hi: 0xad},
+ {value: 0x0008, lo: 0xae, hi: 0xb3},
+ {value: 0x3308, lo: 0xb4, hi: 0xb4},
+ {value: 0x0008, lo: 0xb5, hi: 0xb6},
+ {value: 0x3008, lo: 0xb7, hi: 0xb7},
+ {value: 0x3308, lo: 0xb8, hi: 0xb9},
+ {value: 0x0008, lo: 0xba, hi: 0xba},
+ {value: 0x0040, lo: 0xbb, hi: 0xbf},
+ // Block 0x46, offset 0x27e
+ {value: 0x0000, lo: 0x03},
+ {value: 0x3308, lo: 0x80, hi: 0xb9},
+ {value: 0x0040, lo: 0xba, hi: 0xba},
+ {value: 0x3308, lo: 0xbb, hi: 0xbf},
+ // Block 0x47, offset 0x282
+ {value: 0x0000, lo: 0x0a},
+ {value: 0x0008, lo: 0x80, hi: 0x87},
+ {value: 0xe045, lo: 0x88, hi: 0x8f},
+ {value: 0x0008, lo: 0x90, hi: 0x95},
+ {value: 0x0040, lo: 0x96, hi: 0x97},
+ {value: 0xe045, lo: 0x98, hi: 0x9d},
+ {value: 0x0040, lo: 0x9e, hi: 0x9f},
+ {value: 0x0008, lo: 0xa0, hi: 0xa7},
+ {value: 0xe045, lo: 0xa8, hi: 0xaf},
+ {value: 0x0008, lo: 0xb0, hi: 0xb7},
+ {value: 0xe045, lo: 0xb8, hi: 0xbf},
+ // Block 0x48, offset 0x28d
+ {value: 0x0000, lo: 0x03},
+ {value: 0x0040, lo: 0x80, hi: 0x8f},
+ {value: 0x3318, lo: 0x90, hi: 0xb0},
+ {value: 0x0040, lo: 0xb1, hi: 0xbf},
+ // Block 0x49, offset 0x291
+ {value: 0x0000, lo: 0x08},
+ {value: 0x0018, lo: 0x80, hi: 0x82},
+ {value: 0x0040, lo: 0x83, hi: 0x83},
+ {value: 0x0008, lo: 0x84, hi: 0x84},
+ {value: 0x0018, lo: 0x85, hi: 0x88},
+ {value: 0x24c1, lo: 0x89, hi: 0x89},
+ {value: 0x0018, lo: 0x8a, hi: 0x8b},
+ {value: 0x0040, lo: 0x8c, hi: 0x8f},
+ {value: 0x0018, lo: 0x90, hi: 0xbf},
+ // Block 0x4a, offset 0x29a
+ {value: 0x0000, lo: 0x07},
+ {value: 0x0018, lo: 0x80, hi: 0xab},
+ {value: 0x24f1, lo: 0xac, hi: 0xac},
+ {value: 0x2529, lo: 0xad, hi: 0xad},
+ {value: 0x0018, lo: 0xae, hi: 0xae},
+ {value: 0x2579, lo: 0xaf, hi: 0xaf},
+ {value: 0x25b1, lo: 0xb0, hi: 0xb0},
+ {value: 0x0018, lo: 0xb1, hi: 0xbf},
+ // Block 0x4b, offset 0x2a2
+ {value: 0x0000, lo: 0x05},
+ {value: 0x0018, lo: 0x80, hi: 0x9f},
+ {value: 0x0080, lo: 0xa0, hi: 0xa0},
+ {value: 0x0018, lo: 0xa1, hi: 0xad},
+ {value: 0x0080, lo: 0xae, hi: 0xaf},
+ {value: 0x0018, lo: 0xb0, hi: 0xbf},
+ // Block 0x4c, offset 0x2a8
+ {value: 0x0000, lo: 0x04},
+ {value: 0x0018, lo: 0x80, hi: 0xa8},
+ {value: 0x09dd, lo: 0xa9, hi: 0xa9},
+ {value: 0x09fd, lo: 0xaa, hi: 0xaa},
+ {value: 0x0018, lo: 0xab, hi: 0xbf},
+ // Block 0x4d, offset 0x2ad
+ {value: 0x0000, lo: 0x02},
+ {value: 0x0018, lo: 0x80, hi: 0xa6},
+ {value: 0x0040, lo: 0xa7, hi: 0xbf},
+ // Block 0x4e, offset 0x2b0
+ {value: 0x0000, lo: 0x03},
+ {value: 0x0018, lo: 0x80, hi: 0x8b},
+ {value: 0x28c1, lo: 0x8c, hi: 0x8c},
+ {value: 0x0018, lo: 0x8d, hi: 0xbf},
+ // Block 0x4f, offset 0x2b4
+ {value: 0x0000, lo: 0x05},
+ {value: 0x0018, lo: 0x80, hi: 0xb3},
+ {value: 0x0e7e, lo: 0xb4, hi: 0xb4},
+ {value: 0x292a, lo: 0xb5, hi: 0xb5},
+ {value: 0x0e9e, lo: 0xb6, hi: 0xb6},
+ {value: 0x0018, lo: 0xb7, hi: 0xbf},
+ // Block 0x50, offset 0x2ba
+ {value: 0x0000, lo: 0x03},
+ {value: 0x0018, lo: 0x80, hi: 0x9b},
+ {value: 0x2941, lo: 0x9c, hi: 0x9c},
+ {value: 0x0018, lo: 0x9d, hi: 0xbf},
+ // Block 0x51, offset 0x2be
+ {value: 0x0000, lo: 0x03},
+ {value: 0x0018, lo: 0x80, hi: 0xb3},
+ {value: 0x0040, lo: 0xb4, hi: 0xb5},
+ {value: 0x0018, lo: 0xb6, hi: 0xbf},
+ // Block 0x52, offset 0x2c2
+ {value: 0x0000, lo: 0x03},
+ {value: 0x0018, lo: 0x80, hi: 0x95},
+ {value: 0x0040, lo: 0x96, hi: 0x96},
+ {value: 0x0018, lo: 0x97, hi: 0xbf},
+ // Block 0x53, offset 0x2c6
+ {value: 0x0000, lo: 0x05},
+ {value: 0xe185, lo: 0x80, hi: 0x8f},
+ {value: 0x03f5, lo: 0x90, hi: 0x9f},
+ {value: 0x0ebd, lo: 0xa0, hi: 0xae},
+ {value: 0x0040, lo: 0xaf, hi: 0xaf},
+ {value: 0x0008, lo: 0xb0, hi: 0xbf},
+ // Block 0x54, offset 0x2cc
+ {value: 0x0000, lo: 0x07},
+ {value: 0x0008, lo: 0x80, hi: 0xa5},
+ {value: 0x0040, lo: 0xa6, hi: 0xa6},
+ {value: 0x0008, lo: 0xa7, hi: 0xa7},
+ {value: 0x0040, lo: 0xa8, hi: 0xac},
+ {value: 0x0008, lo: 0xad, hi: 0xad},
+ {value: 0x0040, lo: 0xae, hi: 0xaf},
+ {value: 0x0008, lo: 0xb0, hi: 0xbf},
+ // Block 0x55, offset 0x2d4
+ {value: 0x0000, lo: 0x06},
+ {value: 0x0008, lo: 0x80, hi: 0xa7},
+ {value: 0x0040, lo: 0xa8, hi: 0xae},
+ {value: 0xe075, lo: 0xaf, hi: 0xaf},
+ {value: 0x0018, lo: 0xb0, hi: 0xb0},
+ {value: 0x0040, lo: 0xb1, hi: 0xbe},
+ {value: 0x3b08, lo: 0xbf, hi: 0xbf},
+ // Block 0x56, offset 0x2db
+ {value: 0x0000, lo: 0x0a},
+ {value: 0x0008, lo: 0x80, hi: 0x96},
+ {value: 0x0040, lo: 0x97, hi: 0x9f},
+ {value: 0x0008, lo: 0xa0, hi: 0xa6},
+ {value: 0x0040, lo: 0xa7, hi: 0xa7},
+ {value: 0x0008, lo: 0xa8, hi: 0xae},
+ {value: 0x0040, lo: 0xaf, hi: 0xaf},
+ {value: 0x0008, lo: 0xb0, hi: 0xb6},
+ {value: 0x0040, lo: 0xb7, hi: 0xb7},
+ {value: 0x0008, lo: 0xb8, hi: 0xbe},
+ {value: 0x0040, lo: 0xbf, hi: 0xbf},
+ // Block 0x57, offset 0x2e6
+ {value: 0x0000, lo: 0x09},
+ {value: 0x0008, lo: 0x80, hi: 0x86},
+ {value: 0x0040, lo: 0x87, hi: 0x87},
+ {value: 0x0008, lo: 0x88, hi: 0x8e},
+ {value: 0x0040, lo: 0x8f, hi: 0x8f},
+ {value: 0x0008, lo: 0x90, hi: 0x96},
+ {value: 0x0040, lo: 0x97, hi: 0x97},
+ {value: 0x0008, lo: 0x98, hi: 0x9e},
+ {value: 0x0040, lo: 0x9f, hi: 0x9f},
+ {value: 0x3308, lo: 0xa0, hi: 0xbf},
+ // Block 0x58, offset 0x2f0
+ {value: 0x0000, lo: 0x03},
+ {value: 0x0018, lo: 0x80, hi: 0xae},
+ {value: 0x0008, lo: 0xaf, hi: 0xaf},
+ {value: 0x0018, lo: 0xb0, hi: 0xbf},
+ // Block 0x59, offset 0x2f4
+ {value: 0x0000, lo: 0x02},
+ {value: 0x0018, lo: 0x80, hi: 0x92},
+ {value: 0x0040, lo: 0x93, hi: 0xbf},
+ // Block 0x5a, offset 0x2f7
+ {value: 0x0000, lo: 0x05},
+ {value: 0x0018, lo: 0x80, hi: 0x99},
+ {value: 0x0040, lo: 0x9a, hi: 0x9a},
+ {value: 0x0018, lo: 0x9b, hi: 0x9e},
+ {value: 0x0ef5, lo: 0x9f, hi: 0x9f},
+ {value: 0x0018, lo: 0xa0, hi: 0xbf},
+ // Block 0x5b, offset 0x2fd
+ {value: 0x0000, lo: 0x03},
+ {value: 0x0018, lo: 0x80, hi: 0xb2},
+ {value: 0x0f15, lo: 0xb3, hi: 0xb3},
+ {value: 0x0040, lo: 0xb4, hi: 0xbf},
+ // Block 0x5c, offset 0x301
+ {value: 0x0020, lo: 0x01},
+ {value: 0x0f35, lo: 0x80, hi: 0xbf},
+ // Block 0x5d, offset 0x303
+ {value: 0x0020, lo: 0x02},
+ {value: 0x1735, lo: 0x80, hi: 0x8f},
+ {value: 0x1915, lo: 0x90, hi: 0xbf},
+ // Block 0x5e, offset 0x306
+ {value: 0x0020, lo: 0x01},
+ {value: 0x1f15, lo: 0x80, hi: 0xbf},
+ // Block 0x5f, offset 0x308
+ {value: 0x0000, lo: 0x02},
+ {value: 0x0040, lo: 0x80, hi: 0x80},
+ {value: 0x0008, lo: 0x81, hi: 0xbf},
+ // Block 0x60, offset 0x30b
+ {value: 0x0000, lo: 0x09},
+ {value: 0x0008, lo: 0x80, hi: 0x96},
+ {value: 0x0040, lo: 0x97, hi: 0x98},
+ {value: 0x3308, lo: 0x99, hi: 0x9a},
+ {value: 0x29e2, lo: 0x9b, hi: 0x9b},
+ {value: 0x2a0a, lo: 0x9c, hi: 0x9c},
+ {value: 0x0008, lo: 0x9d, hi: 0x9e},
+ {value: 0x2a31, lo: 0x9f, hi: 0x9f},
+ {value: 0x0018, lo: 0xa0, hi: 0xa0},
+ {value: 0x0008, lo: 0xa1, hi: 0xbf},
+ // Block 0x61, offset 0x315
+ {value: 0x0000, lo: 0x02},
+ {value: 0x0008, lo: 0x80, hi: 0xbe},
+ {value: 0x2a69, lo: 0xbf, hi: 0xbf},
+ // Block 0x62, offset 0x318
+ {value: 0x0000, lo: 0x0e},
+ {value: 0x0040, lo: 0x80, hi: 0x84},
+ {value: 0x0008, lo: 0x85, hi: 0xaf},
+ {value: 0x0040, lo: 0xb0, hi: 0xb0},
+ {value: 0x2a35, lo: 0xb1, hi: 0xb1},
+ {value: 0x2a55, lo: 0xb2, hi: 0xb2},
+ {value: 0x2a75, lo: 0xb3, hi: 0xb3},
+ {value: 0x2a95, lo: 0xb4, hi: 0xb4},
+ {value: 0x2a75, lo: 0xb5, hi: 0xb5},
+ {value: 0x2ab5, lo: 0xb6, hi: 0xb6},
+ {value: 0x2ad5, lo: 0xb7, hi: 0xb7},
+ {value: 0x2af5, lo: 0xb8, hi: 0xb9},
+ {value: 0x2b15, lo: 0xba, hi: 0xbb},
+ {value: 0x2b35, lo: 0xbc, hi: 0xbd},
+ {value: 0x2b15, lo: 0xbe, hi: 0xbf},
+ // Block 0x63, offset 0x327
+ {value: 0x0000, lo: 0x03},
+ {value: 0x0018, lo: 0x80, hi: 0xa3},
+ {value: 0x0040, lo: 0xa4, hi: 0xaf},
+ {value: 0x0008, lo: 0xb0, hi: 0xbf},
+ // Block 0x64, offset 0x32b
+ {value: 0x0030, lo: 0x04},
+ {value: 0x2aa2, lo: 0x80, hi: 0x9d},
+ {value: 0x305a, lo: 0x9e, hi: 0x9e},
+ {value: 0x0040, lo: 0x9f, hi: 0x9f},
+ {value: 0x30a2, lo: 0xa0, hi: 0xbf},
+ // Block 0x65, offset 0x330
+ {value: 0x0000, lo: 0x02},
+ {value: 0x0008, lo: 0x80, hi: 0xbc},
+ {value: 0x0040, lo: 0xbd, hi: 0xbf},
+ // Block 0x66, offset 0x333
+ {value: 0x0000, lo: 0x03},
+ {value: 0x0008, lo: 0x80, hi: 0x8c},
+ {value: 0x0040, lo: 0x8d, hi: 0x8f},
+ {value: 0x0018, lo: 0x90, hi: 0xbf},
+ // Block 0x67, offset 0x337
+ {value: 0x0000, lo: 0x04},
+ {value: 0x0018, lo: 0x80, hi: 0x86},
+ {value: 0x0040, lo: 0x87, hi: 0x8f},
+ {value: 0x0008, lo: 0x90, hi: 0xbd},
+ {value: 0x0018, lo: 0xbe, hi: 0xbf},
+ // Block 0x68, offset 0x33c
+ {value: 0x0000, lo: 0x04},
+ {value: 0x0008, lo: 0x80, hi: 0x8c},
+ {value: 0x0018, lo: 0x8d, hi: 0x8f},
+ {value: 0x0008, lo: 0x90, hi: 0xab},
+ {value: 0x0040, lo: 0xac, hi: 0xbf},
+ // Block 0x69, offset 0x341
+ {value: 0x0000, lo: 0x05},
+ {value: 0x0008, lo: 0x80, hi: 0xa5},
+ {value: 0x0018, lo: 0xa6, hi: 0xaf},
+ {value: 0x3308, lo: 0xb0, hi: 0xb1},
+ {value: 0x0018, lo: 0xb2, hi: 0xb7},
+ {value: 0x0040, lo: 0xb8, hi: 0xbf},
+ // Block 0x6a, offset 0x347
+ {value: 0x0000, lo: 0x10},
+ {value: 0x0040, lo: 0x80, hi: 0x81},
+ {value: 0xe00d, lo: 0x82, hi: 0x82},
+ {value: 0x0008, lo: 0x83, hi: 0x83},
+ {value: 0x03f5, lo: 0x84, hi: 0x84},
+ {value: 0x1329, lo: 0x85, hi: 0x85},
+ {value: 0x447d, lo: 0x86, hi: 0x86},
+ {value: 0xe07d, lo: 0x87, hi: 0x87},
+ {value: 0x0008, lo: 0x88, hi: 0x88},
+ {value: 0xe01d, lo: 0x89, hi: 0x89},
+ {value: 0x0008, lo: 0x8a, hi: 0x8a},
+ {value: 0x0040, lo: 0x8b, hi: 0xb4},
+ {value: 0xe01d, lo: 0xb5, hi: 0xb5},
+ {value: 0x0008, lo: 0xb6, hi: 0xb7},
+ {value: 0x2009, lo: 0xb8, hi: 0xb8},
+ {value: 0x6ec1, lo: 0xb9, hi: 0xb9},
+ {value: 0x0008, lo: 0xba, hi: 0xbf},
+ // Block 0x6b, offset 0x358
+ {value: 0x0000, lo: 0x0f},
+ {value: 0x0008, lo: 0x80, hi: 0x81},
+ {value: 0x3308, lo: 0x82, hi: 0x82},
+ {value: 0x0008, lo: 0x83, hi: 0x85},
+ {value: 0x3b08, lo: 0x86, hi: 0x86},
+ {value: 0x0008, lo: 0x87, hi: 0x8a},
+ {value: 0x3308, lo: 0x8b, hi: 0x8b},
+ {value: 0x0008, lo: 0x8c, hi: 0xa2},
+ {value: 0x3008, lo: 0xa3, hi: 0xa4},
+ {value: 0x3308, lo: 0xa5, hi: 0xa6},
+ {value: 0x3008, lo: 0xa7, hi: 0xa7},
+ {value: 0x0018, lo: 0xa8, hi: 0xab},
+ {value: 0x3b08, lo: 0xac, hi: 0xac},
+ {value: 0x0040, lo: 0xad, hi: 0xaf},
+ {value: 0x0018, lo: 0xb0, hi: 0xb9},
+ {value: 0x0040, lo: 0xba, hi: 0xbf},
+ // Block 0x6c, offset 0x368
+ {value: 0x0000, lo: 0x05},
+ {value: 0x0208, lo: 0x80, hi: 0xb1},
+ {value: 0x0108, lo: 0xb2, hi: 0xb2},
+ {value: 0x0008, lo: 0xb3, hi: 0xb3},
+ {value: 0x0018, lo: 0xb4, hi: 0xb7},
+ {value: 0x0040, lo: 0xb8, hi: 0xbf},
+ // Block 0x6d, offset 0x36e
+ {value: 0x0000, lo: 0x03},
+ {value: 0x3008, lo: 0x80, hi: 0x81},
+ {value: 0x0008, lo: 0x82, hi: 0xb3},
+ {value: 0x3008, lo: 0xb4, hi: 0xbf},
+ // Block 0x6e, offset 0x372
+ {value: 0x0000, lo: 0x0e},
+ {value: 0x3008, lo: 0x80, hi: 0x83},
+ {value: 0x3b08, lo: 0x84, hi: 0x84},
+ {value: 0x3308, lo: 0x85, hi: 0x85},
+ {value: 0x0040, lo: 0x86, hi: 0x8d},
+ {value: 0x0018, lo: 0x8e, hi: 0x8f},
+ {value: 0x0008, lo: 0x90, hi: 0x99},
+ {value: 0x0040, lo: 0x9a, hi: 0x9f},
+ {value: 0x3308, lo: 0xa0, hi: 0xb1},
+ {value: 0x0008, lo: 0xb2, hi: 0xb7},
+ {value: 0x0018, lo: 0xb8, hi: 0xba},
+ {value: 0x0008, lo: 0xbb, hi: 0xbb},
+ {value: 0x0018, lo: 0xbc, hi: 0xbc},
+ {value: 0x0008, lo: 0xbd, hi: 0xbe},
+ {value: 0x3308, lo: 0xbf, hi: 0xbf},
+ // Block 0x6f, offset 0x381
+ {value: 0x0000, lo: 0x04},
+ {value: 0x0008, lo: 0x80, hi: 0xa5},
+ {value: 0x3308, lo: 0xa6, hi: 0xad},
+ {value: 0x0018, lo: 0xae, hi: 0xaf},
+ {value: 0x0008, lo: 0xb0, hi: 0xbf},
+ // Block 0x70, offset 0x386
+ {value: 0x0000, lo: 0x07},
+ {value: 0x0008, lo: 0x80, hi: 0x86},
+ {value: 0x3308, lo: 0x87, hi: 0x91},
+ {value: 0x3008, lo: 0x92, hi: 0x92},
+ {value: 0x3808, lo: 0x93, hi: 0x93},
+ {value: 0x0040, lo: 0x94, hi: 0x9e},
+ {value: 0x0018, lo: 0x9f, hi: 0xbc},
+ {value: 0x0040, lo: 0xbd, hi: 0xbf},
+ // Block 0x71, offset 0x38e
+ {value: 0x0000, lo: 0x09},
+ {value: 0x3308, lo: 0x80, hi: 0x82},
+ {value: 0x3008, lo: 0x83, hi: 0x83},
+ {value: 0x0008, lo: 0x84, hi: 0xb2},
+ {value: 0x3308, lo: 0xb3, hi: 0xb3},
+ {value: 0x3008, lo: 0xb4, hi: 0xb5},
+ {value: 0x3308, lo: 0xb6, hi: 0xb9},
+ {value: 0x3008, lo: 0xba, hi: 0xbb},
+ {value: 0x3308, lo: 0xbc, hi: 0xbd},
+ {value: 0x3008, lo: 0xbe, hi: 0xbf},
+ // Block 0x72, offset 0x398
+ {value: 0x0000, lo: 0x0a},
+ {value: 0x3808, lo: 0x80, hi: 0x80},
+ {value: 0x0018, lo: 0x81, hi: 0x8d},
+ {value: 0x0040, lo: 0x8e, hi: 0x8e},
+ {value: 0x0008, lo: 0x8f, hi: 0x99},
+ {value: 0x0040, lo: 0x9a, hi: 0x9d},
+ {value: 0x0018, lo: 0x9e, hi: 0x9f},
+ {value: 0x0008, lo: 0xa0, hi: 0xa4},
+ {value: 0x3308, lo: 0xa5, hi: 0xa5},
+ {value: 0x0008, lo: 0xa6, hi: 0xbe},
+ {value: 0x0040, lo: 0xbf, hi: 0xbf},
+ // Block 0x73, offset 0x3a3
+ {value: 0x0000, lo: 0x07},
+ {value: 0x0008, lo: 0x80, hi: 0xa8},
+ {value: 0x3308, lo: 0xa9, hi: 0xae},
+ {value: 0x3008, lo: 0xaf, hi: 0xb0},
+ {value: 0x3308, lo: 0xb1, hi: 0xb2},
+ {value: 0x3008, lo: 0xb3, hi: 0xb4},
+ {value: 0x3308, lo: 0xb5, hi: 0xb6},
+ {value: 0x0040, lo: 0xb7, hi: 0xbf},
+ // Block 0x74, offset 0x3ab
+ {value: 0x0000, lo: 0x10},
+ {value: 0x0008, lo: 0x80, hi: 0x82},
+ {value: 0x3308, lo: 0x83, hi: 0x83},
+ {value: 0x0008, lo: 0x84, hi: 0x8b},
+ {value: 0x3308, lo: 0x8c, hi: 0x8c},
+ {value: 0x3008, lo: 0x8d, hi: 0x8d},
+ {value: 0x0040, lo: 0x8e, hi: 0x8f},
+ {value: 0x0008, lo: 0x90, hi: 0x99},
+ {value: 0x0040, lo: 0x9a, hi: 0x9b},
+ {value: 0x0018, lo: 0x9c, hi: 0x9f},
+ {value: 0x0008, lo: 0xa0, hi: 0xb6},
+ {value: 0x0018, lo: 0xb7, hi: 0xb9},
+ {value: 0x0008, lo: 0xba, hi: 0xba},
+ {value: 0x3008, lo: 0xbb, hi: 0xbb},
+ {value: 0x3308, lo: 0xbc, hi: 0xbc},
+ {value: 0x3008, lo: 0xbd, hi: 0xbd},
+ {value: 0x0008, lo: 0xbe, hi: 0xbf},
+ // Block 0x75, offset 0x3bc
+ {value: 0x0000, lo: 0x08},
+ {value: 0x0008, lo: 0x80, hi: 0xaf},
+ {value: 0x3308, lo: 0xb0, hi: 0xb0},
+ {value: 0x0008, lo: 0xb1, hi: 0xb1},
+ {value: 0x3308, lo: 0xb2, hi: 0xb4},
+ {value: 0x0008, lo: 0xb5, hi: 0xb6},
+ {value: 0x3308, lo: 0xb7, hi: 0xb8},
+ {value: 0x0008, lo: 0xb9, hi: 0xbd},
+ {value: 0x3308, lo: 0xbe, hi: 0xbf},
+ // Block 0x76, offset 0x3c5
+ {value: 0x0000, lo: 0x0f},
+ {value: 0x0008, lo: 0x80, hi: 0x80},
+ {value: 0x3308, lo: 0x81, hi: 0x81},
+ {value: 0x0008, lo: 0x82, hi: 0x82},
+ {value: 0x0040, lo: 0x83, hi: 0x9a},
+ {value: 0x0008, lo: 0x9b, hi: 0x9d},
+ {value: 0x0018, lo: 0x9e, hi: 0x9f},
+ {value: 0x0008, lo: 0xa0, hi: 0xaa},
+ {value: 0x3008, lo: 0xab, hi: 0xab},
+ {value: 0x3308, lo: 0xac, hi: 0xad},
+ {value: 0x3008, lo: 0xae, hi: 0xaf},
+ {value: 0x0018, lo: 0xb0, hi: 0xb1},
+ {value: 0x0008, lo: 0xb2, hi: 0xb4},
+ {value: 0x3008, lo: 0xb5, hi: 0xb5},
+ {value: 0x3b08, lo: 0xb6, hi: 0xb6},
+ {value: 0x0040, lo: 0xb7, hi: 0xbf},
+ // Block 0x77, offset 0x3d5
+ {value: 0x0000, lo: 0x0c},
+ {value: 0x0040, lo: 0x80, hi: 0x80},
+ {value: 0x0008, lo: 0x81, hi: 0x86},
+ {value: 0x0040, lo: 0x87, hi: 0x88},
+ {value: 0x0008, lo: 0x89, hi: 0x8e},
+ {value: 0x0040, lo: 0x8f, hi: 0x90},
+ {value: 0x0008, lo: 0x91, hi: 0x96},
+ {value: 0x0040, lo: 0x97, hi: 0x9f},
+ {value: 0x0008, lo: 0xa0, hi: 0xa6},
+ {value: 0x0040, lo: 0xa7, hi: 0xa7},
+ {value: 0x0008, lo: 0xa8, hi: 0xae},
+ {value: 0x0040, lo: 0xaf, hi: 0xaf},
+ {value: 0x0008, lo: 0xb0, hi: 0xbf},
+ // Block 0x78, offset 0x3e2
+ {value: 0x0000, lo: 0x0b},
+ {value: 0x0008, lo: 0x80, hi: 0x9a},
+ {value: 0x0018, lo: 0x9b, hi: 0x9b},
+ {value: 0x449d, lo: 0x9c, hi: 0x9c},
+ {value: 0x44b5, lo: 0x9d, hi: 0x9d},
+ {value: 0x2971, lo: 0x9e, hi: 0x9e},
+ {value: 0xe06d, lo: 0x9f, hi: 0x9f},
+ {value: 0x0008, lo: 0xa0, hi: 0xa8},
+ {value: 0x6ed9, lo: 0xa9, hi: 0xa9},
+ {value: 0x0018, lo: 0xaa, hi: 0xab},
+ {value: 0x0040, lo: 0xac, hi: 0xaf},
+ {value: 0x44cd, lo: 0xb0, hi: 0xbf},
+ // Block 0x79, offset 0x3ee
+ {value: 0x0000, lo: 0x04},
+ {value: 0x44ed, lo: 0x80, hi: 0x8f},
+ {value: 0x450d, lo: 0x90, hi: 0x9f},
+ {value: 0x452d, lo: 0xa0, hi: 0xaf},
+ {value: 0x450d, lo: 0xb0, hi: 0xbf},
+ // Block 0x7a, offset 0x3f3
+ {value: 0x0000, lo: 0x0c},
+ {value: 0x0008, lo: 0x80, hi: 0xa2},
+ {value: 0x3008, lo: 0xa3, hi: 0xa4},
+ {value: 0x3308, lo: 0xa5, hi: 0xa5},
+ {value: 0x3008, lo: 0xa6, hi: 0xa7},
+ {value: 0x3308, lo: 0xa8, hi: 0xa8},
+ {value: 0x3008, lo: 0xa9, hi: 0xaa},
+ {value: 0x0018, lo: 0xab, hi: 0xab},
+ {value: 0x3008, lo: 0xac, hi: 0xac},
+ {value: 0x3b08, lo: 0xad, hi: 0xad},
+ {value: 0x0040, lo: 0xae, hi: 0xaf},
+ {value: 0x0008, lo: 0xb0, hi: 0xb9},
+ {value: 0x0040, lo: 0xba, hi: 0xbf},
+ // Block 0x7b, offset 0x400
+ {value: 0x0000, lo: 0x03},
+ {value: 0x0008, lo: 0x80, hi: 0xa3},
+ {value: 0x0040, lo: 0xa4, hi: 0xaf},
+ {value: 0x0018, lo: 0xb0, hi: 0xbf},
+ // Block 0x7c, offset 0x404
+ {value: 0x0000, lo: 0x04},
+ {value: 0x0018, lo: 0x80, hi: 0x86},
+ {value: 0x0040, lo: 0x87, hi: 0x8a},
+ {value: 0x0018, lo: 0x8b, hi: 0xbb},
+ {value: 0x0040, lo: 0xbc, hi: 0xbf},
+ // Block 0x7d, offset 0x409
+ {value: 0x0000, lo: 0x01},
+ {value: 0x0040, lo: 0x80, hi: 0xbf},
+ // Block 0x7e, offset 0x40b
+ {value: 0x0020, lo: 0x01},
+ {value: 0x454d, lo: 0x80, hi: 0xbf},
+ // Block 0x7f, offset 0x40d
+ {value: 0x0020, lo: 0x03},
+ {value: 0x4d4d, lo: 0x80, hi: 0x94},
+ {value: 0x4b0d, lo: 0x95, hi: 0x95},
+ {value: 0x4fed, lo: 0x96, hi: 0xbf},
+ // Block 0x80, offset 0x411
+ {value: 0x0020, lo: 0x01},
+ {value: 0x552d, lo: 0x80, hi: 0xbf},
+ // Block 0x81, offset 0x413
+ {value: 0x0020, lo: 0x03},
+ {value: 0x5d2d, lo: 0x80, hi: 0x84},
+ {value: 0x568d, lo: 0x85, hi: 0x85},
+ {value: 0x5dcd, lo: 0x86, hi: 0xbf},
+ // Block 0x82, offset 0x417
+ {value: 0x0020, lo: 0x08},
+ {value: 0x6b8d, lo: 0x80, hi: 0x8f},
+ {value: 0x6d4d, lo: 0x90, hi: 0x90},
+ {value: 0x6d8d, lo: 0x91, hi: 0xab},
+ {value: 0x6ef1, lo: 0xac, hi: 0xac},
+ {value: 0x70ed, lo: 0xad, hi: 0xad},
+ {value: 0x0040, lo: 0xae, hi: 0xae},
+ {value: 0x0040, lo: 0xaf, hi: 0xaf},
+ {value: 0x710d, lo: 0xb0, hi: 0xbf},
+ // Block 0x83, offset 0x420
+ {value: 0x0020, lo: 0x05},
+ {value: 0x730d, lo: 0x80, hi: 0xad},
+ {value: 0x656d, lo: 0xae, hi: 0xae},
+ {value: 0x78cd, lo: 0xaf, hi: 0xb5},
+ {value: 0x6f8d, lo: 0xb6, hi: 0xb6},
+ {value: 0x79ad, lo: 0xb7, hi: 0xbf},
+ // Block 0x84, offset 0x426
+ {value: 0x0028, lo: 0x03},
+ {value: 0x7c71, lo: 0x80, hi: 0x82},
+ {value: 0x7c31, lo: 0x83, hi: 0x83},
+ {value: 0x7ce9, lo: 0x84, hi: 0xbf},
+ // Block 0x85, offset 0x42a
+ {value: 0x0038, lo: 0x0f},
+ {value: 0x9e01, lo: 0x80, hi: 0x83},
+ {value: 0x9ea9, lo: 0x84, hi: 0x85},
+ {value: 0x9ee1, lo: 0x86, hi: 0x87},
+ {value: 0x9f19, lo: 0x88, hi: 0x8f},
+ {value: 0x0040, lo: 0x90, hi: 0x90},
+ {value: 0x0040, lo: 0x91, hi: 0x91},
+ {value: 0xa0d9, lo: 0x92, hi: 0x97},
+ {value: 0xa1f1, lo: 0x98, hi: 0x9c},
+ {value: 0xa2d1, lo: 0x9d, hi: 0xb3},
+ {value: 0x9d91, lo: 0xb4, hi: 0xb4},
+ {value: 0x9e01, lo: 0xb5, hi: 0xb5},
+ {value: 0xa7d9, lo: 0xb6, hi: 0xbb},
+ {value: 0xa8b9, lo: 0xbc, hi: 0xbc},
+ {value: 0xa849, lo: 0xbd, hi: 0xbd},
+ {value: 0xa929, lo: 0xbe, hi: 0xbf},
+ // Block 0x86, offset 0x43a
+ {value: 0x0000, lo: 0x09},
+ {value: 0x0008, lo: 0x80, hi: 0x8b},
+ {value: 0x0040, lo: 0x8c, hi: 0x8c},
+ {value: 0x0008, lo: 0x8d, hi: 0xa6},
+ {value: 0x0040, lo: 0xa7, hi: 0xa7},
+ {value: 0x0008, lo: 0xa8, hi: 0xba},
+ {value: 0x0040, lo: 0xbb, hi: 0xbb},
+ {value: 0x0008, lo: 0xbc, hi: 0xbd},
+ {value: 0x0040, lo: 0xbe, hi: 0xbe},
+ {value: 0x0008, lo: 0xbf, hi: 0xbf},
+ // Block 0x87, offset 0x444
+ {value: 0x0000, lo: 0x04},
+ {value: 0x0008, lo: 0x80, hi: 0x8d},
+ {value: 0x0040, lo: 0x8e, hi: 0x8f},
+ {value: 0x0008, lo: 0x90, hi: 0x9d},
+ {value: 0x0040, lo: 0x9e, hi: 0xbf},
+ // Block 0x88, offset 0x449
+ {value: 0x0000, lo: 0x02},
+ {value: 0x0008, lo: 0x80, hi: 0xba},
+ {value: 0x0040, lo: 0xbb, hi: 0xbf},
+ // Block 0x89, offset 0x44c
+ {value: 0x0000, lo: 0x05},
+ {value: 0x0018, lo: 0x80, hi: 0x82},
+ {value: 0x0040, lo: 0x83, hi: 0x86},
+ {value: 0x0018, lo: 0x87, hi: 0xb3},
+ {value: 0x0040, lo: 0xb4, hi: 0xb6},
+ {value: 0x0018, lo: 0xb7, hi: 0xbf},
+ // Block 0x8a, offset 0x452
+ {value: 0x0000, lo: 0x06},
+ {value: 0x0018, lo: 0x80, hi: 0x8e},
+ {value: 0x0040, lo: 0x8f, hi: 0x8f},
+ {value: 0x0018, lo: 0x90, hi: 0x9c},
+ {value: 0x0040, lo: 0x9d, hi: 0x9f},
+ {value: 0x0018, lo: 0xa0, hi: 0xa0},
+ {value: 0x0040, lo: 0xa1, hi: 0xbf},
+ // Block 0x8b, offset 0x459
+ {value: 0x0000, lo: 0x04},
+ {value: 0x0040, lo: 0x80, hi: 0x8f},
+ {value: 0x0018, lo: 0x90, hi: 0xbc},
+ {value: 0x3308, lo: 0xbd, hi: 0xbd},
+ {value: 0x0040, lo: 0xbe, hi: 0xbf},
+ // Block 0x8c, offset 0x45e
+ {value: 0x0000, lo: 0x03},
+ {value: 0x0008, lo: 0x80, hi: 0x9c},
+ {value: 0x0040, lo: 0x9d, hi: 0x9f},
+ {value: 0x0008, lo: 0xa0, hi: 0xbf},
+ // Block 0x8d, offset 0x462
+ {value: 0x0000, lo: 0x05},
+ {value: 0x0008, lo: 0x80, hi: 0x90},
+ {value: 0x0040, lo: 0x91, hi: 0x9f},
+ {value: 0x3308, lo: 0xa0, hi: 0xa0},
+ {value: 0x0018, lo: 0xa1, hi: 0xbb},
+ {value: 0x0040, lo: 0xbc, hi: 0xbf},
+ // Block 0x8e, offset 0x468
+ {value: 0x0000, lo: 0x04},
+ {value: 0x0008, lo: 0x80, hi: 0x9f},
+ {value: 0x0018, lo: 0xa0, hi: 0xa3},
+ {value: 0x0040, lo: 0xa4, hi: 0xac},
+ {value: 0x0008, lo: 0xad, hi: 0xbf},
+ // Block 0x8f, offset 0x46d
+ {value: 0x0000, lo: 0x08},
+ {value: 0x0008, lo: 0x80, hi: 0x80},
+ {value: 0x0018, lo: 0x81, hi: 0x81},
+ {value: 0x0008, lo: 0x82, hi: 0x89},
+ {value: 0x0018, lo: 0x8a, hi: 0x8a},
+ {value: 0x0040, lo: 0x8b, hi: 0x8f},
+ {value: 0x0008, lo: 0x90, hi: 0xb5},
+ {value: 0x3308, lo: 0xb6, hi: 0xba},
+ {value: 0x0040, lo: 0xbb, hi: 0xbf},
+ // Block 0x90, offset 0x476
+ {value: 0x0000, lo: 0x04},
+ {value: 0x0008, lo: 0x80, hi: 0x9d},
+ {value: 0x0040, lo: 0x9e, hi: 0x9e},
+ {value: 0x0018, lo: 0x9f, hi: 0x9f},
+ {value: 0x0008, lo: 0xa0, hi: 0xbf},
+ // Block 0x91, offset 0x47b
+ {value: 0x0000, lo: 0x05},
+ {value: 0x0008, lo: 0x80, hi: 0x83},
+ {value: 0x0040, lo: 0x84, hi: 0x87},
+ {value: 0x0008, lo: 0x88, hi: 0x8f},
+ {value: 0x0018, lo: 0x90, hi: 0x95},
+ {value: 0x0040, lo: 0x96, hi: 0xbf},
+ // Block 0x92, offset 0x481
+ {value: 0x0000, lo: 0x06},
+ {value: 0xe145, lo: 0x80, hi: 0x87},
+ {value: 0xe1c5, lo: 0x88, hi: 0x8f},
+ {value: 0xe145, lo: 0x90, hi: 0x97},
+ {value: 0x8b0d, lo: 0x98, hi: 0x9f},
+ {value: 0x8b25, lo: 0xa0, hi: 0xa7},
+ {value: 0x0008, lo: 0xa8, hi: 0xbf},
+ // Block 0x93, offset 0x488
+ {value: 0x0000, lo: 0x06},
+ {value: 0x0008, lo: 0x80, hi: 0x9d},
+ {value: 0x0040, lo: 0x9e, hi: 0x9f},
+ {value: 0x0008, lo: 0xa0, hi: 0xa9},
+ {value: 0x0040, lo: 0xaa, hi: 0xaf},
+ {value: 0x8b25, lo: 0xb0, hi: 0xb7},
+ {value: 0x8b0d, lo: 0xb8, hi: 0xbf},
+ // Block 0x94, offset 0x48f
+ {value: 0x0000, lo: 0x06},
+ {value: 0xe145, lo: 0x80, hi: 0x87},
+ {value: 0xe1c5, lo: 0x88, hi: 0x8f},
+ {value: 0xe145, lo: 0x90, hi: 0x93},
+ {value: 0x0040, lo: 0x94, hi: 0x97},
+ {value: 0x0008, lo: 0x98, hi: 0xbb},
+ {value: 0x0040, lo: 0xbc, hi: 0xbf},
+ // Block 0x95, offset 0x496
+ {value: 0x0000, lo: 0x03},
+ {value: 0x0008, lo: 0x80, hi: 0xa7},
+ {value: 0x0040, lo: 0xa8, hi: 0xaf},
+ {value: 0x0008, lo: 0xb0, hi: 0xbf},
+ // Block 0x96, offset 0x49a
+ {value: 0x0000, lo: 0x04},
+ {value: 0x0008, lo: 0x80, hi: 0xa3},
+ {value: 0x0040, lo: 0xa4, hi: 0xae},
+ {value: 0x0018, lo: 0xaf, hi: 0xaf},
+ {value: 0x0040, lo: 0xb0, hi: 0xbf},
+ // Block 0x97, offset 0x49f
+ {value: 0x0000, lo: 0x02},
+ {value: 0x0008, lo: 0x80, hi: 0xb6},
+ {value: 0x0040, lo: 0xb7, hi: 0xbf},
+ // Block 0x98, offset 0x4a2
+ {value: 0x0000, lo: 0x04},
+ {value: 0x0008, lo: 0x80, hi: 0x95},
+ {value: 0x0040, lo: 0x96, hi: 0x9f},
+ {value: 0x0008, lo: 0xa0, hi: 0xa7},
+ {value: 0x0040, lo: 0xa8, hi: 0xbf},
+ // Block 0x99, offset 0x4a7
+ {value: 0x0000, lo: 0x0b},
+ {value: 0x0808, lo: 0x80, hi: 0x85},
+ {value: 0x0040, lo: 0x86, hi: 0x87},
+ {value: 0x0808, lo: 0x88, hi: 0x88},
+ {value: 0x0040, lo: 0x89, hi: 0x89},
+ {value: 0x0808, lo: 0x8a, hi: 0xb5},
+ {value: 0x0040, lo: 0xb6, hi: 0xb6},
+ {value: 0x0808, lo: 0xb7, hi: 0xb8},
+ {value: 0x0040, lo: 0xb9, hi: 0xbb},
+ {value: 0x0808, lo: 0xbc, hi: 0xbc},
+ {value: 0x0040, lo: 0xbd, hi: 0xbe},
+ {value: 0x0808, lo: 0xbf, hi: 0xbf},
+ // Block 0x9a, offset 0x4b3
+ {value: 0x0000, lo: 0x05},
+ {value: 0x0808, lo: 0x80, hi: 0x95},
+ {value: 0x0040, lo: 0x96, hi: 0x96},
+ {value: 0x0818, lo: 0x97, hi: 0x9f},
+ {value: 0x0808, lo: 0xa0, hi: 0xb6},
+ {value: 0x0818, lo: 0xb7, hi: 0xbf},
+ // Block 0x9b, offset 0x4b9
+ {value: 0x0000, lo: 0x04},
+ {value: 0x0808, lo: 0x80, hi: 0x9e},
+ {value: 0x0040, lo: 0x9f, hi: 0xa6},
+ {value: 0x0818, lo: 0xa7, hi: 0xaf},
+ {value: 0x0040, lo: 0xb0, hi: 0xbf},
+ // Block 0x9c, offset 0x4be
+ {value: 0x0000, lo: 0x06},
+ {value: 0x0040, lo: 0x80, hi: 0x9f},
+ {value: 0x0808, lo: 0xa0, hi: 0xb2},
+ {value: 0x0040, lo: 0xb3, hi: 0xb3},
+ {value: 0x0808, lo: 0xb4, hi: 0xb5},
+ {value: 0x0040, lo: 0xb6, hi: 0xba},
+ {value: 0x0818, lo: 0xbb, hi: 0xbf},
+ // Block 0x9d, offset 0x4c5
+ {value: 0x0000, lo: 0x07},
+ {value: 0x0808, lo: 0x80, hi: 0x95},
+ {value: 0x0818, lo: 0x96, hi: 0x9b},
+ {value: 0x0040, lo: 0x9c, hi: 0x9e},
+ {value: 0x0018, lo: 0x9f, hi: 0x9f},
+ {value: 0x0808, lo: 0xa0, hi: 0xb9},
+ {value: 0x0040, lo: 0xba, hi: 0xbe},
+ {value: 0x0818, lo: 0xbf, hi: 0xbf},
+ // Block 0x9e, offset 0x4cd
+ {value: 0x0000, lo: 0x04},
+ {value: 0x0808, lo: 0x80, hi: 0xb7},
+ {value: 0x0040, lo: 0xb8, hi: 0xbb},
+ {value: 0x0818, lo: 0xbc, hi: 0xbd},
+ {value: 0x0808, lo: 0xbe, hi: 0xbf},
+ // Block 0x9f, offset 0x4d2
+ {value: 0x0000, lo: 0x03},
+ {value: 0x0818, lo: 0x80, hi: 0x8f},
+ {value: 0x0040, lo: 0x90, hi: 0x91},
+ {value: 0x0818, lo: 0x92, hi: 0xbf},
+ // Block 0xa0, offset 0x4d6
+ {value: 0x0000, lo: 0x0f},
+ {value: 0x0808, lo: 0x80, hi: 0x80},
+ {value: 0x3308, lo: 0x81, hi: 0x83},
+ {value: 0x0040, lo: 0x84, hi: 0x84},
+ {value: 0x3308, lo: 0x85, hi: 0x86},
+ {value: 0x0040, lo: 0x87, hi: 0x8b},
+ {value: 0x3308, lo: 0x8c, hi: 0x8f},
+ {value: 0x0808, lo: 0x90, hi: 0x93},
+ {value: 0x0040, lo: 0x94, hi: 0x94},
+ {value: 0x0808, lo: 0x95, hi: 0x97},
+ {value: 0x0040, lo: 0x98, hi: 0x98},
+ {value: 0x0808, lo: 0x99, hi: 0xb5},
+ {value: 0x0040, lo: 0xb6, hi: 0xb7},
+ {value: 0x3308, lo: 0xb8, hi: 0xba},
+ {value: 0x0040, lo: 0xbb, hi: 0xbe},
+ {value: 0x3b08, lo: 0xbf, hi: 0xbf},
+ // Block 0xa1, offset 0x4e6
+ {value: 0x0000, lo: 0x06},
+ {value: 0x0818, lo: 0x80, hi: 0x88},
+ {value: 0x0040, lo: 0x89, hi: 0x8f},
+ {value: 0x0818, lo: 0x90, hi: 0x98},
+ {value: 0x0040, lo: 0x99, hi: 0x9f},
+ {value: 0x0808, lo: 0xa0, hi: 0xbc},
+ {value: 0x0818, lo: 0xbd, hi: 0xbf},
+ // Block 0xa2, offset 0x4ed
+ {value: 0x0000, lo: 0x03},
+ {value: 0x0808, lo: 0x80, hi: 0x9c},
+ {value: 0x0818, lo: 0x9d, hi: 0x9f},
+ {value: 0x0040, lo: 0xa0, hi: 0xbf},
+ // Block 0xa3, offset 0x4f1
+ {value: 0x0000, lo: 0x03},
+ {value: 0x0808, lo: 0x80, hi: 0xb5},
+ {value: 0x0040, lo: 0xb6, hi: 0xb8},
+ {value: 0x0018, lo: 0xb9, hi: 0xbf},
+ // Block 0xa4, offset 0x4f5
+ {value: 0x0000, lo: 0x06},
+ {value: 0x0808, lo: 0x80, hi: 0x95},
+ {value: 0x0040, lo: 0x96, hi: 0x97},
+ {value: 0x0818, lo: 0x98, hi: 0x9f},
+ {value: 0x0808, lo: 0xa0, hi: 0xb2},
+ {value: 0x0040, lo: 0xb3, hi: 0xb7},
+ {value: 0x0818, lo: 0xb8, hi: 0xbf},
+ // Block 0xa5, offset 0x4fc
+ {value: 0x0000, lo: 0x01},
+ {value: 0x0808, lo: 0x80, hi: 0xbf},
+ // Block 0xa6, offset 0x4fe
+ {value: 0x0000, lo: 0x02},
+ {value: 0x0808, lo: 0x80, hi: 0x88},
+ {value: 0x0040, lo: 0x89, hi: 0xbf},
+ // Block 0xa7, offset 0x501
+ {value: 0x0000, lo: 0x02},
+ {value: 0x03dd, lo: 0x80, hi: 0xb2},
+ {value: 0x0040, lo: 0xb3, hi: 0xbf},
+ // Block 0xa8, offset 0x504
+ {value: 0x0000, lo: 0x03},
+ {value: 0x0808, lo: 0x80, hi: 0xb2},
+ {value: 0x0040, lo: 0xb3, hi: 0xb9},
+ {value: 0x0818, lo: 0xba, hi: 0xbf},
+ // Block 0xa9, offset 0x508
+ {value: 0x0000, lo: 0x08},
+ {value: 0x0908, lo: 0x80, hi: 0x80},
+ {value: 0x0a08, lo: 0x81, hi: 0xa1},
+ {value: 0x0c08, lo: 0xa2, hi: 0xa2},
+ {value: 0x0a08, lo: 0xa3, hi: 0xa3},
+ {value: 0x3308, lo: 0xa4, hi: 0xa7},
+ {value: 0x0040, lo: 0xa8, hi: 0xaf},
+ {value: 0x0808, lo: 0xb0, hi: 0xb9},
+ {value: 0x0040, lo: 0xba, hi: 0xbf},
+ // Block 0xaa, offset 0x511
+ {value: 0x0000, lo: 0x03},
+ {value: 0x0040, lo: 0x80, hi: 0x9f},
+ {value: 0x0818, lo: 0xa0, hi: 0xbe},
+ {value: 0x0040, lo: 0xbf, hi: 0xbf},
+ // Block 0xab, offset 0x515
+ {value: 0x0000, lo: 0x07},
+ {value: 0x0808, lo: 0x80, hi: 0xa9},
+ {value: 0x0040, lo: 0xaa, hi: 0xaa},
+ {value: 0x3308, lo: 0xab, hi: 0xac},
+ {value: 0x0818, lo: 0xad, hi: 0xad},
+ {value: 0x0040, lo: 0xae, hi: 0xaf},
+ {value: 0x0808, lo: 0xb0, hi: 0xb1},
+ {value: 0x0040, lo: 0xb2, hi: 0xbf},
+ // Block 0xac, offset 0x51d
+ {value: 0x0000, lo: 0x07},
+ {value: 0x0808, lo: 0x80, hi: 0x9c},
+ {value: 0x0818, lo: 0x9d, hi: 0xa6},
+ {value: 0x0808, lo: 0xa7, hi: 0xa7},
+ {value: 0x0040, lo: 0xa8, hi: 0xaf},
+ {value: 0x0a08, lo: 0xb0, hi: 0xb2},
+ {value: 0x0c08, lo: 0xb3, hi: 0xb3},
+ {value: 0x0a08, lo: 0xb4, hi: 0xbf},
+ // Block 0xad, offset 0x525
+ {value: 0x0000, lo: 0x07},
+ {value: 0x0a08, lo: 0x80, hi: 0x84},
+ {value: 0x0808, lo: 0x85, hi: 0x85},
+ {value: 0x3308, lo: 0x86, hi: 0x90},
+ {value: 0x0a18, lo: 0x91, hi: 0x93},
+ {value: 0x0c18, lo: 0x94, hi: 0x94},
+ {value: 0x0818, lo: 0x95, hi: 0x99},
+ {value: 0x0040, lo: 0x9a, hi: 0xbf},
+ // Block 0xae, offset 0x52d
+ {value: 0x0000, lo: 0x0b},
+ {value: 0x0040, lo: 0x80, hi: 0xaf},
+ {value: 0x0a08, lo: 0xb0, hi: 0xb0},
+ {value: 0x0808, lo: 0xb1, hi: 0xb1},
+ {value: 0x0a08, lo: 0xb2, hi: 0xb3},
+ {value: 0x0c08, lo: 0xb4, hi: 0xb6},
+ {value: 0x0808, lo: 0xb7, hi: 0xb7},
+ {value: 0x0a08, lo: 0xb8, hi: 0xb8},
+ {value: 0x0c08, lo: 0xb9, hi: 0xba},
+ {value: 0x0a08, lo: 0xbb, hi: 0xbc},
+ {value: 0x0c08, lo: 0xbd, hi: 0xbd},
+ {value: 0x0a08, lo: 0xbe, hi: 0xbf},
+ // Block 0xaf, offset 0x539
+ {value: 0x0000, lo: 0x0b},
+ {value: 0x0808, lo: 0x80, hi: 0x80},
+ {value: 0x0a08, lo: 0x81, hi: 0x81},
+ {value: 0x0c08, lo: 0x82, hi: 0x83},
+ {value: 0x0a08, lo: 0x84, hi: 0x84},
+ {value: 0x0818, lo: 0x85, hi: 0x88},
+ {value: 0x0c18, lo: 0x89, hi: 0x89},
+ {value: 0x0a18, lo: 0x8a, hi: 0x8a},
+ {value: 0x0918, lo: 0x8b, hi: 0x8b},
+ {value: 0x0040, lo: 0x8c, hi: 0x9f},
+ {value: 0x0808, lo: 0xa0, hi: 0xb6},
+ {value: 0x0040, lo: 0xb7, hi: 0xbf},
+ // Block 0xb0, offset 0x545
+ {value: 0x0000, lo: 0x05},
+ {value: 0x3008, lo: 0x80, hi: 0x80},
+ {value: 0x3308, lo: 0x81, hi: 0x81},
+ {value: 0x3008, lo: 0x82, hi: 0x82},
+ {value: 0x0008, lo: 0x83, hi: 0xb7},
+ {value: 0x3308, lo: 0xb8, hi: 0xbf},
+ // Block 0xb1, offset 0x54b
+ {value: 0x0000, lo: 0x08},
+ {value: 0x3308, lo: 0x80, hi: 0x85},
+ {value: 0x3b08, lo: 0x86, hi: 0x86},
+ {value: 0x0018, lo: 0x87, hi: 0x8d},
+ {value: 0x0040, lo: 0x8e, hi: 0x91},
+ {value: 0x0018, lo: 0x92, hi: 0xa5},
+ {value: 0x0008, lo: 0xa6, hi: 0xaf},
+ {value: 0x0040, lo: 0xb0, hi: 0xbe},
+ {value: 0x3b08, lo: 0xbf, hi: 0xbf},
+ // Block 0xb2, offset 0x554
+ {value: 0x0000, lo: 0x0b},
+ {value: 0x3308, lo: 0x80, hi: 0x81},
+ {value: 0x3008, lo: 0x82, hi: 0x82},
+ {value: 0x0008, lo: 0x83, hi: 0xaf},
+ {value: 0x3008, lo: 0xb0, hi: 0xb2},
+ {value: 0x3308, lo: 0xb3, hi: 0xb6},
+ {value: 0x3008, lo: 0xb7, hi: 0xb8},
+ {value: 0x3b08, lo: 0xb9, hi: 0xb9},
+ {value: 0x3308, lo: 0xba, hi: 0xba},
+ {value: 0x0018, lo: 0xbb, hi: 0xbc},
+ {value: 0x0040, lo: 0xbd, hi: 0xbd},
+ {value: 0x0018, lo: 0xbe, hi: 0xbf},
+ // Block 0xb3, offset 0x560
+ {value: 0x0000, lo: 0x06},
+ {value: 0x0018, lo: 0x80, hi: 0x81},
+ {value: 0x0040, lo: 0x82, hi: 0x8f},
+ {value: 0x0008, lo: 0x90, hi: 0xa8},
+ {value: 0x0040, lo: 0xa9, hi: 0xaf},
+ {value: 0x0008, lo: 0xb0, hi: 0xb9},
+ {value: 0x0040, lo: 0xba, hi: 0xbf},
+ // Block 0xb4, offset 0x567
+ {value: 0x0000, lo: 0x08},
+ {value: 0x3308, lo: 0x80, hi: 0x82},
+ {value: 0x0008, lo: 0x83, hi: 0xa6},
+ {value: 0x3308, lo: 0xa7, hi: 0xab},
+ {value: 0x3008, lo: 0xac, hi: 0xac},
+ {value: 0x3308, lo: 0xad, hi: 0xb2},
+ {value: 0x3b08, lo: 0xb3, hi: 0xb4},
+ {value: 0x0040, lo: 0xb5, hi: 0xb5},
+ {value: 0x0008, lo: 0xb6, hi: 0xbf},
+ // Block 0xb5, offset 0x570
+ {value: 0x0000, lo: 0x0a},
+ {value: 0x0018, lo: 0x80, hi: 0x83},
+ {value: 0x0008, lo: 0x84, hi: 0x84},
+ {value: 0x3008, lo: 0x85, hi: 0x86},
+ {value: 0x0008, lo: 0x87, hi: 0x87},
+ {value: 0x0040, lo: 0x88, hi: 0x8f},
+ {value: 0x0008, lo: 0x90, hi: 0xb2},
+ {value: 0x3308, lo: 0xb3, hi: 0xb3},
+ {value: 0x0018, lo: 0xb4, hi: 0xb5},
+ {value: 0x0008, lo: 0xb6, hi: 0xb6},
+ {value: 0x0040, lo: 0xb7, hi: 0xbf},
+ // Block 0xb6, offset 0x57b
+ {value: 0x0000, lo: 0x06},
+ {value: 0x3308, lo: 0x80, hi: 0x81},
+ {value: 0x3008, lo: 0x82, hi: 0x82},
+ {value: 0x0008, lo: 0x83, hi: 0xb2},
+ {value: 0x3008, lo: 0xb3, hi: 0xb5},
+ {value: 0x3308, lo: 0xb6, hi: 0xbe},
+ {value: 0x3008, lo: 0xbf, hi: 0xbf},
+ // Block 0xb7, offset 0x582
+ {value: 0x0000, lo: 0x0e},
+ {value: 0x3808, lo: 0x80, hi: 0x80},
+ {value: 0x0008, lo: 0x81, hi: 0x84},
+ {value: 0x0018, lo: 0x85, hi: 0x88},
+ {value: 0x3308, lo: 0x89, hi: 0x8c},
+ {value: 0x0018, lo: 0x8d, hi: 0x8d},
+ {value: 0x3008, lo: 0x8e, hi: 0x8e},
+ {value: 0x3308, lo: 0x8f, hi: 0x8f},
+ {value: 0x0008, lo: 0x90, hi: 0x9a},
+ {value: 0x0018, lo: 0x9b, hi: 0x9b},
+ {value: 0x0008, lo: 0x9c, hi: 0x9c},
+ {value: 0x0018, lo: 0x9d, hi: 0x9f},
+ {value: 0x0040, lo: 0xa0, hi: 0xa0},
+ {value: 0x0018, lo: 0xa1, hi: 0xb4},
+ {value: 0x0040, lo: 0xb5, hi: 0xbf},
+ // Block 0xb8, offset 0x591
+ {value: 0x0000, lo: 0x0c},
+ {value: 0x0008, lo: 0x80, hi: 0x91},
+ {value: 0x0040, lo: 0x92, hi: 0x92},
+ {value: 0x0008, lo: 0x93, hi: 0xab},
+ {value: 0x3008, lo: 0xac, hi: 0xae},
+ {value: 0x3308, lo: 0xaf, hi: 0xb1},
+ {value: 0x3008, lo: 0xb2, hi: 0xb3},
+ {value: 0x3308, lo: 0xb4, hi: 0xb4},
+ {value: 0x3808, lo: 0xb5, hi: 0xb5},
+ {value: 0x3308, lo: 0xb6, hi: 0xb7},
+ {value: 0x0018, lo: 0xb8, hi: 0xbd},
+ {value: 0x3308, lo: 0xbe, hi: 0xbe},
+ {value: 0x0040, lo: 0xbf, hi: 0xbf},
+ // Block 0xb9, offset 0x59e
+ {value: 0x0000, lo: 0x0c},
+ {value: 0x0008, lo: 0x80, hi: 0x86},
+ {value: 0x0040, lo: 0x87, hi: 0x87},
+ {value: 0x0008, lo: 0x88, hi: 0x88},
+ {value: 0x0040, lo: 0x89, hi: 0x89},
+ {value: 0x0008, lo: 0x8a, hi: 0x8d},
+ {value: 0x0040, lo: 0x8e, hi: 0x8e},
+ {value: 0x0008, lo: 0x8f, hi: 0x9d},
+ {value: 0x0040, lo: 0x9e, hi: 0x9e},
+ {value: 0x0008, lo: 0x9f, hi: 0xa8},
+ {value: 0x0018, lo: 0xa9, hi: 0xa9},
+ {value: 0x0040, lo: 0xaa, hi: 0xaf},
+ {value: 0x0008, lo: 0xb0, hi: 0xbf},
+ // Block 0xba, offset 0x5ab
+ {value: 0x0000, lo: 0x08},
+ {value: 0x0008, lo: 0x80, hi: 0x9e},
+ {value: 0x3308, lo: 0x9f, hi: 0x9f},
+ {value: 0x3008, lo: 0xa0, hi: 0xa2},
+ {value: 0x3308, lo: 0xa3, hi: 0xa9},
+ {value: 0x3b08, lo: 0xaa, hi: 0xaa},
+ {value: 0x0040, lo: 0xab, hi: 0xaf},
+ {value: 0x0008, lo: 0xb0, hi: 0xb9},
+ {value: 0x0040, lo: 0xba, hi: 0xbf},
+ // Block 0xbb, offset 0x5b4
+ {value: 0x0000, lo: 0x03},
+ {value: 0x0008, lo: 0x80, hi: 0xb4},
+ {value: 0x3008, lo: 0xb5, hi: 0xb7},
+ {value: 0x3308, lo: 0xb8, hi: 0xbf},
+ // Block 0xbc, offset 0x5b8
+ {value: 0x0000, lo: 0x0e},
+ {value: 0x3008, lo: 0x80, hi: 0x81},
+ {value: 0x3b08, lo: 0x82, hi: 0x82},
+ {value: 0x3308, lo: 0x83, hi: 0x84},
+ {value: 0x3008, lo: 0x85, hi: 0x85},
+ {value: 0x3308, lo: 0x86, hi: 0x86},
+ {value: 0x0008, lo: 0x87, hi: 0x8a},
+ {value: 0x0018, lo: 0x8b, hi: 0x8f},
+ {value: 0x0008, lo: 0x90, hi: 0x99},
+ {value: 0x0018, lo: 0x9a, hi: 0x9b},
+ {value: 0x0040, lo: 0x9c, hi: 0x9c},
+ {value: 0x0018, lo: 0x9d, hi: 0x9d},
+ {value: 0x3308, lo: 0x9e, hi: 0x9e},
+ {value: 0x0008, lo: 0x9f, hi: 0xa1},
+ {value: 0x0040, lo: 0xa2, hi: 0xbf},
+ // Block 0xbd, offset 0x5c7
+ {value: 0x0000, lo: 0x07},
+ {value: 0x0008, lo: 0x80, hi: 0xaf},
+ {value: 0x3008, lo: 0xb0, hi: 0xb2},
+ {value: 0x3308, lo: 0xb3, hi: 0xb8},
+ {value: 0x3008, lo: 0xb9, hi: 0xb9},
+ {value: 0x3308, lo: 0xba, hi: 0xba},
+ {value: 0x3008, lo: 0xbb, hi: 0xbe},
+ {value: 0x3308, lo: 0xbf, hi: 0xbf},
+ // Block 0xbe, offset 0x5cf
+ {value: 0x0000, lo: 0x0a},
+ {value: 0x3308, lo: 0x80, hi: 0x80},
+ {value: 0x3008, lo: 0x81, hi: 0x81},
+ {value: 0x3b08, lo: 0x82, hi: 0x82},
+ {value: 0x3308, lo: 0x83, hi: 0x83},
+ {value: 0x0008, lo: 0x84, hi: 0x85},
+ {value: 0x0018, lo: 0x86, hi: 0x86},
+ {value: 0x0008, lo: 0x87, hi: 0x87},
+ {value: 0x0040, lo: 0x88, hi: 0x8f},
+ {value: 0x0008, lo: 0x90, hi: 0x99},
+ {value: 0x0040, lo: 0x9a, hi: 0xbf},
+ // Block 0xbf, offset 0x5da
+ {value: 0x0000, lo: 0x08},
+ {value: 0x0008, lo: 0x80, hi: 0xae},
+ {value: 0x3008, lo: 0xaf, hi: 0xb1},
+ {value: 0x3308, lo: 0xb2, hi: 0xb5},
+ {value: 0x0040, lo: 0xb6, hi: 0xb7},
+ {value: 0x3008, lo: 0xb8, hi: 0xbb},
+ {value: 0x3308, lo: 0xbc, hi: 0xbd},
+ {value: 0x3008, lo: 0xbe, hi: 0xbe},
+ {value: 0x3b08, lo: 0xbf, hi: 0xbf},
+ // Block 0xc0, offset 0x5e3
+ {value: 0x0000, lo: 0x05},
+ {value: 0x3308, lo: 0x80, hi: 0x80},
+ {value: 0x0018, lo: 0x81, hi: 0x97},
+ {value: 0x0008, lo: 0x98, hi: 0x9b},
+ {value: 0x3308, lo: 0x9c, hi: 0x9d},
+ {value: 0x0040, lo: 0x9e, hi: 0xbf},
+ // Block 0xc1, offset 0x5e9
+ {value: 0x0000, lo: 0x07},
+ {value: 0x0008, lo: 0x80, hi: 0xaf},
+ {value: 0x3008, lo: 0xb0, hi: 0xb2},
+ {value: 0x3308, lo: 0xb3, hi: 0xba},
+ {value: 0x3008, lo: 0xbb, hi: 0xbc},
+ {value: 0x3308, lo: 0xbd, hi: 0xbd},
+ {value: 0x3008, lo: 0xbe, hi: 0xbe},
+ {value: 0x3b08, lo: 0xbf, hi: 0xbf},
+ // Block 0xc2, offset 0x5f1
+ {value: 0x0000, lo: 0x08},
+ {value: 0x3308, lo: 0x80, hi: 0x80},
+ {value: 0x0018, lo: 0x81, hi: 0x83},
+ {value: 0x0008, lo: 0x84, hi: 0x84},
+ {value: 0x0040, lo: 0x85, hi: 0x8f},
+ {value: 0x0008, lo: 0x90, hi: 0x99},
+ {value: 0x0040, lo: 0x9a, hi: 0x9f},
+ {value: 0x0018, lo: 0xa0, hi: 0xac},
+ {value: 0x0040, lo: 0xad, hi: 0xbf},
+ // Block 0xc3, offset 0x5fa
+ {value: 0x0000, lo: 0x0a},
+ {value: 0x0008, lo: 0x80, hi: 0xaa},
+ {value: 0x3308, lo: 0xab, hi: 0xab},
+ {value: 0x3008, lo: 0xac, hi: 0xac},
+ {value: 0x3308, lo: 0xad, hi: 0xad},
+ {value: 0x3008, lo: 0xae, hi: 0xaf},
+ {value: 0x3308, lo: 0xb0, hi: 0xb5},
+ {value: 0x3808, lo: 0xb6, hi: 0xb6},
+ {value: 0x3308, lo: 0xb7, hi: 0xb7},
+ {value: 0x0008, lo: 0xb8, hi: 0xb8},
+ {value: 0x0040, lo: 0xb9, hi: 0xbf},
+ // Block 0xc4, offset 0x605
+ {value: 0x0000, lo: 0x02},
+ {value: 0x0008, lo: 0x80, hi: 0x89},
+ {value: 0x0040, lo: 0x8a, hi: 0xbf},
+ // Block 0xc5, offset 0x608
+ {value: 0x0000, lo: 0x0b},
+ {value: 0x0008, lo: 0x80, hi: 0x9a},
+ {value: 0x0040, lo: 0x9b, hi: 0x9c},
+ {value: 0x3308, lo: 0x9d, hi: 0x9f},
+ {value: 0x3008, lo: 0xa0, hi: 0xa1},
+ {value: 0x3308, lo: 0xa2, hi: 0xa5},
+ {value: 0x3008, lo: 0xa6, hi: 0xa6},
+ {value: 0x3308, lo: 0xa7, hi: 0xaa},
+ {value: 0x3b08, lo: 0xab, hi: 0xab},
+ {value: 0x0040, lo: 0xac, hi: 0xaf},
+ {value: 0x0008, lo: 0xb0, hi: 0xb9},
+ {value: 0x0018, lo: 0xba, hi: 0xbf},
+ // Block 0xc6, offset 0x614
+ {value: 0x0000, lo: 0x08},
+ {value: 0x0008, lo: 0x80, hi: 0xab},
+ {value: 0x3008, lo: 0xac, hi: 0xae},
+ {value: 0x3308, lo: 0xaf, hi: 0xb7},
+ {value: 0x3008, lo: 0xb8, hi: 0xb8},
+ {value: 0x3b08, lo: 0xb9, hi: 0xb9},
+ {value: 0x3308, lo: 0xba, hi: 0xba},
+ {value: 0x0018, lo: 0xbb, hi: 0xbb},
+ {value: 0x0040, lo: 0xbc, hi: 0xbf},
+ // Block 0xc7, offset 0x61d
+ {value: 0x0000, lo: 0x02},
+ {value: 0x0040, lo: 0x80, hi: 0x9f},
+ {value: 0x049d, lo: 0xa0, hi: 0xbf},
+ // Block 0xc8, offset 0x620
+ {value: 0x0000, lo: 0x04},
+ {value: 0x0008, lo: 0x80, hi: 0xa9},
+ {value: 0x0018, lo: 0xaa, hi: 0xb2},
+ {value: 0x0040, lo: 0xb3, hi: 0xbe},
+ {value: 0x0008, lo: 0xbf, hi: 0xbf},
+ // Block 0xc9, offset 0x625
+ {value: 0x0000, lo: 0x08},
+ {value: 0x3008, lo: 0x80, hi: 0x80},
+ {value: 0x0008, lo: 0x81, hi: 0x81},
+ {value: 0x3008, lo: 0x82, hi: 0x82},
+ {value: 0x3308, lo: 0x83, hi: 0x83},
+ {value: 0x0018, lo: 0x84, hi: 0x86},
+ {value: 0x0040, lo: 0x87, hi: 0x8f},
+ {value: 0x0008, lo: 0x90, hi: 0x99},
+ {value: 0x0040, lo: 0x9a, hi: 0xbf},
+ // Block 0xca, offset 0x62e
+ {value: 0x0000, lo: 0x04},
+ {value: 0x0040, lo: 0x80, hi: 0x9f},
+ {value: 0x0008, lo: 0xa0, hi: 0xa7},
+ {value: 0x0040, lo: 0xa8, hi: 0xa9},
+ {value: 0x0008, lo: 0xaa, hi: 0xbf},
+ // Block 0xcb, offset 0x633
+ {value: 0x0000, lo: 0x0c},
+ {value: 0x0008, lo: 0x80, hi: 0x90},
+ {value: 0x3008, lo: 0x91, hi: 0x93},
+ {value: 0x3308, lo: 0x94, hi: 0x97},
+ {value: 0x0040, lo: 0x98, hi: 0x99},
+ {value: 0x3308, lo: 0x9a, hi: 0x9b},
+ {value: 0x3008, lo: 0x9c, hi: 0x9f},
+ {value: 0x3b08, lo: 0xa0, hi: 0xa0},
+ {value: 0x0008, lo: 0xa1, hi: 0xa1},
+ {value: 0x0018, lo: 0xa2, hi: 0xa2},
+ {value: 0x0008, lo: 0xa3, hi: 0xa3},
+ {value: 0x3008, lo: 0xa4, hi: 0xa4},
+ {value: 0x0040, lo: 0xa5, hi: 0xbf},
+ // Block 0xcc, offset 0x640
+ {value: 0x0000, lo: 0x0a},
+ {value: 0x0008, lo: 0x80, hi: 0x80},
+ {value: 0x3308, lo: 0x81, hi: 0x8a},
+ {value: 0x0008, lo: 0x8b, hi: 0xb2},
+ {value: 0x3308, lo: 0xb3, hi: 0xb3},
+ {value: 0x3b08, lo: 0xb4, hi: 0xb4},
+ {value: 0x3308, lo: 0xb5, hi: 0xb8},
+ {value: 0x3008, lo: 0xb9, hi: 0xb9},
+ {value: 0x0008, lo: 0xba, hi: 0xba},
+ {value: 0x3308, lo: 0xbb, hi: 0xbe},
+ {value: 0x0018, lo: 0xbf, hi: 0xbf},
+ // Block 0xcd, offset 0x64b
+ {value: 0x0000, lo: 0x08},
+ {value: 0x0018, lo: 0x80, hi: 0x86},
+ {value: 0x3b08, lo: 0x87, hi: 0x87},
+ {value: 0x0040, lo: 0x88, hi: 0x8f},
+ {value: 0x0008, lo: 0x90, hi: 0x90},
+ {value: 0x3308, lo: 0x91, hi: 0x96},
+ {value: 0x3008, lo: 0x97, hi: 0x98},
+ {value: 0x3308, lo: 0x99, hi: 0x9b},
+ {value: 0x0008, lo: 0x9c, hi: 0xbf},
+ // Block 0xce, offset 0x654
+ {value: 0x0000, lo: 0x09},
+ {value: 0x0008, lo: 0x80, hi: 0x89},
+ {value: 0x3308, lo: 0x8a, hi: 0x96},
+ {value: 0x3008, lo: 0x97, hi: 0x97},
+ {value: 0x3308, lo: 0x98, hi: 0x98},
+ {value: 0x3b08, lo: 0x99, hi: 0x99},
+ {value: 0x0018, lo: 0x9a, hi: 0x9c},
+ {value: 0x0008, lo: 0x9d, hi: 0x9d},
+ {value: 0x0018, lo: 0x9e, hi: 0xa2},
+ {value: 0x0040, lo: 0xa3, hi: 0xbf},
+ // Block 0xcf, offset 0x65e
+ {value: 0x0000, lo: 0x02},
+ {value: 0x0008, lo: 0x80, hi: 0xb8},
+ {value: 0x0040, lo: 0xb9, hi: 0xbf},
+ // Block 0xd0, offset 0x661
+ {value: 0x0000, lo: 0x09},
+ {value: 0x0008, lo: 0x80, hi: 0x88},
+ {value: 0x0040, lo: 0x89, hi: 0x89},
+ {value: 0x0008, lo: 0x8a, hi: 0xae},
+ {value: 0x3008, lo: 0xaf, hi: 0xaf},
+ {value: 0x3308, lo: 0xb0, hi: 0xb6},
+ {value: 0x0040, lo: 0xb7, hi: 0xb7},
+ {value: 0x3308, lo: 0xb8, hi: 0xbd},
+ {value: 0x3008, lo: 0xbe, hi: 0xbe},
+ {value: 0x3b08, lo: 0xbf, hi: 0xbf},
+ // Block 0xd1, offset 0x66b
+ {value: 0x0000, lo: 0x08},
+ {value: 0x0008, lo: 0x80, hi: 0x80},
+ {value: 0x0018, lo: 0x81, hi: 0x85},
+ {value: 0x0040, lo: 0x86, hi: 0x8f},
+ {value: 0x0008, lo: 0x90, hi: 0x99},
+ {value: 0x0018, lo: 0x9a, hi: 0xac},
+ {value: 0x0040, lo: 0xad, hi: 0xaf},
+ {value: 0x0018, lo: 0xb0, hi: 0xb1},
+ {value: 0x0008, lo: 0xb2, hi: 0xbf},
+ // Block 0xd2, offset 0x674
+ {value: 0x0000, lo: 0x0b},
+ {value: 0x0008, lo: 0x80, hi: 0x8f},
+ {value: 0x0040, lo: 0x90, hi: 0x91},
+ {value: 0x3308, lo: 0x92, hi: 0xa7},
+ {value: 0x0040, lo: 0xa8, hi: 0xa8},
+ {value: 0x3008, lo: 0xa9, hi: 0xa9},
+ {value: 0x3308, lo: 0xaa, hi: 0xb0},
+ {value: 0x3008, lo: 0xb1, hi: 0xb1},
+ {value: 0x3308, lo: 0xb2, hi: 0xb3},
+ {value: 0x3008, lo: 0xb4, hi: 0xb4},
+ {value: 0x3308, lo: 0xb5, hi: 0xb6},
+ {value: 0x0040, lo: 0xb7, hi: 0xbf},
+ // Block 0xd3, offset 0x680
+ {value: 0x0000, lo: 0x0c},
+ {value: 0x0008, lo: 0x80, hi: 0x86},
+ {value: 0x0040, lo: 0x87, hi: 0x87},
+ {value: 0x0008, lo: 0x88, hi: 0x89},
+ {value: 0x0040, lo: 0x8a, hi: 0x8a},
+ {value: 0x0008, lo: 0x8b, hi: 0xb0},
+ {value: 0x3308, lo: 0xb1, hi: 0xb6},
+ {value: 0x0040, lo: 0xb7, hi: 0xb9},
+ {value: 0x3308, lo: 0xba, hi: 0xba},
+ {value: 0x0040, lo: 0xbb, hi: 0xbb},
+ {value: 0x3308, lo: 0xbc, hi: 0xbd},
+ {value: 0x0040, lo: 0xbe, hi: 0xbe},
+ {value: 0x3308, lo: 0xbf, hi: 0xbf},
+ // Block 0xd4, offset 0x68d
+ {value: 0x0000, lo: 0x0c},
+ {value: 0x3308, lo: 0x80, hi: 0x83},
+ {value: 0x3b08, lo: 0x84, hi: 0x85},
+ {value: 0x0008, lo: 0x86, hi: 0x86},
+ {value: 0x3308, lo: 0x87, hi: 0x87},
+ {value: 0x0040, lo: 0x88, hi: 0x8f},
+ {value: 0x0008, lo: 0x90, hi: 0x99},
+ {value: 0x0040, lo: 0x9a, hi: 0x9f},
+ {value: 0x0008, lo: 0xa0, hi: 0xa5},
+ {value: 0x0040, lo: 0xa6, hi: 0xa6},
+ {value: 0x0008, lo: 0xa7, hi: 0xa8},
+ {value: 0x0040, lo: 0xa9, hi: 0xa9},
+ {value: 0x0008, lo: 0xaa, hi: 0xbf},
+ // Block 0xd5, offset 0x69a
+ {value: 0x0000, lo: 0x0d},
+ {value: 0x0008, lo: 0x80, hi: 0x89},
+ {value: 0x3008, lo: 0x8a, hi: 0x8e},
+ {value: 0x0040, lo: 0x8f, hi: 0x8f},
+ {value: 0x3308, lo: 0x90, hi: 0x91},
+ {value: 0x0040, lo: 0x92, hi: 0x92},
+ {value: 0x3008, lo: 0x93, hi: 0x94},
+ {value: 0x3308, lo: 0x95, hi: 0x95},
+ {value: 0x3008, lo: 0x96, hi: 0x96},
+ {value: 0x3b08, lo: 0x97, hi: 0x97},
+ {value: 0x0008, lo: 0x98, hi: 0x98},
+ {value: 0x0040, lo: 0x99, hi: 0x9f},
+ {value: 0x0008, lo: 0xa0, hi: 0xa9},
+ {value: 0x0040, lo: 0xaa, hi: 0xbf},
+ // Block 0xd6, offset 0x6a8
+ {value: 0x0000, lo: 0x06},
+ {value: 0x0040, lo: 0x80, hi: 0x9f},
+ {value: 0x0008, lo: 0xa0, hi: 0xb2},
+ {value: 0x3308, lo: 0xb3, hi: 0xb4},
+ {value: 0x3008, lo: 0xb5, hi: 0xb6},
+ {value: 0x0018, lo: 0xb7, hi: 0xb8},
+ {value: 0x0040, lo: 0xb9, hi: 0xbf},
+ // Block 0xd7, offset 0x6af
+ {value: 0x0000, lo: 0x03},
+ {value: 0x0040, lo: 0x80, hi: 0xaf},
+ {value: 0x0008, lo: 0xb0, hi: 0xb0},
+ {value: 0x0040, lo: 0xb1, hi: 0xbf},
+ // Block 0xd8, offset 0x6b3
+ {value: 0x0000, lo: 0x03},
+ {value: 0x0018, lo: 0x80, hi: 0xb1},
+ {value: 0x0040, lo: 0xb2, hi: 0xbe},
+ {value: 0x0018, lo: 0xbf, hi: 0xbf},
+ // Block 0xd9, offset 0x6b7
+ {value: 0x0000, lo: 0x02},
+ {value: 0x0008, lo: 0x80, hi: 0x99},
+ {value: 0x0040, lo: 0x9a, hi: 0xbf},
+ // Block 0xda, offset 0x6ba
+ {value: 0x0000, lo: 0x04},
+ {value: 0x0018, lo: 0x80, hi: 0xae},
+ {value: 0x0040, lo: 0xaf, hi: 0xaf},
+ {value: 0x0018, lo: 0xb0, hi: 0xb4},
+ {value: 0x0040, lo: 0xb5, hi: 0xbf},
+ // Block 0xdb, offset 0x6bf
+ {value: 0x0000, lo: 0x02},
+ {value: 0x0008, lo: 0x80, hi: 0x83},
+ {value: 0x0040, lo: 0x84, hi: 0xbf},
+ // Block 0xdc, offset 0x6c2
+ {value: 0x0000, lo: 0x04},
+ {value: 0x0008, lo: 0x80, hi: 0xae},
+ {value: 0x0040, lo: 0xaf, hi: 0xaf},
+ {value: 0x0340, lo: 0xb0, hi: 0xb8},
+ {value: 0x0040, lo: 0xb9, hi: 0xbf},
+ // Block 0xdd, offset 0x6c7
+ {value: 0x0000, lo: 0x02},
+ {value: 0x0008, lo: 0x80, hi: 0x86},
+ {value: 0x0040, lo: 0x87, hi: 0xbf},
+ // Block 0xde, offset 0x6ca
+ {value: 0x0000, lo: 0x06},
+ {value: 0x0008, lo: 0x80, hi: 0x9e},
+ {value: 0x0040, lo: 0x9f, hi: 0x9f},
+ {value: 0x0008, lo: 0xa0, hi: 0xa9},
+ {value: 0x0040, lo: 0xaa, hi: 0xad},
+ {value: 0x0018, lo: 0xae, hi: 0xaf},
+ {value: 0x0040, lo: 0xb0, hi: 0xbf},
+ // Block 0xdf, offset 0x6d1
+ {value: 0x0000, lo: 0x06},
+ {value: 0x0040, lo: 0x80, hi: 0x8f},
+ {value: 0x0008, lo: 0x90, hi: 0xad},
+ {value: 0x0040, lo: 0xae, hi: 0xaf},
+ {value: 0x3308, lo: 0xb0, hi: 0xb4},
+ {value: 0x0018, lo: 0xb5, hi: 0xb5},
+ {value: 0x0040, lo: 0xb6, hi: 0xbf},
+ // Block 0xe0, offset 0x6d8
+ {value: 0x0000, lo: 0x03},
+ {value: 0x0008, lo: 0x80, hi: 0xaf},
+ {value: 0x3308, lo: 0xb0, hi: 0xb6},
+ {value: 0x0018, lo: 0xb7, hi: 0xbf},
+ // Block 0xe1, offset 0x6dc
+ {value: 0x0000, lo: 0x0a},
+ {value: 0x0008, lo: 0x80, hi: 0x83},
+ {value: 0x0018, lo: 0x84, hi: 0x85},
+ {value: 0x0040, lo: 0x86, hi: 0x8f},
+ {value: 0x0008, lo: 0x90, hi: 0x99},
+ {value: 0x0040, lo: 0x9a, hi: 0x9a},
+ {value: 0x0018, lo: 0x9b, hi: 0xa1},
+ {value: 0x0040, lo: 0xa2, hi: 0xa2},
+ {value: 0x0008, lo: 0xa3, hi: 0xb7},
+ {value: 0x0040, lo: 0xb8, hi: 0xbc},
+ {value: 0x0008, lo: 0xbd, hi: 0xbf},
+ // Block 0xe2, offset 0x6e7
+ {value: 0x0000, lo: 0x02},
+ {value: 0x0008, lo: 0x80, hi: 0x8f},
+ {value: 0x0040, lo: 0x90, hi: 0xbf},
+ // Block 0xe3, offset 0x6ea
+ {value: 0x0000, lo: 0x02},
+ {value: 0xe105, lo: 0x80, hi: 0x9f},
+ {value: 0x0008, lo: 0xa0, hi: 0xbf},
+ // Block 0xe4, offset 0x6ed
+ {value: 0x0000, lo: 0x02},
+ {value: 0x0018, lo: 0x80, hi: 0x9a},
+ {value: 0x0040, lo: 0x9b, hi: 0xbf},
+ // Block 0xe5, offset 0x6f0
+ {value: 0x0000, lo: 0x05},
+ {value: 0x0008, lo: 0x80, hi: 0x8a},
+ {value: 0x0040, lo: 0x8b, hi: 0x8e},
+ {value: 0x3308, lo: 0x8f, hi: 0x8f},
+ {value: 0x0008, lo: 0x90, hi: 0x90},
+ {value: 0x3008, lo: 0x91, hi: 0xbf},
+ // Block 0xe6, offset 0x6f6
+ {value: 0x0000, lo: 0x05},
+ {value: 0x3008, lo: 0x80, hi: 0x87},
+ {value: 0x0040, lo: 0x88, hi: 0x8e},
+ {value: 0x3308, lo: 0x8f, hi: 0x92},
+ {value: 0x0008, lo: 0x93, hi: 0x9f},
+ {value: 0x0040, lo: 0xa0, hi: 0xbf},
+ // Block 0xe7, offset 0x6fc
+ {value: 0x0000, lo: 0x08},
+ {value: 0x0040, lo: 0x80, hi: 0x9f},
+ {value: 0x0008, lo: 0xa0, hi: 0xa1},
+ {value: 0x0018, lo: 0xa2, hi: 0xa2},
+ {value: 0x0008, lo: 0xa3, hi: 0xa3},
+ {value: 0x3308, lo: 0xa4, hi: 0xa4},
+ {value: 0x0040, lo: 0xa5, hi: 0xaf},
+ {value: 0x3008, lo: 0xb0, hi: 0xb1},
+ {value: 0x0040, lo: 0xb2, hi: 0xbf},
+ // Block 0xe8, offset 0x705
+ {value: 0x0000, lo: 0x02},
+ {value: 0x0008, lo: 0x80, hi: 0xb7},
+ {value: 0x0040, lo: 0xb8, hi: 0xbf},
+ // Block 0xe9, offset 0x708
+ {value: 0x0000, lo: 0x02},
+ {value: 0x0008, lo: 0x80, hi: 0x95},
+ {value: 0x0040, lo: 0x96, hi: 0xbf},
+ // Block 0xea, offset 0x70b
+ {value: 0x0000, lo: 0x02},
+ {value: 0x0008, lo: 0x80, hi: 0x88},
+ {value: 0x0040, lo: 0x89, hi: 0xbf},
+ // Block 0xeb, offset 0x70e
+ {value: 0x0000, lo: 0x02},
+ {value: 0x0008, lo: 0x80, hi: 0x9e},
+ {value: 0x0040, lo: 0x9f, hi: 0xbf},
+ // Block 0xec, offset 0x711
+ {value: 0x0000, lo: 0x06},
+ {value: 0x0040, lo: 0x80, hi: 0x8f},
+ {value: 0x0008, lo: 0x90, hi: 0x92},
+ {value: 0x0040, lo: 0x93, hi: 0xa3},
+ {value: 0x0008, lo: 0xa4, hi: 0xa7},
+ {value: 0x0040, lo: 0xa8, hi: 0xaf},
+ {value: 0x0008, lo: 0xb0, hi: 0xbf},
+ // Block 0xed, offset 0x718
+ {value: 0x0000, lo: 0x02},
+ {value: 0x0008, lo: 0x80, hi: 0xbb},
+ {value: 0x0040, lo: 0xbc, hi: 0xbf},
+ // Block 0xee, offset 0x71b
+ {value: 0x0000, lo: 0x04},
+ {value: 0x0008, lo: 0x80, hi: 0xaa},
+ {value: 0x0040, lo: 0xab, hi: 0xaf},
+ {value: 0x0008, lo: 0xb0, hi: 0xbc},
+ {value: 0x0040, lo: 0xbd, hi: 0xbf},
+ // Block 0xef, offset 0x720
+ {value: 0x0000, lo: 0x09},
+ {value: 0x0008, lo: 0x80, hi: 0x88},
+ {value: 0x0040, lo: 0x89, hi: 0x8f},
+ {value: 0x0008, lo: 0x90, hi: 0x99},
+ {value: 0x0040, lo: 0x9a, hi: 0x9b},
+ {value: 0x0018, lo: 0x9c, hi: 0x9c},
+ {value: 0x3308, lo: 0x9d, hi: 0x9e},
+ {value: 0x0018, lo: 0x9f, hi: 0x9f},
+ {value: 0x03c0, lo: 0xa0, hi: 0xa3},
+ {value: 0x0040, lo: 0xa4, hi: 0xbf},
+ // Block 0xf0, offset 0x72a
+ {value: 0x0000, lo: 0x02},
+ {value: 0x0018, lo: 0x80, hi: 0xb5},
+ {value: 0x0040, lo: 0xb6, hi: 0xbf},
+ // Block 0xf1, offset 0x72d
+ {value: 0x0000, lo: 0x03},
+ {value: 0x0018, lo: 0x80, hi: 0xa6},
+ {value: 0x0040, lo: 0xa7, hi: 0xa8},
+ {value: 0x0018, lo: 0xa9, hi: 0xbf},
+ // Block 0xf2, offset 0x731
+ {value: 0x0000, lo: 0x0e},
+ {value: 0x0018, lo: 0x80, hi: 0x9d},
+ {value: 0xb609, lo: 0x9e, hi: 0x9e},
+ {value: 0xb651, lo: 0x9f, hi: 0x9f},
+ {value: 0xb699, lo: 0xa0, hi: 0xa0},
+ {value: 0xb701, lo: 0xa1, hi: 0xa1},
+ {value: 0xb769, lo: 0xa2, hi: 0xa2},
+ {value: 0xb7d1, lo: 0xa3, hi: 0xa3},
+ {value: 0xb839, lo: 0xa4, hi: 0xa4},
+ {value: 0x3018, lo: 0xa5, hi: 0xa6},
+ {value: 0x3318, lo: 0xa7, hi: 0xa9},
+ {value: 0x0018, lo: 0xaa, hi: 0xac},
+ {value: 0x3018, lo: 0xad, hi: 0xb2},
+ {value: 0x0340, lo: 0xb3, hi: 0xba},
+ {value: 0x3318, lo: 0xbb, hi: 0xbf},
+ // Block 0xf3, offset 0x740
+ {value: 0x0000, lo: 0x0b},
+ {value: 0x3318, lo: 0x80, hi: 0x82},
+ {value: 0x0018, lo: 0x83, hi: 0x84},
+ {value: 0x3318, lo: 0x85, hi: 0x8b},
+ {value: 0x0018, lo: 0x8c, hi: 0xa9},
+ {value: 0x3318, lo: 0xaa, hi: 0xad},
+ {value: 0x0018, lo: 0xae, hi: 0xba},
+ {value: 0xb8a1, lo: 0xbb, hi: 0xbb},
+ {value: 0xb8e9, lo: 0xbc, hi: 0xbc},
+ {value: 0xb931, lo: 0xbd, hi: 0xbd},
+ {value: 0xb999, lo: 0xbe, hi: 0xbe},
+ {value: 0xba01, lo: 0xbf, hi: 0xbf},
+ // Block 0xf4, offset 0x74c
+ {value: 0x0000, lo: 0x03},
+ {value: 0xba69, lo: 0x80, hi: 0x80},
+ {value: 0x0018, lo: 0x81, hi: 0xa8},
+ {value: 0x0040, lo: 0xa9, hi: 0xbf},
+ // Block 0xf5, offset 0x750
+ {value: 0x0000, lo: 0x04},
+ {value: 0x0018, lo: 0x80, hi: 0x81},
+ {value: 0x3318, lo: 0x82, hi: 0x84},
+ {value: 0x0018, lo: 0x85, hi: 0x85},
+ {value: 0x0040, lo: 0x86, hi: 0xbf},
+ // Block 0xf6, offset 0x755
+ {value: 0x0000, lo: 0x03},
+ {value: 0x0040, lo: 0x80, hi: 0x9f},
+ {value: 0x0018, lo: 0xa0, hi: 0xb3},
+ {value: 0x0040, lo: 0xb4, hi: 0xbf},
+ // Block 0xf7, offset 0x759
+ {value: 0x0000, lo: 0x04},
+ {value: 0x0018, lo: 0x80, hi: 0x96},
+ {value: 0x0040, lo: 0x97, hi: 0x9f},
+ {value: 0x0018, lo: 0xa0, hi: 0xb8},
+ {value: 0x0040, lo: 0xb9, hi: 0xbf},
+ // Block 0xf8, offset 0x75e
+ {value: 0x0000, lo: 0x03},
+ {value: 0x3308, lo: 0x80, hi: 0xb6},
+ {value: 0x0018, lo: 0xb7, hi: 0xba},
+ {value: 0x3308, lo: 0xbb, hi: 0xbf},
+ // Block 0xf9, offset 0x762
+ {value: 0x0000, lo: 0x04},
+ {value: 0x3308, lo: 0x80, hi: 0xac},
+ {value: 0x0018, lo: 0xad, hi: 0xb4},
+ {value: 0x3308, lo: 0xb5, hi: 0xb5},
+ {value: 0x0018, lo: 0xb6, hi: 0xbf},
+ // Block 0xfa, offset 0x767
+ {value: 0x0000, lo: 0x08},
+ {value: 0x0018, lo: 0x80, hi: 0x83},
+ {value: 0x3308, lo: 0x84, hi: 0x84},
+ {value: 0x0018, lo: 0x85, hi: 0x8b},
+ {value: 0x0040, lo: 0x8c, hi: 0x9a},
+ {value: 0x3308, lo: 0x9b, hi: 0x9f},
+ {value: 0x0040, lo: 0xa0, hi: 0xa0},
+ {value: 0x3308, lo: 0xa1, hi: 0xaf},
+ {value: 0x0040, lo: 0xb0, hi: 0xbf},
+ // Block 0xfb, offset 0x770
+ {value: 0x0000, lo: 0x0a},
+ {value: 0x3308, lo: 0x80, hi: 0x86},
+ {value: 0x0040, lo: 0x87, hi: 0x87},
+ {value: 0x3308, lo: 0x88, hi: 0x98},
+ {value: 0x0040, lo: 0x99, hi: 0x9a},
+ {value: 0x3308, lo: 0x9b, hi: 0xa1},
+ {value: 0x0040, lo: 0xa2, hi: 0xa2},
+ {value: 0x3308, lo: 0xa3, hi: 0xa4},
+ {value: 0x0040, lo: 0xa5, hi: 0xa5},
+ {value: 0x3308, lo: 0xa6, hi: 0xaa},
+ {value: 0x0040, lo: 0xab, hi: 0xbf},
+ // Block 0xfc, offset 0x77b
+ {value: 0x0000, lo: 0x05},
+ {value: 0x0008, lo: 0x80, hi: 0xac},
+ {value: 0x0040, lo: 0xad, hi: 0xaf},
+ {value: 0x3308, lo: 0xb0, hi: 0xb6},
+ {value: 0x0008, lo: 0xb7, hi: 0xbd},
+ {value: 0x0040, lo: 0xbe, hi: 0xbf},
+ // Block 0xfd, offset 0x781
+ {value: 0x0000, lo: 0x05},
+ {value: 0x0008, lo: 0x80, hi: 0x89},
+ {value: 0x0040, lo: 0x8a, hi: 0x8d},
+ {value: 0x0008, lo: 0x8e, hi: 0x8e},
+ {value: 0x0018, lo: 0x8f, hi: 0x8f},
+ {value: 0x0040, lo: 0x90, hi: 0xbf},
+ // Block 0xfe, offset 0x787
+ {value: 0x0000, lo: 0x05},
+ {value: 0x0008, lo: 0x80, hi: 0xab},
+ {value: 0x3308, lo: 0xac, hi: 0xaf},
+ {value: 0x0008, lo: 0xb0, hi: 0xb9},
+ {value: 0x0040, lo: 0xba, hi: 0xbe},
+ {value: 0x0018, lo: 0xbf, hi: 0xbf},
+ // Block 0xff, offset 0x78d
+ {value: 0x0000, lo: 0x05},
+ {value: 0x0808, lo: 0x80, hi: 0x84},
+ {value: 0x0040, lo: 0x85, hi: 0x86},
+ {value: 0x0818, lo: 0x87, hi: 0x8f},
+ {value: 0x3308, lo: 0x90, hi: 0x96},
+ {value: 0x0040, lo: 0x97, hi: 0xbf},
+ // Block 0x100, offset 0x793
+ {value: 0x0000, lo: 0x08},
+ {value: 0x0a08, lo: 0x80, hi: 0x83},
+ {value: 0x3308, lo: 0x84, hi: 0x8a},
+ {value: 0x0b08, lo: 0x8b, hi: 0x8b},
+ {value: 0x0040, lo: 0x8c, hi: 0x8f},
+ {value: 0x0808, lo: 0x90, hi: 0x99},
+ {value: 0x0040, lo: 0x9a, hi: 0x9d},
+ {value: 0x0818, lo: 0x9e, hi: 0x9f},
+ {value: 0x0040, lo: 0xa0, hi: 0xbf},
+ // Block 0x101, offset 0x79c
+ {value: 0x0000, lo: 0x02},
+ {value: 0x0040, lo: 0x80, hi: 0xb0},
+ {value: 0x0818, lo: 0xb1, hi: 0xbf},
+ // Block 0x102, offset 0x79f
+ {value: 0x0000, lo: 0x02},
+ {value: 0x0818, lo: 0x80, hi: 0xb4},
+ {value: 0x0040, lo: 0xb5, hi: 0xbf},
+ // Block 0x103, offset 0x7a2
+ {value: 0x0000, lo: 0x03},
+ {value: 0x0040, lo: 0x80, hi: 0x80},
+ {value: 0x0818, lo: 0x81, hi: 0xbd},
+ {value: 0x0040, lo: 0xbe, hi: 0xbf},
+ // Block 0x104, offset 0x7a6
+ {value: 0x0000, lo: 0x03},
+ {value: 0x0040, lo: 0x80, hi: 0xaf},
+ {value: 0x0018, lo: 0xb0, hi: 0xb1},
+ {value: 0x0040, lo: 0xb2, hi: 0xbf},
+ // Block 0x105, offset 0x7aa
+ {value: 0x0000, lo: 0x03},
+ {value: 0x0018, lo: 0x80, hi: 0xab},
+ {value: 0x0040, lo: 0xac, hi: 0xaf},
+ {value: 0x0018, lo: 0xb0, hi: 0xbf},
+ // Block 0x106, offset 0x7ae
+ {value: 0x0000, lo: 0x05},
+ {value: 0x0018, lo: 0x80, hi: 0x93},
+ {value: 0x0040, lo: 0x94, hi: 0x9f},
+ {value: 0x0018, lo: 0xa0, hi: 0xae},
+ {value: 0x0040, lo: 0xaf, hi: 0xb0},
+ {value: 0x0018, lo: 0xb1, hi: 0xbf},
+ // Block 0x107, offset 0x7b4
+ {value: 0x0000, lo: 0x05},
+ {value: 0x0040, lo: 0x80, hi: 0x80},
+ {value: 0x0018, lo: 0x81, hi: 0x8f},
+ {value: 0x0040, lo: 0x90, hi: 0x90},
+ {value: 0x0018, lo: 0x91, hi: 0xb5},
+ {value: 0x0040, lo: 0xb6, hi: 0xbf},
+ // Block 0x108, offset 0x7ba
+ {value: 0x0000, lo: 0x04},
+ {value: 0x0018, lo: 0x80, hi: 0x8f},
+ {value: 0xc229, lo: 0x90, hi: 0x90},
+ {value: 0x0018, lo: 0x91, hi: 0xad},
+ {value: 0x0040, lo: 0xae, hi: 0xbf},
+ // Block 0x109, offset 0x7bf
+ {value: 0x0000, lo: 0x02},
+ {value: 0x0040, lo: 0x80, hi: 0xa5},
+ {value: 0x0018, lo: 0xa6, hi: 0xbf},
+ // Block 0x10a, offset 0x7c2
+ {value: 0x0000, lo: 0x0f},
+ {value: 0xc851, lo: 0x80, hi: 0x80},
+ {value: 0xc8a1, lo: 0x81, hi: 0x81},
+ {value: 0xc8f1, lo: 0x82, hi: 0x82},
+ {value: 0xc941, lo: 0x83, hi: 0x83},
+ {value: 0xc991, lo: 0x84, hi: 0x84},
+ {value: 0xc9e1, lo: 0x85, hi: 0x85},
+ {value: 0xca31, lo: 0x86, hi: 0x86},
+ {value: 0xca81, lo: 0x87, hi: 0x87},
+ {value: 0xcad1, lo: 0x88, hi: 0x88},
+ {value: 0x0040, lo: 0x89, hi: 0x8f},
+ {value: 0xcb21, lo: 0x90, hi: 0x90},
+ {value: 0xcb41, lo: 0x91, hi: 0x91},
+ {value: 0x0040, lo: 0x92, hi: 0x9f},
+ {value: 0x0018, lo: 0xa0, hi: 0xa5},
+ {value: 0x0040, lo: 0xa6, hi: 0xbf},
+ // Block 0x10b, offset 0x7d2
+ {value: 0x0000, lo: 0x06},
+ {value: 0x0018, lo: 0x80, hi: 0x97},
+ {value: 0x0040, lo: 0x98, hi: 0x9f},
+ {value: 0x0018, lo: 0xa0, hi: 0xac},
+ {value: 0x0040, lo: 0xad, hi: 0xaf},
+ {value: 0x0018, lo: 0xb0, hi: 0xbc},
+ {value: 0x0040, lo: 0xbd, hi: 0xbf},
+ // Block 0x10c, offset 0x7d9
+ {value: 0x0000, lo: 0x02},
+ {value: 0x0018, lo: 0x80, hi: 0xb3},
+ {value: 0x0040, lo: 0xb4, hi: 0xbf},
+ // Block 0x10d, offset 0x7dc
+ {value: 0x0000, lo: 0x04},
+ {value: 0x0018, lo: 0x80, hi: 0x98},
+ {value: 0x0040, lo: 0x99, hi: 0x9f},
+ {value: 0x0018, lo: 0xa0, hi: 0xab},
+ {value: 0x0040, lo: 0xac, hi: 0xbf},
+ // Block 0x10e, offset 0x7e1
+ {value: 0x0000, lo: 0x03},
+ {value: 0x0018, lo: 0x80, hi: 0x8b},
+ {value: 0x0040, lo: 0x8c, hi: 0x8f},
+ {value: 0x0018, lo: 0x90, hi: 0xbf},
+ // Block 0x10f, offset 0x7e5
+ {value: 0x0000, lo: 0x05},
+ {value: 0x0018, lo: 0x80, hi: 0x87},
+ {value: 0x0040, lo: 0x88, hi: 0x8f},
+ {value: 0x0018, lo: 0x90, hi: 0x99},
+ {value: 0x0040, lo: 0x9a, hi: 0x9f},
+ {value: 0x0018, lo: 0xa0, hi: 0xbf},
+ // Block 0x110, offset 0x7eb
+ {value: 0x0000, lo: 0x06},
+ {value: 0x0018, lo: 0x80, hi: 0x87},
+ {value: 0x0040, lo: 0x88, hi: 0x8f},
+ {value: 0x0018, lo: 0x90, hi: 0xad},
+ {value: 0x0040, lo: 0xae, hi: 0xaf},
+ {value: 0x0018, lo: 0xb0, hi: 0xb1},
+ {value: 0x0040, lo: 0xb2, hi: 0xbf},
+ // Block 0x111, offset 0x7f2
+ {value: 0x0000, lo: 0x03},
+ {value: 0x0018, lo: 0x80, hi: 0xb8},
+ {value: 0x0040, lo: 0xb9, hi: 0xb9},
+ {value: 0x0018, lo: 0xba, hi: 0xbf},
+ // Block 0x112, offset 0x7f6
+ {value: 0x0000, lo: 0x03},
+ {value: 0x0018, lo: 0x80, hi: 0x8b},
+ {value: 0x0040, lo: 0x8c, hi: 0x8c},
+ {value: 0x0018, lo: 0x8d, hi: 0xbf},
+ // Block 0x113, offset 0x7fa
+ {value: 0x0000, lo: 0x08},
+ {value: 0x0018, lo: 0x80, hi: 0x93},
+ {value: 0x0040, lo: 0x94, hi: 0x9f},
+ {value: 0x0018, lo: 0xa0, hi: 0xad},
+ {value: 0x0040, lo: 0xae, hi: 0xaf},
+ {value: 0x0018, lo: 0xb0, hi: 0xb4},
+ {value: 0x0040, lo: 0xb5, hi: 0xb7},
+ {value: 0x0018, lo: 0xb8, hi: 0xba},
+ {value: 0x0040, lo: 0xbb, hi: 0xbf},
+ // Block 0x114, offset 0x803
+ {value: 0x0000, lo: 0x06},
+ {value: 0x0018, lo: 0x80, hi: 0x86},
+ {value: 0x0040, lo: 0x87, hi: 0x8f},
+ {value: 0x0018, lo: 0x90, hi: 0xa8},
+ {value: 0x0040, lo: 0xa9, hi: 0xaf},
+ {value: 0x0018, lo: 0xb0, hi: 0xb6},
+ {value: 0x0040, lo: 0xb7, hi: 0xbf},
+ // Block 0x115, offset 0x80a
+ {value: 0x0000, lo: 0x04},
+ {value: 0x0018, lo: 0x80, hi: 0x82},
+ {value: 0x0040, lo: 0x83, hi: 0x8f},
+ {value: 0x0018, lo: 0x90, hi: 0x96},
+ {value: 0x0040, lo: 0x97, hi: 0xbf},
+ // Block 0x116, offset 0x80f
+ {value: 0x0000, lo: 0x03},
+ {value: 0x0018, lo: 0x80, hi: 0x92},
+ {value: 0x0040, lo: 0x93, hi: 0x93},
+ {value: 0x0018, lo: 0x94, hi: 0xbf},
+ // Block 0x117, offset 0x813
+ {value: 0x0000, lo: 0x0d},
+ {value: 0x0018, lo: 0x80, hi: 0x8a},
+ {value: 0x0040, lo: 0x8b, hi: 0xaf},
+ {value: 0x1f41, lo: 0xb0, hi: 0xb0},
+ {value: 0x00c9, lo: 0xb1, hi: 0xb1},
+ {value: 0x0069, lo: 0xb2, hi: 0xb2},
+ {value: 0x0079, lo: 0xb3, hi: 0xb3},
+ {value: 0x1f51, lo: 0xb4, hi: 0xb4},
+ {value: 0x1f61, lo: 0xb5, hi: 0xb5},
+ {value: 0x1f71, lo: 0xb6, hi: 0xb6},
+ {value: 0x1f81, lo: 0xb7, hi: 0xb7},
+ {value: 0x1f91, lo: 0xb8, hi: 0xb8},
+ {value: 0x1fa1, lo: 0xb9, hi: 0xb9},
+ {value: 0x0040, lo: 0xba, hi: 0xbf},
+ // Block 0x118, offset 0x821
+ {value: 0x0000, lo: 0x02},
+ {value: 0x0008, lo: 0x80, hi: 0x9d},
+ {value: 0x0040, lo: 0x9e, hi: 0xbf},
+ // Block 0x119, offset 0x824
+ {value: 0x0000, lo: 0x02},
+ {value: 0x0008, lo: 0x80, hi: 0xb4},
+ {value: 0x0040, lo: 0xb5, hi: 0xbf},
+ // Block 0x11a, offset 0x827
+ {value: 0x0000, lo: 0x03},
+ {value: 0x0008, lo: 0x80, hi: 0x9d},
+ {value: 0x0040, lo: 0x9e, hi: 0x9f},
+ {value: 0x0008, lo: 0xa0, hi: 0xbf},
+ // Block 0x11b, offset 0x82b
+ {value: 0x0000, lo: 0x03},
+ {value: 0x0008, lo: 0x80, hi: 0xa1},
+ {value: 0x0040, lo: 0xa2, hi: 0xaf},
+ {value: 0x0008, lo: 0xb0, hi: 0xbf},
+ // Block 0x11c, offset 0x82f
+ {value: 0x0000, lo: 0x02},
+ {value: 0x0008, lo: 0x80, hi: 0xa0},
+ {value: 0x0040, lo: 0xa1, hi: 0xbf},
+ // Block 0x11d, offset 0x832
+ {value: 0x0020, lo: 0x0f},
+ {value: 0xdf21, lo: 0x80, hi: 0x89},
+ {value: 0x8e35, lo: 0x8a, hi: 0x8a},
+ {value: 0xe061, lo: 0x8b, hi: 0x9c},
+ {value: 0x8e55, lo: 0x9d, hi: 0x9d},
+ {value: 0xe2a1, lo: 0x9e, hi: 0xa2},
+ {value: 0x8e75, lo: 0xa3, hi: 0xa3},
+ {value: 0xe341, lo: 0xa4, hi: 0xab},
+ {value: 0x7f0d, lo: 0xac, hi: 0xac},
+ {value: 0xe441, lo: 0xad, hi: 0xaf},
+ {value: 0x8e95, lo: 0xb0, hi: 0xb0},
+ {value: 0xe4a1, lo: 0xb1, hi: 0xb6},
+ {value: 0x8eb5, lo: 0xb7, hi: 0xb9},
+ {value: 0xe561, lo: 0xba, hi: 0xba},
+ {value: 0x8f15, lo: 0xbb, hi: 0xbb},
+ {value: 0xe581, lo: 0xbc, hi: 0xbf},
+ // Block 0x11e, offset 0x842
+ {value: 0x0020, lo: 0x10},
+ {value: 0x93b5, lo: 0x80, hi: 0x80},
+ {value: 0xf101, lo: 0x81, hi: 0x86},
+ {value: 0x93d5, lo: 0x87, hi: 0x8a},
+ {value: 0xda61, lo: 0x8b, hi: 0x8b},
+ {value: 0xf1c1, lo: 0x8c, hi: 0x96},
+ {value: 0x9455, lo: 0x97, hi: 0x97},
+ {value: 0xf321, lo: 0x98, hi: 0xa3},
+ {value: 0x9475, lo: 0xa4, hi: 0xa6},
+ {value: 0xf4a1, lo: 0xa7, hi: 0xaa},
+ {value: 0x94d5, lo: 0xab, hi: 0xab},
+ {value: 0xf521, lo: 0xac, hi: 0xac},
+ {value: 0x94f5, lo: 0xad, hi: 0xad},
+ {value: 0xf541, lo: 0xae, hi: 0xaf},
+ {value: 0x9515, lo: 0xb0, hi: 0xb1},
+ {value: 0xf581, lo: 0xb2, hi: 0xbe},
+ {value: 0x2040, lo: 0xbf, hi: 0xbf},
+ // Block 0x11f, offset 0x853
+ {value: 0x0000, lo: 0x02},
+ {value: 0x0008, lo: 0x80, hi: 0x8a},
+ {value: 0x0040, lo: 0x8b, hi: 0xbf},
+ // Block 0x120, offset 0x856
+ {value: 0x0000, lo: 0x04},
+ {value: 0x0040, lo: 0x80, hi: 0x80},
+ {value: 0x0340, lo: 0x81, hi: 0x81},
+ {value: 0x0040, lo: 0x82, hi: 0x9f},
+ {value: 0x0340, lo: 0xa0, hi: 0xbf},
+ // Block 0x121, offset 0x85b
+ {value: 0x0000, lo: 0x01},
+ {value: 0x0340, lo: 0x80, hi: 0xbf},
+ // Block 0x122, offset 0x85d
+ {value: 0x0000, lo: 0x01},
+ {value: 0x33c0, lo: 0x80, hi: 0xbf},
+ // Block 0x123, offset 0x85f
+ {value: 0x0000, lo: 0x02},
+ {value: 0x33c0, lo: 0x80, hi: 0xaf},
+ {value: 0x0040, lo: 0xb0, hi: 0xbf},
+}
+
+// Total table size 43370 bytes (42KiB); checksum: EBD909C0
diff --git a/vendor/golang.org/x/sys/cpu/BUILD.bazel b/vendor/golang.org/x/sys/cpu/BUILD.bazel
index feee3b95..b1ab857d 100644
--- a/vendor/golang.org/x/sys/cpu/BUILD.bazel
+++ b/vendor/golang.org/x/sys/cpu/BUILD.bazel
@@ -21,11 +21,16 @@ go_library(
"cpu_linux_s390x.go",
"cpu_mips64x.go",
"cpu_mipsx.go",
+ "cpu_other_arm.go",
"cpu_other_arm64.go",
+ "cpu_ppc64x.go",
+ "cpu_s390x.go",
"cpu_s390x.s",
"cpu_wasm.go",
"cpu_x86.go",
"cpu_x86.s",
+ "cpu_zos.go",
+ "cpu_zos_s390x.go",
"hwcap_linux.go",
],
importmap = "kope.io/etcd-manager/vendor/golang.org/x/sys/cpu",
diff --git a/vendor/golang.org/x/sys/cpu/asm_aix_ppc64.s b/vendor/golang.org/x/sys/cpu/asm_aix_ppc64.s
index 06f84b85..6b4027b3 100644
--- a/vendor/golang.org/x/sys/cpu/asm_aix_ppc64.s
+++ b/vendor/golang.org/x/sys/cpu/asm_aix_ppc64.s
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build !gccgo
+// +build gc
#include "textflag.h"
diff --git a/vendor/golang.org/x/sys/cpu/cpu.go b/vendor/golang.org/x/sys/cpu/cpu.go
index e44deb75..f77701fe 100644
--- a/vendor/golang.org/x/sys/cpu/cpu.go
+++ b/vendor/golang.org/x/sys/cpu/cpu.go
@@ -6,6 +6,11 @@
// various CPU architectures.
package cpu
+import (
+ "os"
+ "strings"
+)
+
// Initialized reports whether the CPU features were initialized.
//
// For some GOOS/GOARCH combinations initialization of the CPU features depends
@@ -24,26 +29,46 @@ type CacheLinePad struct{ _ [cacheLineSize]byte }
// and HasAVX2 are only set if the OS supports XMM and YMM
// registers in addition to the CPUID feature bit being set.
var X86 struct {
- _ CacheLinePad
- HasAES bool // AES hardware implementation (AES NI)
- HasADX bool // Multi-precision add-carry instruction extensions
- HasAVX bool // Advanced vector extension
- HasAVX2 bool // Advanced vector extension 2
- HasBMI1 bool // Bit manipulation instruction set 1
- HasBMI2 bool // Bit manipulation instruction set 2
- HasERMS bool // Enhanced REP for MOVSB and STOSB
- HasFMA bool // Fused-multiply-add instructions
- HasOSXSAVE bool // OS supports XSAVE/XRESTOR for saving/restoring XMM registers.
- HasPCLMULQDQ bool // PCLMULQDQ instruction - most often used for AES-GCM
- HasPOPCNT bool // Hamming weight instruction POPCNT.
- HasRDRAND bool // RDRAND instruction (on-chip random number generator)
- HasRDSEED bool // RDSEED instruction (on-chip random number generator)
- HasSSE2 bool // Streaming SIMD extension 2 (always available on amd64)
- HasSSE3 bool // Streaming SIMD extension 3
- HasSSSE3 bool // Supplemental streaming SIMD extension 3
- HasSSE41 bool // Streaming SIMD extension 4 and 4.1
- HasSSE42 bool // Streaming SIMD extension 4 and 4.2
- _ CacheLinePad
+ _ CacheLinePad
+ HasAES bool // AES hardware implementation (AES NI)
+ HasADX bool // Multi-precision add-carry instruction extensions
+ HasAVX bool // Advanced vector extension
+ HasAVX2 bool // Advanced vector extension 2
+ HasAVX512 bool // Advanced vector extension 512
+ HasAVX512F bool // Advanced vector extension 512 Foundation Instructions
+ HasAVX512CD bool // Advanced vector extension 512 Conflict Detection Instructions
+ HasAVX512ER bool // Advanced vector extension 512 Exponential and Reciprocal Instructions
+ HasAVX512PF bool // Advanced vector extension 512 Prefetch Instructions Instructions
+ HasAVX512VL bool // Advanced vector extension 512 Vector Length Extensions
+ HasAVX512BW bool // Advanced vector extension 512 Byte and Word Instructions
+ HasAVX512DQ bool // Advanced vector extension 512 Doubleword and Quadword Instructions
+ HasAVX512IFMA bool // Advanced vector extension 512 Integer Fused Multiply Add
+ HasAVX512VBMI bool // Advanced vector extension 512 Vector Byte Manipulation Instructions
+ HasAVX5124VNNIW bool // Advanced vector extension 512 Vector Neural Network Instructions Word variable precision
+ HasAVX5124FMAPS bool // Advanced vector extension 512 Fused Multiply Accumulation Packed Single precision
+ HasAVX512VPOPCNTDQ bool // Advanced vector extension 512 Double and quad word population count instructions
+ HasAVX512VPCLMULQDQ bool // Advanced vector extension 512 Vector carry-less multiply operations
+ HasAVX512VNNI bool // Advanced vector extension 512 Vector Neural Network Instructions
+ HasAVX512GFNI bool // Advanced vector extension 512 Galois field New Instructions
+ HasAVX512VAES bool // Advanced vector extension 512 Vector AES instructions
+ HasAVX512VBMI2 bool // Advanced vector extension 512 Vector Byte Manipulation Instructions 2
+ HasAVX512BITALG bool // Advanced vector extension 512 Bit Algorithms
+ HasAVX512BF16 bool // Advanced vector extension 512 BFloat16 Instructions
+ HasBMI1 bool // Bit manipulation instruction set 1
+ HasBMI2 bool // Bit manipulation instruction set 2
+ HasERMS bool // Enhanced REP for MOVSB and STOSB
+ HasFMA bool // Fused-multiply-add instructions
+ HasOSXSAVE bool // OS supports XSAVE/XRESTOR for saving/restoring XMM registers.
+ HasPCLMULQDQ bool // PCLMULQDQ instruction - most often used for AES-GCM
+ HasPOPCNT bool // Hamming weight instruction POPCNT.
+ HasRDRAND bool // RDRAND instruction (on-chip random number generator)
+ HasRDSEED bool // RDSEED instruction (on-chip random number generator)
+ HasSSE2 bool // Streaming SIMD extension 2 (always available on amd64)
+ HasSSE3 bool // Streaming SIMD extension 3
+ HasSSSE3 bool // Supplemental streaming SIMD extension 3
+ HasSSE41 bool // Streaming SIMD extension 4 and 4.1
+ HasSSE42 bool // Streaming SIMD extension 4 and 4.2
+ _ CacheLinePad
}
// ARM64 contains the supported CPU features of the
@@ -169,3 +194,94 @@ var S390X struct {
HasVXE bool // vector-enhancements facility 1
_ CacheLinePad
}
+
+func init() {
+ archInit()
+ initOptions()
+ processOptions()
+}
+
+// options contains the cpu debug options that can be used in GODEBUG.
+// Options are arch dependent and are added by the arch specific initOptions functions.
+// Features that are mandatory for the specific GOARCH should have the Required field set
+// (e.g. SSE2 on amd64).
+var options []option
+
+// Option names should be lower case. e.g. avx instead of AVX.
+type option struct {
+ Name string
+ Feature *bool
+ Specified bool // whether feature value was specified in GODEBUG
+ Enable bool // whether feature should be enabled
+ Required bool // whether feature is mandatory and can not be disabled
+}
+
+func processOptions() {
+ env := os.Getenv("GODEBUG")
+field:
+ for env != "" {
+ field := ""
+ i := strings.IndexByte(env, ',')
+ if i < 0 {
+ field, env = env, ""
+ } else {
+ field, env = env[:i], env[i+1:]
+ }
+ if len(field) < 4 || field[:4] != "cpu." {
+ continue
+ }
+ i = strings.IndexByte(field, '=')
+ if i < 0 {
+ print("GODEBUG sys/cpu: no value specified for \"", field, "\"\n")
+ continue
+ }
+ key, value := field[4:i], field[i+1:] // e.g. "SSE2", "on"
+
+ var enable bool
+ switch value {
+ case "on":
+ enable = true
+ case "off":
+ enable = false
+ default:
+ print("GODEBUG sys/cpu: value \"", value, "\" not supported for cpu option \"", key, "\"\n")
+ continue field
+ }
+
+ if key == "all" {
+ for i := range options {
+ options[i].Specified = true
+ options[i].Enable = enable || options[i].Required
+ }
+ continue field
+ }
+
+ for i := range options {
+ if options[i].Name == key {
+ options[i].Specified = true
+ options[i].Enable = enable
+ continue field
+ }
+ }
+
+ print("GODEBUG sys/cpu: unknown cpu feature \"", key, "\"\n")
+ }
+
+ for _, o := range options {
+ if !o.Specified {
+ continue
+ }
+
+ if o.Enable && !*o.Feature {
+ print("GODEBUG sys/cpu: can not enable \"", o.Name, "\", missing CPU support\n")
+ continue
+ }
+
+ if !o.Enable && o.Required {
+ print("GODEBUG sys/cpu: can not disable \"", o.Name, "\", required CPU feature\n")
+ continue
+ }
+
+ *o.Feature = o.Enable
+ }
+}
diff --git a/vendor/golang.org/x/sys/cpu/cpu_aix.go b/vendor/golang.org/x/sys/cpu/cpu_aix.go
index da298966..464a209c 100644
--- a/vendor/golang.org/x/sys/cpu/cpu_aix.go
+++ b/vendor/golang.org/x/sys/cpu/cpu_aix.go
@@ -6,8 +6,6 @@
package cpu
-const cacheLineSize = 128
-
const (
// getsystemcfg constants
_SC_IMPL = 2
@@ -15,7 +13,7 @@ const (
_IMPL_POWER9 = 0x20000
)
-func init() {
+func archInit() {
impl := getsystemcfg(_SC_IMPL)
if impl&_IMPL_POWER8 != 0 {
PPC64.IsPOWER8 = true
diff --git a/vendor/golang.org/x/sys/cpu/cpu_arm.go b/vendor/golang.org/x/sys/cpu/cpu_arm.go
index 981af681..301b752e 100644
--- a/vendor/golang.org/x/sys/cpu/cpu_arm.go
+++ b/vendor/golang.org/x/sys/cpu/cpu_arm.go
@@ -38,3 +38,36 @@ const (
hwcap2_SHA2 = 1 << 3
hwcap2_CRC32 = 1 << 4
)
+
+func initOptions() {
+ options = []option{
+ {Name: "pmull", Feature: &ARM.HasPMULL},
+ {Name: "sha1", Feature: &ARM.HasSHA1},
+ {Name: "sha2", Feature: &ARM.HasSHA2},
+ {Name: "swp", Feature: &ARM.HasSWP},
+ {Name: "thumb", Feature: &ARM.HasTHUMB},
+ {Name: "thumbee", Feature: &ARM.HasTHUMBEE},
+ {Name: "tls", Feature: &ARM.HasTLS},
+ {Name: "vfp", Feature: &ARM.HasVFP},
+ {Name: "vfpd32", Feature: &ARM.HasVFPD32},
+ {Name: "vfpv3", Feature: &ARM.HasVFPv3},
+ {Name: "vfpv3d16", Feature: &ARM.HasVFPv3D16},
+ {Name: "vfpv4", Feature: &ARM.HasVFPv4},
+ {Name: "half", Feature: &ARM.HasHALF},
+ {Name: "26bit", Feature: &ARM.Has26BIT},
+ {Name: "fastmul", Feature: &ARM.HasFASTMUL},
+ {Name: "fpa", Feature: &ARM.HasFPA},
+ {Name: "edsp", Feature: &ARM.HasEDSP},
+ {Name: "java", Feature: &ARM.HasJAVA},
+ {Name: "iwmmxt", Feature: &ARM.HasIWMMXT},
+ {Name: "crunch", Feature: &ARM.HasCRUNCH},
+ {Name: "neon", Feature: &ARM.HasNEON},
+ {Name: "idivt", Feature: &ARM.HasIDIVT},
+ {Name: "idiva", Feature: &ARM.HasIDIVA},
+ {Name: "lpae", Feature: &ARM.HasLPAE},
+ {Name: "evtstrm", Feature: &ARM.HasEVTSTRM},
+ {Name: "aes", Feature: &ARM.HasAES},
+ {Name: "crc32", Feature: &ARM.HasCRC32},
+ }
+
+}
diff --git a/vendor/golang.org/x/sys/cpu/cpu_arm64.go b/vendor/golang.org/x/sys/cpu/cpu_arm64.go
index 7bcb36c7..87dd5e30 100644
--- a/vendor/golang.org/x/sys/cpu/cpu_arm64.go
+++ b/vendor/golang.org/x/sys/cpu/cpu_arm64.go
@@ -8,33 +8,65 @@ import "runtime"
const cacheLineSize = 64
-func init() {
+func initOptions() {
+ options = []option{
+ {Name: "fp", Feature: &ARM64.HasFP},
+ {Name: "asimd", Feature: &ARM64.HasASIMD},
+ {Name: "evstrm", Feature: &ARM64.HasEVTSTRM},
+ {Name: "aes", Feature: &ARM64.HasAES},
+ {Name: "fphp", Feature: &ARM64.HasFPHP},
+ {Name: "jscvt", Feature: &ARM64.HasJSCVT},
+ {Name: "lrcpc", Feature: &ARM64.HasLRCPC},
+ {Name: "pmull", Feature: &ARM64.HasPMULL},
+ {Name: "sha1", Feature: &ARM64.HasSHA1},
+ {Name: "sha2", Feature: &ARM64.HasSHA2},
+ {Name: "sha3", Feature: &ARM64.HasSHA3},
+ {Name: "sha512", Feature: &ARM64.HasSHA512},
+ {Name: "sm3", Feature: &ARM64.HasSM3},
+ {Name: "sm4", Feature: &ARM64.HasSM4},
+ {Name: "sve", Feature: &ARM64.HasSVE},
+ {Name: "crc32", Feature: &ARM64.HasCRC32},
+ {Name: "atomics", Feature: &ARM64.HasATOMICS},
+ {Name: "asimdhp", Feature: &ARM64.HasASIMDHP},
+ {Name: "cpuid", Feature: &ARM64.HasCPUID},
+ {Name: "asimrdm", Feature: &ARM64.HasASIMDRDM},
+ {Name: "fcma", Feature: &ARM64.HasFCMA},
+ {Name: "dcpop", Feature: &ARM64.HasDCPOP},
+ {Name: "asimddp", Feature: &ARM64.HasASIMDDP},
+ {Name: "asimdfhm", Feature: &ARM64.HasASIMDFHM},
+ }
+}
+
+func archInit() {
switch runtime.GOOS {
- case "android", "darwin", "netbsd":
- // Android and iOS don't seem to allow reading these registers.
- //
- // NetBSD:
- // ID_AA64ISAR0_EL1 is a privileged register and cannot be read from EL0.
- // It can be read via sysctl(3). Example for future implementers:
- // https://nxr.netbsd.org/xref/src/usr.sbin/cpuctl/arch/aarch64.c
- //
- // Fake the minimal features expected by
- // TestARM64minimalFeatures.
- ARM64.HasASIMD = true
- ARM64.HasFP = true
- case "linux":
+ case "freebsd":
+ readARM64Registers()
+ case "linux", "netbsd":
doinit()
default:
- readARM64Registers()
+ // Most platforms don't seem to allow reading these registers.
+ //
+ // OpenBSD:
+ // See https://golang.org/issue/31746
+ setMinimalFeatures()
}
}
+// setMinimalFeatures fakes the minimal ARM64 features expected by
+// TestARM64minimalFeatures.
+func setMinimalFeatures() {
+ ARM64.HasASIMD = true
+ ARM64.HasFP = true
+}
+
func readARM64Registers() {
Initialized = true
- // ID_AA64ISAR0_EL1
- isar0 := getisar0()
+ parseARM64SystemRegisters(getisar0(), getisar1(), getpfr0())
+}
+func parseARM64SystemRegisters(isar0, isar1, pfr0 uint64) {
+ // ID_AA64ISAR0_EL1
switch extractBits(isar0, 4, 7) {
case 1:
ARM64.HasAES = true
@@ -92,8 +124,6 @@ func readARM64Registers() {
}
// ID_AA64ISAR1_EL1
- isar1 := getisar1()
-
switch extractBits(isar1, 0, 3) {
case 1:
ARM64.HasDCPOP = true
@@ -115,8 +145,6 @@ func readARM64Registers() {
}
// ID_AA64PFR0_EL1
- pfr0 := getpfr0()
-
switch extractBits(pfr0, 16, 19) {
case 0:
ARM64.HasFP = true
diff --git a/vendor/golang.org/x/sys/cpu/cpu_arm64.s b/vendor/golang.org/x/sys/cpu/cpu_arm64.s
index a54436e3..cfc08c97 100644
--- a/vendor/golang.org/x/sys/cpu/cpu_arm64.s
+++ b/vendor/golang.org/x/sys/cpu/cpu_arm64.s
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build !gccgo
+// +build gc
#include "textflag.h"
diff --git a/vendor/golang.org/x/sys/cpu/cpu_gc_arm64.go b/vendor/golang.org/x/sys/cpu/cpu_gc_arm64.go
index 7b88e865..7f7f272a 100644
--- a/vendor/golang.org/x/sys/cpu/cpu_gc_arm64.go
+++ b/vendor/golang.org/x/sys/cpu/cpu_gc_arm64.go
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build !gccgo
+// +build gc
package cpu
diff --git a/vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go b/vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go
index 568bcd03..75a95566 100644
--- a/vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go
+++ b/vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build !gccgo
+// +build gc
package cpu
diff --git a/vendor/golang.org/x/sys/cpu/cpu_gc_x86.go b/vendor/golang.org/x/sys/cpu/cpu_gc_x86.go
index f7cb4697..4adb89cf 100644
--- a/vendor/golang.org/x/sys/cpu/cpu_gc_x86.go
+++ b/vendor/golang.org/x/sys/cpu/cpu_gc_x86.go
@@ -3,7 +3,7 @@
// license that can be found in the LICENSE file.
// +build 386 amd64 amd64p32
-// +build !gccgo
+// +build gc
package cpu
diff --git a/vendor/golang.org/x/sys/cpu/cpu_linux.go b/vendor/golang.org/x/sys/cpu/cpu_linux.go
index fe139182..6fc874f7 100644
--- a/vendor/golang.org/x/sys/cpu/cpu_linux.go
+++ b/vendor/golang.org/x/sys/cpu/cpu_linux.go
@@ -6,7 +6,7 @@
package cpu
-func init() {
+func archInit() {
if err := readHWCAP(); err != nil {
return
}
diff --git a/vendor/golang.org/x/sys/cpu/cpu_linux_mips64x.go b/vendor/golang.org/x/sys/cpu/cpu_linux_mips64x.go
index eb24e507..5a418900 100644
--- a/vendor/golang.org/x/sys/cpu/cpu_linux_mips64x.go
+++ b/vendor/golang.org/x/sys/cpu/cpu_linux_mips64x.go
@@ -2,6 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
+// +build linux
// +build mips64 mips64le
package cpu
diff --git a/vendor/golang.org/x/sys/cpu/cpu_linux_ppc64x.go b/vendor/golang.org/x/sys/cpu/cpu_linux_ppc64x.go
index 6c8d975d..99f8a639 100644
--- a/vendor/golang.org/x/sys/cpu/cpu_linux_ppc64x.go
+++ b/vendor/golang.org/x/sys/cpu/cpu_linux_ppc64x.go
@@ -7,8 +7,6 @@
package cpu
-const cacheLineSize = 128
-
// HWCAP/HWCAP2 bits. These are exposed by the kernel.
const (
// ISA Level
diff --git a/vendor/golang.org/x/sys/cpu/cpu_linux_s390x.go b/vendor/golang.org/x/sys/cpu/cpu_linux_s390x.go
index d579eaef..1517ac61 100644
--- a/vendor/golang.org/x/sys/cpu/cpu_linux_s390x.go
+++ b/vendor/golang.org/x/sys/cpu/cpu_linux_s390x.go
@@ -4,8 +4,6 @@
package cpu
-const cacheLineSize = 256
-
const (
// bit mask values from /usr/include/bits/hwcap.h
hwcap_ZARCH = 2
@@ -19,86 +17,7 @@ const (
hwcap_VXE = 8192
)
-// bitIsSet reports whether the bit at index is set. The bit index
-// is in big endian order, so bit index 0 is the leftmost bit.
-func bitIsSet(bits []uint64, index uint) bool {
- return bits[index/64]&((1<<63)>>(index%64)) != 0
-}
-
-// function is the code for the named cryptographic function.
-type function uint8
-
-const (
- // KM{,A,C,CTR} function codes
- aes128 function = 18 // AES-128
- aes192 function = 19 // AES-192
- aes256 function = 20 // AES-256
-
- // K{I,L}MD function codes
- sha1 function = 1 // SHA-1
- sha256 function = 2 // SHA-256
- sha512 function = 3 // SHA-512
- sha3_224 function = 32 // SHA3-224
- sha3_256 function = 33 // SHA3-256
- sha3_384 function = 34 // SHA3-384
- sha3_512 function = 35 // SHA3-512
- shake128 function = 36 // SHAKE-128
- shake256 function = 37 // SHAKE-256
-
- // KLMD function codes
- ghash function = 65 // GHASH
-)
-
-// queryResult contains the result of a Query function
-// call. Bits are numbered in big endian order so the
-// leftmost bit (the MSB) is at index 0.
-type queryResult struct {
- bits [2]uint64
-}
-
-// Has reports whether the given functions are present.
-func (q *queryResult) Has(fns ...function) bool {
- if len(fns) == 0 {
- panic("no function codes provided")
- }
- for _, f := range fns {
- if !bitIsSet(q.bits[:], uint(f)) {
- return false
- }
- }
- return true
-}
-
-// facility is a bit index for the named facility.
-type facility uint8
-
-const (
- // cryptography facilities
- msa4 facility = 77 // message-security-assist extension 4
- msa8 facility = 146 // message-security-assist extension 8
-)
-
-// facilityList contains the result of an STFLE call.
-// Bits are numbered in big endian order so the
-// leftmost bit (the MSB) is at index 0.
-type facilityList struct {
- bits [4]uint64
-}
-
-// Has reports whether the given facilities are present.
-func (s *facilityList) Has(fs ...facility) bool {
- if len(fs) == 0 {
- panic("no facility bits provided")
- }
- for _, f := range fs {
- if !bitIsSet(s.bits[:], uint(f)) {
- return false
- }
- }
- return true
-}
-
-func doinit() {
+func initS390Xbase() {
// test HWCAP bit vector
has := func(featureMask uint) bool {
return hwCap&featureMask == featureMask
@@ -118,44 +37,4 @@ func doinit() {
if S390X.HasVX {
S390X.HasVXE = has(hwcap_VXE)
}
-
- // We need implementations of stfle, km and so on
- // to detect cryptographic features.
- if !haveAsmFunctions() {
- return
- }
-
- // optional cryptographic functions
- if S390X.HasMSA {
- aes := []function{aes128, aes192, aes256}
-
- // cipher message
- km, kmc := kmQuery(), kmcQuery()
- S390X.HasAES = km.Has(aes...)
- S390X.HasAESCBC = kmc.Has(aes...)
- if S390X.HasSTFLE {
- facilities := stfle()
- if facilities.Has(msa4) {
- kmctr := kmctrQuery()
- S390X.HasAESCTR = kmctr.Has(aes...)
- }
- if facilities.Has(msa8) {
- kma := kmaQuery()
- S390X.HasAESGCM = kma.Has(aes...)
- }
- }
-
- // compute message digest
- kimd := kimdQuery() // intermediate (no padding)
- klmd := klmdQuery() // last (padding)
- S390X.HasSHA1 = kimd.Has(sha1) && klmd.Has(sha1)
- S390X.HasSHA256 = kimd.Has(sha256) && klmd.Has(sha256)
- S390X.HasSHA512 = kimd.Has(sha512) && klmd.Has(sha512)
- S390X.HasGHASH = kimd.Has(ghash) // KLMD-GHASH does not exist
- sha3 := []function{
- sha3_224, sha3_256, sha3_384, sha3_512,
- shake128, shake256,
- }
- S390X.HasSHA3 = kimd.Has(sha3...) && klmd.Has(sha3...)
- }
}
diff --git a/vendor/golang.org/x/sys/cpu/cpu_mips64x.go b/vendor/golang.org/x/sys/cpu/cpu_mips64x.go
index 6165f121..57b5b677 100644
--- a/vendor/golang.org/x/sys/cpu/cpu_mips64x.go
+++ b/vendor/golang.org/x/sys/cpu/cpu_mips64x.go
@@ -7,3 +7,9 @@
package cpu
const cacheLineSize = 32
+
+func initOptions() {
+ options = []option{
+ {Name: "msa", Feature: &MIPS64X.HasMSA},
+ }
+}
diff --git a/vendor/golang.org/x/sys/cpu/cpu_mipsx.go b/vendor/golang.org/x/sys/cpu/cpu_mipsx.go
index 1269eee8..cfc1946b 100644
--- a/vendor/golang.org/x/sys/cpu/cpu_mipsx.go
+++ b/vendor/golang.org/x/sys/cpu/cpu_mipsx.go
@@ -7,3 +7,5 @@
package cpu
const cacheLineSize = 32
+
+func initOptions() {}
diff --git a/vendor/golang.org/x/sys/cpu/cpu_netbsd_arm64.go b/vendor/golang.org/x/sys/cpu/cpu_netbsd_arm64.go
new file mode 100644
index 00000000..ebfb3fc8
--- /dev/null
+++ b/vendor/golang.org/x/sys/cpu/cpu_netbsd_arm64.go
@@ -0,0 +1,173 @@
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package cpu
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+// Minimal copy of functionality from x/sys/unix so the cpu package can call
+// sysctl without depending on x/sys/unix.
+
+const (
+ _CTL_QUERY = -2
+
+ _SYSCTL_VERS_1 = 0x1000000
+)
+
+var _zero uintptr
+
+func sysctl(mib []int32, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
+ var _p0 unsafe.Pointer
+ if len(mib) > 0 {
+ _p0 = unsafe.Pointer(&mib[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, errno := syscall.Syscall6(
+ syscall.SYS___SYSCTL,
+ uintptr(_p0),
+ uintptr(len(mib)),
+ uintptr(unsafe.Pointer(old)),
+ uintptr(unsafe.Pointer(oldlen)),
+ uintptr(unsafe.Pointer(new)),
+ uintptr(newlen))
+ if errno != 0 {
+ return errno
+ }
+ return nil
+}
+
+type sysctlNode struct {
+ Flags uint32
+ Num int32
+ Name [32]int8
+ Ver uint32
+ __rsvd uint32
+ Un [16]byte
+ _sysctl_size [8]byte
+ _sysctl_func [8]byte
+ _sysctl_parent [8]byte
+ _sysctl_desc [8]byte
+}
+
+func sysctlNodes(mib []int32) ([]sysctlNode, error) {
+ var olen uintptr
+
+ // Get a list of all sysctl nodes below the given MIB by performing
+ // a sysctl for the given MIB with CTL_QUERY appended.
+ mib = append(mib, _CTL_QUERY)
+ qnode := sysctlNode{Flags: _SYSCTL_VERS_1}
+ qp := (*byte)(unsafe.Pointer(&qnode))
+ sz := unsafe.Sizeof(qnode)
+ if err := sysctl(mib, nil, &olen, qp, sz); err != nil {
+ return nil, err
+ }
+
+ // Now that we know the size, get the actual nodes.
+ nodes := make([]sysctlNode, olen/sz)
+ np := (*byte)(unsafe.Pointer(&nodes[0]))
+ if err := sysctl(mib, np, &olen, qp, sz); err != nil {
+ return nil, err
+ }
+
+ return nodes, nil
+}
+
+func nametomib(name string) ([]int32, error) {
+ // Split name into components.
+ var parts []string
+ last := 0
+ for i := 0; i < len(name); i++ {
+ if name[i] == '.' {
+ parts = append(parts, name[last:i])
+ last = i + 1
+ }
+ }
+ parts = append(parts, name[last:])
+
+ mib := []int32{}
+ // Discover the nodes and construct the MIB OID.
+ for partno, part := range parts {
+ nodes, err := sysctlNodes(mib)
+ if err != nil {
+ return nil, err
+ }
+ for _, node := range nodes {
+ n := make([]byte, 0)
+ for i := range node.Name {
+ if node.Name[i] != 0 {
+ n = append(n, byte(node.Name[i]))
+ }
+ }
+ if string(n) == part {
+ mib = append(mib, int32(node.Num))
+ break
+ }
+ }
+ if len(mib) != partno+1 {
+ return nil, err
+ }
+ }
+
+ return mib, nil
+}
+
+// aarch64SysctlCPUID is struct aarch64_sysctl_cpu_id from NetBSD's
+type aarch64SysctlCPUID struct {
+ midr uint64 /* Main ID Register */
+ revidr uint64 /* Revision ID Register */
+ mpidr uint64 /* Multiprocessor Affinity Register */
+ aa64dfr0 uint64 /* A64 Debug Feature Register 0 */
+ aa64dfr1 uint64 /* A64 Debug Feature Register 1 */
+ aa64isar0 uint64 /* A64 Instruction Set Attribute Register 0 */
+ aa64isar1 uint64 /* A64 Instruction Set Attribute Register 1 */
+ aa64mmfr0 uint64 /* A64 Memory Model Feature Register 0 */
+ aa64mmfr1 uint64 /* A64 Memory Model Feature Register 1 */
+ aa64mmfr2 uint64 /* A64 Memory Model Feature Register 2 */
+ aa64pfr0 uint64 /* A64 Processor Feature Register 0 */
+ aa64pfr1 uint64 /* A64 Processor Feature Register 1 */
+ aa64zfr0 uint64 /* A64 SVE Feature ID Register 0 */
+ mvfr0 uint32 /* Media and VFP Feature Register 0 */
+ mvfr1 uint32 /* Media and VFP Feature Register 1 */
+ mvfr2 uint32 /* Media and VFP Feature Register 2 */
+ pad uint32
+ clidr uint64 /* Cache Level ID Register */
+ ctr uint64 /* Cache Type Register */
+}
+
+func sysctlCPUID(name string) (*aarch64SysctlCPUID, error) {
+ mib, err := nametomib(name)
+ if err != nil {
+ return nil, err
+ }
+
+ out := aarch64SysctlCPUID{}
+ n := unsafe.Sizeof(out)
+ _, _, errno := syscall.Syscall6(
+ syscall.SYS___SYSCTL,
+ uintptr(unsafe.Pointer(&mib[0])),
+ uintptr(len(mib)),
+ uintptr(unsafe.Pointer(&out)),
+ uintptr(unsafe.Pointer(&n)),
+ uintptr(0),
+ uintptr(0))
+ if errno != 0 {
+ return nil, errno
+ }
+ return &out, nil
+}
+
+func doinit() {
+ cpuid, err := sysctlCPUID("machdep.cpu0.cpu_id")
+ if err != nil {
+ setMinimalFeatures()
+ return
+ }
+ parseARM64SystemRegisters(cpuid.aa64isar0, cpuid.aa64isar1, cpuid.aa64pfr0)
+
+ Initialized = true
+}
diff --git a/vendor/golang.org/x/sys/cpu/cpu_other_arm.go b/vendor/golang.org/x/sys/cpu/cpu_other_arm.go
new file mode 100644
index 00000000..b412efc1
--- /dev/null
+++ b/vendor/golang.org/x/sys/cpu/cpu_other_arm.go
@@ -0,0 +1,9 @@
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !linux,arm
+
+package cpu
+
+func archInit() {}
diff --git a/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go b/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go
index 3ffc4afa..16c1c409 100644
--- a/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go
+++ b/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go
@@ -2,7 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build !linux,arm64
+// +build !linux,!netbsd
+// +build arm64
package cpu
diff --git a/vendor/golang.org/x/sys/cpu/cpu_other_mips64x.go b/vendor/golang.org/x/sys/cpu/cpu_other_mips64x.go
new file mode 100644
index 00000000..f49fad67
--- /dev/null
+++ b/vendor/golang.org/x/sys/cpu/cpu_other_mips64x.go
@@ -0,0 +1,12 @@
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !linux
+// +build mips64 mips64le
+
+package cpu
+
+func archInit() {
+ Initialized = true
+}
diff --git a/vendor/golang.org/x/sys/cpu/cpu_ppc64x.go b/vendor/golang.org/x/sys/cpu/cpu_ppc64x.go
new file mode 100644
index 00000000..d28d675b
--- /dev/null
+++ b/vendor/golang.org/x/sys/cpu/cpu_ppc64x.go
@@ -0,0 +1,16 @@
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build ppc64 ppc64le
+
+package cpu
+
+const cacheLineSize = 128
+
+func initOptions() {
+ options = []option{
+ {Name: "darn", Feature: &PPC64.HasDARN},
+ {Name: "scv", Feature: &PPC64.HasSCV},
+ }
+}
diff --git a/vendor/golang.org/x/sys/cpu/cpu_riscv64.go b/vendor/golang.org/x/sys/cpu/cpu_riscv64.go
index efe2b7a8..8b08de34 100644
--- a/vendor/golang.org/x/sys/cpu/cpu_riscv64.go
+++ b/vendor/golang.org/x/sys/cpu/cpu_riscv64.go
@@ -7,3 +7,5 @@
package cpu
const cacheLineSize = 32
+
+func initOptions() {}
diff --git a/vendor/golang.org/x/sys/cpu/cpu_s390x.go b/vendor/golang.org/x/sys/cpu/cpu_s390x.go
new file mode 100644
index 00000000..5881b883
--- /dev/null
+++ b/vendor/golang.org/x/sys/cpu/cpu_s390x.go
@@ -0,0 +1,172 @@
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package cpu
+
+const cacheLineSize = 256
+
+func initOptions() {
+ options = []option{
+ {Name: "zarch", Feature: &S390X.HasZARCH, Required: true},
+ {Name: "stfle", Feature: &S390X.HasSTFLE, Required: true},
+ {Name: "ldisp", Feature: &S390X.HasLDISP, Required: true},
+ {Name: "eimm", Feature: &S390X.HasEIMM, Required: true},
+ {Name: "dfp", Feature: &S390X.HasDFP},
+ {Name: "etf3eh", Feature: &S390X.HasETF3EH},
+ {Name: "msa", Feature: &S390X.HasMSA},
+ {Name: "aes", Feature: &S390X.HasAES},
+ {Name: "aescbc", Feature: &S390X.HasAESCBC},
+ {Name: "aesctr", Feature: &S390X.HasAESCTR},
+ {Name: "aesgcm", Feature: &S390X.HasAESGCM},
+ {Name: "ghash", Feature: &S390X.HasGHASH},
+ {Name: "sha1", Feature: &S390X.HasSHA1},
+ {Name: "sha256", Feature: &S390X.HasSHA256},
+ {Name: "sha3", Feature: &S390X.HasSHA3},
+ {Name: "sha512", Feature: &S390X.HasSHA512},
+ {Name: "vx", Feature: &S390X.HasVX},
+ {Name: "vxe", Feature: &S390X.HasVXE},
+ }
+}
+
+// bitIsSet reports whether the bit at index is set. The bit index
+// is in big endian order, so bit index 0 is the leftmost bit.
+func bitIsSet(bits []uint64, index uint) bool {
+ return bits[index/64]&((1<<63)>>(index%64)) != 0
+}
+
+// facility is a bit index for the named facility.
+type facility uint8
+
+const (
+ // mandatory facilities
+ zarch facility = 1 // z architecture mode is active
+ stflef facility = 7 // store-facility-list-extended
+ ldisp facility = 18 // long-displacement
+ eimm facility = 21 // extended-immediate
+
+ // miscellaneous facilities
+ dfp facility = 42 // decimal-floating-point
+ etf3eh facility = 30 // extended-translation 3 enhancement
+
+ // cryptography facilities
+ msa facility = 17 // message-security-assist
+ msa3 facility = 76 // message-security-assist extension 3
+ msa4 facility = 77 // message-security-assist extension 4
+ msa5 facility = 57 // message-security-assist extension 5
+ msa8 facility = 146 // message-security-assist extension 8
+ msa9 facility = 155 // message-security-assist extension 9
+
+ // vector facilities
+ vx facility = 129 // vector facility
+ vxe facility = 135 // vector-enhancements 1
+ vxe2 facility = 148 // vector-enhancements 2
+)
+
+// facilityList contains the result of an STFLE call.
+// Bits are numbered in big endian order so the
+// leftmost bit (the MSB) is at index 0.
+type facilityList struct {
+ bits [4]uint64
+}
+
+// Has reports whether the given facilities are present.
+func (s *facilityList) Has(fs ...facility) bool {
+ if len(fs) == 0 {
+ panic("no facility bits provided")
+ }
+ for _, f := range fs {
+ if !bitIsSet(s.bits[:], uint(f)) {
+ return false
+ }
+ }
+ return true
+}
+
+// function is the code for the named cryptographic function.
+type function uint8
+
+const (
+ // KM{,A,C,CTR} function codes
+ aes128 function = 18 // AES-128
+ aes192 function = 19 // AES-192
+ aes256 function = 20 // AES-256
+
+ // K{I,L}MD function codes
+ sha1 function = 1 // SHA-1
+ sha256 function = 2 // SHA-256
+ sha512 function = 3 // SHA-512
+ sha3_224 function = 32 // SHA3-224
+ sha3_256 function = 33 // SHA3-256
+ sha3_384 function = 34 // SHA3-384
+ sha3_512 function = 35 // SHA3-512
+ shake128 function = 36 // SHAKE-128
+ shake256 function = 37 // SHAKE-256
+
+ // KLMD function codes
+ ghash function = 65 // GHASH
+)
+
+// queryResult contains the result of a Query function
+// call. Bits are numbered in big endian order so the
+// leftmost bit (the MSB) is at index 0.
+type queryResult struct {
+ bits [2]uint64
+}
+
+// Has reports whether the given functions are present.
+func (q *queryResult) Has(fns ...function) bool {
+ if len(fns) == 0 {
+ panic("no function codes provided")
+ }
+ for _, f := range fns {
+ if !bitIsSet(q.bits[:], uint(f)) {
+ return false
+ }
+ }
+ return true
+}
+
+func doinit() {
+ initS390Xbase()
+
+ // We need implementations of stfle, km and so on
+ // to detect cryptographic features.
+ if !haveAsmFunctions() {
+ return
+ }
+
+ // optional cryptographic functions
+ if S390X.HasMSA {
+ aes := []function{aes128, aes192, aes256}
+
+ // cipher message
+ km, kmc := kmQuery(), kmcQuery()
+ S390X.HasAES = km.Has(aes...)
+ S390X.HasAESCBC = kmc.Has(aes...)
+ if S390X.HasSTFLE {
+ facilities := stfle()
+ if facilities.Has(msa4) {
+ kmctr := kmctrQuery()
+ S390X.HasAESCTR = kmctr.Has(aes...)
+ }
+ if facilities.Has(msa8) {
+ kma := kmaQuery()
+ S390X.HasAESGCM = kma.Has(aes...)
+ }
+ }
+
+ // compute message digest
+ kimd := kimdQuery() // intermediate (no padding)
+ klmd := klmdQuery() // last (padding)
+ S390X.HasSHA1 = kimd.Has(sha1) && klmd.Has(sha1)
+ S390X.HasSHA256 = kimd.Has(sha256) && klmd.Has(sha256)
+ S390X.HasSHA512 = kimd.Has(sha512) && klmd.Has(sha512)
+ S390X.HasGHASH = kimd.Has(ghash) // KLMD-GHASH does not exist
+ sha3 := []function{
+ sha3_224, sha3_256, sha3_384, sha3_512,
+ shake128, shake256,
+ }
+ S390X.HasSHA3 = kimd.Has(sha3...) && klmd.Has(sha3...)
+ }
+}
diff --git a/vendor/golang.org/x/sys/cpu/cpu_s390x.s b/vendor/golang.org/x/sys/cpu/cpu_s390x.s
index e5037d92..964946df 100644
--- a/vendor/golang.org/x/sys/cpu/cpu_s390x.s
+++ b/vendor/golang.org/x/sys/cpu/cpu_s390x.s
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build !gccgo
+// +build gc
#include "textflag.h"
diff --git a/vendor/golang.org/x/sys/cpu/cpu_wasm.go b/vendor/golang.org/x/sys/cpu/cpu_wasm.go
index 8681e876..5382f2a2 100644
--- a/vendor/golang.org/x/sys/cpu/cpu_wasm.go
+++ b/vendor/golang.org/x/sys/cpu/cpu_wasm.go
@@ -11,3 +11,7 @@ package cpu
// rules are good enough.
const cacheLineSize = 0
+
+func initOptions() {}
+
+func archInit() {}
diff --git a/vendor/golang.org/x/sys/cpu/cpu_x86.go b/vendor/golang.org/x/sys/cpu/cpu_x86.go
index d70d317f..48d42933 100644
--- a/vendor/golang.org/x/sys/cpu/cpu_x86.go
+++ b/vendor/golang.org/x/sys/cpu/cpu_x86.go
@@ -6,9 +6,57 @@
package cpu
+import "runtime"
+
const cacheLineSize = 64
-func init() {
+func initOptions() {
+ options = []option{
+ {Name: "adx", Feature: &X86.HasADX},
+ {Name: "aes", Feature: &X86.HasAES},
+ {Name: "avx", Feature: &X86.HasAVX},
+ {Name: "avx2", Feature: &X86.HasAVX2},
+ {Name: "avx512", Feature: &X86.HasAVX512},
+ {Name: "avx512f", Feature: &X86.HasAVX512F},
+ {Name: "avx512cd", Feature: &X86.HasAVX512CD},
+ {Name: "avx512er", Feature: &X86.HasAVX512ER},
+ {Name: "avx512pf", Feature: &X86.HasAVX512PF},
+ {Name: "avx512vl", Feature: &X86.HasAVX512VL},
+ {Name: "avx512bw", Feature: &X86.HasAVX512BW},
+ {Name: "avx512dq", Feature: &X86.HasAVX512DQ},
+ {Name: "avx512ifma", Feature: &X86.HasAVX512IFMA},
+ {Name: "avx512vbmi", Feature: &X86.HasAVX512VBMI},
+ {Name: "avx512vnniw", Feature: &X86.HasAVX5124VNNIW},
+ {Name: "avx5124fmaps", Feature: &X86.HasAVX5124FMAPS},
+ {Name: "avx512vpopcntdq", Feature: &X86.HasAVX512VPOPCNTDQ},
+ {Name: "avx512vpclmulqdq", Feature: &X86.HasAVX512VPCLMULQDQ},
+ {Name: "avx512vnni", Feature: &X86.HasAVX512VNNI},
+ {Name: "avx512gfni", Feature: &X86.HasAVX512GFNI},
+ {Name: "avx512vaes", Feature: &X86.HasAVX512VAES},
+ {Name: "avx512vbmi2", Feature: &X86.HasAVX512VBMI2},
+ {Name: "avx512bitalg", Feature: &X86.HasAVX512BITALG},
+ {Name: "avx512bf16", Feature: &X86.HasAVX512BF16},
+ {Name: "bmi1", Feature: &X86.HasBMI1},
+ {Name: "bmi2", Feature: &X86.HasBMI2},
+ {Name: "erms", Feature: &X86.HasERMS},
+ {Name: "fma", Feature: &X86.HasFMA},
+ {Name: "osxsave", Feature: &X86.HasOSXSAVE},
+ {Name: "pclmulqdq", Feature: &X86.HasPCLMULQDQ},
+ {Name: "popcnt", Feature: &X86.HasPOPCNT},
+ {Name: "rdrand", Feature: &X86.HasRDRAND},
+ {Name: "rdseed", Feature: &X86.HasRDSEED},
+ {Name: "sse3", Feature: &X86.HasSSE3},
+ {Name: "sse41", Feature: &X86.HasSSE41},
+ {Name: "sse42", Feature: &X86.HasSSE42},
+ {Name: "ssse3", Feature: &X86.HasSSSE3},
+
+ // These capabilities should always be enabled on amd64:
+ {Name: "sse2", Feature: &X86.HasSSE2, Required: runtime.GOARCH == "amd64"},
+ }
+}
+
+func archInit() {
+
Initialized = true
maxID, _, _, _ := cpuid(0, 0)
@@ -31,12 +79,15 @@ func init() {
X86.HasOSXSAVE = isSet(27, ecx1)
X86.HasRDRAND = isSet(30, ecx1)
- osSupportsAVX := false
+ var osSupportsAVX, osSupportsAVX512 bool
// For XGETBV, OSXSAVE bit is required and sufficient.
if X86.HasOSXSAVE {
eax, _ := xgetbv()
// Check if XMM and YMM registers have OS support.
osSupportsAVX = isSet(1, eax) && isSet(2, eax)
+
+ // Check if OPMASK and ZMM registers have OS support.
+ osSupportsAVX512 = osSupportsAVX && isSet(5, eax) && isSet(6, eax) && isSet(7, eax)
}
X86.HasAVX = isSet(28, ecx1) && osSupportsAVX
@@ -45,13 +96,38 @@ func init() {
return
}
- _, ebx7, _, _ := cpuid(7, 0)
+ _, ebx7, ecx7, edx7 := cpuid(7, 0)
X86.HasBMI1 = isSet(3, ebx7)
X86.HasAVX2 = isSet(5, ebx7) && osSupportsAVX
X86.HasBMI2 = isSet(8, ebx7)
X86.HasERMS = isSet(9, ebx7)
X86.HasRDSEED = isSet(18, ebx7)
X86.HasADX = isSet(19, ebx7)
+
+ X86.HasAVX512 = isSet(16, ebx7) && osSupportsAVX512 // Because avx-512 foundation is the core required extension
+ if X86.HasAVX512 {
+ X86.HasAVX512F = true
+ X86.HasAVX512CD = isSet(28, ebx7)
+ X86.HasAVX512ER = isSet(27, ebx7)
+ X86.HasAVX512PF = isSet(26, ebx7)
+ X86.HasAVX512VL = isSet(31, ebx7)
+ X86.HasAVX512BW = isSet(30, ebx7)
+ X86.HasAVX512DQ = isSet(17, ebx7)
+ X86.HasAVX512IFMA = isSet(21, ebx7)
+ X86.HasAVX512VBMI = isSet(1, ecx7)
+ X86.HasAVX5124VNNIW = isSet(2, edx7)
+ X86.HasAVX5124FMAPS = isSet(3, edx7)
+ X86.HasAVX512VPOPCNTDQ = isSet(14, ecx7)
+ X86.HasAVX512VPCLMULQDQ = isSet(10, ecx7)
+ X86.HasAVX512VNNI = isSet(11, ecx7)
+ X86.HasAVX512GFNI = isSet(8, ecx7)
+ X86.HasAVX512VAES = isSet(9, ecx7)
+ X86.HasAVX512VBMI2 = isSet(6, ecx7)
+ X86.HasAVX512BITALG = isSet(12, ecx7)
+
+ eax71, _, _, _ := cpuid(7, 1)
+ X86.HasAVX512BF16 = isSet(5, eax71)
+ }
}
func isSet(bitpos uint, value uint32) bool {
diff --git a/vendor/golang.org/x/sys/cpu/cpu_x86.s b/vendor/golang.org/x/sys/cpu/cpu_x86.s
index 47f08412..2f557a58 100644
--- a/vendor/golang.org/x/sys/cpu/cpu_x86.s
+++ b/vendor/golang.org/x/sys/cpu/cpu_x86.s
@@ -3,7 +3,7 @@
// license that can be found in the LICENSE file.
// +build 386 amd64 amd64p32
-// +build !gccgo
+// +build gc
#include "textflag.h"
diff --git a/vendor/golang.org/x/sys/cpu/cpu_zos.go b/vendor/golang.org/x/sys/cpu/cpu_zos.go
new file mode 100644
index 00000000..5f54683a
--- /dev/null
+++ b/vendor/golang.org/x/sys/cpu/cpu_zos.go
@@ -0,0 +1,10 @@
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package cpu
+
+func archInit() {
+ doinit()
+ Initialized = true
+}
diff --git a/vendor/golang.org/x/sys/cpu/cpu_zos_s390x.go b/vendor/golang.org/x/sys/cpu/cpu_zos_s390x.go
new file mode 100644
index 00000000..ccb1b708
--- /dev/null
+++ b/vendor/golang.org/x/sys/cpu/cpu_zos_s390x.go
@@ -0,0 +1,25 @@
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package cpu
+
+func initS390Xbase() {
+ // get the facilities list
+ facilities := stfle()
+
+ // mandatory
+ S390X.HasZARCH = facilities.Has(zarch)
+ S390X.HasSTFLE = facilities.Has(stflef)
+ S390X.HasLDISP = facilities.Has(ldisp)
+ S390X.HasEIMM = facilities.Has(eimm)
+
+ // optional
+ S390X.HasETF3EH = facilities.Has(etf3eh)
+ S390X.HasDFP = facilities.Has(dfp)
+ S390X.HasMSA = facilities.Has(msa)
+ S390X.HasVX = facilities.Has(vx)
+ if S390X.HasVX {
+ S390X.HasVXE = facilities.Has(vxe)
+ }
+}
diff --git a/vendor/golang.org/x/sys/cpu/syscall_aix_ppc64_gc.go b/vendor/golang.org/x/sys/cpu/syscall_aix_ppc64_gc.go
index 78fe25e8..5b427d67 100644
--- a/vendor/golang.org/x/sys/cpu/syscall_aix_ppc64_gc.go
+++ b/vendor/golang.org/x/sys/cpu/syscall_aix_ppc64_gc.go
@@ -7,7 +7,7 @@
// (See golang.org/issue/32102)
// +build aix,ppc64
-// +build !gccgo
+// +build gc
package cpu
diff --git a/vendor/golang.org/x/sys/unix/BUILD.bazel b/vendor/golang.org/x/sys/unix/BUILD.bazel
index f3287155..6b8311a2 100644
--- a/vendor/golang.org/x/sys/unix/BUILD.bazel
+++ b/vendor/golang.org/x/sys/unix/BUILD.bazel
@@ -66,13 +66,9 @@ go_library(
"syscall_darwin.1_12.go",
"syscall_darwin.1_13.go",
"syscall_darwin.go",
- "syscall_darwin_386.1_11.go",
"syscall_darwin_386.go",
- "syscall_darwin_amd64.1_11.go",
"syscall_darwin_amd64.go",
- "syscall_darwin_arm.1_11.go",
"syscall_darwin_arm.go",
- "syscall_darwin_arm64.1_11.go",
"syscall_darwin_arm64.go",
"syscall_darwin_libSystem.go",
"syscall_dragonfly.go",
@@ -89,6 +85,7 @@ go_library(
"syscall_linux_arm64.go",
"syscall_linux_gc.go",
"syscall_linux_gc_386.go",
+ "syscall_linux_gc_arm.go",
"syscall_linux_mips64x.go",
"syscall_linux_mipsx.go",
"syscall_linux_ppc64x.go",
@@ -141,22 +138,18 @@ go_library(
"zptrace_mipsnn_linux.go",
"zptrace_mipsnnle_linux.go",
"zptrace_x86_linux.go",
- "zsyscall_darwin_386.1_11.go",
"zsyscall_darwin_386.1_13.go",
"zsyscall_darwin_386.1_13.s",
"zsyscall_darwin_386.go",
"zsyscall_darwin_386.s",
- "zsyscall_darwin_amd64.1_11.go",
"zsyscall_darwin_amd64.1_13.go",
"zsyscall_darwin_amd64.1_13.s",
"zsyscall_darwin_amd64.go",
"zsyscall_darwin_amd64.s",
- "zsyscall_darwin_arm.1_11.go",
"zsyscall_darwin_arm.1_13.go",
"zsyscall_darwin_arm.1_13.s",
"zsyscall_darwin_arm.go",
"zsyscall_darwin_arm.s",
- "zsyscall_darwin_arm64.1_11.go",
"zsyscall_darwin_arm64.1_13.go",
"zsyscall_darwin_arm64.1_13.s",
"zsyscall_darwin_arm64.go",
diff --git a/vendor/golang.org/x/sys/unix/asm_aix_ppc64.s b/vendor/golang.org/x/sys/unix/asm_aix_ppc64.s
index 06f84b85..6b4027b3 100644
--- a/vendor/golang.org/x/sys/unix/asm_aix_ppc64.s
+++ b/vendor/golang.org/x/sys/unix/asm_aix_ppc64.s
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build !gccgo
+// +build gc
#include "textflag.h"
diff --git a/vendor/golang.org/x/sys/unix/asm_darwin_386.s b/vendor/golang.org/x/sys/unix/asm_darwin_386.s
index 8a727831..8a06b87d 100644
--- a/vendor/golang.org/x/sys/unix/asm_darwin_386.s
+++ b/vendor/golang.org/x/sys/unix/asm_darwin_386.s
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build !gccgo
+// +build gc
#include "textflag.h"
diff --git a/vendor/golang.org/x/sys/unix/asm_darwin_amd64.s b/vendor/golang.org/x/sys/unix/asm_darwin_amd64.s
index 6321421f..f2397fde 100644
--- a/vendor/golang.org/x/sys/unix/asm_darwin_amd64.s
+++ b/vendor/golang.org/x/sys/unix/asm_darwin_amd64.s
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build !gccgo
+// +build gc
#include "textflag.h"
diff --git a/vendor/golang.org/x/sys/unix/asm_darwin_arm.s b/vendor/golang.org/x/sys/unix/asm_darwin_arm.s
index 333242d5..c9e6b6fc 100644
--- a/vendor/golang.org/x/sys/unix/asm_darwin_arm.s
+++ b/vendor/golang.org/x/sys/unix/asm_darwin_arm.s
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build !gccgo
+// +build gc
// +build arm,darwin
#include "textflag.h"
diff --git a/vendor/golang.org/x/sys/unix/asm_darwin_arm64.s b/vendor/golang.org/x/sys/unix/asm_darwin_arm64.s
index 97e01743..89843f8f 100644
--- a/vendor/golang.org/x/sys/unix/asm_darwin_arm64.s
+++ b/vendor/golang.org/x/sys/unix/asm_darwin_arm64.s
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build !gccgo
+// +build gc
// +build arm64,darwin
#include "textflag.h"
diff --git a/vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s b/vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s
index 603dd572..27674e1c 100644
--- a/vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s
+++ b/vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build !gccgo
+// +build gc
#include "textflag.h"
diff --git a/vendor/golang.org/x/sys/unix/asm_freebsd_386.s b/vendor/golang.org/x/sys/unix/asm_freebsd_386.s
index c9a0a260..49f0ac23 100644
--- a/vendor/golang.org/x/sys/unix/asm_freebsd_386.s
+++ b/vendor/golang.org/x/sys/unix/asm_freebsd_386.s
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build !gccgo
+// +build gc
#include "textflag.h"
diff --git a/vendor/golang.org/x/sys/unix/asm_freebsd_amd64.s b/vendor/golang.org/x/sys/unix/asm_freebsd_amd64.s
index 35172477..f2dfc57b 100644
--- a/vendor/golang.org/x/sys/unix/asm_freebsd_amd64.s
+++ b/vendor/golang.org/x/sys/unix/asm_freebsd_amd64.s
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build !gccgo
+// +build gc
#include "textflag.h"
diff --git a/vendor/golang.org/x/sys/unix/asm_freebsd_arm.s b/vendor/golang.org/x/sys/unix/asm_freebsd_arm.s
index 9227c875..6d740db2 100644
--- a/vendor/golang.org/x/sys/unix/asm_freebsd_arm.s
+++ b/vendor/golang.org/x/sys/unix/asm_freebsd_arm.s
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build !gccgo
+// +build gc
#include "textflag.h"
diff --git a/vendor/golang.org/x/sys/unix/asm_freebsd_arm64.s b/vendor/golang.org/x/sys/unix/asm_freebsd_arm64.s
index d9318cbf..a8f5a29b 100644
--- a/vendor/golang.org/x/sys/unix/asm_freebsd_arm64.s
+++ b/vendor/golang.org/x/sys/unix/asm_freebsd_arm64.s
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build !gccgo
+// +build gc
#include "textflag.h"
diff --git a/vendor/golang.org/x/sys/unix/asm_linux_386.s b/vendor/golang.org/x/sys/unix/asm_linux_386.s
index 448bebbb..0655ecbf 100644
--- a/vendor/golang.org/x/sys/unix/asm_linux_386.s
+++ b/vendor/golang.org/x/sys/unix/asm_linux_386.s
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build !gccgo
+// +build gc
#include "textflag.h"
diff --git a/vendor/golang.org/x/sys/unix/asm_linux_amd64.s b/vendor/golang.org/x/sys/unix/asm_linux_amd64.s
index c6468a95..bc3fb6ac 100644
--- a/vendor/golang.org/x/sys/unix/asm_linux_amd64.s
+++ b/vendor/golang.org/x/sys/unix/asm_linux_amd64.s
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build !gccgo
+// +build gc
#include "textflag.h"
diff --git a/vendor/golang.org/x/sys/unix/asm_linux_arm.s b/vendor/golang.org/x/sys/unix/asm_linux_arm.s
index cf0f3575..55b13c7b 100644
--- a/vendor/golang.org/x/sys/unix/asm_linux_arm.s
+++ b/vendor/golang.org/x/sys/unix/asm_linux_arm.s
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build !gccgo
+// +build gc
#include "textflag.h"
diff --git a/vendor/golang.org/x/sys/unix/asm_linux_arm64.s b/vendor/golang.org/x/sys/unix/asm_linux_arm64.s
index afe6fdf6..22a83d8e 100644
--- a/vendor/golang.org/x/sys/unix/asm_linux_arm64.s
+++ b/vendor/golang.org/x/sys/unix/asm_linux_arm64.s
@@ -4,7 +4,7 @@
// +build linux
// +build arm64
-// +build !gccgo
+// +build gc
#include "textflag.h"
diff --git a/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s b/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s
index ab9d6383..dc222b90 100644
--- a/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s
+++ b/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s
@@ -4,7 +4,7 @@
// +build linux
// +build mips64 mips64le
-// +build !gccgo
+// +build gc
#include "textflag.h"
diff --git a/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s b/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s
index 99e53990..d333f13c 100644
--- a/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s
+++ b/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s
@@ -4,7 +4,7 @@
// +build linux
// +build mips mipsle
-// +build !gccgo
+// +build gc
#include "textflag.h"
diff --git a/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s b/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s
index 88f71255..459a629c 100644
--- a/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s
+++ b/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s
@@ -4,7 +4,7 @@
// +build linux
// +build ppc64 ppc64le
-// +build !gccgo
+// +build gc
#include "textflag.h"
diff --git a/vendor/golang.org/x/sys/unix/asm_linux_riscv64.s b/vendor/golang.org/x/sys/unix/asm_linux_riscv64.s
index 3cfefed2..04d38497 100644
--- a/vendor/golang.org/x/sys/unix/asm_linux_riscv64.s
+++ b/vendor/golang.org/x/sys/unix/asm_linux_riscv64.s
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build riscv64,!gccgo
+// +build riscv64,gc
#include "textflag.h"
diff --git a/vendor/golang.org/x/sys/unix/asm_linux_s390x.s b/vendor/golang.org/x/sys/unix/asm_linux_s390x.s
index a5a863c6..cc303989 100644
--- a/vendor/golang.org/x/sys/unix/asm_linux_s390x.s
+++ b/vendor/golang.org/x/sys/unix/asm_linux_s390x.s
@@ -4,7 +4,7 @@
// +build s390x
// +build linux
-// +build !gccgo
+// +build gc
#include "textflag.h"
diff --git a/vendor/golang.org/x/sys/unix/asm_netbsd_386.s b/vendor/golang.org/x/sys/unix/asm_netbsd_386.s
index 48bdcd76..ae7b498d 100644
--- a/vendor/golang.org/x/sys/unix/asm_netbsd_386.s
+++ b/vendor/golang.org/x/sys/unix/asm_netbsd_386.s
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build !gccgo
+// +build gc
#include "textflag.h"
diff --git a/vendor/golang.org/x/sys/unix/asm_netbsd_amd64.s b/vendor/golang.org/x/sys/unix/asm_netbsd_amd64.s
index 2ede05c7..e57367c1 100644
--- a/vendor/golang.org/x/sys/unix/asm_netbsd_amd64.s
+++ b/vendor/golang.org/x/sys/unix/asm_netbsd_amd64.s
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build !gccgo
+// +build gc
#include "textflag.h"
diff --git a/vendor/golang.org/x/sys/unix/asm_netbsd_arm.s b/vendor/golang.org/x/sys/unix/asm_netbsd_arm.s
index e8928571..d7da175e 100644
--- a/vendor/golang.org/x/sys/unix/asm_netbsd_arm.s
+++ b/vendor/golang.org/x/sys/unix/asm_netbsd_arm.s
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build !gccgo
+// +build gc
#include "textflag.h"
diff --git a/vendor/golang.org/x/sys/unix/asm_netbsd_arm64.s b/vendor/golang.org/x/sys/unix/asm_netbsd_arm64.s
index 6f98ba5a..e7cbe190 100644
--- a/vendor/golang.org/x/sys/unix/asm_netbsd_arm64.s
+++ b/vendor/golang.org/x/sys/unix/asm_netbsd_arm64.s
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build !gccgo
+// +build gc
#include "textflag.h"
diff --git a/vendor/golang.org/x/sys/unix/asm_openbsd_386.s b/vendor/golang.org/x/sys/unix/asm_openbsd_386.s
index 00576f3c..2f00b031 100644
--- a/vendor/golang.org/x/sys/unix/asm_openbsd_386.s
+++ b/vendor/golang.org/x/sys/unix/asm_openbsd_386.s
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build !gccgo
+// +build gc
#include "textflag.h"
diff --git a/vendor/golang.org/x/sys/unix/asm_openbsd_amd64.s b/vendor/golang.org/x/sys/unix/asm_openbsd_amd64.s
index 790ef77f..07632c99 100644
--- a/vendor/golang.org/x/sys/unix/asm_openbsd_amd64.s
+++ b/vendor/golang.org/x/sys/unix/asm_openbsd_amd64.s
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build !gccgo
+// +build gc
#include "textflag.h"
diff --git a/vendor/golang.org/x/sys/unix/asm_openbsd_arm.s b/vendor/golang.org/x/sys/unix/asm_openbsd_arm.s
index 469bfa10..73e99732 100644
--- a/vendor/golang.org/x/sys/unix/asm_openbsd_arm.s
+++ b/vendor/golang.org/x/sys/unix/asm_openbsd_arm.s
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build !gccgo
+// +build gc
#include "textflag.h"
diff --git a/vendor/golang.org/x/sys/unix/asm_openbsd_arm64.s b/vendor/golang.org/x/sys/unix/asm_openbsd_arm64.s
index 0cedea3d..c47302aa 100644
--- a/vendor/golang.org/x/sys/unix/asm_openbsd_arm64.s
+++ b/vendor/golang.org/x/sys/unix/asm_openbsd_arm64.s
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build !gccgo
+// +build gc
#include "textflag.h"
diff --git a/vendor/golang.org/x/sys/unix/asm_openbsd_mips64.s b/vendor/golang.org/x/sys/unix/asm_openbsd_mips64.s
new file mode 100644
index 00000000..47c93fcb
--- /dev/null
+++ b/vendor/golang.org/x/sys/unix/asm_openbsd_mips64.s
@@ -0,0 +1,29 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build gc
+
+#include "textflag.h"
+
+//
+// System call support for mips64, OpenBSD
+//
+
+// Just jump to package syscall's implementation for all these functions.
+// The runtime may know about them.
+
+TEXT ·Syscall(SB),NOSPLIT,$0-56
+ JMP syscall·Syscall(SB)
+
+TEXT ·Syscall6(SB),NOSPLIT,$0-80
+ JMP syscall·Syscall6(SB)
+
+TEXT ·Syscall9(SB),NOSPLIT,$0-104
+ JMP syscall·Syscall9(SB)
+
+TEXT ·RawSyscall(SB),NOSPLIT,$0-56
+ JMP syscall·RawSyscall(SB)
+
+TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
+ JMP syscall·RawSyscall6(SB)
diff --git a/vendor/golang.org/x/sys/unix/asm_solaris_amd64.s b/vendor/golang.org/x/sys/unix/asm_solaris_amd64.s
index ded8260f..1f2c755a 100644
--- a/vendor/golang.org/x/sys/unix/asm_solaris_amd64.s
+++ b/vendor/golang.org/x/sys/unix/asm_solaris_amd64.s
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build !gccgo
+// +build gc
#include "textflag.h"
diff --git a/vendor/golang.org/x/sys/unix/endian_big.go b/vendor/golang.org/x/sys/unix/endian_big.go
index 5e926906..86781eac 100644
--- a/vendor/golang.org/x/sys/unix/endian_big.go
+++ b/vendor/golang.org/x/sys/unix/endian_big.go
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//
-// +build ppc64 s390x mips mips64
+// +build armbe arm64be m68k mips mips64 mips64p32 ppc ppc64 s390 s390x shbe sparc sparc64
package unix
diff --git a/vendor/golang.org/x/sys/unix/endian_little.go b/vendor/golang.org/x/sys/unix/endian_little.go
index bcdb5d30..8822d854 100644
--- a/vendor/golang.org/x/sys/unix/endian_little.go
+++ b/vendor/golang.org/x/sys/unix/endian_little.go
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//
-// +build 386 amd64 amd64p32 arm arm64 ppc64le mipsle mips64le riscv64
+// +build 386 amd64 amd64p32 alpha arm arm64 mipsle mips64le mips64p32le nios2 ppc64le riscv riscv64 sh
package unix
diff --git a/vendor/golang.org/x/sys/unix/fcntl_darwin.go b/vendor/golang.org/x/sys/unix/fcntl_darwin.go
index 5868a4a4..a9911c7c 100644
--- a/vendor/golang.org/x/sys/unix/fcntl_darwin.go
+++ b/vendor/golang.org/x/sys/unix/fcntl_darwin.go
@@ -16,3 +16,9 @@ func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {
_, err := fcntl(int(fd), cmd, int(uintptr(unsafe.Pointer(lk))))
return err
}
+
+// FcntlFstore performs a fcntl syscall for the F_PREALLOCATE command.
+func FcntlFstore(fd uintptr, cmd int, fstore *Fstore_t) error {
+ _, err := fcntl(int(fd), cmd, int(uintptr(unsafe.Pointer(fstore))))
+ return err
+}
diff --git a/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go b/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go
index fc0e50e0..8db48e5e 100644
--- a/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go
+++ b/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go
@@ -1,9 +1,9 @@
-// +build linux,386 linux,arm linux,mips linux,mipsle
-
// Copyright 2014 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
+// +build linux,386 linux,arm linux,mips linux,mipsle
+
package unix
func init() {
diff --git a/vendor/golang.org/x/sys/unix/gccgo.go b/vendor/golang.org/x/sys/unix/gccgo.go
index cd6f5a61..86032c11 100644
--- a/vendor/golang.org/x/sys/unix/gccgo.go
+++ b/vendor/golang.org/x/sys/unix/gccgo.go
@@ -12,10 +12,8 @@ import "syscall"
// We can't use the gc-syntax .s files for gccgo. On the plus side
// much of the functionality can be written directly in Go.
-//extern gccgoRealSyscallNoError
func realSyscallNoError(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r uintptr)
-//extern gccgoRealSyscall
func realSyscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r, errno uintptr)
func SyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) {
diff --git a/vendor/golang.org/x/sys/unix/gccgo_c.c b/vendor/golang.org/x/sys/unix/gccgo_c.c
index c44730c5..2cb1fefa 100644
--- a/vendor/golang.org/x/sys/unix/gccgo_c.c
+++ b/vendor/golang.org/x/sys/unix/gccgo_c.c
@@ -21,6 +21,9 @@ struct ret {
uintptr_t err;
};
+struct ret gccgoRealSyscall(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9)
+ __asm__(GOSYM_PREFIX GOPKGPATH ".realSyscall");
+
struct ret
gccgoRealSyscall(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9)
{
@@ -32,6 +35,9 @@ gccgoRealSyscall(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintp
return r;
}
+uintptr_t gccgoRealSyscallNoError(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9)
+ __asm__(GOSYM_PREFIX GOPKGPATH ".realSyscallNoError");
+
uintptr_t
gccgoRealSyscallNoError(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9)
{
diff --git a/vendor/golang.org/x/sys/unix/ioctl.go b/vendor/golang.org/x/sys/unix/ioctl.go
index 3559e5dc..56416786 100644
--- a/vendor/golang.org/x/sys/unix/ioctl.go
+++ b/vendor/golang.org/x/sys/unix/ioctl.go
@@ -20,6 +20,15 @@ func IoctlSetInt(fd int, req uint, value int) error {
return ioctl(fd, req, uintptr(value))
}
+// IoctlSetPointerInt performs an ioctl operation which sets an
+// integer value on fd, using the specified request number. The ioctl
+// argument is called with a pointer to the integer value, rather than
+// passing the integer value directly.
+func IoctlSetPointerInt(fd int, req uint, value int) error {
+ v := int32(value)
+ return ioctl(fd, req, uintptr(unsafe.Pointer(&v)))
+}
+
// IoctlSetWinsize performs an ioctl on fd with a *Winsize argument.
//
// To change fd's window size, the req argument should be TIOCSWINSZ.
diff --git a/vendor/golang.org/x/sys/unix/mkall.sh b/vendor/golang.org/x/sys/unix/mkall.sh
index ece31e9d..d257fac5 100644
--- a/vendor/golang.org/x/sys/unix/mkall.sh
+++ b/vendor/golang.org/x/sys/unix/mkall.sh
@@ -73,26 +73,22 @@ aix_ppc64)
darwin_386)
mkerrors="$mkerrors -m32"
mksyscall="go run mksyscall.go -l32"
- mksysnum="go run mksysnum.go $(xcrun --show-sdk-path --sdk macosx)/usr/include/sys/syscall.h"
mktypes="GOARCH=$GOARCH go tool cgo -godefs"
mkasm="go run mkasm_darwin.go"
;;
darwin_amd64)
mkerrors="$mkerrors -m64"
- mksysnum="go run mksysnum.go $(xcrun --show-sdk-path --sdk macosx)/usr/include/sys/syscall.h"
mktypes="GOARCH=$GOARCH go tool cgo -godefs"
mkasm="go run mkasm_darwin.go"
;;
darwin_arm)
mkerrors="$mkerrors"
mksyscall="go run mksyscall.go -l32"
- mksysnum="go run mksysnum.go $(xcrun --show-sdk-path --sdk iphoneos)/usr/include/sys/syscall.h"
mktypes="GOARCH=$GOARCH go tool cgo -godefs"
mkasm="go run mkasm_darwin.go"
;;
darwin_arm64)
mkerrors="$mkerrors -m64"
- mksysnum="go run mksysnum.go $(xcrun --show-sdk-path --sdk iphoneos)/usr/include/sys/syscall.h"
mktypes="GOARCH=$GOARCH go tool cgo -godefs"
mkasm="go run mkasm_darwin.go"
;;
@@ -184,6 +180,15 @@ openbsd_arm64)
# API consistent across platforms.
mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char"
;;
+openbsd_mips64)
+ mkerrors="$mkerrors -m64"
+ mksyscall="go run mksyscall.go -openbsd"
+ mksysctl="go run mksysctl_openbsd.go"
+ mksysnum="go run mksysnum.go 'https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master'"
+ # Let the type of C char be signed for making the bare syscall
+ # API consistent across platforms.
+ mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char"
+ ;;
solaris_amd64)
mksyscall="go run mksyscall_solaris.go"
mkerrors="$mkerrors -m64"
@@ -217,8 +222,6 @@ esac
# aix/ppc64 script generates files instead of writing to stdin.
echo "$mksyscall -tags $GOOS,$GOARCH $syscall_goos $GOOSARCH_in && gofmt -w zsyscall_$GOOSARCH.go && gofmt -w zsyscall_"$GOOSARCH"_gccgo.go && gofmt -w zsyscall_"$GOOSARCH"_gc.go " ;
elif [ "$GOOS" == "darwin" ]; then
- # pre-1.12, direct syscalls
- echo "$mksyscall -tags $GOOS,$GOARCH,!go1.12 $syscall_goos syscall_darwin_${GOARCH}.1_11.go $GOOSARCH_in |gofmt >zsyscall_$GOOSARCH.1_11.go";
# 1.12 and later, syscalls via libSystem
echo "$mksyscall -tags $GOOS,$GOARCH,go1.12 $syscall_goos $GOOSARCH_in |gofmt >zsyscall_$GOOSARCH.go";
# 1.13 and later, syscalls via libSystem (including syscallPtr)
diff --git a/vendor/golang.org/x/sys/unix/mkerrors.sh b/vendor/golang.org/x/sys/unix/mkerrors.sh
index 780e387e..c0f9f2d5 100644
--- a/vendor/golang.org/x/sys/unix/mkerrors.sh
+++ b/vendor/golang.org/x/sys/unix/mkerrors.sh
@@ -58,12 +58,15 @@ includes_Darwin='
#define _DARWIN_USE_64_BIT_INODE
#include
#include
+#include
+#include
#include
#include
#include
#include
#include
#include
+#include
#include
#include
#include
@@ -93,6 +96,7 @@ includes_DragonFly='
#include
#include
#include
+#include
#include
#include
#include
@@ -107,6 +111,7 @@ includes_FreeBSD='
#include
#include
#include
+#include
#include
#include
#include
@@ -192,9 +197,12 @@ struct ltchars {
#include
#include
#include
+#include
+#include
#include
#include
#include
+#include
#include
#include
#include
@@ -217,6 +225,7 @@ struct ltchars {
#include
#include
#include
+#include
#include
#include
#include
@@ -225,6 +234,7 @@ struct ltchars {
#include
#include
#include
+#include
#include
#include
#include
@@ -297,6 +307,7 @@ includes_NetBSD='
#include
#include
#include
+#include
#include
#include
#include
@@ -325,6 +336,7 @@ includes_OpenBSD='
#include
#include
#include
+#include
#include
#include
#include
@@ -365,6 +377,7 @@ includes_SunOS='
#include
#include
#include
+#include
#include
#include
#include
@@ -489,6 +502,7 @@ ccflags="$@"
$2 !~ "NLA_TYPE_MASK" &&
$2 !~ /^RTC_VL_(ACCURACY|BACKUP|DATA)/ &&
$2 ~ /^(NETLINK|NLM|NLMSG|NLA|IFA|IFAN|RT|RTC|RTCF|RTN|RTPROT|RTNH|ARPHRD|ETH_P|NETNSA)_/ ||
+ $2 ~ /^FIORDCHK$/ ||
$2 ~ /^SIOC/ ||
$2 ~ /^TIOC/ ||
$2 ~ /^TCGET/ ||
@@ -507,16 +521,21 @@ ccflags="$@"
$2 ~ /^(CLOCK|TIMER)_/ ||
$2 ~ /^CAN_/ ||
$2 ~ /^CAP_/ ||
+ $2 ~ /^CP_/ ||
+ $2 ~ /^CPUSTATES$/ ||
+ $2 ~ /^CTLIOCGINFO$/ ||
$2 ~ /^ALG_/ ||
+ $2 ~ /^FI(CLONE|DEDUPERANGE)/ ||
$2 ~ /^FS_(POLICY_FLAGS|KEY_DESC|ENCRYPTION_MODE|[A-Z0-9_]+_KEY_SIZE)/ ||
- $2 ~ /^FS_IOC_.*(ENCRYPTION|VERITY|GETFLAGS)/ ||
+ $2 ~ /^FS_IOC_.*(ENCRYPTION|VERITY|[GS]ETFLAGS)/ ||
$2 ~ /^FS_VERITY_/ ||
$2 ~ /^FSCRYPT_/ ||
+ $2 ~ /^DM_/ ||
$2 ~ /^GRND_/ ||
$2 ~ /^RND/ ||
$2 ~ /^KEY_(SPEC|REQKEY_DEFL)_/ ||
$2 ~ /^KEYCTL_/ ||
- $2 ~ /^PERF_EVENT_IOC_/ ||
+ $2 ~ /^PERF_/ ||
$2 ~ /^SECCOMP_MODE_/ ||
$2 ~ /^SPLICE_/ ||
$2 ~ /^SYNC_FILE_RANGE_/ ||
@@ -535,7 +554,7 @@ ccflags="$@"
$2 ~ /^XATTR_(CREATE|REPLACE|NO(DEFAULT|FOLLOW|SECURITY)|SHOWCOMPRESSION)/ ||
$2 ~ /^ATTR_(BIT_MAP_COUNT|(CMN|VOL|FILE)_)/ ||
$2 ~ /^FSOPT_/ ||
- $2 ~ /^WDIOC_/ ||
+ $2 ~ /^WDIO[CFS]_/ ||
$2 ~ /^NFN/ ||
$2 ~ /^XDP_/ ||
$2 ~ /^RWF_/ ||
@@ -543,6 +562,7 @@ ccflags="$@"
$2 ~ /^CRYPTO_/ ||
$2 ~ /^TIPC_/ ||
$2 ~ /^DEVLINK_/ ||
+ $2 ~ /^LWTUNNEL_IP/ ||
$2 !~ "WMESGLEN" &&
$2 ~ /^W[A-Z0-9]+$/ ||
$2 ~/^PPPIOC/ ||
diff --git a/vendor/golang.org/x/sys/unix/sockcmsg_unix_other.go b/vendor/golang.org/x/sys/unix/sockcmsg_unix_other.go
index 7d08dae5..57a0021d 100644
--- a/vendor/golang.org/x/sys/unix/sockcmsg_unix_other.go
+++ b/vendor/golang.org/x/sys/unix/sockcmsg_unix_other.go
@@ -20,7 +20,7 @@ func cmsgAlignOf(salen int) int {
case "aix":
// There is no alignment on AIX.
salign = 1
- case "darwin", "illumos", "solaris":
+ case "darwin", "ios", "illumos", "solaris":
// NOTE: It seems like 64-bit Darwin, Illumos and Solaris
// kernels still require 32-bit aligned access to network
// subsystem.
@@ -32,6 +32,10 @@ func cmsgAlignOf(salen int) int {
if runtime.GOARCH == "arm" {
salign = 8
}
+ // NetBSD aarch64 requires 128-bit alignment.
+ if runtime.GOOS == "netbsd" && runtime.GOARCH == "arm64" {
+ salign = 16
+ }
}
return (salen + salign - 1) & ^(salign - 1)
diff --git a/vendor/golang.org/x/sys/unix/syscall.go b/vendor/golang.org/x/sys/unix/syscall.go
index fd4ee8eb..ab75ef9c 100644
--- a/vendor/golang.org/x/sys/unix/syscall.go
+++ b/vendor/golang.org/x/sys/unix/syscall.go
@@ -24,7 +24,13 @@
// holds a value of type syscall.Errno.
package unix // import "golang.org/x/sys/unix"
-import "strings"
+import (
+ "bytes"
+ "strings"
+ "unsafe"
+
+ "golang.org/x/sys/internal/unsafeheader"
+)
// ByteSliceFromString returns a NUL-terminated slice of bytes
// containing the text of s. If s contains a NUL byte at any
@@ -49,5 +55,40 @@ func BytePtrFromString(s string) (*byte, error) {
return &a[0], nil
}
+// ByteSliceToString returns a string form of the text represented by the slice s, with a terminating NUL and any
+// bytes after the NUL removed.
+func ByteSliceToString(s []byte) string {
+ if i := bytes.IndexByte(s, 0); i != -1 {
+ s = s[:i]
+ }
+ return string(s)
+}
+
+// BytePtrToString takes a pointer to a sequence of text and returns the corresponding string.
+// If the pointer is nil, it returns the empty string. It assumes that the text sequence is terminated
+// at a zero byte; if the zero byte is not present, the program may crash.
+func BytePtrToString(p *byte) string {
+ if p == nil {
+ return ""
+ }
+ if *p == 0 {
+ return ""
+ }
+
+ // Find NUL terminator.
+ n := 0
+ for ptr := unsafe.Pointer(p); *(*byte)(ptr) != 0; n++ {
+ ptr = unsafe.Pointer(uintptr(ptr) + 1)
+ }
+
+ var s []byte
+ h := (*unsafeheader.Slice)(unsafe.Pointer(&s))
+ h.Data = unsafe.Pointer(p)
+ h.Len = n
+ h.Cap = n
+
+ return string(s)
+}
+
// Single-word zero for use when we need a valid pointer to 0 bytes.
var _zero uintptr
diff --git a/vendor/golang.org/x/sys/unix/syscall_aix.go b/vendor/golang.org/x/sys/unix/syscall_aix.go
index 9ad8a0d4..44081538 100644
--- a/vendor/golang.org/x/sys/unix/syscall_aix.go
+++ b/vendor/golang.org/x/sys/unix/syscall_aix.go
@@ -19,6 +19,22 @@ import "unsafe"
* Wrapped
*/
+func Access(path string, mode uint32) (err error) {
+ return Faccessat(AT_FDCWD, path, mode, 0)
+}
+
+func Chmod(path string, mode uint32) (err error) {
+ return Fchmodat(AT_FDCWD, path, mode, 0)
+}
+
+func Chown(path string, uid int, gid int) (err error) {
+ return Fchownat(AT_FDCWD, path, uid, gid, 0)
+}
+
+func Creat(path string, mode uint32) (fd int, err error) {
+ return Open(path, O_CREAT|O_WRONLY|O_TRUNC, mode)
+}
+
//sys utimes(path string, times *[2]Timeval) (err error)
func Utimes(path string, tv []Timeval) error {
if len(tv) != 2 {
diff --git a/vendor/golang.org/x/sys/unix/syscall_bsd.go b/vendor/golang.org/x/sys/unix/syscall_bsd.go
index 68605db6..bc634a28 100644
--- a/vendor/golang.org/x/sys/unix/syscall_bsd.go
+++ b/vendor/golang.org/x/sys/unix/syscall_bsd.go
@@ -18,6 +18,21 @@ import (
"unsafe"
)
+const ImplementsGetwd = true
+
+func Getwd() (string, error) {
+ var buf [PathMax]byte
+ _, err := Getcwd(buf[0:])
+ if err != nil {
+ return "", err
+ }
+ n := clen(buf[:])
+ if n < 1 {
+ return "", EINVAL
+ }
+ return string(buf[:n]), nil
+}
+
/*
* Wrapped
*/
@@ -262,7 +277,7 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {
}
return sa, nil
}
- return nil, EAFNOSUPPORT
+ return anyToSockaddrGOOS(fd, rsa)
}
func Accept(fd int) (nfd int, sa Sockaddr, err error) {
@@ -272,7 +287,7 @@ func Accept(fd int) (nfd int, sa Sockaddr, err error) {
if err != nil {
return
}
- if runtime.GOOS == "darwin" && len == 0 {
+ if (runtime.GOOS == "darwin" || runtime.GOOS == "ios") && len == 0 {
// Accepted socket has no address.
// This is likely due to a bug in xnu kernels,
// where instead of ECONNABORTED error socket
@@ -527,6 +542,23 @@ func SysctlClockinfo(name string) (*Clockinfo, error) {
return &ci, nil
}
+func SysctlTimeval(name string) (*Timeval, error) {
+ mib, err := sysctlmib(name)
+ if err != nil {
+ return nil, err
+ }
+
+ var tv Timeval
+ n := uintptr(unsafe.Sizeof(tv))
+ if err := sysctl(mib, (*byte)(unsafe.Pointer(&tv)), &n, nil, 0); err != nil {
+ return nil, err
+ }
+ if n != unsafe.Sizeof(tv) {
+ return nil, EIO
+ }
+ return &tv, nil
+}
+
//sys utimes(path string, timeval *[2]Timeval) (err error)
func Utimes(path string, tv []Timeval) error {
diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin.1_12.go b/vendor/golang.org/x/sys/unix/syscall_darwin.1_12.go
index 6a15cba6..b31ef035 100644
--- a/vendor/golang.org/x/sys/unix/syscall_darwin.1_12.go
+++ b/vendor/golang.org/x/sys/unix/syscall_darwin.1_12.go
@@ -10,6 +10,8 @@ import (
"unsafe"
)
+const _SYS_GETDIRENTRIES64 = 344
+
func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
// To implement this using libSystem we'd need syscall_syscallPtr for
// fdopendir. However, syscallPtr was only added in Go 1.13, so we fall
@@ -20,7 +22,7 @@ func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
} else {
p = unsafe.Pointer(&_zero)
}
- r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(p), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
+ r0, _, e1 := Syscall6(_SYS_GETDIRENTRIES64, uintptr(fd), uintptr(p), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
n = int(r0)
if e1 != 0 {
return n, errnoErr(e1)
diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin.go b/vendor/golang.org/x/sys/unix/syscall_darwin.go
index 0cf31acf..b6257389 100644
--- a/vendor/golang.org/x/sys/unix/syscall_darwin.go
+++ b/vendor/golang.org/x/sys/unix/syscall_darwin.go
@@ -13,29 +13,11 @@
package unix
import (
- "errors"
+ "runtime"
"syscall"
"unsafe"
)
-const ImplementsGetwd = true
-
-func Getwd() (string, error) {
- buf := make([]byte, 2048)
- attrs, err := getAttrList(".", attrList{CommonAttr: attrCmnFullpath}, buf, 0)
- if err == nil && len(attrs) == 1 && len(attrs[0]) >= 2 {
- wd := string(attrs[0])
- // Sanity check that it's an absolute path and ends
- // in a null byte, which we then strip.
- if wd[0] == '/' && wd[len(wd)-1] == 0 {
- return wd[:len(wd)-1], nil
- }
- }
- // If pkg/os/getwd.go gets ENOTSUP, it will fall back to the
- // slow algorithm.
- return "", ENOTSUP
-}
-
// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.
type SockaddrDatalink struct {
Len uint8
@@ -49,6 +31,41 @@ type SockaddrDatalink struct {
raw RawSockaddrDatalink
}
+// SockaddrCtl implements the Sockaddr interface for AF_SYSTEM type sockets.
+type SockaddrCtl struct {
+ ID uint32
+ Unit uint32
+ raw RawSockaddrCtl
+}
+
+func (sa *SockaddrCtl) sockaddr() (unsafe.Pointer, _Socklen, error) {
+ sa.raw.Sc_len = SizeofSockaddrCtl
+ sa.raw.Sc_family = AF_SYSTEM
+ sa.raw.Ss_sysaddr = AF_SYS_CONTROL
+ sa.raw.Sc_id = sa.ID
+ sa.raw.Sc_unit = sa.Unit
+ return unsafe.Pointer(&sa.raw), SizeofSockaddrCtl, nil
+}
+
+func anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {
+ switch rsa.Addr.Family {
+ case AF_SYSTEM:
+ pp := (*RawSockaddrCtl)(unsafe.Pointer(rsa))
+ if pp.Ss_sysaddr == AF_SYS_CONTROL {
+ sa := new(SockaddrCtl)
+ sa.ID = pp.Sc_id
+ sa.Unit = pp.Sc_unit
+ return sa, nil
+ }
+ }
+ return nil, EAFNOSUPPORT
+}
+
+// Some external packages rely on SYS___SYSCTL being defined to implement their
+// own sysctl wrappers. Provide it here, even though direct syscalls are no
+// longer supported on darwin.
+const SYS___SYSCTL = SYS_SYSCTL
+
// Translate "kern.hostname" to []_C_int{0,1,2,3}.
func nametomib(name string) (mib []_C_int, err error) {
const siz = unsafe.Sizeof(mib[0])
@@ -92,11 +109,6 @@ func direntNamlen(buf []byte) (uint64, bool) {
func PtraceAttach(pid int) (err error) { return ptrace(PT_ATTACH, pid, 0, 0) }
func PtraceDetach(pid int) (err error) { return ptrace(PT_DETACH, pid, 0, 0) }
-const (
- attrBitMapCount = 5
- attrCmnFullpath = 0x08000000
-)
-
type attrList struct {
bitmapCount uint16
_ uint16
@@ -107,54 +119,6 @@ type attrList struct {
Forkattr uint32
}
-func getAttrList(path string, attrList attrList, attrBuf []byte, options uint) (attrs [][]byte, err error) {
- if len(attrBuf) < 4 {
- return nil, errors.New("attrBuf too small")
- }
- attrList.bitmapCount = attrBitMapCount
-
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return nil, err
- }
-
- if err := getattrlist(_p0, unsafe.Pointer(&attrList), unsafe.Pointer(&attrBuf[0]), uintptr(len(attrBuf)), int(options)); err != nil {
- return nil, err
- }
- size := *(*uint32)(unsafe.Pointer(&attrBuf[0]))
-
- // dat is the section of attrBuf that contains valid data,
- // without the 4 byte length header. All attribute offsets
- // are relative to dat.
- dat := attrBuf
- if int(size) < len(attrBuf) {
- dat = dat[:size]
- }
- dat = dat[4:] // remove length prefix
-
- for i := uint32(0); int(i) < len(dat); {
- header := dat[i:]
- if len(header) < 8 {
- return attrs, errors.New("truncated attribute header")
- }
- datOff := *(*int32)(unsafe.Pointer(&header[0]))
- attrLen := *(*uint32)(unsafe.Pointer(&header[4]))
- if datOff < 0 || uint32(datOff)+attrLen > uint32(len(dat)) {
- return attrs, errors.New("truncated results; attrBuf too small")
- }
- end := uint32(datOff) + attrLen
- attrs = append(attrs, dat[datOff:end])
- i = end
- if r := i % 4; r != 0 {
- i += (4 - r)
- }
- }
- return
-}
-
-//sys getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error)
-
//sysnb pipe() (r int, w int, err error)
func Pipe(p []int) (err error) {
@@ -324,6 +288,35 @@ func Kill(pid int, signum syscall.Signal) (err error) { return kill(pid, int(sig
//sys ioctl(fd int, req uint, arg uintptr) (err error)
+func IoctlCtlInfo(fd int, ctlInfo *CtlInfo) error {
+ err := ioctl(fd, CTLIOCGINFO, uintptr(unsafe.Pointer(ctlInfo)))
+ runtime.KeepAlive(ctlInfo)
+ return err
+}
+
+// IfreqMTU is struct ifreq used to get or set a network device's MTU.
+type IfreqMTU struct {
+ Name [IFNAMSIZ]byte
+ MTU int32
+}
+
+// IoctlGetIfreqMTU performs the SIOCGIFMTU ioctl operation on fd to get the MTU
+// of the network device specified by ifname.
+func IoctlGetIfreqMTU(fd int, ifname string) (*IfreqMTU, error) {
+ var ifreq IfreqMTU
+ copy(ifreq.Name[:], ifname)
+ err := ioctl(fd, SIOCGIFMTU, uintptr(unsafe.Pointer(&ifreq)))
+ return &ifreq, err
+}
+
+// IoctlSetIfreqMTU performs the SIOCSIFMTU ioctl operation on fd to set the MTU
+// of the network device specified by ifreq.Name.
+func IoctlSetIfreqMTU(fd int, ifreq *IfreqMTU) error {
+ err := ioctl(fd, SIOCSIFMTU, uintptr(unsafe.Pointer(ifreq)))
+ runtime.KeepAlive(ifreq)
+ return err
+}
+
//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS_SYSCTL
func Uname(uname *Utsname) error {
@@ -396,6 +389,8 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
//sys Chroot(path string) (err error)
//sys ClockGettime(clockid int32, time *Timespec) (err error)
//sys Close(fd int) (err error)
+//sys Clonefile(src string, dst string, flags int) (err error)
+//sys Clonefileat(srcDirfd int, src string, dstDirfd int, dst string, flags int) (err error)
//sys Dup(fd int) (nfd int, err error)
//sys Dup2(from int, to int) (err error)
//sys Exchangedata(path1 string, path2 string, options int) (err error)
@@ -407,10 +402,12 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error)
//sys Fchown(fd int, uid int, gid int) (err error)
//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error)
+//sys Fclonefileat(srcDirfd int, dstDirfd int, dst string, flags int) (err error)
//sys Flock(fd int, how int) (err error)
//sys Fpathconf(fd int, name int) (val int, err error)
//sys Fsync(fd int) (err error)
//sys Ftruncate(fd int, length int64) (err error)
+//sys Getcwd(buf []byte) (n int, err error)
//sys Getdtablesize() (size int)
//sysnb Getegid() (egid int)
//sysnb Geteuid() (uid int)
diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_386.go b/vendor/golang.org/x/sys/unix/syscall_darwin_386.go
index 2724e3a5..6c1f4ab9 100644
--- a/vendor/golang.org/x/sys/unix/syscall_darwin_386.go
+++ b/vendor/golang.org/x/sys/unix/syscall_darwin_386.go
@@ -6,11 +6,7 @@
package unix
-import (
- "syscall"
-)
-
-//sys ptrace(request int, pid int, addr uintptr, data uintptr) (err error)
+import "syscall"
func setTimespec(sec, nsec int64) Timespec {
return Timespec{Sec: int32(sec), Nsec: int32(nsec)}
@@ -44,14 +40,11 @@ func (cmsg *Cmsghdr) SetLen(length int) {
func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
-// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
-// of darwin/386 the syscall is called sysctl instead of __sysctl.
-const SYS___SYSCTL = SYS_SYSCTL
-
//sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64
//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64
//sys Fstatfs(fd int, stat *Statfs_t) (err error) = SYS_FSTATFS64
//sys getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT64
//sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64
+//sys ptrace(request int, pid int, addr uintptr, data uintptr) (err error)
//sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64
//sys Statfs(path string, stat *Statfs_t) (err error) = SYS_STATFS64
diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.1_11.go b/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.1_11.go
deleted file mode 100644
index 68ebd6fa..00000000
--- a/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.1_11.go
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build darwin,amd64,!go1.12
-
-package unix
-
-//sys Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) = SYS_GETDIRENTRIES64
diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go
index ce2e0d24..0582ae25 100644
--- a/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go
+++ b/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go
@@ -6,11 +6,7 @@
package unix
-import (
- "syscall"
-)
-
-//sys ptrace(request int, pid int, addr uintptr, data uintptr) (err error)
+import "syscall"
func setTimespec(sec, nsec int64) Timespec {
return Timespec{Sec: sec, Nsec: nsec}
@@ -44,14 +40,11 @@ func (cmsg *Cmsghdr) SetLen(length int) {
func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
-// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
-// of darwin/amd64 the syscall is called sysctl instead of __sysctl.
-const SYS___SYSCTL = SYS_SYSCTL
-
//sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64
//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64
//sys Fstatfs(fd int, stat *Statfs_t) (err error) = SYS_FSTATFS64
//sys getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT64
//sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64
+//sys ptrace(request int, pid int, addr uintptr, data uintptr) (err error)
//sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64
//sys Statfs(path string, stat *Statfs_t) (err error) = SYS_STATFS64
diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_arm.1_11.go b/vendor/golang.org/x/sys/unix/syscall_darwin_arm.1_11.go
deleted file mode 100644
index 0e3f25ac..00000000
--- a/vendor/golang.org/x/sys/unix/syscall_darwin_arm.1_11.go
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build darwin,arm,!go1.12
-
-package unix
-
-func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
- return 0, ENOSYS
-}
diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go b/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go
index fc17a3f2..c6a9733b 100644
--- a/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go
+++ b/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go
@@ -4,9 +4,7 @@
package unix
-import (
- "syscall"
-)
+import "syscall"
func ptrace(request int, pid int, addr uintptr, data uintptr) error {
return ENOTSUP
@@ -44,10 +42,6 @@ func (cmsg *Cmsghdr) SetLen(length int) {
func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) // sic
-// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
-// of darwin/arm the syscall is called sysctl instead of __sysctl.
-const SYS___SYSCTL = SYS_SYSCTL
-
//sys Fstat(fd int, stat *Stat_t) (err error)
//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error)
//sys Fstatfs(fd int, stat *Statfs_t) (err error)
diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.1_11.go b/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.1_11.go
deleted file mode 100644
index 01d45040..00000000
--- a/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.1_11.go
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build darwin,arm64,!go1.12
-
-package unix
-
-func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
- return 0, ENOSYS
-}
diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go
index 1e91ddf3..253afa4d 100644
--- a/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go
+++ b/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go
@@ -6,13 +6,7 @@
package unix
-import (
- "syscall"
-)
-
-func ptrace(request int, pid int, addr uintptr, data uintptr) error {
- return ENOTSUP
-}
+import "syscall"
func setTimespec(sec, nsec int64) Timespec {
return Timespec{Sec: sec, Nsec: nsec}
@@ -46,14 +40,11 @@ func (cmsg *Cmsghdr) SetLen(length int) {
func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) // sic
-// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
-// of darwin/arm64 the syscall is called sysctl instead of __sysctl.
-const SYS___SYSCTL = SYS_SYSCTL
-
//sys Fstat(fd int, stat *Stat_t) (err error)
//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error)
//sys Fstatfs(fd int, stat *Statfs_t) (err error)
//sys getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT
//sys Lstat(path string, stat *Stat_t) (err error)
+//sys ptrace(request int, pid int, addr uintptr, data uintptr) (err error)
//sys Stat(path string, stat *Stat_t) (err error)
//sys Statfs(path string, stat *Statfs_t) (err error)
diff --git a/vendor/golang.org/x/sys/unix/syscall_dragonfly.go b/vendor/golang.org/x/sys/unix/syscall_dragonfly.go
index 8a195ae5..a4f2944a 100644
--- a/vendor/golang.org/x/sys/unix/syscall_dragonfly.go
+++ b/vendor/golang.org/x/sys/unix/syscall_dragonfly.go
@@ -47,6 +47,10 @@ type SockaddrDatalink struct {
raw RawSockaddrDatalink
}
+func anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {
+ return nil, EAFNOSUPPORT
+}
+
// Translate "kern.hostname" to []_C_int{0,1,2,3}.
func nametomib(name string) (mib []_C_int, err error) {
const siz = unsafe.Sizeof(mib[0])
@@ -101,6 +105,19 @@ func Pipe(p []int) (err error) {
return
}
+//sysnb pipe2(p *[2]_C_int, flags int) (err error)
+
+func Pipe2(p []int, flags int) error {
+ if len(p) != 2 {
+ return EINVAL
+ }
+ var pp [2]_C_int
+ err := pipe2(&pp, flags)
+ p[0] = int(pp[0])
+ p[1] = int(pp[1])
+ return err
+}
+
//sys extpread(fd int, p []byte, flags int, offset int64) (n int, err error)
func Pread(fd int, p []byte, offset int64) (n int, err error) {
return extpread(fd, p, 0, offset)
@@ -129,23 +146,8 @@ func Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) {
return
}
-const ImplementsGetwd = true
-
//sys Getcwd(buf []byte) (n int, err error) = SYS___GETCWD
-func Getwd() (string, error) {
- var buf [PathMax]byte
- _, err := Getcwd(buf[0:])
- if err != nil {
- return "", err
- }
- n := clen(buf[:])
- if n < 1 {
- return "", EINVAL
- }
- return string(buf[:n]), nil
-}
-
func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
var _p0 unsafe.Pointer
var bufsize uintptr
diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd.go b/vendor/golang.org/x/sys/unix/syscall_freebsd.go
index 6932e7c2..acc00c2e 100644
--- a/vendor/golang.org/x/sys/unix/syscall_freebsd.go
+++ b/vendor/golang.org/x/sys/unix/syscall_freebsd.go
@@ -54,6 +54,10 @@ type SockaddrDatalink struct {
raw RawSockaddrDatalink
}
+func anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {
+ return nil, EAFNOSUPPORT
+}
+
// Translate "kern.hostname" to []_C_int{0,1,2,3}.
func nametomib(name string) (mib []_C_int, err error) {
const siz = unsafe.Sizeof(mib[0])
@@ -140,23 +144,8 @@ func Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) {
return
}
-const ImplementsGetwd = true
-
//sys Getcwd(buf []byte) (n int, err error) = SYS___GETCWD
-func Getwd() (string, error) {
- var buf [PathMax]byte
- _, err := Getcwd(buf[0:])
- if err != nil {
- return "", err
- }
- n := clen(buf[:])
- if n < 1 {
- return "", EINVAL
- }
- return string(buf[:n]), nil
-}
-
func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
var (
_p0 unsafe.Pointer
diff --git a/vendor/golang.org/x/sys/unix/syscall_illumos.go b/vendor/golang.org/x/sys/unix/syscall_illumos.go
index 99e62dcd..bbc4f3ea 100644
--- a/vendor/golang.org/x/sys/unix/syscall_illumos.go
+++ b/vendor/golang.org/x/sys/unix/syscall_illumos.go
@@ -24,7 +24,7 @@ func bytes2iovec(bs [][]byte) []Iovec {
return iovecs
}
-//sys readv(fd int, iovs []Iovec) (n int, err error)
+//sys readv(fd int, iovs []Iovec) (n int, err error)
func Readv(fd int, iovs [][]byte) (n int, err error) {
iovecs := bytes2iovec(iovs)
@@ -32,7 +32,7 @@ func Readv(fd int, iovs [][]byte) (n int, err error) {
return n, err
}
-//sys preadv(fd int, iovs []Iovec, off int64) (n int, err error)
+//sys preadv(fd int, iovs []Iovec, off int64) (n int, err error)
func Preadv(fd int, iovs [][]byte, off int64) (n int, err error) {
iovecs := bytes2iovec(iovs)
@@ -40,7 +40,7 @@ func Preadv(fd int, iovs [][]byte, off int64) (n int, err error) {
return n, err
}
-//sys writev(fd int, iovs []Iovec) (n int, err error)
+//sys writev(fd int, iovs []Iovec) (n int, err error)
func Writev(fd int, iovs [][]byte) (n int, err error) {
iovecs := bytes2iovec(iovs)
@@ -48,10 +48,43 @@ func Writev(fd int, iovs [][]byte) (n int, err error) {
return n, err
}
-//sys pwritev(fd int, iovs []Iovec, off int64) (n int, err error)
+//sys pwritev(fd int, iovs []Iovec, off int64) (n int, err error)
func Pwritev(fd int, iovs [][]byte, off int64) (n int, err error) {
iovecs := bytes2iovec(iovs)
n, err = pwritev(fd, iovecs, off)
return n, err
}
+
+//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) = libsocket.accept4
+
+func Accept4(fd int, flags int) (nfd int, sa Sockaddr, err error) {
+ var rsa RawSockaddrAny
+ var len _Socklen = SizeofSockaddrAny
+ nfd, err = accept4(fd, &rsa, &len, flags)
+ if err != nil {
+ return
+ }
+ if len > SizeofSockaddrAny {
+ panic("RawSockaddrAny too small")
+ }
+ sa, err = anyToSockaddr(fd, &rsa)
+ if err != nil {
+ Close(nfd)
+ nfd = 0
+ }
+ return
+}
+
+//sysnb pipe2(p *[2]_C_int, flags int) (err error)
+
+func Pipe2(p []int, flags int) error {
+ if len(p) != 2 {
+ return EINVAL
+ }
+ var pp [2]_C_int
+ err := pipe2(&pp, flags)
+ p[0] = int(pp[0])
+ p[1] = int(pp[1])
+ return err
+}
diff --git a/vendor/golang.org/x/sys/unix/syscall_linux.go b/vendor/golang.org/x/sys/unix/syscall_linux.go
index e50e4cb2..1fdfe48e 100644
--- a/vendor/golang.org/x/sys/unix/syscall_linux.go
+++ b/vendor/golang.org/x/sys/unix/syscall_linux.go
@@ -82,15 +82,6 @@ func IoctlRetInt(fd int, req uint) (int, error) {
return int(ret), nil
}
-// IoctlSetPointerInt performs an ioctl operation which sets an
-// integer value on fd, using the specified request number. The ioctl
-// argument is called with a pointer to the integer value, rather than
-// passing the integer value directly.
-func IoctlSetPointerInt(fd int, req uint, value int) error {
- v := int32(value)
- return ioctl(fd, req, uintptr(unsafe.Pointer(&v)))
-}
-
func IoctlSetRTCTime(fd int, value *RTCTime) error {
err := ioctl(fd, RTC_SET_TIME, uintptr(unsafe.Pointer(value)))
runtime.KeepAlive(value)
@@ -115,12 +106,53 @@ func IoctlGetRTCTime(fd int) (*RTCTime, error) {
return &value, err
}
+// IoctlGetWatchdogInfo fetches information about a watchdog device from the
+// Linux watchdog API. For more information, see:
+// https://www.kernel.org/doc/html/latest/watchdog/watchdog-api.html.
+func IoctlGetWatchdogInfo(fd int) (*WatchdogInfo, error) {
+ var value WatchdogInfo
+ err := ioctl(fd, WDIOC_GETSUPPORT, uintptr(unsafe.Pointer(&value)))
+ return &value, err
+}
+
func IoctlGetRTCWkAlrm(fd int) (*RTCWkAlrm, error) {
var value RTCWkAlrm
err := ioctl(fd, RTC_WKALM_RD, uintptr(unsafe.Pointer(&value)))
return &value, err
}
+// IoctlFileCloneRange performs an FICLONERANGE ioctl operation to clone the
+// range of data conveyed in value to the file associated with the file
+// descriptor destFd. See the ioctl_ficlonerange(2) man page for details.
+func IoctlFileCloneRange(destFd int, value *FileCloneRange) error {
+ err := ioctl(destFd, FICLONERANGE, uintptr(unsafe.Pointer(value)))
+ runtime.KeepAlive(value)
+ return err
+}
+
+// IoctlFileClone performs an FICLONE ioctl operation to clone the entire file
+// associated with the file description srcFd to the file associated with the
+// file descriptor destFd. See the ioctl_ficlone(2) man page for details.
+func IoctlFileClone(destFd, srcFd int) error {
+ return ioctl(destFd, FICLONE, uintptr(srcFd))
+}
+
+// IoctlFileDedupeRange performs an FIDEDUPERANGE ioctl operation to share the
+// range of data conveyed in value with the file associated with the file
+// descriptor destFd. See the ioctl_fideduperange(2) man page for details.
+func IoctlFileDedupeRange(destFd int, value *FileDedupeRange) error {
+ err := ioctl(destFd, FIDEDUPERANGE, uintptr(unsafe.Pointer(value)))
+ runtime.KeepAlive(value)
+ return err
+}
+
+// IoctlWatchdogKeepalive issues a keepalive ioctl to a watchdog device. For
+// more information, see:
+// https://www.kernel.org/doc/html/latest/watchdog/watchdog-api.html.
+func IoctlWatchdogKeepalive(fd int) error {
+ return ioctl(fd, WDIOC_KEEPALIVE, 0)
+}
+
//sys Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error)
func Link(oldpath string, newpath string) (err error) {
@@ -145,6 +177,12 @@ func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error)
return openat(dirfd, path, flags|O_LARGEFILE, mode)
}
+//sys openat2(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error)
+
+func Openat2(dirfd int, path string, how *OpenHow) (fd int, err error) {
+ return openat2(dirfd, path, how, SizeofOpenHow)
+}
+
//sys ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error)
func Ppoll(fds []PollFd, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
@@ -603,6 +641,36 @@ func (sa *SockaddrCAN) sockaddr() (unsafe.Pointer, _Socklen, error) {
return unsafe.Pointer(&sa.raw), SizeofSockaddrCAN, nil
}
+// SockaddrCANJ1939 implements the Sockaddr interface for AF_CAN using J1939
+// protocol (https://en.wikipedia.org/wiki/SAE_J1939). For more information
+// on the purposes of the fields, check the official linux kernel documentation
+// available here: https://www.kernel.org/doc/Documentation/networking/j1939.rst
+type SockaddrCANJ1939 struct {
+ Ifindex int
+ Name uint64
+ PGN uint32
+ Addr uint8
+ raw RawSockaddrCAN
+}
+
+func (sa *SockaddrCANJ1939) sockaddr() (unsafe.Pointer, _Socklen, error) {
+ if sa.Ifindex < 0 || sa.Ifindex > 0x7fffffff {
+ return nil, 0, EINVAL
+ }
+ sa.raw.Family = AF_CAN
+ sa.raw.Ifindex = int32(sa.Ifindex)
+ n := (*[8]byte)(unsafe.Pointer(&sa.Name))
+ for i := 0; i < 8; i++ {
+ sa.raw.Addr[i] = n[i]
+ }
+ p := (*[4]byte)(unsafe.Pointer(&sa.PGN))
+ for i := 0; i < 4; i++ {
+ sa.raw.Addr[i+8] = p[i]
+ }
+ sa.raw.Addr[12] = sa.Addr
+ return unsafe.Pointer(&sa.raw), SizeofSockaddrCAN, nil
+}
+
// SockaddrALG implements the Sockaddr interface for AF_ALG type sockets.
// SockaddrALG enables userspace access to the Linux kernel's cryptography
// subsystem. The Type and Name fields specify which type of hash or cipher
@@ -885,6 +953,35 @@ func (sa *SockaddrL2TPIP6) sockaddr() (unsafe.Pointer, _Socklen, error) {
return unsafe.Pointer(&sa.raw), SizeofSockaddrL2TPIP6, nil
}
+// SockaddrIUCV implements the Sockaddr interface for AF_IUCV sockets.
+type SockaddrIUCV struct {
+ UserID string
+ Name string
+ raw RawSockaddrIUCV
+}
+
+func (sa *SockaddrIUCV) sockaddr() (unsafe.Pointer, _Socklen, error) {
+ sa.raw.Family = AF_IUCV
+ // These are EBCDIC encoded by the kernel, but we still need to pad them
+ // with blanks. Initializing with blanks allows the caller to feed in either
+ // a padded or an unpadded string.
+ for i := 0; i < 8; i++ {
+ sa.raw.Nodeid[i] = ' '
+ sa.raw.User_id[i] = ' '
+ sa.raw.Name[i] = ' '
+ }
+ if len(sa.UserID) > 8 || len(sa.Name) > 8 {
+ return nil, 0, EINVAL
+ }
+ for i, b := range []byte(sa.UserID[:]) {
+ sa.raw.User_id[i] = int8(b)
+ }
+ for i, b := range []byte(sa.Name[:]) {
+ sa.raw.Name[i] = int8(b)
+ }
+ return unsafe.Pointer(&sa.raw), SizeofSockaddrIUCV, nil
+}
+
func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {
switch rsa.Addr.Family {
case AF_NETLINK:
@@ -1065,6 +1162,61 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {
}
return sa, nil
+ case AF_IUCV:
+ pp := (*RawSockaddrIUCV)(unsafe.Pointer(rsa))
+
+ var user [8]byte
+ var name [8]byte
+
+ for i := 0; i < 8; i++ {
+ user[i] = byte(pp.User_id[i])
+ name[i] = byte(pp.Name[i])
+ }
+
+ sa := &SockaddrIUCV{
+ UserID: string(user[:]),
+ Name: string(name[:]),
+ }
+ return sa, nil
+
+ case AF_CAN:
+ proto, err := GetsockoptInt(fd, SOL_SOCKET, SO_PROTOCOL)
+ if err != nil {
+ return nil, err
+ }
+
+ pp := (*RawSockaddrCAN)(unsafe.Pointer(rsa))
+
+ switch proto {
+ case CAN_J1939:
+ sa := &SockaddrCANJ1939{
+ Ifindex: int(pp.Ifindex),
+ }
+ name := (*[8]byte)(unsafe.Pointer(&sa.Name))
+ for i := 0; i < 8; i++ {
+ name[i] = pp.Addr[i]
+ }
+ pgn := (*[4]byte)(unsafe.Pointer(&sa.PGN))
+ for i := 0; i < 4; i++ {
+ pgn[i] = pp.Addr[i+8]
+ }
+ addr := (*[1]byte)(unsafe.Pointer(&sa.Addr))
+ addr[0] = pp.Addr[12]
+ return sa, nil
+ default:
+ sa := &SockaddrCAN{
+ Ifindex: int(pp.Ifindex),
+ }
+ rx := (*[4]byte)(unsafe.Pointer(&sa.RxID))
+ for i := 0; i < 4; i++ {
+ rx[i] = pp.Addr[i]
+ }
+ tx := (*[4]byte)(unsafe.Pointer(&sa.TxID))
+ for i := 0; i < 4; i++ {
+ tx[i] = pp.Addr[i+4]
+ }
+ return sa, nil
+ }
}
return nil, EAFNOSUPPORT
}
@@ -1965,10 +2117,15 @@ func isGroupMember(gid int) bool {
}
//sys faccessat(dirfd int, path string, mode uint32) (err error)
+//sys Faccessat2(dirfd int, path string, mode uint32, flags int) (err error)
func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
- if flags & ^(AT_SYMLINK_NOFOLLOW|AT_EACCESS) != 0 {
- return EINVAL
+ if flags == 0 {
+ return faccessat(dirfd, path, mode)
+ }
+
+ if err := Faccessat2(dirfd, path, mode, flags); err != ENOSYS && err != EPERM {
+ return err
}
// The Linux kernel faccessat system call does not take any flags.
@@ -1977,8 +2134,8 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
// Because people naturally expect syscall.Faccessat to act
// like C faccessat, we do the same.
- if flags == 0 {
- return faccessat(dirfd, path, mode)
+ if flags & ^(AT_SYMLINK_NOFOLLOW|AT_EACCESS) != 0 {
+ return EINVAL
}
var st Stat_t
@@ -2122,6 +2279,18 @@ func Klogset(typ int, arg int) (err error) {
return nil
}
+// RemoteIovec is Iovec with the pointer replaced with an integer.
+// It is used for ProcessVMReadv and ProcessVMWritev, where the pointer
+// refers to a location in a different process' address space, which
+// would confuse the Go garbage collector.
+type RemoteIovec struct {
+ Base uintptr
+ Len int
+}
+
+//sys ProcessVMReadv(pid int, localIov []Iovec, remoteIov []RemoteIovec, flags uint) (n int, err error) = SYS_PROCESS_VM_READV
+//sys ProcessVMWritev(pid int, localIov []Iovec, remoteIov []RemoteIovec, flags uint) (n int, err error) = SYS_PROCESS_VM_WRITEV
+
/*
* Unimplemented
*/
diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_386.go b/vendor/golang.org/x/sys/unix/syscall_linux_386.go
index 048d18e3..c97c2ee5 100644
--- a/vendor/golang.org/x/sys/unix/syscall_linux_386.go
+++ b/vendor/golang.org/x/sys/unix/syscall_linux_386.go
@@ -2,9 +2,6 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// TODO(rsc): Rewrite all nn(SP) references into name+(nn-8)(FP)
-// so that go vet can check that they are correct.
-
// +build 386,linux
package unix
diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go b/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go
index 21a4946b..baa771f8 100644
--- a/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go
+++ b/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go
@@ -3,7 +3,7 @@
// license that can be found in the LICENSE file.
// +build amd64,linux
-// +build !gccgo
+// +build gc
package unix
diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_arm.go b/vendor/golang.org/x/sys/unix/syscall_linux_arm.go
index e1913e2c..496837b1 100644
--- a/vendor/golang.org/x/sys/unix/syscall_linux_arm.go
+++ b/vendor/golang.org/x/sys/unix/syscall_linux_arm.go
@@ -7,7 +7,6 @@
package unix
import (
- "syscall"
"unsafe"
)
@@ -49,10 +48,6 @@ func Pipe2(p []int, flags int) (err error) {
return
}
-// Underlying system call writes to newoffset via pointer.
-// Implemented in assembly to avoid allocation.
-func seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno)
-
func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
newoffset, errno := seek(fd, offset, whence)
if errno != 0 {
diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gc.go b/vendor/golang.org/x/sys/unix/syscall_linux_gc.go
index c26e6ec2..9edf3961 100644
--- a/vendor/golang.org/x/sys/unix/syscall_linux_gc.go
+++ b/vendor/golang.org/x/sys/unix/syscall_linux_gc.go
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build linux,!gccgo
+// +build linux,gc
package unix
diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go b/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go
index 070bd389..90e33d8c 100644
--- a/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go
+++ b/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build linux,!gccgo,386
+// +build linux,gc,386
package unix
diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go b/vendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go
new file mode 100644
index 00000000..1a97baae
--- /dev/null
+++ b/vendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go
@@ -0,0 +1,13 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build arm,gc,linux
+
+package unix
+
+import "syscall"
+
+// Underlying system call writes to newoffset via pointer.
+// Implemented in assembly to avoid allocation.
+func seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno)
diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd.go b/vendor/golang.org/x/sys/unix/syscall_netbsd.go
index 45b50a61..1e6843b4 100644
--- a/vendor/golang.org/x/sys/unix/syscall_netbsd.go
+++ b/vendor/golang.org/x/sys/unix/syscall_netbsd.go
@@ -31,6 +31,10 @@ type SockaddrDatalink struct {
raw RawSockaddrDatalink
}
+func anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {
+ return nil, EAFNOSUPPORT
+}
+
func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
func sysctlNodes(mib []_C_int) (nodes []Sysctlnode, err error) {
@@ -141,23 +145,8 @@ func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
return
}
-const ImplementsGetwd = true
-
//sys Getcwd(buf []byte) (n int, err error) = SYS___GETCWD
-func Getwd() (string, error) {
- var buf [PathMax]byte
- _, err := Getcwd(buf[0:])
- if err != nil {
- return "", err
- }
- n := clen(buf[:])
- if n < 1 {
- return "", EINVAL
- }
- return string(buf[:n]), nil
-}
-
// TODO
func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
return -1, ENOSYS
diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd.go b/vendor/golang.org/x/sys/unix/syscall_openbsd.go
index a266e92a..6a50b50b 100644
--- a/vendor/golang.org/x/sys/unix/syscall_openbsd.go
+++ b/vendor/golang.org/x/sys/unix/syscall_openbsd.go
@@ -31,6 +31,10 @@ type SockaddrDatalink struct {
raw RawSockaddrDatalink
}
+func anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {
+ return nil, EAFNOSUPPORT
+}
+
func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
func nametomib(name string) (mib []_C_int, err error) {
@@ -114,23 +118,8 @@ func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
return
}
-const ImplementsGetwd = true
-
//sys Getcwd(buf []byte) (n int, err error) = SYS___GETCWD
-func Getwd() (string, error) {
- var buf [PathMax]byte
- _, err := Getcwd(buf[0:])
- if err != nil {
- return "", err
- }
- n := clen(buf[:])
- if n < 1 {
- return "", EINVAL
- }
- return string(buf[:n]), nil
-}
-
func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
if raceenabled {
raceReleaseMerge(unsafe.Pointer(&ioSync))
diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_mips64.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_mips64.go
new file mode 100644
index 00000000..30f28534
--- /dev/null
+++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_mips64.go
@@ -0,0 +1,35 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package unix
+
+func setTimespec(sec, nsec int64) Timespec {
+ return Timespec{Sec: sec, Nsec: nsec}
+}
+
+func setTimeval(sec, usec int64) Timeval {
+ return Timeval{Sec: sec, Usec: usec}
+}
+
+func SetKevent(k *Kevent_t, fd, mode, flags int) {
+ k.Ident = uint64(fd)
+ k.Filter = int16(mode)
+ k.Flags = uint16(flags)
+}
+
+func (iov *Iovec) SetLen(length int) {
+ iov.Len = uint64(length)
+}
+
+func (msghdr *Msghdr) SetControllen(length int) {
+ msghdr.Controllen = uint32(length)
+}
+
+func (cmsg *Cmsghdr) SetLen(length int) {
+ cmsg.Len = uint32(length)
+}
+
+// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
+// of OpenBSD the syscall is called sysctl instead of __sysctl.
+const SYS___SYSCTL = SYS_SYSCTL
diff --git a/vendor/golang.org/x/sys/unix/syscall_solaris.go b/vendor/golang.org/x/sys/unix/syscall_solaris.go
index 0e2a696a..fee6e995 100644
--- a/vendor/golang.org/x/sys/unix/syscall_solaris.go
+++ b/vendor/golang.org/x/sys/unix/syscall_solaris.go
@@ -13,6 +13,7 @@
package unix
import (
+ "runtime"
"syscall"
"unsafe"
)
@@ -553,8 +554,10 @@ func Minor(dev uint64) uint32 {
//sys ioctl(fd int, req uint, arg uintptr) (err error)
-func IoctlSetTermio(fd int, req uint, value *Termio) (err error) {
- return ioctl(fd, req, uintptr(unsafe.Pointer(value)))
+func IoctlSetTermio(fd int, req uint, value *Termio) error {
+ err := ioctl(fd, req, uintptr(unsafe.Pointer(value)))
+ runtime.KeepAlive(value)
+ return err
}
func IoctlGetTermio(fd int, req uint) (*Termio, error) {
diff --git a/vendor/golang.org/x/sys/unix/syscall_unix_gc.go b/vendor/golang.org/x/sys/unix/syscall_unix_gc.go
index 1c70d1b6..87bd161c 100644
--- a/vendor/golang.org/x/sys/unix/syscall_unix_gc.go
+++ b/vendor/golang.org/x/sys/unix/syscall_unix_gc.go
@@ -3,7 +3,7 @@
// license that can be found in the LICENSE file.
// +build darwin dragonfly freebsd linux netbsd openbsd solaris
-// +build !gccgo,!ppc64le,!ppc64
+// +build gc,!ppc64le,!ppc64
package unix
diff --git a/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go b/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go
index 86dc765a..d36216c3 100644
--- a/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go
+++ b/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go
@@ -4,7 +4,7 @@
// +build linux
// +build ppc64le ppc64
-// +build !gccgo
+// +build gc
package unix
diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go
index 6217cdba..ec376f51 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go
@@ -45,6 +45,7 @@ const (
AF_SIP = 0x18
AF_SNA = 0xb
AF_SYSTEM = 0x20
+ AF_SYS_CONTROL = 0x2
AF_UNIX = 0x1
AF_UNSPEC = 0x0
AF_UTUN = 0x26
@@ -232,6 +233,8 @@ const (
CLOCK_THREAD_CPUTIME_ID = 0x10
CLOCK_UPTIME_RAW = 0x8
CLOCK_UPTIME_RAW_APPROX = 0x9
+ CLONE_NOFOLLOW = 0x1
+ CLONE_NOOWNERCOPY = 0x2
CR0 = 0x0
CR1 = 0x1000
CR2 = 0x2000
@@ -249,6 +252,7 @@ const (
CSTOP = 0x13
CSTOPB = 0x400
CSUSP = 0x1a
+ CTLIOCGINFO = 0xc0644e03
CTL_HW = 0x6
CTL_KERN = 0x1
CTL_MAXNAME = 0xc
diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go
index e3ff2ee3..fea5dfaa 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go
@@ -45,6 +45,7 @@ const (
AF_SIP = 0x18
AF_SNA = 0xb
AF_SYSTEM = 0x20
+ AF_SYS_CONTROL = 0x2
AF_UNIX = 0x1
AF_UNSPEC = 0x0
AF_UTUN = 0x26
@@ -232,6 +233,8 @@ const (
CLOCK_THREAD_CPUTIME_ID = 0x10
CLOCK_UPTIME_RAW = 0x8
CLOCK_UPTIME_RAW_APPROX = 0x9
+ CLONE_NOFOLLOW = 0x1
+ CLONE_NOOWNERCOPY = 0x2
CR0 = 0x0
CR1 = 0x1000
CR2 = 0x2000
@@ -249,6 +252,7 @@ const (
CSTOP = 0x13
CSTOPB = 0x400
CSUSP = 0x1a
+ CTLIOCGINFO = 0xc0644e03
CTL_HW = 0x6
CTL_KERN = 0x1
CTL_MAXNAME = 0xc
diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go
index 3e417571..03feefbf 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go
@@ -45,6 +45,7 @@ const (
AF_SIP = 0x18
AF_SNA = 0xb
AF_SYSTEM = 0x20
+ AF_SYS_CONTROL = 0x2
AF_UNIX = 0x1
AF_UNSPEC = 0x0
AF_UTUN = 0x26
@@ -232,6 +233,8 @@ const (
CLOCK_THREAD_CPUTIME_ID = 0x10
CLOCK_UPTIME_RAW = 0x8
CLOCK_UPTIME_RAW_APPROX = 0x9
+ CLONE_NOFOLLOW = 0x1
+ CLONE_NOOWNERCOPY = 0x2
CR0 = 0x0
CR1 = 0x1000
CR2 = 0x2000
@@ -249,6 +252,7 @@ const (
CSTOP = 0x13
CSTOPB = 0x400
CSUSP = 0x1a
+ CTLIOCGINFO = 0xc0644e03
CTL_HW = 0x6
CTL_KERN = 0x1
CTL_MAXNAME = 0xc
diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go
index cbd8ed18..b40fb1f6 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go
@@ -45,6 +45,7 @@ const (
AF_SIP = 0x18
AF_SNA = 0xb
AF_SYSTEM = 0x20
+ AF_SYS_CONTROL = 0x2
AF_UNIX = 0x1
AF_UNSPEC = 0x0
AF_UTUN = 0x26
@@ -232,6 +233,8 @@ const (
CLOCK_THREAD_CPUTIME_ID = 0x10
CLOCK_UPTIME_RAW = 0x8
CLOCK_UPTIME_RAW_APPROX = 0x9
+ CLONE_NOFOLLOW = 0x1
+ CLONE_NOOWNERCOPY = 0x2
CR0 = 0x0
CR1 = 0x1000
CR2 = 0x2000
@@ -249,6 +252,7 @@ const (
CSTOP = 0x13
CSTOPB = 0x400
CSUSP = 0x1a
+ CTLIOCGINFO = 0xc0644e03
CTL_HW = 0x6
CTL_KERN = 0x1
CTL_MAXNAME = 0xc
diff --git a/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go
index 61304717..f5e91b7a 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go
@@ -62,6 +62,7 @@ const (
B28800 = 0x7080
B300 = 0x12c
B38400 = 0x9600
+ B460800 = 0x70800
B4800 = 0x12c0
B50 = 0x32
B57600 = 0xe100
@@ -69,12 +70,15 @@ const (
B7200 = 0x1c20
B75 = 0x4b
B76800 = 0x12c00
+ B921600 = 0xe1000
B9600 = 0x2580
+ BIOCFEEDBACK = 0x8004427d
BIOCFLUSH = 0x20004268
BIOCGBLEN = 0x40044266
BIOCGDLT = 0x4004426a
BIOCGDLTLIST = 0xc0104279
BIOCGETIF = 0x4020426b
+ BIOCGFEEDBACK = 0x4004427c
BIOCGHDRCMPLT = 0x40044274
BIOCGRSIG = 0x40044272
BIOCGRTIMEOUT = 0x4010426e
@@ -88,6 +92,7 @@ const (
BIOCSETF = 0x80104267
BIOCSETIF = 0x8020426c
BIOCSETWF = 0x8010427b
+ BIOCSFEEDBACK = 0x8004427d
BIOCSHDRCMPLT = 0x80044275
BIOCSRSIG = 0x80044273
BIOCSRTIMEOUT = 0x8010426d
@@ -125,6 +130,7 @@ const (
BPF_MINBUFSIZE = 0x20
BPF_MINOR_VERSION = 0x1
BPF_MISC = 0x7
+ BPF_MOD = 0x90
BPF_MSH = 0xa0
BPF_MUL = 0x20
BPF_NEG = 0x80
@@ -139,6 +145,7 @@ const (
BPF_TXA = 0x80
BPF_W = 0x0
BPF_X = 0x8
+ BPF_XOR = 0xa0
BRKINT = 0x2
CFLUSH = 0xf
CLOCAL = 0x8000
@@ -156,6 +163,12 @@ const (
CLOCK_UPTIME_FAST = 0x8
CLOCK_UPTIME_PRECISE = 0x7
CLOCK_VIRTUAL = 0x1
+ CPUSTATES = 0x5
+ CP_IDLE = 0x4
+ CP_INTR = 0x3
+ CP_NICE = 0x1
+ CP_SYS = 0x2
+ CP_USER = 0x0
CREAD = 0x800
CRTSCTS = 0x30000
CS5 = 0x0
@@ -175,6 +188,7 @@ const (
DLT_A429 = 0xb8
DLT_A653_ICM = 0xb9
DLT_AIRONET_HEADER = 0x78
+ DLT_AOS = 0xde
DLT_APPLE_IP_OVER_IEEE1394 = 0x8a
DLT_ARCNET = 0x7
DLT_ARCNET_LINUX = 0x81
@@ -184,22 +198,33 @@ const (
DLT_AX25 = 0x3
DLT_AX25_KISS = 0xca
DLT_BACNET_MS_TP = 0xa5
+ DLT_BLUETOOTH_BREDR_BB = 0xff
DLT_BLUETOOTH_HCI_H4 = 0xbb
DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9
+ DLT_BLUETOOTH_LE_LL = 0xfb
+ DLT_BLUETOOTH_LE_LL_WITH_PHDR = 0x100
+ DLT_BLUETOOTH_LINUX_MONITOR = 0xfe
DLT_CAN20B = 0xbe
+ DLT_CAN_SOCKETCAN = 0xe3
DLT_CHAOS = 0x5
DLT_CHDLC = 0x68
DLT_CISCO_IOS = 0x76
DLT_C_HDLC = 0x68
DLT_C_HDLC_WITH_DIR = 0xcd
+ DLT_DBUS = 0xe7
+ DLT_DECT = 0xdd
DLT_DOCSIS = 0x8f
+ DLT_DVB_CI = 0xeb
DLT_ECONET = 0x73
DLT_EN10MB = 0x1
DLT_EN3MB = 0x2
DLT_ENC = 0x6d
+ DLT_EPON = 0x103
DLT_ERF = 0xc5
DLT_ERF_ETH = 0xaf
DLT_ERF_POS = 0xb0
+ DLT_FC_2 = 0xe0
+ DLT_FC_2_WITH_FRAME_DELIMS = 0xe1
DLT_FDDI = 0xa
DLT_FLEXRAY = 0xd2
DLT_FRELAY = 0x6b
@@ -209,6 +234,8 @@ const (
DLT_GPF_F = 0xab
DLT_GPF_T = 0xaa
DLT_GPRS_LLC = 0xa9
+ DLT_GSMTAP_ABIS = 0xda
+ DLT_GSMTAP_UM = 0xd9
DLT_HHDLC = 0x79
DLT_IBM_SN = 0x92
DLT_IBM_SP = 0x91
@@ -218,18 +245,28 @@ const (
DLT_IEEE802_11_RADIO_AVS = 0xa3
DLT_IEEE802_15_4 = 0xc3
DLT_IEEE802_15_4_LINUX = 0xbf
+ DLT_IEEE802_15_4_NOFCS = 0xe6
DLT_IEEE802_15_4_NONASK_PHY = 0xd7
DLT_IEEE802_16_MAC_CPS = 0xbc
DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1
+ DLT_INFINIBAND = 0xf7
DLT_IPFILTER = 0x74
DLT_IPMB = 0xc7
DLT_IPMB_LINUX = 0xd1
+ DLT_IPMI_HPM_2 = 0x104
+ DLT_IPNET = 0xe2
+ DLT_IPOIB = 0xf2
+ DLT_IPV4 = 0xe4
+ DLT_IPV6 = 0xe5
DLT_IP_OVER_FC = 0x7a
+ DLT_ISO_14443 = 0x108
DLT_JUNIPER_ATM1 = 0x89
DLT_JUNIPER_ATM2 = 0x87
+ DLT_JUNIPER_ATM_CEMIC = 0xee
DLT_JUNIPER_CHDLC = 0xb5
DLT_JUNIPER_ES = 0x84
DLT_JUNIPER_ETHER = 0xb2
+ DLT_JUNIPER_FIBRECHANNEL = 0xea
DLT_JUNIPER_FRELAY = 0xb4
DLT_JUNIPER_GGSN = 0x85
DLT_JUNIPER_ISM = 0xc2
@@ -242,25 +279,40 @@ const (
DLT_JUNIPER_PPPOE = 0xa7
DLT_JUNIPER_PPPOE_ATM = 0xa8
DLT_JUNIPER_SERVICES = 0x88
+ DLT_JUNIPER_SRX_E2E = 0xe9
DLT_JUNIPER_ST = 0xc8
DLT_JUNIPER_VP = 0xb7
+ DLT_JUNIPER_VS = 0xe8
DLT_LAPB_WITH_DIR = 0xcf
DLT_LAPD = 0xcb
DLT_LIN = 0xd4
+ DLT_LINUX_EVDEV = 0xd8
DLT_LINUX_IRDA = 0x90
DLT_LINUX_LAPD = 0xb1
DLT_LINUX_SLL = 0x71
DLT_LOOP = 0x6c
DLT_LTALK = 0x72
+ DLT_MATCHING_MAX = 0x109
+ DLT_MATCHING_MIN = 0x68
DLT_MFR = 0xb6
DLT_MOST = 0xd3
+ DLT_MPEG_2_TS = 0xf3
+ DLT_MPLS = 0xdb
DLT_MTP2 = 0x8c
DLT_MTP2_WITH_PHDR = 0x8b
DLT_MTP3 = 0x8d
+ DLT_MUX27010 = 0xec
+ DLT_NETANALYZER = 0xf0
+ DLT_NETANALYZER_TRANSPARENT = 0xf1
+ DLT_NETLINK = 0xfd
+ DLT_NFC_LLCP = 0xf5
+ DLT_NFLOG = 0xef
+ DLT_NG40 = 0xf4
DLT_NULL = 0x0
DLT_PCI_EXP = 0x7d
DLT_PFLOG = 0x75
DLT_PFSYNC = 0x12
+ DLT_PKTAP = 0x102
DLT_PPI = 0xc0
DLT_PPP = 0x9
DLT_PPP_BSDOS = 0x10
@@ -269,22 +321,51 @@ const (
DLT_PPP_SERIAL = 0x32
DLT_PPP_WITH_DIR = 0xcc
DLT_PRISM_HEADER = 0x77
+ DLT_PROFIBUS_DL = 0x101
DLT_PRONET = 0x4
DLT_RAIF1 = 0xc6
DLT_RAW = 0xc
+ DLT_RDS = 0x109
DLT_REDBACK_SMARTEDGE = 0x20
DLT_RIO = 0x7c
+ DLT_RTAC_SERIAL = 0xfa
DLT_SCCP = 0x8e
+ DLT_SCTP = 0xf8
DLT_SITA = 0xc4
DLT_SLIP = 0x8
DLT_SLIP_BSDOS = 0xf
+ DLT_STANAG_5066_D_PDU = 0xed
DLT_SUNATM = 0x7b
DLT_SYMANTEC_FIREWALL = 0x63
DLT_TZSP = 0x80
DLT_USB = 0xba
+ DLT_USBPCAP = 0xf9
+ DLT_USB_FREEBSD = 0xba
DLT_USB_LINUX = 0xbd
+ DLT_USB_LINUX_MMAPPED = 0xdc
+ DLT_USER0 = 0x93
+ DLT_USER1 = 0x94
+ DLT_USER10 = 0x9d
+ DLT_USER11 = 0x9e
+ DLT_USER12 = 0x9f
+ DLT_USER13 = 0xa0
+ DLT_USER14 = 0xa1
+ DLT_USER15 = 0xa2
+ DLT_USER2 = 0x95
+ DLT_USER3 = 0x96
+ DLT_USER4 = 0x97
+ DLT_USER5 = 0x98
+ DLT_USER6 = 0x99
+ DLT_USER7 = 0x9a
+ DLT_USER8 = 0x9b
+ DLT_USER9 = 0x9c
+ DLT_WATTSTOPPER_DLM = 0x107
+ DLT_WIHART = 0xdf
+ DLT_WIRESHARK_UPPER_PDU = 0xfc
DLT_X2E_SERIAL = 0xd5
DLT_X2E_XORAYA = 0xd6
+ DLT_ZWAVE_R1_R2 = 0x105
+ DLT_ZWAVE_R3 = 0x106
DT_BLK = 0x6
DT_CHR = 0x2
DT_DBF = 0xf
@@ -323,10 +404,11 @@ const (
EV_EOF = 0x8000
EV_ERROR = 0x4000
EV_FLAG1 = 0x2000
+ EV_HUP = 0x800
EV_NODATA = 0x1000
EV_ONESHOT = 0x10
EV_RECEIPT = 0x40
- EV_SYSFLAGS = 0xf000
+ EV_SYSFLAGS = 0xf800
EXTA = 0x4b00
EXTB = 0x9600
EXTEXIT_LWP = 0x10000
@@ -365,8 +447,9 @@ const (
IFF_ALLMULTI = 0x200
IFF_ALTPHYS = 0x4000
IFF_BROADCAST = 0x2
- IFF_CANTCHANGE = 0x118e72
+ IFF_CANTCHANGE = 0x318e72
IFF_DEBUG = 0x4
+ IFF_IDIRECT = 0x200000
IFF_LINK0 = 0x1000
IFF_LINK1 = 0x2000
IFF_LINK2 = 0x4000
@@ -441,7 +524,6 @@ const (
IFT_EPLRS = 0x57
IFT_ESCON = 0x49
IFT_ETHER = 0x6
- IFT_FAITH = 0xf2
IFT_FAST = 0x7d
IFT_FASTETHER = 0x3e
IFT_FASTETHERFX = 0x45
@@ -614,6 +696,7 @@ const (
IN_CLASSD_NET = 0xf0000000
IN_CLASSD_NSHIFT = 0x1c
IN_LOOPBACKNET = 0x7f
+ IN_RFC3021_MASK = 0xfffffffe
IPPROTO_3PC = 0x22
IPPROTO_ADFS = 0x44
IPPROTO_AH = 0x33
@@ -735,7 +818,6 @@ const (
IPV6_DEFHLIM = 0x40
IPV6_DONTFRAG = 0x3e
IPV6_DSTOPTS = 0x32
- IPV6_FAITH = 0x1d
IPV6_FLOWINFO_MASK = 0xffffff0f
IPV6_FLOWLABEL_MASK = 0xffff0f00
IPV6_FRAGTTL = 0x78
@@ -747,7 +829,6 @@ const (
IPV6_HLIMDEC = 0x1
IPV6_HOPLIMIT = 0x2f
IPV6_HOPOPTS = 0x31
- IPV6_IPSEC_POLICY = 0x1c
IPV6_JOIN_GROUP = 0xc
IPV6_LEAVE_GROUP = 0xd
IPV6_MAXHLIM = 0xff
@@ -795,16 +876,22 @@ const (
IP_DUMMYNET_DEL = 0x3d
IP_DUMMYNET_FLUSH = 0x3e
IP_DUMMYNET_GET = 0x40
- IP_FAITH = 0x16
IP_FW_ADD = 0x32
IP_FW_DEL = 0x33
IP_FW_FLUSH = 0x34
IP_FW_GET = 0x36
IP_FW_RESETLOG = 0x37
+ IP_FW_TBL_ADD = 0x2a
+ IP_FW_TBL_CREATE = 0x28
+ IP_FW_TBL_DEL = 0x2b
+ IP_FW_TBL_DESTROY = 0x29
+ IP_FW_TBL_EXPIRE = 0x2f
+ IP_FW_TBL_FLUSH = 0x2c
+ IP_FW_TBL_GET = 0x2d
+ IP_FW_TBL_ZERO = 0x2e
IP_FW_X = 0x31
IP_FW_ZERO = 0x35
IP_HDRINCL = 0x2
- IP_IPSEC_POLICY = 0x15
IP_MAXPACKET = 0xffff
IP_MAX_MEMBERSHIPS = 0x14
IP_MF = 0x2000
@@ -1080,12 +1167,10 @@ const (
RTM_MISS = 0x7
RTM_NEWADDR = 0xc
RTM_NEWMADDR = 0xf
- RTM_OLDADD = 0x9
- RTM_OLDDEL = 0xa
RTM_REDIRECT = 0x6
RTM_RESOLVE = 0xb
RTM_RTTUNIT = 0xf4240
- RTM_VERSION = 0x6
+ RTM_VERSION = 0x7
RTV_EXPIRE = 0x4
RTV_HOPCOUNT = 0x2
RTV_IWCAPSEGS = 0x400
@@ -1106,13 +1191,13 @@ const (
SHUT_RDWR = 0x2
SHUT_WR = 0x1
SIOCADDMULTI = 0x80206931
- SIOCADDRT = 0x8040720a
SIOCAIFADDR = 0x8040691a
+ SIOCAIFGROUP = 0x80286987
SIOCALIFADDR = 0x8118691b
SIOCATMARK = 0x40047307
SIOCDELMULTI = 0x80206932
- SIOCDELRT = 0x8040720b
SIOCDIFADDR = 0x80206919
+ SIOCDIFGROUP = 0x80286989
SIOCDIFPHYADDR = 0x80206949
SIOCDLIFADDR = 0x8118691d
SIOCGDRVSPEC = 0xc028697b
@@ -1120,6 +1205,7 @@ const (
SIOCGETVIFCNT = 0xc028720f
SIOCGHIWAT = 0x40047301
SIOCGIFADDR = 0xc0206921
+ SIOCGIFALIAS = 0xc0406929
SIOCGIFBRDADDR = 0xc0206923
SIOCGIFCAP = 0xc020691f
SIOCGIFCONF = 0xc0106924
@@ -1128,6 +1214,7 @@ const (
SIOCGIFFLAGS = 0xc0206911
SIOCGIFGENERIC = 0xc020693a
SIOCGIFGMEMB = 0xc028698a
+ SIOCGIFGROUP = 0xc0286988
SIOCGIFINDEX = 0xc0206920
SIOCGIFMEDIA = 0xc0306938
SIOCGIFMETRIC = 0xc0206917
@@ -1194,6 +1281,7 @@ const (
SO_RCVBUF = 0x1002
SO_RCVLOWAT = 0x1004
SO_RCVTIMEO = 0x1006
+ SO_RERROR = 0x2000
SO_REUSEADDR = 0x4
SO_REUSEPORT = 0x200
SO_SNDBUF = 0x1001
@@ -1233,6 +1321,9 @@ const (
S_IXGRP = 0x8
S_IXOTH = 0x1
S_IXUSR = 0x40
+ TAB0 = 0x0
+ TAB3 = 0x4
+ TABDLY = 0x4
TCIFLUSH = 0x1
TCIOFF = 0x3
TCIOFLUSH = 0x3
@@ -1259,6 +1350,8 @@ const (
TCP_NOPUSH = 0x4
TCP_SIGNATURE_ENABLE = 0x10
TCSAFLUSH = 0x2
+ TIMER_ABSTIME = 0x1
+ TIMER_RELTIME = 0x0
TIOCCBRK = 0x2000747a
TIOCCDTR = 0x20007478
TIOCCONS = 0x80047462
@@ -1272,7 +1365,6 @@ const (
TIOCGETD = 0x4004741a
TIOCGPGRP = 0x40047477
TIOCGSID = 0x40047463
- TIOCGSIZE = 0x40087468
TIOCGWINSZ = 0x40087468
TIOCISPTMASTER = 0x20007455
TIOCMBIC = 0x8004746b
@@ -1317,7 +1409,6 @@ const (
TIOCSETD = 0x8004741b
TIOCSIG = 0x2000745f
TIOCSPGRP = 0x80047476
- TIOCSSIZE = 0x80087467
TIOCSTART = 0x2000746e
TIOCSTAT = 0x20007465
TIOCSTI = 0x80017472
@@ -1326,6 +1417,8 @@ const (
TIOCTIMESTAMP = 0x40107459
TIOCUCNTL = 0x80047466
TOSTOP = 0x400000
+ UTIME_NOW = -0x1
+ UTIME_OMIT = -0x2
VCHECKPT = 0x13
VDISCARD = 0xf
VDSUSP = 0xb
@@ -1350,9 +1443,12 @@ const (
VWERASE = 0x4
WCONTINUED = 0x4
WCOREFLAG = 0x80
+ WEXITED = 0x10
WLINUXCLONE = 0x80000000
WNOHANG = 0x1
- WSTOPPED = 0x7f
+ WNOWAIT = 0x8
+ WSTOPPED = 0x2
+ WTRAPPED = 0x20
WUNTRACED = 0x2
)
@@ -1452,11 +1548,6 @@ const (
ETIMEDOUT = syscall.Errno(0x3c)
ETOOMANYREFS = syscall.Errno(0x3b)
ETXTBSY = syscall.Errno(0x1a)
- EUNUSED94 = syscall.Errno(0x5e)
- EUNUSED95 = syscall.Errno(0x5f)
- EUNUSED96 = syscall.Errno(0x60)
- EUNUSED97 = syscall.Errno(0x61)
- EUNUSED98 = syscall.Errno(0x62)
EUSERS = syscall.Errno(0x44)
EWOULDBLOCK = syscall.Errno(0x23)
EXDEV = syscall.Errno(0x12)
@@ -1600,12 +1691,7 @@ var errorList = [...]struct {
{91, "ENOLINK", "link has been severed"},
{92, "EPROTO", "protocol error"},
{93, "ENOMEDIUM", "no medium found"},
- {94, "EUNUSED94", "unknown error: 94"},
- {95, "EUNUSED95", "unknown error: 95"},
- {96, "EUNUSED96", "unknown error: 96"},
- {97, "EUNUSED97", "unknown error: 97"},
- {98, "EUNUSED98", "unknown error: 98"},
- {99, "ELAST", "unknown error: 99"},
+ {99, "EASYNC", "unknown error: 99"},
}
// Signal table
diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go
index 84824587..3689c808 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go
@@ -339,6 +339,12 @@ const (
CLOCK_UPTIME_FAST = 0x8
CLOCK_UPTIME_PRECISE = 0x7
CLOCK_VIRTUAL = 0x1
+ CPUSTATES = 0x5
+ CP_IDLE = 0x4
+ CP_INTR = 0x3
+ CP_NICE = 0x1
+ CP_SYS = 0x2
+ CP_USER = 0x0
CREAD = 0x800
CRTSCTS = 0x30000
CS5 = 0x0
diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go
index 4acd101c..b8f7c3c9 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go
@@ -339,6 +339,12 @@ const (
CLOCK_UPTIME_FAST = 0x8
CLOCK_UPTIME_PRECISE = 0x7
CLOCK_VIRTUAL = 0x1
+ CPUSTATES = 0x5
+ CP_IDLE = 0x4
+ CP_INTR = 0x3
+ CP_NICE = 0x1
+ CP_SYS = 0x2
+ CP_USER = 0x0
CREAD = 0x800
CRTSCTS = 0x30000
CS5 = 0x0
diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go
index e4719873..be14bb1a 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go
@@ -339,6 +339,12 @@ const (
CLOCK_UPTIME_FAST = 0x8
CLOCK_UPTIME_PRECISE = 0x7
CLOCK_VIRTUAL = 0x1
+ CPUSTATES = 0x5
+ CP_IDLE = 0x4
+ CP_INTR = 0x3
+ CP_NICE = 0x1
+ CP_SYS = 0x2
+ CP_USER = 0x0
CREAD = 0x800
CRTSCTS = 0x30000
CS5 = 0x0
diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go
index 5e49769d..7ce9c008 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go
@@ -339,6 +339,12 @@ const (
CLOCK_UPTIME_FAST = 0x8
CLOCK_UPTIME_PRECISE = 0x7
CLOCK_VIRTUAL = 0x1
+ CPUSTATES = 0x5
+ CP_IDLE = 0x4
+ CP_INTR = 0x3
+ CP_NICE = 0x1
+ CP_SYS = 0x2
+ CP_USER = 0x0
CREAD = 0x800
CRTSCTS = 0x30000
CS5 = 0x0
diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux.go b/vendor/golang.org/x/sys/unix/zerrors_linux.go
index f8bd50c1..b4611035 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_linux.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_linux.go
@@ -244,8 +244,66 @@ const (
CAN_EFF_FLAG = 0x80000000
CAN_EFF_ID_BITS = 0x1d
CAN_EFF_MASK = 0x1fffffff
+ CAN_ERR_ACK = 0x20
+ CAN_ERR_BUSERROR = 0x80
+ CAN_ERR_BUSOFF = 0x40
+ CAN_ERR_CRTL = 0x4
+ CAN_ERR_CRTL_ACTIVE = 0x40
+ CAN_ERR_CRTL_RX_OVERFLOW = 0x1
+ CAN_ERR_CRTL_RX_PASSIVE = 0x10
+ CAN_ERR_CRTL_RX_WARNING = 0x4
+ CAN_ERR_CRTL_TX_OVERFLOW = 0x2
+ CAN_ERR_CRTL_TX_PASSIVE = 0x20
+ CAN_ERR_CRTL_TX_WARNING = 0x8
+ CAN_ERR_CRTL_UNSPEC = 0x0
+ CAN_ERR_DLC = 0x8
CAN_ERR_FLAG = 0x20000000
+ CAN_ERR_LOSTARB = 0x2
+ CAN_ERR_LOSTARB_UNSPEC = 0x0
CAN_ERR_MASK = 0x1fffffff
+ CAN_ERR_PROT = 0x8
+ CAN_ERR_PROT_ACTIVE = 0x40
+ CAN_ERR_PROT_BIT = 0x1
+ CAN_ERR_PROT_BIT0 = 0x8
+ CAN_ERR_PROT_BIT1 = 0x10
+ CAN_ERR_PROT_FORM = 0x2
+ CAN_ERR_PROT_LOC_ACK = 0x19
+ CAN_ERR_PROT_LOC_ACK_DEL = 0x1b
+ CAN_ERR_PROT_LOC_CRC_DEL = 0x18
+ CAN_ERR_PROT_LOC_CRC_SEQ = 0x8
+ CAN_ERR_PROT_LOC_DATA = 0xa
+ CAN_ERR_PROT_LOC_DLC = 0xb
+ CAN_ERR_PROT_LOC_EOF = 0x1a
+ CAN_ERR_PROT_LOC_ID04_00 = 0xe
+ CAN_ERR_PROT_LOC_ID12_05 = 0xf
+ CAN_ERR_PROT_LOC_ID17_13 = 0x7
+ CAN_ERR_PROT_LOC_ID20_18 = 0x6
+ CAN_ERR_PROT_LOC_ID28_21 = 0x2
+ CAN_ERR_PROT_LOC_IDE = 0x5
+ CAN_ERR_PROT_LOC_INTERM = 0x12
+ CAN_ERR_PROT_LOC_RES0 = 0x9
+ CAN_ERR_PROT_LOC_RES1 = 0xd
+ CAN_ERR_PROT_LOC_RTR = 0xc
+ CAN_ERR_PROT_LOC_SOF = 0x3
+ CAN_ERR_PROT_LOC_SRTR = 0x4
+ CAN_ERR_PROT_LOC_UNSPEC = 0x0
+ CAN_ERR_PROT_OVERLOAD = 0x20
+ CAN_ERR_PROT_STUFF = 0x4
+ CAN_ERR_PROT_TX = 0x80
+ CAN_ERR_PROT_UNSPEC = 0x0
+ CAN_ERR_RESTARTED = 0x100
+ CAN_ERR_TRX = 0x10
+ CAN_ERR_TRX_CANH_NO_WIRE = 0x4
+ CAN_ERR_TRX_CANH_SHORT_TO_BAT = 0x5
+ CAN_ERR_TRX_CANH_SHORT_TO_GND = 0x7
+ CAN_ERR_TRX_CANH_SHORT_TO_VCC = 0x6
+ CAN_ERR_TRX_CANL_NO_WIRE = 0x40
+ CAN_ERR_TRX_CANL_SHORT_TO_BAT = 0x50
+ CAN_ERR_TRX_CANL_SHORT_TO_CANH = 0x80
+ CAN_ERR_TRX_CANL_SHORT_TO_GND = 0x70
+ CAN_ERR_TRX_CANL_SHORT_TO_VCC = 0x60
+ CAN_ERR_TRX_UNSPEC = 0x0
+ CAN_ERR_TX_TIMEOUT = 0x1
CAN_INV_FILTER = 0x20000000
CAN_ISOTP = 0x6
CAN_J1939 = 0x7
@@ -265,6 +323,8 @@ const (
CAP_AUDIT_READ = 0x25
CAP_AUDIT_WRITE = 0x1d
CAP_BLOCK_SUSPEND = 0x24
+ CAP_BPF = 0x27
+ CAP_CHECKPOINT_RESTORE = 0x28
CAP_CHOWN = 0x0
CAP_DAC_OVERRIDE = 0x1
CAP_DAC_READ_SEARCH = 0x2
@@ -273,7 +333,7 @@ const (
CAP_IPC_LOCK = 0xe
CAP_IPC_OWNER = 0xf
CAP_KILL = 0x5
- CAP_LAST_CAP = 0x25
+ CAP_LAST_CAP = 0x28
CAP_LEASE = 0x1c
CAP_LINUX_IMMUTABLE = 0x9
CAP_MAC_ADMIN = 0x21
@@ -283,6 +343,7 @@ const (
CAP_NET_BIND_SERVICE = 0xa
CAP_NET_BROADCAST = 0xb
CAP_NET_RAW = 0xd
+ CAP_PERFMON = 0x26
CAP_SETFCAP = 0x1f
CAP_SETGID = 0x6
CAP_SETPCAP = 0x8
@@ -372,8 +433,54 @@ const (
DEVLINK_GENL_NAME = "devlink"
DEVLINK_GENL_VERSION = 0x1
DEVLINK_SB_THRESHOLD_TO_ALPHA_MAX = 0x14
+ DEVMEM_MAGIC = 0x454d444d
DEVPTS_SUPER_MAGIC = 0x1cd1
DMA_BUF_MAGIC = 0x444d4142
+ DM_ACTIVE_PRESENT_FLAG = 0x20
+ DM_BUFFER_FULL_FLAG = 0x100
+ DM_CONTROL_NODE = "control"
+ DM_DATA_OUT_FLAG = 0x10000
+ DM_DEFERRED_REMOVE = 0x20000
+ DM_DEV_ARM_POLL = 0xc138fd10
+ DM_DEV_CREATE = 0xc138fd03
+ DM_DEV_REMOVE = 0xc138fd04
+ DM_DEV_RENAME = 0xc138fd05
+ DM_DEV_SET_GEOMETRY = 0xc138fd0f
+ DM_DEV_STATUS = 0xc138fd07
+ DM_DEV_SUSPEND = 0xc138fd06
+ DM_DEV_WAIT = 0xc138fd08
+ DM_DIR = "mapper"
+ DM_GET_TARGET_VERSION = 0xc138fd11
+ DM_INACTIVE_PRESENT_FLAG = 0x40
+ DM_INTERNAL_SUSPEND_FLAG = 0x40000
+ DM_IOCTL = 0xfd
+ DM_LIST_DEVICES = 0xc138fd02
+ DM_LIST_VERSIONS = 0xc138fd0d
+ DM_MAX_TYPE_NAME = 0x10
+ DM_NAME_LEN = 0x80
+ DM_NOFLUSH_FLAG = 0x800
+ DM_PERSISTENT_DEV_FLAG = 0x8
+ DM_QUERY_INACTIVE_TABLE_FLAG = 0x1000
+ DM_READONLY_FLAG = 0x1
+ DM_REMOVE_ALL = 0xc138fd01
+ DM_SECURE_DATA_FLAG = 0x8000
+ DM_SKIP_BDGET_FLAG = 0x200
+ DM_SKIP_LOCKFS_FLAG = 0x400
+ DM_STATUS_TABLE_FLAG = 0x10
+ DM_SUSPEND_FLAG = 0x2
+ DM_TABLE_CLEAR = 0xc138fd0a
+ DM_TABLE_DEPS = 0xc138fd0b
+ DM_TABLE_LOAD = 0xc138fd09
+ DM_TABLE_STATUS = 0xc138fd0c
+ DM_TARGET_MSG = 0xc138fd0e
+ DM_UEVENT_GENERATED_FLAG = 0x2000
+ DM_UUID_FLAG = 0x4000
+ DM_UUID_LEN = 0x81
+ DM_VERSION = 0xc138fd00
+ DM_VERSION_EXTRA = "-ioctl (2020-02-27)"
+ DM_VERSION_MAJOR = 0x4
+ DM_VERSION_MINOR = 0x2a
+ DM_VERSION_PATCHLEVEL = 0x0
DT_BLK = 0x6
DT_CHR = 0x2
DT_DIR = 0x4
@@ -475,6 +582,7 @@ const (
ETH_P_MOBITEX = 0x15
ETH_P_MPLS_MC = 0x8848
ETH_P_MPLS_UC = 0x8847
+ ETH_P_MRP = 0x88e3
ETH_P_MVRP = 0x88f5
ETH_P_NCSI = 0x88f8
ETH_P_NSH = 0x894f
@@ -543,8 +651,8 @@ const (
FAN_DELETE = 0x200
FAN_DELETE_SELF = 0x400
FAN_DENY = 0x2
- FAN_DIR_MODIFY = 0x80000
FAN_ENABLE_AUDIT = 0x40
+ FAN_EVENT_INFO_TYPE_DFID = 0x3
FAN_EVENT_INFO_TYPE_DFID_NAME = 0x2
FAN_EVENT_INFO_TYPE_FID = 0x1
FAN_EVENT_METADATA_LEN = 0x18
@@ -572,13 +680,17 @@ const (
FAN_OPEN_EXEC_PERM = 0x40000
FAN_OPEN_PERM = 0x10000
FAN_Q_OVERFLOW = 0x4000
+ FAN_REPORT_DFID_NAME = 0xc00
+ FAN_REPORT_DIR_FID = 0x400
FAN_REPORT_FID = 0x200
+ FAN_REPORT_NAME = 0x800
FAN_REPORT_TID = 0x100
FAN_UNLIMITED_MARKS = 0x20
FAN_UNLIMITED_QUEUE = 0x10
FD_CLOEXEC = 0x1
FD_SETSIZE = 0x400
FF0 = 0x0
+ FIDEDUPERANGE = 0xc0189436
FSCRYPT_KEY_DESCRIPTOR_SIZE = 0x8
FSCRYPT_KEY_DESC_PREFIX = "fscrypt:"
FSCRYPT_KEY_DESC_PREFIX_SIZE = 0x8
@@ -602,8 +714,9 @@ const (
FSCRYPT_POLICY_FLAGS_PAD_4 = 0x0
FSCRYPT_POLICY_FLAGS_PAD_8 = 0x1
FSCRYPT_POLICY_FLAGS_PAD_MASK = 0x3
- FSCRYPT_POLICY_FLAGS_VALID = 0xf
+ FSCRYPT_POLICY_FLAGS_VALID = 0x1f
FSCRYPT_POLICY_FLAG_DIRECT_KEY = 0x4
+ FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32 = 0x10
FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64 = 0x8
FSCRYPT_POLICY_V1 = 0x0
FSCRYPT_POLICY_V2 = 0x2
@@ -632,7 +745,7 @@ const (
FS_POLICY_FLAGS_PAD_4 = 0x0
FS_POLICY_FLAGS_PAD_8 = 0x1
FS_POLICY_FLAGS_PAD_MASK = 0x3
- FS_POLICY_FLAGS_VALID = 0xf
+ FS_POLICY_FLAGS_VALID = 0x1f
FS_VERITY_FL = 0x100000
FS_VERITY_HASH_ALG_SHA256 = 0x1
FS_VERITY_HASH_ALG_SHA512 = 0x2
@@ -834,6 +947,7 @@ const (
IPPROTO_EGP = 0x8
IPPROTO_ENCAP = 0x62
IPPROTO_ESP = 0x32
+ IPPROTO_ETHERNET = 0x8f
IPPROTO_FRAGMENT = 0x2c
IPPROTO_GRE = 0x2f
IPPROTO_HOPOPTS = 0x0
@@ -847,6 +961,7 @@ const (
IPPROTO_L2TP = 0x73
IPPROTO_MH = 0x87
IPPROTO_MPLS = 0x89
+ IPPROTO_MPTCP = 0x106
IPPROTO_MTP = 0x5c
IPPROTO_NONE = 0x3b
IPPROTO_PIM = 0x67
@@ -1016,6 +1131,7 @@ const (
KEYCTL_CAPS0_PERSISTENT_KEYRINGS = 0x2
KEYCTL_CAPS0_PUBLIC_KEY = 0x8
KEYCTL_CAPS0_RESTRICT_KEYRING = 0x40
+ KEYCTL_CAPS1_NOTIFICATIONS = 0x4
KEYCTL_CAPS1_NS_KEYRING_NAME = 0x1
KEYCTL_CAPS1_NS_KEY_TAG = 0x2
KEYCTL_CHOWN = 0x4
@@ -1053,6 +1169,7 @@ const (
KEYCTL_SUPPORTS_VERIFY = 0x8
KEYCTL_UNLINK = 0x9
KEYCTL_UPDATE = 0x2
+ KEYCTL_WATCH_KEY = 0x20
KEY_REQKEY_DEFL_DEFAULT = 0x0
KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6
KEY_REQKEY_DEFL_NO_CHANGE = -0x1
@@ -1096,8 +1213,16 @@ const (
LOOP_SET_FD = 0x4c00
LOOP_SET_STATUS = 0x4c02
LOOP_SET_STATUS64 = 0x4c04
+ LOOP_SET_STATUS_CLEARABLE_FLAGS = 0x4
+ LOOP_SET_STATUS_SETTABLE_FLAGS = 0xc
LO_KEY_SIZE = 0x20
LO_NAME_SIZE = 0x40
+ LWTUNNEL_IP6_MAX = 0x8
+ LWTUNNEL_IP_MAX = 0x8
+ LWTUNNEL_IP_OPTS_MAX = 0x3
+ LWTUNNEL_IP_OPT_ERSPAN_MAX = 0x4
+ LWTUNNEL_IP_OPT_GENEVE_MAX = 0x3
+ LWTUNNEL_IP_OPT_VXLAN_MAX = 0x1
MADV_COLD = 0x14
MADV_DODUMP = 0x11
MADV_DOFORK = 0xb
@@ -1393,6 +1518,92 @@ const (
PARITY_DEFAULT = 0x0
PARITY_NONE = 0x1
PARMRK = 0x8
+ PERF_ATTR_SIZE_VER0 = 0x40
+ PERF_ATTR_SIZE_VER1 = 0x48
+ PERF_ATTR_SIZE_VER2 = 0x50
+ PERF_ATTR_SIZE_VER3 = 0x60
+ PERF_ATTR_SIZE_VER4 = 0x68
+ PERF_ATTR_SIZE_VER5 = 0x70
+ PERF_ATTR_SIZE_VER6 = 0x78
+ PERF_AUX_FLAG_COLLISION = 0x8
+ PERF_AUX_FLAG_OVERWRITE = 0x2
+ PERF_AUX_FLAG_PARTIAL = 0x4
+ PERF_AUX_FLAG_TRUNCATED = 0x1
+ PERF_FLAG_FD_CLOEXEC = 0x8
+ PERF_FLAG_FD_NO_GROUP = 0x1
+ PERF_FLAG_FD_OUTPUT = 0x2
+ PERF_FLAG_PID_CGROUP = 0x4
+ PERF_MAX_CONTEXTS_PER_STACK = 0x8
+ PERF_MAX_STACK_DEPTH = 0x7f
+ PERF_MEM_LOCK_LOCKED = 0x2
+ PERF_MEM_LOCK_NA = 0x1
+ PERF_MEM_LOCK_SHIFT = 0x18
+ PERF_MEM_LVLNUM_ANY_CACHE = 0xb
+ PERF_MEM_LVLNUM_L1 = 0x1
+ PERF_MEM_LVLNUM_L2 = 0x2
+ PERF_MEM_LVLNUM_L3 = 0x3
+ PERF_MEM_LVLNUM_L4 = 0x4
+ PERF_MEM_LVLNUM_LFB = 0xc
+ PERF_MEM_LVLNUM_NA = 0xf
+ PERF_MEM_LVLNUM_PMEM = 0xe
+ PERF_MEM_LVLNUM_RAM = 0xd
+ PERF_MEM_LVLNUM_SHIFT = 0x21
+ PERF_MEM_LVL_HIT = 0x2
+ PERF_MEM_LVL_IO = 0x1000
+ PERF_MEM_LVL_L1 = 0x8
+ PERF_MEM_LVL_L2 = 0x20
+ PERF_MEM_LVL_L3 = 0x40
+ PERF_MEM_LVL_LFB = 0x10
+ PERF_MEM_LVL_LOC_RAM = 0x80
+ PERF_MEM_LVL_MISS = 0x4
+ PERF_MEM_LVL_NA = 0x1
+ PERF_MEM_LVL_REM_CCE1 = 0x400
+ PERF_MEM_LVL_REM_CCE2 = 0x800
+ PERF_MEM_LVL_REM_RAM1 = 0x100
+ PERF_MEM_LVL_REM_RAM2 = 0x200
+ PERF_MEM_LVL_SHIFT = 0x5
+ PERF_MEM_LVL_UNC = 0x2000
+ PERF_MEM_OP_EXEC = 0x10
+ PERF_MEM_OP_LOAD = 0x2
+ PERF_MEM_OP_NA = 0x1
+ PERF_MEM_OP_PFETCH = 0x8
+ PERF_MEM_OP_SHIFT = 0x0
+ PERF_MEM_OP_STORE = 0x4
+ PERF_MEM_REMOTE_REMOTE = 0x1
+ PERF_MEM_REMOTE_SHIFT = 0x25
+ PERF_MEM_SNOOPX_FWD = 0x1
+ PERF_MEM_SNOOPX_SHIFT = 0x25
+ PERF_MEM_SNOOP_HIT = 0x4
+ PERF_MEM_SNOOP_HITM = 0x10
+ PERF_MEM_SNOOP_MISS = 0x8
+ PERF_MEM_SNOOP_NA = 0x1
+ PERF_MEM_SNOOP_NONE = 0x2
+ PERF_MEM_SNOOP_SHIFT = 0x13
+ PERF_MEM_TLB_HIT = 0x2
+ PERF_MEM_TLB_L1 = 0x8
+ PERF_MEM_TLB_L2 = 0x10
+ PERF_MEM_TLB_MISS = 0x4
+ PERF_MEM_TLB_NA = 0x1
+ PERF_MEM_TLB_OS = 0x40
+ PERF_MEM_TLB_SHIFT = 0x1a
+ PERF_MEM_TLB_WK = 0x20
+ PERF_RECORD_KSYMBOL_FLAGS_UNREGISTER = 0x1
+ PERF_RECORD_MISC_COMM_EXEC = 0x2000
+ PERF_RECORD_MISC_CPUMODE_MASK = 0x7
+ PERF_RECORD_MISC_CPUMODE_UNKNOWN = 0x0
+ PERF_RECORD_MISC_EXACT_IP = 0x4000
+ PERF_RECORD_MISC_EXT_RESERVED = 0x8000
+ PERF_RECORD_MISC_FORK_EXEC = 0x2000
+ PERF_RECORD_MISC_GUEST_KERNEL = 0x4
+ PERF_RECORD_MISC_GUEST_USER = 0x5
+ PERF_RECORD_MISC_HYPERVISOR = 0x3
+ PERF_RECORD_MISC_KERNEL = 0x1
+ PERF_RECORD_MISC_MMAP_DATA = 0x2000
+ PERF_RECORD_MISC_PROC_MAP_PARSE_TIMEOUT = 0x1000
+ PERF_RECORD_MISC_SWITCH_OUT = 0x2000
+ PERF_RECORD_MISC_SWITCH_OUT_PREEMPT = 0x4000
+ PERF_RECORD_MISC_USER = 0x2
+ PERF_SAMPLE_BRANCH_PLM_ALL = 0x7
PIPEFS_MAGIC = 0x50495045
PPC_CMM_MAGIC = 0xc7571590
PPPIOCGNPMODE = 0xc008744c
@@ -1779,6 +1990,7 @@ const (
RTPROT_EIGRP = 0xc0
RTPROT_GATED = 0x8
RTPROT_ISIS = 0xbb
+ RTPROT_KEEPALIVED = 0x12
RTPROT_KERNEL = 0x2
RTPROT_MROUTED = 0x11
RTPROT_MRT = 0xa
@@ -1929,6 +2141,7 @@ const (
SOL_ATM = 0x108
SOL_CAIF = 0x116
SOL_CAN_BASE = 0x64
+ SOL_CAN_RAW = 0x65
SOL_DCCP = 0x10d
SOL_DECNET = 0x105
SOL_ICMPV6 = 0x3a
@@ -1968,6 +2181,7 @@ const (
SO_EE_ORIGIN_TXSTATUS = 0x4
SO_EE_ORIGIN_TXTIME = 0x6
SO_EE_ORIGIN_ZEROCOPY = 0x5
+ SO_EE_RFC4884_FLAG_INVALID = 0x1
SO_GET_FILTER = 0x1a
SO_NO_CHECK = 0xb
SO_PEERNAME = 0x1c
@@ -1992,8 +2206,10 @@ const (
STATX_ATTR_APPEND = 0x20
STATX_ATTR_AUTOMOUNT = 0x1000
STATX_ATTR_COMPRESSED = 0x4
+ STATX_ATTR_DAX = 0x2000
STATX_ATTR_ENCRYPTED = 0x800
STATX_ATTR_IMMUTABLE = 0x10
+ STATX_ATTR_MOUNT_ROOT = 0x2000
STATX_ATTR_NODUMP = 0x40
STATX_ATTR_VERITY = 0x100000
STATX_BASIC_STATS = 0x7ff
@@ -2002,6 +2218,7 @@ const (
STATX_CTIME = 0x80
STATX_GID = 0x10
STATX_INO = 0x100
+ STATX_MNT_ID = 0x1000
STATX_MODE = 0x2
STATX_MTIME = 0x40
STATX_NLINK = 0x4
@@ -2238,6 +2455,23 @@ const (
WCONTINUED = 0x8
WDIOC_SETPRETIMEOUT = 0xc0045708
WDIOC_SETTIMEOUT = 0xc0045706
+ WDIOF_ALARMONLY = 0x400
+ WDIOF_CARDRESET = 0x20
+ WDIOF_EXTERN1 = 0x4
+ WDIOF_EXTERN2 = 0x8
+ WDIOF_FANFAULT = 0x2
+ WDIOF_KEEPALIVEPING = 0x8000
+ WDIOF_MAGICCLOSE = 0x100
+ WDIOF_OVERHEAT = 0x1
+ WDIOF_POWEROVER = 0x40
+ WDIOF_POWERUNDER = 0x10
+ WDIOF_PRETIMEOUT = 0x200
+ WDIOF_SETTIMEOUT = 0x80
+ WDIOF_UNKNOWN = -0x1
+ WDIOS_DISABLECARD = 0x1
+ WDIOS_ENABLECARD = 0x2
+ WDIOS_TEMPPANIC = 0x4
+ WDIOS_UNKNOWN = -0x1
WEXITED = 0x4
WIN_ACKMEDIACHANGE = 0xdb
WIN_CHECKPOWERMODE1 = 0xe5
diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go
index 8d207b04..dd282c08 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go
@@ -71,6 +71,8 @@ const (
EXTPROC = 0x10000
FF1 = 0x8000
FFDLY = 0x8000
+ FICLONE = 0x40049409
+ FICLONERANGE = 0x4020940d
FLUSHO = 0x1000
FP_XSTATE_MAGIC2 = 0x46505845
FS_IOC_ENABLE_VERITY = 0x40806685
@@ -78,6 +80,7 @@ const (
FS_IOC_GET_ENCRYPTION_NONCE = 0x8010661b
FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615
FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614
+ FS_IOC_SETFLAGS = 0x40046602
FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613
F_GETLK = 0xc
F_GETLK64 = 0xc
diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go
index c4bf9cb8..82fc93c7 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go
@@ -71,6 +71,8 @@ const (
EXTPROC = 0x10000
FF1 = 0x8000
FFDLY = 0x8000
+ FICLONE = 0x40049409
+ FICLONERANGE = 0x4020940d
FLUSHO = 0x1000
FP_XSTATE_MAGIC2 = 0x46505845
FS_IOC_ENABLE_VERITY = 0x40806685
@@ -78,6 +80,7 @@ const (
FS_IOC_GET_ENCRYPTION_NONCE = 0x8010661b
FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615
FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614
+ FS_IOC_SETFLAGS = 0x40086602
FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613
F_GETLK = 0x5
F_GETLK64 = 0x5
diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go
index 0cab0522..fe7094f2 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go
@@ -71,12 +71,15 @@ const (
EXTPROC = 0x10000
FF1 = 0x8000
FFDLY = 0x8000
+ FICLONE = 0x40049409
+ FICLONERANGE = 0x4020940d
FLUSHO = 0x1000
FS_IOC_ENABLE_VERITY = 0x40806685
FS_IOC_GETFLAGS = 0x80046601
FS_IOC_GET_ENCRYPTION_NONCE = 0x8010661b
FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615
FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614
+ FS_IOC_SETFLAGS = 0x40046602
FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613
F_GETLK = 0xc
F_GETLK64 = 0xc
diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go
index 370d0a7f..3b6cc588 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go
@@ -73,6 +73,8 @@ const (
EXTRA_MAGIC = 0x45585401
FF1 = 0x8000
FFDLY = 0x8000
+ FICLONE = 0x40049409
+ FICLONERANGE = 0x4020940d
FLUSHO = 0x1000
FPSIMD_MAGIC = 0x46508001
FS_IOC_ENABLE_VERITY = 0x40806685
@@ -80,6 +82,7 @@ const (
FS_IOC_GET_ENCRYPTION_NONCE = 0x8010661b
FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615
FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614
+ FS_IOC_SETFLAGS = 0x40086602
FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613
F_GETLK = 0x5
F_GETLK64 = 0x5
@@ -191,6 +194,7 @@ const (
PPPIOCSRASYNCMAP = 0x40047454
PPPIOCSXASYNCMAP = 0x4020744f
PPPIOCXFERUNIT = 0x744e
+ PROT_BTI = 0x10
PR_SET_PTRACER_ANY = 0xffffffffffffffff
PTRACE_SYSEMU = 0x1f
PTRACE_SYSEMU_SINGLESTEP = 0x20
diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go
index fbf2f317..ce3d9ae1 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go
@@ -71,12 +71,15 @@ const (
EXTPROC = 0x10000
FF1 = 0x8000
FFDLY = 0x8000
+ FICLONE = 0x80049409
+ FICLONERANGE = 0x8020940d
FLUSHO = 0x2000
FS_IOC_ENABLE_VERITY = 0x80806685
FS_IOC_GETFLAGS = 0x40046601
FS_IOC_GET_ENCRYPTION_NONCE = 0x4010661b
FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615
FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614
+ FS_IOC_SETFLAGS = 0x80046602
FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613
F_GETLK = 0x21
F_GETLK64 = 0x21
diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go
index 25e74b30..7a85215c 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go
@@ -71,12 +71,15 @@ const (
EXTPROC = 0x10000
FF1 = 0x8000
FFDLY = 0x8000
+ FICLONE = 0x80049409
+ FICLONERANGE = 0x8020940d
FLUSHO = 0x2000
FS_IOC_ENABLE_VERITY = 0x80806685
FS_IOC_GETFLAGS = 0x40086601
FS_IOC_GET_ENCRYPTION_NONCE = 0x4010661b
FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615
FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614
+ FS_IOC_SETFLAGS = 0x80086602
FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613
F_GETLK = 0xe
F_GETLK64 = 0xe
diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go
index 4ecc0bca..07d4cc1b 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go
@@ -71,12 +71,15 @@ const (
EXTPROC = 0x10000
FF1 = 0x8000
FFDLY = 0x8000
+ FICLONE = 0x80049409
+ FICLONERANGE = 0x8020940d
FLUSHO = 0x2000
FS_IOC_ENABLE_VERITY = 0x80806685
FS_IOC_GETFLAGS = 0x40086601
FS_IOC_GET_ENCRYPTION_NONCE = 0x4010661b
FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615
FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614
+ FS_IOC_SETFLAGS = 0x80086602
FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613
F_GETLK = 0xe
F_GETLK64 = 0xe
diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go
index dfb8f88a..d4842ba1 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go
@@ -71,12 +71,15 @@ const (
EXTPROC = 0x10000
FF1 = 0x8000
FFDLY = 0x8000
+ FICLONE = 0x80049409
+ FICLONERANGE = 0x8020940d
FLUSHO = 0x2000
FS_IOC_ENABLE_VERITY = 0x80806685
FS_IOC_GETFLAGS = 0x40046601
FS_IOC_GET_ENCRYPTION_NONCE = 0x4010661b
FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615
FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614
+ FS_IOC_SETFLAGS = 0x80046602
FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613
F_GETLK = 0x21
F_GETLK64 = 0x21
diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go
index 72d8dad5..941e20da 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go
@@ -71,12 +71,15 @@ const (
EXTPROC = 0x10000000
FF1 = 0x4000
FFDLY = 0x4000
+ FICLONE = 0x80049409
+ FICLONERANGE = 0x8020940d
FLUSHO = 0x800000
FS_IOC_ENABLE_VERITY = 0x80806685
FS_IOC_GETFLAGS = 0x40086601
FS_IOC_GET_ENCRYPTION_NONCE = 0x4010661b
FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615
FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614
+ FS_IOC_SETFLAGS = 0x80086602
FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613
F_GETLK = 0x5
F_GETLK64 = 0xc
diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go
index ca0e7b52..63d3bc56 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go
@@ -71,12 +71,15 @@ const (
EXTPROC = 0x10000000
FF1 = 0x4000
FFDLY = 0x4000
+ FICLONE = 0x80049409
+ FICLONERANGE = 0x8020940d
FLUSHO = 0x800000
FS_IOC_ENABLE_VERITY = 0x80806685
FS_IOC_GETFLAGS = 0x40086601
FS_IOC_GET_ENCRYPTION_NONCE = 0x4010661b
FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615
FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614
+ FS_IOC_SETFLAGS = 0x80086602
FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613
F_GETLK = 0x5
F_GETLK64 = 0xc
diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go
index 147511a9..490bee1a 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go
@@ -71,12 +71,15 @@ const (
EXTPROC = 0x10000
FF1 = 0x8000
FFDLY = 0x8000
+ FICLONE = 0x40049409
+ FICLONERANGE = 0x4020940d
FLUSHO = 0x1000
FS_IOC_ENABLE_VERITY = 0x40806685
FS_IOC_GETFLAGS = 0x80086601
FS_IOC_GET_ENCRYPTION_NONCE = 0x8010661b
FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615
FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614
+ FS_IOC_SETFLAGS = 0x40086602
FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613
F_GETLK = 0x5
F_GETLK64 = 0x5
diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go
index 517349da..467b8218 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go
@@ -71,12 +71,15 @@ const (
EXTPROC = 0x10000
FF1 = 0x8000
FFDLY = 0x8000
+ FICLONE = 0x40049409
+ FICLONERANGE = 0x4020940d
FLUSHO = 0x1000
FS_IOC_ENABLE_VERITY = 0x40806685
FS_IOC_GETFLAGS = 0x80086601
FS_IOC_GET_ENCRYPTION_NONCE = 0x8010661b
FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615
FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614
+ FS_IOC_SETFLAGS = 0x40086602
FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613
F_GETLK = 0x5
F_GETLK64 = 0x5
diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go
index 09482246..79fbafbc 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go
@@ -75,12 +75,15 @@ const (
EXTPROC = 0x10000
FF1 = 0x8000
FFDLY = 0x8000
+ FICLONE = 0x80049409
+ FICLONERANGE = 0x8020940d
FLUSHO = 0x1000
FS_IOC_ENABLE_VERITY = 0x80806685
FS_IOC_GETFLAGS = 0x40086601
FS_IOC_GET_ENCRYPTION_NONCE = 0x4010661b
FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615
FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614
+ FS_IOC_SETFLAGS = 0x80086602
FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613
F_GETLK = 0x7
F_GETLK64 = 0x7
diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go
index 96b9b8ab..20f3a579 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go
@@ -158,6 +158,12 @@ const (
CLONE_SIGHAND = 0x800
CLONE_VFORK = 0x4000
CLONE_VM = 0x100
+ CPUSTATES = 0x5
+ CP_IDLE = 0x4
+ CP_INTR = 0x3
+ CP_NICE = 0x1
+ CP_SYS = 0x2
+ CP_USER = 0x0
CREAD = 0x800
CRTSCTS = 0x10000
CS5 = 0x0
diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go
index ed522a84..90b8fcd2 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go
@@ -158,6 +158,12 @@ const (
CLONE_SIGHAND = 0x800
CLONE_VFORK = 0x4000
CLONE_VM = 0x100
+ CPUSTATES = 0x5
+ CP_IDLE = 0x4
+ CP_INTR = 0x3
+ CP_NICE = 0x1
+ CP_SYS = 0x2
+ CP_USER = 0x0
CREAD = 0x800
CRTSCTS = 0x10000
CS5 = 0x0
diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go
index c8d36fe9..c5c03993 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go
@@ -150,6 +150,12 @@ const (
BRKINT = 0x2
CFLUSH = 0xf
CLOCAL = 0x8000
+ CPUSTATES = 0x5
+ CP_IDLE = 0x4
+ CP_INTR = 0x3
+ CP_NICE = 0x1
+ CP_SYS = 0x2
+ CP_USER = 0x0
CREAD = 0x800
CRTSCTS = 0x10000
CS5 = 0x0
diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go
index f1c146a7..14dd3c1d 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go
@@ -158,6 +158,12 @@ const (
CLONE_SIGHAND = 0x800
CLONE_VFORK = 0x4000
CLONE_VM = 0x100
+ CPUSTATES = 0x5
+ CP_IDLE = 0x4
+ CP_INTR = 0x3
+ CP_NICE = 0x1
+ CP_SYS = 0x2
+ CP_USER = 0x0
CREAD = 0x800
CRTSCTS = 0x10000
CS5 = 0x0
diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go
index 5402bd55..c865a10d 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go
@@ -146,6 +146,13 @@ const (
BRKINT = 0x2
CFLUSH = 0xf
CLOCAL = 0x8000
+ CPUSTATES = 0x6
+ CP_IDLE = 0x5
+ CP_INTR = 0x4
+ CP_NICE = 0x1
+ CP_SPIN = 0x3
+ CP_SYS = 0x2
+ CP_USER = 0x0
CREAD = 0x800
CRTSCTS = 0x10000
CS5 = 0x0
diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go
index ffaf2d2f..9db6b2fb 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go
@@ -153,6 +153,13 @@ const (
CLOCK_REALTIME = 0x0
CLOCK_THREAD_CPUTIME_ID = 0x4
CLOCK_UPTIME = 0x5
+ CPUSTATES = 0x6
+ CP_IDLE = 0x5
+ CP_INTR = 0x4
+ CP_NICE = 0x1
+ CP_SPIN = 0x3
+ CP_SYS = 0x2
+ CP_USER = 0x0
CREAD = 0x800
CRTSCTS = 0x10000
CS5 = 0x0
diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go
index 7aa796a6..7072526a 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go
@@ -146,6 +146,13 @@ const (
BRKINT = 0x2
CFLUSH = 0xf
CLOCAL = 0x8000
+ CPUSTATES = 0x6
+ CP_IDLE = 0x5
+ CP_INTR = 0x4
+ CP_NICE = 0x1
+ CP_SPIN = 0x3
+ CP_SYS = 0x2
+ CP_USER = 0x0
CREAD = 0x800
CRTSCTS = 0x10000
CS5 = 0x0
diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go
index 1792d3f1..ac5efbe5 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go
@@ -156,6 +156,13 @@ const (
CLOCK_REALTIME = 0x0
CLOCK_THREAD_CPUTIME_ID = 0x4
CLOCK_UPTIME = 0x5
+ CPUSTATES = 0x6
+ CP_IDLE = 0x5
+ CP_INTR = 0x4
+ CP_NICE = 0x1
+ CP_SPIN = 0x3
+ CP_SYS = 0x2
+ CP_USER = 0x0
CREAD = 0x800
CRTSCTS = 0x10000
CS5 = 0x0
diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_mips64.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_mips64.go
new file mode 100644
index 00000000..a74639a4
--- /dev/null
+++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_mips64.go
@@ -0,0 +1,1862 @@
+// mkerrors.sh -m64
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build mips64,openbsd
+
+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
+// cgo -godefs -- -m64 _const.go
+
+package unix
+
+import "syscall"
+
+const (
+ AF_APPLETALK = 0x10
+ AF_BLUETOOTH = 0x20
+ AF_CCITT = 0xa
+ AF_CHAOS = 0x5
+ AF_CNT = 0x15
+ AF_COIP = 0x14
+ AF_DATAKIT = 0x9
+ AF_DECnet = 0xc
+ AF_DLI = 0xd
+ AF_E164 = 0x1a
+ AF_ECMA = 0x8
+ AF_ENCAP = 0x1c
+ AF_HYLINK = 0xf
+ AF_IMPLINK = 0x3
+ AF_INET = 0x2
+ AF_INET6 = 0x18
+ AF_IPX = 0x17
+ AF_ISDN = 0x1a
+ AF_ISO = 0x7
+ AF_KEY = 0x1e
+ AF_LAT = 0xe
+ AF_LINK = 0x12
+ AF_LOCAL = 0x1
+ AF_MAX = 0x24
+ AF_MPLS = 0x21
+ AF_NATM = 0x1b
+ AF_NS = 0x6
+ AF_OSI = 0x7
+ AF_PUP = 0x4
+ AF_ROUTE = 0x11
+ AF_SIP = 0x1d
+ AF_SNA = 0xb
+ AF_UNIX = 0x1
+ AF_UNSPEC = 0x0
+ ALTWERASE = 0x200
+ ARPHRD_ETHER = 0x1
+ ARPHRD_FRELAY = 0xf
+ ARPHRD_IEEE1394 = 0x18
+ ARPHRD_IEEE802 = 0x6
+ B0 = 0x0
+ B110 = 0x6e
+ B115200 = 0x1c200
+ B1200 = 0x4b0
+ B134 = 0x86
+ B14400 = 0x3840
+ B150 = 0x96
+ B1800 = 0x708
+ B19200 = 0x4b00
+ B200 = 0xc8
+ B230400 = 0x38400
+ B2400 = 0x960
+ B28800 = 0x7080
+ B300 = 0x12c
+ B38400 = 0x9600
+ B4800 = 0x12c0
+ B50 = 0x32
+ B57600 = 0xe100
+ B600 = 0x258
+ B7200 = 0x1c20
+ B75 = 0x4b
+ B76800 = 0x12c00
+ B9600 = 0x2580
+ BIOCFLUSH = 0x20004268
+ BIOCGBLEN = 0x40044266
+ BIOCGDIRFILT = 0x4004427c
+ BIOCGDLT = 0x4004426a
+ BIOCGDLTLIST = 0xc010427b
+ BIOCGETIF = 0x4020426b
+ BIOCGFILDROP = 0x40044278
+ BIOCGHDRCMPLT = 0x40044274
+ BIOCGRSIG = 0x40044273
+ BIOCGRTIMEOUT = 0x4010426e
+ BIOCGSTATS = 0x4008426f
+ BIOCIMMEDIATE = 0x80044270
+ BIOCLOCK = 0x20004276
+ BIOCPROMISC = 0x20004269
+ BIOCSBLEN = 0xc0044266
+ BIOCSDIRFILT = 0x8004427d
+ BIOCSDLT = 0x8004427a
+ BIOCSETF = 0x80104267
+ BIOCSETIF = 0x8020426c
+ BIOCSETWF = 0x80104277
+ BIOCSFILDROP = 0x80044279
+ BIOCSHDRCMPLT = 0x80044275
+ BIOCSRSIG = 0x80044272
+ BIOCSRTIMEOUT = 0x8010426d
+ BIOCVERSION = 0x40044271
+ BPF_A = 0x10
+ BPF_ABS = 0x20
+ BPF_ADD = 0x0
+ BPF_ALIGNMENT = 0x4
+ BPF_ALU = 0x4
+ BPF_AND = 0x50
+ BPF_B = 0x10
+ BPF_DIRECTION_IN = 0x1
+ BPF_DIRECTION_OUT = 0x2
+ BPF_DIV = 0x30
+ BPF_FILDROP_CAPTURE = 0x1
+ BPF_FILDROP_DROP = 0x2
+ BPF_FILDROP_PASS = 0x0
+ BPF_H = 0x8
+ BPF_IMM = 0x0
+ BPF_IND = 0x40
+ BPF_JA = 0x0
+ BPF_JEQ = 0x10
+ BPF_JGE = 0x30
+ BPF_JGT = 0x20
+ BPF_JMP = 0x5
+ BPF_JSET = 0x40
+ BPF_K = 0x0
+ BPF_LD = 0x0
+ BPF_LDX = 0x1
+ BPF_LEN = 0x80
+ BPF_LSH = 0x60
+ BPF_MAJOR_VERSION = 0x1
+ BPF_MAXBUFSIZE = 0x200000
+ BPF_MAXINSNS = 0x200
+ BPF_MEM = 0x60
+ BPF_MEMWORDS = 0x10
+ BPF_MINBUFSIZE = 0x20
+ BPF_MINOR_VERSION = 0x1
+ BPF_MISC = 0x7
+ BPF_MSH = 0xa0
+ BPF_MUL = 0x20
+ BPF_NEG = 0x80
+ BPF_OR = 0x40
+ BPF_RELEASE = 0x30bb6
+ BPF_RET = 0x6
+ BPF_RSH = 0x70
+ BPF_ST = 0x2
+ BPF_STX = 0x3
+ BPF_SUB = 0x10
+ BPF_TAX = 0x0
+ BPF_TXA = 0x80
+ BPF_W = 0x0
+ BPF_X = 0x8
+ BRKINT = 0x2
+ CFLUSH = 0xf
+ CLOCAL = 0x8000
+ CLOCK_BOOTTIME = 0x6
+ CLOCK_MONOTONIC = 0x3
+ CLOCK_PROCESS_CPUTIME_ID = 0x2
+ CLOCK_REALTIME = 0x0
+ CLOCK_THREAD_CPUTIME_ID = 0x4
+ CLOCK_UPTIME = 0x5
+ CPUSTATES = 0x6
+ CP_IDLE = 0x5
+ CP_INTR = 0x4
+ CP_NICE = 0x1
+ CP_SPIN = 0x3
+ CP_SYS = 0x2
+ CP_USER = 0x0
+ CREAD = 0x800
+ CRTSCTS = 0x10000
+ CS5 = 0x0
+ CS6 = 0x100
+ CS7 = 0x200
+ CS8 = 0x300
+ CSIZE = 0x300
+ CSTART = 0x11
+ CSTATUS = 0xff
+ CSTOP = 0x13
+ CSTOPB = 0x400
+ CSUSP = 0x1a
+ CTL_HW = 0x6
+ CTL_KERN = 0x1
+ CTL_MAXNAME = 0xc
+ CTL_NET = 0x4
+ DIOCADDQUEUE = 0xc110445d
+ DIOCADDRULE = 0xcd604404
+ DIOCADDSTATE = 0xc1084425
+ DIOCCHANGERULE = 0xcd60441a
+ DIOCCLRIFFLAG = 0xc028445a
+ DIOCCLRSRCNODES = 0x20004455
+ DIOCCLRSTATES = 0xc0e04412
+ DIOCCLRSTATUS = 0xc0284416
+ DIOCGETLIMIT = 0xc0084427
+ DIOCGETQSTATS = 0xc1204460
+ DIOCGETQUEUE = 0xc110445f
+ DIOCGETQUEUES = 0xc110445e
+ DIOCGETRULE = 0xcd604407
+ DIOCGETRULES = 0xcd604406
+ DIOCGETRULESET = 0xc444443b
+ DIOCGETRULESETS = 0xc444443a
+ DIOCGETSRCNODES = 0xc0104454
+ DIOCGETSTATE = 0xc1084413
+ DIOCGETSTATES = 0xc0104419
+ DIOCGETSTATUS = 0xc1e84415
+ DIOCGETSYNFLWATS = 0xc0084463
+ DIOCGETTIMEOUT = 0xc008441e
+ DIOCIGETIFACES = 0xc0284457
+ DIOCKILLSRCNODES = 0xc080445b
+ DIOCKILLSTATES = 0xc0e04429
+ DIOCNATLOOK = 0xc0504417
+ DIOCOSFPADD = 0xc088444f
+ DIOCOSFPFLUSH = 0x2000444e
+ DIOCOSFPGET = 0xc0884450
+ DIOCRADDADDRS = 0xc4504443
+ DIOCRADDTABLES = 0xc450443d
+ DIOCRCLRADDRS = 0xc4504442
+ DIOCRCLRASTATS = 0xc4504448
+ DIOCRCLRTABLES = 0xc450443c
+ DIOCRCLRTSTATS = 0xc4504441
+ DIOCRDELADDRS = 0xc4504444
+ DIOCRDELTABLES = 0xc450443e
+ DIOCRGETADDRS = 0xc4504446
+ DIOCRGETASTATS = 0xc4504447
+ DIOCRGETTABLES = 0xc450443f
+ DIOCRGETTSTATS = 0xc4504440
+ DIOCRINADEFINE = 0xc450444d
+ DIOCRSETADDRS = 0xc4504445
+ DIOCRSETTFLAGS = 0xc450444a
+ DIOCRTSTADDRS = 0xc4504449
+ DIOCSETDEBUG = 0xc0044418
+ DIOCSETHOSTID = 0xc0044456
+ DIOCSETIFFLAG = 0xc0284459
+ DIOCSETLIMIT = 0xc0084428
+ DIOCSETREASS = 0xc004445c
+ DIOCSETSTATUSIF = 0xc0284414
+ DIOCSETSYNCOOKIES = 0xc0014462
+ DIOCSETSYNFLWATS = 0xc0084461
+ DIOCSETTIMEOUT = 0xc008441d
+ DIOCSTART = 0x20004401
+ DIOCSTOP = 0x20004402
+ DIOCXBEGIN = 0xc0104451
+ DIOCXCOMMIT = 0xc0104452
+ DIOCXROLLBACK = 0xc0104453
+ DLT_ARCNET = 0x7
+ DLT_ATM_RFC1483 = 0xb
+ DLT_AX25 = 0x3
+ DLT_CHAOS = 0x5
+ DLT_C_HDLC = 0x68
+ DLT_EN10MB = 0x1
+ DLT_EN3MB = 0x2
+ DLT_ENC = 0xd
+ DLT_FDDI = 0xa
+ DLT_IEEE802 = 0x6
+ DLT_IEEE802_11 = 0x69
+ DLT_IEEE802_11_RADIO = 0x7f
+ DLT_LOOP = 0xc
+ DLT_MPLS = 0xdb
+ DLT_NULL = 0x0
+ DLT_OPENFLOW = 0x10b
+ DLT_PFLOG = 0x75
+ DLT_PFSYNC = 0x12
+ DLT_PPP = 0x9
+ DLT_PPP_BSDOS = 0x10
+ DLT_PPP_ETHER = 0x33
+ DLT_PPP_SERIAL = 0x32
+ DLT_PRONET = 0x4
+ DLT_RAW = 0xe
+ DLT_SLIP = 0x8
+ DLT_SLIP_BSDOS = 0xf
+ DLT_USBPCAP = 0xf9
+ DLT_USER0 = 0x93
+ DLT_USER1 = 0x94
+ DLT_USER10 = 0x9d
+ DLT_USER11 = 0x9e
+ DLT_USER12 = 0x9f
+ DLT_USER13 = 0xa0
+ DLT_USER14 = 0xa1
+ DLT_USER15 = 0xa2
+ DLT_USER2 = 0x95
+ DLT_USER3 = 0x96
+ DLT_USER4 = 0x97
+ DLT_USER5 = 0x98
+ DLT_USER6 = 0x99
+ DLT_USER7 = 0x9a
+ DLT_USER8 = 0x9b
+ DLT_USER9 = 0x9c
+ DT_BLK = 0x6
+ DT_CHR = 0x2
+ DT_DIR = 0x4
+ DT_FIFO = 0x1
+ DT_LNK = 0xa
+ DT_REG = 0x8
+ DT_SOCK = 0xc
+ DT_UNKNOWN = 0x0
+ ECHO = 0x8
+ ECHOCTL = 0x40
+ ECHOE = 0x2
+ ECHOK = 0x4
+ ECHOKE = 0x1
+ ECHONL = 0x10
+ ECHOPRT = 0x20
+ EMT_TAGOVF = 0x1
+ EMUL_ENABLED = 0x1
+ EMUL_NATIVE = 0x2
+ ENDRUNDISC = 0x9
+ ETHERMIN = 0x2e
+ ETHERMTU = 0x5dc
+ ETHERTYPE_8023 = 0x4
+ ETHERTYPE_AARP = 0x80f3
+ ETHERTYPE_ACCTON = 0x8390
+ ETHERTYPE_AEONIC = 0x8036
+ ETHERTYPE_ALPHA = 0x814a
+ ETHERTYPE_AMBER = 0x6008
+ ETHERTYPE_AMOEBA = 0x8145
+ ETHERTYPE_AOE = 0x88a2
+ ETHERTYPE_APOLLO = 0x80f7
+ ETHERTYPE_APOLLODOMAIN = 0x8019
+ ETHERTYPE_APPLETALK = 0x809b
+ ETHERTYPE_APPLITEK = 0x80c7
+ ETHERTYPE_ARGONAUT = 0x803a
+ ETHERTYPE_ARP = 0x806
+ ETHERTYPE_AT = 0x809b
+ ETHERTYPE_ATALK = 0x809b
+ ETHERTYPE_ATOMIC = 0x86df
+ ETHERTYPE_ATT = 0x8069
+ ETHERTYPE_ATTSTANFORD = 0x8008
+ ETHERTYPE_AUTOPHON = 0x806a
+ ETHERTYPE_AXIS = 0x8856
+ ETHERTYPE_BCLOOP = 0x9003
+ ETHERTYPE_BOFL = 0x8102
+ ETHERTYPE_CABLETRON = 0x7034
+ ETHERTYPE_CHAOS = 0x804
+ ETHERTYPE_COMDESIGN = 0x806c
+ ETHERTYPE_COMPUGRAPHIC = 0x806d
+ ETHERTYPE_COUNTERPOINT = 0x8062
+ ETHERTYPE_CRONUS = 0x8004
+ ETHERTYPE_CRONUSVLN = 0x8003
+ ETHERTYPE_DCA = 0x1234
+ ETHERTYPE_DDE = 0x807b
+ ETHERTYPE_DEBNI = 0xaaaa
+ ETHERTYPE_DECAM = 0x8048
+ ETHERTYPE_DECCUST = 0x6006
+ ETHERTYPE_DECDIAG = 0x6005
+ ETHERTYPE_DECDNS = 0x803c
+ ETHERTYPE_DECDTS = 0x803e
+ ETHERTYPE_DECEXPER = 0x6000
+ ETHERTYPE_DECLAST = 0x8041
+ ETHERTYPE_DECLTM = 0x803f
+ ETHERTYPE_DECMUMPS = 0x6009
+ ETHERTYPE_DECNETBIOS = 0x8040
+ ETHERTYPE_DELTACON = 0x86de
+ ETHERTYPE_DIDDLE = 0x4321
+ ETHERTYPE_DLOG1 = 0x660
+ ETHERTYPE_DLOG2 = 0x661
+ ETHERTYPE_DN = 0x6003
+ ETHERTYPE_DOGFIGHT = 0x1989
+ ETHERTYPE_DSMD = 0x8039
+ ETHERTYPE_ECMA = 0x803
+ ETHERTYPE_ENCRYPT = 0x803d
+ ETHERTYPE_ES = 0x805d
+ ETHERTYPE_EXCELAN = 0x8010
+ ETHERTYPE_EXPERDATA = 0x8049
+ ETHERTYPE_FLIP = 0x8146
+ ETHERTYPE_FLOWCONTROL = 0x8808
+ ETHERTYPE_FRARP = 0x808
+ ETHERTYPE_GENDYN = 0x8068
+ ETHERTYPE_HAYES = 0x8130
+ ETHERTYPE_HIPPI_FP = 0x8180
+ ETHERTYPE_HITACHI = 0x8820
+ ETHERTYPE_HP = 0x8005
+ ETHERTYPE_IEEEPUP = 0xa00
+ ETHERTYPE_IEEEPUPAT = 0xa01
+ ETHERTYPE_IMLBL = 0x4c42
+ ETHERTYPE_IMLBLDIAG = 0x424c
+ ETHERTYPE_IP = 0x800
+ ETHERTYPE_IPAS = 0x876c
+ ETHERTYPE_IPV6 = 0x86dd
+ ETHERTYPE_IPX = 0x8137
+ ETHERTYPE_IPXNEW = 0x8037
+ ETHERTYPE_KALPANA = 0x8582
+ ETHERTYPE_LANBRIDGE = 0x8038
+ ETHERTYPE_LANPROBE = 0x8888
+ ETHERTYPE_LAT = 0x6004
+ ETHERTYPE_LBACK = 0x9000
+ ETHERTYPE_LITTLE = 0x8060
+ ETHERTYPE_LLDP = 0x88cc
+ ETHERTYPE_LOGICRAFT = 0x8148
+ ETHERTYPE_LOOPBACK = 0x9000
+ ETHERTYPE_MACSEC = 0x88e5
+ ETHERTYPE_MATRA = 0x807a
+ ETHERTYPE_MAX = 0xffff
+ ETHERTYPE_MERIT = 0x807c
+ ETHERTYPE_MICP = 0x873a
+ ETHERTYPE_MOPDL = 0x6001
+ ETHERTYPE_MOPRC = 0x6002
+ ETHERTYPE_MOTOROLA = 0x818d
+ ETHERTYPE_MPLS = 0x8847
+ ETHERTYPE_MPLS_MCAST = 0x8848
+ ETHERTYPE_MUMPS = 0x813f
+ ETHERTYPE_NBPCC = 0x3c04
+ ETHERTYPE_NBPCLAIM = 0x3c09
+ ETHERTYPE_NBPCLREQ = 0x3c05
+ ETHERTYPE_NBPCLRSP = 0x3c06
+ ETHERTYPE_NBPCREQ = 0x3c02
+ ETHERTYPE_NBPCRSP = 0x3c03
+ ETHERTYPE_NBPDG = 0x3c07
+ ETHERTYPE_NBPDGB = 0x3c08
+ ETHERTYPE_NBPDLTE = 0x3c0a
+ ETHERTYPE_NBPRAR = 0x3c0c
+ ETHERTYPE_NBPRAS = 0x3c0b
+ ETHERTYPE_NBPRST = 0x3c0d
+ ETHERTYPE_NBPSCD = 0x3c01
+ ETHERTYPE_NBPVCD = 0x3c00
+ ETHERTYPE_NBS = 0x802
+ ETHERTYPE_NCD = 0x8149
+ ETHERTYPE_NESTAR = 0x8006
+ ETHERTYPE_NETBEUI = 0x8191
+ ETHERTYPE_NOVELL = 0x8138
+ ETHERTYPE_NS = 0x600
+ ETHERTYPE_NSAT = 0x601
+ ETHERTYPE_NSCOMPAT = 0x807
+ ETHERTYPE_NTRAILER = 0x10
+ ETHERTYPE_OS9 = 0x7007
+ ETHERTYPE_OS9NET = 0x7009
+ ETHERTYPE_PACER = 0x80c6
+ ETHERTYPE_PAE = 0x888e
+ ETHERTYPE_PBB = 0x88e7
+ ETHERTYPE_PCS = 0x4242
+ ETHERTYPE_PLANNING = 0x8044
+ ETHERTYPE_PPP = 0x880b
+ ETHERTYPE_PPPOE = 0x8864
+ ETHERTYPE_PPPOEDISC = 0x8863
+ ETHERTYPE_PRIMENTS = 0x7031
+ ETHERTYPE_PUP = 0x200
+ ETHERTYPE_PUPAT = 0x200
+ ETHERTYPE_QINQ = 0x88a8
+ ETHERTYPE_RACAL = 0x7030
+ ETHERTYPE_RATIONAL = 0x8150
+ ETHERTYPE_RAWFR = 0x6559
+ ETHERTYPE_RCL = 0x1995
+ ETHERTYPE_RDP = 0x8739
+ ETHERTYPE_RETIX = 0x80f2
+ ETHERTYPE_REVARP = 0x8035
+ ETHERTYPE_SCA = 0x6007
+ ETHERTYPE_SECTRA = 0x86db
+ ETHERTYPE_SECUREDATA = 0x876d
+ ETHERTYPE_SGITW = 0x817e
+ ETHERTYPE_SG_BOUNCE = 0x8016
+ ETHERTYPE_SG_DIAG = 0x8013
+ ETHERTYPE_SG_NETGAMES = 0x8014
+ ETHERTYPE_SG_RESV = 0x8015
+ ETHERTYPE_SIMNET = 0x5208
+ ETHERTYPE_SLOW = 0x8809
+ ETHERTYPE_SNA = 0x80d5
+ ETHERTYPE_SNMP = 0x814c
+ ETHERTYPE_SONIX = 0xfaf5
+ ETHERTYPE_SPIDER = 0x809f
+ ETHERTYPE_SPRITE = 0x500
+ ETHERTYPE_STP = 0x8181
+ ETHERTYPE_TALARIS = 0x812b
+ ETHERTYPE_TALARISMC = 0x852b
+ ETHERTYPE_TCPCOMP = 0x876b
+ ETHERTYPE_TCPSM = 0x9002
+ ETHERTYPE_TEC = 0x814f
+ ETHERTYPE_TIGAN = 0x802f
+ ETHERTYPE_TRAIL = 0x1000
+ ETHERTYPE_TRANSETHER = 0x6558
+ ETHERTYPE_TYMSHARE = 0x802e
+ ETHERTYPE_UBBST = 0x7005
+ ETHERTYPE_UBDEBUG = 0x900
+ ETHERTYPE_UBDIAGLOOP = 0x7002
+ ETHERTYPE_UBDL = 0x7000
+ ETHERTYPE_UBNIU = 0x7001
+ ETHERTYPE_UBNMC = 0x7003
+ ETHERTYPE_VALID = 0x1600
+ ETHERTYPE_VARIAN = 0x80dd
+ ETHERTYPE_VAXELN = 0x803b
+ ETHERTYPE_VEECO = 0x8067
+ ETHERTYPE_VEXP = 0x805b
+ ETHERTYPE_VGLAB = 0x8131
+ ETHERTYPE_VINES = 0xbad
+ ETHERTYPE_VINESECHO = 0xbaf
+ ETHERTYPE_VINESLOOP = 0xbae
+ ETHERTYPE_VITAL = 0xff00
+ ETHERTYPE_VLAN = 0x8100
+ ETHERTYPE_VLTLMAN = 0x8080
+ ETHERTYPE_VPROD = 0x805c
+ ETHERTYPE_VURESERVED = 0x8147
+ ETHERTYPE_WATERLOO = 0x8130
+ ETHERTYPE_WELLFLEET = 0x8103
+ ETHERTYPE_X25 = 0x805
+ ETHERTYPE_X75 = 0x801
+ ETHERTYPE_XNSSM = 0x9001
+ ETHERTYPE_XTP = 0x817d
+ ETHER_ADDR_LEN = 0x6
+ ETHER_ALIGN = 0x2
+ ETHER_CRC_LEN = 0x4
+ ETHER_CRC_POLY_BE = 0x4c11db6
+ ETHER_CRC_POLY_LE = 0xedb88320
+ ETHER_HDR_LEN = 0xe
+ ETHER_MAX_DIX_LEN = 0x600
+ ETHER_MAX_HARDMTU_LEN = 0xff9b
+ ETHER_MAX_LEN = 0x5ee
+ ETHER_MIN_LEN = 0x40
+ ETHER_TYPE_LEN = 0x2
+ ETHER_VLAN_ENCAP_LEN = 0x4
+ EVFILT_AIO = -0x3
+ EVFILT_DEVICE = -0x8
+ EVFILT_PROC = -0x5
+ EVFILT_READ = -0x1
+ EVFILT_SIGNAL = -0x6
+ EVFILT_SYSCOUNT = 0x8
+ EVFILT_TIMER = -0x7
+ EVFILT_VNODE = -0x4
+ EVFILT_WRITE = -0x2
+ EVL_ENCAPLEN = 0x4
+ EVL_PRIO_BITS = 0xd
+ EVL_PRIO_MAX = 0x7
+ EVL_VLID_MASK = 0xfff
+ EVL_VLID_MAX = 0xffe
+ EVL_VLID_MIN = 0x1
+ EVL_VLID_NULL = 0x0
+ EV_ADD = 0x1
+ EV_CLEAR = 0x20
+ EV_DELETE = 0x2
+ EV_DISABLE = 0x8
+ EV_DISPATCH = 0x80
+ EV_ENABLE = 0x4
+ EV_EOF = 0x8000
+ EV_ERROR = 0x4000
+ EV_FLAG1 = 0x2000
+ EV_ONESHOT = 0x10
+ EV_RECEIPT = 0x40
+ EV_SYSFLAGS = 0xf000
+ EXTA = 0x4b00
+ EXTB = 0x9600
+ EXTPROC = 0x800
+ FD_CLOEXEC = 0x1
+ FD_SETSIZE = 0x400
+ FLUSHO = 0x800000
+ F_DUPFD = 0x0
+ F_DUPFD_CLOEXEC = 0xa
+ F_GETFD = 0x1
+ F_GETFL = 0x3
+ F_GETLK = 0x7
+ F_GETOWN = 0x5
+ F_ISATTY = 0xb
+ F_OK = 0x0
+ F_RDLCK = 0x1
+ F_SETFD = 0x2
+ F_SETFL = 0x4
+ F_SETLK = 0x8
+ F_SETLKW = 0x9
+ F_SETOWN = 0x6
+ F_UNLCK = 0x2
+ F_WRLCK = 0x3
+ HUPCL = 0x4000
+ HW_MACHINE = 0x1
+ ICANON = 0x100
+ ICMP6_FILTER = 0x12
+ ICRNL = 0x100
+ IEXTEN = 0x400
+ IFAN_ARRIVAL = 0x0
+ IFAN_DEPARTURE = 0x1
+ IFF_ALLMULTI = 0x200
+ IFF_BROADCAST = 0x2
+ IFF_CANTCHANGE = 0x8e52
+ IFF_DEBUG = 0x4
+ IFF_LINK0 = 0x1000
+ IFF_LINK1 = 0x2000
+ IFF_LINK2 = 0x4000
+ IFF_LOOPBACK = 0x8
+ IFF_MULTICAST = 0x8000
+ IFF_NOARP = 0x80
+ IFF_OACTIVE = 0x400
+ IFF_POINTOPOINT = 0x10
+ IFF_PROMISC = 0x100
+ IFF_RUNNING = 0x40
+ IFF_SIMPLEX = 0x800
+ IFF_STATICARP = 0x20
+ IFF_UP = 0x1
+ IFNAMSIZ = 0x10
+ IFT_1822 = 0x2
+ IFT_A12MPPSWITCH = 0x82
+ IFT_AAL2 = 0xbb
+ IFT_AAL5 = 0x31
+ IFT_ADSL = 0x5e
+ IFT_AFLANE8023 = 0x3b
+ IFT_AFLANE8025 = 0x3c
+ IFT_ARAP = 0x58
+ IFT_ARCNET = 0x23
+ IFT_ARCNETPLUS = 0x24
+ IFT_ASYNC = 0x54
+ IFT_ATM = 0x25
+ IFT_ATMDXI = 0x69
+ IFT_ATMFUNI = 0x6a
+ IFT_ATMIMA = 0x6b
+ IFT_ATMLOGICAL = 0x50
+ IFT_ATMRADIO = 0xbd
+ IFT_ATMSUBINTERFACE = 0x86
+ IFT_ATMVCIENDPT = 0xc2
+ IFT_ATMVIRTUAL = 0x95
+ IFT_BGPPOLICYACCOUNTING = 0xa2
+ IFT_BLUETOOTH = 0xf8
+ IFT_BRIDGE = 0xd1
+ IFT_BSC = 0x53
+ IFT_CARP = 0xf7
+ IFT_CCTEMUL = 0x3d
+ IFT_CEPT = 0x13
+ IFT_CES = 0x85
+ IFT_CHANNEL = 0x46
+ IFT_CNR = 0x55
+ IFT_COFFEE = 0x84
+ IFT_COMPOSITELINK = 0x9b
+ IFT_DCN = 0x8d
+ IFT_DIGITALPOWERLINE = 0x8a
+ IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba
+ IFT_DLSW = 0x4a
+ IFT_DOCSCABLEDOWNSTREAM = 0x80
+ IFT_DOCSCABLEMACLAYER = 0x7f
+ IFT_DOCSCABLEUPSTREAM = 0x81
+ IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd
+ IFT_DS0 = 0x51
+ IFT_DS0BUNDLE = 0x52
+ IFT_DS1FDL = 0xaa
+ IFT_DS3 = 0x1e
+ IFT_DTM = 0x8c
+ IFT_DUMMY = 0xf1
+ IFT_DVBASILN = 0xac
+ IFT_DVBASIOUT = 0xad
+ IFT_DVBRCCDOWNSTREAM = 0x93
+ IFT_DVBRCCMACLAYER = 0x92
+ IFT_DVBRCCUPSTREAM = 0x94
+ IFT_ECONET = 0xce
+ IFT_ENC = 0xf4
+ IFT_EON = 0x19
+ IFT_EPLRS = 0x57
+ IFT_ESCON = 0x49
+ IFT_ETHER = 0x6
+ IFT_FAITH = 0xf3
+ IFT_FAST = 0x7d
+ IFT_FASTETHER = 0x3e
+ IFT_FASTETHERFX = 0x45
+ IFT_FDDI = 0xf
+ IFT_FIBRECHANNEL = 0x38
+ IFT_FRAMERELAYINTERCONNECT = 0x3a
+ IFT_FRAMERELAYMPI = 0x5c
+ IFT_FRDLCIENDPT = 0xc1
+ IFT_FRELAY = 0x20
+ IFT_FRELAYDCE = 0x2c
+ IFT_FRF16MFRBUNDLE = 0xa3
+ IFT_FRFORWARD = 0x9e
+ IFT_G703AT2MB = 0x43
+ IFT_G703AT64K = 0x42
+ IFT_GIF = 0xf0
+ IFT_GIGABITETHERNET = 0x75
+ IFT_GR303IDT = 0xb2
+ IFT_GR303RDT = 0xb1
+ IFT_H323GATEKEEPER = 0xa4
+ IFT_H323PROXY = 0xa5
+ IFT_HDH1822 = 0x3
+ IFT_HDLC = 0x76
+ IFT_HDSL2 = 0xa8
+ IFT_HIPERLAN2 = 0xb7
+ IFT_HIPPI = 0x2f
+ IFT_HIPPIINTERFACE = 0x39
+ IFT_HOSTPAD = 0x5a
+ IFT_HSSI = 0x2e
+ IFT_HY = 0xe
+ IFT_IBM370PARCHAN = 0x48
+ IFT_IDSL = 0x9a
+ IFT_IEEE1394 = 0x90
+ IFT_IEEE80211 = 0x47
+ IFT_IEEE80212 = 0x37
+ IFT_IEEE8023ADLAG = 0xa1
+ IFT_IFGSN = 0x91
+ IFT_IMT = 0xbe
+ IFT_INFINIBAND = 0xc7
+ IFT_INTERLEAVE = 0x7c
+ IFT_IP = 0x7e
+ IFT_IPFORWARD = 0x8e
+ IFT_IPOVERATM = 0x72
+ IFT_IPOVERCDLC = 0x6d
+ IFT_IPOVERCLAW = 0x6e
+ IFT_IPSWITCH = 0x4e
+ IFT_ISDN = 0x3f
+ IFT_ISDNBASIC = 0x14
+ IFT_ISDNPRIMARY = 0x15
+ IFT_ISDNS = 0x4b
+ IFT_ISDNU = 0x4c
+ IFT_ISO88022LLC = 0x29
+ IFT_ISO88023 = 0x7
+ IFT_ISO88024 = 0x8
+ IFT_ISO88025 = 0x9
+ IFT_ISO88025CRFPINT = 0x62
+ IFT_ISO88025DTR = 0x56
+ IFT_ISO88025FIBER = 0x73
+ IFT_ISO88026 = 0xa
+ IFT_ISUP = 0xb3
+ IFT_L2VLAN = 0x87
+ IFT_L3IPVLAN = 0x88
+ IFT_L3IPXVLAN = 0x89
+ IFT_LAPB = 0x10
+ IFT_LAPD = 0x4d
+ IFT_LAPF = 0x77
+ IFT_LINEGROUP = 0xd2
+ IFT_LOCALTALK = 0x2a
+ IFT_LOOP = 0x18
+ IFT_MBIM = 0xfa
+ IFT_MEDIAMAILOVERIP = 0x8b
+ IFT_MFSIGLINK = 0xa7
+ IFT_MIOX25 = 0x26
+ IFT_MODEM = 0x30
+ IFT_MPC = 0x71
+ IFT_MPLS = 0xa6
+ IFT_MPLSTUNNEL = 0x96
+ IFT_MSDSL = 0x8f
+ IFT_MVL = 0xbf
+ IFT_MYRINET = 0x63
+ IFT_NFAS = 0xaf
+ IFT_NSIP = 0x1b
+ IFT_OPTICALCHANNEL = 0xc3
+ IFT_OPTICALTRANSPORT = 0xc4
+ IFT_OTHER = 0x1
+ IFT_P10 = 0xc
+ IFT_P80 = 0xd
+ IFT_PARA = 0x22
+ IFT_PFLOG = 0xf5
+ IFT_PFLOW = 0xf9
+ IFT_PFSYNC = 0xf6
+ IFT_PLC = 0xae
+ IFT_PON155 = 0xcf
+ IFT_PON622 = 0xd0
+ IFT_POS = 0xab
+ IFT_PPP = 0x17
+ IFT_PPPMULTILINKBUNDLE = 0x6c
+ IFT_PROPATM = 0xc5
+ IFT_PROPBWAP2MP = 0xb8
+ IFT_PROPCNLS = 0x59
+ IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5
+ IFT_PROPDOCSWIRELESSMACLAYER = 0xb4
+ IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6
+ IFT_PROPMUX = 0x36
+ IFT_PROPVIRTUAL = 0x35
+ IFT_PROPWIRELESSP2P = 0x9d
+ IFT_PTPSERIAL = 0x16
+ IFT_PVC = 0xf2
+ IFT_Q2931 = 0xc9
+ IFT_QLLC = 0x44
+ IFT_RADIOMAC = 0xbc
+ IFT_RADSL = 0x5f
+ IFT_REACHDSL = 0xc0
+ IFT_RFC1483 = 0x9f
+ IFT_RS232 = 0x21
+ IFT_RSRB = 0x4f
+ IFT_SDLC = 0x11
+ IFT_SDSL = 0x60
+ IFT_SHDSL = 0xa9
+ IFT_SIP = 0x1f
+ IFT_SIPSIG = 0xcc
+ IFT_SIPTG = 0xcb
+ IFT_SLIP = 0x1c
+ IFT_SMDSDXI = 0x2b
+ IFT_SMDSICIP = 0x34
+ IFT_SONET = 0x27
+ IFT_SONETOVERHEADCHANNEL = 0xb9
+ IFT_SONETPATH = 0x32
+ IFT_SONETVT = 0x33
+ IFT_SRP = 0x97
+ IFT_SS7SIGLINK = 0x9c
+ IFT_STACKTOSTACK = 0x6f
+ IFT_STARLAN = 0xb
+ IFT_T1 = 0x12
+ IFT_TDLC = 0x74
+ IFT_TELINK = 0xc8
+ IFT_TERMPAD = 0x5b
+ IFT_TR008 = 0xb0
+ IFT_TRANSPHDLC = 0x7b
+ IFT_TUNNEL = 0x83
+ IFT_ULTRA = 0x1d
+ IFT_USB = 0xa0
+ IFT_V11 = 0x40
+ IFT_V35 = 0x2d
+ IFT_V36 = 0x41
+ IFT_V37 = 0x78
+ IFT_VDSL = 0x61
+ IFT_VIRTUALIPADDRESS = 0x70
+ IFT_VIRTUALTG = 0xca
+ IFT_VOICEDID = 0xd5
+ IFT_VOICEEM = 0x64
+ IFT_VOICEEMFGD = 0xd3
+ IFT_VOICEENCAP = 0x67
+ IFT_VOICEFGDEANA = 0xd4
+ IFT_VOICEFXO = 0x65
+ IFT_VOICEFXS = 0x66
+ IFT_VOICEOVERATM = 0x98
+ IFT_VOICEOVERCABLE = 0xc6
+ IFT_VOICEOVERFRAMERELAY = 0x99
+ IFT_VOICEOVERIP = 0x68
+ IFT_X213 = 0x5d
+ IFT_X25 = 0x5
+ IFT_X25DDN = 0x4
+ IFT_X25HUNTGROUP = 0x7a
+ IFT_X25MLP = 0x79
+ IFT_X25PLE = 0x28
+ IFT_XETHER = 0x1a
+ IGNBRK = 0x1
+ IGNCR = 0x80
+ IGNPAR = 0x4
+ IMAXBEL = 0x2000
+ INLCR = 0x40
+ INPCK = 0x10
+ IN_CLASSA_HOST = 0xffffff
+ IN_CLASSA_MAX = 0x80
+ IN_CLASSA_NET = 0xff000000
+ IN_CLASSA_NSHIFT = 0x18
+ IN_CLASSB_HOST = 0xffff
+ IN_CLASSB_MAX = 0x10000
+ IN_CLASSB_NET = 0xffff0000
+ IN_CLASSB_NSHIFT = 0x10
+ IN_CLASSC_HOST = 0xff
+ IN_CLASSC_NET = 0xffffff00
+ IN_CLASSC_NSHIFT = 0x8
+ IN_CLASSD_HOST = 0xfffffff
+ IN_CLASSD_NET = 0xf0000000
+ IN_CLASSD_NSHIFT = 0x1c
+ IN_LOOPBACKNET = 0x7f
+ IN_RFC3021_HOST = 0x1
+ IN_RFC3021_NET = 0xfffffffe
+ IN_RFC3021_NSHIFT = 0x1f
+ IPPROTO_AH = 0x33
+ IPPROTO_CARP = 0x70
+ IPPROTO_DIVERT = 0x102
+ IPPROTO_DONE = 0x101
+ IPPROTO_DSTOPTS = 0x3c
+ IPPROTO_EGP = 0x8
+ IPPROTO_ENCAP = 0x62
+ IPPROTO_EON = 0x50
+ IPPROTO_ESP = 0x32
+ IPPROTO_ETHERIP = 0x61
+ IPPROTO_FRAGMENT = 0x2c
+ IPPROTO_GGP = 0x3
+ IPPROTO_GRE = 0x2f
+ IPPROTO_HOPOPTS = 0x0
+ IPPROTO_ICMP = 0x1
+ IPPROTO_ICMPV6 = 0x3a
+ IPPROTO_IDP = 0x16
+ IPPROTO_IGMP = 0x2
+ IPPROTO_IP = 0x0
+ IPPROTO_IPCOMP = 0x6c
+ IPPROTO_IPIP = 0x4
+ IPPROTO_IPV4 = 0x4
+ IPPROTO_IPV6 = 0x29
+ IPPROTO_MAX = 0x100
+ IPPROTO_MAXID = 0x103
+ IPPROTO_MOBILE = 0x37
+ IPPROTO_MPLS = 0x89
+ IPPROTO_NONE = 0x3b
+ IPPROTO_PFSYNC = 0xf0
+ IPPROTO_PIM = 0x67
+ IPPROTO_PUP = 0xc
+ IPPROTO_RAW = 0xff
+ IPPROTO_ROUTING = 0x2b
+ IPPROTO_RSVP = 0x2e
+ IPPROTO_TCP = 0x6
+ IPPROTO_TP = 0x1d
+ IPPROTO_UDP = 0x11
+ IPPROTO_UDPLITE = 0x88
+ IPV6_AUTH_LEVEL = 0x35
+ IPV6_AUTOFLOWLABEL = 0x3b
+ IPV6_CHECKSUM = 0x1a
+ IPV6_DEFAULT_MULTICAST_HOPS = 0x1
+ IPV6_DEFAULT_MULTICAST_LOOP = 0x1
+ IPV6_DEFHLIM = 0x40
+ IPV6_DONTFRAG = 0x3e
+ IPV6_DSTOPTS = 0x32
+ IPV6_ESP_NETWORK_LEVEL = 0x37
+ IPV6_ESP_TRANS_LEVEL = 0x36
+ IPV6_FAITH = 0x1d
+ IPV6_FLOWINFO_MASK = 0xfffffff
+ IPV6_FLOWLABEL_MASK = 0xfffff
+ IPV6_FRAGTTL = 0x78
+ IPV6_HLIMDEC = 0x1
+ IPV6_HOPLIMIT = 0x2f
+ IPV6_HOPOPTS = 0x31
+ IPV6_IPCOMP_LEVEL = 0x3c
+ IPV6_JOIN_GROUP = 0xc
+ IPV6_LEAVE_GROUP = 0xd
+ IPV6_MAXHLIM = 0xff
+ IPV6_MAXPACKET = 0xffff
+ IPV6_MINHOPCOUNT = 0x41
+ IPV6_MMTU = 0x500
+ IPV6_MULTICAST_HOPS = 0xa
+ IPV6_MULTICAST_IF = 0x9
+ IPV6_MULTICAST_LOOP = 0xb
+ IPV6_NEXTHOP = 0x30
+ IPV6_OPTIONS = 0x1
+ IPV6_PATHMTU = 0x2c
+ IPV6_PIPEX = 0x3f
+ IPV6_PKTINFO = 0x2e
+ IPV6_PORTRANGE = 0xe
+ IPV6_PORTRANGE_DEFAULT = 0x0
+ IPV6_PORTRANGE_HIGH = 0x1
+ IPV6_PORTRANGE_LOW = 0x2
+ IPV6_RECVDSTOPTS = 0x28
+ IPV6_RECVDSTPORT = 0x40
+ IPV6_RECVHOPLIMIT = 0x25
+ IPV6_RECVHOPOPTS = 0x27
+ IPV6_RECVPATHMTU = 0x2b
+ IPV6_RECVPKTINFO = 0x24
+ IPV6_RECVRTHDR = 0x26
+ IPV6_RECVTCLASS = 0x39
+ IPV6_RTABLE = 0x1021
+ IPV6_RTHDR = 0x33
+ IPV6_RTHDRDSTOPTS = 0x23
+ IPV6_RTHDR_LOOSE = 0x0
+ IPV6_RTHDR_STRICT = 0x1
+ IPV6_RTHDR_TYPE_0 = 0x0
+ IPV6_SOCKOPT_RESERVED1 = 0x3
+ IPV6_TCLASS = 0x3d
+ IPV6_UNICAST_HOPS = 0x4
+ IPV6_USE_MIN_MTU = 0x2a
+ IPV6_V6ONLY = 0x1b
+ IPV6_VERSION = 0x60
+ IPV6_VERSION_MASK = 0xf0
+ IP_ADD_MEMBERSHIP = 0xc
+ IP_AUTH_LEVEL = 0x14
+ IP_DEFAULT_MULTICAST_LOOP = 0x1
+ IP_DEFAULT_MULTICAST_TTL = 0x1
+ IP_DF = 0x4000
+ IP_DROP_MEMBERSHIP = 0xd
+ IP_ESP_NETWORK_LEVEL = 0x16
+ IP_ESP_TRANS_LEVEL = 0x15
+ IP_HDRINCL = 0x2
+ IP_IPCOMP_LEVEL = 0x1d
+ IP_IPDEFTTL = 0x25
+ IP_IPSECFLOWINFO = 0x24
+ IP_IPSEC_LOCAL_AUTH = 0x1b
+ IP_IPSEC_LOCAL_CRED = 0x19
+ IP_IPSEC_LOCAL_ID = 0x17
+ IP_IPSEC_REMOTE_AUTH = 0x1c
+ IP_IPSEC_REMOTE_CRED = 0x1a
+ IP_IPSEC_REMOTE_ID = 0x18
+ IP_MAXPACKET = 0xffff
+ IP_MAX_MEMBERSHIPS = 0xfff
+ IP_MF = 0x2000
+ IP_MINTTL = 0x20
+ IP_MIN_MEMBERSHIPS = 0xf
+ IP_MSS = 0x240
+ IP_MULTICAST_IF = 0x9
+ IP_MULTICAST_LOOP = 0xb
+ IP_MULTICAST_TTL = 0xa
+ IP_OFFMASK = 0x1fff
+ IP_OPTIONS = 0x1
+ IP_PIPEX = 0x22
+ IP_PORTRANGE = 0x13
+ IP_PORTRANGE_DEFAULT = 0x0
+ IP_PORTRANGE_HIGH = 0x1
+ IP_PORTRANGE_LOW = 0x2
+ IP_RECVDSTADDR = 0x7
+ IP_RECVDSTPORT = 0x21
+ IP_RECVIF = 0x1e
+ IP_RECVOPTS = 0x5
+ IP_RECVRETOPTS = 0x6
+ IP_RECVRTABLE = 0x23
+ IP_RECVTTL = 0x1f
+ IP_RETOPTS = 0x8
+ IP_RF = 0x8000
+ IP_RTABLE = 0x1021
+ IP_SENDSRCADDR = 0x7
+ IP_TOS = 0x3
+ IP_TTL = 0x4
+ ISIG = 0x80
+ ISTRIP = 0x20
+ IUCLC = 0x1000
+ IXANY = 0x800
+ IXOFF = 0x400
+ IXON = 0x200
+ KERN_HOSTNAME = 0xa
+ KERN_OSRELEASE = 0x2
+ KERN_OSTYPE = 0x1
+ KERN_VERSION = 0x4
+ LCNT_OVERLOAD_FLUSH = 0x6
+ LOCK_EX = 0x2
+ LOCK_NB = 0x4
+ LOCK_SH = 0x1
+ LOCK_UN = 0x8
+ MADV_DONTNEED = 0x4
+ MADV_FREE = 0x6
+ MADV_NORMAL = 0x0
+ MADV_RANDOM = 0x1
+ MADV_SEQUENTIAL = 0x2
+ MADV_SPACEAVAIL = 0x5
+ MADV_WILLNEED = 0x3
+ MAP_ANON = 0x1000
+ MAP_ANONYMOUS = 0x1000
+ MAP_CONCEAL = 0x8000
+ MAP_COPY = 0x2
+ MAP_FILE = 0x0
+ MAP_FIXED = 0x10
+ MAP_FLAGMASK = 0xfff7
+ MAP_HASSEMAPHORE = 0x0
+ MAP_INHERIT = 0x0
+ MAP_INHERIT_COPY = 0x1
+ MAP_INHERIT_NONE = 0x2
+ MAP_INHERIT_SHARE = 0x0
+ MAP_INHERIT_ZERO = 0x3
+ MAP_NOEXTEND = 0x0
+ MAP_NORESERVE = 0x0
+ MAP_PRIVATE = 0x2
+ MAP_RENAME = 0x0
+ MAP_SHARED = 0x1
+ MAP_STACK = 0x4000
+ MAP_TRYFIXED = 0x0
+ MCL_CURRENT = 0x1
+ MCL_FUTURE = 0x2
+ MNT_ASYNC = 0x40
+ MNT_DEFEXPORTED = 0x200
+ MNT_DELEXPORT = 0x20000
+ MNT_DOOMED = 0x8000000
+ MNT_EXPORTANON = 0x400
+ MNT_EXPORTED = 0x100
+ MNT_EXRDONLY = 0x80
+ MNT_FORCE = 0x80000
+ MNT_LAZY = 0x3
+ MNT_LOCAL = 0x1000
+ MNT_NOATIME = 0x8000
+ MNT_NODEV = 0x10
+ MNT_NOEXEC = 0x4
+ MNT_NOPERM = 0x20
+ MNT_NOSUID = 0x8
+ MNT_NOWAIT = 0x2
+ MNT_QUOTA = 0x2000
+ MNT_RDONLY = 0x1
+ MNT_RELOAD = 0x40000
+ MNT_ROOTFS = 0x4000
+ MNT_SOFTDEP = 0x4000000
+ MNT_STALLED = 0x100000
+ MNT_SWAPPABLE = 0x200000
+ MNT_SYNCHRONOUS = 0x2
+ MNT_UPDATE = 0x10000
+ MNT_VISFLAGMASK = 0x400ffff
+ MNT_WAIT = 0x1
+ MNT_WANTRDWR = 0x2000000
+ MNT_WXALLOWED = 0x800
+ MSG_BCAST = 0x100
+ MSG_CMSG_CLOEXEC = 0x800
+ MSG_CTRUNC = 0x20
+ MSG_DONTROUTE = 0x4
+ MSG_DONTWAIT = 0x80
+ MSG_EOR = 0x8
+ MSG_MCAST = 0x200
+ MSG_NOSIGNAL = 0x400
+ MSG_OOB = 0x1
+ MSG_PEEK = 0x2
+ MSG_TRUNC = 0x10
+ MSG_WAITALL = 0x40
+ MS_ASYNC = 0x1
+ MS_INVALIDATE = 0x4
+ MS_SYNC = 0x2
+ NAME_MAX = 0xff
+ NET_RT_DUMP = 0x1
+ NET_RT_FLAGS = 0x2
+ NET_RT_IFLIST = 0x3
+ NET_RT_IFNAMES = 0x6
+ NET_RT_MAXID = 0x7
+ NET_RT_STATS = 0x4
+ NET_RT_TABLE = 0x5
+ NFDBITS = 0x20
+ NOFLSH = 0x80000000
+ NOKERNINFO = 0x2000000
+ NOTE_ATTRIB = 0x8
+ NOTE_CHANGE = 0x1
+ NOTE_CHILD = 0x4
+ NOTE_DELETE = 0x1
+ NOTE_EOF = 0x2
+ NOTE_EXEC = 0x20000000
+ NOTE_EXIT = 0x80000000
+ NOTE_EXTEND = 0x4
+ NOTE_FORK = 0x40000000
+ NOTE_LINK = 0x10
+ NOTE_LOWAT = 0x1
+ NOTE_PCTRLMASK = 0xf0000000
+ NOTE_PDATAMASK = 0xfffff
+ NOTE_RENAME = 0x20
+ NOTE_REVOKE = 0x40
+ NOTE_TRACK = 0x1
+ NOTE_TRACKERR = 0x2
+ NOTE_TRUNCATE = 0x80
+ NOTE_WRITE = 0x2
+ OCRNL = 0x10
+ OLCUC = 0x20
+ ONLCR = 0x2
+ ONLRET = 0x80
+ ONOCR = 0x40
+ ONOEOT = 0x8
+ OPOST = 0x1
+ OXTABS = 0x4
+ O_ACCMODE = 0x3
+ O_APPEND = 0x8
+ O_ASYNC = 0x40
+ O_CLOEXEC = 0x10000
+ O_CREAT = 0x200
+ O_DIRECTORY = 0x20000
+ O_DSYNC = 0x80
+ O_EXCL = 0x800
+ O_EXLOCK = 0x20
+ O_FSYNC = 0x80
+ O_NDELAY = 0x4
+ O_NOCTTY = 0x8000
+ O_NOFOLLOW = 0x100
+ O_NONBLOCK = 0x4
+ O_RDONLY = 0x0
+ O_RDWR = 0x2
+ O_RSYNC = 0x80
+ O_SHLOCK = 0x10
+ O_SYNC = 0x80
+ O_TRUNC = 0x400
+ O_WRONLY = 0x1
+ PARENB = 0x1000
+ PARMRK = 0x8
+ PARODD = 0x2000
+ PENDIN = 0x20000000
+ PF_FLUSH = 0x1
+ PRIO_PGRP = 0x1
+ PRIO_PROCESS = 0x0
+ PRIO_USER = 0x2
+ PROT_EXEC = 0x4
+ PROT_NONE = 0x0
+ PROT_READ = 0x1
+ PROT_WRITE = 0x2
+ RLIMIT_CORE = 0x4
+ RLIMIT_CPU = 0x0
+ RLIMIT_DATA = 0x2
+ RLIMIT_FSIZE = 0x1
+ RLIMIT_MEMLOCK = 0x6
+ RLIMIT_NOFILE = 0x8
+ RLIMIT_NPROC = 0x7
+ RLIMIT_RSS = 0x5
+ RLIMIT_STACK = 0x3
+ RLIM_INFINITY = 0x7fffffffffffffff
+ RTAX_AUTHOR = 0x6
+ RTAX_BFD = 0xb
+ RTAX_BRD = 0x7
+ RTAX_DNS = 0xc
+ RTAX_DST = 0x0
+ RTAX_GATEWAY = 0x1
+ RTAX_GENMASK = 0x3
+ RTAX_IFA = 0x5
+ RTAX_IFP = 0x4
+ RTAX_LABEL = 0xa
+ RTAX_MAX = 0xf
+ RTAX_NETMASK = 0x2
+ RTAX_SEARCH = 0xe
+ RTAX_SRC = 0x8
+ RTAX_SRCMASK = 0x9
+ RTAX_STATIC = 0xd
+ RTA_AUTHOR = 0x40
+ RTA_BFD = 0x800
+ RTA_BRD = 0x80
+ RTA_DNS = 0x1000
+ RTA_DST = 0x1
+ RTA_GATEWAY = 0x2
+ RTA_GENMASK = 0x8
+ RTA_IFA = 0x20
+ RTA_IFP = 0x10
+ RTA_LABEL = 0x400
+ RTA_NETMASK = 0x4
+ RTA_SEARCH = 0x4000
+ RTA_SRC = 0x100
+ RTA_SRCMASK = 0x200
+ RTA_STATIC = 0x2000
+ RTF_ANNOUNCE = 0x4000
+ RTF_BFD = 0x1000000
+ RTF_BLACKHOLE = 0x1000
+ RTF_BROADCAST = 0x400000
+ RTF_CACHED = 0x20000
+ RTF_CLONED = 0x10000
+ RTF_CLONING = 0x100
+ RTF_CONNECTED = 0x800000
+ RTF_DONE = 0x40
+ RTF_DYNAMIC = 0x10
+ RTF_FMASK = 0x110fc08
+ RTF_GATEWAY = 0x2
+ RTF_HOST = 0x4
+ RTF_LLINFO = 0x400
+ RTF_LOCAL = 0x200000
+ RTF_MODIFIED = 0x20
+ RTF_MPATH = 0x40000
+ RTF_MPLS = 0x100000
+ RTF_MULTICAST = 0x200
+ RTF_PERMANENT_ARP = 0x2000
+ RTF_PROTO1 = 0x8000
+ RTF_PROTO2 = 0x4000
+ RTF_PROTO3 = 0x2000
+ RTF_REJECT = 0x8
+ RTF_STATIC = 0x800
+ RTF_UP = 0x1
+ RTF_USETRAILERS = 0x8000
+ RTM_80211INFO = 0x15
+ RTM_ADD = 0x1
+ RTM_BFD = 0x12
+ RTM_CHANGE = 0x3
+ RTM_CHGADDRATTR = 0x14
+ RTM_DELADDR = 0xd
+ RTM_DELETE = 0x2
+ RTM_DESYNC = 0x10
+ RTM_GET = 0x4
+ RTM_IFANNOUNCE = 0xf
+ RTM_IFINFO = 0xe
+ RTM_INVALIDATE = 0x11
+ RTM_LOSING = 0x5
+ RTM_MAXSIZE = 0x800
+ RTM_MISS = 0x7
+ RTM_NEWADDR = 0xc
+ RTM_PROPOSAL = 0x13
+ RTM_REDIRECT = 0x6
+ RTM_RESOLVE = 0xb
+ RTM_RTTUNIT = 0xf4240
+ RTM_VERSION = 0x5
+ RTV_EXPIRE = 0x4
+ RTV_HOPCOUNT = 0x2
+ RTV_MTU = 0x1
+ RTV_RPIPE = 0x8
+ RTV_RTT = 0x40
+ RTV_RTTVAR = 0x80
+ RTV_SPIPE = 0x10
+ RTV_SSTHRESH = 0x20
+ RT_TABLEID_BITS = 0x8
+ RT_TABLEID_MASK = 0xff
+ RT_TABLEID_MAX = 0xff
+ RUSAGE_CHILDREN = -0x1
+ RUSAGE_SELF = 0x0
+ RUSAGE_THREAD = 0x1
+ SCM_RIGHTS = 0x1
+ SCM_TIMESTAMP = 0x4
+ SHUT_RD = 0x0
+ SHUT_RDWR = 0x2
+ SHUT_WR = 0x1
+ SIOCADDMULTI = 0x80206931
+ SIOCAIFADDR = 0x8040691a
+ SIOCAIFGROUP = 0x80286987
+ SIOCATMARK = 0x40047307
+ SIOCBRDGADD = 0x8060693c
+ SIOCBRDGADDL = 0x80606949
+ SIOCBRDGADDS = 0x80606941
+ SIOCBRDGARL = 0x808c694d
+ SIOCBRDGDADDR = 0x81286947
+ SIOCBRDGDEL = 0x8060693d
+ SIOCBRDGDELS = 0x80606942
+ SIOCBRDGFLUSH = 0x80606948
+ SIOCBRDGFRL = 0x808c694e
+ SIOCBRDGGCACHE = 0xc0186941
+ SIOCBRDGGFD = 0xc0186952
+ SIOCBRDGGHT = 0xc0186951
+ SIOCBRDGGIFFLGS = 0xc060693e
+ SIOCBRDGGMA = 0xc0186953
+ SIOCBRDGGPARAM = 0xc0406958
+ SIOCBRDGGPRI = 0xc0186950
+ SIOCBRDGGRL = 0xc030694f
+ SIOCBRDGGTO = 0xc0186946
+ SIOCBRDGIFS = 0xc0606942
+ SIOCBRDGRTS = 0xc0206943
+ SIOCBRDGSADDR = 0xc1286944
+ SIOCBRDGSCACHE = 0x80186940
+ SIOCBRDGSFD = 0x80186952
+ SIOCBRDGSHT = 0x80186951
+ SIOCBRDGSIFCOST = 0x80606955
+ SIOCBRDGSIFFLGS = 0x8060693f
+ SIOCBRDGSIFPRIO = 0x80606954
+ SIOCBRDGSIFPROT = 0x8060694a
+ SIOCBRDGSMA = 0x80186953
+ SIOCBRDGSPRI = 0x80186950
+ SIOCBRDGSPROTO = 0x8018695a
+ SIOCBRDGSTO = 0x80186945
+ SIOCBRDGSTXHC = 0x80186959
+ SIOCDELLABEL = 0x80206997
+ SIOCDELMULTI = 0x80206932
+ SIOCDIFADDR = 0x80206919
+ SIOCDIFGROUP = 0x80286989
+ SIOCDIFPARENT = 0x802069b4
+ SIOCDIFPHYADDR = 0x80206949
+ SIOCDPWE3NEIGHBOR = 0x802069de
+ SIOCDVNETID = 0x802069af
+ SIOCGETKALIVE = 0xc01869a4
+ SIOCGETLABEL = 0x8020699a
+ SIOCGETMPWCFG = 0xc02069ae
+ SIOCGETPFLOW = 0xc02069fe
+ SIOCGETPFSYNC = 0xc02069f8
+ SIOCGETSGCNT = 0xc0207534
+ SIOCGETVIFCNT = 0xc0287533
+ SIOCGETVLAN = 0xc0206990
+ SIOCGIFADDR = 0xc0206921
+ SIOCGIFBRDADDR = 0xc0206923
+ SIOCGIFCONF = 0xc0106924
+ SIOCGIFDATA = 0xc020691b
+ SIOCGIFDESCR = 0xc0206981
+ SIOCGIFDSTADDR = 0xc0206922
+ SIOCGIFFLAGS = 0xc0206911
+ SIOCGIFGATTR = 0xc028698b
+ SIOCGIFGENERIC = 0xc020693a
+ SIOCGIFGLIST = 0xc028698d
+ SIOCGIFGMEMB = 0xc028698a
+ SIOCGIFGROUP = 0xc0286988
+ SIOCGIFHARDMTU = 0xc02069a5
+ SIOCGIFLLPRIO = 0xc02069b6
+ SIOCGIFMEDIA = 0xc0406938
+ SIOCGIFMETRIC = 0xc0206917
+ SIOCGIFMTU = 0xc020697e
+ SIOCGIFNETMASK = 0xc0206925
+ SIOCGIFPAIR = 0xc02069b1
+ SIOCGIFPARENT = 0xc02069b3
+ SIOCGIFPRIORITY = 0xc020699c
+ SIOCGIFRDOMAIN = 0xc02069a0
+ SIOCGIFRTLABEL = 0xc0206983
+ SIOCGIFRXR = 0x802069aa
+ SIOCGIFSFFPAGE = 0xc1126939
+ SIOCGIFXFLAGS = 0xc020699e
+ SIOCGLIFPHYADDR = 0xc218694b
+ SIOCGLIFPHYDF = 0xc02069c2
+ SIOCGLIFPHYECN = 0xc02069c8
+ SIOCGLIFPHYRTABLE = 0xc02069a2
+ SIOCGLIFPHYTTL = 0xc02069a9
+ SIOCGPGRP = 0x40047309
+ SIOCGPWE3 = 0xc0206998
+ SIOCGPWE3CTRLWORD = 0xc02069dc
+ SIOCGPWE3FAT = 0xc02069dd
+ SIOCGPWE3NEIGHBOR = 0xc21869de
+ SIOCGRXHPRIO = 0xc02069db
+ SIOCGSPPPPARAMS = 0xc0206994
+ SIOCGTXHPRIO = 0xc02069c6
+ SIOCGUMBINFO = 0xc02069be
+ SIOCGUMBPARAM = 0xc02069c0
+ SIOCGVH = 0xc02069f6
+ SIOCGVNETFLOWID = 0xc02069c4
+ SIOCGVNETID = 0xc02069a7
+ SIOCIFAFATTACH = 0x801169ab
+ SIOCIFAFDETACH = 0x801169ac
+ SIOCIFCREATE = 0x8020697a
+ SIOCIFDESTROY = 0x80206979
+ SIOCIFGCLONERS = 0xc0106978
+ SIOCSETKALIVE = 0x801869a3
+ SIOCSETLABEL = 0x80206999
+ SIOCSETMPWCFG = 0x802069ad
+ SIOCSETPFLOW = 0x802069fd
+ SIOCSETPFSYNC = 0x802069f7
+ SIOCSETVLAN = 0x8020698f
+ SIOCSIFADDR = 0x8020690c
+ SIOCSIFBRDADDR = 0x80206913
+ SIOCSIFDESCR = 0x80206980
+ SIOCSIFDSTADDR = 0x8020690e
+ SIOCSIFFLAGS = 0x80206910
+ SIOCSIFGATTR = 0x8028698c
+ SIOCSIFGENERIC = 0x80206939
+ SIOCSIFLLADDR = 0x8020691f
+ SIOCSIFLLPRIO = 0x802069b5
+ SIOCSIFMEDIA = 0xc0206937
+ SIOCSIFMETRIC = 0x80206918
+ SIOCSIFMTU = 0x8020697f
+ SIOCSIFNETMASK = 0x80206916
+ SIOCSIFPAIR = 0x802069b0
+ SIOCSIFPARENT = 0x802069b2
+ SIOCSIFPRIORITY = 0x8020699b
+ SIOCSIFRDOMAIN = 0x8020699f
+ SIOCSIFRTLABEL = 0x80206982
+ SIOCSIFXFLAGS = 0x8020699d
+ SIOCSLIFPHYADDR = 0x8218694a
+ SIOCSLIFPHYDF = 0x802069c1
+ SIOCSLIFPHYECN = 0x802069c7
+ SIOCSLIFPHYRTABLE = 0x802069a1
+ SIOCSLIFPHYTTL = 0x802069a8
+ SIOCSPGRP = 0x80047308
+ SIOCSPWE3CTRLWORD = 0x802069dc
+ SIOCSPWE3FAT = 0x802069dd
+ SIOCSPWE3NEIGHBOR = 0x821869de
+ SIOCSRXHPRIO = 0x802069db
+ SIOCSSPPPPARAMS = 0x80206993
+ SIOCSTXHPRIO = 0x802069c5
+ SIOCSUMBPARAM = 0x802069bf
+ SIOCSVH = 0xc02069f5
+ SIOCSVNETFLOWID = 0x802069c3
+ SIOCSVNETID = 0x802069a6
+ SIOCSWGDPID = 0xc018695b
+ SIOCSWGMAXFLOW = 0xc0186960
+ SIOCSWGMAXGROUP = 0xc018695d
+ SIOCSWSDPID = 0x8018695c
+ SIOCSWSPORTNO = 0xc060695f
+ SOCK_CLOEXEC = 0x8000
+ SOCK_DGRAM = 0x2
+ SOCK_DNS = 0x1000
+ SOCK_NONBLOCK = 0x4000
+ SOCK_RAW = 0x3
+ SOCK_RDM = 0x4
+ SOCK_SEQPACKET = 0x5
+ SOCK_STREAM = 0x1
+ SOL_SOCKET = 0xffff
+ SOMAXCONN = 0x80
+ SO_ACCEPTCONN = 0x2
+ SO_BINDANY = 0x1000
+ SO_BROADCAST = 0x20
+ SO_DEBUG = 0x1
+ SO_DOMAIN = 0x1024
+ SO_DONTROUTE = 0x10
+ SO_ERROR = 0x1007
+ SO_KEEPALIVE = 0x8
+ SO_LINGER = 0x80
+ SO_NETPROC = 0x1020
+ SO_OOBINLINE = 0x100
+ SO_PEERCRED = 0x1022
+ SO_PROTOCOL = 0x1025
+ SO_RCVBUF = 0x1002
+ SO_RCVLOWAT = 0x1004
+ SO_RCVTIMEO = 0x1006
+ SO_REUSEADDR = 0x4
+ SO_REUSEPORT = 0x200
+ SO_RTABLE = 0x1021
+ SO_SNDBUF = 0x1001
+ SO_SNDLOWAT = 0x1003
+ SO_SNDTIMEO = 0x1005
+ SO_SPLICE = 0x1023
+ SO_TIMESTAMP = 0x800
+ SO_TYPE = 0x1008
+ SO_USELOOPBACK = 0x40
+ SO_ZEROIZE = 0x2000
+ S_BLKSIZE = 0x200
+ S_IEXEC = 0x40
+ S_IFBLK = 0x6000
+ S_IFCHR = 0x2000
+ S_IFDIR = 0x4000
+ S_IFIFO = 0x1000
+ S_IFLNK = 0xa000
+ S_IFMT = 0xf000
+ S_IFREG = 0x8000
+ S_IFSOCK = 0xc000
+ S_IREAD = 0x100
+ S_IRGRP = 0x20
+ S_IROTH = 0x4
+ S_IRUSR = 0x100
+ S_IRWXG = 0x38
+ S_IRWXO = 0x7
+ S_IRWXU = 0x1c0
+ S_ISGID = 0x400
+ S_ISTXT = 0x200
+ S_ISUID = 0x800
+ S_ISVTX = 0x200
+ S_IWGRP = 0x10
+ S_IWOTH = 0x2
+ S_IWRITE = 0x80
+ S_IWUSR = 0x80
+ S_IXGRP = 0x8
+ S_IXOTH = 0x1
+ S_IXUSR = 0x40
+ TCIFLUSH = 0x1
+ TCIOFF = 0x3
+ TCIOFLUSH = 0x3
+ TCION = 0x4
+ TCOFLUSH = 0x2
+ TCOOFF = 0x1
+ TCOON = 0x2
+ TCP_MAXBURST = 0x4
+ TCP_MAXSEG = 0x2
+ TCP_MAXWIN = 0xffff
+ TCP_MAX_SACK = 0x3
+ TCP_MAX_WINSHIFT = 0xe
+ TCP_MD5SIG = 0x4
+ TCP_MSS = 0x200
+ TCP_NODELAY = 0x1
+ TCP_NOPUSH = 0x10
+ TCP_SACKHOLE_LIMIT = 0x80
+ TCP_SACK_ENABLE = 0x8
+ TCSAFLUSH = 0x2
+ TIMER_ABSTIME = 0x1
+ TIMER_RELTIME = 0x0
+ TIOCCBRK = 0x2000747a
+ TIOCCDTR = 0x20007478
+ TIOCCHKVERAUTH = 0x2000741e
+ TIOCCLRVERAUTH = 0x2000741d
+ TIOCCONS = 0x80047462
+ TIOCDRAIN = 0x2000745e
+ TIOCEXCL = 0x2000740d
+ TIOCEXT = 0x80047460
+ TIOCFLAG_CLOCAL = 0x2
+ TIOCFLAG_CRTSCTS = 0x4
+ TIOCFLAG_MDMBUF = 0x8
+ TIOCFLAG_PPS = 0x10
+ TIOCFLAG_SOFTCAR = 0x1
+ TIOCFLUSH = 0x80047410
+ TIOCGETA = 0x402c7413
+ TIOCGETD = 0x4004741a
+ TIOCGFLAGS = 0x4004745d
+ TIOCGPGRP = 0x40047477
+ TIOCGSID = 0x40047463
+ TIOCGTSTAMP = 0x4010745b
+ TIOCGWINSZ = 0x40087468
+ TIOCMBIC = 0x8004746b
+ TIOCMBIS = 0x8004746c
+ TIOCMGET = 0x4004746a
+ TIOCMODG = 0x4004746a
+ TIOCMODS = 0x8004746d
+ TIOCMSET = 0x8004746d
+ TIOCM_CAR = 0x40
+ TIOCM_CD = 0x40
+ TIOCM_CTS = 0x20
+ TIOCM_DSR = 0x100
+ TIOCM_DTR = 0x2
+ TIOCM_LE = 0x1
+ TIOCM_RI = 0x80
+ TIOCM_RNG = 0x80
+ TIOCM_RTS = 0x4
+ TIOCM_SR = 0x10
+ TIOCM_ST = 0x8
+ TIOCNOTTY = 0x20007471
+ TIOCNXCL = 0x2000740e
+ TIOCOUTQ = 0x40047473
+ TIOCPKT = 0x80047470
+ TIOCPKT_DATA = 0x0
+ TIOCPKT_DOSTOP = 0x20
+ TIOCPKT_FLUSHREAD = 0x1
+ TIOCPKT_FLUSHWRITE = 0x2
+ TIOCPKT_IOCTL = 0x40
+ TIOCPKT_NOSTOP = 0x10
+ TIOCPKT_START = 0x8
+ TIOCPKT_STOP = 0x4
+ TIOCREMOTE = 0x80047469
+ TIOCSBRK = 0x2000747b
+ TIOCSCTTY = 0x20007461
+ TIOCSDTR = 0x20007479
+ TIOCSETA = 0x802c7414
+ TIOCSETAF = 0x802c7416
+ TIOCSETAW = 0x802c7415
+ TIOCSETD = 0x8004741b
+ TIOCSETVERAUTH = 0x8004741c
+ TIOCSFLAGS = 0x8004745c
+ TIOCSIG = 0x8004745f
+ TIOCSPGRP = 0x80047476
+ TIOCSTART = 0x2000746e
+ TIOCSTAT = 0x20007465
+ TIOCSTOP = 0x2000746f
+ TIOCSTSTAMP = 0x8008745a
+ TIOCSWINSZ = 0x80087467
+ TIOCUCNTL = 0x80047466
+ TIOCUCNTL_CBRK = 0x7a
+ TIOCUCNTL_SBRK = 0x7b
+ TOSTOP = 0x400000
+ UTIME_NOW = -0x2
+ UTIME_OMIT = -0x1
+ VDISCARD = 0xf
+ VDSUSP = 0xb
+ VEOF = 0x0
+ VEOL = 0x1
+ VEOL2 = 0x2
+ VERASE = 0x3
+ VINTR = 0x8
+ VKILL = 0x5
+ VLNEXT = 0xe
+ VMIN = 0x10
+ VM_ANONMIN = 0x7
+ VM_LOADAVG = 0x2
+ VM_MALLOC_CONF = 0xc
+ VM_MAXID = 0xd
+ VM_MAXSLP = 0xa
+ VM_METER = 0x1
+ VM_NKMEMPAGES = 0x6
+ VM_PSSTRINGS = 0x3
+ VM_SWAPENCRYPT = 0x5
+ VM_USPACE = 0xb
+ VM_UVMEXP = 0x4
+ VM_VNODEMIN = 0x9
+ VM_VTEXTMIN = 0x8
+ VQUIT = 0x9
+ VREPRINT = 0x6
+ VSTART = 0xc
+ VSTATUS = 0x12
+ VSTOP = 0xd
+ VSUSP = 0xa
+ VTIME = 0x11
+ VWERASE = 0x4
+ WALTSIG = 0x4
+ WCONTINUED = 0x8
+ WCOREFLAG = 0x80
+ WNOHANG = 0x1
+ WUNTRACED = 0x2
+ XCASE = 0x1000000
+)
+
+// Errors
+const (
+ E2BIG = syscall.Errno(0x7)
+ EACCES = syscall.Errno(0xd)
+ EADDRINUSE = syscall.Errno(0x30)
+ EADDRNOTAVAIL = syscall.Errno(0x31)
+ EAFNOSUPPORT = syscall.Errno(0x2f)
+ EAGAIN = syscall.Errno(0x23)
+ EALREADY = syscall.Errno(0x25)
+ EAUTH = syscall.Errno(0x50)
+ EBADF = syscall.Errno(0x9)
+ EBADMSG = syscall.Errno(0x5c)
+ EBADRPC = syscall.Errno(0x48)
+ EBUSY = syscall.Errno(0x10)
+ ECANCELED = syscall.Errno(0x58)
+ ECHILD = syscall.Errno(0xa)
+ ECONNABORTED = syscall.Errno(0x35)
+ ECONNREFUSED = syscall.Errno(0x3d)
+ ECONNRESET = syscall.Errno(0x36)
+ EDEADLK = syscall.Errno(0xb)
+ EDESTADDRREQ = syscall.Errno(0x27)
+ EDOM = syscall.Errno(0x21)
+ EDQUOT = syscall.Errno(0x45)
+ EEXIST = syscall.Errno(0x11)
+ EFAULT = syscall.Errno(0xe)
+ EFBIG = syscall.Errno(0x1b)
+ EFTYPE = syscall.Errno(0x4f)
+ EHOSTDOWN = syscall.Errno(0x40)
+ EHOSTUNREACH = syscall.Errno(0x41)
+ EIDRM = syscall.Errno(0x59)
+ EILSEQ = syscall.Errno(0x54)
+ EINPROGRESS = syscall.Errno(0x24)
+ EINTR = syscall.Errno(0x4)
+ EINVAL = syscall.Errno(0x16)
+ EIO = syscall.Errno(0x5)
+ EIPSEC = syscall.Errno(0x52)
+ EISCONN = syscall.Errno(0x38)
+ EISDIR = syscall.Errno(0x15)
+ ELAST = syscall.Errno(0x5f)
+ ELOOP = syscall.Errno(0x3e)
+ EMEDIUMTYPE = syscall.Errno(0x56)
+ EMFILE = syscall.Errno(0x18)
+ EMLINK = syscall.Errno(0x1f)
+ EMSGSIZE = syscall.Errno(0x28)
+ ENAMETOOLONG = syscall.Errno(0x3f)
+ ENEEDAUTH = syscall.Errno(0x51)
+ ENETDOWN = syscall.Errno(0x32)
+ ENETRESET = syscall.Errno(0x34)
+ ENETUNREACH = syscall.Errno(0x33)
+ ENFILE = syscall.Errno(0x17)
+ ENOATTR = syscall.Errno(0x53)
+ ENOBUFS = syscall.Errno(0x37)
+ ENODEV = syscall.Errno(0x13)
+ ENOENT = syscall.Errno(0x2)
+ ENOEXEC = syscall.Errno(0x8)
+ ENOLCK = syscall.Errno(0x4d)
+ ENOMEDIUM = syscall.Errno(0x55)
+ ENOMEM = syscall.Errno(0xc)
+ ENOMSG = syscall.Errno(0x5a)
+ ENOPROTOOPT = syscall.Errno(0x2a)
+ ENOSPC = syscall.Errno(0x1c)
+ ENOSYS = syscall.Errno(0x4e)
+ ENOTBLK = syscall.Errno(0xf)
+ ENOTCONN = syscall.Errno(0x39)
+ ENOTDIR = syscall.Errno(0x14)
+ ENOTEMPTY = syscall.Errno(0x42)
+ ENOTRECOVERABLE = syscall.Errno(0x5d)
+ ENOTSOCK = syscall.Errno(0x26)
+ ENOTSUP = syscall.Errno(0x5b)
+ ENOTTY = syscall.Errno(0x19)
+ ENXIO = syscall.Errno(0x6)
+ EOPNOTSUPP = syscall.Errno(0x2d)
+ EOVERFLOW = syscall.Errno(0x57)
+ EOWNERDEAD = syscall.Errno(0x5e)
+ EPERM = syscall.Errno(0x1)
+ EPFNOSUPPORT = syscall.Errno(0x2e)
+ EPIPE = syscall.Errno(0x20)
+ EPROCLIM = syscall.Errno(0x43)
+ EPROCUNAVAIL = syscall.Errno(0x4c)
+ EPROGMISMATCH = syscall.Errno(0x4b)
+ EPROGUNAVAIL = syscall.Errno(0x4a)
+ EPROTO = syscall.Errno(0x5f)
+ EPROTONOSUPPORT = syscall.Errno(0x2b)
+ EPROTOTYPE = syscall.Errno(0x29)
+ ERANGE = syscall.Errno(0x22)
+ EREMOTE = syscall.Errno(0x47)
+ EROFS = syscall.Errno(0x1e)
+ ERPCMISMATCH = syscall.Errno(0x49)
+ ESHUTDOWN = syscall.Errno(0x3a)
+ ESOCKTNOSUPPORT = syscall.Errno(0x2c)
+ ESPIPE = syscall.Errno(0x1d)
+ ESRCH = syscall.Errno(0x3)
+ ESTALE = syscall.Errno(0x46)
+ ETIMEDOUT = syscall.Errno(0x3c)
+ ETOOMANYREFS = syscall.Errno(0x3b)
+ ETXTBSY = syscall.Errno(0x1a)
+ EUSERS = syscall.Errno(0x44)
+ EWOULDBLOCK = syscall.Errno(0x23)
+ EXDEV = syscall.Errno(0x12)
+)
+
+// Signals
+const (
+ SIGABRT = syscall.Signal(0x6)
+ SIGALRM = syscall.Signal(0xe)
+ SIGBUS = syscall.Signal(0xa)
+ SIGCHLD = syscall.Signal(0x14)
+ SIGCONT = syscall.Signal(0x13)
+ SIGEMT = syscall.Signal(0x7)
+ SIGFPE = syscall.Signal(0x8)
+ SIGHUP = syscall.Signal(0x1)
+ SIGILL = syscall.Signal(0x4)
+ SIGINFO = syscall.Signal(0x1d)
+ SIGINT = syscall.Signal(0x2)
+ SIGIO = syscall.Signal(0x17)
+ SIGIOT = syscall.Signal(0x6)
+ SIGKILL = syscall.Signal(0x9)
+ SIGPIPE = syscall.Signal(0xd)
+ SIGPROF = syscall.Signal(0x1b)
+ SIGQUIT = syscall.Signal(0x3)
+ SIGSEGV = syscall.Signal(0xb)
+ SIGSTOP = syscall.Signal(0x11)
+ SIGSYS = syscall.Signal(0xc)
+ SIGTERM = syscall.Signal(0xf)
+ SIGTHR = syscall.Signal(0x20)
+ SIGTRAP = syscall.Signal(0x5)
+ SIGTSTP = syscall.Signal(0x12)
+ SIGTTIN = syscall.Signal(0x15)
+ SIGTTOU = syscall.Signal(0x16)
+ SIGURG = syscall.Signal(0x10)
+ SIGUSR1 = syscall.Signal(0x1e)
+ SIGUSR2 = syscall.Signal(0x1f)
+ SIGVTALRM = syscall.Signal(0x1a)
+ SIGWINCH = syscall.Signal(0x1c)
+ SIGXCPU = syscall.Signal(0x18)
+ SIGXFSZ = syscall.Signal(0x19)
+)
+
+// Error table
+var errorList = [...]struct {
+ num syscall.Errno
+ name string
+ desc string
+}{
+ {1, "EPERM", "operation not permitted"},
+ {2, "ENOENT", "no such file or directory"},
+ {3, "ESRCH", "no such process"},
+ {4, "EINTR", "interrupted system call"},
+ {5, "EIO", "input/output error"},
+ {6, "ENXIO", "device not configured"},
+ {7, "E2BIG", "argument list too long"},
+ {8, "ENOEXEC", "exec format error"},
+ {9, "EBADF", "bad file descriptor"},
+ {10, "ECHILD", "no child processes"},
+ {11, "EDEADLK", "resource deadlock avoided"},
+ {12, "ENOMEM", "cannot allocate memory"},
+ {13, "EACCES", "permission denied"},
+ {14, "EFAULT", "bad address"},
+ {15, "ENOTBLK", "block device required"},
+ {16, "EBUSY", "device busy"},
+ {17, "EEXIST", "file exists"},
+ {18, "EXDEV", "cross-device link"},
+ {19, "ENODEV", "operation not supported by device"},
+ {20, "ENOTDIR", "not a directory"},
+ {21, "EISDIR", "is a directory"},
+ {22, "EINVAL", "invalid argument"},
+ {23, "ENFILE", "too many open files in system"},
+ {24, "EMFILE", "too many open files"},
+ {25, "ENOTTY", "inappropriate ioctl for device"},
+ {26, "ETXTBSY", "text file busy"},
+ {27, "EFBIG", "file too large"},
+ {28, "ENOSPC", "no space left on device"},
+ {29, "ESPIPE", "illegal seek"},
+ {30, "EROFS", "read-only file system"},
+ {31, "EMLINK", "too many links"},
+ {32, "EPIPE", "broken pipe"},
+ {33, "EDOM", "numerical argument out of domain"},
+ {34, "ERANGE", "result too large"},
+ {35, "EAGAIN", "resource temporarily unavailable"},
+ {36, "EINPROGRESS", "operation now in progress"},
+ {37, "EALREADY", "operation already in progress"},
+ {38, "ENOTSOCK", "socket operation on non-socket"},
+ {39, "EDESTADDRREQ", "destination address required"},
+ {40, "EMSGSIZE", "message too long"},
+ {41, "EPROTOTYPE", "protocol wrong type for socket"},
+ {42, "ENOPROTOOPT", "protocol not available"},
+ {43, "EPROTONOSUPPORT", "protocol not supported"},
+ {44, "ESOCKTNOSUPPORT", "socket type not supported"},
+ {45, "EOPNOTSUPP", "operation not supported"},
+ {46, "EPFNOSUPPORT", "protocol family not supported"},
+ {47, "EAFNOSUPPORT", "address family not supported by protocol family"},
+ {48, "EADDRINUSE", "address already in use"},
+ {49, "EADDRNOTAVAIL", "can't assign requested address"},
+ {50, "ENETDOWN", "network is down"},
+ {51, "ENETUNREACH", "network is unreachable"},
+ {52, "ENETRESET", "network dropped connection on reset"},
+ {53, "ECONNABORTED", "software caused connection abort"},
+ {54, "ECONNRESET", "connection reset by peer"},
+ {55, "ENOBUFS", "no buffer space available"},
+ {56, "EISCONN", "socket is already connected"},
+ {57, "ENOTCONN", "socket is not connected"},
+ {58, "ESHUTDOWN", "can't send after socket shutdown"},
+ {59, "ETOOMANYREFS", "too many references: can't splice"},
+ {60, "ETIMEDOUT", "operation timed out"},
+ {61, "ECONNREFUSED", "connection refused"},
+ {62, "ELOOP", "too many levels of symbolic links"},
+ {63, "ENAMETOOLONG", "file name too long"},
+ {64, "EHOSTDOWN", "host is down"},
+ {65, "EHOSTUNREACH", "no route to host"},
+ {66, "ENOTEMPTY", "directory not empty"},
+ {67, "EPROCLIM", "too many processes"},
+ {68, "EUSERS", "too many users"},
+ {69, "EDQUOT", "disk quota exceeded"},
+ {70, "ESTALE", "stale NFS file handle"},
+ {71, "EREMOTE", "too many levels of remote in path"},
+ {72, "EBADRPC", "RPC struct is bad"},
+ {73, "ERPCMISMATCH", "RPC version wrong"},
+ {74, "EPROGUNAVAIL", "RPC program not available"},
+ {75, "EPROGMISMATCH", "program version wrong"},
+ {76, "EPROCUNAVAIL", "bad procedure for program"},
+ {77, "ENOLCK", "no locks available"},
+ {78, "ENOSYS", "function not implemented"},
+ {79, "EFTYPE", "inappropriate file type or format"},
+ {80, "EAUTH", "authentication error"},
+ {81, "ENEEDAUTH", "need authenticator"},
+ {82, "EIPSEC", "IPsec processing failure"},
+ {83, "ENOATTR", "attribute not found"},
+ {84, "EILSEQ", "illegal byte sequence"},
+ {85, "ENOMEDIUM", "no medium found"},
+ {86, "EMEDIUMTYPE", "wrong medium type"},
+ {87, "EOVERFLOW", "value too large to be stored in data type"},
+ {88, "ECANCELED", "operation canceled"},
+ {89, "EIDRM", "identifier removed"},
+ {90, "ENOMSG", "no message of desired type"},
+ {91, "ENOTSUP", "not supported"},
+ {92, "EBADMSG", "bad message"},
+ {93, "ENOTRECOVERABLE", "state not recoverable"},
+ {94, "EOWNERDEAD", "previous owner died"},
+ {95, "ELAST", "protocol error"},
+}
+
+// Signal table
+var signalList = [...]struct {
+ num syscall.Signal
+ name string
+ desc string
+}{
+ {1, "SIGHUP", "hangup"},
+ {2, "SIGINT", "interrupt"},
+ {3, "SIGQUIT", "quit"},
+ {4, "SIGILL", "illegal instruction"},
+ {5, "SIGTRAP", "trace/BPT trap"},
+ {6, "SIGABRT", "abort trap"},
+ {7, "SIGEMT", "EMT trap"},
+ {8, "SIGFPE", "floating point exception"},
+ {9, "SIGKILL", "killed"},
+ {10, "SIGBUS", "bus error"},
+ {11, "SIGSEGV", "segmentation fault"},
+ {12, "SIGSYS", "bad system call"},
+ {13, "SIGPIPE", "broken pipe"},
+ {14, "SIGALRM", "alarm clock"},
+ {15, "SIGTERM", "terminated"},
+ {16, "SIGURG", "urgent I/O condition"},
+ {17, "SIGSTOP", "suspended (signal)"},
+ {18, "SIGTSTP", "suspended"},
+ {19, "SIGCONT", "continued"},
+ {20, "SIGCHLD", "child exited"},
+ {21, "SIGTTIN", "stopped (tty input)"},
+ {22, "SIGTTOU", "stopped (tty output)"},
+ {23, "SIGIO", "I/O possible"},
+ {24, "SIGXCPU", "cputime limit exceeded"},
+ {25, "SIGXFSZ", "filesize limit exceeded"},
+ {26, "SIGVTALRM", "virtual timer expired"},
+ {27, "SIGPROF", "profiling timer expired"},
+ {28, "SIGWINCH", "window size changes"},
+ {29, "SIGINFO", "information request"},
+ {30, "SIGUSR1", "user defined signal 1"},
+ {31, "SIGUSR2", "user defined signal 2"},
+ {32, "SIGTHR", "thread AST"},
+}
diff --git a/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go
index 46e054cc..5312c36c 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go
@@ -192,6 +192,12 @@ const (
CSTOPB = 0x40
CSUSP = 0x1a
CSWTCH = 0x1a
+ DIOC = 0x6400
+ DIOCGETB = 0x6402
+ DIOCGETC = 0x6401
+ DIOCGETP = 0x6408
+ DIOCSETE = 0x6403
+ DIOCSETP = 0x6409
DLT_AIRONET_HEADER = 0x78
DLT_APPLE_IP_OVER_IEEE1394 = 0x8a
DLT_ARCNET = 0x7
@@ -290,6 +296,7 @@ const (
FF0 = 0x0
FF1 = 0x8000
FFDLY = 0x8000
+ FIORDCHK = 0x6603
FLUSHALL = 0x1
FLUSHDATA = 0x0
FLUSHO = 0x2000
@@ -645,6 +652,14 @@ const (
MAP_SHARED = 0x1
MAP_TEXT = 0x400
MAP_TYPE = 0xf
+ MCAST_BLOCK_SOURCE = 0x2b
+ MCAST_EXCLUDE = 0x2
+ MCAST_INCLUDE = 0x1
+ MCAST_JOIN_GROUP = 0x29
+ MCAST_JOIN_SOURCE_GROUP = 0x2d
+ MCAST_LEAVE_GROUP = 0x2a
+ MCAST_LEAVE_SOURCE_GROUP = 0x2e
+ MCAST_UNBLOCK_SOURCE = 0x2c
MCL_CURRENT = 0x1
MCL_FUTURE = 0x2
MSG_CTRUNC = 0x10
@@ -653,6 +668,7 @@ const (
MSG_DUPCTRL = 0x800
MSG_EOR = 0x8
MSG_MAXIOVLEN = 0x10
+ MSG_NOSIGNAL = 0x200
MSG_NOTIFICATION = 0x100
MSG_OOB = 0x1
MSG_PEEK = 0x2
@@ -687,6 +703,7 @@ const (
O_APPEND = 0x8
O_CLOEXEC = 0x800000
O_CREAT = 0x100
+ O_DIRECTORY = 0x1000000
O_DSYNC = 0x40
O_EXCL = 0x400
O_EXEC = 0x400000
@@ -725,7 +742,7 @@ const (
RLIMIT_FSIZE = 0x1
RLIMIT_NOFILE = 0x5
RLIMIT_STACK = 0x3
- RLIM_INFINITY = -0x3
+ RLIM_INFINITY = 0xfffffffffffffffd
RTAX_AUTHOR = 0x6
RTAX_BRD = 0x7
RTAX_DST = 0x0
@@ -1047,6 +1064,7 @@ const (
TCOON = 0x1
TCP_ABORT_THRESHOLD = 0x11
TCP_ANONPRIVBIND = 0x20
+ TCP_CONGESTION = 0x25
TCP_CONN_ABORT_THRESHOLD = 0x13
TCP_CONN_NOTIFY_THRESHOLD = 0x12
TCP_CORK = 0x18
@@ -1076,6 +1094,8 @@ const (
TCSETSF = 0x5410
TCSETSW = 0x540f
TCXONC = 0x5406
+ TIMER_ABSTIME = 0x1
+ TIMER_RELTIME = 0x0
TIOC = 0x5400
TIOCCBRK = 0x747a
TIOCCDTR = 0x7478
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go
index 4b3a8ad7..0550da06 100644
--- a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go
+++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go
@@ -2,7 +2,7 @@
// Code generated by the command above; see README.md. DO NOT EDIT.
// +build aix,ppc64
-// +build !gccgo
+// +build gc
package unix
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_11.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_11.go
deleted file mode 100644
index 23e94d36..00000000
--- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_11.go
+++ /dev/null
@@ -1,1809 +0,0 @@
-// go run mksyscall.go -l32 -tags darwin,386,!go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_386.1_11.go syscall_darwin_386.go
-// Code generated by the command above; see README.md. DO NOT EDIT.
-
-// +build darwin,386,!go1.12
-
-package unix
-
-import (
- "syscall"
- "unsafe"
-)
-
-var _ syscall.Errno
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
- r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func setgroups(ngid int, gid *_Gid_t) (err error) {
- _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
- r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
- wpid = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
- r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
- _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
- _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func socket(domain int, typ int, proto int) (fd int, err error) {
- r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
- fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
- _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
- _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
- _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
- _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Shutdown(s int, how int) (err error) {
- _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
- _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
- var _p0 unsafe.Pointer
- if len(p) > 0 {
- _p0 = unsafe.Pointer(&p[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
- var _p0 unsafe.Pointer
- if len(buf) > 0 {
- _p0 = unsafe.Pointer(&buf[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
- r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
- r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {
- r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func utimes(path string, timeval *[2]Timeval) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func futimes(fd int, timeval *[2]Timeval) (err error) {
- _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
- r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Madvise(b []byte, behav int) (err error) {
- var _p0 unsafe.Pointer
- if len(b) > 0 {
- _p0 = unsafe.Pointer(&b[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Mlock(b []byte) (err error) {
- var _p0 unsafe.Pointer
- if len(b) > 0 {
- _p0 = unsafe.Pointer(&b[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Mlockall(flags int) (err error) {
- _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Mprotect(b []byte, prot int) (err error) {
- var _p0 unsafe.Pointer
- if len(b) > 0 {
- _p0 = unsafe.Pointer(&b[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Msync(b []byte, flags int) (err error) {
- var _p0 unsafe.Pointer
- if len(b) > 0 {
- _p0 = unsafe.Pointer(&b[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Munlock(b []byte) (err error) {
- var _p0 unsafe.Pointer
- if len(b) > 0 {
- _p0 = unsafe.Pointer(&b[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Munlockall() (err error) {
- _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
- _, _, e1 := Syscall6(SYS_GETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func pipe() (r int, w int, err error) {
- r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
- r = int(r0)
- w = int(r1)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- var _p1 *byte
- _p1, err = BytePtrFromString(attr)
- if err != nil {
- return
- }
- r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))
- sz = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(attr)
- if err != nil {
- return
- }
- r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))
- sz = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- var _p1 *byte
- _p1, err = BytePtrFromString(attr)
- if err != nil {
- return
- }
- _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(attr)
- if err != nil {
- return
- }
- _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func removexattr(path string, attr string, options int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- var _p1 *byte
- _p1, err = BytePtrFromString(attr)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func fremovexattr(fd int, attr string, options int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(attr)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func listxattr(path string, dest *byte, size int, options int) (sz int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- r0, _, e1 := Syscall6(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)
- sz = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) {
- r0, _, e1 := Syscall6(SYS_FLISTXATTR, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)
- sz = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
- _, _, e1 := Syscall6(SYS_SETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func fcntl(fd int, cmd int, arg int) (val int, err error) {
- r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
- val = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func kill(pid int, signum int, posix int) (err error) {
- _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func ioctl(fd int, req uint, arg uintptr) (err error) {
- _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
- var _p0 unsafe.Pointer
- if len(mib) > 0 {
- _p0 = unsafe.Pointer(&mib[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- _, _, e1 := Syscall6(SYS_SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) {
- _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(offset>>32), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Access(path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
- _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Chdir(path string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Chflags(path string, flags int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Chmod(path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Chown(path string, uid int, gid int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Chroot(path string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Close(fd int) (err error) {
- _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Dup(fd int) (nfd int, err error) {
- r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)
- nfd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Dup2(from int, to int) (err error) {
- _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Exchangedata(path1 string, path2 string, options int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path1)
- if err != nil {
- return
- }
- var _p1 *byte
- _p1, err = BytePtrFromString(path2)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_EXCHANGEDATA, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Exit(code int) {
- Syscall(SYS_EXIT, uintptr(code), 0, 0)
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Fchdir(fd int) (err error) {
- _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Fchflags(fd int, flags int) (err error) {
- _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Fchmod(fd int, mode uint32) (err error) {
- _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Fchown(fd int, uid int, gid int) (err error) {
- _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Flock(fd int, how int) (err error) {
- _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Fpathconf(fd int, name int) (val int, err error) {
- r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)
- val = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Fsync(fd int) (err error) {
- _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Ftruncate(fd int, length int64) (err error) {
- _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), uintptr(length>>32))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Getdtablesize() (size int) {
- r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
- size = int(r0)
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Getegid() (egid int) {
- r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
- egid = int(r0)
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Geteuid() (uid int) {
- r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
- uid = int(r0)
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Getgid() (gid int) {
- r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
- gid = int(r0)
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Getpgid(pid int) (pgid int, err error) {
- r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
- pgid = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Getpgrp() (pgrp int) {
- r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)
- pgrp = int(r0)
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Getpid() (pid int) {
- r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
- pid = int(r0)
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Getppid() (ppid int) {
- r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
- ppid = int(r0)
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Getpriority(which int, who int) (prio int, err error) {
- r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
- prio = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Getrlimit(which int, lim *Rlimit) (err error) {
- _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Getrusage(who int, rusage *Rusage) (err error) {
- _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Getsid(pid int) (sid int, err error) {
- r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
- sid = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Gettimeofday(tp *Timeval) (err error) {
- _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Getuid() (uid int) {
- r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
- uid = int(r0)
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Issetugid() (tainted bool) {
- r0, _, _ := RawSyscall(SYS_ISSETUGID, 0, 0, 0)
- tainted = bool(r0 != 0)
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Kqueue() (fd int, err error) {
- r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
- fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Lchown(path string, uid int, gid int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Link(path string, link string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- var _p1 *byte
- _p1, err = BytePtrFromString(link)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- var _p1 *byte
- _p1, err = BytePtrFromString(link)
- if err != nil {
- return
- }
- _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Listen(s int, backlog int) (err error) {
- _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Mkdir(path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Mkdirat(dirfd int, path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Mkfifo(path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Mknod(path string, mode uint32, dev int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Open(path string, mode int, perm uint32) (fd int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
- fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)
- fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Pathconf(path string, name int) (val int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
- val = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Pread(fd int, p []byte, offset int64) (n int, err error) {
- var _p0 unsafe.Pointer
- if len(p) > 0 {
- _p0 = unsafe.Pointer(&p[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
- var _p0 unsafe.Pointer
- if len(p) > 0 {
- _p0 = unsafe.Pointer(&p[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func read(fd int, p []byte) (n int, err error) {
- var _p0 unsafe.Pointer
- if len(p) > 0 {
- _p0 = unsafe.Pointer(&p[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Readlink(path string, buf []byte) (n int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- var _p1 unsafe.Pointer
- if len(buf) > 0 {
- _p1 = unsafe.Pointer(&buf[0])
- } else {
- _p1 = unsafe.Pointer(&_zero)
- }
- r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- var _p1 unsafe.Pointer
- if len(buf) > 0 {
- _p1 = unsafe.Pointer(&buf[0])
- } else {
- _p1 = unsafe.Pointer(&_zero)
- }
- r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Rename(from string, to string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(from)
- if err != nil {
- return
- }
- var _p1 *byte
- _p1, err = BytePtrFromString(to)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Renameat(fromfd int, from string, tofd int, to string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(from)
- if err != nil {
- return
- }
- var _p1 *byte
- _p1, err = BytePtrFromString(to)
- if err != nil {
- return
- }
- _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Revoke(path string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Rmdir(path string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
- r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0)
- newoffset = int64(int64(r1)<<32 | int64(r0))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
- r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Setegid(egid int) (err error) {
- _, _, e1 := Syscall(SYS_SETEGID, uintptr(egid), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Seteuid(euid int) (err error) {
- _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Setgid(gid int) (err error) {
- _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Setlogin(name string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(name)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Setpgid(pid int, pgid int) (err error) {
- _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Setpriority(which int, who int, prio int) (err error) {
- _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Setprivexec(flag int) (err error) {
- _, _, e1 := Syscall(SYS_SETPRIVEXEC, uintptr(flag), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Setregid(rgid int, egid int) (err error) {
- _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Setreuid(ruid int, euid int) (err error) {
- _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Setrlimit(which int, lim *Rlimit) (err error) {
- _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Setsid() (pid int, err error) {
- r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
- pid = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Settimeofday(tp *Timeval) (err error) {
- _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Setuid(uid int) (err error) {
- _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Symlink(path string, link string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- var _p1 *byte
- _p1, err = BytePtrFromString(link)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(oldpath)
- if err != nil {
- return
- }
- var _p1 *byte
- _p1, err = BytePtrFromString(newpath)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Sync() (err error) {
- _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Truncate(path string, length int64) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Umask(newmask int) (oldmask int) {
- r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)
- oldmask = int(r0)
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Undelete(path string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Unlink(path string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Unlinkat(dirfd int, path string, flags int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Unmount(path string, flags int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func write(fd int, p []byte) (n int, err error) {
- var _p0 unsafe.Pointer
- if len(p) > 0 {
- _p0 = unsafe.Pointer(&p[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {
- r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0)
- ret = uintptr(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func munmap(addr uintptr, length uintptr) (err error) {
- _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
- var _p0 unsafe.Pointer
- if len(buf) > 0 {
- _p0 = unsafe.Pointer(&buf[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
- _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Fstat(fd int, stat *Stat_t) (err error) {
- _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Fstatfs(fd int, stat *Statfs_t) (err error) {
- _, _, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) {
- r0, _, e1 := Syscall(SYS_GETFSSTAT64, uintptr(buf), uintptr(size), uintptr(flags))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Lstat(path string, stat *Stat_t) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Stat(path string, stat *Stat_t) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Statfs(path string, stat *Statfs_t) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go
index e2ffb3be..6eb45798 100644
--- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go
+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go
@@ -490,21 +490,6 @@ func libc_munlockall_trampoline()
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
- _, _, e1 := syscall_syscall6(funcPC(libc_getattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-func libc_getattrlist_trampoline()
-
-//go:linkname libc_getattrlist libc_getattrlist
-//go:cgo_import_dynamic libc_getattrlist getattrlist "/usr/lib/libSystem.B.dylib"
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
func pipe() (r int, w int, err error) {
r0, r1, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), 0, 0, 0)
r = int(r0)
@@ -958,6 +943,56 @@ func libc_close_trampoline()
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func Clonefile(src string, dst string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(src)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(dst)
+ if err != nil {
+ return
+ }
+ _, _, e1 := syscall_syscall(funcPC(libc_clonefile_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func libc_clonefile_trampoline()
+
+//go:linkname libc_clonefile libc_clonefile
+//go:cgo_import_dynamic libc_clonefile clonefile "/usr/lib/libSystem.B.dylib"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Clonefileat(srcDirfd int, src string, dstDirfd int, dst string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(src)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(dst)
+ if err != nil {
+ return
+ }
+ _, _, e1 := syscall_syscall6(funcPC(libc_clonefileat_trampoline), uintptr(srcDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(dstDirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func libc_clonefileat_trampoline()
+
+//go:linkname libc_clonefileat libc_clonefileat
+//go:cgo_import_dynamic libc_clonefileat clonefileat "/usr/lib/libSystem.B.dylib"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func Dup(fd int) (nfd int, err error) {
r0, _, e1 := syscall_syscall(funcPC(libc_dup_trampoline), uintptr(fd), 0, 0)
nfd = int(r0)
@@ -1146,6 +1181,26 @@ func libc_fchownat_trampoline()
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func Fclonefileat(srcDirfd int, dstDirfd int, dst string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(dst)
+ if err != nil {
+ return
+ }
+ _, _, e1 := syscall_syscall6(funcPC(libc_fclonefileat_trampoline), uintptr(srcDirfd), uintptr(dstDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func libc_fclonefileat_trampoline()
+
+//go:linkname libc_fclonefileat libc_fclonefileat
+//go:cgo_import_dynamic libc_fclonefileat fclonefileat "/usr/lib/libSystem.B.dylib"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func Flock(fd int, how int) (err error) {
_, _, e1 := syscall_syscall(funcPC(libc_flock_trampoline), uintptr(fd), uintptr(how), 0)
if e1 != 0 {
@@ -1207,6 +1262,28 @@ func libc_ftruncate_trampoline()
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func Getcwd(buf []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := syscall_syscall(funcPC(libc_getcwd_trampoline), uintptr(_p0), uintptr(len(buf)), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func libc_getcwd_trampoline()
+
+//go:linkname libc_getcwd libc_getcwd
+//go:cgo_import_dynamic libc_getcwd getcwd "/usr/lib/libSystem.B.dylib"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func Getdtablesize() (size int) {
r0, _, _ := syscall_syscall(funcPC(libc_getdtablesize_trampoline), 0, 0, 0)
size = int(r0)
@@ -2357,21 +2434,6 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
- _, _, e1 := syscall_syscall6(funcPC(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-func libc_ptrace_trampoline()
-
-//go:linkname libc_ptrace libc_ptrace
-//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib"
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
func Fstat(fd int, stat *Stat_t) (err error) {
_, _, e1 := syscall_syscall(funcPC(libc_fstat64_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
if e1 != 0 {
@@ -2458,6 +2520,21 @@ func libc_lstat64_trampoline()
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
+ _, _, e1 := syscall_syscall6(funcPC(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func libc_ptrace_trampoline()
+
+//go:linkname libc_ptrace libc_ptrace
+//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func Stat(path string, stat *Stat_t) (err error) {
var _p0 *byte
_p0, err = BytePtrFromString(path)
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s
index 6836a412..1c53979a 100644
--- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s
+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s
@@ -60,8 +60,6 @@ TEXT ·libc_munlock_trampoline(SB),NOSPLIT,$0-0
JMP libc_munlock(SB)
TEXT ·libc_munlockall_trampoline(SB),NOSPLIT,$0-0
JMP libc_munlockall(SB)
-TEXT ·libc_getattrlist_trampoline(SB),NOSPLIT,$0-0
- JMP libc_getattrlist(SB)
TEXT ·libc_pipe_trampoline(SB),NOSPLIT,$0-0
JMP libc_pipe(SB)
TEXT ·libc_getxattr_trampoline(SB),NOSPLIT,$0-0
@@ -110,6 +108,10 @@ TEXT ·libc_clock_gettime_trampoline(SB),NOSPLIT,$0-0
JMP libc_clock_gettime(SB)
TEXT ·libc_close_trampoline(SB),NOSPLIT,$0-0
JMP libc_close(SB)
+TEXT ·libc_clonefile_trampoline(SB),NOSPLIT,$0-0
+ JMP libc_clonefile(SB)
+TEXT ·libc_clonefileat_trampoline(SB),NOSPLIT,$0-0
+ JMP libc_clonefileat(SB)
TEXT ·libc_dup_trampoline(SB),NOSPLIT,$0-0
JMP libc_dup(SB)
TEXT ·libc_dup2_trampoline(SB),NOSPLIT,$0-0
@@ -132,6 +134,8 @@ TEXT ·libc_fchown_trampoline(SB),NOSPLIT,$0-0
JMP libc_fchown(SB)
TEXT ·libc_fchownat_trampoline(SB),NOSPLIT,$0-0
JMP libc_fchownat(SB)
+TEXT ·libc_fclonefileat_trampoline(SB),NOSPLIT,$0-0
+ JMP libc_fclonefileat(SB)
TEXT ·libc_flock_trampoline(SB),NOSPLIT,$0-0
JMP libc_flock(SB)
TEXT ·libc_fpathconf_trampoline(SB),NOSPLIT,$0-0
@@ -140,6 +144,8 @@ TEXT ·libc_fsync_trampoline(SB),NOSPLIT,$0-0
JMP libc_fsync(SB)
TEXT ·libc_ftruncate_trampoline(SB),NOSPLIT,$0-0
JMP libc_ftruncate(SB)
+TEXT ·libc_getcwd_trampoline(SB),NOSPLIT,$0-0
+ JMP libc_getcwd(SB)
TEXT ·libc_getdtablesize_trampoline(SB),NOSPLIT,$0-0
JMP libc_getdtablesize(SB)
TEXT ·libc_getegid_trampoline(SB),NOSPLIT,$0-0
@@ -164,6 +170,8 @@ TEXT ·libc_getrusage_trampoline(SB),NOSPLIT,$0-0
JMP libc_getrusage(SB)
TEXT ·libc_getsid_trampoline(SB),NOSPLIT,$0-0
JMP libc_getsid(SB)
+TEXT ·libc_gettimeofday_trampoline(SB),NOSPLIT,$0-0
+ JMP libc_gettimeofday(SB)
TEXT ·libc_getuid_trampoline(SB),NOSPLIT,$0-0
JMP libc_getuid(SB)
TEXT ·libc_issetugid_trampoline(SB),NOSPLIT,$0-0
@@ -264,10 +272,6 @@ TEXT ·libc_mmap_trampoline(SB),NOSPLIT,$0-0
JMP libc_mmap(SB)
TEXT ·libc_munmap_trampoline(SB),NOSPLIT,$0-0
JMP libc_munmap(SB)
-TEXT ·libc_ptrace_trampoline(SB),NOSPLIT,$0-0
- JMP libc_ptrace(SB)
-TEXT ·libc_gettimeofday_trampoline(SB),NOSPLIT,$0-0
- JMP libc_gettimeofday(SB)
TEXT ·libc_fstat64_trampoline(SB),NOSPLIT,$0-0
JMP libc_fstat64(SB)
TEXT ·libc_fstatat64_trampoline(SB),NOSPLIT,$0-0
@@ -278,6 +282,8 @@ TEXT ·libc_getfsstat64_trampoline(SB),NOSPLIT,$0-0
JMP libc_getfsstat64(SB)
TEXT ·libc_lstat64_trampoline(SB),NOSPLIT,$0-0
JMP libc_lstat64(SB)
+TEXT ·libc_ptrace_trampoline(SB),NOSPLIT,$0-0
+ JMP libc_ptrace(SB)
TEXT ·libc_stat64_trampoline(SB),NOSPLIT,$0-0
JMP libc_stat64(SB)
TEXT ·libc_statfs64_trampoline(SB),NOSPLIT,$0-0
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_11.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_11.go
deleted file mode 100644
index 10256173..00000000
--- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_11.go
+++ /dev/null
@@ -1,1809 +0,0 @@
-// go run mksyscall.go -tags darwin,amd64,!go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_amd64.1_11.go syscall_darwin_amd64.go
-// Code generated by the command above; see README.md. DO NOT EDIT.
-
-// +build darwin,amd64,!go1.12
-
-package unix
-
-import (
- "syscall"
- "unsafe"
-)
-
-var _ syscall.Errno
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
- r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func setgroups(ngid int, gid *_Gid_t) (err error) {
- _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
- r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
- wpid = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
- r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
- _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
- _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func socket(domain int, typ int, proto int) (fd int, err error) {
- r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
- fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
- _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
- _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
- _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
- _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Shutdown(s int, how int) (err error) {
- _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
- _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
- var _p0 unsafe.Pointer
- if len(p) > 0 {
- _p0 = unsafe.Pointer(&p[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
- var _p0 unsafe.Pointer
- if len(buf) > 0 {
- _p0 = unsafe.Pointer(&buf[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
- r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
- r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {
- r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func utimes(path string, timeval *[2]Timeval) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func futimes(fd int, timeval *[2]Timeval) (err error) {
- _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
- r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Madvise(b []byte, behav int) (err error) {
- var _p0 unsafe.Pointer
- if len(b) > 0 {
- _p0 = unsafe.Pointer(&b[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Mlock(b []byte) (err error) {
- var _p0 unsafe.Pointer
- if len(b) > 0 {
- _p0 = unsafe.Pointer(&b[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Mlockall(flags int) (err error) {
- _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Mprotect(b []byte, prot int) (err error) {
- var _p0 unsafe.Pointer
- if len(b) > 0 {
- _p0 = unsafe.Pointer(&b[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Msync(b []byte, flags int) (err error) {
- var _p0 unsafe.Pointer
- if len(b) > 0 {
- _p0 = unsafe.Pointer(&b[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Munlock(b []byte) (err error) {
- var _p0 unsafe.Pointer
- if len(b) > 0 {
- _p0 = unsafe.Pointer(&b[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Munlockall() (err error) {
- _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
- _, _, e1 := Syscall6(SYS_GETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func pipe() (r int, w int, err error) {
- r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
- r = int(r0)
- w = int(r1)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- var _p1 *byte
- _p1, err = BytePtrFromString(attr)
- if err != nil {
- return
- }
- r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))
- sz = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(attr)
- if err != nil {
- return
- }
- r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))
- sz = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- var _p1 *byte
- _p1, err = BytePtrFromString(attr)
- if err != nil {
- return
- }
- _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(attr)
- if err != nil {
- return
- }
- _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func removexattr(path string, attr string, options int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- var _p1 *byte
- _p1, err = BytePtrFromString(attr)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func fremovexattr(fd int, attr string, options int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(attr)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func listxattr(path string, dest *byte, size int, options int) (sz int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- r0, _, e1 := Syscall6(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)
- sz = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) {
- r0, _, e1 := Syscall6(SYS_FLISTXATTR, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)
- sz = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
- _, _, e1 := Syscall6(SYS_SETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func fcntl(fd int, cmd int, arg int) (val int, err error) {
- r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
- val = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func kill(pid int, signum int, posix int) (err error) {
- _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func ioctl(fd int, req uint, arg uintptr) (err error) {
- _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
- var _p0 unsafe.Pointer
- if len(mib) > 0 {
- _p0 = unsafe.Pointer(&mib[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- _, _, e1 := Syscall6(SYS_SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) {
- _, _, e1 := Syscall6(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Access(path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
- _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Chdir(path string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Chflags(path string, flags int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Chmod(path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Chown(path string, uid int, gid int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Chroot(path string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Close(fd int) (err error) {
- _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Dup(fd int) (nfd int, err error) {
- r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)
- nfd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Dup2(from int, to int) (err error) {
- _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Exchangedata(path1 string, path2 string, options int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path1)
- if err != nil {
- return
- }
- var _p1 *byte
- _p1, err = BytePtrFromString(path2)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_EXCHANGEDATA, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Exit(code int) {
- Syscall(SYS_EXIT, uintptr(code), 0, 0)
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Fchdir(fd int) (err error) {
- _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Fchflags(fd int, flags int) (err error) {
- _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Fchmod(fd int, mode uint32) (err error) {
- _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Fchown(fd int, uid int, gid int) (err error) {
- _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Flock(fd int, how int) (err error) {
- _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Fpathconf(fd int, name int) (val int, err error) {
- r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)
- val = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Fsync(fd int) (err error) {
- _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Ftruncate(fd int, length int64) (err error) {
- _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Getdtablesize() (size int) {
- r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
- size = int(r0)
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Getegid() (egid int) {
- r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
- egid = int(r0)
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Geteuid() (uid int) {
- r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
- uid = int(r0)
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Getgid() (gid int) {
- r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
- gid = int(r0)
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Getpgid(pid int) (pgid int, err error) {
- r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
- pgid = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Getpgrp() (pgrp int) {
- r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)
- pgrp = int(r0)
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Getpid() (pid int) {
- r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
- pid = int(r0)
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Getppid() (ppid int) {
- r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
- ppid = int(r0)
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Getpriority(which int, who int) (prio int, err error) {
- r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
- prio = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Getrlimit(which int, lim *Rlimit) (err error) {
- _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Getrusage(who int, rusage *Rusage) (err error) {
- _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Getsid(pid int) (sid int, err error) {
- r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
- sid = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Gettimeofday(tp *Timeval) (err error) {
- _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Getuid() (uid int) {
- r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
- uid = int(r0)
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Issetugid() (tainted bool) {
- r0, _, _ := RawSyscall(SYS_ISSETUGID, 0, 0, 0)
- tainted = bool(r0 != 0)
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Kqueue() (fd int, err error) {
- r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
- fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Lchown(path string, uid int, gid int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Link(path string, link string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- var _p1 *byte
- _p1, err = BytePtrFromString(link)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- var _p1 *byte
- _p1, err = BytePtrFromString(link)
- if err != nil {
- return
- }
- _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Listen(s int, backlog int) (err error) {
- _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Mkdir(path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Mkdirat(dirfd int, path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Mkfifo(path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Mknod(path string, mode uint32, dev int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Open(path string, mode int, perm uint32) (fd int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
- fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)
- fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Pathconf(path string, name int) (val int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
- val = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Pread(fd int, p []byte, offset int64) (n int, err error) {
- var _p0 unsafe.Pointer
- if len(p) > 0 {
- _p0 = unsafe.Pointer(&p[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
- var _p0 unsafe.Pointer
- if len(p) > 0 {
- _p0 = unsafe.Pointer(&p[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func read(fd int, p []byte) (n int, err error) {
- var _p0 unsafe.Pointer
- if len(p) > 0 {
- _p0 = unsafe.Pointer(&p[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Readlink(path string, buf []byte) (n int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- var _p1 unsafe.Pointer
- if len(buf) > 0 {
- _p1 = unsafe.Pointer(&buf[0])
- } else {
- _p1 = unsafe.Pointer(&_zero)
- }
- r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- var _p1 unsafe.Pointer
- if len(buf) > 0 {
- _p1 = unsafe.Pointer(&buf[0])
- } else {
- _p1 = unsafe.Pointer(&_zero)
- }
- r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Rename(from string, to string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(from)
- if err != nil {
- return
- }
- var _p1 *byte
- _p1, err = BytePtrFromString(to)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Renameat(fromfd int, from string, tofd int, to string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(from)
- if err != nil {
- return
- }
- var _p1 *byte
- _p1, err = BytePtrFromString(to)
- if err != nil {
- return
- }
- _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Revoke(path string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Rmdir(path string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
- r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
- newoffset = int64(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
- r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Setegid(egid int) (err error) {
- _, _, e1 := Syscall(SYS_SETEGID, uintptr(egid), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Seteuid(euid int) (err error) {
- _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Setgid(gid int) (err error) {
- _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Setlogin(name string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(name)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Setpgid(pid int, pgid int) (err error) {
- _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Setpriority(which int, who int, prio int) (err error) {
- _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Setprivexec(flag int) (err error) {
- _, _, e1 := Syscall(SYS_SETPRIVEXEC, uintptr(flag), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Setregid(rgid int, egid int) (err error) {
- _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Setreuid(ruid int, euid int) (err error) {
- _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Setrlimit(which int, lim *Rlimit) (err error) {
- _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Setsid() (pid int, err error) {
- r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
- pid = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Settimeofday(tp *Timeval) (err error) {
- _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Setuid(uid int) (err error) {
- _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Symlink(path string, link string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- var _p1 *byte
- _p1, err = BytePtrFromString(link)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(oldpath)
- if err != nil {
- return
- }
- var _p1 *byte
- _p1, err = BytePtrFromString(newpath)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Sync() (err error) {
- _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Truncate(path string, length int64) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Umask(newmask int) (oldmask int) {
- r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)
- oldmask = int(r0)
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Undelete(path string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Unlink(path string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Unlinkat(dirfd int, path string, flags int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Unmount(path string, flags int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func write(fd int, p []byte) (n int, err error) {
- var _p0 unsafe.Pointer
- if len(p) > 0 {
- _p0 = unsafe.Pointer(&p[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {
- r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))
- ret = uintptr(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func munmap(addr uintptr, length uintptr) (err error) {
- _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
- var _p0 unsafe.Pointer
- if len(buf) > 0 {
- _p0 = unsafe.Pointer(&buf[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
- _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Fstat(fd int, stat *Stat_t) (err error) {
- _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Fstatfs(fd int, stat *Statfs_t) (err error) {
- _, _, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) {
- r0, _, e1 := Syscall(SYS_GETFSSTAT64, uintptr(buf), uintptr(size), uintptr(flags))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Lstat(path string, stat *Stat_t) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Stat(path string, stat *Stat_t) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Statfs(path string, stat *Statfs_t) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go
index c67e336e..889c1405 100644
--- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go
+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go
@@ -490,21 +490,6 @@ func libc_munlockall_trampoline()
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
- _, _, e1 := syscall_syscall6(funcPC(libc_getattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-func libc_getattrlist_trampoline()
-
-//go:linkname libc_getattrlist libc_getattrlist
-//go:cgo_import_dynamic libc_getattrlist getattrlist "/usr/lib/libSystem.B.dylib"
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
func pipe() (r int, w int, err error) {
r0, r1, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), 0, 0, 0)
r = int(r0)
@@ -958,6 +943,56 @@ func libc_close_trampoline()
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func Clonefile(src string, dst string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(src)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(dst)
+ if err != nil {
+ return
+ }
+ _, _, e1 := syscall_syscall(funcPC(libc_clonefile_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func libc_clonefile_trampoline()
+
+//go:linkname libc_clonefile libc_clonefile
+//go:cgo_import_dynamic libc_clonefile clonefile "/usr/lib/libSystem.B.dylib"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Clonefileat(srcDirfd int, src string, dstDirfd int, dst string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(src)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(dst)
+ if err != nil {
+ return
+ }
+ _, _, e1 := syscall_syscall6(funcPC(libc_clonefileat_trampoline), uintptr(srcDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(dstDirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func libc_clonefileat_trampoline()
+
+//go:linkname libc_clonefileat libc_clonefileat
+//go:cgo_import_dynamic libc_clonefileat clonefileat "/usr/lib/libSystem.B.dylib"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func Dup(fd int) (nfd int, err error) {
r0, _, e1 := syscall_syscall(funcPC(libc_dup_trampoline), uintptr(fd), 0, 0)
nfd = int(r0)
@@ -1146,6 +1181,26 @@ func libc_fchownat_trampoline()
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func Fclonefileat(srcDirfd int, dstDirfd int, dst string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(dst)
+ if err != nil {
+ return
+ }
+ _, _, e1 := syscall_syscall6(funcPC(libc_fclonefileat_trampoline), uintptr(srcDirfd), uintptr(dstDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func libc_fclonefileat_trampoline()
+
+//go:linkname libc_fclonefileat libc_fclonefileat
+//go:cgo_import_dynamic libc_fclonefileat fclonefileat "/usr/lib/libSystem.B.dylib"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func Flock(fd int, how int) (err error) {
_, _, e1 := syscall_syscall(funcPC(libc_flock_trampoline), uintptr(fd), uintptr(how), 0)
if e1 != 0 {
@@ -1207,6 +1262,28 @@ func libc_ftruncate_trampoline()
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func Getcwd(buf []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := syscall_syscall(funcPC(libc_getcwd_trampoline), uintptr(_p0), uintptr(len(buf)), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func libc_getcwd_trampoline()
+
+//go:linkname libc_getcwd libc_getcwd
+//go:cgo_import_dynamic libc_getcwd getcwd "/usr/lib/libSystem.B.dylib"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func Getdtablesize() (size int) {
r0, _, _ := syscall_syscall(funcPC(libc_getdtablesize_trampoline), 0, 0, 0)
size = int(r0)
@@ -2357,21 +2434,6 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
- _, _, e1 := syscall_syscall6(funcPC(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-func libc_ptrace_trampoline()
-
-//go:linkname libc_ptrace libc_ptrace
-//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib"
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
func Fstat(fd int, stat *Stat_t) (err error) {
_, _, e1 := syscall_syscall(funcPC(libc_fstat64_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
if e1 != 0 {
@@ -2458,6 +2520,21 @@ func libc_lstat64_trampoline()
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
+ _, _, e1 := syscall_syscall6(funcPC(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func libc_ptrace_trampoline()
+
+//go:linkname libc_ptrace libc_ptrace
+//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func Stat(path string, stat *Stat_t) (err error) {
var _p0 *byte
_p0, err = BytePtrFromString(path)
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s
index a3fdf099..c77bd6e2 100644
--- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s
+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s
@@ -60,8 +60,6 @@ TEXT ·libc_munlock_trampoline(SB),NOSPLIT,$0-0
JMP libc_munlock(SB)
TEXT ·libc_munlockall_trampoline(SB),NOSPLIT,$0-0
JMP libc_munlockall(SB)
-TEXT ·libc_getattrlist_trampoline(SB),NOSPLIT,$0-0
- JMP libc_getattrlist(SB)
TEXT ·libc_pipe_trampoline(SB),NOSPLIT,$0-0
JMP libc_pipe(SB)
TEXT ·libc_getxattr_trampoline(SB),NOSPLIT,$0-0
@@ -110,6 +108,10 @@ TEXT ·libc_clock_gettime_trampoline(SB),NOSPLIT,$0-0
JMP libc_clock_gettime(SB)
TEXT ·libc_close_trampoline(SB),NOSPLIT,$0-0
JMP libc_close(SB)
+TEXT ·libc_clonefile_trampoline(SB),NOSPLIT,$0-0
+ JMP libc_clonefile(SB)
+TEXT ·libc_clonefileat_trampoline(SB),NOSPLIT,$0-0
+ JMP libc_clonefileat(SB)
TEXT ·libc_dup_trampoline(SB),NOSPLIT,$0-0
JMP libc_dup(SB)
TEXT ·libc_dup2_trampoline(SB),NOSPLIT,$0-0
@@ -132,6 +134,8 @@ TEXT ·libc_fchown_trampoline(SB),NOSPLIT,$0-0
JMP libc_fchown(SB)
TEXT ·libc_fchownat_trampoline(SB),NOSPLIT,$0-0
JMP libc_fchownat(SB)
+TEXT ·libc_fclonefileat_trampoline(SB),NOSPLIT,$0-0
+ JMP libc_fclonefileat(SB)
TEXT ·libc_flock_trampoline(SB),NOSPLIT,$0-0
JMP libc_flock(SB)
TEXT ·libc_fpathconf_trampoline(SB),NOSPLIT,$0-0
@@ -140,6 +144,8 @@ TEXT ·libc_fsync_trampoline(SB),NOSPLIT,$0-0
JMP libc_fsync(SB)
TEXT ·libc_ftruncate_trampoline(SB),NOSPLIT,$0-0
JMP libc_ftruncate(SB)
+TEXT ·libc_getcwd_trampoline(SB),NOSPLIT,$0-0
+ JMP libc_getcwd(SB)
TEXT ·libc_getdtablesize_trampoline(SB),NOSPLIT,$0-0
JMP libc_getdtablesize(SB)
TEXT ·libc_getegid_trampoline(SB),NOSPLIT,$0-0
@@ -164,6 +170,8 @@ TEXT ·libc_getrusage_trampoline(SB),NOSPLIT,$0-0
JMP libc_getrusage(SB)
TEXT ·libc_getsid_trampoline(SB),NOSPLIT,$0-0
JMP libc_getsid(SB)
+TEXT ·libc_gettimeofday_trampoline(SB),NOSPLIT,$0-0
+ JMP libc_gettimeofday(SB)
TEXT ·libc_getuid_trampoline(SB),NOSPLIT,$0-0
JMP libc_getuid(SB)
TEXT ·libc_issetugid_trampoline(SB),NOSPLIT,$0-0
@@ -264,10 +272,6 @@ TEXT ·libc_mmap_trampoline(SB),NOSPLIT,$0-0
JMP libc_mmap(SB)
TEXT ·libc_munmap_trampoline(SB),NOSPLIT,$0-0
JMP libc_munmap(SB)
-TEXT ·libc_ptrace_trampoline(SB),NOSPLIT,$0-0
- JMP libc_ptrace(SB)
-TEXT ·libc_gettimeofday_trampoline(SB),NOSPLIT,$0-0
- JMP libc_gettimeofday(SB)
TEXT ·libc_fstat64_trampoline(SB),NOSPLIT,$0-0
JMP libc_fstat64(SB)
TEXT ·libc_fstatat64_trampoline(SB),NOSPLIT,$0-0
@@ -278,6 +282,8 @@ TEXT ·libc_getfsstat64_trampoline(SB),NOSPLIT,$0-0
JMP libc_getfsstat64(SB)
TEXT ·libc_lstat64_trampoline(SB),NOSPLIT,$0-0
JMP libc_lstat64(SB)
+TEXT ·libc_ptrace_trampoline(SB),NOSPLIT,$0-0
+ JMP libc_ptrace(SB)
TEXT ·libc_stat64_trampoline(SB),NOSPLIT,$0-0
JMP libc_stat64(SB)
TEXT ·libc_statfs64_trampoline(SB),NOSPLIT,$0-0
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_11.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_11.go
deleted file mode 100644
index d34e6df2..00000000
--- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_11.go
+++ /dev/null
@@ -1,1782 +0,0 @@
-// go run mksyscall.go -l32 -tags darwin,arm,!go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_arm.1_11.go syscall_darwin_arm.go
-// Code generated by the command above; see README.md. DO NOT EDIT.
-
-// +build darwin,arm,!go1.12
-
-package unix
-
-import (
- "syscall"
- "unsafe"
-)
-
-var _ syscall.Errno
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
- r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func setgroups(ngid int, gid *_Gid_t) (err error) {
- _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
- r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
- wpid = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
- r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
- _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
- _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func socket(domain int, typ int, proto int) (fd int, err error) {
- r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
- fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
- _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
- _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
- _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
- _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Shutdown(s int, how int) (err error) {
- _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
- _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
- var _p0 unsafe.Pointer
- if len(p) > 0 {
- _p0 = unsafe.Pointer(&p[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
- var _p0 unsafe.Pointer
- if len(buf) > 0 {
- _p0 = unsafe.Pointer(&buf[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
- r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
- r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {
- r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func utimes(path string, timeval *[2]Timeval) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func futimes(fd int, timeval *[2]Timeval) (err error) {
- _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
- r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Madvise(b []byte, behav int) (err error) {
- var _p0 unsafe.Pointer
- if len(b) > 0 {
- _p0 = unsafe.Pointer(&b[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Mlock(b []byte) (err error) {
- var _p0 unsafe.Pointer
- if len(b) > 0 {
- _p0 = unsafe.Pointer(&b[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Mlockall(flags int) (err error) {
- _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Mprotect(b []byte, prot int) (err error) {
- var _p0 unsafe.Pointer
- if len(b) > 0 {
- _p0 = unsafe.Pointer(&b[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Msync(b []byte, flags int) (err error) {
- var _p0 unsafe.Pointer
- if len(b) > 0 {
- _p0 = unsafe.Pointer(&b[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Munlock(b []byte) (err error) {
- var _p0 unsafe.Pointer
- if len(b) > 0 {
- _p0 = unsafe.Pointer(&b[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Munlockall() (err error) {
- _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
- _, _, e1 := Syscall6(SYS_GETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func pipe() (r int, w int, err error) {
- r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
- r = int(r0)
- w = int(r1)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- var _p1 *byte
- _p1, err = BytePtrFromString(attr)
- if err != nil {
- return
- }
- r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))
- sz = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(attr)
- if err != nil {
- return
- }
- r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))
- sz = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- var _p1 *byte
- _p1, err = BytePtrFromString(attr)
- if err != nil {
- return
- }
- _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(attr)
- if err != nil {
- return
- }
- _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func removexattr(path string, attr string, options int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- var _p1 *byte
- _p1, err = BytePtrFromString(attr)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func fremovexattr(fd int, attr string, options int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(attr)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func listxattr(path string, dest *byte, size int, options int) (sz int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- r0, _, e1 := Syscall6(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)
- sz = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) {
- r0, _, e1 := Syscall6(SYS_FLISTXATTR, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)
- sz = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
- _, _, e1 := Syscall6(SYS_SETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func fcntl(fd int, cmd int, arg int) (val int, err error) {
- r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
- val = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func kill(pid int, signum int, posix int) (err error) {
- _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func ioctl(fd int, req uint, arg uintptr) (err error) {
- _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
- var _p0 unsafe.Pointer
- if len(mib) > 0 {
- _p0 = unsafe.Pointer(&mib[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- _, _, e1 := Syscall6(SYS_SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) {
- _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(offset>>32), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Access(path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
- _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Chdir(path string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Chflags(path string, flags int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Chmod(path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Chown(path string, uid int, gid int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Chroot(path string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Close(fd int) (err error) {
- _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Dup(fd int) (nfd int, err error) {
- r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)
- nfd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Dup2(from int, to int) (err error) {
- _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Exchangedata(path1 string, path2 string, options int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path1)
- if err != nil {
- return
- }
- var _p1 *byte
- _p1, err = BytePtrFromString(path2)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_EXCHANGEDATA, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Exit(code int) {
- Syscall(SYS_EXIT, uintptr(code), 0, 0)
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Fchdir(fd int) (err error) {
- _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Fchflags(fd int, flags int) (err error) {
- _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Fchmod(fd int, mode uint32) (err error) {
- _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Fchown(fd int, uid int, gid int) (err error) {
- _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Flock(fd int, how int) (err error) {
- _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Fpathconf(fd int, name int) (val int, err error) {
- r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)
- val = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Fsync(fd int) (err error) {
- _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Ftruncate(fd int, length int64) (err error) {
- _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), uintptr(length>>32))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Getdtablesize() (size int) {
- r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
- size = int(r0)
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Getegid() (egid int) {
- r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
- egid = int(r0)
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Geteuid() (uid int) {
- r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
- uid = int(r0)
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Getgid() (gid int) {
- r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
- gid = int(r0)
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Getpgid(pid int) (pgid int, err error) {
- r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
- pgid = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Getpgrp() (pgrp int) {
- r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)
- pgrp = int(r0)
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Getpid() (pid int) {
- r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
- pid = int(r0)
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Getppid() (ppid int) {
- r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
- ppid = int(r0)
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Getpriority(which int, who int) (prio int, err error) {
- r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
- prio = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Getrlimit(which int, lim *Rlimit) (err error) {
- _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Getrusage(who int, rusage *Rusage) (err error) {
- _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Getsid(pid int) (sid int, err error) {
- r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
- sid = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Gettimeofday(tp *Timeval) (err error) {
- _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Getuid() (uid int) {
- r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
- uid = int(r0)
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Issetugid() (tainted bool) {
- r0, _, _ := RawSyscall(SYS_ISSETUGID, 0, 0, 0)
- tainted = bool(r0 != 0)
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Kqueue() (fd int, err error) {
- r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
- fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Lchown(path string, uid int, gid int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Link(path string, link string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- var _p1 *byte
- _p1, err = BytePtrFromString(link)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- var _p1 *byte
- _p1, err = BytePtrFromString(link)
- if err != nil {
- return
- }
- _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Listen(s int, backlog int) (err error) {
- _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Mkdir(path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Mkdirat(dirfd int, path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Mkfifo(path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Mknod(path string, mode uint32, dev int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Open(path string, mode int, perm uint32) (fd int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
- fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)
- fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Pathconf(path string, name int) (val int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
- val = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Pread(fd int, p []byte, offset int64) (n int, err error) {
- var _p0 unsafe.Pointer
- if len(p) > 0 {
- _p0 = unsafe.Pointer(&p[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
- var _p0 unsafe.Pointer
- if len(p) > 0 {
- _p0 = unsafe.Pointer(&p[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func read(fd int, p []byte) (n int, err error) {
- var _p0 unsafe.Pointer
- if len(p) > 0 {
- _p0 = unsafe.Pointer(&p[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Readlink(path string, buf []byte) (n int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- var _p1 unsafe.Pointer
- if len(buf) > 0 {
- _p1 = unsafe.Pointer(&buf[0])
- } else {
- _p1 = unsafe.Pointer(&_zero)
- }
- r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- var _p1 unsafe.Pointer
- if len(buf) > 0 {
- _p1 = unsafe.Pointer(&buf[0])
- } else {
- _p1 = unsafe.Pointer(&_zero)
- }
- r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Rename(from string, to string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(from)
- if err != nil {
- return
- }
- var _p1 *byte
- _p1, err = BytePtrFromString(to)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Renameat(fromfd int, from string, tofd int, to string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(from)
- if err != nil {
- return
- }
- var _p1 *byte
- _p1, err = BytePtrFromString(to)
- if err != nil {
- return
- }
- _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Revoke(path string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Rmdir(path string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
- r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0)
- newoffset = int64(int64(r1)<<32 | int64(r0))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
- r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Setegid(egid int) (err error) {
- _, _, e1 := Syscall(SYS_SETEGID, uintptr(egid), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Seteuid(euid int) (err error) {
- _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Setgid(gid int) (err error) {
- _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Setlogin(name string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(name)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Setpgid(pid int, pgid int) (err error) {
- _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Setpriority(which int, who int, prio int) (err error) {
- _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Setprivexec(flag int) (err error) {
- _, _, e1 := Syscall(SYS_SETPRIVEXEC, uintptr(flag), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Setregid(rgid int, egid int) (err error) {
- _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Setreuid(ruid int, euid int) (err error) {
- _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Setrlimit(which int, lim *Rlimit) (err error) {
- _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Setsid() (pid int, err error) {
- r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
- pid = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Settimeofday(tp *Timeval) (err error) {
- _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Setuid(uid int) (err error) {
- _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Symlink(path string, link string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- var _p1 *byte
- _p1, err = BytePtrFromString(link)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(oldpath)
- if err != nil {
- return
- }
- var _p1 *byte
- _p1, err = BytePtrFromString(newpath)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Sync() (err error) {
- _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Truncate(path string, length int64) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Umask(newmask int) (oldmask int) {
- r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)
- oldmask = int(r0)
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Undelete(path string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Unlink(path string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Unlinkat(dirfd int, path string, flags int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Unmount(path string, flags int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func write(fd int, p []byte) (n int, err error) {
- var _p0 unsafe.Pointer
- if len(p) > 0 {
- _p0 = unsafe.Pointer(&p[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {
- r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0)
- ret = uintptr(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func munmap(addr uintptr, length uintptr) (err error) {
- _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Fstat(fd int, stat *Stat_t) (err error) {
- _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Fstatfs(fd int, stat *Statfs_t) (err error) {
- _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) {
- r0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(buf), uintptr(size), uintptr(flags))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Lstat(path string, stat *Stat_t) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Stat(path string, stat *Stat_t) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Statfs(path string, stat *Statfs_t) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go
index b759757a..d6b5249c 100644
--- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go
+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go
@@ -490,21 +490,6 @@ func libc_munlockall_trampoline()
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
- _, _, e1 := syscall_syscall6(funcPC(libc_getattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-func libc_getattrlist_trampoline()
-
-//go:linkname libc_getattrlist libc_getattrlist
-//go:cgo_import_dynamic libc_getattrlist getattrlist "/usr/lib/libSystem.B.dylib"
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
func pipe() (r int, w int, err error) {
r0, r1, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), 0, 0, 0)
r = int(r0)
@@ -958,6 +943,56 @@ func libc_close_trampoline()
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func Clonefile(src string, dst string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(src)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(dst)
+ if err != nil {
+ return
+ }
+ _, _, e1 := syscall_syscall(funcPC(libc_clonefile_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func libc_clonefile_trampoline()
+
+//go:linkname libc_clonefile libc_clonefile
+//go:cgo_import_dynamic libc_clonefile clonefile "/usr/lib/libSystem.B.dylib"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Clonefileat(srcDirfd int, src string, dstDirfd int, dst string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(src)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(dst)
+ if err != nil {
+ return
+ }
+ _, _, e1 := syscall_syscall6(funcPC(libc_clonefileat_trampoline), uintptr(srcDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(dstDirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func libc_clonefileat_trampoline()
+
+//go:linkname libc_clonefileat libc_clonefileat
+//go:cgo_import_dynamic libc_clonefileat clonefileat "/usr/lib/libSystem.B.dylib"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func Dup(fd int) (nfd int, err error) {
r0, _, e1 := syscall_syscall(funcPC(libc_dup_trampoline), uintptr(fd), 0, 0)
nfd = int(r0)
@@ -1146,6 +1181,26 @@ func libc_fchownat_trampoline()
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func Fclonefileat(srcDirfd int, dstDirfd int, dst string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(dst)
+ if err != nil {
+ return
+ }
+ _, _, e1 := syscall_syscall6(funcPC(libc_fclonefileat_trampoline), uintptr(srcDirfd), uintptr(dstDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func libc_fclonefileat_trampoline()
+
+//go:linkname libc_fclonefileat libc_fclonefileat
+//go:cgo_import_dynamic libc_fclonefileat fclonefileat "/usr/lib/libSystem.B.dylib"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func Flock(fd int, how int) (err error) {
_, _, e1 := syscall_syscall(funcPC(libc_flock_trampoline), uintptr(fd), uintptr(how), 0)
if e1 != 0 {
@@ -1207,6 +1262,28 @@ func libc_ftruncate_trampoline()
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func Getcwd(buf []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := syscall_syscall(funcPC(libc_getcwd_trampoline), uintptr(_p0), uintptr(len(buf)), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func libc_getcwd_trampoline()
+
+//go:linkname libc_getcwd libc_getcwd
+//go:cgo_import_dynamic libc_getcwd getcwd "/usr/lib/libSystem.B.dylib"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func Getdtablesize() (size int) {
r0, _, _ := syscall_syscall(funcPC(libc_getdtablesize_trampoline), 0, 0, 0)
size = int(r0)
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s
index b67f518f..5eec5f1d 100644
--- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s
+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s
@@ -60,8 +60,6 @@ TEXT ·libc_munlock_trampoline(SB),NOSPLIT,$0-0
JMP libc_munlock(SB)
TEXT ·libc_munlockall_trampoline(SB),NOSPLIT,$0-0
JMP libc_munlockall(SB)
-TEXT ·libc_getattrlist_trampoline(SB),NOSPLIT,$0-0
- JMP libc_getattrlist(SB)
TEXT ·libc_pipe_trampoline(SB),NOSPLIT,$0-0
JMP libc_pipe(SB)
TEXT ·libc_getxattr_trampoline(SB),NOSPLIT,$0-0
@@ -110,6 +108,10 @@ TEXT ·libc_clock_gettime_trampoline(SB),NOSPLIT,$0-0
JMP libc_clock_gettime(SB)
TEXT ·libc_close_trampoline(SB),NOSPLIT,$0-0
JMP libc_close(SB)
+TEXT ·libc_clonefile_trampoline(SB),NOSPLIT,$0-0
+ JMP libc_clonefile(SB)
+TEXT ·libc_clonefileat_trampoline(SB),NOSPLIT,$0-0
+ JMP libc_clonefileat(SB)
TEXT ·libc_dup_trampoline(SB),NOSPLIT,$0-0
JMP libc_dup(SB)
TEXT ·libc_dup2_trampoline(SB),NOSPLIT,$0-0
@@ -132,6 +134,8 @@ TEXT ·libc_fchown_trampoline(SB),NOSPLIT,$0-0
JMP libc_fchown(SB)
TEXT ·libc_fchownat_trampoline(SB),NOSPLIT,$0-0
JMP libc_fchownat(SB)
+TEXT ·libc_fclonefileat_trampoline(SB),NOSPLIT,$0-0
+ JMP libc_fclonefileat(SB)
TEXT ·libc_flock_trampoline(SB),NOSPLIT,$0-0
JMP libc_flock(SB)
TEXT ·libc_fpathconf_trampoline(SB),NOSPLIT,$0-0
@@ -140,6 +144,8 @@ TEXT ·libc_fsync_trampoline(SB),NOSPLIT,$0-0
JMP libc_fsync(SB)
TEXT ·libc_ftruncate_trampoline(SB),NOSPLIT,$0-0
JMP libc_ftruncate(SB)
+TEXT ·libc_getcwd_trampoline(SB),NOSPLIT,$0-0
+ JMP libc_getcwd(SB)
TEXT ·libc_getdtablesize_trampoline(SB),NOSPLIT,$0-0
JMP libc_getdtablesize(SB)
TEXT ·libc_getegid_trampoline(SB),NOSPLIT,$0-0
@@ -164,6 +170,8 @@ TEXT ·libc_getrusage_trampoline(SB),NOSPLIT,$0-0
JMP libc_getrusage(SB)
TEXT ·libc_getsid_trampoline(SB),NOSPLIT,$0-0
JMP libc_getsid(SB)
+TEXT ·libc_gettimeofday_trampoline(SB),NOSPLIT,$0-0
+ JMP libc_gettimeofday(SB)
TEXT ·libc_getuid_trampoline(SB),NOSPLIT,$0-0
JMP libc_getuid(SB)
TEXT ·libc_issetugid_trampoline(SB),NOSPLIT,$0-0
@@ -264,8 +272,6 @@ TEXT ·libc_mmap_trampoline(SB),NOSPLIT,$0-0
JMP libc_mmap(SB)
TEXT ·libc_munmap_trampoline(SB),NOSPLIT,$0-0
JMP libc_munmap(SB)
-TEXT ·libc_gettimeofday_trampoline(SB),NOSPLIT,$0-0
- JMP libc_gettimeofday(SB)
TEXT ·libc_fstat_trampoline(SB),NOSPLIT,$0-0
JMP libc_fstat(SB)
TEXT ·libc_fstatat_trampoline(SB),NOSPLIT,$0-0
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go
index b2886126..23b65a53 100644
--- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go
+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go
@@ -490,21 +490,6 @@ func libc_munlockall_trampoline()
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
- _, _, e1 := syscall_syscall6(funcPC(libc_getattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-func libc_getattrlist_trampoline()
-
-//go:linkname libc_getattrlist libc_getattrlist
-//go:cgo_import_dynamic libc_getattrlist getattrlist "/usr/lib/libSystem.B.dylib"
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
func pipe() (r int, w int, err error) {
r0, r1, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), 0, 0, 0)
r = int(r0)
@@ -958,6 +943,56 @@ func libc_close_trampoline()
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func Clonefile(src string, dst string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(src)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(dst)
+ if err != nil {
+ return
+ }
+ _, _, e1 := syscall_syscall(funcPC(libc_clonefile_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func libc_clonefile_trampoline()
+
+//go:linkname libc_clonefile libc_clonefile
+//go:cgo_import_dynamic libc_clonefile clonefile "/usr/lib/libSystem.B.dylib"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Clonefileat(srcDirfd int, src string, dstDirfd int, dst string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(src)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(dst)
+ if err != nil {
+ return
+ }
+ _, _, e1 := syscall_syscall6(funcPC(libc_clonefileat_trampoline), uintptr(srcDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(dstDirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func libc_clonefileat_trampoline()
+
+//go:linkname libc_clonefileat libc_clonefileat
+//go:cgo_import_dynamic libc_clonefileat clonefileat "/usr/lib/libSystem.B.dylib"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func Dup(fd int) (nfd int, err error) {
r0, _, e1 := syscall_syscall(funcPC(libc_dup_trampoline), uintptr(fd), 0, 0)
nfd = int(r0)
@@ -1146,6 +1181,26 @@ func libc_fchownat_trampoline()
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func Fclonefileat(srcDirfd int, dstDirfd int, dst string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(dst)
+ if err != nil {
+ return
+ }
+ _, _, e1 := syscall_syscall6(funcPC(libc_fclonefileat_trampoline), uintptr(srcDirfd), uintptr(dstDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func libc_fclonefileat_trampoline()
+
+//go:linkname libc_fclonefileat libc_fclonefileat
+//go:cgo_import_dynamic libc_fclonefileat fclonefileat "/usr/lib/libSystem.B.dylib"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func Flock(fd int, how int) (err error) {
_, _, e1 := syscall_syscall(funcPC(libc_flock_trampoline), uintptr(fd), uintptr(how), 0)
if e1 != 0 {
@@ -1207,6 +1262,28 @@ func libc_ftruncate_trampoline()
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func Getcwd(buf []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := syscall_syscall(funcPC(libc_getcwd_trampoline), uintptr(_p0), uintptr(len(buf)), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func libc_getcwd_trampoline()
+
+//go:linkname libc_getcwd libc_getcwd
+//go:cgo_import_dynamic libc_getcwd getcwd "/usr/lib/libSystem.B.dylib"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func Getdtablesize() (size int) {
r0, _, _ := syscall_syscall(funcPC(libc_getdtablesize_trampoline), 0, 0, 0)
size = int(r0)
@@ -2443,6 +2520,21 @@ func libc_lstat_trampoline()
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
+ _, _, e1 := syscall_syscall6(funcPC(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func libc_ptrace_trampoline()
+
+//go:linkname libc_ptrace libc_ptrace
+//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func Stat(path string, stat *Stat_t) (err error) {
var _p0 *byte
_p0, err = BytePtrFromString(path)
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s
index 40cce1bb..53c402bf 100644
--- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s
+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s
@@ -60,8 +60,6 @@ TEXT ·libc_munlock_trampoline(SB),NOSPLIT,$0-0
JMP libc_munlock(SB)
TEXT ·libc_munlockall_trampoline(SB),NOSPLIT,$0-0
JMP libc_munlockall(SB)
-TEXT ·libc_getattrlist_trampoline(SB),NOSPLIT,$0-0
- JMP libc_getattrlist(SB)
TEXT ·libc_pipe_trampoline(SB),NOSPLIT,$0-0
JMP libc_pipe(SB)
TEXT ·libc_getxattr_trampoline(SB),NOSPLIT,$0-0
@@ -110,6 +108,10 @@ TEXT ·libc_clock_gettime_trampoline(SB),NOSPLIT,$0-0
JMP libc_clock_gettime(SB)
TEXT ·libc_close_trampoline(SB),NOSPLIT,$0-0
JMP libc_close(SB)
+TEXT ·libc_clonefile_trampoline(SB),NOSPLIT,$0-0
+ JMP libc_clonefile(SB)
+TEXT ·libc_clonefileat_trampoline(SB),NOSPLIT,$0-0
+ JMP libc_clonefileat(SB)
TEXT ·libc_dup_trampoline(SB),NOSPLIT,$0-0
JMP libc_dup(SB)
TEXT ·libc_dup2_trampoline(SB),NOSPLIT,$0-0
@@ -132,6 +134,8 @@ TEXT ·libc_fchown_trampoline(SB),NOSPLIT,$0-0
JMP libc_fchown(SB)
TEXT ·libc_fchownat_trampoline(SB),NOSPLIT,$0-0
JMP libc_fchownat(SB)
+TEXT ·libc_fclonefileat_trampoline(SB),NOSPLIT,$0-0
+ JMP libc_fclonefileat(SB)
TEXT ·libc_flock_trampoline(SB),NOSPLIT,$0-0
JMP libc_flock(SB)
TEXT ·libc_fpathconf_trampoline(SB),NOSPLIT,$0-0
@@ -140,6 +144,8 @@ TEXT ·libc_fsync_trampoline(SB),NOSPLIT,$0-0
JMP libc_fsync(SB)
TEXT ·libc_ftruncate_trampoline(SB),NOSPLIT,$0-0
JMP libc_ftruncate(SB)
+TEXT ·libc_getcwd_trampoline(SB),NOSPLIT,$0-0
+ JMP libc_getcwd(SB)
TEXT ·libc_getdtablesize_trampoline(SB),NOSPLIT,$0-0
JMP libc_getdtablesize(SB)
TEXT ·libc_getegid_trampoline(SB),NOSPLIT,$0-0
@@ -164,6 +170,8 @@ TEXT ·libc_getrusage_trampoline(SB),NOSPLIT,$0-0
JMP libc_getrusage(SB)
TEXT ·libc_getsid_trampoline(SB),NOSPLIT,$0-0
JMP libc_getsid(SB)
+TEXT ·libc_gettimeofday_trampoline(SB),NOSPLIT,$0-0
+ JMP libc_gettimeofday(SB)
TEXT ·libc_getuid_trampoline(SB),NOSPLIT,$0-0
JMP libc_getuid(SB)
TEXT ·libc_issetugid_trampoline(SB),NOSPLIT,$0-0
@@ -264,8 +272,6 @@ TEXT ·libc_mmap_trampoline(SB),NOSPLIT,$0-0
JMP libc_mmap(SB)
TEXT ·libc_munmap_trampoline(SB),NOSPLIT,$0-0
JMP libc_munmap(SB)
-TEXT ·libc_gettimeofday_trampoline(SB),NOSPLIT,$0-0
- JMP libc_gettimeofday(SB)
TEXT ·libc_fstat_trampoline(SB),NOSPLIT,$0-0
JMP libc_fstat(SB)
TEXT ·libc_fstatat_trampoline(SB),NOSPLIT,$0-0
@@ -276,6 +282,8 @@ TEXT ·libc_getfsstat_trampoline(SB),NOSPLIT,$0-0
JMP libc_getfsstat(SB)
TEXT ·libc_lstat_trampoline(SB),NOSPLIT,$0-0
JMP libc_lstat(SB)
+TEXT ·libc_ptrace_trampoline(SB),NOSPLIT,$0-0
+ JMP libc_ptrace(SB)
TEXT ·libc_stat_trampoline(SB),NOSPLIT,$0-0
JMP libc_stat(SB)
TEXT ·libc_statfs_trampoline(SB),NOSPLIT,$0-0
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go
index fe1fdd78..1aaccd36 100644
--- a/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go
+++ b/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go
@@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
- var _p0 unsafe.Pointer
- if len(mib) > 0 {
- _p0 = unsafe.Pointer(&mib[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
func utimes(path string, timeval *[2]Timeval) (err error) {
var _p0 *byte
_p0, err = BytePtrFromString(path)
@@ -378,6 +362,16 @@ func pipe() (r int, w int, err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func pipe2(p *[2]_C_int, flags int) (err error) {
+ _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func extpread(fd int, p []byte, flags int, offset int64) (n int, err error) {
var _p0 unsafe.Pointer
if len(p) > 0 {
@@ -439,6 +433,22 @@ func ioctl(fd int, req uint, arg uintptr) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
+ var _p0 unsafe.Pointer
+ if len(mib) > 0 {
+ _p0 = unsafe.Pointer(&mib[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func Access(path string, mode uint32) (err error) {
var _p0 *byte
_p0, err = BytePtrFromString(path)
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go
index 92efa1da..d3af083f 100644
--- a/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go
+++ b/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go
@@ -13,17 +13,23 @@ import (
//go:cgo_import_dynamic libc_preadv preadv "libc.so"
//go:cgo_import_dynamic libc_writev writev "libc.so"
//go:cgo_import_dynamic libc_pwritev pwritev "libc.so"
+//go:cgo_import_dynamic libc_accept4 accept4 "libsocket.so"
+//go:cgo_import_dynamic libc_pipe2 pipe2 "libc.so"
//go:linkname procreadv libc_readv
//go:linkname procpreadv libc_preadv
//go:linkname procwritev libc_writev
//go:linkname procpwritev libc_pwritev
+//go:linkname procaccept4 libc_accept4
+//go:linkname procpipe2 libc_pipe2
var (
procreadv,
procpreadv,
procwritev,
- procpwritev syscallFunc
+ procpwritev,
+ procaccept4,
+ procpipe2 syscallFunc
)
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
@@ -85,3 +91,24 @@ func pwritev(fd int, iovs []Iovec, off int64) (n int, err error) {
}
return
}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {
+ r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procaccept4)), 4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe2(p *[2]_C_int, flags int) (err error) {
+ _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procpipe2)), 2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0, 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux.go b/vendor/golang.org/x/sys/unix/zsyscall_linux.go
index df217825..2fbbbe5a 100644
--- a/vendor/golang.org/x/sys/unix/zsyscall_linux.go
+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux.go
@@ -83,6 +83,22 @@ func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error)
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func openat2(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall6(SYS_OPENAT2, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(open_how)), uintptr(size), 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
n = int(r0)
@@ -1821,6 +1837,21 @@ func faccessat(dirfd int, path string, mode uint32) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func Faccessat2(dirfd int, path string, mode uint32, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_FACCESSAT2, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) {
var _p0 *byte
_p0, err = BytePtrFromString(pathname)
@@ -1847,6 +1878,52 @@ func openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error)
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func ProcessVMReadv(pid int, localIov []Iovec, remoteIov []RemoteIovec, flags uint) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(localIov) > 0 {
+ _p0 = unsafe.Pointer(&localIov[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ var _p1 unsafe.Pointer
+ if len(remoteIov) > 0 {
+ _p1 = unsafe.Pointer(&remoteIov[0])
+ } else {
+ _p1 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_PROCESS_VM_READV, uintptr(pid), uintptr(_p0), uintptr(len(localIov)), uintptr(_p1), uintptr(len(remoteIov)), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ProcessVMWritev(pid int, localIov []Iovec, remoteIov []RemoteIovec, flags uint) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(localIov) > 0 {
+ _p0 = unsafe.Pointer(&localIov[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ var _p1 unsafe.Pointer
+ if len(remoteIov) > 0 {
+ _p1 = unsafe.Pointer(&remoteIov[0])
+ } else {
+ _p1 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_PROCESS_VM_WRITEV, uintptr(pid), uintptr(_p0), uintptr(len(localIov)), uintptr(_p1), uintptr(len(remoteIov)), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func pipe2(p *[2]_C_int, flags int) (err error) {
_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
if e1 != 0 {
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_11.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go
similarity index 86%
rename from vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_11.go
rename to vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go
index 8d39a09f..ec6bd5bb 100644
--- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_11.go
+++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go
@@ -1,7 +1,7 @@
-// go run mksyscall.go -tags darwin,arm64,!go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_arm64.1_11.go syscall_darwin_arm64.go
+// go run mksyscall.go -openbsd -tags openbsd,mips64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_mips64.go
// Code generated by the command above; see README.md. DO NOT EDIT.
-// +build darwin,arm64,!go1.12
+// +build openbsd,mips64
package unix
@@ -350,8 +350,8 @@ func Munlockall() (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
- _, _, e1 := Syscall6(SYS_GETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
+func pipe2(p *[2]_C_int, flags int) (err error) {
+ _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -360,154 +360,15 @@ func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintp
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func pipe() (r int, w int, err error) {
- r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
- r = int(r0)
- w = int(r1)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- var _p1 *byte
- _p1, err = BytePtrFromString(attr)
- if err != nil {
- return
- }
- r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))
- sz = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(attr)
- if err != nil {
- return
- }
- r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))
- sz = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- var _p1 *byte
- _p1, err = BytePtrFromString(attr)
- if err != nil {
- return
- }
- _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(attr)
- if err != nil {
- return
- }
- _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func removexattr(path string, attr string, options int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- var _p1 *byte
- _p1, err = BytePtrFromString(attr)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func fremovexattr(fd int, attr string, options int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(attr)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func listxattr(path string, dest *byte, size int, options int) (sz int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- r0, _, e1 := Syscall6(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)
- sz = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) {
- r0, _, e1 := Syscall6(SYS_FLISTXATTR, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)
- sz = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
+func Getdents(fd int, buf []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
}
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
- _, _, e1 := Syscall6(SYS_SETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
+ r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
+ n = int(r0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -516,19 +377,15 @@ func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintp
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func fcntl(fd int, cmd int, arg int) (val int, err error) {
- r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
- val = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
+func Getcwd(buf []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
}
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func kill(pid int, signum int, posix int) (err error) {
- _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix))
+ r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
+ n = int(r0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -554,7 +411,7 @@ func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr)
} else {
_p0 = unsafe.Pointer(&_zero)
}
- _, _, e1 := Syscall6(SYS_SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
+ _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
if e1 != 0 {
err = errnoErr(e1)
}
@@ -563,8 +420,9 @@ func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr)
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) {
- _, _, e1 := Syscall6(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags))
+func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
+ r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
+ n = int(r0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -704,18 +562,8 @@ func Dup2(from int, to int) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Exchangedata(path1 string, path2 string, options int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path1)
- if err != nil {
- return
- }
- var _p1 *byte
- _p1, err = BytePtrFromString(path2)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_EXCHANGEDATA, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
+func Dup3(from int, to int, flags int) (err error) {
+ _, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags))
if e1 != 0 {
err = errnoErr(e1)
}
@@ -837,8 +685,8 @@ func Fpathconf(fd int, name int) (val int, err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Fsync(fd int) (err error) {
- _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+func Fstat(fd int, stat *Stat_t) (err error) {
+ _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -847,8 +695,33 @@ func Fsync(fd int) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Ftruncate(fd int, length int64) (err error) {
- _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)
+func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstatfs(fd int, stat *Statfs_t) (err error) {
+ _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -857,9 +730,11 @@ func Ftruncate(fd int, length int64) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Getdtablesize() (size int) {
- r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
- size = int(r0)
+func Ftruncate(fd int, length int64) (err error) {
+ _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
return
}
@@ -945,6 +820,17 @@ func Getrlimit(which int, lim *Rlimit) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func Getrtable() (rtable int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETRTABLE, 0, 0, 0)
+ rtable = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func Getrusage(who int, rusage *Rusage) (err error) {
_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
if e1 != 0 {
@@ -966,8 +852,8 @@ func Getsid(pid int) (sid int, err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Gettimeofday(tp *Timeval) (err error) {
- _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
+func Gettimeofday(tv *Timeval) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -985,13 +871,23 @@ func Getuid() (uid int) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
func Issetugid() (tainted bool) {
- r0, _, _ := RawSyscall(SYS_ISSETUGID, 0, 0, 0)
+ r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)
tainted = bool(r0 != 0)
return
}
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func Kill(pid int, signum syscall.Signal) (err error) {
+ _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func Kqueue() (fd int, err error) {
r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
fd = int(r0)
@@ -1068,6 +964,21 @@ func Listen(s int, backlog int) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func Lstat(path string, stat *Stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func Mkdir(path string, mode uint32) (err error) {
var _p0 *byte
_p0, err = BytePtrFromString(path)
@@ -1113,6 +1024,21 @@ func Mkfifo(path string, mode uint32) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func Mkfifoat(dirfd int, path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func Mknod(path string, mode uint32, dev int) (err error) {
var _p0 *byte
_p0, err = BytePtrFromString(path)
@@ -1128,6 +1054,31 @@ func Mknod(path string, mode uint32, dev int) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
+ _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func Open(path string, mode int, perm uint32) (fd int, err error) {
var _p0 *byte
_p0, err = BytePtrFromString(path)
@@ -1183,7 +1134,7 @@ func Pread(fd int, p []byte, offset int64) (n int, err error) {
} else {
_p0 = unsafe.Pointer(&_zero)
}
- r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
+ r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0)
n = int(r0)
if e1 != 0 {
err = errnoErr(e1)
@@ -1200,7 +1151,7 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
} else {
_p0 = unsafe.Pointer(&_zero)
}
- r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
+ r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0)
n = int(r0)
if e1 != 0 {
err = errnoErr(e1)
@@ -1342,7 +1293,7 @@ func Rmdir(path string) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
- r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
+ r0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0)
newoffset = int64(r0)
if e1 != 0 {
err = errnoErr(e1)
@@ -1364,7 +1315,7 @@ func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
func Setegid(egid int) (err error) {
- _, _, e1 := Syscall(SYS_SETEGID, uintptr(egid), 0, 0)
+ _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -1428,8 +1379,8 @@ func Setpriority(which int, who int, prio int) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Setprivexec(flag int) (err error) {
- _, _, e1 := Syscall(SYS_SETPRIVEXEC, uintptr(flag), 0, 0)
+func Setregid(rgid int, egid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -1438,8 +1389,8 @@ func Setprivexec(flag int) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Setregid(rgid int, egid int) (err error) {
- _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
+func Setreuid(ruid int, euid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -1448,8 +1399,18 @@ func Setregid(rgid int, egid int) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Setreuid(ruid int, euid int) (err error) {
- _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
+func Setresgid(rgid int, egid int, sgid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresuid(ruid int, euid int, suid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))
if e1 != 0 {
err = errnoErr(e1)
}
@@ -1468,6 +1429,16 @@ func Setrlimit(which int, lim *Rlimit) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func Setrtable(rtable int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRTABLE, uintptr(rtable), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func Setsid() (pid int, err error) {
r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
pid = int(r0)
@@ -1499,6 +1470,36 @@ func Setuid(uid int) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func Stat(path string, stat *Stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Statfs(path string, stat *Statfs_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func Symlink(path string, link string) (err error) {
var _p0 *byte
_p0, err = BytePtrFromString(path)
@@ -1555,7 +1556,7 @@ func Truncate(path string, length int64) (err error) {
if err != nil {
return
}
- _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
+ _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length))
if e1 != 0 {
err = errnoErr(e1)
}
@@ -1572,21 +1573,6 @@ func Umask(newmask int) (oldmask int) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Undelete(path string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
func Unlink(path string) (err error) {
var _p0 *byte
_p0, err = BytePtrFromString(path)
@@ -1650,7 +1636,7 @@ func write(fd int, p []byte) (n int, err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {
- r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))
+ r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0)
ret = uintptr(r0)
if e1 != 0 {
err = errnoErr(e1)
@@ -1692,89 +1678,13 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Fstat(fd int, stat *Stat_t) (err error) {
- _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
+func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
var _p0 *byte
_p0, err = BytePtrFromString(path)
if err != nil {
return
}
- _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Fstatfs(fd int, stat *Statfs_t) (err error) {
- _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) {
- r0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(buf), uintptr(size), uintptr(flags))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Lstat(path string, stat *Stat_t) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Stat(path string, stat *Stat_t) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Statfs(path string, stat *Statfs_t) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
if e1 != 0 {
err = errnoErr(e1)
}
diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_mips64.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_mips64.go
new file mode 100644
index 00000000..aca34b34
--- /dev/null
+++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_mips64.go
@@ -0,0 +1,279 @@
+// go run mksysctl_openbsd.go
+// Code generated by the command above; DO NOT EDIT.
+
+// +build mips64,openbsd
+
+package unix
+
+type mibentry struct {
+ ctlname string
+ ctloid []_C_int
+}
+
+var sysctlMib = []mibentry{
+ {"ddb.console", []_C_int{9, 6}},
+ {"ddb.log", []_C_int{9, 7}},
+ {"ddb.max_line", []_C_int{9, 3}},
+ {"ddb.max_width", []_C_int{9, 2}},
+ {"ddb.panic", []_C_int{9, 5}},
+ {"ddb.profile", []_C_int{9, 9}},
+ {"ddb.radix", []_C_int{9, 1}},
+ {"ddb.tab_stop_width", []_C_int{9, 4}},
+ {"ddb.trigger", []_C_int{9, 8}},
+ {"fs.posix.setuid", []_C_int{3, 1, 1}},
+ {"hw.allowpowerdown", []_C_int{6, 22}},
+ {"hw.byteorder", []_C_int{6, 4}},
+ {"hw.cpuspeed", []_C_int{6, 12}},
+ {"hw.diskcount", []_C_int{6, 10}},
+ {"hw.disknames", []_C_int{6, 8}},
+ {"hw.diskstats", []_C_int{6, 9}},
+ {"hw.machine", []_C_int{6, 1}},
+ {"hw.model", []_C_int{6, 2}},
+ {"hw.ncpu", []_C_int{6, 3}},
+ {"hw.ncpufound", []_C_int{6, 21}},
+ {"hw.ncpuonline", []_C_int{6, 25}},
+ {"hw.pagesize", []_C_int{6, 7}},
+ {"hw.perfpolicy", []_C_int{6, 23}},
+ {"hw.physmem", []_C_int{6, 19}},
+ {"hw.product", []_C_int{6, 15}},
+ {"hw.serialno", []_C_int{6, 17}},
+ {"hw.setperf", []_C_int{6, 13}},
+ {"hw.smt", []_C_int{6, 24}},
+ {"hw.usermem", []_C_int{6, 20}},
+ {"hw.uuid", []_C_int{6, 18}},
+ {"hw.vendor", []_C_int{6, 14}},
+ {"hw.version", []_C_int{6, 16}},
+ {"kern.allowdt", []_C_int{1, 65}},
+ {"kern.allowkmem", []_C_int{1, 52}},
+ {"kern.argmax", []_C_int{1, 8}},
+ {"kern.audio", []_C_int{1, 84}},
+ {"kern.boottime", []_C_int{1, 21}},
+ {"kern.bufcachepercent", []_C_int{1, 72}},
+ {"kern.ccpu", []_C_int{1, 45}},
+ {"kern.clockrate", []_C_int{1, 12}},
+ {"kern.consbuf", []_C_int{1, 83}},
+ {"kern.consbufsize", []_C_int{1, 82}},
+ {"kern.consdev", []_C_int{1, 75}},
+ {"kern.cp_time", []_C_int{1, 40}},
+ {"kern.cp_time2", []_C_int{1, 71}},
+ {"kern.cpustats", []_C_int{1, 85}},
+ {"kern.domainname", []_C_int{1, 22}},
+ {"kern.file", []_C_int{1, 73}},
+ {"kern.forkstat", []_C_int{1, 42}},
+ {"kern.fscale", []_C_int{1, 46}},
+ {"kern.fsync", []_C_int{1, 33}},
+ {"kern.global_ptrace", []_C_int{1, 81}},
+ {"kern.hostid", []_C_int{1, 11}},
+ {"kern.hostname", []_C_int{1, 10}},
+ {"kern.intrcnt.nintrcnt", []_C_int{1, 63, 1}},
+ {"kern.job_control", []_C_int{1, 19}},
+ {"kern.malloc.buckets", []_C_int{1, 39, 1}},
+ {"kern.malloc.kmemnames", []_C_int{1, 39, 3}},
+ {"kern.maxclusters", []_C_int{1, 67}},
+ {"kern.maxfiles", []_C_int{1, 7}},
+ {"kern.maxlocksperuid", []_C_int{1, 70}},
+ {"kern.maxpartitions", []_C_int{1, 23}},
+ {"kern.maxproc", []_C_int{1, 6}},
+ {"kern.maxthread", []_C_int{1, 25}},
+ {"kern.maxvnodes", []_C_int{1, 5}},
+ {"kern.mbstat", []_C_int{1, 59}},
+ {"kern.msgbuf", []_C_int{1, 48}},
+ {"kern.msgbufsize", []_C_int{1, 38}},
+ {"kern.nchstats", []_C_int{1, 41}},
+ {"kern.netlivelocks", []_C_int{1, 76}},
+ {"kern.nfiles", []_C_int{1, 56}},
+ {"kern.ngroups", []_C_int{1, 18}},
+ {"kern.nosuidcoredump", []_C_int{1, 32}},
+ {"kern.nprocs", []_C_int{1, 47}},
+ {"kern.nselcoll", []_C_int{1, 43}},
+ {"kern.nthreads", []_C_int{1, 26}},
+ {"kern.numvnodes", []_C_int{1, 58}},
+ {"kern.osrelease", []_C_int{1, 2}},
+ {"kern.osrevision", []_C_int{1, 3}},
+ {"kern.ostype", []_C_int{1, 1}},
+ {"kern.osversion", []_C_int{1, 27}},
+ {"kern.pfstatus", []_C_int{1, 86}},
+ {"kern.pool_debug", []_C_int{1, 77}},
+ {"kern.posix1version", []_C_int{1, 17}},
+ {"kern.proc", []_C_int{1, 66}},
+ {"kern.rawpartition", []_C_int{1, 24}},
+ {"kern.saved_ids", []_C_int{1, 20}},
+ {"kern.securelevel", []_C_int{1, 9}},
+ {"kern.seminfo", []_C_int{1, 61}},
+ {"kern.shminfo", []_C_int{1, 62}},
+ {"kern.somaxconn", []_C_int{1, 28}},
+ {"kern.sominconn", []_C_int{1, 29}},
+ {"kern.splassert", []_C_int{1, 54}},
+ {"kern.stackgap_random", []_C_int{1, 50}},
+ {"kern.sysvipc_info", []_C_int{1, 51}},
+ {"kern.sysvmsg", []_C_int{1, 34}},
+ {"kern.sysvsem", []_C_int{1, 35}},
+ {"kern.sysvshm", []_C_int{1, 36}},
+ {"kern.timecounter.choice", []_C_int{1, 69, 4}},
+ {"kern.timecounter.hardware", []_C_int{1, 69, 3}},
+ {"kern.timecounter.tick", []_C_int{1, 69, 1}},
+ {"kern.timecounter.timestepwarnings", []_C_int{1, 69, 2}},
+ {"kern.timeout_stats", []_C_int{1, 87}},
+ {"kern.tty.tk_cancc", []_C_int{1, 44, 4}},
+ {"kern.tty.tk_nin", []_C_int{1, 44, 1}},
+ {"kern.tty.tk_nout", []_C_int{1, 44, 2}},
+ {"kern.tty.tk_rawcc", []_C_int{1, 44, 3}},
+ {"kern.tty.ttyinfo", []_C_int{1, 44, 5}},
+ {"kern.ttycount", []_C_int{1, 57}},
+ {"kern.utc_offset", []_C_int{1, 88}},
+ {"kern.version", []_C_int{1, 4}},
+ {"kern.watchdog.auto", []_C_int{1, 64, 2}},
+ {"kern.watchdog.period", []_C_int{1, 64, 1}},
+ {"kern.witnesswatch", []_C_int{1, 53}},
+ {"kern.wxabort", []_C_int{1, 74}},
+ {"net.bpf.bufsize", []_C_int{4, 31, 1}},
+ {"net.bpf.maxbufsize", []_C_int{4, 31, 2}},
+ {"net.inet.ah.enable", []_C_int{4, 2, 51, 1}},
+ {"net.inet.ah.stats", []_C_int{4, 2, 51, 2}},
+ {"net.inet.carp.allow", []_C_int{4, 2, 112, 1}},
+ {"net.inet.carp.log", []_C_int{4, 2, 112, 3}},
+ {"net.inet.carp.preempt", []_C_int{4, 2, 112, 2}},
+ {"net.inet.carp.stats", []_C_int{4, 2, 112, 4}},
+ {"net.inet.divert.recvspace", []_C_int{4, 2, 258, 1}},
+ {"net.inet.divert.sendspace", []_C_int{4, 2, 258, 2}},
+ {"net.inet.divert.stats", []_C_int{4, 2, 258, 3}},
+ {"net.inet.esp.enable", []_C_int{4, 2, 50, 1}},
+ {"net.inet.esp.stats", []_C_int{4, 2, 50, 4}},
+ {"net.inet.esp.udpencap", []_C_int{4, 2, 50, 2}},
+ {"net.inet.esp.udpencap_port", []_C_int{4, 2, 50, 3}},
+ {"net.inet.etherip.allow", []_C_int{4, 2, 97, 1}},
+ {"net.inet.etherip.stats", []_C_int{4, 2, 97, 2}},
+ {"net.inet.gre.allow", []_C_int{4, 2, 47, 1}},
+ {"net.inet.gre.wccp", []_C_int{4, 2, 47, 2}},
+ {"net.inet.icmp.bmcastecho", []_C_int{4, 2, 1, 2}},
+ {"net.inet.icmp.errppslimit", []_C_int{4, 2, 1, 3}},
+ {"net.inet.icmp.maskrepl", []_C_int{4, 2, 1, 1}},
+ {"net.inet.icmp.rediraccept", []_C_int{4, 2, 1, 4}},
+ {"net.inet.icmp.redirtimeout", []_C_int{4, 2, 1, 5}},
+ {"net.inet.icmp.stats", []_C_int{4, 2, 1, 7}},
+ {"net.inet.icmp.tstamprepl", []_C_int{4, 2, 1, 6}},
+ {"net.inet.igmp.stats", []_C_int{4, 2, 2, 1}},
+ {"net.inet.ip.arpdown", []_C_int{4, 2, 0, 40}},
+ {"net.inet.ip.arpqueued", []_C_int{4, 2, 0, 36}},
+ {"net.inet.ip.arptimeout", []_C_int{4, 2, 0, 39}},
+ {"net.inet.ip.encdebug", []_C_int{4, 2, 0, 12}},
+ {"net.inet.ip.forwarding", []_C_int{4, 2, 0, 1}},
+ {"net.inet.ip.ifq.congestion", []_C_int{4, 2, 0, 30, 4}},
+ {"net.inet.ip.ifq.drops", []_C_int{4, 2, 0, 30, 3}},
+ {"net.inet.ip.ifq.len", []_C_int{4, 2, 0, 30, 1}},
+ {"net.inet.ip.ifq.maxlen", []_C_int{4, 2, 0, 30, 2}},
+ {"net.inet.ip.maxqueue", []_C_int{4, 2, 0, 11}},
+ {"net.inet.ip.mforwarding", []_C_int{4, 2, 0, 31}},
+ {"net.inet.ip.mrtmfc", []_C_int{4, 2, 0, 37}},
+ {"net.inet.ip.mrtproto", []_C_int{4, 2, 0, 34}},
+ {"net.inet.ip.mrtstats", []_C_int{4, 2, 0, 35}},
+ {"net.inet.ip.mrtvif", []_C_int{4, 2, 0, 38}},
+ {"net.inet.ip.mtu", []_C_int{4, 2, 0, 4}},
+ {"net.inet.ip.mtudisc", []_C_int{4, 2, 0, 27}},
+ {"net.inet.ip.mtudisctimeout", []_C_int{4, 2, 0, 28}},
+ {"net.inet.ip.multipath", []_C_int{4, 2, 0, 32}},
+ {"net.inet.ip.portfirst", []_C_int{4, 2, 0, 7}},
+ {"net.inet.ip.porthifirst", []_C_int{4, 2, 0, 9}},
+ {"net.inet.ip.porthilast", []_C_int{4, 2, 0, 10}},
+ {"net.inet.ip.portlast", []_C_int{4, 2, 0, 8}},
+ {"net.inet.ip.redirect", []_C_int{4, 2, 0, 2}},
+ {"net.inet.ip.sourceroute", []_C_int{4, 2, 0, 5}},
+ {"net.inet.ip.stats", []_C_int{4, 2, 0, 33}},
+ {"net.inet.ip.ttl", []_C_int{4, 2, 0, 3}},
+ {"net.inet.ipcomp.enable", []_C_int{4, 2, 108, 1}},
+ {"net.inet.ipcomp.stats", []_C_int{4, 2, 108, 2}},
+ {"net.inet.ipip.allow", []_C_int{4, 2, 4, 1}},
+ {"net.inet.ipip.stats", []_C_int{4, 2, 4, 2}},
+ {"net.inet.pfsync.stats", []_C_int{4, 2, 240, 1}},
+ {"net.inet.tcp.ackonpush", []_C_int{4, 2, 6, 13}},
+ {"net.inet.tcp.always_keepalive", []_C_int{4, 2, 6, 22}},
+ {"net.inet.tcp.baddynamic", []_C_int{4, 2, 6, 6}},
+ {"net.inet.tcp.drop", []_C_int{4, 2, 6, 19}},
+ {"net.inet.tcp.ecn", []_C_int{4, 2, 6, 14}},
+ {"net.inet.tcp.ident", []_C_int{4, 2, 6, 9}},
+ {"net.inet.tcp.keepidle", []_C_int{4, 2, 6, 3}},
+ {"net.inet.tcp.keepinittime", []_C_int{4, 2, 6, 2}},
+ {"net.inet.tcp.keepintvl", []_C_int{4, 2, 6, 4}},
+ {"net.inet.tcp.mssdflt", []_C_int{4, 2, 6, 11}},
+ {"net.inet.tcp.reasslimit", []_C_int{4, 2, 6, 18}},
+ {"net.inet.tcp.rfc1323", []_C_int{4, 2, 6, 1}},
+ {"net.inet.tcp.rfc3390", []_C_int{4, 2, 6, 17}},
+ {"net.inet.tcp.rootonly", []_C_int{4, 2, 6, 24}},
+ {"net.inet.tcp.rstppslimit", []_C_int{4, 2, 6, 12}},
+ {"net.inet.tcp.sack", []_C_int{4, 2, 6, 10}},
+ {"net.inet.tcp.sackholelimit", []_C_int{4, 2, 6, 20}},
+ {"net.inet.tcp.slowhz", []_C_int{4, 2, 6, 5}},
+ {"net.inet.tcp.stats", []_C_int{4, 2, 6, 21}},
+ {"net.inet.tcp.synbucketlimit", []_C_int{4, 2, 6, 16}},
+ {"net.inet.tcp.syncachelimit", []_C_int{4, 2, 6, 15}},
+ {"net.inet.tcp.synhashsize", []_C_int{4, 2, 6, 25}},
+ {"net.inet.tcp.synuselimit", []_C_int{4, 2, 6, 23}},
+ {"net.inet.udp.baddynamic", []_C_int{4, 2, 17, 2}},
+ {"net.inet.udp.checksum", []_C_int{4, 2, 17, 1}},
+ {"net.inet.udp.recvspace", []_C_int{4, 2, 17, 3}},
+ {"net.inet.udp.rootonly", []_C_int{4, 2, 17, 6}},
+ {"net.inet.udp.sendspace", []_C_int{4, 2, 17, 4}},
+ {"net.inet.udp.stats", []_C_int{4, 2, 17, 5}},
+ {"net.inet6.divert.recvspace", []_C_int{4, 24, 86, 1}},
+ {"net.inet6.divert.sendspace", []_C_int{4, 24, 86, 2}},
+ {"net.inet6.divert.stats", []_C_int{4, 24, 86, 3}},
+ {"net.inet6.icmp6.errppslimit", []_C_int{4, 24, 30, 14}},
+ {"net.inet6.icmp6.mtudisc_hiwat", []_C_int{4, 24, 30, 16}},
+ {"net.inet6.icmp6.mtudisc_lowat", []_C_int{4, 24, 30, 17}},
+ {"net.inet6.icmp6.nd6_debug", []_C_int{4, 24, 30, 18}},
+ {"net.inet6.icmp6.nd6_delay", []_C_int{4, 24, 30, 8}},
+ {"net.inet6.icmp6.nd6_maxnudhint", []_C_int{4, 24, 30, 15}},
+ {"net.inet6.icmp6.nd6_mmaxtries", []_C_int{4, 24, 30, 10}},
+ {"net.inet6.icmp6.nd6_umaxtries", []_C_int{4, 24, 30, 9}},
+ {"net.inet6.icmp6.redirtimeout", []_C_int{4, 24, 30, 3}},
+ {"net.inet6.ip6.auto_flowlabel", []_C_int{4, 24, 17, 17}},
+ {"net.inet6.ip6.dad_count", []_C_int{4, 24, 17, 16}},
+ {"net.inet6.ip6.dad_pending", []_C_int{4, 24, 17, 49}},
+ {"net.inet6.ip6.defmcasthlim", []_C_int{4, 24, 17, 18}},
+ {"net.inet6.ip6.forwarding", []_C_int{4, 24, 17, 1}},
+ {"net.inet6.ip6.forwsrcrt", []_C_int{4, 24, 17, 5}},
+ {"net.inet6.ip6.hdrnestlimit", []_C_int{4, 24, 17, 15}},
+ {"net.inet6.ip6.hlim", []_C_int{4, 24, 17, 3}},
+ {"net.inet6.ip6.log_interval", []_C_int{4, 24, 17, 14}},
+ {"net.inet6.ip6.maxdynroutes", []_C_int{4, 24, 17, 48}},
+ {"net.inet6.ip6.maxfragpackets", []_C_int{4, 24, 17, 9}},
+ {"net.inet6.ip6.maxfrags", []_C_int{4, 24, 17, 41}},
+ {"net.inet6.ip6.mforwarding", []_C_int{4, 24, 17, 42}},
+ {"net.inet6.ip6.mrtmfc", []_C_int{4, 24, 17, 53}},
+ {"net.inet6.ip6.mrtmif", []_C_int{4, 24, 17, 52}},
+ {"net.inet6.ip6.mrtproto", []_C_int{4, 24, 17, 8}},
+ {"net.inet6.ip6.mtudisctimeout", []_C_int{4, 24, 17, 50}},
+ {"net.inet6.ip6.multicast_mtudisc", []_C_int{4, 24, 17, 44}},
+ {"net.inet6.ip6.multipath", []_C_int{4, 24, 17, 43}},
+ {"net.inet6.ip6.neighborgcthresh", []_C_int{4, 24, 17, 45}},
+ {"net.inet6.ip6.redirect", []_C_int{4, 24, 17, 2}},
+ {"net.inet6.ip6.soiikey", []_C_int{4, 24, 17, 54}},
+ {"net.inet6.ip6.sourcecheck", []_C_int{4, 24, 17, 10}},
+ {"net.inet6.ip6.sourcecheck_logint", []_C_int{4, 24, 17, 11}},
+ {"net.inet6.ip6.use_deprecated", []_C_int{4, 24, 17, 21}},
+ {"net.key.sadb_dump", []_C_int{4, 30, 1}},
+ {"net.key.spd_dump", []_C_int{4, 30, 2}},
+ {"net.mpls.ifq.congestion", []_C_int{4, 33, 3, 4}},
+ {"net.mpls.ifq.drops", []_C_int{4, 33, 3, 3}},
+ {"net.mpls.ifq.len", []_C_int{4, 33, 3, 1}},
+ {"net.mpls.ifq.maxlen", []_C_int{4, 33, 3, 2}},
+ {"net.mpls.mapttl_ip", []_C_int{4, 33, 5}},
+ {"net.mpls.mapttl_ip6", []_C_int{4, 33, 6}},
+ {"net.mpls.ttl", []_C_int{4, 33, 2}},
+ {"net.pflow.stats", []_C_int{4, 34, 1}},
+ {"net.pipex.enable", []_C_int{4, 35, 1}},
+ {"vm.anonmin", []_C_int{2, 7}},
+ {"vm.loadavg", []_C_int{2, 2}},
+ {"vm.malloc_conf", []_C_int{2, 12}},
+ {"vm.maxslp", []_C_int{2, 10}},
+ {"vm.nkmempages", []_C_int{2, 6}},
+ {"vm.psstrings", []_C_int{2, 3}},
+ {"vm.swapencrypt.enable", []_C_int{2, 5, 0}},
+ {"vm.swapencrypt.keyscreated", []_C_int{2, 5, 1}},
+ {"vm.swapencrypt.keysdeleted", []_C_int{2, 5, 2}},
+ {"vm.uspace", []_C_int{2, 11}},
+ {"vm.uvmexp", []_C_int{2, 4}},
+ {"vm.vmmeter", []_C_int{2, 1}},
+ {"vm.vnodemin", []_C_int{2, 9}},
+ {"vm.vtextmin", []_C_int{2, 8}},
+}
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go
index f3361453..ad62324c 100644
--- a/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go
+++ b/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go
@@ -5,6 +5,7 @@
package unix
+// Deprecated: Use libSystem wrappers instead of direct syscalls.
const (
SYS_SYSCALL = 0
SYS_EXIT = 1
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go
index 654dd3da..a2fc91d6 100644
--- a/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go
+++ b/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go
@@ -5,6 +5,7 @@
package unix
+// Deprecated: Use libSystem wrappers instead of direct syscalls.
const (
SYS_SYSCALL = 0
SYS_EXIT = 1
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go
index 103a72ed..20d7808a 100644
--- a/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go
+++ b/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go
@@ -5,6 +5,7 @@
package unix
+// Deprecated: Use libSystem wrappers instead of direct syscalls.
const (
SYS_SYSCALL = 0
SYS_EXIT = 1
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go
index 7ab2130b..527b9588 100644
--- a/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go
+++ b/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go
@@ -5,6 +5,7 @@
package unix
+// Deprecated: Use libSystem wrappers instead of direct syscalls.
const (
SYS_SYSCALL = 0
SYS_EXIT = 1
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go
index 464c9a98..9912c6ee 100644
--- a/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go
+++ b/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go
@@ -6,129 +6,125 @@
package unix
const (
- // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int
- SYS_EXIT = 1 // { void exit(int rval); }
- SYS_FORK = 2 // { int fork(void); }
- SYS_READ = 3 // { ssize_t read(int fd, void *buf, size_t nbyte); }
- SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, size_t nbyte); }
- SYS_OPEN = 5 // { int open(char *path, int flags, int mode); }
- SYS_CLOSE = 6 // { int close(int fd); }
- SYS_WAIT4 = 7 // { int wait4(int pid, int *status, int options, struct rusage *rusage); } wait4 wait_args int
- SYS_LINK = 9 // { int link(char *path, char *link); }
- SYS_UNLINK = 10 // { int unlink(char *path); }
- SYS_CHDIR = 12 // { int chdir(char *path); }
- SYS_FCHDIR = 13 // { int fchdir(int fd); }
- SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); }
- SYS_CHMOD = 15 // { int chmod(char *path, int mode); }
- SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); }
- SYS_OBREAK = 17 // { int obreak(char *nsize); } break obreak_args int
- SYS_GETFSSTAT = 18 // { int getfsstat(struct statfs *buf, long bufsize, int flags); }
- SYS_GETPID = 20 // { pid_t getpid(void); }
- SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, caddr_t data); }
- SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); }
- SYS_SETUID = 23 // { int setuid(uid_t uid); }
- SYS_GETUID = 24 // { uid_t getuid(void); }
- SYS_GETEUID = 25 // { uid_t geteuid(void); }
- SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, caddr_t addr, int data); }
- SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, int flags); }
- SYS_SENDMSG = 28 // { int sendmsg(int s, caddr_t msg, int flags); }
- SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, size_t len, int flags, caddr_t from, int *fromlenaddr); }
- SYS_ACCEPT = 30 // { int accept(int s, caddr_t name, int *anamelen); }
- SYS_GETPEERNAME = 31 // { int getpeername(int fdes, caddr_t asa, int *alen); }
- SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, caddr_t asa, int *alen); }
- SYS_ACCESS = 33 // { int access(char *path, int flags); }
- SYS_CHFLAGS = 34 // { int chflags(char *path, int flags); }
- SYS_FCHFLAGS = 35 // { int fchflags(int fd, int flags); }
- SYS_SYNC = 36 // { int sync(void); }
- SYS_KILL = 37 // { int kill(int pid, int signum); }
- SYS_GETPPID = 39 // { pid_t getppid(void); }
- SYS_DUP = 41 // { int dup(int fd); }
- SYS_PIPE = 42 // { int pipe(void); }
- SYS_GETEGID = 43 // { gid_t getegid(void); }
- SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); }
- SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, int pid); }
- SYS_GETGID = 47 // { gid_t getgid(void); }
- SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int namelen); }
- SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); }
- SYS_ACCT = 51 // { int acct(char *path); }
- SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, stack_t *oss); }
- SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, caddr_t data); }
- SYS_REBOOT = 55 // { int reboot(int opt); }
- SYS_REVOKE = 56 // { int revoke(char *path); }
- SYS_SYMLINK = 57 // { int symlink(char *path, char *link); }
- SYS_READLINK = 58 // { int readlink(char *path, char *buf, int count); }
- SYS_EXECVE = 59 // { int execve(char *fname, char **argv, char **envv); }
- SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args int
- SYS_CHROOT = 61 // { int chroot(char *path); }
- SYS_MSYNC = 65 // { int msync(void *addr, size_t len, int flags); }
- SYS_VFORK = 66 // { pid_t vfork(void); }
- SYS_SBRK = 69 // { int sbrk(int incr); }
- SYS_SSTK = 70 // { int sstk(int incr); }
- SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); }
- SYS_MPROTECT = 74 // { int mprotect(void *addr, size_t len, int prot); }
- SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); }
- SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, char *vec); }
- SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); }
- SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, gid_t *gidset); }
- SYS_GETPGRP = 81 // { int getpgrp(void); }
- SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); }
- SYS_SETITIMER = 83 // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); }
- SYS_SWAPON = 85 // { int swapon(char *name); }
- SYS_GETITIMER = 86 // { int getitimer(u_int which, struct itimerval *itv); }
- SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); }
- SYS_DUP2 = 90 // { int dup2(int from, int to); }
- SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); }
- SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }
- SYS_FSYNC = 95 // { int fsync(int fd); }
- SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, int prio); }
- SYS_SOCKET = 97 // { int socket(int domain, int type, int protocol); }
- SYS_CONNECT = 98 // { int connect(int s, caddr_t name, int namelen); }
- SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); }
- SYS_BIND = 104 // { int bind(int s, caddr_t name, int namelen); }
- SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); }
- SYS_LISTEN = 106 // { int listen(int s, int backlog); }
- SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); }
- SYS_GETRUSAGE = 117 // { int getrusage(int who, struct rusage *rusage); }
- SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); }
- SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }
- SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); }
- SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); }
- SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); }
- SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); }
- SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); }
- SYS_SETREGID = 127 // { int setregid(int rgid, int egid); }
- SYS_RENAME = 128 // { int rename(char *from, char *to); }
- SYS_FLOCK = 131 // { int flock(int fd, int how); }
- SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); }
- SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); }
- SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); }
- SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); }
- SYS_MKDIR = 136 // { int mkdir(char *path, int mode); }
- SYS_RMDIR = 137 // { int rmdir(char *path); }
- SYS_UTIMES = 138 // { int utimes(char *path, struct timeval *tptr); }
- SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); }
- SYS_SETSID = 147 // { int setsid(void); }
- SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); }
- SYS_STATFS = 157 // { int statfs(char *path, struct statfs *buf); }
- SYS_FSTATFS = 158 // { int fstatfs(int fd, struct statfs *buf); }
- SYS_GETFH = 161 // { int getfh(char *fname, struct fhandle *fhp); }
- SYS_GETDOMAINNAME = 162 // { int getdomainname(char *domainname, int len); }
- SYS_SETDOMAINNAME = 163 // { int setdomainname(char *domainname, int len); }
- SYS_UNAME = 164 // { int uname(struct utsname *name); }
- SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); }
- SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); }
- SYS_EXTPREAD = 173 // { ssize_t extpread(int fd, void *buf, size_t nbyte, int flags, off_t offset); }
- SYS_EXTPWRITE = 174 // { ssize_t extpwrite(int fd, const void *buf, size_t nbyte, int flags, off_t offset); }
- SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); }
- SYS_SETGID = 181 // { int setgid(gid_t gid); }
- SYS_SETEGID = 182 // { int setegid(gid_t egid); }
- SYS_SETEUID = 183 // { int seteuid(uid_t euid); }
- SYS_PATHCONF = 191 // { int pathconf(char *path, int name); }
- SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); }
- SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int
- SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int
- SYS_MMAP = 197 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, int pad, off_t pos); }
- // SYS_NOSYS = 198; // { int nosys(void); } __syscall __syscall_args int
+ SYS_EXIT = 1 // { void exit(int rval); }
+ SYS_FORK = 2 // { int fork(void); }
+ SYS_READ = 3 // { ssize_t read(int fd, void *buf, size_t nbyte); }
+ SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, size_t nbyte); }
+ SYS_OPEN = 5 // { int open(char *path, int flags, int mode); }
+ SYS_CLOSE = 6 // { int close(int fd); }
+ SYS_WAIT4 = 7 // { int wait4(int pid, int *status, int options, struct rusage *rusage); } wait4 wait_args int
+ // SYS_NOSYS = 8; // { int nosys(void); } __nosys nosys_args int
+ SYS_LINK = 9 // { int link(char *path, char *link); }
+ SYS_UNLINK = 10 // { int unlink(char *path); }
+ SYS_CHDIR = 12 // { int chdir(char *path); }
+ SYS_FCHDIR = 13 // { int fchdir(int fd); }
+ SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); }
+ SYS_CHMOD = 15 // { int chmod(char *path, int mode); }
+ SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); }
+ SYS_OBREAK = 17 // { int obreak(char *nsize); } break obreak_args int
+ SYS_GETFSSTAT = 18 // { int getfsstat(struct statfs *buf, long bufsize, int flags); }
+ SYS_GETPID = 20 // { pid_t getpid(void); }
+ SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, caddr_t data); }
+ SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); }
+ SYS_SETUID = 23 // { int setuid(uid_t uid); }
+ SYS_GETUID = 24 // { uid_t getuid(void); }
+ SYS_GETEUID = 25 // { uid_t geteuid(void); }
+ SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, caddr_t addr, int data); }
+ SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, int flags); }
+ SYS_SENDMSG = 28 // { int sendmsg(int s, caddr_t msg, int flags); }
+ SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, size_t len, int flags, caddr_t from, int *fromlenaddr); }
+ SYS_ACCEPT = 30 // { int accept(int s, caddr_t name, int *anamelen); }
+ SYS_GETPEERNAME = 31 // { int getpeername(int fdes, caddr_t asa, int *alen); }
+ SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, caddr_t asa, int *alen); }
+ SYS_ACCESS = 33 // { int access(char *path, int flags); }
+ SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); }
+ SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); }
+ SYS_SYNC = 36 // { int sync(void); }
+ SYS_KILL = 37 // { int kill(int pid, int signum); }
+ SYS_GETPPID = 39 // { pid_t getppid(void); }
+ SYS_DUP = 41 // { int dup(int fd); }
+ SYS_PIPE = 42 // { int pipe(void); }
+ SYS_GETEGID = 43 // { gid_t getegid(void); }
+ SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, u_long offset, u_int scale); }
+ SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, int pid); }
+ SYS_GETGID = 47 // { gid_t getgid(void); }
+ SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, size_t namelen); }
+ SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); }
+ SYS_ACCT = 51 // { int acct(char *path); }
+ SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, stack_t *oss); }
+ SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, caddr_t data); }
+ SYS_REBOOT = 55 // { int reboot(int opt); }
+ SYS_REVOKE = 56 // { int revoke(char *path); }
+ SYS_SYMLINK = 57 // { int symlink(char *path, char *link); }
+ SYS_READLINK = 58 // { int readlink(char *path, char *buf, int count); }
+ SYS_EXECVE = 59 // { int execve(char *fname, char **argv, char **envv); }
+ SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args int
+ SYS_CHROOT = 61 // { int chroot(char *path); }
+ SYS_MSYNC = 65 // { int msync(void *addr, size_t len, int flags); }
+ SYS_VFORK = 66 // { pid_t vfork(void); }
+ SYS_SBRK = 69 // { caddr_t sbrk(size_t incr); }
+ SYS_SSTK = 70 // { int sstk(size_t incr); }
+ SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); }
+ SYS_MPROTECT = 74 // { int mprotect(void *addr, size_t len, int prot); }
+ SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); }
+ SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, char *vec); }
+ SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); }
+ SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, gid_t *gidset); }
+ SYS_GETPGRP = 81 // { int getpgrp(void); }
+ SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); }
+ SYS_SETITIMER = 83 // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); }
+ SYS_SWAPON = 85 // { int swapon(char *name); }
+ SYS_GETITIMER = 86 // { int getitimer(u_int which, struct itimerval *itv); }
+ SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); }
+ SYS_DUP2 = 90 // { int dup2(int from, int to); }
+ SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); }
+ SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }
+ SYS_FSYNC = 95 // { int fsync(int fd); }
+ SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, int prio); }
+ SYS_SOCKET = 97 // { int socket(int domain, int type, int protocol); }
+ SYS_CONNECT = 98 // { int connect(int s, caddr_t name, int namelen); }
+ SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); }
+ SYS_BIND = 104 // { int bind(int s, caddr_t name, int namelen); }
+ SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); }
+ SYS_LISTEN = 106 // { int listen(int s, int backlog); }
+ SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); }
+ SYS_GETRUSAGE = 117 // { int getrusage(int who, struct rusage *rusage); }
+ SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); }
+ SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }
+ SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); }
+ SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); }
+ SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); }
+ SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); }
+ SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); }
+ SYS_SETREGID = 127 // { int setregid(int rgid, int egid); }
+ SYS_RENAME = 128 // { int rename(char *from, char *to); }
+ SYS_FLOCK = 131 // { int flock(int fd, int how); }
+ SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); }
+ SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); }
+ SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); }
+ SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); }
+ SYS_MKDIR = 136 // { int mkdir(char *path, int mode); }
+ SYS_RMDIR = 137 // { int rmdir(char *path); }
+ SYS_UTIMES = 138 // { int utimes(char *path, struct timeval *tptr); }
+ SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); }
+ SYS_SETSID = 147 // { int setsid(void); }
+ SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); }
+ SYS_STATFS = 157 // { int statfs(char *path, struct statfs *buf); }
+ SYS_FSTATFS = 158 // { int fstatfs(int fd, struct statfs *buf); }
+ SYS_GETFH = 161 // { int getfh(char *fname, struct fhandle *fhp); }
+ SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); }
+ SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); }
+ SYS_EXTPREAD = 173 // { ssize_t extpread(int fd, void *buf, size_t nbyte, int flags, off_t offset); }
+ SYS_EXTPWRITE = 174 // { ssize_t extpwrite(int fd, const void *buf, size_t nbyte, int flags, off_t offset); }
+ SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); }
+ SYS_SETGID = 181 // { int setgid(gid_t gid); }
+ SYS_SETEGID = 182 // { int setegid(gid_t egid); }
+ SYS_SETEUID = 183 // { int seteuid(uid_t euid); }
+ SYS_PATHCONF = 191 // { int pathconf(char *path, int name); }
+ SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); }
+ SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int
+ SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int
+ SYS_MMAP = 197 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, int pad, off_t pos); }
SYS_LSEEK = 199 // { off_t lseek(int fd, int pad, off_t offset, int whence); }
SYS_TRUNCATE = 200 // { int truncate(char *path, int pad, off_t length); }
SYS_FTRUNCATE = 201 // { int ftruncate(int fd, int pad, off_t length); }
@@ -161,8 +157,8 @@ const (
SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); }
SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); }
SYS_LUTIMES = 276 // { int lutimes(char *path, struct timeval *tptr); }
- SYS_EXTPREADV = 289 // { ssize_t extpreadv(int fd, struct iovec *iovp, u_int iovcnt, int flags, off_t offset); }
- SYS_EXTPWRITEV = 290 // { ssize_t extpwritev(int fd, struct iovec *iovp,u_int iovcnt, int flags, off_t offset); }
+ SYS_EXTPREADV = 289 // { ssize_t extpreadv(int fd, const struct iovec *iovp, int iovcnt, int flags, off_t offset); }
+ SYS_EXTPWRITEV = 290 // { ssize_t extpwritev(int fd, const struct iovec *iovp, int iovcnt, int flags, off_t offset); }
SYS_FHSTATFS = 297 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }
SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }
SYS_MODNEXT = 300 // { int modnext(int modid); }
@@ -225,7 +221,7 @@ const (
SYS_KQUEUE = 362 // { int kqueue(void); }
SYS_KEVENT = 363 // { int kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }
SYS_KENV = 390 // { int kenv(int what, const char *name, char *value, int len); }
- SYS_LCHFLAGS = 391 // { int lchflags(char *path, int flags); }
+ SYS_LCHFLAGS = 391 // { int lchflags(const char *path, u_long flags); }
SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); }
SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); }
SYS_VARSYM_SET = 450 // { int varsym_set(int level, const char *name, const char *data); }
@@ -302,7 +298,7 @@ const (
SYS_VMM_GUEST_CTL = 534 // { int vmm_guest_ctl(int op, struct vmm_guest_options *options); }
SYS_VMM_GUEST_SYNC_ADDR = 535 // { int vmm_guest_sync_addr(long *dstaddr, long *srcaddr); }
SYS_PROCCTL = 536 // { int procctl(idtype_t idtype, id_t id, int cmd, void *data); }
- SYS_CHFLAGSAT = 537 // { int chflagsat(int fd, const char *path, int flags, int atflags);}
+ SYS_CHFLAGSAT = 537 // { int chflagsat(int fd, const char *path, u_long flags, int atflags);}
SYS_PIPE2 = 538 // { int pipe2(int *fildes, int flags); }
SYS_UTIMENSAT = 539 // { int utimensat(int fd, const char *path, const struct timespec *ts, int flags); }
SYS_FUTIMENS = 540 // { int futimens(int fd, const struct timespec *ts); }
@@ -312,4 +308,9 @@ const (
SYS_LWP_SETAFFINITY = 544 // { int lwp_setaffinity(pid_t pid, lwpid_t tid, const cpumask_t *mask); }
SYS_LWP_GETAFFINITY = 545 // { int lwp_getaffinity(pid_t pid, lwpid_t tid, cpumask_t *mask); }
SYS_LWP_CREATE2 = 546 // { int lwp_create2(struct lwp_params *params, const cpumask_t *mask); }
+ SYS_GETCPUCLOCKID = 547 // { int getcpuclockid(pid_t pid, lwpid_t lwp_id, clockid_t *clock_id); }
+ SYS_WAIT6 = 548 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); }
+ SYS_LWP_GETNAME = 549 // { int lwp_getname(lwpid_t tid, char *name, size_t len); }
+ SYS_GETRANDOM = 550 // { ssize_t getrandom(void *buf, size_t len, unsigned flags); }
+ SYS___REALPATH = 551 // { ssize_t __realpath(const char *path, char *buf, size_t len); }
)
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go
index 54559a89..0f5a3f69 100644
--- a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go
+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go
@@ -431,6 +431,8 @@ const (
SYS_FSPICK = 433
SYS_PIDFD_OPEN = 434
SYS_CLONE3 = 435
+ SYS_CLOSE_RANGE = 436
SYS_OPENAT2 = 437
SYS_PIDFD_GETFD = 438
+ SYS_FACCESSAT2 = 439
)
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go
index 054a741b..36d5219e 100644
--- a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go
+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go
@@ -353,6 +353,8 @@ const (
SYS_FSPICK = 433
SYS_PIDFD_OPEN = 434
SYS_CLONE3 = 435
+ SYS_CLOSE_RANGE = 436
SYS_OPENAT2 = 437
SYS_PIDFD_GETFD = 438
+ SYS_FACCESSAT2 = 439
)
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go
index 307f2ba1..3622ba14 100644
--- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go
+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go
@@ -395,6 +395,8 @@ const (
SYS_FSPICK = 433
SYS_PIDFD_OPEN = 434
SYS_CLONE3 = 435
+ SYS_CLOSE_RANGE = 436
SYS_OPENAT2 = 437
SYS_PIDFD_GETFD = 438
+ SYS_FACCESSAT2 = 439
)
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go
index e9404dd5..6193c3dc 100644
--- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go
+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go
@@ -298,6 +298,8 @@ const (
SYS_FSPICK = 433
SYS_PIDFD_OPEN = 434
SYS_CLONE3 = 435
+ SYS_CLOSE_RANGE = 436
SYS_OPENAT2 = 437
SYS_PIDFD_GETFD = 438
+ SYS_FACCESSAT2 = 439
)
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go
index 68bb6d29..640b9743 100644
--- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go
+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go
@@ -416,6 +416,8 @@ const (
SYS_FSPICK = 4433
SYS_PIDFD_OPEN = 4434
SYS_CLONE3 = 4435
+ SYS_CLOSE_RANGE = 4436
SYS_OPENAT2 = 4437
SYS_PIDFD_GETFD = 4438
+ SYS_FACCESSAT2 = 4439
)
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go
index 4e525118..3467fbb5 100644
--- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go
+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go
@@ -346,6 +346,8 @@ const (
SYS_FSPICK = 5433
SYS_PIDFD_OPEN = 5434
SYS_CLONE3 = 5435
+ SYS_CLOSE_RANGE = 5436
SYS_OPENAT2 = 5437
SYS_PIDFD_GETFD = 5438
+ SYS_FACCESSAT2 = 5439
)
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go
index 4d9aa300..0fc38d5a 100644
--- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go
+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go
@@ -346,6 +346,8 @@ const (
SYS_FSPICK = 5433
SYS_PIDFD_OPEN = 5434
SYS_CLONE3 = 5435
+ SYS_CLOSE_RANGE = 5436
SYS_OPENAT2 = 5437
SYS_PIDFD_GETFD = 5438
+ SYS_FACCESSAT2 = 5439
)
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go
index 64af0707..999fd55b 100644
--- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go
+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go
@@ -416,6 +416,8 @@ const (
SYS_FSPICK = 4433
SYS_PIDFD_OPEN = 4434
SYS_CLONE3 = 4435
+ SYS_CLOSE_RANGE = 4436
SYS_OPENAT2 = 4437
SYS_PIDFD_GETFD = 4438
+ SYS_FACCESSAT2 = 4439
)
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go
index cc3c067b..1df0d799 100644
--- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go
+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go
@@ -395,6 +395,8 @@ const (
SYS_FSPICK = 433
SYS_PIDFD_OPEN = 434
SYS_CLONE3 = 435
+ SYS_CLOSE_RANGE = 436
SYS_OPENAT2 = 437
SYS_PIDFD_GETFD = 438
+ SYS_FACCESSAT2 = 439
)
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go
index 4050ff98..4db39cca 100644
--- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go
+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go
@@ -395,6 +395,8 @@ const (
SYS_FSPICK = 433
SYS_PIDFD_OPEN = 434
SYS_CLONE3 = 435
+ SYS_CLOSE_RANGE = 436
SYS_OPENAT2 = 437
SYS_PIDFD_GETFD = 438
+ SYS_FACCESSAT2 = 439
)
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go
index 529abb6a..e6927401 100644
--- a/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go
+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go
@@ -297,6 +297,8 @@ const (
SYS_FSPICK = 433
SYS_PIDFD_OPEN = 434
SYS_CLONE3 = 435
+ SYS_CLOSE_RANGE = 436
SYS_OPENAT2 = 437
SYS_PIDFD_GETFD = 438
+ SYS_FACCESSAT2 = 439
)
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go
index 27665001..a585aec4 100644
--- a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go
+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go
@@ -360,6 +360,8 @@ const (
SYS_FSPICK = 433
SYS_PIDFD_OPEN = 434
SYS_CLONE3 = 435
+ SYS_CLOSE_RANGE = 436
SYS_OPENAT2 = 437
SYS_PIDFD_GETFD = 438
+ SYS_FACCESSAT2 = 439
)
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go
index 4dc82bb2..d047e567 100644
--- a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go
+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go
@@ -374,6 +374,8 @@ const (
SYS_FSMOUNT = 432
SYS_FSPICK = 433
SYS_PIDFD_OPEN = 434
+ SYS_CLOSE_RANGE = 436
SYS_OPENAT2 = 437
SYS_PIDFD_GETFD = 438
+ SYS_FACCESSAT2 = 439
)
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_mips64.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_mips64.go
new file mode 100644
index 00000000..5c08d573
--- /dev/null
+++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_mips64.go
@@ -0,0 +1,220 @@
+// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build mips64,openbsd
+
+package unix
+
+const (
+ SYS_EXIT = 1 // { void sys_exit(int rval); }
+ SYS_FORK = 2 // { int sys_fork(void); }
+ SYS_READ = 3 // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }
+ SYS_WRITE = 4 // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); }
+ SYS_OPEN = 5 // { int sys_open(const char *path, int flags, ... mode_t mode); }
+ SYS_CLOSE = 6 // { int sys_close(int fd); }
+ SYS_GETENTROPY = 7 // { int sys_getentropy(void *buf, size_t nbyte); }
+ SYS___TFORK = 8 // { int sys___tfork(const struct __tfork *param, size_t psize); }
+ SYS_LINK = 9 // { int sys_link(const char *path, const char *link); }
+ SYS_UNLINK = 10 // { int sys_unlink(const char *path); }
+ SYS_WAIT4 = 11 // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); }
+ SYS_CHDIR = 12 // { int sys_chdir(const char *path); }
+ SYS_FCHDIR = 13 // { int sys_fchdir(int fd); }
+ SYS_MKNOD = 14 // { int sys_mknod(const char *path, mode_t mode, dev_t dev); }
+ SYS_CHMOD = 15 // { int sys_chmod(const char *path, mode_t mode); }
+ SYS_CHOWN = 16 // { int sys_chown(const char *path, uid_t uid, gid_t gid); }
+ SYS_OBREAK = 17 // { int sys_obreak(char *nsize); } break
+ SYS_GETDTABLECOUNT = 18 // { int sys_getdtablecount(void); }
+ SYS_GETRUSAGE = 19 // { int sys_getrusage(int who, struct rusage *rusage); }
+ SYS_GETPID = 20 // { pid_t sys_getpid(void); }
+ SYS_MOUNT = 21 // { int sys_mount(const char *type, const char *path, int flags, void *data); }
+ SYS_UNMOUNT = 22 // { int sys_unmount(const char *path, int flags); }
+ SYS_SETUID = 23 // { int sys_setuid(uid_t uid); }
+ SYS_GETUID = 24 // { uid_t sys_getuid(void); }
+ SYS_GETEUID = 25 // { uid_t sys_geteuid(void); }
+ SYS_PTRACE = 26 // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); }
+ SYS_RECVMSG = 27 // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); }
+ SYS_SENDMSG = 28 // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); }
+ SYS_RECVFROM = 29 // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }
+ SYS_ACCEPT = 30 // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); }
+ SYS_GETPEERNAME = 31 // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }
+ SYS_GETSOCKNAME = 32 // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }
+ SYS_ACCESS = 33 // { int sys_access(const char *path, int amode); }
+ SYS_CHFLAGS = 34 // { int sys_chflags(const char *path, u_int flags); }
+ SYS_FCHFLAGS = 35 // { int sys_fchflags(int fd, u_int flags); }
+ SYS_SYNC = 36 // { void sys_sync(void); }
+ SYS_MSYSCALL = 37 // { int sys_msyscall(void *addr, size_t len); }
+ SYS_STAT = 38 // { int sys_stat(const char *path, struct stat *ub); }
+ SYS_GETPPID = 39 // { pid_t sys_getppid(void); }
+ SYS_LSTAT = 40 // { int sys_lstat(const char *path, struct stat *ub); }
+ SYS_DUP = 41 // { int sys_dup(int fd); }
+ SYS_FSTATAT = 42 // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); }
+ SYS_GETEGID = 43 // { gid_t sys_getegid(void); }
+ SYS_PROFIL = 44 // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); }
+ SYS_KTRACE = 45 // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); }
+ SYS_SIGACTION = 46 // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); }
+ SYS_GETGID = 47 // { gid_t sys_getgid(void); }
+ SYS_SIGPROCMASK = 48 // { int sys_sigprocmask(int how, sigset_t mask); }
+ SYS_SETLOGIN = 50 // { int sys_setlogin(const char *namebuf); }
+ SYS_ACCT = 51 // { int sys_acct(const char *path); }
+ SYS_SIGPENDING = 52 // { int sys_sigpending(void); }
+ SYS_FSTAT = 53 // { int sys_fstat(int fd, struct stat *sb); }
+ SYS_IOCTL = 54 // { int sys_ioctl(int fd, u_long com, ... void *data); }
+ SYS_REBOOT = 55 // { int sys_reboot(int opt); }
+ SYS_REVOKE = 56 // { int sys_revoke(const char *path); }
+ SYS_SYMLINK = 57 // { int sys_symlink(const char *path, const char *link); }
+ SYS_READLINK = 58 // { ssize_t sys_readlink(const char *path, char *buf, size_t count); }
+ SYS_EXECVE = 59 // { int sys_execve(const char *path, char * const *argp, char * const *envp); }
+ SYS_UMASK = 60 // { mode_t sys_umask(mode_t newmask); }
+ SYS_CHROOT = 61 // { int sys_chroot(const char *path); }
+ SYS_GETFSSTAT = 62 // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); }
+ SYS_STATFS = 63 // { int sys_statfs(const char *path, struct statfs *buf); }
+ SYS_FSTATFS = 64 // { int sys_fstatfs(int fd, struct statfs *buf); }
+ SYS_FHSTATFS = 65 // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); }
+ SYS_VFORK = 66 // { int sys_vfork(void); }
+ SYS_GETTIMEOFDAY = 67 // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); }
+ SYS_SETTIMEOFDAY = 68 // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); }
+ SYS_SETITIMER = 69 // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }
+ SYS_GETITIMER = 70 // { int sys_getitimer(int which, struct itimerval *itv); }
+ SYS_SELECT = 71 // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }
+ SYS_KEVENT = 72 // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }
+ SYS_MUNMAP = 73 // { int sys_munmap(void *addr, size_t len); }
+ SYS_MPROTECT = 74 // { int sys_mprotect(void *addr, size_t len, int prot); }
+ SYS_MADVISE = 75 // { int sys_madvise(void *addr, size_t len, int behav); }
+ SYS_UTIMES = 76 // { int sys_utimes(const char *path, const struct timeval *tptr); }
+ SYS_FUTIMES = 77 // { int sys_futimes(int fd, const struct timeval *tptr); }
+ SYS_GETGROUPS = 79 // { int sys_getgroups(int gidsetsize, gid_t *gidset); }
+ SYS_SETGROUPS = 80 // { int sys_setgroups(int gidsetsize, const gid_t *gidset); }
+ SYS_GETPGRP = 81 // { int sys_getpgrp(void); }
+ SYS_SETPGID = 82 // { int sys_setpgid(pid_t pid, pid_t pgid); }
+ SYS_FUTEX = 83 // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); }
+ SYS_UTIMENSAT = 84 // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); }
+ SYS_FUTIMENS = 85 // { int sys_futimens(int fd, const struct timespec *times); }
+ SYS_KBIND = 86 // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); }
+ SYS_CLOCK_GETTIME = 87 // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); }
+ SYS_CLOCK_SETTIME = 88 // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); }
+ SYS_CLOCK_GETRES = 89 // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); }
+ SYS_DUP2 = 90 // { int sys_dup2(int from, int to); }
+ SYS_NANOSLEEP = 91 // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }
+ SYS_FCNTL = 92 // { int sys_fcntl(int fd, int cmd, ... void *arg); }
+ SYS_ACCEPT4 = 93 // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); }
+ SYS___THRSLEEP = 94 // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); }
+ SYS_FSYNC = 95 // { int sys_fsync(int fd); }
+ SYS_SETPRIORITY = 96 // { int sys_setpriority(int which, id_t who, int prio); }
+ SYS_SOCKET = 97 // { int sys_socket(int domain, int type, int protocol); }
+ SYS_CONNECT = 98 // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); }
+ SYS_GETDENTS = 99 // { int sys_getdents(int fd, void *buf, size_t buflen); }
+ SYS_GETPRIORITY = 100 // { int sys_getpriority(int which, id_t who); }
+ SYS_PIPE2 = 101 // { int sys_pipe2(int *fdp, int flags); }
+ SYS_DUP3 = 102 // { int sys_dup3(int from, int to, int flags); }
+ SYS_SIGRETURN = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }
+ SYS_BIND = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); }
+ SYS_SETSOCKOPT = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }
+ SYS_LISTEN = 106 // { int sys_listen(int s, int backlog); }
+ SYS_CHFLAGSAT = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); }
+ SYS_PLEDGE = 108 // { int sys_pledge(const char *promises, const char *execpromises); }
+ SYS_PPOLL = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }
+ SYS_PSELECT = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }
+ SYS_SIGSUSPEND = 111 // { int sys_sigsuspend(int mask); }
+ SYS_SENDSYSLOG = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); }
+ SYS_UNVEIL = 114 // { int sys_unveil(const char *path, const char *permissions); }
+ SYS___REALPATH = 115 // { int sys___realpath(const char *pathname, char *resolved); }
+ SYS_GETSOCKOPT = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }
+ SYS_THRKILL = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }
+ SYS_READV = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); }
+ SYS_WRITEV = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); }
+ SYS_KILL = 122 // { int sys_kill(int pid, int signum); }
+ SYS_FCHOWN = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }
+ SYS_FCHMOD = 124 // { int sys_fchmod(int fd, mode_t mode); }
+ SYS_SETREUID = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }
+ SYS_SETREGID = 127 // { int sys_setregid(gid_t rgid, gid_t egid); }
+ SYS_RENAME = 128 // { int sys_rename(const char *from, const char *to); }
+ SYS_FLOCK = 131 // { int sys_flock(int fd, int how); }
+ SYS_MKFIFO = 132 // { int sys_mkfifo(const char *path, mode_t mode); }
+ SYS_SENDTO = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }
+ SYS_SHUTDOWN = 134 // { int sys_shutdown(int s, int how); }
+ SYS_SOCKETPAIR = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); }
+ SYS_MKDIR = 136 // { int sys_mkdir(const char *path, mode_t mode); }
+ SYS_RMDIR = 137 // { int sys_rmdir(const char *path); }
+ SYS_ADJTIME = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); }
+ SYS_GETLOGIN_R = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }
+ SYS_SETSID = 147 // { int sys_setsid(void); }
+ SYS_QUOTACTL = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); }
+ SYS_NFSSVC = 155 // { int sys_nfssvc(int flag, void *argp); }
+ SYS_GETFH = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }
+ SYS___TMPFD = 164 // { int sys___tmpfd(int flags); }
+ SYS_SYSARCH = 165 // { int sys_sysarch(int op, void *parms); }
+ SYS_PREAD = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); }
+ SYS_PWRITE = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); }
+ SYS_SETGID = 181 // { int sys_setgid(gid_t gid); }
+ SYS_SETEGID = 182 // { int sys_setegid(gid_t egid); }
+ SYS_SETEUID = 183 // { int sys_seteuid(uid_t euid); }
+ SYS_PATHCONF = 191 // { long sys_pathconf(const char *path, int name); }
+ SYS_FPATHCONF = 192 // { long sys_fpathconf(int fd, int name); }
+ SYS_SWAPCTL = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }
+ SYS_GETRLIMIT = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); }
+ SYS_SETRLIMIT = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); }
+ SYS_MMAP = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }
+ SYS_LSEEK = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); }
+ SYS_TRUNCATE = 200 // { int sys_truncate(const char *path, int pad, off_t length); }
+ SYS_FTRUNCATE = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }
+ SYS_SYSCTL = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }
+ SYS_MLOCK = 203 // { int sys_mlock(const void *addr, size_t len); }
+ SYS_MUNLOCK = 204 // { int sys_munlock(const void *addr, size_t len); }
+ SYS_GETPGID = 207 // { pid_t sys_getpgid(pid_t pid); }
+ SYS_UTRACE = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); }
+ SYS_SEMGET = 221 // { int sys_semget(key_t key, int nsems, int semflg); }
+ SYS_MSGGET = 225 // { int sys_msgget(key_t key, int msgflg); }
+ SYS_MSGSND = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }
+ SYS_MSGRCV = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }
+ SYS_SHMAT = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); }
+ SYS_SHMDT = 230 // { int sys_shmdt(const void *shmaddr); }
+ SYS_MINHERIT = 250 // { int sys_minherit(void *addr, size_t len, int inherit); }
+ SYS_POLL = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); }
+ SYS_ISSETUGID = 253 // { int sys_issetugid(void); }
+ SYS_LCHOWN = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }
+ SYS_GETSID = 255 // { pid_t sys_getsid(pid_t pid); }
+ SYS_MSYNC = 256 // { int sys_msync(void *addr, size_t len, int flags); }
+ SYS_PIPE = 263 // { int sys_pipe(int *fdp); }
+ SYS_FHOPEN = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }
+ SYS_PREADV = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }
+ SYS_PWRITEV = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }
+ SYS_KQUEUE = 269 // { int sys_kqueue(void); }
+ SYS_MLOCKALL = 271 // { int sys_mlockall(int flags); }
+ SYS_MUNLOCKALL = 272 // { int sys_munlockall(void); }
+ SYS_GETRESUID = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }
+ SYS_SETRESUID = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); }
+ SYS_GETRESGID = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }
+ SYS_SETRESGID = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); }
+ SYS_MQUERY = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }
+ SYS_CLOSEFROM = 287 // { int sys_closefrom(int fd); }
+ SYS_SIGALTSTACK = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); }
+ SYS_SHMGET = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }
+ SYS_SEMOP = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); }
+ SYS_FHSTAT = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); }
+ SYS___SEMCTL = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); }
+ SYS_SHMCTL = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); }
+ SYS_MSGCTL = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); }
+ SYS_SCHED_YIELD = 298 // { int sys_sched_yield(void); }
+ SYS_GETTHRID = 299 // { pid_t sys_getthrid(void); }
+ SYS___THRWAKEUP = 301 // { int sys___thrwakeup(const volatile void *ident, int n); }
+ SYS___THREXIT = 302 // { void sys___threxit(pid_t *notdead); }
+ SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); }
+ SYS___GETCWD = 304 // { int sys___getcwd(char *buf, size_t len); }
+ SYS_ADJFREQ = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); }
+ SYS_SETRTABLE = 310 // { int sys_setrtable(int rtableid); }
+ SYS_GETRTABLE = 311 // { int sys_getrtable(void); }
+ SYS_FACCESSAT = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); }
+ SYS_FCHMODAT = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); }
+ SYS_FCHOWNAT = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); }
+ SYS_LINKAT = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); }
+ SYS_MKDIRAT = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); }
+ SYS_MKFIFOAT = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); }
+ SYS_MKNODAT = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); }
+ SYS_OPENAT = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); }
+ SYS_READLINKAT = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); }
+ SYS_RENAMEAT = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); }
+ SYS_SYMLINKAT = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); }
+ SYS_UNLINKAT = 325 // { int sys_unlinkat(int fd, const char *path, int flag); }
+ SYS___SET_TCB = 329 // { void sys___set_tcb(void *tcb); }
+ SYS___GET_TCB = 330 // { void *sys___get_tcb(void); }
+)
diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go
index 9f47b87c..830fbb35 100644
--- a/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go
+++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go
@@ -92,9 +92,9 @@ type Statfs_t struct {
Type uint32
Flags uint32
Fssubtype uint32
- Fstypename [16]int8
- Mntonname [1024]int8
- Mntfromname [1024]int8
+ Fstypename [16]byte
+ Mntonname [1024]byte
+ Mntfromname [1024]byte
Reserved [8]uint32
}
@@ -145,6 +145,10 @@ type Dirent struct {
_ [3]byte
}
+const (
+ PathMax = 0x400
+)
+
type RawSockaddrInet4 struct {
Len uint8
Family uint8
@@ -190,6 +194,15 @@ type RawSockaddrAny struct {
Pad [92]int8
}
+type RawSockaddrCtl struct {
+ Sc_len uint8
+ Sc_family uint8
+ Ss_sysaddr uint16
+ Sc_id uint32
+ Sc_unit uint32
+ Sc_reserved [5]uint32
+}
+
type _Socklen uint32
type Linger struct {
@@ -254,6 +267,7 @@ const (
SizeofSockaddrAny = 0x6c
SizeofSockaddrUnix = 0x6a
SizeofSockaddrDatalink = 0x14
+ SizeofSockaddrCtl = 0x20
SizeofLinger = 0x8
SizeofIPMreq = 0x8
SizeofIPv6Mreq = 0x14
@@ -301,7 +315,6 @@ type IfMsghdr struct {
Addrs int32
Flags int32
Index uint16
- _ [2]byte
Data IfData
}
@@ -344,7 +357,6 @@ type IfaMsghdr struct {
Addrs int32
Flags int32
Index uint16
- _ [2]byte
Metric int32
}
@@ -365,7 +377,6 @@ type IfmaMsghdr2 struct {
Addrs int32
Flags int32
Index uint16
- _ [2]byte
Refcount int32
}
@@ -374,7 +385,6 @@ type RtMsghdr struct {
Version uint8
Type uint8
Index uint16
- _ [2]byte
Flags int32
Addrs int32
Pid int32
@@ -396,7 +406,8 @@ type RtMetrics struct {
Rtt uint32
Rttvar uint32
Pksent uint32
- Filler [4]uint32
+ State uint32
+ Filler [3]uint32
}
const (
@@ -497,3 +508,8 @@ type Clockinfo struct {
Stathz int32
Profhz int32
}
+
+type CtlInfo struct {
+ Id uint32
+ Name [96]byte
+}
diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go
index 966798a8..e53a7c49 100644
--- a/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go
+++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go
@@ -70,7 +70,6 @@ type Stat_t struct {
Uid uint32
Gid uint32
Rdev int32
- _ [4]byte
Atim Timespec
Mtim Timespec
Ctim Timespec
@@ -97,10 +96,11 @@ type Statfs_t struct {
Type uint32
Flags uint32
Fssubtype uint32
- Fstypename [16]int8
- Mntonname [1024]int8
- Mntfromname [1024]int8
- Reserved [8]uint32
+ Fstypename [16]byte
+ Mntonname [1024]byte
+ Mntfromname [1024]byte
+ Flags_ext uint32
+ Reserved [7]uint32
}
type Flock_t struct {
@@ -133,8 +133,7 @@ type Fbootstraptransfer_t struct {
type Log2phys_t struct {
Flags uint32
- _ [8]byte
- _ [8]byte
+ _ [16]byte
}
type Fsid struct {
@@ -151,6 +150,10 @@ type Dirent struct {
_ [3]byte
}
+const (
+ PathMax = 0x400
+)
+
type RawSockaddrInet4 struct {
Len uint8
Family uint8
@@ -196,6 +199,15 @@ type RawSockaddrAny struct {
Pad [92]int8
}
+type RawSockaddrCtl struct {
+ Sc_len uint8
+ Sc_family uint8
+ Ss_sysaddr uint16
+ Sc_id uint32
+ Sc_unit uint32
+ Sc_reserved [5]uint32
+}
+
type _Socklen uint32
type Linger struct {
@@ -221,10 +233,8 @@ type IPv6Mreq struct {
type Msghdr struct {
Name *byte
Namelen uint32
- _ [4]byte
Iov *Iovec
Iovlen int32
- _ [4]byte
Control *byte
Controllen uint32
Flags int32
@@ -262,6 +272,7 @@ const (
SizeofSockaddrAny = 0x6c
SizeofSockaddrUnix = 0x6a
SizeofSockaddrDatalink = 0x14
+ SizeofSockaddrCtl = 0x20
SizeofLinger = 0x8
SizeofIPMreq = 0x8
SizeofIPv6Mreq = 0x14
@@ -309,7 +320,6 @@ type IfMsghdr struct {
Addrs int32
Flags int32
Index uint16
- _ [2]byte
Data IfData
}
@@ -352,7 +362,6 @@ type IfaMsghdr struct {
Addrs int32
Flags int32
Index uint16
- _ [2]byte
Metric int32
}
@@ -373,7 +382,6 @@ type IfmaMsghdr2 struct {
Addrs int32
Flags int32
Index uint16
- _ [2]byte
Refcount int32
}
@@ -382,7 +390,6 @@ type RtMsghdr struct {
Version uint8
Type uint8
Index uint16
- _ [2]byte
Flags int32
Addrs int32
Pid int32
@@ -404,7 +411,8 @@ type RtMetrics struct {
Rtt uint32
Rttvar uint32
Pksent uint32
- Filler [4]uint32
+ State uint32
+ Filler [3]uint32
}
const (
@@ -427,7 +435,6 @@ type BpfStat struct {
type BpfProgram struct {
Len uint32
- _ [4]byte
Insns *BpfInsn
}
@@ -452,7 +459,6 @@ type Termios struct {
Cflag uint64
Lflag uint64
Cc [20]uint8
- _ [4]byte
Ispeed uint64
Ospeed uint64
}
@@ -507,3 +513,8 @@ type Clockinfo struct {
Stathz int32
Profhz int32
}
+
+type CtlInfo struct {
+ Id uint32
+ Name [96]byte
+}
diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go
index 4fe4c9cd..98be973e 100644
--- a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go
+++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go
@@ -1,6 +1,5 @@
-// NOTE: cgo can't generate struct Stat_t and struct Statfs_t yet
-// Created by cgo -godefs - DO NOT EDIT
-// cgo -godefs types_darwin.go
+// cgo -godefs types_darwin.go | go run mkpost.go
+// Code generated by the command above; see README.md. DO NOT EDIT.
// +build arm,darwin
@@ -31,7 +30,7 @@ type Timeval struct {
Usec int32
}
-type Timeval32 [0]byte
+type Timeval32 struct{}
type Rusage struct {
Utime Timeval
@@ -93,9 +92,9 @@ type Statfs_t struct {
Type uint32
Flags uint32
Fssubtype uint32
- Fstypename [16]int8
- Mntonname [1024]int8
- Mntfromname [1024]int8
+ Fstypename [16]byte
+ Mntonname [1024]byte
+ Mntfromname [1024]byte
Reserved [8]uint32
}
@@ -146,6 +145,10 @@ type Dirent struct {
_ [3]byte
}
+const (
+ PathMax = 0x400
+)
+
type RawSockaddrInet4 struct {
Len uint8
Family uint8
@@ -191,6 +194,15 @@ type RawSockaddrAny struct {
Pad [92]int8
}
+type RawSockaddrCtl struct {
+ Sc_len uint8
+ Sc_family uint8
+ Ss_sysaddr uint16
+ Sc_id uint32
+ Sc_unit uint32
+ Sc_reserved [5]uint32
+}
+
type _Socklen uint32
type Linger struct {
@@ -255,6 +267,7 @@ const (
SizeofSockaddrAny = 0x6c
SizeofSockaddrUnix = 0x6a
SizeofSockaddrDatalink = 0x14
+ SizeofSockaddrCtl = 0x20
SizeofLinger = 0x8
SizeofIPMreq = 0x8
SizeofIPv6Mreq = 0x14
@@ -302,7 +315,6 @@ type IfMsghdr struct {
Addrs int32
Flags int32
Index uint16
- _ [2]byte
Data IfData
}
@@ -345,7 +357,6 @@ type IfaMsghdr struct {
Addrs int32
Flags int32
Index uint16
- _ [2]byte
Metric int32
}
@@ -366,7 +377,6 @@ type IfmaMsghdr2 struct {
Addrs int32
Flags int32
Index uint16
- _ [2]byte
Refcount int32
}
@@ -375,7 +385,6 @@ type RtMsghdr struct {
Version uint8
Type uint8
Index uint16
- _ [2]byte
Flags int32
Addrs int32
Pid int32
@@ -397,7 +406,8 @@ type RtMetrics struct {
Rtt uint32
Rttvar uint32
Pksent uint32
- Filler [4]uint32
+ State uint32
+ Filler [3]uint32
}
const (
@@ -498,3 +508,8 @@ type Clockinfo struct {
Stathz int32
Profhz int32
}
+
+type CtlInfo struct {
+ Id uint32
+ Name [96]byte
+}
diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go
index 21999e4b..ddae5afe 100644
--- a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go
+++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go
@@ -70,7 +70,6 @@ type Stat_t struct {
Uid uint32
Gid uint32
Rdev int32
- _ [4]byte
Atim Timespec
Mtim Timespec
Ctim Timespec
@@ -97,10 +96,11 @@ type Statfs_t struct {
Type uint32
Flags uint32
Fssubtype uint32
- Fstypename [16]int8
- Mntonname [1024]int8
- Mntfromname [1024]int8
- Reserved [8]uint32
+ Fstypename [16]byte
+ Mntonname [1024]byte
+ Mntfromname [1024]byte
+ Flags_ext uint32
+ Reserved [7]uint32
}
type Flock_t struct {
@@ -133,8 +133,7 @@ type Fbootstraptransfer_t struct {
type Log2phys_t struct {
Flags uint32
- _ [8]byte
- _ [8]byte
+ _ [16]byte
}
type Fsid struct {
@@ -151,6 +150,10 @@ type Dirent struct {
_ [3]byte
}
+const (
+ PathMax = 0x400
+)
+
type RawSockaddrInet4 struct {
Len uint8
Family uint8
@@ -196,6 +199,15 @@ type RawSockaddrAny struct {
Pad [92]int8
}
+type RawSockaddrCtl struct {
+ Sc_len uint8
+ Sc_family uint8
+ Ss_sysaddr uint16
+ Sc_id uint32
+ Sc_unit uint32
+ Sc_reserved [5]uint32
+}
+
type _Socklen uint32
type Linger struct {
@@ -221,10 +233,8 @@ type IPv6Mreq struct {
type Msghdr struct {
Name *byte
Namelen uint32
- _ [4]byte
Iov *Iovec
Iovlen int32
- _ [4]byte
Control *byte
Controllen uint32
Flags int32
@@ -262,6 +272,7 @@ const (
SizeofSockaddrAny = 0x6c
SizeofSockaddrUnix = 0x6a
SizeofSockaddrDatalink = 0x14
+ SizeofSockaddrCtl = 0x20
SizeofLinger = 0x8
SizeofIPMreq = 0x8
SizeofIPv6Mreq = 0x14
@@ -309,7 +320,6 @@ type IfMsghdr struct {
Addrs int32
Flags int32
Index uint16
- _ [2]byte
Data IfData
}
@@ -352,7 +362,6 @@ type IfaMsghdr struct {
Addrs int32
Flags int32
Index uint16
- _ [2]byte
Metric int32
}
@@ -373,7 +382,6 @@ type IfmaMsghdr2 struct {
Addrs int32
Flags int32
Index uint16
- _ [2]byte
Refcount int32
}
@@ -382,7 +390,6 @@ type RtMsghdr struct {
Version uint8
Type uint8
Index uint16
- _ [2]byte
Flags int32
Addrs int32
Pid int32
@@ -404,7 +411,8 @@ type RtMetrics struct {
Rtt uint32
Rttvar uint32
Pksent uint32
- Filler [4]uint32
+ State uint32
+ Filler [3]uint32
}
const (
@@ -427,7 +435,6 @@ type BpfStat struct {
type BpfProgram struct {
Len uint32
- _ [4]byte
Insns *BpfInsn
}
@@ -452,7 +459,6 @@ type Termios struct {
Cflag uint64
Lflag uint64
Cc [20]uint8
- _ [4]byte
Ispeed uint64
Ospeed uint64
}
@@ -507,3 +513,8 @@ type Clockinfo struct {
Stathz int32
Profhz int32
}
+
+type CtlInfo struct {
+ Id uint32
+ Name [96]byte
+}
diff --git a/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go
index 71ea1d6d..c4772df2 100644
--- a/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go
+++ b/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go
@@ -70,11 +70,11 @@ type Stat_t struct {
Ctim Timespec
Size int64
Blocks int64
- Blksize uint32
+ _ uint32
Flags uint32
Gen uint32
Lspare int32
- Qspare1 int64
+ Blksize int64
Qspare2 int64
}
@@ -91,17 +91,15 @@ type Statfs_t struct {
Owner uint32
Type int32
Flags int32
- _ [4]byte
Syncwrites int64
Asyncwrites int64
- Fstypename [16]int8
- Mntonname [80]int8
+ Fstypename [16]byte
+ Mntonname [80]byte
Syncreads int64
Asyncreads int64
Spares1 int16
- Mntfromname [80]int8
+ Mntfromname [80]byte
Spares2 int16
- _ [4]byte
Spare [2]int64
}
@@ -202,10 +200,8 @@ type IPv6Mreq struct {
type Msghdr struct {
Name *byte
Namelen uint32
- _ [4]byte
Iov *Iovec
Iovlen int32
- _ [4]byte
Control *byte
Controllen uint32
Flags int32
@@ -269,7 +265,7 @@ type FdSet struct {
const (
SizeofIfMsghdr = 0xb0
SizeofIfData = 0xa0
- SizeofIfaMsghdr = 0x14
+ SizeofIfaMsghdr = 0x18
SizeofIfmaMsghdr = 0x10
SizeofIfAnnounceMsghdr = 0x18
SizeofRtMsghdr = 0x98
@@ -280,10 +276,9 @@ type IfMsghdr struct {
Msglen uint16
Version uint8
Type uint8
- Addrs int32
- Flags int32
Index uint16
- _ [2]byte
+ Flags int32
+ Addrs int32
Data IfData
}
@@ -294,7 +289,6 @@ type IfData struct {
Hdrlen uint8
Recvquota uint8
Xmitquota uint8
- _ [2]byte
Mtu uint64
Metric uint64
Link_state uint64
@@ -316,24 +310,23 @@ type IfData struct {
}
type IfaMsghdr struct {
- Msglen uint16
- Version uint8
- Type uint8
- Addrs int32
- Flags int32
- Index uint16
- _ [2]byte
- Metric int32
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Index uint16
+ Flags int32
+ Addrs int32
+ Addrflags int32
+ Metric int32
}
type IfmaMsghdr struct {
Msglen uint16
Version uint8
Type uint8
- Addrs int32
- Flags int32
Index uint16
- _ [2]byte
+ Flags int32
+ Addrs int32
}
type IfAnnounceMsghdr struct {
@@ -350,7 +343,6 @@ type RtMsghdr struct {
Version uint8
Type uint8
Index uint16
- _ [2]byte
Flags int32
Addrs int32
Pid int32
@@ -374,7 +366,6 @@ type RtMetrics struct {
Hopcount uint64
Mssopt uint16
Pad uint16
- _ [4]byte
Msl uint64
Iwmaxsegs uint64
Iwcapsegs uint64
@@ -400,7 +391,6 @@ type BpfStat struct {
type BpfProgram struct {
Len uint32
- _ [4]byte
Insns *BpfInsn
}
diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux.go b/vendor/golang.org/x/sys/unix/ztypes_linux.go
index 27d67ac8..504ef131 100644
--- a/vendor/golang.org/x/sys/unix/ztypes_linux.go
+++ b/vendor/golang.org/x/sys/unix/ztypes_linux.go
@@ -67,13 +67,30 @@ type Statx_t struct {
Rdev_minor uint32
Dev_major uint32
Dev_minor uint32
- _ [14]uint64
+ Mnt_id uint64
+ _ uint64
+ _ [12]uint64
}
type Fsid struct {
Val [2]int32
}
+type FileCloneRange struct {
+ Src_fd int64
+ Src_offset uint64
+ Src_length uint64
+ Dest_offset uint64
+}
+
+type FileDedupeRange struct {
+ Src_offset uint64
+ Src_length uint64
+ Dest_count uint16
+ Reserved1 uint16
+ Reserved2 uint32
+}
+
type FscryptPolicy struct {
Version uint8
Contents_encryption_mode uint8
@@ -138,6 +155,48 @@ type FscryptGetKeyStatusArg struct {
_ [13]uint32
}
+type DmIoctl struct {
+ Version [3]uint32
+ Data_size uint32
+ Data_start uint32
+ Target_count uint32
+ Open_count int32
+ Flags uint32
+ Event_nr uint32
+ _ uint32
+ Dev uint64
+ Name [128]byte
+ Uuid [129]byte
+ Data [7]byte
+}
+
+type DmTargetSpec struct {
+ Sector_start uint64
+ Length uint64
+ Status int32
+ Next uint32
+ Target_type [16]byte
+}
+
+type DmTargetDeps struct {
+ Count uint32
+ _ uint32
+}
+
+type DmTargetVersions struct {
+ Next uint32
+ Version [3]uint32
+}
+
+type DmTargetMsg struct {
+ Sector uint64
+}
+
+const (
+ SizeofDmIoctl = 0x138
+ SizeofDmTargetSpec = 0x28
+)
+
type KeyctlDHParams struct {
Private int32
Prime int32
@@ -266,6 +325,15 @@ type RawSockaddrL2TPIP6 struct {
Conn_id uint32
}
+type RawSockaddrIUCV struct {
+ Family uint16
+ Port uint16
+ Addr uint32
+ Nodeid [8]int8
+ User_id [8]int8
+ Name [8]int8
+}
+
type _Socklen uint32
type Linger struct {
@@ -378,6 +446,7 @@ const (
SizeofSockaddrTIPC = 0x10
SizeofSockaddrL2TPIP = 0x10
SizeofSockaddrL2TPIP6 = 0x20
+ SizeofSockaddrIUCV = 0x20
SizeofLinger = 0x8
SizeofIPMreq = 0x8
SizeofIPMreqn = 0xc
@@ -393,166 +462,107 @@ const (
)
const (
- NDA_UNSPEC = 0x0
- NDA_DST = 0x1
- NDA_LLADDR = 0x2
- NDA_CACHEINFO = 0x3
- NDA_PROBES = 0x4
- NDA_VLAN = 0x5
- NDA_PORT = 0x6
- NDA_VNI = 0x7
- NDA_IFINDEX = 0x8
- NDA_MASTER = 0x9
- NDA_LINK_NETNSID = 0xa
- NDA_SRC_VNI = 0xb
- NTF_USE = 0x1
- NTF_SELF = 0x2
- NTF_MASTER = 0x4
- NTF_PROXY = 0x8
- NTF_EXT_LEARNED = 0x10
- NTF_OFFLOADED = 0x20
- NTF_ROUTER = 0x80
- NUD_INCOMPLETE = 0x1
- NUD_REACHABLE = 0x2
- NUD_STALE = 0x4
- NUD_DELAY = 0x8
- NUD_PROBE = 0x10
- NUD_FAILED = 0x20
- NUD_NOARP = 0x40
- NUD_PERMANENT = 0x80
- NUD_NONE = 0x0
- IFA_UNSPEC = 0x0
- IFA_ADDRESS = 0x1
- IFA_LOCAL = 0x2
- IFA_LABEL = 0x3
- IFA_BROADCAST = 0x4
- IFA_ANYCAST = 0x5
- IFA_CACHEINFO = 0x6
- IFA_MULTICAST = 0x7
- IFA_FLAGS = 0x8
- IFA_RT_PRIORITY = 0x9
- IFA_TARGET_NETNSID = 0xa
- IFLA_UNSPEC = 0x0
- IFLA_ADDRESS = 0x1
- IFLA_BROADCAST = 0x2
- IFLA_IFNAME = 0x3
- IFLA_MTU = 0x4
- IFLA_LINK = 0x5
- IFLA_QDISC = 0x6
- IFLA_STATS = 0x7
- IFLA_COST = 0x8
- IFLA_PRIORITY = 0x9
- IFLA_MASTER = 0xa
- IFLA_WIRELESS = 0xb
- IFLA_PROTINFO = 0xc
- IFLA_TXQLEN = 0xd
- IFLA_MAP = 0xe
- IFLA_WEIGHT = 0xf
- IFLA_OPERSTATE = 0x10
- IFLA_LINKMODE = 0x11
- IFLA_LINKINFO = 0x12
- IFLA_NET_NS_PID = 0x13
- IFLA_IFALIAS = 0x14
- IFLA_NUM_VF = 0x15
- IFLA_VFINFO_LIST = 0x16
- IFLA_STATS64 = 0x17
- IFLA_VF_PORTS = 0x18
- IFLA_PORT_SELF = 0x19
- IFLA_AF_SPEC = 0x1a
- IFLA_GROUP = 0x1b
- IFLA_NET_NS_FD = 0x1c
- IFLA_EXT_MASK = 0x1d
- IFLA_PROMISCUITY = 0x1e
- IFLA_NUM_TX_QUEUES = 0x1f
- IFLA_NUM_RX_QUEUES = 0x20
- IFLA_CARRIER = 0x21
- IFLA_PHYS_PORT_ID = 0x22
- IFLA_CARRIER_CHANGES = 0x23
- IFLA_PHYS_SWITCH_ID = 0x24
- IFLA_LINK_NETNSID = 0x25
- IFLA_PHYS_PORT_NAME = 0x26
- IFLA_PROTO_DOWN = 0x27
- IFLA_GSO_MAX_SEGS = 0x28
- IFLA_GSO_MAX_SIZE = 0x29
- IFLA_PAD = 0x2a
- IFLA_XDP = 0x2b
- IFLA_EVENT = 0x2c
- IFLA_NEW_NETNSID = 0x2d
- IFLA_IF_NETNSID = 0x2e
- IFLA_TARGET_NETNSID = 0x2e
- IFLA_CARRIER_UP_COUNT = 0x2f
- IFLA_CARRIER_DOWN_COUNT = 0x30
- IFLA_NEW_IFINDEX = 0x31
- IFLA_MIN_MTU = 0x32
- IFLA_MAX_MTU = 0x33
- IFLA_MAX = 0x36
- IFLA_INFO_KIND = 0x1
- IFLA_INFO_DATA = 0x2
- IFLA_INFO_XSTATS = 0x3
- IFLA_INFO_SLAVE_KIND = 0x4
- IFLA_INFO_SLAVE_DATA = 0x5
- RT_SCOPE_UNIVERSE = 0x0
- RT_SCOPE_SITE = 0xc8
- RT_SCOPE_LINK = 0xfd
- RT_SCOPE_HOST = 0xfe
- RT_SCOPE_NOWHERE = 0xff
- RT_TABLE_UNSPEC = 0x0
- RT_TABLE_COMPAT = 0xfc
- RT_TABLE_DEFAULT = 0xfd
- RT_TABLE_MAIN = 0xfe
- RT_TABLE_LOCAL = 0xff
- RT_TABLE_MAX = 0xffffffff
- RTA_UNSPEC = 0x0
- RTA_DST = 0x1
- RTA_SRC = 0x2
- RTA_IIF = 0x3
- RTA_OIF = 0x4
- RTA_GATEWAY = 0x5
- RTA_PRIORITY = 0x6
- RTA_PREFSRC = 0x7
- RTA_METRICS = 0x8
- RTA_MULTIPATH = 0x9
- RTA_FLOW = 0xb
- RTA_CACHEINFO = 0xc
- RTA_TABLE = 0xf
- RTA_MARK = 0x10
- RTA_MFC_STATS = 0x11
- RTA_VIA = 0x12
- RTA_NEWDST = 0x13
- RTA_PREF = 0x14
- RTA_ENCAP_TYPE = 0x15
- RTA_ENCAP = 0x16
- RTA_EXPIRES = 0x17
- RTA_PAD = 0x18
- RTA_UID = 0x19
- RTA_TTL_PROPAGATE = 0x1a
- RTA_IP_PROTO = 0x1b
- RTA_SPORT = 0x1c
- RTA_DPORT = 0x1d
- RTN_UNSPEC = 0x0
- RTN_UNICAST = 0x1
- RTN_LOCAL = 0x2
- RTN_BROADCAST = 0x3
- RTN_ANYCAST = 0x4
- RTN_MULTICAST = 0x5
- RTN_BLACKHOLE = 0x6
- RTN_UNREACHABLE = 0x7
- RTN_PROHIBIT = 0x8
- RTN_THROW = 0x9
- RTN_NAT = 0xa
- RTN_XRESOLVE = 0xb
- SizeofNlMsghdr = 0x10
- SizeofNlMsgerr = 0x14
- SizeofRtGenmsg = 0x1
- SizeofNlAttr = 0x4
- SizeofRtAttr = 0x4
- SizeofIfInfomsg = 0x10
- SizeofIfAddrmsg = 0x8
- SizeofIfaCacheinfo = 0x10
- SizeofRtMsg = 0xc
- SizeofRtNexthop = 0x8
- SizeofNdUseroptmsg = 0x10
- SizeofNdMsg = 0xc
+ NDA_UNSPEC = 0x0
+ NDA_DST = 0x1
+ NDA_LLADDR = 0x2
+ NDA_CACHEINFO = 0x3
+ NDA_PROBES = 0x4
+ NDA_VLAN = 0x5
+ NDA_PORT = 0x6
+ NDA_VNI = 0x7
+ NDA_IFINDEX = 0x8
+ NDA_MASTER = 0x9
+ NDA_LINK_NETNSID = 0xa
+ NDA_SRC_VNI = 0xb
+ NTF_USE = 0x1
+ NTF_SELF = 0x2
+ NTF_MASTER = 0x4
+ NTF_PROXY = 0x8
+ NTF_EXT_LEARNED = 0x10
+ NTF_OFFLOADED = 0x20
+ NTF_ROUTER = 0x80
+ NUD_INCOMPLETE = 0x1
+ NUD_REACHABLE = 0x2
+ NUD_STALE = 0x4
+ NUD_DELAY = 0x8
+ NUD_PROBE = 0x10
+ NUD_FAILED = 0x20
+ NUD_NOARP = 0x40
+ NUD_PERMANENT = 0x80
+ NUD_NONE = 0x0
+ IFA_UNSPEC = 0x0
+ IFA_ADDRESS = 0x1
+ IFA_LOCAL = 0x2
+ IFA_LABEL = 0x3
+ IFA_BROADCAST = 0x4
+ IFA_ANYCAST = 0x5
+ IFA_CACHEINFO = 0x6
+ IFA_MULTICAST = 0x7
+ IFA_FLAGS = 0x8
+ IFA_RT_PRIORITY = 0x9
+ IFA_TARGET_NETNSID = 0xa
+ RT_SCOPE_UNIVERSE = 0x0
+ RT_SCOPE_SITE = 0xc8
+ RT_SCOPE_LINK = 0xfd
+ RT_SCOPE_HOST = 0xfe
+ RT_SCOPE_NOWHERE = 0xff
+ RT_TABLE_UNSPEC = 0x0
+ RT_TABLE_COMPAT = 0xfc
+ RT_TABLE_DEFAULT = 0xfd
+ RT_TABLE_MAIN = 0xfe
+ RT_TABLE_LOCAL = 0xff
+ RT_TABLE_MAX = 0xffffffff
+ RTA_UNSPEC = 0x0
+ RTA_DST = 0x1
+ RTA_SRC = 0x2
+ RTA_IIF = 0x3
+ RTA_OIF = 0x4
+ RTA_GATEWAY = 0x5
+ RTA_PRIORITY = 0x6
+ RTA_PREFSRC = 0x7
+ RTA_METRICS = 0x8
+ RTA_MULTIPATH = 0x9
+ RTA_FLOW = 0xb
+ RTA_CACHEINFO = 0xc
+ RTA_TABLE = 0xf
+ RTA_MARK = 0x10
+ RTA_MFC_STATS = 0x11
+ RTA_VIA = 0x12
+ RTA_NEWDST = 0x13
+ RTA_PREF = 0x14
+ RTA_ENCAP_TYPE = 0x15
+ RTA_ENCAP = 0x16
+ RTA_EXPIRES = 0x17
+ RTA_PAD = 0x18
+ RTA_UID = 0x19
+ RTA_TTL_PROPAGATE = 0x1a
+ RTA_IP_PROTO = 0x1b
+ RTA_SPORT = 0x1c
+ RTA_DPORT = 0x1d
+ RTN_UNSPEC = 0x0
+ RTN_UNICAST = 0x1
+ RTN_LOCAL = 0x2
+ RTN_BROADCAST = 0x3
+ RTN_ANYCAST = 0x4
+ RTN_MULTICAST = 0x5
+ RTN_BLACKHOLE = 0x6
+ RTN_UNREACHABLE = 0x7
+ RTN_PROHIBIT = 0x8
+ RTN_THROW = 0x9
+ RTN_NAT = 0xa
+ RTN_XRESOLVE = 0xb
+ SizeofNlMsghdr = 0x10
+ SizeofNlMsgerr = 0x14
+ SizeofRtGenmsg = 0x1
+ SizeofNlAttr = 0x4
+ SizeofRtAttr = 0x4
+ SizeofIfInfomsg = 0x10
+ SizeofIfAddrmsg = 0x8
+ SizeofIfaCacheinfo = 0x10
+ SizeofRtMsg = 0xc
+ SizeofRtNexthop = 0x8
+ SizeofNdUseroptmsg = 0x10
+ SizeofNdMsg = 0xc
)
type NlMsghdr struct {
@@ -671,6 +681,8 @@ type InotifyEvent struct {
const SizeofInotifyEvent = 0x10
+const SI_LOAD_SHIFT = 0x10
+
type Utsname struct {
Sysname [65]byte
Nodename [65]byte
@@ -696,6 +708,22 @@ const (
AT_EACCESS = 0x200
)
+type OpenHow struct {
+ Flags uint64
+ Mode uint64
+ Resolve uint64
+}
+
+const SizeofOpenHow = 0x18
+
+const (
+ RESOLVE_BENEATH = 0x8
+ RESOLVE_IN_ROOT = 0x10
+ RESOLVE_NO_MAGICLINKS = 0x2
+ RESOLVE_NO_SYMLINKS = 0x4
+ RESOLVE_NO_XDEV = 0x1
+)
+
type PollFd struct {
Fd int32
Events int16
@@ -736,8 +764,6 @@ type SignalfdSiginfo struct {
_ [28]uint8
}
-const PERF_IOC_FLAG_GROUP = 0x1
-
type Winsize struct {
Row uint16
Col uint16
@@ -861,7 +887,10 @@ type PerfEventMmapPage struct {
Time_offset uint64
Time_zero uint64
Size uint32
- _ [948]uint8
+ _ uint32
+ Time_cycles uint64
+ Time_mask uint64
+ _ [928]uint8
Data_head uint64
Data_tail uint64
Data_offset uint64
@@ -903,13 +932,13 @@ const (
)
const (
- PERF_TYPE_HARDWARE = 0x0
- PERF_TYPE_SOFTWARE = 0x1
- PERF_TYPE_TRACEPOINT = 0x2
- PERF_TYPE_HW_CACHE = 0x3
- PERF_TYPE_RAW = 0x4
- PERF_TYPE_BREAKPOINT = 0x5
-
+ PERF_TYPE_HARDWARE = 0x0
+ PERF_TYPE_SOFTWARE = 0x1
+ PERF_TYPE_TRACEPOINT = 0x2
+ PERF_TYPE_HW_CACHE = 0x3
+ PERF_TYPE_RAW = 0x4
+ PERF_TYPE_BREAKPOINT = 0x5
+ PERF_TYPE_MAX = 0x6
PERF_COUNT_HW_CPU_CYCLES = 0x0
PERF_COUNT_HW_INSTRUCTIONS = 0x1
PERF_COUNT_HW_CACHE_REFERENCES = 0x2
@@ -920,99 +949,163 @@ const (
PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7
PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 0x8
PERF_COUNT_HW_REF_CPU_CYCLES = 0x9
-
- PERF_COUNT_HW_CACHE_L1D = 0x0
- PERF_COUNT_HW_CACHE_L1I = 0x1
- PERF_COUNT_HW_CACHE_LL = 0x2
- PERF_COUNT_HW_CACHE_DTLB = 0x3
- PERF_COUNT_HW_CACHE_ITLB = 0x4
- PERF_COUNT_HW_CACHE_BPU = 0x5
- PERF_COUNT_HW_CACHE_NODE = 0x6
-
- PERF_COUNT_HW_CACHE_OP_READ = 0x0
- PERF_COUNT_HW_CACHE_OP_WRITE = 0x1
- PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2
-
- PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0
- PERF_COUNT_HW_CACHE_RESULT_MISS = 0x1
-
- PERF_COUNT_SW_CPU_CLOCK = 0x0
- PERF_COUNT_SW_TASK_CLOCK = 0x1
- PERF_COUNT_SW_PAGE_FAULTS = 0x2
- PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3
- PERF_COUNT_SW_CPU_MIGRATIONS = 0x4
- PERF_COUNT_SW_PAGE_FAULTS_MIN = 0x5
- PERF_COUNT_SW_PAGE_FAULTS_MAJ = 0x6
- PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7
- PERF_COUNT_SW_EMULATION_FAULTS = 0x8
- PERF_COUNT_SW_DUMMY = 0x9
- PERF_COUNT_SW_BPF_OUTPUT = 0xa
-
- PERF_SAMPLE_IP = 0x1
- PERF_SAMPLE_TID = 0x2
- PERF_SAMPLE_TIME = 0x4
- PERF_SAMPLE_ADDR = 0x8
- PERF_SAMPLE_READ = 0x10
- PERF_SAMPLE_CALLCHAIN = 0x20
- PERF_SAMPLE_ID = 0x40
- PERF_SAMPLE_CPU = 0x80
- PERF_SAMPLE_PERIOD = 0x100
- PERF_SAMPLE_STREAM_ID = 0x200
- PERF_SAMPLE_RAW = 0x400
- PERF_SAMPLE_BRANCH_STACK = 0x800
-
- PERF_SAMPLE_BRANCH_USER = 0x1
- PERF_SAMPLE_BRANCH_KERNEL = 0x2
- PERF_SAMPLE_BRANCH_HV = 0x4
- PERF_SAMPLE_BRANCH_ANY = 0x8
- PERF_SAMPLE_BRANCH_ANY_CALL = 0x10
- PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20
- PERF_SAMPLE_BRANCH_IND_CALL = 0x40
- PERF_SAMPLE_BRANCH_ABORT_TX = 0x80
- PERF_SAMPLE_BRANCH_IN_TX = 0x100
- PERF_SAMPLE_BRANCH_NO_TX = 0x200
- PERF_SAMPLE_BRANCH_COND = 0x400
- PERF_SAMPLE_BRANCH_CALL_STACK = 0x800
- PERF_SAMPLE_BRANCH_IND_JUMP = 0x1000
- PERF_SAMPLE_BRANCH_CALL = 0x2000
- PERF_SAMPLE_BRANCH_NO_FLAGS = 0x4000
- PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000
- PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000
-
- PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1
- PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2
- PERF_FORMAT_ID = 0x4
- PERF_FORMAT_GROUP = 0x8
-
- PERF_RECORD_MMAP = 0x1
- PERF_RECORD_LOST = 0x2
- PERF_RECORD_COMM = 0x3
- PERF_RECORD_EXIT = 0x4
- PERF_RECORD_THROTTLE = 0x5
- PERF_RECORD_UNTHROTTLE = 0x6
- PERF_RECORD_FORK = 0x7
- PERF_RECORD_READ = 0x8
- PERF_RECORD_SAMPLE = 0x9
- PERF_RECORD_MMAP2 = 0xa
- PERF_RECORD_AUX = 0xb
- PERF_RECORD_ITRACE_START = 0xc
- PERF_RECORD_LOST_SAMPLES = 0xd
- PERF_RECORD_SWITCH = 0xe
- PERF_RECORD_SWITCH_CPU_WIDE = 0xf
- PERF_RECORD_NAMESPACES = 0x10
-
- PERF_CONTEXT_HV = -0x20
- PERF_CONTEXT_KERNEL = -0x80
- PERF_CONTEXT_USER = -0x200
-
- PERF_CONTEXT_GUEST = -0x800
- PERF_CONTEXT_GUEST_KERNEL = -0x880
- PERF_CONTEXT_GUEST_USER = -0xa00
-
- PERF_FLAG_FD_NO_GROUP = 0x1
- PERF_FLAG_FD_OUTPUT = 0x2
- PERF_FLAG_PID_CGROUP = 0x4
- PERF_FLAG_FD_CLOEXEC = 0x8
+ PERF_COUNT_HW_MAX = 0xa
+ PERF_COUNT_HW_CACHE_L1D = 0x0
+ PERF_COUNT_HW_CACHE_L1I = 0x1
+ PERF_COUNT_HW_CACHE_LL = 0x2
+ PERF_COUNT_HW_CACHE_DTLB = 0x3
+ PERF_COUNT_HW_CACHE_ITLB = 0x4
+ PERF_COUNT_HW_CACHE_BPU = 0x5
+ PERF_COUNT_HW_CACHE_NODE = 0x6
+ PERF_COUNT_HW_CACHE_MAX = 0x7
+ PERF_COUNT_HW_CACHE_OP_READ = 0x0
+ PERF_COUNT_HW_CACHE_OP_WRITE = 0x1
+ PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2
+ PERF_COUNT_HW_CACHE_OP_MAX = 0x3
+ PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0
+ PERF_COUNT_HW_CACHE_RESULT_MISS = 0x1
+ PERF_COUNT_HW_CACHE_RESULT_MAX = 0x2
+ PERF_COUNT_SW_CPU_CLOCK = 0x0
+ PERF_COUNT_SW_TASK_CLOCK = 0x1
+ PERF_COUNT_SW_PAGE_FAULTS = 0x2
+ PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3
+ PERF_COUNT_SW_CPU_MIGRATIONS = 0x4
+ PERF_COUNT_SW_PAGE_FAULTS_MIN = 0x5
+ PERF_COUNT_SW_PAGE_FAULTS_MAJ = 0x6
+ PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7
+ PERF_COUNT_SW_EMULATION_FAULTS = 0x8
+ PERF_COUNT_SW_DUMMY = 0x9
+ PERF_COUNT_SW_BPF_OUTPUT = 0xa
+ PERF_COUNT_SW_MAX = 0xb
+ PERF_SAMPLE_IP = 0x1
+ PERF_SAMPLE_TID = 0x2
+ PERF_SAMPLE_TIME = 0x4
+ PERF_SAMPLE_ADDR = 0x8
+ PERF_SAMPLE_READ = 0x10
+ PERF_SAMPLE_CALLCHAIN = 0x20
+ PERF_SAMPLE_ID = 0x40
+ PERF_SAMPLE_CPU = 0x80
+ PERF_SAMPLE_PERIOD = 0x100
+ PERF_SAMPLE_STREAM_ID = 0x200
+ PERF_SAMPLE_RAW = 0x400
+ PERF_SAMPLE_BRANCH_STACK = 0x800
+ PERF_SAMPLE_REGS_USER = 0x1000
+ PERF_SAMPLE_STACK_USER = 0x2000
+ PERF_SAMPLE_WEIGHT = 0x4000
+ PERF_SAMPLE_DATA_SRC = 0x8000
+ PERF_SAMPLE_IDENTIFIER = 0x10000
+ PERF_SAMPLE_TRANSACTION = 0x20000
+ PERF_SAMPLE_REGS_INTR = 0x40000
+ PERF_SAMPLE_PHYS_ADDR = 0x80000
+ PERF_SAMPLE_AUX = 0x100000
+ PERF_SAMPLE_CGROUP = 0x200000
+ PERF_SAMPLE_MAX = 0x400000
+ PERF_SAMPLE_BRANCH_USER_SHIFT = 0x0
+ PERF_SAMPLE_BRANCH_KERNEL_SHIFT = 0x1
+ PERF_SAMPLE_BRANCH_HV_SHIFT = 0x2
+ PERF_SAMPLE_BRANCH_ANY_SHIFT = 0x3
+ PERF_SAMPLE_BRANCH_ANY_CALL_SHIFT = 0x4
+ PERF_SAMPLE_BRANCH_ANY_RETURN_SHIFT = 0x5
+ PERF_SAMPLE_BRANCH_IND_CALL_SHIFT = 0x6
+ PERF_SAMPLE_BRANCH_ABORT_TX_SHIFT = 0x7
+ PERF_SAMPLE_BRANCH_IN_TX_SHIFT = 0x8
+ PERF_SAMPLE_BRANCH_NO_TX_SHIFT = 0x9
+ PERF_SAMPLE_BRANCH_COND_SHIFT = 0xa
+ PERF_SAMPLE_BRANCH_CALL_STACK_SHIFT = 0xb
+ PERF_SAMPLE_BRANCH_IND_JUMP_SHIFT = 0xc
+ PERF_SAMPLE_BRANCH_CALL_SHIFT = 0xd
+ PERF_SAMPLE_BRANCH_NO_FLAGS_SHIFT = 0xe
+ PERF_SAMPLE_BRANCH_NO_CYCLES_SHIFT = 0xf
+ PERF_SAMPLE_BRANCH_TYPE_SAVE_SHIFT = 0x10
+ PERF_SAMPLE_BRANCH_HW_INDEX_SHIFT = 0x11
+ PERF_SAMPLE_BRANCH_MAX_SHIFT = 0x12
+ PERF_SAMPLE_BRANCH_USER = 0x1
+ PERF_SAMPLE_BRANCH_KERNEL = 0x2
+ PERF_SAMPLE_BRANCH_HV = 0x4
+ PERF_SAMPLE_BRANCH_ANY = 0x8
+ PERF_SAMPLE_BRANCH_ANY_CALL = 0x10
+ PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20
+ PERF_SAMPLE_BRANCH_IND_CALL = 0x40
+ PERF_SAMPLE_BRANCH_ABORT_TX = 0x80
+ PERF_SAMPLE_BRANCH_IN_TX = 0x100
+ PERF_SAMPLE_BRANCH_NO_TX = 0x200
+ PERF_SAMPLE_BRANCH_COND = 0x400
+ PERF_SAMPLE_BRANCH_CALL_STACK = 0x800
+ PERF_SAMPLE_BRANCH_IND_JUMP = 0x1000
+ PERF_SAMPLE_BRANCH_CALL = 0x2000
+ PERF_SAMPLE_BRANCH_NO_FLAGS = 0x4000
+ PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000
+ PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000
+ PERF_SAMPLE_BRANCH_HW_INDEX = 0x20000
+ PERF_SAMPLE_BRANCH_MAX = 0x40000
+ PERF_BR_UNKNOWN = 0x0
+ PERF_BR_COND = 0x1
+ PERF_BR_UNCOND = 0x2
+ PERF_BR_IND = 0x3
+ PERF_BR_CALL = 0x4
+ PERF_BR_IND_CALL = 0x5
+ PERF_BR_RET = 0x6
+ PERF_BR_SYSCALL = 0x7
+ PERF_BR_SYSRET = 0x8
+ PERF_BR_COND_CALL = 0x9
+ PERF_BR_COND_RET = 0xa
+ PERF_BR_MAX = 0xb
+ PERF_SAMPLE_REGS_ABI_NONE = 0x0
+ PERF_SAMPLE_REGS_ABI_32 = 0x1
+ PERF_SAMPLE_REGS_ABI_64 = 0x2
+ PERF_TXN_ELISION = 0x1
+ PERF_TXN_TRANSACTION = 0x2
+ PERF_TXN_SYNC = 0x4
+ PERF_TXN_ASYNC = 0x8
+ PERF_TXN_RETRY = 0x10
+ PERF_TXN_CONFLICT = 0x20
+ PERF_TXN_CAPACITY_WRITE = 0x40
+ PERF_TXN_CAPACITY_READ = 0x80
+ PERF_TXN_MAX = 0x100
+ PERF_TXN_ABORT_MASK = -0x100000000
+ PERF_TXN_ABORT_SHIFT = 0x20
+ PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1
+ PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2
+ PERF_FORMAT_ID = 0x4
+ PERF_FORMAT_GROUP = 0x8
+ PERF_FORMAT_MAX = 0x10
+ PERF_IOC_FLAG_GROUP = 0x1
+ PERF_RECORD_MMAP = 0x1
+ PERF_RECORD_LOST = 0x2
+ PERF_RECORD_COMM = 0x3
+ PERF_RECORD_EXIT = 0x4
+ PERF_RECORD_THROTTLE = 0x5
+ PERF_RECORD_UNTHROTTLE = 0x6
+ PERF_RECORD_FORK = 0x7
+ PERF_RECORD_READ = 0x8
+ PERF_RECORD_SAMPLE = 0x9
+ PERF_RECORD_MMAP2 = 0xa
+ PERF_RECORD_AUX = 0xb
+ PERF_RECORD_ITRACE_START = 0xc
+ PERF_RECORD_LOST_SAMPLES = 0xd
+ PERF_RECORD_SWITCH = 0xe
+ PERF_RECORD_SWITCH_CPU_WIDE = 0xf
+ PERF_RECORD_NAMESPACES = 0x10
+ PERF_RECORD_KSYMBOL = 0x11
+ PERF_RECORD_BPF_EVENT = 0x12
+ PERF_RECORD_CGROUP = 0x13
+ PERF_RECORD_TEXT_POKE = 0x14
+ PERF_RECORD_MAX = 0x15
+ PERF_RECORD_KSYMBOL_TYPE_UNKNOWN = 0x0
+ PERF_RECORD_KSYMBOL_TYPE_BPF = 0x1
+ PERF_RECORD_KSYMBOL_TYPE_OOL = 0x2
+ PERF_RECORD_KSYMBOL_TYPE_MAX = 0x3
+ PERF_BPF_EVENT_UNKNOWN = 0x0
+ PERF_BPF_EVENT_PROG_LOAD = 0x1
+ PERF_BPF_EVENT_PROG_UNLOAD = 0x2
+ PERF_BPF_EVENT_MAX = 0x3
+ PERF_CONTEXT_HV = -0x20
+ PERF_CONTEXT_KERNEL = -0x80
+ PERF_CONTEXT_USER = -0x200
+ PERF_CONTEXT_GUEST = -0x800
+ PERF_CONTEXT_GUEST_KERNEL = -0x880
+ PERF_CONTEXT_GUEST_USER = -0xa00
+ PERF_CONTEXT_MAX = -0xfff
)
type TCPMD5Sig struct {
@@ -1231,6 +1324,394 @@ const (
SizeofTpacketStatsV3 = 0xc
)
+const (
+ IFLA_UNSPEC = 0x0
+ IFLA_ADDRESS = 0x1
+ IFLA_BROADCAST = 0x2
+ IFLA_IFNAME = 0x3
+ IFLA_MTU = 0x4
+ IFLA_LINK = 0x5
+ IFLA_QDISC = 0x6
+ IFLA_STATS = 0x7
+ IFLA_COST = 0x8
+ IFLA_PRIORITY = 0x9
+ IFLA_MASTER = 0xa
+ IFLA_WIRELESS = 0xb
+ IFLA_PROTINFO = 0xc
+ IFLA_TXQLEN = 0xd
+ IFLA_MAP = 0xe
+ IFLA_WEIGHT = 0xf
+ IFLA_OPERSTATE = 0x10
+ IFLA_LINKMODE = 0x11
+ IFLA_LINKINFO = 0x12
+ IFLA_NET_NS_PID = 0x13
+ IFLA_IFALIAS = 0x14
+ IFLA_NUM_VF = 0x15
+ IFLA_VFINFO_LIST = 0x16
+ IFLA_STATS64 = 0x17
+ IFLA_VF_PORTS = 0x18
+ IFLA_PORT_SELF = 0x19
+ IFLA_AF_SPEC = 0x1a
+ IFLA_GROUP = 0x1b
+ IFLA_NET_NS_FD = 0x1c
+ IFLA_EXT_MASK = 0x1d
+ IFLA_PROMISCUITY = 0x1e
+ IFLA_NUM_TX_QUEUES = 0x1f
+ IFLA_NUM_RX_QUEUES = 0x20
+ IFLA_CARRIER = 0x21
+ IFLA_PHYS_PORT_ID = 0x22
+ IFLA_CARRIER_CHANGES = 0x23
+ IFLA_PHYS_SWITCH_ID = 0x24
+ IFLA_LINK_NETNSID = 0x25
+ IFLA_PHYS_PORT_NAME = 0x26
+ IFLA_PROTO_DOWN = 0x27
+ IFLA_GSO_MAX_SEGS = 0x28
+ IFLA_GSO_MAX_SIZE = 0x29
+ IFLA_PAD = 0x2a
+ IFLA_XDP = 0x2b
+ IFLA_EVENT = 0x2c
+ IFLA_NEW_NETNSID = 0x2d
+ IFLA_IF_NETNSID = 0x2e
+ IFLA_TARGET_NETNSID = 0x2e
+ IFLA_CARRIER_UP_COUNT = 0x2f
+ IFLA_CARRIER_DOWN_COUNT = 0x30
+ IFLA_NEW_IFINDEX = 0x31
+ IFLA_MIN_MTU = 0x32
+ IFLA_MAX_MTU = 0x33
+ IFLA_PROP_LIST = 0x34
+ IFLA_ALT_IFNAME = 0x35
+ IFLA_PERM_ADDRESS = 0x36
+ IFLA_INET_UNSPEC = 0x0
+ IFLA_INET_CONF = 0x1
+ IFLA_INET6_UNSPEC = 0x0
+ IFLA_INET6_FLAGS = 0x1
+ IFLA_INET6_CONF = 0x2
+ IFLA_INET6_STATS = 0x3
+ IFLA_INET6_MCAST = 0x4
+ IFLA_INET6_CACHEINFO = 0x5
+ IFLA_INET6_ICMP6STATS = 0x6
+ IFLA_INET6_TOKEN = 0x7
+ IFLA_INET6_ADDR_GEN_MODE = 0x8
+ IFLA_BR_UNSPEC = 0x0
+ IFLA_BR_FORWARD_DELAY = 0x1
+ IFLA_BR_HELLO_TIME = 0x2
+ IFLA_BR_MAX_AGE = 0x3
+ IFLA_BR_AGEING_TIME = 0x4
+ IFLA_BR_STP_STATE = 0x5
+ IFLA_BR_PRIORITY = 0x6
+ IFLA_BR_VLAN_FILTERING = 0x7
+ IFLA_BR_VLAN_PROTOCOL = 0x8
+ IFLA_BR_GROUP_FWD_MASK = 0x9
+ IFLA_BR_ROOT_ID = 0xa
+ IFLA_BR_BRIDGE_ID = 0xb
+ IFLA_BR_ROOT_PORT = 0xc
+ IFLA_BR_ROOT_PATH_COST = 0xd
+ IFLA_BR_TOPOLOGY_CHANGE = 0xe
+ IFLA_BR_TOPOLOGY_CHANGE_DETECTED = 0xf
+ IFLA_BR_HELLO_TIMER = 0x10
+ IFLA_BR_TCN_TIMER = 0x11
+ IFLA_BR_TOPOLOGY_CHANGE_TIMER = 0x12
+ IFLA_BR_GC_TIMER = 0x13
+ IFLA_BR_GROUP_ADDR = 0x14
+ IFLA_BR_FDB_FLUSH = 0x15
+ IFLA_BR_MCAST_ROUTER = 0x16
+ IFLA_BR_MCAST_SNOOPING = 0x17
+ IFLA_BR_MCAST_QUERY_USE_IFADDR = 0x18
+ IFLA_BR_MCAST_QUERIER = 0x19
+ IFLA_BR_MCAST_HASH_ELASTICITY = 0x1a
+ IFLA_BR_MCAST_HASH_MAX = 0x1b
+ IFLA_BR_MCAST_LAST_MEMBER_CNT = 0x1c
+ IFLA_BR_MCAST_STARTUP_QUERY_CNT = 0x1d
+ IFLA_BR_MCAST_LAST_MEMBER_INTVL = 0x1e
+ IFLA_BR_MCAST_MEMBERSHIP_INTVL = 0x1f
+ IFLA_BR_MCAST_QUERIER_INTVL = 0x20
+ IFLA_BR_MCAST_QUERY_INTVL = 0x21
+ IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 0x22
+ IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 0x23
+ IFLA_BR_NF_CALL_IPTABLES = 0x24
+ IFLA_BR_NF_CALL_IP6TABLES = 0x25
+ IFLA_BR_NF_CALL_ARPTABLES = 0x26
+ IFLA_BR_VLAN_DEFAULT_PVID = 0x27
+ IFLA_BR_PAD = 0x28
+ IFLA_BR_VLAN_STATS_ENABLED = 0x29
+ IFLA_BR_MCAST_STATS_ENABLED = 0x2a
+ IFLA_BR_MCAST_IGMP_VERSION = 0x2b
+ IFLA_BR_MCAST_MLD_VERSION = 0x2c
+ IFLA_BR_VLAN_STATS_PER_PORT = 0x2d
+ IFLA_BR_MULTI_BOOLOPT = 0x2e
+ IFLA_BRPORT_UNSPEC = 0x0
+ IFLA_BRPORT_STATE = 0x1
+ IFLA_BRPORT_PRIORITY = 0x2
+ IFLA_BRPORT_COST = 0x3
+ IFLA_BRPORT_MODE = 0x4
+ IFLA_BRPORT_GUARD = 0x5
+ IFLA_BRPORT_PROTECT = 0x6
+ IFLA_BRPORT_FAST_LEAVE = 0x7
+ IFLA_BRPORT_LEARNING = 0x8
+ IFLA_BRPORT_UNICAST_FLOOD = 0x9
+ IFLA_BRPORT_PROXYARP = 0xa
+ IFLA_BRPORT_LEARNING_SYNC = 0xb
+ IFLA_BRPORT_PROXYARP_WIFI = 0xc
+ IFLA_BRPORT_ROOT_ID = 0xd
+ IFLA_BRPORT_BRIDGE_ID = 0xe
+ IFLA_BRPORT_DESIGNATED_PORT = 0xf
+ IFLA_BRPORT_DESIGNATED_COST = 0x10
+ IFLA_BRPORT_ID = 0x11
+ IFLA_BRPORT_NO = 0x12
+ IFLA_BRPORT_TOPOLOGY_CHANGE_ACK = 0x13
+ IFLA_BRPORT_CONFIG_PENDING = 0x14
+ IFLA_BRPORT_MESSAGE_AGE_TIMER = 0x15
+ IFLA_BRPORT_FORWARD_DELAY_TIMER = 0x16
+ IFLA_BRPORT_HOLD_TIMER = 0x17
+ IFLA_BRPORT_FLUSH = 0x18
+ IFLA_BRPORT_MULTICAST_ROUTER = 0x19
+ IFLA_BRPORT_PAD = 0x1a
+ IFLA_BRPORT_MCAST_FLOOD = 0x1b
+ IFLA_BRPORT_MCAST_TO_UCAST = 0x1c
+ IFLA_BRPORT_VLAN_TUNNEL = 0x1d
+ IFLA_BRPORT_BCAST_FLOOD = 0x1e
+ IFLA_BRPORT_GROUP_FWD_MASK = 0x1f
+ IFLA_BRPORT_NEIGH_SUPPRESS = 0x20
+ IFLA_BRPORT_ISOLATED = 0x21
+ IFLA_BRPORT_BACKUP_PORT = 0x22
+ IFLA_BRPORT_MRP_RING_OPEN = 0x23
+ IFLA_INFO_UNSPEC = 0x0
+ IFLA_INFO_KIND = 0x1
+ IFLA_INFO_DATA = 0x2
+ IFLA_INFO_XSTATS = 0x3
+ IFLA_INFO_SLAVE_KIND = 0x4
+ IFLA_INFO_SLAVE_DATA = 0x5
+ IFLA_VLAN_UNSPEC = 0x0
+ IFLA_VLAN_ID = 0x1
+ IFLA_VLAN_FLAGS = 0x2
+ IFLA_VLAN_EGRESS_QOS = 0x3
+ IFLA_VLAN_INGRESS_QOS = 0x4
+ IFLA_VLAN_PROTOCOL = 0x5
+ IFLA_VLAN_QOS_UNSPEC = 0x0
+ IFLA_VLAN_QOS_MAPPING = 0x1
+ IFLA_MACVLAN_UNSPEC = 0x0
+ IFLA_MACVLAN_MODE = 0x1
+ IFLA_MACVLAN_FLAGS = 0x2
+ IFLA_MACVLAN_MACADDR_MODE = 0x3
+ IFLA_MACVLAN_MACADDR = 0x4
+ IFLA_MACVLAN_MACADDR_DATA = 0x5
+ IFLA_MACVLAN_MACADDR_COUNT = 0x6
+ IFLA_VRF_UNSPEC = 0x0
+ IFLA_VRF_TABLE = 0x1
+ IFLA_VRF_PORT_UNSPEC = 0x0
+ IFLA_VRF_PORT_TABLE = 0x1
+ IFLA_MACSEC_UNSPEC = 0x0
+ IFLA_MACSEC_SCI = 0x1
+ IFLA_MACSEC_PORT = 0x2
+ IFLA_MACSEC_ICV_LEN = 0x3
+ IFLA_MACSEC_CIPHER_SUITE = 0x4
+ IFLA_MACSEC_WINDOW = 0x5
+ IFLA_MACSEC_ENCODING_SA = 0x6
+ IFLA_MACSEC_ENCRYPT = 0x7
+ IFLA_MACSEC_PROTECT = 0x8
+ IFLA_MACSEC_INC_SCI = 0x9
+ IFLA_MACSEC_ES = 0xa
+ IFLA_MACSEC_SCB = 0xb
+ IFLA_MACSEC_REPLAY_PROTECT = 0xc
+ IFLA_MACSEC_VALIDATION = 0xd
+ IFLA_MACSEC_PAD = 0xe
+ IFLA_MACSEC_OFFLOAD = 0xf
+ IFLA_XFRM_UNSPEC = 0x0
+ IFLA_XFRM_LINK = 0x1
+ IFLA_XFRM_IF_ID = 0x2
+ IFLA_IPVLAN_UNSPEC = 0x0
+ IFLA_IPVLAN_MODE = 0x1
+ IFLA_IPVLAN_FLAGS = 0x2
+ IFLA_VXLAN_UNSPEC = 0x0
+ IFLA_VXLAN_ID = 0x1
+ IFLA_VXLAN_GROUP = 0x2
+ IFLA_VXLAN_LINK = 0x3
+ IFLA_VXLAN_LOCAL = 0x4
+ IFLA_VXLAN_TTL = 0x5
+ IFLA_VXLAN_TOS = 0x6
+ IFLA_VXLAN_LEARNING = 0x7
+ IFLA_VXLAN_AGEING = 0x8
+ IFLA_VXLAN_LIMIT = 0x9
+ IFLA_VXLAN_PORT_RANGE = 0xa
+ IFLA_VXLAN_PROXY = 0xb
+ IFLA_VXLAN_RSC = 0xc
+ IFLA_VXLAN_L2MISS = 0xd
+ IFLA_VXLAN_L3MISS = 0xe
+ IFLA_VXLAN_PORT = 0xf
+ IFLA_VXLAN_GROUP6 = 0x10
+ IFLA_VXLAN_LOCAL6 = 0x11
+ IFLA_VXLAN_UDP_CSUM = 0x12
+ IFLA_VXLAN_UDP_ZERO_CSUM6_TX = 0x13
+ IFLA_VXLAN_UDP_ZERO_CSUM6_RX = 0x14
+ IFLA_VXLAN_REMCSUM_TX = 0x15
+ IFLA_VXLAN_REMCSUM_RX = 0x16
+ IFLA_VXLAN_GBP = 0x17
+ IFLA_VXLAN_REMCSUM_NOPARTIAL = 0x18
+ IFLA_VXLAN_COLLECT_METADATA = 0x19
+ IFLA_VXLAN_LABEL = 0x1a
+ IFLA_VXLAN_GPE = 0x1b
+ IFLA_VXLAN_TTL_INHERIT = 0x1c
+ IFLA_VXLAN_DF = 0x1d
+ IFLA_GENEVE_UNSPEC = 0x0
+ IFLA_GENEVE_ID = 0x1
+ IFLA_GENEVE_REMOTE = 0x2
+ IFLA_GENEVE_TTL = 0x3
+ IFLA_GENEVE_TOS = 0x4
+ IFLA_GENEVE_PORT = 0x5
+ IFLA_GENEVE_COLLECT_METADATA = 0x6
+ IFLA_GENEVE_REMOTE6 = 0x7
+ IFLA_GENEVE_UDP_CSUM = 0x8
+ IFLA_GENEVE_UDP_ZERO_CSUM6_TX = 0x9
+ IFLA_GENEVE_UDP_ZERO_CSUM6_RX = 0xa
+ IFLA_GENEVE_LABEL = 0xb
+ IFLA_GENEVE_TTL_INHERIT = 0xc
+ IFLA_GENEVE_DF = 0xd
+ IFLA_BAREUDP_UNSPEC = 0x0
+ IFLA_BAREUDP_PORT = 0x1
+ IFLA_BAREUDP_ETHERTYPE = 0x2
+ IFLA_BAREUDP_SRCPORT_MIN = 0x3
+ IFLA_BAREUDP_MULTIPROTO_MODE = 0x4
+ IFLA_PPP_UNSPEC = 0x0
+ IFLA_PPP_DEV_FD = 0x1
+ IFLA_GTP_UNSPEC = 0x0
+ IFLA_GTP_FD0 = 0x1
+ IFLA_GTP_FD1 = 0x2
+ IFLA_GTP_PDP_HASHSIZE = 0x3
+ IFLA_GTP_ROLE = 0x4
+ IFLA_BOND_UNSPEC = 0x0
+ IFLA_BOND_MODE = 0x1
+ IFLA_BOND_ACTIVE_SLAVE = 0x2
+ IFLA_BOND_MIIMON = 0x3
+ IFLA_BOND_UPDELAY = 0x4
+ IFLA_BOND_DOWNDELAY = 0x5
+ IFLA_BOND_USE_CARRIER = 0x6
+ IFLA_BOND_ARP_INTERVAL = 0x7
+ IFLA_BOND_ARP_IP_TARGET = 0x8
+ IFLA_BOND_ARP_VALIDATE = 0x9
+ IFLA_BOND_ARP_ALL_TARGETS = 0xa
+ IFLA_BOND_PRIMARY = 0xb
+ IFLA_BOND_PRIMARY_RESELECT = 0xc
+ IFLA_BOND_FAIL_OVER_MAC = 0xd
+ IFLA_BOND_XMIT_HASH_POLICY = 0xe
+ IFLA_BOND_RESEND_IGMP = 0xf
+ IFLA_BOND_NUM_PEER_NOTIF = 0x10
+ IFLA_BOND_ALL_SLAVES_ACTIVE = 0x11
+ IFLA_BOND_MIN_LINKS = 0x12
+ IFLA_BOND_LP_INTERVAL = 0x13
+ IFLA_BOND_PACKETS_PER_SLAVE = 0x14
+ IFLA_BOND_AD_LACP_RATE = 0x15
+ IFLA_BOND_AD_SELECT = 0x16
+ IFLA_BOND_AD_INFO = 0x17
+ IFLA_BOND_AD_ACTOR_SYS_PRIO = 0x18
+ IFLA_BOND_AD_USER_PORT_KEY = 0x19
+ IFLA_BOND_AD_ACTOR_SYSTEM = 0x1a
+ IFLA_BOND_TLB_DYNAMIC_LB = 0x1b
+ IFLA_BOND_PEER_NOTIF_DELAY = 0x1c
+ IFLA_BOND_AD_INFO_UNSPEC = 0x0
+ IFLA_BOND_AD_INFO_AGGREGATOR = 0x1
+ IFLA_BOND_AD_INFO_NUM_PORTS = 0x2
+ IFLA_BOND_AD_INFO_ACTOR_KEY = 0x3
+ IFLA_BOND_AD_INFO_PARTNER_KEY = 0x4
+ IFLA_BOND_AD_INFO_PARTNER_MAC = 0x5
+ IFLA_BOND_SLAVE_UNSPEC = 0x0
+ IFLA_BOND_SLAVE_STATE = 0x1
+ IFLA_BOND_SLAVE_MII_STATUS = 0x2
+ IFLA_BOND_SLAVE_LINK_FAILURE_COUNT = 0x3
+ IFLA_BOND_SLAVE_PERM_HWADDR = 0x4
+ IFLA_BOND_SLAVE_QUEUE_ID = 0x5
+ IFLA_BOND_SLAVE_AD_AGGREGATOR_ID = 0x6
+ IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE = 0x7
+ IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE = 0x8
+ IFLA_VF_INFO_UNSPEC = 0x0
+ IFLA_VF_INFO = 0x1
+ IFLA_VF_UNSPEC = 0x0
+ IFLA_VF_MAC = 0x1
+ IFLA_VF_VLAN = 0x2
+ IFLA_VF_TX_RATE = 0x3
+ IFLA_VF_SPOOFCHK = 0x4
+ IFLA_VF_LINK_STATE = 0x5
+ IFLA_VF_RATE = 0x6
+ IFLA_VF_RSS_QUERY_EN = 0x7
+ IFLA_VF_STATS = 0x8
+ IFLA_VF_TRUST = 0x9
+ IFLA_VF_IB_NODE_GUID = 0xa
+ IFLA_VF_IB_PORT_GUID = 0xb
+ IFLA_VF_VLAN_LIST = 0xc
+ IFLA_VF_BROADCAST = 0xd
+ IFLA_VF_VLAN_INFO_UNSPEC = 0x0
+ IFLA_VF_VLAN_INFO = 0x1
+ IFLA_VF_LINK_STATE_AUTO = 0x0
+ IFLA_VF_LINK_STATE_ENABLE = 0x1
+ IFLA_VF_LINK_STATE_DISABLE = 0x2
+ IFLA_VF_STATS_RX_PACKETS = 0x0
+ IFLA_VF_STATS_TX_PACKETS = 0x1
+ IFLA_VF_STATS_RX_BYTES = 0x2
+ IFLA_VF_STATS_TX_BYTES = 0x3
+ IFLA_VF_STATS_BROADCAST = 0x4
+ IFLA_VF_STATS_MULTICAST = 0x5
+ IFLA_VF_STATS_PAD = 0x6
+ IFLA_VF_STATS_RX_DROPPED = 0x7
+ IFLA_VF_STATS_TX_DROPPED = 0x8
+ IFLA_VF_PORT_UNSPEC = 0x0
+ IFLA_VF_PORT = 0x1
+ IFLA_PORT_UNSPEC = 0x0
+ IFLA_PORT_VF = 0x1
+ IFLA_PORT_PROFILE = 0x2
+ IFLA_PORT_VSI_TYPE = 0x3
+ IFLA_PORT_INSTANCE_UUID = 0x4
+ IFLA_PORT_HOST_UUID = 0x5
+ IFLA_PORT_REQUEST = 0x6
+ IFLA_PORT_RESPONSE = 0x7
+ IFLA_IPOIB_UNSPEC = 0x0
+ IFLA_IPOIB_PKEY = 0x1
+ IFLA_IPOIB_MODE = 0x2
+ IFLA_IPOIB_UMCAST = 0x3
+ IFLA_HSR_UNSPEC = 0x0
+ IFLA_HSR_SLAVE1 = 0x1
+ IFLA_HSR_SLAVE2 = 0x2
+ IFLA_HSR_MULTICAST_SPEC = 0x3
+ IFLA_HSR_SUPERVISION_ADDR = 0x4
+ IFLA_HSR_SEQ_NR = 0x5
+ IFLA_HSR_VERSION = 0x6
+ IFLA_STATS_UNSPEC = 0x0
+ IFLA_STATS_LINK_64 = 0x1
+ IFLA_STATS_LINK_XSTATS = 0x2
+ IFLA_STATS_LINK_XSTATS_SLAVE = 0x3
+ IFLA_STATS_LINK_OFFLOAD_XSTATS = 0x4
+ IFLA_STATS_AF_SPEC = 0x5
+ IFLA_OFFLOAD_XSTATS_UNSPEC = 0x0
+ IFLA_OFFLOAD_XSTATS_CPU_HIT = 0x1
+ IFLA_XDP_UNSPEC = 0x0
+ IFLA_XDP_FD = 0x1
+ IFLA_XDP_ATTACHED = 0x2
+ IFLA_XDP_FLAGS = 0x3
+ IFLA_XDP_PROG_ID = 0x4
+ IFLA_XDP_DRV_PROG_ID = 0x5
+ IFLA_XDP_SKB_PROG_ID = 0x6
+ IFLA_XDP_HW_PROG_ID = 0x7
+ IFLA_XDP_EXPECTED_FD = 0x8
+ IFLA_EVENT_NONE = 0x0
+ IFLA_EVENT_REBOOT = 0x1
+ IFLA_EVENT_FEATURES = 0x2
+ IFLA_EVENT_BONDING_FAILOVER = 0x3
+ IFLA_EVENT_NOTIFY_PEERS = 0x4
+ IFLA_EVENT_IGMP_RESEND = 0x5
+ IFLA_EVENT_BONDING_OPTIONS = 0x6
+ IFLA_TUN_UNSPEC = 0x0
+ IFLA_TUN_OWNER = 0x1
+ IFLA_TUN_GROUP = 0x2
+ IFLA_TUN_TYPE = 0x3
+ IFLA_TUN_PI = 0x4
+ IFLA_TUN_VNET_HDR = 0x5
+ IFLA_TUN_PERSIST = 0x6
+ IFLA_TUN_MULTI_QUEUE = 0x7
+ IFLA_TUN_NUM_QUEUES = 0x8
+ IFLA_TUN_NUM_DISABLED_QUEUES = 0x9
+ IFLA_RMNET_UNSPEC = 0x0
+ IFLA_RMNET_MUX_ID = 0x1
+ IFLA_RMNET_FLAGS = 0x2
+)
+
const (
NF_INET_PRE_ROUTING = 0x0
NF_INET_LOCAL_IN = 0x1
@@ -1318,7 +1799,7 @@ const (
NFT_MSG_DELOBJ = 0x14
NFT_MSG_GETOBJ_RESET = 0x15
NFT_MSG_MAX = 0x19
- NFTA_LIST_UNPEC = 0x0
+ NFTA_LIST_UNSPEC = 0x0
NFTA_LIST_ELEM = 0x1
NFTA_HOOK_UNSPEC = 0x0
NFTA_HOOK_HOOKNUM = 0x1
@@ -1689,6 +2170,21 @@ const (
NFT_NG_RANDOM = 0x1
)
+const (
+ NFTA_TARGET_UNSPEC = 0x0
+ NFTA_TARGET_NAME = 0x1
+ NFTA_TARGET_REV = 0x2
+ NFTA_TARGET_INFO = 0x3
+ NFTA_MATCH_UNSPEC = 0x0
+ NFTA_MATCH_NAME = 0x1
+ NFTA_MATCH_REV = 0x2
+ NFTA_MATCH_INFO = 0x3
+ NFTA_COMPAT_UNSPEC = 0x0
+ NFTA_COMPAT_NAME = 0x1
+ NFTA_COMPAT_REV = 0x2
+ NFTA_COMPAT_TYPE = 0x3
+)
+
type RTCTime struct {
Sec int32
Min int32
@@ -1742,9 +2238,12 @@ type XDPMmapOffsets struct {
}
type XDPStatistics struct {
- Rx_dropped uint64
- Rx_invalid_descs uint64
- Tx_invalid_descs uint64
+ Rx_dropped uint64
+ Rx_invalid_descs uint64
+ Tx_invalid_descs uint64
+ Rx_ring_full uint64
+ Rx_fill_ring_empty_descs uint64
+ Tx_ring_empty_descs uint64
}
type XDPDesc struct {
@@ -1912,6 +2411,10 @@ const (
BPF_MAP_DELETE_BATCH = 0x1b
BPF_LINK_CREATE = 0x1c
BPF_LINK_UPDATE = 0x1d
+ BPF_LINK_GET_FD_BY_ID = 0x1e
+ BPF_LINK_GET_NEXT_ID = 0x1f
+ BPF_ENABLE_STATS = 0x20
+ BPF_ITER_CREATE = 0x21
BPF_MAP_TYPE_UNSPEC = 0x0
BPF_MAP_TYPE_HASH = 0x1
BPF_MAP_TYPE_ARRAY = 0x2
@@ -1939,6 +2442,7 @@ const (
BPF_MAP_TYPE_SK_STORAGE = 0x18
BPF_MAP_TYPE_DEVMAP_HASH = 0x19
BPF_MAP_TYPE_STRUCT_OPS = 0x1a
+ BPF_MAP_TYPE_RINGBUF = 0x1b
BPF_PROG_TYPE_UNSPEC = 0x0
BPF_PROG_TYPE_SOCKET_FILTER = 0x1
BPF_PROG_TYPE_KPROBE = 0x2
@@ -1997,6 +2501,18 @@ const (
BPF_TRACE_FEXIT = 0x19
BPF_MODIFY_RETURN = 0x1a
BPF_LSM_MAC = 0x1b
+ BPF_TRACE_ITER = 0x1c
+ BPF_CGROUP_INET4_GETPEERNAME = 0x1d
+ BPF_CGROUP_INET6_GETPEERNAME = 0x1e
+ BPF_CGROUP_INET4_GETSOCKNAME = 0x1f
+ BPF_CGROUP_INET6_GETSOCKNAME = 0x20
+ BPF_XDP_DEVMAP = 0x21
+ BPF_LINK_TYPE_UNSPEC = 0x0
+ BPF_LINK_TYPE_RAW_TRACEPOINT = 0x1
+ BPF_LINK_TYPE_TRACING = 0x2
+ BPF_LINK_TYPE_CGROUP = 0x3
+ BPF_LINK_TYPE_ITER = 0x4
+ BPF_LINK_TYPE_NETNS = 0x5
BPF_ANY = 0x0
BPF_NOEXIST = 0x1
BPF_EXIST = 0x2
@@ -2012,6 +2528,7 @@ const (
BPF_F_WRONLY_PROG = 0x100
BPF_F_CLONE = 0x200
BPF_F_MMAPABLE = 0x400
+ BPF_STATS_RUN_TIME = 0x0
BPF_STACK_BUILD_ID_EMPTY = 0x0
BPF_STACK_BUILD_ID_VALID = 0x1
BPF_STACK_BUILD_ID_IP = 0x2
@@ -2035,16 +2552,30 @@ const (
BPF_F_CURRENT_CPU = 0xffffffff
BPF_F_CTXLEN_MASK = 0xfffff00000000
BPF_F_CURRENT_NETNS = -0x1
+ BPF_CSUM_LEVEL_QUERY = 0x0
+ BPF_CSUM_LEVEL_INC = 0x1
+ BPF_CSUM_LEVEL_DEC = 0x2
+ BPF_CSUM_LEVEL_RESET = 0x3
BPF_F_ADJ_ROOM_FIXED_GSO = 0x1
BPF_F_ADJ_ROOM_ENCAP_L3_IPV4 = 0x2
BPF_F_ADJ_ROOM_ENCAP_L3_IPV6 = 0x4
BPF_F_ADJ_ROOM_ENCAP_L4_GRE = 0x8
BPF_F_ADJ_ROOM_ENCAP_L4_UDP = 0x10
+ BPF_F_ADJ_ROOM_NO_CSUM_RESET = 0x20
BPF_ADJ_ROOM_ENCAP_L2_MASK = 0xff
BPF_ADJ_ROOM_ENCAP_L2_SHIFT = 0x38
BPF_F_SYSCTL_BASE_NAME = 0x1
BPF_SK_STORAGE_GET_F_CREATE = 0x1
BPF_F_GET_BRANCH_RECORDS_SIZE = 0x1
+ BPF_RB_NO_WAKEUP = 0x1
+ BPF_RB_FORCE_WAKEUP = 0x2
+ BPF_RB_AVAIL_DATA = 0x0
+ BPF_RB_RING_SIZE = 0x1
+ BPF_RB_CONS_POS = 0x2
+ BPF_RB_PROD_POS = 0x3
+ BPF_RINGBUF_BUSY_BIT = 0x80000000
+ BPF_RINGBUF_DISCARD_BIT = 0x40000000
+ BPF_RINGBUF_HDR_SZ = 0x8
BPF_ADJ_ROOM_NET = 0x0
BPF_ADJ_ROOM_MAC = 0x1
BPF_HDR_START_MAC = 0x0
@@ -2359,7 +2890,7 @@ const (
DEVLINK_ATTR_DPIPE_FIELD_MAPPING_TYPE = 0x3c
DEVLINK_ATTR_PAD = 0x3d
DEVLINK_ATTR_ESWITCH_ENCAP_MODE = 0x3e
- DEVLINK_ATTR_MAX = 0x90
+ DEVLINK_ATTR_MAX = 0x94
DEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE = 0x0
DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX = 0x1
DEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT = 0x0
@@ -2417,3 +2948,54 @@ const (
NHA_GROUPS = 0x9
NHA_MASTER = 0xa
)
+
+const (
+ CAN_RAW_FILTER = 0x1
+ CAN_RAW_ERR_FILTER = 0x2
+ CAN_RAW_LOOPBACK = 0x3
+ CAN_RAW_RECV_OWN_MSGS = 0x4
+ CAN_RAW_FD_FRAMES = 0x5
+ CAN_RAW_JOIN_FILTERS = 0x6
+)
+
+type WatchdogInfo struct {
+ Options uint32
+ Version uint32
+ Identity [32]uint8
+}
+
+type PPSFData struct {
+ Info PPSKInfo
+ Timeout PPSKTime
+}
+
+type PPSKParams struct {
+ Api_version int32
+ Mode int32
+ Assert_off_tu PPSKTime
+ Clear_off_tu PPSKTime
+}
+
+type PPSKTime struct {
+ Sec int64
+ Nsec int32
+ Flags uint32
+}
+
+const (
+ LWTUNNEL_ENCAP_NONE = 0x0
+ LWTUNNEL_ENCAP_MPLS = 0x1
+ LWTUNNEL_ENCAP_IP = 0x2
+ LWTUNNEL_ENCAP_ILA = 0x3
+ LWTUNNEL_ENCAP_IP6 = 0x4
+ LWTUNNEL_ENCAP_SEG6 = 0x5
+ LWTUNNEL_ENCAP_BPF = 0x6
+ LWTUNNEL_ENCAP_SEG6_LOCAL = 0x7
+ LWTUNNEL_ENCAP_RPL = 0x8
+ LWTUNNEL_ENCAP_MAX = 0x8
+
+ MPLS_IPTUNNEL_UNSPEC = 0x0
+ MPLS_IPTUNNEL_DST = 0x1
+ MPLS_IPTUNNEL_TTL = 0x2
+ MPLS_IPTUNNEL_MAX = 0x2
+)
diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go
index 761b67c8..d54618aa 100644
--- a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go
+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go
@@ -117,6 +117,11 @@ type Flock_t struct {
Pid int32
}
+type DmNameList struct {
+ Dev uint64
+ Next uint32
+}
+
const (
FADV_DONTNEED = 0x4
FADV_NOREUSE = 0x5
@@ -597,3 +602,18 @@ type TIPCSIOCNodeIDReq struct {
Peer uint32
Id [16]int8
}
+
+type PPSKInfo struct {
+ Assert_sequence uint32
+ Clear_sequence uint32
+ Assert_tu PPSKTime
+ Clear_tu PPSKTime
+ Current_mode int32
+}
+
+const (
+ PPS_GETPARAMS = 0x800470a1
+ PPS_SETPARAMS = 0x400470a2
+ PPS_GETCAP = 0x800470a3
+ PPS_FETCH = 0xc00470a4
+)
diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go
index 201fb348..741d25be 100644
--- a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go
+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go
@@ -117,6 +117,13 @@ type Flock_t struct {
_ [4]byte
}
+type DmNameList struct {
+ Dev uint64
+ Next uint32
+ Name [0]byte
+ _ [4]byte
+}
+
const (
FADV_DONTNEED = 0x4
FADV_NOREUSE = 0x5
@@ -612,3 +619,19 @@ type TIPCSIOCNodeIDReq struct {
Peer uint32
Id [16]int8
}
+
+type PPSKInfo struct {
+ Assert_sequence uint32
+ Clear_sequence uint32
+ Assert_tu PPSKTime
+ Clear_tu PPSKTime
+ Current_mode int32
+ _ [4]byte
+}
+
+const (
+ PPS_GETPARAMS = 0x800870a1
+ PPS_SETPARAMS = 0x400870a2
+ PPS_GETCAP = 0x800870a3
+ PPS_FETCH = 0xc00870a4
+)
diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go
index 8051b561..e8d982c3 100644
--- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go
+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go
@@ -121,6 +121,13 @@ type Flock_t struct {
_ [4]byte
}
+type DmNameList struct {
+ Dev uint64
+ Next uint32
+ Name [0]byte
+ _ [4]byte
+}
+
const (
FADV_DONTNEED = 0x4
FADV_NOREUSE = 0x5
@@ -589,3 +596,19 @@ type TIPCSIOCNodeIDReq struct {
Peer uint32
Id [16]uint8
}
+
+type PPSKInfo struct {
+ Assert_sequence uint32
+ Clear_sequence uint32
+ Assert_tu PPSKTime
+ Clear_tu PPSKTime
+ Current_mode int32
+ _ [4]byte
+}
+
+const (
+ PPS_GETPARAMS = 0x800470a1
+ PPS_SETPARAMS = 0x400470a2
+ PPS_GETCAP = 0x800470a3
+ PPS_FETCH = 0xc00470a4
+)
diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go
index a936f216..311cf215 100644
--- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go
+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go
@@ -118,6 +118,13 @@ type Flock_t struct {
_ [4]byte
}
+type DmNameList struct {
+ Dev uint64
+ Next uint32
+ Name [0]byte
+ _ [4]byte
+}
+
const (
FADV_DONTNEED = 0x4
FADV_NOREUSE = 0x5
@@ -591,3 +598,19 @@ type TIPCSIOCNodeIDReq struct {
Peer uint32
Id [16]int8
}
+
+type PPSKInfo struct {
+ Assert_sequence uint32
+ Clear_sequence uint32
+ Assert_tu PPSKTime
+ Clear_tu PPSKTime
+ Current_mode int32
+ _ [4]byte
+}
+
+const (
+ PPS_GETPARAMS = 0x800870a1
+ PPS_SETPARAMS = 0x400870a2
+ PPS_GETCAP = 0x800870a3
+ PPS_FETCH = 0xc00870a4
+)
diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go
index aaca03dd..1312bdf7 100644
--- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go
+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go
@@ -120,6 +120,13 @@ type Flock_t struct {
_ [4]byte
}
+type DmNameList struct {
+ Dev uint64
+ Next uint32
+ Name [0]byte
+ _ [4]byte
+}
+
const (
FADV_DONTNEED = 0x4
FADV_NOREUSE = 0x5
@@ -595,3 +602,19 @@ type TIPCSIOCNodeIDReq struct {
Peer uint32
Id [16]int8
}
+
+type PPSKInfo struct {
+ Assert_sequence uint32
+ Clear_sequence uint32
+ Assert_tu PPSKTime
+ Clear_tu PPSKTime
+ Current_mode int32
+ _ [4]byte
+}
+
+const (
+ PPS_GETPARAMS = 0x400470a1
+ PPS_SETPARAMS = 0x800470a2
+ PPS_GETCAP = 0x400470a3
+ PPS_FETCH = 0xc00470a4
+)
diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go
index 2e7f3b8c..2a993481 100644
--- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go
+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go
@@ -118,6 +118,13 @@ type Flock_t struct {
_ [4]byte
}
+type DmNameList struct {
+ Dev uint64
+ Next uint32
+ Name [0]byte
+ _ [4]byte
+}
+
const (
FADV_DONTNEED = 0x4
FADV_NOREUSE = 0x5
@@ -594,3 +601,19 @@ type TIPCSIOCNodeIDReq struct {
Peer uint32
Id [16]int8
}
+
+type PPSKInfo struct {
+ Assert_sequence uint32
+ Clear_sequence uint32
+ Assert_tu PPSKTime
+ Clear_tu PPSKTime
+ Current_mode int32
+ _ [4]byte
+}
+
+const (
+ PPS_GETPARAMS = 0x400870a1
+ PPS_SETPARAMS = 0x800870a2
+ PPS_GETCAP = 0x400870a3
+ PPS_FETCH = 0xc00870a4
+)
diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go
index 16add5a2..f964307b 100644
--- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go
+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go
@@ -118,6 +118,13 @@ type Flock_t struct {
_ [4]byte
}
+type DmNameList struct {
+ Dev uint64
+ Next uint32
+ Name [0]byte
+ _ [4]byte
+}
+
const (
FADV_DONTNEED = 0x4
FADV_NOREUSE = 0x5
@@ -594,3 +601,19 @@ type TIPCSIOCNodeIDReq struct {
Peer uint32
Id [16]int8
}
+
+type PPSKInfo struct {
+ Assert_sequence uint32
+ Clear_sequence uint32
+ Assert_tu PPSKTime
+ Clear_tu PPSKTime
+ Current_mode int32
+ _ [4]byte
+}
+
+const (
+ PPS_GETPARAMS = 0x400870a1
+ PPS_SETPARAMS = 0x800870a2
+ PPS_GETCAP = 0x400870a3
+ PPS_FETCH = 0xc00870a4
+)
diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go
index 4ed2c8e5..ca0fab27 100644
--- a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go
+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go
@@ -120,6 +120,13 @@ type Flock_t struct {
_ [4]byte
}
+type DmNameList struct {
+ Dev uint64
+ Next uint32
+ Name [0]byte
+ _ [4]byte
+}
+
const (
FADV_DONTNEED = 0x4
FADV_NOREUSE = 0x5
@@ -595,3 +602,19 @@ type TIPCSIOCNodeIDReq struct {
Peer uint32
Id [16]int8
}
+
+type PPSKInfo struct {
+ Assert_sequence uint32
+ Clear_sequence uint32
+ Assert_tu PPSKTime
+ Clear_tu PPSKTime
+ Current_mode int32
+ _ [4]byte
+}
+
+const (
+ PPS_GETPARAMS = 0x400470a1
+ PPS_SETPARAMS = 0x800470a2
+ PPS_GETCAP = 0x400470a3
+ PPS_FETCH = 0xc00470a4
+)
diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go
index 74151909..257e0042 100644
--- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go
+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go
@@ -119,6 +119,13 @@ type Flock_t struct {
_ [4]byte
}
+type DmNameList struct {
+ Dev uint64
+ Next uint32
+ Name [0]byte
+ _ [4]byte
+}
+
const (
FADV_DONTNEED = 0x4
FADV_NOREUSE = 0x5
@@ -601,3 +608,19 @@ type TIPCSIOCNodeIDReq struct {
Peer uint32
Id [16]uint8
}
+
+type PPSKInfo struct {
+ Assert_sequence uint32
+ Clear_sequence uint32
+ Assert_tu PPSKTime
+ Clear_tu PPSKTime
+ Current_mode int32
+ _ [4]byte
+}
+
+const (
+ PPS_GETPARAMS = 0x400870a1
+ PPS_SETPARAMS = 0x800870a2
+ PPS_GETCAP = 0x400870a3
+ PPS_FETCH = 0xc00870a4
+)
diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go
index 046c2deb..980dd317 100644
--- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go
+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go
@@ -119,6 +119,13 @@ type Flock_t struct {
_ [4]byte
}
+type DmNameList struct {
+ Dev uint64
+ Next uint32
+ Name [0]byte
+ _ [4]byte
+}
+
const (
FADV_DONTNEED = 0x4
FADV_NOREUSE = 0x5
@@ -601,3 +608,19 @@ type TIPCSIOCNodeIDReq struct {
Peer uint32
Id [16]uint8
}
+
+type PPSKInfo struct {
+ Assert_sequence uint32
+ Clear_sequence uint32
+ Assert_tu PPSKTime
+ Clear_tu PPSKTime
+ Current_mode int32
+ _ [4]byte
+}
+
+const (
+ PPS_GETPARAMS = 0x400870a1
+ PPS_SETPARAMS = 0x800870a2
+ PPS_GETCAP = 0x400870a3
+ PPS_FETCH = 0xc00870a4
+)
diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go
index 0f2f61a6..d9fdab20 100644
--- a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go
+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go
@@ -118,6 +118,13 @@ type Flock_t struct {
_ [4]byte
}
+type DmNameList struct {
+ Dev uint64
+ Next uint32
+ Name [0]byte
+ _ [4]byte
+}
+
const (
FADV_DONTNEED = 0x4
FADV_NOREUSE = 0x5
@@ -619,3 +626,19 @@ type TIPCSIOCNodeIDReq struct {
Peer uint32
Id [16]uint8
}
+
+type PPSKInfo struct {
+ Assert_sequence uint32
+ Clear_sequence uint32
+ Assert_tu PPSKTime
+ Clear_tu PPSKTime
+ Current_mode int32
+ _ [4]byte
+}
+
+const (
+ PPS_GETPARAMS = 0x800870a1
+ PPS_SETPARAMS = 0x400870a2
+ PPS_GETCAP = 0x800870a3
+ PPS_FETCH = 0xc00870a4
+)
diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go
index cca1b6be..c25de8c6 100644
--- a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go
+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go
@@ -117,6 +117,13 @@ type Flock_t struct {
_ [4]byte
}
+type DmNameList struct {
+ Dev uint64
+ Next uint32
+ Name [0]byte
+ _ [4]byte
+}
+
const (
FADV_DONTNEED = 0x6
FADV_NOREUSE = 0x7
@@ -615,3 +622,19 @@ type TIPCSIOCNodeIDReq struct {
Peer uint32
Id [16]int8
}
+
+type PPSKInfo struct {
+ Assert_sequence uint32
+ Clear_sequence uint32
+ Assert_tu PPSKTime
+ Clear_tu PPSKTime
+ Current_mode int32
+ _ [4]byte
+}
+
+const (
+ PPS_GETPARAMS = 0x800870a1
+ PPS_SETPARAMS = 0x400870a2
+ PPS_GETCAP = 0x800870a3
+ PPS_FETCH = 0xc00870a4
+)
diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go
index 33a73bf1..97fca653 100644
--- a/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go
+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go
@@ -121,6 +121,13 @@ type Flock_t struct {
_ [2]byte
}
+type DmNameList struct {
+ Dev uint64
+ Next uint32
+ Name [0]byte
+ _ [4]byte
+}
+
const (
FADV_DONTNEED = 0x4
FADV_NOREUSE = 0x5
@@ -596,3 +603,19 @@ type TIPCSIOCNodeIDReq struct {
Peer uint32
Id [16]int8
}
+
+type PPSKInfo struct {
+ Assert_sequence uint32
+ Clear_sequence uint32
+ Assert_tu PPSKTime
+ Clear_tu PPSKTime
+ Current_mode int32
+ _ [4]byte
+}
+
+const (
+ PPS_GETPARAMS = 0x400870a1
+ PPS_SETPARAMS = 0x800870a2
+ PPS_GETCAP = 0x400870a3
+ PPS_FETCH = 0xc00870a4
+)
diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go
new file mode 100644
index 00000000..992a1f8c
--- /dev/null
+++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go
@@ -0,0 +1,565 @@
+// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build mips64,openbsd
+
+package unix
+
+const (
+ SizeofPtr = 0x8
+ SizeofShort = 0x2
+ SizeofInt = 0x4
+ SizeofLong = 0x8
+ SizeofLongLong = 0x8
+)
+
+type (
+ _C_short int16
+ _C_int int32
+ _C_long int64
+ _C_long_long int64
+)
+
+type Timespec struct {
+ Sec int64
+ Nsec int64
+}
+
+type Timeval struct {
+ Sec int64
+ Usec int64
+}
+
+type Rusage struct {
+ Utime Timeval
+ Stime Timeval
+ Maxrss int64
+ Ixrss int64
+ Idrss int64
+ Isrss int64
+ Minflt int64
+ Majflt int64
+ Nswap int64
+ Inblock int64
+ Oublock int64
+ Msgsnd int64
+ Msgrcv int64
+ Nsignals int64
+ Nvcsw int64
+ Nivcsw int64
+}
+
+type Rlimit struct {
+ Cur uint64
+ Max uint64
+}
+
+type _Gid_t uint32
+
+type Stat_t struct {
+ Mode uint32
+ Dev int32
+ Ino uint64
+ Nlink uint32
+ Uid uint32
+ Gid uint32
+ Rdev int32
+ Atim Timespec
+ Mtim Timespec
+ Ctim Timespec
+ Size int64
+ Blocks int64
+ Blksize int32
+ Flags uint32
+ Gen uint32
+ _ Timespec
+}
+
+type Statfs_t struct {
+ F_flags uint32
+ F_bsize uint32
+ F_iosize uint32
+ F_blocks uint64
+ F_bfree uint64
+ F_bavail int64
+ F_files uint64
+ F_ffree uint64
+ F_favail int64
+ F_syncwrites uint64
+ F_syncreads uint64
+ F_asyncwrites uint64
+ F_asyncreads uint64
+ F_fsid Fsid
+ F_namemax uint32
+ F_owner uint32
+ F_ctime uint64
+ F_fstypename [16]int8
+ F_mntonname [90]int8
+ F_mntfromname [90]int8
+ F_mntfromspec [90]int8
+ _ [2]byte
+ Mount_info [160]byte
+}
+
+type Flock_t struct {
+ Start int64
+ Len int64
+ Pid int32
+ Type int16
+ Whence int16
+}
+
+type Dirent struct {
+ Fileno uint64
+ Off int64
+ Reclen uint16
+ Type uint8
+ Namlen uint8
+ _ [4]uint8
+ Name [256]int8
+}
+
+type Fsid struct {
+ Val [2]int32
+}
+
+const (
+ PathMax = 0x400
+)
+
+type RawSockaddrInet4 struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Addr [4]byte /* in_addr */
+ Zero [8]int8
+}
+
+type RawSockaddrInet6 struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+type RawSockaddrUnix struct {
+ Len uint8
+ Family uint8
+ Path [104]int8
+}
+
+type RawSockaddrDatalink struct {
+ Len uint8
+ Family uint8
+ Index uint16
+ Type uint8
+ Nlen uint8
+ Alen uint8
+ Slen uint8
+ Data [24]int8
+}
+
+type RawSockaddr struct {
+ Len uint8
+ Family uint8
+ Data [14]int8
+}
+
+type RawSockaddrAny struct {
+ Addr RawSockaddr
+ Pad [92]int8
+}
+
+type _Socklen uint32
+
+type Linger struct {
+ Onoff int32
+ Linger int32
+}
+
+type Iovec struct {
+ Base *byte
+ Len uint64
+}
+
+type IPMreq struct {
+ Multiaddr [4]byte /* in_addr */
+ Interface [4]byte /* in_addr */
+}
+
+type IPv6Mreq struct {
+ Multiaddr [16]byte /* in6_addr */
+ Interface uint32
+}
+
+type Msghdr struct {
+ Name *byte
+ Namelen uint32
+ Iov *Iovec
+ Iovlen uint32
+ Control *byte
+ Controllen uint32
+ Flags int32
+}
+
+type Cmsghdr struct {
+ Len uint32
+ Level int32
+ Type int32
+}
+
+type Inet6Pktinfo struct {
+ Addr [16]byte /* in6_addr */
+ Ifindex uint32
+}
+
+type IPv6MTUInfo struct {
+ Addr RawSockaddrInet6
+ Mtu uint32
+}
+
+type ICMPv6Filter struct {
+ Filt [8]uint32
+}
+
+const (
+ SizeofSockaddrInet4 = 0x10
+ SizeofSockaddrInet6 = 0x1c
+ SizeofSockaddrAny = 0x6c
+ SizeofSockaddrUnix = 0x6a
+ SizeofSockaddrDatalink = 0x20
+ SizeofLinger = 0x8
+ SizeofIPMreq = 0x8
+ SizeofIPv6Mreq = 0x14
+ SizeofMsghdr = 0x30
+ SizeofCmsghdr = 0xc
+ SizeofInet6Pktinfo = 0x14
+ SizeofIPv6MTUInfo = 0x20
+ SizeofICMPv6Filter = 0x20
+)
+
+const (
+ PTRACE_TRACEME = 0x0
+ PTRACE_CONT = 0x7
+ PTRACE_KILL = 0x8
+)
+
+type Kevent_t struct {
+ Ident uint64
+ Filter int16
+ Flags uint16
+ Fflags uint32
+ Data int64
+ Udata *byte
+}
+
+type FdSet struct {
+ Bits [32]uint32
+}
+
+const (
+ SizeofIfMsghdr = 0xa8
+ SizeofIfData = 0x90
+ SizeofIfaMsghdr = 0x18
+ SizeofIfAnnounceMsghdr = 0x1a
+ SizeofRtMsghdr = 0x60
+ SizeofRtMetrics = 0x38
+)
+
+type IfMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Hdrlen uint16
+ Index uint16
+ Tableid uint16
+ Pad1 uint8
+ Pad2 uint8
+ Addrs int32
+ Flags int32
+ Xflags int32
+ Data IfData
+}
+
+type IfData struct {
+ Type uint8
+ Addrlen uint8
+ Hdrlen uint8
+ Link_state uint8
+ Mtu uint32
+ Metric uint32
+ Rdomain uint32
+ Baudrate uint64
+ Ipackets uint64
+ Ierrors uint64
+ Opackets uint64
+ Oerrors uint64
+ Collisions uint64
+ Ibytes uint64
+ Obytes uint64
+ Imcasts uint64
+ Omcasts uint64
+ Iqdrops uint64
+ Oqdrops uint64
+ Noproto uint64
+ Capabilities uint32
+ Lastchange Timeval
+}
+
+type IfaMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Hdrlen uint16
+ Index uint16
+ Tableid uint16
+ Pad1 uint8
+ Pad2 uint8
+ Addrs int32
+ Flags int32
+ Metric int32
+}
+
+type IfAnnounceMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Hdrlen uint16
+ Index uint16
+ What uint16
+ Name [16]int8
+}
+
+type RtMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Hdrlen uint16
+ Index uint16
+ Tableid uint16
+ Priority uint8
+ Mpls uint8
+ Addrs int32
+ Flags int32
+ Fmask int32
+ Pid int32
+ Seq int32
+ Errno int32
+ Inits uint32
+ Rmx RtMetrics
+}
+
+type RtMetrics struct {
+ Pksent uint64
+ Expire int64
+ Locks uint32
+ Mtu uint32
+ Refcnt uint32
+ Hopcount uint32
+ Recvpipe uint32
+ Sendpipe uint32
+ Ssthresh uint32
+ Rtt uint32
+ Rttvar uint32
+ Pad uint32
+}
+
+type Mclpool struct{}
+
+const (
+ SizeofBpfVersion = 0x4
+ SizeofBpfStat = 0x8
+ SizeofBpfProgram = 0x10
+ SizeofBpfInsn = 0x8
+ SizeofBpfHdr = 0x14
+)
+
+type BpfVersion struct {
+ Major uint16
+ Minor uint16
+}
+
+type BpfStat struct {
+ Recv uint32
+ Drop uint32
+}
+
+type BpfProgram struct {
+ Len uint32
+ Insns *BpfInsn
+}
+
+type BpfInsn struct {
+ Code uint16
+ Jt uint8
+ Jf uint8
+ K uint32
+}
+
+type BpfHdr struct {
+ Tstamp BpfTimeval
+ Caplen uint32
+ Datalen uint32
+ Hdrlen uint16
+ _ [2]byte
+}
+
+type BpfTimeval struct {
+ Sec uint32
+ Usec uint32
+}
+
+type Termios struct {
+ Iflag uint32
+ Oflag uint32
+ Cflag uint32
+ Lflag uint32
+ Cc [20]uint8
+ Ispeed int32
+ Ospeed int32
+}
+
+type Winsize struct {
+ Row uint16
+ Col uint16
+ Xpixel uint16
+ Ypixel uint16
+}
+
+const (
+ AT_FDCWD = -0x64
+ AT_SYMLINK_FOLLOW = 0x4
+ AT_SYMLINK_NOFOLLOW = 0x2
+)
+
+type PollFd struct {
+ Fd int32
+ Events int16
+ Revents int16
+}
+
+const (
+ POLLERR = 0x8
+ POLLHUP = 0x10
+ POLLIN = 0x1
+ POLLNVAL = 0x20
+ POLLOUT = 0x4
+ POLLPRI = 0x2
+ POLLRDBAND = 0x80
+ POLLRDNORM = 0x40
+ POLLWRBAND = 0x100
+ POLLWRNORM = 0x4
+)
+
+type Sigset_t uint32
+
+type Utsname struct {
+ Sysname [256]byte
+ Nodename [256]byte
+ Release [256]byte
+ Version [256]byte
+ Machine [256]byte
+}
+
+const SizeofUvmexp = 0x158
+
+type Uvmexp struct {
+ Pagesize int32
+ Pagemask int32
+ Pageshift int32
+ Npages int32
+ Free int32
+ Active int32
+ Inactive int32
+ Paging int32
+ Wired int32
+ Zeropages int32
+ Reserve_pagedaemon int32
+ Reserve_kernel int32
+ Unused01 int32
+ Vnodepages int32
+ Vtextpages int32
+ Freemin int32
+ Freetarg int32
+ Inactarg int32
+ Wiredmax int32
+ Anonmin int32
+ Vtextmin int32
+ Vnodemin int32
+ Anonminpct int32
+ Vtextminpct int32
+ Vnodeminpct int32
+ Nswapdev int32
+ Swpages int32
+ Swpginuse int32
+ Swpgonly int32
+ Nswget int32
+ Nanon int32
+ Unused05 int32
+ Unused06 int32
+ Faults int32
+ Traps int32
+ Intrs int32
+ Swtch int32
+ Softs int32
+ Syscalls int32
+ Pageins int32
+ Unused07 int32
+ Unused08 int32
+ Pgswapin int32
+ Pgswapout int32
+ Forks int32
+ Forks_ppwait int32
+ Forks_sharevm int32
+ Pga_zerohit int32
+ Pga_zeromiss int32
+ Unused09 int32
+ Fltnoram int32
+ Fltnoanon int32
+ Fltnoamap int32
+ Fltpgwait int32
+ Fltpgrele int32
+ Fltrelck int32
+ Fltrelckok int32
+ Fltanget int32
+ Fltanretry int32
+ Fltamcopy int32
+ Fltnamap int32
+ Fltnomap int32
+ Fltlget int32
+ Fltget int32
+ Flt_anon int32
+ Flt_acow int32
+ Flt_obj int32
+ Flt_prcopy int32
+ Flt_przero int32
+ Pdwoke int32
+ Pdrevs int32
+ Pdswout int32
+ Pdfreed int32
+ Pdscans int32
+ Pdanscan int32
+ Pdobscan int32
+ Pdreact int32
+ Pdbusy int32
+ Pdpageouts int32
+ Pdpending int32
+ Pddeact int32
+ Unused11 int32
+ Unused12 int32
+ Unused13 int32
+ Fpswtch int32
+ Kmapent int32
+}
+
+const SizeofClockinfo = 0x14
+
+type Clockinfo struct {
+ Hz int32
+ Tick int32
+ Tickadj int32
+ Stathz int32
+ Profhz int32
+}
diff --git a/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go
index 23ed9fe5..db817f3b 100644
--- a/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go
+++ b/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go
@@ -88,7 +88,6 @@ type Stat_t struct {
Mtim Timespec
Ctim Timespec
Blksize int32
- _ [4]byte
Blocks int64
Fstype [16]int8
}
@@ -96,7 +95,6 @@ type Stat_t struct {
type Flock_t struct {
Type int16
Whence int16
- _ [4]byte
Start int64
Len int64
Sysid int32
@@ -138,12 +136,12 @@ type RawSockaddrInet4 struct {
}
type RawSockaddrInet6 struct {
- Family uint16
- Port uint16
- Flowinfo uint32
- Addr [16]byte /* in6_addr */
- Scope_id uint32
- X__sin6_src_id uint32
+ Family uint16
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+ _ uint32
}
type RawSockaddrUnix struct {
@@ -196,10 +194,8 @@ type IPv6Mreq struct {
type Msghdr struct {
Name *byte
Namelen uint32
- _ [4]byte
Iov *Iovec
Iovlen int32
- _ [4]byte
Accrights *int8
Accrightslen int32
_ [4]byte
@@ -228,7 +224,7 @@ type IPv6MTUInfo struct {
}
type ICMPv6Filter struct {
- X__icmp6_filt [8]uint32
+ Filt [8]uint32
}
const (
@@ -291,7 +287,6 @@ type IfMsghdr struct {
Addrs int32
Flags int32
Index uint16
- _ [2]byte
Data IfData
}
@@ -299,7 +294,6 @@ type IfData struct {
Type uint8
Addrlen uint8
Hdrlen uint8
- _ [1]byte
Mtu uint32
Metric uint32
Baudrate uint32
@@ -324,7 +318,6 @@ type IfaMsghdr struct {
Addrs int32
Flags int32
Index uint16
- _ [2]byte
Metric int32
}
@@ -333,7 +326,6 @@ type RtMsghdr struct {
Version uint8
Type uint8
Index uint16
- _ [2]byte
Flags int32
Addrs int32
Pid int32
@@ -371,15 +363,14 @@ type BpfVersion struct {
}
type BpfStat struct {
- Recv uint64
- Drop uint64
- Capt uint64
- Padding [13]uint64
+ Recv uint64
+ Drop uint64
+ Capt uint64
+ _ [13]uint64
}
type BpfProgram struct {
Len uint32
- _ [4]byte
Insns *BpfInsn
}
diff --git a/vendor/golang.org/x/sys/windows/BUILD.bazel b/vendor/golang.org/x/sys/windows/BUILD.bazel
new file mode 100644
index 00000000..e08dbdb3
--- /dev/null
+++ b/vendor/golang.org/x/sys/windows/BUILD.bazel
@@ -0,0 +1,37 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_library")
+
+go_library(
+ name = "go_default_library",
+ srcs = [
+ "aliases.go",
+ "dll_windows.go",
+ "empty.s",
+ "env_windows.go",
+ "eventlog.go",
+ "exec_windows.go",
+ "memory_windows.go",
+ "race.go",
+ "race0.go",
+ "security_windows.go",
+ "service.go",
+ "setupapierrors_windows.go",
+ "str.go",
+ "syscall.go",
+ "syscall_windows.go",
+ "types_windows.go",
+ "types_windows_386.go",
+ "types_windows_amd64.go",
+ "zerrors_windows.go",
+ "zknownfolderids_windows.go",
+ "zsyscall_windows.go",
+ ],
+ importmap = "kope.io/etcd-manager/vendor/golang.org/x/sys/windows",
+ importpath = "golang.org/x/sys/windows",
+ visibility = ["//visibility:public"],
+ deps = select({
+ "@io_bazel_rules_go//go/platform:windows": [
+ "//vendor/golang.org/x/sys/internal/unsafeheader:go_default_library",
+ ],
+ "//conditions:default": [],
+ }),
+)
diff --git a/vendor/golang.org/x/sys/windows/aliases.go b/vendor/golang.org/x/sys/windows/aliases.go
new file mode 100644
index 00000000..af3af60d
--- /dev/null
+++ b/vendor/golang.org/x/sys/windows/aliases.go
@@ -0,0 +1,13 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build windows
+// +build go1.9
+
+package windows
+
+import "syscall"
+
+type Errno = syscall.Errno
+type SysProcAttr = syscall.SysProcAttr
diff --git a/vendor/golang.org/x/sys/windows/dll_windows.go b/vendor/golang.org/x/sys/windows/dll_windows.go
new file mode 100644
index 00000000..115341fb
--- /dev/null
+++ b/vendor/golang.org/x/sys/windows/dll_windows.go
@@ -0,0 +1,416 @@
+// Copyright 2011 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package windows
+
+import (
+ "sync"
+ "sync/atomic"
+ "syscall"
+ "unsafe"
+)
+
+// We need to use LoadLibrary and GetProcAddress from the Go runtime, because
+// the these symbols are loaded by the system linker and are required to
+// dynamically load additional symbols. Note that in the Go runtime, these
+// return syscall.Handle and syscall.Errno, but these are the same, in fact,
+// as windows.Handle and windows.Errno, and we intend to keep these the same.
+
+//go:linkname syscall_loadlibrary syscall.loadlibrary
+func syscall_loadlibrary(filename *uint16) (handle Handle, err Errno)
+
+//go:linkname syscall_getprocaddress syscall.getprocaddress
+func syscall_getprocaddress(handle Handle, procname *uint8) (proc uintptr, err Errno)
+
+// DLLError describes reasons for DLL load failures.
+type DLLError struct {
+ Err error
+ ObjName string
+ Msg string
+}
+
+func (e *DLLError) Error() string { return e.Msg }
+
+func (e *DLLError) Unwrap() error { return e.Err }
+
+// A DLL implements access to a single DLL.
+type DLL struct {
+ Name string
+ Handle Handle
+}
+
+// LoadDLL loads DLL file into memory.
+//
+// Warning: using LoadDLL without an absolute path name is subject to
+// DLL preloading attacks. To safely load a system DLL, use LazyDLL
+// with System set to true, or use LoadLibraryEx directly.
+func LoadDLL(name string) (dll *DLL, err error) {
+ namep, err := UTF16PtrFromString(name)
+ if err != nil {
+ return nil, err
+ }
+ h, e := syscall_loadlibrary(namep)
+ if e != 0 {
+ return nil, &DLLError{
+ Err: e,
+ ObjName: name,
+ Msg: "Failed to load " + name + ": " + e.Error(),
+ }
+ }
+ d := &DLL{
+ Name: name,
+ Handle: h,
+ }
+ return d, nil
+}
+
+// MustLoadDLL is like LoadDLL but panics if load operation failes.
+func MustLoadDLL(name string) *DLL {
+ d, e := LoadDLL(name)
+ if e != nil {
+ panic(e)
+ }
+ return d
+}
+
+// FindProc searches DLL d for procedure named name and returns *Proc
+// if found. It returns an error if search fails.
+func (d *DLL) FindProc(name string) (proc *Proc, err error) {
+ namep, err := BytePtrFromString(name)
+ if err != nil {
+ return nil, err
+ }
+ a, e := syscall_getprocaddress(d.Handle, namep)
+ if e != 0 {
+ return nil, &DLLError{
+ Err: e,
+ ObjName: name,
+ Msg: "Failed to find " + name + " procedure in " + d.Name + ": " + e.Error(),
+ }
+ }
+ p := &Proc{
+ Dll: d,
+ Name: name,
+ addr: a,
+ }
+ return p, nil
+}
+
+// MustFindProc is like FindProc but panics if search fails.
+func (d *DLL) MustFindProc(name string) *Proc {
+ p, e := d.FindProc(name)
+ if e != nil {
+ panic(e)
+ }
+ return p
+}
+
+// FindProcByOrdinal searches DLL d for procedure by ordinal and returns *Proc
+// if found. It returns an error if search fails.
+func (d *DLL) FindProcByOrdinal(ordinal uintptr) (proc *Proc, err error) {
+ a, e := GetProcAddressByOrdinal(d.Handle, ordinal)
+ name := "#" + itoa(int(ordinal))
+ if e != nil {
+ return nil, &DLLError{
+ Err: e,
+ ObjName: name,
+ Msg: "Failed to find " + name + " procedure in " + d.Name + ": " + e.Error(),
+ }
+ }
+ p := &Proc{
+ Dll: d,
+ Name: name,
+ addr: a,
+ }
+ return p, nil
+}
+
+// MustFindProcByOrdinal is like FindProcByOrdinal but panics if search fails.
+func (d *DLL) MustFindProcByOrdinal(ordinal uintptr) *Proc {
+ p, e := d.FindProcByOrdinal(ordinal)
+ if e != nil {
+ panic(e)
+ }
+ return p
+}
+
+// Release unloads DLL d from memory.
+func (d *DLL) Release() (err error) {
+ return FreeLibrary(d.Handle)
+}
+
+// A Proc implements access to a procedure inside a DLL.
+type Proc struct {
+ Dll *DLL
+ Name string
+ addr uintptr
+}
+
+// Addr returns the address of the procedure represented by p.
+// The return value can be passed to Syscall to run the procedure.
+func (p *Proc) Addr() uintptr {
+ return p.addr
+}
+
+//go:uintptrescapes
+
+// Call executes procedure p with arguments a. It will panic, if more than 15 arguments
+// are supplied.
+//
+// The returned error is always non-nil, constructed from the result of GetLastError.
+// Callers must inspect the primary return value to decide whether an error occurred
+// (according to the semantics of the specific function being called) before consulting
+// the error. The error will be guaranteed to contain windows.Errno.
+func (p *Proc) Call(a ...uintptr) (r1, r2 uintptr, lastErr error) {
+ switch len(a) {
+ case 0:
+ return syscall.Syscall(p.Addr(), uintptr(len(a)), 0, 0, 0)
+ case 1:
+ return syscall.Syscall(p.Addr(), uintptr(len(a)), a[0], 0, 0)
+ case 2:
+ return syscall.Syscall(p.Addr(), uintptr(len(a)), a[0], a[1], 0)
+ case 3:
+ return syscall.Syscall(p.Addr(), uintptr(len(a)), a[0], a[1], a[2])
+ case 4:
+ return syscall.Syscall6(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], 0, 0)
+ case 5:
+ return syscall.Syscall6(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], 0)
+ case 6:
+ return syscall.Syscall6(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5])
+ case 7:
+ return syscall.Syscall9(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], 0, 0)
+ case 8:
+ return syscall.Syscall9(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], 0)
+ case 9:
+ return syscall.Syscall9(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8])
+ case 10:
+ return syscall.Syscall12(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], 0, 0)
+ case 11:
+ return syscall.Syscall12(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], 0)
+ case 12:
+ return syscall.Syscall12(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11])
+ case 13:
+ return syscall.Syscall15(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], 0, 0)
+ case 14:
+ return syscall.Syscall15(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], 0)
+ case 15:
+ return syscall.Syscall15(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14])
+ default:
+ panic("Call " + p.Name + " with too many arguments " + itoa(len(a)) + ".")
+ }
+}
+
+// A LazyDLL implements access to a single DLL.
+// It will delay the load of the DLL until the first
+// call to its Handle method or to one of its
+// LazyProc's Addr method.
+type LazyDLL struct {
+ Name string
+
+ // System determines whether the DLL must be loaded from the
+ // Windows System directory, bypassing the normal DLL search
+ // path.
+ System bool
+
+ mu sync.Mutex
+ dll *DLL // non nil once DLL is loaded
+}
+
+// Load loads DLL file d.Name into memory. It returns an error if fails.
+// Load will not try to load DLL, if it is already loaded into memory.
+func (d *LazyDLL) Load() error {
+ // Non-racy version of:
+ // if d.dll != nil {
+ if atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(&d.dll))) != nil {
+ return nil
+ }
+ d.mu.Lock()
+ defer d.mu.Unlock()
+ if d.dll != nil {
+ return nil
+ }
+
+ // kernel32.dll is special, since it's where LoadLibraryEx comes from.
+ // The kernel already special-cases its name, so it's always
+ // loaded from system32.
+ var dll *DLL
+ var err error
+ if d.Name == "kernel32.dll" {
+ dll, err = LoadDLL(d.Name)
+ } else {
+ dll, err = loadLibraryEx(d.Name, d.System)
+ }
+ if err != nil {
+ return err
+ }
+
+ // Non-racy version of:
+ // d.dll = dll
+ atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(&d.dll)), unsafe.Pointer(dll))
+ return nil
+}
+
+// mustLoad is like Load but panics if search fails.
+func (d *LazyDLL) mustLoad() {
+ e := d.Load()
+ if e != nil {
+ panic(e)
+ }
+}
+
+// Handle returns d's module handle.
+func (d *LazyDLL) Handle() uintptr {
+ d.mustLoad()
+ return uintptr(d.dll.Handle)
+}
+
+// NewProc returns a LazyProc for accessing the named procedure in the DLL d.
+func (d *LazyDLL) NewProc(name string) *LazyProc {
+ return &LazyProc{l: d, Name: name}
+}
+
+// NewLazyDLL creates new LazyDLL associated with DLL file.
+func NewLazyDLL(name string) *LazyDLL {
+ return &LazyDLL{Name: name}
+}
+
+// NewLazySystemDLL is like NewLazyDLL, but will only
+// search Windows System directory for the DLL if name is
+// a base name (like "advapi32.dll").
+func NewLazySystemDLL(name string) *LazyDLL {
+ return &LazyDLL{Name: name, System: true}
+}
+
+// A LazyProc implements access to a procedure inside a LazyDLL.
+// It delays the lookup until the Addr method is called.
+type LazyProc struct {
+ Name string
+
+ mu sync.Mutex
+ l *LazyDLL
+ proc *Proc
+}
+
+// Find searches DLL for procedure named p.Name. It returns
+// an error if search fails. Find will not search procedure,
+// if it is already found and loaded into memory.
+func (p *LazyProc) Find() error {
+ // Non-racy version of:
+ // if p.proc == nil {
+ if atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(&p.proc))) == nil {
+ p.mu.Lock()
+ defer p.mu.Unlock()
+ if p.proc == nil {
+ e := p.l.Load()
+ if e != nil {
+ return e
+ }
+ proc, e := p.l.dll.FindProc(p.Name)
+ if e != nil {
+ return e
+ }
+ // Non-racy version of:
+ // p.proc = proc
+ atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(&p.proc)), unsafe.Pointer(proc))
+ }
+ }
+ return nil
+}
+
+// mustFind is like Find but panics if search fails.
+func (p *LazyProc) mustFind() {
+ e := p.Find()
+ if e != nil {
+ panic(e)
+ }
+}
+
+// Addr returns the address of the procedure represented by p.
+// The return value can be passed to Syscall to run the procedure.
+// It will panic if the procedure cannot be found.
+func (p *LazyProc) Addr() uintptr {
+ p.mustFind()
+ return p.proc.Addr()
+}
+
+//go:uintptrescapes
+
+// Call executes procedure p with arguments a. It will panic, if more than 15 arguments
+// are supplied. It will also panic if the procedure cannot be found.
+//
+// The returned error is always non-nil, constructed from the result of GetLastError.
+// Callers must inspect the primary return value to decide whether an error occurred
+// (according to the semantics of the specific function being called) before consulting
+// the error. The error will be guaranteed to contain windows.Errno.
+func (p *LazyProc) Call(a ...uintptr) (r1, r2 uintptr, lastErr error) {
+ p.mustFind()
+ return p.proc.Call(a...)
+}
+
+var canDoSearchSystem32Once struct {
+ sync.Once
+ v bool
+}
+
+func initCanDoSearchSystem32() {
+ // https://msdn.microsoft.com/en-us/library/ms684179(v=vs.85).aspx says:
+ // "Windows 7, Windows Server 2008 R2, Windows Vista, and Windows
+ // Server 2008: The LOAD_LIBRARY_SEARCH_* flags are available on
+ // systems that have KB2533623 installed. To determine whether the
+ // flags are available, use GetProcAddress to get the address of the
+ // AddDllDirectory, RemoveDllDirectory, or SetDefaultDllDirectories
+ // function. If GetProcAddress succeeds, the LOAD_LIBRARY_SEARCH_*
+ // flags can be used with LoadLibraryEx."
+ canDoSearchSystem32Once.v = (modkernel32.NewProc("AddDllDirectory").Find() == nil)
+}
+
+func canDoSearchSystem32() bool {
+ canDoSearchSystem32Once.Do(initCanDoSearchSystem32)
+ return canDoSearchSystem32Once.v
+}
+
+func isBaseName(name string) bool {
+ for _, c := range name {
+ if c == ':' || c == '/' || c == '\\' {
+ return false
+ }
+ }
+ return true
+}
+
+// loadLibraryEx wraps the Windows LoadLibraryEx function.
+//
+// See https://msdn.microsoft.com/en-us/library/windows/desktop/ms684179(v=vs.85).aspx
+//
+// If name is not an absolute path, LoadLibraryEx searches for the DLL
+// in a variety of automatic locations unless constrained by flags.
+// See: https://msdn.microsoft.com/en-us/library/ff919712%28VS.85%29.aspx
+func loadLibraryEx(name string, system bool) (*DLL, error) {
+ loadDLL := name
+ var flags uintptr
+ if system {
+ if canDoSearchSystem32() {
+ flags = LOAD_LIBRARY_SEARCH_SYSTEM32
+ } else if isBaseName(name) {
+ // WindowsXP or unpatched Windows machine
+ // trying to load "foo.dll" out of the system
+ // folder, but LoadLibraryEx doesn't support
+ // that yet on their system, so emulate it.
+ systemdir, err := GetSystemDirectory()
+ if err != nil {
+ return nil, err
+ }
+ loadDLL = systemdir + "\\" + name
+ }
+ }
+ h, err := LoadLibraryEx(loadDLL, 0, flags)
+ if err != nil {
+ return nil, err
+ }
+ return &DLL{Name: name, Handle: h}, nil
+}
+
+type errString string
+
+func (s errString) Error() string { return string(s) }
diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_386.1_11.go b/vendor/golang.org/x/sys/windows/empty.s
similarity index 51%
rename from vendor/golang.org/x/sys/unix/syscall_darwin_386.1_11.go
rename to vendor/golang.org/x/sys/windows/empty.s
index 6b223f91..69309e4d 100644
--- a/vendor/golang.org/x/sys/unix/syscall_darwin_386.1_11.go
+++ b/vendor/golang.org/x/sys/windows/empty.s
@@ -2,8 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build darwin,386,!go1.12
+// +build !go1.12
-package unix
-
-//sys Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) = SYS_GETDIRENTRIES64
+// This file is here to allow bodyless functions with go:linkname for Go 1.11
+// and earlier (see https://golang.org/issue/23311).
diff --git a/vendor/golang.org/x/sys/windows/env_windows.go b/vendor/golang.org/x/sys/windows/env_windows.go
new file mode 100644
index 00000000..92ac05ff
--- /dev/null
+++ b/vendor/golang.org/x/sys/windows/env_windows.go
@@ -0,0 +1,54 @@
+// Copyright 2010 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Windows environment variables.
+
+package windows
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+func Getenv(key string) (value string, found bool) {
+ return syscall.Getenv(key)
+}
+
+func Setenv(key, value string) error {
+ return syscall.Setenv(key, value)
+}
+
+func Clearenv() {
+ syscall.Clearenv()
+}
+
+func Environ() []string {
+ return syscall.Environ()
+}
+
+// Returns a default environment associated with the token, rather than the current
+// process. If inheritExisting is true, then this environment also inherits the
+// environment of the current process.
+func (token Token) Environ(inheritExisting bool) (env []string, err error) {
+ var block *uint16
+ err = CreateEnvironmentBlock(&block, token, inheritExisting)
+ if err != nil {
+ return nil, err
+ }
+ defer DestroyEnvironmentBlock(block)
+ blockp := uintptr(unsafe.Pointer(block))
+ for {
+ entry := UTF16PtrToString((*uint16)(unsafe.Pointer(blockp)))
+ if len(entry) == 0 {
+ break
+ }
+ env = append(env, entry)
+ blockp += 2 * (uintptr(len(entry)) + 1)
+ }
+ return env, nil
+}
+
+func Unsetenv(key string) error {
+ return syscall.Unsetenv(key)
+}
diff --git a/vendor/golang.org/x/sys/windows/eventlog.go b/vendor/golang.org/x/sys/windows/eventlog.go
new file mode 100644
index 00000000..40af946e
--- /dev/null
+++ b/vendor/golang.org/x/sys/windows/eventlog.go
@@ -0,0 +1,20 @@
+// Copyright 2012 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build windows
+
+package windows
+
+const (
+ EVENTLOG_SUCCESS = 0
+ EVENTLOG_ERROR_TYPE = 1
+ EVENTLOG_WARNING_TYPE = 2
+ EVENTLOG_INFORMATION_TYPE = 4
+ EVENTLOG_AUDIT_SUCCESS = 8
+ EVENTLOG_AUDIT_FAILURE = 16
+)
+
+//sys RegisterEventSource(uncServerName *uint16, sourceName *uint16) (handle Handle, err error) [failretval==0] = advapi32.RegisterEventSourceW
+//sys DeregisterEventSource(handle Handle) (err error) = advapi32.DeregisterEventSource
+//sys ReportEvent(log Handle, etype uint16, category uint16, eventId uint32, usrSId uintptr, numStrings uint16, dataSize uint32, strings **uint16, rawData *byte) (err error) = advapi32.ReportEventW
diff --git a/vendor/golang.org/x/sys/windows/exec_windows.go b/vendor/golang.org/x/sys/windows/exec_windows.go
new file mode 100644
index 00000000..3606c3a8
--- /dev/null
+++ b/vendor/golang.org/x/sys/windows/exec_windows.go
@@ -0,0 +1,97 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Fork, exec, wait, etc.
+
+package windows
+
+// EscapeArg rewrites command line argument s as prescribed
+// in http://msdn.microsoft.com/en-us/library/ms880421.
+// This function returns "" (2 double quotes) if s is empty.
+// Alternatively, these transformations are done:
+// - every back slash (\) is doubled, but only if immediately
+// followed by double quote (");
+// - every double quote (") is escaped by back slash (\);
+// - finally, s is wrapped with double quotes (arg -> "arg"),
+// but only if there is space or tab inside s.
+func EscapeArg(s string) string {
+ if len(s) == 0 {
+ return "\"\""
+ }
+ n := len(s)
+ hasSpace := false
+ for i := 0; i < len(s); i++ {
+ switch s[i] {
+ case '"', '\\':
+ n++
+ case ' ', '\t':
+ hasSpace = true
+ }
+ }
+ if hasSpace {
+ n += 2
+ }
+ if n == len(s) {
+ return s
+ }
+
+ qs := make([]byte, n)
+ j := 0
+ if hasSpace {
+ qs[j] = '"'
+ j++
+ }
+ slashes := 0
+ for i := 0; i < len(s); i++ {
+ switch s[i] {
+ default:
+ slashes = 0
+ qs[j] = s[i]
+ case '\\':
+ slashes++
+ qs[j] = s[i]
+ case '"':
+ for ; slashes > 0; slashes-- {
+ qs[j] = '\\'
+ j++
+ }
+ qs[j] = '\\'
+ j++
+ qs[j] = s[i]
+ }
+ j++
+ }
+ if hasSpace {
+ for ; slashes > 0; slashes-- {
+ qs[j] = '\\'
+ j++
+ }
+ qs[j] = '"'
+ j++
+ }
+ return string(qs[:j])
+}
+
+func CloseOnExec(fd Handle) {
+ SetHandleInformation(Handle(fd), HANDLE_FLAG_INHERIT, 0)
+}
+
+// FullPath retrieves the full path of the specified file.
+func FullPath(name string) (path string, err error) {
+ p, err := UTF16PtrFromString(name)
+ if err != nil {
+ return "", err
+ }
+ n := uint32(100)
+ for {
+ buf := make([]uint16, n)
+ n, err = GetFullPathName(p, uint32(len(buf)), &buf[0], nil)
+ if err != nil {
+ return "", err
+ }
+ if n <= uint32(len(buf)) {
+ return UTF16ToString(buf[:n]), nil
+ }
+ }
+}
diff --git a/vendor/golang.org/x/sys/windows/memory_windows.go b/vendor/golang.org/x/sys/windows/memory_windows.go
new file mode 100644
index 00000000..1adb6073
--- /dev/null
+++ b/vendor/golang.org/x/sys/windows/memory_windows.go
@@ -0,0 +1,37 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package windows
+
+const (
+ MEM_COMMIT = 0x00001000
+ MEM_RESERVE = 0x00002000
+ MEM_DECOMMIT = 0x00004000
+ MEM_RELEASE = 0x00008000
+ MEM_RESET = 0x00080000
+ MEM_TOP_DOWN = 0x00100000
+ MEM_WRITE_WATCH = 0x00200000
+ MEM_PHYSICAL = 0x00400000
+ MEM_RESET_UNDO = 0x01000000
+ MEM_LARGE_PAGES = 0x20000000
+
+ PAGE_NOACCESS = 0x00000001
+ PAGE_READONLY = 0x00000002
+ PAGE_READWRITE = 0x00000004
+ PAGE_WRITECOPY = 0x00000008
+ PAGE_EXECUTE = 0x00000010
+ PAGE_EXECUTE_READ = 0x00000020
+ PAGE_EXECUTE_READWRITE = 0x00000040
+ PAGE_EXECUTE_WRITECOPY = 0x00000080
+ PAGE_GUARD = 0x00000100
+ PAGE_NOCACHE = 0x00000200
+ PAGE_WRITECOMBINE = 0x00000400
+ PAGE_TARGETS_INVALID = 0x40000000
+ PAGE_TARGETS_NO_UPDATE = 0x40000000
+
+ QUOTA_LIMITS_HARDWS_MIN_DISABLE = 0x00000002
+ QUOTA_LIMITS_HARDWS_MIN_ENABLE = 0x00000001
+ QUOTA_LIMITS_HARDWS_MAX_DISABLE = 0x00000008
+ QUOTA_LIMITS_HARDWS_MAX_ENABLE = 0x00000004
+)
diff --git a/vendor/golang.org/x/sys/windows/mkerrors.bash b/vendor/golang.org/x/sys/windows/mkerrors.bash
new file mode 100644
index 00000000..2163843a
--- /dev/null
+++ b/vendor/golang.org/x/sys/windows/mkerrors.bash
@@ -0,0 +1,63 @@
+#!/bin/bash
+
+# Copyright 2019 The Go Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style
+# license that can be found in the LICENSE file.
+
+set -e
+shopt -s nullglob
+
+winerror="$(printf '%s\n' "/mnt/c/Program Files (x86)/Windows Kits/"/*/Include/*/shared/winerror.h | sort -Vr | head -n 1)"
+[[ -n $winerror ]] || { echo "Unable to find winerror.h" >&2; exit 1; }
+
+declare -A errors
+
+{
+ echo "// Code generated by 'mkerrors.bash'; DO NOT EDIT."
+ echo
+ echo "package windows"
+ echo "import \"syscall\""
+ echo "const ("
+
+ while read -r line; do
+ unset vtype
+ if [[ $line =~ ^#define\ +([A-Z0-9_]+k?)\ +([A-Z0-9_]+\()?([A-Z][A-Z0-9_]+k?)\)? ]]; then
+ key="${BASH_REMATCH[1]}"
+ value="${BASH_REMATCH[3]}"
+ elif [[ $line =~ ^#define\ +([A-Z0-9_]+k?)\ +([A-Z0-9_]+\()?((0x)?[0-9A-Fa-f]+)L?\)? ]]; then
+ key="${BASH_REMATCH[1]}"
+ value="${BASH_REMATCH[3]}"
+ vtype="${BASH_REMATCH[2]}"
+ elif [[ $line =~ ^#define\ +([A-Z0-9_]+k?)\ +\(\(([A-Z]+)\)((0x)?[0-9A-Fa-f]+)L?\) ]]; then
+ key="${BASH_REMATCH[1]}"
+ value="${BASH_REMATCH[3]}"
+ vtype="${BASH_REMATCH[2]}"
+ else
+ continue
+ fi
+ [[ -n $key && -n $value ]] || continue
+ [[ -z ${errors["$key"]} ]] || continue
+ errors["$key"]="$value"
+ if [[ -v vtype ]]; then
+ if [[ $key == FACILITY_* || $key == NO_ERROR ]]; then
+ vtype=""
+ elif [[ $vtype == *HANDLE* || $vtype == *HRESULT* ]]; then
+ vtype="Handle"
+ else
+ vtype="syscall.Errno"
+ fi
+ last_vtype="$vtype"
+ else
+ vtype=""
+ if [[ $last_vtype == Handle && $value == NO_ERROR ]]; then
+ value="S_OK"
+ elif [[ $last_vtype == syscall.Errno && $value == NO_ERROR ]]; then
+ value="ERROR_SUCCESS"
+ fi
+ fi
+
+ echo "$key $vtype = $value"
+ done < "$winerror"
+
+ echo ")"
+} | gofmt > "zerrors_windows.go"
diff --git a/vendor/golang.org/x/sys/windows/mkknownfolderids.bash b/vendor/golang.org/x/sys/windows/mkknownfolderids.bash
new file mode 100644
index 00000000..ab8924e9
--- /dev/null
+++ b/vendor/golang.org/x/sys/windows/mkknownfolderids.bash
@@ -0,0 +1,27 @@
+#!/bin/bash
+
+# Copyright 2019 The Go Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style
+# license that can be found in the LICENSE file.
+
+set -e
+shopt -s nullglob
+
+knownfolders="$(printf '%s\n' "/mnt/c/Program Files (x86)/Windows Kits/"/*/Include/*/um/KnownFolders.h | sort -Vr | head -n 1)"
+[[ -n $knownfolders ]] || { echo "Unable to find KnownFolders.h" >&2; exit 1; }
+
+{
+ echo "// Code generated by 'mkknownfolderids.bash'; DO NOT EDIT."
+ echo
+ echo "package windows"
+ echo "type KNOWNFOLDERID GUID"
+ echo "var ("
+ while read -r line; do
+ [[ $line =~ DEFINE_KNOWN_FOLDER\((FOLDERID_[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+)\) ]] || continue
+ printf "%s = &KNOWNFOLDERID{0x%08x, 0x%04x, 0x%04x, [8]byte{0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x}}\n" \
+ "${BASH_REMATCH[1]}" $(( "${BASH_REMATCH[2]}" )) $(( "${BASH_REMATCH[3]}" )) $(( "${BASH_REMATCH[4]}" )) \
+ $(( "${BASH_REMATCH[5]}" )) $(( "${BASH_REMATCH[6]}" )) $(( "${BASH_REMATCH[7]}" )) $(( "${BASH_REMATCH[8]}" )) \
+ $(( "${BASH_REMATCH[9]}" )) $(( "${BASH_REMATCH[10]}" )) $(( "${BASH_REMATCH[11]}" )) $(( "${BASH_REMATCH[12]}" ))
+ done < "$knownfolders"
+ echo ")"
+} | gofmt > "zknownfolderids_windows.go"
diff --git a/vendor/golang.org/x/sys/windows/mksyscall.go b/vendor/golang.org/x/sys/windows/mksyscall.go
new file mode 100644
index 00000000..328e3b2a
--- /dev/null
+++ b/vendor/golang.org/x/sys/windows/mksyscall.go
@@ -0,0 +1,9 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build generate
+
+package windows
+
+//go:generate go run golang.org/x/sys/windows/mkwinsyscall -output zsyscall_windows.go eventlog.go service.go syscall_windows.go security_windows.go
diff --git a/vendor/golang.org/x/sys/windows/race.go b/vendor/golang.org/x/sys/windows/race.go
new file mode 100644
index 00000000..a74e3e24
--- /dev/null
+++ b/vendor/golang.org/x/sys/windows/race.go
@@ -0,0 +1,30 @@
+// Copyright 2012 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build windows,race
+
+package windows
+
+import (
+ "runtime"
+ "unsafe"
+)
+
+const raceenabled = true
+
+func raceAcquire(addr unsafe.Pointer) {
+ runtime.RaceAcquire(addr)
+}
+
+func raceReleaseMerge(addr unsafe.Pointer) {
+ runtime.RaceReleaseMerge(addr)
+}
+
+func raceReadRange(addr unsafe.Pointer, len int) {
+ runtime.RaceReadRange(addr, len)
+}
+
+func raceWriteRange(addr unsafe.Pointer, len int) {
+ runtime.RaceWriteRange(addr, len)
+}
diff --git a/vendor/golang.org/x/sys/windows/race0.go b/vendor/golang.org/x/sys/windows/race0.go
new file mode 100644
index 00000000..e44a3cbf
--- /dev/null
+++ b/vendor/golang.org/x/sys/windows/race0.go
@@ -0,0 +1,25 @@
+// Copyright 2012 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build windows,!race
+
+package windows
+
+import (
+ "unsafe"
+)
+
+const raceenabled = false
+
+func raceAcquire(addr unsafe.Pointer) {
+}
+
+func raceReleaseMerge(addr unsafe.Pointer) {
+}
+
+func raceReadRange(addr unsafe.Pointer, len int) {
+}
+
+func raceWriteRange(addr unsafe.Pointer, len int) {
+}
diff --git a/vendor/golang.org/x/sys/windows/registry/BUILD.bazel b/vendor/golang.org/x/sys/windows/registry/BUILD.bazel
new file mode 100644
index 00000000..f61bb4d4
--- /dev/null
+++ b/vendor/golang.org/x/sys/windows/registry/BUILD.bazel
@@ -0,0 +1,20 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_library")
+
+go_library(
+ name = "go_default_library",
+ srcs = [
+ "key.go",
+ "syscall.go",
+ "value.go",
+ "zsyscall_windows.go",
+ ],
+ importmap = "kope.io/etcd-manager/vendor/golang.org/x/sys/windows/registry",
+ importpath = "golang.org/x/sys/windows/registry",
+ visibility = ["//visibility:public"],
+ deps = select({
+ "@io_bazel_rules_go//go/platform:windows": [
+ "//vendor/golang.org/x/sys/windows:go_default_library",
+ ],
+ "//conditions:default": [],
+ }),
+)
diff --git a/vendor/golang.org/x/sys/windows/registry/key.go b/vendor/golang.org/x/sys/windows/registry/key.go
new file mode 100644
index 00000000..c2564834
--- /dev/null
+++ b/vendor/golang.org/x/sys/windows/registry/key.go
@@ -0,0 +1,198 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build windows
+
+// Package registry provides access to the Windows registry.
+//
+// Here is a simple example, opening a registry key and reading a string value from it.
+//
+// k, err := registry.OpenKey(registry.LOCAL_MACHINE, `SOFTWARE\Microsoft\Windows NT\CurrentVersion`, registry.QUERY_VALUE)
+// if err != nil {
+// log.Fatal(err)
+// }
+// defer k.Close()
+//
+// s, _, err := k.GetStringValue("SystemRoot")
+// if err != nil {
+// log.Fatal(err)
+// }
+// fmt.Printf("Windows system root is %q\n", s)
+//
+package registry
+
+import (
+ "io"
+ "syscall"
+ "time"
+)
+
+const (
+ // Registry key security and access rights.
+ // See https://msdn.microsoft.com/en-us/library/windows/desktop/ms724878.aspx
+ // for details.
+ ALL_ACCESS = 0xf003f
+ CREATE_LINK = 0x00020
+ CREATE_SUB_KEY = 0x00004
+ ENUMERATE_SUB_KEYS = 0x00008
+ EXECUTE = 0x20019
+ NOTIFY = 0x00010
+ QUERY_VALUE = 0x00001
+ READ = 0x20019
+ SET_VALUE = 0x00002
+ WOW64_32KEY = 0x00200
+ WOW64_64KEY = 0x00100
+ WRITE = 0x20006
+)
+
+// Key is a handle to an open Windows registry key.
+// Keys can be obtained by calling OpenKey; there are
+// also some predefined root keys such as CURRENT_USER.
+// Keys can be used directly in the Windows API.
+type Key syscall.Handle
+
+const (
+ // Windows defines some predefined root keys that are always open.
+ // An application can use these keys as entry points to the registry.
+ // Normally these keys are used in OpenKey to open new keys,
+ // but they can also be used anywhere a Key is required.
+ CLASSES_ROOT = Key(syscall.HKEY_CLASSES_ROOT)
+ CURRENT_USER = Key(syscall.HKEY_CURRENT_USER)
+ LOCAL_MACHINE = Key(syscall.HKEY_LOCAL_MACHINE)
+ USERS = Key(syscall.HKEY_USERS)
+ CURRENT_CONFIG = Key(syscall.HKEY_CURRENT_CONFIG)
+ PERFORMANCE_DATA = Key(syscall.HKEY_PERFORMANCE_DATA)
+)
+
+// Close closes open key k.
+func (k Key) Close() error {
+ return syscall.RegCloseKey(syscall.Handle(k))
+}
+
+// OpenKey opens a new key with path name relative to key k.
+// It accepts any open key, including CURRENT_USER and others,
+// and returns the new key and an error.
+// The access parameter specifies desired access rights to the
+// key to be opened.
+func OpenKey(k Key, path string, access uint32) (Key, error) {
+ p, err := syscall.UTF16PtrFromString(path)
+ if err != nil {
+ return 0, err
+ }
+ var subkey syscall.Handle
+ err = syscall.RegOpenKeyEx(syscall.Handle(k), p, 0, access, &subkey)
+ if err != nil {
+ return 0, err
+ }
+ return Key(subkey), nil
+}
+
+// OpenRemoteKey opens a predefined registry key on another
+// computer pcname. The key to be opened is specified by k, but
+// can only be one of LOCAL_MACHINE, PERFORMANCE_DATA or USERS.
+// If pcname is "", OpenRemoteKey returns local computer key.
+func OpenRemoteKey(pcname string, k Key) (Key, error) {
+ var err error
+ var p *uint16
+ if pcname != "" {
+ p, err = syscall.UTF16PtrFromString(`\\` + pcname)
+ if err != nil {
+ return 0, err
+ }
+ }
+ var remoteKey syscall.Handle
+ err = regConnectRegistry(p, syscall.Handle(k), &remoteKey)
+ if err != nil {
+ return 0, err
+ }
+ return Key(remoteKey), nil
+}
+
+// ReadSubKeyNames returns the names of subkeys of key k.
+// The parameter n controls the number of returned names,
+// analogous to the way os.File.Readdirnames works.
+func (k Key) ReadSubKeyNames(n int) ([]string, error) {
+ names := make([]string, 0)
+ // Registry key size limit is 255 bytes and described there:
+ // https://msdn.microsoft.com/library/windows/desktop/ms724872.aspx
+ buf := make([]uint16, 256) //plus extra room for terminating zero byte
+loopItems:
+ for i := uint32(0); ; i++ {
+ if n > 0 {
+ if len(names) == n {
+ return names, nil
+ }
+ }
+ l := uint32(len(buf))
+ for {
+ err := syscall.RegEnumKeyEx(syscall.Handle(k), i, &buf[0], &l, nil, nil, nil, nil)
+ if err == nil {
+ break
+ }
+ if err == syscall.ERROR_MORE_DATA {
+ // Double buffer size and try again.
+ l = uint32(2 * len(buf))
+ buf = make([]uint16, l)
+ continue
+ }
+ if err == _ERROR_NO_MORE_ITEMS {
+ break loopItems
+ }
+ return names, err
+ }
+ names = append(names, syscall.UTF16ToString(buf[:l]))
+ }
+ if n > len(names) {
+ return names, io.EOF
+ }
+ return names, nil
+}
+
+// CreateKey creates a key named path under open key k.
+// CreateKey returns the new key and a boolean flag that reports
+// whether the key already existed.
+// The access parameter specifies the access rights for the key
+// to be created.
+func CreateKey(k Key, path string, access uint32) (newk Key, openedExisting bool, err error) {
+ var h syscall.Handle
+ var d uint32
+ err = regCreateKeyEx(syscall.Handle(k), syscall.StringToUTF16Ptr(path),
+ 0, nil, _REG_OPTION_NON_VOLATILE, access, nil, &h, &d)
+ if err != nil {
+ return 0, false, err
+ }
+ return Key(h), d == _REG_OPENED_EXISTING_KEY, nil
+}
+
+// DeleteKey deletes the subkey path of key k and its values.
+func DeleteKey(k Key, path string) error {
+ return regDeleteKey(syscall.Handle(k), syscall.StringToUTF16Ptr(path))
+}
+
+// A KeyInfo describes the statistics of a key. It is returned by Stat.
+type KeyInfo struct {
+ SubKeyCount uint32
+ MaxSubKeyLen uint32 // size of the key's subkey with the longest name, in Unicode characters, not including the terminating zero byte
+ ValueCount uint32
+ MaxValueNameLen uint32 // size of the key's longest value name, in Unicode characters, not including the terminating zero byte
+ MaxValueLen uint32 // longest data component among the key's values, in bytes
+ lastWriteTime syscall.Filetime
+}
+
+// ModTime returns the key's last write time.
+func (ki *KeyInfo) ModTime() time.Time {
+ return time.Unix(0, ki.lastWriteTime.Nanoseconds())
+}
+
+// Stat retrieves information about the open key k.
+func (k Key) Stat() (*KeyInfo, error) {
+ var ki KeyInfo
+ err := syscall.RegQueryInfoKey(syscall.Handle(k), nil, nil, nil,
+ &ki.SubKeyCount, &ki.MaxSubKeyLen, nil, &ki.ValueCount,
+ &ki.MaxValueNameLen, &ki.MaxValueLen, nil, &ki.lastWriteTime)
+ if err != nil {
+ return nil, err
+ }
+ return &ki, nil
+}
diff --git a/vendor/golang.org/x/sys/windows/registry/mksyscall.go b/vendor/golang.org/x/sys/windows/registry/mksyscall.go
new file mode 100644
index 00000000..50c32a3f
--- /dev/null
+++ b/vendor/golang.org/x/sys/windows/registry/mksyscall.go
@@ -0,0 +1,9 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build generate
+
+package registry
+
+//go:generate go run golang.org/x/sys/windows/mkwinsyscall -output zsyscall_windows.go syscall.go
diff --git a/vendor/golang.org/x/sys/windows/registry/syscall.go b/vendor/golang.org/x/sys/windows/registry/syscall.go
new file mode 100644
index 00000000..e66643cb
--- /dev/null
+++ b/vendor/golang.org/x/sys/windows/registry/syscall.go
@@ -0,0 +1,32 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build windows
+
+package registry
+
+import "syscall"
+
+const (
+ _REG_OPTION_NON_VOLATILE = 0
+
+ _REG_CREATED_NEW_KEY = 1
+ _REG_OPENED_EXISTING_KEY = 2
+
+ _ERROR_NO_MORE_ITEMS syscall.Errno = 259
+)
+
+func LoadRegLoadMUIString() error {
+ return procRegLoadMUIStringW.Find()
+}
+
+//sys regCreateKeyEx(key syscall.Handle, subkey *uint16, reserved uint32, class *uint16, options uint32, desired uint32, sa *syscall.SecurityAttributes, result *syscall.Handle, disposition *uint32) (regerrno error) = advapi32.RegCreateKeyExW
+//sys regDeleteKey(key syscall.Handle, subkey *uint16) (regerrno error) = advapi32.RegDeleteKeyW
+//sys regSetValueEx(key syscall.Handle, valueName *uint16, reserved uint32, vtype uint32, buf *byte, bufsize uint32) (regerrno error) = advapi32.RegSetValueExW
+//sys regEnumValue(key syscall.Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) = advapi32.RegEnumValueW
+//sys regDeleteValue(key syscall.Handle, name *uint16) (regerrno error) = advapi32.RegDeleteValueW
+//sys regLoadMUIString(key syscall.Handle, name *uint16, buf *uint16, buflen uint32, buflenCopied *uint32, flags uint32, dir *uint16) (regerrno error) = advapi32.RegLoadMUIStringW
+//sys regConnectRegistry(machinename *uint16, key syscall.Handle, result *syscall.Handle) (regerrno error) = advapi32.RegConnectRegistryW
+
+//sys expandEnvironmentStrings(src *uint16, dst *uint16, size uint32) (n uint32, err error) = kernel32.ExpandEnvironmentStringsW
diff --git a/vendor/golang.org/x/sys/windows/registry/value.go b/vendor/golang.org/x/sys/windows/registry/value.go
new file mode 100644
index 00000000..f25e7e97
--- /dev/null
+++ b/vendor/golang.org/x/sys/windows/registry/value.go
@@ -0,0 +1,386 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build windows
+
+package registry
+
+import (
+ "errors"
+ "io"
+ "syscall"
+ "unicode/utf16"
+ "unsafe"
+)
+
+const (
+ // Registry value types.
+ NONE = 0
+ SZ = 1
+ EXPAND_SZ = 2
+ BINARY = 3
+ DWORD = 4
+ DWORD_BIG_ENDIAN = 5
+ LINK = 6
+ MULTI_SZ = 7
+ RESOURCE_LIST = 8
+ FULL_RESOURCE_DESCRIPTOR = 9
+ RESOURCE_REQUIREMENTS_LIST = 10
+ QWORD = 11
+)
+
+var (
+ // ErrShortBuffer is returned when the buffer was too short for the operation.
+ ErrShortBuffer = syscall.ERROR_MORE_DATA
+
+ // ErrNotExist is returned when a registry key or value does not exist.
+ ErrNotExist = syscall.ERROR_FILE_NOT_FOUND
+
+ // ErrUnexpectedType is returned by Get*Value when the value's type was unexpected.
+ ErrUnexpectedType = errors.New("unexpected key value type")
+)
+
+// GetValue retrieves the type and data for the specified value associated
+// with an open key k. It fills up buffer buf and returns the retrieved
+// byte count n. If buf is too small to fit the stored value it returns
+// ErrShortBuffer error along with the required buffer size n.
+// If no buffer is provided, it returns true and actual buffer size n.
+// If no buffer is provided, GetValue returns the value's type only.
+// If the value does not exist, the error returned is ErrNotExist.
+//
+// GetValue is a low level function. If value's type is known, use the appropriate
+// Get*Value function instead.
+func (k Key) GetValue(name string, buf []byte) (n int, valtype uint32, err error) {
+ pname, err := syscall.UTF16PtrFromString(name)
+ if err != nil {
+ return 0, 0, err
+ }
+ var pbuf *byte
+ if len(buf) > 0 {
+ pbuf = (*byte)(unsafe.Pointer(&buf[0]))
+ }
+ l := uint32(len(buf))
+ err = syscall.RegQueryValueEx(syscall.Handle(k), pname, nil, &valtype, pbuf, &l)
+ if err != nil {
+ return int(l), valtype, err
+ }
+ return int(l), valtype, nil
+}
+
+func (k Key) getValue(name string, buf []byte) (data []byte, valtype uint32, err error) {
+ p, err := syscall.UTF16PtrFromString(name)
+ if err != nil {
+ return nil, 0, err
+ }
+ var t uint32
+ n := uint32(len(buf))
+ for {
+ err = syscall.RegQueryValueEx(syscall.Handle(k), p, nil, &t, (*byte)(unsafe.Pointer(&buf[0])), &n)
+ if err == nil {
+ return buf[:n], t, nil
+ }
+ if err != syscall.ERROR_MORE_DATA {
+ return nil, 0, err
+ }
+ if n <= uint32(len(buf)) {
+ return nil, 0, err
+ }
+ buf = make([]byte, n)
+ }
+}
+
+// GetStringValue retrieves the string value for the specified
+// value name associated with an open key k. It also returns the value's type.
+// If value does not exist, GetStringValue returns ErrNotExist.
+// If value is not SZ or EXPAND_SZ, it will return the correct value
+// type and ErrUnexpectedType.
+func (k Key) GetStringValue(name string) (val string, valtype uint32, err error) {
+ data, typ, err2 := k.getValue(name, make([]byte, 64))
+ if err2 != nil {
+ return "", typ, err2
+ }
+ switch typ {
+ case SZ, EXPAND_SZ:
+ default:
+ return "", typ, ErrUnexpectedType
+ }
+ if len(data) == 0 {
+ return "", typ, nil
+ }
+ u := (*[1 << 29]uint16)(unsafe.Pointer(&data[0]))[: len(data)/2 : len(data)/2]
+ return syscall.UTF16ToString(u), typ, nil
+}
+
+// GetMUIStringValue retrieves the localized string value for
+// the specified value name associated with an open key k.
+// If the value name doesn't exist or the localized string value
+// can't be resolved, GetMUIStringValue returns ErrNotExist.
+// GetMUIStringValue panics if the system doesn't support
+// regLoadMUIString; use LoadRegLoadMUIString to check if
+// regLoadMUIString is supported before calling this function.
+func (k Key) GetMUIStringValue(name string) (string, error) {
+ pname, err := syscall.UTF16PtrFromString(name)
+ if err != nil {
+ return "", err
+ }
+
+ buf := make([]uint16, 1024)
+ var buflen uint32
+ var pdir *uint16
+
+ err = regLoadMUIString(syscall.Handle(k), pname, &buf[0], uint32(len(buf)), &buflen, 0, pdir)
+ if err == syscall.ERROR_FILE_NOT_FOUND { // Try fallback path
+
+ // Try to resolve the string value using the system directory as
+ // a DLL search path; this assumes the string value is of the form
+ // @[path]\dllname,-strID but with no path given, e.g. @tzres.dll,-320.
+
+ // This approach works with tzres.dll but may have to be revised
+ // in the future to allow callers to provide custom search paths.
+
+ var s string
+ s, err = ExpandString("%SystemRoot%\\system32\\")
+ if err != nil {
+ return "", err
+ }
+ pdir, err = syscall.UTF16PtrFromString(s)
+ if err != nil {
+ return "", err
+ }
+
+ err = regLoadMUIString(syscall.Handle(k), pname, &buf[0], uint32(len(buf)), &buflen, 0, pdir)
+ }
+
+ for err == syscall.ERROR_MORE_DATA { // Grow buffer if needed
+ if buflen <= uint32(len(buf)) {
+ break // Buffer not growing, assume race; break
+ }
+ buf = make([]uint16, buflen)
+ err = regLoadMUIString(syscall.Handle(k), pname, &buf[0], uint32(len(buf)), &buflen, 0, pdir)
+ }
+
+ if err != nil {
+ return "", err
+ }
+
+ return syscall.UTF16ToString(buf), nil
+}
+
+// ExpandString expands environment-variable strings and replaces
+// them with the values defined for the current user.
+// Use ExpandString to expand EXPAND_SZ strings.
+func ExpandString(value string) (string, error) {
+ if value == "" {
+ return "", nil
+ }
+ p, err := syscall.UTF16PtrFromString(value)
+ if err != nil {
+ return "", err
+ }
+ r := make([]uint16, 100)
+ for {
+ n, err := expandEnvironmentStrings(p, &r[0], uint32(len(r)))
+ if err != nil {
+ return "", err
+ }
+ if n <= uint32(len(r)) {
+ return syscall.UTF16ToString(r[:n]), nil
+ }
+ r = make([]uint16, n)
+ }
+}
+
+// GetStringsValue retrieves the []string value for the specified
+// value name associated with an open key k. It also returns the value's type.
+// If value does not exist, GetStringsValue returns ErrNotExist.
+// If value is not MULTI_SZ, it will return the correct value
+// type and ErrUnexpectedType.
+func (k Key) GetStringsValue(name string) (val []string, valtype uint32, err error) {
+ data, typ, err2 := k.getValue(name, make([]byte, 64))
+ if err2 != nil {
+ return nil, typ, err2
+ }
+ if typ != MULTI_SZ {
+ return nil, typ, ErrUnexpectedType
+ }
+ if len(data) == 0 {
+ return nil, typ, nil
+ }
+ p := (*[1 << 29]uint16)(unsafe.Pointer(&data[0]))[: len(data)/2 : len(data)/2]
+ if len(p) == 0 {
+ return nil, typ, nil
+ }
+ if p[len(p)-1] == 0 {
+ p = p[:len(p)-1] // remove terminating null
+ }
+ val = make([]string, 0, 5)
+ from := 0
+ for i, c := range p {
+ if c == 0 {
+ val = append(val, string(utf16.Decode(p[from:i])))
+ from = i + 1
+ }
+ }
+ return val, typ, nil
+}
+
+// GetIntegerValue retrieves the integer value for the specified
+// value name associated with an open key k. It also returns the value's type.
+// If value does not exist, GetIntegerValue returns ErrNotExist.
+// If value is not DWORD or QWORD, it will return the correct value
+// type and ErrUnexpectedType.
+func (k Key) GetIntegerValue(name string) (val uint64, valtype uint32, err error) {
+ data, typ, err2 := k.getValue(name, make([]byte, 8))
+ if err2 != nil {
+ return 0, typ, err2
+ }
+ switch typ {
+ case DWORD:
+ if len(data) != 4 {
+ return 0, typ, errors.New("DWORD value is not 4 bytes long")
+ }
+ var val32 uint32
+ copy((*[4]byte)(unsafe.Pointer(&val32))[:], data)
+ return uint64(val32), DWORD, nil
+ case QWORD:
+ if len(data) != 8 {
+ return 0, typ, errors.New("QWORD value is not 8 bytes long")
+ }
+ copy((*[8]byte)(unsafe.Pointer(&val))[:], data)
+ return val, QWORD, nil
+ default:
+ return 0, typ, ErrUnexpectedType
+ }
+}
+
+// GetBinaryValue retrieves the binary value for the specified
+// value name associated with an open key k. It also returns the value's type.
+// If value does not exist, GetBinaryValue returns ErrNotExist.
+// If value is not BINARY, it will return the correct value
+// type and ErrUnexpectedType.
+func (k Key) GetBinaryValue(name string) (val []byte, valtype uint32, err error) {
+ data, typ, err2 := k.getValue(name, make([]byte, 64))
+ if err2 != nil {
+ return nil, typ, err2
+ }
+ if typ != BINARY {
+ return nil, typ, ErrUnexpectedType
+ }
+ return data, typ, nil
+}
+
+func (k Key) setValue(name string, valtype uint32, data []byte) error {
+ p, err := syscall.UTF16PtrFromString(name)
+ if err != nil {
+ return err
+ }
+ if len(data) == 0 {
+ return regSetValueEx(syscall.Handle(k), p, 0, valtype, nil, 0)
+ }
+ return regSetValueEx(syscall.Handle(k), p, 0, valtype, &data[0], uint32(len(data)))
+}
+
+// SetDWordValue sets the data and type of a name value
+// under key k to value and DWORD.
+func (k Key) SetDWordValue(name string, value uint32) error {
+ return k.setValue(name, DWORD, (*[4]byte)(unsafe.Pointer(&value))[:])
+}
+
+// SetQWordValue sets the data and type of a name value
+// under key k to value and QWORD.
+func (k Key) SetQWordValue(name string, value uint64) error {
+ return k.setValue(name, QWORD, (*[8]byte)(unsafe.Pointer(&value))[:])
+}
+
+func (k Key) setStringValue(name string, valtype uint32, value string) error {
+ v, err := syscall.UTF16FromString(value)
+ if err != nil {
+ return err
+ }
+ buf := (*[1 << 29]byte)(unsafe.Pointer(&v[0]))[: len(v)*2 : len(v)*2]
+ return k.setValue(name, valtype, buf)
+}
+
+// SetStringValue sets the data and type of a name value
+// under key k to value and SZ. The value must not contain a zero byte.
+func (k Key) SetStringValue(name, value string) error {
+ return k.setStringValue(name, SZ, value)
+}
+
+// SetExpandStringValue sets the data and type of a name value
+// under key k to value and EXPAND_SZ. The value must not contain a zero byte.
+func (k Key) SetExpandStringValue(name, value string) error {
+ return k.setStringValue(name, EXPAND_SZ, value)
+}
+
+// SetStringsValue sets the data and type of a name value
+// under key k to value and MULTI_SZ. The value strings
+// must not contain a zero byte.
+func (k Key) SetStringsValue(name string, value []string) error {
+ ss := ""
+ for _, s := range value {
+ for i := 0; i < len(s); i++ {
+ if s[i] == 0 {
+ return errors.New("string cannot have 0 inside")
+ }
+ }
+ ss += s + "\x00"
+ }
+ v := utf16.Encode([]rune(ss + "\x00"))
+ buf := (*[1 << 29]byte)(unsafe.Pointer(&v[0]))[: len(v)*2 : len(v)*2]
+ return k.setValue(name, MULTI_SZ, buf)
+}
+
+// SetBinaryValue sets the data and type of a name value
+// under key k to value and BINARY.
+func (k Key) SetBinaryValue(name string, value []byte) error {
+ return k.setValue(name, BINARY, value)
+}
+
+// DeleteValue removes a named value from the key k.
+func (k Key) DeleteValue(name string) error {
+ return regDeleteValue(syscall.Handle(k), syscall.StringToUTF16Ptr(name))
+}
+
+// ReadValueNames returns the value names of key k.
+// The parameter n controls the number of returned names,
+// analogous to the way os.File.Readdirnames works.
+func (k Key) ReadValueNames(n int) ([]string, error) {
+ ki, err := k.Stat()
+ if err != nil {
+ return nil, err
+ }
+ names := make([]string, 0, ki.ValueCount)
+ buf := make([]uint16, ki.MaxValueNameLen+1) // extra room for terminating null character
+loopItems:
+ for i := uint32(0); ; i++ {
+ if n > 0 {
+ if len(names) == n {
+ return names, nil
+ }
+ }
+ l := uint32(len(buf))
+ for {
+ err := regEnumValue(syscall.Handle(k), i, &buf[0], &l, nil, nil, nil, nil)
+ if err == nil {
+ break
+ }
+ if err == syscall.ERROR_MORE_DATA {
+ // Double buffer size and try again.
+ l = uint32(2 * len(buf))
+ buf = make([]uint16, l)
+ continue
+ }
+ if err == _ERROR_NO_MORE_ITEMS {
+ break loopItems
+ }
+ return names, err
+ }
+ names = append(names, syscall.UTF16ToString(buf[:l]))
+ }
+ if n > len(names) {
+ return names, io.EOF
+ }
+ return names, nil
+}
diff --git a/vendor/golang.org/x/sys/windows/registry/zsyscall_windows.go b/vendor/golang.org/x/sys/windows/registry/zsyscall_windows.go
new file mode 100644
index 00000000..fc1835d8
--- /dev/null
+++ b/vendor/golang.org/x/sys/windows/registry/zsyscall_windows.go
@@ -0,0 +1,117 @@
+// Code generated by 'go generate'; DO NOT EDIT.
+
+package registry
+
+import (
+ "syscall"
+ "unsafe"
+
+ "golang.org/x/sys/windows"
+)
+
+var _ unsafe.Pointer
+
+// Do the interface allocations only once for common
+// Errno values.
+const (
+ errnoERROR_IO_PENDING = 997
+)
+
+var (
+ errERROR_IO_PENDING error = syscall.Errno(errnoERROR_IO_PENDING)
+ errERROR_EINVAL error = syscall.EINVAL
+)
+
+// errnoErr returns common boxed Errno values, to prevent
+// allocations at runtime.
+func errnoErr(e syscall.Errno) error {
+ switch e {
+ case 0:
+ return errERROR_EINVAL
+ case errnoERROR_IO_PENDING:
+ return errERROR_IO_PENDING
+ }
+ // TODO: add more here, after collecting data on the common
+ // error values see on Windows. (perhaps when running
+ // all.bat?)
+ return e
+}
+
+var (
+ modadvapi32 = windows.NewLazySystemDLL("advapi32.dll")
+ modkernel32 = windows.NewLazySystemDLL("kernel32.dll")
+
+ procRegConnectRegistryW = modadvapi32.NewProc("RegConnectRegistryW")
+ procRegCreateKeyExW = modadvapi32.NewProc("RegCreateKeyExW")
+ procRegDeleteKeyW = modadvapi32.NewProc("RegDeleteKeyW")
+ procRegDeleteValueW = modadvapi32.NewProc("RegDeleteValueW")
+ procRegEnumValueW = modadvapi32.NewProc("RegEnumValueW")
+ procRegLoadMUIStringW = modadvapi32.NewProc("RegLoadMUIStringW")
+ procRegSetValueExW = modadvapi32.NewProc("RegSetValueExW")
+ procExpandEnvironmentStringsW = modkernel32.NewProc("ExpandEnvironmentStringsW")
+)
+
+func regConnectRegistry(machinename *uint16, key syscall.Handle, result *syscall.Handle) (regerrno error) {
+ r0, _, _ := syscall.Syscall(procRegConnectRegistryW.Addr(), 3, uintptr(unsafe.Pointer(machinename)), uintptr(key), uintptr(unsafe.Pointer(result)))
+ if r0 != 0 {
+ regerrno = syscall.Errno(r0)
+ }
+ return
+}
+
+func regCreateKeyEx(key syscall.Handle, subkey *uint16, reserved uint32, class *uint16, options uint32, desired uint32, sa *syscall.SecurityAttributes, result *syscall.Handle, disposition *uint32) (regerrno error) {
+ r0, _, _ := syscall.Syscall9(procRegCreateKeyExW.Addr(), 9, uintptr(key), uintptr(unsafe.Pointer(subkey)), uintptr(reserved), uintptr(unsafe.Pointer(class)), uintptr(options), uintptr(desired), uintptr(unsafe.Pointer(sa)), uintptr(unsafe.Pointer(result)), uintptr(unsafe.Pointer(disposition)))
+ if r0 != 0 {
+ regerrno = syscall.Errno(r0)
+ }
+ return
+}
+
+func regDeleteKey(key syscall.Handle, subkey *uint16) (regerrno error) {
+ r0, _, _ := syscall.Syscall(procRegDeleteKeyW.Addr(), 2, uintptr(key), uintptr(unsafe.Pointer(subkey)), 0)
+ if r0 != 0 {
+ regerrno = syscall.Errno(r0)
+ }
+ return
+}
+
+func regDeleteValue(key syscall.Handle, name *uint16) (regerrno error) {
+ r0, _, _ := syscall.Syscall(procRegDeleteValueW.Addr(), 2, uintptr(key), uintptr(unsafe.Pointer(name)), 0)
+ if r0 != 0 {
+ regerrno = syscall.Errno(r0)
+ }
+ return
+}
+
+func regEnumValue(key syscall.Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) {
+ r0, _, _ := syscall.Syscall9(procRegEnumValueW.Addr(), 8, uintptr(key), uintptr(index), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(valtype)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(buflen)), 0)
+ if r0 != 0 {
+ regerrno = syscall.Errno(r0)
+ }
+ return
+}
+
+func regLoadMUIString(key syscall.Handle, name *uint16, buf *uint16, buflen uint32, buflenCopied *uint32, flags uint32, dir *uint16) (regerrno error) {
+ r0, _, _ := syscall.Syscall9(procRegLoadMUIStringW.Addr(), 7, uintptr(key), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(buf)), uintptr(buflen), uintptr(unsafe.Pointer(buflenCopied)), uintptr(flags), uintptr(unsafe.Pointer(dir)), 0, 0)
+ if r0 != 0 {
+ regerrno = syscall.Errno(r0)
+ }
+ return
+}
+
+func regSetValueEx(key syscall.Handle, valueName *uint16, reserved uint32, vtype uint32, buf *byte, bufsize uint32) (regerrno error) {
+ r0, _, _ := syscall.Syscall6(procRegSetValueExW.Addr(), 6, uintptr(key), uintptr(unsafe.Pointer(valueName)), uintptr(reserved), uintptr(vtype), uintptr(unsafe.Pointer(buf)), uintptr(bufsize))
+ if r0 != 0 {
+ regerrno = syscall.Errno(r0)
+ }
+ return
+}
+
+func expandEnvironmentStrings(src *uint16, dst *uint16, size uint32) (n uint32, err error) {
+ r0, _, e1 := syscall.Syscall(procExpandEnvironmentStringsW.Addr(), 3, uintptr(unsafe.Pointer(src)), uintptr(unsafe.Pointer(dst)), uintptr(size))
+ n = uint32(r0)
+ if n == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
diff --git a/vendor/golang.org/x/sys/windows/security_windows.go b/vendor/golang.org/x/sys/windows/security_windows.go
new file mode 100644
index 00000000..69eb462c
--- /dev/null
+++ b/vendor/golang.org/x/sys/windows/security_windows.go
@@ -0,0 +1,1418 @@
+// Copyright 2012 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package windows
+
+import (
+ "syscall"
+ "unsafe"
+
+ "golang.org/x/sys/internal/unsafeheader"
+)
+
+const (
+ NameUnknown = 0
+ NameFullyQualifiedDN = 1
+ NameSamCompatible = 2
+ NameDisplay = 3
+ NameUniqueId = 6
+ NameCanonical = 7
+ NameUserPrincipal = 8
+ NameCanonicalEx = 9
+ NameServicePrincipal = 10
+ NameDnsDomain = 12
+)
+
+// This function returns 1 byte BOOLEAN rather than the 4 byte BOOL.
+// http://blogs.msdn.com/b/drnick/archive/2007/12/19/windows-and-upn-format-credentials.aspx
+//sys TranslateName(accName *uint16, accNameFormat uint32, desiredNameFormat uint32, translatedName *uint16, nSize *uint32) (err error) [failretval&0xff==0] = secur32.TranslateNameW
+//sys GetUserNameEx(nameFormat uint32, nameBuffre *uint16, nSize *uint32) (err error) [failretval&0xff==0] = secur32.GetUserNameExW
+
+// TranslateAccountName converts a directory service
+// object name from one format to another.
+func TranslateAccountName(username string, from, to uint32, initSize int) (string, error) {
+ u, e := UTF16PtrFromString(username)
+ if e != nil {
+ return "", e
+ }
+ n := uint32(50)
+ for {
+ b := make([]uint16, n)
+ e = TranslateName(u, from, to, &b[0], &n)
+ if e == nil {
+ return UTF16ToString(b[:n]), nil
+ }
+ if e != ERROR_INSUFFICIENT_BUFFER {
+ return "", e
+ }
+ if n <= uint32(len(b)) {
+ return "", e
+ }
+ }
+}
+
+const (
+ // do not reorder
+ NetSetupUnknownStatus = iota
+ NetSetupUnjoined
+ NetSetupWorkgroupName
+ NetSetupDomainName
+)
+
+type UserInfo10 struct {
+ Name *uint16
+ Comment *uint16
+ UsrComment *uint16
+ FullName *uint16
+}
+
+//sys NetUserGetInfo(serverName *uint16, userName *uint16, level uint32, buf **byte) (neterr error) = netapi32.NetUserGetInfo
+//sys NetGetJoinInformation(server *uint16, name **uint16, bufType *uint32) (neterr error) = netapi32.NetGetJoinInformation
+//sys NetApiBufferFree(buf *byte) (neterr error) = netapi32.NetApiBufferFree
+
+const (
+ // do not reorder
+ SidTypeUser = 1 + iota
+ SidTypeGroup
+ SidTypeDomain
+ SidTypeAlias
+ SidTypeWellKnownGroup
+ SidTypeDeletedAccount
+ SidTypeInvalid
+ SidTypeUnknown
+ SidTypeComputer
+ SidTypeLabel
+)
+
+type SidIdentifierAuthority struct {
+ Value [6]byte
+}
+
+var (
+ SECURITY_NULL_SID_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 0}}
+ SECURITY_WORLD_SID_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 1}}
+ SECURITY_LOCAL_SID_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 2}}
+ SECURITY_CREATOR_SID_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 3}}
+ SECURITY_NON_UNIQUE_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 4}}
+ SECURITY_NT_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 5}}
+ SECURITY_MANDATORY_LABEL_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 16}}
+)
+
+const (
+ SECURITY_NULL_RID = 0
+ SECURITY_WORLD_RID = 0
+ SECURITY_LOCAL_RID = 0
+ SECURITY_CREATOR_OWNER_RID = 0
+ SECURITY_CREATOR_GROUP_RID = 1
+ SECURITY_DIALUP_RID = 1
+ SECURITY_NETWORK_RID = 2
+ SECURITY_BATCH_RID = 3
+ SECURITY_INTERACTIVE_RID = 4
+ SECURITY_LOGON_IDS_RID = 5
+ SECURITY_SERVICE_RID = 6
+ SECURITY_LOCAL_SYSTEM_RID = 18
+ SECURITY_BUILTIN_DOMAIN_RID = 32
+ SECURITY_PRINCIPAL_SELF_RID = 10
+ SECURITY_CREATOR_OWNER_SERVER_RID = 0x2
+ SECURITY_CREATOR_GROUP_SERVER_RID = 0x3
+ SECURITY_LOGON_IDS_RID_COUNT = 0x3
+ SECURITY_ANONYMOUS_LOGON_RID = 0x7
+ SECURITY_PROXY_RID = 0x8
+ SECURITY_ENTERPRISE_CONTROLLERS_RID = 0x9
+ SECURITY_SERVER_LOGON_RID = SECURITY_ENTERPRISE_CONTROLLERS_RID
+ SECURITY_AUTHENTICATED_USER_RID = 0xb
+ SECURITY_RESTRICTED_CODE_RID = 0xc
+ SECURITY_NT_NON_UNIQUE_RID = 0x15
+)
+
+// Predefined domain-relative RIDs for local groups.
+// See https://msdn.microsoft.com/en-us/library/windows/desktop/aa379649(v=vs.85).aspx
+const (
+ DOMAIN_ALIAS_RID_ADMINS = 0x220
+ DOMAIN_ALIAS_RID_USERS = 0x221
+ DOMAIN_ALIAS_RID_GUESTS = 0x222
+ DOMAIN_ALIAS_RID_POWER_USERS = 0x223
+ DOMAIN_ALIAS_RID_ACCOUNT_OPS = 0x224
+ DOMAIN_ALIAS_RID_SYSTEM_OPS = 0x225
+ DOMAIN_ALIAS_RID_PRINT_OPS = 0x226
+ DOMAIN_ALIAS_RID_BACKUP_OPS = 0x227
+ DOMAIN_ALIAS_RID_REPLICATOR = 0x228
+ DOMAIN_ALIAS_RID_RAS_SERVERS = 0x229
+ DOMAIN_ALIAS_RID_PREW2KCOMPACCESS = 0x22a
+ DOMAIN_ALIAS_RID_REMOTE_DESKTOP_USERS = 0x22b
+ DOMAIN_ALIAS_RID_NETWORK_CONFIGURATION_OPS = 0x22c
+ DOMAIN_ALIAS_RID_INCOMING_FOREST_TRUST_BUILDERS = 0x22d
+ DOMAIN_ALIAS_RID_MONITORING_USERS = 0x22e
+ DOMAIN_ALIAS_RID_LOGGING_USERS = 0x22f
+ DOMAIN_ALIAS_RID_AUTHORIZATIONACCESS = 0x230
+ DOMAIN_ALIAS_RID_TS_LICENSE_SERVERS = 0x231
+ DOMAIN_ALIAS_RID_DCOM_USERS = 0x232
+ DOMAIN_ALIAS_RID_IUSERS = 0x238
+ DOMAIN_ALIAS_RID_CRYPTO_OPERATORS = 0x239
+ DOMAIN_ALIAS_RID_CACHEABLE_PRINCIPALS_GROUP = 0x23b
+ DOMAIN_ALIAS_RID_NON_CACHEABLE_PRINCIPALS_GROUP = 0x23c
+ DOMAIN_ALIAS_RID_EVENT_LOG_READERS_GROUP = 0x23d
+ DOMAIN_ALIAS_RID_CERTSVC_DCOM_ACCESS_GROUP = 0x23e
+)
+
+//sys LookupAccountSid(systemName *uint16, sid *SID, name *uint16, nameLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) = advapi32.LookupAccountSidW
+//sys LookupAccountName(systemName *uint16, accountName *uint16, sid *SID, sidLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) = advapi32.LookupAccountNameW
+//sys ConvertSidToStringSid(sid *SID, stringSid **uint16) (err error) = advapi32.ConvertSidToStringSidW
+//sys ConvertStringSidToSid(stringSid *uint16, sid **SID) (err error) = advapi32.ConvertStringSidToSidW
+//sys GetLengthSid(sid *SID) (len uint32) = advapi32.GetLengthSid
+//sys CopySid(destSidLen uint32, destSid *SID, srcSid *SID) (err error) = advapi32.CopySid
+//sys AllocateAndInitializeSid(identAuth *SidIdentifierAuthority, subAuth byte, subAuth0 uint32, subAuth1 uint32, subAuth2 uint32, subAuth3 uint32, subAuth4 uint32, subAuth5 uint32, subAuth6 uint32, subAuth7 uint32, sid **SID) (err error) = advapi32.AllocateAndInitializeSid
+//sys createWellKnownSid(sidType WELL_KNOWN_SID_TYPE, domainSid *SID, sid *SID, sizeSid *uint32) (err error) = advapi32.CreateWellKnownSid
+//sys isWellKnownSid(sid *SID, sidType WELL_KNOWN_SID_TYPE) (isWellKnown bool) = advapi32.IsWellKnownSid
+//sys FreeSid(sid *SID) (err error) [failretval!=0] = advapi32.FreeSid
+//sys EqualSid(sid1 *SID, sid2 *SID) (isEqual bool) = advapi32.EqualSid
+//sys getSidIdentifierAuthority(sid *SID) (authority *SidIdentifierAuthority) = advapi32.GetSidIdentifierAuthority
+//sys getSidSubAuthorityCount(sid *SID) (count *uint8) = advapi32.GetSidSubAuthorityCount
+//sys getSidSubAuthority(sid *SID, index uint32) (subAuthority *uint32) = advapi32.GetSidSubAuthority
+//sys isValidSid(sid *SID) (isValid bool) = advapi32.IsValidSid
+
+// The security identifier (SID) structure is a variable-length
+// structure used to uniquely identify users or groups.
+type SID struct{}
+
+// StringToSid converts a string-format security identifier
+// SID into a valid, functional SID.
+func StringToSid(s string) (*SID, error) {
+ var sid *SID
+ p, e := UTF16PtrFromString(s)
+ if e != nil {
+ return nil, e
+ }
+ e = ConvertStringSidToSid(p, &sid)
+ if e != nil {
+ return nil, e
+ }
+ defer LocalFree((Handle)(unsafe.Pointer(sid)))
+ return sid.Copy()
+}
+
+// LookupSID retrieves a security identifier SID for the account
+// and the name of the domain on which the account was found.
+// System specify target computer to search.
+func LookupSID(system, account string) (sid *SID, domain string, accType uint32, err error) {
+ if len(account) == 0 {
+ return nil, "", 0, syscall.EINVAL
+ }
+ acc, e := UTF16PtrFromString(account)
+ if e != nil {
+ return nil, "", 0, e
+ }
+ var sys *uint16
+ if len(system) > 0 {
+ sys, e = UTF16PtrFromString(system)
+ if e != nil {
+ return nil, "", 0, e
+ }
+ }
+ n := uint32(50)
+ dn := uint32(50)
+ for {
+ b := make([]byte, n)
+ db := make([]uint16, dn)
+ sid = (*SID)(unsafe.Pointer(&b[0]))
+ e = LookupAccountName(sys, acc, sid, &n, &db[0], &dn, &accType)
+ if e == nil {
+ return sid, UTF16ToString(db), accType, nil
+ }
+ if e != ERROR_INSUFFICIENT_BUFFER {
+ return nil, "", 0, e
+ }
+ if n <= uint32(len(b)) {
+ return nil, "", 0, e
+ }
+ }
+}
+
+// String converts SID to a string format suitable for display, storage, or transmission.
+func (sid *SID) String() string {
+ var s *uint16
+ e := ConvertSidToStringSid(sid, &s)
+ if e != nil {
+ return ""
+ }
+ defer LocalFree((Handle)(unsafe.Pointer(s)))
+ return UTF16ToString((*[256]uint16)(unsafe.Pointer(s))[:])
+}
+
+// Len returns the length, in bytes, of a valid security identifier SID.
+func (sid *SID) Len() int {
+ return int(GetLengthSid(sid))
+}
+
+// Copy creates a duplicate of security identifier SID.
+func (sid *SID) Copy() (*SID, error) {
+ b := make([]byte, sid.Len())
+ sid2 := (*SID)(unsafe.Pointer(&b[0]))
+ e := CopySid(uint32(len(b)), sid2, sid)
+ if e != nil {
+ return nil, e
+ }
+ return sid2, nil
+}
+
+// IdentifierAuthority returns the identifier authority of the SID.
+func (sid *SID) IdentifierAuthority() SidIdentifierAuthority {
+ return *getSidIdentifierAuthority(sid)
+}
+
+// SubAuthorityCount returns the number of sub-authorities in the SID.
+func (sid *SID) SubAuthorityCount() uint8 {
+ return *getSidSubAuthorityCount(sid)
+}
+
+// SubAuthority returns the sub-authority of the SID as specified by
+// the index, which must be less than sid.SubAuthorityCount().
+func (sid *SID) SubAuthority(idx uint32) uint32 {
+ if idx >= uint32(sid.SubAuthorityCount()) {
+ panic("sub-authority index out of range")
+ }
+ return *getSidSubAuthority(sid, idx)
+}
+
+// IsValid returns whether the SID has a valid revision and length.
+func (sid *SID) IsValid() bool {
+ return isValidSid(sid)
+}
+
+// Equals compares two SIDs for equality.
+func (sid *SID) Equals(sid2 *SID) bool {
+ return EqualSid(sid, sid2)
+}
+
+// IsWellKnown determines whether the SID matches the well-known sidType.
+func (sid *SID) IsWellKnown(sidType WELL_KNOWN_SID_TYPE) bool {
+ return isWellKnownSid(sid, sidType)
+}
+
+// LookupAccount retrieves the name of the account for this SID
+// and the name of the first domain on which this SID is found.
+// System specify target computer to search for.
+func (sid *SID) LookupAccount(system string) (account, domain string, accType uint32, err error) {
+ var sys *uint16
+ if len(system) > 0 {
+ sys, err = UTF16PtrFromString(system)
+ if err != nil {
+ return "", "", 0, err
+ }
+ }
+ n := uint32(50)
+ dn := uint32(50)
+ for {
+ b := make([]uint16, n)
+ db := make([]uint16, dn)
+ e := LookupAccountSid(sys, sid, &b[0], &n, &db[0], &dn, &accType)
+ if e == nil {
+ return UTF16ToString(b), UTF16ToString(db), accType, nil
+ }
+ if e != ERROR_INSUFFICIENT_BUFFER {
+ return "", "", 0, e
+ }
+ if n <= uint32(len(b)) {
+ return "", "", 0, e
+ }
+ }
+}
+
+// Various types of pre-specified SIDs that can be synthesized and compared at runtime.
+type WELL_KNOWN_SID_TYPE uint32
+
+const (
+ WinNullSid = 0
+ WinWorldSid = 1
+ WinLocalSid = 2
+ WinCreatorOwnerSid = 3
+ WinCreatorGroupSid = 4
+ WinCreatorOwnerServerSid = 5
+ WinCreatorGroupServerSid = 6
+ WinNtAuthoritySid = 7
+ WinDialupSid = 8
+ WinNetworkSid = 9
+ WinBatchSid = 10
+ WinInteractiveSid = 11
+ WinServiceSid = 12
+ WinAnonymousSid = 13
+ WinProxySid = 14
+ WinEnterpriseControllersSid = 15
+ WinSelfSid = 16
+ WinAuthenticatedUserSid = 17
+ WinRestrictedCodeSid = 18
+ WinTerminalServerSid = 19
+ WinRemoteLogonIdSid = 20
+ WinLogonIdsSid = 21
+ WinLocalSystemSid = 22
+ WinLocalServiceSid = 23
+ WinNetworkServiceSid = 24
+ WinBuiltinDomainSid = 25
+ WinBuiltinAdministratorsSid = 26
+ WinBuiltinUsersSid = 27
+ WinBuiltinGuestsSid = 28
+ WinBuiltinPowerUsersSid = 29
+ WinBuiltinAccountOperatorsSid = 30
+ WinBuiltinSystemOperatorsSid = 31
+ WinBuiltinPrintOperatorsSid = 32
+ WinBuiltinBackupOperatorsSid = 33
+ WinBuiltinReplicatorSid = 34
+ WinBuiltinPreWindows2000CompatibleAccessSid = 35
+ WinBuiltinRemoteDesktopUsersSid = 36
+ WinBuiltinNetworkConfigurationOperatorsSid = 37
+ WinAccountAdministratorSid = 38
+ WinAccountGuestSid = 39
+ WinAccountKrbtgtSid = 40
+ WinAccountDomainAdminsSid = 41
+ WinAccountDomainUsersSid = 42
+ WinAccountDomainGuestsSid = 43
+ WinAccountComputersSid = 44
+ WinAccountControllersSid = 45
+ WinAccountCertAdminsSid = 46
+ WinAccountSchemaAdminsSid = 47
+ WinAccountEnterpriseAdminsSid = 48
+ WinAccountPolicyAdminsSid = 49
+ WinAccountRasAndIasServersSid = 50
+ WinNTLMAuthenticationSid = 51
+ WinDigestAuthenticationSid = 52
+ WinSChannelAuthenticationSid = 53
+ WinThisOrganizationSid = 54
+ WinOtherOrganizationSid = 55
+ WinBuiltinIncomingForestTrustBuildersSid = 56
+ WinBuiltinPerfMonitoringUsersSid = 57
+ WinBuiltinPerfLoggingUsersSid = 58
+ WinBuiltinAuthorizationAccessSid = 59
+ WinBuiltinTerminalServerLicenseServersSid = 60
+ WinBuiltinDCOMUsersSid = 61
+ WinBuiltinIUsersSid = 62
+ WinIUserSid = 63
+ WinBuiltinCryptoOperatorsSid = 64
+ WinUntrustedLabelSid = 65
+ WinLowLabelSid = 66
+ WinMediumLabelSid = 67
+ WinHighLabelSid = 68
+ WinSystemLabelSid = 69
+ WinWriteRestrictedCodeSid = 70
+ WinCreatorOwnerRightsSid = 71
+ WinCacheablePrincipalsGroupSid = 72
+ WinNonCacheablePrincipalsGroupSid = 73
+ WinEnterpriseReadonlyControllersSid = 74
+ WinAccountReadonlyControllersSid = 75
+ WinBuiltinEventLogReadersGroup = 76
+ WinNewEnterpriseReadonlyControllersSid = 77
+ WinBuiltinCertSvcDComAccessGroup = 78
+ WinMediumPlusLabelSid = 79
+ WinLocalLogonSid = 80
+ WinConsoleLogonSid = 81
+ WinThisOrganizationCertificateSid = 82
+ WinApplicationPackageAuthoritySid = 83
+ WinBuiltinAnyPackageSid = 84
+ WinCapabilityInternetClientSid = 85
+ WinCapabilityInternetClientServerSid = 86
+ WinCapabilityPrivateNetworkClientServerSid = 87
+ WinCapabilityPicturesLibrarySid = 88
+ WinCapabilityVideosLibrarySid = 89
+ WinCapabilityMusicLibrarySid = 90
+ WinCapabilityDocumentsLibrarySid = 91
+ WinCapabilitySharedUserCertificatesSid = 92
+ WinCapabilityEnterpriseAuthenticationSid = 93
+ WinCapabilityRemovableStorageSid = 94
+ WinBuiltinRDSRemoteAccessServersSid = 95
+ WinBuiltinRDSEndpointServersSid = 96
+ WinBuiltinRDSManagementServersSid = 97
+ WinUserModeDriversSid = 98
+ WinBuiltinHyperVAdminsSid = 99
+ WinAccountCloneableControllersSid = 100
+ WinBuiltinAccessControlAssistanceOperatorsSid = 101
+ WinBuiltinRemoteManagementUsersSid = 102
+ WinAuthenticationAuthorityAssertedSid = 103
+ WinAuthenticationServiceAssertedSid = 104
+ WinLocalAccountSid = 105
+ WinLocalAccountAndAdministratorSid = 106
+ WinAccountProtectedUsersSid = 107
+ WinCapabilityAppointmentsSid = 108
+ WinCapabilityContactsSid = 109
+ WinAccountDefaultSystemManagedSid = 110
+ WinBuiltinDefaultSystemManagedGroupSid = 111
+ WinBuiltinStorageReplicaAdminsSid = 112
+ WinAccountKeyAdminsSid = 113
+ WinAccountEnterpriseKeyAdminsSid = 114
+ WinAuthenticationKeyTrustSid = 115
+ WinAuthenticationKeyPropertyMFASid = 116
+ WinAuthenticationKeyPropertyAttestationSid = 117
+ WinAuthenticationFreshKeyAuthSid = 118
+ WinBuiltinDeviceOwnersSid = 119
+)
+
+// Creates a SID for a well-known predefined alias, generally using the constants of the form
+// Win*Sid, for the local machine.
+func CreateWellKnownSid(sidType WELL_KNOWN_SID_TYPE) (*SID, error) {
+ return CreateWellKnownDomainSid(sidType, nil)
+}
+
+// Creates a SID for a well-known predefined alias, generally using the constants of the form
+// Win*Sid, for the domain specified by the domainSid parameter.
+func CreateWellKnownDomainSid(sidType WELL_KNOWN_SID_TYPE, domainSid *SID) (*SID, error) {
+ n := uint32(50)
+ for {
+ b := make([]byte, n)
+ sid := (*SID)(unsafe.Pointer(&b[0]))
+ err := createWellKnownSid(sidType, domainSid, sid, &n)
+ if err == nil {
+ return sid, nil
+ }
+ if err != ERROR_INSUFFICIENT_BUFFER {
+ return nil, err
+ }
+ if n <= uint32(len(b)) {
+ return nil, err
+ }
+ }
+}
+
+const (
+ // do not reorder
+ TOKEN_ASSIGN_PRIMARY = 1 << iota
+ TOKEN_DUPLICATE
+ TOKEN_IMPERSONATE
+ TOKEN_QUERY
+ TOKEN_QUERY_SOURCE
+ TOKEN_ADJUST_PRIVILEGES
+ TOKEN_ADJUST_GROUPS
+ TOKEN_ADJUST_DEFAULT
+ TOKEN_ADJUST_SESSIONID
+
+ TOKEN_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED |
+ TOKEN_ASSIGN_PRIMARY |
+ TOKEN_DUPLICATE |
+ TOKEN_IMPERSONATE |
+ TOKEN_QUERY |
+ TOKEN_QUERY_SOURCE |
+ TOKEN_ADJUST_PRIVILEGES |
+ TOKEN_ADJUST_GROUPS |
+ TOKEN_ADJUST_DEFAULT |
+ TOKEN_ADJUST_SESSIONID
+ TOKEN_READ = STANDARD_RIGHTS_READ | TOKEN_QUERY
+ TOKEN_WRITE = STANDARD_RIGHTS_WRITE |
+ TOKEN_ADJUST_PRIVILEGES |
+ TOKEN_ADJUST_GROUPS |
+ TOKEN_ADJUST_DEFAULT
+ TOKEN_EXECUTE = STANDARD_RIGHTS_EXECUTE
+)
+
+const (
+ // do not reorder
+ TokenUser = 1 + iota
+ TokenGroups
+ TokenPrivileges
+ TokenOwner
+ TokenPrimaryGroup
+ TokenDefaultDacl
+ TokenSource
+ TokenType
+ TokenImpersonationLevel
+ TokenStatistics
+ TokenRestrictedSids
+ TokenSessionId
+ TokenGroupsAndPrivileges
+ TokenSessionReference
+ TokenSandBoxInert
+ TokenAuditPolicy
+ TokenOrigin
+ TokenElevationType
+ TokenLinkedToken
+ TokenElevation
+ TokenHasRestrictions
+ TokenAccessInformation
+ TokenVirtualizationAllowed
+ TokenVirtualizationEnabled
+ TokenIntegrityLevel
+ TokenUIAccess
+ TokenMandatoryPolicy
+ TokenLogonSid
+ MaxTokenInfoClass
+)
+
+// Group attributes inside of Tokengroups.Groups[i].Attributes
+const (
+ SE_GROUP_MANDATORY = 0x00000001
+ SE_GROUP_ENABLED_BY_DEFAULT = 0x00000002
+ SE_GROUP_ENABLED = 0x00000004
+ SE_GROUP_OWNER = 0x00000008
+ SE_GROUP_USE_FOR_DENY_ONLY = 0x00000010
+ SE_GROUP_INTEGRITY = 0x00000020
+ SE_GROUP_INTEGRITY_ENABLED = 0x00000040
+ SE_GROUP_LOGON_ID = 0xC0000000
+ SE_GROUP_RESOURCE = 0x20000000
+ SE_GROUP_VALID_ATTRIBUTES = SE_GROUP_MANDATORY | SE_GROUP_ENABLED_BY_DEFAULT | SE_GROUP_ENABLED | SE_GROUP_OWNER | SE_GROUP_USE_FOR_DENY_ONLY | SE_GROUP_LOGON_ID | SE_GROUP_RESOURCE | SE_GROUP_INTEGRITY | SE_GROUP_INTEGRITY_ENABLED
+)
+
+// Privilege attributes
+const (
+ SE_PRIVILEGE_ENABLED_BY_DEFAULT = 0x00000001
+ SE_PRIVILEGE_ENABLED = 0x00000002
+ SE_PRIVILEGE_REMOVED = 0x00000004
+ SE_PRIVILEGE_USED_FOR_ACCESS = 0x80000000
+ SE_PRIVILEGE_VALID_ATTRIBUTES = SE_PRIVILEGE_ENABLED_BY_DEFAULT | SE_PRIVILEGE_ENABLED | SE_PRIVILEGE_REMOVED | SE_PRIVILEGE_USED_FOR_ACCESS
+)
+
+// Token types
+const (
+ TokenPrimary = 1
+ TokenImpersonation = 2
+)
+
+// Impersonation levels
+const (
+ SecurityAnonymous = 0
+ SecurityIdentification = 1
+ SecurityImpersonation = 2
+ SecurityDelegation = 3
+)
+
+type LUID struct {
+ LowPart uint32
+ HighPart int32
+}
+
+type LUIDAndAttributes struct {
+ Luid LUID
+ Attributes uint32
+}
+
+type SIDAndAttributes struct {
+ Sid *SID
+ Attributes uint32
+}
+
+type Tokenuser struct {
+ User SIDAndAttributes
+}
+
+type Tokenprimarygroup struct {
+ PrimaryGroup *SID
+}
+
+type Tokengroups struct {
+ GroupCount uint32
+ Groups [1]SIDAndAttributes // Use AllGroups() for iterating.
+}
+
+// AllGroups returns a slice that can be used to iterate over the groups in g.
+func (g *Tokengroups) AllGroups() []SIDAndAttributes {
+ return (*[(1 << 28) - 1]SIDAndAttributes)(unsafe.Pointer(&g.Groups[0]))[:g.GroupCount:g.GroupCount]
+}
+
+type Tokenprivileges struct {
+ PrivilegeCount uint32
+ Privileges [1]LUIDAndAttributes // Use AllPrivileges() for iterating.
+}
+
+// AllPrivileges returns a slice that can be used to iterate over the privileges in p.
+func (p *Tokenprivileges) AllPrivileges() []LUIDAndAttributes {
+ return (*[(1 << 27) - 1]LUIDAndAttributes)(unsafe.Pointer(&p.Privileges[0]))[:p.PrivilegeCount:p.PrivilegeCount]
+}
+
+type Tokenmandatorylabel struct {
+ Label SIDAndAttributes
+}
+
+func (tml *Tokenmandatorylabel) Size() uint32 {
+ return uint32(unsafe.Sizeof(Tokenmandatorylabel{})) + GetLengthSid(tml.Label.Sid)
+}
+
+// Authorization Functions
+//sys checkTokenMembership(tokenHandle Token, sidToCheck *SID, isMember *int32) (err error) = advapi32.CheckTokenMembership
+//sys isTokenRestricted(tokenHandle Token) (ret bool, err error) [!failretval] = advapi32.IsTokenRestricted
+//sys OpenProcessToken(process Handle, access uint32, token *Token) (err error) = advapi32.OpenProcessToken
+//sys OpenThreadToken(thread Handle, access uint32, openAsSelf bool, token *Token) (err error) = advapi32.OpenThreadToken
+//sys ImpersonateSelf(impersonationlevel uint32) (err error) = advapi32.ImpersonateSelf
+//sys RevertToSelf() (err error) = advapi32.RevertToSelf
+//sys SetThreadToken(thread *Handle, token Token) (err error) = advapi32.SetThreadToken
+//sys LookupPrivilegeValue(systemname *uint16, name *uint16, luid *LUID) (err error) = advapi32.LookupPrivilegeValueW
+//sys AdjustTokenPrivileges(token Token, disableAllPrivileges bool, newstate *Tokenprivileges, buflen uint32, prevstate *Tokenprivileges, returnlen *uint32) (err error) = advapi32.AdjustTokenPrivileges
+//sys AdjustTokenGroups(token Token, resetToDefault bool, newstate *Tokengroups, buflen uint32, prevstate *Tokengroups, returnlen *uint32) (err error) = advapi32.AdjustTokenGroups
+//sys GetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32, returnedLen *uint32) (err error) = advapi32.GetTokenInformation
+//sys SetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32) (err error) = advapi32.SetTokenInformation
+//sys DuplicateTokenEx(existingToken Token, desiredAccess uint32, tokenAttributes *SecurityAttributes, impersonationLevel uint32, tokenType uint32, newToken *Token) (err error) = advapi32.DuplicateTokenEx
+//sys GetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) = userenv.GetUserProfileDirectoryW
+//sys getSystemDirectory(dir *uint16, dirLen uint32) (len uint32, err error) = kernel32.GetSystemDirectoryW
+//sys getWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) = kernel32.GetWindowsDirectoryW
+//sys getSystemWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) = kernel32.GetSystemWindowsDirectoryW
+
+// An access token contains the security information for a logon session.
+// The system creates an access token when a user logs on, and every
+// process executed on behalf of the user has a copy of the token.
+// The token identifies the user, the user's groups, and the user's
+// privileges. The system uses the token to control access to securable
+// objects and to control the ability of the user to perform various
+// system-related operations on the local computer.
+type Token Handle
+
+// OpenCurrentProcessToken opens an access token associated with current
+// process with TOKEN_QUERY access. It is a real token that needs to be closed.
+//
+// Deprecated: Explicitly call OpenProcessToken(CurrentProcess(), ...)
+// with the desired access instead, or use GetCurrentProcessToken for a
+// TOKEN_QUERY token.
+func OpenCurrentProcessToken() (Token, error) {
+ var token Token
+ err := OpenProcessToken(CurrentProcess(), TOKEN_QUERY, &token)
+ return token, err
+}
+
+// GetCurrentProcessToken returns the access token associated with
+// the current process. It is a pseudo token that does not need
+// to be closed.
+func GetCurrentProcessToken() Token {
+ return Token(^uintptr(4 - 1))
+}
+
+// GetCurrentThreadToken return the access token associated with
+// the current thread. It is a pseudo token that does not need
+// to be closed.
+func GetCurrentThreadToken() Token {
+ return Token(^uintptr(5 - 1))
+}
+
+// GetCurrentThreadEffectiveToken returns the effective access token
+// associated with the current thread. It is a pseudo token that does
+// not need to be closed.
+func GetCurrentThreadEffectiveToken() Token {
+ return Token(^uintptr(6 - 1))
+}
+
+// Close releases access to access token.
+func (t Token) Close() error {
+ return CloseHandle(Handle(t))
+}
+
+// getInfo retrieves a specified type of information about an access token.
+func (t Token) getInfo(class uint32, initSize int) (unsafe.Pointer, error) {
+ n := uint32(initSize)
+ for {
+ b := make([]byte, n)
+ e := GetTokenInformation(t, class, &b[0], uint32(len(b)), &n)
+ if e == nil {
+ return unsafe.Pointer(&b[0]), nil
+ }
+ if e != ERROR_INSUFFICIENT_BUFFER {
+ return nil, e
+ }
+ if n <= uint32(len(b)) {
+ return nil, e
+ }
+ }
+}
+
+// GetTokenUser retrieves access token t user account information.
+func (t Token) GetTokenUser() (*Tokenuser, error) {
+ i, e := t.getInfo(TokenUser, 50)
+ if e != nil {
+ return nil, e
+ }
+ return (*Tokenuser)(i), nil
+}
+
+// GetTokenGroups retrieves group accounts associated with access token t.
+func (t Token) GetTokenGroups() (*Tokengroups, error) {
+ i, e := t.getInfo(TokenGroups, 50)
+ if e != nil {
+ return nil, e
+ }
+ return (*Tokengroups)(i), nil
+}
+
+// GetTokenPrimaryGroup retrieves access token t primary group information.
+// A pointer to a SID structure representing a group that will become
+// the primary group of any objects created by a process using this access token.
+func (t Token) GetTokenPrimaryGroup() (*Tokenprimarygroup, error) {
+ i, e := t.getInfo(TokenPrimaryGroup, 50)
+ if e != nil {
+ return nil, e
+ }
+ return (*Tokenprimarygroup)(i), nil
+}
+
+// GetUserProfileDirectory retrieves path to the
+// root directory of the access token t user's profile.
+func (t Token) GetUserProfileDirectory() (string, error) {
+ n := uint32(100)
+ for {
+ b := make([]uint16, n)
+ e := GetUserProfileDirectory(t, &b[0], &n)
+ if e == nil {
+ return UTF16ToString(b), nil
+ }
+ if e != ERROR_INSUFFICIENT_BUFFER {
+ return "", e
+ }
+ if n <= uint32(len(b)) {
+ return "", e
+ }
+ }
+}
+
+// IsElevated returns whether the current token is elevated from a UAC perspective.
+func (token Token) IsElevated() bool {
+ var isElevated uint32
+ var outLen uint32
+ err := GetTokenInformation(token, TokenElevation, (*byte)(unsafe.Pointer(&isElevated)), uint32(unsafe.Sizeof(isElevated)), &outLen)
+ if err != nil {
+ return false
+ }
+ return outLen == uint32(unsafe.Sizeof(isElevated)) && isElevated != 0
+}
+
+// GetLinkedToken returns the linked token, which may be an elevated UAC token.
+func (token Token) GetLinkedToken() (Token, error) {
+ var linkedToken Token
+ var outLen uint32
+ err := GetTokenInformation(token, TokenLinkedToken, (*byte)(unsafe.Pointer(&linkedToken)), uint32(unsafe.Sizeof(linkedToken)), &outLen)
+ if err != nil {
+ return Token(0), err
+ }
+ return linkedToken, nil
+}
+
+// GetSystemDirectory retrieves the path to current location of the system
+// directory, which is typically, though not always, `C:\Windows\System32`.
+func GetSystemDirectory() (string, error) {
+ n := uint32(MAX_PATH)
+ for {
+ b := make([]uint16, n)
+ l, e := getSystemDirectory(&b[0], n)
+ if e != nil {
+ return "", e
+ }
+ if l <= n {
+ return UTF16ToString(b[:l]), nil
+ }
+ n = l
+ }
+}
+
+// GetWindowsDirectory retrieves the path to current location of the Windows
+// directory, which is typically, though not always, `C:\Windows`. This may
+// be a private user directory in the case that the application is running
+// under a terminal server.
+func GetWindowsDirectory() (string, error) {
+ n := uint32(MAX_PATH)
+ for {
+ b := make([]uint16, n)
+ l, e := getWindowsDirectory(&b[0], n)
+ if e != nil {
+ return "", e
+ }
+ if l <= n {
+ return UTF16ToString(b[:l]), nil
+ }
+ n = l
+ }
+}
+
+// GetSystemWindowsDirectory retrieves the path to current location of the
+// Windows directory, which is typically, though not always, `C:\Windows`.
+func GetSystemWindowsDirectory() (string, error) {
+ n := uint32(MAX_PATH)
+ for {
+ b := make([]uint16, n)
+ l, e := getSystemWindowsDirectory(&b[0], n)
+ if e != nil {
+ return "", e
+ }
+ if l <= n {
+ return UTF16ToString(b[:l]), nil
+ }
+ n = l
+ }
+}
+
+// IsMember reports whether the access token t is a member of the provided SID.
+func (t Token) IsMember(sid *SID) (bool, error) {
+ var b int32
+ if e := checkTokenMembership(t, sid, &b); e != nil {
+ return false, e
+ }
+ return b != 0, nil
+}
+
+// IsRestricted reports whether the access token t is a restricted token.
+func (t Token) IsRestricted() (isRestricted bool, err error) {
+ isRestricted, err = isTokenRestricted(t)
+ if !isRestricted && err == syscall.EINVAL {
+ // If err is EINVAL, this returned ERROR_SUCCESS indicating a non-restricted token.
+ err = nil
+ }
+ return
+}
+
+const (
+ WTS_CONSOLE_CONNECT = 0x1
+ WTS_CONSOLE_DISCONNECT = 0x2
+ WTS_REMOTE_CONNECT = 0x3
+ WTS_REMOTE_DISCONNECT = 0x4
+ WTS_SESSION_LOGON = 0x5
+ WTS_SESSION_LOGOFF = 0x6
+ WTS_SESSION_LOCK = 0x7
+ WTS_SESSION_UNLOCK = 0x8
+ WTS_SESSION_REMOTE_CONTROL = 0x9
+ WTS_SESSION_CREATE = 0xa
+ WTS_SESSION_TERMINATE = 0xb
+)
+
+const (
+ WTSActive = 0
+ WTSConnected = 1
+ WTSConnectQuery = 2
+ WTSShadow = 3
+ WTSDisconnected = 4
+ WTSIdle = 5
+ WTSListen = 6
+ WTSReset = 7
+ WTSDown = 8
+ WTSInit = 9
+)
+
+type WTSSESSION_NOTIFICATION struct {
+ Size uint32
+ SessionID uint32
+}
+
+type WTS_SESSION_INFO struct {
+ SessionID uint32
+ WindowStationName *uint16
+ State uint32
+}
+
+//sys WTSQueryUserToken(session uint32, token *Token) (err error) = wtsapi32.WTSQueryUserToken
+//sys WTSEnumerateSessions(handle Handle, reserved uint32, version uint32, sessions **WTS_SESSION_INFO, count *uint32) (err error) = wtsapi32.WTSEnumerateSessionsW
+//sys WTSFreeMemory(ptr uintptr) = wtsapi32.WTSFreeMemory
+
+type ACL struct {
+ aclRevision byte
+ sbz1 byte
+ aclSize uint16
+ aceCount uint16
+ sbz2 uint16
+}
+
+type SECURITY_DESCRIPTOR struct {
+ revision byte
+ sbz1 byte
+ control SECURITY_DESCRIPTOR_CONTROL
+ owner *SID
+ group *SID
+ sacl *ACL
+ dacl *ACL
+}
+
+type SecurityAttributes struct {
+ Length uint32
+ SecurityDescriptor *SECURITY_DESCRIPTOR
+ InheritHandle uint32
+}
+
+type SE_OBJECT_TYPE uint32
+
+// Constants for type SE_OBJECT_TYPE
+const (
+ SE_UNKNOWN_OBJECT_TYPE = 0
+ SE_FILE_OBJECT = 1
+ SE_SERVICE = 2
+ SE_PRINTER = 3
+ SE_REGISTRY_KEY = 4
+ SE_LMSHARE = 5
+ SE_KERNEL_OBJECT = 6
+ SE_WINDOW_OBJECT = 7
+ SE_DS_OBJECT = 8
+ SE_DS_OBJECT_ALL = 9
+ SE_PROVIDER_DEFINED_OBJECT = 10
+ SE_WMIGUID_OBJECT = 11
+ SE_REGISTRY_WOW64_32KEY = 12
+ SE_REGISTRY_WOW64_64KEY = 13
+)
+
+type SECURITY_INFORMATION uint32
+
+// Constants for type SECURITY_INFORMATION
+const (
+ OWNER_SECURITY_INFORMATION = 0x00000001
+ GROUP_SECURITY_INFORMATION = 0x00000002
+ DACL_SECURITY_INFORMATION = 0x00000004
+ SACL_SECURITY_INFORMATION = 0x00000008
+ LABEL_SECURITY_INFORMATION = 0x00000010
+ ATTRIBUTE_SECURITY_INFORMATION = 0x00000020
+ SCOPE_SECURITY_INFORMATION = 0x00000040
+ BACKUP_SECURITY_INFORMATION = 0x00010000
+ PROTECTED_DACL_SECURITY_INFORMATION = 0x80000000
+ PROTECTED_SACL_SECURITY_INFORMATION = 0x40000000
+ UNPROTECTED_DACL_SECURITY_INFORMATION = 0x20000000
+ UNPROTECTED_SACL_SECURITY_INFORMATION = 0x10000000
+)
+
+type SECURITY_DESCRIPTOR_CONTROL uint16
+
+// Constants for type SECURITY_DESCRIPTOR_CONTROL
+const (
+ SE_OWNER_DEFAULTED = 0x0001
+ SE_GROUP_DEFAULTED = 0x0002
+ SE_DACL_PRESENT = 0x0004
+ SE_DACL_DEFAULTED = 0x0008
+ SE_SACL_PRESENT = 0x0010
+ SE_SACL_DEFAULTED = 0x0020
+ SE_DACL_AUTO_INHERIT_REQ = 0x0100
+ SE_SACL_AUTO_INHERIT_REQ = 0x0200
+ SE_DACL_AUTO_INHERITED = 0x0400
+ SE_SACL_AUTO_INHERITED = 0x0800
+ SE_DACL_PROTECTED = 0x1000
+ SE_SACL_PROTECTED = 0x2000
+ SE_RM_CONTROL_VALID = 0x4000
+ SE_SELF_RELATIVE = 0x8000
+)
+
+type ACCESS_MASK uint32
+
+// Constants for type ACCESS_MASK
+const (
+ DELETE = 0x00010000
+ READ_CONTROL = 0x00020000
+ WRITE_DAC = 0x00040000
+ WRITE_OWNER = 0x00080000
+ SYNCHRONIZE = 0x00100000
+ STANDARD_RIGHTS_REQUIRED = 0x000F0000
+ STANDARD_RIGHTS_READ = READ_CONTROL
+ STANDARD_RIGHTS_WRITE = READ_CONTROL
+ STANDARD_RIGHTS_EXECUTE = READ_CONTROL
+ STANDARD_RIGHTS_ALL = 0x001F0000
+ SPECIFIC_RIGHTS_ALL = 0x0000FFFF
+ ACCESS_SYSTEM_SECURITY = 0x01000000
+ MAXIMUM_ALLOWED = 0x02000000
+ GENERIC_READ = 0x80000000
+ GENERIC_WRITE = 0x40000000
+ GENERIC_EXECUTE = 0x20000000
+ GENERIC_ALL = 0x10000000
+)
+
+type ACCESS_MODE uint32
+
+// Constants for type ACCESS_MODE
+const (
+ NOT_USED_ACCESS = 0
+ GRANT_ACCESS = 1
+ SET_ACCESS = 2
+ DENY_ACCESS = 3
+ REVOKE_ACCESS = 4
+ SET_AUDIT_SUCCESS = 5
+ SET_AUDIT_FAILURE = 6
+)
+
+// Constants for AceFlags and Inheritance fields
+const (
+ NO_INHERITANCE = 0x0
+ SUB_OBJECTS_ONLY_INHERIT = 0x1
+ SUB_CONTAINERS_ONLY_INHERIT = 0x2
+ SUB_CONTAINERS_AND_OBJECTS_INHERIT = 0x3
+ INHERIT_NO_PROPAGATE = 0x4
+ INHERIT_ONLY = 0x8
+ INHERITED_ACCESS_ENTRY = 0x10
+ INHERITED_PARENT = 0x10000000
+ INHERITED_GRANDPARENT = 0x20000000
+ OBJECT_INHERIT_ACE = 0x1
+ CONTAINER_INHERIT_ACE = 0x2
+ NO_PROPAGATE_INHERIT_ACE = 0x4
+ INHERIT_ONLY_ACE = 0x8
+ INHERITED_ACE = 0x10
+ VALID_INHERIT_FLAGS = 0x1F
+)
+
+type MULTIPLE_TRUSTEE_OPERATION uint32
+
+// Constants for MULTIPLE_TRUSTEE_OPERATION
+const (
+ NO_MULTIPLE_TRUSTEE = 0
+ TRUSTEE_IS_IMPERSONATE = 1
+)
+
+type TRUSTEE_FORM uint32
+
+// Constants for TRUSTEE_FORM
+const (
+ TRUSTEE_IS_SID = 0
+ TRUSTEE_IS_NAME = 1
+ TRUSTEE_BAD_FORM = 2
+ TRUSTEE_IS_OBJECTS_AND_SID = 3
+ TRUSTEE_IS_OBJECTS_AND_NAME = 4
+)
+
+type TRUSTEE_TYPE uint32
+
+// Constants for TRUSTEE_TYPE
+const (
+ TRUSTEE_IS_UNKNOWN = 0
+ TRUSTEE_IS_USER = 1
+ TRUSTEE_IS_GROUP = 2
+ TRUSTEE_IS_DOMAIN = 3
+ TRUSTEE_IS_ALIAS = 4
+ TRUSTEE_IS_WELL_KNOWN_GROUP = 5
+ TRUSTEE_IS_DELETED = 6
+ TRUSTEE_IS_INVALID = 7
+ TRUSTEE_IS_COMPUTER = 8
+)
+
+// Constants for ObjectsPresent field
+const (
+ ACE_OBJECT_TYPE_PRESENT = 0x1
+ ACE_INHERITED_OBJECT_TYPE_PRESENT = 0x2
+)
+
+type EXPLICIT_ACCESS struct {
+ AccessPermissions ACCESS_MASK
+ AccessMode ACCESS_MODE
+ Inheritance uint32
+ Trustee TRUSTEE
+}
+
+// This type is the union inside of TRUSTEE and must be created using one of the TrusteeValueFrom* functions.
+type TrusteeValue uintptr
+
+func TrusteeValueFromString(str string) TrusteeValue {
+ return TrusteeValue(unsafe.Pointer(StringToUTF16Ptr(str)))
+}
+func TrusteeValueFromSID(sid *SID) TrusteeValue {
+ return TrusteeValue(unsafe.Pointer(sid))
+}
+func TrusteeValueFromObjectsAndSid(objectsAndSid *OBJECTS_AND_SID) TrusteeValue {
+ return TrusteeValue(unsafe.Pointer(objectsAndSid))
+}
+func TrusteeValueFromObjectsAndName(objectsAndName *OBJECTS_AND_NAME) TrusteeValue {
+ return TrusteeValue(unsafe.Pointer(objectsAndName))
+}
+
+type TRUSTEE struct {
+ MultipleTrustee *TRUSTEE
+ MultipleTrusteeOperation MULTIPLE_TRUSTEE_OPERATION
+ TrusteeForm TRUSTEE_FORM
+ TrusteeType TRUSTEE_TYPE
+ TrusteeValue TrusteeValue
+}
+
+type OBJECTS_AND_SID struct {
+ ObjectsPresent uint32
+ ObjectTypeGuid GUID
+ InheritedObjectTypeGuid GUID
+ Sid *SID
+}
+
+type OBJECTS_AND_NAME struct {
+ ObjectsPresent uint32
+ ObjectType SE_OBJECT_TYPE
+ ObjectTypeName *uint16
+ InheritedObjectTypeName *uint16
+ Name *uint16
+}
+
+//sys getSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) = advapi32.GetSecurityInfo
+//sys SetSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) = advapi32.SetSecurityInfo
+//sys getNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) = advapi32.GetNamedSecurityInfoW
+//sys SetNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) = advapi32.SetNamedSecurityInfoW
+//sys SetKernelObjectSecurity(handle Handle, securityInformation SECURITY_INFORMATION, securityDescriptor *SECURITY_DESCRIPTOR) (err error) = advapi32.SetKernelObjectSecurity
+
+//sys buildSecurityDescriptor(owner *TRUSTEE, group *TRUSTEE, countAccessEntries uint32, accessEntries *EXPLICIT_ACCESS, countAuditEntries uint32, auditEntries *EXPLICIT_ACCESS, oldSecurityDescriptor *SECURITY_DESCRIPTOR, sizeNewSecurityDescriptor *uint32, newSecurityDescriptor **SECURITY_DESCRIPTOR) (ret error) = advapi32.BuildSecurityDescriptorW
+//sys initializeSecurityDescriptor(absoluteSD *SECURITY_DESCRIPTOR, revision uint32) (err error) = advapi32.InitializeSecurityDescriptor
+
+//sys getSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, control *SECURITY_DESCRIPTOR_CONTROL, revision *uint32) (err error) = advapi32.GetSecurityDescriptorControl
+//sys getSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent *bool, dacl **ACL, daclDefaulted *bool) (err error) = advapi32.GetSecurityDescriptorDacl
+//sys getSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent *bool, sacl **ACL, saclDefaulted *bool) (err error) = advapi32.GetSecurityDescriptorSacl
+//sys getSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner **SID, ownerDefaulted *bool) (err error) = advapi32.GetSecurityDescriptorOwner
+//sys getSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group **SID, groupDefaulted *bool) (err error) = advapi32.GetSecurityDescriptorGroup
+//sys getSecurityDescriptorLength(sd *SECURITY_DESCRIPTOR) (len uint32) = advapi32.GetSecurityDescriptorLength
+//sys getSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) (ret error) [failretval!=0] = advapi32.GetSecurityDescriptorRMControl
+//sys isValidSecurityDescriptor(sd *SECURITY_DESCRIPTOR) (isValid bool) = advapi32.IsValidSecurityDescriptor
+
+//sys setSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, controlBitsOfInterest SECURITY_DESCRIPTOR_CONTROL, controlBitsToSet SECURITY_DESCRIPTOR_CONTROL) (err error) = advapi32.SetSecurityDescriptorControl
+//sys setSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent bool, dacl *ACL, daclDefaulted bool) (err error) = advapi32.SetSecurityDescriptorDacl
+//sys setSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent bool, sacl *ACL, saclDefaulted bool) (err error) = advapi32.SetSecurityDescriptorSacl
+//sys setSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner *SID, ownerDefaulted bool) (err error) = advapi32.SetSecurityDescriptorOwner
+//sys setSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group *SID, groupDefaulted bool) (err error) = advapi32.SetSecurityDescriptorGroup
+//sys setSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) = advapi32.SetSecurityDescriptorRMControl
+
+//sys convertStringSecurityDescriptorToSecurityDescriptor(str string, revision uint32, sd **SECURITY_DESCRIPTOR, size *uint32) (err error) = advapi32.ConvertStringSecurityDescriptorToSecurityDescriptorW
+//sys convertSecurityDescriptorToStringSecurityDescriptor(sd *SECURITY_DESCRIPTOR, revision uint32, securityInformation SECURITY_INFORMATION, str **uint16, strLen *uint32) (err error) = advapi32.ConvertSecurityDescriptorToStringSecurityDescriptorW
+
+//sys makeAbsoluteSD(selfRelativeSD *SECURITY_DESCRIPTOR, absoluteSD *SECURITY_DESCRIPTOR, absoluteSDSize *uint32, dacl *ACL, daclSize *uint32, sacl *ACL, saclSize *uint32, owner *SID, ownerSize *uint32, group *SID, groupSize *uint32) (err error) = advapi32.MakeAbsoluteSD
+//sys makeSelfRelativeSD(absoluteSD *SECURITY_DESCRIPTOR, selfRelativeSD *SECURITY_DESCRIPTOR, selfRelativeSDSize *uint32) (err error) = advapi32.MakeSelfRelativeSD
+
+//sys setEntriesInAcl(countExplicitEntries uint32, explicitEntries *EXPLICIT_ACCESS, oldACL *ACL, newACL **ACL) (ret error) = advapi32.SetEntriesInAclW
+
+// Control returns the security descriptor control bits.
+func (sd *SECURITY_DESCRIPTOR) Control() (control SECURITY_DESCRIPTOR_CONTROL, revision uint32, err error) {
+ err = getSecurityDescriptorControl(sd, &control, &revision)
+ return
+}
+
+// SetControl sets the security descriptor control bits.
+func (sd *SECURITY_DESCRIPTOR) SetControl(controlBitsOfInterest SECURITY_DESCRIPTOR_CONTROL, controlBitsToSet SECURITY_DESCRIPTOR_CONTROL) error {
+ return setSecurityDescriptorControl(sd, controlBitsOfInterest, controlBitsToSet)
+}
+
+// RMControl returns the security descriptor resource manager control bits.
+func (sd *SECURITY_DESCRIPTOR) RMControl() (control uint8, err error) {
+ err = getSecurityDescriptorRMControl(sd, &control)
+ return
+}
+
+// SetRMControl sets the security descriptor resource manager control bits.
+func (sd *SECURITY_DESCRIPTOR) SetRMControl(rmControl uint8) {
+ setSecurityDescriptorRMControl(sd, &rmControl)
+}
+
+// DACL returns the security descriptor DACL and whether it was defaulted. The dacl return value may be nil
+// if a DACL exists but is an "empty DACL", meaning fully permissive. If the DACL does not exist, err returns
+// ERROR_OBJECT_NOT_FOUND.
+func (sd *SECURITY_DESCRIPTOR) DACL() (dacl *ACL, defaulted bool, err error) {
+ var present bool
+ err = getSecurityDescriptorDacl(sd, &present, &dacl, &defaulted)
+ if !present {
+ err = ERROR_OBJECT_NOT_FOUND
+ }
+ return
+}
+
+// SetDACL sets the absolute security descriptor DACL.
+func (absoluteSD *SECURITY_DESCRIPTOR) SetDACL(dacl *ACL, present, defaulted bool) error {
+ return setSecurityDescriptorDacl(absoluteSD, present, dacl, defaulted)
+}
+
+// SACL returns the security descriptor SACL and whether it was defaulted. The sacl return value may be nil
+// if a SACL exists but is an "empty SACL", meaning fully permissive. If the SACL does not exist, err returns
+// ERROR_OBJECT_NOT_FOUND.
+func (sd *SECURITY_DESCRIPTOR) SACL() (sacl *ACL, defaulted bool, err error) {
+ var present bool
+ err = getSecurityDescriptorSacl(sd, &present, &sacl, &defaulted)
+ if !present {
+ err = ERROR_OBJECT_NOT_FOUND
+ }
+ return
+}
+
+// SetSACL sets the absolute security descriptor SACL.
+func (absoluteSD *SECURITY_DESCRIPTOR) SetSACL(sacl *ACL, present, defaulted bool) error {
+ return setSecurityDescriptorSacl(absoluteSD, present, sacl, defaulted)
+}
+
+// Owner returns the security descriptor owner and whether it was defaulted.
+func (sd *SECURITY_DESCRIPTOR) Owner() (owner *SID, defaulted bool, err error) {
+ err = getSecurityDescriptorOwner(sd, &owner, &defaulted)
+ return
+}
+
+// SetOwner sets the absolute security descriptor owner.
+func (absoluteSD *SECURITY_DESCRIPTOR) SetOwner(owner *SID, defaulted bool) error {
+ return setSecurityDescriptorOwner(absoluteSD, owner, defaulted)
+}
+
+// Group returns the security descriptor group and whether it was defaulted.
+func (sd *SECURITY_DESCRIPTOR) Group() (group *SID, defaulted bool, err error) {
+ err = getSecurityDescriptorGroup(sd, &group, &defaulted)
+ return
+}
+
+// SetGroup sets the absolute security descriptor owner.
+func (absoluteSD *SECURITY_DESCRIPTOR) SetGroup(group *SID, defaulted bool) error {
+ return setSecurityDescriptorGroup(absoluteSD, group, defaulted)
+}
+
+// Length returns the length of the security descriptor.
+func (sd *SECURITY_DESCRIPTOR) Length() uint32 {
+ return getSecurityDescriptorLength(sd)
+}
+
+// IsValid returns whether the security descriptor is valid.
+func (sd *SECURITY_DESCRIPTOR) IsValid() bool {
+ return isValidSecurityDescriptor(sd)
+}
+
+// String returns the SDDL form of the security descriptor, with a function signature that can be
+// used with %v formatting directives.
+func (sd *SECURITY_DESCRIPTOR) String() string {
+ var sddl *uint16
+ err := convertSecurityDescriptorToStringSecurityDescriptor(sd, 1, 0xff, &sddl, nil)
+ if err != nil {
+ return ""
+ }
+ defer LocalFree(Handle(unsafe.Pointer(sddl)))
+ return UTF16PtrToString(sddl)
+}
+
+// ToAbsolute converts a self-relative security descriptor into an absolute one.
+func (selfRelativeSD *SECURITY_DESCRIPTOR) ToAbsolute() (absoluteSD *SECURITY_DESCRIPTOR, err error) {
+ control, _, err := selfRelativeSD.Control()
+ if err != nil {
+ return
+ }
+ if control&SE_SELF_RELATIVE == 0 {
+ err = ERROR_INVALID_PARAMETER
+ return
+ }
+ var absoluteSDSize, daclSize, saclSize, ownerSize, groupSize uint32
+ err = makeAbsoluteSD(selfRelativeSD, nil, &absoluteSDSize,
+ nil, &daclSize, nil, &saclSize, nil, &ownerSize, nil, &groupSize)
+ switch err {
+ case ERROR_INSUFFICIENT_BUFFER:
+ case nil:
+ // makeAbsoluteSD is expected to fail, but it succeeds.
+ return nil, ERROR_INTERNAL_ERROR
+ default:
+ return nil, err
+ }
+ if absoluteSDSize > 0 {
+ absoluteSD = (*SECURITY_DESCRIPTOR)(unsafe.Pointer(&make([]byte, absoluteSDSize)[0]))
+ }
+ var (
+ dacl *ACL
+ sacl *ACL
+ owner *SID
+ group *SID
+ )
+ if daclSize > 0 {
+ dacl = (*ACL)(unsafe.Pointer(&make([]byte, daclSize)[0]))
+ }
+ if saclSize > 0 {
+ sacl = (*ACL)(unsafe.Pointer(&make([]byte, saclSize)[0]))
+ }
+ if ownerSize > 0 {
+ owner = (*SID)(unsafe.Pointer(&make([]byte, ownerSize)[0]))
+ }
+ if groupSize > 0 {
+ group = (*SID)(unsafe.Pointer(&make([]byte, groupSize)[0]))
+ }
+ err = makeAbsoluteSD(selfRelativeSD, absoluteSD, &absoluteSDSize,
+ dacl, &daclSize, sacl, &saclSize, owner, &ownerSize, group, &groupSize)
+ return
+}
+
+// ToSelfRelative converts an absolute security descriptor into a self-relative one.
+func (absoluteSD *SECURITY_DESCRIPTOR) ToSelfRelative() (selfRelativeSD *SECURITY_DESCRIPTOR, err error) {
+ control, _, err := absoluteSD.Control()
+ if err != nil {
+ return
+ }
+ if control&SE_SELF_RELATIVE != 0 {
+ err = ERROR_INVALID_PARAMETER
+ return
+ }
+ var selfRelativeSDSize uint32
+ err = makeSelfRelativeSD(absoluteSD, nil, &selfRelativeSDSize)
+ switch err {
+ case ERROR_INSUFFICIENT_BUFFER:
+ case nil:
+ // makeSelfRelativeSD is expected to fail, but it succeeds.
+ return nil, ERROR_INTERNAL_ERROR
+ default:
+ return nil, err
+ }
+ if selfRelativeSDSize > 0 {
+ selfRelativeSD = (*SECURITY_DESCRIPTOR)(unsafe.Pointer(&make([]byte, selfRelativeSDSize)[0]))
+ }
+ err = makeSelfRelativeSD(absoluteSD, selfRelativeSD, &selfRelativeSDSize)
+ return
+}
+
+func (selfRelativeSD *SECURITY_DESCRIPTOR) copySelfRelativeSecurityDescriptor() *SECURITY_DESCRIPTOR {
+ sdLen := (int)(selfRelativeSD.Length())
+
+ var src []byte
+ h := (*unsafeheader.Slice)(unsafe.Pointer(&src))
+ h.Data = unsafe.Pointer(selfRelativeSD)
+ h.Len = sdLen
+ h.Cap = sdLen
+
+ dst := make([]byte, sdLen)
+ copy(dst, src)
+ return (*SECURITY_DESCRIPTOR)(unsafe.Pointer(&dst[0]))
+}
+
+// SecurityDescriptorFromString converts an SDDL string describing a security descriptor into a
+// self-relative security descriptor object allocated on the Go heap.
+func SecurityDescriptorFromString(sddl string) (sd *SECURITY_DESCRIPTOR, err error) {
+ var winHeapSD *SECURITY_DESCRIPTOR
+ err = convertStringSecurityDescriptorToSecurityDescriptor(sddl, 1, &winHeapSD, nil)
+ if err != nil {
+ return
+ }
+ defer LocalFree(Handle(unsafe.Pointer(winHeapSD)))
+ return winHeapSD.copySelfRelativeSecurityDescriptor(), nil
+}
+
+// GetSecurityInfo queries the security information for a given handle and returns the self-relative security
+// descriptor result on the Go heap.
+func GetSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION) (sd *SECURITY_DESCRIPTOR, err error) {
+ var winHeapSD *SECURITY_DESCRIPTOR
+ err = getSecurityInfo(handle, objectType, securityInformation, nil, nil, nil, nil, &winHeapSD)
+ if err != nil {
+ return
+ }
+ defer LocalFree(Handle(unsafe.Pointer(winHeapSD)))
+ return winHeapSD.copySelfRelativeSecurityDescriptor(), nil
+}
+
+// GetNamedSecurityInfo queries the security information for a given named object and returns the self-relative security
+// descriptor result on the Go heap.
+func GetNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION) (sd *SECURITY_DESCRIPTOR, err error) {
+ var winHeapSD *SECURITY_DESCRIPTOR
+ err = getNamedSecurityInfo(objectName, objectType, securityInformation, nil, nil, nil, nil, &winHeapSD)
+ if err != nil {
+ return
+ }
+ defer LocalFree(Handle(unsafe.Pointer(winHeapSD)))
+ return winHeapSD.copySelfRelativeSecurityDescriptor(), nil
+}
+
+// BuildSecurityDescriptor makes a new security descriptor using the input trustees, explicit access lists, and
+// prior security descriptor to be merged, any of which can be nil, returning the self-relative security descriptor
+// result on the Go heap.
+func BuildSecurityDescriptor(owner *TRUSTEE, group *TRUSTEE, accessEntries []EXPLICIT_ACCESS, auditEntries []EXPLICIT_ACCESS, mergedSecurityDescriptor *SECURITY_DESCRIPTOR) (sd *SECURITY_DESCRIPTOR, err error) {
+ var winHeapSD *SECURITY_DESCRIPTOR
+ var winHeapSDSize uint32
+ var firstAccessEntry *EXPLICIT_ACCESS
+ if len(accessEntries) > 0 {
+ firstAccessEntry = &accessEntries[0]
+ }
+ var firstAuditEntry *EXPLICIT_ACCESS
+ if len(auditEntries) > 0 {
+ firstAuditEntry = &auditEntries[0]
+ }
+ err = buildSecurityDescriptor(owner, group, uint32(len(accessEntries)), firstAccessEntry, uint32(len(auditEntries)), firstAuditEntry, mergedSecurityDescriptor, &winHeapSDSize, &winHeapSD)
+ if err != nil {
+ return
+ }
+ defer LocalFree(Handle(unsafe.Pointer(winHeapSD)))
+ return winHeapSD.copySelfRelativeSecurityDescriptor(), nil
+}
+
+// NewSecurityDescriptor creates and initializes a new absolute security descriptor.
+func NewSecurityDescriptor() (absoluteSD *SECURITY_DESCRIPTOR, err error) {
+ absoluteSD = &SECURITY_DESCRIPTOR{}
+ err = initializeSecurityDescriptor(absoluteSD, 1)
+ return
+}
+
+// ACLFromEntries returns a new ACL on the Go heap containing a list of explicit entries as well as those of another ACL.
+// Both explicitEntries and mergedACL are optional and can be nil.
+func ACLFromEntries(explicitEntries []EXPLICIT_ACCESS, mergedACL *ACL) (acl *ACL, err error) {
+ var firstExplicitEntry *EXPLICIT_ACCESS
+ if len(explicitEntries) > 0 {
+ firstExplicitEntry = &explicitEntries[0]
+ }
+ var winHeapACL *ACL
+ err = setEntriesInAcl(uint32(len(explicitEntries)), firstExplicitEntry, mergedACL, &winHeapACL)
+ if err != nil {
+ return
+ }
+ defer LocalFree(Handle(unsafe.Pointer(winHeapACL)))
+ aclBytes := make([]byte, winHeapACL.aclSize)
+ copy(aclBytes, (*[(1 << 31) - 1]byte)(unsafe.Pointer(winHeapACL))[:len(aclBytes):len(aclBytes)])
+ return (*ACL)(unsafe.Pointer(&aclBytes[0])), nil
+}
diff --git a/vendor/golang.org/x/sys/windows/service.go b/vendor/golang.org/x/sys/windows/service.go
new file mode 100644
index 00000000..f54ff90a
--- /dev/null
+++ b/vendor/golang.org/x/sys/windows/service.go
@@ -0,0 +1,231 @@
+// Copyright 2012 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build windows
+
+package windows
+
+const (
+ SC_MANAGER_CONNECT = 1
+ SC_MANAGER_CREATE_SERVICE = 2
+ SC_MANAGER_ENUMERATE_SERVICE = 4
+ SC_MANAGER_LOCK = 8
+ SC_MANAGER_QUERY_LOCK_STATUS = 16
+ SC_MANAGER_MODIFY_BOOT_CONFIG = 32
+ SC_MANAGER_ALL_ACCESS = 0xf003f
+)
+
+//sys OpenSCManager(machineName *uint16, databaseName *uint16, access uint32) (handle Handle, err error) [failretval==0] = advapi32.OpenSCManagerW
+
+const (
+ SERVICE_KERNEL_DRIVER = 1
+ SERVICE_FILE_SYSTEM_DRIVER = 2
+ SERVICE_ADAPTER = 4
+ SERVICE_RECOGNIZER_DRIVER = 8
+ SERVICE_WIN32_OWN_PROCESS = 16
+ SERVICE_WIN32_SHARE_PROCESS = 32
+ SERVICE_WIN32 = SERVICE_WIN32_OWN_PROCESS | SERVICE_WIN32_SHARE_PROCESS
+ SERVICE_INTERACTIVE_PROCESS = 256
+ SERVICE_DRIVER = SERVICE_KERNEL_DRIVER | SERVICE_FILE_SYSTEM_DRIVER | SERVICE_RECOGNIZER_DRIVER
+ SERVICE_TYPE_ALL = SERVICE_WIN32 | SERVICE_ADAPTER | SERVICE_DRIVER | SERVICE_INTERACTIVE_PROCESS
+
+ SERVICE_BOOT_START = 0
+ SERVICE_SYSTEM_START = 1
+ SERVICE_AUTO_START = 2
+ SERVICE_DEMAND_START = 3
+ SERVICE_DISABLED = 4
+
+ SERVICE_ERROR_IGNORE = 0
+ SERVICE_ERROR_NORMAL = 1
+ SERVICE_ERROR_SEVERE = 2
+ SERVICE_ERROR_CRITICAL = 3
+
+ SC_STATUS_PROCESS_INFO = 0
+
+ SC_ACTION_NONE = 0
+ SC_ACTION_RESTART = 1
+ SC_ACTION_REBOOT = 2
+ SC_ACTION_RUN_COMMAND = 3
+
+ SERVICE_STOPPED = 1
+ SERVICE_START_PENDING = 2
+ SERVICE_STOP_PENDING = 3
+ SERVICE_RUNNING = 4
+ SERVICE_CONTINUE_PENDING = 5
+ SERVICE_PAUSE_PENDING = 6
+ SERVICE_PAUSED = 7
+ SERVICE_NO_CHANGE = 0xffffffff
+
+ SERVICE_ACCEPT_STOP = 1
+ SERVICE_ACCEPT_PAUSE_CONTINUE = 2
+ SERVICE_ACCEPT_SHUTDOWN = 4
+ SERVICE_ACCEPT_PARAMCHANGE = 8
+ SERVICE_ACCEPT_NETBINDCHANGE = 16
+ SERVICE_ACCEPT_HARDWAREPROFILECHANGE = 32
+ SERVICE_ACCEPT_POWEREVENT = 64
+ SERVICE_ACCEPT_SESSIONCHANGE = 128
+ SERVICE_ACCEPT_PRESHUTDOWN = 256
+
+ SERVICE_CONTROL_STOP = 1
+ SERVICE_CONTROL_PAUSE = 2
+ SERVICE_CONTROL_CONTINUE = 3
+ SERVICE_CONTROL_INTERROGATE = 4
+ SERVICE_CONTROL_SHUTDOWN = 5
+ SERVICE_CONTROL_PARAMCHANGE = 6
+ SERVICE_CONTROL_NETBINDADD = 7
+ SERVICE_CONTROL_NETBINDREMOVE = 8
+ SERVICE_CONTROL_NETBINDENABLE = 9
+ SERVICE_CONTROL_NETBINDDISABLE = 10
+ SERVICE_CONTROL_DEVICEEVENT = 11
+ SERVICE_CONTROL_HARDWAREPROFILECHANGE = 12
+ SERVICE_CONTROL_POWEREVENT = 13
+ SERVICE_CONTROL_SESSIONCHANGE = 14
+ SERVICE_CONTROL_PRESHUTDOWN = 15
+
+ SERVICE_ACTIVE = 1
+ SERVICE_INACTIVE = 2
+ SERVICE_STATE_ALL = 3
+
+ SERVICE_QUERY_CONFIG = 1
+ SERVICE_CHANGE_CONFIG = 2
+ SERVICE_QUERY_STATUS = 4
+ SERVICE_ENUMERATE_DEPENDENTS = 8
+ SERVICE_START = 16
+ SERVICE_STOP = 32
+ SERVICE_PAUSE_CONTINUE = 64
+ SERVICE_INTERROGATE = 128
+ SERVICE_USER_DEFINED_CONTROL = 256
+ SERVICE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SERVICE_QUERY_CONFIG | SERVICE_CHANGE_CONFIG | SERVICE_QUERY_STATUS | SERVICE_ENUMERATE_DEPENDENTS | SERVICE_START | SERVICE_STOP | SERVICE_PAUSE_CONTINUE | SERVICE_INTERROGATE | SERVICE_USER_DEFINED_CONTROL
+
+ SERVICE_RUNS_IN_SYSTEM_PROCESS = 1
+
+ SERVICE_CONFIG_DESCRIPTION = 1
+ SERVICE_CONFIG_FAILURE_ACTIONS = 2
+ SERVICE_CONFIG_DELAYED_AUTO_START_INFO = 3
+ SERVICE_CONFIG_FAILURE_ACTIONS_FLAG = 4
+ SERVICE_CONFIG_SERVICE_SID_INFO = 5
+ SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO = 6
+ SERVICE_CONFIG_PRESHUTDOWN_INFO = 7
+ SERVICE_CONFIG_TRIGGER_INFO = 8
+ SERVICE_CONFIG_PREFERRED_NODE = 9
+ SERVICE_CONFIG_LAUNCH_PROTECTED = 12
+
+ SERVICE_SID_TYPE_NONE = 0
+ SERVICE_SID_TYPE_UNRESTRICTED = 1
+ SERVICE_SID_TYPE_RESTRICTED = 2 | SERVICE_SID_TYPE_UNRESTRICTED
+
+ SC_ENUM_PROCESS_INFO = 0
+
+ SERVICE_NOTIFY_STATUS_CHANGE = 2
+ SERVICE_NOTIFY_STOPPED = 0x00000001
+ SERVICE_NOTIFY_START_PENDING = 0x00000002
+ SERVICE_NOTIFY_STOP_PENDING = 0x00000004
+ SERVICE_NOTIFY_RUNNING = 0x00000008
+ SERVICE_NOTIFY_CONTINUE_PENDING = 0x00000010
+ SERVICE_NOTIFY_PAUSE_PENDING = 0x00000020
+ SERVICE_NOTIFY_PAUSED = 0x00000040
+ SERVICE_NOTIFY_CREATED = 0x00000080
+ SERVICE_NOTIFY_DELETED = 0x00000100
+ SERVICE_NOTIFY_DELETE_PENDING = 0x00000200
+)
+
+type SERVICE_STATUS struct {
+ ServiceType uint32
+ CurrentState uint32
+ ControlsAccepted uint32
+ Win32ExitCode uint32
+ ServiceSpecificExitCode uint32
+ CheckPoint uint32
+ WaitHint uint32
+}
+
+type SERVICE_TABLE_ENTRY struct {
+ ServiceName *uint16
+ ServiceProc uintptr
+}
+
+type QUERY_SERVICE_CONFIG struct {
+ ServiceType uint32
+ StartType uint32
+ ErrorControl uint32
+ BinaryPathName *uint16
+ LoadOrderGroup *uint16
+ TagId uint32
+ Dependencies *uint16
+ ServiceStartName *uint16
+ DisplayName *uint16
+}
+
+type SERVICE_DESCRIPTION struct {
+ Description *uint16
+}
+
+type SERVICE_DELAYED_AUTO_START_INFO struct {
+ IsDelayedAutoStartUp uint32
+}
+
+type SERVICE_STATUS_PROCESS struct {
+ ServiceType uint32
+ CurrentState uint32
+ ControlsAccepted uint32
+ Win32ExitCode uint32
+ ServiceSpecificExitCode uint32
+ CheckPoint uint32
+ WaitHint uint32
+ ProcessId uint32
+ ServiceFlags uint32
+}
+
+type ENUM_SERVICE_STATUS_PROCESS struct {
+ ServiceName *uint16
+ DisplayName *uint16
+ ServiceStatusProcess SERVICE_STATUS_PROCESS
+}
+
+type SERVICE_NOTIFY struct {
+ Version uint32
+ NotifyCallback uintptr
+ Context uintptr
+ NotificationStatus uint32
+ ServiceStatus SERVICE_STATUS_PROCESS
+ NotificationTriggered uint32
+ ServiceNames *uint16
+}
+
+type SERVICE_FAILURE_ACTIONS struct {
+ ResetPeriod uint32
+ RebootMsg *uint16
+ Command *uint16
+ ActionsCount uint32
+ Actions *SC_ACTION
+}
+
+type SC_ACTION struct {
+ Type uint32
+ Delay uint32
+}
+
+type QUERY_SERVICE_LOCK_STATUS struct {
+ IsLocked uint32
+ LockOwner *uint16
+ LockDuration uint32
+}
+
+//sys CloseServiceHandle(handle Handle) (err error) = advapi32.CloseServiceHandle
+//sys CreateService(mgr Handle, serviceName *uint16, displayName *uint16, access uint32, srvType uint32, startType uint32, errCtl uint32, pathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16) (handle Handle, err error) [failretval==0] = advapi32.CreateServiceW
+//sys OpenService(mgr Handle, serviceName *uint16, access uint32) (handle Handle, err error) [failretval==0] = advapi32.OpenServiceW
+//sys DeleteService(service Handle) (err error) = advapi32.DeleteService
+//sys StartService(service Handle, numArgs uint32, argVectors **uint16) (err error) = advapi32.StartServiceW
+//sys QueryServiceStatus(service Handle, status *SERVICE_STATUS) (err error) = advapi32.QueryServiceStatus
+//sys QueryServiceLockStatus(mgr Handle, lockStatus *QUERY_SERVICE_LOCK_STATUS, bufSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceLockStatusW
+//sys ControlService(service Handle, control uint32, status *SERVICE_STATUS) (err error) = advapi32.ControlService
+//sys StartServiceCtrlDispatcher(serviceTable *SERVICE_TABLE_ENTRY) (err error) = advapi32.StartServiceCtrlDispatcherW
+//sys SetServiceStatus(service Handle, serviceStatus *SERVICE_STATUS) (err error) = advapi32.SetServiceStatus
+//sys ChangeServiceConfig(service Handle, serviceType uint32, startType uint32, errorControl uint32, binaryPathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16, displayName *uint16) (err error) = advapi32.ChangeServiceConfigW
+//sys QueryServiceConfig(service Handle, serviceConfig *QUERY_SERVICE_CONFIG, bufSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceConfigW
+//sys ChangeServiceConfig2(service Handle, infoLevel uint32, info *byte) (err error) = advapi32.ChangeServiceConfig2W
+//sys QueryServiceConfig2(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceConfig2W
+//sys EnumServicesStatusEx(mgr Handle, infoLevel uint32, serviceType uint32, serviceState uint32, services *byte, bufSize uint32, bytesNeeded *uint32, servicesReturned *uint32, resumeHandle *uint32, groupName *uint16) (err error) = advapi32.EnumServicesStatusExW
+//sys QueryServiceStatusEx(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceStatusEx
+//sys NotifyServiceStatusChange(service Handle, notifyMask uint32, notifier *SERVICE_NOTIFY) (ret error) = advapi32.NotifyServiceStatusChangeW
diff --git a/vendor/golang.org/x/sys/windows/setupapierrors_windows.go b/vendor/golang.org/x/sys/windows/setupapierrors_windows.go
new file mode 100644
index 00000000..1681810e
--- /dev/null
+++ b/vendor/golang.org/x/sys/windows/setupapierrors_windows.go
@@ -0,0 +1,100 @@
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package windows
+
+import "syscall"
+
+const (
+ ERROR_EXPECTED_SECTION_NAME syscall.Errno = 0x20000000 | 0xC0000000 | 0
+ ERROR_BAD_SECTION_NAME_LINE syscall.Errno = 0x20000000 | 0xC0000000 | 1
+ ERROR_SECTION_NAME_TOO_LONG syscall.Errno = 0x20000000 | 0xC0000000 | 2
+ ERROR_GENERAL_SYNTAX syscall.Errno = 0x20000000 | 0xC0000000 | 3
+ ERROR_WRONG_INF_STYLE syscall.Errno = 0x20000000 | 0xC0000000 | 0x100
+ ERROR_SECTION_NOT_FOUND syscall.Errno = 0x20000000 | 0xC0000000 | 0x101
+ ERROR_LINE_NOT_FOUND syscall.Errno = 0x20000000 | 0xC0000000 | 0x102
+ ERROR_NO_BACKUP syscall.Errno = 0x20000000 | 0xC0000000 | 0x103
+ ERROR_NO_ASSOCIATED_CLASS syscall.Errno = 0x20000000 | 0xC0000000 | 0x200
+ ERROR_CLASS_MISMATCH syscall.Errno = 0x20000000 | 0xC0000000 | 0x201
+ ERROR_DUPLICATE_FOUND syscall.Errno = 0x20000000 | 0xC0000000 | 0x202
+ ERROR_NO_DRIVER_SELECTED syscall.Errno = 0x20000000 | 0xC0000000 | 0x203
+ ERROR_KEY_DOES_NOT_EXIST syscall.Errno = 0x20000000 | 0xC0000000 | 0x204
+ ERROR_INVALID_DEVINST_NAME syscall.Errno = 0x20000000 | 0xC0000000 | 0x205
+ ERROR_INVALID_CLASS syscall.Errno = 0x20000000 | 0xC0000000 | 0x206
+ ERROR_DEVINST_ALREADY_EXISTS syscall.Errno = 0x20000000 | 0xC0000000 | 0x207
+ ERROR_DEVINFO_NOT_REGISTERED syscall.Errno = 0x20000000 | 0xC0000000 | 0x208
+ ERROR_INVALID_REG_PROPERTY syscall.Errno = 0x20000000 | 0xC0000000 | 0x209
+ ERROR_NO_INF syscall.Errno = 0x20000000 | 0xC0000000 | 0x20A
+ ERROR_NO_SUCH_DEVINST syscall.Errno = 0x20000000 | 0xC0000000 | 0x20B
+ ERROR_CANT_LOAD_CLASS_ICON syscall.Errno = 0x20000000 | 0xC0000000 | 0x20C
+ ERROR_INVALID_CLASS_INSTALLER syscall.Errno = 0x20000000 | 0xC0000000 | 0x20D
+ ERROR_DI_DO_DEFAULT syscall.Errno = 0x20000000 | 0xC0000000 | 0x20E
+ ERROR_DI_NOFILECOPY syscall.Errno = 0x20000000 | 0xC0000000 | 0x20F
+ ERROR_INVALID_HWPROFILE syscall.Errno = 0x20000000 | 0xC0000000 | 0x210
+ ERROR_NO_DEVICE_SELECTED syscall.Errno = 0x20000000 | 0xC0000000 | 0x211
+ ERROR_DEVINFO_LIST_LOCKED syscall.Errno = 0x20000000 | 0xC0000000 | 0x212
+ ERROR_DEVINFO_DATA_LOCKED syscall.Errno = 0x20000000 | 0xC0000000 | 0x213
+ ERROR_DI_BAD_PATH syscall.Errno = 0x20000000 | 0xC0000000 | 0x214
+ ERROR_NO_CLASSINSTALL_PARAMS syscall.Errno = 0x20000000 | 0xC0000000 | 0x215
+ ERROR_FILEQUEUE_LOCKED syscall.Errno = 0x20000000 | 0xC0000000 | 0x216
+ ERROR_BAD_SERVICE_INSTALLSECT syscall.Errno = 0x20000000 | 0xC0000000 | 0x217
+ ERROR_NO_CLASS_DRIVER_LIST syscall.Errno = 0x20000000 | 0xC0000000 | 0x218
+ ERROR_NO_ASSOCIATED_SERVICE syscall.Errno = 0x20000000 | 0xC0000000 | 0x219
+ ERROR_NO_DEFAULT_DEVICE_INTERFACE syscall.Errno = 0x20000000 | 0xC0000000 | 0x21A
+ ERROR_DEVICE_INTERFACE_ACTIVE syscall.Errno = 0x20000000 | 0xC0000000 | 0x21B
+ ERROR_DEVICE_INTERFACE_REMOVED syscall.Errno = 0x20000000 | 0xC0000000 | 0x21C
+ ERROR_BAD_INTERFACE_INSTALLSECT syscall.Errno = 0x20000000 | 0xC0000000 | 0x21D
+ ERROR_NO_SUCH_INTERFACE_CLASS syscall.Errno = 0x20000000 | 0xC0000000 | 0x21E
+ ERROR_INVALID_REFERENCE_STRING syscall.Errno = 0x20000000 | 0xC0000000 | 0x21F
+ ERROR_INVALID_MACHINENAME syscall.Errno = 0x20000000 | 0xC0000000 | 0x220
+ ERROR_REMOTE_COMM_FAILURE syscall.Errno = 0x20000000 | 0xC0000000 | 0x221
+ ERROR_MACHINE_UNAVAILABLE syscall.Errno = 0x20000000 | 0xC0000000 | 0x222
+ ERROR_NO_CONFIGMGR_SERVICES syscall.Errno = 0x20000000 | 0xC0000000 | 0x223
+ ERROR_INVALID_PROPPAGE_PROVIDER syscall.Errno = 0x20000000 | 0xC0000000 | 0x224
+ ERROR_NO_SUCH_DEVICE_INTERFACE syscall.Errno = 0x20000000 | 0xC0000000 | 0x225
+ ERROR_DI_POSTPROCESSING_REQUIRED syscall.Errno = 0x20000000 | 0xC0000000 | 0x226
+ ERROR_INVALID_COINSTALLER syscall.Errno = 0x20000000 | 0xC0000000 | 0x227
+ ERROR_NO_COMPAT_DRIVERS syscall.Errno = 0x20000000 | 0xC0000000 | 0x228
+ ERROR_NO_DEVICE_ICON syscall.Errno = 0x20000000 | 0xC0000000 | 0x229
+ ERROR_INVALID_INF_LOGCONFIG syscall.Errno = 0x20000000 | 0xC0000000 | 0x22A
+ ERROR_DI_DONT_INSTALL syscall.Errno = 0x20000000 | 0xC0000000 | 0x22B
+ ERROR_INVALID_FILTER_DRIVER syscall.Errno = 0x20000000 | 0xC0000000 | 0x22C
+ ERROR_NON_WINDOWS_NT_DRIVER syscall.Errno = 0x20000000 | 0xC0000000 | 0x22D
+ ERROR_NON_WINDOWS_DRIVER syscall.Errno = 0x20000000 | 0xC0000000 | 0x22E
+ ERROR_NO_CATALOG_FOR_OEM_INF syscall.Errno = 0x20000000 | 0xC0000000 | 0x22F
+ ERROR_DEVINSTALL_QUEUE_NONNATIVE syscall.Errno = 0x20000000 | 0xC0000000 | 0x230
+ ERROR_NOT_DISABLEABLE syscall.Errno = 0x20000000 | 0xC0000000 | 0x231
+ ERROR_CANT_REMOVE_DEVINST syscall.Errno = 0x20000000 | 0xC0000000 | 0x232
+ ERROR_INVALID_TARGET syscall.Errno = 0x20000000 | 0xC0000000 | 0x233
+ ERROR_DRIVER_NONNATIVE syscall.Errno = 0x20000000 | 0xC0000000 | 0x234
+ ERROR_IN_WOW64 syscall.Errno = 0x20000000 | 0xC0000000 | 0x235
+ ERROR_SET_SYSTEM_RESTORE_POINT syscall.Errno = 0x20000000 | 0xC0000000 | 0x236
+ ERROR_SCE_DISABLED syscall.Errno = 0x20000000 | 0xC0000000 | 0x238
+ ERROR_UNKNOWN_EXCEPTION syscall.Errno = 0x20000000 | 0xC0000000 | 0x239
+ ERROR_PNP_REGISTRY_ERROR syscall.Errno = 0x20000000 | 0xC0000000 | 0x23A
+ ERROR_REMOTE_REQUEST_UNSUPPORTED syscall.Errno = 0x20000000 | 0xC0000000 | 0x23B
+ ERROR_NOT_AN_INSTALLED_OEM_INF syscall.Errno = 0x20000000 | 0xC0000000 | 0x23C
+ ERROR_INF_IN_USE_BY_DEVICES syscall.Errno = 0x20000000 | 0xC0000000 | 0x23D
+ ERROR_DI_FUNCTION_OBSOLETE syscall.Errno = 0x20000000 | 0xC0000000 | 0x23E
+ ERROR_NO_AUTHENTICODE_CATALOG syscall.Errno = 0x20000000 | 0xC0000000 | 0x23F
+ ERROR_AUTHENTICODE_DISALLOWED syscall.Errno = 0x20000000 | 0xC0000000 | 0x240
+ ERROR_AUTHENTICODE_TRUSTED_PUBLISHER syscall.Errno = 0x20000000 | 0xC0000000 | 0x241
+ ERROR_AUTHENTICODE_TRUST_NOT_ESTABLISHED syscall.Errno = 0x20000000 | 0xC0000000 | 0x242
+ ERROR_AUTHENTICODE_PUBLISHER_NOT_TRUSTED syscall.Errno = 0x20000000 | 0xC0000000 | 0x243
+ ERROR_SIGNATURE_OSATTRIBUTE_MISMATCH syscall.Errno = 0x20000000 | 0xC0000000 | 0x244
+ ERROR_ONLY_VALIDATE_VIA_AUTHENTICODE syscall.Errno = 0x20000000 | 0xC0000000 | 0x245
+ ERROR_DEVICE_INSTALLER_NOT_READY syscall.Errno = 0x20000000 | 0xC0000000 | 0x246
+ ERROR_DRIVER_STORE_ADD_FAILED syscall.Errno = 0x20000000 | 0xC0000000 | 0x247
+ ERROR_DEVICE_INSTALL_BLOCKED syscall.Errno = 0x20000000 | 0xC0000000 | 0x248
+ ERROR_DRIVER_INSTALL_BLOCKED syscall.Errno = 0x20000000 | 0xC0000000 | 0x249
+ ERROR_WRONG_INF_TYPE syscall.Errno = 0x20000000 | 0xC0000000 | 0x24A
+ ERROR_FILE_HASH_NOT_IN_CATALOG syscall.Errno = 0x20000000 | 0xC0000000 | 0x24B
+ ERROR_DRIVER_STORE_DELETE_FAILED syscall.Errno = 0x20000000 | 0xC0000000 | 0x24C
+ ERROR_UNRECOVERABLE_STACK_OVERFLOW syscall.Errno = 0x20000000 | 0xC0000000 | 0x300
+ EXCEPTION_SPAPI_UNRECOVERABLE_STACK_OVERFLOW syscall.Errno = ERROR_UNRECOVERABLE_STACK_OVERFLOW
+ ERROR_NO_DEFAULT_INTERFACE_DEVICE syscall.Errno = ERROR_NO_DEFAULT_DEVICE_INTERFACE
+ ERROR_INTERFACE_DEVICE_ACTIVE syscall.Errno = ERROR_DEVICE_INTERFACE_ACTIVE
+ ERROR_INTERFACE_DEVICE_REMOVED syscall.Errno = ERROR_DEVICE_INTERFACE_REMOVED
+ ERROR_NO_SUCH_INTERFACE_DEVICE syscall.Errno = ERROR_NO_SUCH_DEVICE_INTERFACE
+)
diff --git a/vendor/golang.org/x/sys/windows/str.go b/vendor/golang.org/x/sys/windows/str.go
new file mode 100644
index 00000000..917cc2aa
--- /dev/null
+++ b/vendor/golang.org/x/sys/windows/str.go
@@ -0,0 +1,22 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build windows
+
+package windows
+
+func itoa(val int) string { // do it here rather than with fmt to avoid dependency
+ if val < 0 {
+ return "-" + itoa(-val)
+ }
+ var buf [32]byte // big enough for int64
+ i := len(buf) - 1
+ for val >= 10 {
+ buf[i] = byte(val%10 + '0')
+ i--
+ val /= 10
+ }
+ buf[i] = byte(val + '0')
+ return string(buf[i:])
+}
diff --git a/vendor/golang.org/x/sys/windows/syscall.go b/vendor/golang.org/x/sys/windows/syscall.go
new file mode 100644
index 00000000..6122f557
--- /dev/null
+++ b/vendor/golang.org/x/sys/windows/syscall.go
@@ -0,0 +1,112 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build windows
+
+// Package windows contains an interface to the low-level operating system
+// primitives. OS details vary depending on the underlying system, and
+// by default, godoc will display the OS-specific documentation for the current
+// system. If you want godoc to display syscall documentation for another
+// system, set $GOOS and $GOARCH to the desired system. For example, if
+// you want to view documentation for freebsd/arm on linux/amd64, set $GOOS
+// to freebsd and $GOARCH to arm.
+//
+// The primary use of this package is inside other packages that provide a more
+// portable interface to the system, such as "os", "time" and "net". Use
+// those packages rather than this one if you can.
+//
+// For details of the functions and data types in this package consult
+// the manuals for the appropriate operating system.
+//
+// These calls return err == nil to indicate success; otherwise
+// err represents an operating system error describing the failure and
+// holds a value of type syscall.Errno.
+package windows // import "golang.org/x/sys/windows"
+
+import (
+ "bytes"
+ "strings"
+ "syscall"
+ "unsafe"
+
+ "golang.org/x/sys/internal/unsafeheader"
+)
+
+// ByteSliceFromString returns a NUL-terminated slice of bytes
+// containing the text of s. If s contains a NUL byte at any
+// location, it returns (nil, syscall.EINVAL).
+func ByteSliceFromString(s string) ([]byte, error) {
+ if strings.IndexByte(s, 0) != -1 {
+ return nil, syscall.EINVAL
+ }
+ a := make([]byte, len(s)+1)
+ copy(a, s)
+ return a, nil
+}
+
+// BytePtrFromString returns a pointer to a NUL-terminated array of
+// bytes containing the text of s. If s contains a NUL byte at any
+// location, it returns (nil, syscall.EINVAL).
+func BytePtrFromString(s string) (*byte, error) {
+ a, err := ByteSliceFromString(s)
+ if err != nil {
+ return nil, err
+ }
+ return &a[0], nil
+}
+
+// ByteSliceToString returns a string form of the text represented by the slice s, with a terminating NUL and any
+// bytes after the NUL removed.
+func ByteSliceToString(s []byte) string {
+ if i := bytes.IndexByte(s, 0); i != -1 {
+ s = s[:i]
+ }
+ return string(s)
+}
+
+// BytePtrToString takes a pointer to a sequence of text and returns the corresponding string.
+// If the pointer is nil, it returns the empty string. It assumes that the text sequence is terminated
+// at a zero byte; if the zero byte is not present, the program may crash.
+func BytePtrToString(p *byte) string {
+ if p == nil {
+ return ""
+ }
+ if *p == 0 {
+ return ""
+ }
+
+ // Find NUL terminator.
+ n := 0
+ for ptr := unsafe.Pointer(p); *(*byte)(ptr) != 0; n++ {
+ ptr = unsafe.Pointer(uintptr(ptr) + 1)
+ }
+
+ var s []byte
+ h := (*unsafeheader.Slice)(unsafe.Pointer(&s))
+ h.Data = unsafe.Pointer(p)
+ h.Len = n
+ h.Cap = n
+
+ return string(s)
+}
+
+// Single-word zero for use when we need a valid pointer to 0 bytes.
+// See mksyscall.pl.
+var _zero uintptr
+
+func (ts *Timespec) Unix() (sec int64, nsec int64) {
+ return int64(ts.Sec), int64(ts.Nsec)
+}
+
+func (tv *Timeval) Unix() (sec int64, nsec int64) {
+ return int64(tv.Sec), int64(tv.Usec) * 1000
+}
+
+func (ts *Timespec) Nano() int64 {
+ return int64(ts.Sec)*1e9 + int64(ts.Nsec)
+}
+
+func (tv *Timeval) Nano() int64 {
+ return int64(tv.Sec)*1e9 + int64(tv.Usec)*1000
+}
diff --git a/vendor/golang.org/x/sys/windows/syscall_windows.go b/vendor/golang.org/x/sys/windows/syscall_windows.go
new file mode 100644
index 00000000..6c2ff27e
--- /dev/null
+++ b/vendor/golang.org/x/sys/windows/syscall_windows.go
@@ -0,0 +1,1490 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Windows system calls.
+
+package windows
+
+import (
+ errorspkg "errors"
+ "sync"
+ "syscall"
+ "time"
+ "unicode/utf16"
+ "unsafe"
+
+ "golang.org/x/sys/internal/unsafeheader"
+)
+
+type Handle uintptr
+
+const (
+ InvalidHandle = ^Handle(0)
+
+ // Flags for DefineDosDevice.
+ DDD_EXACT_MATCH_ON_REMOVE = 0x00000004
+ DDD_NO_BROADCAST_SYSTEM = 0x00000008
+ DDD_RAW_TARGET_PATH = 0x00000001
+ DDD_REMOVE_DEFINITION = 0x00000002
+
+ // Return values for GetDriveType.
+ DRIVE_UNKNOWN = 0
+ DRIVE_NO_ROOT_DIR = 1
+ DRIVE_REMOVABLE = 2
+ DRIVE_FIXED = 3
+ DRIVE_REMOTE = 4
+ DRIVE_CDROM = 5
+ DRIVE_RAMDISK = 6
+
+ // File system flags from GetVolumeInformation and GetVolumeInformationByHandle.
+ FILE_CASE_SENSITIVE_SEARCH = 0x00000001
+ FILE_CASE_PRESERVED_NAMES = 0x00000002
+ FILE_FILE_COMPRESSION = 0x00000010
+ FILE_DAX_VOLUME = 0x20000000
+ FILE_NAMED_STREAMS = 0x00040000
+ FILE_PERSISTENT_ACLS = 0x00000008
+ FILE_READ_ONLY_VOLUME = 0x00080000
+ FILE_SEQUENTIAL_WRITE_ONCE = 0x00100000
+ FILE_SUPPORTS_ENCRYPTION = 0x00020000
+ FILE_SUPPORTS_EXTENDED_ATTRIBUTES = 0x00800000
+ FILE_SUPPORTS_HARD_LINKS = 0x00400000
+ FILE_SUPPORTS_OBJECT_IDS = 0x00010000
+ FILE_SUPPORTS_OPEN_BY_FILE_ID = 0x01000000
+ FILE_SUPPORTS_REPARSE_POINTS = 0x00000080
+ FILE_SUPPORTS_SPARSE_FILES = 0x00000040
+ FILE_SUPPORTS_TRANSACTIONS = 0x00200000
+ FILE_SUPPORTS_USN_JOURNAL = 0x02000000
+ FILE_UNICODE_ON_DISK = 0x00000004
+ FILE_VOLUME_IS_COMPRESSED = 0x00008000
+ FILE_VOLUME_QUOTAS = 0x00000020
+
+ // Flags for LockFileEx.
+ LOCKFILE_FAIL_IMMEDIATELY = 0x00000001
+ LOCKFILE_EXCLUSIVE_LOCK = 0x00000002
+
+ // Return values of SleepEx and other APC functions
+ STATUS_USER_APC = 0x000000C0
+ WAIT_IO_COMPLETION = STATUS_USER_APC
+)
+
+// StringToUTF16 is deprecated. Use UTF16FromString instead.
+// If s contains a NUL byte this function panics instead of
+// returning an error.
+func StringToUTF16(s string) []uint16 {
+ a, err := UTF16FromString(s)
+ if err != nil {
+ panic("windows: string with NUL passed to StringToUTF16")
+ }
+ return a
+}
+
+// UTF16FromString returns the UTF-16 encoding of the UTF-8 string
+// s, with a terminating NUL added. If s contains a NUL byte at any
+// location, it returns (nil, syscall.EINVAL).
+func UTF16FromString(s string) ([]uint16, error) {
+ for i := 0; i < len(s); i++ {
+ if s[i] == 0 {
+ return nil, syscall.EINVAL
+ }
+ }
+ return utf16.Encode([]rune(s + "\x00")), nil
+}
+
+// UTF16ToString returns the UTF-8 encoding of the UTF-16 sequence s,
+// with a terminating NUL and any bytes after the NUL removed.
+func UTF16ToString(s []uint16) string {
+ for i, v := range s {
+ if v == 0 {
+ s = s[:i]
+ break
+ }
+ }
+ return string(utf16.Decode(s))
+}
+
+// StringToUTF16Ptr is deprecated. Use UTF16PtrFromString instead.
+// If s contains a NUL byte this function panics instead of
+// returning an error.
+func StringToUTF16Ptr(s string) *uint16 { return &StringToUTF16(s)[0] }
+
+// UTF16PtrFromString returns pointer to the UTF-16 encoding of
+// the UTF-8 string s, with a terminating NUL added. If s
+// contains a NUL byte at any location, it returns (nil, syscall.EINVAL).
+func UTF16PtrFromString(s string) (*uint16, error) {
+ a, err := UTF16FromString(s)
+ if err != nil {
+ return nil, err
+ }
+ return &a[0], nil
+}
+
+// UTF16PtrToString takes a pointer to a UTF-16 sequence and returns the corresponding UTF-8 encoded string.
+// If the pointer is nil, it returns the empty string. It assumes that the UTF-16 sequence is terminated
+// at a zero word; if the zero word is not present, the program may crash.
+func UTF16PtrToString(p *uint16) string {
+ if p == nil {
+ return ""
+ }
+ if *p == 0 {
+ return ""
+ }
+
+ // Find NUL terminator.
+ n := 0
+ for ptr := unsafe.Pointer(p); *(*uint16)(ptr) != 0; n++ {
+ ptr = unsafe.Pointer(uintptr(ptr) + unsafe.Sizeof(*p))
+ }
+
+ var s []uint16
+ h := (*unsafeheader.Slice)(unsafe.Pointer(&s))
+ h.Data = unsafe.Pointer(p)
+ h.Len = n
+ h.Cap = n
+
+ return string(utf16.Decode(s))
+}
+
+func Getpagesize() int { return 4096 }
+
+// NewCallback converts a Go function to a function pointer conforming to the stdcall calling convention.
+// This is useful when interoperating with Windows code requiring callbacks.
+// The argument is expected to be a function with with one uintptr-sized result. The function must not have arguments with size larger than the size of uintptr.
+func NewCallback(fn interface{}) uintptr {
+ return syscall.NewCallback(fn)
+}
+
+// NewCallbackCDecl converts a Go function to a function pointer conforming to the cdecl calling convention.
+// This is useful when interoperating with Windows code requiring callbacks.
+// The argument is expected to be a function with with one uintptr-sized result. The function must not have arguments with size larger than the size of uintptr.
+func NewCallbackCDecl(fn interface{}) uintptr {
+ return syscall.NewCallbackCDecl(fn)
+}
+
+// windows api calls
+
+//sys GetLastError() (lasterr error)
+//sys LoadLibrary(libname string) (handle Handle, err error) = LoadLibraryW
+//sys LoadLibraryEx(libname string, zero Handle, flags uintptr) (handle Handle, err error) = LoadLibraryExW
+//sys FreeLibrary(handle Handle) (err error)
+//sys GetProcAddress(module Handle, procname string) (proc uintptr, err error)
+//sys GetModuleFileName(module Handle, filename *uint16, size uint32) (n uint32, err error) = kernel32.GetModuleFileNameW
+//sys GetModuleHandleEx(flags uint32, moduleName *uint16, module *Handle) (err error) = kernel32.GetModuleHandleExW
+//sys SetDefaultDllDirectories(directoryFlags uint32) (err error)
+//sys SetDllDirectory(path string) (err error) = kernel32.SetDllDirectoryW
+//sys GetVersion() (ver uint32, err error)
+//sys FormatMessage(flags uint32, msgsrc uintptr, msgid uint32, langid uint32, buf []uint16, args *byte) (n uint32, err error) = FormatMessageW
+//sys ExitProcess(exitcode uint32)
+//sys IsWow64Process(handle Handle, isWow64 *bool) (err error) = IsWow64Process
+//sys IsWow64Process2(handle Handle, processMachine *uint16, nativeMachine *uint16) (err error) = IsWow64Process2?
+//sys CreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile Handle) (handle Handle, err error) [failretval==InvalidHandle] = CreateFileW
+//sys ReadFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error)
+//sys WriteFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error)
+//sys GetOverlappedResult(handle Handle, overlapped *Overlapped, done *uint32, wait bool) (err error)
+//sys SetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence uint32) (newlowoffset uint32, err error) [failretval==0xffffffff]
+//sys CloseHandle(handle Handle) (err error)
+//sys GetStdHandle(stdhandle uint32) (handle Handle, err error) [failretval==InvalidHandle]
+//sys SetStdHandle(stdhandle uint32, handle Handle) (err error)
+//sys findFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err error) [failretval==InvalidHandle] = FindFirstFileW
+//sys findNextFile1(handle Handle, data *win32finddata1) (err error) = FindNextFileW
+//sys FindClose(handle Handle) (err error)
+//sys GetFileInformationByHandle(handle Handle, data *ByHandleFileInformation) (err error)
+//sys GetFileInformationByHandleEx(handle Handle, class uint32, outBuffer *byte, outBufferLen uint32) (err error)
+//sys SetFileInformationByHandle(handle Handle, class uint32, inBuffer *byte, inBufferLen uint32) (err error)
+//sys GetCurrentDirectory(buflen uint32, buf *uint16) (n uint32, err error) = GetCurrentDirectoryW
+//sys SetCurrentDirectory(path *uint16) (err error) = SetCurrentDirectoryW
+//sys CreateDirectory(path *uint16, sa *SecurityAttributes) (err error) = CreateDirectoryW
+//sys RemoveDirectory(path *uint16) (err error) = RemoveDirectoryW
+//sys DeleteFile(path *uint16) (err error) = DeleteFileW
+//sys MoveFile(from *uint16, to *uint16) (err error) = MoveFileW
+//sys MoveFileEx(from *uint16, to *uint16, flags uint32) (err error) = MoveFileExW
+//sys LockFileEx(file Handle, flags uint32, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *Overlapped) (err error)
+//sys UnlockFileEx(file Handle, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *Overlapped) (err error)
+//sys GetComputerName(buf *uint16, n *uint32) (err error) = GetComputerNameW
+//sys GetComputerNameEx(nametype uint32, buf *uint16, n *uint32) (err error) = GetComputerNameExW
+//sys SetEndOfFile(handle Handle) (err error)
+//sys GetSystemTimeAsFileTime(time *Filetime)
+//sys GetSystemTimePreciseAsFileTime(time *Filetime)
+//sys GetTimeZoneInformation(tzi *Timezoneinformation) (rc uint32, err error) [failretval==0xffffffff]
+//sys CreateIoCompletionPort(filehandle Handle, cphandle Handle, key uint32, threadcnt uint32) (handle Handle, err error)
+//sys GetQueuedCompletionStatus(cphandle Handle, qty *uint32, key *uint32, overlapped **Overlapped, timeout uint32) (err error)
+//sys PostQueuedCompletionStatus(cphandle Handle, qty uint32, key uint32, overlapped *Overlapped) (err error)
+//sys CancelIo(s Handle) (err error)
+//sys CancelIoEx(s Handle, o *Overlapped) (err error)
+//sys CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) = CreateProcessW
+//sys OpenProcess(desiredAccess uint32, inheritHandle bool, processId uint32) (handle Handle, err error)
+//sys ShellExecute(hwnd Handle, verb *uint16, file *uint16, args *uint16, cwd *uint16, showCmd int32) (err error) [failretval<=32] = shell32.ShellExecuteW
+//sys shGetKnownFolderPath(id *KNOWNFOLDERID, flags uint32, token Token, path **uint16) (ret error) = shell32.SHGetKnownFolderPath
+//sys TerminateProcess(handle Handle, exitcode uint32) (err error)
+//sys GetExitCodeProcess(handle Handle, exitcode *uint32) (err error)
+//sys GetStartupInfo(startupInfo *StartupInfo) (err error) = GetStartupInfoW
+//sys GetProcessTimes(handle Handle, creationTime *Filetime, exitTime *Filetime, kernelTime *Filetime, userTime *Filetime) (err error)
+//sys DuplicateHandle(hSourceProcessHandle Handle, hSourceHandle Handle, hTargetProcessHandle Handle, lpTargetHandle *Handle, dwDesiredAccess uint32, bInheritHandle bool, dwOptions uint32) (err error)
+//sys WaitForSingleObject(handle Handle, waitMilliseconds uint32) (event uint32, err error) [failretval==0xffffffff]
+//sys waitForMultipleObjects(count uint32, handles uintptr, waitAll bool, waitMilliseconds uint32) (event uint32, err error) [failretval==0xffffffff] = WaitForMultipleObjects
+//sys GetTempPath(buflen uint32, buf *uint16) (n uint32, err error) = GetTempPathW
+//sys CreatePipe(readhandle *Handle, writehandle *Handle, sa *SecurityAttributes, size uint32) (err error)
+//sys GetFileType(filehandle Handle) (n uint32, err error)
+//sys CryptAcquireContext(provhandle *Handle, container *uint16, provider *uint16, provtype uint32, flags uint32) (err error) = advapi32.CryptAcquireContextW
+//sys CryptReleaseContext(provhandle Handle, flags uint32) (err error) = advapi32.CryptReleaseContext
+//sys CryptGenRandom(provhandle Handle, buflen uint32, buf *byte) (err error) = advapi32.CryptGenRandom
+//sys GetEnvironmentStrings() (envs *uint16, err error) [failretval==nil] = kernel32.GetEnvironmentStringsW
+//sys FreeEnvironmentStrings(envs *uint16) (err error) = kernel32.FreeEnvironmentStringsW
+//sys GetEnvironmentVariable(name *uint16, buffer *uint16, size uint32) (n uint32, err error) = kernel32.GetEnvironmentVariableW
+//sys SetEnvironmentVariable(name *uint16, value *uint16) (err error) = kernel32.SetEnvironmentVariableW
+//sys CreateEnvironmentBlock(block **uint16, token Token, inheritExisting bool) (err error) = userenv.CreateEnvironmentBlock
+//sys DestroyEnvironmentBlock(block *uint16) (err error) = userenv.DestroyEnvironmentBlock
+//sys getTickCount64() (ms uint64) = kernel32.GetTickCount64
+//sys SetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error)
+//sys GetFileAttributes(name *uint16) (attrs uint32, err error) [failretval==INVALID_FILE_ATTRIBUTES] = kernel32.GetFileAttributesW
+//sys SetFileAttributes(name *uint16, attrs uint32) (err error) = kernel32.SetFileAttributesW
+//sys GetFileAttributesEx(name *uint16, level uint32, info *byte) (err error) = kernel32.GetFileAttributesExW
+//sys GetCommandLine() (cmd *uint16) = kernel32.GetCommandLineW
+//sys CommandLineToArgv(cmd *uint16, argc *int32) (argv *[8192]*[8192]uint16, err error) [failretval==nil] = shell32.CommandLineToArgvW
+//sys LocalFree(hmem Handle) (handle Handle, err error) [failretval!=0]
+//sys SetHandleInformation(handle Handle, mask uint32, flags uint32) (err error)
+//sys FlushFileBuffers(handle Handle) (err error)
+//sys GetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) (n uint32, err error) = kernel32.GetFullPathNameW
+//sys GetLongPathName(path *uint16, buf *uint16, buflen uint32) (n uint32, err error) = kernel32.GetLongPathNameW
+//sys GetShortPathName(longpath *uint16, shortpath *uint16, buflen uint32) (n uint32, err error) = kernel32.GetShortPathNameW
+//sys GetFinalPathNameByHandle(file Handle, filePath *uint16, filePathSize uint32, flags uint32) (n uint32, err error) = kernel32.GetFinalPathNameByHandleW
+//sys CreateFileMapping(fhandle Handle, sa *SecurityAttributes, prot uint32, maxSizeHigh uint32, maxSizeLow uint32, name *uint16) (handle Handle, err error) = kernel32.CreateFileMappingW
+//sys MapViewOfFile(handle Handle, access uint32, offsetHigh uint32, offsetLow uint32, length uintptr) (addr uintptr, err error)
+//sys UnmapViewOfFile(addr uintptr) (err error)
+//sys FlushViewOfFile(addr uintptr, length uintptr) (err error)
+//sys VirtualLock(addr uintptr, length uintptr) (err error)
+//sys VirtualUnlock(addr uintptr, length uintptr) (err error)
+//sys VirtualAlloc(address uintptr, size uintptr, alloctype uint32, protect uint32) (value uintptr, err error) = kernel32.VirtualAlloc
+//sys VirtualFree(address uintptr, size uintptr, freetype uint32) (err error) = kernel32.VirtualFree
+//sys VirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect *uint32) (err error) = kernel32.VirtualProtect
+//sys TransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) = mswsock.TransmitFile
+//sys ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree bool, mask uint32, retlen *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) = kernel32.ReadDirectoryChangesW
+//sys CertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) = crypt32.CertOpenSystemStoreW
+//sys CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) [failretval==InvalidHandle] = crypt32.CertOpenStore
+//sys CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) [failretval==nil] = crypt32.CertEnumCertificatesInStore
+//sys CertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) = crypt32.CertAddCertificateContextToStore
+//sys CertCloseStore(store Handle, flags uint32) (err error) = crypt32.CertCloseStore
+//sys CertDeleteCertificateFromStore(certContext *CertContext) (err error) = crypt32.CertDeleteCertificateFromStore
+//sys CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) = crypt32.CertGetCertificateChain
+//sys CertFreeCertificateChain(ctx *CertChainContext) = crypt32.CertFreeCertificateChain
+//sys CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) [failretval==nil] = crypt32.CertCreateCertificateContext
+//sys CertFreeCertificateContext(ctx *CertContext) (err error) = crypt32.CertFreeCertificateContext
+//sys CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) = crypt32.CertVerifyCertificateChainPolicy
+//sys RegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint32, result *Handle) (regerrno error) = advapi32.RegOpenKeyExW
+//sys RegCloseKey(key Handle) (regerrno error) = advapi32.RegCloseKey
+//sys RegQueryInfoKey(key Handle, class *uint16, classLen *uint32, reserved *uint32, subkeysLen *uint32, maxSubkeyLen *uint32, maxClassLen *uint32, valuesLen *uint32, maxValueNameLen *uint32, maxValueLen *uint32, saLen *uint32, lastWriteTime *Filetime) (regerrno error) = advapi32.RegQueryInfoKeyW
+//sys RegEnumKeyEx(key Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, class *uint16, classLen *uint32, lastWriteTime *Filetime) (regerrno error) = advapi32.RegEnumKeyExW
+//sys RegQueryValueEx(key Handle, name *uint16, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) = advapi32.RegQueryValueExW
+//sys GetCurrentProcessId() (pid uint32) = kernel32.GetCurrentProcessId
+//sys ProcessIdToSessionId(pid uint32, sessionid *uint32) (err error) = kernel32.ProcessIdToSessionId
+//sys GetConsoleMode(console Handle, mode *uint32) (err error) = kernel32.GetConsoleMode
+//sys SetConsoleMode(console Handle, mode uint32) (err error) = kernel32.SetConsoleMode
+//sys GetConsoleScreenBufferInfo(console Handle, info *ConsoleScreenBufferInfo) (err error) = kernel32.GetConsoleScreenBufferInfo
+//sys setConsoleCursorPosition(console Handle, position uint32) (err error) = kernel32.SetConsoleCursorPosition
+//sys WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) = kernel32.WriteConsoleW
+//sys ReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, inputControl *byte) (err error) = kernel32.ReadConsoleW
+//sys CreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) [failretval==InvalidHandle] = kernel32.CreateToolhelp32Snapshot
+//sys Process32First(snapshot Handle, procEntry *ProcessEntry32) (err error) = kernel32.Process32FirstW
+//sys Process32Next(snapshot Handle, procEntry *ProcessEntry32) (err error) = kernel32.Process32NextW
+//sys Thread32First(snapshot Handle, threadEntry *ThreadEntry32) (err error)
+//sys Thread32Next(snapshot Handle, threadEntry *ThreadEntry32) (err error)
+//sys DeviceIoControl(handle Handle, ioControlCode uint32, inBuffer *byte, inBufferSize uint32, outBuffer *byte, outBufferSize uint32, bytesReturned *uint32, overlapped *Overlapped) (err error)
+// This function returns 1 byte BOOLEAN rather than the 4 byte BOOL.
+//sys CreateSymbolicLink(symlinkfilename *uint16, targetfilename *uint16, flags uint32) (err error) [failretval&0xff==0] = CreateSymbolicLinkW
+//sys CreateHardLink(filename *uint16, existingfilename *uint16, reserved uintptr) (err error) [failretval&0xff==0] = CreateHardLinkW
+//sys GetCurrentThreadId() (id uint32)
+//sys CreateEvent(eventAttrs *SecurityAttributes, manualReset uint32, initialState uint32, name *uint16) (handle Handle, err error) = kernel32.CreateEventW
+//sys CreateEventEx(eventAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) = kernel32.CreateEventExW
+//sys OpenEvent(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) = kernel32.OpenEventW
+//sys SetEvent(event Handle) (err error) = kernel32.SetEvent
+//sys ResetEvent(event Handle) (err error) = kernel32.ResetEvent
+//sys PulseEvent(event Handle) (err error) = kernel32.PulseEvent
+//sys CreateMutex(mutexAttrs *SecurityAttributes, initialOwner bool, name *uint16) (handle Handle, err error) = kernel32.CreateMutexW
+//sys CreateMutexEx(mutexAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) = kernel32.CreateMutexExW
+//sys OpenMutex(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) = kernel32.OpenMutexW
+//sys ReleaseMutex(mutex Handle) (err error) = kernel32.ReleaseMutex
+//sys SleepEx(milliseconds uint32, alertable bool) (ret uint32) = kernel32.SleepEx
+//sys CreateJobObject(jobAttr *SecurityAttributes, name *uint16) (handle Handle, err error) = kernel32.CreateJobObjectW
+//sys AssignProcessToJobObject(job Handle, process Handle) (err error) = kernel32.AssignProcessToJobObject
+//sys TerminateJobObject(job Handle, exitCode uint32) (err error) = kernel32.TerminateJobObject
+//sys SetErrorMode(mode uint32) (ret uint32) = kernel32.SetErrorMode
+//sys ResumeThread(thread Handle) (ret uint32, err error) [failretval==0xffffffff] = kernel32.ResumeThread
+//sys SetPriorityClass(process Handle, priorityClass uint32) (err error) = kernel32.SetPriorityClass
+//sys GetPriorityClass(process Handle) (ret uint32, err error) = kernel32.GetPriorityClass
+//sys QueryInformationJobObject(job Handle, JobObjectInformationClass int32, JobObjectInformation uintptr, JobObjectInformationLength uint32, retlen *uint32) (err error) = kernel32.QueryInformationJobObject
+//sys SetInformationJobObject(job Handle, JobObjectInformationClass uint32, JobObjectInformation uintptr, JobObjectInformationLength uint32) (ret int, err error)
+//sys GenerateConsoleCtrlEvent(ctrlEvent uint32, processGroupID uint32) (err error)
+//sys GetProcessId(process Handle) (id uint32, err error)
+//sys OpenThread(desiredAccess uint32, inheritHandle bool, threadId uint32) (handle Handle, err error)
+//sys SetProcessPriorityBoost(process Handle, disable bool) (err error) = kernel32.SetProcessPriorityBoost
+//sys GetProcessWorkingSetSizeEx(hProcess Handle, lpMinimumWorkingSetSize *uintptr, lpMaximumWorkingSetSize *uintptr, flags *uint32)
+//sys SetProcessWorkingSetSizeEx(hProcess Handle, dwMinimumWorkingSetSize uintptr, dwMaximumWorkingSetSize uintptr, flags uint32) (err error)
+
+// Volume Management Functions
+//sys DefineDosDevice(flags uint32, deviceName *uint16, targetPath *uint16) (err error) = DefineDosDeviceW
+//sys DeleteVolumeMountPoint(volumeMountPoint *uint16) (err error) = DeleteVolumeMountPointW
+//sys FindFirstVolume(volumeName *uint16, bufferLength uint32) (handle Handle, err error) [failretval==InvalidHandle] = FindFirstVolumeW
+//sys FindFirstVolumeMountPoint(rootPathName *uint16, volumeMountPoint *uint16, bufferLength uint32) (handle Handle, err error) [failretval==InvalidHandle] = FindFirstVolumeMountPointW
+//sys FindNextVolume(findVolume Handle, volumeName *uint16, bufferLength uint32) (err error) = FindNextVolumeW
+//sys FindNextVolumeMountPoint(findVolumeMountPoint Handle, volumeMountPoint *uint16, bufferLength uint32) (err error) = FindNextVolumeMountPointW
+//sys FindVolumeClose(findVolume Handle) (err error)
+//sys FindVolumeMountPointClose(findVolumeMountPoint Handle) (err error)
+//sys GetDiskFreeSpaceEx(directoryName *uint16, freeBytesAvailableToCaller *uint64, totalNumberOfBytes *uint64, totalNumberOfFreeBytes *uint64) (err error) = GetDiskFreeSpaceExW
+//sys GetDriveType(rootPathName *uint16) (driveType uint32) = GetDriveTypeW
+//sys GetLogicalDrives() (drivesBitMask uint32, err error) [failretval==0]
+//sys GetLogicalDriveStrings(bufferLength uint32, buffer *uint16) (n uint32, err error) [failretval==0] = GetLogicalDriveStringsW
+//sys GetVolumeInformation(rootPathName *uint16, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) = GetVolumeInformationW
+//sys GetVolumeInformationByHandle(file Handle, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) = GetVolumeInformationByHandleW
+//sys GetVolumeNameForVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16, bufferlength uint32) (err error) = GetVolumeNameForVolumeMountPointW
+//sys GetVolumePathName(fileName *uint16, volumePathName *uint16, bufferLength uint32) (err error) = GetVolumePathNameW
+//sys GetVolumePathNamesForVolumeName(volumeName *uint16, volumePathNames *uint16, bufferLength uint32, returnLength *uint32) (err error) = GetVolumePathNamesForVolumeNameW
+//sys QueryDosDevice(deviceName *uint16, targetPath *uint16, max uint32) (n uint32, err error) [failretval==0] = QueryDosDeviceW
+//sys SetVolumeLabel(rootPathName *uint16, volumeName *uint16) (err error) = SetVolumeLabelW
+//sys SetVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16) (err error) = SetVolumeMountPointW
+//sys MessageBox(hwnd Handle, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) [failretval==0] = user32.MessageBoxW
+//sys ExitWindowsEx(flags uint32, reason uint32) (err error) = user32.ExitWindowsEx
+//sys InitiateSystemShutdownEx(machineName *uint16, message *uint16, timeout uint32, forceAppsClosed bool, rebootAfterShutdown bool, reason uint32) (err error) = advapi32.InitiateSystemShutdownExW
+//sys SetProcessShutdownParameters(level uint32, flags uint32) (err error) = kernel32.SetProcessShutdownParameters
+//sys GetProcessShutdownParameters(level *uint32, flags *uint32) (err error) = kernel32.GetProcessShutdownParameters
+//sys clsidFromString(lpsz *uint16, pclsid *GUID) (ret error) = ole32.CLSIDFromString
+//sys stringFromGUID2(rguid *GUID, lpsz *uint16, cchMax int32) (chars int32) = ole32.StringFromGUID2
+//sys coCreateGuid(pguid *GUID) (ret error) = ole32.CoCreateGuid
+//sys CoTaskMemFree(address unsafe.Pointer) = ole32.CoTaskMemFree
+//sys rtlGetVersion(info *OsVersionInfoEx) (ret error) = ntdll.RtlGetVersion
+//sys rtlGetNtVersionNumbers(majorVersion *uint32, minorVersion *uint32, buildNumber *uint32) = ntdll.RtlGetNtVersionNumbers
+//sys getProcessPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) = kernel32.GetProcessPreferredUILanguages
+//sys getThreadPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) = kernel32.GetThreadPreferredUILanguages
+//sys getUserPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) = kernel32.GetUserPreferredUILanguages
+//sys getSystemPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) = kernel32.GetSystemPreferredUILanguages
+
+// Process Status API (PSAPI)
+//sys EnumProcesses(processIds []uint32, bytesReturned *uint32) (err error) = psapi.EnumProcesses
+
+// syscall interface implementation for other packages
+
+// GetCurrentProcess returns the handle for the current process.
+// It is a pseudo handle that does not need to be closed.
+// The returned error is always nil.
+//
+// Deprecated: use CurrentProcess for the same Handle without the nil
+// error.
+func GetCurrentProcess() (Handle, error) {
+ return CurrentProcess(), nil
+}
+
+// CurrentProcess returns the handle for the current process.
+// It is a pseudo handle that does not need to be closed.
+func CurrentProcess() Handle { return Handle(^uintptr(1 - 1)) }
+
+// GetCurrentThread returns the handle for the current thread.
+// It is a pseudo handle that does not need to be closed.
+// The returned error is always nil.
+//
+// Deprecated: use CurrentThread for the same Handle without the nil
+// error.
+func GetCurrentThread() (Handle, error) {
+ return CurrentThread(), nil
+}
+
+// CurrentThread returns the handle for the current thread.
+// It is a pseudo handle that does not need to be closed.
+func CurrentThread() Handle { return Handle(^uintptr(2 - 1)) }
+
+// GetProcAddressByOrdinal retrieves the address of the exported
+// function from module by ordinal.
+func GetProcAddressByOrdinal(module Handle, ordinal uintptr) (proc uintptr, err error) {
+ r0, _, e1 := syscall.Syscall(procGetProcAddress.Addr(), 2, uintptr(module), ordinal, 0)
+ proc = uintptr(r0)
+ if proc == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func Exit(code int) { ExitProcess(uint32(code)) }
+
+func makeInheritSa() *SecurityAttributes {
+ var sa SecurityAttributes
+ sa.Length = uint32(unsafe.Sizeof(sa))
+ sa.InheritHandle = 1
+ return &sa
+}
+
+func Open(path string, mode int, perm uint32) (fd Handle, err error) {
+ if len(path) == 0 {
+ return InvalidHandle, ERROR_FILE_NOT_FOUND
+ }
+ pathp, err := UTF16PtrFromString(path)
+ if err != nil {
+ return InvalidHandle, err
+ }
+ var access uint32
+ switch mode & (O_RDONLY | O_WRONLY | O_RDWR) {
+ case O_RDONLY:
+ access = GENERIC_READ
+ case O_WRONLY:
+ access = GENERIC_WRITE
+ case O_RDWR:
+ access = GENERIC_READ | GENERIC_WRITE
+ }
+ if mode&O_CREAT != 0 {
+ access |= GENERIC_WRITE
+ }
+ if mode&O_APPEND != 0 {
+ access &^= GENERIC_WRITE
+ access |= FILE_APPEND_DATA
+ }
+ sharemode := uint32(FILE_SHARE_READ | FILE_SHARE_WRITE)
+ var sa *SecurityAttributes
+ if mode&O_CLOEXEC == 0 {
+ sa = makeInheritSa()
+ }
+ var createmode uint32
+ switch {
+ case mode&(O_CREAT|O_EXCL) == (O_CREAT | O_EXCL):
+ createmode = CREATE_NEW
+ case mode&(O_CREAT|O_TRUNC) == (O_CREAT | O_TRUNC):
+ createmode = CREATE_ALWAYS
+ case mode&O_CREAT == O_CREAT:
+ createmode = OPEN_ALWAYS
+ case mode&O_TRUNC == O_TRUNC:
+ createmode = TRUNCATE_EXISTING
+ default:
+ createmode = OPEN_EXISTING
+ }
+ var attrs uint32 = FILE_ATTRIBUTE_NORMAL
+ if perm&S_IWRITE == 0 {
+ attrs = FILE_ATTRIBUTE_READONLY
+ }
+ h, e := CreateFile(pathp, access, sharemode, sa, createmode, attrs, 0)
+ return h, e
+}
+
+func Read(fd Handle, p []byte) (n int, err error) {
+ var done uint32
+ e := ReadFile(fd, p, &done, nil)
+ if e != nil {
+ if e == ERROR_BROKEN_PIPE {
+ // NOTE(brainman): work around ERROR_BROKEN_PIPE is returned on reading EOF from stdin
+ return 0, nil
+ }
+ return 0, e
+ }
+ if raceenabled {
+ if done > 0 {
+ raceWriteRange(unsafe.Pointer(&p[0]), int(done))
+ }
+ raceAcquire(unsafe.Pointer(&ioSync))
+ }
+ return int(done), nil
+}
+
+func Write(fd Handle, p []byte) (n int, err error) {
+ if raceenabled {
+ raceReleaseMerge(unsafe.Pointer(&ioSync))
+ }
+ var done uint32
+ e := WriteFile(fd, p, &done, nil)
+ if e != nil {
+ return 0, e
+ }
+ if raceenabled && done > 0 {
+ raceReadRange(unsafe.Pointer(&p[0]), int(done))
+ }
+ return int(done), nil
+}
+
+var ioSync int64
+
+func Seek(fd Handle, offset int64, whence int) (newoffset int64, err error) {
+ var w uint32
+ switch whence {
+ case 0:
+ w = FILE_BEGIN
+ case 1:
+ w = FILE_CURRENT
+ case 2:
+ w = FILE_END
+ }
+ hi := int32(offset >> 32)
+ lo := int32(offset)
+ // use GetFileType to check pipe, pipe can't do seek
+ ft, _ := GetFileType(fd)
+ if ft == FILE_TYPE_PIPE {
+ return 0, syscall.EPIPE
+ }
+ rlo, e := SetFilePointer(fd, lo, &hi, w)
+ if e != nil {
+ return 0, e
+ }
+ return int64(hi)<<32 + int64(rlo), nil
+}
+
+func Close(fd Handle) (err error) {
+ return CloseHandle(fd)
+}
+
+var (
+ Stdin = getStdHandle(STD_INPUT_HANDLE)
+ Stdout = getStdHandle(STD_OUTPUT_HANDLE)
+ Stderr = getStdHandle(STD_ERROR_HANDLE)
+)
+
+func getStdHandle(stdhandle uint32) (fd Handle) {
+ r, _ := GetStdHandle(stdhandle)
+ CloseOnExec(r)
+ return r
+}
+
+const ImplementsGetwd = true
+
+func Getwd() (wd string, err error) {
+ b := make([]uint16, 300)
+ n, e := GetCurrentDirectory(uint32(len(b)), &b[0])
+ if e != nil {
+ return "", e
+ }
+ return string(utf16.Decode(b[0:n])), nil
+}
+
+func Chdir(path string) (err error) {
+ pathp, err := UTF16PtrFromString(path)
+ if err != nil {
+ return err
+ }
+ return SetCurrentDirectory(pathp)
+}
+
+func Mkdir(path string, mode uint32) (err error) {
+ pathp, err := UTF16PtrFromString(path)
+ if err != nil {
+ return err
+ }
+ return CreateDirectory(pathp, nil)
+}
+
+func Rmdir(path string) (err error) {
+ pathp, err := UTF16PtrFromString(path)
+ if err != nil {
+ return err
+ }
+ return RemoveDirectory(pathp)
+}
+
+func Unlink(path string) (err error) {
+ pathp, err := UTF16PtrFromString(path)
+ if err != nil {
+ return err
+ }
+ return DeleteFile(pathp)
+}
+
+func Rename(oldpath, newpath string) (err error) {
+ from, err := UTF16PtrFromString(oldpath)
+ if err != nil {
+ return err
+ }
+ to, err := UTF16PtrFromString(newpath)
+ if err != nil {
+ return err
+ }
+ return MoveFileEx(from, to, MOVEFILE_REPLACE_EXISTING)
+}
+
+func ComputerName() (name string, err error) {
+ var n uint32 = MAX_COMPUTERNAME_LENGTH + 1
+ b := make([]uint16, n)
+ e := GetComputerName(&b[0], &n)
+ if e != nil {
+ return "", e
+ }
+ return string(utf16.Decode(b[0:n])), nil
+}
+
+func DurationSinceBoot() time.Duration {
+ return time.Duration(getTickCount64()) * time.Millisecond
+}
+
+func Ftruncate(fd Handle, length int64) (err error) {
+ curoffset, e := Seek(fd, 0, 1)
+ if e != nil {
+ return e
+ }
+ defer Seek(fd, curoffset, 0)
+ _, e = Seek(fd, length, 0)
+ if e != nil {
+ return e
+ }
+ e = SetEndOfFile(fd)
+ if e != nil {
+ return e
+ }
+ return nil
+}
+
+func Gettimeofday(tv *Timeval) (err error) {
+ var ft Filetime
+ GetSystemTimeAsFileTime(&ft)
+ *tv = NsecToTimeval(ft.Nanoseconds())
+ return nil
+}
+
+func Pipe(p []Handle) (err error) {
+ if len(p) != 2 {
+ return syscall.EINVAL
+ }
+ var r, w Handle
+ e := CreatePipe(&r, &w, makeInheritSa(), 0)
+ if e != nil {
+ return e
+ }
+ p[0] = r
+ p[1] = w
+ return nil
+}
+
+func Utimes(path string, tv []Timeval) (err error) {
+ if len(tv) != 2 {
+ return syscall.EINVAL
+ }
+ pathp, e := UTF16PtrFromString(path)
+ if e != nil {
+ return e
+ }
+ h, e := CreateFile(pathp,
+ FILE_WRITE_ATTRIBUTES, FILE_SHARE_WRITE, nil,
+ OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0)
+ if e != nil {
+ return e
+ }
+ defer Close(h)
+ a := NsecToFiletime(tv[0].Nanoseconds())
+ w := NsecToFiletime(tv[1].Nanoseconds())
+ return SetFileTime(h, nil, &a, &w)
+}
+
+func UtimesNano(path string, ts []Timespec) (err error) {
+ if len(ts) != 2 {
+ return syscall.EINVAL
+ }
+ pathp, e := UTF16PtrFromString(path)
+ if e != nil {
+ return e
+ }
+ h, e := CreateFile(pathp,
+ FILE_WRITE_ATTRIBUTES, FILE_SHARE_WRITE, nil,
+ OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0)
+ if e != nil {
+ return e
+ }
+ defer Close(h)
+ a := NsecToFiletime(TimespecToNsec(ts[0]))
+ w := NsecToFiletime(TimespecToNsec(ts[1]))
+ return SetFileTime(h, nil, &a, &w)
+}
+
+func Fsync(fd Handle) (err error) {
+ return FlushFileBuffers(fd)
+}
+
+func Chmod(path string, mode uint32) (err error) {
+ p, e := UTF16PtrFromString(path)
+ if e != nil {
+ return e
+ }
+ attrs, e := GetFileAttributes(p)
+ if e != nil {
+ return e
+ }
+ if mode&S_IWRITE != 0 {
+ attrs &^= FILE_ATTRIBUTE_READONLY
+ } else {
+ attrs |= FILE_ATTRIBUTE_READONLY
+ }
+ return SetFileAttributes(p, attrs)
+}
+
+func LoadGetSystemTimePreciseAsFileTime() error {
+ return procGetSystemTimePreciseAsFileTime.Find()
+}
+
+func LoadCancelIoEx() error {
+ return procCancelIoEx.Find()
+}
+
+func LoadSetFileCompletionNotificationModes() error {
+ return procSetFileCompletionNotificationModes.Find()
+}
+
+func WaitForMultipleObjects(handles []Handle, waitAll bool, waitMilliseconds uint32) (event uint32, err error) {
+ // Every other win32 array API takes arguments as "pointer, count", except for this function. So we
+ // can't declare it as a usual [] type, because mksyscall will use the opposite order. We therefore
+ // trivially stub this ourselves.
+
+ var handlePtr *Handle
+ if len(handles) > 0 {
+ handlePtr = &handles[0]
+ }
+ return waitForMultipleObjects(uint32(len(handles)), uintptr(unsafe.Pointer(handlePtr)), waitAll, waitMilliseconds)
+}
+
+// net api calls
+
+const socket_error = uintptr(^uint32(0))
+
+//sys WSAStartup(verreq uint32, data *WSAData) (sockerr error) = ws2_32.WSAStartup
+//sys WSACleanup() (err error) [failretval==socket_error] = ws2_32.WSACleanup
+//sys WSAIoctl(s Handle, iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbob uint32, cbbr *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) [failretval==socket_error] = ws2_32.WSAIoctl
+//sys socket(af int32, typ int32, protocol int32) (handle Handle, err error) [failretval==InvalidHandle] = ws2_32.socket
+//sys sendto(s Handle, buf []byte, flags int32, to unsafe.Pointer, tolen int32) (err error) [failretval==socket_error] = ws2_32.sendto
+//sys recvfrom(s Handle, buf []byte, flags int32, from *RawSockaddrAny, fromlen *int32) (n int32, err error) [failretval==-1] = ws2_32.recvfrom
+//sys Setsockopt(s Handle, level int32, optname int32, optval *byte, optlen int32) (err error) [failretval==socket_error] = ws2_32.setsockopt
+//sys Getsockopt(s Handle, level int32, optname int32, optval *byte, optlen *int32) (err error) [failretval==socket_error] = ws2_32.getsockopt
+//sys bind(s Handle, name unsafe.Pointer, namelen int32) (err error) [failretval==socket_error] = ws2_32.bind
+//sys connect(s Handle, name unsafe.Pointer, namelen int32) (err error) [failretval==socket_error] = ws2_32.connect
+//sys getsockname(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) [failretval==socket_error] = ws2_32.getsockname
+//sys getpeername(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) [failretval==socket_error] = ws2_32.getpeername
+//sys listen(s Handle, backlog int32) (err error) [failretval==socket_error] = ws2_32.listen
+//sys shutdown(s Handle, how int32) (err error) [failretval==socket_error] = ws2_32.shutdown
+//sys Closesocket(s Handle) (err error) [failretval==socket_error] = ws2_32.closesocket
+//sys AcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, recvd *uint32, overlapped *Overlapped) (err error) = mswsock.AcceptEx
+//sys GetAcceptExSockaddrs(buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, lrsa **RawSockaddrAny, lrsalen *int32, rrsa **RawSockaddrAny, rrsalen *int32) = mswsock.GetAcceptExSockaddrs
+//sys WSARecv(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSARecv
+//sys WSASend(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSASend
+//sys WSARecvFrom(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, from *RawSockaddrAny, fromlen *int32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSARecvFrom
+//sys WSASendTo(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to *RawSockaddrAny, tolen int32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSASendTo
+//sys GetHostByName(name string) (h *Hostent, err error) [failretval==nil] = ws2_32.gethostbyname
+//sys GetServByName(name string, proto string) (s *Servent, err error) [failretval==nil] = ws2_32.getservbyname
+//sys Ntohs(netshort uint16) (u uint16) = ws2_32.ntohs
+//sys GetProtoByName(name string) (p *Protoent, err error) [failretval==nil] = ws2_32.getprotobyname
+//sys DnsQuery(name string, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) = dnsapi.DnsQuery_W
+//sys DnsRecordListFree(rl *DNSRecord, freetype uint32) = dnsapi.DnsRecordListFree
+//sys DnsNameCompare(name1 *uint16, name2 *uint16) (same bool) = dnsapi.DnsNameCompare_W
+//sys GetAddrInfoW(nodename *uint16, servicename *uint16, hints *AddrinfoW, result **AddrinfoW) (sockerr error) = ws2_32.GetAddrInfoW
+//sys FreeAddrInfoW(addrinfo *AddrinfoW) = ws2_32.FreeAddrInfoW
+//sys GetIfEntry(pIfRow *MibIfRow) (errcode error) = iphlpapi.GetIfEntry
+//sys GetAdaptersInfo(ai *IpAdapterInfo, ol *uint32) (errcode error) = iphlpapi.GetAdaptersInfo
+//sys SetFileCompletionNotificationModes(handle Handle, flags uint8) (err error) = kernel32.SetFileCompletionNotificationModes
+//sys WSAEnumProtocols(protocols *int32, protocolBuffer *WSAProtocolInfo, bufferLength *uint32) (n int32, err error) [failretval==-1] = ws2_32.WSAEnumProtocolsW
+//sys GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) = iphlpapi.GetAdaptersAddresses
+//sys GetACP() (acp uint32) = kernel32.GetACP
+//sys MultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) = kernel32.MultiByteToWideChar
+
+// For testing: clients can set this flag to force
+// creation of IPv6 sockets to return EAFNOSUPPORT.
+var SocketDisableIPv6 bool
+
+type RawSockaddrInet4 struct {
+ Family uint16
+ Port uint16
+ Addr [4]byte /* in_addr */
+ Zero [8]uint8
+}
+
+type RawSockaddrInet6 struct {
+ Family uint16
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+type RawSockaddr struct {
+ Family uint16
+ Data [14]int8
+}
+
+type RawSockaddrAny struct {
+ Addr RawSockaddr
+ Pad [100]int8
+}
+
+type Sockaddr interface {
+ sockaddr() (ptr unsafe.Pointer, len int32, err error) // lowercase; only we can define Sockaddrs
+}
+
+type SockaddrInet4 struct {
+ Port int
+ Addr [4]byte
+ raw RawSockaddrInet4
+}
+
+func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, int32, error) {
+ if sa.Port < 0 || sa.Port > 0xFFFF {
+ return nil, 0, syscall.EINVAL
+ }
+ sa.raw.Family = AF_INET
+ p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))
+ p[0] = byte(sa.Port >> 8)
+ p[1] = byte(sa.Port)
+ for i := 0; i < len(sa.Addr); i++ {
+ sa.raw.Addr[i] = sa.Addr[i]
+ }
+ return unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil
+}
+
+type SockaddrInet6 struct {
+ Port int
+ ZoneId uint32
+ Addr [16]byte
+ raw RawSockaddrInet6
+}
+
+func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, int32, error) {
+ if sa.Port < 0 || sa.Port > 0xFFFF {
+ return nil, 0, syscall.EINVAL
+ }
+ sa.raw.Family = AF_INET6
+ p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))
+ p[0] = byte(sa.Port >> 8)
+ p[1] = byte(sa.Port)
+ sa.raw.Scope_id = sa.ZoneId
+ for i := 0; i < len(sa.Addr); i++ {
+ sa.raw.Addr[i] = sa.Addr[i]
+ }
+ return unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil
+}
+
+type RawSockaddrUnix struct {
+ Family uint16
+ Path [UNIX_PATH_MAX]int8
+}
+
+type SockaddrUnix struct {
+ Name string
+ raw RawSockaddrUnix
+}
+
+func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, int32, error) {
+ name := sa.Name
+ n := len(name)
+ if n > len(sa.raw.Path) {
+ return nil, 0, syscall.EINVAL
+ }
+ if n == len(sa.raw.Path) && name[0] != '@' {
+ return nil, 0, syscall.EINVAL
+ }
+ sa.raw.Family = AF_UNIX
+ for i := 0; i < n; i++ {
+ sa.raw.Path[i] = int8(name[i])
+ }
+ // length is family (uint16), name, NUL.
+ sl := int32(2)
+ if n > 0 {
+ sl += int32(n) + 1
+ }
+ if sa.raw.Path[0] == '@' {
+ sa.raw.Path[0] = 0
+ // Don't count trailing NUL for abstract address.
+ sl--
+ }
+
+ return unsafe.Pointer(&sa.raw), sl, nil
+}
+
+func (rsa *RawSockaddrAny) Sockaddr() (Sockaddr, error) {
+ switch rsa.Addr.Family {
+ case AF_UNIX:
+ pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa))
+ sa := new(SockaddrUnix)
+ if pp.Path[0] == 0 {
+ // "Abstract" Unix domain socket.
+ // Rewrite leading NUL as @ for textual display.
+ // (This is the standard convention.)
+ // Not friendly to overwrite in place,
+ // but the callers below don't care.
+ pp.Path[0] = '@'
+ }
+
+ // Assume path ends at NUL.
+ // This is not technically the Linux semantics for
+ // abstract Unix domain sockets--they are supposed
+ // to be uninterpreted fixed-size binary blobs--but
+ // everyone uses this convention.
+ n := 0
+ for n < len(pp.Path) && pp.Path[n] != 0 {
+ n++
+ }
+ bytes := (*[len(pp.Path)]byte)(unsafe.Pointer(&pp.Path[0]))[0:n]
+ sa.Name = string(bytes)
+ return sa, nil
+
+ case AF_INET:
+ pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))
+ sa := new(SockaddrInet4)
+ p := (*[2]byte)(unsafe.Pointer(&pp.Port))
+ sa.Port = int(p[0])<<8 + int(p[1])
+ for i := 0; i < len(sa.Addr); i++ {
+ sa.Addr[i] = pp.Addr[i]
+ }
+ return sa, nil
+
+ case AF_INET6:
+ pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))
+ sa := new(SockaddrInet6)
+ p := (*[2]byte)(unsafe.Pointer(&pp.Port))
+ sa.Port = int(p[0])<<8 + int(p[1])
+ sa.ZoneId = pp.Scope_id
+ for i := 0; i < len(sa.Addr); i++ {
+ sa.Addr[i] = pp.Addr[i]
+ }
+ return sa, nil
+ }
+ return nil, syscall.EAFNOSUPPORT
+}
+
+func Socket(domain, typ, proto int) (fd Handle, err error) {
+ if domain == AF_INET6 && SocketDisableIPv6 {
+ return InvalidHandle, syscall.EAFNOSUPPORT
+ }
+ return socket(int32(domain), int32(typ), int32(proto))
+}
+
+func SetsockoptInt(fd Handle, level, opt int, value int) (err error) {
+ v := int32(value)
+ return Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&v)), int32(unsafe.Sizeof(v)))
+}
+
+func Bind(fd Handle, sa Sockaddr) (err error) {
+ ptr, n, err := sa.sockaddr()
+ if err != nil {
+ return err
+ }
+ return bind(fd, ptr, n)
+}
+
+func Connect(fd Handle, sa Sockaddr) (err error) {
+ ptr, n, err := sa.sockaddr()
+ if err != nil {
+ return err
+ }
+ return connect(fd, ptr, n)
+}
+
+func Getsockname(fd Handle) (sa Sockaddr, err error) {
+ var rsa RawSockaddrAny
+ l := int32(unsafe.Sizeof(rsa))
+ if err = getsockname(fd, &rsa, &l); err != nil {
+ return
+ }
+ return rsa.Sockaddr()
+}
+
+func Getpeername(fd Handle) (sa Sockaddr, err error) {
+ var rsa RawSockaddrAny
+ l := int32(unsafe.Sizeof(rsa))
+ if err = getpeername(fd, &rsa, &l); err != nil {
+ return
+ }
+ return rsa.Sockaddr()
+}
+
+func Listen(s Handle, n int) (err error) {
+ return listen(s, int32(n))
+}
+
+func Shutdown(fd Handle, how int) (err error) {
+ return shutdown(fd, int32(how))
+}
+
+func WSASendto(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to Sockaddr, overlapped *Overlapped, croutine *byte) (err error) {
+ rsa, l, err := to.sockaddr()
+ if err != nil {
+ return err
+ }
+ return WSASendTo(s, bufs, bufcnt, sent, flags, (*RawSockaddrAny)(unsafe.Pointer(rsa)), l, overlapped, croutine)
+}
+
+func LoadGetAddrInfo() error {
+ return procGetAddrInfoW.Find()
+}
+
+var connectExFunc struct {
+ once sync.Once
+ addr uintptr
+ err error
+}
+
+func LoadConnectEx() error {
+ connectExFunc.once.Do(func() {
+ var s Handle
+ s, connectExFunc.err = Socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)
+ if connectExFunc.err != nil {
+ return
+ }
+ defer CloseHandle(s)
+ var n uint32
+ connectExFunc.err = WSAIoctl(s,
+ SIO_GET_EXTENSION_FUNCTION_POINTER,
+ (*byte)(unsafe.Pointer(&WSAID_CONNECTEX)),
+ uint32(unsafe.Sizeof(WSAID_CONNECTEX)),
+ (*byte)(unsafe.Pointer(&connectExFunc.addr)),
+ uint32(unsafe.Sizeof(connectExFunc.addr)),
+ &n, nil, 0)
+ })
+ return connectExFunc.err
+}
+
+func connectEx(s Handle, name unsafe.Pointer, namelen int32, sendBuf *byte, sendDataLen uint32, bytesSent *uint32, overlapped *Overlapped) (err error) {
+ r1, _, e1 := syscall.Syscall9(connectExFunc.addr, 7, uintptr(s), uintptr(name), uintptr(namelen), uintptr(unsafe.Pointer(sendBuf)), uintptr(sendDataLen), uintptr(unsafe.Pointer(bytesSent)), uintptr(unsafe.Pointer(overlapped)), 0, 0)
+ if r1 == 0 {
+ if e1 != 0 {
+ err = error(e1)
+ } else {
+ err = syscall.EINVAL
+ }
+ }
+ return
+}
+
+func ConnectEx(fd Handle, sa Sockaddr, sendBuf *byte, sendDataLen uint32, bytesSent *uint32, overlapped *Overlapped) error {
+ err := LoadConnectEx()
+ if err != nil {
+ return errorspkg.New("failed to find ConnectEx: " + err.Error())
+ }
+ ptr, n, err := sa.sockaddr()
+ if err != nil {
+ return err
+ }
+ return connectEx(fd, ptr, n, sendBuf, sendDataLen, bytesSent, overlapped)
+}
+
+var sendRecvMsgFunc struct {
+ once sync.Once
+ sendAddr uintptr
+ recvAddr uintptr
+ err error
+}
+
+func loadWSASendRecvMsg() error {
+ sendRecvMsgFunc.once.Do(func() {
+ var s Handle
+ s, sendRecvMsgFunc.err = Socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)
+ if sendRecvMsgFunc.err != nil {
+ return
+ }
+ defer CloseHandle(s)
+ var n uint32
+ sendRecvMsgFunc.err = WSAIoctl(s,
+ SIO_GET_EXTENSION_FUNCTION_POINTER,
+ (*byte)(unsafe.Pointer(&WSAID_WSARECVMSG)),
+ uint32(unsafe.Sizeof(WSAID_WSARECVMSG)),
+ (*byte)(unsafe.Pointer(&sendRecvMsgFunc.recvAddr)),
+ uint32(unsafe.Sizeof(sendRecvMsgFunc.recvAddr)),
+ &n, nil, 0)
+ if sendRecvMsgFunc.err != nil {
+ return
+ }
+ sendRecvMsgFunc.err = WSAIoctl(s,
+ SIO_GET_EXTENSION_FUNCTION_POINTER,
+ (*byte)(unsafe.Pointer(&WSAID_WSASENDMSG)),
+ uint32(unsafe.Sizeof(WSAID_WSASENDMSG)),
+ (*byte)(unsafe.Pointer(&sendRecvMsgFunc.sendAddr)),
+ uint32(unsafe.Sizeof(sendRecvMsgFunc.sendAddr)),
+ &n, nil, 0)
+ })
+ return sendRecvMsgFunc.err
+}
+
+func WSASendMsg(fd Handle, msg *WSAMsg, flags uint32, bytesSent *uint32, overlapped *Overlapped, croutine *byte) error {
+ err := loadWSASendRecvMsg()
+ if err != nil {
+ return err
+ }
+ r1, _, e1 := syscall.Syscall6(sendRecvMsgFunc.sendAddr, 6, uintptr(fd), uintptr(unsafe.Pointer(msg)), uintptr(flags), uintptr(unsafe.Pointer(bytesSent)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)))
+ if r1 == socket_error {
+ err = errnoErr(e1)
+ }
+ return err
+}
+
+func WSARecvMsg(fd Handle, msg *WSAMsg, bytesReceived *uint32, overlapped *Overlapped, croutine *byte) error {
+ err := loadWSASendRecvMsg()
+ if err != nil {
+ return err
+ }
+ r1, _, e1 := syscall.Syscall6(sendRecvMsgFunc.recvAddr, 5, uintptr(fd), uintptr(unsafe.Pointer(msg)), uintptr(unsafe.Pointer(bytesReceived)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0)
+ if r1 == socket_error {
+ err = errnoErr(e1)
+ }
+ return err
+}
+
+// Invented structures to support what package os expects.
+type Rusage struct {
+ CreationTime Filetime
+ ExitTime Filetime
+ KernelTime Filetime
+ UserTime Filetime
+}
+
+type WaitStatus struct {
+ ExitCode uint32
+}
+
+func (w WaitStatus) Exited() bool { return true }
+
+func (w WaitStatus) ExitStatus() int { return int(w.ExitCode) }
+
+func (w WaitStatus) Signal() Signal { return -1 }
+
+func (w WaitStatus) CoreDump() bool { return false }
+
+func (w WaitStatus) Stopped() bool { return false }
+
+func (w WaitStatus) Continued() bool { return false }
+
+func (w WaitStatus) StopSignal() Signal { return -1 }
+
+func (w WaitStatus) Signaled() bool { return false }
+
+func (w WaitStatus) TrapCause() int { return -1 }
+
+// Timespec is an invented structure on Windows, but here for
+// consistency with the corresponding package for other operating systems.
+type Timespec struct {
+ Sec int64
+ Nsec int64
+}
+
+func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
+
+func NsecToTimespec(nsec int64) (ts Timespec) {
+ ts.Sec = nsec / 1e9
+ ts.Nsec = nsec % 1e9
+ return
+}
+
+// TODO(brainman): fix all needed for net
+
+func Accept(fd Handle) (nfd Handle, sa Sockaddr, err error) { return 0, nil, syscall.EWINDOWS }
+
+func Recvfrom(fd Handle, p []byte, flags int) (n int, from Sockaddr, err error) {
+ var rsa RawSockaddrAny
+ l := int32(unsafe.Sizeof(rsa))
+ n32, err := recvfrom(fd, p, int32(flags), &rsa, &l)
+ n = int(n32)
+ if err != nil {
+ return
+ }
+ from, err = rsa.Sockaddr()
+ return
+}
+
+func Sendto(fd Handle, p []byte, flags int, to Sockaddr) (err error) {
+ ptr, l, err := to.sockaddr()
+ if err != nil {
+ return err
+ }
+ return sendto(fd, p, int32(flags), ptr, l)
+}
+
+func SetsockoptTimeval(fd Handle, level, opt int, tv *Timeval) (err error) { return syscall.EWINDOWS }
+
+// The Linger struct is wrong but we only noticed after Go 1.
+// sysLinger is the real system call structure.
+
+// BUG(brainman): The definition of Linger is not appropriate for direct use
+// with Setsockopt and Getsockopt.
+// Use SetsockoptLinger instead.
+
+type Linger struct {
+ Onoff int32
+ Linger int32
+}
+
+type sysLinger struct {
+ Onoff uint16
+ Linger uint16
+}
+
+type IPMreq struct {
+ Multiaddr [4]byte /* in_addr */
+ Interface [4]byte /* in_addr */
+}
+
+type IPv6Mreq struct {
+ Multiaddr [16]byte /* in6_addr */
+ Interface uint32
+}
+
+func GetsockoptInt(fd Handle, level, opt int) (int, error) {
+ v := int32(0)
+ l := int32(unsafe.Sizeof(v))
+ err := Getsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&v)), &l)
+ return int(v), err
+}
+
+func SetsockoptLinger(fd Handle, level, opt int, l *Linger) (err error) {
+ sys := sysLinger{Onoff: uint16(l.Onoff), Linger: uint16(l.Linger)}
+ return Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&sys)), int32(unsafe.Sizeof(sys)))
+}
+
+func SetsockoptInet4Addr(fd Handle, level, opt int, value [4]byte) (err error) {
+ return Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&value[0])), 4)
+}
+func SetsockoptIPMreq(fd Handle, level, opt int, mreq *IPMreq) (err error) {
+ return Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(mreq)), int32(unsafe.Sizeof(*mreq)))
+}
+func SetsockoptIPv6Mreq(fd Handle, level, opt int, mreq *IPv6Mreq) (err error) {
+ return syscall.EWINDOWS
+}
+
+func Getpid() (pid int) { return int(GetCurrentProcessId()) }
+
+func FindFirstFile(name *uint16, data *Win32finddata) (handle Handle, err error) {
+ // NOTE(rsc): The Win32finddata struct is wrong for the system call:
+ // the two paths are each one uint16 short. Use the correct struct,
+ // a win32finddata1, and then copy the results out.
+ // There is no loss of expressivity here, because the final
+ // uint16, if it is used, is supposed to be a NUL, and Go doesn't need that.
+ // For Go 1.1, we might avoid the allocation of win32finddata1 here
+ // by adding a final Bug [2]uint16 field to the struct and then
+ // adjusting the fields in the result directly.
+ var data1 win32finddata1
+ handle, err = findFirstFile1(name, &data1)
+ if err == nil {
+ copyFindData(data, &data1)
+ }
+ return
+}
+
+func FindNextFile(handle Handle, data *Win32finddata) (err error) {
+ var data1 win32finddata1
+ err = findNextFile1(handle, &data1)
+ if err == nil {
+ copyFindData(data, &data1)
+ }
+ return
+}
+
+func getProcessEntry(pid int) (*ProcessEntry32, error) {
+ snapshot, err := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
+ if err != nil {
+ return nil, err
+ }
+ defer CloseHandle(snapshot)
+ var procEntry ProcessEntry32
+ procEntry.Size = uint32(unsafe.Sizeof(procEntry))
+ if err = Process32First(snapshot, &procEntry); err != nil {
+ return nil, err
+ }
+ for {
+ if procEntry.ProcessID == uint32(pid) {
+ return &procEntry, nil
+ }
+ err = Process32Next(snapshot, &procEntry)
+ if err != nil {
+ return nil, err
+ }
+ }
+}
+
+func Getppid() (ppid int) {
+ pe, err := getProcessEntry(Getpid())
+ if err != nil {
+ return -1
+ }
+ return int(pe.ParentProcessID)
+}
+
+// TODO(brainman): fix all needed for os
+func Fchdir(fd Handle) (err error) { return syscall.EWINDOWS }
+func Link(oldpath, newpath string) (err error) { return syscall.EWINDOWS }
+func Symlink(path, link string) (err error) { return syscall.EWINDOWS }
+
+func Fchmod(fd Handle, mode uint32) (err error) { return syscall.EWINDOWS }
+func Chown(path string, uid int, gid int) (err error) { return syscall.EWINDOWS }
+func Lchown(path string, uid int, gid int) (err error) { return syscall.EWINDOWS }
+func Fchown(fd Handle, uid int, gid int) (err error) { return syscall.EWINDOWS }
+
+func Getuid() (uid int) { return -1 }
+func Geteuid() (euid int) { return -1 }
+func Getgid() (gid int) { return -1 }
+func Getegid() (egid int) { return -1 }
+func Getgroups() (gids []int, err error) { return nil, syscall.EWINDOWS }
+
+type Signal int
+
+func (s Signal) Signal() {}
+
+func (s Signal) String() string {
+ if 0 <= s && int(s) < len(signals) {
+ str := signals[s]
+ if str != "" {
+ return str
+ }
+ }
+ return "signal " + itoa(int(s))
+}
+
+func LoadCreateSymbolicLink() error {
+ return procCreateSymbolicLinkW.Find()
+}
+
+// Readlink returns the destination of the named symbolic link.
+func Readlink(path string, buf []byte) (n int, err error) {
+ fd, err := CreateFile(StringToUTF16Ptr(path), GENERIC_READ, 0, nil, OPEN_EXISTING,
+ FILE_FLAG_OPEN_REPARSE_POINT|FILE_FLAG_BACKUP_SEMANTICS, 0)
+ if err != nil {
+ return -1, err
+ }
+ defer CloseHandle(fd)
+
+ rdbbuf := make([]byte, MAXIMUM_REPARSE_DATA_BUFFER_SIZE)
+ var bytesReturned uint32
+ err = DeviceIoControl(fd, FSCTL_GET_REPARSE_POINT, nil, 0, &rdbbuf[0], uint32(len(rdbbuf)), &bytesReturned, nil)
+ if err != nil {
+ return -1, err
+ }
+
+ rdb := (*reparseDataBuffer)(unsafe.Pointer(&rdbbuf[0]))
+ var s string
+ switch rdb.ReparseTag {
+ case IO_REPARSE_TAG_SYMLINK:
+ data := (*symbolicLinkReparseBuffer)(unsafe.Pointer(&rdb.reparseBuffer))
+ p := (*[0xffff]uint16)(unsafe.Pointer(&data.PathBuffer[0]))
+ s = UTF16ToString(p[data.PrintNameOffset/2 : (data.PrintNameLength-data.PrintNameOffset)/2])
+ case IO_REPARSE_TAG_MOUNT_POINT:
+ data := (*mountPointReparseBuffer)(unsafe.Pointer(&rdb.reparseBuffer))
+ p := (*[0xffff]uint16)(unsafe.Pointer(&data.PathBuffer[0]))
+ s = UTF16ToString(p[data.PrintNameOffset/2 : (data.PrintNameLength-data.PrintNameOffset)/2])
+ default:
+ // the path is not a symlink or junction but another type of reparse
+ // point
+ return -1, syscall.ENOENT
+ }
+ n = copy(buf, []byte(s))
+
+ return n, nil
+}
+
+// GUIDFromString parses a string in the form of
+// "{XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}" into a GUID.
+func GUIDFromString(str string) (GUID, error) {
+ guid := GUID{}
+ str16, err := syscall.UTF16PtrFromString(str)
+ if err != nil {
+ return guid, err
+ }
+ err = clsidFromString(str16, &guid)
+ if err != nil {
+ return guid, err
+ }
+ return guid, nil
+}
+
+// GenerateGUID creates a new random GUID.
+func GenerateGUID() (GUID, error) {
+ guid := GUID{}
+ err := coCreateGuid(&guid)
+ if err != nil {
+ return guid, err
+ }
+ return guid, nil
+}
+
+// String returns the canonical string form of the GUID,
+// in the form of "{XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}".
+func (guid GUID) String() string {
+ var str [100]uint16
+ chars := stringFromGUID2(&guid, &str[0], int32(len(str)))
+ if chars <= 1 {
+ return ""
+ }
+ return string(utf16.Decode(str[:chars-1]))
+}
+
+// KnownFolderPath returns a well-known folder path for the current user, specified by one of
+// the FOLDERID_ constants, and chosen and optionally created based on a KF_ flag.
+func KnownFolderPath(folderID *KNOWNFOLDERID, flags uint32) (string, error) {
+ return Token(0).KnownFolderPath(folderID, flags)
+}
+
+// KnownFolderPath returns a well-known folder path for the user token, specified by one of
+// the FOLDERID_ constants, and chosen and optionally created based on a KF_ flag.
+func (t Token) KnownFolderPath(folderID *KNOWNFOLDERID, flags uint32) (string, error) {
+ var p *uint16
+ err := shGetKnownFolderPath(folderID, flags, t, &p)
+ if err != nil {
+ return "", err
+ }
+ defer CoTaskMemFree(unsafe.Pointer(p))
+ return UTF16PtrToString(p), nil
+}
+
+// RtlGetVersion returns the version of the underlying operating system, ignoring
+// manifest semantics but is affected by the application compatibility layer.
+func RtlGetVersion() *OsVersionInfoEx {
+ info := &OsVersionInfoEx{}
+ info.osVersionInfoSize = uint32(unsafe.Sizeof(*info))
+ // According to documentation, this function always succeeds.
+ // The function doesn't even check the validity of the
+ // osVersionInfoSize member. Disassembling ntdll.dll indicates
+ // that the documentation is indeed correct about that.
+ _ = rtlGetVersion(info)
+ return info
+}
+
+// RtlGetNtVersionNumbers returns the version of the underlying operating system,
+// ignoring manifest semantics and the application compatibility layer.
+func RtlGetNtVersionNumbers() (majorVersion, minorVersion, buildNumber uint32) {
+ rtlGetNtVersionNumbers(&majorVersion, &minorVersion, &buildNumber)
+ buildNumber &= 0xffff
+ return
+}
+
+// GetProcessPreferredUILanguages retrieves the process preferred UI languages.
+func GetProcessPreferredUILanguages(flags uint32) ([]string, error) {
+ return getUILanguages(flags, getProcessPreferredUILanguages)
+}
+
+// GetThreadPreferredUILanguages retrieves the thread preferred UI languages for the current thread.
+func GetThreadPreferredUILanguages(flags uint32) ([]string, error) {
+ return getUILanguages(flags, getThreadPreferredUILanguages)
+}
+
+// GetUserPreferredUILanguages retrieves information about the user preferred UI languages.
+func GetUserPreferredUILanguages(flags uint32) ([]string, error) {
+ return getUILanguages(flags, getUserPreferredUILanguages)
+}
+
+// GetSystemPreferredUILanguages retrieves the system preferred UI languages.
+func GetSystemPreferredUILanguages(flags uint32) ([]string, error) {
+ return getUILanguages(flags, getSystemPreferredUILanguages)
+}
+
+func getUILanguages(flags uint32, f func(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) error) ([]string, error) {
+ size := uint32(128)
+ for {
+ var numLanguages uint32
+ buf := make([]uint16, size)
+ err := f(flags, &numLanguages, &buf[0], &size)
+ if err == ERROR_INSUFFICIENT_BUFFER {
+ continue
+ }
+ if err != nil {
+ return nil, err
+ }
+ buf = buf[:size]
+ if numLanguages == 0 || len(buf) == 0 { // GetProcessPreferredUILanguages may return numLanguages==0 with "\0\0"
+ return []string{}, nil
+ }
+ if buf[len(buf)-1] == 0 {
+ buf = buf[:len(buf)-1] // remove terminating null
+ }
+ languages := make([]string, 0, numLanguages)
+ from := 0
+ for i, c := range buf {
+ if c == 0 {
+ languages = append(languages, string(utf16.Decode(buf[from:i])))
+ from = i + 1
+ }
+ }
+ return languages, nil
+ }
+}
+
+func SetConsoleCursorPosition(console Handle, position Coord) error {
+ return setConsoleCursorPosition(console, *((*uint32)(unsafe.Pointer(&position))))
+}
diff --git a/vendor/golang.org/x/sys/windows/types_windows.go b/vendor/golang.org/x/sys/windows/types_windows.go
new file mode 100644
index 00000000..265d797c
--- /dev/null
+++ b/vendor/golang.org/x/sys/windows/types_windows.go
@@ -0,0 +1,1822 @@
+// Copyright 2011 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package windows
+
+import (
+ "net"
+ "syscall"
+ "unsafe"
+)
+
+const (
+ // Invented values to support what package os expects.
+ O_RDONLY = 0x00000
+ O_WRONLY = 0x00001
+ O_RDWR = 0x00002
+ O_CREAT = 0x00040
+ O_EXCL = 0x00080
+ O_NOCTTY = 0x00100
+ O_TRUNC = 0x00200
+ O_NONBLOCK = 0x00800
+ O_APPEND = 0x00400
+ O_SYNC = 0x01000
+ O_ASYNC = 0x02000
+ O_CLOEXEC = 0x80000
+)
+
+const (
+ // More invented values for signals
+ SIGHUP = Signal(0x1)
+ SIGINT = Signal(0x2)
+ SIGQUIT = Signal(0x3)
+ SIGILL = Signal(0x4)
+ SIGTRAP = Signal(0x5)
+ SIGABRT = Signal(0x6)
+ SIGBUS = Signal(0x7)
+ SIGFPE = Signal(0x8)
+ SIGKILL = Signal(0x9)
+ SIGSEGV = Signal(0xb)
+ SIGPIPE = Signal(0xd)
+ SIGALRM = Signal(0xe)
+ SIGTERM = Signal(0xf)
+)
+
+var signals = [...]string{
+ 1: "hangup",
+ 2: "interrupt",
+ 3: "quit",
+ 4: "illegal instruction",
+ 5: "trace/breakpoint trap",
+ 6: "aborted",
+ 7: "bus error",
+ 8: "floating point exception",
+ 9: "killed",
+ 10: "user defined signal 1",
+ 11: "segmentation fault",
+ 12: "user defined signal 2",
+ 13: "broken pipe",
+ 14: "alarm clock",
+ 15: "terminated",
+}
+
+const (
+ FILE_LIST_DIRECTORY = 0x00000001
+ FILE_APPEND_DATA = 0x00000004
+ FILE_WRITE_ATTRIBUTES = 0x00000100
+
+ FILE_SHARE_READ = 0x00000001
+ FILE_SHARE_WRITE = 0x00000002
+ FILE_SHARE_DELETE = 0x00000004
+
+ FILE_ATTRIBUTE_READONLY = 0x00000001
+ FILE_ATTRIBUTE_HIDDEN = 0x00000002
+ FILE_ATTRIBUTE_SYSTEM = 0x00000004
+ FILE_ATTRIBUTE_DIRECTORY = 0x00000010
+ FILE_ATTRIBUTE_ARCHIVE = 0x00000020
+ FILE_ATTRIBUTE_DEVICE = 0x00000040
+ FILE_ATTRIBUTE_NORMAL = 0x00000080
+ FILE_ATTRIBUTE_TEMPORARY = 0x00000100
+ FILE_ATTRIBUTE_SPARSE_FILE = 0x00000200
+ FILE_ATTRIBUTE_REPARSE_POINT = 0x00000400
+ FILE_ATTRIBUTE_COMPRESSED = 0x00000800
+ FILE_ATTRIBUTE_OFFLINE = 0x00001000
+ FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 0x00002000
+ FILE_ATTRIBUTE_ENCRYPTED = 0x00004000
+ FILE_ATTRIBUTE_INTEGRITY_STREAM = 0x00008000
+ FILE_ATTRIBUTE_VIRTUAL = 0x00010000
+ FILE_ATTRIBUTE_NO_SCRUB_DATA = 0x00020000
+ FILE_ATTRIBUTE_RECALL_ON_OPEN = 0x00040000
+ FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS = 0x00400000
+
+ INVALID_FILE_ATTRIBUTES = 0xffffffff
+
+ CREATE_NEW = 1
+ CREATE_ALWAYS = 2
+ OPEN_EXISTING = 3
+ OPEN_ALWAYS = 4
+ TRUNCATE_EXISTING = 5
+
+ FILE_FLAG_OPEN_REQUIRING_OPLOCK = 0x00040000
+ FILE_FLAG_FIRST_PIPE_INSTANCE = 0x00080000
+ FILE_FLAG_OPEN_NO_RECALL = 0x00100000
+ FILE_FLAG_OPEN_REPARSE_POINT = 0x00200000
+ FILE_FLAG_SESSION_AWARE = 0x00800000
+ FILE_FLAG_POSIX_SEMANTICS = 0x01000000
+ FILE_FLAG_BACKUP_SEMANTICS = 0x02000000
+ FILE_FLAG_DELETE_ON_CLOSE = 0x04000000
+ FILE_FLAG_SEQUENTIAL_SCAN = 0x08000000
+ FILE_FLAG_RANDOM_ACCESS = 0x10000000
+ FILE_FLAG_NO_BUFFERING = 0x20000000
+ FILE_FLAG_OVERLAPPED = 0x40000000
+ FILE_FLAG_WRITE_THROUGH = 0x80000000
+
+ HANDLE_FLAG_INHERIT = 0x00000001
+ STARTF_USESTDHANDLES = 0x00000100
+ STARTF_USESHOWWINDOW = 0x00000001
+ DUPLICATE_CLOSE_SOURCE = 0x00000001
+ DUPLICATE_SAME_ACCESS = 0x00000002
+
+ STD_INPUT_HANDLE = -10 & (1<<32 - 1)
+ STD_OUTPUT_HANDLE = -11 & (1<<32 - 1)
+ STD_ERROR_HANDLE = -12 & (1<<32 - 1)
+
+ FILE_BEGIN = 0
+ FILE_CURRENT = 1
+ FILE_END = 2
+
+ LANG_ENGLISH = 0x09
+ SUBLANG_ENGLISH_US = 0x01
+
+ FORMAT_MESSAGE_ALLOCATE_BUFFER = 256
+ FORMAT_MESSAGE_IGNORE_INSERTS = 512
+ FORMAT_MESSAGE_FROM_STRING = 1024
+ FORMAT_MESSAGE_FROM_HMODULE = 2048
+ FORMAT_MESSAGE_FROM_SYSTEM = 4096
+ FORMAT_MESSAGE_ARGUMENT_ARRAY = 8192
+ FORMAT_MESSAGE_MAX_WIDTH_MASK = 255
+
+ MAX_PATH = 260
+ MAX_LONG_PATH = 32768
+
+ MAX_COMPUTERNAME_LENGTH = 15
+
+ TIME_ZONE_ID_UNKNOWN = 0
+ TIME_ZONE_ID_STANDARD = 1
+
+ TIME_ZONE_ID_DAYLIGHT = 2
+ IGNORE = 0
+ INFINITE = 0xffffffff
+
+ WAIT_ABANDONED = 0x00000080
+ WAIT_OBJECT_0 = 0x00000000
+ WAIT_FAILED = 0xFFFFFFFF
+
+ // Access rights for process.
+ PROCESS_CREATE_PROCESS = 0x0080
+ PROCESS_CREATE_THREAD = 0x0002
+ PROCESS_DUP_HANDLE = 0x0040
+ PROCESS_QUERY_INFORMATION = 0x0400
+ PROCESS_QUERY_LIMITED_INFORMATION = 0x1000
+ PROCESS_SET_INFORMATION = 0x0200
+ PROCESS_SET_QUOTA = 0x0100
+ PROCESS_SUSPEND_RESUME = 0x0800
+ PROCESS_TERMINATE = 0x0001
+ PROCESS_VM_OPERATION = 0x0008
+ PROCESS_VM_READ = 0x0010
+ PROCESS_VM_WRITE = 0x0020
+
+ // Access rights for thread.
+ THREAD_DIRECT_IMPERSONATION = 0x0200
+ THREAD_GET_CONTEXT = 0x0008
+ THREAD_IMPERSONATE = 0x0100
+ THREAD_QUERY_INFORMATION = 0x0040
+ THREAD_QUERY_LIMITED_INFORMATION = 0x0800
+ THREAD_SET_CONTEXT = 0x0010
+ THREAD_SET_INFORMATION = 0x0020
+ THREAD_SET_LIMITED_INFORMATION = 0x0400
+ THREAD_SET_THREAD_TOKEN = 0x0080
+ THREAD_SUSPEND_RESUME = 0x0002
+ THREAD_TERMINATE = 0x0001
+
+ FILE_MAP_COPY = 0x01
+ FILE_MAP_WRITE = 0x02
+ FILE_MAP_READ = 0x04
+ FILE_MAP_EXECUTE = 0x20
+
+ CTRL_C_EVENT = 0
+ CTRL_BREAK_EVENT = 1
+ CTRL_CLOSE_EVENT = 2
+ CTRL_LOGOFF_EVENT = 5
+ CTRL_SHUTDOWN_EVENT = 6
+
+ // Windows reserves errors >= 1<<29 for application use.
+ APPLICATION_ERROR = 1 << 29
+)
+
+const (
+ // Process creation flags.
+ CREATE_BREAKAWAY_FROM_JOB = 0x01000000
+ CREATE_DEFAULT_ERROR_MODE = 0x04000000
+ CREATE_NEW_CONSOLE = 0x00000010
+ CREATE_NEW_PROCESS_GROUP = 0x00000200
+ CREATE_NO_WINDOW = 0x08000000
+ CREATE_PROTECTED_PROCESS = 0x00040000
+ CREATE_PRESERVE_CODE_AUTHZ_LEVEL = 0x02000000
+ CREATE_SEPARATE_WOW_VDM = 0x00000800
+ CREATE_SHARED_WOW_VDM = 0x00001000
+ CREATE_SUSPENDED = 0x00000004
+ CREATE_UNICODE_ENVIRONMENT = 0x00000400
+ DEBUG_ONLY_THIS_PROCESS = 0x00000002
+ DEBUG_PROCESS = 0x00000001
+ DETACHED_PROCESS = 0x00000008
+ EXTENDED_STARTUPINFO_PRESENT = 0x00080000
+ INHERIT_PARENT_AFFINITY = 0x00010000
+)
+
+const (
+ // flags for CreateToolhelp32Snapshot
+ TH32CS_SNAPHEAPLIST = 0x01
+ TH32CS_SNAPPROCESS = 0x02
+ TH32CS_SNAPTHREAD = 0x04
+ TH32CS_SNAPMODULE = 0x08
+ TH32CS_SNAPMODULE32 = 0x10
+ TH32CS_SNAPALL = TH32CS_SNAPHEAPLIST | TH32CS_SNAPMODULE | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD
+ TH32CS_INHERIT = 0x80000000
+)
+
+const (
+ // filters for ReadDirectoryChangesW
+ FILE_NOTIFY_CHANGE_FILE_NAME = 0x001
+ FILE_NOTIFY_CHANGE_DIR_NAME = 0x002
+ FILE_NOTIFY_CHANGE_ATTRIBUTES = 0x004
+ FILE_NOTIFY_CHANGE_SIZE = 0x008
+ FILE_NOTIFY_CHANGE_LAST_WRITE = 0x010
+ FILE_NOTIFY_CHANGE_LAST_ACCESS = 0x020
+ FILE_NOTIFY_CHANGE_CREATION = 0x040
+ FILE_NOTIFY_CHANGE_SECURITY = 0x100
+)
+
+const (
+ // do not reorder
+ FILE_ACTION_ADDED = iota + 1
+ FILE_ACTION_REMOVED
+ FILE_ACTION_MODIFIED
+ FILE_ACTION_RENAMED_OLD_NAME
+ FILE_ACTION_RENAMED_NEW_NAME
+)
+
+const (
+ // wincrypt.h
+ PROV_RSA_FULL = 1
+ PROV_RSA_SIG = 2
+ PROV_DSS = 3
+ PROV_FORTEZZA = 4
+ PROV_MS_EXCHANGE = 5
+ PROV_SSL = 6
+ PROV_RSA_SCHANNEL = 12
+ PROV_DSS_DH = 13
+ PROV_EC_ECDSA_SIG = 14
+ PROV_EC_ECNRA_SIG = 15
+ PROV_EC_ECDSA_FULL = 16
+ PROV_EC_ECNRA_FULL = 17
+ PROV_DH_SCHANNEL = 18
+ PROV_SPYRUS_LYNKS = 20
+ PROV_RNG = 21
+ PROV_INTEL_SEC = 22
+ PROV_REPLACE_OWF = 23
+ PROV_RSA_AES = 24
+ CRYPT_VERIFYCONTEXT = 0xF0000000
+ CRYPT_NEWKEYSET = 0x00000008
+ CRYPT_DELETEKEYSET = 0x00000010
+ CRYPT_MACHINE_KEYSET = 0x00000020
+ CRYPT_SILENT = 0x00000040
+ CRYPT_DEFAULT_CONTAINER_OPTIONAL = 0x00000080
+
+ USAGE_MATCH_TYPE_AND = 0
+ USAGE_MATCH_TYPE_OR = 1
+
+ /* msgAndCertEncodingType values for CertOpenStore function */
+ X509_ASN_ENCODING = 0x00000001
+ PKCS_7_ASN_ENCODING = 0x00010000
+
+ /* storeProvider values for CertOpenStore function */
+ CERT_STORE_PROV_MSG = 1
+ CERT_STORE_PROV_MEMORY = 2
+ CERT_STORE_PROV_FILE = 3
+ CERT_STORE_PROV_REG = 4
+ CERT_STORE_PROV_PKCS7 = 5
+ CERT_STORE_PROV_SERIALIZED = 6
+ CERT_STORE_PROV_FILENAME_A = 7
+ CERT_STORE_PROV_FILENAME_W = 8
+ CERT_STORE_PROV_FILENAME = CERT_STORE_PROV_FILENAME_W
+ CERT_STORE_PROV_SYSTEM_A = 9
+ CERT_STORE_PROV_SYSTEM_W = 10
+ CERT_STORE_PROV_SYSTEM = CERT_STORE_PROV_SYSTEM_W
+ CERT_STORE_PROV_COLLECTION = 11
+ CERT_STORE_PROV_SYSTEM_REGISTRY_A = 12
+ CERT_STORE_PROV_SYSTEM_REGISTRY_W = 13
+ CERT_STORE_PROV_SYSTEM_REGISTRY = CERT_STORE_PROV_SYSTEM_REGISTRY_W
+ CERT_STORE_PROV_PHYSICAL_W = 14
+ CERT_STORE_PROV_PHYSICAL = CERT_STORE_PROV_PHYSICAL_W
+ CERT_STORE_PROV_SMART_CARD_W = 15
+ CERT_STORE_PROV_SMART_CARD = CERT_STORE_PROV_SMART_CARD_W
+ CERT_STORE_PROV_LDAP_W = 16
+ CERT_STORE_PROV_LDAP = CERT_STORE_PROV_LDAP_W
+ CERT_STORE_PROV_PKCS12 = 17
+
+ /* store characteristics (low WORD of flag) for CertOpenStore function */
+ CERT_STORE_NO_CRYPT_RELEASE_FLAG = 0x00000001
+ CERT_STORE_SET_LOCALIZED_NAME_FLAG = 0x00000002
+ CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG = 0x00000004
+ CERT_STORE_DELETE_FLAG = 0x00000010
+ CERT_STORE_UNSAFE_PHYSICAL_FLAG = 0x00000020
+ CERT_STORE_SHARE_STORE_FLAG = 0x00000040
+ CERT_STORE_SHARE_CONTEXT_FLAG = 0x00000080
+ CERT_STORE_MANIFOLD_FLAG = 0x00000100
+ CERT_STORE_ENUM_ARCHIVED_FLAG = 0x00000200
+ CERT_STORE_UPDATE_KEYID_FLAG = 0x00000400
+ CERT_STORE_BACKUP_RESTORE_FLAG = 0x00000800
+ CERT_STORE_MAXIMUM_ALLOWED_FLAG = 0x00001000
+ CERT_STORE_CREATE_NEW_FLAG = 0x00002000
+ CERT_STORE_OPEN_EXISTING_FLAG = 0x00004000
+ CERT_STORE_READONLY_FLAG = 0x00008000
+
+ /* store locations (high WORD of flag) for CertOpenStore function */
+ CERT_SYSTEM_STORE_CURRENT_USER = 0x00010000
+ CERT_SYSTEM_STORE_LOCAL_MACHINE = 0x00020000
+ CERT_SYSTEM_STORE_CURRENT_SERVICE = 0x00040000
+ CERT_SYSTEM_STORE_SERVICES = 0x00050000
+ CERT_SYSTEM_STORE_USERS = 0x00060000
+ CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY = 0x00070000
+ CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY = 0x00080000
+ CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE = 0x00090000
+ CERT_SYSTEM_STORE_UNPROTECTED_FLAG = 0x40000000
+ CERT_SYSTEM_STORE_RELOCATE_FLAG = 0x80000000
+
+ /* Miscellaneous high-WORD flags for CertOpenStore function */
+ CERT_REGISTRY_STORE_REMOTE_FLAG = 0x00010000
+ CERT_REGISTRY_STORE_SERIALIZED_FLAG = 0x00020000
+ CERT_REGISTRY_STORE_ROAMING_FLAG = 0x00040000
+ CERT_REGISTRY_STORE_MY_IE_DIRTY_FLAG = 0x00080000
+ CERT_REGISTRY_STORE_LM_GPT_FLAG = 0x01000000
+ CERT_REGISTRY_STORE_CLIENT_GPT_FLAG = 0x80000000
+ CERT_FILE_STORE_COMMIT_ENABLE_FLAG = 0x00010000
+ CERT_LDAP_STORE_SIGN_FLAG = 0x00010000
+ CERT_LDAP_STORE_AREC_EXCLUSIVE_FLAG = 0x00020000
+ CERT_LDAP_STORE_OPENED_FLAG = 0x00040000
+ CERT_LDAP_STORE_UNBIND_FLAG = 0x00080000
+
+ /* addDisposition values for CertAddCertificateContextToStore function */
+ CERT_STORE_ADD_NEW = 1
+ CERT_STORE_ADD_USE_EXISTING = 2
+ CERT_STORE_ADD_REPLACE_EXISTING = 3
+ CERT_STORE_ADD_ALWAYS = 4
+ CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES = 5
+ CERT_STORE_ADD_NEWER = 6
+ CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES = 7
+
+ /* ErrorStatus values for CertTrustStatus struct */
+ CERT_TRUST_NO_ERROR = 0x00000000
+ CERT_TRUST_IS_NOT_TIME_VALID = 0x00000001
+ CERT_TRUST_IS_REVOKED = 0x00000004
+ CERT_TRUST_IS_NOT_SIGNATURE_VALID = 0x00000008
+ CERT_TRUST_IS_NOT_VALID_FOR_USAGE = 0x00000010
+ CERT_TRUST_IS_UNTRUSTED_ROOT = 0x00000020
+ CERT_TRUST_REVOCATION_STATUS_UNKNOWN = 0x00000040
+ CERT_TRUST_IS_CYCLIC = 0x00000080
+ CERT_TRUST_INVALID_EXTENSION = 0x00000100
+ CERT_TRUST_INVALID_POLICY_CONSTRAINTS = 0x00000200
+ CERT_TRUST_INVALID_BASIC_CONSTRAINTS = 0x00000400
+ CERT_TRUST_INVALID_NAME_CONSTRAINTS = 0x00000800
+ CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT = 0x00001000
+ CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT = 0x00002000
+ CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT = 0x00004000
+ CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT = 0x00008000
+ CERT_TRUST_IS_PARTIAL_CHAIN = 0x00010000
+ CERT_TRUST_CTL_IS_NOT_TIME_VALID = 0x00020000
+ CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID = 0x00040000
+ CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE = 0x00080000
+ CERT_TRUST_HAS_WEAK_SIGNATURE = 0x00100000
+ CERT_TRUST_IS_OFFLINE_REVOCATION = 0x01000000
+ CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY = 0x02000000
+ CERT_TRUST_IS_EXPLICIT_DISTRUST = 0x04000000
+ CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT = 0x08000000
+
+ /* InfoStatus values for CertTrustStatus struct */
+ CERT_TRUST_HAS_EXACT_MATCH_ISSUER = 0x00000001
+ CERT_TRUST_HAS_KEY_MATCH_ISSUER = 0x00000002
+ CERT_TRUST_HAS_NAME_MATCH_ISSUER = 0x00000004
+ CERT_TRUST_IS_SELF_SIGNED = 0x00000008
+ CERT_TRUST_HAS_PREFERRED_ISSUER = 0x00000100
+ CERT_TRUST_HAS_ISSUANCE_CHAIN_POLICY = 0x00000400
+ CERT_TRUST_HAS_VALID_NAME_CONSTRAINTS = 0x00000400
+ CERT_TRUST_IS_PEER_TRUSTED = 0x00000800
+ CERT_TRUST_HAS_CRL_VALIDITY_EXTENDED = 0x00001000
+ CERT_TRUST_IS_FROM_EXCLUSIVE_TRUST_STORE = 0x00002000
+ CERT_TRUST_IS_CA_TRUSTED = 0x00004000
+ CERT_TRUST_IS_COMPLEX_CHAIN = 0x00010000
+
+ /* policyOID values for CertVerifyCertificateChainPolicy function */
+ CERT_CHAIN_POLICY_BASE = 1
+ CERT_CHAIN_POLICY_AUTHENTICODE = 2
+ CERT_CHAIN_POLICY_AUTHENTICODE_TS = 3
+ CERT_CHAIN_POLICY_SSL = 4
+ CERT_CHAIN_POLICY_BASIC_CONSTRAINTS = 5
+ CERT_CHAIN_POLICY_NT_AUTH = 6
+ CERT_CHAIN_POLICY_MICROSOFT_ROOT = 7
+ CERT_CHAIN_POLICY_EV = 8
+ CERT_CHAIN_POLICY_SSL_F12 = 9
+
+ /* AuthType values for SSLExtraCertChainPolicyPara struct */
+ AUTHTYPE_CLIENT = 1
+ AUTHTYPE_SERVER = 2
+
+ /* Checks values for SSLExtraCertChainPolicyPara struct */
+ SECURITY_FLAG_IGNORE_REVOCATION = 0x00000080
+ SECURITY_FLAG_IGNORE_UNKNOWN_CA = 0x00000100
+ SECURITY_FLAG_IGNORE_WRONG_USAGE = 0x00000200
+ SECURITY_FLAG_IGNORE_CERT_CN_INVALID = 0x00001000
+ SECURITY_FLAG_IGNORE_CERT_DATE_INVALID = 0x00002000
+)
+
+const (
+ // flags for SetErrorMode
+ SEM_FAILCRITICALERRORS = 0x0001
+ SEM_NOALIGNMENTFAULTEXCEPT = 0x0004
+ SEM_NOGPFAULTERRORBOX = 0x0002
+ SEM_NOOPENFILEERRORBOX = 0x8000
+)
+
+const (
+ // Priority class.
+ ABOVE_NORMAL_PRIORITY_CLASS = 0x00008000
+ BELOW_NORMAL_PRIORITY_CLASS = 0x00004000
+ HIGH_PRIORITY_CLASS = 0x00000080
+ IDLE_PRIORITY_CLASS = 0x00000040
+ NORMAL_PRIORITY_CLASS = 0x00000020
+ PROCESS_MODE_BACKGROUND_BEGIN = 0x00100000
+ PROCESS_MODE_BACKGROUND_END = 0x00200000
+ REALTIME_PRIORITY_CLASS = 0x00000100
+)
+
+var (
+ OID_PKIX_KP_SERVER_AUTH = []byte("1.3.6.1.5.5.7.3.1\x00")
+ OID_SERVER_GATED_CRYPTO = []byte("1.3.6.1.4.1.311.10.3.3\x00")
+ OID_SGC_NETSCAPE = []byte("2.16.840.1.113730.4.1\x00")
+)
+
+// Pointer represents a pointer to an arbitrary Windows type.
+//
+// Pointer-typed fields may point to one of many different types. It's
+// up to the caller to provide a pointer to the appropriate type, cast
+// to Pointer. The caller must obey the unsafe.Pointer rules while
+// doing so.
+type Pointer *struct{}
+
+// Invented values to support what package os expects.
+type Timeval struct {
+ Sec int32
+ Usec int32
+}
+
+func (tv *Timeval) Nanoseconds() int64 {
+ return (int64(tv.Sec)*1e6 + int64(tv.Usec)) * 1e3
+}
+
+func NsecToTimeval(nsec int64) (tv Timeval) {
+ tv.Sec = int32(nsec / 1e9)
+ tv.Usec = int32(nsec % 1e9 / 1e3)
+ return
+}
+
+type Overlapped struct {
+ Internal uintptr
+ InternalHigh uintptr
+ Offset uint32
+ OffsetHigh uint32
+ HEvent Handle
+}
+
+type FileNotifyInformation struct {
+ NextEntryOffset uint32
+ Action uint32
+ FileNameLength uint32
+ FileName uint16
+}
+
+type Filetime struct {
+ LowDateTime uint32
+ HighDateTime uint32
+}
+
+// Nanoseconds returns Filetime ft in nanoseconds
+// since Epoch (00:00:00 UTC, January 1, 1970).
+func (ft *Filetime) Nanoseconds() int64 {
+ // 100-nanosecond intervals since January 1, 1601
+ nsec := int64(ft.HighDateTime)<<32 + int64(ft.LowDateTime)
+ // change starting time to the Epoch (00:00:00 UTC, January 1, 1970)
+ nsec -= 116444736000000000
+ // convert into nanoseconds
+ nsec *= 100
+ return nsec
+}
+
+func NsecToFiletime(nsec int64) (ft Filetime) {
+ // convert into 100-nanosecond
+ nsec /= 100
+ // change starting time to January 1, 1601
+ nsec += 116444736000000000
+ // split into high / low
+ ft.LowDateTime = uint32(nsec & 0xffffffff)
+ ft.HighDateTime = uint32(nsec >> 32 & 0xffffffff)
+ return ft
+}
+
+type Win32finddata struct {
+ FileAttributes uint32
+ CreationTime Filetime
+ LastAccessTime Filetime
+ LastWriteTime Filetime
+ FileSizeHigh uint32
+ FileSizeLow uint32
+ Reserved0 uint32
+ Reserved1 uint32
+ FileName [MAX_PATH - 1]uint16
+ AlternateFileName [13]uint16
+}
+
+// This is the actual system call structure.
+// Win32finddata is what we committed to in Go 1.
+type win32finddata1 struct {
+ FileAttributes uint32
+ CreationTime Filetime
+ LastAccessTime Filetime
+ LastWriteTime Filetime
+ FileSizeHigh uint32
+ FileSizeLow uint32
+ Reserved0 uint32
+ Reserved1 uint32
+ FileName [MAX_PATH]uint16
+ AlternateFileName [14]uint16
+}
+
+func copyFindData(dst *Win32finddata, src *win32finddata1) {
+ dst.FileAttributes = src.FileAttributes
+ dst.CreationTime = src.CreationTime
+ dst.LastAccessTime = src.LastAccessTime
+ dst.LastWriteTime = src.LastWriteTime
+ dst.FileSizeHigh = src.FileSizeHigh
+ dst.FileSizeLow = src.FileSizeLow
+ dst.Reserved0 = src.Reserved0
+ dst.Reserved1 = src.Reserved1
+
+ // The src is 1 element bigger than dst, but it must be NUL.
+ copy(dst.FileName[:], src.FileName[:])
+ copy(dst.AlternateFileName[:], src.AlternateFileName[:])
+}
+
+type ByHandleFileInformation struct {
+ FileAttributes uint32
+ CreationTime Filetime
+ LastAccessTime Filetime
+ LastWriteTime Filetime
+ VolumeSerialNumber uint32
+ FileSizeHigh uint32
+ FileSizeLow uint32
+ NumberOfLinks uint32
+ FileIndexHigh uint32
+ FileIndexLow uint32
+}
+
+const (
+ GetFileExInfoStandard = 0
+ GetFileExMaxInfoLevel = 1
+)
+
+type Win32FileAttributeData struct {
+ FileAttributes uint32
+ CreationTime Filetime
+ LastAccessTime Filetime
+ LastWriteTime Filetime
+ FileSizeHigh uint32
+ FileSizeLow uint32
+}
+
+// ShowWindow constants
+const (
+ // winuser.h
+ SW_HIDE = 0
+ SW_NORMAL = 1
+ SW_SHOWNORMAL = 1
+ SW_SHOWMINIMIZED = 2
+ SW_SHOWMAXIMIZED = 3
+ SW_MAXIMIZE = 3
+ SW_SHOWNOACTIVATE = 4
+ SW_SHOW = 5
+ SW_MINIMIZE = 6
+ SW_SHOWMINNOACTIVE = 7
+ SW_SHOWNA = 8
+ SW_RESTORE = 9
+ SW_SHOWDEFAULT = 10
+ SW_FORCEMINIMIZE = 11
+)
+
+type StartupInfo struct {
+ Cb uint32
+ _ *uint16
+ Desktop *uint16
+ Title *uint16
+ X uint32
+ Y uint32
+ XSize uint32
+ YSize uint32
+ XCountChars uint32
+ YCountChars uint32
+ FillAttribute uint32
+ Flags uint32
+ ShowWindow uint16
+ _ uint16
+ _ *byte
+ StdInput Handle
+ StdOutput Handle
+ StdErr Handle
+}
+
+type ProcessInformation struct {
+ Process Handle
+ Thread Handle
+ ProcessId uint32
+ ThreadId uint32
+}
+
+type ProcessEntry32 struct {
+ Size uint32
+ Usage uint32
+ ProcessID uint32
+ DefaultHeapID uintptr
+ ModuleID uint32
+ Threads uint32
+ ParentProcessID uint32
+ PriClassBase int32
+ Flags uint32
+ ExeFile [MAX_PATH]uint16
+}
+
+type ThreadEntry32 struct {
+ Size uint32
+ Usage uint32
+ ThreadID uint32
+ OwnerProcessID uint32
+ BasePri int32
+ DeltaPri int32
+ Flags uint32
+}
+
+type Systemtime struct {
+ Year uint16
+ Month uint16
+ DayOfWeek uint16
+ Day uint16
+ Hour uint16
+ Minute uint16
+ Second uint16
+ Milliseconds uint16
+}
+
+type Timezoneinformation struct {
+ Bias int32
+ StandardName [32]uint16
+ StandardDate Systemtime
+ StandardBias int32
+ DaylightName [32]uint16
+ DaylightDate Systemtime
+ DaylightBias int32
+}
+
+// Socket related.
+
+const (
+ AF_UNSPEC = 0
+ AF_UNIX = 1
+ AF_INET = 2
+ AF_NETBIOS = 17
+ AF_INET6 = 23
+ AF_IRDA = 26
+ AF_BTH = 32
+
+ SOCK_STREAM = 1
+ SOCK_DGRAM = 2
+ SOCK_RAW = 3
+ SOCK_RDM = 4
+ SOCK_SEQPACKET = 5
+
+ IPPROTO_IP = 0
+ IPPROTO_ICMP = 1
+ IPPROTO_IGMP = 2
+ BTHPROTO_RFCOMM = 3
+ IPPROTO_TCP = 6
+ IPPROTO_UDP = 17
+ IPPROTO_IPV6 = 41
+ IPPROTO_ICMPV6 = 58
+ IPPROTO_RM = 113
+
+ SOL_SOCKET = 0xffff
+ SO_REUSEADDR = 4
+ SO_KEEPALIVE = 8
+ SO_DONTROUTE = 16
+ SO_BROADCAST = 32
+ SO_LINGER = 128
+ SO_RCVBUF = 0x1002
+ SO_RCVTIMEO = 0x1006
+ SO_SNDBUF = 0x1001
+ SO_UPDATE_ACCEPT_CONTEXT = 0x700b
+ SO_UPDATE_CONNECT_CONTEXT = 0x7010
+
+ IOC_OUT = 0x40000000
+ IOC_IN = 0x80000000
+ IOC_VENDOR = 0x18000000
+ IOC_INOUT = IOC_IN | IOC_OUT
+ IOC_WS2 = 0x08000000
+ SIO_GET_EXTENSION_FUNCTION_POINTER = IOC_INOUT | IOC_WS2 | 6
+ SIO_KEEPALIVE_VALS = IOC_IN | IOC_VENDOR | 4
+ SIO_UDP_CONNRESET = IOC_IN | IOC_VENDOR | 12
+
+ // cf. http://support.microsoft.com/default.aspx?scid=kb;en-us;257460
+
+ IP_TOS = 0x3
+ IP_TTL = 0x4
+ IP_MULTICAST_IF = 0x9
+ IP_MULTICAST_TTL = 0xa
+ IP_MULTICAST_LOOP = 0xb
+ IP_ADD_MEMBERSHIP = 0xc
+ IP_DROP_MEMBERSHIP = 0xd
+
+ IPV6_V6ONLY = 0x1b
+ IPV6_UNICAST_HOPS = 0x4
+ IPV6_MULTICAST_IF = 0x9
+ IPV6_MULTICAST_HOPS = 0xa
+ IPV6_MULTICAST_LOOP = 0xb
+ IPV6_JOIN_GROUP = 0xc
+ IPV6_LEAVE_GROUP = 0xd
+
+ MSG_OOB = 0x1
+ MSG_PEEK = 0x2
+ MSG_DONTROUTE = 0x4
+ MSG_WAITALL = 0x8
+
+ MSG_TRUNC = 0x0100
+ MSG_CTRUNC = 0x0200
+ MSG_BCAST = 0x0400
+ MSG_MCAST = 0x0800
+
+ SOMAXCONN = 0x7fffffff
+
+ TCP_NODELAY = 1
+
+ SHUT_RD = 0
+ SHUT_WR = 1
+ SHUT_RDWR = 2
+
+ WSADESCRIPTION_LEN = 256
+ WSASYS_STATUS_LEN = 128
+)
+
+type WSABuf struct {
+ Len uint32
+ Buf *byte
+}
+
+type WSAMsg struct {
+ Name *syscall.RawSockaddrAny
+ Namelen int32
+ Buffers *WSABuf
+ BufferCount uint32
+ Control WSABuf
+ Flags uint32
+}
+
+// Invented values to support what package os expects.
+const (
+ S_IFMT = 0x1f000
+ S_IFIFO = 0x1000
+ S_IFCHR = 0x2000
+ S_IFDIR = 0x4000
+ S_IFBLK = 0x6000
+ S_IFREG = 0x8000
+ S_IFLNK = 0xa000
+ S_IFSOCK = 0xc000
+ S_ISUID = 0x800
+ S_ISGID = 0x400
+ S_ISVTX = 0x200
+ S_IRUSR = 0x100
+ S_IWRITE = 0x80
+ S_IWUSR = 0x80
+ S_IXUSR = 0x40
+)
+
+const (
+ FILE_TYPE_CHAR = 0x0002
+ FILE_TYPE_DISK = 0x0001
+ FILE_TYPE_PIPE = 0x0003
+ FILE_TYPE_REMOTE = 0x8000
+ FILE_TYPE_UNKNOWN = 0x0000
+)
+
+type Hostent struct {
+ Name *byte
+ Aliases **byte
+ AddrType uint16
+ Length uint16
+ AddrList **byte
+}
+
+type Protoent struct {
+ Name *byte
+ Aliases **byte
+ Proto uint16
+}
+
+const (
+ DNS_TYPE_A = 0x0001
+ DNS_TYPE_NS = 0x0002
+ DNS_TYPE_MD = 0x0003
+ DNS_TYPE_MF = 0x0004
+ DNS_TYPE_CNAME = 0x0005
+ DNS_TYPE_SOA = 0x0006
+ DNS_TYPE_MB = 0x0007
+ DNS_TYPE_MG = 0x0008
+ DNS_TYPE_MR = 0x0009
+ DNS_TYPE_NULL = 0x000a
+ DNS_TYPE_WKS = 0x000b
+ DNS_TYPE_PTR = 0x000c
+ DNS_TYPE_HINFO = 0x000d
+ DNS_TYPE_MINFO = 0x000e
+ DNS_TYPE_MX = 0x000f
+ DNS_TYPE_TEXT = 0x0010
+ DNS_TYPE_RP = 0x0011
+ DNS_TYPE_AFSDB = 0x0012
+ DNS_TYPE_X25 = 0x0013
+ DNS_TYPE_ISDN = 0x0014
+ DNS_TYPE_RT = 0x0015
+ DNS_TYPE_NSAP = 0x0016
+ DNS_TYPE_NSAPPTR = 0x0017
+ DNS_TYPE_SIG = 0x0018
+ DNS_TYPE_KEY = 0x0019
+ DNS_TYPE_PX = 0x001a
+ DNS_TYPE_GPOS = 0x001b
+ DNS_TYPE_AAAA = 0x001c
+ DNS_TYPE_LOC = 0x001d
+ DNS_TYPE_NXT = 0x001e
+ DNS_TYPE_EID = 0x001f
+ DNS_TYPE_NIMLOC = 0x0020
+ DNS_TYPE_SRV = 0x0021
+ DNS_TYPE_ATMA = 0x0022
+ DNS_TYPE_NAPTR = 0x0023
+ DNS_TYPE_KX = 0x0024
+ DNS_TYPE_CERT = 0x0025
+ DNS_TYPE_A6 = 0x0026
+ DNS_TYPE_DNAME = 0x0027
+ DNS_TYPE_SINK = 0x0028
+ DNS_TYPE_OPT = 0x0029
+ DNS_TYPE_DS = 0x002B
+ DNS_TYPE_RRSIG = 0x002E
+ DNS_TYPE_NSEC = 0x002F
+ DNS_TYPE_DNSKEY = 0x0030
+ DNS_TYPE_DHCID = 0x0031
+ DNS_TYPE_UINFO = 0x0064
+ DNS_TYPE_UID = 0x0065
+ DNS_TYPE_GID = 0x0066
+ DNS_TYPE_UNSPEC = 0x0067
+ DNS_TYPE_ADDRS = 0x00f8
+ DNS_TYPE_TKEY = 0x00f9
+ DNS_TYPE_TSIG = 0x00fa
+ DNS_TYPE_IXFR = 0x00fb
+ DNS_TYPE_AXFR = 0x00fc
+ DNS_TYPE_MAILB = 0x00fd
+ DNS_TYPE_MAILA = 0x00fe
+ DNS_TYPE_ALL = 0x00ff
+ DNS_TYPE_ANY = 0x00ff
+ DNS_TYPE_WINS = 0xff01
+ DNS_TYPE_WINSR = 0xff02
+ DNS_TYPE_NBSTAT = 0xff01
+)
+
+const (
+ // flags inside DNSRecord.Dw
+ DnsSectionQuestion = 0x0000
+ DnsSectionAnswer = 0x0001
+ DnsSectionAuthority = 0x0002
+ DnsSectionAdditional = 0x0003
+)
+
+type DNSSRVData struct {
+ Target *uint16
+ Priority uint16
+ Weight uint16
+ Port uint16
+ Pad uint16
+}
+
+type DNSPTRData struct {
+ Host *uint16
+}
+
+type DNSMXData struct {
+ NameExchange *uint16
+ Preference uint16
+ Pad uint16
+}
+
+type DNSTXTData struct {
+ StringCount uint16
+ StringArray [1]*uint16
+}
+
+type DNSRecord struct {
+ Next *DNSRecord
+ Name *uint16
+ Type uint16
+ Length uint16
+ Dw uint32
+ Ttl uint32
+ Reserved uint32
+ Data [40]byte
+}
+
+const (
+ TF_DISCONNECT = 1
+ TF_REUSE_SOCKET = 2
+ TF_WRITE_BEHIND = 4
+ TF_USE_DEFAULT_WORKER = 0
+ TF_USE_SYSTEM_THREAD = 16
+ TF_USE_KERNEL_APC = 32
+)
+
+type TransmitFileBuffers struct {
+ Head uintptr
+ HeadLength uint32
+ Tail uintptr
+ TailLength uint32
+}
+
+const (
+ IFF_UP = 1
+ IFF_BROADCAST = 2
+ IFF_LOOPBACK = 4
+ IFF_POINTTOPOINT = 8
+ IFF_MULTICAST = 16
+)
+
+const SIO_GET_INTERFACE_LIST = 0x4004747F
+
+// TODO(mattn): SockaddrGen is union of sockaddr/sockaddr_in/sockaddr_in6_old.
+// will be fixed to change variable type as suitable.
+
+type SockaddrGen [24]byte
+
+type InterfaceInfo struct {
+ Flags uint32
+ Address SockaddrGen
+ BroadcastAddress SockaddrGen
+ Netmask SockaddrGen
+}
+
+type IpAddressString struct {
+ String [16]byte
+}
+
+type IpMaskString IpAddressString
+
+type IpAddrString struct {
+ Next *IpAddrString
+ IpAddress IpAddressString
+ IpMask IpMaskString
+ Context uint32
+}
+
+const MAX_ADAPTER_NAME_LENGTH = 256
+const MAX_ADAPTER_DESCRIPTION_LENGTH = 128
+const MAX_ADAPTER_ADDRESS_LENGTH = 8
+
+type IpAdapterInfo struct {
+ Next *IpAdapterInfo
+ ComboIndex uint32
+ AdapterName [MAX_ADAPTER_NAME_LENGTH + 4]byte
+ Description [MAX_ADAPTER_DESCRIPTION_LENGTH + 4]byte
+ AddressLength uint32
+ Address [MAX_ADAPTER_ADDRESS_LENGTH]byte
+ Index uint32
+ Type uint32
+ DhcpEnabled uint32
+ CurrentIpAddress *IpAddrString
+ IpAddressList IpAddrString
+ GatewayList IpAddrString
+ DhcpServer IpAddrString
+ HaveWins bool
+ PrimaryWinsServer IpAddrString
+ SecondaryWinsServer IpAddrString
+ LeaseObtained int64
+ LeaseExpires int64
+}
+
+const MAXLEN_PHYSADDR = 8
+const MAX_INTERFACE_NAME_LEN = 256
+const MAXLEN_IFDESCR = 256
+
+type MibIfRow struct {
+ Name [MAX_INTERFACE_NAME_LEN]uint16
+ Index uint32
+ Type uint32
+ Mtu uint32
+ Speed uint32
+ PhysAddrLen uint32
+ PhysAddr [MAXLEN_PHYSADDR]byte
+ AdminStatus uint32
+ OperStatus uint32
+ LastChange uint32
+ InOctets uint32
+ InUcastPkts uint32
+ InNUcastPkts uint32
+ InDiscards uint32
+ InErrors uint32
+ InUnknownProtos uint32
+ OutOctets uint32
+ OutUcastPkts uint32
+ OutNUcastPkts uint32
+ OutDiscards uint32
+ OutErrors uint32
+ OutQLen uint32
+ DescrLen uint32
+ Descr [MAXLEN_IFDESCR]byte
+}
+
+type CertInfo struct {
+ // Not implemented
+}
+
+type CertContext struct {
+ EncodingType uint32
+ EncodedCert *byte
+ Length uint32
+ CertInfo *CertInfo
+ Store Handle
+}
+
+type CertChainContext struct {
+ Size uint32
+ TrustStatus CertTrustStatus
+ ChainCount uint32
+ Chains **CertSimpleChain
+ LowerQualityChainCount uint32
+ LowerQualityChains **CertChainContext
+ HasRevocationFreshnessTime uint32
+ RevocationFreshnessTime uint32
+}
+
+type CertTrustListInfo struct {
+ // Not implemented
+}
+
+type CertSimpleChain struct {
+ Size uint32
+ TrustStatus CertTrustStatus
+ NumElements uint32
+ Elements **CertChainElement
+ TrustListInfo *CertTrustListInfo
+ HasRevocationFreshnessTime uint32
+ RevocationFreshnessTime uint32
+}
+
+type CertChainElement struct {
+ Size uint32
+ CertContext *CertContext
+ TrustStatus CertTrustStatus
+ RevocationInfo *CertRevocationInfo
+ IssuanceUsage *CertEnhKeyUsage
+ ApplicationUsage *CertEnhKeyUsage
+ ExtendedErrorInfo *uint16
+}
+
+type CertRevocationCrlInfo struct {
+ // Not implemented
+}
+
+type CertRevocationInfo struct {
+ Size uint32
+ RevocationResult uint32
+ RevocationOid *byte
+ OidSpecificInfo Pointer
+ HasFreshnessTime uint32
+ FreshnessTime uint32
+ CrlInfo *CertRevocationCrlInfo
+}
+
+type CertTrustStatus struct {
+ ErrorStatus uint32
+ InfoStatus uint32
+}
+
+type CertUsageMatch struct {
+ Type uint32
+ Usage CertEnhKeyUsage
+}
+
+type CertEnhKeyUsage struct {
+ Length uint32
+ UsageIdentifiers **byte
+}
+
+type CertChainPara struct {
+ Size uint32
+ RequestedUsage CertUsageMatch
+ RequstedIssuancePolicy CertUsageMatch
+ URLRetrievalTimeout uint32
+ CheckRevocationFreshnessTime uint32
+ RevocationFreshnessTime uint32
+ CacheResync *Filetime
+}
+
+type CertChainPolicyPara struct {
+ Size uint32
+ Flags uint32
+ ExtraPolicyPara Pointer
+}
+
+type SSLExtraCertChainPolicyPara struct {
+ Size uint32
+ AuthType uint32
+ Checks uint32
+ ServerName *uint16
+}
+
+type CertChainPolicyStatus struct {
+ Size uint32
+ Error uint32
+ ChainIndex uint32
+ ElementIndex uint32
+ ExtraPolicyStatus Pointer
+}
+
+const (
+ // do not reorder
+ HKEY_CLASSES_ROOT = 0x80000000 + iota
+ HKEY_CURRENT_USER
+ HKEY_LOCAL_MACHINE
+ HKEY_USERS
+ HKEY_PERFORMANCE_DATA
+ HKEY_CURRENT_CONFIG
+ HKEY_DYN_DATA
+
+ KEY_QUERY_VALUE = 1
+ KEY_SET_VALUE = 2
+ KEY_CREATE_SUB_KEY = 4
+ KEY_ENUMERATE_SUB_KEYS = 8
+ KEY_NOTIFY = 16
+ KEY_CREATE_LINK = 32
+ KEY_WRITE = 0x20006
+ KEY_EXECUTE = 0x20019
+ KEY_READ = 0x20019
+ KEY_WOW64_64KEY = 0x0100
+ KEY_WOW64_32KEY = 0x0200
+ KEY_ALL_ACCESS = 0xf003f
+)
+
+const (
+ // do not reorder
+ REG_NONE = iota
+ REG_SZ
+ REG_EXPAND_SZ
+ REG_BINARY
+ REG_DWORD_LITTLE_ENDIAN
+ REG_DWORD_BIG_ENDIAN
+ REG_LINK
+ REG_MULTI_SZ
+ REG_RESOURCE_LIST
+ REG_FULL_RESOURCE_DESCRIPTOR
+ REG_RESOURCE_REQUIREMENTS_LIST
+ REG_QWORD_LITTLE_ENDIAN
+ REG_DWORD = REG_DWORD_LITTLE_ENDIAN
+ REG_QWORD = REG_QWORD_LITTLE_ENDIAN
+)
+
+const (
+ EVENT_MODIFY_STATE = 0x0002
+ EVENT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3
+
+ MUTANT_QUERY_STATE = 0x0001
+ MUTANT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | MUTANT_QUERY_STATE
+
+ SEMAPHORE_MODIFY_STATE = 0x0002
+ SEMAPHORE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3
+
+ TIMER_QUERY_STATE = 0x0001
+ TIMER_MODIFY_STATE = 0x0002
+ TIMER_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | TIMER_QUERY_STATE | TIMER_MODIFY_STATE
+
+ MUTEX_MODIFY_STATE = MUTANT_QUERY_STATE
+ MUTEX_ALL_ACCESS = MUTANT_ALL_ACCESS
+
+ CREATE_EVENT_MANUAL_RESET = 0x1
+ CREATE_EVENT_INITIAL_SET = 0x2
+ CREATE_MUTEX_INITIAL_OWNER = 0x1
+)
+
+type AddrinfoW struct {
+ Flags int32
+ Family int32
+ Socktype int32
+ Protocol int32
+ Addrlen uintptr
+ Canonname *uint16
+ Addr uintptr
+ Next *AddrinfoW
+}
+
+const (
+ AI_PASSIVE = 1
+ AI_CANONNAME = 2
+ AI_NUMERICHOST = 4
+)
+
+type GUID struct {
+ Data1 uint32
+ Data2 uint16
+ Data3 uint16
+ Data4 [8]byte
+}
+
+var WSAID_CONNECTEX = GUID{
+ 0x25a207b9,
+ 0xddf3,
+ 0x4660,
+ [8]byte{0x8e, 0xe9, 0x76, 0xe5, 0x8c, 0x74, 0x06, 0x3e},
+}
+
+var WSAID_WSASENDMSG = GUID{
+ 0xa441e712,
+ 0x754f,
+ 0x43ca,
+ [8]byte{0x84, 0xa7, 0x0d, 0xee, 0x44, 0xcf, 0x60, 0x6d},
+}
+
+var WSAID_WSARECVMSG = GUID{
+ 0xf689d7c8,
+ 0x6f1f,
+ 0x436b,
+ [8]byte{0x8a, 0x53, 0xe5, 0x4f, 0xe3, 0x51, 0xc3, 0x22},
+}
+
+const (
+ FILE_SKIP_COMPLETION_PORT_ON_SUCCESS = 1
+ FILE_SKIP_SET_EVENT_ON_HANDLE = 2
+)
+
+const (
+ WSAPROTOCOL_LEN = 255
+ MAX_PROTOCOL_CHAIN = 7
+ BASE_PROTOCOL = 1
+ LAYERED_PROTOCOL = 0
+
+ XP1_CONNECTIONLESS = 0x00000001
+ XP1_GUARANTEED_DELIVERY = 0x00000002
+ XP1_GUARANTEED_ORDER = 0x00000004
+ XP1_MESSAGE_ORIENTED = 0x00000008
+ XP1_PSEUDO_STREAM = 0x00000010
+ XP1_GRACEFUL_CLOSE = 0x00000020
+ XP1_EXPEDITED_DATA = 0x00000040
+ XP1_CONNECT_DATA = 0x00000080
+ XP1_DISCONNECT_DATA = 0x00000100
+ XP1_SUPPORT_BROADCAST = 0x00000200
+ XP1_SUPPORT_MULTIPOINT = 0x00000400
+ XP1_MULTIPOINT_CONTROL_PLANE = 0x00000800
+ XP1_MULTIPOINT_DATA_PLANE = 0x00001000
+ XP1_QOS_SUPPORTED = 0x00002000
+ XP1_UNI_SEND = 0x00008000
+ XP1_UNI_RECV = 0x00010000
+ XP1_IFS_HANDLES = 0x00020000
+ XP1_PARTIAL_MESSAGE = 0x00040000
+ XP1_SAN_SUPPORT_SDP = 0x00080000
+
+ PFL_MULTIPLE_PROTO_ENTRIES = 0x00000001
+ PFL_RECOMMENDED_PROTO_ENTRY = 0x00000002
+ PFL_HIDDEN = 0x00000004
+ PFL_MATCHES_PROTOCOL_ZERO = 0x00000008
+ PFL_NETWORKDIRECT_PROVIDER = 0x00000010
+)
+
+type WSAProtocolInfo struct {
+ ServiceFlags1 uint32
+ ServiceFlags2 uint32
+ ServiceFlags3 uint32
+ ServiceFlags4 uint32
+ ProviderFlags uint32
+ ProviderId GUID
+ CatalogEntryId uint32
+ ProtocolChain WSAProtocolChain
+ Version int32
+ AddressFamily int32
+ MaxSockAddr int32
+ MinSockAddr int32
+ SocketType int32
+ Protocol int32
+ ProtocolMaxOffset int32
+ NetworkByteOrder int32
+ SecurityScheme int32
+ MessageSize uint32
+ ProviderReserved uint32
+ ProtocolName [WSAPROTOCOL_LEN + 1]uint16
+}
+
+type WSAProtocolChain struct {
+ ChainLen int32
+ ChainEntries [MAX_PROTOCOL_CHAIN]uint32
+}
+
+type TCPKeepalive struct {
+ OnOff uint32
+ Time uint32
+ Interval uint32
+}
+
+type symbolicLinkReparseBuffer struct {
+ SubstituteNameOffset uint16
+ SubstituteNameLength uint16
+ PrintNameOffset uint16
+ PrintNameLength uint16
+ Flags uint32
+ PathBuffer [1]uint16
+}
+
+type mountPointReparseBuffer struct {
+ SubstituteNameOffset uint16
+ SubstituteNameLength uint16
+ PrintNameOffset uint16
+ PrintNameLength uint16
+ PathBuffer [1]uint16
+}
+
+type reparseDataBuffer struct {
+ ReparseTag uint32
+ ReparseDataLength uint16
+ Reserved uint16
+
+ // GenericReparseBuffer
+ reparseBuffer byte
+}
+
+const (
+ FSCTL_GET_REPARSE_POINT = 0x900A8
+ MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16 * 1024
+ IO_REPARSE_TAG_MOUNT_POINT = 0xA0000003
+ IO_REPARSE_TAG_SYMLINK = 0xA000000C
+ SYMBOLIC_LINK_FLAG_DIRECTORY = 0x1
+)
+
+const (
+ ComputerNameNetBIOS = 0
+ ComputerNameDnsHostname = 1
+ ComputerNameDnsDomain = 2
+ ComputerNameDnsFullyQualified = 3
+ ComputerNamePhysicalNetBIOS = 4
+ ComputerNamePhysicalDnsHostname = 5
+ ComputerNamePhysicalDnsDomain = 6
+ ComputerNamePhysicalDnsFullyQualified = 7
+ ComputerNameMax = 8
+)
+
+// For MessageBox()
+const (
+ MB_OK = 0x00000000
+ MB_OKCANCEL = 0x00000001
+ MB_ABORTRETRYIGNORE = 0x00000002
+ MB_YESNOCANCEL = 0x00000003
+ MB_YESNO = 0x00000004
+ MB_RETRYCANCEL = 0x00000005
+ MB_CANCELTRYCONTINUE = 0x00000006
+ MB_ICONHAND = 0x00000010
+ MB_ICONQUESTION = 0x00000020
+ MB_ICONEXCLAMATION = 0x00000030
+ MB_ICONASTERISK = 0x00000040
+ MB_USERICON = 0x00000080
+ MB_ICONWARNING = MB_ICONEXCLAMATION
+ MB_ICONERROR = MB_ICONHAND
+ MB_ICONINFORMATION = MB_ICONASTERISK
+ MB_ICONSTOP = MB_ICONHAND
+ MB_DEFBUTTON1 = 0x00000000
+ MB_DEFBUTTON2 = 0x00000100
+ MB_DEFBUTTON3 = 0x00000200
+ MB_DEFBUTTON4 = 0x00000300
+ MB_APPLMODAL = 0x00000000
+ MB_SYSTEMMODAL = 0x00001000
+ MB_TASKMODAL = 0x00002000
+ MB_HELP = 0x00004000
+ MB_NOFOCUS = 0x00008000
+ MB_SETFOREGROUND = 0x00010000
+ MB_DEFAULT_DESKTOP_ONLY = 0x00020000
+ MB_TOPMOST = 0x00040000
+ MB_RIGHT = 0x00080000
+ MB_RTLREADING = 0x00100000
+ MB_SERVICE_NOTIFICATION = 0x00200000
+)
+
+const (
+ MOVEFILE_REPLACE_EXISTING = 0x1
+ MOVEFILE_COPY_ALLOWED = 0x2
+ MOVEFILE_DELAY_UNTIL_REBOOT = 0x4
+ MOVEFILE_WRITE_THROUGH = 0x8
+ MOVEFILE_CREATE_HARDLINK = 0x10
+ MOVEFILE_FAIL_IF_NOT_TRACKABLE = 0x20
+)
+
+const GAA_FLAG_INCLUDE_PREFIX = 0x00000010
+
+const (
+ IF_TYPE_OTHER = 1
+ IF_TYPE_ETHERNET_CSMACD = 6
+ IF_TYPE_ISO88025_TOKENRING = 9
+ IF_TYPE_PPP = 23
+ IF_TYPE_SOFTWARE_LOOPBACK = 24
+ IF_TYPE_ATM = 37
+ IF_TYPE_IEEE80211 = 71
+ IF_TYPE_TUNNEL = 131
+ IF_TYPE_IEEE1394 = 144
+)
+
+type SocketAddress struct {
+ Sockaddr *syscall.RawSockaddrAny
+ SockaddrLength int32
+}
+
+// IP returns an IPv4 or IPv6 address, or nil if the underlying SocketAddress is neither.
+func (addr *SocketAddress) IP() net.IP {
+ if uintptr(addr.SockaddrLength) >= unsafe.Sizeof(RawSockaddrInet4{}) && addr.Sockaddr.Addr.Family == AF_INET {
+ return (*RawSockaddrInet4)(unsafe.Pointer(addr.Sockaddr)).Addr[:]
+ } else if uintptr(addr.SockaddrLength) >= unsafe.Sizeof(RawSockaddrInet6{}) && addr.Sockaddr.Addr.Family == AF_INET6 {
+ return (*RawSockaddrInet6)(unsafe.Pointer(addr.Sockaddr)).Addr[:]
+ }
+ return nil
+}
+
+type IpAdapterUnicastAddress struct {
+ Length uint32
+ Flags uint32
+ Next *IpAdapterUnicastAddress
+ Address SocketAddress
+ PrefixOrigin int32
+ SuffixOrigin int32
+ DadState int32
+ ValidLifetime uint32
+ PreferredLifetime uint32
+ LeaseLifetime uint32
+ OnLinkPrefixLength uint8
+}
+
+type IpAdapterAnycastAddress struct {
+ Length uint32
+ Flags uint32
+ Next *IpAdapterAnycastAddress
+ Address SocketAddress
+}
+
+type IpAdapterMulticastAddress struct {
+ Length uint32
+ Flags uint32
+ Next *IpAdapterMulticastAddress
+ Address SocketAddress
+}
+
+type IpAdapterDnsServerAdapter struct {
+ Length uint32
+ Reserved uint32
+ Next *IpAdapterDnsServerAdapter
+ Address SocketAddress
+}
+
+type IpAdapterPrefix struct {
+ Length uint32
+ Flags uint32
+ Next *IpAdapterPrefix
+ Address SocketAddress
+ PrefixLength uint32
+}
+
+type IpAdapterAddresses struct {
+ Length uint32
+ IfIndex uint32
+ Next *IpAdapterAddresses
+ AdapterName *byte
+ FirstUnicastAddress *IpAdapterUnicastAddress
+ FirstAnycastAddress *IpAdapterAnycastAddress
+ FirstMulticastAddress *IpAdapterMulticastAddress
+ FirstDnsServerAddress *IpAdapterDnsServerAdapter
+ DnsSuffix *uint16
+ Description *uint16
+ FriendlyName *uint16
+ PhysicalAddress [syscall.MAX_ADAPTER_ADDRESS_LENGTH]byte
+ PhysicalAddressLength uint32
+ Flags uint32
+ Mtu uint32
+ IfType uint32
+ OperStatus uint32
+ Ipv6IfIndex uint32
+ ZoneIndices [16]uint32
+ FirstPrefix *IpAdapterPrefix
+ /* more fields might be present here. */
+}
+
+const (
+ IfOperStatusUp = 1
+ IfOperStatusDown = 2
+ IfOperStatusTesting = 3
+ IfOperStatusUnknown = 4
+ IfOperStatusDormant = 5
+ IfOperStatusNotPresent = 6
+ IfOperStatusLowerLayerDown = 7
+)
+
+// Console related constants used for the mode parameter to SetConsoleMode. See
+// https://docs.microsoft.com/en-us/windows/console/setconsolemode for details.
+
+const (
+ ENABLE_PROCESSED_INPUT = 0x1
+ ENABLE_LINE_INPUT = 0x2
+ ENABLE_ECHO_INPUT = 0x4
+ ENABLE_WINDOW_INPUT = 0x8
+ ENABLE_MOUSE_INPUT = 0x10
+ ENABLE_INSERT_MODE = 0x20
+ ENABLE_QUICK_EDIT_MODE = 0x40
+ ENABLE_EXTENDED_FLAGS = 0x80
+ ENABLE_AUTO_POSITION = 0x100
+ ENABLE_VIRTUAL_TERMINAL_INPUT = 0x200
+
+ ENABLE_PROCESSED_OUTPUT = 0x1
+ ENABLE_WRAP_AT_EOL_OUTPUT = 0x2
+ ENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x4
+ DISABLE_NEWLINE_AUTO_RETURN = 0x8
+ ENABLE_LVB_GRID_WORLDWIDE = 0x10
+)
+
+type Coord struct {
+ X int16
+ Y int16
+}
+
+type SmallRect struct {
+ Left int16
+ Top int16
+ Right int16
+ Bottom int16
+}
+
+// Used with GetConsoleScreenBuffer to retrieve information about a console
+// screen buffer. See
+// https://docs.microsoft.com/en-us/windows/console/console-screen-buffer-info-str
+// for details.
+
+type ConsoleScreenBufferInfo struct {
+ Size Coord
+ CursorPosition Coord
+ Attributes uint16
+ Window SmallRect
+ MaximumWindowSize Coord
+}
+
+const UNIX_PATH_MAX = 108 // defined in afunix.h
+
+const (
+ // flags for JOBOBJECT_BASIC_LIMIT_INFORMATION.LimitFlags
+ JOB_OBJECT_LIMIT_ACTIVE_PROCESS = 0x00000008
+ JOB_OBJECT_LIMIT_AFFINITY = 0x00000010
+ JOB_OBJECT_LIMIT_BREAKAWAY_OK = 0x00000800
+ JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION = 0x00000400
+ JOB_OBJECT_LIMIT_JOB_MEMORY = 0x00000200
+ JOB_OBJECT_LIMIT_JOB_TIME = 0x00000004
+ JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE = 0x00002000
+ JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME = 0x00000040
+ JOB_OBJECT_LIMIT_PRIORITY_CLASS = 0x00000020
+ JOB_OBJECT_LIMIT_PROCESS_MEMORY = 0x00000100
+ JOB_OBJECT_LIMIT_PROCESS_TIME = 0x00000002
+ JOB_OBJECT_LIMIT_SCHEDULING_CLASS = 0x00000080
+ JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK = 0x00001000
+ JOB_OBJECT_LIMIT_SUBSET_AFFINITY = 0x00004000
+ JOB_OBJECT_LIMIT_WORKINGSET = 0x00000001
+)
+
+type IO_COUNTERS struct {
+ ReadOperationCount uint64
+ WriteOperationCount uint64
+ OtherOperationCount uint64
+ ReadTransferCount uint64
+ WriteTransferCount uint64
+ OtherTransferCount uint64
+}
+
+type JOBOBJECT_EXTENDED_LIMIT_INFORMATION struct {
+ BasicLimitInformation JOBOBJECT_BASIC_LIMIT_INFORMATION
+ IoInfo IO_COUNTERS
+ ProcessMemoryLimit uintptr
+ JobMemoryLimit uintptr
+ PeakProcessMemoryUsed uintptr
+ PeakJobMemoryUsed uintptr
+}
+
+const (
+ // UIRestrictionsClass
+ JOB_OBJECT_UILIMIT_DESKTOP = 0x00000040
+ JOB_OBJECT_UILIMIT_DISPLAYSETTINGS = 0x00000010
+ JOB_OBJECT_UILIMIT_EXITWINDOWS = 0x00000080
+ JOB_OBJECT_UILIMIT_GLOBALATOMS = 0x00000020
+ JOB_OBJECT_UILIMIT_HANDLES = 0x00000001
+ JOB_OBJECT_UILIMIT_READCLIPBOARD = 0x00000002
+ JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS = 0x00000008
+ JOB_OBJECT_UILIMIT_WRITECLIPBOARD = 0x00000004
+)
+
+type JOBOBJECT_BASIC_UI_RESTRICTIONS struct {
+ UIRestrictionsClass uint32
+}
+
+const (
+ // JobObjectInformationClass
+ JobObjectAssociateCompletionPortInformation = 7
+ JobObjectBasicLimitInformation = 2
+ JobObjectBasicUIRestrictions = 4
+ JobObjectCpuRateControlInformation = 15
+ JobObjectEndOfJobTimeInformation = 6
+ JobObjectExtendedLimitInformation = 9
+ JobObjectGroupInformation = 11
+ JobObjectGroupInformationEx = 14
+ JobObjectLimitViolationInformation2 = 35
+ JobObjectNetRateControlInformation = 32
+ JobObjectNotificationLimitInformation = 12
+ JobObjectNotificationLimitInformation2 = 34
+ JobObjectSecurityLimitInformation = 5
+)
+
+const (
+ KF_FLAG_DEFAULT = 0x00000000
+ KF_FLAG_FORCE_APP_DATA_REDIRECTION = 0x00080000
+ KF_FLAG_RETURN_FILTER_REDIRECTION_TARGET = 0x00040000
+ KF_FLAG_FORCE_PACKAGE_REDIRECTION = 0x00020000
+ KF_FLAG_NO_PACKAGE_REDIRECTION = 0x00010000
+ KF_FLAG_FORCE_APPCONTAINER_REDIRECTION = 0x00020000
+ KF_FLAG_NO_APPCONTAINER_REDIRECTION = 0x00010000
+ KF_FLAG_CREATE = 0x00008000
+ KF_FLAG_DONT_VERIFY = 0x00004000
+ KF_FLAG_DONT_UNEXPAND = 0x00002000
+ KF_FLAG_NO_ALIAS = 0x00001000
+ KF_FLAG_INIT = 0x00000800
+ KF_FLAG_DEFAULT_PATH = 0x00000400
+ KF_FLAG_NOT_PARENT_RELATIVE = 0x00000200
+ KF_FLAG_SIMPLE_IDLIST = 0x00000100
+ KF_FLAG_ALIAS_ONLY = 0x80000000
+)
+
+type OsVersionInfoEx struct {
+ osVersionInfoSize uint32
+ MajorVersion uint32
+ MinorVersion uint32
+ BuildNumber uint32
+ PlatformId uint32
+ CsdVersion [128]uint16
+ ServicePackMajor uint16
+ ServicePackMinor uint16
+ SuiteMask uint16
+ ProductType byte
+ _ byte
+}
+
+const (
+ EWX_LOGOFF = 0x00000000
+ EWX_SHUTDOWN = 0x00000001
+ EWX_REBOOT = 0x00000002
+ EWX_FORCE = 0x00000004
+ EWX_POWEROFF = 0x00000008
+ EWX_FORCEIFHUNG = 0x00000010
+ EWX_QUICKRESOLVE = 0x00000020
+ EWX_RESTARTAPPS = 0x00000040
+ EWX_HYBRID_SHUTDOWN = 0x00400000
+ EWX_BOOTOPTIONS = 0x01000000
+
+ SHTDN_REASON_FLAG_COMMENT_REQUIRED = 0x01000000
+ SHTDN_REASON_FLAG_DIRTY_PROBLEM_ID_REQUIRED = 0x02000000
+ SHTDN_REASON_FLAG_CLEAN_UI = 0x04000000
+ SHTDN_REASON_FLAG_DIRTY_UI = 0x08000000
+ SHTDN_REASON_FLAG_USER_DEFINED = 0x40000000
+ SHTDN_REASON_FLAG_PLANNED = 0x80000000
+ SHTDN_REASON_MAJOR_OTHER = 0x00000000
+ SHTDN_REASON_MAJOR_NONE = 0x00000000
+ SHTDN_REASON_MAJOR_HARDWARE = 0x00010000
+ SHTDN_REASON_MAJOR_OPERATINGSYSTEM = 0x00020000
+ SHTDN_REASON_MAJOR_SOFTWARE = 0x00030000
+ SHTDN_REASON_MAJOR_APPLICATION = 0x00040000
+ SHTDN_REASON_MAJOR_SYSTEM = 0x00050000
+ SHTDN_REASON_MAJOR_POWER = 0x00060000
+ SHTDN_REASON_MAJOR_LEGACY_API = 0x00070000
+ SHTDN_REASON_MINOR_OTHER = 0x00000000
+ SHTDN_REASON_MINOR_NONE = 0x000000ff
+ SHTDN_REASON_MINOR_MAINTENANCE = 0x00000001
+ SHTDN_REASON_MINOR_INSTALLATION = 0x00000002
+ SHTDN_REASON_MINOR_UPGRADE = 0x00000003
+ SHTDN_REASON_MINOR_RECONFIG = 0x00000004
+ SHTDN_REASON_MINOR_HUNG = 0x00000005
+ SHTDN_REASON_MINOR_UNSTABLE = 0x00000006
+ SHTDN_REASON_MINOR_DISK = 0x00000007
+ SHTDN_REASON_MINOR_PROCESSOR = 0x00000008
+ SHTDN_REASON_MINOR_NETWORKCARD = 0x00000009
+ SHTDN_REASON_MINOR_POWER_SUPPLY = 0x0000000a
+ SHTDN_REASON_MINOR_CORDUNPLUGGED = 0x0000000b
+ SHTDN_REASON_MINOR_ENVIRONMENT = 0x0000000c
+ SHTDN_REASON_MINOR_HARDWARE_DRIVER = 0x0000000d
+ SHTDN_REASON_MINOR_OTHERDRIVER = 0x0000000e
+ SHTDN_REASON_MINOR_BLUESCREEN = 0x0000000F
+ SHTDN_REASON_MINOR_SERVICEPACK = 0x00000010
+ SHTDN_REASON_MINOR_HOTFIX = 0x00000011
+ SHTDN_REASON_MINOR_SECURITYFIX = 0x00000012
+ SHTDN_REASON_MINOR_SECURITY = 0x00000013
+ SHTDN_REASON_MINOR_NETWORK_CONNECTIVITY = 0x00000014
+ SHTDN_REASON_MINOR_WMI = 0x00000015
+ SHTDN_REASON_MINOR_SERVICEPACK_UNINSTALL = 0x00000016
+ SHTDN_REASON_MINOR_HOTFIX_UNINSTALL = 0x00000017
+ SHTDN_REASON_MINOR_SECURITYFIX_UNINSTALL = 0x00000018
+ SHTDN_REASON_MINOR_MMC = 0x00000019
+ SHTDN_REASON_MINOR_SYSTEMRESTORE = 0x0000001a
+ SHTDN_REASON_MINOR_TERMSRV = 0x00000020
+ SHTDN_REASON_MINOR_DC_PROMOTION = 0x00000021
+ SHTDN_REASON_MINOR_DC_DEMOTION = 0x00000022
+ SHTDN_REASON_UNKNOWN = SHTDN_REASON_MINOR_NONE
+ SHTDN_REASON_LEGACY_API = SHTDN_REASON_MAJOR_LEGACY_API | SHTDN_REASON_FLAG_PLANNED
+ SHTDN_REASON_VALID_BIT_MASK = 0xc0ffffff
+
+ SHUTDOWN_NORETRY = 0x1
+)
+
+// Flags used for GetModuleHandleEx
+const (
+ GET_MODULE_HANDLE_EX_FLAG_PIN = 1
+ GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT = 2
+ GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS = 4
+)
+
+// MUI function flag values
+const (
+ MUI_LANGUAGE_ID = 0x4
+ MUI_LANGUAGE_NAME = 0x8
+ MUI_MERGE_SYSTEM_FALLBACK = 0x10
+ MUI_MERGE_USER_FALLBACK = 0x20
+ MUI_UI_FALLBACK = MUI_MERGE_SYSTEM_FALLBACK | MUI_MERGE_USER_FALLBACK
+ MUI_THREAD_LANGUAGES = 0x40
+ MUI_CONSOLE_FILTER = 0x100
+ MUI_COMPLEX_SCRIPT_FILTER = 0x200
+ MUI_RESET_FILTERS = 0x001
+ MUI_USER_PREFERRED_UI_LANGUAGES = 0x10
+ MUI_USE_INSTALLED_LANGUAGES = 0x20
+ MUI_USE_SEARCH_ALL_LANGUAGES = 0x40
+ MUI_LANG_NEUTRAL_PE_FILE = 0x100
+ MUI_NON_LANG_NEUTRAL_FILE = 0x200
+ MUI_MACHINE_LANGUAGE_SETTINGS = 0x400
+ MUI_FILETYPE_NOT_LANGUAGE_NEUTRAL = 0x001
+ MUI_FILETYPE_LANGUAGE_NEUTRAL_MAIN = 0x002
+ MUI_FILETYPE_LANGUAGE_NEUTRAL_MUI = 0x004
+ MUI_QUERY_TYPE = 0x001
+ MUI_QUERY_CHECKSUM = 0x002
+ MUI_QUERY_LANGUAGE_NAME = 0x004
+ MUI_QUERY_RESOURCE_TYPES = 0x008
+ MUI_FILEINFO_VERSION = 0x001
+
+ MUI_FULL_LANGUAGE = 0x01
+ MUI_PARTIAL_LANGUAGE = 0x02
+ MUI_LIP_LANGUAGE = 0x04
+ MUI_LANGUAGE_INSTALLED = 0x20
+ MUI_LANGUAGE_LICENSED = 0x40
+)
+
+// FILE_INFO_BY_HANDLE_CLASS constants for SetFileInformationByHandle/GetFileInformationByHandleEx
+const (
+ FileBasicInfo = 0
+ FileStandardInfo = 1
+ FileNameInfo = 2
+ FileRenameInfo = 3
+ FileDispositionInfo = 4
+ FileAllocationInfo = 5
+ FileEndOfFileInfo = 6
+ FileStreamInfo = 7
+ FileCompressionInfo = 8
+ FileAttributeTagInfo = 9
+ FileIdBothDirectoryInfo = 10
+ FileIdBothDirectoryRestartInfo = 11
+ FileIoPriorityHintInfo = 12
+ FileRemoteProtocolInfo = 13
+ FileFullDirectoryInfo = 14
+ FileFullDirectoryRestartInfo = 15
+ FileStorageInfo = 16
+ FileAlignmentInfo = 17
+ FileIdInfo = 18
+ FileIdExtdDirectoryInfo = 19
+ FileIdExtdDirectoryRestartInfo = 20
+ FileDispositionInfoEx = 21
+ FileRenameInfoEx = 22
+ FileCaseSensitiveInfo = 23
+ FileNormalizedNameInfo = 24
+)
+
+// LoadLibrary flags for determining from where to search for a DLL
+const (
+ DONT_RESOLVE_DLL_REFERENCES = 0x1
+ LOAD_LIBRARY_AS_DATAFILE = 0x2
+ LOAD_WITH_ALTERED_SEARCH_PATH = 0x8
+ LOAD_IGNORE_CODE_AUTHZ_LEVEL = 0x10
+ LOAD_LIBRARY_AS_IMAGE_RESOURCE = 0x20
+ LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE = 0x40
+ LOAD_LIBRARY_REQUIRE_SIGNED_TARGET = 0x80
+ LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR = 0x100
+ LOAD_LIBRARY_SEARCH_APPLICATION_DIR = 0x200
+ LOAD_LIBRARY_SEARCH_USER_DIRS = 0x400
+ LOAD_LIBRARY_SEARCH_SYSTEM32 = 0x800
+ LOAD_LIBRARY_SEARCH_DEFAULT_DIRS = 0x1000
+ LOAD_LIBRARY_SAFE_CURRENT_DIRS = 0x00002000
+ LOAD_LIBRARY_SEARCH_SYSTEM32_NO_FORWARDER = 0x00004000
+ LOAD_LIBRARY_OS_INTEGRITY_CONTINUITY = 0x00008000
+)
diff --git a/vendor/golang.org/x/sys/windows/types_windows_386.go b/vendor/golang.org/x/sys/windows/types_windows_386.go
new file mode 100644
index 00000000..8bce3e2f
--- /dev/null
+++ b/vendor/golang.org/x/sys/windows/types_windows_386.go
@@ -0,0 +1,35 @@
+// Copyright 2011 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package windows
+
+type WSAData struct {
+ Version uint16
+ HighVersion uint16
+ Description [WSADESCRIPTION_LEN + 1]byte
+ SystemStatus [WSASYS_STATUS_LEN + 1]byte
+ MaxSockets uint16
+ MaxUdpDg uint16
+ VendorInfo *byte
+}
+
+type Servent struct {
+ Name *byte
+ Aliases **byte
+ Port uint16
+ Proto *byte
+}
+
+type JOBOBJECT_BASIC_LIMIT_INFORMATION struct {
+ PerProcessUserTimeLimit int64
+ PerJobUserTimeLimit int64
+ LimitFlags uint32
+ MinimumWorkingSetSize uintptr
+ MaximumWorkingSetSize uintptr
+ ActiveProcessLimit uint32
+ Affinity uintptr
+ PriorityClass uint32
+ SchedulingClass uint32
+ _ uint32 // pad to 8 byte boundary
+}
diff --git a/vendor/golang.org/x/sys/windows/types_windows_amd64.go b/vendor/golang.org/x/sys/windows/types_windows_amd64.go
new file mode 100644
index 00000000..fdddc0c7
--- /dev/null
+++ b/vendor/golang.org/x/sys/windows/types_windows_amd64.go
@@ -0,0 +1,34 @@
+// Copyright 2011 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package windows
+
+type WSAData struct {
+ Version uint16
+ HighVersion uint16
+ MaxSockets uint16
+ MaxUdpDg uint16
+ VendorInfo *byte
+ Description [WSADESCRIPTION_LEN + 1]byte
+ SystemStatus [WSASYS_STATUS_LEN + 1]byte
+}
+
+type Servent struct {
+ Name *byte
+ Aliases **byte
+ Proto *byte
+ Port uint16
+}
+
+type JOBOBJECT_BASIC_LIMIT_INFORMATION struct {
+ PerProcessUserTimeLimit int64
+ PerJobUserTimeLimit int64
+ LimitFlags uint32
+ MinimumWorkingSetSize uintptr
+ MaximumWorkingSetSize uintptr
+ ActiveProcessLimit uint32
+ Affinity uintptr
+ PriorityClass uint32
+ SchedulingClass uint32
+}
diff --git a/vendor/golang.org/x/sys/windows/types_windows_arm.go b/vendor/golang.org/x/sys/windows/types_windows_arm.go
new file mode 100644
index 00000000..321872c3
--- /dev/null
+++ b/vendor/golang.org/x/sys/windows/types_windows_arm.go
@@ -0,0 +1,35 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package windows
+
+type WSAData struct {
+ Version uint16
+ HighVersion uint16
+ Description [WSADESCRIPTION_LEN + 1]byte
+ SystemStatus [WSASYS_STATUS_LEN + 1]byte
+ MaxSockets uint16
+ MaxUdpDg uint16
+ VendorInfo *byte
+}
+
+type Servent struct {
+ Name *byte
+ Aliases **byte
+ Port uint16
+ Proto *byte
+}
+
+type JOBOBJECT_BASIC_LIMIT_INFORMATION struct {
+ PerProcessUserTimeLimit int64
+ PerJobUserTimeLimit int64
+ LimitFlags uint32
+ MinimumWorkingSetSize uintptr
+ MaximumWorkingSetSize uintptr
+ ActiveProcessLimit uint32
+ Affinity uintptr
+ PriorityClass uint32
+ SchedulingClass uint32
+ _ uint32 // pad to 8 byte boundary
+}
diff --git a/vendor/golang.org/x/sys/windows/zerrors_windows.go b/vendor/golang.org/x/sys/windows/zerrors_windows.go
new file mode 100644
index 00000000..f0212003
--- /dev/null
+++ b/vendor/golang.org/x/sys/windows/zerrors_windows.go
@@ -0,0 +1,6853 @@
+// Code generated by 'mkerrors.bash'; DO NOT EDIT.
+
+package windows
+
+import "syscall"
+
+const (
+ FACILITY_NULL = 0
+ FACILITY_RPC = 1
+ FACILITY_DISPATCH = 2
+ FACILITY_STORAGE = 3
+ FACILITY_ITF = 4
+ FACILITY_WIN32 = 7
+ FACILITY_WINDOWS = 8
+ FACILITY_SSPI = 9
+ FACILITY_SECURITY = 9
+ FACILITY_CONTROL = 10
+ FACILITY_CERT = 11
+ FACILITY_INTERNET = 12
+ FACILITY_MEDIASERVER = 13
+ FACILITY_MSMQ = 14
+ FACILITY_SETUPAPI = 15
+ FACILITY_SCARD = 16
+ FACILITY_COMPLUS = 17
+ FACILITY_AAF = 18
+ FACILITY_URT = 19
+ FACILITY_ACS = 20
+ FACILITY_DPLAY = 21
+ FACILITY_UMI = 22
+ FACILITY_SXS = 23
+ FACILITY_WINDOWS_CE = 24
+ FACILITY_HTTP = 25
+ FACILITY_USERMODE_COMMONLOG = 26
+ FACILITY_WER = 27
+ FACILITY_USERMODE_FILTER_MANAGER = 31
+ FACILITY_BACKGROUNDCOPY = 32
+ FACILITY_CONFIGURATION = 33
+ FACILITY_WIA = 33
+ FACILITY_STATE_MANAGEMENT = 34
+ FACILITY_METADIRECTORY = 35
+ FACILITY_WINDOWSUPDATE = 36
+ FACILITY_DIRECTORYSERVICE = 37
+ FACILITY_GRAPHICS = 38
+ FACILITY_SHELL = 39
+ FACILITY_NAP = 39
+ FACILITY_TPM_SERVICES = 40
+ FACILITY_TPM_SOFTWARE = 41
+ FACILITY_UI = 42
+ FACILITY_XAML = 43
+ FACILITY_ACTION_QUEUE = 44
+ FACILITY_PLA = 48
+ FACILITY_WINDOWS_SETUP = 48
+ FACILITY_FVE = 49
+ FACILITY_FWP = 50
+ FACILITY_WINRM = 51
+ FACILITY_NDIS = 52
+ FACILITY_USERMODE_HYPERVISOR = 53
+ FACILITY_CMI = 54
+ FACILITY_USERMODE_VIRTUALIZATION = 55
+ FACILITY_USERMODE_VOLMGR = 56
+ FACILITY_BCD = 57
+ FACILITY_USERMODE_VHD = 58
+ FACILITY_USERMODE_HNS = 59
+ FACILITY_SDIAG = 60
+ FACILITY_WEBSERVICES = 61
+ FACILITY_WINPE = 61
+ FACILITY_WPN = 62
+ FACILITY_WINDOWS_STORE = 63
+ FACILITY_INPUT = 64
+ FACILITY_EAP = 66
+ FACILITY_WINDOWS_DEFENDER = 80
+ FACILITY_OPC = 81
+ FACILITY_XPS = 82
+ FACILITY_MBN = 84
+ FACILITY_POWERSHELL = 84
+ FACILITY_RAS = 83
+ FACILITY_P2P_INT = 98
+ FACILITY_P2P = 99
+ FACILITY_DAF = 100
+ FACILITY_BLUETOOTH_ATT = 101
+ FACILITY_AUDIO = 102
+ FACILITY_STATEREPOSITORY = 103
+ FACILITY_VISUALCPP = 109
+ FACILITY_SCRIPT = 112
+ FACILITY_PARSE = 113
+ FACILITY_BLB = 120
+ FACILITY_BLB_CLI = 121
+ FACILITY_WSBAPP = 122
+ FACILITY_BLBUI = 128
+ FACILITY_USN = 129
+ FACILITY_USERMODE_VOLSNAP = 130
+ FACILITY_TIERING = 131
+ FACILITY_WSB_ONLINE = 133
+ FACILITY_ONLINE_ID = 134
+ FACILITY_DEVICE_UPDATE_AGENT = 135
+ FACILITY_DRVSERVICING = 136
+ FACILITY_DLS = 153
+ FACILITY_DELIVERY_OPTIMIZATION = 208
+ FACILITY_USERMODE_SPACES = 231
+ FACILITY_USER_MODE_SECURITY_CORE = 232
+ FACILITY_USERMODE_LICENSING = 234
+ FACILITY_SOS = 160
+ FACILITY_DEBUGGERS = 176
+ FACILITY_SPP = 256
+ FACILITY_RESTORE = 256
+ FACILITY_DMSERVER = 256
+ FACILITY_DEPLOYMENT_SERVICES_SERVER = 257
+ FACILITY_DEPLOYMENT_SERVICES_IMAGING = 258
+ FACILITY_DEPLOYMENT_SERVICES_MANAGEMENT = 259
+ FACILITY_DEPLOYMENT_SERVICES_UTIL = 260
+ FACILITY_DEPLOYMENT_SERVICES_BINLSVC = 261
+ FACILITY_DEPLOYMENT_SERVICES_PXE = 263
+ FACILITY_DEPLOYMENT_SERVICES_TFTP = 264
+ FACILITY_DEPLOYMENT_SERVICES_TRANSPORT_MANAGEMENT = 272
+ FACILITY_DEPLOYMENT_SERVICES_DRIVER_PROVISIONING = 278
+ FACILITY_DEPLOYMENT_SERVICES_MULTICAST_SERVER = 289
+ FACILITY_DEPLOYMENT_SERVICES_MULTICAST_CLIENT = 290
+ FACILITY_DEPLOYMENT_SERVICES_CONTENT_PROVIDER = 293
+ FACILITY_LINGUISTIC_SERVICES = 305
+ FACILITY_AUDIOSTREAMING = 1094
+ FACILITY_ACCELERATOR = 1536
+ FACILITY_WMAAECMA = 1996
+ FACILITY_DIRECTMUSIC = 2168
+ FACILITY_DIRECT3D10 = 2169
+ FACILITY_DXGI = 2170
+ FACILITY_DXGI_DDI = 2171
+ FACILITY_DIRECT3D11 = 2172
+ FACILITY_DIRECT3D11_DEBUG = 2173
+ FACILITY_DIRECT3D12 = 2174
+ FACILITY_DIRECT3D12_DEBUG = 2175
+ FACILITY_LEAP = 2184
+ FACILITY_AUDCLNT = 2185
+ FACILITY_WINCODEC_DWRITE_DWM = 2200
+ FACILITY_WINML = 2192
+ FACILITY_DIRECT2D = 2201
+ FACILITY_DEFRAG = 2304
+ FACILITY_USERMODE_SDBUS = 2305
+ FACILITY_JSCRIPT = 2306
+ FACILITY_PIDGENX = 2561
+ FACILITY_EAS = 85
+ FACILITY_WEB = 885
+ FACILITY_WEB_SOCKET = 886
+ FACILITY_MOBILE = 1793
+ FACILITY_SQLITE = 1967
+ FACILITY_UTC = 1989
+ FACILITY_WEP = 2049
+ FACILITY_SYNCENGINE = 2050
+ FACILITY_XBOX = 2339
+ FACILITY_PIX = 2748
+ ERROR_SUCCESS syscall.Errno = 0
+ NO_ERROR = 0
+ SEC_E_OK Handle = 0x00000000
+ ERROR_INVALID_FUNCTION syscall.Errno = 1
+ ERROR_FILE_NOT_FOUND syscall.Errno = 2
+ ERROR_PATH_NOT_FOUND syscall.Errno = 3
+ ERROR_TOO_MANY_OPEN_FILES syscall.Errno = 4
+ ERROR_ACCESS_DENIED syscall.Errno = 5
+ ERROR_INVALID_HANDLE syscall.Errno = 6
+ ERROR_ARENA_TRASHED syscall.Errno = 7
+ ERROR_NOT_ENOUGH_MEMORY syscall.Errno = 8
+ ERROR_INVALID_BLOCK syscall.Errno = 9
+ ERROR_BAD_ENVIRONMENT syscall.Errno = 10
+ ERROR_BAD_FORMAT syscall.Errno = 11
+ ERROR_INVALID_ACCESS syscall.Errno = 12
+ ERROR_INVALID_DATA syscall.Errno = 13
+ ERROR_OUTOFMEMORY syscall.Errno = 14
+ ERROR_INVALID_DRIVE syscall.Errno = 15
+ ERROR_CURRENT_DIRECTORY syscall.Errno = 16
+ ERROR_NOT_SAME_DEVICE syscall.Errno = 17
+ ERROR_NO_MORE_FILES syscall.Errno = 18
+ ERROR_WRITE_PROTECT syscall.Errno = 19
+ ERROR_BAD_UNIT syscall.Errno = 20
+ ERROR_NOT_READY syscall.Errno = 21
+ ERROR_BAD_COMMAND syscall.Errno = 22
+ ERROR_CRC syscall.Errno = 23
+ ERROR_BAD_LENGTH syscall.Errno = 24
+ ERROR_SEEK syscall.Errno = 25
+ ERROR_NOT_DOS_DISK syscall.Errno = 26
+ ERROR_SECTOR_NOT_FOUND syscall.Errno = 27
+ ERROR_OUT_OF_PAPER syscall.Errno = 28
+ ERROR_WRITE_FAULT syscall.Errno = 29
+ ERROR_READ_FAULT syscall.Errno = 30
+ ERROR_GEN_FAILURE syscall.Errno = 31
+ ERROR_SHARING_VIOLATION syscall.Errno = 32
+ ERROR_LOCK_VIOLATION syscall.Errno = 33
+ ERROR_WRONG_DISK syscall.Errno = 34
+ ERROR_SHARING_BUFFER_EXCEEDED syscall.Errno = 36
+ ERROR_HANDLE_EOF syscall.Errno = 38
+ ERROR_HANDLE_DISK_FULL syscall.Errno = 39
+ ERROR_NOT_SUPPORTED syscall.Errno = 50
+ ERROR_REM_NOT_LIST syscall.Errno = 51
+ ERROR_DUP_NAME syscall.Errno = 52
+ ERROR_BAD_NETPATH syscall.Errno = 53
+ ERROR_NETWORK_BUSY syscall.Errno = 54
+ ERROR_DEV_NOT_EXIST syscall.Errno = 55
+ ERROR_TOO_MANY_CMDS syscall.Errno = 56
+ ERROR_ADAP_HDW_ERR syscall.Errno = 57
+ ERROR_BAD_NET_RESP syscall.Errno = 58
+ ERROR_UNEXP_NET_ERR syscall.Errno = 59
+ ERROR_BAD_REM_ADAP syscall.Errno = 60
+ ERROR_PRINTQ_FULL syscall.Errno = 61
+ ERROR_NO_SPOOL_SPACE syscall.Errno = 62
+ ERROR_PRINT_CANCELLED syscall.Errno = 63
+ ERROR_NETNAME_DELETED syscall.Errno = 64
+ ERROR_NETWORK_ACCESS_DENIED syscall.Errno = 65
+ ERROR_BAD_DEV_TYPE syscall.Errno = 66
+ ERROR_BAD_NET_NAME syscall.Errno = 67
+ ERROR_TOO_MANY_NAMES syscall.Errno = 68
+ ERROR_TOO_MANY_SESS syscall.Errno = 69
+ ERROR_SHARING_PAUSED syscall.Errno = 70
+ ERROR_REQ_NOT_ACCEP syscall.Errno = 71
+ ERROR_REDIR_PAUSED syscall.Errno = 72
+ ERROR_FILE_EXISTS syscall.Errno = 80
+ ERROR_CANNOT_MAKE syscall.Errno = 82
+ ERROR_FAIL_I24 syscall.Errno = 83
+ ERROR_OUT_OF_STRUCTURES syscall.Errno = 84
+ ERROR_ALREADY_ASSIGNED syscall.Errno = 85
+ ERROR_INVALID_PASSWORD syscall.Errno = 86
+ ERROR_INVALID_PARAMETER syscall.Errno = 87
+ ERROR_NET_WRITE_FAULT syscall.Errno = 88
+ ERROR_NO_PROC_SLOTS syscall.Errno = 89
+ ERROR_TOO_MANY_SEMAPHORES syscall.Errno = 100
+ ERROR_EXCL_SEM_ALREADY_OWNED syscall.Errno = 101
+ ERROR_SEM_IS_SET syscall.Errno = 102
+ ERROR_TOO_MANY_SEM_REQUESTS syscall.Errno = 103
+ ERROR_INVALID_AT_INTERRUPT_TIME syscall.Errno = 104
+ ERROR_SEM_OWNER_DIED syscall.Errno = 105
+ ERROR_SEM_USER_LIMIT syscall.Errno = 106
+ ERROR_DISK_CHANGE syscall.Errno = 107
+ ERROR_DRIVE_LOCKED syscall.Errno = 108
+ ERROR_BROKEN_PIPE syscall.Errno = 109
+ ERROR_OPEN_FAILED syscall.Errno = 110
+ ERROR_BUFFER_OVERFLOW syscall.Errno = 111
+ ERROR_DISK_FULL syscall.Errno = 112
+ ERROR_NO_MORE_SEARCH_HANDLES syscall.Errno = 113
+ ERROR_INVALID_TARGET_HANDLE syscall.Errno = 114
+ ERROR_INVALID_CATEGORY syscall.Errno = 117
+ ERROR_INVALID_VERIFY_SWITCH syscall.Errno = 118
+ ERROR_BAD_DRIVER_LEVEL syscall.Errno = 119
+ ERROR_CALL_NOT_IMPLEMENTED syscall.Errno = 120
+ ERROR_SEM_TIMEOUT syscall.Errno = 121
+ ERROR_INSUFFICIENT_BUFFER syscall.Errno = 122
+ ERROR_INVALID_NAME syscall.Errno = 123
+ ERROR_INVALID_LEVEL syscall.Errno = 124
+ ERROR_NO_VOLUME_LABEL syscall.Errno = 125
+ ERROR_MOD_NOT_FOUND syscall.Errno = 126
+ ERROR_PROC_NOT_FOUND syscall.Errno = 127
+ ERROR_WAIT_NO_CHILDREN syscall.Errno = 128
+ ERROR_CHILD_NOT_COMPLETE syscall.Errno = 129
+ ERROR_DIRECT_ACCESS_HANDLE syscall.Errno = 130
+ ERROR_NEGATIVE_SEEK syscall.Errno = 131
+ ERROR_SEEK_ON_DEVICE syscall.Errno = 132
+ ERROR_IS_JOIN_TARGET syscall.Errno = 133
+ ERROR_IS_JOINED syscall.Errno = 134
+ ERROR_IS_SUBSTED syscall.Errno = 135
+ ERROR_NOT_JOINED syscall.Errno = 136
+ ERROR_NOT_SUBSTED syscall.Errno = 137
+ ERROR_JOIN_TO_JOIN syscall.Errno = 138
+ ERROR_SUBST_TO_SUBST syscall.Errno = 139
+ ERROR_JOIN_TO_SUBST syscall.Errno = 140
+ ERROR_SUBST_TO_JOIN syscall.Errno = 141
+ ERROR_BUSY_DRIVE syscall.Errno = 142
+ ERROR_SAME_DRIVE syscall.Errno = 143
+ ERROR_DIR_NOT_ROOT syscall.Errno = 144
+ ERROR_DIR_NOT_EMPTY syscall.Errno = 145
+ ERROR_IS_SUBST_PATH syscall.Errno = 146
+ ERROR_IS_JOIN_PATH syscall.Errno = 147
+ ERROR_PATH_BUSY syscall.Errno = 148
+ ERROR_IS_SUBST_TARGET syscall.Errno = 149
+ ERROR_SYSTEM_TRACE syscall.Errno = 150
+ ERROR_INVALID_EVENT_COUNT syscall.Errno = 151
+ ERROR_TOO_MANY_MUXWAITERS syscall.Errno = 152
+ ERROR_INVALID_LIST_FORMAT syscall.Errno = 153
+ ERROR_LABEL_TOO_LONG syscall.Errno = 154
+ ERROR_TOO_MANY_TCBS syscall.Errno = 155
+ ERROR_SIGNAL_REFUSED syscall.Errno = 156
+ ERROR_DISCARDED syscall.Errno = 157
+ ERROR_NOT_LOCKED syscall.Errno = 158
+ ERROR_BAD_THREADID_ADDR syscall.Errno = 159
+ ERROR_BAD_ARGUMENTS syscall.Errno = 160
+ ERROR_BAD_PATHNAME syscall.Errno = 161
+ ERROR_SIGNAL_PENDING syscall.Errno = 162
+ ERROR_MAX_THRDS_REACHED syscall.Errno = 164
+ ERROR_LOCK_FAILED syscall.Errno = 167
+ ERROR_BUSY syscall.Errno = 170
+ ERROR_DEVICE_SUPPORT_IN_PROGRESS syscall.Errno = 171
+ ERROR_CANCEL_VIOLATION syscall.Errno = 173
+ ERROR_ATOMIC_LOCKS_NOT_SUPPORTED syscall.Errno = 174
+ ERROR_INVALID_SEGMENT_NUMBER syscall.Errno = 180
+ ERROR_INVALID_ORDINAL syscall.Errno = 182
+ ERROR_ALREADY_EXISTS syscall.Errno = 183
+ ERROR_INVALID_FLAG_NUMBER syscall.Errno = 186
+ ERROR_SEM_NOT_FOUND syscall.Errno = 187
+ ERROR_INVALID_STARTING_CODESEG syscall.Errno = 188
+ ERROR_INVALID_STACKSEG syscall.Errno = 189
+ ERROR_INVALID_MODULETYPE syscall.Errno = 190
+ ERROR_INVALID_EXE_SIGNATURE syscall.Errno = 191
+ ERROR_EXE_MARKED_INVALID syscall.Errno = 192
+ ERROR_BAD_EXE_FORMAT syscall.Errno = 193
+ ERROR_ITERATED_DATA_EXCEEDS_64k syscall.Errno = 194
+ ERROR_INVALID_MINALLOCSIZE syscall.Errno = 195
+ ERROR_DYNLINK_FROM_INVALID_RING syscall.Errno = 196
+ ERROR_IOPL_NOT_ENABLED syscall.Errno = 197
+ ERROR_INVALID_SEGDPL syscall.Errno = 198
+ ERROR_AUTODATASEG_EXCEEDS_64k syscall.Errno = 199
+ ERROR_RING2SEG_MUST_BE_MOVABLE syscall.Errno = 200
+ ERROR_RELOC_CHAIN_XEEDS_SEGLIM syscall.Errno = 201
+ ERROR_INFLOOP_IN_RELOC_CHAIN syscall.Errno = 202
+ ERROR_ENVVAR_NOT_FOUND syscall.Errno = 203
+ ERROR_NO_SIGNAL_SENT syscall.Errno = 205
+ ERROR_FILENAME_EXCED_RANGE syscall.Errno = 206
+ ERROR_RING2_STACK_IN_USE syscall.Errno = 207
+ ERROR_META_EXPANSION_TOO_LONG syscall.Errno = 208
+ ERROR_INVALID_SIGNAL_NUMBER syscall.Errno = 209
+ ERROR_THREAD_1_INACTIVE syscall.Errno = 210
+ ERROR_LOCKED syscall.Errno = 212
+ ERROR_TOO_MANY_MODULES syscall.Errno = 214
+ ERROR_NESTING_NOT_ALLOWED syscall.Errno = 215
+ ERROR_EXE_MACHINE_TYPE_MISMATCH syscall.Errno = 216
+ ERROR_EXE_CANNOT_MODIFY_SIGNED_BINARY syscall.Errno = 217
+ ERROR_EXE_CANNOT_MODIFY_STRONG_SIGNED_BINARY syscall.Errno = 218
+ ERROR_FILE_CHECKED_OUT syscall.Errno = 220
+ ERROR_CHECKOUT_REQUIRED syscall.Errno = 221
+ ERROR_BAD_FILE_TYPE syscall.Errno = 222
+ ERROR_FILE_TOO_LARGE syscall.Errno = 223
+ ERROR_FORMS_AUTH_REQUIRED syscall.Errno = 224
+ ERROR_VIRUS_INFECTED syscall.Errno = 225
+ ERROR_VIRUS_DELETED syscall.Errno = 226
+ ERROR_PIPE_LOCAL syscall.Errno = 229
+ ERROR_BAD_PIPE syscall.Errno = 230
+ ERROR_PIPE_BUSY syscall.Errno = 231
+ ERROR_NO_DATA syscall.Errno = 232
+ ERROR_PIPE_NOT_CONNECTED syscall.Errno = 233
+ ERROR_MORE_DATA syscall.Errno = 234
+ ERROR_NO_WORK_DONE syscall.Errno = 235
+ ERROR_VC_DISCONNECTED syscall.Errno = 240
+ ERROR_INVALID_EA_NAME syscall.Errno = 254
+ ERROR_EA_LIST_INCONSISTENT syscall.Errno = 255
+ WAIT_TIMEOUT syscall.Errno = 258
+ ERROR_NO_MORE_ITEMS syscall.Errno = 259
+ ERROR_CANNOT_COPY syscall.Errno = 266
+ ERROR_DIRECTORY syscall.Errno = 267
+ ERROR_EAS_DIDNT_FIT syscall.Errno = 275
+ ERROR_EA_FILE_CORRUPT syscall.Errno = 276
+ ERROR_EA_TABLE_FULL syscall.Errno = 277
+ ERROR_INVALID_EA_HANDLE syscall.Errno = 278
+ ERROR_EAS_NOT_SUPPORTED syscall.Errno = 282
+ ERROR_NOT_OWNER syscall.Errno = 288
+ ERROR_TOO_MANY_POSTS syscall.Errno = 298
+ ERROR_PARTIAL_COPY syscall.Errno = 299
+ ERROR_OPLOCK_NOT_GRANTED syscall.Errno = 300
+ ERROR_INVALID_OPLOCK_PROTOCOL syscall.Errno = 301
+ ERROR_DISK_TOO_FRAGMENTED syscall.Errno = 302
+ ERROR_DELETE_PENDING syscall.Errno = 303
+ ERROR_INCOMPATIBLE_WITH_GLOBAL_SHORT_NAME_REGISTRY_SETTING syscall.Errno = 304
+ ERROR_SHORT_NAMES_NOT_ENABLED_ON_VOLUME syscall.Errno = 305
+ ERROR_SECURITY_STREAM_IS_INCONSISTENT syscall.Errno = 306
+ ERROR_INVALID_LOCK_RANGE syscall.Errno = 307
+ ERROR_IMAGE_SUBSYSTEM_NOT_PRESENT syscall.Errno = 308
+ ERROR_NOTIFICATION_GUID_ALREADY_DEFINED syscall.Errno = 309
+ ERROR_INVALID_EXCEPTION_HANDLER syscall.Errno = 310
+ ERROR_DUPLICATE_PRIVILEGES syscall.Errno = 311
+ ERROR_NO_RANGES_PROCESSED syscall.Errno = 312
+ ERROR_NOT_ALLOWED_ON_SYSTEM_FILE syscall.Errno = 313
+ ERROR_DISK_RESOURCES_EXHAUSTED syscall.Errno = 314
+ ERROR_INVALID_TOKEN syscall.Errno = 315
+ ERROR_DEVICE_FEATURE_NOT_SUPPORTED syscall.Errno = 316
+ ERROR_MR_MID_NOT_FOUND syscall.Errno = 317
+ ERROR_SCOPE_NOT_FOUND syscall.Errno = 318
+ ERROR_UNDEFINED_SCOPE syscall.Errno = 319
+ ERROR_INVALID_CAP syscall.Errno = 320
+ ERROR_DEVICE_UNREACHABLE syscall.Errno = 321
+ ERROR_DEVICE_NO_RESOURCES syscall.Errno = 322
+ ERROR_DATA_CHECKSUM_ERROR syscall.Errno = 323
+ ERROR_INTERMIXED_KERNEL_EA_OPERATION syscall.Errno = 324
+ ERROR_FILE_LEVEL_TRIM_NOT_SUPPORTED syscall.Errno = 326
+ ERROR_OFFSET_ALIGNMENT_VIOLATION syscall.Errno = 327
+ ERROR_INVALID_FIELD_IN_PARAMETER_LIST syscall.Errno = 328
+ ERROR_OPERATION_IN_PROGRESS syscall.Errno = 329
+ ERROR_BAD_DEVICE_PATH syscall.Errno = 330
+ ERROR_TOO_MANY_DESCRIPTORS syscall.Errno = 331
+ ERROR_SCRUB_DATA_DISABLED syscall.Errno = 332
+ ERROR_NOT_REDUNDANT_STORAGE syscall.Errno = 333
+ ERROR_RESIDENT_FILE_NOT_SUPPORTED syscall.Errno = 334
+ ERROR_COMPRESSED_FILE_NOT_SUPPORTED syscall.Errno = 335
+ ERROR_DIRECTORY_NOT_SUPPORTED syscall.Errno = 336
+ ERROR_NOT_READ_FROM_COPY syscall.Errno = 337
+ ERROR_FT_WRITE_FAILURE syscall.Errno = 338
+ ERROR_FT_DI_SCAN_REQUIRED syscall.Errno = 339
+ ERROR_INVALID_KERNEL_INFO_VERSION syscall.Errno = 340
+ ERROR_INVALID_PEP_INFO_VERSION syscall.Errno = 341
+ ERROR_OBJECT_NOT_EXTERNALLY_BACKED syscall.Errno = 342
+ ERROR_EXTERNAL_BACKING_PROVIDER_UNKNOWN syscall.Errno = 343
+ ERROR_COMPRESSION_NOT_BENEFICIAL syscall.Errno = 344
+ ERROR_STORAGE_TOPOLOGY_ID_MISMATCH syscall.Errno = 345
+ ERROR_BLOCKED_BY_PARENTAL_CONTROLS syscall.Errno = 346
+ ERROR_BLOCK_TOO_MANY_REFERENCES syscall.Errno = 347
+ ERROR_MARKED_TO_DISALLOW_WRITES syscall.Errno = 348
+ ERROR_ENCLAVE_FAILURE syscall.Errno = 349
+ ERROR_FAIL_NOACTION_REBOOT syscall.Errno = 350
+ ERROR_FAIL_SHUTDOWN syscall.Errno = 351
+ ERROR_FAIL_RESTART syscall.Errno = 352
+ ERROR_MAX_SESSIONS_REACHED syscall.Errno = 353
+ ERROR_NETWORK_ACCESS_DENIED_EDP syscall.Errno = 354
+ ERROR_DEVICE_HINT_NAME_BUFFER_TOO_SMALL syscall.Errno = 355
+ ERROR_EDP_POLICY_DENIES_OPERATION syscall.Errno = 356
+ ERROR_EDP_DPL_POLICY_CANT_BE_SATISFIED syscall.Errno = 357
+ ERROR_CLOUD_FILE_SYNC_ROOT_METADATA_CORRUPT syscall.Errno = 358
+ ERROR_DEVICE_IN_MAINTENANCE syscall.Errno = 359
+ ERROR_NOT_SUPPORTED_ON_DAX syscall.Errno = 360
+ ERROR_DAX_MAPPING_EXISTS syscall.Errno = 361
+ ERROR_CLOUD_FILE_PROVIDER_NOT_RUNNING syscall.Errno = 362
+ ERROR_CLOUD_FILE_METADATA_CORRUPT syscall.Errno = 363
+ ERROR_CLOUD_FILE_METADATA_TOO_LARGE syscall.Errno = 364
+ ERROR_CLOUD_FILE_PROPERTY_BLOB_TOO_LARGE syscall.Errno = 365
+ ERROR_CLOUD_FILE_PROPERTY_BLOB_CHECKSUM_MISMATCH syscall.Errno = 366
+ ERROR_CHILD_PROCESS_BLOCKED syscall.Errno = 367
+ ERROR_STORAGE_LOST_DATA_PERSISTENCE syscall.Errno = 368
+ ERROR_FILE_SYSTEM_VIRTUALIZATION_UNAVAILABLE syscall.Errno = 369
+ ERROR_FILE_SYSTEM_VIRTUALIZATION_METADATA_CORRUPT syscall.Errno = 370
+ ERROR_FILE_SYSTEM_VIRTUALIZATION_BUSY syscall.Errno = 371
+ ERROR_FILE_SYSTEM_VIRTUALIZATION_PROVIDER_UNKNOWN syscall.Errno = 372
+ ERROR_GDI_HANDLE_LEAK syscall.Errno = 373
+ ERROR_CLOUD_FILE_TOO_MANY_PROPERTY_BLOBS syscall.Errno = 374
+ ERROR_CLOUD_FILE_PROPERTY_VERSION_NOT_SUPPORTED syscall.Errno = 375
+ ERROR_NOT_A_CLOUD_FILE syscall.Errno = 376
+ ERROR_CLOUD_FILE_NOT_IN_SYNC syscall.Errno = 377
+ ERROR_CLOUD_FILE_ALREADY_CONNECTED syscall.Errno = 378
+ ERROR_CLOUD_FILE_NOT_SUPPORTED syscall.Errno = 379
+ ERROR_CLOUD_FILE_INVALID_REQUEST syscall.Errno = 380
+ ERROR_CLOUD_FILE_READ_ONLY_VOLUME syscall.Errno = 381
+ ERROR_CLOUD_FILE_CONNECTED_PROVIDER_ONLY syscall.Errno = 382
+ ERROR_CLOUD_FILE_VALIDATION_FAILED syscall.Errno = 383
+ ERROR_SMB1_NOT_AVAILABLE syscall.Errno = 384
+ ERROR_FILE_SYSTEM_VIRTUALIZATION_INVALID_OPERATION syscall.Errno = 385
+ ERROR_CLOUD_FILE_AUTHENTICATION_FAILED syscall.Errno = 386
+ ERROR_CLOUD_FILE_INSUFFICIENT_RESOURCES syscall.Errno = 387
+ ERROR_CLOUD_FILE_NETWORK_UNAVAILABLE syscall.Errno = 388
+ ERROR_CLOUD_FILE_UNSUCCESSFUL syscall.Errno = 389
+ ERROR_CLOUD_FILE_NOT_UNDER_SYNC_ROOT syscall.Errno = 390
+ ERROR_CLOUD_FILE_IN_USE syscall.Errno = 391
+ ERROR_CLOUD_FILE_PINNED syscall.Errno = 392
+ ERROR_CLOUD_FILE_REQUEST_ABORTED syscall.Errno = 393
+ ERROR_CLOUD_FILE_PROPERTY_CORRUPT syscall.Errno = 394
+ ERROR_CLOUD_FILE_ACCESS_DENIED syscall.Errno = 395
+ ERROR_CLOUD_FILE_INCOMPATIBLE_HARDLINKS syscall.Errno = 396
+ ERROR_CLOUD_FILE_PROPERTY_LOCK_CONFLICT syscall.Errno = 397
+ ERROR_CLOUD_FILE_REQUEST_CANCELED syscall.Errno = 398
+ ERROR_EXTERNAL_SYSKEY_NOT_SUPPORTED syscall.Errno = 399
+ ERROR_THREAD_MODE_ALREADY_BACKGROUND syscall.Errno = 400
+ ERROR_THREAD_MODE_NOT_BACKGROUND syscall.Errno = 401
+ ERROR_PROCESS_MODE_ALREADY_BACKGROUND syscall.Errno = 402
+ ERROR_PROCESS_MODE_NOT_BACKGROUND syscall.Errno = 403
+ ERROR_CLOUD_FILE_PROVIDER_TERMINATED syscall.Errno = 404
+ ERROR_NOT_A_CLOUD_SYNC_ROOT syscall.Errno = 405
+ ERROR_FILE_PROTECTED_UNDER_DPL syscall.Errno = 406
+ ERROR_VOLUME_NOT_CLUSTER_ALIGNED syscall.Errno = 407
+ ERROR_NO_PHYSICALLY_ALIGNED_FREE_SPACE_FOUND syscall.Errno = 408
+ ERROR_APPX_FILE_NOT_ENCRYPTED syscall.Errno = 409
+ ERROR_RWRAW_ENCRYPTED_FILE_NOT_ENCRYPTED syscall.Errno = 410
+ ERROR_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILEOFFSET syscall.Errno = 411
+ ERROR_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILERANGE syscall.Errno = 412
+ ERROR_RWRAW_ENCRYPTED_INVALID_EDATAINFO_PARAMETER syscall.Errno = 413
+ ERROR_LINUX_SUBSYSTEM_NOT_PRESENT syscall.Errno = 414
+ ERROR_FT_READ_FAILURE syscall.Errno = 415
+ ERROR_STORAGE_RESERVE_ID_INVALID syscall.Errno = 416
+ ERROR_STORAGE_RESERVE_DOES_NOT_EXIST syscall.Errno = 417
+ ERROR_STORAGE_RESERVE_ALREADY_EXISTS syscall.Errno = 418
+ ERROR_STORAGE_RESERVE_NOT_EMPTY syscall.Errno = 419
+ ERROR_NOT_A_DAX_VOLUME syscall.Errno = 420
+ ERROR_NOT_DAX_MAPPABLE syscall.Errno = 421
+ ERROR_TIME_CRITICAL_THREAD syscall.Errno = 422
+ ERROR_DPL_NOT_SUPPORTED_FOR_USER syscall.Errno = 423
+ ERROR_CASE_DIFFERING_NAMES_IN_DIR syscall.Errno = 424
+ ERROR_CAPAUTHZ_NOT_DEVUNLOCKED syscall.Errno = 450
+ ERROR_CAPAUTHZ_CHANGE_TYPE syscall.Errno = 451
+ ERROR_CAPAUTHZ_NOT_PROVISIONED syscall.Errno = 452
+ ERROR_CAPAUTHZ_NOT_AUTHORIZED syscall.Errno = 453
+ ERROR_CAPAUTHZ_NO_POLICY syscall.Errno = 454
+ ERROR_CAPAUTHZ_DB_CORRUPTED syscall.Errno = 455
+ ERROR_CAPAUTHZ_SCCD_INVALID_CATALOG syscall.Errno = 456
+ ERROR_CAPAUTHZ_SCCD_NO_AUTH_ENTITY syscall.Errno = 457
+ ERROR_CAPAUTHZ_SCCD_PARSE_ERROR syscall.Errno = 458
+ ERROR_CAPAUTHZ_SCCD_DEV_MODE_REQUIRED syscall.Errno = 459
+ ERROR_CAPAUTHZ_SCCD_NO_CAPABILITY_MATCH syscall.Errno = 460
+ ERROR_PNP_QUERY_REMOVE_DEVICE_TIMEOUT syscall.Errno = 480
+ ERROR_PNP_QUERY_REMOVE_RELATED_DEVICE_TIMEOUT syscall.Errno = 481
+ ERROR_PNP_QUERY_REMOVE_UNRELATED_DEVICE_TIMEOUT syscall.Errno = 482
+ ERROR_DEVICE_HARDWARE_ERROR syscall.Errno = 483
+ ERROR_INVALID_ADDRESS syscall.Errno = 487
+ ERROR_VRF_CFG_ENABLED syscall.Errno = 1183
+ ERROR_PARTITION_TERMINATING syscall.Errno = 1184
+ ERROR_USER_PROFILE_LOAD syscall.Errno = 500
+ ERROR_ARITHMETIC_OVERFLOW syscall.Errno = 534
+ ERROR_PIPE_CONNECTED syscall.Errno = 535
+ ERROR_PIPE_LISTENING syscall.Errno = 536
+ ERROR_VERIFIER_STOP syscall.Errno = 537
+ ERROR_ABIOS_ERROR syscall.Errno = 538
+ ERROR_WX86_WARNING syscall.Errno = 539
+ ERROR_WX86_ERROR syscall.Errno = 540
+ ERROR_TIMER_NOT_CANCELED syscall.Errno = 541
+ ERROR_UNWIND syscall.Errno = 542
+ ERROR_BAD_STACK syscall.Errno = 543
+ ERROR_INVALID_UNWIND_TARGET syscall.Errno = 544
+ ERROR_INVALID_PORT_ATTRIBUTES syscall.Errno = 545
+ ERROR_PORT_MESSAGE_TOO_LONG syscall.Errno = 546
+ ERROR_INVALID_QUOTA_LOWER syscall.Errno = 547
+ ERROR_DEVICE_ALREADY_ATTACHED syscall.Errno = 548
+ ERROR_INSTRUCTION_MISALIGNMENT syscall.Errno = 549
+ ERROR_PROFILING_NOT_STARTED syscall.Errno = 550
+ ERROR_PROFILING_NOT_STOPPED syscall.Errno = 551
+ ERROR_COULD_NOT_INTERPRET syscall.Errno = 552
+ ERROR_PROFILING_AT_LIMIT syscall.Errno = 553
+ ERROR_CANT_WAIT syscall.Errno = 554
+ ERROR_CANT_TERMINATE_SELF syscall.Errno = 555
+ ERROR_UNEXPECTED_MM_CREATE_ERR syscall.Errno = 556
+ ERROR_UNEXPECTED_MM_MAP_ERROR syscall.Errno = 557
+ ERROR_UNEXPECTED_MM_EXTEND_ERR syscall.Errno = 558
+ ERROR_BAD_FUNCTION_TABLE syscall.Errno = 559
+ ERROR_NO_GUID_TRANSLATION syscall.Errno = 560
+ ERROR_INVALID_LDT_SIZE syscall.Errno = 561
+ ERROR_INVALID_LDT_OFFSET syscall.Errno = 563
+ ERROR_INVALID_LDT_DESCRIPTOR syscall.Errno = 564
+ ERROR_TOO_MANY_THREADS syscall.Errno = 565
+ ERROR_THREAD_NOT_IN_PROCESS syscall.Errno = 566
+ ERROR_PAGEFILE_QUOTA_EXCEEDED syscall.Errno = 567
+ ERROR_LOGON_SERVER_CONFLICT syscall.Errno = 568
+ ERROR_SYNCHRONIZATION_REQUIRED syscall.Errno = 569
+ ERROR_NET_OPEN_FAILED syscall.Errno = 570
+ ERROR_IO_PRIVILEGE_FAILED syscall.Errno = 571
+ ERROR_CONTROL_C_EXIT syscall.Errno = 572
+ ERROR_MISSING_SYSTEMFILE syscall.Errno = 573
+ ERROR_UNHANDLED_EXCEPTION syscall.Errno = 574
+ ERROR_APP_INIT_FAILURE syscall.Errno = 575
+ ERROR_PAGEFILE_CREATE_FAILED syscall.Errno = 576
+ ERROR_INVALID_IMAGE_HASH syscall.Errno = 577
+ ERROR_NO_PAGEFILE syscall.Errno = 578
+ ERROR_ILLEGAL_FLOAT_CONTEXT syscall.Errno = 579
+ ERROR_NO_EVENT_PAIR syscall.Errno = 580
+ ERROR_DOMAIN_CTRLR_CONFIG_ERROR syscall.Errno = 581
+ ERROR_ILLEGAL_CHARACTER syscall.Errno = 582
+ ERROR_UNDEFINED_CHARACTER syscall.Errno = 583
+ ERROR_FLOPPY_VOLUME syscall.Errno = 584
+ ERROR_BIOS_FAILED_TO_CONNECT_INTERRUPT syscall.Errno = 585
+ ERROR_BACKUP_CONTROLLER syscall.Errno = 586
+ ERROR_MUTANT_LIMIT_EXCEEDED syscall.Errno = 587
+ ERROR_FS_DRIVER_REQUIRED syscall.Errno = 588
+ ERROR_CANNOT_LOAD_REGISTRY_FILE syscall.Errno = 589
+ ERROR_DEBUG_ATTACH_FAILED syscall.Errno = 590
+ ERROR_SYSTEM_PROCESS_TERMINATED syscall.Errno = 591
+ ERROR_DATA_NOT_ACCEPTED syscall.Errno = 592
+ ERROR_VDM_HARD_ERROR syscall.Errno = 593
+ ERROR_DRIVER_CANCEL_TIMEOUT syscall.Errno = 594
+ ERROR_REPLY_MESSAGE_MISMATCH syscall.Errno = 595
+ ERROR_LOST_WRITEBEHIND_DATA syscall.Errno = 596
+ ERROR_CLIENT_SERVER_PARAMETERS_INVALID syscall.Errno = 597
+ ERROR_NOT_TINY_STREAM syscall.Errno = 598
+ ERROR_STACK_OVERFLOW_READ syscall.Errno = 599
+ ERROR_CONVERT_TO_LARGE syscall.Errno = 600
+ ERROR_FOUND_OUT_OF_SCOPE syscall.Errno = 601
+ ERROR_ALLOCATE_BUCKET syscall.Errno = 602
+ ERROR_MARSHALL_OVERFLOW syscall.Errno = 603
+ ERROR_INVALID_VARIANT syscall.Errno = 604
+ ERROR_BAD_COMPRESSION_BUFFER syscall.Errno = 605
+ ERROR_AUDIT_FAILED syscall.Errno = 606
+ ERROR_TIMER_RESOLUTION_NOT_SET syscall.Errno = 607
+ ERROR_INSUFFICIENT_LOGON_INFO syscall.Errno = 608
+ ERROR_BAD_DLL_ENTRYPOINT syscall.Errno = 609
+ ERROR_BAD_SERVICE_ENTRYPOINT syscall.Errno = 610
+ ERROR_IP_ADDRESS_CONFLICT1 syscall.Errno = 611
+ ERROR_IP_ADDRESS_CONFLICT2 syscall.Errno = 612
+ ERROR_REGISTRY_QUOTA_LIMIT syscall.Errno = 613
+ ERROR_NO_CALLBACK_ACTIVE syscall.Errno = 614
+ ERROR_PWD_TOO_SHORT syscall.Errno = 615
+ ERROR_PWD_TOO_RECENT syscall.Errno = 616
+ ERROR_PWD_HISTORY_CONFLICT syscall.Errno = 617
+ ERROR_UNSUPPORTED_COMPRESSION syscall.Errno = 618
+ ERROR_INVALID_HW_PROFILE syscall.Errno = 619
+ ERROR_INVALID_PLUGPLAY_DEVICE_PATH syscall.Errno = 620
+ ERROR_QUOTA_LIST_INCONSISTENT syscall.Errno = 621
+ ERROR_EVALUATION_EXPIRATION syscall.Errno = 622
+ ERROR_ILLEGAL_DLL_RELOCATION syscall.Errno = 623
+ ERROR_DLL_INIT_FAILED_LOGOFF syscall.Errno = 624
+ ERROR_VALIDATE_CONTINUE syscall.Errno = 625
+ ERROR_NO_MORE_MATCHES syscall.Errno = 626
+ ERROR_RANGE_LIST_CONFLICT syscall.Errno = 627
+ ERROR_SERVER_SID_MISMATCH syscall.Errno = 628
+ ERROR_CANT_ENABLE_DENY_ONLY syscall.Errno = 629
+ ERROR_FLOAT_MULTIPLE_FAULTS syscall.Errno = 630
+ ERROR_FLOAT_MULTIPLE_TRAPS syscall.Errno = 631
+ ERROR_NOINTERFACE syscall.Errno = 632
+ ERROR_DRIVER_FAILED_SLEEP syscall.Errno = 633
+ ERROR_CORRUPT_SYSTEM_FILE syscall.Errno = 634
+ ERROR_COMMITMENT_MINIMUM syscall.Errno = 635
+ ERROR_PNP_RESTART_ENUMERATION syscall.Errno = 636
+ ERROR_SYSTEM_IMAGE_BAD_SIGNATURE syscall.Errno = 637
+ ERROR_PNP_REBOOT_REQUIRED syscall.Errno = 638
+ ERROR_INSUFFICIENT_POWER syscall.Errno = 639
+ ERROR_MULTIPLE_FAULT_VIOLATION syscall.Errno = 640
+ ERROR_SYSTEM_SHUTDOWN syscall.Errno = 641
+ ERROR_PORT_NOT_SET syscall.Errno = 642
+ ERROR_DS_VERSION_CHECK_FAILURE syscall.Errno = 643
+ ERROR_RANGE_NOT_FOUND syscall.Errno = 644
+ ERROR_NOT_SAFE_MODE_DRIVER syscall.Errno = 646
+ ERROR_FAILED_DRIVER_ENTRY syscall.Errno = 647
+ ERROR_DEVICE_ENUMERATION_ERROR syscall.Errno = 648
+ ERROR_MOUNT_POINT_NOT_RESOLVED syscall.Errno = 649
+ ERROR_INVALID_DEVICE_OBJECT_PARAMETER syscall.Errno = 650
+ ERROR_MCA_OCCURED syscall.Errno = 651
+ ERROR_DRIVER_DATABASE_ERROR syscall.Errno = 652
+ ERROR_SYSTEM_HIVE_TOO_LARGE syscall.Errno = 653
+ ERROR_DRIVER_FAILED_PRIOR_UNLOAD syscall.Errno = 654
+ ERROR_VOLSNAP_PREPARE_HIBERNATE syscall.Errno = 655
+ ERROR_HIBERNATION_FAILURE syscall.Errno = 656
+ ERROR_PWD_TOO_LONG syscall.Errno = 657
+ ERROR_FILE_SYSTEM_LIMITATION syscall.Errno = 665
+ ERROR_ASSERTION_FAILURE syscall.Errno = 668
+ ERROR_ACPI_ERROR syscall.Errno = 669
+ ERROR_WOW_ASSERTION syscall.Errno = 670
+ ERROR_PNP_BAD_MPS_TABLE syscall.Errno = 671
+ ERROR_PNP_TRANSLATION_FAILED syscall.Errno = 672
+ ERROR_PNP_IRQ_TRANSLATION_FAILED syscall.Errno = 673
+ ERROR_PNP_INVALID_ID syscall.Errno = 674
+ ERROR_WAKE_SYSTEM_DEBUGGER syscall.Errno = 675
+ ERROR_HANDLES_CLOSED syscall.Errno = 676
+ ERROR_EXTRANEOUS_INFORMATION syscall.Errno = 677
+ ERROR_RXACT_COMMIT_NECESSARY syscall.Errno = 678
+ ERROR_MEDIA_CHECK syscall.Errno = 679
+ ERROR_GUID_SUBSTITUTION_MADE syscall.Errno = 680
+ ERROR_STOPPED_ON_SYMLINK syscall.Errno = 681
+ ERROR_LONGJUMP syscall.Errno = 682
+ ERROR_PLUGPLAY_QUERY_VETOED syscall.Errno = 683
+ ERROR_UNWIND_CONSOLIDATE syscall.Errno = 684
+ ERROR_REGISTRY_HIVE_RECOVERED syscall.Errno = 685
+ ERROR_DLL_MIGHT_BE_INSECURE syscall.Errno = 686
+ ERROR_DLL_MIGHT_BE_INCOMPATIBLE syscall.Errno = 687
+ ERROR_DBG_EXCEPTION_NOT_HANDLED syscall.Errno = 688
+ ERROR_DBG_REPLY_LATER syscall.Errno = 689
+ ERROR_DBG_UNABLE_TO_PROVIDE_HANDLE syscall.Errno = 690
+ ERROR_DBG_TERMINATE_THREAD syscall.Errno = 691
+ ERROR_DBG_TERMINATE_PROCESS syscall.Errno = 692
+ ERROR_DBG_CONTROL_C syscall.Errno = 693
+ ERROR_DBG_PRINTEXCEPTION_C syscall.Errno = 694
+ ERROR_DBG_RIPEXCEPTION syscall.Errno = 695
+ ERROR_DBG_CONTROL_BREAK syscall.Errno = 696
+ ERROR_DBG_COMMAND_EXCEPTION syscall.Errno = 697
+ ERROR_OBJECT_NAME_EXISTS syscall.Errno = 698
+ ERROR_THREAD_WAS_SUSPENDED syscall.Errno = 699
+ ERROR_IMAGE_NOT_AT_BASE syscall.Errno = 700
+ ERROR_RXACT_STATE_CREATED syscall.Errno = 701
+ ERROR_SEGMENT_NOTIFICATION syscall.Errno = 702
+ ERROR_BAD_CURRENT_DIRECTORY syscall.Errno = 703
+ ERROR_FT_READ_RECOVERY_FROM_BACKUP syscall.Errno = 704
+ ERROR_FT_WRITE_RECOVERY syscall.Errno = 705
+ ERROR_IMAGE_MACHINE_TYPE_MISMATCH syscall.Errno = 706
+ ERROR_RECEIVE_PARTIAL syscall.Errno = 707
+ ERROR_RECEIVE_EXPEDITED syscall.Errno = 708
+ ERROR_RECEIVE_PARTIAL_EXPEDITED syscall.Errno = 709
+ ERROR_EVENT_DONE syscall.Errno = 710
+ ERROR_EVENT_PENDING syscall.Errno = 711
+ ERROR_CHECKING_FILE_SYSTEM syscall.Errno = 712
+ ERROR_FATAL_APP_EXIT syscall.Errno = 713
+ ERROR_PREDEFINED_HANDLE syscall.Errno = 714
+ ERROR_WAS_UNLOCKED syscall.Errno = 715
+ ERROR_SERVICE_NOTIFICATION syscall.Errno = 716
+ ERROR_WAS_LOCKED syscall.Errno = 717
+ ERROR_LOG_HARD_ERROR syscall.Errno = 718
+ ERROR_ALREADY_WIN32 syscall.Errno = 719
+ ERROR_IMAGE_MACHINE_TYPE_MISMATCH_EXE syscall.Errno = 720
+ ERROR_NO_YIELD_PERFORMED syscall.Errno = 721
+ ERROR_TIMER_RESUME_IGNORED syscall.Errno = 722
+ ERROR_ARBITRATION_UNHANDLED syscall.Errno = 723
+ ERROR_CARDBUS_NOT_SUPPORTED syscall.Errno = 724
+ ERROR_MP_PROCESSOR_MISMATCH syscall.Errno = 725
+ ERROR_HIBERNATED syscall.Errno = 726
+ ERROR_RESUME_HIBERNATION syscall.Errno = 727
+ ERROR_FIRMWARE_UPDATED syscall.Errno = 728
+ ERROR_DRIVERS_LEAKING_LOCKED_PAGES syscall.Errno = 729
+ ERROR_WAKE_SYSTEM syscall.Errno = 730
+ ERROR_WAIT_1 syscall.Errno = 731
+ ERROR_WAIT_2 syscall.Errno = 732
+ ERROR_WAIT_3 syscall.Errno = 733
+ ERROR_WAIT_63 syscall.Errno = 734
+ ERROR_ABANDONED_WAIT_0 syscall.Errno = 735
+ ERROR_ABANDONED_WAIT_63 syscall.Errno = 736
+ ERROR_USER_APC syscall.Errno = 737
+ ERROR_KERNEL_APC syscall.Errno = 738
+ ERROR_ALERTED syscall.Errno = 739
+ ERROR_ELEVATION_REQUIRED syscall.Errno = 740
+ ERROR_REPARSE syscall.Errno = 741
+ ERROR_OPLOCK_BREAK_IN_PROGRESS syscall.Errno = 742
+ ERROR_VOLUME_MOUNTED syscall.Errno = 743
+ ERROR_RXACT_COMMITTED syscall.Errno = 744
+ ERROR_NOTIFY_CLEANUP syscall.Errno = 745
+ ERROR_PRIMARY_TRANSPORT_CONNECT_FAILED syscall.Errno = 746
+ ERROR_PAGE_FAULT_TRANSITION syscall.Errno = 747
+ ERROR_PAGE_FAULT_DEMAND_ZERO syscall.Errno = 748
+ ERROR_PAGE_FAULT_COPY_ON_WRITE syscall.Errno = 749
+ ERROR_PAGE_FAULT_GUARD_PAGE syscall.Errno = 750
+ ERROR_PAGE_FAULT_PAGING_FILE syscall.Errno = 751
+ ERROR_CACHE_PAGE_LOCKED syscall.Errno = 752
+ ERROR_CRASH_DUMP syscall.Errno = 753
+ ERROR_BUFFER_ALL_ZEROS syscall.Errno = 754
+ ERROR_REPARSE_OBJECT syscall.Errno = 755
+ ERROR_RESOURCE_REQUIREMENTS_CHANGED syscall.Errno = 756
+ ERROR_TRANSLATION_COMPLETE syscall.Errno = 757
+ ERROR_NOTHING_TO_TERMINATE syscall.Errno = 758
+ ERROR_PROCESS_NOT_IN_JOB syscall.Errno = 759
+ ERROR_PROCESS_IN_JOB syscall.Errno = 760
+ ERROR_VOLSNAP_HIBERNATE_READY syscall.Errno = 761
+ ERROR_FSFILTER_OP_COMPLETED_SUCCESSFULLY syscall.Errno = 762
+ ERROR_INTERRUPT_VECTOR_ALREADY_CONNECTED syscall.Errno = 763
+ ERROR_INTERRUPT_STILL_CONNECTED syscall.Errno = 764
+ ERROR_WAIT_FOR_OPLOCK syscall.Errno = 765
+ ERROR_DBG_EXCEPTION_HANDLED syscall.Errno = 766
+ ERROR_DBG_CONTINUE syscall.Errno = 767
+ ERROR_CALLBACK_POP_STACK syscall.Errno = 768
+ ERROR_COMPRESSION_DISABLED syscall.Errno = 769
+ ERROR_CANTFETCHBACKWARDS syscall.Errno = 770
+ ERROR_CANTSCROLLBACKWARDS syscall.Errno = 771
+ ERROR_ROWSNOTRELEASED syscall.Errno = 772
+ ERROR_BAD_ACCESSOR_FLAGS syscall.Errno = 773
+ ERROR_ERRORS_ENCOUNTERED syscall.Errno = 774
+ ERROR_NOT_CAPABLE syscall.Errno = 775
+ ERROR_REQUEST_OUT_OF_SEQUENCE syscall.Errno = 776
+ ERROR_VERSION_PARSE_ERROR syscall.Errno = 777
+ ERROR_BADSTARTPOSITION syscall.Errno = 778
+ ERROR_MEMORY_HARDWARE syscall.Errno = 779
+ ERROR_DISK_REPAIR_DISABLED syscall.Errno = 780
+ ERROR_INSUFFICIENT_RESOURCE_FOR_SPECIFIED_SHARED_SECTION_SIZE syscall.Errno = 781
+ ERROR_SYSTEM_POWERSTATE_TRANSITION syscall.Errno = 782
+ ERROR_SYSTEM_POWERSTATE_COMPLEX_TRANSITION syscall.Errno = 783
+ ERROR_MCA_EXCEPTION syscall.Errno = 784
+ ERROR_ACCESS_AUDIT_BY_POLICY syscall.Errno = 785
+ ERROR_ACCESS_DISABLED_NO_SAFER_UI_BY_POLICY syscall.Errno = 786
+ ERROR_ABANDON_HIBERFILE syscall.Errno = 787
+ ERROR_LOST_WRITEBEHIND_DATA_NETWORK_DISCONNECTED syscall.Errno = 788
+ ERROR_LOST_WRITEBEHIND_DATA_NETWORK_SERVER_ERROR syscall.Errno = 789
+ ERROR_LOST_WRITEBEHIND_DATA_LOCAL_DISK_ERROR syscall.Errno = 790
+ ERROR_BAD_MCFG_TABLE syscall.Errno = 791
+ ERROR_DISK_REPAIR_REDIRECTED syscall.Errno = 792
+ ERROR_DISK_REPAIR_UNSUCCESSFUL syscall.Errno = 793
+ ERROR_CORRUPT_LOG_OVERFULL syscall.Errno = 794
+ ERROR_CORRUPT_LOG_CORRUPTED syscall.Errno = 795
+ ERROR_CORRUPT_LOG_UNAVAILABLE syscall.Errno = 796
+ ERROR_CORRUPT_LOG_DELETED_FULL syscall.Errno = 797
+ ERROR_CORRUPT_LOG_CLEARED syscall.Errno = 798
+ ERROR_ORPHAN_NAME_EXHAUSTED syscall.Errno = 799
+ ERROR_OPLOCK_SWITCHED_TO_NEW_HANDLE syscall.Errno = 800
+ ERROR_CANNOT_GRANT_REQUESTED_OPLOCK syscall.Errno = 801
+ ERROR_CANNOT_BREAK_OPLOCK syscall.Errno = 802
+ ERROR_OPLOCK_HANDLE_CLOSED syscall.Errno = 803
+ ERROR_NO_ACE_CONDITION syscall.Errno = 804
+ ERROR_INVALID_ACE_CONDITION syscall.Errno = 805
+ ERROR_FILE_HANDLE_REVOKED syscall.Errno = 806
+ ERROR_IMAGE_AT_DIFFERENT_BASE syscall.Errno = 807
+ ERROR_ENCRYPTED_IO_NOT_POSSIBLE syscall.Errno = 808
+ ERROR_FILE_METADATA_OPTIMIZATION_IN_PROGRESS syscall.Errno = 809
+ ERROR_QUOTA_ACTIVITY syscall.Errno = 810
+ ERROR_HANDLE_REVOKED syscall.Errno = 811
+ ERROR_CALLBACK_INVOKE_INLINE syscall.Errno = 812
+ ERROR_CPU_SET_INVALID syscall.Errno = 813
+ ERROR_ENCLAVE_NOT_TERMINATED syscall.Errno = 814
+ ERROR_ENCLAVE_VIOLATION syscall.Errno = 815
+ ERROR_EA_ACCESS_DENIED syscall.Errno = 994
+ ERROR_OPERATION_ABORTED syscall.Errno = 995
+ ERROR_IO_INCOMPLETE syscall.Errno = 996
+ ERROR_IO_PENDING syscall.Errno = 997
+ ERROR_NOACCESS syscall.Errno = 998
+ ERROR_SWAPERROR syscall.Errno = 999
+ ERROR_STACK_OVERFLOW syscall.Errno = 1001
+ ERROR_INVALID_MESSAGE syscall.Errno = 1002
+ ERROR_CAN_NOT_COMPLETE syscall.Errno = 1003
+ ERROR_INVALID_FLAGS syscall.Errno = 1004
+ ERROR_UNRECOGNIZED_VOLUME syscall.Errno = 1005
+ ERROR_FILE_INVALID syscall.Errno = 1006
+ ERROR_FULLSCREEN_MODE syscall.Errno = 1007
+ ERROR_NO_TOKEN syscall.Errno = 1008
+ ERROR_BADDB syscall.Errno = 1009
+ ERROR_BADKEY syscall.Errno = 1010
+ ERROR_CANTOPEN syscall.Errno = 1011
+ ERROR_CANTREAD syscall.Errno = 1012
+ ERROR_CANTWRITE syscall.Errno = 1013
+ ERROR_REGISTRY_RECOVERED syscall.Errno = 1014
+ ERROR_REGISTRY_CORRUPT syscall.Errno = 1015
+ ERROR_REGISTRY_IO_FAILED syscall.Errno = 1016
+ ERROR_NOT_REGISTRY_FILE syscall.Errno = 1017
+ ERROR_KEY_DELETED syscall.Errno = 1018
+ ERROR_NO_LOG_SPACE syscall.Errno = 1019
+ ERROR_KEY_HAS_CHILDREN syscall.Errno = 1020
+ ERROR_CHILD_MUST_BE_VOLATILE syscall.Errno = 1021
+ ERROR_NOTIFY_ENUM_DIR syscall.Errno = 1022
+ ERROR_DEPENDENT_SERVICES_RUNNING syscall.Errno = 1051
+ ERROR_INVALID_SERVICE_CONTROL syscall.Errno = 1052
+ ERROR_SERVICE_REQUEST_TIMEOUT syscall.Errno = 1053
+ ERROR_SERVICE_NO_THREAD syscall.Errno = 1054
+ ERROR_SERVICE_DATABASE_LOCKED syscall.Errno = 1055
+ ERROR_SERVICE_ALREADY_RUNNING syscall.Errno = 1056
+ ERROR_INVALID_SERVICE_ACCOUNT syscall.Errno = 1057
+ ERROR_SERVICE_DISABLED syscall.Errno = 1058
+ ERROR_CIRCULAR_DEPENDENCY syscall.Errno = 1059
+ ERROR_SERVICE_DOES_NOT_EXIST syscall.Errno = 1060
+ ERROR_SERVICE_CANNOT_ACCEPT_CTRL syscall.Errno = 1061
+ ERROR_SERVICE_NOT_ACTIVE syscall.Errno = 1062
+ ERROR_FAILED_SERVICE_CONTROLLER_CONNECT syscall.Errno = 1063
+ ERROR_EXCEPTION_IN_SERVICE syscall.Errno = 1064
+ ERROR_DATABASE_DOES_NOT_EXIST syscall.Errno = 1065
+ ERROR_SERVICE_SPECIFIC_ERROR syscall.Errno = 1066
+ ERROR_PROCESS_ABORTED syscall.Errno = 1067
+ ERROR_SERVICE_DEPENDENCY_FAIL syscall.Errno = 1068
+ ERROR_SERVICE_LOGON_FAILED syscall.Errno = 1069
+ ERROR_SERVICE_START_HANG syscall.Errno = 1070
+ ERROR_INVALID_SERVICE_LOCK syscall.Errno = 1071
+ ERROR_SERVICE_MARKED_FOR_DELETE syscall.Errno = 1072
+ ERROR_SERVICE_EXISTS syscall.Errno = 1073
+ ERROR_ALREADY_RUNNING_LKG syscall.Errno = 1074
+ ERROR_SERVICE_DEPENDENCY_DELETED syscall.Errno = 1075
+ ERROR_BOOT_ALREADY_ACCEPTED syscall.Errno = 1076
+ ERROR_SERVICE_NEVER_STARTED syscall.Errno = 1077
+ ERROR_DUPLICATE_SERVICE_NAME syscall.Errno = 1078
+ ERROR_DIFFERENT_SERVICE_ACCOUNT syscall.Errno = 1079
+ ERROR_CANNOT_DETECT_DRIVER_FAILURE syscall.Errno = 1080
+ ERROR_CANNOT_DETECT_PROCESS_ABORT syscall.Errno = 1081
+ ERROR_NO_RECOVERY_PROGRAM syscall.Errno = 1082
+ ERROR_SERVICE_NOT_IN_EXE syscall.Errno = 1083
+ ERROR_NOT_SAFEBOOT_SERVICE syscall.Errno = 1084
+ ERROR_END_OF_MEDIA syscall.Errno = 1100
+ ERROR_FILEMARK_DETECTED syscall.Errno = 1101
+ ERROR_BEGINNING_OF_MEDIA syscall.Errno = 1102
+ ERROR_SETMARK_DETECTED syscall.Errno = 1103
+ ERROR_NO_DATA_DETECTED syscall.Errno = 1104
+ ERROR_PARTITION_FAILURE syscall.Errno = 1105
+ ERROR_INVALID_BLOCK_LENGTH syscall.Errno = 1106
+ ERROR_DEVICE_NOT_PARTITIONED syscall.Errno = 1107
+ ERROR_UNABLE_TO_LOCK_MEDIA syscall.Errno = 1108
+ ERROR_UNABLE_TO_UNLOAD_MEDIA syscall.Errno = 1109
+ ERROR_MEDIA_CHANGED syscall.Errno = 1110
+ ERROR_BUS_RESET syscall.Errno = 1111
+ ERROR_NO_MEDIA_IN_DRIVE syscall.Errno = 1112
+ ERROR_NO_UNICODE_TRANSLATION syscall.Errno = 1113
+ ERROR_DLL_INIT_FAILED syscall.Errno = 1114
+ ERROR_SHUTDOWN_IN_PROGRESS syscall.Errno = 1115
+ ERROR_NO_SHUTDOWN_IN_PROGRESS syscall.Errno = 1116
+ ERROR_IO_DEVICE syscall.Errno = 1117
+ ERROR_SERIAL_NO_DEVICE syscall.Errno = 1118
+ ERROR_IRQ_BUSY syscall.Errno = 1119
+ ERROR_MORE_WRITES syscall.Errno = 1120
+ ERROR_COUNTER_TIMEOUT syscall.Errno = 1121
+ ERROR_FLOPPY_ID_MARK_NOT_FOUND syscall.Errno = 1122
+ ERROR_FLOPPY_WRONG_CYLINDER syscall.Errno = 1123
+ ERROR_FLOPPY_UNKNOWN_ERROR syscall.Errno = 1124
+ ERROR_FLOPPY_BAD_REGISTERS syscall.Errno = 1125
+ ERROR_DISK_RECALIBRATE_FAILED syscall.Errno = 1126
+ ERROR_DISK_OPERATION_FAILED syscall.Errno = 1127
+ ERROR_DISK_RESET_FAILED syscall.Errno = 1128
+ ERROR_EOM_OVERFLOW syscall.Errno = 1129
+ ERROR_NOT_ENOUGH_SERVER_MEMORY syscall.Errno = 1130
+ ERROR_POSSIBLE_DEADLOCK syscall.Errno = 1131
+ ERROR_MAPPED_ALIGNMENT syscall.Errno = 1132
+ ERROR_SET_POWER_STATE_VETOED syscall.Errno = 1140
+ ERROR_SET_POWER_STATE_FAILED syscall.Errno = 1141
+ ERROR_TOO_MANY_LINKS syscall.Errno = 1142
+ ERROR_OLD_WIN_VERSION syscall.Errno = 1150
+ ERROR_APP_WRONG_OS syscall.Errno = 1151
+ ERROR_SINGLE_INSTANCE_APP syscall.Errno = 1152
+ ERROR_RMODE_APP syscall.Errno = 1153
+ ERROR_INVALID_DLL syscall.Errno = 1154
+ ERROR_NO_ASSOCIATION syscall.Errno = 1155
+ ERROR_DDE_FAIL syscall.Errno = 1156
+ ERROR_DLL_NOT_FOUND syscall.Errno = 1157
+ ERROR_NO_MORE_USER_HANDLES syscall.Errno = 1158
+ ERROR_MESSAGE_SYNC_ONLY syscall.Errno = 1159
+ ERROR_SOURCE_ELEMENT_EMPTY syscall.Errno = 1160
+ ERROR_DESTINATION_ELEMENT_FULL syscall.Errno = 1161
+ ERROR_ILLEGAL_ELEMENT_ADDRESS syscall.Errno = 1162
+ ERROR_MAGAZINE_NOT_PRESENT syscall.Errno = 1163
+ ERROR_DEVICE_REINITIALIZATION_NEEDED syscall.Errno = 1164
+ ERROR_DEVICE_REQUIRES_CLEANING syscall.Errno = 1165
+ ERROR_DEVICE_DOOR_OPEN syscall.Errno = 1166
+ ERROR_DEVICE_NOT_CONNECTED syscall.Errno = 1167
+ ERROR_NOT_FOUND syscall.Errno = 1168
+ ERROR_NO_MATCH syscall.Errno = 1169
+ ERROR_SET_NOT_FOUND syscall.Errno = 1170
+ ERROR_POINT_NOT_FOUND syscall.Errno = 1171
+ ERROR_NO_TRACKING_SERVICE syscall.Errno = 1172
+ ERROR_NO_VOLUME_ID syscall.Errno = 1173
+ ERROR_UNABLE_TO_REMOVE_REPLACED syscall.Errno = 1175
+ ERROR_UNABLE_TO_MOVE_REPLACEMENT syscall.Errno = 1176
+ ERROR_UNABLE_TO_MOVE_REPLACEMENT_2 syscall.Errno = 1177
+ ERROR_JOURNAL_DELETE_IN_PROGRESS syscall.Errno = 1178
+ ERROR_JOURNAL_NOT_ACTIVE syscall.Errno = 1179
+ ERROR_POTENTIAL_FILE_FOUND syscall.Errno = 1180
+ ERROR_JOURNAL_ENTRY_DELETED syscall.Errno = 1181
+ ERROR_SHUTDOWN_IS_SCHEDULED syscall.Errno = 1190
+ ERROR_SHUTDOWN_USERS_LOGGED_ON syscall.Errno = 1191
+ ERROR_BAD_DEVICE syscall.Errno = 1200
+ ERROR_CONNECTION_UNAVAIL syscall.Errno = 1201
+ ERROR_DEVICE_ALREADY_REMEMBERED syscall.Errno = 1202
+ ERROR_NO_NET_OR_BAD_PATH syscall.Errno = 1203
+ ERROR_BAD_PROVIDER syscall.Errno = 1204
+ ERROR_CANNOT_OPEN_PROFILE syscall.Errno = 1205
+ ERROR_BAD_PROFILE syscall.Errno = 1206
+ ERROR_NOT_CONTAINER syscall.Errno = 1207
+ ERROR_EXTENDED_ERROR syscall.Errno = 1208
+ ERROR_INVALID_GROUPNAME syscall.Errno = 1209
+ ERROR_INVALID_COMPUTERNAME syscall.Errno = 1210
+ ERROR_INVALID_EVENTNAME syscall.Errno = 1211
+ ERROR_INVALID_DOMAINNAME syscall.Errno = 1212
+ ERROR_INVALID_SERVICENAME syscall.Errno = 1213
+ ERROR_INVALID_NETNAME syscall.Errno = 1214
+ ERROR_INVALID_SHARENAME syscall.Errno = 1215
+ ERROR_INVALID_PASSWORDNAME syscall.Errno = 1216
+ ERROR_INVALID_MESSAGENAME syscall.Errno = 1217
+ ERROR_INVALID_MESSAGEDEST syscall.Errno = 1218
+ ERROR_SESSION_CREDENTIAL_CONFLICT syscall.Errno = 1219
+ ERROR_REMOTE_SESSION_LIMIT_EXCEEDED syscall.Errno = 1220
+ ERROR_DUP_DOMAINNAME syscall.Errno = 1221
+ ERROR_NO_NETWORK syscall.Errno = 1222
+ ERROR_CANCELLED syscall.Errno = 1223
+ ERROR_USER_MAPPED_FILE syscall.Errno = 1224
+ ERROR_CONNECTION_REFUSED syscall.Errno = 1225
+ ERROR_GRACEFUL_DISCONNECT syscall.Errno = 1226
+ ERROR_ADDRESS_ALREADY_ASSOCIATED syscall.Errno = 1227
+ ERROR_ADDRESS_NOT_ASSOCIATED syscall.Errno = 1228
+ ERROR_CONNECTION_INVALID syscall.Errno = 1229
+ ERROR_CONNECTION_ACTIVE syscall.Errno = 1230
+ ERROR_NETWORK_UNREACHABLE syscall.Errno = 1231
+ ERROR_HOST_UNREACHABLE syscall.Errno = 1232
+ ERROR_PROTOCOL_UNREACHABLE syscall.Errno = 1233
+ ERROR_PORT_UNREACHABLE syscall.Errno = 1234
+ ERROR_REQUEST_ABORTED syscall.Errno = 1235
+ ERROR_CONNECTION_ABORTED syscall.Errno = 1236
+ ERROR_RETRY syscall.Errno = 1237
+ ERROR_CONNECTION_COUNT_LIMIT syscall.Errno = 1238
+ ERROR_LOGIN_TIME_RESTRICTION syscall.Errno = 1239
+ ERROR_LOGIN_WKSTA_RESTRICTION syscall.Errno = 1240
+ ERROR_INCORRECT_ADDRESS syscall.Errno = 1241
+ ERROR_ALREADY_REGISTERED syscall.Errno = 1242
+ ERROR_SERVICE_NOT_FOUND syscall.Errno = 1243
+ ERROR_NOT_AUTHENTICATED syscall.Errno = 1244
+ ERROR_NOT_LOGGED_ON syscall.Errno = 1245
+ ERROR_CONTINUE syscall.Errno = 1246
+ ERROR_ALREADY_INITIALIZED syscall.Errno = 1247
+ ERROR_NO_MORE_DEVICES syscall.Errno = 1248
+ ERROR_NO_SUCH_SITE syscall.Errno = 1249
+ ERROR_DOMAIN_CONTROLLER_EXISTS syscall.Errno = 1250
+ ERROR_ONLY_IF_CONNECTED syscall.Errno = 1251
+ ERROR_OVERRIDE_NOCHANGES syscall.Errno = 1252
+ ERROR_BAD_USER_PROFILE syscall.Errno = 1253
+ ERROR_NOT_SUPPORTED_ON_SBS syscall.Errno = 1254
+ ERROR_SERVER_SHUTDOWN_IN_PROGRESS syscall.Errno = 1255
+ ERROR_HOST_DOWN syscall.Errno = 1256
+ ERROR_NON_ACCOUNT_SID syscall.Errno = 1257
+ ERROR_NON_DOMAIN_SID syscall.Errno = 1258
+ ERROR_APPHELP_BLOCK syscall.Errno = 1259
+ ERROR_ACCESS_DISABLED_BY_POLICY syscall.Errno = 1260
+ ERROR_REG_NAT_CONSUMPTION syscall.Errno = 1261
+ ERROR_CSCSHARE_OFFLINE syscall.Errno = 1262
+ ERROR_PKINIT_FAILURE syscall.Errno = 1263
+ ERROR_SMARTCARD_SUBSYSTEM_FAILURE syscall.Errno = 1264
+ ERROR_DOWNGRADE_DETECTED syscall.Errno = 1265
+ ERROR_MACHINE_LOCKED syscall.Errno = 1271
+ ERROR_SMB_GUEST_LOGON_BLOCKED syscall.Errno = 1272
+ ERROR_CALLBACK_SUPPLIED_INVALID_DATA syscall.Errno = 1273
+ ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED syscall.Errno = 1274
+ ERROR_DRIVER_BLOCKED syscall.Errno = 1275
+ ERROR_INVALID_IMPORT_OF_NON_DLL syscall.Errno = 1276
+ ERROR_ACCESS_DISABLED_WEBBLADE syscall.Errno = 1277
+ ERROR_ACCESS_DISABLED_WEBBLADE_TAMPER syscall.Errno = 1278
+ ERROR_RECOVERY_FAILURE syscall.Errno = 1279
+ ERROR_ALREADY_FIBER syscall.Errno = 1280
+ ERROR_ALREADY_THREAD syscall.Errno = 1281
+ ERROR_STACK_BUFFER_OVERRUN syscall.Errno = 1282
+ ERROR_PARAMETER_QUOTA_EXCEEDED syscall.Errno = 1283
+ ERROR_DEBUGGER_INACTIVE syscall.Errno = 1284
+ ERROR_DELAY_LOAD_FAILED syscall.Errno = 1285
+ ERROR_VDM_DISALLOWED syscall.Errno = 1286
+ ERROR_UNIDENTIFIED_ERROR syscall.Errno = 1287
+ ERROR_INVALID_CRUNTIME_PARAMETER syscall.Errno = 1288
+ ERROR_BEYOND_VDL syscall.Errno = 1289
+ ERROR_INCOMPATIBLE_SERVICE_SID_TYPE syscall.Errno = 1290
+ ERROR_DRIVER_PROCESS_TERMINATED syscall.Errno = 1291
+ ERROR_IMPLEMENTATION_LIMIT syscall.Errno = 1292
+ ERROR_PROCESS_IS_PROTECTED syscall.Errno = 1293
+ ERROR_SERVICE_NOTIFY_CLIENT_LAGGING syscall.Errno = 1294
+ ERROR_DISK_QUOTA_EXCEEDED syscall.Errno = 1295
+ ERROR_CONTENT_BLOCKED syscall.Errno = 1296
+ ERROR_INCOMPATIBLE_SERVICE_PRIVILEGE syscall.Errno = 1297
+ ERROR_APP_HANG syscall.Errno = 1298
+ ERROR_INVALID_LABEL syscall.Errno = 1299
+ ERROR_NOT_ALL_ASSIGNED syscall.Errno = 1300
+ ERROR_SOME_NOT_MAPPED syscall.Errno = 1301
+ ERROR_NO_QUOTAS_FOR_ACCOUNT syscall.Errno = 1302
+ ERROR_LOCAL_USER_SESSION_KEY syscall.Errno = 1303
+ ERROR_NULL_LM_PASSWORD syscall.Errno = 1304
+ ERROR_UNKNOWN_REVISION syscall.Errno = 1305
+ ERROR_REVISION_MISMATCH syscall.Errno = 1306
+ ERROR_INVALID_OWNER syscall.Errno = 1307
+ ERROR_INVALID_PRIMARY_GROUP syscall.Errno = 1308
+ ERROR_NO_IMPERSONATION_TOKEN syscall.Errno = 1309
+ ERROR_CANT_DISABLE_MANDATORY syscall.Errno = 1310
+ ERROR_NO_LOGON_SERVERS syscall.Errno = 1311
+ ERROR_NO_SUCH_LOGON_SESSION syscall.Errno = 1312
+ ERROR_NO_SUCH_PRIVILEGE syscall.Errno = 1313
+ ERROR_PRIVILEGE_NOT_HELD syscall.Errno = 1314
+ ERROR_INVALID_ACCOUNT_NAME syscall.Errno = 1315
+ ERROR_USER_EXISTS syscall.Errno = 1316
+ ERROR_NO_SUCH_USER syscall.Errno = 1317
+ ERROR_GROUP_EXISTS syscall.Errno = 1318
+ ERROR_NO_SUCH_GROUP syscall.Errno = 1319
+ ERROR_MEMBER_IN_GROUP syscall.Errno = 1320
+ ERROR_MEMBER_NOT_IN_GROUP syscall.Errno = 1321
+ ERROR_LAST_ADMIN syscall.Errno = 1322
+ ERROR_WRONG_PASSWORD syscall.Errno = 1323
+ ERROR_ILL_FORMED_PASSWORD syscall.Errno = 1324
+ ERROR_PASSWORD_RESTRICTION syscall.Errno = 1325
+ ERROR_LOGON_FAILURE syscall.Errno = 1326
+ ERROR_ACCOUNT_RESTRICTION syscall.Errno = 1327
+ ERROR_INVALID_LOGON_HOURS syscall.Errno = 1328
+ ERROR_INVALID_WORKSTATION syscall.Errno = 1329
+ ERROR_PASSWORD_EXPIRED syscall.Errno = 1330
+ ERROR_ACCOUNT_DISABLED syscall.Errno = 1331
+ ERROR_NONE_MAPPED syscall.Errno = 1332
+ ERROR_TOO_MANY_LUIDS_REQUESTED syscall.Errno = 1333
+ ERROR_LUIDS_EXHAUSTED syscall.Errno = 1334
+ ERROR_INVALID_SUB_AUTHORITY syscall.Errno = 1335
+ ERROR_INVALID_ACL syscall.Errno = 1336
+ ERROR_INVALID_SID syscall.Errno = 1337
+ ERROR_INVALID_SECURITY_DESCR syscall.Errno = 1338
+ ERROR_BAD_INHERITANCE_ACL syscall.Errno = 1340
+ ERROR_SERVER_DISABLED syscall.Errno = 1341
+ ERROR_SERVER_NOT_DISABLED syscall.Errno = 1342
+ ERROR_INVALID_ID_AUTHORITY syscall.Errno = 1343
+ ERROR_ALLOTTED_SPACE_EXCEEDED syscall.Errno = 1344
+ ERROR_INVALID_GROUP_ATTRIBUTES syscall.Errno = 1345
+ ERROR_BAD_IMPERSONATION_LEVEL syscall.Errno = 1346
+ ERROR_CANT_OPEN_ANONYMOUS syscall.Errno = 1347
+ ERROR_BAD_VALIDATION_CLASS syscall.Errno = 1348
+ ERROR_BAD_TOKEN_TYPE syscall.Errno = 1349
+ ERROR_NO_SECURITY_ON_OBJECT syscall.Errno = 1350
+ ERROR_CANT_ACCESS_DOMAIN_INFO syscall.Errno = 1351
+ ERROR_INVALID_SERVER_STATE syscall.Errno = 1352
+ ERROR_INVALID_DOMAIN_STATE syscall.Errno = 1353
+ ERROR_INVALID_DOMAIN_ROLE syscall.Errno = 1354
+ ERROR_NO_SUCH_DOMAIN syscall.Errno = 1355
+ ERROR_DOMAIN_EXISTS syscall.Errno = 1356
+ ERROR_DOMAIN_LIMIT_EXCEEDED syscall.Errno = 1357
+ ERROR_INTERNAL_DB_CORRUPTION syscall.Errno = 1358
+ ERROR_INTERNAL_ERROR syscall.Errno = 1359
+ ERROR_GENERIC_NOT_MAPPED syscall.Errno = 1360
+ ERROR_BAD_DESCRIPTOR_FORMAT syscall.Errno = 1361
+ ERROR_NOT_LOGON_PROCESS syscall.Errno = 1362
+ ERROR_LOGON_SESSION_EXISTS syscall.Errno = 1363
+ ERROR_NO_SUCH_PACKAGE syscall.Errno = 1364
+ ERROR_BAD_LOGON_SESSION_STATE syscall.Errno = 1365
+ ERROR_LOGON_SESSION_COLLISION syscall.Errno = 1366
+ ERROR_INVALID_LOGON_TYPE syscall.Errno = 1367
+ ERROR_CANNOT_IMPERSONATE syscall.Errno = 1368
+ ERROR_RXACT_INVALID_STATE syscall.Errno = 1369
+ ERROR_RXACT_COMMIT_FAILURE syscall.Errno = 1370
+ ERROR_SPECIAL_ACCOUNT syscall.Errno = 1371
+ ERROR_SPECIAL_GROUP syscall.Errno = 1372
+ ERROR_SPECIAL_USER syscall.Errno = 1373
+ ERROR_MEMBERS_PRIMARY_GROUP syscall.Errno = 1374
+ ERROR_TOKEN_ALREADY_IN_USE syscall.Errno = 1375
+ ERROR_NO_SUCH_ALIAS syscall.Errno = 1376
+ ERROR_MEMBER_NOT_IN_ALIAS syscall.Errno = 1377
+ ERROR_MEMBER_IN_ALIAS syscall.Errno = 1378
+ ERROR_ALIAS_EXISTS syscall.Errno = 1379
+ ERROR_LOGON_NOT_GRANTED syscall.Errno = 1380
+ ERROR_TOO_MANY_SECRETS syscall.Errno = 1381
+ ERROR_SECRET_TOO_LONG syscall.Errno = 1382
+ ERROR_INTERNAL_DB_ERROR syscall.Errno = 1383
+ ERROR_TOO_MANY_CONTEXT_IDS syscall.Errno = 1384
+ ERROR_LOGON_TYPE_NOT_GRANTED syscall.Errno = 1385
+ ERROR_NT_CROSS_ENCRYPTION_REQUIRED syscall.Errno = 1386
+ ERROR_NO_SUCH_MEMBER syscall.Errno = 1387
+ ERROR_INVALID_MEMBER syscall.Errno = 1388
+ ERROR_TOO_MANY_SIDS syscall.Errno = 1389
+ ERROR_LM_CROSS_ENCRYPTION_REQUIRED syscall.Errno = 1390
+ ERROR_NO_INHERITANCE syscall.Errno = 1391
+ ERROR_FILE_CORRUPT syscall.Errno = 1392
+ ERROR_DISK_CORRUPT syscall.Errno = 1393
+ ERROR_NO_USER_SESSION_KEY syscall.Errno = 1394
+ ERROR_LICENSE_QUOTA_EXCEEDED syscall.Errno = 1395
+ ERROR_WRONG_TARGET_NAME syscall.Errno = 1396
+ ERROR_MUTUAL_AUTH_FAILED syscall.Errno = 1397
+ ERROR_TIME_SKEW syscall.Errno = 1398
+ ERROR_CURRENT_DOMAIN_NOT_ALLOWED syscall.Errno = 1399
+ ERROR_INVALID_WINDOW_HANDLE syscall.Errno = 1400
+ ERROR_INVALID_MENU_HANDLE syscall.Errno = 1401
+ ERROR_INVALID_CURSOR_HANDLE syscall.Errno = 1402
+ ERROR_INVALID_ACCEL_HANDLE syscall.Errno = 1403
+ ERROR_INVALID_HOOK_HANDLE syscall.Errno = 1404
+ ERROR_INVALID_DWP_HANDLE syscall.Errno = 1405
+ ERROR_TLW_WITH_WSCHILD syscall.Errno = 1406
+ ERROR_CANNOT_FIND_WND_CLASS syscall.Errno = 1407
+ ERROR_WINDOW_OF_OTHER_THREAD syscall.Errno = 1408
+ ERROR_HOTKEY_ALREADY_REGISTERED syscall.Errno = 1409
+ ERROR_CLASS_ALREADY_EXISTS syscall.Errno = 1410
+ ERROR_CLASS_DOES_NOT_EXIST syscall.Errno = 1411
+ ERROR_CLASS_HAS_WINDOWS syscall.Errno = 1412
+ ERROR_INVALID_INDEX syscall.Errno = 1413
+ ERROR_INVALID_ICON_HANDLE syscall.Errno = 1414
+ ERROR_PRIVATE_DIALOG_INDEX syscall.Errno = 1415
+ ERROR_LISTBOX_ID_NOT_FOUND syscall.Errno = 1416
+ ERROR_NO_WILDCARD_CHARACTERS syscall.Errno = 1417
+ ERROR_CLIPBOARD_NOT_OPEN syscall.Errno = 1418
+ ERROR_HOTKEY_NOT_REGISTERED syscall.Errno = 1419
+ ERROR_WINDOW_NOT_DIALOG syscall.Errno = 1420
+ ERROR_CONTROL_ID_NOT_FOUND syscall.Errno = 1421
+ ERROR_INVALID_COMBOBOX_MESSAGE syscall.Errno = 1422
+ ERROR_WINDOW_NOT_COMBOBOX syscall.Errno = 1423
+ ERROR_INVALID_EDIT_HEIGHT syscall.Errno = 1424
+ ERROR_DC_NOT_FOUND syscall.Errno = 1425
+ ERROR_INVALID_HOOK_FILTER syscall.Errno = 1426
+ ERROR_INVALID_FILTER_PROC syscall.Errno = 1427
+ ERROR_HOOK_NEEDS_HMOD syscall.Errno = 1428
+ ERROR_GLOBAL_ONLY_HOOK syscall.Errno = 1429
+ ERROR_JOURNAL_HOOK_SET syscall.Errno = 1430
+ ERROR_HOOK_NOT_INSTALLED syscall.Errno = 1431
+ ERROR_INVALID_LB_MESSAGE syscall.Errno = 1432
+ ERROR_SETCOUNT_ON_BAD_LB syscall.Errno = 1433
+ ERROR_LB_WITHOUT_TABSTOPS syscall.Errno = 1434
+ ERROR_DESTROY_OBJECT_OF_OTHER_THREAD syscall.Errno = 1435
+ ERROR_CHILD_WINDOW_MENU syscall.Errno = 1436
+ ERROR_NO_SYSTEM_MENU syscall.Errno = 1437
+ ERROR_INVALID_MSGBOX_STYLE syscall.Errno = 1438
+ ERROR_INVALID_SPI_VALUE syscall.Errno = 1439
+ ERROR_SCREEN_ALREADY_LOCKED syscall.Errno = 1440
+ ERROR_HWNDS_HAVE_DIFF_PARENT syscall.Errno = 1441
+ ERROR_NOT_CHILD_WINDOW syscall.Errno = 1442
+ ERROR_INVALID_GW_COMMAND syscall.Errno = 1443
+ ERROR_INVALID_THREAD_ID syscall.Errno = 1444
+ ERROR_NON_MDICHILD_WINDOW syscall.Errno = 1445
+ ERROR_POPUP_ALREADY_ACTIVE syscall.Errno = 1446
+ ERROR_NO_SCROLLBARS syscall.Errno = 1447
+ ERROR_INVALID_SCROLLBAR_RANGE syscall.Errno = 1448
+ ERROR_INVALID_SHOWWIN_COMMAND syscall.Errno = 1449
+ ERROR_NO_SYSTEM_RESOURCES syscall.Errno = 1450
+ ERROR_NONPAGED_SYSTEM_RESOURCES syscall.Errno = 1451
+ ERROR_PAGED_SYSTEM_RESOURCES syscall.Errno = 1452
+ ERROR_WORKING_SET_QUOTA syscall.Errno = 1453
+ ERROR_PAGEFILE_QUOTA syscall.Errno = 1454
+ ERROR_COMMITMENT_LIMIT syscall.Errno = 1455
+ ERROR_MENU_ITEM_NOT_FOUND syscall.Errno = 1456
+ ERROR_INVALID_KEYBOARD_HANDLE syscall.Errno = 1457
+ ERROR_HOOK_TYPE_NOT_ALLOWED syscall.Errno = 1458
+ ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION syscall.Errno = 1459
+ ERROR_TIMEOUT syscall.Errno = 1460
+ ERROR_INVALID_MONITOR_HANDLE syscall.Errno = 1461
+ ERROR_INCORRECT_SIZE syscall.Errno = 1462
+ ERROR_SYMLINK_CLASS_DISABLED syscall.Errno = 1463
+ ERROR_SYMLINK_NOT_SUPPORTED syscall.Errno = 1464
+ ERROR_XML_PARSE_ERROR syscall.Errno = 1465
+ ERROR_XMLDSIG_ERROR syscall.Errno = 1466
+ ERROR_RESTART_APPLICATION syscall.Errno = 1467
+ ERROR_WRONG_COMPARTMENT syscall.Errno = 1468
+ ERROR_AUTHIP_FAILURE syscall.Errno = 1469
+ ERROR_NO_NVRAM_RESOURCES syscall.Errno = 1470
+ ERROR_NOT_GUI_PROCESS syscall.Errno = 1471
+ ERROR_EVENTLOG_FILE_CORRUPT syscall.Errno = 1500
+ ERROR_EVENTLOG_CANT_START syscall.Errno = 1501
+ ERROR_LOG_FILE_FULL syscall.Errno = 1502
+ ERROR_EVENTLOG_FILE_CHANGED syscall.Errno = 1503
+ ERROR_CONTAINER_ASSIGNED syscall.Errno = 1504
+ ERROR_JOB_NO_CONTAINER syscall.Errno = 1505
+ ERROR_INVALID_TASK_NAME syscall.Errno = 1550
+ ERROR_INVALID_TASK_INDEX syscall.Errno = 1551
+ ERROR_THREAD_ALREADY_IN_TASK syscall.Errno = 1552
+ ERROR_INSTALL_SERVICE_FAILURE syscall.Errno = 1601
+ ERROR_INSTALL_USEREXIT syscall.Errno = 1602
+ ERROR_INSTALL_FAILURE syscall.Errno = 1603
+ ERROR_INSTALL_SUSPEND syscall.Errno = 1604
+ ERROR_UNKNOWN_PRODUCT syscall.Errno = 1605
+ ERROR_UNKNOWN_FEATURE syscall.Errno = 1606
+ ERROR_UNKNOWN_COMPONENT syscall.Errno = 1607
+ ERROR_UNKNOWN_PROPERTY syscall.Errno = 1608
+ ERROR_INVALID_HANDLE_STATE syscall.Errno = 1609
+ ERROR_BAD_CONFIGURATION syscall.Errno = 1610
+ ERROR_INDEX_ABSENT syscall.Errno = 1611
+ ERROR_INSTALL_SOURCE_ABSENT syscall.Errno = 1612
+ ERROR_INSTALL_PACKAGE_VERSION syscall.Errno = 1613
+ ERROR_PRODUCT_UNINSTALLED syscall.Errno = 1614
+ ERROR_BAD_QUERY_SYNTAX syscall.Errno = 1615
+ ERROR_INVALID_FIELD syscall.Errno = 1616
+ ERROR_DEVICE_REMOVED syscall.Errno = 1617
+ ERROR_INSTALL_ALREADY_RUNNING syscall.Errno = 1618
+ ERROR_INSTALL_PACKAGE_OPEN_FAILED syscall.Errno = 1619
+ ERROR_INSTALL_PACKAGE_INVALID syscall.Errno = 1620
+ ERROR_INSTALL_UI_FAILURE syscall.Errno = 1621
+ ERROR_INSTALL_LOG_FAILURE syscall.Errno = 1622
+ ERROR_INSTALL_LANGUAGE_UNSUPPORTED syscall.Errno = 1623
+ ERROR_INSTALL_TRANSFORM_FAILURE syscall.Errno = 1624
+ ERROR_INSTALL_PACKAGE_REJECTED syscall.Errno = 1625
+ ERROR_FUNCTION_NOT_CALLED syscall.Errno = 1626
+ ERROR_FUNCTION_FAILED syscall.Errno = 1627
+ ERROR_INVALID_TABLE syscall.Errno = 1628
+ ERROR_DATATYPE_MISMATCH syscall.Errno = 1629
+ ERROR_UNSUPPORTED_TYPE syscall.Errno = 1630
+ ERROR_CREATE_FAILED syscall.Errno = 1631
+ ERROR_INSTALL_TEMP_UNWRITABLE syscall.Errno = 1632
+ ERROR_INSTALL_PLATFORM_UNSUPPORTED syscall.Errno = 1633
+ ERROR_INSTALL_NOTUSED syscall.Errno = 1634
+ ERROR_PATCH_PACKAGE_OPEN_FAILED syscall.Errno = 1635
+ ERROR_PATCH_PACKAGE_INVALID syscall.Errno = 1636
+ ERROR_PATCH_PACKAGE_UNSUPPORTED syscall.Errno = 1637
+ ERROR_PRODUCT_VERSION syscall.Errno = 1638
+ ERROR_INVALID_COMMAND_LINE syscall.Errno = 1639
+ ERROR_INSTALL_REMOTE_DISALLOWED syscall.Errno = 1640
+ ERROR_SUCCESS_REBOOT_INITIATED syscall.Errno = 1641
+ ERROR_PATCH_TARGET_NOT_FOUND syscall.Errno = 1642
+ ERROR_PATCH_PACKAGE_REJECTED syscall.Errno = 1643
+ ERROR_INSTALL_TRANSFORM_REJECTED syscall.Errno = 1644
+ ERROR_INSTALL_REMOTE_PROHIBITED syscall.Errno = 1645
+ ERROR_PATCH_REMOVAL_UNSUPPORTED syscall.Errno = 1646
+ ERROR_UNKNOWN_PATCH syscall.Errno = 1647
+ ERROR_PATCH_NO_SEQUENCE syscall.Errno = 1648
+ ERROR_PATCH_REMOVAL_DISALLOWED syscall.Errno = 1649
+ ERROR_INVALID_PATCH_XML syscall.Errno = 1650
+ ERROR_PATCH_MANAGED_ADVERTISED_PRODUCT syscall.Errno = 1651
+ ERROR_INSTALL_SERVICE_SAFEBOOT syscall.Errno = 1652
+ ERROR_FAIL_FAST_EXCEPTION syscall.Errno = 1653
+ ERROR_INSTALL_REJECTED syscall.Errno = 1654
+ ERROR_DYNAMIC_CODE_BLOCKED syscall.Errno = 1655
+ ERROR_NOT_SAME_OBJECT syscall.Errno = 1656
+ ERROR_STRICT_CFG_VIOLATION syscall.Errno = 1657
+ ERROR_SET_CONTEXT_DENIED syscall.Errno = 1660
+ ERROR_CROSS_PARTITION_VIOLATION syscall.Errno = 1661
+ RPC_S_INVALID_STRING_BINDING syscall.Errno = 1700
+ RPC_S_WRONG_KIND_OF_BINDING syscall.Errno = 1701
+ RPC_S_INVALID_BINDING syscall.Errno = 1702
+ RPC_S_PROTSEQ_NOT_SUPPORTED syscall.Errno = 1703
+ RPC_S_INVALID_RPC_PROTSEQ syscall.Errno = 1704
+ RPC_S_INVALID_STRING_UUID syscall.Errno = 1705
+ RPC_S_INVALID_ENDPOINT_FORMAT syscall.Errno = 1706
+ RPC_S_INVALID_NET_ADDR syscall.Errno = 1707
+ RPC_S_NO_ENDPOINT_FOUND syscall.Errno = 1708
+ RPC_S_INVALID_TIMEOUT syscall.Errno = 1709
+ RPC_S_OBJECT_NOT_FOUND syscall.Errno = 1710
+ RPC_S_ALREADY_REGISTERED syscall.Errno = 1711
+ RPC_S_TYPE_ALREADY_REGISTERED syscall.Errno = 1712
+ RPC_S_ALREADY_LISTENING syscall.Errno = 1713
+ RPC_S_NO_PROTSEQS_REGISTERED syscall.Errno = 1714
+ RPC_S_NOT_LISTENING syscall.Errno = 1715
+ RPC_S_UNKNOWN_MGR_TYPE syscall.Errno = 1716
+ RPC_S_UNKNOWN_IF syscall.Errno = 1717
+ RPC_S_NO_BINDINGS syscall.Errno = 1718
+ RPC_S_NO_PROTSEQS syscall.Errno = 1719
+ RPC_S_CANT_CREATE_ENDPOINT syscall.Errno = 1720
+ RPC_S_OUT_OF_RESOURCES syscall.Errno = 1721
+ RPC_S_SERVER_UNAVAILABLE syscall.Errno = 1722
+ RPC_S_SERVER_TOO_BUSY syscall.Errno = 1723
+ RPC_S_INVALID_NETWORK_OPTIONS syscall.Errno = 1724
+ RPC_S_NO_CALL_ACTIVE syscall.Errno = 1725
+ RPC_S_CALL_FAILED syscall.Errno = 1726
+ RPC_S_CALL_FAILED_DNE syscall.Errno = 1727
+ RPC_S_PROTOCOL_ERROR syscall.Errno = 1728
+ RPC_S_PROXY_ACCESS_DENIED syscall.Errno = 1729
+ RPC_S_UNSUPPORTED_TRANS_SYN syscall.Errno = 1730
+ RPC_S_UNSUPPORTED_TYPE syscall.Errno = 1732
+ RPC_S_INVALID_TAG syscall.Errno = 1733
+ RPC_S_INVALID_BOUND syscall.Errno = 1734
+ RPC_S_NO_ENTRY_NAME syscall.Errno = 1735
+ RPC_S_INVALID_NAME_SYNTAX syscall.Errno = 1736
+ RPC_S_UNSUPPORTED_NAME_SYNTAX syscall.Errno = 1737
+ RPC_S_UUID_NO_ADDRESS syscall.Errno = 1739
+ RPC_S_DUPLICATE_ENDPOINT syscall.Errno = 1740
+ RPC_S_UNKNOWN_AUTHN_TYPE syscall.Errno = 1741
+ RPC_S_MAX_CALLS_TOO_SMALL syscall.Errno = 1742
+ RPC_S_STRING_TOO_LONG syscall.Errno = 1743
+ RPC_S_PROTSEQ_NOT_FOUND syscall.Errno = 1744
+ RPC_S_PROCNUM_OUT_OF_RANGE syscall.Errno = 1745
+ RPC_S_BINDING_HAS_NO_AUTH syscall.Errno = 1746
+ RPC_S_UNKNOWN_AUTHN_SERVICE syscall.Errno = 1747
+ RPC_S_UNKNOWN_AUTHN_LEVEL syscall.Errno = 1748
+ RPC_S_INVALID_AUTH_IDENTITY syscall.Errno = 1749
+ RPC_S_UNKNOWN_AUTHZ_SERVICE syscall.Errno = 1750
+ EPT_S_INVALID_ENTRY syscall.Errno = 1751
+ EPT_S_CANT_PERFORM_OP syscall.Errno = 1752
+ EPT_S_NOT_REGISTERED syscall.Errno = 1753
+ RPC_S_NOTHING_TO_EXPORT syscall.Errno = 1754
+ RPC_S_INCOMPLETE_NAME syscall.Errno = 1755
+ RPC_S_INVALID_VERS_OPTION syscall.Errno = 1756
+ RPC_S_NO_MORE_MEMBERS syscall.Errno = 1757
+ RPC_S_NOT_ALL_OBJS_UNEXPORTED syscall.Errno = 1758
+ RPC_S_INTERFACE_NOT_FOUND syscall.Errno = 1759
+ RPC_S_ENTRY_ALREADY_EXISTS syscall.Errno = 1760
+ RPC_S_ENTRY_NOT_FOUND syscall.Errno = 1761
+ RPC_S_NAME_SERVICE_UNAVAILABLE syscall.Errno = 1762
+ RPC_S_INVALID_NAF_ID syscall.Errno = 1763
+ RPC_S_CANNOT_SUPPORT syscall.Errno = 1764
+ RPC_S_NO_CONTEXT_AVAILABLE syscall.Errno = 1765
+ RPC_S_INTERNAL_ERROR syscall.Errno = 1766
+ RPC_S_ZERO_DIVIDE syscall.Errno = 1767
+ RPC_S_ADDRESS_ERROR syscall.Errno = 1768
+ RPC_S_FP_DIV_ZERO syscall.Errno = 1769
+ RPC_S_FP_UNDERFLOW syscall.Errno = 1770
+ RPC_S_FP_OVERFLOW syscall.Errno = 1771
+ RPC_X_NO_MORE_ENTRIES syscall.Errno = 1772
+ RPC_X_SS_CHAR_TRANS_OPEN_FAIL syscall.Errno = 1773
+ RPC_X_SS_CHAR_TRANS_SHORT_FILE syscall.Errno = 1774
+ RPC_X_SS_IN_NULL_CONTEXT syscall.Errno = 1775
+ RPC_X_SS_CONTEXT_DAMAGED syscall.Errno = 1777
+ RPC_X_SS_HANDLES_MISMATCH syscall.Errno = 1778
+ RPC_X_SS_CANNOT_GET_CALL_HANDLE syscall.Errno = 1779
+ RPC_X_NULL_REF_POINTER syscall.Errno = 1780
+ RPC_X_ENUM_VALUE_OUT_OF_RANGE syscall.Errno = 1781
+ RPC_X_BYTE_COUNT_TOO_SMALL syscall.Errno = 1782
+ RPC_X_BAD_STUB_DATA syscall.Errno = 1783
+ ERROR_INVALID_USER_BUFFER syscall.Errno = 1784
+ ERROR_UNRECOGNIZED_MEDIA syscall.Errno = 1785
+ ERROR_NO_TRUST_LSA_SECRET syscall.Errno = 1786
+ ERROR_NO_TRUST_SAM_ACCOUNT syscall.Errno = 1787
+ ERROR_TRUSTED_DOMAIN_FAILURE syscall.Errno = 1788
+ ERROR_TRUSTED_RELATIONSHIP_FAILURE syscall.Errno = 1789
+ ERROR_TRUST_FAILURE syscall.Errno = 1790
+ RPC_S_CALL_IN_PROGRESS syscall.Errno = 1791
+ ERROR_NETLOGON_NOT_STARTED syscall.Errno = 1792
+ ERROR_ACCOUNT_EXPIRED syscall.Errno = 1793
+ ERROR_REDIRECTOR_HAS_OPEN_HANDLES syscall.Errno = 1794
+ ERROR_PRINTER_DRIVER_ALREADY_INSTALLED syscall.Errno = 1795
+ ERROR_UNKNOWN_PORT syscall.Errno = 1796
+ ERROR_UNKNOWN_PRINTER_DRIVER syscall.Errno = 1797
+ ERROR_UNKNOWN_PRINTPROCESSOR syscall.Errno = 1798
+ ERROR_INVALID_SEPARATOR_FILE syscall.Errno = 1799
+ ERROR_INVALID_PRIORITY syscall.Errno = 1800
+ ERROR_INVALID_PRINTER_NAME syscall.Errno = 1801
+ ERROR_PRINTER_ALREADY_EXISTS syscall.Errno = 1802
+ ERROR_INVALID_PRINTER_COMMAND syscall.Errno = 1803
+ ERROR_INVALID_DATATYPE syscall.Errno = 1804
+ ERROR_INVALID_ENVIRONMENT syscall.Errno = 1805
+ RPC_S_NO_MORE_BINDINGS syscall.Errno = 1806
+ ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT syscall.Errno = 1807
+ ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT syscall.Errno = 1808
+ ERROR_NOLOGON_SERVER_TRUST_ACCOUNT syscall.Errno = 1809
+ ERROR_DOMAIN_TRUST_INCONSISTENT syscall.Errno = 1810
+ ERROR_SERVER_HAS_OPEN_HANDLES syscall.Errno = 1811
+ ERROR_RESOURCE_DATA_NOT_FOUND syscall.Errno = 1812
+ ERROR_RESOURCE_TYPE_NOT_FOUND syscall.Errno = 1813
+ ERROR_RESOURCE_NAME_NOT_FOUND syscall.Errno = 1814
+ ERROR_RESOURCE_LANG_NOT_FOUND syscall.Errno = 1815
+ ERROR_NOT_ENOUGH_QUOTA syscall.Errno = 1816
+ RPC_S_NO_INTERFACES syscall.Errno = 1817
+ RPC_S_CALL_CANCELLED syscall.Errno = 1818
+ RPC_S_BINDING_INCOMPLETE syscall.Errno = 1819
+ RPC_S_COMM_FAILURE syscall.Errno = 1820
+ RPC_S_UNSUPPORTED_AUTHN_LEVEL syscall.Errno = 1821
+ RPC_S_NO_PRINC_NAME syscall.Errno = 1822
+ RPC_S_NOT_RPC_ERROR syscall.Errno = 1823
+ RPC_S_UUID_LOCAL_ONLY syscall.Errno = 1824
+ RPC_S_SEC_PKG_ERROR syscall.Errno = 1825
+ RPC_S_NOT_CANCELLED syscall.Errno = 1826
+ RPC_X_INVALID_ES_ACTION syscall.Errno = 1827
+ RPC_X_WRONG_ES_VERSION syscall.Errno = 1828
+ RPC_X_WRONG_STUB_VERSION syscall.Errno = 1829
+ RPC_X_INVALID_PIPE_OBJECT syscall.Errno = 1830
+ RPC_X_WRONG_PIPE_ORDER syscall.Errno = 1831
+ RPC_X_WRONG_PIPE_VERSION syscall.Errno = 1832
+ RPC_S_COOKIE_AUTH_FAILED syscall.Errno = 1833
+ RPC_S_DO_NOT_DISTURB syscall.Errno = 1834
+ RPC_S_SYSTEM_HANDLE_COUNT_EXCEEDED syscall.Errno = 1835
+ RPC_S_SYSTEM_HANDLE_TYPE_MISMATCH syscall.Errno = 1836
+ RPC_S_GROUP_MEMBER_NOT_FOUND syscall.Errno = 1898
+ EPT_S_CANT_CREATE syscall.Errno = 1899
+ RPC_S_INVALID_OBJECT syscall.Errno = 1900
+ ERROR_INVALID_TIME syscall.Errno = 1901
+ ERROR_INVALID_FORM_NAME syscall.Errno = 1902
+ ERROR_INVALID_FORM_SIZE syscall.Errno = 1903
+ ERROR_ALREADY_WAITING syscall.Errno = 1904
+ ERROR_PRINTER_DELETED syscall.Errno = 1905
+ ERROR_INVALID_PRINTER_STATE syscall.Errno = 1906
+ ERROR_PASSWORD_MUST_CHANGE syscall.Errno = 1907
+ ERROR_DOMAIN_CONTROLLER_NOT_FOUND syscall.Errno = 1908
+ ERROR_ACCOUNT_LOCKED_OUT syscall.Errno = 1909
+ OR_INVALID_OXID syscall.Errno = 1910
+ OR_INVALID_OID syscall.Errno = 1911
+ OR_INVALID_SET syscall.Errno = 1912
+ RPC_S_SEND_INCOMPLETE syscall.Errno = 1913
+ RPC_S_INVALID_ASYNC_HANDLE syscall.Errno = 1914
+ RPC_S_INVALID_ASYNC_CALL syscall.Errno = 1915
+ RPC_X_PIPE_CLOSED syscall.Errno = 1916
+ RPC_X_PIPE_DISCIPLINE_ERROR syscall.Errno = 1917
+ RPC_X_PIPE_EMPTY syscall.Errno = 1918
+ ERROR_NO_SITENAME syscall.Errno = 1919
+ ERROR_CANT_ACCESS_FILE syscall.Errno = 1920
+ ERROR_CANT_RESOLVE_FILENAME syscall.Errno = 1921
+ RPC_S_ENTRY_TYPE_MISMATCH syscall.Errno = 1922
+ RPC_S_NOT_ALL_OBJS_EXPORTED syscall.Errno = 1923
+ RPC_S_INTERFACE_NOT_EXPORTED syscall.Errno = 1924
+ RPC_S_PROFILE_NOT_ADDED syscall.Errno = 1925
+ RPC_S_PRF_ELT_NOT_ADDED syscall.Errno = 1926
+ RPC_S_PRF_ELT_NOT_REMOVED syscall.Errno = 1927
+ RPC_S_GRP_ELT_NOT_ADDED syscall.Errno = 1928
+ RPC_S_GRP_ELT_NOT_REMOVED syscall.Errno = 1929
+ ERROR_KM_DRIVER_BLOCKED syscall.Errno = 1930
+ ERROR_CONTEXT_EXPIRED syscall.Errno = 1931
+ ERROR_PER_USER_TRUST_QUOTA_EXCEEDED syscall.Errno = 1932
+ ERROR_ALL_USER_TRUST_QUOTA_EXCEEDED syscall.Errno = 1933
+ ERROR_USER_DELETE_TRUST_QUOTA_EXCEEDED syscall.Errno = 1934
+ ERROR_AUTHENTICATION_FIREWALL_FAILED syscall.Errno = 1935
+ ERROR_REMOTE_PRINT_CONNECTIONS_BLOCKED syscall.Errno = 1936
+ ERROR_NTLM_BLOCKED syscall.Errno = 1937
+ ERROR_PASSWORD_CHANGE_REQUIRED syscall.Errno = 1938
+ ERROR_LOST_MODE_LOGON_RESTRICTION syscall.Errno = 1939
+ ERROR_INVALID_PIXEL_FORMAT syscall.Errno = 2000
+ ERROR_BAD_DRIVER syscall.Errno = 2001
+ ERROR_INVALID_WINDOW_STYLE syscall.Errno = 2002
+ ERROR_METAFILE_NOT_SUPPORTED syscall.Errno = 2003
+ ERROR_TRANSFORM_NOT_SUPPORTED syscall.Errno = 2004
+ ERROR_CLIPPING_NOT_SUPPORTED syscall.Errno = 2005
+ ERROR_INVALID_CMM syscall.Errno = 2010
+ ERROR_INVALID_PROFILE syscall.Errno = 2011
+ ERROR_TAG_NOT_FOUND syscall.Errno = 2012
+ ERROR_TAG_NOT_PRESENT syscall.Errno = 2013
+ ERROR_DUPLICATE_TAG syscall.Errno = 2014
+ ERROR_PROFILE_NOT_ASSOCIATED_WITH_DEVICE syscall.Errno = 2015
+ ERROR_PROFILE_NOT_FOUND syscall.Errno = 2016
+ ERROR_INVALID_COLORSPACE syscall.Errno = 2017
+ ERROR_ICM_NOT_ENABLED syscall.Errno = 2018
+ ERROR_DELETING_ICM_XFORM syscall.Errno = 2019
+ ERROR_INVALID_TRANSFORM syscall.Errno = 2020
+ ERROR_COLORSPACE_MISMATCH syscall.Errno = 2021
+ ERROR_INVALID_COLORINDEX syscall.Errno = 2022
+ ERROR_PROFILE_DOES_NOT_MATCH_DEVICE syscall.Errno = 2023
+ ERROR_CONNECTED_OTHER_PASSWORD syscall.Errno = 2108
+ ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT syscall.Errno = 2109
+ ERROR_BAD_USERNAME syscall.Errno = 2202
+ ERROR_NOT_CONNECTED syscall.Errno = 2250
+ ERROR_OPEN_FILES syscall.Errno = 2401
+ ERROR_ACTIVE_CONNECTIONS syscall.Errno = 2402
+ ERROR_DEVICE_IN_USE syscall.Errno = 2404
+ ERROR_UNKNOWN_PRINT_MONITOR syscall.Errno = 3000
+ ERROR_PRINTER_DRIVER_IN_USE syscall.Errno = 3001
+ ERROR_SPOOL_FILE_NOT_FOUND syscall.Errno = 3002
+ ERROR_SPL_NO_STARTDOC syscall.Errno = 3003
+ ERROR_SPL_NO_ADDJOB syscall.Errno = 3004
+ ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED syscall.Errno = 3005
+ ERROR_PRINT_MONITOR_ALREADY_INSTALLED syscall.Errno = 3006
+ ERROR_INVALID_PRINT_MONITOR syscall.Errno = 3007
+ ERROR_PRINT_MONITOR_IN_USE syscall.Errno = 3008
+ ERROR_PRINTER_HAS_JOBS_QUEUED syscall.Errno = 3009
+ ERROR_SUCCESS_REBOOT_REQUIRED syscall.Errno = 3010
+ ERROR_SUCCESS_RESTART_REQUIRED syscall.Errno = 3011
+ ERROR_PRINTER_NOT_FOUND syscall.Errno = 3012
+ ERROR_PRINTER_DRIVER_WARNED syscall.Errno = 3013
+ ERROR_PRINTER_DRIVER_BLOCKED syscall.Errno = 3014
+ ERROR_PRINTER_DRIVER_PACKAGE_IN_USE syscall.Errno = 3015
+ ERROR_CORE_DRIVER_PACKAGE_NOT_FOUND syscall.Errno = 3016
+ ERROR_FAIL_REBOOT_REQUIRED syscall.Errno = 3017
+ ERROR_FAIL_REBOOT_INITIATED syscall.Errno = 3018
+ ERROR_PRINTER_DRIVER_DOWNLOAD_NEEDED syscall.Errno = 3019
+ ERROR_PRINT_JOB_RESTART_REQUIRED syscall.Errno = 3020
+ ERROR_INVALID_PRINTER_DRIVER_MANIFEST syscall.Errno = 3021
+ ERROR_PRINTER_NOT_SHAREABLE syscall.Errno = 3022
+ ERROR_REQUEST_PAUSED syscall.Errno = 3050
+ ERROR_APPEXEC_CONDITION_NOT_SATISFIED syscall.Errno = 3060
+ ERROR_APPEXEC_HANDLE_INVALIDATED syscall.Errno = 3061
+ ERROR_APPEXEC_INVALID_HOST_GENERATION syscall.Errno = 3062
+ ERROR_APPEXEC_UNEXPECTED_PROCESS_REGISTRATION syscall.Errno = 3063
+ ERROR_APPEXEC_INVALID_HOST_STATE syscall.Errno = 3064
+ ERROR_APPEXEC_NO_DONOR syscall.Errno = 3065
+ ERROR_APPEXEC_HOST_ID_MISMATCH syscall.Errno = 3066
+ ERROR_APPEXEC_UNKNOWN_USER syscall.Errno = 3067
+ ERROR_IO_REISSUE_AS_CACHED syscall.Errno = 3950
+ ERROR_WINS_INTERNAL syscall.Errno = 4000
+ ERROR_CAN_NOT_DEL_LOCAL_WINS syscall.Errno = 4001
+ ERROR_STATIC_INIT syscall.Errno = 4002
+ ERROR_INC_BACKUP syscall.Errno = 4003
+ ERROR_FULL_BACKUP syscall.Errno = 4004
+ ERROR_REC_NON_EXISTENT syscall.Errno = 4005
+ ERROR_RPL_NOT_ALLOWED syscall.Errno = 4006
+ PEERDIST_ERROR_CONTENTINFO_VERSION_UNSUPPORTED syscall.Errno = 4050
+ PEERDIST_ERROR_CANNOT_PARSE_CONTENTINFO syscall.Errno = 4051
+ PEERDIST_ERROR_MISSING_DATA syscall.Errno = 4052
+ PEERDIST_ERROR_NO_MORE syscall.Errno = 4053
+ PEERDIST_ERROR_NOT_INITIALIZED syscall.Errno = 4054
+ PEERDIST_ERROR_ALREADY_INITIALIZED syscall.Errno = 4055
+ PEERDIST_ERROR_SHUTDOWN_IN_PROGRESS syscall.Errno = 4056
+ PEERDIST_ERROR_INVALIDATED syscall.Errno = 4057
+ PEERDIST_ERROR_ALREADY_EXISTS syscall.Errno = 4058
+ PEERDIST_ERROR_OPERATION_NOTFOUND syscall.Errno = 4059
+ PEERDIST_ERROR_ALREADY_COMPLETED syscall.Errno = 4060
+ PEERDIST_ERROR_OUT_OF_BOUNDS syscall.Errno = 4061
+ PEERDIST_ERROR_VERSION_UNSUPPORTED syscall.Errno = 4062
+ PEERDIST_ERROR_INVALID_CONFIGURATION syscall.Errno = 4063
+ PEERDIST_ERROR_NOT_LICENSED syscall.Errno = 4064
+ PEERDIST_ERROR_SERVICE_UNAVAILABLE syscall.Errno = 4065
+ PEERDIST_ERROR_TRUST_FAILURE syscall.Errno = 4066
+ ERROR_DHCP_ADDRESS_CONFLICT syscall.Errno = 4100
+ ERROR_WMI_GUID_NOT_FOUND syscall.Errno = 4200
+ ERROR_WMI_INSTANCE_NOT_FOUND syscall.Errno = 4201
+ ERROR_WMI_ITEMID_NOT_FOUND syscall.Errno = 4202
+ ERROR_WMI_TRY_AGAIN syscall.Errno = 4203
+ ERROR_WMI_DP_NOT_FOUND syscall.Errno = 4204
+ ERROR_WMI_UNRESOLVED_INSTANCE_REF syscall.Errno = 4205
+ ERROR_WMI_ALREADY_ENABLED syscall.Errno = 4206
+ ERROR_WMI_GUID_DISCONNECTED syscall.Errno = 4207
+ ERROR_WMI_SERVER_UNAVAILABLE syscall.Errno = 4208
+ ERROR_WMI_DP_FAILED syscall.Errno = 4209
+ ERROR_WMI_INVALID_MOF syscall.Errno = 4210
+ ERROR_WMI_INVALID_REGINFO syscall.Errno = 4211
+ ERROR_WMI_ALREADY_DISABLED syscall.Errno = 4212
+ ERROR_WMI_READ_ONLY syscall.Errno = 4213
+ ERROR_WMI_SET_FAILURE syscall.Errno = 4214
+ ERROR_NOT_APPCONTAINER syscall.Errno = 4250
+ ERROR_APPCONTAINER_REQUIRED syscall.Errno = 4251
+ ERROR_NOT_SUPPORTED_IN_APPCONTAINER syscall.Errno = 4252
+ ERROR_INVALID_PACKAGE_SID_LENGTH syscall.Errno = 4253
+ ERROR_INVALID_MEDIA syscall.Errno = 4300
+ ERROR_INVALID_LIBRARY syscall.Errno = 4301
+ ERROR_INVALID_MEDIA_POOL syscall.Errno = 4302
+ ERROR_DRIVE_MEDIA_MISMATCH syscall.Errno = 4303
+ ERROR_MEDIA_OFFLINE syscall.Errno = 4304
+ ERROR_LIBRARY_OFFLINE syscall.Errno = 4305
+ ERROR_EMPTY syscall.Errno = 4306
+ ERROR_NOT_EMPTY syscall.Errno = 4307
+ ERROR_MEDIA_UNAVAILABLE syscall.Errno = 4308
+ ERROR_RESOURCE_DISABLED syscall.Errno = 4309
+ ERROR_INVALID_CLEANER syscall.Errno = 4310
+ ERROR_UNABLE_TO_CLEAN syscall.Errno = 4311
+ ERROR_OBJECT_NOT_FOUND syscall.Errno = 4312
+ ERROR_DATABASE_FAILURE syscall.Errno = 4313
+ ERROR_DATABASE_FULL syscall.Errno = 4314
+ ERROR_MEDIA_INCOMPATIBLE syscall.Errno = 4315
+ ERROR_RESOURCE_NOT_PRESENT syscall.Errno = 4316
+ ERROR_INVALID_OPERATION syscall.Errno = 4317
+ ERROR_MEDIA_NOT_AVAILABLE syscall.Errno = 4318
+ ERROR_DEVICE_NOT_AVAILABLE syscall.Errno = 4319
+ ERROR_REQUEST_REFUSED syscall.Errno = 4320
+ ERROR_INVALID_DRIVE_OBJECT syscall.Errno = 4321
+ ERROR_LIBRARY_FULL syscall.Errno = 4322
+ ERROR_MEDIUM_NOT_ACCESSIBLE syscall.Errno = 4323
+ ERROR_UNABLE_TO_LOAD_MEDIUM syscall.Errno = 4324
+ ERROR_UNABLE_TO_INVENTORY_DRIVE syscall.Errno = 4325
+ ERROR_UNABLE_TO_INVENTORY_SLOT syscall.Errno = 4326
+ ERROR_UNABLE_TO_INVENTORY_TRANSPORT syscall.Errno = 4327
+ ERROR_TRANSPORT_FULL syscall.Errno = 4328
+ ERROR_CONTROLLING_IEPORT syscall.Errno = 4329
+ ERROR_UNABLE_TO_EJECT_MOUNTED_MEDIA syscall.Errno = 4330
+ ERROR_CLEANER_SLOT_SET syscall.Errno = 4331
+ ERROR_CLEANER_SLOT_NOT_SET syscall.Errno = 4332
+ ERROR_CLEANER_CARTRIDGE_SPENT syscall.Errno = 4333
+ ERROR_UNEXPECTED_OMID syscall.Errno = 4334
+ ERROR_CANT_DELETE_LAST_ITEM syscall.Errno = 4335
+ ERROR_MESSAGE_EXCEEDS_MAX_SIZE syscall.Errno = 4336
+ ERROR_VOLUME_CONTAINS_SYS_FILES syscall.Errno = 4337
+ ERROR_INDIGENOUS_TYPE syscall.Errno = 4338
+ ERROR_NO_SUPPORTING_DRIVES syscall.Errno = 4339
+ ERROR_CLEANER_CARTRIDGE_INSTALLED syscall.Errno = 4340
+ ERROR_IEPORT_FULL syscall.Errno = 4341
+ ERROR_FILE_OFFLINE syscall.Errno = 4350
+ ERROR_REMOTE_STORAGE_NOT_ACTIVE syscall.Errno = 4351
+ ERROR_REMOTE_STORAGE_MEDIA_ERROR syscall.Errno = 4352
+ ERROR_NOT_A_REPARSE_POINT syscall.Errno = 4390
+ ERROR_REPARSE_ATTRIBUTE_CONFLICT syscall.Errno = 4391
+ ERROR_INVALID_REPARSE_DATA syscall.Errno = 4392
+ ERROR_REPARSE_TAG_INVALID syscall.Errno = 4393
+ ERROR_REPARSE_TAG_MISMATCH syscall.Errno = 4394
+ ERROR_REPARSE_POINT_ENCOUNTERED syscall.Errno = 4395
+ ERROR_APP_DATA_NOT_FOUND syscall.Errno = 4400
+ ERROR_APP_DATA_EXPIRED syscall.Errno = 4401
+ ERROR_APP_DATA_CORRUPT syscall.Errno = 4402
+ ERROR_APP_DATA_LIMIT_EXCEEDED syscall.Errno = 4403
+ ERROR_APP_DATA_REBOOT_REQUIRED syscall.Errno = 4404
+ ERROR_SECUREBOOT_ROLLBACK_DETECTED syscall.Errno = 4420
+ ERROR_SECUREBOOT_POLICY_VIOLATION syscall.Errno = 4421
+ ERROR_SECUREBOOT_INVALID_POLICY syscall.Errno = 4422
+ ERROR_SECUREBOOT_POLICY_PUBLISHER_NOT_FOUND syscall.Errno = 4423
+ ERROR_SECUREBOOT_POLICY_NOT_SIGNED syscall.Errno = 4424
+ ERROR_SECUREBOOT_NOT_ENABLED syscall.Errno = 4425
+ ERROR_SECUREBOOT_FILE_REPLACED syscall.Errno = 4426
+ ERROR_SECUREBOOT_POLICY_NOT_AUTHORIZED syscall.Errno = 4427
+ ERROR_SECUREBOOT_POLICY_UNKNOWN syscall.Errno = 4428
+ ERROR_SECUREBOOT_POLICY_MISSING_ANTIROLLBACKVERSION syscall.Errno = 4429
+ ERROR_SECUREBOOT_PLATFORM_ID_MISMATCH syscall.Errno = 4430
+ ERROR_SECUREBOOT_POLICY_ROLLBACK_DETECTED syscall.Errno = 4431
+ ERROR_SECUREBOOT_POLICY_UPGRADE_MISMATCH syscall.Errno = 4432
+ ERROR_SECUREBOOT_REQUIRED_POLICY_FILE_MISSING syscall.Errno = 4433
+ ERROR_SECUREBOOT_NOT_BASE_POLICY syscall.Errno = 4434
+ ERROR_SECUREBOOT_NOT_SUPPLEMENTAL_POLICY syscall.Errno = 4435
+ ERROR_OFFLOAD_READ_FLT_NOT_SUPPORTED syscall.Errno = 4440
+ ERROR_OFFLOAD_WRITE_FLT_NOT_SUPPORTED syscall.Errno = 4441
+ ERROR_OFFLOAD_READ_FILE_NOT_SUPPORTED syscall.Errno = 4442
+ ERROR_OFFLOAD_WRITE_FILE_NOT_SUPPORTED syscall.Errno = 4443
+ ERROR_ALREADY_HAS_STREAM_ID syscall.Errno = 4444
+ ERROR_SMR_GARBAGE_COLLECTION_REQUIRED syscall.Errno = 4445
+ ERROR_WOF_WIM_HEADER_CORRUPT syscall.Errno = 4446
+ ERROR_WOF_WIM_RESOURCE_TABLE_CORRUPT syscall.Errno = 4447
+ ERROR_WOF_FILE_RESOURCE_TABLE_CORRUPT syscall.Errno = 4448
+ ERROR_VOLUME_NOT_SIS_ENABLED syscall.Errno = 4500
+ ERROR_SYSTEM_INTEGRITY_ROLLBACK_DETECTED syscall.Errno = 4550
+ ERROR_SYSTEM_INTEGRITY_POLICY_VIOLATION syscall.Errno = 4551
+ ERROR_SYSTEM_INTEGRITY_INVALID_POLICY syscall.Errno = 4552
+ ERROR_SYSTEM_INTEGRITY_POLICY_NOT_SIGNED syscall.Errno = 4553
+ ERROR_VSM_NOT_INITIALIZED syscall.Errno = 4560
+ ERROR_VSM_DMA_PROTECTION_NOT_IN_USE syscall.Errno = 4561
+ ERROR_PLATFORM_MANIFEST_NOT_AUTHORIZED syscall.Errno = 4570
+ ERROR_PLATFORM_MANIFEST_INVALID syscall.Errno = 4571
+ ERROR_PLATFORM_MANIFEST_FILE_NOT_AUTHORIZED syscall.Errno = 4572
+ ERROR_PLATFORM_MANIFEST_CATALOG_NOT_AUTHORIZED syscall.Errno = 4573
+ ERROR_PLATFORM_MANIFEST_BINARY_ID_NOT_FOUND syscall.Errno = 4574
+ ERROR_PLATFORM_MANIFEST_NOT_ACTIVE syscall.Errno = 4575
+ ERROR_PLATFORM_MANIFEST_NOT_SIGNED syscall.Errno = 4576
+ ERROR_DEPENDENT_RESOURCE_EXISTS syscall.Errno = 5001
+ ERROR_DEPENDENCY_NOT_FOUND syscall.Errno = 5002
+ ERROR_DEPENDENCY_ALREADY_EXISTS syscall.Errno = 5003
+ ERROR_RESOURCE_NOT_ONLINE syscall.Errno = 5004
+ ERROR_HOST_NODE_NOT_AVAILABLE syscall.Errno = 5005
+ ERROR_RESOURCE_NOT_AVAILABLE syscall.Errno = 5006
+ ERROR_RESOURCE_NOT_FOUND syscall.Errno = 5007
+ ERROR_SHUTDOWN_CLUSTER syscall.Errno = 5008
+ ERROR_CANT_EVICT_ACTIVE_NODE syscall.Errno = 5009
+ ERROR_OBJECT_ALREADY_EXISTS syscall.Errno = 5010
+ ERROR_OBJECT_IN_LIST syscall.Errno = 5011
+ ERROR_GROUP_NOT_AVAILABLE syscall.Errno = 5012
+ ERROR_GROUP_NOT_FOUND syscall.Errno = 5013
+ ERROR_GROUP_NOT_ONLINE syscall.Errno = 5014
+ ERROR_HOST_NODE_NOT_RESOURCE_OWNER syscall.Errno = 5015
+ ERROR_HOST_NODE_NOT_GROUP_OWNER syscall.Errno = 5016
+ ERROR_RESMON_CREATE_FAILED syscall.Errno = 5017
+ ERROR_RESMON_ONLINE_FAILED syscall.Errno = 5018
+ ERROR_RESOURCE_ONLINE syscall.Errno = 5019
+ ERROR_QUORUM_RESOURCE syscall.Errno = 5020
+ ERROR_NOT_QUORUM_CAPABLE syscall.Errno = 5021
+ ERROR_CLUSTER_SHUTTING_DOWN syscall.Errno = 5022
+ ERROR_INVALID_STATE syscall.Errno = 5023
+ ERROR_RESOURCE_PROPERTIES_STORED syscall.Errno = 5024
+ ERROR_NOT_QUORUM_CLASS syscall.Errno = 5025
+ ERROR_CORE_RESOURCE syscall.Errno = 5026
+ ERROR_QUORUM_RESOURCE_ONLINE_FAILED syscall.Errno = 5027
+ ERROR_QUORUMLOG_OPEN_FAILED syscall.Errno = 5028
+ ERROR_CLUSTERLOG_CORRUPT syscall.Errno = 5029
+ ERROR_CLUSTERLOG_RECORD_EXCEEDS_MAXSIZE syscall.Errno = 5030
+ ERROR_CLUSTERLOG_EXCEEDS_MAXSIZE syscall.Errno = 5031
+ ERROR_CLUSTERLOG_CHKPOINT_NOT_FOUND syscall.Errno = 5032
+ ERROR_CLUSTERLOG_NOT_ENOUGH_SPACE syscall.Errno = 5033
+ ERROR_QUORUM_OWNER_ALIVE syscall.Errno = 5034
+ ERROR_NETWORK_NOT_AVAILABLE syscall.Errno = 5035
+ ERROR_NODE_NOT_AVAILABLE syscall.Errno = 5036
+ ERROR_ALL_NODES_NOT_AVAILABLE syscall.Errno = 5037
+ ERROR_RESOURCE_FAILED syscall.Errno = 5038
+ ERROR_CLUSTER_INVALID_NODE syscall.Errno = 5039
+ ERROR_CLUSTER_NODE_EXISTS syscall.Errno = 5040
+ ERROR_CLUSTER_JOIN_IN_PROGRESS syscall.Errno = 5041
+ ERROR_CLUSTER_NODE_NOT_FOUND syscall.Errno = 5042
+ ERROR_CLUSTER_LOCAL_NODE_NOT_FOUND syscall.Errno = 5043
+ ERROR_CLUSTER_NETWORK_EXISTS syscall.Errno = 5044
+ ERROR_CLUSTER_NETWORK_NOT_FOUND syscall.Errno = 5045
+ ERROR_CLUSTER_NETINTERFACE_EXISTS syscall.Errno = 5046
+ ERROR_CLUSTER_NETINTERFACE_NOT_FOUND syscall.Errno = 5047
+ ERROR_CLUSTER_INVALID_REQUEST syscall.Errno = 5048
+ ERROR_CLUSTER_INVALID_NETWORK_PROVIDER syscall.Errno = 5049
+ ERROR_CLUSTER_NODE_DOWN syscall.Errno = 5050
+ ERROR_CLUSTER_NODE_UNREACHABLE syscall.Errno = 5051
+ ERROR_CLUSTER_NODE_NOT_MEMBER syscall.Errno = 5052
+ ERROR_CLUSTER_JOIN_NOT_IN_PROGRESS syscall.Errno = 5053
+ ERROR_CLUSTER_INVALID_NETWORK syscall.Errno = 5054
+ ERROR_CLUSTER_NODE_UP syscall.Errno = 5056
+ ERROR_CLUSTER_IPADDR_IN_USE syscall.Errno = 5057
+ ERROR_CLUSTER_NODE_NOT_PAUSED syscall.Errno = 5058
+ ERROR_CLUSTER_NO_SECURITY_CONTEXT syscall.Errno = 5059
+ ERROR_CLUSTER_NETWORK_NOT_INTERNAL syscall.Errno = 5060
+ ERROR_CLUSTER_NODE_ALREADY_UP syscall.Errno = 5061
+ ERROR_CLUSTER_NODE_ALREADY_DOWN syscall.Errno = 5062
+ ERROR_CLUSTER_NETWORK_ALREADY_ONLINE syscall.Errno = 5063
+ ERROR_CLUSTER_NETWORK_ALREADY_OFFLINE syscall.Errno = 5064
+ ERROR_CLUSTER_NODE_ALREADY_MEMBER syscall.Errno = 5065
+ ERROR_CLUSTER_LAST_INTERNAL_NETWORK syscall.Errno = 5066
+ ERROR_CLUSTER_NETWORK_HAS_DEPENDENTS syscall.Errno = 5067
+ ERROR_INVALID_OPERATION_ON_QUORUM syscall.Errno = 5068
+ ERROR_DEPENDENCY_NOT_ALLOWED syscall.Errno = 5069
+ ERROR_CLUSTER_NODE_PAUSED syscall.Errno = 5070
+ ERROR_NODE_CANT_HOST_RESOURCE syscall.Errno = 5071
+ ERROR_CLUSTER_NODE_NOT_READY syscall.Errno = 5072
+ ERROR_CLUSTER_NODE_SHUTTING_DOWN syscall.Errno = 5073
+ ERROR_CLUSTER_JOIN_ABORTED syscall.Errno = 5074
+ ERROR_CLUSTER_INCOMPATIBLE_VERSIONS syscall.Errno = 5075
+ ERROR_CLUSTER_MAXNUM_OF_RESOURCES_EXCEEDED syscall.Errno = 5076
+ ERROR_CLUSTER_SYSTEM_CONFIG_CHANGED syscall.Errno = 5077
+ ERROR_CLUSTER_RESOURCE_TYPE_NOT_FOUND syscall.Errno = 5078
+ ERROR_CLUSTER_RESTYPE_NOT_SUPPORTED syscall.Errno = 5079
+ ERROR_CLUSTER_RESNAME_NOT_FOUND syscall.Errno = 5080
+ ERROR_CLUSTER_NO_RPC_PACKAGES_REGISTERED syscall.Errno = 5081
+ ERROR_CLUSTER_OWNER_NOT_IN_PREFLIST syscall.Errno = 5082
+ ERROR_CLUSTER_DATABASE_SEQMISMATCH syscall.Errno = 5083
+ ERROR_RESMON_INVALID_STATE syscall.Errno = 5084
+ ERROR_CLUSTER_GUM_NOT_LOCKER syscall.Errno = 5085
+ ERROR_QUORUM_DISK_NOT_FOUND syscall.Errno = 5086
+ ERROR_DATABASE_BACKUP_CORRUPT syscall.Errno = 5087
+ ERROR_CLUSTER_NODE_ALREADY_HAS_DFS_ROOT syscall.Errno = 5088
+ ERROR_RESOURCE_PROPERTY_UNCHANGEABLE syscall.Errno = 5089
+ ERROR_NO_ADMIN_ACCESS_POINT syscall.Errno = 5090
+ ERROR_CLUSTER_MEMBERSHIP_INVALID_STATE syscall.Errno = 5890
+ ERROR_CLUSTER_QUORUMLOG_NOT_FOUND syscall.Errno = 5891
+ ERROR_CLUSTER_MEMBERSHIP_HALT syscall.Errno = 5892
+ ERROR_CLUSTER_INSTANCE_ID_MISMATCH syscall.Errno = 5893
+ ERROR_CLUSTER_NETWORK_NOT_FOUND_FOR_IP syscall.Errno = 5894
+ ERROR_CLUSTER_PROPERTY_DATA_TYPE_MISMATCH syscall.Errno = 5895
+ ERROR_CLUSTER_EVICT_WITHOUT_CLEANUP syscall.Errno = 5896
+ ERROR_CLUSTER_PARAMETER_MISMATCH syscall.Errno = 5897
+ ERROR_NODE_CANNOT_BE_CLUSTERED syscall.Errno = 5898
+ ERROR_CLUSTER_WRONG_OS_VERSION syscall.Errno = 5899
+ ERROR_CLUSTER_CANT_CREATE_DUP_CLUSTER_NAME syscall.Errno = 5900
+ ERROR_CLUSCFG_ALREADY_COMMITTED syscall.Errno = 5901
+ ERROR_CLUSCFG_ROLLBACK_FAILED syscall.Errno = 5902
+ ERROR_CLUSCFG_SYSTEM_DISK_DRIVE_LETTER_CONFLICT syscall.Errno = 5903
+ ERROR_CLUSTER_OLD_VERSION syscall.Errno = 5904
+ ERROR_CLUSTER_MISMATCHED_COMPUTER_ACCT_NAME syscall.Errno = 5905
+ ERROR_CLUSTER_NO_NET_ADAPTERS syscall.Errno = 5906
+ ERROR_CLUSTER_POISONED syscall.Errno = 5907
+ ERROR_CLUSTER_GROUP_MOVING syscall.Errno = 5908
+ ERROR_CLUSTER_RESOURCE_TYPE_BUSY syscall.Errno = 5909
+ ERROR_RESOURCE_CALL_TIMED_OUT syscall.Errno = 5910
+ ERROR_INVALID_CLUSTER_IPV6_ADDRESS syscall.Errno = 5911
+ ERROR_CLUSTER_INTERNAL_INVALID_FUNCTION syscall.Errno = 5912
+ ERROR_CLUSTER_PARAMETER_OUT_OF_BOUNDS syscall.Errno = 5913
+ ERROR_CLUSTER_PARTIAL_SEND syscall.Errno = 5914
+ ERROR_CLUSTER_REGISTRY_INVALID_FUNCTION syscall.Errno = 5915
+ ERROR_CLUSTER_INVALID_STRING_TERMINATION syscall.Errno = 5916
+ ERROR_CLUSTER_INVALID_STRING_FORMAT syscall.Errno = 5917
+ ERROR_CLUSTER_DATABASE_TRANSACTION_IN_PROGRESS syscall.Errno = 5918
+ ERROR_CLUSTER_DATABASE_TRANSACTION_NOT_IN_PROGRESS syscall.Errno = 5919
+ ERROR_CLUSTER_NULL_DATA syscall.Errno = 5920
+ ERROR_CLUSTER_PARTIAL_READ syscall.Errno = 5921
+ ERROR_CLUSTER_PARTIAL_WRITE syscall.Errno = 5922
+ ERROR_CLUSTER_CANT_DESERIALIZE_DATA syscall.Errno = 5923
+ ERROR_DEPENDENT_RESOURCE_PROPERTY_CONFLICT syscall.Errno = 5924
+ ERROR_CLUSTER_NO_QUORUM syscall.Errno = 5925
+ ERROR_CLUSTER_INVALID_IPV6_NETWORK syscall.Errno = 5926
+ ERROR_CLUSTER_INVALID_IPV6_TUNNEL_NETWORK syscall.Errno = 5927
+ ERROR_QUORUM_NOT_ALLOWED_IN_THIS_GROUP syscall.Errno = 5928
+ ERROR_DEPENDENCY_TREE_TOO_COMPLEX syscall.Errno = 5929
+ ERROR_EXCEPTION_IN_RESOURCE_CALL syscall.Errno = 5930
+ ERROR_CLUSTER_RHS_FAILED_INITIALIZATION syscall.Errno = 5931
+ ERROR_CLUSTER_NOT_INSTALLED syscall.Errno = 5932
+ ERROR_CLUSTER_RESOURCES_MUST_BE_ONLINE_ON_THE_SAME_NODE syscall.Errno = 5933
+ ERROR_CLUSTER_MAX_NODES_IN_CLUSTER syscall.Errno = 5934
+ ERROR_CLUSTER_TOO_MANY_NODES syscall.Errno = 5935
+ ERROR_CLUSTER_OBJECT_ALREADY_USED syscall.Errno = 5936
+ ERROR_NONCORE_GROUPS_FOUND syscall.Errno = 5937
+ ERROR_FILE_SHARE_RESOURCE_CONFLICT syscall.Errno = 5938
+ ERROR_CLUSTER_EVICT_INVALID_REQUEST syscall.Errno = 5939
+ ERROR_CLUSTER_SINGLETON_RESOURCE syscall.Errno = 5940
+ ERROR_CLUSTER_GROUP_SINGLETON_RESOURCE syscall.Errno = 5941
+ ERROR_CLUSTER_RESOURCE_PROVIDER_FAILED syscall.Errno = 5942
+ ERROR_CLUSTER_RESOURCE_CONFIGURATION_ERROR syscall.Errno = 5943
+ ERROR_CLUSTER_GROUP_BUSY syscall.Errno = 5944
+ ERROR_CLUSTER_NOT_SHARED_VOLUME syscall.Errno = 5945
+ ERROR_CLUSTER_INVALID_SECURITY_DESCRIPTOR syscall.Errno = 5946
+ ERROR_CLUSTER_SHARED_VOLUMES_IN_USE syscall.Errno = 5947
+ ERROR_CLUSTER_USE_SHARED_VOLUMES_API syscall.Errno = 5948
+ ERROR_CLUSTER_BACKUP_IN_PROGRESS syscall.Errno = 5949
+ ERROR_NON_CSV_PATH syscall.Errno = 5950
+ ERROR_CSV_VOLUME_NOT_LOCAL syscall.Errno = 5951
+ ERROR_CLUSTER_WATCHDOG_TERMINATING syscall.Errno = 5952
+ ERROR_CLUSTER_RESOURCE_VETOED_MOVE_INCOMPATIBLE_NODES syscall.Errno = 5953
+ ERROR_CLUSTER_INVALID_NODE_WEIGHT syscall.Errno = 5954
+ ERROR_CLUSTER_RESOURCE_VETOED_CALL syscall.Errno = 5955
+ ERROR_RESMON_SYSTEM_RESOURCES_LACKING syscall.Errno = 5956
+ ERROR_CLUSTER_RESOURCE_VETOED_MOVE_NOT_ENOUGH_RESOURCES_ON_DESTINATION syscall.Errno = 5957
+ ERROR_CLUSTER_RESOURCE_VETOED_MOVE_NOT_ENOUGH_RESOURCES_ON_SOURCE syscall.Errno = 5958
+ ERROR_CLUSTER_GROUP_QUEUED syscall.Errno = 5959
+ ERROR_CLUSTER_RESOURCE_LOCKED_STATUS syscall.Errno = 5960
+ ERROR_CLUSTER_SHARED_VOLUME_FAILOVER_NOT_ALLOWED syscall.Errno = 5961
+ ERROR_CLUSTER_NODE_DRAIN_IN_PROGRESS syscall.Errno = 5962
+ ERROR_CLUSTER_DISK_NOT_CONNECTED syscall.Errno = 5963
+ ERROR_DISK_NOT_CSV_CAPABLE syscall.Errno = 5964
+ ERROR_RESOURCE_NOT_IN_AVAILABLE_STORAGE syscall.Errno = 5965
+ ERROR_CLUSTER_SHARED_VOLUME_REDIRECTED syscall.Errno = 5966
+ ERROR_CLUSTER_SHARED_VOLUME_NOT_REDIRECTED syscall.Errno = 5967
+ ERROR_CLUSTER_CANNOT_RETURN_PROPERTIES syscall.Errno = 5968
+ ERROR_CLUSTER_RESOURCE_CONTAINS_UNSUPPORTED_DIFF_AREA_FOR_SHARED_VOLUMES syscall.Errno = 5969
+ ERROR_CLUSTER_RESOURCE_IS_IN_MAINTENANCE_MODE syscall.Errno = 5970
+ ERROR_CLUSTER_AFFINITY_CONFLICT syscall.Errno = 5971
+ ERROR_CLUSTER_RESOURCE_IS_REPLICA_VIRTUAL_MACHINE syscall.Errno = 5972
+ ERROR_CLUSTER_UPGRADE_INCOMPATIBLE_VERSIONS syscall.Errno = 5973
+ ERROR_CLUSTER_UPGRADE_FIX_QUORUM_NOT_SUPPORTED syscall.Errno = 5974
+ ERROR_CLUSTER_UPGRADE_RESTART_REQUIRED syscall.Errno = 5975
+ ERROR_CLUSTER_UPGRADE_IN_PROGRESS syscall.Errno = 5976
+ ERROR_CLUSTER_UPGRADE_INCOMPLETE syscall.Errno = 5977
+ ERROR_CLUSTER_NODE_IN_GRACE_PERIOD syscall.Errno = 5978
+ ERROR_CLUSTER_CSV_IO_PAUSE_TIMEOUT syscall.Errno = 5979
+ ERROR_NODE_NOT_ACTIVE_CLUSTER_MEMBER syscall.Errno = 5980
+ ERROR_CLUSTER_RESOURCE_NOT_MONITORED syscall.Errno = 5981
+ ERROR_CLUSTER_RESOURCE_DOES_NOT_SUPPORT_UNMONITORED syscall.Errno = 5982
+ ERROR_CLUSTER_RESOURCE_IS_REPLICATED syscall.Errno = 5983
+ ERROR_CLUSTER_NODE_ISOLATED syscall.Errno = 5984
+ ERROR_CLUSTER_NODE_QUARANTINED syscall.Errno = 5985
+ ERROR_CLUSTER_DATABASE_UPDATE_CONDITION_FAILED syscall.Errno = 5986
+ ERROR_CLUSTER_SPACE_DEGRADED syscall.Errno = 5987
+ ERROR_CLUSTER_TOKEN_DELEGATION_NOT_SUPPORTED syscall.Errno = 5988
+ ERROR_CLUSTER_CSV_INVALID_HANDLE syscall.Errno = 5989
+ ERROR_CLUSTER_CSV_SUPPORTED_ONLY_ON_COORDINATOR syscall.Errno = 5990
+ ERROR_GROUPSET_NOT_AVAILABLE syscall.Errno = 5991
+ ERROR_GROUPSET_NOT_FOUND syscall.Errno = 5992
+ ERROR_GROUPSET_CANT_PROVIDE syscall.Errno = 5993
+ ERROR_CLUSTER_FAULT_DOMAIN_PARENT_NOT_FOUND syscall.Errno = 5994
+ ERROR_CLUSTER_FAULT_DOMAIN_INVALID_HIERARCHY syscall.Errno = 5995
+ ERROR_CLUSTER_FAULT_DOMAIN_FAILED_S2D_VALIDATION syscall.Errno = 5996
+ ERROR_CLUSTER_FAULT_DOMAIN_S2D_CONNECTIVITY_LOSS syscall.Errno = 5997
+ ERROR_CLUSTER_INVALID_INFRASTRUCTURE_FILESERVER_NAME syscall.Errno = 5998
+ ERROR_CLUSTERSET_MANAGEMENT_CLUSTER_UNREACHABLE syscall.Errno = 5999
+ ERROR_ENCRYPTION_FAILED syscall.Errno = 6000
+ ERROR_DECRYPTION_FAILED syscall.Errno = 6001
+ ERROR_FILE_ENCRYPTED syscall.Errno = 6002
+ ERROR_NO_RECOVERY_POLICY syscall.Errno = 6003
+ ERROR_NO_EFS syscall.Errno = 6004
+ ERROR_WRONG_EFS syscall.Errno = 6005
+ ERROR_NO_USER_KEYS syscall.Errno = 6006
+ ERROR_FILE_NOT_ENCRYPTED syscall.Errno = 6007
+ ERROR_NOT_EXPORT_FORMAT syscall.Errno = 6008
+ ERROR_FILE_READ_ONLY syscall.Errno = 6009
+ ERROR_DIR_EFS_DISALLOWED syscall.Errno = 6010
+ ERROR_EFS_SERVER_NOT_TRUSTED syscall.Errno = 6011
+ ERROR_BAD_RECOVERY_POLICY syscall.Errno = 6012
+ ERROR_EFS_ALG_BLOB_TOO_BIG syscall.Errno = 6013
+ ERROR_VOLUME_NOT_SUPPORT_EFS syscall.Errno = 6014
+ ERROR_EFS_DISABLED syscall.Errno = 6015
+ ERROR_EFS_VERSION_NOT_SUPPORT syscall.Errno = 6016
+ ERROR_CS_ENCRYPTION_INVALID_SERVER_RESPONSE syscall.Errno = 6017
+ ERROR_CS_ENCRYPTION_UNSUPPORTED_SERVER syscall.Errno = 6018
+ ERROR_CS_ENCRYPTION_EXISTING_ENCRYPTED_FILE syscall.Errno = 6019
+ ERROR_CS_ENCRYPTION_NEW_ENCRYPTED_FILE syscall.Errno = 6020
+ ERROR_CS_ENCRYPTION_FILE_NOT_CSE syscall.Errno = 6021
+ ERROR_ENCRYPTION_POLICY_DENIES_OPERATION syscall.Errno = 6022
+ ERROR_NO_BROWSER_SERVERS_FOUND syscall.Errno = 6118
+ SCHED_E_SERVICE_NOT_LOCALSYSTEM syscall.Errno = 6200
+ ERROR_LOG_SECTOR_INVALID syscall.Errno = 6600
+ ERROR_LOG_SECTOR_PARITY_INVALID syscall.Errno = 6601
+ ERROR_LOG_SECTOR_REMAPPED syscall.Errno = 6602
+ ERROR_LOG_BLOCK_INCOMPLETE syscall.Errno = 6603
+ ERROR_LOG_INVALID_RANGE syscall.Errno = 6604
+ ERROR_LOG_BLOCKS_EXHAUSTED syscall.Errno = 6605
+ ERROR_LOG_READ_CONTEXT_INVALID syscall.Errno = 6606
+ ERROR_LOG_RESTART_INVALID syscall.Errno = 6607
+ ERROR_LOG_BLOCK_VERSION syscall.Errno = 6608
+ ERROR_LOG_BLOCK_INVALID syscall.Errno = 6609
+ ERROR_LOG_READ_MODE_INVALID syscall.Errno = 6610
+ ERROR_LOG_NO_RESTART syscall.Errno = 6611
+ ERROR_LOG_METADATA_CORRUPT syscall.Errno = 6612
+ ERROR_LOG_METADATA_INVALID syscall.Errno = 6613
+ ERROR_LOG_METADATA_INCONSISTENT syscall.Errno = 6614
+ ERROR_LOG_RESERVATION_INVALID syscall.Errno = 6615
+ ERROR_LOG_CANT_DELETE syscall.Errno = 6616
+ ERROR_LOG_CONTAINER_LIMIT_EXCEEDED syscall.Errno = 6617
+ ERROR_LOG_START_OF_LOG syscall.Errno = 6618
+ ERROR_LOG_POLICY_ALREADY_INSTALLED syscall.Errno = 6619
+ ERROR_LOG_POLICY_NOT_INSTALLED syscall.Errno = 6620
+ ERROR_LOG_POLICY_INVALID syscall.Errno = 6621
+ ERROR_LOG_POLICY_CONFLICT syscall.Errno = 6622
+ ERROR_LOG_PINNED_ARCHIVE_TAIL syscall.Errno = 6623
+ ERROR_LOG_RECORD_NONEXISTENT syscall.Errno = 6624
+ ERROR_LOG_RECORDS_RESERVED_INVALID syscall.Errno = 6625
+ ERROR_LOG_SPACE_RESERVED_INVALID syscall.Errno = 6626
+ ERROR_LOG_TAIL_INVALID syscall.Errno = 6627
+ ERROR_LOG_FULL syscall.Errno = 6628
+ ERROR_COULD_NOT_RESIZE_LOG syscall.Errno = 6629
+ ERROR_LOG_MULTIPLEXED syscall.Errno = 6630
+ ERROR_LOG_DEDICATED syscall.Errno = 6631
+ ERROR_LOG_ARCHIVE_NOT_IN_PROGRESS syscall.Errno = 6632
+ ERROR_LOG_ARCHIVE_IN_PROGRESS syscall.Errno = 6633
+ ERROR_LOG_EPHEMERAL syscall.Errno = 6634
+ ERROR_LOG_NOT_ENOUGH_CONTAINERS syscall.Errno = 6635
+ ERROR_LOG_CLIENT_ALREADY_REGISTERED syscall.Errno = 6636
+ ERROR_LOG_CLIENT_NOT_REGISTERED syscall.Errno = 6637
+ ERROR_LOG_FULL_HANDLER_IN_PROGRESS syscall.Errno = 6638
+ ERROR_LOG_CONTAINER_READ_FAILED syscall.Errno = 6639
+ ERROR_LOG_CONTAINER_WRITE_FAILED syscall.Errno = 6640
+ ERROR_LOG_CONTAINER_OPEN_FAILED syscall.Errno = 6641
+ ERROR_LOG_CONTAINER_STATE_INVALID syscall.Errno = 6642
+ ERROR_LOG_STATE_INVALID syscall.Errno = 6643
+ ERROR_LOG_PINNED syscall.Errno = 6644
+ ERROR_LOG_METADATA_FLUSH_FAILED syscall.Errno = 6645
+ ERROR_LOG_INCONSISTENT_SECURITY syscall.Errno = 6646
+ ERROR_LOG_APPENDED_FLUSH_FAILED syscall.Errno = 6647
+ ERROR_LOG_PINNED_RESERVATION syscall.Errno = 6648
+ ERROR_INVALID_TRANSACTION syscall.Errno = 6700
+ ERROR_TRANSACTION_NOT_ACTIVE syscall.Errno = 6701
+ ERROR_TRANSACTION_REQUEST_NOT_VALID syscall.Errno = 6702
+ ERROR_TRANSACTION_NOT_REQUESTED syscall.Errno = 6703
+ ERROR_TRANSACTION_ALREADY_ABORTED syscall.Errno = 6704
+ ERROR_TRANSACTION_ALREADY_COMMITTED syscall.Errno = 6705
+ ERROR_TM_INITIALIZATION_FAILED syscall.Errno = 6706
+ ERROR_RESOURCEMANAGER_READ_ONLY syscall.Errno = 6707
+ ERROR_TRANSACTION_NOT_JOINED syscall.Errno = 6708
+ ERROR_TRANSACTION_SUPERIOR_EXISTS syscall.Errno = 6709
+ ERROR_CRM_PROTOCOL_ALREADY_EXISTS syscall.Errno = 6710
+ ERROR_TRANSACTION_PROPAGATION_FAILED syscall.Errno = 6711
+ ERROR_CRM_PROTOCOL_NOT_FOUND syscall.Errno = 6712
+ ERROR_TRANSACTION_INVALID_MARSHALL_BUFFER syscall.Errno = 6713
+ ERROR_CURRENT_TRANSACTION_NOT_VALID syscall.Errno = 6714
+ ERROR_TRANSACTION_NOT_FOUND syscall.Errno = 6715
+ ERROR_RESOURCEMANAGER_NOT_FOUND syscall.Errno = 6716
+ ERROR_ENLISTMENT_NOT_FOUND syscall.Errno = 6717
+ ERROR_TRANSACTIONMANAGER_NOT_FOUND syscall.Errno = 6718
+ ERROR_TRANSACTIONMANAGER_NOT_ONLINE syscall.Errno = 6719
+ ERROR_TRANSACTIONMANAGER_RECOVERY_NAME_COLLISION syscall.Errno = 6720
+ ERROR_TRANSACTION_NOT_ROOT syscall.Errno = 6721
+ ERROR_TRANSACTION_OBJECT_EXPIRED syscall.Errno = 6722
+ ERROR_TRANSACTION_RESPONSE_NOT_ENLISTED syscall.Errno = 6723
+ ERROR_TRANSACTION_RECORD_TOO_LONG syscall.Errno = 6724
+ ERROR_IMPLICIT_TRANSACTION_NOT_SUPPORTED syscall.Errno = 6725
+ ERROR_TRANSACTION_INTEGRITY_VIOLATED syscall.Errno = 6726
+ ERROR_TRANSACTIONMANAGER_IDENTITY_MISMATCH syscall.Errno = 6727
+ ERROR_RM_CANNOT_BE_FROZEN_FOR_SNAPSHOT syscall.Errno = 6728
+ ERROR_TRANSACTION_MUST_WRITETHROUGH syscall.Errno = 6729
+ ERROR_TRANSACTION_NO_SUPERIOR syscall.Errno = 6730
+ ERROR_HEURISTIC_DAMAGE_POSSIBLE syscall.Errno = 6731
+ ERROR_TRANSACTIONAL_CONFLICT syscall.Errno = 6800
+ ERROR_RM_NOT_ACTIVE syscall.Errno = 6801
+ ERROR_RM_METADATA_CORRUPT syscall.Errno = 6802
+ ERROR_DIRECTORY_NOT_RM syscall.Errno = 6803
+ ERROR_TRANSACTIONS_UNSUPPORTED_REMOTE syscall.Errno = 6805
+ ERROR_LOG_RESIZE_INVALID_SIZE syscall.Errno = 6806
+ ERROR_OBJECT_NO_LONGER_EXISTS syscall.Errno = 6807
+ ERROR_STREAM_MINIVERSION_NOT_FOUND syscall.Errno = 6808
+ ERROR_STREAM_MINIVERSION_NOT_VALID syscall.Errno = 6809
+ ERROR_MINIVERSION_INACCESSIBLE_FROM_SPECIFIED_TRANSACTION syscall.Errno = 6810
+ ERROR_CANT_OPEN_MINIVERSION_WITH_MODIFY_INTENT syscall.Errno = 6811
+ ERROR_CANT_CREATE_MORE_STREAM_MINIVERSIONS syscall.Errno = 6812
+ ERROR_REMOTE_FILE_VERSION_MISMATCH syscall.Errno = 6814
+ ERROR_HANDLE_NO_LONGER_VALID syscall.Errno = 6815
+ ERROR_NO_TXF_METADATA syscall.Errno = 6816
+ ERROR_LOG_CORRUPTION_DETECTED syscall.Errno = 6817
+ ERROR_CANT_RECOVER_WITH_HANDLE_OPEN syscall.Errno = 6818
+ ERROR_RM_DISCONNECTED syscall.Errno = 6819
+ ERROR_ENLISTMENT_NOT_SUPERIOR syscall.Errno = 6820
+ ERROR_RECOVERY_NOT_NEEDED syscall.Errno = 6821
+ ERROR_RM_ALREADY_STARTED syscall.Errno = 6822
+ ERROR_FILE_IDENTITY_NOT_PERSISTENT syscall.Errno = 6823
+ ERROR_CANT_BREAK_TRANSACTIONAL_DEPENDENCY syscall.Errno = 6824
+ ERROR_CANT_CROSS_RM_BOUNDARY syscall.Errno = 6825
+ ERROR_TXF_DIR_NOT_EMPTY syscall.Errno = 6826
+ ERROR_INDOUBT_TRANSACTIONS_EXIST syscall.Errno = 6827
+ ERROR_TM_VOLATILE syscall.Errno = 6828
+ ERROR_ROLLBACK_TIMER_EXPIRED syscall.Errno = 6829
+ ERROR_TXF_ATTRIBUTE_CORRUPT syscall.Errno = 6830
+ ERROR_EFS_NOT_ALLOWED_IN_TRANSACTION syscall.Errno = 6831
+ ERROR_TRANSACTIONAL_OPEN_NOT_ALLOWED syscall.Errno = 6832
+ ERROR_LOG_GROWTH_FAILED syscall.Errno = 6833
+ ERROR_TRANSACTED_MAPPING_UNSUPPORTED_REMOTE syscall.Errno = 6834
+ ERROR_TXF_METADATA_ALREADY_PRESENT syscall.Errno = 6835
+ ERROR_TRANSACTION_SCOPE_CALLBACKS_NOT_SET syscall.Errno = 6836
+ ERROR_TRANSACTION_REQUIRED_PROMOTION syscall.Errno = 6837
+ ERROR_CANNOT_EXECUTE_FILE_IN_TRANSACTION syscall.Errno = 6838
+ ERROR_TRANSACTIONS_NOT_FROZEN syscall.Errno = 6839
+ ERROR_TRANSACTION_FREEZE_IN_PROGRESS syscall.Errno = 6840
+ ERROR_NOT_SNAPSHOT_VOLUME syscall.Errno = 6841
+ ERROR_NO_SAVEPOINT_WITH_OPEN_FILES syscall.Errno = 6842
+ ERROR_DATA_LOST_REPAIR syscall.Errno = 6843
+ ERROR_SPARSE_NOT_ALLOWED_IN_TRANSACTION syscall.Errno = 6844
+ ERROR_TM_IDENTITY_MISMATCH syscall.Errno = 6845
+ ERROR_FLOATED_SECTION syscall.Errno = 6846
+ ERROR_CANNOT_ACCEPT_TRANSACTED_WORK syscall.Errno = 6847
+ ERROR_CANNOT_ABORT_TRANSACTIONS syscall.Errno = 6848
+ ERROR_BAD_CLUSTERS syscall.Errno = 6849
+ ERROR_COMPRESSION_NOT_ALLOWED_IN_TRANSACTION syscall.Errno = 6850
+ ERROR_VOLUME_DIRTY syscall.Errno = 6851
+ ERROR_NO_LINK_TRACKING_IN_TRANSACTION syscall.Errno = 6852
+ ERROR_OPERATION_NOT_SUPPORTED_IN_TRANSACTION syscall.Errno = 6853
+ ERROR_EXPIRED_HANDLE syscall.Errno = 6854
+ ERROR_TRANSACTION_NOT_ENLISTED syscall.Errno = 6855
+ ERROR_CTX_WINSTATION_NAME_INVALID syscall.Errno = 7001
+ ERROR_CTX_INVALID_PD syscall.Errno = 7002
+ ERROR_CTX_PD_NOT_FOUND syscall.Errno = 7003
+ ERROR_CTX_WD_NOT_FOUND syscall.Errno = 7004
+ ERROR_CTX_CANNOT_MAKE_EVENTLOG_ENTRY syscall.Errno = 7005
+ ERROR_CTX_SERVICE_NAME_COLLISION syscall.Errno = 7006
+ ERROR_CTX_CLOSE_PENDING syscall.Errno = 7007
+ ERROR_CTX_NO_OUTBUF syscall.Errno = 7008
+ ERROR_CTX_MODEM_INF_NOT_FOUND syscall.Errno = 7009
+ ERROR_CTX_INVALID_MODEMNAME syscall.Errno = 7010
+ ERROR_CTX_MODEM_RESPONSE_ERROR syscall.Errno = 7011
+ ERROR_CTX_MODEM_RESPONSE_TIMEOUT syscall.Errno = 7012
+ ERROR_CTX_MODEM_RESPONSE_NO_CARRIER syscall.Errno = 7013
+ ERROR_CTX_MODEM_RESPONSE_NO_DIALTONE syscall.Errno = 7014
+ ERROR_CTX_MODEM_RESPONSE_BUSY syscall.Errno = 7015
+ ERROR_CTX_MODEM_RESPONSE_VOICE syscall.Errno = 7016
+ ERROR_CTX_TD_ERROR syscall.Errno = 7017
+ ERROR_CTX_WINSTATION_NOT_FOUND syscall.Errno = 7022
+ ERROR_CTX_WINSTATION_ALREADY_EXISTS syscall.Errno = 7023
+ ERROR_CTX_WINSTATION_BUSY syscall.Errno = 7024
+ ERROR_CTX_BAD_VIDEO_MODE syscall.Errno = 7025
+ ERROR_CTX_GRAPHICS_INVALID syscall.Errno = 7035
+ ERROR_CTX_LOGON_DISABLED syscall.Errno = 7037
+ ERROR_CTX_NOT_CONSOLE syscall.Errno = 7038
+ ERROR_CTX_CLIENT_QUERY_TIMEOUT syscall.Errno = 7040
+ ERROR_CTX_CONSOLE_DISCONNECT syscall.Errno = 7041
+ ERROR_CTX_CONSOLE_CONNECT syscall.Errno = 7042
+ ERROR_CTX_SHADOW_DENIED syscall.Errno = 7044
+ ERROR_CTX_WINSTATION_ACCESS_DENIED syscall.Errno = 7045
+ ERROR_CTX_INVALID_WD syscall.Errno = 7049
+ ERROR_CTX_SHADOW_INVALID syscall.Errno = 7050
+ ERROR_CTX_SHADOW_DISABLED syscall.Errno = 7051
+ ERROR_CTX_CLIENT_LICENSE_IN_USE syscall.Errno = 7052
+ ERROR_CTX_CLIENT_LICENSE_NOT_SET syscall.Errno = 7053
+ ERROR_CTX_LICENSE_NOT_AVAILABLE syscall.Errno = 7054
+ ERROR_CTX_LICENSE_CLIENT_INVALID syscall.Errno = 7055
+ ERROR_CTX_LICENSE_EXPIRED syscall.Errno = 7056
+ ERROR_CTX_SHADOW_NOT_RUNNING syscall.Errno = 7057
+ ERROR_CTX_SHADOW_ENDED_BY_MODE_CHANGE syscall.Errno = 7058
+ ERROR_ACTIVATION_COUNT_EXCEEDED syscall.Errno = 7059
+ ERROR_CTX_WINSTATIONS_DISABLED syscall.Errno = 7060
+ ERROR_CTX_ENCRYPTION_LEVEL_REQUIRED syscall.Errno = 7061
+ ERROR_CTX_SESSION_IN_USE syscall.Errno = 7062
+ ERROR_CTX_NO_FORCE_LOGOFF syscall.Errno = 7063
+ ERROR_CTX_ACCOUNT_RESTRICTION syscall.Errno = 7064
+ ERROR_RDP_PROTOCOL_ERROR syscall.Errno = 7065
+ ERROR_CTX_CDM_CONNECT syscall.Errno = 7066
+ ERROR_CTX_CDM_DISCONNECT syscall.Errno = 7067
+ ERROR_CTX_SECURITY_LAYER_ERROR syscall.Errno = 7068
+ ERROR_TS_INCOMPATIBLE_SESSIONS syscall.Errno = 7069
+ ERROR_TS_VIDEO_SUBSYSTEM_ERROR syscall.Errno = 7070
+ FRS_ERR_INVALID_API_SEQUENCE syscall.Errno = 8001
+ FRS_ERR_STARTING_SERVICE syscall.Errno = 8002
+ FRS_ERR_STOPPING_SERVICE syscall.Errno = 8003
+ FRS_ERR_INTERNAL_API syscall.Errno = 8004
+ FRS_ERR_INTERNAL syscall.Errno = 8005
+ FRS_ERR_SERVICE_COMM syscall.Errno = 8006
+ FRS_ERR_INSUFFICIENT_PRIV syscall.Errno = 8007
+ FRS_ERR_AUTHENTICATION syscall.Errno = 8008
+ FRS_ERR_PARENT_INSUFFICIENT_PRIV syscall.Errno = 8009
+ FRS_ERR_PARENT_AUTHENTICATION syscall.Errno = 8010
+ FRS_ERR_CHILD_TO_PARENT_COMM syscall.Errno = 8011
+ FRS_ERR_PARENT_TO_CHILD_COMM syscall.Errno = 8012
+ FRS_ERR_SYSVOL_POPULATE syscall.Errno = 8013
+ FRS_ERR_SYSVOL_POPULATE_TIMEOUT syscall.Errno = 8014
+ FRS_ERR_SYSVOL_IS_BUSY syscall.Errno = 8015
+ FRS_ERR_SYSVOL_DEMOTE syscall.Errno = 8016
+ FRS_ERR_INVALID_SERVICE_PARAMETER syscall.Errno = 8017
+ DS_S_SUCCESS = ERROR_SUCCESS
+ ERROR_DS_NOT_INSTALLED syscall.Errno = 8200
+ ERROR_DS_MEMBERSHIP_EVALUATED_LOCALLY syscall.Errno = 8201
+ ERROR_DS_NO_ATTRIBUTE_OR_VALUE syscall.Errno = 8202
+ ERROR_DS_INVALID_ATTRIBUTE_SYNTAX syscall.Errno = 8203
+ ERROR_DS_ATTRIBUTE_TYPE_UNDEFINED syscall.Errno = 8204
+ ERROR_DS_ATTRIBUTE_OR_VALUE_EXISTS syscall.Errno = 8205
+ ERROR_DS_BUSY syscall.Errno = 8206
+ ERROR_DS_UNAVAILABLE syscall.Errno = 8207
+ ERROR_DS_NO_RIDS_ALLOCATED syscall.Errno = 8208
+ ERROR_DS_NO_MORE_RIDS syscall.Errno = 8209
+ ERROR_DS_INCORRECT_ROLE_OWNER syscall.Errno = 8210
+ ERROR_DS_RIDMGR_INIT_ERROR syscall.Errno = 8211
+ ERROR_DS_OBJ_CLASS_VIOLATION syscall.Errno = 8212
+ ERROR_DS_CANT_ON_NON_LEAF syscall.Errno = 8213
+ ERROR_DS_CANT_ON_RDN syscall.Errno = 8214
+ ERROR_DS_CANT_MOD_OBJ_CLASS syscall.Errno = 8215
+ ERROR_DS_CROSS_DOM_MOVE_ERROR syscall.Errno = 8216
+ ERROR_DS_GC_NOT_AVAILABLE syscall.Errno = 8217
+ ERROR_SHARED_POLICY syscall.Errno = 8218
+ ERROR_POLICY_OBJECT_NOT_FOUND syscall.Errno = 8219
+ ERROR_POLICY_ONLY_IN_DS syscall.Errno = 8220
+ ERROR_PROMOTION_ACTIVE syscall.Errno = 8221
+ ERROR_NO_PROMOTION_ACTIVE syscall.Errno = 8222
+ ERROR_DS_OPERATIONS_ERROR syscall.Errno = 8224
+ ERROR_DS_PROTOCOL_ERROR syscall.Errno = 8225
+ ERROR_DS_TIMELIMIT_EXCEEDED syscall.Errno = 8226
+ ERROR_DS_SIZELIMIT_EXCEEDED syscall.Errno = 8227
+ ERROR_DS_ADMIN_LIMIT_EXCEEDED syscall.Errno = 8228
+ ERROR_DS_COMPARE_FALSE syscall.Errno = 8229
+ ERROR_DS_COMPARE_TRUE syscall.Errno = 8230
+ ERROR_DS_AUTH_METHOD_NOT_SUPPORTED syscall.Errno = 8231
+ ERROR_DS_STRONG_AUTH_REQUIRED syscall.Errno = 8232
+ ERROR_DS_INAPPROPRIATE_AUTH syscall.Errno = 8233
+ ERROR_DS_AUTH_UNKNOWN syscall.Errno = 8234
+ ERROR_DS_REFERRAL syscall.Errno = 8235
+ ERROR_DS_UNAVAILABLE_CRIT_EXTENSION syscall.Errno = 8236
+ ERROR_DS_CONFIDENTIALITY_REQUIRED syscall.Errno = 8237
+ ERROR_DS_INAPPROPRIATE_MATCHING syscall.Errno = 8238
+ ERROR_DS_CONSTRAINT_VIOLATION syscall.Errno = 8239
+ ERROR_DS_NO_SUCH_OBJECT syscall.Errno = 8240
+ ERROR_DS_ALIAS_PROBLEM syscall.Errno = 8241
+ ERROR_DS_INVALID_DN_SYNTAX syscall.Errno = 8242
+ ERROR_DS_IS_LEAF syscall.Errno = 8243
+ ERROR_DS_ALIAS_DEREF_PROBLEM syscall.Errno = 8244
+ ERROR_DS_UNWILLING_TO_PERFORM syscall.Errno = 8245
+ ERROR_DS_LOOP_DETECT syscall.Errno = 8246
+ ERROR_DS_NAMING_VIOLATION syscall.Errno = 8247
+ ERROR_DS_OBJECT_RESULTS_TOO_LARGE syscall.Errno = 8248
+ ERROR_DS_AFFECTS_MULTIPLE_DSAS syscall.Errno = 8249
+ ERROR_DS_SERVER_DOWN syscall.Errno = 8250
+ ERROR_DS_LOCAL_ERROR syscall.Errno = 8251
+ ERROR_DS_ENCODING_ERROR syscall.Errno = 8252
+ ERROR_DS_DECODING_ERROR syscall.Errno = 8253
+ ERROR_DS_FILTER_UNKNOWN syscall.Errno = 8254
+ ERROR_DS_PARAM_ERROR syscall.Errno = 8255
+ ERROR_DS_NOT_SUPPORTED syscall.Errno = 8256
+ ERROR_DS_NO_RESULTS_RETURNED syscall.Errno = 8257
+ ERROR_DS_CONTROL_NOT_FOUND syscall.Errno = 8258
+ ERROR_DS_CLIENT_LOOP syscall.Errno = 8259
+ ERROR_DS_REFERRAL_LIMIT_EXCEEDED syscall.Errno = 8260
+ ERROR_DS_SORT_CONTROL_MISSING syscall.Errno = 8261
+ ERROR_DS_OFFSET_RANGE_ERROR syscall.Errno = 8262
+ ERROR_DS_RIDMGR_DISABLED syscall.Errno = 8263
+ ERROR_DS_ROOT_MUST_BE_NC syscall.Errno = 8301
+ ERROR_DS_ADD_REPLICA_INHIBITED syscall.Errno = 8302
+ ERROR_DS_ATT_NOT_DEF_IN_SCHEMA syscall.Errno = 8303
+ ERROR_DS_MAX_OBJ_SIZE_EXCEEDED syscall.Errno = 8304
+ ERROR_DS_OBJ_STRING_NAME_EXISTS syscall.Errno = 8305
+ ERROR_DS_NO_RDN_DEFINED_IN_SCHEMA syscall.Errno = 8306
+ ERROR_DS_RDN_DOESNT_MATCH_SCHEMA syscall.Errno = 8307
+ ERROR_DS_NO_REQUESTED_ATTS_FOUND syscall.Errno = 8308
+ ERROR_DS_USER_BUFFER_TO_SMALL syscall.Errno = 8309
+ ERROR_DS_ATT_IS_NOT_ON_OBJ syscall.Errno = 8310
+ ERROR_DS_ILLEGAL_MOD_OPERATION syscall.Errno = 8311
+ ERROR_DS_OBJ_TOO_LARGE syscall.Errno = 8312
+ ERROR_DS_BAD_INSTANCE_TYPE syscall.Errno = 8313
+ ERROR_DS_MASTERDSA_REQUIRED syscall.Errno = 8314
+ ERROR_DS_OBJECT_CLASS_REQUIRED syscall.Errno = 8315
+ ERROR_DS_MISSING_REQUIRED_ATT syscall.Errno = 8316
+ ERROR_DS_ATT_NOT_DEF_FOR_CLASS syscall.Errno = 8317
+ ERROR_DS_ATT_ALREADY_EXISTS syscall.Errno = 8318
+ ERROR_DS_CANT_ADD_ATT_VALUES syscall.Errno = 8320
+ ERROR_DS_SINGLE_VALUE_CONSTRAINT syscall.Errno = 8321
+ ERROR_DS_RANGE_CONSTRAINT syscall.Errno = 8322
+ ERROR_DS_ATT_VAL_ALREADY_EXISTS syscall.Errno = 8323
+ ERROR_DS_CANT_REM_MISSING_ATT syscall.Errno = 8324
+ ERROR_DS_CANT_REM_MISSING_ATT_VAL syscall.Errno = 8325
+ ERROR_DS_ROOT_CANT_BE_SUBREF syscall.Errno = 8326
+ ERROR_DS_NO_CHAINING syscall.Errno = 8327
+ ERROR_DS_NO_CHAINED_EVAL syscall.Errno = 8328
+ ERROR_DS_NO_PARENT_OBJECT syscall.Errno = 8329
+ ERROR_DS_PARENT_IS_AN_ALIAS syscall.Errno = 8330
+ ERROR_DS_CANT_MIX_MASTER_AND_REPS syscall.Errno = 8331
+ ERROR_DS_CHILDREN_EXIST syscall.Errno = 8332
+ ERROR_DS_OBJ_NOT_FOUND syscall.Errno = 8333
+ ERROR_DS_ALIASED_OBJ_MISSING syscall.Errno = 8334
+ ERROR_DS_BAD_NAME_SYNTAX syscall.Errno = 8335
+ ERROR_DS_ALIAS_POINTS_TO_ALIAS syscall.Errno = 8336
+ ERROR_DS_CANT_DEREF_ALIAS syscall.Errno = 8337
+ ERROR_DS_OUT_OF_SCOPE syscall.Errno = 8338
+ ERROR_DS_OBJECT_BEING_REMOVED syscall.Errno = 8339
+ ERROR_DS_CANT_DELETE_DSA_OBJ syscall.Errno = 8340
+ ERROR_DS_GENERIC_ERROR syscall.Errno = 8341
+ ERROR_DS_DSA_MUST_BE_INT_MASTER syscall.Errno = 8342
+ ERROR_DS_CLASS_NOT_DSA syscall.Errno = 8343
+ ERROR_DS_INSUFF_ACCESS_RIGHTS syscall.Errno = 8344
+ ERROR_DS_ILLEGAL_SUPERIOR syscall.Errno = 8345
+ ERROR_DS_ATTRIBUTE_OWNED_BY_SAM syscall.Errno = 8346
+ ERROR_DS_NAME_TOO_MANY_PARTS syscall.Errno = 8347
+ ERROR_DS_NAME_TOO_LONG syscall.Errno = 8348
+ ERROR_DS_NAME_VALUE_TOO_LONG syscall.Errno = 8349
+ ERROR_DS_NAME_UNPARSEABLE syscall.Errno = 8350
+ ERROR_DS_NAME_TYPE_UNKNOWN syscall.Errno = 8351
+ ERROR_DS_NOT_AN_OBJECT syscall.Errno = 8352
+ ERROR_DS_SEC_DESC_TOO_SHORT syscall.Errno = 8353
+ ERROR_DS_SEC_DESC_INVALID syscall.Errno = 8354
+ ERROR_DS_NO_DELETED_NAME syscall.Errno = 8355
+ ERROR_DS_SUBREF_MUST_HAVE_PARENT syscall.Errno = 8356
+ ERROR_DS_NCNAME_MUST_BE_NC syscall.Errno = 8357
+ ERROR_DS_CANT_ADD_SYSTEM_ONLY syscall.Errno = 8358
+ ERROR_DS_CLASS_MUST_BE_CONCRETE syscall.Errno = 8359
+ ERROR_DS_INVALID_DMD syscall.Errno = 8360
+ ERROR_DS_OBJ_GUID_EXISTS syscall.Errno = 8361
+ ERROR_DS_NOT_ON_BACKLINK syscall.Errno = 8362
+ ERROR_DS_NO_CROSSREF_FOR_NC syscall.Errno = 8363
+ ERROR_DS_SHUTTING_DOWN syscall.Errno = 8364
+ ERROR_DS_UNKNOWN_OPERATION syscall.Errno = 8365
+ ERROR_DS_INVALID_ROLE_OWNER syscall.Errno = 8366
+ ERROR_DS_COULDNT_CONTACT_FSMO syscall.Errno = 8367
+ ERROR_DS_CROSS_NC_DN_RENAME syscall.Errno = 8368
+ ERROR_DS_CANT_MOD_SYSTEM_ONLY syscall.Errno = 8369
+ ERROR_DS_REPLICATOR_ONLY syscall.Errno = 8370
+ ERROR_DS_OBJ_CLASS_NOT_DEFINED syscall.Errno = 8371
+ ERROR_DS_OBJ_CLASS_NOT_SUBCLASS syscall.Errno = 8372
+ ERROR_DS_NAME_REFERENCE_INVALID syscall.Errno = 8373
+ ERROR_DS_CROSS_REF_EXISTS syscall.Errno = 8374
+ ERROR_DS_CANT_DEL_MASTER_CROSSREF syscall.Errno = 8375
+ ERROR_DS_SUBTREE_NOTIFY_NOT_NC_HEAD syscall.Errno = 8376
+ ERROR_DS_NOTIFY_FILTER_TOO_COMPLEX syscall.Errno = 8377
+ ERROR_DS_DUP_RDN syscall.Errno = 8378
+ ERROR_DS_DUP_OID syscall.Errno = 8379
+ ERROR_DS_DUP_MAPI_ID syscall.Errno = 8380
+ ERROR_DS_DUP_SCHEMA_ID_GUID syscall.Errno = 8381
+ ERROR_DS_DUP_LDAP_DISPLAY_NAME syscall.Errno = 8382
+ ERROR_DS_SEMANTIC_ATT_TEST syscall.Errno = 8383
+ ERROR_DS_SYNTAX_MISMATCH syscall.Errno = 8384
+ ERROR_DS_EXISTS_IN_MUST_HAVE syscall.Errno = 8385
+ ERROR_DS_EXISTS_IN_MAY_HAVE syscall.Errno = 8386
+ ERROR_DS_NONEXISTENT_MAY_HAVE syscall.Errno = 8387
+ ERROR_DS_NONEXISTENT_MUST_HAVE syscall.Errno = 8388
+ ERROR_DS_AUX_CLS_TEST_FAIL syscall.Errno = 8389
+ ERROR_DS_NONEXISTENT_POSS_SUP syscall.Errno = 8390
+ ERROR_DS_SUB_CLS_TEST_FAIL syscall.Errno = 8391
+ ERROR_DS_BAD_RDN_ATT_ID_SYNTAX syscall.Errno = 8392
+ ERROR_DS_EXISTS_IN_AUX_CLS syscall.Errno = 8393
+ ERROR_DS_EXISTS_IN_SUB_CLS syscall.Errno = 8394
+ ERROR_DS_EXISTS_IN_POSS_SUP syscall.Errno = 8395
+ ERROR_DS_RECALCSCHEMA_FAILED syscall.Errno = 8396
+ ERROR_DS_TREE_DELETE_NOT_FINISHED syscall.Errno = 8397
+ ERROR_DS_CANT_DELETE syscall.Errno = 8398
+ ERROR_DS_ATT_SCHEMA_REQ_ID syscall.Errno = 8399
+ ERROR_DS_BAD_ATT_SCHEMA_SYNTAX syscall.Errno = 8400
+ ERROR_DS_CANT_CACHE_ATT syscall.Errno = 8401
+ ERROR_DS_CANT_CACHE_CLASS syscall.Errno = 8402
+ ERROR_DS_CANT_REMOVE_ATT_CACHE syscall.Errno = 8403
+ ERROR_DS_CANT_REMOVE_CLASS_CACHE syscall.Errno = 8404
+ ERROR_DS_CANT_RETRIEVE_DN syscall.Errno = 8405
+ ERROR_DS_MISSING_SUPREF syscall.Errno = 8406
+ ERROR_DS_CANT_RETRIEVE_INSTANCE syscall.Errno = 8407
+ ERROR_DS_CODE_INCONSISTENCY syscall.Errno = 8408
+ ERROR_DS_DATABASE_ERROR syscall.Errno = 8409
+ ERROR_DS_GOVERNSID_MISSING syscall.Errno = 8410
+ ERROR_DS_MISSING_EXPECTED_ATT syscall.Errno = 8411
+ ERROR_DS_NCNAME_MISSING_CR_REF syscall.Errno = 8412
+ ERROR_DS_SECURITY_CHECKING_ERROR syscall.Errno = 8413
+ ERROR_DS_SCHEMA_NOT_LOADED syscall.Errno = 8414
+ ERROR_DS_SCHEMA_ALLOC_FAILED syscall.Errno = 8415
+ ERROR_DS_ATT_SCHEMA_REQ_SYNTAX syscall.Errno = 8416
+ ERROR_DS_GCVERIFY_ERROR syscall.Errno = 8417
+ ERROR_DS_DRA_SCHEMA_MISMATCH syscall.Errno = 8418
+ ERROR_DS_CANT_FIND_DSA_OBJ syscall.Errno = 8419
+ ERROR_DS_CANT_FIND_EXPECTED_NC syscall.Errno = 8420
+ ERROR_DS_CANT_FIND_NC_IN_CACHE syscall.Errno = 8421
+ ERROR_DS_CANT_RETRIEVE_CHILD syscall.Errno = 8422
+ ERROR_DS_SECURITY_ILLEGAL_MODIFY syscall.Errno = 8423
+ ERROR_DS_CANT_REPLACE_HIDDEN_REC syscall.Errno = 8424
+ ERROR_DS_BAD_HIERARCHY_FILE syscall.Errno = 8425
+ ERROR_DS_BUILD_HIERARCHY_TABLE_FAILED syscall.Errno = 8426
+ ERROR_DS_CONFIG_PARAM_MISSING syscall.Errno = 8427
+ ERROR_DS_COUNTING_AB_INDICES_FAILED syscall.Errno = 8428
+ ERROR_DS_HIERARCHY_TABLE_MALLOC_FAILED syscall.Errno = 8429
+ ERROR_DS_INTERNAL_FAILURE syscall.Errno = 8430
+ ERROR_DS_UNKNOWN_ERROR syscall.Errno = 8431
+ ERROR_DS_ROOT_REQUIRES_CLASS_TOP syscall.Errno = 8432
+ ERROR_DS_REFUSING_FSMO_ROLES syscall.Errno = 8433
+ ERROR_DS_MISSING_FSMO_SETTINGS syscall.Errno = 8434
+ ERROR_DS_UNABLE_TO_SURRENDER_ROLES syscall.Errno = 8435
+ ERROR_DS_DRA_GENERIC syscall.Errno = 8436
+ ERROR_DS_DRA_INVALID_PARAMETER syscall.Errno = 8437
+ ERROR_DS_DRA_BUSY syscall.Errno = 8438
+ ERROR_DS_DRA_BAD_DN syscall.Errno = 8439
+ ERROR_DS_DRA_BAD_NC syscall.Errno = 8440
+ ERROR_DS_DRA_DN_EXISTS syscall.Errno = 8441
+ ERROR_DS_DRA_INTERNAL_ERROR syscall.Errno = 8442
+ ERROR_DS_DRA_INCONSISTENT_DIT syscall.Errno = 8443
+ ERROR_DS_DRA_CONNECTION_FAILED syscall.Errno = 8444
+ ERROR_DS_DRA_BAD_INSTANCE_TYPE syscall.Errno = 8445
+ ERROR_DS_DRA_OUT_OF_MEM syscall.Errno = 8446
+ ERROR_DS_DRA_MAIL_PROBLEM syscall.Errno = 8447
+ ERROR_DS_DRA_REF_ALREADY_EXISTS syscall.Errno = 8448
+ ERROR_DS_DRA_REF_NOT_FOUND syscall.Errno = 8449
+ ERROR_DS_DRA_OBJ_IS_REP_SOURCE syscall.Errno = 8450
+ ERROR_DS_DRA_DB_ERROR syscall.Errno = 8451
+ ERROR_DS_DRA_NO_REPLICA syscall.Errno = 8452
+ ERROR_DS_DRA_ACCESS_DENIED syscall.Errno = 8453
+ ERROR_DS_DRA_NOT_SUPPORTED syscall.Errno = 8454
+ ERROR_DS_DRA_RPC_CANCELLED syscall.Errno = 8455
+ ERROR_DS_DRA_SOURCE_DISABLED syscall.Errno = 8456
+ ERROR_DS_DRA_SINK_DISABLED syscall.Errno = 8457
+ ERROR_DS_DRA_NAME_COLLISION syscall.Errno = 8458
+ ERROR_DS_DRA_SOURCE_REINSTALLED syscall.Errno = 8459
+ ERROR_DS_DRA_MISSING_PARENT syscall.Errno = 8460
+ ERROR_DS_DRA_PREEMPTED syscall.Errno = 8461
+ ERROR_DS_DRA_ABANDON_SYNC syscall.Errno = 8462
+ ERROR_DS_DRA_SHUTDOWN syscall.Errno = 8463
+ ERROR_DS_DRA_INCOMPATIBLE_PARTIAL_SET syscall.Errno = 8464
+ ERROR_DS_DRA_SOURCE_IS_PARTIAL_REPLICA syscall.Errno = 8465
+ ERROR_DS_DRA_EXTN_CONNECTION_FAILED syscall.Errno = 8466
+ ERROR_DS_INSTALL_SCHEMA_MISMATCH syscall.Errno = 8467
+ ERROR_DS_DUP_LINK_ID syscall.Errno = 8468
+ ERROR_DS_NAME_ERROR_RESOLVING syscall.Errno = 8469
+ ERROR_DS_NAME_ERROR_NOT_FOUND syscall.Errno = 8470
+ ERROR_DS_NAME_ERROR_NOT_UNIQUE syscall.Errno = 8471
+ ERROR_DS_NAME_ERROR_NO_MAPPING syscall.Errno = 8472
+ ERROR_DS_NAME_ERROR_DOMAIN_ONLY syscall.Errno = 8473
+ ERROR_DS_NAME_ERROR_NO_SYNTACTICAL_MAPPING syscall.Errno = 8474
+ ERROR_DS_CONSTRUCTED_ATT_MOD syscall.Errno = 8475
+ ERROR_DS_WRONG_OM_OBJ_CLASS syscall.Errno = 8476
+ ERROR_DS_DRA_REPL_PENDING syscall.Errno = 8477
+ ERROR_DS_DS_REQUIRED syscall.Errno = 8478
+ ERROR_DS_INVALID_LDAP_DISPLAY_NAME syscall.Errno = 8479
+ ERROR_DS_NON_BASE_SEARCH syscall.Errno = 8480
+ ERROR_DS_CANT_RETRIEVE_ATTS syscall.Errno = 8481
+ ERROR_DS_BACKLINK_WITHOUT_LINK syscall.Errno = 8482
+ ERROR_DS_EPOCH_MISMATCH syscall.Errno = 8483
+ ERROR_DS_SRC_NAME_MISMATCH syscall.Errno = 8484
+ ERROR_DS_SRC_AND_DST_NC_IDENTICAL syscall.Errno = 8485
+ ERROR_DS_DST_NC_MISMATCH syscall.Errno = 8486
+ ERROR_DS_NOT_AUTHORITIVE_FOR_DST_NC syscall.Errno = 8487
+ ERROR_DS_SRC_GUID_MISMATCH syscall.Errno = 8488
+ ERROR_DS_CANT_MOVE_DELETED_OBJECT syscall.Errno = 8489
+ ERROR_DS_PDC_OPERATION_IN_PROGRESS syscall.Errno = 8490
+ ERROR_DS_CROSS_DOMAIN_CLEANUP_REQD syscall.Errno = 8491
+ ERROR_DS_ILLEGAL_XDOM_MOVE_OPERATION syscall.Errno = 8492
+ ERROR_DS_CANT_WITH_ACCT_GROUP_MEMBERSHPS syscall.Errno = 8493
+ ERROR_DS_NC_MUST_HAVE_NC_PARENT syscall.Errno = 8494
+ ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE syscall.Errno = 8495
+ ERROR_DS_DST_DOMAIN_NOT_NATIVE syscall.Errno = 8496
+ ERROR_DS_MISSING_INFRASTRUCTURE_CONTAINER syscall.Errno = 8497
+ ERROR_DS_CANT_MOVE_ACCOUNT_GROUP syscall.Errno = 8498
+ ERROR_DS_CANT_MOVE_RESOURCE_GROUP syscall.Errno = 8499
+ ERROR_DS_INVALID_SEARCH_FLAG syscall.Errno = 8500
+ ERROR_DS_NO_TREE_DELETE_ABOVE_NC syscall.Errno = 8501
+ ERROR_DS_COULDNT_LOCK_TREE_FOR_DELETE syscall.Errno = 8502
+ ERROR_DS_COULDNT_IDENTIFY_OBJECTS_FOR_TREE_DELETE syscall.Errno = 8503
+ ERROR_DS_SAM_INIT_FAILURE syscall.Errno = 8504
+ ERROR_DS_SENSITIVE_GROUP_VIOLATION syscall.Errno = 8505
+ ERROR_DS_CANT_MOD_PRIMARYGROUPID syscall.Errno = 8506
+ ERROR_DS_ILLEGAL_BASE_SCHEMA_MOD syscall.Errno = 8507
+ ERROR_DS_NONSAFE_SCHEMA_CHANGE syscall.Errno = 8508
+ ERROR_DS_SCHEMA_UPDATE_DISALLOWED syscall.Errno = 8509
+ ERROR_DS_CANT_CREATE_UNDER_SCHEMA syscall.Errno = 8510
+ ERROR_DS_INSTALL_NO_SRC_SCH_VERSION syscall.Errno = 8511
+ ERROR_DS_INSTALL_NO_SCH_VERSION_IN_INIFILE syscall.Errno = 8512
+ ERROR_DS_INVALID_GROUP_TYPE syscall.Errno = 8513
+ ERROR_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN syscall.Errno = 8514
+ ERROR_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN syscall.Errno = 8515
+ ERROR_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER syscall.Errno = 8516
+ ERROR_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER syscall.Errno = 8517
+ ERROR_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER syscall.Errno = 8518
+ ERROR_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER syscall.Errno = 8519
+ ERROR_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER syscall.Errno = 8520
+ ERROR_DS_HAVE_PRIMARY_MEMBERS syscall.Errno = 8521
+ ERROR_DS_STRING_SD_CONVERSION_FAILED syscall.Errno = 8522
+ ERROR_DS_NAMING_MASTER_GC syscall.Errno = 8523
+ ERROR_DS_DNS_LOOKUP_FAILURE syscall.Errno = 8524
+ ERROR_DS_COULDNT_UPDATE_SPNS syscall.Errno = 8525
+ ERROR_DS_CANT_RETRIEVE_SD syscall.Errno = 8526
+ ERROR_DS_KEY_NOT_UNIQUE syscall.Errno = 8527
+ ERROR_DS_WRONG_LINKED_ATT_SYNTAX syscall.Errno = 8528
+ ERROR_DS_SAM_NEED_BOOTKEY_PASSWORD syscall.Errno = 8529
+ ERROR_DS_SAM_NEED_BOOTKEY_FLOPPY syscall.Errno = 8530
+ ERROR_DS_CANT_START syscall.Errno = 8531
+ ERROR_DS_INIT_FAILURE syscall.Errno = 8532
+ ERROR_DS_NO_PKT_PRIVACY_ON_CONNECTION syscall.Errno = 8533
+ ERROR_DS_SOURCE_DOMAIN_IN_FOREST syscall.Errno = 8534
+ ERROR_DS_DESTINATION_DOMAIN_NOT_IN_FOREST syscall.Errno = 8535
+ ERROR_DS_DESTINATION_AUDITING_NOT_ENABLED syscall.Errno = 8536
+ ERROR_DS_CANT_FIND_DC_FOR_SRC_DOMAIN syscall.Errno = 8537
+ ERROR_DS_SRC_OBJ_NOT_GROUP_OR_USER syscall.Errno = 8538
+ ERROR_DS_SRC_SID_EXISTS_IN_FOREST syscall.Errno = 8539
+ ERROR_DS_SRC_AND_DST_OBJECT_CLASS_MISMATCH syscall.Errno = 8540
+ ERROR_SAM_INIT_FAILURE syscall.Errno = 8541
+ ERROR_DS_DRA_SCHEMA_INFO_SHIP syscall.Errno = 8542
+ ERROR_DS_DRA_SCHEMA_CONFLICT syscall.Errno = 8543
+ ERROR_DS_DRA_EARLIER_SCHEMA_CONFLICT syscall.Errno = 8544
+ ERROR_DS_DRA_OBJ_NC_MISMATCH syscall.Errno = 8545
+ ERROR_DS_NC_STILL_HAS_DSAS syscall.Errno = 8546
+ ERROR_DS_GC_REQUIRED syscall.Errno = 8547
+ ERROR_DS_LOCAL_MEMBER_OF_LOCAL_ONLY syscall.Errno = 8548
+ ERROR_DS_NO_FPO_IN_UNIVERSAL_GROUPS syscall.Errno = 8549
+ ERROR_DS_CANT_ADD_TO_GC syscall.Errno = 8550
+ ERROR_DS_NO_CHECKPOINT_WITH_PDC syscall.Errno = 8551
+ ERROR_DS_SOURCE_AUDITING_NOT_ENABLED syscall.Errno = 8552
+ ERROR_DS_CANT_CREATE_IN_NONDOMAIN_NC syscall.Errno = 8553
+ ERROR_DS_INVALID_NAME_FOR_SPN syscall.Errno = 8554
+ ERROR_DS_FILTER_USES_CONTRUCTED_ATTRS syscall.Errno = 8555
+ ERROR_DS_UNICODEPWD_NOT_IN_QUOTES syscall.Errno = 8556
+ ERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED syscall.Errno = 8557
+ ERROR_DS_MUST_BE_RUN_ON_DST_DC syscall.Errno = 8558
+ ERROR_DS_SRC_DC_MUST_BE_SP4_OR_GREATER syscall.Errno = 8559
+ ERROR_DS_CANT_TREE_DELETE_CRITICAL_OBJ syscall.Errno = 8560
+ ERROR_DS_INIT_FAILURE_CONSOLE syscall.Errno = 8561
+ ERROR_DS_SAM_INIT_FAILURE_CONSOLE syscall.Errno = 8562
+ ERROR_DS_FOREST_VERSION_TOO_HIGH syscall.Errno = 8563
+ ERROR_DS_DOMAIN_VERSION_TOO_HIGH syscall.Errno = 8564
+ ERROR_DS_FOREST_VERSION_TOO_LOW syscall.Errno = 8565
+ ERROR_DS_DOMAIN_VERSION_TOO_LOW syscall.Errno = 8566
+ ERROR_DS_INCOMPATIBLE_VERSION syscall.Errno = 8567
+ ERROR_DS_LOW_DSA_VERSION syscall.Errno = 8568
+ ERROR_DS_NO_BEHAVIOR_VERSION_IN_MIXEDDOMAIN syscall.Errno = 8569
+ ERROR_DS_NOT_SUPPORTED_SORT_ORDER syscall.Errno = 8570
+ ERROR_DS_NAME_NOT_UNIQUE syscall.Errno = 8571
+ ERROR_DS_MACHINE_ACCOUNT_CREATED_PRENT4 syscall.Errno = 8572
+ ERROR_DS_OUT_OF_VERSION_STORE syscall.Errno = 8573
+ ERROR_DS_INCOMPATIBLE_CONTROLS_USED syscall.Errno = 8574
+ ERROR_DS_NO_REF_DOMAIN syscall.Errno = 8575
+ ERROR_DS_RESERVED_LINK_ID syscall.Errno = 8576
+ ERROR_DS_LINK_ID_NOT_AVAILABLE syscall.Errno = 8577
+ ERROR_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER syscall.Errno = 8578
+ ERROR_DS_MODIFYDN_DISALLOWED_BY_INSTANCE_TYPE syscall.Errno = 8579
+ ERROR_DS_NO_OBJECT_MOVE_IN_SCHEMA_NC syscall.Errno = 8580
+ ERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG syscall.Errno = 8581
+ ERROR_DS_MODIFYDN_WRONG_GRANDPARENT syscall.Errno = 8582
+ ERROR_DS_NAME_ERROR_TRUST_REFERRAL syscall.Errno = 8583
+ ERROR_NOT_SUPPORTED_ON_STANDARD_SERVER syscall.Errno = 8584
+ ERROR_DS_CANT_ACCESS_REMOTE_PART_OF_AD syscall.Errno = 8585
+ ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE_V2 syscall.Errno = 8586
+ ERROR_DS_THREAD_LIMIT_EXCEEDED syscall.Errno = 8587
+ ERROR_DS_NOT_CLOSEST syscall.Errno = 8588
+ ERROR_DS_CANT_DERIVE_SPN_WITHOUT_SERVER_REF syscall.Errno = 8589
+ ERROR_DS_SINGLE_USER_MODE_FAILED syscall.Errno = 8590
+ ERROR_DS_NTDSCRIPT_SYNTAX_ERROR syscall.Errno = 8591
+ ERROR_DS_NTDSCRIPT_PROCESS_ERROR syscall.Errno = 8592
+ ERROR_DS_DIFFERENT_REPL_EPOCHS syscall.Errno = 8593
+ ERROR_DS_DRS_EXTENSIONS_CHANGED syscall.Errno = 8594
+ ERROR_DS_REPLICA_SET_CHANGE_NOT_ALLOWED_ON_DISABLED_CR syscall.Errno = 8595
+ ERROR_DS_NO_MSDS_INTID syscall.Errno = 8596
+ ERROR_DS_DUP_MSDS_INTID syscall.Errno = 8597
+ ERROR_DS_EXISTS_IN_RDNATTID syscall.Errno = 8598
+ ERROR_DS_AUTHORIZATION_FAILED syscall.Errno = 8599
+ ERROR_DS_INVALID_SCRIPT syscall.Errno = 8600
+ ERROR_DS_REMOTE_CROSSREF_OP_FAILED syscall.Errno = 8601
+ ERROR_DS_CROSS_REF_BUSY syscall.Errno = 8602
+ ERROR_DS_CANT_DERIVE_SPN_FOR_DELETED_DOMAIN syscall.Errno = 8603
+ ERROR_DS_CANT_DEMOTE_WITH_WRITEABLE_NC syscall.Errno = 8604
+ ERROR_DS_DUPLICATE_ID_FOUND syscall.Errno = 8605
+ ERROR_DS_INSUFFICIENT_ATTR_TO_CREATE_OBJECT syscall.Errno = 8606
+ ERROR_DS_GROUP_CONVERSION_ERROR syscall.Errno = 8607
+ ERROR_DS_CANT_MOVE_APP_BASIC_GROUP syscall.Errno = 8608
+ ERROR_DS_CANT_MOVE_APP_QUERY_GROUP syscall.Errno = 8609
+ ERROR_DS_ROLE_NOT_VERIFIED syscall.Errno = 8610
+ ERROR_DS_WKO_CONTAINER_CANNOT_BE_SPECIAL syscall.Errno = 8611
+ ERROR_DS_DOMAIN_RENAME_IN_PROGRESS syscall.Errno = 8612
+ ERROR_DS_EXISTING_AD_CHILD_NC syscall.Errno = 8613
+ ERROR_DS_REPL_LIFETIME_EXCEEDED syscall.Errno = 8614
+ ERROR_DS_DISALLOWED_IN_SYSTEM_CONTAINER syscall.Errno = 8615
+ ERROR_DS_LDAP_SEND_QUEUE_FULL syscall.Errno = 8616
+ ERROR_DS_DRA_OUT_SCHEDULE_WINDOW syscall.Errno = 8617
+ ERROR_DS_POLICY_NOT_KNOWN syscall.Errno = 8618
+ ERROR_NO_SITE_SETTINGS_OBJECT syscall.Errno = 8619
+ ERROR_NO_SECRETS syscall.Errno = 8620
+ ERROR_NO_WRITABLE_DC_FOUND syscall.Errno = 8621
+ ERROR_DS_NO_SERVER_OBJECT syscall.Errno = 8622
+ ERROR_DS_NO_NTDSA_OBJECT syscall.Errno = 8623
+ ERROR_DS_NON_ASQ_SEARCH syscall.Errno = 8624
+ ERROR_DS_AUDIT_FAILURE syscall.Errno = 8625
+ ERROR_DS_INVALID_SEARCH_FLAG_SUBTREE syscall.Errno = 8626
+ ERROR_DS_INVALID_SEARCH_FLAG_TUPLE syscall.Errno = 8627
+ ERROR_DS_HIERARCHY_TABLE_TOO_DEEP syscall.Errno = 8628
+ ERROR_DS_DRA_CORRUPT_UTD_VECTOR syscall.Errno = 8629
+ ERROR_DS_DRA_SECRETS_DENIED syscall.Errno = 8630
+ ERROR_DS_RESERVED_MAPI_ID syscall.Errno = 8631
+ ERROR_DS_MAPI_ID_NOT_AVAILABLE syscall.Errno = 8632
+ ERROR_DS_DRA_MISSING_KRBTGT_SECRET syscall.Errno = 8633
+ ERROR_DS_DOMAIN_NAME_EXISTS_IN_FOREST syscall.Errno = 8634
+ ERROR_DS_FLAT_NAME_EXISTS_IN_FOREST syscall.Errno = 8635
+ ERROR_INVALID_USER_PRINCIPAL_NAME syscall.Errno = 8636
+ ERROR_DS_OID_MAPPED_GROUP_CANT_HAVE_MEMBERS syscall.Errno = 8637
+ ERROR_DS_OID_NOT_FOUND syscall.Errno = 8638
+ ERROR_DS_DRA_RECYCLED_TARGET syscall.Errno = 8639
+ ERROR_DS_DISALLOWED_NC_REDIRECT syscall.Errno = 8640
+ ERROR_DS_HIGH_ADLDS_FFL syscall.Errno = 8641
+ ERROR_DS_HIGH_DSA_VERSION syscall.Errno = 8642
+ ERROR_DS_LOW_ADLDS_FFL syscall.Errno = 8643
+ ERROR_DOMAIN_SID_SAME_AS_LOCAL_WORKSTATION syscall.Errno = 8644
+ ERROR_DS_UNDELETE_SAM_VALIDATION_FAILED syscall.Errno = 8645
+ ERROR_INCORRECT_ACCOUNT_TYPE syscall.Errno = 8646
+ ERROR_DS_SPN_VALUE_NOT_UNIQUE_IN_FOREST syscall.Errno = 8647
+ ERROR_DS_UPN_VALUE_NOT_UNIQUE_IN_FOREST syscall.Errno = 8648
+ ERROR_DS_MISSING_FOREST_TRUST syscall.Errno = 8649
+ ERROR_DS_VALUE_KEY_NOT_UNIQUE syscall.Errno = 8650
+ DNS_ERROR_RESPONSE_CODES_BASE syscall.Errno = 9000
+ DNS_ERROR_RCODE_NO_ERROR = ERROR_SUCCESS
+ DNS_ERROR_MASK syscall.Errno = 0x00002328
+ DNS_ERROR_RCODE_FORMAT_ERROR syscall.Errno = 9001
+ DNS_ERROR_RCODE_SERVER_FAILURE syscall.Errno = 9002
+ DNS_ERROR_RCODE_NAME_ERROR syscall.Errno = 9003
+ DNS_ERROR_RCODE_NOT_IMPLEMENTED syscall.Errno = 9004
+ DNS_ERROR_RCODE_REFUSED syscall.Errno = 9005
+ DNS_ERROR_RCODE_YXDOMAIN syscall.Errno = 9006
+ DNS_ERROR_RCODE_YXRRSET syscall.Errno = 9007
+ DNS_ERROR_RCODE_NXRRSET syscall.Errno = 9008
+ DNS_ERROR_RCODE_NOTAUTH syscall.Errno = 9009
+ DNS_ERROR_RCODE_NOTZONE syscall.Errno = 9010
+ DNS_ERROR_RCODE_BADSIG syscall.Errno = 9016
+ DNS_ERROR_RCODE_BADKEY syscall.Errno = 9017
+ DNS_ERROR_RCODE_BADTIME syscall.Errno = 9018
+ DNS_ERROR_RCODE_LAST = DNS_ERROR_RCODE_BADTIME
+ DNS_ERROR_DNSSEC_BASE syscall.Errno = 9100
+ DNS_ERROR_KEYMASTER_REQUIRED syscall.Errno = 9101
+ DNS_ERROR_NOT_ALLOWED_ON_SIGNED_ZONE syscall.Errno = 9102
+ DNS_ERROR_NSEC3_INCOMPATIBLE_WITH_RSA_SHA1 syscall.Errno = 9103
+ DNS_ERROR_NOT_ENOUGH_SIGNING_KEY_DESCRIPTORS syscall.Errno = 9104
+ DNS_ERROR_UNSUPPORTED_ALGORITHM syscall.Errno = 9105
+ DNS_ERROR_INVALID_KEY_SIZE syscall.Errno = 9106
+ DNS_ERROR_SIGNING_KEY_NOT_ACCESSIBLE syscall.Errno = 9107
+ DNS_ERROR_KSP_DOES_NOT_SUPPORT_PROTECTION syscall.Errno = 9108
+ DNS_ERROR_UNEXPECTED_DATA_PROTECTION_ERROR syscall.Errno = 9109
+ DNS_ERROR_UNEXPECTED_CNG_ERROR syscall.Errno = 9110
+ DNS_ERROR_UNKNOWN_SIGNING_PARAMETER_VERSION syscall.Errno = 9111
+ DNS_ERROR_KSP_NOT_ACCESSIBLE syscall.Errno = 9112
+ DNS_ERROR_TOO_MANY_SKDS syscall.Errno = 9113
+ DNS_ERROR_INVALID_ROLLOVER_PERIOD syscall.Errno = 9114
+ DNS_ERROR_INVALID_INITIAL_ROLLOVER_OFFSET syscall.Errno = 9115
+ DNS_ERROR_ROLLOVER_IN_PROGRESS syscall.Errno = 9116
+ DNS_ERROR_STANDBY_KEY_NOT_PRESENT syscall.Errno = 9117
+ DNS_ERROR_NOT_ALLOWED_ON_ZSK syscall.Errno = 9118
+ DNS_ERROR_NOT_ALLOWED_ON_ACTIVE_SKD syscall.Errno = 9119
+ DNS_ERROR_ROLLOVER_ALREADY_QUEUED syscall.Errno = 9120
+ DNS_ERROR_NOT_ALLOWED_ON_UNSIGNED_ZONE syscall.Errno = 9121
+ DNS_ERROR_BAD_KEYMASTER syscall.Errno = 9122
+ DNS_ERROR_INVALID_SIGNATURE_VALIDITY_PERIOD syscall.Errno = 9123
+ DNS_ERROR_INVALID_NSEC3_ITERATION_COUNT syscall.Errno = 9124
+ DNS_ERROR_DNSSEC_IS_DISABLED syscall.Errno = 9125
+ DNS_ERROR_INVALID_XML syscall.Errno = 9126
+ DNS_ERROR_NO_VALID_TRUST_ANCHORS syscall.Errno = 9127
+ DNS_ERROR_ROLLOVER_NOT_POKEABLE syscall.Errno = 9128
+ DNS_ERROR_NSEC3_NAME_COLLISION syscall.Errno = 9129
+ DNS_ERROR_NSEC_INCOMPATIBLE_WITH_NSEC3_RSA_SHA1 syscall.Errno = 9130
+ DNS_ERROR_PACKET_FMT_BASE syscall.Errno = 9500
+ DNS_INFO_NO_RECORDS syscall.Errno = 9501
+ DNS_ERROR_BAD_PACKET syscall.Errno = 9502
+ DNS_ERROR_NO_PACKET syscall.Errno = 9503
+ DNS_ERROR_RCODE syscall.Errno = 9504
+ DNS_ERROR_UNSECURE_PACKET syscall.Errno = 9505
+ DNS_STATUS_PACKET_UNSECURE = DNS_ERROR_UNSECURE_PACKET
+ DNS_REQUEST_PENDING syscall.Errno = 9506
+ DNS_ERROR_NO_MEMORY = ERROR_OUTOFMEMORY
+ DNS_ERROR_INVALID_NAME = ERROR_INVALID_NAME
+ DNS_ERROR_INVALID_DATA = ERROR_INVALID_DATA
+ DNS_ERROR_GENERAL_API_BASE syscall.Errno = 9550
+ DNS_ERROR_INVALID_TYPE syscall.Errno = 9551
+ DNS_ERROR_INVALID_IP_ADDRESS syscall.Errno = 9552
+ DNS_ERROR_INVALID_PROPERTY syscall.Errno = 9553
+ DNS_ERROR_TRY_AGAIN_LATER syscall.Errno = 9554
+ DNS_ERROR_NOT_UNIQUE syscall.Errno = 9555
+ DNS_ERROR_NON_RFC_NAME syscall.Errno = 9556
+ DNS_STATUS_FQDN syscall.Errno = 9557
+ DNS_STATUS_DOTTED_NAME syscall.Errno = 9558
+ DNS_STATUS_SINGLE_PART_NAME syscall.Errno = 9559
+ DNS_ERROR_INVALID_NAME_CHAR syscall.Errno = 9560
+ DNS_ERROR_NUMERIC_NAME syscall.Errno = 9561
+ DNS_ERROR_NOT_ALLOWED_ON_ROOT_SERVER syscall.Errno = 9562
+ DNS_ERROR_NOT_ALLOWED_UNDER_DELEGATION syscall.Errno = 9563
+ DNS_ERROR_CANNOT_FIND_ROOT_HINTS syscall.Errno = 9564
+ DNS_ERROR_INCONSISTENT_ROOT_HINTS syscall.Errno = 9565
+ DNS_ERROR_DWORD_VALUE_TOO_SMALL syscall.Errno = 9566
+ DNS_ERROR_DWORD_VALUE_TOO_LARGE syscall.Errno = 9567
+ DNS_ERROR_BACKGROUND_LOADING syscall.Errno = 9568
+ DNS_ERROR_NOT_ALLOWED_ON_RODC syscall.Errno = 9569
+ DNS_ERROR_NOT_ALLOWED_UNDER_DNAME syscall.Errno = 9570
+ DNS_ERROR_DELEGATION_REQUIRED syscall.Errno = 9571
+ DNS_ERROR_INVALID_POLICY_TABLE syscall.Errno = 9572
+ DNS_ERROR_ADDRESS_REQUIRED syscall.Errno = 9573
+ DNS_ERROR_ZONE_BASE syscall.Errno = 9600
+ DNS_ERROR_ZONE_DOES_NOT_EXIST syscall.Errno = 9601
+ DNS_ERROR_NO_ZONE_INFO syscall.Errno = 9602
+ DNS_ERROR_INVALID_ZONE_OPERATION syscall.Errno = 9603
+ DNS_ERROR_ZONE_CONFIGURATION_ERROR syscall.Errno = 9604
+ DNS_ERROR_ZONE_HAS_NO_SOA_RECORD syscall.Errno = 9605
+ DNS_ERROR_ZONE_HAS_NO_NS_RECORDS syscall.Errno = 9606
+ DNS_ERROR_ZONE_LOCKED syscall.Errno = 9607
+ DNS_ERROR_ZONE_CREATION_FAILED syscall.Errno = 9608
+ DNS_ERROR_ZONE_ALREADY_EXISTS syscall.Errno = 9609
+ DNS_ERROR_AUTOZONE_ALREADY_EXISTS syscall.Errno = 9610
+ DNS_ERROR_INVALID_ZONE_TYPE syscall.Errno = 9611
+ DNS_ERROR_SECONDARY_REQUIRES_MASTER_IP syscall.Errno = 9612
+ DNS_ERROR_ZONE_NOT_SECONDARY syscall.Errno = 9613
+ DNS_ERROR_NEED_SECONDARY_ADDRESSES syscall.Errno = 9614
+ DNS_ERROR_WINS_INIT_FAILED syscall.Errno = 9615
+ DNS_ERROR_NEED_WINS_SERVERS syscall.Errno = 9616
+ DNS_ERROR_NBSTAT_INIT_FAILED syscall.Errno = 9617
+ DNS_ERROR_SOA_DELETE_INVALID syscall.Errno = 9618
+ DNS_ERROR_FORWARDER_ALREADY_EXISTS syscall.Errno = 9619
+ DNS_ERROR_ZONE_REQUIRES_MASTER_IP syscall.Errno = 9620
+ DNS_ERROR_ZONE_IS_SHUTDOWN syscall.Errno = 9621
+ DNS_ERROR_ZONE_LOCKED_FOR_SIGNING syscall.Errno = 9622
+ DNS_ERROR_DATAFILE_BASE syscall.Errno = 9650
+ DNS_ERROR_PRIMARY_REQUIRES_DATAFILE syscall.Errno = 9651
+ DNS_ERROR_INVALID_DATAFILE_NAME syscall.Errno = 9652
+ DNS_ERROR_DATAFILE_OPEN_FAILURE syscall.Errno = 9653
+ DNS_ERROR_FILE_WRITEBACK_FAILED syscall.Errno = 9654
+ DNS_ERROR_DATAFILE_PARSING syscall.Errno = 9655
+ DNS_ERROR_DATABASE_BASE syscall.Errno = 9700
+ DNS_ERROR_RECORD_DOES_NOT_EXIST syscall.Errno = 9701
+ DNS_ERROR_RECORD_FORMAT syscall.Errno = 9702
+ DNS_ERROR_NODE_CREATION_FAILED syscall.Errno = 9703
+ DNS_ERROR_UNKNOWN_RECORD_TYPE syscall.Errno = 9704
+ DNS_ERROR_RECORD_TIMED_OUT syscall.Errno = 9705
+ DNS_ERROR_NAME_NOT_IN_ZONE syscall.Errno = 9706
+ DNS_ERROR_CNAME_LOOP syscall.Errno = 9707
+ DNS_ERROR_NODE_IS_CNAME syscall.Errno = 9708
+ DNS_ERROR_CNAME_COLLISION syscall.Errno = 9709
+ DNS_ERROR_RECORD_ONLY_AT_ZONE_ROOT syscall.Errno = 9710
+ DNS_ERROR_RECORD_ALREADY_EXISTS syscall.Errno = 9711
+ DNS_ERROR_SECONDARY_DATA syscall.Errno = 9712
+ DNS_ERROR_NO_CREATE_CACHE_DATA syscall.Errno = 9713
+ DNS_ERROR_NAME_DOES_NOT_EXIST syscall.Errno = 9714
+ DNS_WARNING_PTR_CREATE_FAILED syscall.Errno = 9715
+ DNS_WARNING_DOMAIN_UNDELETED syscall.Errno = 9716
+ DNS_ERROR_DS_UNAVAILABLE syscall.Errno = 9717
+ DNS_ERROR_DS_ZONE_ALREADY_EXISTS syscall.Errno = 9718
+ DNS_ERROR_NO_BOOTFILE_IF_DS_ZONE syscall.Errno = 9719
+ DNS_ERROR_NODE_IS_DNAME syscall.Errno = 9720
+ DNS_ERROR_DNAME_COLLISION syscall.Errno = 9721
+ DNS_ERROR_ALIAS_LOOP syscall.Errno = 9722
+ DNS_ERROR_OPERATION_BASE syscall.Errno = 9750
+ DNS_INFO_AXFR_COMPLETE syscall.Errno = 9751
+ DNS_ERROR_AXFR syscall.Errno = 9752
+ DNS_INFO_ADDED_LOCAL_WINS syscall.Errno = 9753
+ DNS_ERROR_SECURE_BASE syscall.Errno = 9800
+ DNS_STATUS_CONTINUE_NEEDED syscall.Errno = 9801
+ DNS_ERROR_SETUP_BASE syscall.Errno = 9850
+ DNS_ERROR_NO_TCPIP syscall.Errno = 9851
+ DNS_ERROR_NO_DNS_SERVERS syscall.Errno = 9852
+ DNS_ERROR_DP_BASE syscall.Errno = 9900
+ DNS_ERROR_DP_DOES_NOT_EXIST syscall.Errno = 9901
+ DNS_ERROR_DP_ALREADY_EXISTS syscall.Errno = 9902
+ DNS_ERROR_DP_NOT_ENLISTED syscall.Errno = 9903
+ DNS_ERROR_DP_ALREADY_ENLISTED syscall.Errno = 9904
+ DNS_ERROR_DP_NOT_AVAILABLE syscall.Errno = 9905
+ DNS_ERROR_DP_FSMO_ERROR syscall.Errno = 9906
+ DNS_ERROR_RRL_NOT_ENABLED syscall.Errno = 9911
+ DNS_ERROR_RRL_INVALID_WINDOW_SIZE syscall.Errno = 9912
+ DNS_ERROR_RRL_INVALID_IPV4_PREFIX syscall.Errno = 9913
+ DNS_ERROR_RRL_INVALID_IPV6_PREFIX syscall.Errno = 9914
+ DNS_ERROR_RRL_INVALID_TC_RATE syscall.Errno = 9915
+ DNS_ERROR_RRL_INVALID_LEAK_RATE syscall.Errno = 9916
+ DNS_ERROR_RRL_LEAK_RATE_LESSTHAN_TC_RATE syscall.Errno = 9917
+ DNS_ERROR_VIRTUALIZATION_INSTANCE_ALREADY_EXISTS syscall.Errno = 9921
+ DNS_ERROR_VIRTUALIZATION_INSTANCE_DOES_NOT_EXIST syscall.Errno = 9922
+ DNS_ERROR_VIRTUALIZATION_TREE_LOCKED syscall.Errno = 9923
+ DNS_ERROR_INVAILD_VIRTUALIZATION_INSTANCE_NAME syscall.Errno = 9924
+ DNS_ERROR_DEFAULT_VIRTUALIZATION_INSTANCE syscall.Errno = 9925
+ DNS_ERROR_ZONESCOPE_ALREADY_EXISTS syscall.Errno = 9951
+ DNS_ERROR_ZONESCOPE_DOES_NOT_EXIST syscall.Errno = 9952
+ DNS_ERROR_DEFAULT_ZONESCOPE syscall.Errno = 9953
+ DNS_ERROR_INVALID_ZONESCOPE_NAME syscall.Errno = 9954
+ DNS_ERROR_NOT_ALLOWED_WITH_ZONESCOPES syscall.Errno = 9955
+ DNS_ERROR_LOAD_ZONESCOPE_FAILED syscall.Errno = 9956
+ DNS_ERROR_ZONESCOPE_FILE_WRITEBACK_FAILED syscall.Errno = 9957
+ DNS_ERROR_INVALID_SCOPE_NAME syscall.Errno = 9958
+ DNS_ERROR_SCOPE_DOES_NOT_EXIST syscall.Errno = 9959
+ DNS_ERROR_DEFAULT_SCOPE syscall.Errno = 9960
+ DNS_ERROR_INVALID_SCOPE_OPERATION syscall.Errno = 9961
+ DNS_ERROR_SCOPE_LOCKED syscall.Errno = 9962
+ DNS_ERROR_SCOPE_ALREADY_EXISTS syscall.Errno = 9963
+ DNS_ERROR_POLICY_ALREADY_EXISTS syscall.Errno = 9971
+ DNS_ERROR_POLICY_DOES_NOT_EXIST syscall.Errno = 9972
+ DNS_ERROR_POLICY_INVALID_CRITERIA syscall.Errno = 9973
+ DNS_ERROR_POLICY_INVALID_SETTINGS syscall.Errno = 9974
+ DNS_ERROR_CLIENT_SUBNET_IS_ACCESSED syscall.Errno = 9975
+ DNS_ERROR_CLIENT_SUBNET_DOES_NOT_EXIST syscall.Errno = 9976
+ DNS_ERROR_CLIENT_SUBNET_ALREADY_EXISTS syscall.Errno = 9977
+ DNS_ERROR_SUBNET_DOES_NOT_EXIST syscall.Errno = 9978
+ DNS_ERROR_SUBNET_ALREADY_EXISTS syscall.Errno = 9979
+ DNS_ERROR_POLICY_LOCKED syscall.Errno = 9980
+ DNS_ERROR_POLICY_INVALID_WEIGHT syscall.Errno = 9981
+ DNS_ERROR_POLICY_INVALID_NAME syscall.Errno = 9982
+ DNS_ERROR_POLICY_MISSING_CRITERIA syscall.Errno = 9983
+ DNS_ERROR_INVALID_CLIENT_SUBNET_NAME syscall.Errno = 9984
+ DNS_ERROR_POLICY_PROCESSING_ORDER_INVALID syscall.Errno = 9985
+ DNS_ERROR_POLICY_SCOPE_MISSING syscall.Errno = 9986
+ DNS_ERROR_POLICY_SCOPE_NOT_ALLOWED syscall.Errno = 9987
+ DNS_ERROR_SERVERSCOPE_IS_REFERENCED syscall.Errno = 9988
+ DNS_ERROR_ZONESCOPE_IS_REFERENCED syscall.Errno = 9989
+ DNS_ERROR_POLICY_INVALID_CRITERIA_CLIENT_SUBNET syscall.Errno = 9990
+ DNS_ERROR_POLICY_INVALID_CRITERIA_TRANSPORT_PROTOCOL syscall.Errno = 9991
+ DNS_ERROR_POLICY_INVALID_CRITERIA_NETWORK_PROTOCOL syscall.Errno = 9992
+ DNS_ERROR_POLICY_INVALID_CRITERIA_INTERFACE syscall.Errno = 9993
+ DNS_ERROR_POLICY_INVALID_CRITERIA_FQDN syscall.Errno = 9994
+ DNS_ERROR_POLICY_INVALID_CRITERIA_QUERY_TYPE syscall.Errno = 9995
+ DNS_ERROR_POLICY_INVALID_CRITERIA_TIME_OF_DAY syscall.Errno = 9996
+ WSABASEERR syscall.Errno = 10000
+ WSAEINTR syscall.Errno = 10004
+ WSAEBADF syscall.Errno = 10009
+ WSAEACCES syscall.Errno = 10013
+ WSAEFAULT syscall.Errno = 10014
+ WSAEINVAL syscall.Errno = 10022
+ WSAEMFILE syscall.Errno = 10024
+ WSAEWOULDBLOCK syscall.Errno = 10035
+ WSAEINPROGRESS syscall.Errno = 10036
+ WSAEALREADY syscall.Errno = 10037
+ WSAENOTSOCK syscall.Errno = 10038
+ WSAEDESTADDRREQ syscall.Errno = 10039
+ WSAEMSGSIZE syscall.Errno = 10040
+ WSAEPROTOTYPE syscall.Errno = 10041
+ WSAENOPROTOOPT syscall.Errno = 10042
+ WSAEPROTONOSUPPORT syscall.Errno = 10043
+ WSAESOCKTNOSUPPORT syscall.Errno = 10044
+ WSAEOPNOTSUPP syscall.Errno = 10045
+ WSAEPFNOSUPPORT syscall.Errno = 10046
+ WSAEAFNOSUPPORT syscall.Errno = 10047
+ WSAEADDRINUSE syscall.Errno = 10048
+ WSAEADDRNOTAVAIL syscall.Errno = 10049
+ WSAENETDOWN syscall.Errno = 10050
+ WSAENETUNREACH syscall.Errno = 10051
+ WSAENETRESET syscall.Errno = 10052
+ WSAECONNABORTED syscall.Errno = 10053
+ WSAECONNRESET syscall.Errno = 10054
+ WSAENOBUFS syscall.Errno = 10055
+ WSAEISCONN syscall.Errno = 10056
+ WSAENOTCONN syscall.Errno = 10057
+ WSAESHUTDOWN syscall.Errno = 10058
+ WSAETOOMANYREFS syscall.Errno = 10059
+ WSAETIMEDOUT syscall.Errno = 10060
+ WSAECONNREFUSED syscall.Errno = 10061
+ WSAELOOP syscall.Errno = 10062
+ WSAENAMETOOLONG syscall.Errno = 10063
+ WSAEHOSTDOWN syscall.Errno = 10064
+ WSAEHOSTUNREACH syscall.Errno = 10065
+ WSAENOTEMPTY syscall.Errno = 10066
+ WSAEPROCLIM syscall.Errno = 10067
+ WSAEUSERS syscall.Errno = 10068
+ WSAEDQUOT syscall.Errno = 10069
+ WSAESTALE syscall.Errno = 10070
+ WSAEREMOTE syscall.Errno = 10071
+ WSASYSNOTREADY syscall.Errno = 10091
+ WSAVERNOTSUPPORTED syscall.Errno = 10092
+ WSANOTINITIALISED syscall.Errno = 10093
+ WSAEDISCON syscall.Errno = 10101
+ WSAENOMORE syscall.Errno = 10102
+ WSAECANCELLED syscall.Errno = 10103
+ WSAEINVALIDPROCTABLE syscall.Errno = 10104
+ WSAEINVALIDPROVIDER syscall.Errno = 10105
+ WSAEPROVIDERFAILEDINIT syscall.Errno = 10106
+ WSASYSCALLFAILURE syscall.Errno = 10107
+ WSASERVICE_NOT_FOUND syscall.Errno = 10108
+ WSATYPE_NOT_FOUND syscall.Errno = 10109
+ WSA_E_NO_MORE syscall.Errno = 10110
+ WSA_E_CANCELLED syscall.Errno = 10111
+ WSAEREFUSED syscall.Errno = 10112
+ WSAHOST_NOT_FOUND syscall.Errno = 11001
+ WSATRY_AGAIN syscall.Errno = 11002
+ WSANO_RECOVERY syscall.Errno = 11003
+ WSANO_DATA syscall.Errno = 11004
+ WSA_QOS_RECEIVERS syscall.Errno = 11005
+ WSA_QOS_SENDERS syscall.Errno = 11006
+ WSA_QOS_NO_SENDERS syscall.Errno = 11007
+ WSA_QOS_NO_RECEIVERS syscall.Errno = 11008
+ WSA_QOS_REQUEST_CONFIRMED syscall.Errno = 11009
+ WSA_QOS_ADMISSION_FAILURE syscall.Errno = 11010
+ WSA_QOS_POLICY_FAILURE syscall.Errno = 11011
+ WSA_QOS_BAD_STYLE syscall.Errno = 11012
+ WSA_QOS_BAD_OBJECT syscall.Errno = 11013
+ WSA_QOS_TRAFFIC_CTRL_ERROR syscall.Errno = 11014
+ WSA_QOS_GENERIC_ERROR syscall.Errno = 11015
+ WSA_QOS_ESERVICETYPE syscall.Errno = 11016
+ WSA_QOS_EFLOWSPEC syscall.Errno = 11017
+ WSA_QOS_EPROVSPECBUF syscall.Errno = 11018
+ WSA_QOS_EFILTERSTYLE syscall.Errno = 11019
+ WSA_QOS_EFILTERTYPE syscall.Errno = 11020
+ WSA_QOS_EFILTERCOUNT syscall.Errno = 11021
+ WSA_QOS_EOBJLENGTH syscall.Errno = 11022
+ WSA_QOS_EFLOWCOUNT syscall.Errno = 11023
+ WSA_QOS_EUNKOWNPSOBJ syscall.Errno = 11024
+ WSA_QOS_EPOLICYOBJ syscall.Errno = 11025
+ WSA_QOS_EFLOWDESC syscall.Errno = 11026
+ WSA_QOS_EPSFLOWSPEC syscall.Errno = 11027
+ WSA_QOS_EPSFILTERSPEC syscall.Errno = 11028
+ WSA_QOS_ESDMODEOBJ syscall.Errno = 11029
+ WSA_QOS_ESHAPERATEOBJ syscall.Errno = 11030
+ WSA_QOS_RESERVED_PETYPE syscall.Errno = 11031
+ WSA_SECURE_HOST_NOT_FOUND syscall.Errno = 11032
+ WSA_IPSEC_NAME_POLICY_ERROR syscall.Errno = 11033
+ ERROR_IPSEC_QM_POLICY_EXISTS syscall.Errno = 13000
+ ERROR_IPSEC_QM_POLICY_NOT_FOUND syscall.Errno = 13001
+ ERROR_IPSEC_QM_POLICY_IN_USE syscall.Errno = 13002
+ ERROR_IPSEC_MM_POLICY_EXISTS syscall.Errno = 13003
+ ERROR_IPSEC_MM_POLICY_NOT_FOUND syscall.Errno = 13004
+ ERROR_IPSEC_MM_POLICY_IN_USE syscall.Errno = 13005
+ ERROR_IPSEC_MM_FILTER_EXISTS syscall.Errno = 13006
+ ERROR_IPSEC_MM_FILTER_NOT_FOUND syscall.Errno = 13007
+ ERROR_IPSEC_TRANSPORT_FILTER_EXISTS syscall.Errno = 13008
+ ERROR_IPSEC_TRANSPORT_FILTER_NOT_FOUND syscall.Errno = 13009
+ ERROR_IPSEC_MM_AUTH_EXISTS syscall.Errno = 13010
+ ERROR_IPSEC_MM_AUTH_NOT_FOUND syscall.Errno = 13011
+ ERROR_IPSEC_MM_AUTH_IN_USE syscall.Errno = 13012
+ ERROR_IPSEC_DEFAULT_MM_POLICY_NOT_FOUND syscall.Errno = 13013
+ ERROR_IPSEC_DEFAULT_MM_AUTH_NOT_FOUND syscall.Errno = 13014
+ ERROR_IPSEC_DEFAULT_QM_POLICY_NOT_FOUND syscall.Errno = 13015
+ ERROR_IPSEC_TUNNEL_FILTER_EXISTS syscall.Errno = 13016
+ ERROR_IPSEC_TUNNEL_FILTER_NOT_FOUND syscall.Errno = 13017
+ ERROR_IPSEC_MM_FILTER_PENDING_DELETION syscall.Errno = 13018
+ ERROR_IPSEC_TRANSPORT_FILTER_PENDING_DELETION syscall.Errno = 13019
+ ERROR_IPSEC_TUNNEL_FILTER_PENDING_DELETION syscall.Errno = 13020
+ ERROR_IPSEC_MM_POLICY_PENDING_DELETION syscall.Errno = 13021
+ ERROR_IPSEC_MM_AUTH_PENDING_DELETION syscall.Errno = 13022
+ ERROR_IPSEC_QM_POLICY_PENDING_DELETION syscall.Errno = 13023
+ WARNING_IPSEC_MM_POLICY_PRUNED syscall.Errno = 13024
+ WARNING_IPSEC_QM_POLICY_PRUNED syscall.Errno = 13025
+ ERROR_IPSEC_IKE_NEG_STATUS_BEGIN syscall.Errno = 13800
+ ERROR_IPSEC_IKE_AUTH_FAIL syscall.Errno = 13801
+ ERROR_IPSEC_IKE_ATTRIB_FAIL syscall.Errno = 13802
+ ERROR_IPSEC_IKE_NEGOTIATION_PENDING syscall.Errno = 13803
+ ERROR_IPSEC_IKE_GENERAL_PROCESSING_ERROR syscall.Errno = 13804
+ ERROR_IPSEC_IKE_TIMED_OUT syscall.Errno = 13805
+ ERROR_IPSEC_IKE_NO_CERT syscall.Errno = 13806
+ ERROR_IPSEC_IKE_SA_DELETED syscall.Errno = 13807
+ ERROR_IPSEC_IKE_SA_REAPED syscall.Errno = 13808
+ ERROR_IPSEC_IKE_MM_ACQUIRE_DROP syscall.Errno = 13809
+ ERROR_IPSEC_IKE_QM_ACQUIRE_DROP syscall.Errno = 13810
+ ERROR_IPSEC_IKE_QUEUE_DROP_MM syscall.Errno = 13811
+ ERROR_IPSEC_IKE_QUEUE_DROP_NO_MM syscall.Errno = 13812
+ ERROR_IPSEC_IKE_DROP_NO_RESPONSE syscall.Errno = 13813
+ ERROR_IPSEC_IKE_MM_DELAY_DROP syscall.Errno = 13814
+ ERROR_IPSEC_IKE_QM_DELAY_DROP syscall.Errno = 13815
+ ERROR_IPSEC_IKE_ERROR syscall.Errno = 13816
+ ERROR_IPSEC_IKE_CRL_FAILED syscall.Errno = 13817
+ ERROR_IPSEC_IKE_INVALID_KEY_USAGE syscall.Errno = 13818
+ ERROR_IPSEC_IKE_INVALID_CERT_TYPE syscall.Errno = 13819
+ ERROR_IPSEC_IKE_NO_PRIVATE_KEY syscall.Errno = 13820
+ ERROR_IPSEC_IKE_SIMULTANEOUS_REKEY syscall.Errno = 13821
+ ERROR_IPSEC_IKE_DH_FAIL syscall.Errno = 13822
+ ERROR_IPSEC_IKE_CRITICAL_PAYLOAD_NOT_RECOGNIZED syscall.Errno = 13823
+ ERROR_IPSEC_IKE_INVALID_HEADER syscall.Errno = 13824
+ ERROR_IPSEC_IKE_NO_POLICY syscall.Errno = 13825
+ ERROR_IPSEC_IKE_INVALID_SIGNATURE syscall.Errno = 13826
+ ERROR_IPSEC_IKE_KERBEROS_ERROR syscall.Errno = 13827
+ ERROR_IPSEC_IKE_NO_PUBLIC_KEY syscall.Errno = 13828
+ ERROR_IPSEC_IKE_PROCESS_ERR syscall.Errno = 13829
+ ERROR_IPSEC_IKE_PROCESS_ERR_SA syscall.Errno = 13830
+ ERROR_IPSEC_IKE_PROCESS_ERR_PROP syscall.Errno = 13831
+ ERROR_IPSEC_IKE_PROCESS_ERR_TRANS syscall.Errno = 13832
+ ERROR_IPSEC_IKE_PROCESS_ERR_KE syscall.Errno = 13833
+ ERROR_IPSEC_IKE_PROCESS_ERR_ID syscall.Errno = 13834
+ ERROR_IPSEC_IKE_PROCESS_ERR_CERT syscall.Errno = 13835
+ ERROR_IPSEC_IKE_PROCESS_ERR_CERT_REQ syscall.Errno = 13836
+ ERROR_IPSEC_IKE_PROCESS_ERR_HASH syscall.Errno = 13837
+ ERROR_IPSEC_IKE_PROCESS_ERR_SIG syscall.Errno = 13838
+ ERROR_IPSEC_IKE_PROCESS_ERR_NONCE syscall.Errno = 13839
+ ERROR_IPSEC_IKE_PROCESS_ERR_NOTIFY syscall.Errno = 13840
+ ERROR_IPSEC_IKE_PROCESS_ERR_DELETE syscall.Errno = 13841
+ ERROR_IPSEC_IKE_PROCESS_ERR_VENDOR syscall.Errno = 13842
+ ERROR_IPSEC_IKE_INVALID_PAYLOAD syscall.Errno = 13843
+ ERROR_IPSEC_IKE_LOAD_SOFT_SA syscall.Errno = 13844
+ ERROR_IPSEC_IKE_SOFT_SA_TORN_DOWN syscall.Errno = 13845
+ ERROR_IPSEC_IKE_INVALID_COOKIE syscall.Errno = 13846
+ ERROR_IPSEC_IKE_NO_PEER_CERT syscall.Errno = 13847
+ ERROR_IPSEC_IKE_PEER_CRL_FAILED syscall.Errno = 13848
+ ERROR_IPSEC_IKE_POLICY_CHANGE syscall.Errno = 13849
+ ERROR_IPSEC_IKE_NO_MM_POLICY syscall.Errno = 13850
+ ERROR_IPSEC_IKE_NOTCBPRIV syscall.Errno = 13851
+ ERROR_IPSEC_IKE_SECLOADFAIL syscall.Errno = 13852
+ ERROR_IPSEC_IKE_FAILSSPINIT syscall.Errno = 13853
+ ERROR_IPSEC_IKE_FAILQUERYSSP syscall.Errno = 13854
+ ERROR_IPSEC_IKE_SRVACQFAIL syscall.Errno = 13855
+ ERROR_IPSEC_IKE_SRVQUERYCRED syscall.Errno = 13856
+ ERROR_IPSEC_IKE_GETSPIFAIL syscall.Errno = 13857
+ ERROR_IPSEC_IKE_INVALID_FILTER syscall.Errno = 13858
+ ERROR_IPSEC_IKE_OUT_OF_MEMORY syscall.Errno = 13859
+ ERROR_IPSEC_IKE_ADD_UPDATE_KEY_FAILED syscall.Errno = 13860
+ ERROR_IPSEC_IKE_INVALID_POLICY syscall.Errno = 13861
+ ERROR_IPSEC_IKE_UNKNOWN_DOI syscall.Errno = 13862
+ ERROR_IPSEC_IKE_INVALID_SITUATION syscall.Errno = 13863
+ ERROR_IPSEC_IKE_DH_FAILURE syscall.Errno = 13864
+ ERROR_IPSEC_IKE_INVALID_GROUP syscall.Errno = 13865
+ ERROR_IPSEC_IKE_ENCRYPT syscall.Errno = 13866
+ ERROR_IPSEC_IKE_DECRYPT syscall.Errno = 13867
+ ERROR_IPSEC_IKE_POLICY_MATCH syscall.Errno = 13868
+ ERROR_IPSEC_IKE_UNSUPPORTED_ID syscall.Errno = 13869
+ ERROR_IPSEC_IKE_INVALID_HASH syscall.Errno = 13870
+ ERROR_IPSEC_IKE_INVALID_HASH_ALG syscall.Errno = 13871
+ ERROR_IPSEC_IKE_INVALID_HASH_SIZE syscall.Errno = 13872
+ ERROR_IPSEC_IKE_INVALID_ENCRYPT_ALG syscall.Errno = 13873
+ ERROR_IPSEC_IKE_INVALID_AUTH_ALG syscall.Errno = 13874
+ ERROR_IPSEC_IKE_INVALID_SIG syscall.Errno = 13875
+ ERROR_IPSEC_IKE_LOAD_FAILED syscall.Errno = 13876
+ ERROR_IPSEC_IKE_RPC_DELETE syscall.Errno = 13877
+ ERROR_IPSEC_IKE_BENIGN_REINIT syscall.Errno = 13878
+ ERROR_IPSEC_IKE_INVALID_RESPONDER_LIFETIME_NOTIFY syscall.Errno = 13879
+ ERROR_IPSEC_IKE_INVALID_MAJOR_VERSION syscall.Errno = 13880
+ ERROR_IPSEC_IKE_INVALID_CERT_KEYLEN syscall.Errno = 13881
+ ERROR_IPSEC_IKE_MM_LIMIT syscall.Errno = 13882
+ ERROR_IPSEC_IKE_NEGOTIATION_DISABLED syscall.Errno = 13883
+ ERROR_IPSEC_IKE_QM_LIMIT syscall.Errno = 13884
+ ERROR_IPSEC_IKE_MM_EXPIRED syscall.Errno = 13885
+ ERROR_IPSEC_IKE_PEER_MM_ASSUMED_INVALID syscall.Errno = 13886
+ ERROR_IPSEC_IKE_CERT_CHAIN_POLICY_MISMATCH syscall.Errno = 13887
+ ERROR_IPSEC_IKE_UNEXPECTED_MESSAGE_ID syscall.Errno = 13888
+ ERROR_IPSEC_IKE_INVALID_AUTH_PAYLOAD syscall.Errno = 13889
+ ERROR_IPSEC_IKE_DOS_COOKIE_SENT syscall.Errno = 13890
+ ERROR_IPSEC_IKE_SHUTTING_DOWN syscall.Errno = 13891
+ ERROR_IPSEC_IKE_CGA_AUTH_FAILED syscall.Errno = 13892
+ ERROR_IPSEC_IKE_PROCESS_ERR_NATOA syscall.Errno = 13893
+ ERROR_IPSEC_IKE_INVALID_MM_FOR_QM syscall.Errno = 13894
+ ERROR_IPSEC_IKE_QM_EXPIRED syscall.Errno = 13895
+ ERROR_IPSEC_IKE_TOO_MANY_FILTERS syscall.Errno = 13896
+ ERROR_IPSEC_IKE_NEG_STATUS_END syscall.Errno = 13897
+ ERROR_IPSEC_IKE_KILL_DUMMY_NAP_TUNNEL syscall.Errno = 13898
+ ERROR_IPSEC_IKE_INNER_IP_ASSIGNMENT_FAILURE syscall.Errno = 13899
+ ERROR_IPSEC_IKE_REQUIRE_CP_PAYLOAD_MISSING syscall.Errno = 13900
+ ERROR_IPSEC_KEY_MODULE_IMPERSONATION_NEGOTIATION_PENDING syscall.Errno = 13901
+ ERROR_IPSEC_IKE_COEXISTENCE_SUPPRESS syscall.Errno = 13902
+ ERROR_IPSEC_IKE_RATELIMIT_DROP syscall.Errno = 13903
+ ERROR_IPSEC_IKE_PEER_DOESNT_SUPPORT_MOBIKE syscall.Errno = 13904
+ ERROR_IPSEC_IKE_AUTHORIZATION_FAILURE syscall.Errno = 13905
+ ERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_FAILURE syscall.Errno = 13906
+ ERROR_IPSEC_IKE_AUTHORIZATION_FAILURE_WITH_OPTIONAL_RETRY syscall.Errno = 13907
+ ERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_AND_CERTMAP_FAILURE syscall.Errno = 13908
+ ERROR_IPSEC_IKE_NEG_STATUS_EXTENDED_END syscall.Errno = 13909
+ ERROR_IPSEC_BAD_SPI syscall.Errno = 13910
+ ERROR_IPSEC_SA_LIFETIME_EXPIRED syscall.Errno = 13911
+ ERROR_IPSEC_WRONG_SA syscall.Errno = 13912
+ ERROR_IPSEC_REPLAY_CHECK_FAILED syscall.Errno = 13913
+ ERROR_IPSEC_INVALID_PACKET syscall.Errno = 13914
+ ERROR_IPSEC_INTEGRITY_CHECK_FAILED syscall.Errno = 13915
+ ERROR_IPSEC_CLEAR_TEXT_DROP syscall.Errno = 13916
+ ERROR_IPSEC_AUTH_FIREWALL_DROP syscall.Errno = 13917
+ ERROR_IPSEC_THROTTLE_DROP syscall.Errno = 13918
+ ERROR_IPSEC_DOSP_BLOCK syscall.Errno = 13925
+ ERROR_IPSEC_DOSP_RECEIVED_MULTICAST syscall.Errno = 13926
+ ERROR_IPSEC_DOSP_INVALID_PACKET syscall.Errno = 13927
+ ERROR_IPSEC_DOSP_STATE_LOOKUP_FAILED syscall.Errno = 13928
+ ERROR_IPSEC_DOSP_MAX_ENTRIES syscall.Errno = 13929
+ ERROR_IPSEC_DOSP_KEYMOD_NOT_ALLOWED syscall.Errno = 13930
+ ERROR_IPSEC_DOSP_NOT_INSTALLED syscall.Errno = 13931
+ ERROR_IPSEC_DOSP_MAX_PER_IP_RATELIMIT_QUEUES syscall.Errno = 13932
+ ERROR_SXS_SECTION_NOT_FOUND syscall.Errno = 14000
+ ERROR_SXS_CANT_GEN_ACTCTX syscall.Errno = 14001
+ ERROR_SXS_INVALID_ACTCTXDATA_FORMAT syscall.Errno = 14002
+ ERROR_SXS_ASSEMBLY_NOT_FOUND syscall.Errno = 14003
+ ERROR_SXS_MANIFEST_FORMAT_ERROR syscall.Errno = 14004
+ ERROR_SXS_MANIFEST_PARSE_ERROR syscall.Errno = 14005
+ ERROR_SXS_ACTIVATION_CONTEXT_DISABLED syscall.Errno = 14006
+ ERROR_SXS_KEY_NOT_FOUND syscall.Errno = 14007
+ ERROR_SXS_VERSION_CONFLICT syscall.Errno = 14008
+ ERROR_SXS_WRONG_SECTION_TYPE syscall.Errno = 14009
+ ERROR_SXS_THREAD_QUERIES_DISABLED syscall.Errno = 14010
+ ERROR_SXS_PROCESS_DEFAULT_ALREADY_SET syscall.Errno = 14011
+ ERROR_SXS_UNKNOWN_ENCODING_GROUP syscall.Errno = 14012
+ ERROR_SXS_UNKNOWN_ENCODING syscall.Errno = 14013
+ ERROR_SXS_INVALID_XML_NAMESPACE_URI syscall.Errno = 14014
+ ERROR_SXS_ROOT_MANIFEST_DEPENDENCY_NOT_INSTALLED syscall.Errno = 14015
+ ERROR_SXS_LEAF_MANIFEST_DEPENDENCY_NOT_INSTALLED syscall.Errno = 14016
+ ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE syscall.Errno = 14017
+ ERROR_SXS_MANIFEST_MISSING_REQUIRED_DEFAULT_NAMESPACE syscall.Errno = 14018
+ ERROR_SXS_MANIFEST_INVALID_REQUIRED_DEFAULT_NAMESPACE syscall.Errno = 14019
+ ERROR_SXS_PRIVATE_MANIFEST_CROSS_PATH_WITH_REPARSE_POINT syscall.Errno = 14020
+ ERROR_SXS_DUPLICATE_DLL_NAME syscall.Errno = 14021
+ ERROR_SXS_DUPLICATE_WINDOWCLASS_NAME syscall.Errno = 14022
+ ERROR_SXS_DUPLICATE_CLSID syscall.Errno = 14023
+ ERROR_SXS_DUPLICATE_IID syscall.Errno = 14024
+ ERROR_SXS_DUPLICATE_TLBID syscall.Errno = 14025
+ ERROR_SXS_DUPLICATE_PROGID syscall.Errno = 14026
+ ERROR_SXS_DUPLICATE_ASSEMBLY_NAME syscall.Errno = 14027
+ ERROR_SXS_FILE_HASH_MISMATCH syscall.Errno = 14028
+ ERROR_SXS_POLICY_PARSE_ERROR syscall.Errno = 14029
+ ERROR_SXS_XML_E_MISSINGQUOTE syscall.Errno = 14030
+ ERROR_SXS_XML_E_COMMENTSYNTAX syscall.Errno = 14031
+ ERROR_SXS_XML_E_BADSTARTNAMECHAR syscall.Errno = 14032
+ ERROR_SXS_XML_E_BADNAMECHAR syscall.Errno = 14033
+ ERROR_SXS_XML_E_BADCHARINSTRING syscall.Errno = 14034
+ ERROR_SXS_XML_E_XMLDECLSYNTAX syscall.Errno = 14035
+ ERROR_SXS_XML_E_BADCHARDATA syscall.Errno = 14036
+ ERROR_SXS_XML_E_MISSINGWHITESPACE syscall.Errno = 14037
+ ERROR_SXS_XML_E_EXPECTINGTAGEND syscall.Errno = 14038
+ ERROR_SXS_XML_E_MISSINGSEMICOLON syscall.Errno = 14039
+ ERROR_SXS_XML_E_UNBALANCEDPAREN syscall.Errno = 14040
+ ERROR_SXS_XML_E_INTERNALERROR syscall.Errno = 14041
+ ERROR_SXS_XML_E_UNEXPECTED_WHITESPACE syscall.Errno = 14042
+ ERROR_SXS_XML_E_INCOMPLETE_ENCODING syscall.Errno = 14043
+ ERROR_SXS_XML_E_MISSING_PAREN syscall.Errno = 14044
+ ERROR_SXS_XML_E_EXPECTINGCLOSEQUOTE syscall.Errno = 14045
+ ERROR_SXS_XML_E_MULTIPLE_COLONS syscall.Errno = 14046
+ ERROR_SXS_XML_E_INVALID_DECIMAL syscall.Errno = 14047
+ ERROR_SXS_XML_E_INVALID_HEXIDECIMAL syscall.Errno = 14048
+ ERROR_SXS_XML_E_INVALID_UNICODE syscall.Errno = 14049
+ ERROR_SXS_XML_E_WHITESPACEORQUESTIONMARK syscall.Errno = 14050
+ ERROR_SXS_XML_E_UNEXPECTEDENDTAG syscall.Errno = 14051
+ ERROR_SXS_XML_E_UNCLOSEDTAG syscall.Errno = 14052
+ ERROR_SXS_XML_E_DUPLICATEATTRIBUTE syscall.Errno = 14053
+ ERROR_SXS_XML_E_MULTIPLEROOTS syscall.Errno = 14054
+ ERROR_SXS_XML_E_INVALIDATROOTLEVEL syscall.Errno = 14055
+ ERROR_SXS_XML_E_BADXMLDECL syscall.Errno = 14056
+ ERROR_SXS_XML_E_MISSINGROOT syscall.Errno = 14057
+ ERROR_SXS_XML_E_UNEXPECTEDEOF syscall.Errno = 14058
+ ERROR_SXS_XML_E_BADPEREFINSUBSET syscall.Errno = 14059
+ ERROR_SXS_XML_E_UNCLOSEDSTARTTAG syscall.Errno = 14060
+ ERROR_SXS_XML_E_UNCLOSEDENDTAG syscall.Errno = 14061
+ ERROR_SXS_XML_E_UNCLOSEDSTRING syscall.Errno = 14062
+ ERROR_SXS_XML_E_UNCLOSEDCOMMENT syscall.Errno = 14063
+ ERROR_SXS_XML_E_UNCLOSEDDECL syscall.Errno = 14064
+ ERROR_SXS_XML_E_UNCLOSEDCDATA syscall.Errno = 14065
+ ERROR_SXS_XML_E_RESERVEDNAMESPACE syscall.Errno = 14066
+ ERROR_SXS_XML_E_INVALIDENCODING syscall.Errno = 14067
+ ERROR_SXS_XML_E_INVALIDSWITCH syscall.Errno = 14068
+ ERROR_SXS_XML_E_BADXMLCASE syscall.Errno = 14069
+ ERROR_SXS_XML_E_INVALID_STANDALONE syscall.Errno = 14070
+ ERROR_SXS_XML_E_UNEXPECTED_STANDALONE syscall.Errno = 14071
+ ERROR_SXS_XML_E_INVALID_VERSION syscall.Errno = 14072
+ ERROR_SXS_XML_E_MISSINGEQUALS syscall.Errno = 14073
+ ERROR_SXS_PROTECTION_RECOVERY_FAILED syscall.Errno = 14074
+ ERROR_SXS_PROTECTION_PUBLIC_KEY_TOO_SHORT syscall.Errno = 14075
+ ERROR_SXS_PROTECTION_CATALOG_NOT_VALID syscall.Errno = 14076
+ ERROR_SXS_UNTRANSLATABLE_HRESULT syscall.Errno = 14077
+ ERROR_SXS_PROTECTION_CATALOG_FILE_MISSING syscall.Errno = 14078
+ ERROR_SXS_MISSING_ASSEMBLY_IDENTITY_ATTRIBUTE syscall.Errno = 14079
+ ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME syscall.Errno = 14080
+ ERROR_SXS_ASSEMBLY_MISSING syscall.Errno = 14081
+ ERROR_SXS_CORRUPT_ACTIVATION_STACK syscall.Errno = 14082
+ ERROR_SXS_CORRUPTION syscall.Errno = 14083
+ ERROR_SXS_EARLY_DEACTIVATION syscall.Errno = 14084
+ ERROR_SXS_INVALID_DEACTIVATION syscall.Errno = 14085
+ ERROR_SXS_MULTIPLE_DEACTIVATION syscall.Errno = 14086
+ ERROR_SXS_PROCESS_TERMINATION_REQUESTED syscall.Errno = 14087
+ ERROR_SXS_RELEASE_ACTIVATION_CONTEXT syscall.Errno = 14088
+ ERROR_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY syscall.Errno = 14089
+ ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE syscall.Errno = 14090
+ ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME syscall.Errno = 14091
+ ERROR_SXS_IDENTITY_DUPLICATE_ATTRIBUTE syscall.Errno = 14092
+ ERROR_SXS_IDENTITY_PARSE_ERROR syscall.Errno = 14093
+ ERROR_MALFORMED_SUBSTITUTION_STRING syscall.Errno = 14094
+ ERROR_SXS_INCORRECT_PUBLIC_KEY_TOKEN syscall.Errno = 14095
+ ERROR_UNMAPPED_SUBSTITUTION_STRING syscall.Errno = 14096
+ ERROR_SXS_ASSEMBLY_NOT_LOCKED syscall.Errno = 14097
+ ERROR_SXS_COMPONENT_STORE_CORRUPT syscall.Errno = 14098
+ ERROR_ADVANCED_INSTALLER_FAILED syscall.Errno = 14099
+ ERROR_XML_ENCODING_MISMATCH syscall.Errno = 14100
+ ERROR_SXS_MANIFEST_IDENTITY_SAME_BUT_CONTENTS_DIFFERENT syscall.Errno = 14101
+ ERROR_SXS_IDENTITIES_DIFFERENT syscall.Errno = 14102
+ ERROR_SXS_ASSEMBLY_IS_NOT_A_DEPLOYMENT syscall.Errno = 14103
+ ERROR_SXS_FILE_NOT_PART_OF_ASSEMBLY syscall.Errno = 14104
+ ERROR_SXS_MANIFEST_TOO_BIG syscall.Errno = 14105
+ ERROR_SXS_SETTING_NOT_REGISTERED syscall.Errno = 14106
+ ERROR_SXS_TRANSACTION_CLOSURE_INCOMPLETE syscall.Errno = 14107
+ ERROR_SMI_PRIMITIVE_INSTALLER_FAILED syscall.Errno = 14108
+ ERROR_GENERIC_COMMAND_FAILED syscall.Errno = 14109
+ ERROR_SXS_FILE_HASH_MISSING syscall.Errno = 14110
+ ERROR_EVT_INVALID_CHANNEL_PATH syscall.Errno = 15000
+ ERROR_EVT_INVALID_QUERY syscall.Errno = 15001
+ ERROR_EVT_PUBLISHER_METADATA_NOT_FOUND syscall.Errno = 15002
+ ERROR_EVT_EVENT_TEMPLATE_NOT_FOUND syscall.Errno = 15003
+ ERROR_EVT_INVALID_PUBLISHER_NAME syscall.Errno = 15004
+ ERROR_EVT_INVALID_EVENT_DATA syscall.Errno = 15005
+ ERROR_EVT_CHANNEL_NOT_FOUND syscall.Errno = 15007
+ ERROR_EVT_MALFORMED_XML_TEXT syscall.Errno = 15008
+ ERROR_EVT_SUBSCRIPTION_TO_DIRECT_CHANNEL syscall.Errno = 15009
+ ERROR_EVT_CONFIGURATION_ERROR syscall.Errno = 15010
+ ERROR_EVT_QUERY_RESULT_STALE syscall.Errno = 15011
+ ERROR_EVT_QUERY_RESULT_INVALID_POSITION syscall.Errno = 15012
+ ERROR_EVT_NON_VALIDATING_MSXML syscall.Errno = 15013
+ ERROR_EVT_FILTER_ALREADYSCOPED syscall.Errno = 15014
+ ERROR_EVT_FILTER_NOTELTSET syscall.Errno = 15015
+ ERROR_EVT_FILTER_INVARG syscall.Errno = 15016
+ ERROR_EVT_FILTER_INVTEST syscall.Errno = 15017
+ ERROR_EVT_FILTER_INVTYPE syscall.Errno = 15018
+ ERROR_EVT_FILTER_PARSEERR syscall.Errno = 15019
+ ERROR_EVT_FILTER_UNSUPPORTEDOP syscall.Errno = 15020
+ ERROR_EVT_FILTER_UNEXPECTEDTOKEN syscall.Errno = 15021
+ ERROR_EVT_INVALID_OPERATION_OVER_ENABLED_DIRECT_CHANNEL syscall.Errno = 15022
+ ERROR_EVT_INVALID_CHANNEL_PROPERTY_VALUE syscall.Errno = 15023
+ ERROR_EVT_INVALID_PUBLISHER_PROPERTY_VALUE syscall.Errno = 15024
+ ERROR_EVT_CHANNEL_CANNOT_ACTIVATE syscall.Errno = 15025
+ ERROR_EVT_FILTER_TOO_COMPLEX syscall.Errno = 15026
+ ERROR_EVT_MESSAGE_NOT_FOUND syscall.Errno = 15027
+ ERROR_EVT_MESSAGE_ID_NOT_FOUND syscall.Errno = 15028
+ ERROR_EVT_UNRESOLVED_VALUE_INSERT syscall.Errno = 15029
+ ERROR_EVT_UNRESOLVED_PARAMETER_INSERT syscall.Errno = 15030
+ ERROR_EVT_MAX_INSERTS_REACHED syscall.Errno = 15031
+ ERROR_EVT_EVENT_DEFINITION_NOT_FOUND syscall.Errno = 15032
+ ERROR_EVT_MESSAGE_LOCALE_NOT_FOUND syscall.Errno = 15033
+ ERROR_EVT_VERSION_TOO_OLD syscall.Errno = 15034
+ ERROR_EVT_VERSION_TOO_NEW syscall.Errno = 15035
+ ERROR_EVT_CANNOT_OPEN_CHANNEL_OF_QUERY syscall.Errno = 15036
+ ERROR_EVT_PUBLISHER_DISABLED syscall.Errno = 15037
+ ERROR_EVT_FILTER_OUT_OF_RANGE syscall.Errno = 15038
+ ERROR_EC_SUBSCRIPTION_CANNOT_ACTIVATE syscall.Errno = 15080
+ ERROR_EC_LOG_DISABLED syscall.Errno = 15081
+ ERROR_EC_CIRCULAR_FORWARDING syscall.Errno = 15082
+ ERROR_EC_CREDSTORE_FULL syscall.Errno = 15083
+ ERROR_EC_CRED_NOT_FOUND syscall.Errno = 15084
+ ERROR_EC_NO_ACTIVE_CHANNEL syscall.Errno = 15085
+ ERROR_MUI_FILE_NOT_FOUND syscall.Errno = 15100
+ ERROR_MUI_INVALID_FILE syscall.Errno = 15101
+ ERROR_MUI_INVALID_RC_CONFIG syscall.Errno = 15102
+ ERROR_MUI_INVALID_LOCALE_NAME syscall.Errno = 15103
+ ERROR_MUI_INVALID_ULTIMATEFALLBACK_NAME syscall.Errno = 15104
+ ERROR_MUI_FILE_NOT_LOADED syscall.Errno = 15105
+ ERROR_RESOURCE_ENUM_USER_STOP syscall.Errno = 15106
+ ERROR_MUI_INTLSETTINGS_UILANG_NOT_INSTALLED syscall.Errno = 15107
+ ERROR_MUI_INTLSETTINGS_INVALID_LOCALE_NAME syscall.Errno = 15108
+ ERROR_MRM_RUNTIME_NO_DEFAULT_OR_NEUTRAL_RESOURCE syscall.Errno = 15110
+ ERROR_MRM_INVALID_PRICONFIG syscall.Errno = 15111
+ ERROR_MRM_INVALID_FILE_TYPE syscall.Errno = 15112
+ ERROR_MRM_UNKNOWN_QUALIFIER syscall.Errno = 15113
+ ERROR_MRM_INVALID_QUALIFIER_VALUE syscall.Errno = 15114
+ ERROR_MRM_NO_CANDIDATE syscall.Errno = 15115
+ ERROR_MRM_NO_MATCH_OR_DEFAULT_CANDIDATE syscall.Errno = 15116
+ ERROR_MRM_RESOURCE_TYPE_MISMATCH syscall.Errno = 15117
+ ERROR_MRM_DUPLICATE_MAP_NAME syscall.Errno = 15118
+ ERROR_MRM_DUPLICATE_ENTRY syscall.Errno = 15119
+ ERROR_MRM_INVALID_RESOURCE_IDENTIFIER syscall.Errno = 15120
+ ERROR_MRM_FILEPATH_TOO_LONG syscall.Errno = 15121
+ ERROR_MRM_UNSUPPORTED_DIRECTORY_TYPE syscall.Errno = 15122
+ ERROR_MRM_INVALID_PRI_FILE syscall.Errno = 15126
+ ERROR_MRM_NAMED_RESOURCE_NOT_FOUND syscall.Errno = 15127
+ ERROR_MRM_MAP_NOT_FOUND syscall.Errno = 15135
+ ERROR_MRM_UNSUPPORTED_PROFILE_TYPE syscall.Errno = 15136
+ ERROR_MRM_INVALID_QUALIFIER_OPERATOR syscall.Errno = 15137
+ ERROR_MRM_INDETERMINATE_QUALIFIER_VALUE syscall.Errno = 15138
+ ERROR_MRM_AUTOMERGE_ENABLED syscall.Errno = 15139
+ ERROR_MRM_TOO_MANY_RESOURCES syscall.Errno = 15140
+ ERROR_MRM_UNSUPPORTED_FILE_TYPE_FOR_MERGE syscall.Errno = 15141
+ ERROR_MRM_UNSUPPORTED_FILE_TYPE_FOR_LOAD_UNLOAD_PRI_FILE syscall.Errno = 15142
+ ERROR_MRM_NO_CURRENT_VIEW_ON_THREAD syscall.Errno = 15143
+ ERROR_DIFFERENT_PROFILE_RESOURCE_MANAGER_EXIST syscall.Errno = 15144
+ ERROR_OPERATION_NOT_ALLOWED_FROM_SYSTEM_COMPONENT syscall.Errno = 15145
+ ERROR_MRM_DIRECT_REF_TO_NON_DEFAULT_RESOURCE syscall.Errno = 15146
+ ERROR_MRM_GENERATION_COUNT_MISMATCH syscall.Errno = 15147
+ ERROR_PRI_MERGE_VERSION_MISMATCH syscall.Errno = 15148
+ ERROR_PRI_MERGE_MISSING_SCHEMA syscall.Errno = 15149
+ ERROR_PRI_MERGE_LOAD_FILE_FAILED syscall.Errno = 15150
+ ERROR_PRI_MERGE_ADD_FILE_FAILED syscall.Errno = 15151
+ ERROR_PRI_MERGE_WRITE_FILE_FAILED syscall.Errno = 15152
+ ERROR_PRI_MERGE_MULTIPLE_PACKAGE_FAMILIES_NOT_ALLOWED syscall.Errno = 15153
+ ERROR_PRI_MERGE_MULTIPLE_MAIN_PACKAGES_NOT_ALLOWED syscall.Errno = 15154
+ ERROR_PRI_MERGE_BUNDLE_PACKAGES_NOT_ALLOWED syscall.Errno = 15155
+ ERROR_PRI_MERGE_MAIN_PACKAGE_REQUIRED syscall.Errno = 15156
+ ERROR_PRI_MERGE_RESOURCE_PACKAGE_REQUIRED syscall.Errno = 15157
+ ERROR_PRI_MERGE_INVALID_FILE_NAME syscall.Errno = 15158
+ ERROR_MRM_PACKAGE_NOT_FOUND syscall.Errno = 15159
+ ERROR_MCA_INVALID_CAPABILITIES_STRING syscall.Errno = 15200
+ ERROR_MCA_INVALID_VCP_VERSION syscall.Errno = 15201
+ ERROR_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION syscall.Errno = 15202
+ ERROR_MCA_MCCS_VERSION_MISMATCH syscall.Errno = 15203
+ ERROR_MCA_UNSUPPORTED_MCCS_VERSION syscall.Errno = 15204
+ ERROR_MCA_INTERNAL_ERROR syscall.Errno = 15205
+ ERROR_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED syscall.Errno = 15206
+ ERROR_MCA_UNSUPPORTED_COLOR_TEMPERATURE syscall.Errno = 15207
+ ERROR_AMBIGUOUS_SYSTEM_DEVICE syscall.Errno = 15250
+ ERROR_SYSTEM_DEVICE_NOT_FOUND syscall.Errno = 15299
+ ERROR_HASH_NOT_SUPPORTED syscall.Errno = 15300
+ ERROR_HASH_NOT_PRESENT syscall.Errno = 15301
+ ERROR_SECONDARY_IC_PROVIDER_NOT_REGISTERED syscall.Errno = 15321
+ ERROR_GPIO_CLIENT_INFORMATION_INVALID syscall.Errno = 15322
+ ERROR_GPIO_VERSION_NOT_SUPPORTED syscall.Errno = 15323
+ ERROR_GPIO_INVALID_REGISTRATION_PACKET syscall.Errno = 15324
+ ERROR_GPIO_OPERATION_DENIED syscall.Errno = 15325
+ ERROR_GPIO_INCOMPATIBLE_CONNECT_MODE syscall.Errno = 15326
+ ERROR_GPIO_INTERRUPT_ALREADY_UNMASKED syscall.Errno = 15327
+ ERROR_CANNOT_SWITCH_RUNLEVEL syscall.Errno = 15400
+ ERROR_INVALID_RUNLEVEL_SETTING syscall.Errno = 15401
+ ERROR_RUNLEVEL_SWITCH_TIMEOUT syscall.Errno = 15402
+ ERROR_RUNLEVEL_SWITCH_AGENT_TIMEOUT syscall.Errno = 15403
+ ERROR_RUNLEVEL_SWITCH_IN_PROGRESS syscall.Errno = 15404
+ ERROR_SERVICES_FAILED_AUTOSTART syscall.Errno = 15405
+ ERROR_COM_TASK_STOP_PENDING syscall.Errno = 15501
+ ERROR_INSTALL_OPEN_PACKAGE_FAILED syscall.Errno = 15600
+ ERROR_INSTALL_PACKAGE_NOT_FOUND syscall.Errno = 15601
+ ERROR_INSTALL_INVALID_PACKAGE syscall.Errno = 15602
+ ERROR_INSTALL_RESOLVE_DEPENDENCY_FAILED syscall.Errno = 15603
+ ERROR_INSTALL_OUT_OF_DISK_SPACE syscall.Errno = 15604
+ ERROR_INSTALL_NETWORK_FAILURE syscall.Errno = 15605
+ ERROR_INSTALL_REGISTRATION_FAILURE syscall.Errno = 15606
+ ERROR_INSTALL_DEREGISTRATION_FAILURE syscall.Errno = 15607
+ ERROR_INSTALL_CANCEL syscall.Errno = 15608
+ ERROR_INSTALL_FAILED syscall.Errno = 15609
+ ERROR_REMOVE_FAILED syscall.Errno = 15610
+ ERROR_PACKAGE_ALREADY_EXISTS syscall.Errno = 15611
+ ERROR_NEEDS_REMEDIATION syscall.Errno = 15612
+ ERROR_INSTALL_PREREQUISITE_FAILED syscall.Errno = 15613
+ ERROR_PACKAGE_REPOSITORY_CORRUPTED syscall.Errno = 15614
+ ERROR_INSTALL_POLICY_FAILURE syscall.Errno = 15615
+ ERROR_PACKAGE_UPDATING syscall.Errno = 15616
+ ERROR_DEPLOYMENT_BLOCKED_BY_POLICY syscall.Errno = 15617
+ ERROR_PACKAGES_IN_USE syscall.Errno = 15618
+ ERROR_RECOVERY_FILE_CORRUPT syscall.Errno = 15619
+ ERROR_INVALID_STAGED_SIGNATURE syscall.Errno = 15620
+ ERROR_DELETING_EXISTING_APPLICATIONDATA_STORE_FAILED syscall.Errno = 15621
+ ERROR_INSTALL_PACKAGE_DOWNGRADE syscall.Errno = 15622
+ ERROR_SYSTEM_NEEDS_REMEDIATION syscall.Errno = 15623
+ ERROR_APPX_INTEGRITY_FAILURE_CLR_NGEN syscall.Errno = 15624
+ ERROR_RESILIENCY_FILE_CORRUPT syscall.Errno = 15625
+ ERROR_INSTALL_FIREWALL_SERVICE_NOT_RUNNING syscall.Errno = 15626
+ ERROR_PACKAGE_MOVE_FAILED syscall.Errno = 15627
+ ERROR_INSTALL_VOLUME_NOT_EMPTY syscall.Errno = 15628
+ ERROR_INSTALL_VOLUME_OFFLINE syscall.Errno = 15629
+ ERROR_INSTALL_VOLUME_CORRUPT syscall.Errno = 15630
+ ERROR_NEEDS_REGISTRATION syscall.Errno = 15631
+ ERROR_INSTALL_WRONG_PROCESSOR_ARCHITECTURE syscall.Errno = 15632
+ ERROR_DEV_SIDELOAD_LIMIT_EXCEEDED syscall.Errno = 15633
+ ERROR_INSTALL_OPTIONAL_PACKAGE_REQUIRES_MAIN_PACKAGE syscall.Errno = 15634
+ ERROR_PACKAGE_NOT_SUPPORTED_ON_FILESYSTEM syscall.Errno = 15635
+ ERROR_PACKAGE_MOVE_BLOCKED_BY_STREAMING syscall.Errno = 15636
+ ERROR_INSTALL_OPTIONAL_PACKAGE_APPLICATIONID_NOT_UNIQUE syscall.Errno = 15637
+ ERROR_PACKAGE_STAGING_ONHOLD syscall.Errno = 15638
+ ERROR_INSTALL_INVALID_RELATED_SET_UPDATE syscall.Errno = 15639
+ ERROR_INSTALL_OPTIONAL_PACKAGE_REQUIRES_MAIN_PACKAGE_FULLTRUST_CAPABILITY syscall.Errno = 15640
+ ERROR_DEPLOYMENT_BLOCKED_BY_USER_LOG_OFF syscall.Errno = 15641
+ ERROR_PROVISION_OPTIONAL_PACKAGE_REQUIRES_MAIN_PACKAGE_PROVISIONED syscall.Errno = 15642
+ ERROR_PACKAGES_REPUTATION_CHECK_FAILED syscall.Errno = 15643
+ ERROR_PACKAGES_REPUTATION_CHECK_TIMEDOUT syscall.Errno = 15644
+ ERROR_DEPLOYMENT_OPTION_NOT_SUPPORTED syscall.Errno = 15645
+ ERROR_APPINSTALLER_ACTIVATION_BLOCKED syscall.Errno = 15646
+ ERROR_REGISTRATION_FROM_REMOTE_DRIVE_NOT_SUPPORTED syscall.Errno = 15647
+ APPMODEL_ERROR_NO_PACKAGE syscall.Errno = 15700
+ APPMODEL_ERROR_PACKAGE_RUNTIME_CORRUPT syscall.Errno = 15701
+ APPMODEL_ERROR_PACKAGE_IDENTITY_CORRUPT syscall.Errno = 15702
+ APPMODEL_ERROR_NO_APPLICATION syscall.Errno = 15703
+ APPMODEL_ERROR_DYNAMIC_PROPERTY_READ_FAILED syscall.Errno = 15704
+ APPMODEL_ERROR_DYNAMIC_PROPERTY_INVALID syscall.Errno = 15705
+ APPMODEL_ERROR_PACKAGE_NOT_AVAILABLE syscall.Errno = 15706
+ ERROR_STATE_LOAD_STORE_FAILED syscall.Errno = 15800
+ ERROR_STATE_GET_VERSION_FAILED syscall.Errno = 15801
+ ERROR_STATE_SET_VERSION_FAILED syscall.Errno = 15802
+ ERROR_STATE_STRUCTURED_RESET_FAILED syscall.Errno = 15803
+ ERROR_STATE_OPEN_CONTAINER_FAILED syscall.Errno = 15804
+ ERROR_STATE_CREATE_CONTAINER_FAILED syscall.Errno = 15805
+ ERROR_STATE_DELETE_CONTAINER_FAILED syscall.Errno = 15806
+ ERROR_STATE_READ_SETTING_FAILED syscall.Errno = 15807
+ ERROR_STATE_WRITE_SETTING_FAILED syscall.Errno = 15808
+ ERROR_STATE_DELETE_SETTING_FAILED syscall.Errno = 15809
+ ERROR_STATE_QUERY_SETTING_FAILED syscall.Errno = 15810
+ ERROR_STATE_READ_COMPOSITE_SETTING_FAILED syscall.Errno = 15811
+ ERROR_STATE_WRITE_COMPOSITE_SETTING_FAILED syscall.Errno = 15812
+ ERROR_STATE_ENUMERATE_CONTAINER_FAILED syscall.Errno = 15813
+ ERROR_STATE_ENUMERATE_SETTINGS_FAILED syscall.Errno = 15814
+ ERROR_STATE_COMPOSITE_SETTING_VALUE_SIZE_LIMIT_EXCEEDED syscall.Errno = 15815
+ ERROR_STATE_SETTING_VALUE_SIZE_LIMIT_EXCEEDED syscall.Errno = 15816
+ ERROR_STATE_SETTING_NAME_SIZE_LIMIT_EXCEEDED syscall.Errno = 15817
+ ERROR_STATE_CONTAINER_NAME_SIZE_LIMIT_EXCEEDED syscall.Errno = 15818
+ ERROR_API_UNAVAILABLE syscall.Errno = 15841
+ STORE_ERROR_UNLICENSED syscall.Errno = 15861
+ STORE_ERROR_UNLICENSED_USER syscall.Errno = 15862
+ STORE_ERROR_PENDING_COM_TRANSACTION syscall.Errno = 15863
+ STORE_ERROR_LICENSE_REVOKED syscall.Errno = 15864
+ SEVERITY_SUCCESS syscall.Errno = 0
+ SEVERITY_ERROR syscall.Errno = 1
+ FACILITY_NT_BIT = 0x10000000
+ E_NOT_SET = ERROR_NOT_FOUND
+ E_NOT_VALID_STATE = ERROR_INVALID_STATE
+ E_NOT_SUFFICIENT_BUFFER = ERROR_INSUFFICIENT_BUFFER
+ E_TIME_CRITICAL_THREAD = ERROR_TIME_CRITICAL_THREAD
+ NOERROR syscall.Errno = 0
+ E_UNEXPECTED Handle = 0x8000FFFF
+ E_NOTIMPL Handle = 0x80004001
+ E_OUTOFMEMORY Handle = 0x8007000E
+ E_INVALIDARG Handle = 0x80070057
+ E_NOINTERFACE Handle = 0x80004002
+ E_POINTER Handle = 0x80004003
+ E_HANDLE Handle = 0x80070006
+ E_ABORT Handle = 0x80004004
+ E_FAIL Handle = 0x80004005
+ E_ACCESSDENIED Handle = 0x80070005
+ E_PENDING Handle = 0x8000000A
+ E_BOUNDS Handle = 0x8000000B
+ E_CHANGED_STATE Handle = 0x8000000C
+ E_ILLEGAL_STATE_CHANGE Handle = 0x8000000D
+ E_ILLEGAL_METHOD_CALL Handle = 0x8000000E
+ RO_E_METADATA_NAME_NOT_FOUND Handle = 0x8000000F
+ RO_E_METADATA_NAME_IS_NAMESPACE Handle = 0x80000010
+ RO_E_METADATA_INVALID_TYPE_FORMAT Handle = 0x80000011
+ RO_E_INVALID_METADATA_FILE Handle = 0x80000012
+ RO_E_CLOSED Handle = 0x80000013
+ RO_E_EXCLUSIVE_WRITE Handle = 0x80000014
+ RO_E_CHANGE_NOTIFICATION_IN_PROGRESS Handle = 0x80000015
+ RO_E_ERROR_STRING_NOT_FOUND Handle = 0x80000016
+ E_STRING_NOT_NULL_TERMINATED Handle = 0x80000017
+ E_ILLEGAL_DELEGATE_ASSIGNMENT Handle = 0x80000018
+ E_ASYNC_OPERATION_NOT_STARTED Handle = 0x80000019
+ E_APPLICATION_EXITING Handle = 0x8000001A
+ E_APPLICATION_VIEW_EXITING Handle = 0x8000001B
+ RO_E_MUST_BE_AGILE Handle = 0x8000001C
+ RO_E_UNSUPPORTED_FROM_MTA Handle = 0x8000001D
+ RO_E_COMMITTED Handle = 0x8000001E
+ RO_E_BLOCKED_CROSS_ASTA_CALL Handle = 0x8000001F
+ RO_E_CANNOT_ACTIVATE_FULL_TRUST_SERVER Handle = 0x80000020
+ RO_E_CANNOT_ACTIVATE_UNIVERSAL_APPLICATION_SERVER Handle = 0x80000021
+ CO_E_INIT_TLS Handle = 0x80004006
+ CO_E_INIT_SHARED_ALLOCATOR Handle = 0x80004007
+ CO_E_INIT_MEMORY_ALLOCATOR Handle = 0x80004008
+ CO_E_INIT_CLASS_CACHE Handle = 0x80004009
+ CO_E_INIT_RPC_CHANNEL Handle = 0x8000400A
+ CO_E_INIT_TLS_SET_CHANNEL_CONTROL Handle = 0x8000400B
+ CO_E_INIT_TLS_CHANNEL_CONTROL Handle = 0x8000400C
+ CO_E_INIT_UNACCEPTED_USER_ALLOCATOR Handle = 0x8000400D
+ CO_E_INIT_SCM_MUTEX_EXISTS Handle = 0x8000400E
+ CO_E_INIT_SCM_FILE_MAPPING_EXISTS Handle = 0x8000400F
+ CO_E_INIT_SCM_MAP_VIEW_OF_FILE Handle = 0x80004010
+ CO_E_INIT_SCM_EXEC_FAILURE Handle = 0x80004011
+ CO_E_INIT_ONLY_SINGLE_THREADED Handle = 0x80004012
+ CO_E_CANT_REMOTE Handle = 0x80004013
+ CO_E_BAD_SERVER_NAME Handle = 0x80004014
+ CO_E_WRONG_SERVER_IDENTITY Handle = 0x80004015
+ CO_E_OLE1DDE_DISABLED Handle = 0x80004016
+ CO_E_RUNAS_SYNTAX Handle = 0x80004017
+ CO_E_CREATEPROCESS_FAILURE Handle = 0x80004018
+ CO_E_RUNAS_CREATEPROCESS_FAILURE Handle = 0x80004019
+ CO_E_RUNAS_LOGON_FAILURE Handle = 0x8000401A
+ CO_E_LAUNCH_PERMSSION_DENIED Handle = 0x8000401B
+ CO_E_START_SERVICE_FAILURE Handle = 0x8000401C
+ CO_E_REMOTE_COMMUNICATION_FAILURE Handle = 0x8000401D
+ CO_E_SERVER_START_TIMEOUT Handle = 0x8000401E
+ CO_E_CLSREG_INCONSISTENT Handle = 0x8000401F
+ CO_E_IIDREG_INCONSISTENT Handle = 0x80004020
+ CO_E_NOT_SUPPORTED Handle = 0x80004021
+ CO_E_RELOAD_DLL Handle = 0x80004022
+ CO_E_MSI_ERROR Handle = 0x80004023
+ CO_E_ATTEMPT_TO_CREATE_OUTSIDE_CLIENT_CONTEXT Handle = 0x80004024
+ CO_E_SERVER_PAUSED Handle = 0x80004025
+ CO_E_SERVER_NOT_PAUSED Handle = 0x80004026
+ CO_E_CLASS_DISABLED Handle = 0x80004027
+ CO_E_CLRNOTAVAILABLE Handle = 0x80004028
+ CO_E_ASYNC_WORK_REJECTED Handle = 0x80004029
+ CO_E_SERVER_INIT_TIMEOUT Handle = 0x8000402A
+ CO_E_NO_SECCTX_IN_ACTIVATE Handle = 0x8000402B
+ CO_E_TRACKER_CONFIG Handle = 0x80004030
+ CO_E_THREADPOOL_CONFIG Handle = 0x80004031
+ CO_E_SXS_CONFIG Handle = 0x80004032
+ CO_E_MALFORMED_SPN Handle = 0x80004033
+ CO_E_UNREVOKED_REGISTRATION_ON_APARTMENT_SHUTDOWN Handle = 0x80004034
+ CO_E_PREMATURE_STUB_RUNDOWN Handle = 0x80004035
+ S_OK Handle = 0
+ S_FALSE Handle = 1
+ OLE_E_FIRST Handle = 0x80040000
+ OLE_E_LAST Handle = 0x800400FF
+ OLE_S_FIRST Handle = 0x00040000
+ OLE_S_LAST Handle = 0x000400FF
+ OLE_E_OLEVERB Handle = 0x80040000
+ OLE_E_ADVF Handle = 0x80040001
+ OLE_E_ENUM_NOMORE Handle = 0x80040002
+ OLE_E_ADVISENOTSUPPORTED Handle = 0x80040003
+ OLE_E_NOCONNECTION Handle = 0x80040004
+ OLE_E_NOTRUNNING Handle = 0x80040005
+ OLE_E_NOCACHE Handle = 0x80040006
+ OLE_E_BLANK Handle = 0x80040007
+ OLE_E_CLASSDIFF Handle = 0x80040008
+ OLE_E_CANT_GETMONIKER Handle = 0x80040009
+ OLE_E_CANT_BINDTOSOURCE Handle = 0x8004000A
+ OLE_E_STATIC Handle = 0x8004000B
+ OLE_E_PROMPTSAVECANCELLED Handle = 0x8004000C
+ OLE_E_INVALIDRECT Handle = 0x8004000D
+ OLE_E_WRONGCOMPOBJ Handle = 0x8004000E
+ OLE_E_INVALIDHWND Handle = 0x8004000F
+ OLE_E_NOT_INPLACEACTIVE Handle = 0x80040010
+ OLE_E_CANTCONVERT Handle = 0x80040011
+ OLE_E_NOSTORAGE Handle = 0x80040012
+ DV_E_FORMATETC Handle = 0x80040064
+ DV_E_DVTARGETDEVICE Handle = 0x80040065
+ DV_E_STGMEDIUM Handle = 0x80040066
+ DV_E_STATDATA Handle = 0x80040067
+ DV_E_LINDEX Handle = 0x80040068
+ DV_E_TYMED Handle = 0x80040069
+ DV_E_CLIPFORMAT Handle = 0x8004006A
+ DV_E_DVASPECT Handle = 0x8004006B
+ DV_E_DVTARGETDEVICE_SIZE Handle = 0x8004006C
+ DV_E_NOIVIEWOBJECT Handle = 0x8004006D
+ DRAGDROP_E_FIRST syscall.Errno = 0x80040100
+ DRAGDROP_E_LAST syscall.Errno = 0x8004010F
+ DRAGDROP_S_FIRST syscall.Errno = 0x00040100
+ DRAGDROP_S_LAST syscall.Errno = 0x0004010F
+ DRAGDROP_E_NOTREGISTERED Handle = 0x80040100
+ DRAGDROP_E_ALREADYREGISTERED Handle = 0x80040101
+ DRAGDROP_E_INVALIDHWND Handle = 0x80040102
+ DRAGDROP_E_CONCURRENT_DRAG_ATTEMPTED Handle = 0x80040103
+ CLASSFACTORY_E_FIRST syscall.Errno = 0x80040110
+ CLASSFACTORY_E_LAST syscall.Errno = 0x8004011F
+ CLASSFACTORY_S_FIRST syscall.Errno = 0x00040110
+ CLASSFACTORY_S_LAST syscall.Errno = 0x0004011F
+ CLASS_E_NOAGGREGATION Handle = 0x80040110
+ CLASS_E_CLASSNOTAVAILABLE Handle = 0x80040111
+ CLASS_E_NOTLICENSED Handle = 0x80040112
+ MARSHAL_E_FIRST syscall.Errno = 0x80040120
+ MARSHAL_E_LAST syscall.Errno = 0x8004012F
+ MARSHAL_S_FIRST syscall.Errno = 0x00040120
+ MARSHAL_S_LAST syscall.Errno = 0x0004012F
+ DATA_E_FIRST syscall.Errno = 0x80040130
+ DATA_E_LAST syscall.Errno = 0x8004013F
+ DATA_S_FIRST syscall.Errno = 0x00040130
+ DATA_S_LAST syscall.Errno = 0x0004013F
+ VIEW_E_FIRST syscall.Errno = 0x80040140
+ VIEW_E_LAST syscall.Errno = 0x8004014F
+ VIEW_S_FIRST syscall.Errno = 0x00040140
+ VIEW_S_LAST syscall.Errno = 0x0004014F
+ VIEW_E_DRAW Handle = 0x80040140
+ REGDB_E_FIRST syscall.Errno = 0x80040150
+ REGDB_E_LAST syscall.Errno = 0x8004015F
+ REGDB_S_FIRST syscall.Errno = 0x00040150
+ REGDB_S_LAST syscall.Errno = 0x0004015F
+ REGDB_E_READREGDB Handle = 0x80040150
+ REGDB_E_WRITEREGDB Handle = 0x80040151
+ REGDB_E_KEYMISSING Handle = 0x80040152
+ REGDB_E_INVALIDVALUE Handle = 0x80040153
+ REGDB_E_CLASSNOTREG Handle = 0x80040154
+ REGDB_E_IIDNOTREG Handle = 0x80040155
+ REGDB_E_BADTHREADINGMODEL Handle = 0x80040156
+ REGDB_E_PACKAGEPOLICYVIOLATION Handle = 0x80040157
+ CAT_E_FIRST syscall.Errno = 0x80040160
+ CAT_E_LAST syscall.Errno = 0x80040161
+ CAT_E_CATIDNOEXIST Handle = 0x80040160
+ CAT_E_NODESCRIPTION Handle = 0x80040161
+ CS_E_FIRST syscall.Errno = 0x80040164
+ CS_E_LAST syscall.Errno = 0x8004016F
+ CS_E_PACKAGE_NOTFOUND Handle = 0x80040164
+ CS_E_NOT_DELETABLE Handle = 0x80040165
+ CS_E_CLASS_NOTFOUND Handle = 0x80040166
+ CS_E_INVALID_VERSION Handle = 0x80040167
+ CS_E_NO_CLASSSTORE Handle = 0x80040168
+ CS_E_OBJECT_NOTFOUND Handle = 0x80040169
+ CS_E_OBJECT_ALREADY_EXISTS Handle = 0x8004016A
+ CS_E_INVALID_PATH Handle = 0x8004016B
+ CS_E_NETWORK_ERROR Handle = 0x8004016C
+ CS_E_ADMIN_LIMIT_EXCEEDED Handle = 0x8004016D
+ CS_E_SCHEMA_MISMATCH Handle = 0x8004016E
+ CS_E_INTERNAL_ERROR Handle = 0x8004016F
+ CACHE_E_FIRST syscall.Errno = 0x80040170
+ CACHE_E_LAST syscall.Errno = 0x8004017F
+ CACHE_S_FIRST syscall.Errno = 0x00040170
+ CACHE_S_LAST syscall.Errno = 0x0004017F
+ CACHE_E_NOCACHE_UPDATED Handle = 0x80040170
+ OLEOBJ_E_FIRST syscall.Errno = 0x80040180
+ OLEOBJ_E_LAST syscall.Errno = 0x8004018F
+ OLEOBJ_S_FIRST syscall.Errno = 0x00040180
+ OLEOBJ_S_LAST syscall.Errno = 0x0004018F
+ OLEOBJ_E_NOVERBS Handle = 0x80040180
+ OLEOBJ_E_INVALIDVERB Handle = 0x80040181
+ CLIENTSITE_E_FIRST syscall.Errno = 0x80040190
+ CLIENTSITE_E_LAST syscall.Errno = 0x8004019F
+ CLIENTSITE_S_FIRST syscall.Errno = 0x00040190
+ CLIENTSITE_S_LAST syscall.Errno = 0x0004019F
+ INPLACE_E_NOTUNDOABLE Handle = 0x800401A0
+ INPLACE_E_NOTOOLSPACE Handle = 0x800401A1
+ INPLACE_E_FIRST syscall.Errno = 0x800401A0
+ INPLACE_E_LAST syscall.Errno = 0x800401AF
+ INPLACE_S_FIRST syscall.Errno = 0x000401A0
+ INPLACE_S_LAST syscall.Errno = 0x000401AF
+ ENUM_E_FIRST syscall.Errno = 0x800401B0
+ ENUM_E_LAST syscall.Errno = 0x800401BF
+ ENUM_S_FIRST syscall.Errno = 0x000401B0
+ ENUM_S_LAST syscall.Errno = 0x000401BF
+ CONVERT10_E_FIRST syscall.Errno = 0x800401C0
+ CONVERT10_E_LAST syscall.Errno = 0x800401CF
+ CONVERT10_S_FIRST syscall.Errno = 0x000401C0
+ CONVERT10_S_LAST syscall.Errno = 0x000401CF
+ CONVERT10_E_OLESTREAM_GET Handle = 0x800401C0
+ CONVERT10_E_OLESTREAM_PUT Handle = 0x800401C1
+ CONVERT10_E_OLESTREAM_FMT Handle = 0x800401C2
+ CONVERT10_E_OLESTREAM_BITMAP_TO_DIB Handle = 0x800401C3
+ CONVERT10_E_STG_FMT Handle = 0x800401C4
+ CONVERT10_E_STG_NO_STD_STREAM Handle = 0x800401C5
+ CONVERT10_E_STG_DIB_TO_BITMAP Handle = 0x800401C6
+ CLIPBRD_E_FIRST syscall.Errno = 0x800401D0
+ CLIPBRD_E_LAST syscall.Errno = 0x800401DF
+ CLIPBRD_S_FIRST syscall.Errno = 0x000401D0
+ CLIPBRD_S_LAST syscall.Errno = 0x000401DF
+ CLIPBRD_E_CANT_OPEN Handle = 0x800401D0
+ CLIPBRD_E_CANT_EMPTY Handle = 0x800401D1
+ CLIPBRD_E_CANT_SET Handle = 0x800401D2
+ CLIPBRD_E_BAD_DATA Handle = 0x800401D3
+ CLIPBRD_E_CANT_CLOSE Handle = 0x800401D4
+ MK_E_FIRST syscall.Errno = 0x800401E0
+ MK_E_LAST syscall.Errno = 0x800401EF
+ MK_S_FIRST syscall.Errno = 0x000401E0
+ MK_S_LAST syscall.Errno = 0x000401EF
+ MK_E_CONNECTMANUALLY Handle = 0x800401E0
+ MK_E_EXCEEDEDDEADLINE Handle = 0x800401E1
+ MK_E_NEEDGENERIC Handle = 0x800401E2
+ MK_E_UNAVAILABLE Handle = 0x800401E3
+ MK_E_SYNTAX Handle = 0x800401E4
+ MK_E_NOOBJECT Handle = 0x800401E5
+ MK_E_INVALIDEXTENSION Handle = 0x800401E6
+ MK_E_INTERMEDIATEINTERFACENOTSUPPORTED Handle = 0x800401E7
+ MK_E_NOTBINDABLE Handle = 0x800401E8
+ MK_E_NOTBOUND Handle = 0x800401E9
+ MK_E_CANTOPENFILE Handle = 0x800401EA
+ MK_E_MUSTBOTHERUSER Handle = 0x800401EB
+ MK_E_NOINVERSE Handle = 0x800401EC
+ MK_E_NOSTORAGE Handle = 0x800401ED
+ MK_E_NOPREFIX Handle = 0x800401EE
+ MK_E_ENUMERATION_FAILED Handle = 0x800401EF
+ CO_E_FIRST syscall.Errno = 0x800401F0
+ CO_E_LAST syscall.Errno = 0x800401FF
+ CO_S_FIRST syscall.Errno = 0x000401F0
+ CO_S_LAST syscall.Errno = 0x000401FF
+ CO_E_NOTINITIALIZED Handle = 0x800401F0
+ CO_E_ALREADYINITIALIZED Handle = 0x800401F1
+ CO_E_CANTDETERMINECLASS Handle = 0x800401F2
+ CO_E_CLASSSTRING Handle = 0x800401F3
+ CO_E_IIDSTRING Handle = 0x800401F4
+ CO_E_APPNOTFOUND Handle = 0x800401F5
+ CO_E_APPSINGLEUSE Handle = 0x800401F6
+ CO_E_ERRORINAPP Handle = 0x800401F7
+ CO_E_DLLNOTFOUND Handle = 0x800401F8
+ CO_E_ERRORINDLL Handle = 0x800401F9
+ CO_E_WRONGOSFORAPP Handle = 0x800401FA
+ CO_E_OBJNOTREG Handle = 0x800401FB
+ CO_E_OBJISREG Handle = 0x800401FC
+ CO_E_OBJNOTCONNECTED Handle = 0x800401FD
+ CO_E_APPDIDNTREG Handle = 0x800401FE
+ CO_E_RELEASED Handle = 0x800401FF
+ EVENT_E_FIRST syscall.Errno = 0x80040200
+ EVENT_E_LAST syscall.Errno = 0x8004021F
+ EVENT_S_FIRST syscall.Errno = 0x00040200
+ EVENT_S_LAST syscall.Errno = 0x0004021F
+ EVENT_S_SOME_SUBSCRIBERS_FAILED Handle = 0x00040200
+ EVENT_E_ALL_SUBSCRIBERS_FAILED Handle = 0x80040201
+ EVENT_S_NOSUBSCRIBERS Handle = 0x00040202
+ EVENT_E_QUERYSYNTAX Handle = 0x80040203
+ EVENT_E_QUERYFIELD Handle = 0x80040204
+ EVENT_E_INTERNALEXCEPTION Handle = 0x80040205
+ EVENT_E_INTERNALERROR Handle = 0x80040206
+ EVENT_E_INVALID_PER_USER_SID Handle = 0x80040207
+ EVENT_E_USER_EXCEPTION Handle = 0x80040208
+ EVENT_E_TOO_MANY_METHODS Handle = 0x80040209
+ EVENT_E_MISSING_EVENTCLASS Handle = 0x8004020A
+ EVENT_E_NOT_ALL_REMOVED Handle = 0x8004020B
+ EVENT_E_COMPLUS_NOT_INSTALLED Handle = 0x8004020C
+ EVENT_E_CANT_MODIFY_OR_DELETE_UNCONFIGURED_OBJECT Handle = 0x8004020D
+ EVENT_E_CANT_MODIFY_OR_DELETE_CONFIGURED_OBJECT Handle = 0x8004020E
+ EVENT_E_INVALID_EVENT_CLASS_PARTITION Handle = 0x8004020F
+ EVENT_E_PER_USER_SID_NOT_LOGGED_ON Handle = 0x80040210
+ TPC_E_INVALID_PROPERTY Handle = 0x80040241
+ TPC_E_NO_DEFAULT_TABLET Handle = 0x80040212
+ TPC_E_UNKNOWN_PROPERTY Handle = 0x8004021B
+ TPC_E_INVALID_INPUT_RECT Handle = 0x80040219
+ TPC_E_INVALID_STROKE Handle = 0x80040222
+ TPC_E_INITIALIZE_FAIL Handle = 0x80040223
+ TPC_E_NOT_RELEVANT Handle = 0x80040232
+ TPC_E_INVALID_PACKET_DESCRIPTION Handle = 0x80040233
+ TPC_E_RECOGNIZER_NOT_REGISTERED Handle = 0x80040235
+ TPC_E_INVALID_RIGHTS Handle = 0x80040236
+ TPC_E_OUT_OF_ORDER_CALL Handle = 0x80040237
+ TPC_E_QUEUE_FULL Handle = 0x80040238
+ TPC_E_INVALID_CONFIGURATION Handle = 0x80040239
+ TPC_E_INVALID_DATA_FROM_RECOGNIZER Handle = 0x8004023A
+ TPC_S_TRUNCATED Handle = 0x00040252
+ TPC_S_INTERRUPTED Handle = 0x00040253
+ TPC_S_NO_DATA_TO_PROCESS Handle = 0x00040254
+ XACT_E_FIRST syscall.Errno = 0x8004D000
+ XACT_E_LAST syscall.Errno = 0x8004D02B
+ XACT_S_FIRST syscall.Errno = 0x0004D000
+ XACT_S_LAST syscall.Errno = 0x0004D010
+ XACT_E_ALREADYOTHERSINGLEPHASE Handle = 0x8004D000
+ XACT_E_CANTRETAIN Handle = 0x8004D001
+ XACT_E_COMMITFAILED Handle = 0x8004D002
+ XACT_E_COMMITPREVENTED Handle = 0x8004D003
+ XACT_E_HEURISTICABORT Handle = 0x8004D004
+ XACT_E_HEURISTICCOMMIT Handle = 0x8004D005
+ XACT_E_HEURISTICDAMAGE Handle = 0x8004D006
+ XACT_E_HEURISTICDANGER Handle = 0x8004D007
+ XACT_E_ISOLATIONLEVEL Handle = 0x8004D008
+ XACT_E_NOASYNC Handle = 0x8004D009
+ XACT_E_NOENLIST Handle = 0x8004D00A
+ XACT_E_NOISORETAIN Handle = 0x8004D00B
+ XACT_E_NORESOURCE Handle = 0x8004D00C
+ XACT_E_NOTCURRENT Handle = 0x8004D00D
+ XACT_E_NOTRANSACTION Handle = 0x8004D00E
+ XACT_E_NOTSUPPORTED Handle = 0x8004D00F
+ XACT_E_UNKNOWNRMGRID Handle = 0x8004D010
+ XACT_E_WRONGSTATE Handle = 0x8004D011
+ XACT_E_WRONGUOW Handle = 0x8004D012
+ XACT_E_XTIONEXISTS Handle = 0x8004D013
+ XACT_E_NOIMPORTOBJECT Handle = 0x8004D014
+ XACT_E_INVALIDCOOKIE Handle = 0x8004D015
+ XACT_E_INDOUBT Handle = 0x8004D016
+ XACT_E_NOTIMEOUT Handle = 0x8004D017
+ XACT_E_ALREADYINPROGRESS Handle = 0x8004D018
+ XACT_E_ABORTED Handle = 0x8004D019
+ XACT_E_LOGFULL Handle = 0x8004D01A
+ XACT_E_TMNOTAVAILABLE Handle = 0x8004D01B
+ XACT_E_CONNECTION_DOWN Handle = 0x8004D01C
+ XACT_E_CONNECTION_DENIED Handle = 0x8004D01D
+ XACT_E_REENLISTTIMEOUT Handle = 0x8004D01E
+ XACT_E_TIP_CONNECT_FAILED Handle = 0x8004D01F
+ XACT_E_TIP_PROTOCOL_ERROR Handle = 0x8004D020
+ XACT_E_TIP_PULL_FAILED Handle = 0x8004D021
+ XACT_E_DEST_TMNOTAVAILABLE Handle = 0x8004D022
+ XACT_E_TIP_DISABLED Handle = 0x8004D023
+ XACT_E_NETWORK_TX_DISABLED Handle = 0x8004D024
+ XACT_E_PARTNER_NETWORK_TX_DISABLED Handle = 0x8004D025
+ XACT_E_XA_TX_DISABLED Handle = 0x8004D026
+ XACT_E_UNABLE_TO_READ_DTC_CONFIG Handle = 0x8004D027
+ XACT_E_UNABLE_TO_LOAD_DTC_PROXY Handle = 0x8004D028
+ XACT_E_ABORTING Handle = 0x8004D029
+ XACT_E_PUSH_COMM_FAILURE Handle = 0x8004D02A
+ XACT_E_PULL_COMM_FAILURE Handle = 0x8004D02B
+ XACT_E_LU_TX_DISABLED Handle = 0x8004D02C
+ XACT_E_CLERKNOTFOUND Handle = 0x8004D080
+ XACT_E_CLERKEXISTS Handle = 0x8004D081
+ XACT_E_RECOVERYINPROGRESS Handle = 0x8004D082
+ XACT_E_TRANSACTIONCLOSED Handle = 0x8004D083
+ XACT_E_INVALIDLSN Handle = 0x8004D084
+ XACT_E_REPLAYREQUEST Handle = 0x8004D085
+ XACT_S_ASYNC Handle = 0x0004D000
+ XACT_S_DEFECT Handle = 0x0004D001
+ XACT_S_READONLY Handle = 0x0004D002
+ XACT_S_SOMENORETAIN Handle = 0x0004D003
+ XACT_S_OKINFORM Handle = 0x0004D004
+ XACT_S_MADECHANGESCONTENT Handle = 0x0004D005
+ XACT_S_MADECHANGESINFORM Handle = 0x0004D006
+ XACT_S_ALLNORETAIN Handle = 0x0004D007
+ XACT_S_ABORTING Handle = 0x0004D008
+ XACT_S_SINGLEPHASE Handle = 0x0004D009
+ XACT_S_LOCALLY_OK Handle = 0x0004D00A
+ XACT_S_LASTRESOURCEMANAGER Handle = 0x0004D010
+ CONTEXT_E_FIRST syscall.Errno = 0x8004E000
+ CONTEXT_E_LAST syscall.Errno = 0x8004E02F
+ CONTEXT_S_FIRST syscall.Errno = 0x0004E000
+ CONTEXT_S_LAST syscall.Errno = 0x0004E02F
+ CONTEXT_E_ABORTED Handle = 0x8004E002
+ CONTEXT_E_ABORTING Handle = 0x8004E003
+ CONTEXT_E_NOCONTEXT Handle = 0x8004E004
+ CONTEXT_E_WOULD_DEADLOCK Handle = 0x8004E005
+ CONTEXT_E_SYNCH_TIMEOUT Handle = 0x8004E006
+ CONTEXT_E_OLDREF Handle = 0x8004E007
+ CONTEXT_E_ROLENOTFOUND Handle = 0x8004E00C
+ CONTEXT_E_TMNOTAVAILABLE Handle = 0x8004E00F
+ CO_E_ACTIVATIONFAILED Handle = 0x8004E021
+ CO_E_ACTIVATIONFAILED_EVENTLOGGED Handle = 0x8004E022
+ CO_E_ACTIVATIONFAILED_CATALOGERROR Handle = 0x8004E023
+ CO_E_ACTIVATIONFAILED_TIMEOUT Handle = 0x8004E024
+ CO_E_INITIALIZATIONFAILED Handle = 0x8004E025
+ CONTEXT_E_NOJIT Handle = 0x8004E026
+ CONTEXT_E_NOTRANSACTION Handle = 0x8004E027
+ CO_E_THREADINGMODEL_CHANGED Handle = 0x8004E028
+ CO_E_NOIISINTRINSICS Handle = 0x8004E029
+ CO_E_NOCOOKIES Handle = 0x8004E02A
+ CO_E_DBERROR Handle = 0x8004E02B
+ CO_E_NOTPOOLED Handle = 0x8004E02C
+ CO_E_NOTCONSTRUCTED Handle = 0x8004E02D
+ CO_E_NOSYNCHRONIZATION Handle = 0x8004E02E
+ CO_E_ISOLEVELMISMATCH Handle = 0x8004E02F
+ CO_E_CALL_OUT_OF_TX_SCOPE_NOT_ALLOWED Handle = 0x8004E030
+ CO_E_EXIT_TRANSACTION_SCOPE_NOT_CALLED Handle = 0x8004E031
+ OLE_S_USEREG Handle = 0x00040000
+ OLE_S_STATIC Handle = 0x00040001
+ OLE_S_MAC_CLIPFORMAT Handle = 0x00040002
+ DRAGDROP_S_DROP Handle = 0x00040100
+ DRAGDROP_S_CANCEL Handle = 0x00040101
+ DRAGDROP_S_USEDEFAULTCURSORS Handle = 0x00040102
+ DATA_S_SAMEFORMATETC Handle = 0x00040130
+ VIEW_S_ALREADY_FROZEN Handle = 0x00040140
+ CACHE_S_FORMATETC_NOTSUPPORTED Handle = 0x00040170
+ CACHE_S_SAMECACHE Handle = 0x00040171
+ CACHE_S_SOMECACHES_NOTUPDATED Handle = 0x00040172
+ OLEOBJ_S_INVALIDVERB Handle = 0x00040180
+ OLEOBJ_S_CANNOT_DOVERB_NOW Handle = 0x00040181
+ OLEOBJ_S_INVALIDHWND Handle = 0x00040182
+ INPLACE_S_TRUNCATED Handle = 0x000401A0
+ CONVERT10_S_NO_PRESENTATION Handle = 0x000401C0
+ MK_S_REDUCED_TO_SELF Handle = 0x000401E2
+ MK_S_ME Handle = 0x000401E4
+ MK_S_HIM Handle = 0x000401E5
+ MK_S_US Handle = 0x000401E6
+ MK_S_MONIKERALREADYREGISTERED Handle = 0x000401E7
+ SCHED_S_TASK_READY Handle = 0x00041300
+ SCHED_S_TASK_RUNNING Handle = 0x00041301
+ SCHED_S_TASK_DISABLED Handle = 0x00041302
+ SCHED_S_TASK_HAS_NOT_RUN Handle = 0x00041303
+ SCHED_S_TASK_NO_MORE_RUNS Handle = 0x00041304
+ SCHED_S_TASK_NOT_SCHEDULED Handle = 0x00041305
+ SCHED_S_TASK_TERMINATED Handle = 0x00041306
+ SCHED_S_TASK_NO_VALID_TRIGGERS Handle = 0x00041307
+ SCHED_S_EVENT_TRIGGER Handle = 0x00041308
+ SCHED_E_TRIGGER_NOT_FOUND Handle = 0x80041309
+ SCHED_E_TASK_NOT_READY Handle = 0x8004130A
+ SCHED_E_TASK_NOT_RUNNING Handle = 0x8004130B
+ SCHED_E_SERVICE_NOT_INSTALLED Handle = 0x8004130C
+ SCHED_E_CANNOT_OPEN_TASK Handle = 0x8004130D
+ SCHED_E_INVALID_TASK Handle = 0x8004130E
+ SCHED_E_ACCOUNT_INFORMATION_NOT_SET Handle = 0x8004130F
+ SCHED_E_ACCOUNT_NAME_NOT_FOUND Handle = 0x80041310
+ SCHED_E_ACCOUNT_DBASE_CORRUPT Handle = 0x80041311
+ SCHED_E_NO_SECURITY_SERVICES Handle = 0x80041312
+ SCHED_E_UNKNOWN_OBJECT_VERSION Handle = 0x80041313
+ SCHED_E_UNSUPPORTED_ACCOUNT_OPTION Handle = 0x80041314
+ SCHED_E_SERVICE_NOT_RUNNING Handle = 0x80041315
+ SCHED_E_UNEXPECTEDNODE Handle = 0x80041316
+ SCHED_E_NAMESPACE Handle = 0x80041317
+ SCHED_E_INVALIDVALUE Handle = 0x80041318
+ SCHED_E_MISSINGNODE Handle = 0x80041319
+ SCHED_E_MALFORMEDXML Handle = 0x8004131A
+ SCHED_S_SOME_TRIGGERS_FAILED Handle = 0x0004131B
+ SCHED_S_BATCH_LOGON_PROBLEM Handle = 0x0004131C
+ SCHED_E_TOO_MANY_NODES Handle = 0x8004131D
+ SCHED_E_PAST_END_BOUNDARY Handle = 0x8004131E
+ SCHED_E_ALREADY_RUNNING Handle = 0x8004131F
+ SCHED_E_USER_NOT_LOGGED_ON Handle = 0x80041320
+ SCHED_E_INVALID_TASK_HASH Handle = 0x80041321
+ SCHED_E_SERVICE_NOT_AVAILABLE Handle = 0x80041322
+ SCHED_E_SERVICE_TOO_BUSY Handle = 0x80041323
+ SCHED_E_TASK_ATTEMPTED Handle = 0x80041324
+ SCHED_S_TASK_QUEUED Handle = 0x00041325
+ SCHED_E_TASK_DISABLED Handle = 0x80041326
+ SCHED_E_TASK_NOT_V1_COMPAT Handle = 0x80041327
+ SCHED_E_START_ON_DEMAND Handle = 0x80041328
+ SCHED_E_TASK_NOT_UBPM_COMPAT Handle = 0x80041329
+ SCHED_E_DEPRECATED_FEATURE_USED Handle = 0x80041330
+ CO_E_CLASS_CREATE_FAILED Handle = 0x80080001
+ CO_E_SCM_ERROR Handle = 0x80080002
+ CO_E_SCM_RPC_FAILURE Handle = 0x80080003
+ CO_E_BAD_PATH Handle = 0x80080004
+ CO_E_SERVER_EXEC_FAILURE Handle = 0x80080005
+ CO_E_OBJSRV_RPC_FAILURE Handle = 0x80080006
+ MK_E_NO_NORMALIZED Handle = 0x80080007
+ CO_E_SERVER_STOPPING Handle = 0x80080008
+ MEM_E_INVALID_ROOT Handle = 0x80080009
+ MEM_E_INVALID_LINK Handle = 0x80080010
+ MEM_E_INVALID_SIZE Handle = 0x80080011
+ CO_S_NOTALLINTERFACES Handle = 0x00080012
+ CO_S_MACHINENAMENOTFOUND Handle = 0x00080013
+ CO_E_MISSING_DISPLAYNAME Handle = 0x80080015
+ CO_E_RUNAS_VALUE_MUST_BE_AAA Handle = 0x80080016
+ CO_E_ELEVATION_DISABLED Handle = 0x80080017
+ APPX_E_PACKAGING_INTERNAL Handle = 0x80080200
+ APPX_E_INTERLEAVING_NOT_ALLOWED Handle = 0x80080201
+ APPX_E_RELATIONSHIPS_NOT_ALLOWED Handle = 0x80080202
+ APPX_E_MISSING_REQUIRED_FILE Handle = 0x80080203
+ APPX_E_INVALID_MANIFEST Handle = 0x80080204
+ APPX_E_INVALID_BLOCKMAP Handle = 0x80080205
+ APPX_E_CORRUPT_CONTENT Handle = 0x80080206
+ APPX_E_BLOCK_HASH_INVALID Handle = 0x80080207
+ APPX_E_REQUESTED_RANGE_TOO_LARGE Handle = 0x80080208
+ APPX_E_INVALID_SIP_CLIENT_DATA Handle = 0x80080209
+ APPX_E_INVALID_KEY_INFO Handle = 0x8008020A
+ APPX_E_INVALID_CONTENTGROUPMAP Handle = 0x8008020B
+ APPX_E_INVALID_APPINSTALLER Handle = 0x8008020C
+ APPX_E_DELTA_BASELINE_VERSION_MISMATCH Handle = 0x8008020D
+ APPX_E_DELTA_PACKAGE_MISSING_FILE Handle = 0x8008020E
+ APPX_E_INVALID_DELTA_PACKAGE Handle = 0x8008020F
+ APPX_E_DELTA_APPENDED_PACKAGE_NOT_ALLOWED Handle = 0x80080210
+ APPX_E_INVALID_PACKAGING_LAYOUT Handle = 0x80080211
+ APPX_E_INVALID_PACKAGESIGNCONFIG Handle = 0x80080212
+ APPX_E_RESOURCESPRI_NOT_ALLOWED Handle = 0x80080213
+ APPX_E_FILE_COMPRESSION_MISMATCH Handle = 0x80080214
+ APPX_E_INVALID_PAYLOAD_PACKAGE_EXTENSION Handle = 0x80080215
+ APPX_E_INVALID_ENCRYPTION_EXCLUSION_FILE_LIST Handle = 0x80080216
+ BT_E_SPURIOUS_ACTIVATION Handle = 0x80080300
+ DISP_E_UNKNOWNINTERFACE Handle = 0x80020001
+ DISP_E_MEMBERNOTFOUND Handle = 0x80020003
+ DISP_E_PARAMNOTFOUND Handle = 0x80020004
+ DISP_E_TYPEMISMATCH Handle = 0x80020005
+ DISP_E_UNKNOWNNAME Handle = 0x80020006
+ DISP_E_NONAMEDARGS Handle = 0x80020007
+ DISP_E_BADVARTYPE Handle = 0x80020008
+ DISP_E_EXCEPTION Handle = 0x80020009
+ DISP_E_OVERFLOW Handle = 0x8002000A
+ DISP_E_BADINDEX Handle = 0x8002000B
+ DISP_E_UNKNOWNLCID Handle = 0x8002000C
+ DISP_E_ARRAYISLOCKED Handle = 0x8002000D
+ DISP_E_BADPARAMCOUNT Handle = 0x8002000E
+ DISP_E_PARAMNOTOPTIONAL Handle = 0x8002000F
+ DISP_E_BADCALLEE Handle = 0x80020010
+ DISP_E_NOTACOLLECTION Handle = 0x80020011
+ DISP_E_DIVBYZERO Handle = 0x80020012
+ DISP_E_BUFFERTOOSMALL Handle = 0x80020013
+ TYPE_E_BUFFERTOOSMALL Handle = 0x80028016
+ TYPE_E_FIELDNOTFOUND Handle = 0x80028017
+ TYPE_E_INVDATAREAD Handle = 0x80028018
+ TYPE_E_UNSUPFORMAT Handle = 0x80028019
+ TYPE_E_REGISTRYACCESS Handle = 0x8002801C
+ TYPE_E_LIBNOTREGISTERED Handle = 0x8002801D
+ TYPE_E_UNDEFINEDTYPE Handle = 0x80028027
+ TYPE_E_QUALIFIEDNAMEDISALLOWED Handle = 0x80028028
+ TYPE_E_INVALIDSTATE Handle = 0x80028029
+ TYPE_E_WRONGTYPEKIND Handle = 0x8002802A
+ TYPE_E_ELEMENTNOTFOUND Handle = 0x8002802B
+ TYPE_E_AMBIGUOUSNAME Handle = 0x8002802C
+ TYPE_E_NAMECONFLICT Handle = 0x8002802D
+ TYPE_E_UNKNOWNLCID Handle = 0x8002802E
+ TYPE_E_DLLFUNCTIONNOTFOUND Handle = 0x8002802F
+ TYPE_E_BADMODULEKIND Handle = 0x800288BD
+ TYPE_E_SIZETOOBIG Handle = 0x800288C5
+ TYPE_E_DUPLICATEID Handle = 0x800288C6
+ TYPE_E_INVALIDID Handle = 0x800288CF
+ TYPE_E_TYPEMISMATCH Handle = 0x80028CA0
+ TYPE_E_OUTOFBOUNDS Handle = 0x80028CA1
+ TYPE_E_IOERROR Handle = 0x80028CA2
+ TYPE_E_CANTCREATETMPFILE Handle = 0x80028CA3
+ TYPE_E_CANTLOADLIBRARY Handle = 0x80029C4A
+ TYPE_E_INCONSISTENTPROPFUNCS Handle = 0x80029C83
+ TYPE_E_CIRCULARTYPE Handle = 0x80029C84
+ STG_E_INVALIDFUNCTION Handle = 0x80030001
+ STG_E_FILENOTFOUND Handle = 0x80030002
+ STG_E_PATHNOTFOUND Handle = 0x80030003
+ STG_E_TOOMANYOPENFILES Handle = 0x80030004
+ STG_E_ACCESSDENIED Handle = 0x80030005
+ STG_E_INVALIDHANDLE Handle = 0x80030006
+ STG_E_INSUFFICIENTMEMORY Handle = 0x80030008
+ STG_E_INVALIDPOINTER Handle = 0x80030009
+ STG_E_NOMOREFILES Handle = 0x80030012
+ STG_E_DISKISWRITEPROTECTED Handle = 0x80030013
+ STG_E_SEEKERROR Handle = 0x80030019
+ STG_E_WRITEFAULT Handle = 0x8003001D
+ STG_E_READFAULT Handle = 0x8003001E
+ STG_E_SHAREVIOLATION Handle = 0x80030020
+ STG_E_LOCKVIOLATION Handle = 0x80030021
+ STG_E_FILEALREADYEXISTS Handle = 0x80030050
+ STG_E_INVALIDPARAMETER Handle = 0x80030057
+ STG_E_MEDIUMFULL Handle = 0x80030070
+ STG_E_PROPSETMISMATCHED Handle = 0x800300F0
+ STG_E_ABNORMALAPIEXIT Handle = 0x800300FA
+ STG_E_INVALIDHEADER Handle = 0x800300FB
+ STG_E_INVALIDNAME Handle = 0x800300FC
+ STG_E_UNKNOWN Handle = 0x800300FD
+ STG_E_UNIMPLEMENTEDFUNCTION Handle = 0x800300FE
+ STG_E_INVALIDFLAG Handle = 0x800300FF
+ STG_E_INUSE Handle = 0x80030100
+ STG_E_NOTCURRENT Handle = 0x80030101
+ STG_E_REVERTED Handle = 0x80030102
+ STG_E_CANTSAVE Handle = 0x80030103
+ STG_E_OLDFORMAT Handle = 0x80030104
+ STG_E_OLDDLL Handle = 0x80030105
+ STG_E_SHAREREQUIRED Handle = 0x80030106
+ STG_E_NOTFILEBASEDSTORAGE Handle = 0x80030107
+ STG_E_EXTANTMARSHALLINGS Handle = 0x80030108
+ STG_E_DOCFILECORRUPT Handle = 0x80030109
+ STG_E_BADBASEADDRESS Handle = 0x80030110
+ STG_E_DOCFILETOOLARGE Handle = 0x80030111
+ STG_E_NOTSIMPLEFORMAT Handle = 0x80030112
+ STG_E_INCOMPLETE Handle = 0x80030201
+ STG_E_TERMINATED Handle = 0x80030202
+ STG_S_CONVERTED Handle = 0x00030200
+ STG_S_BLOCK Handle = 0x00030201
+ STG_S_RETRYNOW Handle = 0x00030202
+ STG_S_MONITORING Handle = 0x00030203
+ STG_S_MULTIPLEOPENS Handle = 0x00030204
+ STG_S_CONSOLIDATIONFAILED Handle = 0x00030205
+ STG_S_CANNOTCONSOLIDATE Handle = 0x00030206
+ STG_S_POWER_CYCLE_REQUIRED Handle = 0x00030207
+ STG_E_FIRMWARE_SLOT_INVALID Handle = 0x80030208
+ STG_E_FIRMWARE_IMAGE_INVALID Handle = 0x80030209
+ STG_E_DEVICE_UNRESPONSIVE Handle = 0x8003020A
+ STG_E_STATUS_COPY_PROTECTION_FAILURE Handle = 0x80030305
+ STG_E_CSS_AUTHENTICATION_FAILURE Handle = 0x80030306
+ STG_E_CSS_KEY_NOT_PRESENT Handle = 0x80030307
+ STG_E_CSS_KEY_NOT_ESTABLISHED Handle = 0x80030308
+ STG_E_CSS_SCRAMBLED_SECTOR Handle = 0x80030309
+ STG_E_CSS_REGION_MISMATCH Handle = 0x8003030A
+ STG_E_RESETS_EXHAUSTED Handle = 0x8003030B
+ RPC_E_CALL_REJECTED Handle = 0x80010001
+ RPC_E_CALL_CANCELED Handle = 0x80010002
+ RPC_E_CANTPOST_INSENDCALL Handle = 0x80010003
+ RPC_E_CANTCALLOUT_INASYNCCALL Handle = 0x80010004
+ RPC_E_CANTCALLOUT_INEXTERNALCALL Handle = 0x80010005
+ RPC_E_CONNECTION_TERMINATED Handle = 0x80010006
+ RPC_E_SERVER_DIED Handle = 0x80010007
+ RPC_E_CLIENT_DIED Handle = 0x80010008
+ RPC_E_INVALID_DATAPACKET Handle = 0x80010009
+ RPC_E_CANTTRANSMIT_CALL Handle = 0x8001000A
+ RPC_E_CLIENT_CANTMARSHAL_DATA Handle = 0x8001000B
+ RPC_E_CLIENT_CANTUNMARSHAL_DATA Handle = 0x8001000C
+ RPC_E_SERVER_CANTMARSHAL_DATA Handle = 0x8001000D
+ RPC_E_SERVER_CANTUNMARSHAL_DATA Handle = 0x8001000E
+ RPC_E_INVALID_DATA Handle = 0x8001000F
+ RPC_E_INVALID_PARAMETER Handle = 0x80010010
+ RPC_E_CANTCALLOUT_AGAIN Handle = 0x80010011
+ RPC_E_SERVER_DIED_DNE Handle = 0x80010012
+ RPC_E_SYS_CALL_FAILED Handle = 0x80010100
+ RPC_E_OUT_OF_RESOURCES Handle = 0x80010101
+ RPC_E_ATTEMPTED_MULTITHREAD Handle = 0x80010102
+ RPC_E_NOT_REGISTERED Handle = 0x80010103
+ RPC_E_FAULT Handle = 0x80010104
+ RPC_E_SERVERFAULT Handle = 0x80010105
+ RPC_E_CHANGED_MODE Handle = 0x80010106
+ RPC_E_INVALIDMETHOD Handle = 0x80010107
+ RPC_E_DISCONNECTED Handle = 0x80010108
+ RPC_E_RETRY Handle = 0x80010109
+ RPC_E_SERVERCALL_RETRYLATER Handle = 0x8001010A
+ RPC_E_SERVERCALL_REJECTED Handle = 0x8001010B
+ RPC_E_INVALID_CALLDATA Handle = 0x8001010C
+ RPC_E_CANTCALLOUT_ININPUTSYNCCALL Handle = 0x8001010D
+ RPC_E_WRONG_THREAD Handle = 0x8001010E
+ RPC_E_THREAD_NOT_INIT Handle = 0x8001010F
+ RPC_E_VERSION_MISMATCH Handle = 0x80010110
+ RPC_E_INVALID_HEADER Handle = 0x80010111
+ RPC_E_INVALID_EXTENSION Handle = 0x80010112
+ RPC_E_INVALID_IPID Handle = 0x80010113
+ RPC_E_INVALID_OBJECT Handle = 0x80010114
+ RPC_S_CALLPENDING Handle = 0x80010115
+ RPC_S_WAITONTIMER Handle = 0x80010116
+ RPC_E_CALL_COMPLETE Handle = 0x80010117
+ RPC_E_UNSECURE_CALL Handle = 0x80010118
+ RPC_E_TOO_LATE Handle = 0x80010119
+ RPC_E_NO_GOOD_SECURITY_PACKAGES Handle = 0x8001011A
+ RPC_E_ACCESS_DENIED Handle = 0x8001011B
+ RPC_E_REMOTE_DISABLED Handle = 0x8001011C
+ RPC_E_INVALID_OBJREF Handle = 0x8001011D
+ RPC_E_NO_CONTEXT Handle = 0x8001011E
+ RPC_E_TIMEOUT Handle = 0x8001011F
+ RPC_E_NO_SYNC Handle = 0x80010120
+ RPC_E_FULLSIC_REQUIRED Handle = 0x80010121
+ RPC_E_INVALID_STD_NAME Handle = 0x80010122
+ CO_E_FAILEDTOIMPERSONATE Handle = 0x80010123
+ CO_E_FAILEDTOGETSECCTX Handle = 0x80010124
+ CO_E_FAILEDTOOPENTHREADTOKEN Handle = 0x80010125
+ CO_E_FAILEDTOGETTOKENINFO Handle = 0x80010126
+ CO_E_TRUSTEEDOESNTMATCHCLIENT Handle = 0x80010127
+ CO_E_FAILEDTOQUERYCLIENTBLANKET Handle = 0x80010128
+ CO_E_FAILEDTOSETDACL Handle = 0x80010129
+ CO_E_ACCESSCHECKFAILED Handle = 0x8001012A
+ CO_E_NETACCESSAPIFAILED Handle = 0x8001012B
+ CO_E_WRONGTRUSTEENAMESYNTAX Handle = 0x8001012C
+ CO_E_INVALIDSID Handle = 0x8001012D
+ CO_E_CONVERSIONFAILED Handle = 0x8001012E
+ CO_E_NOMATCHINGSIDFOUND Handle = 0x8001012F
+ CO_E_LOOKUPACCSIDFAILED Handle = 0x80010130
+ CO_E_NOMATCHINGNAMEFOUND Handle = 0x80010131
+ CO_E_LOOKUPACCNAMEFAILED Handle = 0x80010132
+ CO_E_SETSERLHNDLFAILED Handle = 0x80010133
+ CO_E_FAILEDTOGETWINDIR Handle = 0x80010134
+ CO_E_PATHTOOLONG Handle = 0x80010135
+ CO_E_FAILEDTOGENUUID Handle = 0x80010136
+ CO_E_FAILEDTOCREATEFILE Handle = 0x80010137
+ CO_E_FAILEDTOCLOSEHANDLE Handle = 0x80010138
+ CO_E_EXCEEDSYSACLLIMIT Handle = 0x80010139
+ CO_E_ACESINWRONGORDER Handle = 0x8001013A
+ CO_E_INCOMPATIBLESTREAMVERSION Handle = 0x8001013B
+ CO_E_FAILEDTOOPENPROCESSTOKEN Handle = 0x8001013C
+ CO_E_DECODEFAILED Handle = 0x8001013D
+ CO_E_ACNOTINITIALIZED Handle = 0x8001013F
+ CO_E_CANCEL_DISABLED Handle = 0x80010140
+ RPC_E_UNEXPECTED Handle = 0x8001FFFF
+ ERROR_AUDITING_DISABLED Handle = 0xC0090001
+ ERROR_ALL_SIDS_FILTERED Handle = 0xC0090002
+ ERROR_BIZRULES_NOT_ENABLED Handle = 0xC0090003
+ NTE_BAD_UID Handle = 0x80090001
+ NTE_BAD_HASH Handle = 0x80090002
+ NTE_BAD_KEY Handle = 0x80090003
+ NTE_BAD_LEN Handle = 0x80090004
+ NTE_BAD_DATA Handle = 0x80090005
+ NTE_BAD_SIGNATURE Handle = 0x80090006
+ NTE_BAD_VER Handle = 0x80090007
+ NTE_BAD_ALGID Handle = 0x80090008
+ NTE_BAD_FLAGS Handle = 0x80090009
+ NTE_BAD_TYPE Handle = 0x8009000A
+ NTE_BAD_KEY_STATE Handle = 0x8009000B
+ NTE_BAD_HASH_STATE Handle = 0x8009000C
+ NTE_NO_KEY Handle = 0x8009000D
+ NTE_NO_MEMORY Handle = 0x8009000E
+ NTE_EXISTS Handle = 0x8009000F
+ NTE_PERM Handle = 0x80090010
+ NTE_NOT_FOUND Handle = 0x80090011
+ NTE_DOUBLE_ENCRYPT Handle = 0x80090012
+ NTE_BAD_PROVIDER Handle = 0x80090013
+ NTE_BAD_PROV_TYPE Handle = 0x80090014
+ NTE_BAD_PUBLIC_KEY Handle = 0x80090015
+ NTE_BAD_KEYSET Handle = 0x80090016
+ NTE_PROV_TYPE_NOT_DEF Handle = 0x80090017
+ NTE_PROV_TYPE_ENTRY_BAD Handle = 0x80090018
+ NTE_KEYSET_NOT_DEF Handle = 0x80090019
+ NTE_KEYSET_ENTRY_BAD Handle = 0x8009001A
+ NTE_PROV_TYPE_NO_MATCH Handle = 0x8009001B
+ NTE_SIGNATURE_FILE_BAD Handle = 0x8009001C
+ NTE_PROVIDER_DLL_FAIL Handle = 0x8009001D
+ NTE_PROV_DLL_NOT_FOUND Handle = 0x8009001E
+ NTE_BAD_KEYSET_PARAM Handle = 0x8009001F
+ NTE_FAIL Handle = 0x80090020
+ NTE_SYS_ERR Handle = 0x80090021
+ NTE_SILENT_CONTEXT Handle = 0x80090022
+ NTE_TOKEN_KEYSET_STORAGE_FULL Handle = 0x80090023
+ NTE_TEMPORARY_PROFILE Handle = 0x80090024
+ NTE_FIXEDPARAMETER Handle = 0x80090025
+ NTE_INVALID_HANDLE Handle = 0x80090026
+ NTE_INVALID_PARAMETER Handle = 0x80090027
+ NTE_BUFFER_TOO_SMALL Handle = 0x80090028
+ NTE_NOT_SUPPORTED Handle = 0x80090029
+ NTE_NO_MORE_ITEMS Handle = 0x8009002A
+ NTE_BUFFERS_OVERLAP Handle = 0x8009002B
+ NTE_DECRYPTION_FAILURE Handle = 0x8009002C
+ NTE_INTERNAL_ERROR Handle = 0x8009002D
+ NTE_UI_REQUIRED Handle = 0x8009002E
+ NTE_HMAC_NOT_SUPPORTED Handle = 0x8009002F
+ NTE_DEVICE_NOT_READY Handle = 0x80090030
+ NTE_AUTHENTICATION_IGNORED Handle = 0x80090031
+ NTE_VALIDATION_FAILED Handle = 0x80090032
+ NTE_INCORRECT_PASSWORD Handle = 0x80090033
+ NTE_ENCRYPTION_FAILURE Handle = 0x80090034
+ NTE_DEVICE_NOT_FOUND Handle = 0x80090035
+ NTE_USER_CANCELLED Handle = 0x80090036
+ NTE_PASSWORD_CHANGE_REQUIRED Handle = 0x80090037
+ NTE_NOT_ACTIVE_CONSOLE Handle = 0x80090038
+ SEC_E_INSUFFICIENT_MEMORY Handle = 0x80090300
+ SEC_E_INVALID_HANDLE Handle = 0x80090301
+ SEC_E_UNSUPPORTED_FUNCTION Handle = 0x80090302
+ SEC_E_TARGET_UNKNOWN Handle = 0x80090303
+ SEC_E_INTERNAL_ERROR Handle = 0x80090304
+ SEC_E_SECPKG_NOT_FOUND Handle = 0x80090305
+ SEC_E_NOT_OWNER Handle = 0x80090306
+ SEC_E_CANNOT_INSTALL Handle = 0x80090307
+ SEC_E_INVALID_TOKEN Handle = 0x80090308
+ SEC_E_CANNOT_PACK Handle = 0x80090309
+ SEC_E_QOP_NOT_SUPPORTED Handle = 0x8009030A
+ SEC_E_NO_IMPERSONATION Handle = 0x8009030B
+ SEC_E_LOGON_DENIED Handle = 0x8009030C
+ SEC_E_UNKNOWN_CREDENTIALS Handle = 0x8009030D
+ SEC_E_NO_CREDENTIALS Handle = 0x8009030E
+ SEC_E_MESSAGE_ALTERED Handle = 0x8009030F
+ SEC_E_OUT_OF_SEQUENCE Handle = 0x80090310
+ SEC_E_NO_AUTHENTICATING_AUTHORITY Handle = 0x80090311
+ SEC_I_CONTINUE_NEEDED Handle = 0x00090312
+ SEC_I_COMPLETE_NEEDED Handle = 0x00090313
+ SEC_I_COMPLETE_AND_CONTINUE Handle = 0x00090314
+ SEC_I_LOCAL_LOGON Handle = 0x00090315
+ SEC_E_BAD_PKGID Handle = 0x80090316
+ SEC_E_CONTEXT_EXPIRED Handle = 0x80090317
+ SEC_I_CONTEXT_EXPIRED Handle = 0x00090317
+ SEC_E_INCOMPLETE_MESSAGE Handle = 0x80090318
+ SEC_E_INCOMPLETE_CREDENTIALS Handle = 0x80090320
+ SEC_E_BUFFER_TOO_SMALL Handle = 0x80090321
+ SEC_I_INCOMPLETE_CREDENTIALS Handle = 0x00090320
+ SEC_I_RENEGOTIATE Handle = 0x00090321
+ SEC_E_WRONG_PRINCIPAL Handle = 0x80090322
+ SEC_I_NO_LSA_CONTEXT Handle = 0x00090323
+ SEC_E_TIME_SKEW Handle = 0x80090324
+ SEC_E_UNTRUSTED_ROOT Handle = 0x80090325
+ SEC_E_ILLEGAL_MESSAGE Handle = 0x80090326
+ SEC_E_CERT_UNKNOWN Handle = 0x80090327
+ SEC_E_CERT_EXPIRED Handle = 0x80090328
+ SEC_E_ENCRYPT_FAILURE Handle = 0x80090329
+ SEC_E_DECRYPT_FAILURE Handle = 0x80090330
+ SEC_E_ALGORITHM_MISMATCH Handle = 0x80090331
+ SEC_E_SECURITY_QOS_FAILED Handle = 0x80090332
+ SEC_E_UNFINISHED_CONTEXT_DELETED Handle = 0x80090333
+ SEC_E_NO_TGT_REPLY Handle = 0x80090334
+ SEC_E_NO_IP_ADDRESSES Handle = 0x80090335
+ SEC_E_WRONG_CREDENTIAL_HANDLE Handle = 0x80090336
+ SEC_E_CRYPTO_SYSTEM_INVALID Handle = 0x80090337
+ SEC_E_MAX_REFERRALS_EXCEEDED Handle = 0x80090338
+ SEC_E_MUST_BE_KDC Handle = 0x80090339
+ SEC_E_STRONG_CRYPTO_NOT_SUPPORTED Handle = 0x8009033A
+ SEC_E_TOO_MANY_PRINCIPALS Handle = 0x8009033B
+ SEC_E_NO_PA_DATA Handle = 0x8009033C
+ SEC_E_PKINIT_NAME_MISMATCH Handle = 0x8009033D
+ SEC_E_SMARTCARD_LOGON_REQUIRED Handle = 0x8009033E
+ SEC_E_SHUTDOWN_IN_PROGRESS Handle = 0x8009033F
+ SEC_E_KDC_INVALID_REQUEST Handle = 0x80090340
+ SEC_E_KDC_UNABLE_TO_REFER Handle = 0x80090341
+ SEC_E_KDC_UNKNOWN_ETYPE Handle = 0x80090342
+ SEC_E_UNSUPPORTED_PREAUTH Handle = 0x80090343
+ SEC_E_DELEGATION_REQUIRED Handle = 0x80090345
+ SEC_E_BAD_BINDINGS Handle = 0x80090346
+ SEC_E_MULTIPLE_ACCOUNTS Handle = 0x80090347
+ SEC_E_NO_KERB_KEY Handle = 0x80090348
+ SEC_E_CERT_WRONG_USAGE Handle = 0x80090349
+ SEC_E_DOWNGRADE_DETECTED Handle = 0x80090350
+ SEC_E_SMARTCARD_CERT_REVOKED Handle = 0x80090351
+ SEC_E_ISSUING_CA_UNTRUSTED Handle = 0x80090352
+ SEC_E_REVOCATION_OFFLINE_C Handle = 0x80090353
+ SEC_E_PKINIT_CLIENT_FAILURE Handle = 0x80090354
+ SEC_E_SMARTCARD_CERT_EXPIRED Handle = 0x80090355
+ SEC_E_NO_S4U_PROT_SUPPORT Handle = 0x80090356
+ SEC_E_CROSSREALM_DELEGATION_FAILURE Handle = 0x80090357
+ SEC_E_REVOCATION_OFFLINE_KDC Handle = 0x80090358
+ SEC_E_ISSUING_CA_UNTRUSTED_KDC Handle = 0x80090359
+ SEC_E_KDC_CERT_EXPIRED Handle = 0x8009035A
+ SEC_E_KDC_CERT_REVOKED Handle = 0x8009035B
+ SEC_I_SIGNATURE_NEEDED Handle = 0x0009035C
+ SEC_E_INVALID_PARAMETER Handle = 0x8009035D
+ SEC_E_DELEGATION_POLICY Handle = 0x8009035E
+ SEC_E_POLICY_NLTM_ONLY Handle = 0x8009035F
+ SEC_I_NO_RENEGOTIATION Handle = 0x00090360
+ SEC_E_NO_CONTEXT Handle = 0x80090361
+ SEC_E_PKU2U_CERT_FAILURE Handle = 0x80090362
+ SEC_E_MUTUAL_AUTH_FAILED Handle = 0x80090363
+ SEC_I_MESSAGE_FRAGMENT Handle = 0x00090364
+ SEC_E_ONLY_HTTPS_ALLOWED Handle = 0x80090365
+ SEC_I_CONTINUE_NEEDED_MESSAGE_OK Handle = 0x00090366
+ SEC_E_APPLICATION_PROTOCOL_MISMATCH Handle = 0x80090367
+ SEC_I_ASYNC_CALL_PENDING Handle = 0x00090368
+ SEC_E_INVALID_UPN_NAME Handle = 0x80090369
+ SEC_E_NO_SPM = SEC_E_INTERNAL_ERROR
+ SEC_E_NOT_SUPPORTED = SEC_E_UNSUPPORTED_FUNCTION
+ CRYPT_E_MSG_ERROR Handle = 0x80091001
+ CRYPT_E_UNKNOWN_ALGO Handle = 0x80091002
+ CRYPT_E_OID_FORMAT Handle = 0x80091003
+ CRYPT_E_INVALID_MSG_TYPE Handle = 0x80091004
+ CRYPT_E_UNEXPECTED_ENCODING Handle = 0x80091005
+ CRYPT_E_AUTH_ATTR_MISSING Handle = 0x80091006
+ CRYPT_E_HASH_VALUE Handle = 0x80091007
+ CRYPT_E_INVALID_INDEX Handle = 0x80091008
+ CRYPT_E_ALREADY_DECRYPTED Handle = 0x80091009
+ CRYPT_E_NOT_DECRYPTED Handle = 0x8009100A
+ CRYPT_E_RECIPIENT_NOT_FOUND Handle = 0x8009100B
+ CRYPT_E_CONTROL_TYPE Handle = 0x8009100C
+ CRYPT_E_ISSUER_SERIALNUMBER Handle = 0x8009100D
+ CRYPT_E_SIGNER_NOT_FOUND Handle = 0x8009100E
+ CRYPT_E_ATTRIBUTES_MISSING Handle = 0x8009100F
+ CRYPT_E_STREAM_MSG_NOT_READY Handle = 0x80091010
+ CRYPT_E_STREAM_INSUFFICIENT_DATA Handle = 0x80091011
+ CRYPT_I_NEW_PROTECTION_REQUIRED Handle = 0x00091012
+ CRYPT_E_BAD_LEN Handle = 0x80092001
+ CRYPT_E_BAD_ENCODE Handle = 0x80092002
+ CRYPT_E_FILE_ERROR Handle = 0x80092003
+ CRYPT_E_NOT_FOUND Handle = 0x80092004
+ CRYPT_E_EXISTS Handle = 0x80092005
+ CRYPT_E_NO_PROVIDER Handle = 0x80092006
+ CRYPT_E_SELF_SIGNED Handle = 0x80092007
+ CRYPT_E_DELETED_PREV Handle = 0x80092008
+ CRYPT_E_NO_MATCH Handle = 0x80092009
+ CRYPT_E_UNEXPECTED_MSG_TYPE Handle = 0x8009200A
+ CRYPT_E_NO_KEY_PROPERTY Handle = 0x8009200B
+ CRYPT_E_NO_DECRYPT_CERT Handle = 0x8009200C
+ CRYPT_E_BAD_MSG Handle = 0x8009200D
+ CRYPT_E_NO_SIGNER Handle = 0x8009200E
+ CRYPT_E_PENDING_CLOSE Handle = 0x8009200F
+ CRYPT_E_REVOKED Handle = 0x80092010
+ CRYPT_E_NO_REVOCATION_DLL Handle = 0x80092011
+ CRYPT_E_NO_REVOCATION_CHECK Handle = 0x80092012
+ CRYPT_E_REVOCATION_OFFLINE Handle = 0x80092013
+ CRYPT_E_NOT_IN_REVOCATION_DATABASE Handle = 0x80092014
+ CRYPT_E_INVALID_NUMERIC_STRING Handle = 0x80092020
+ CRYPT_E_INVALID_PRINTABLE_STRING Handle = 0x80092021
+ CRYPT_E_INVALID_IA5_STRING Handle = 0x80092022
+ CRYPT_E_INVALID_X500_STRING Handle = 0x80092023
+ CRYPT_E_NOT_CHAR_STRING Handle = 0x80092024
+ CRYPT_E_FILERESIZED Handle = 0x80092025
+ CRYPT_E_SECURITY_SETTINGS Handle = 0x80092026
+ CRYPT_E_NO_VERIFY_USAGE_DLL Handle = 0x80092027
+ CRYPT_E_NO_VERIFY_USAGE_CHECK Handle = 0x80092028
+ CRYPT_E_VERIFY_USAGE_OFFLINE Handle = 0x80092029
+ CRYPT_E_NOT_IN_CTL Handle = 0x8009202A
+ CRYPT_E_NO_TRUSTED_SIGNER Handle = 0x8009202B
+ CRYPT_E_MISSING_PUBKEY_PARA Handle = 0x8009202C
+ CRYPT_E_OBJECT_LOCATOR_OBJECT_NOT_FOUND Handle = 0x8009202D
+ CRYPT_E_OSS_ERROR Handle = 0x80093000
+ OSS_MORE_BUF Handle = 0x80093001
+ OSS_NEGATIVE_UINTEGER Handle = 0x80093002
+ OSS_PDU_RANGE Handle = 0x80093003
+ OSS_MORE_INPUT Handle = 0x80093004
+ OSS_DATA_ERROR Handle = 0x80093005
+ OSS_BAD_ARG Handle = 0x80093006
+ OSS_BAD_VERSION Handle = 0x80093007
+ OSS_OUT_MEMORY Handle = 0x80093008
+ OSS_PDU_MISMATCH Handle = 0x80093009
+ OSS_LIMITED Handle = 0x8009300A
+ OSS_BAD_PTR Handle = 0x8009300B
+ OSS_BAD_TIME Handle = 0x8009300C
+ OSS_INDEFINITE_NOT_SUPPORTED Handle = 0x8009300D
+ OSS_MEM_ERROR Handle = 0x8009300E
+ OSS_BAD_TABLE Handle = 0x8009300F
+ OSS_TOO_LONG Handle = 0x80093010
+ OSS_CONSTRAINT_VIOLATED Handle = 0x80093011
+ OSS_FATAL_ERROR Handle = 0x80093012
+ OSS_ACCESS_SERIALIZATION_ERROR Handle = 0x80093013
+ OSS_NULL_TBL Handle = 0x80093014
+ OSS_NULL_FCN Handle = 0x80093015
+ OSS_BAD_ENCRULES Handle = 0x80093016
+ OSS_UNAVAIL_ENCRULES Handle = 0x80093017
+ OSS_CANT_OPEN_TRACE_WINDOW Handle = 0x80093018
+ OSS_UNIMPLEMENTED Handle = 0x80093019
+ OSS_OID_DLL_NOT_LINKED Handle = 0x8009301A
+ OSS_CANT_OPEN_TRACE_FILE Handle = 0x8009301B
+ OSS_TRACE_FILE_ALREADY_OPEN Handle = 0x8009301C
+ OSS_TABLE_MISMATCH Handle = 0x8009301D
+ OSS_TYPE_NOT_SUPPORTED Handle = 0x8009301E
+ OSS_REAL_DLL_NOT_LINKED Handle = 0x8009301F
+ OSS_REAL_CODE_NOT_LINKED Handle = 0x80093020
+ OSS_OUT_OF_RANGE Handle = 0x80093021
+ OSS_COPIER_DLL_NOT_LINKED Handle = 0x80093022
+ OSS_CONSTRAINT_DLL_NOT_LINKED Handle = 0x80093023
+ OSS_COMPARATOR_DLL_NOT_LINKED Handle = 0x80093024
+ OSS_COMPARATOR_CODE_NOT_LINKED Handle = 0x80093025
+ OSS_MEM_MGR_DLL_NOT_LINKED Handle = 0x80093026
+ OSS_PDV_DLL_NOT_LINKED Handle = 0x80093027
+ OSS_PDV_CODE_NOT_LINKED Handle = 0x80093028
+ OSS_API_DLL_NOT_LINKED Handle = 0x80093029
+ OSS_BERDER_DLL_NOT_LINKED Handle = 0x8009302A
+ OSS_PER_DLL_NOT_LINKED Handle = 0x8009302B
+ OSS_OPEN_TYPE_ERROR Handle = 0x8009302C
+ OSS_MUTEX_NOT_CREATED Handle = 0x8009302D
+ OSS_CANT_CLOSE_TRACE_FILE Handle = 0x8009302E
+ CRYPT_E_ASN1_ERROR Handle = 0x80093100
+ CRYPT_E_ASN1_INTERNAL Handle = 0x80093101
+ CRYPT_E_ASN1_EOD Handle = 0x80093102
+ CRYPT_E_ASN1_CORRUPT Handle = 0x80093103
+ CRYPT_E_ASN1_LARGE Handle = 0x80093104
+ CRYPT_E_ASN1_CONSTRAINT Handle = 0x80093105
+ CRYPT_E_ASN1_MEMORY Handle = 0x80093106
+ CRYPT_E_ASN1_OVERFLOW Handle = 0x80093107
+ CRYPT_E_ASN1_BADPDU Handle = 0x80093108
+ CRYPT_E_ASN1_BADARGS Handle = 0x80093109
+ CRYPT_E_ASN1_BADREAL Handle = 0x8009310A
+ CRYPT_E_ASN1_BADTAG Handle = 0x8009310B
+ CRYPT_E_ASN1_CHOICE Handle = 0x8009310C
+ CRYPT_E_ASN1_RULE Handle = 0x8009310D
+ CRYPT_E_ASN1_UTF8 Handle = 0x8009310E
+ CRYPT_E_ASN1_PDU_TYPE Handle = 0x80093133
+ CRYPT_E_ASN1_NYI Handle = 0x80093134
+ CRYPT_E_ASN1_EXTENDED Handle = 0x80093201
+ CRYPT_E_ASN1_NOEOD Handle = 0x80093202
+ CERTSRV_E_BAD_REQUESTSUBJECT Handle = 0x80094001
+ CERTSRV_E_NO_REQUEST Handle = 0x80094002
+ CERTSRV_E_BAD_REQUESTSTATUS Handle = 0x80094003
+ CERTSRV_E_PROPERTY_EMPTY Handle = 0x80094004
+ CERTSRV_E_INVALID_CA_CERTIFICATE Handle = 0x80094005
+ CERTSRV_E_SERVER_SUSPENDED Handle = 0x80094006
+ CERTSRV_E_ENCODING_LENGTH Handle = 0x80094007
+ CERTSRV_E_ROLECONFLICT Handle = 0x80094008
+ CERTSRV_E_RESTRICTEDOFFICER Handle = 0x80094009
+ CERTSRV_E_KEY_ARCHIVAL_NOT_CONFIGURED Handle = 0x8009400A
+ CERTSRV_E_NO_VALID_KRA Handle = 0x8009400B
+ CERTSRV_E_BAD_REQUEST_KEY_ARCHIVAL Handle = 0x8009400C
+ CERTSRV_E_NO_CAADMIN_DEFINED Handle = 0x8009400D
+ CERTSRV_E_BAD_RENEWAL_CERT_ATTRIBUTE Handle = 0x8009400E
+ CERTSRV_E_NO_DB_SESSIONS Handle = 0x8009400F
+ CERTSRV_E_ALIGNMENT_FAULT Handle = 0x80094010
+ CERTSRV_E_ENROLL_DENIED Handle = 0x80094011
+ CERTSRV_E_TEMPLATE_DENIED Handle = 0x80094012
+ CERTSRV_E_DOWNLEVEL_DC_SSL_OR_UPGRADE Handle = 0x80094013
+ CERTSRV_E_ADMIN_DENIED_REQUEST Handle = 0x80094014
+ CERTSRV_E_NO_POLICY_SERVER Handle = 0x80094015
+ CERTSRV_E_WEAK_SIGNATURE_OR_KEY Handle = 0x80094016
+ CERTSRV_E_KEY_ATTESTATION_NOT_SUPPORTED Handle = 0x80094017
+ CERTSRV_E_ENCRYPTION_CERT_REQUIRED Handle = 0x80094018
+ CERTSRV_E_UNSUPPORTED_CERT_TYPE Handle = 0x80094800
+ CERTSRV_E_NO_CERT_TYPE Handle = 0x80094801
+ CERTSRV_E_TEMPLATE_CONFLICT Handle = 0x80094802
+ CERTSRV_E_SUBJECT_ALT_NAME_REQUIRED Handle = 0x80094803
+ CERTSRV_E_ARCHIVED_KEY_REQUIRED Handle = 0x80094804
+ CERTSRV_E_SMIME_REQUIRED Handle = 0x80094805
+ CERTSRV_E_BAD_RENEWAL_SUBJECT Handle = 0x80094806
+ CERTSRV_E_BAD_TEMPLATE_VERSION Handle = 0x80094807
+ CERTSRV_E_TEMPLATE_POLICY_REQUIRED Handle = 0x80094808
+ CERTSRV_E_SIGNATURE_POLICY_REQUIRED Handle = 0x80094809
+ CERTSRV_E_SIGNATURE_COUNT Handle = 0x8009480A
+ CERTSRV_E_SIGNATURE_REJECTED Handle = 0x8009480B
+ CERTSRV_E_ISSUANCE_POLICY_REQUIRED Handle = 0x8009480C
+ CERTSRV_E_SUBJECT_UPN_REQUIRED Handle = 0x8009480D
+ CERTSRV_E_SUBJECT_DIRECTORY_GUID_REQUIRED Handle = 0x8009480E
+ CERTSRV_E_SUBJECT_DNS_REQUIRED Handle = 0x8009480F
+ CERTSRV_E_ARCHIVED_KEY_UNEXPECTED Handle = 0x80094810
+ CERTSRV_E_KEY_LENGTH Handle = 0x80094811
+ CERTSRV_E_SUBJECT_EMAIL_REQUIRED Handle = 0x80094812
+ CERTSRV_E_UNKNOWN_CERT_TYPE Handle = 0x80094813
+ CERTSRV_E_CERT_TYPE_OVERLAP Handle = 0x80094814
+ CERTSRV_E_TOO_MANY_SIGNATURES Handle = 0x80094815
+ CERTSRV_E_RENEWAL_BAD_PUBLIC_KEY Handle = 0x80094816
+ CERTSRV_E_INVALID_EK Handle = 0x80094817
+ CERTSRV_E_INVALID_IDBINDING Handle = 0x80094818
+ CERTSRV_E_INVALID_ATTESTATION Handle = 0x80094819
+ CERTSRV_E_KEY_ATTESTATION Handle = 0x8009481A
+ CERTSRV_E_CORRUPT_KEY_ATTESTATION Handle = 0x8009481B
+ CERTSRV_E_EXPIRED_CHALLENGE Handle = 0x8009481C
+ CERTSRV_E_INVALID_RESPONSE Handle = 0x8009481D
+ CERTSRV_E_INVALID_REQUESTID Handle = 0x8009481E
+ CERTSRV_E_REQUEST_PRECERTIFICATE_MISMATCH Handle = 0x8009481F
+ CERTSRV_E_PENDING_CLIENT_RESPONSE Handle = 0x80094820
+ XENROLL_E_KEY_NOT_EXPORTABLE Handle = 0x80095000
+ XENROLL_E_CANNOT_ADD_ROOT_CERT Handle = 0x80095001
+ XENROLL_E_RESPONSE_KA_HASH_NOT_FOUND Handle = 0x80095002
+ XENROLL_E_RESPONSE_UNEXPECTED_KA_HASH Handle = 0x80095003
+ XENROLL_E_RESPONSE_KA_HASH_MISMATCH Handle = 0x80095004
+ XENROLL_E_KEYSPEC_SMIME_MISMATCH Handle = 0x80095005
+ TRUST_E_SYSTEM_ERROR Handle = 0x80096001
+ TRUST_E_NO_SIGNER_CERT Handle = 0x80096002
+ TRUST_E_COUNTER_SIGNER Handle = 0x80096003
+ TRUST_E_CERT_SIGNATURE Handle = 0x80096004
+ TRUST_E_TIME_STAMP Handle = 0x80096005
+ TRUST_E_BAD_DIGEST Handle = 0x80096010
+ TRUST_E_MALFORMED_SIGNATURE Handle = 0x80096011
+ TRUST_E_BASIC_CONSTRAINTS Handle = 0x80096019
+ TRUST_E_FINANCIAL_CRITERIA Handle = 0x8009601E
+ MSSIPOTF_E_OUTOFMEMRANGE Handle = 0x80097001
+ MSSIPOTF_E_CANTGETOBJECT Handle = 0x80097002
+ MSSIPOTF_E_NOHEADTABLE Handle = 0x80097003
+ MSSIPOTF_E_BAD_MAGICNUMBER Handle = 0x80097004
+ MSSIPOTF_E_BAD_OFFSET_TABLE Handle = 0x80097005
+ MSSIPOTF_E_TABLE_TAGORDER Handle = 0x80097006
+ MSSIPOTF_E_TABLE_LONGWORD Handle = 0x80097007
+ MSSIPOTF_E_BAD_FIRST_TABLE_PLACEMENT Handle = 0x80097008
+ MSSIPOTF_E_TABLES_OVERLAP Handle = 0x80097009
+ MSSIPOTF_E_TABLE_PADBYTES Handle = 0x8009700A
+ MSSIPOTF_E_FILETOOSMALL Handle = 0x8009700B
+ MSSIPOTF_E_TABLE_CHECKSUM Handle = 0x8009700C
+ MSSIPOTF_E_FILE_CHECKSUM Handle = 0x8009700D
+ MSSIPOTF_E_FAILED_POLICY Handle = 0x80097010
+ MSSIPOTF_E_FAILED_HINTS_CHECK Handle = 0x80097011
+ MSSIPOTF_E_NOT_OPENTYPE Handle = 0x80097012
+ MSSIPOTF_E_FILE Handle = 0x80097013
+ MSSIPOTF_E_CRYPT Handle = 0x80097014
+ MSSIPOTF_E_BADVERSION Handle = 0x80097015
+ MSSIPOTF_E_DSIG_STRUCTURE Handle = 0x80097016
+ MSSIPOTF_E_PCONST_CHECK Handle = 0x80097017
+ MSSIPOTF_E_STRUCTURE Handle = 0x80097018
+ ERROR_CRED_REQUIRES_CONFIRMATION Handle = 0x80097019
+ NTE_OP_OK syscall.Errno = 0
+ TRUST_E_PROVIDER_UNKNOWN Handle = 0x800B0001
+ TRUST_E_ACTION_UNKNOWN Handle = 0x800B0002
+ TRUST_E_SUBJECT_FORM_UNKNOWN Handle = 0x800B0003
+ TRUST_E_SUBJECT_NOT_TRUSTED Handle = 0x800B0004
+ DIGSIG_E_ENCODE Handle = 0x800B0005
+ DIGSIG_E_DECODE Handle = 0x800B0006
+ DIGSIG_E_EXTENSIBILITY Handle = 0x800B0007
+ DIGSIG_E_CRYPTO Handle = 0x800B0008
+ PERSIST_E_SIZEDEFINITE Handle = 0x800B0009
+ PERSIST_E_SIZEINDEFINITE Handle = 0x800B000A
+ PERSIST_E_NOTSELFSIZING Handle = 0x800B000B
+ TRUST_E_NOSIGNATURE Handle = 0x800B0100
+ CERT_E_EXPIRED Handle = 0x800B0101
+ CERT_E_VALIDITYPERIODNESTING Handle = 0x800B0102
+ CERT_E_ROLE Handle = 0x800B0103
+ CERT_E_PATHLENCONST Handle = 0x800B0104
+ CERT_E_CRITICAL Handle = 0x800B0105
+ CERT_E_PURPOSE Handle = 0x800B0106
+ CERT_E_ISSUERCHAINING Handle = 0x800B0107
+ CERT_E_MALFORMED Handle = 0x800B0108
+ CERT_E_UNTRUSTEDROOT Handle = 0x800B0109
+ CERT_E_CHAINING Handle = 0x800B010A
+ TRUST_E_FAIL Handle = 0x800B010B
+ CERT_E_REVOKED Handle = 0x800B010C
+ CERT_E_UNTRUSTEDTESTROOT Handle = 0x800B010D
+ CERT_E_REVOCATION_FAILURE Handle = 0x800B010E
+ CERT_E_CN_NO_MATCH Handle = 0x800B010F
+ CERT_E_WRONG_USAGE Handle = 0x800B0110
+ TRUST_E_EXPLICIT_DISTRUST Handle = 0x800B0111
+ CERT_E_UNTRUSTEDCA Handle = 0x800B0112
+ CERT_E_INVALID_POLICY Handle = 0x800B0113
+ CERT_E_INVALID_NAME Handle = 0x800B0114
+ SPAPI_E_EXPECTED_SECTION_NAME Handle = 0x800F0000
+ SPAPI_E_BAD_SECTION_NAME_LINE Handle = 0x800F0001
+ SPAPI_E_SECTION_NAME_TOO_LONG Handle = 0x800F0002
+ SPAPI_E_GENERAL_SYNTAX Handle = 0x800F0003
+ SPAPI_E_WRONG_INF_STYLE Handle = 0x800F0100
+ SPAPI_E_SECTION_NOT_FOUND Handle = 0x800F0101
+ SPAPI_E_LINE_NOT_FOUND Handle = 0x800F0102
+ SPAPI_E_NO_BACKUP Handle = 0x800F0103
+ SPAPI_E_NO_ASSOCIATED_CLASS Handle = 0x800F0200
+ SPAPI_E_CLASS_MISMATCH Handle = 0x800F0201
+ SPAPI_E_DUPLICATE_FOUND Handle = 0x800F0202
+ SPAPI_E_NO_DRIVER_SELECTED Handle = 0x800F0203
+ SPAPI_E_KEY_DOES_NOT_EXIST Handle = 0x800F0204
+ SPAPI_E_INVALID_DEVINST_NAME Handle = 0x800F0205
+ SPAPI_E_INVALID_CLASS Handle = 0x800F0206
+ SPAPI_E_DEVINST_ALREADY_EXISTS Handle = 0x800F0207
+ SPAPI_E_DEVINFO_NOT_REGISTERED Handle = 0x800F0208
+ SPAPI_E_INVALID_REG_PROPERTY Handle = 0x800F0209
+ SPAPI_E_NO_INF Handle = 0x800F020A
+ SPAPI_E_NO_SUCH_DEVINST Handle = 0x800F020B
+ SPAPI_E_CANT_LOAD_CLASS_ICON Handle = 0x800F020C
+ SPAPI_E_INVALID_CLASS_INSTALLER Handle = 0x800F020D
+ SPAPI_E_DI_DO_DEFAULT Handle = 0x800F020E
+ SPAPI_E_DI_NOFILECOPY Handle = 0x800F020F
+ SPAPI_E_INVALID_HWPROFILE Handle = 0x800F0210
+ SPAPI_E_NO_DEVICE_SELECTED Handle = 0x800F0211
+ SPAPI_E_DEVINFO_LIST_LOCKED Handle = 0x800F0212
+ SPAPI_E_DEVINFO_DATA_LOCKED Handle = 0x800F0213
+ SPAPI_E_DI_BAD_PATH Handle = 0x800F0214
+ SPAPI_E_NO_CLASSINSTALL_PARAMS Handle = 0x800F0215
+ SPAPI_E_FILEQUEUE_LOCKED Handle = 0x800F0216
+ SPAPI_E_BAD_SERVICE_INSTALLSECT Handle = 0x800F0217
+ SPAPI_E_NO_CLASS_DRIVER_LIST Handle = 0x800F0218
+ SPAPI_E_NO_ASSOCIATED_SERVICE Handle = 0x800F0219
+ SPAPI_E_NO_DEFAULT_DEVICE_INTERFACE Handle = 0x800F021A
+ SPAPI_E_DEVICE_INTERFACE_ACTIVE Handle = 0x800F021B
+ SPAPI_E_DEVICE_INTERFACE_REMOVED Handle = 0x800F021C
+ SPAPI_E_BAD_INTERFACE_INSTALLSECT Handle = 0x800F021D
+ SPAPI_E_NO_SUCH_INTERFACE_CLASS Handle = 0x800F021E
+ SPAPI_E_INVALID_REFERENCE_STRING Handle = 0x800F021F
+ SPAPI_E_INVALID_MACHINENAME Handle = 0x800F0220
+ SPAPI_E_REMOTE_COMM_FAILURE Handle = 0x800F0221
+ SPAPI_E_MACHINE_UNAVAILABLE Handle = 0x800F0222
+ SPAPI_E_NO_CONFIGMGR_SERVICES Handle = 0x800F0223
+ SPAPI_E_INVALID_PROPPAGE_PROVIDER Handle = 0x800F0224
+ SPAPI_E_NO_SUCH_DEVICE_INTERFACE Handle = 0x800F0225
+ SPAPI_E_DI_POSTPROCESSING_REQUIRED Handle = 0x800F0226
+ SPAPI_E_INVALID_COINSTALLER Handle = 0x800F0227
+ SPAPI_E_NO_COMPAT_DRIVERS Handle = 0x800F0228
+ SPAPI_E_NO_DEVICE_ICON Handle = 0x800F0229
+ SPAPI_E_INVALID_INF_LOGCONFIG Handle = 0x800F022A
+ SPAPI_E_DI_DONT_INSTALL Handle = 0x800F022B
+ SPAPI_E_INVALID_FILTER_DRIVER Handle = 0x800F022C
+ SPAPI_E_NON_WINDOWS_NT_DRIVER Handle = 0x800F022D
+ SPAPI_E_NON_WINDOWS_DRIVER Handle = 0x800F022E
+ SPAPI_E_NO_CATALOG_FOR_OEM_INF Handle = 0x800F022F
+ SPAPI_E_DEVINSTALL_QUEUE_NONNATIVE Handle = 0x800F0230
+ SPAPI_E_NOT_DISABLEABLE Handle = 0x800F0231
+ SPAPI_E_CANT_REMOVE_DEVINST Handle = 0x800F0232
+ SPAPI_E_INVALID_TARGET Handle = 0x800F0233
+ SPAPI_E_DRIVER_NONNATIVE Handle = 0x800F0234
+ SPAPI_E_IN_WOW64 Handle = 0x800F0235
+ SPAPI_E_SET_SYSTEM_RESTORE_POINT Handle = 0x800F0236
+ SPAPI_E_INCORRECTLY_COPIED_INF Handle = 0x800F0237
+ SPAPI_E_SCE_DISABLED Handle = 0x800F0238
+ SPAPI_E_UNKNOWN_EXCEPTION Handle = 0x800F0239
+ SPAPI_E_PNP_REGISTRY_ERROR Handle = 0x800F023A
+ SPAPI_E_REMOTE_REQUEST_UNSUPPORTED Handle = 0x800F023B
+ SPAPI_E_NOT_AN_INSTALLED_OEM_INF Handle = 0x800F023C
+ SPAPI_E_INF_IN_USE_BY_DEVICES Handle = 0x800F023D
+ SPAPI_E_DI_FUNCTION_OBSOLETE Handle = 0x800F023E
+ SPAPI_E_NO_AUTHENTICODE_CATALOG Handle = 0x800F023F
+ SPAPI_E_AUTHENTICODE_DISALLOWED Handle = 0x800F0240
+ SPAPI_E_AUTHENTICODE_TRUSTED_PUBLISHER Handle = 0x800F0241
+ SPAPI_E_AUTHENTICODE_TRUST_NOT_ESTABLISHED Handle = 0x800F0242
+ SPAPI_E_AUTHENTICODE_PUBLISHER_NOT_TRUSTED Handle = 0x800F0243
+ SPAPI_E_SIGNATURE_OSATTRIBUTE_MISMATCH Handle = 0x800F0244
+ SPAPI_E_ONLY_VALIDATE_VIA_AUTHENTICODE Handle = 0x800F0245
+ SPAPI_E_DEVICE_INSTALLER_NOT_READY Handle = 0x800F0246
+ SPAPI_E_DRIVER_STORE_ADD_FAILED Handle = 0x800F0247
+ SPAPI_E_DEVICE_INSTALL_BLOCKED Handle = 0x800F0248
+ SPAPI_E_DRIVER_INSTALL_BLOCKED Handle = 0x800F0249
+ SPAPI_E_WRONG_INF_TYPE Handle = 0x800F024A
+ SPAPI_E_FILE_HASH_NOT_IN_CATALOG Handle = 0x800F024B
+ SPAPI_E_DRIVER_STORE_DELETE_FAILED Handle = 0x800F024C
+ SPAPI_E_UNRECOVERABLE_STACK_OVERFLOW Handle = 0x800F0300
+ SPAPI_E_ERROR_NOT_INSTALLED Handle = 0x800F1000
+ SCARD_S_SUCCESS = S_OK
+ SCARD_F_INTERNAL_ERROR Handle = 0x80100001
+ SCARD_E_CANCELLED Handle = 0x80100002
+ SCARD_E_INVALID_HANDLE Handle = 0x80100003
+ SCARD_E_INVALID_PARAMETER Handle = 0x80100004
+ SCARD_E_INVALID_TARGET Handle = 0x80100005
+ SCARD_E_NO_MEMORY Handle = 0x80100006
+ SCARD_F_WAITED_TOO_LONG Handle = 0x80100007
+ SCARD_E_INSUFFICIENT_BUFFER Handle = 0x80100008
+ SCARD_E_UNKNOWN_READER Handle = 0x80100009
+ SCARD_E_TIMEOUT Handle = 0x8010000A
+ SCARD_E_SHARING_VIOLATION Handle = 0x8010000B
+ SCARD_E_NO_SMARTCARD Handle = 0x8010000C
+ SCARD_E_UNKNOWN_CARD Handle = 0x8010000D
+ SCARD_E_CANT_DISPOSE Handle = 0x8010000E
+ SCARD_E_PROTO_MISMATCH Handle = 0x8010000F
+ SCARD_E_NOT_READY Handle = 0x80100010
+ SCARD_E_INVALID_VALUE Handle = 0x80100011
+ SCARD_E_SYSTEM_CANCELLED Handle = 0x80100012
+ SCARD_F_COMM_ERROR Handle = 0x80100013
+ SCARD_F_UNKNOWN_ERROR Handle = 0x80100014
+ SCARD_E_INVALID_ATR Handle = 0x80100015
+ SCARD_E_NOT_TRANSACTED Handle = 0x80100016
+ SCARD_E_READER_UNAVAILABLE Handle = 0x80100017
+ SCARD_P_SHUTDOWN Handle = 0x80100018
+ SCARD_E_PCI_TOO_SMALL Handle = 0x80100019
+ SCARD_E_READER_UNSUPPORTED Handle = 0x8010001A
+ SCARD_E_DUPLICATE_READER Handle = 0x8010001B
+ SCARD_E_CARD_UNSUPPORTED Handle = 0x8010001C
+ SCARD_E_NO_SERVICE Handle = 0x8010001D
+ SCARD_E_SERVICE_STOPPED Handle = 0x8010001E
+ SCARD_E_UNEXPECTED Handle = 0x8010001F
+ SCARD_E_ICC_INSTALLATION Handle = 0x80100020
+ SCARD_E_ICC_CREATEORDER Handle = 0x80100021
+ SCARD_E_UNSUPPORTED_FEATURE Handle = 0x80100022
+ SCARD_E_DIR_NOT_FOUND Handle = 0x80100023
+ SCARD_E_FILE_NOT_FOUND Handle = 0x80100024
+ SCARD_E_NO_DIR Handle = 0x80100025
+ SCARD_E_NO_FILE Handle = 0x80100026
+ SCARD_E_NO_ACCESS Handle = 0x80100027
+ SCARD_E_WRITE_TOO_MANY Handle = 0x80100028
+ SCARD_E_BAD_SEEK Handle = 0x80100029
+ SCARD_E_INVALID_CHV Handle = 0x8010002A
+ SCARD_E_UNKNOWN_RES_MNG Handle = 0x8010002B
+ SCARD_E_NO_SUCH_CERTIFICATE Handle = 0x8010002C
+ SCARD_E_CERTIFICATE_UNAVAILABLE Handle = 0x8010002D
+ SCARD_E_NO_READERS_AVAILABLE Handle = 0x8010002E
+ SCARD_E_COMM_DATA_LOST Handle = 0x8010002F
+ SCARD_E_NO_KEY_CONTAINER Handle = 0x80100030
+ SCARD_E_SERVER_TOO_BUSY Handle = 0x80100031
+ SCARD_E_PIN_CACHE_EXPIRED Handle = 0x80100032
+ SCARD_E_NO_PIN_CACHE Handle = 0x80100033
+ SCARD_E_READ_ONLY_CARD Handle = 0x80100034
+ SCARD_W_UNSUPPORTED_CARD Handle = 0x80100065
+ SCARD_W_UNRESPONSIVE_CARD Handle = 0x80100066
+ SCARD_W_UNPOWERED_CARD Handle = 0x80100067
+ SCARD_W_RESET_CARD Handle = 0x80100068
+ SCARD_W_REMOVED_CARD Handle = 0x80100069
+ SCARD_W_SECURITY_VIOLATION Handle = 0x8010006A
+ SCARD_W_WRONG_CHV Handle = 0x8010006B
+ SCARD_W_CHV_BLOCKED Handle = 0x8010006C
+ SCARD_W_EOF Handle = 0x8010006D
+ SCARD_W_CANCELLED_BY_USER Handle = 0x8010006E
+ SCARD_W_CARD_NOT_AUTHENTICATED Handle = 0x8010006F
+ SCARD_W_CACHE_ITEM_NOT_FOUND Handle = 0x80100070
+ SCARD_W_CACHE_ITEM_STALE Handle = 0x80100071
+ SCARD_W_CACHE_ITEM_TOO_BIG Handle = 0x80100072
+ COMADMIN_E_OBJECTERRORS Handle = 0x80110401
+ COMADMIN_E_OBJECTINVALID Handle = 0x80110402
+ COMADMIN_E_KEYMISSING Handle = 0x80110403
+ COMADMIN_E_ALREADYINSTALLED Handle = 0x80110404
+ COMADMIN_E_APP_FILE_WRITEFAIL Handle = 0x80110407
+ COMADMIN_E_APP_FILE_READFAIL Handle = 0x80110408
+ COMADMIN_E_APP_FILE_VERSION Handle = 0x80110409
+ COMADMIN_E_BADPATH Handle = 0x8011040A
+ COMADMIN_E_APPLICATIONEXISTS Handle = 0x8011040B
+ COMADMIN_E_ROLEEXISTS Handle = 0x8011040C
+ COMADMIN_E_CANTCOPYFILE Handle = 0x8011040D
+ COMADMIN_E_NOUSER Handle = 0x8011040F
+ COMADMIN_E_INVALIDUSERIDS Handle = 0x80110410
+ COMADMIN_E_NOREGISTRYCLSID Handle = 0x80110411
+ COMADMIN_E_BADREGISTRYPROGID Handle = 0x80110412
+ COMADMIN_E_AUTHENTICATIONLEVEL Handle = 0x80110413
+ COMADMIN_E_USERPASSWDNOTVALID Handle = 0x80110414
+ COMADMIN_E_CLSIDORIIDMISMATCH Handle = 0x80110418
+ COMADMIN_E_REMOTEINTERFACE Handle = 0x80110419
+ COMADMIN_E_DLLREGISTERSERVER Handle = 0x8011041A
+ COMADMIN_E_NOSERVERSHARE Handle = 0x8011041B
+ COMADMIN_E_DLLLOADFAILED Handle = 0x8011041D
+ COMADMIN_E_BADREGISTRYLIBID Handle = 0x8011041E
+ COMADMIN_E_APPDIRNOTFOUND Handle = 0x8011041F
+ COMADMIN_E_REGISTRARFAILED Handle = 0x80110423
+ COMADMIN_E_COMPFILE_DOESNOTEXIST Handle = 0x80110424
+ COMADMIN_E_COMPFILE_LOADDLLFAIL Handle = 0x80110425
+ COMADMIN_E_COMPFILE_GETCLASSOBJ Handle = 0x80110426
+ COMADMIN_E_COMPFILE_CLASSNOTAVAIL Handle = 0x80110427
+ COMADMIN_E_COMPFILE_BADTLB Handle = 0x80110428
+ COMADMIN_E_COMPFILE_NOTINSTALLABLE Handle = 0x80110429
+ COMADMIN_E_NOTCHANGEABLE Handle = 0x8011042A
+ COMADMIN_E_NOTDELETEABLE Handle = 0x8011042B
+ COMADMIN_E_SESSION Handle = 0x8011042C
+ COMADMIN_E_COMP_MOVE_LOCKED Handle = 0x8011042D
+ COMADMIN_E_COMP_MOVE_BAD_DEST Handle = 0x8011042E
+ COMADMIN_E_REGISTERTLB Handle = 0x80110430
+ COMADMIN_E_SYSTEMAPP Handle = 0x80110433
+ COMADMIN_E_COMPFILE_NOREGISTRAR Handle = 0x80110434
+ COMADMIN_E_COREQCOMPINSTALLED Handle = 0x80110435
+ COMADMIN_E_SERVICENOTINSTALLED Handle = 0x80110436
+ COMADMIN_E_PROPERTYSAVEFAILED Handle = 0x80110437
+ COMADMIN_E_OBJECTEXISTS Handle = 0x80110438
+ COMADMIN_E_COMPONENTEXISTS Handle = 0x80110439
+ COMADMIN_E_REGFILE_CORRUPT Handle = 0x8011043B
+ COMADMIN_E_PROPERTY_OVERFLOW Handle = 0x8011043C
+ COMADMIN_E_NOTINREGISTRY Handle = 0x8011043E
+ COMADMIN_E_OBJECTNOTPOOLABLE Handle = 0x8011043F
+ COMADMIN_E_APPLID_MATCHES_CLSID Handle = 0x80110446
+ COMADMIN_E_ROLE_DOES_NOT_EXIST Handle = 0x80110447
+ COMADMIN_E_START_APP_NEEDS_COMPONENTS Handle = 0x80110448
+ COMADMIN_E_REQUIRES_DIFFERENT_PLATFORM Handle = 0x80110449
+ COMADMIN_E_CAN_NOT_EXPORT_APP_PROXY Handle = 0x8011044A
+ COMADMIN_E_CAN_NOT_START_APP Handle = 0x8011044B
+ COMADMIN_E_CAN_NOT_EXPORT_SYS_APP Handle = 0x8011044C
+ COMADMIN_E_CANT_SUBSCRIBE_TO_COMPONENT Handle = 0x8011044D
+ COMADMIN_E_EVENTCLASS_CANT_BE_SUBSCRIBER Handle = 0x8011044E
+ COMADMIN_E_LIB_APP_PROXY_INCOMPATIBLE Handle = 0x8011044F
+ COMADMIN_E_BASE_PARTITION_ONLY Handle = 0x80110450
+ COMADMIN_E_START_APP_DISABLED Handle = 0x80110451
+ COMADMIN_E_CAT_DUPLICATE_PARTITION_NAME Handle = 0x80110457
+ COMADMIN_E_CAT_INVALID_PARTITION_NAME Handle = 0x80110458
+ COMADMIN_E_CAT_PARTITION_IN_USE Handle = 0x80110459
+ COMADMIN_E_FILE_PARTITION_DUPLICATE_FILES Handle = 0x8011045A
+ COMADMIN_E_CAT_IMPORTED_COMPONENTS_NOT_ALLOWED Handle = 0x8011045B
+ COMADMIN_E_AMBIGUOUS_APPLICATION_NAME Handle = 0x8011045C
+ COMADMIN_E_AMBIGUOUS_PARTITION_NAME Handle = 0x8011045D
+ COMADMIN_E_REGDB_NOTINITIALIZED Handle = 0x80110472
+ COMADMIN_E_REGDB_NOTOPEN Handle = 0x80110473
+ COMADMIN_E_REGDB_SYSTEMERR Handle = 0x80110474
+ COMADMIN_E_REGDB_ALREADYRUNNING Handle = 0x80110475
+ COMADMIN_E_MIG_VERSIONNOTSUPPORTED Handle = 0x80110480
+ COMADMIN_E_MIG_SCHEMANOTFOUND Handle = 0x80110481
+ COMADMIN_E_CAT_BITNESSMISMATCH Handle = 0x80110482
+ COMADMIN_E_CAT_UNACCEPTABLEBITNESS Handle = 0x80110483
+ COMADMIN_E_CAT_WRONGAPPBITNESS Handle = 0x80110484
+ COMADMIN_E_CAT_PAUSE_RESUME_NOT_SUPPORTED Handle = 0x80110485
+ COMADMIN_E_CAT_SERVERFAULT Handle = 0x80110486
+ COMQC_E_APPLICATION_NOT_QUEUED Handle = 0x80110600
+ COMQC_E_NO_QUEUEABLE_INTERFACES Handle = 0x80110601
+ COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE Handle = 0x80110602
+ COMQC_E_NO_IPERSISTSTREAM Handle = 0x80110603
+ COMQC_E_BAD_MESSAGE Handle = 0x80110604
+ COMQC_E_UNAUTHENTICATED Handle = 0x80110605
+ COMQC_E_UNTRUSTED_ENQUEUER Handle = 0x80110606
+ MSDTC_E_DUPLICATE_RESOURCE Handle = 0x80110701
+ COMADMIN_E_OBJECT_PARENT_MISSING Handle = 0x80110808
+ COMADMIN_E_OBJECT_DOES_NOT_EXIST Handle = 0x80110809
+ COMADMIN_E_APP_NOT_RUNNING Handle = 0x8011080A
+ COMADMIN_E_INVALID_PARTITION Handle = 0x8011080B
+ COMADMIN_E_SVCAPP_NOT_POOLABLE_OR_RECYCLABLE Handle = 0x8011080D
+ COMADMIN_E_USER_IN_SET Handle = 0x8011080E
+ COMADMIN_E_CANTRECYCLELIBRARYAPPS Handle = 0x8011080F
+ COMADMIN_E_CANTRECYCLESERVICEAPPS Handle = 0x80110811
+ COMADMIN_E_PROCESSALREADYRECYCLED Handle = 0x80110812
+ COMADMIN_E_PAUSEDPROCESSMAYNOTBERECYCLED Handle = 0x80110813
+ COMADMIN_E_CANTMAKEINPROCSERVICE Handle = 0x80110814
+ COMADMIN_E_PROGIDINUSEBYCLSID Handle = 0x80110815
+ COMADMIN_E_DEFAULT_PARTITION_NOT_IN_SET Handle = 0x80110816
+ COMADMIN_E_RECYCLEDPROCESSMAYNOTBEPAUSED Handle = 0x80110817
+ COMADMIN_E_PARTITION_ACCESSDENIED Handle = 0x80110818
+ COMADMIN_E_PARTITION_MSI_ONLY Handle = 0x80110819
+ COMADMIN_E_LEGACYCOMPS_NOT_ALLOWED_IN_1_0_FORMAT Handle = 0x8011081A
+ COMADMIN_E_LEGACYCOMPS_NOT_ALLOWED_IN_NONBASE_PARTITIONS Handle = 0x8011081B
+ COMADMIN_E_COMP_MOVE_SOURCE Handle = 0x8011081C
+ COMADMIN_E_COMP_MOVE_DEST Handle = 0x8011081D
+ COMADMIN_E_COMP_MOVE_PRIVATE Handle = 0x8011081E
+ COMADMIN_E_BASEPARTITION_REQUIRED_IN_SET Handle = 0x8011081F
+ COMADMIN_E_CANNOT_ALIAS_EVENTCLASS Handle = 0x80110820
+ COMADMIN_E_PRIVATE_ACCESSDENIED Handle = 0x80110821
+ COMADMIN_E_SAFERINVALID Handle = 0x80110822
+ COMADMIN_E_REGISTRY_ACCESSDENIED Handle = 0x80110823
+ COMADMIN_E_PARTITIONS_DISABLED Handle = 0x80110824
+ WER_S_REPORT_DEBUG Handle = 0x001B0000
+ WER_S_REPORT_UPLOADED Handle = 0x001B0001
+ WER_S_REPORT_QUEUED Handle = 0x001B0002
+ WER_S_DISABLED Handle = 0x001B0003
+ WER_S_SUSPENDED_UPLOAD Handle = 0x001B0004
+ WER_S_DISABLED_QUEUE Handle = 0x001B0005
+ WER_S_DISABLED_ARCHIVE Handle = 0x001B0006
+ WER_S_REPORT_ASYNC Handle = 0x001B0007
+ WER_S_IGNORE_ASSERT_INSTANCE Handle = 0x001B0008
+ WER_S_IGNORE_ALL_ASSERTS Handle = 0x001B0009
+ WER_S_ASSERT_CONTINUE Handle = 0x001B000A
+ WER_S_THROTTLED Handle = 0x001B000B
+ WER_S_REPORT_UPLOADED_CAB Handle = 0x001B000C
+ WER_E_CRASH_FAILURE Handle = 0x801B8000
+ WER_E_CANCELED Handle = 0x801B8001
+ WER_E_NETWORK_FAILURE Handle = 0x801B8002
+ WER_E_NOT_INITIALIZED Handle = 0x801B8003
+ WER_E_ALREADY_REPORTING Handle = 0x801B8004
+ WER_E_DUMP_THROTTLED Handle = 0x801B8005
+ WER_E_INSUFFICIENT_CONSENT Handle = 0x801B8006
+ WER_E_TOO_HEAVY Handle = 0x801B8007
+ ERROR_FLT_IO_COMPLETE Handle = 0x001F0001
+ ERROR_FLT_NO_HANDLER_DEFINED Handle = 0x801F0001
+ ERROR_FLT_CONTEXT_ALREADY_DEFINED Handle = 0x801F0002
+ ERROR_FLT_INVALID_ASYNCHRONOUS_REQUEST Handle = 0x801F0003
+ ERROR_FLT_DISALLOW_FAST_IO Handle = 0x801F0004
+ ERROR_FLT_INVALID_NAME_REQUEST Handle = 0x801F0005
+ ERROR_FLT_NOT_SAFE_TO_POST_OPERATION Handle = 0x801F0006
+ ERROR_FLT_NOT_INITIALIZED Handle = 0x801F0007
+ ERROR_FLT_FILTER_NOT_READY Handle = 0x801F0008
+ ERROR_FLT_POST_OPERATION_CLEANUP Handle = 0x801F0009
+ ERROR_FLT_INTERNAL_ERROR Handle = 0x801F000A
+ ERROR_FLT_DELETING_OBJECT Handle = 0x801F000B
+ ERROR_FLT_MUST_BE_NONPAGED_POOL Handle = 0x801F000C
+ ERROR_FLT_DUPLICATE_ENTRY Handle = 0x801F000D
+ ERROR_FLT_CBDQ_DISABLED Handle = 0x801F000E
+ ERROR_FLT_DO_NOT_ATTACH Handle = 0x801F000F
+ ERROR_FLT_DO_NOT_DETACH Handle = 0x801F0010
+ ERROR_FLT_INSTANCE_ALTITUDE_COLLISION Handle = 0x801F0011
+ ERROR_FLT_INSTANCE_NAME_COLLISION Handle = 0x801F0012
+ ERROR_FLT_FILTER_NOT_FOUND Handle = 0x801F0013
+ ERROR_FLT_VOLUME_NOT_FOUND Handle = 0x801F0014
+ ERROR_FLT_INSTANCE_NOT_FOUND Handle = 0x801F0015
+ ERROR_FLT_CONTEXT_ALLOCATION_NOT_FOUND Handle = 0x801F0016
+ ERROR_FLT_INVALID_CONTEXT_REGISTRATION Handle = 0x801F0017
+ ERROR_FLT_NAME_CACHE_MISS Handle = 0x801F0018
+ ERROR_FLT_NO_DEVICE_OBJECT Handle = 0x801F0019
+ ERROR_FLT_VOLUME_ALREADY_MOUNTED Handle = 0x801F001A
+ ERROR_FLT_ALREADY_ENLISTED Handle = 0x801F001B
+ ERROR_FLT_CONTEXT_ALREADY_LINKED Handle = 0x801F001C
+ ERROR_FLT_NO_WAITER_FOR_REPLY Handle = 0x801F0020
+ ERROR_FLT_REGISTRATION_BUSY Handle = 0x801F0023
+ ERROR_HUNG_DISPLAY_DRIVER_THREAD Handle = 0x80260001
+ DWM_E_COMPOSITIONDISABLED Handle = 0x80263001
+ DWM_E_REMOTING_NOT_SUPPORTED Handle = 0x80263002
+ DWM_E_NO_REDIRECTION_SURFACE_AVAILABLE Handle = 0x80263003
+ DWM_E_NOT_QUEUING_PRESENTS Handle = 0x80263004
+ DWM_E_ADAPTER_NOT_FOUND Handle = 0x80263005
+ DWM_S_GDI_REDIRECTION_SURFACE Handle = 0x00263005
+ DWM_E_TEXTURE_TOO_LARGE Handle = 0x80263007
+ DWM_S_GDI_REDIRECTION_SURFACE_BLT_VIA_GDI Handle = 0x00263008
+ ERROR_MONITOR_NO_DESCRIPTOR Handle = 0x00261001
+ ERROR_MONITOR_UNKNOWN_DESCRIPTOR_FORMAT Handle = 0x00261002
+ ERROR_MONITOR_INVALID_DESCRIPTOR_CHECKSUM Handle = 0xC0261003
+ ERROR_MONITOR_INVALID_STANDARD_TIMING_BLOCK Handle = 0xC0261004
+ ERROR_MONITOR_WMI_DATABLOCK_REGISTRATION_FAILED Handle = 0xC0261005
+ ERROR_MONITOR_INVALID_SERIAL_NUMBER_MONDSC_BLOCK Handle = 0xC0261006
+ ERROR_MONITOR_INVALID_USER_FRIENDLY_MONDSC_BLOCK Handle = 0xC0261007
+ ERROR_MONITOR_NO_MORE_DESCRIPTOR_DATA Handle = 0xC0261008
+ ERROR_MONITOR_INVALID_DETAILED_TIMING_BLOCK Handle = 0xC0261009
+ ERROR_MONITOR_INVALID_MANUFACTURE_DATE Handle = 0xC026100A
+ ERROR_GRAPHICS_NOT_EXCLUSIVE_MODE_OWNER Handle = 0xC0262000
+ ERROR_GRAPHICS_INSUFFICIENT_DMA_BUFFER Handle = 0xC0262001
+ ERROR_GRAPHICS_INVALID_DISPLAY_ADAPTER Handle = 0xC0262002
+ ERROR_GRAPHICS_ADAPTER_WAS_RESET Handle = 0xC0262003
+ ERROR_GRAPHICS_INVALID_DRIVER_MODEL Handle = 0xC0262004
+ ERROR_GRAPHICS_PRESENT_MODE_CHANGED Handle = 0xC0262005
+ ERROR_GRAPHICS_PRESENT_OCCLUDED Handle = 0xC0262006
+ ERROR_GRAPHICS_PRESENT_DENIED Handle = 0xC0262007
+ ERROR_GRAPHICS_CANNOTCOLORCONVERT Handle = 0xC0262008
+ ERROR_GRAPHICS_DRIVER_MISMATCH Handle = 0xC0262009
+ ERROR_GRAPHICS_PARTIAL_DATA_POPULATED Handle = 0x4026200A
+ ERROR_GRAPHICS_PRESENT_REDIRECTION_DISABLED Handle = 0xC026200B
+ ERROR_GRAPHICS_PRESENT_UNOCCLUDED Handle = 0xC026200C
+ ERROR_GRAPHICS_WINDOWDC_NOT_AVAILABLE Handle = 0xC026200D
+ ERROR_GRAPHICS_WINDOWLESS_PRESENT_DISABLED Handle = 0xC026200E
+ ERROR_GRAPHICS_PRESENT_INVALID_WINDOW Handle = 0xC026200F
+ ERROR_GRAPHICS_PRESENT_BUFFER_NOT_BOUND Handle = 0xC0262010
+ ERROR_GRAPHICS_VAIL_STATE_CHANGED Handle = 0xC0262011
+ ERROR_GRAPHICS_NO_VIDEO_MEMORY Handle = 0xC0262100
+ ERROR_GRAPHICS_CANT_LOCK_MEMORY Handle = 0xC0262101
+ ERROR_GRAPHICS_ALLOCATION_BUSY Handle = 0xC0262102
+ ERROR_GRAPHICS_TOO_MANY_REFERENCES Handle = 0xC0262103
+ ERROR_GRAPHICS_TRY_AGAIN_LATER Handle = 0xC0262104
+ ERROR_GRAPHICS_TRY_AGAIN_NOW Handle = 0xC0262105
+ ERROR_GRAPHICS_ALLOCATION_INVALID Handle = 0xC0262106
+ ERROR_GRAPHICS_UNSWIZZLING_APERTURE_UNAVAILABLE Handle = 0xC0262107
+ ERROR_GRAPHICS_UNSWIZZLING_APERTURE_UNSUPPORTED Handle = 0xC0262108
+ ERROR_GRAPHICS_CANT_EVICT_PINNED_ALLOCATION Handle = 0xC0262109
+ ERROR_GRAPHICS_INVALID_ALLOCATION_USAGE Handle = 0xC0262110
+ ERROR_GRAPHICS_CANT_RENDER_LOCKED_ALLOCATION Handle = 0xC0262111
+ ERROR_GRAPHICS_ALLOCATION_CLOSED Handle = 0xC0262112
+ ERROR_GRAPHICS_INVALID_ALLOCATION_INSTANCE Handle = 0xC0262113
+ ERROR_GRAPHICS_INVALID_ALLOCATION_HANDLE Handle = 0xC0262114
+ ERROR_GRAPHICS_WRONG_ALLOCATION_DEVICE Handle = 0xC0262115
+ ERROR_GRAPHICS_ALLOCATION_CONTENT_LOST Handle = 0xC0262116
+ ERROR_GRAPHICS_GPU_EXCEPTION_ON_DEVICE Handle = 0xC0262200
+ ERROR_GRAPHICS_SKIP_ALLOCATION_PREPARATION Handle = 0x40262201
+ ERROR_GRAPHICS_INVALID_VIDPN_TOPOLOGY Handle = 0xC0262300
+ ERROR_GRAPHICS_VIDPN_TOPOLOGY_NOT_SUPPORTED Handle = 0xC0262301
+ ERROR_GRAPHICS_VIDPN_TOPOLOGY_CURRENTLY_NOT_SUPPORTED Handle = 0xC0262302
+ ERROR_GRAPHICS_INVALID_VIDPN Handle = 0xC0262303
+ ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE Handle = 0xC0262304
+ ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET Handle = 0xC0262305
+ ERROR_GRAPHICS_VIDPN_MODALITY_NOT_SUPPORTED Handle = 0xC0262306
+ ERROR_GRAPHICS_MODE_NOT_PINNED Handle = 0x00262307
+ ERROR_GRAPHICS_INVALID_VIDPN_SOURCEMODESET Handle = 0xC0262308
+ ERROR_GRAPHICS_INVALID_VIDPN_TARGETMODESET Handle = 0xC0262309
+ ERROR_GRAPHICS_INVALID_FREQUENCY Handle = 0xC026230A
+ ERROR_GRAPHICS_INVALID_ACTIVE_REGION Handle = 0xC026230B
+ ERROR_GRAPHICS_INVALID_TOTAL_REGION Handle = 0xC026230C
+ ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE_MODE Handle = 0xC0262310
+ ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET_MODE Handle = 0xC0262311
+ ERROR_GRAPHICS_PINNED_MODE_MUST_REMAIN_IN_SET Handle = 0xC0262312
+ ERROR_GRAPHICS_PATH_ALREADY_IN_TOPOLOGY Handle = 0xC0262313
+ ERROR_GRAPHICS_MODE_ALREADY_IN_MODESET Handle = 0xC0262314
+ ERROR_GRAPHICS_INVALID_VIDEOPRESENTSOURCESET Handle = 0xC0262315
+ ERROR_GRAPHICS_INVALID_VIDEOPRESENTTARGETSET Handle = 0xC0262316
+ ERROR_GRAPHICS_SOURCE_ALREADY_IN_SET Handle = 0xC0262317
+ ERROR_GRAPHICS_TARGET_ALREADY_IN_SET Handle = 0xC0262318
+ ERROR_GRAPHICS_INVALID_VIDPN_PRESENT_PATH Handle = 0xC0262319
+ ERROR_GRAPHICS_NO_RECOMMENDED_VIDPN_TOPOLOGY Handle = 0xC026231A
+ ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGESET Handle = 0xC026231B
+ ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE Handle = 0xC026231C
+ ERROR_GRAPHICS_FREQUENCYRANGE_NOT_IN_SET Handle = 0xC026231D
+ ERROR_GRAPHICS_NO_PREFERRED_MODE Handle = 0x0026231E
+ ERROR_GRAPHICS_FREQUENCYRANGE_ALREADY_IN_SET Handle = 0xC026231F
+ ERROR_GRAPHICS_STALE_MODESET Handle = 0xC0262320
+ ERROR_GRAPHICS_INVALID_MONITOR_SOURCEMODESET Handle = 0xC0262321
+ ERROR_GRAPHICS_INVALID_MONITOR_SOURCE_MODE Handle = 0xC0262322
+ ERROR_GRAPHICS_NO_RECOMMENDED_FUNCTIONAL_VIDPN Handle = 0xC0262323
+ ERROR_GRAPHICS_MODE_ID_MUST_BE_UNIQUE Handle = 0xC0262324
+ ERROR_GRAPHICS_EMPTY_ADAPTER_MONITOR_MODE_SUPPORT_INTERSECTION Handle = 0xC0262325
+ ERROR_GRAPHICS_VIDEO_PRESENT_TARGETS_LESS_THAN_SOURCES Handle = 0xC0262326
+ ERROR_GRAPHICS_PATH_NOT_IN_TOPOLOGY Handle = 0xC0262327
+ ERROR_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_SOURCE Handle = 0xC0262328
+ ERROR_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_TARGET Handle = 0xC0262329
+ ERROR_GRAPHICS_INVALID_MONITORDESCRIPTORSET Handle = 0xC026232A
+ ERROR_GRAPHICS_INVALID_MONITORDESCRIPTOR Handle = 0xC026232B
+ ERROR_GRAPHICS_MONITORDESCRIPTOR_NOT_IN_SET Handle = 0xC026232C
+ ERROR_GRAPHICS_MONITORDESCRIPTOR_ALREADY_IN_SET Handle = 0xC026232D
+ ERROR_GRAPHICS_MONITORDESCRIPTOR_ID_MUST_BE_UNIQUE Handle = 0xC026232E
+ ERROR_GRAPHICS_INVALID_VIDPN_TARGET_SUBSET_TYPE Handle = 0xC026232F
+ ERROR_GRAPHICS_RESOURCES_NOT_RELATED Handle = 0xC0262330
+ ERROR_GRAPHICS_SOURCE_ID_MUST_BE_UNIQUE Handle = 0xC0262331
+ ERROR_GRAPHICS_TARGET_ID_MUST_BE_UNIQUE Handle = 0xC0262332
+ ERROR_GRAPHICS_NO_AVAILABLE_VIDPN_TARGET Handle = 0xC0262333
+ ERROR_GRAPHICS_MONITOR_COULD_NOT_BE_ASSOCIATED_WITH_ADAPTER Handle = 0xC0262334
+ ERROR_GRAPHICS_NO_VIDPNMGR Handle = 0xC0262335
+ ERROR_GRAPHICS_NO_ACTIVE_VIDPN Handle = 0xC0262336
+ ERROR_GRAPHICS_STALE_VIDPN_TOPOLOGY Handle = 0xC0262337
+ ERROR_GRAPHICS_MONITOR_NOT_CONNECTED Handle = 0xC0262338
+ ERROR_GRAPHICS_SOURCE_NOT_IN_TOPOLOGY Handle = 0xC0262339
+ ERROR_GRAPHICS_INVALID_PRIMARYSURFACE_SIZE Handle = 0xC026233A
+ ERROR_GRAPHICS_INVALID_VISIBLEREGION_SIZE Handle = 0xC026233B
+ ERROR_GRAPHICS_INVALID_STRIDE Handle = 0xC026233C
+ ERROR_GRAPHICS_INVALID_PIXELFORMAT Handle = 0xC026233D
+ ERROR_GRAPHICS_INVALID_COLORBASIS Handle = 0xC026233E
+ ERROR_GRAPHICS_INVALID_PIXELVALUEACCESSMODE Handle = 0xC026233F
+ ERROR_GRAPHICS_TARGET_NOT_IN_TOPOLOGY Handle = 0xC0262340
+ ERROR_GRAPHICS_NO_DISPLAY_MODE_MANAGEMENT_SUPPORT Handle = 0xC0262341
+ ERROR_GRAPHICS_VIDPN_SOURCE_IN_USE Handle = 0xC0262342
+ ERROR_GRAPHICS_CANT_ACCESS_ACTIVE_VIDPN Handle = 0xC0262343
+ ERROR_GRAPHICS_INVALID_PATH_IMPORTANCE_ORDINAL Handle = 0xC0262344
+ ERROR_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION Handle = 0xC0262345
+ ERROR_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_SUPPORTED Handle = 0xC0262346
+ ERROR_GRAPHICS_INVALID_GAMMA_RAMP Handle = 0xC0262347
+ ERROR_GRAPHICS_GAMMA_RAMP_NOT_SUPPORTED Handle = 0xC0262348
+ ERROR_GRAPHICS_MULTISAMPLING_NOT_SUPPORTED Handle = 0xC0262349
+ ERROR_GRAPHICS_MODE_NOT_IN_MODESET Handle = 0xC026234A
+ ERROR_GRAPHICS_DATASET_IS_EMPTY Handle = 0x0026234B
+ ERROR_GRAPHICS_NO_MORE_ELEMENTS_IN_DATASET Handle = 0x0026234C
+ ERROR_GRAPHICS_INVALID_VIDPN_TOPOLOGY_RECOMMENDATION_REASON Handle = 0xC026234D
+ ERROR_GRAPHICS_INVALID_PATH_CONTENT_TYPE Handle = 0xC026234E
+ ERROR_GRAPHICS_INVALID_COPYPROTECTION_TYPE Handle = 0xC026234F
+ ERROR_GRAPHICS_UNASSIGNED_MODESET_ALREADY_EXISTS Handle = 0xC0262350
+ ERROR_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_PINNED Handle = 0x00262351
+ ERROR_GRAPHICS_INVALID_SCANLINE_ORDERING Handle = 0xC0262352
+ ERROR_GRAPHICS_TOPOLOGY_CHANGES_NOT_ALLOWED Handle = 0xC0262353
+ ERROR_GRAPHICS_NO_AVAILABLE_IMPORTANCE_ORDINALS Handle = 0xC0262354
+ ERROR_GRAPHICS_INCOMPATIBLE_PRIVATE_FORMAT Handle = 0xC0262355
+ ERROR_GRAPHICS_INVALID_MODE_PRUNING_ALGORITHM Handle = 0xC0262356
+ ERROR_GRAPHICS_INVALID_MONITOR_CAPABILITY_ORIGIN Handle = 0xC0262357
+ ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE_CONSTRAINT Handle = 0xC0262358
+ ERROR_GRAPHICS_MAX_NUM_PATHS_REACHED Handle = 0xC0262359
+ ERROR_GRAPHICS_CANCEL_VIDPN_TOPOLOGY_AUGMENTATION Handle = 0xC026235A
+ ERROR_GRAPHICS_INVALID_CLIENT_TYPE Handle = 0xC026235B
+ ERROR_GRAPHICS_CLIENTVIDPN_NOT_SET Handle = 0xC026235C
+ ERROR_GRAPHICS_SPECIFIED_CHILD_ALREADY_CONNECTED Handle = 0xC0262400
+ ERROR_GRAPHICS_CHILD_DESCRIPTOR_NOT_SUPPORTED Handle = 0xC0262401
+ ERROR_GRAPHICS_UNKNOWN_CHILD_STATUS Handle = 0x4026242F
+ ERROR_GRAPHICS_NOT_A_LINKED_ADAPTER Handle = 0xC0262430
+ ERROR_GRAPHICS_LEADLINK_NOT_ENUMERATED Handle = 0xC0262431
+ ERROR_GRAPHICS_CHAINLINKS_NOT_ENUMERATED Handle = 0xC0262432
+ ERROR_GRAPHICS_ADAPTER_CHAIN_NOT_READY Handle = 0xC0262433
+ ERROR_GRAPHICS_CHAINLINKS_NOT_STARTED Handle = 0xC0262434
+ ERROR_GRAPHICS_CHAINLINKS_NOT_POWERED_ON Handle = 0xC0262435
+ ERROR_GRAPHICS_INCONSISTENT_DEVICE_LINK_STATE Handle = 0xC0262436
+ ERROR_GRAPHICS_LEADLINK_START_DEFERRED Handle = 0x40262437
+ ERROR_GRAPHICS_NOT_POST_DEVICE_DRIVER Handle = 0xC0262438
+ ERROR_GRAPHICS_POLLING_TOO_FREQUENTLY Handle = 0x40262439
+ ERROR_GRAPHICS_START_DEFERRED Handle = 0x4026243A
+ ERROR_GRAPHICS_ADAPTER_ACCESS_NOT_EXCLUDED Handle = 0xC026243B
+ ERROR_GRAPHICS_DEPENDABLE_CHILD_STATUS Handle = 0x4026243C
+ ERROR_GRAPHICS_OPM_NOT_SUPPORTED Handle = 0xC0262500
+ ERROR_GRAPHICS_COPP_NOT_SUPPORTED Handle = 0xC0262501
+ ERROR_GRAPHICS_UAB_NOT_SUPPORTED Handle = 0xC0262502
+ ERROR_GRAPHICS_OPM_INVALID_ENCRYPTED_PARAMETERS Handle = 0xC0262503
+ ERROR_GRAPHICS_OPM_NO_VIDEO_OUTPUTS_EXIST Handle = 0xC0262505
+ ERROR_GRAPHICS_OPM_INTERNAL_ERROR Handle = 0xC026250B
+ ERROR_GRAPHICS_OPM_INVALID_HANDLE Handle = 0xC026250C
+ ERROR_GRAPHICS_PVP_INVALID_CERTIFICATE_LENGTH Handle = 0xC026250E
+ ERROR_GRAPHICS_OPM_SPANNING_MODE_ENABLED Handle = 0xC026250F
+ ERROR_GRAPHICS_OPM_THEATER_MODE_ENABLED Handle = 0xC0262510
+ ERROR_GRAPHICS_PVP_HFS_FAILED Handle = 0xC0262511
+ ERROR_GRAPHICS_OPM_INVALID_SRM Handle = 0xC0262512
+ ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_HDCP Handle = 0xC0262513
+ ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_ACP Handle = 0xC0262514
+ ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_CGMSA Handle = 0xC0262515
+ ERROR_GRAPHICS_OPM_HDCP_SRM_NEVER_SET Handle = 0xC0262516
+ ERROR_GRAPHICS_OPM_RESOLUTION_TOO_HIGH Handle = 0xC0262517
+ ERROR_GRAPHICS_OPM_ALL_HDCP_HARDWARE_ALREADY_IN_USE Handle = 0xC0262518
+ ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_NO_LONGER_EXISTS Handle = 0xC026251A
+ ERROR_GRAPHICS_OPM_SESSION_TYPE_CHANGE_IN_PROGRESS Handle = 0xC026251B
+ ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_DOES_NOT_HAVE_COPP_SEMANTICS Handle = 0xC026251C
+ ERROR_GRAPHICS_OPM_INVALID_INFORMATION_REQUEST Handle = 0xC026251D
+ ERROR_GRAPHICS_OPM_DRIVER_INTERNAL_ERROR Handle = 0xC026251E
+ ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_DOES_NOT_HAVE_OPM_SEMANTICS Handle = 0xC026251F
+ ERROR_GRAPHICS_OPM_SIGNALING_NOT_SUPPORTED Handle = 0xC0262520
+ ERROR_GRAPHICS_OPM_INVALID_CONFIGURATION_REQUEST Handle = 0xC0262521
+ ERROR_GRAPHICS_I2C_NOT_SUPPORTED Handle = 0xC0262580
+ ERROR_GRAPHICS_I2C_DEVICE_DOES_NOT_EXIST Handle = 0xC0262581
+ ERROR_GRAPHICS_I2C_ERROR_TRANSMITTING_DATA Handle = 0xC0262582
+ ERROR_GRAPHICS_I2C_ERROR_RECEIVING_DATA Handle = 0xC0262583
+ ERROR_GRAPHICS_DDCCI_VCP_NOT_SUPPORTED Handle = 0xC0262584
+ ERROR_GRAPHICS_DDCCI_INVALID_DATA Handle = 0xC0262585
+ ERROR_GRAPHICS_DDCCI_MONITOR_RETURNED_INVALID_TIMING_STATUS_BYTE Handle = 0xC0262586
+ ERROR_GRAPHICS_MCA_INVALID_CAPABILITIES_STRING Handle = 0xC0262587
+ ERROR_GRAPHICS_MCA_INTERNAL_ERROR Handle = 0xC0262588
+ ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_COMMAND Handle = 0xC0262589
+ ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_LENGTH Handle = 0xC026258A
+ ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_CHECKSUM Handle = 0xC026258B
+ ERROR_GRAPHICS_INVALID_PHYSICAL_MONITOR_HANDLE Handle = 0xC026258C
+ ERROR_GRAPHICS_MONITOR_NO_LONGER_EXISTS Handle = 0xC026258D
+ ERROR_GRAPHICS_DDCCI_CURRENT_CURRENT_VALUE_GREATER_THAN_MAXIMUM_VALUE Handle = 0xC02625D8
+ ERROR_GRAPHICS_MCA_INVALID_VCP_VERSION Handle = 0xC02625D9
+ ERROR_GRAPHICS_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION Handle = 0xC02625DA
+ ERROR_GRAPHICS_MCA_MCCS_VERSION_MISMATCH Handle = 0xC02625DB
+ ERROR_GRAPHICS_MCA_UNSUPPORTED_MCCS_VERSION Handle = 0xC02625DC
+ ERROR_GRAPHICS_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED Handle = 0xC02625DE
+ ERROR_GRAPHICS_MCA_UNSUPPORTED_COLOR_TEMPERATURE Handle = 0xC02625DF
+ ERROR_GRAPHICS_ONLY_CONSOLE_SESSION_SUPPORTED Handle = 0xC02625E0
+ ERROR_GRAPHICS_NO_DISPLAY_DEVICE_CORRESPONDS_TO_NAME Handle = 0xC02625E1
+ ERROR_GRAPHICS_DISPLAY_DEVICE_NOT_ATTACHED_TO_DESKTOP Handle = 0xC02625E2
+ ERROR_GRAPHICS_MIRRORING_DEVICES_NOT_SUPPORTED Handle = 0xC02625E3
+ ERROR_GRAPHICS_INVALID_POINTER Handle = 0xC02625E4
+ ERROR_GRAPHICS_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE Handle = 0xC02625E5
+ ERROR_GRAPHICS_PARAMETER_ARRAY_TOO_SMALL Handle = 0xC02625E6
+ ERROR_GRAPHICS_INTERNAL_ERROR Handle = 0xC02625E7
+ ERROR_GRAPHICS_SESSION_TYPE_CHANGE_IN_PROGRESS Handle = 0xC02605E8
+ NAP_E_INVALID_PACKET Handle = 0x80270001
+ NAP_E_MISSING_SOH Handle = 0x80270002
+ NAP_E_CONFLICTING_ID Handle = 0x80270003
+ NAP_E_NO_CACHED_SOH Handle = 0x80270004
+ NAP_E_STILL_BOUND Handle = 0x80270005
+ NAP_E_NOT_REGISTERED Handle = 0x80270006
+ NAP_E_NOT_INITIALIZED Handle = 0x80270007
+ NAP_E_MISMATCHED_ID Handle = 0x80270008
+ NAP_E_NOT_PENDING Handle = 0x80270009
+ NAP_E_ID_NOT_FOUND Handle = 0x8027000A
+ NAP_E_MAXSIZE_TOO_SMALL Handle = 0x8027000B
+ NAP_E_SERVICE_NOT_RUNNING Handle = 0x8027000C
+ NAP_S_CERT_ALREADY_PRESENT Handle = 0x0027000D
+ NAP_E_ENTITY_DISABLED Handle = 0x8027000E
+ NAP_E_NETSH_GROUPPOLICY_ERROR Handle = 0x8027000F
+ NAP_E_TOO_MANY_CALLS Handle = 0x80270010
+ NAP_E_SHV_CONFIG_EXISTED Handle = 0x80270011
+ NAP_E_SHV_CONFIG_NOT_FOUND Handle = 0x80270012
+ NAP_E_SHV_TIMEOUT Handle = 0x80270013
+ TPM_E_ERROR_MASK Handle = 0x80280000
+ TPM_E_AUTHFAIL Handle = 0x80280001
+ TPM_E_BADINDEX Handle = 0x80280002
+ TPM_E_BAD_PARAMETER Handle = 0x80280003
+ TPM_E_AUDITFAILURE Handle = 0x80280004
+ TPM_E_CLEAR_DISABLED Handle = 0x80280005
+ TPM_E_DEACTIVATED Handle = 0x80280006
+ TPM_E_DISABLED Handle = 0x80280007
+ TPM_E_DISABLED_CMD Handle = 0x80280008
+ TPM_E_FAIL Handle = 0x80280009
+ TPM_E_BAD_ORDINAL Handle = 0x8028000A
+ TPM_E_INSTALL_DISABLED Handle = 0x8028000B
+ TPM_E_INVALID_KEYHANDLE Handle = 0x8028000C
+ TPM_E_KEYNOTFOUND Handle = 0x8028000D
+ TPM_E_INAPPROPRIATE_ENC Handle = 0x8028000E
+ TPM_E_MIGRATEFAIL Handle = 0x8028000F
+ TPM_E_INVALID_PCR_INFO Handle = 0x80280010
+ TPM_E_NOSPACE Handle = 0x80280011
+ TPM_E_NOSRK Handle = 0x80280012
+ TPM_E_NOTSEALED_BLOB Handle = 0x80280013
+ TPM_E_OWNER_SET Handle = 0x80280014
+ TPM_E_RESOURCES Handle = 0x80280015
+ TPM_E_SHORTRANDOM Handle = 0x80280016
+ TPM_E_SIZE Handle = 0x80280017
+ TPM_E_WRONGPCRVAL Handle = 0x80280018
+ TPM_E_BAD_PARAM_SIZE Handle = 0x80280019
+ TPM_E_SHA_THREAD Handle = 0x8028001A
+ TPM_E_SHA_ERROR Handle = 0x8028001B
+ TPM_E_FAILEDSELFTEST Handle = 0x8028001C
+ TPM_E_AUTH2FAIL Handle = 0x8028001D
+ TPM_E_BADTAG Handle = 0x8028001E
+ TPM_E_IOERROR Handle = 0x8028001F
+ TPM_E_ENCRYPT_ERROR Handle = 0x80280020
+ TPM_E_DECRYPT_ERROR Handle = 0x80280021
+ TPM_E_INVALID_AUTHHANDLE Handle = 0x80280022
+ TPM_E_NO_ENDORSEMENT Handle = 0x80280023
+ TPM_E_INVALID_KEYUSAGE Handle = 0x80280024
+ TPM_E_WRONG_ENTITYTYPE Handle = 0x80280025
+ TPM_E_INVALID_POSTINIT Handle = 0x80280026
+ TPM_E_INAPPROPRIATE_SIG Handle = 0x80280027
+ TPM_E_BAD_KEY_PROPERTY Handle = 0x80280028
+ TPM_E_BAD_MIGRATION Handle = 0x80280029
+ TPM_E_BAD_SCHEME Handle = 0x8028002A
+ TPM_E_BAD_DATASIZE Handle = 0x8028002B
+ TPM_E_BAD_MODE Handle = 0x8028002C
+ TPM_E_BAD_PRESENCE Handle = 0x8028002D
+ TPM_E_BAD_VERSION Handle = 0x8028002E
+ TPM_E_NO_WRAP_TRANSPORT Handle = 0x8028002F
+ TPM_E_AUDITFAIL_UNSUCCESSFUL Handle = 0x80280030
+ TPM_E_AUDITFAIL_SUCCESSFUL Handle = 0x80280031
+ TPM_E_NOTRESETABLE Handle = 0x80280032
+ TPM_E_NOTLOCAL Handle = 0x80280033
+ TPM_E_BAD_TYPE Handle = 0x80280034
+ TPM_E_INVALID_RESOURCE Handle = 0x80280035
+ TPM_E_NOTFIPS Handle = 0x80280036
+ TPM_E_INVALID_FAMILY Handle = 0x80280037
+ TPM_E_NO_NV_PERMISSION Handle = 0x80280038
+ TPM_E_REQUIRES_SIGN Handle = 0x80280039
+ TPM_E_KEY_NOTSUPPORTED Handle = 0x8028003A
+ TPM_E_AUTH_CONFLICT Handle = 0x8028003B
+ TPM_E_AREA_LOCKED Handle = 0x8028003C
+ TPM_E_BAD_LOCALITY Handle = 0x8028003D
+ TPM_E_READ_ONLY Handle = 0x8028003E
+ TPM_E_PER_NOWRITE Handle = 0x8028003F
+ TPM_E_FAMILYCOUNT Handle = 0x80280040
+ TPM_E_WRITE_LOCKED Handle = 0x80280041
+ TPM_E_BAD_ATTRIBUTES Handle = 0x80280042
+ TPM_E_INVALID_STRUCTURE Handle = 0x80280043
+ TPM_E_KEY_OWNER_CONTROL Handle = 0x80280044
+ TPM_E_BAD_COUNTER Handle = 0x80280045
+ TPM_E_NOT_FULLWRITE Handle = 0x80280046
+ TPM_E_CONTEXT_GAP Handle = 0x80280047
+ TPM_E_MAXNVWRITES Handle = 0x80280048
+ TPM_E_NOOPERATOR Handle = 0x80280049
+ TPM_E_RESOURCEMISSING Handle = 0x8028004A
+ TPM_E_DELEGATE_LOCK Handle = 0x8028004B
+ TPM_E_DELEGATE_FAMILY Handle = 0x8028004C
+ TPM_E_DELEGATE_ADMIN Handle = 0x8028004D
+ TPM_E_TRANSPORT_NOTEXCLUSIVE Handle = 0x8028004E
+ TPM_E_OWNER_CONTROL Handle = 0x8028004F
+ TPM_E_DAA_RESOURCES Handle = 0x80280050
+ TPM_E_DAA_INPUT_DATA0 Handle = 0x80280051
+ TPM_E_DAA_INPUT_DATA1 Handle = 0x80280052
+ TPM_E_DAA_ISSUER_SETTINGS Handle = 0x80280053
+ TPM_E_DAA_TPM_SETTINGS Handle = 0x80280054
+ TPM_E_DAA_STAGE Handle = 0x80280055
+ TPM_E_DAA_ISSUER_VALIDITY Handle = 0x80280056
+ TPM_E_DAA_WRONG_W Handle = 0x80280057
+ TPM_E_BAD_HANDLE Handle = 0x80280058
+ TPM_E_BAD_DELEGATE Handle = 0x80280059
+ TPM_E_BADCONTEXT Handle = 0x8028005A
+ TPM_E_TOOMANYCONTEXTS Handle = 0x8028005B
+ TPM_E_MA_TICKET_SIGNATURE Handle = 0x8028005C
+ TPM_E_MA_DESTINATION Handle = 0x8028005D
+ TPM_E_MA_SOURCE Handle = 0x8028005E
+ TPM_E_MA_AUTHORITY Handle = 0x8028005F
+ TPM_E_PERMANENTEK Handle = 0x80280061
+ TPM_E_BAD_SIGNATURE Handle = 0x80280062
+ TPM_E_NOCONTEXTSPACE Handle = 0x80280063
+ TPM_20_E_ASYMMETRIC Handle = 0x80280081
+ TPM_20_E_ATTRIBUTES Handle = 0x80280082
+ TPM_20_E_HASH Handle = 0x80280083
+ TPM_20_E_VALUE Handle = 0x80280084
+ TPM_20_E_HIERARCHY Handle = 0x80280085
+ TPM_20_E_KEY_SIZE Handle = 0x80280087
+ TPM_20_E_MGF Handle = 0x80280088
+ TPM_20_E_MODE Handle = 0x80280089
+ TPM_20_E_TYPE Handle = 0x8028008A
+ TPM_20_E_HANDLE Handle = 0x8028008B
+ TPM_20_E_KDF Handle = 0x8028008C
+ TPM_20_E_RANGE Handle = 0x8028008D
+ TPM_20_E_AUTH_FAIL Handle = 0x8028008E
+ TPM_20_E_NONCE Handle = 0x8028008F
+ TPM_20_E_PP Handle = 0x80280090
+ TPM_20_E_SCHEME Handle = 0x80280092
+ TPM_20_E_SIZE Handle = 0x80280095
+ TPM_20_E_SYMMETRIC Handle = 0x80280096
+ TPM_20_E_TAG Handle = 0x80280097
+ TPM_20_E_SELECTOR Handle = 0x80280098
+ TPM_20_E_INSUFFICIENT Handle = 0x8028009A
+ TPM_20_E_SIGNATURE Handle = 0x8028009B
+ TPM_20_E_KEY Handle = 0x8028009C
+ TPM_20_E_POLICY_FAIL Handle = 0x8028009D
+ TPM_20_E_INTEGRITY Handle = 0x8028009F
+ TPM_20_E_TICKET Handle = 0x802800A0
+ TPM_20_E_RESERVED_BITS Handle = 0x802800A1
+ TPM_20_E_BAD_AUTH Handle = 0x802800A2
+ TPM_20_E_EXPIRED Handle = 0x802800A3
+ TPM_20_E_POLICY_CC Handle = 0x802800A4
+ TPM_20_E_BINDING Handle = 0x802800A5
+ TPM_20_E_CURVE Handle = 0x802800A6
+ TPM_20_E_ECC_POINT Handle = 0x802800A7
+ TPM_20_E_INITIALIZE Handle = 0x80280100
+ TPM_20_E_FAILURE Handle = 0x80280101
+ TPM_20_E_SEQUENCE Handle = 0x80280103
+ TPM_20_E_PRIVATE Handle = 0x8028010B
+ TPM_20_E_HMAC Handle = 0x80280119
+ TPM_20_E_DISABLED Handle = 0x80280120
+ TPM_20_E_EXCLUSIVE Handle = 0x80280121
+ TPM_20_E_ECC_CURVE Handle = 0x80280123
+ TPM_20_E_AUTH_TYPE Handle = 0x80280124
+ TPM_20_E_AUTH_MISSING Handle = 0x80280125
+ TPM_20_E_POLICY Handle = 0x80280126
+ TPM_20_E_PCR Handle = 0x80280127
+ TPM_20_E_PCR_CHANGED Handle = 0x80280128
+ TPM_20_E_UPGRADE Handle = 0x8028012D
+ TPM_20_E_TOO_MANY_CONTEXTS Handle = 0x8028012E
+ TPM_20_E_AUTH_UNAVAILABLE Handle = 0x8028012F
+ TPM_20_E_REBOOT Handle = 0x80280130
+ TPM_20_E_UNBALANCED Handle = 0x80280131
+ TPM_20_E_COMMAND_SIZE Handle = 0x80280142
+ TPM_20_E_COMMAND_CODE Handle = 0x80280143
+ TPM_20_E_AUTHSIZE Handle = 0x80280144
+ TPM_20_E_AUTH_CONTEXT Handle = 0x80280145
+ TPM_20_E_NV_RANGE Handle = 0x80280146
+ TPM_20_E_NV_SIZE Handle = 0x80280147
+ TPM_20_E_NV_LOCKED Handle = 0x80280148
+ TPM_20_E_NV_AUTHORIZATION Handle = 0x80280149
+ TPM_20_E_NV_UNINITIALIZED Handle = 0x8028014A
+ TPM_20_E_NV_SPACE Handle = 0x8028014B
+ TPM_20_E_NV_DEFINED Handle = 0x8028014C
+ TPM_20_E_BAD_CONTEXT Handle = 0x80280150
+ TPM_20_E_CPHASH Handle = 0x80280151
+ TPM_20_E_PARENT Handle = 0x80280152
+ TPM_20_E_NEEDS_TEST Handle = 0x80280153
+ TPM_20_E_NO_RESULT Handle = 0x80280154
+ TPM_20_E_SENSITIVE Handle = 0x80280155
+ TPM_E_COMMAND_BLOCKED Handle = 0x80280400
+ TPM_E_INVALID_HANDLE Handle = 0x80280401
+ TPM_E_DUPLICATE_VHANDLE Handle = 0x80280402
+ TPM_E_EMBEDDED_COMMAND_BLOCKED Handle = 0x80280403
+ TPM_E_EMBEDDED_COMMAND_UNSUPPORTED Handle = 0x80280404
+ TPM_E_RETRY Handle = 0x80280800
+ TPM_E_NEEDS_SELFTEST Handle = 0x80280801
+ TPM_E_DOING_SELFTEST Handle = 0x80280802
+ TPM_E_DEFEND_LOCK_RUNNING Handle = 0x80280803
+ TPM_20_E_CONTEXT_GAP Handle = 0x80280901
+ TPM_20_E_OBJECT_MEMORY Handle = 0x80280902
+ TPM_20_E_SESSION_MEMORY Handle = 0x80280903
+ TPM_20_E_MEMORY Handle = 0x80280904
+ TPM_20_E_SESSION_HANDLES Handle = 0x80280905
+ TPM_20_E_OBJECT_HANDLES Handle = 0x80280906
+ TPM_20_E_LOCALITY Handle = 0x80280907
+ TPM_20_E_YIELDED Handle = 0x80280908
+ TPM_20_E_CANCELED Handle = 0x80280909
+ TPM_20_E_TESTING Handle = 0x8028090A
+ TPM_20_E_NV_RATE Handle = 0x80280920
+ TPM_20_E_LOCKOUT Handle = 0x80280921
+ TPM_20_E_RETRY Handle = 0x80280922
+ TPM_20_E_NV_UNAVAILABLE Handle = 0x80280923
+ TBS_E_INTERNAL_ERROR Handle = 0x80284001
+ TBS_E_BAD_PARAMETER Handle = 0x80284002
+ TBS_E_INVALID_OUTPUT_POINTER Handle = 0x80284003
+ TBS_E_INVALID_CONTEXT Handle = 0x80284004
+ TBS_E_INSUFFICIENT_BUFFER Handle = 0x80284005
+ TBS_E_IOERROR Handle = 0x80284006
+ TBS_E_INVALID_CONTEXT_PARAM Handle = 0x80284007
+ TBS_E_SERVICE_NOT_RUNNING Handle = 0x80284008
+ TBS_E_TOO_MANY_TBS_CONTEXTS Handle = 0x80284009
+ TBS_E_TOO_MANY_RESOURCES Handle = 0x8028400A
+ TBS_E_SERVICE_START_PENDING Handle = 0x8028400B
+ TBS_E_PPI_NOT_SUPPORTED Handle = 0x8028400C
+ TBS_E_COMMAND_CANCELED Handle = 0x8028400D
+ TBS_E_BUFFER_TOO_LARGE Handle = 0x8028400E
+ TBS_E_TPM_NOT_FOUND Handle = 0x8028400F
+ TBS_E_SERVICE_DISABLED Handle = 0x80284010
+ TBS_E_NO_EVENT_LOG Handle = 0x80284011
+ TBS_E_ACCESS_DENIED Handle = 0x80284012
+ TBS_E_PROVISIONING_NOT_ALLOWED Handle = 0x80284013
+ TBS_E_PPI_FUNCTION_UNSUPPORTED Handle = 0x80284014
+ TBS_E_OWNERAUTH_NOT_FOUND Handle = 0x80284015
+ TBS_E_PROVISIONING_INCOMPLETE Handle = 0x80284016
+ TPMAPI_E_INVALID_STATE Handle = 0x80290100
+ TPMAPI_E_NOT_ENOUGH_DATA Handle = 0x80290101
+ TPMAPI_E_TOO_MUCH_DATA Handle = 0x80290102
+ TPMAPI_E_INVALID_OUTPUT_POINTER Handle = 0x80290103
+ TPMAPI_E_INVALID_PARAMETER Handle = 0x80290104
+ TPMAPI_E_OUT_OF_MEMORY Handle = 0x80290105
+ TPMAPI_E_BUFFER_TOO_SMALL Handle = 0x80290106
+ TPMAPI_E_INTERNAL_ERROR Handle = 0x80290107
+ TPMAPI_E_ACCESS_DENIED Handle = 0x80290108
+ TPMAPI_E_AUTHORIZATION_FAILED Handle = 0x80290109
+ TPMAPI_E_INVALID_CONTEXT_HANDLE Handle = 0x8029010A
+ TPMAPI_E_TBS_COMMUNICATION_ERROR Handle = 0x8029010B
+ TPMAPI_E_TPM_COMMAND_ERROR Handle = 0x8029010C
+ TPMAPI_E_MESSAGE_TOO_LARGE Handle = 0x8029010D
+ TPMAPI_E_INVALID_ENCODING Handle = 0x8029010E
+ TPMAPI_E_INVALID_KEY_SIZE Handle = 0x8029010F
+ TPMAPI_E_ENCRYPTION_FAILED Handle = 0x80290110
+ TPMAPI_E_INVALID_KEY_PARAMS Handle = 0x80290111
+ TPMAPI_E_INVALID_MIGRATION_AUTHORIZATION_BLOB Handle = 0x80290112
+ TPMAPI_E_INVALID_PCR_INDEX Handle = 0x80290113
+ TPMAPI_E_INVALID_DELEGATE_BLOB Handle = 0x80290114
+ TPMAPI_E_INVALID_CONTEXT_PARAMS Handle = 0x80290115
+ TPMAPI_E_INVALID_KEY_BLOB Handle = 0x80290116
+ TPMAPI_E_INVALID_PCR_DATA Handle = 0x80290117
+ TPMAPI_E_INVALID_OWNER_AUTH Handle = 0x80290118
+ TPMAPI_E_FIPS_RNG_CHECK_FAILED Handle = 0x80290119
+ TPMAPI_E_EMPTY_TCG_LOG Handle = 0x8029011A
+ TPMAPI_E_INVALID_TCG_LOG_ENTRY Handle = 0x8029011B
+ TPMAPI_E_TCG_SEPARATOR_ABSENT Handle = 0x8029011C
+ TPMAPI_E_TCG_INVALID_DIGEST_ENTRY Handle = 0x8029011D
+ TPMAPI_E_POLICY_DENIES_OPERATION Handle = 0x8029011E
+ TPMAPI_E_NV_BITS_NOT_DEFINED Handle = 0x8029011F
+ TPMAPI_E_NV_BITS_NOT_READY Handle = 0x80290120
+ TPMAPI_E_SEALING_KEY_NOT_AVAILABLE Handle = 0x80290121
+ TPMAPI_E_NO_AUTHORIZATION_CHAIN_FOUND Handle = 0x80290122
+ TPMAPI_E_SVN_COUNTER_NOT_AVAILABLE Handle = 0x80290123
+ TPMAPI_E_OWNER_AUTH_NOT_NULL Handle = 0x80290124
+ TPMAPI_E_ENDORSEMENT_AUTH_NOT_NULL Handle = 0x80290125
+ TPMAPI_E_AUTHORIZATION_REVOKED Handle = 0x80290126
+ TPMAPI_E_MALFORMED_AUTHORIZATION_KEY Handle = 0x80290127
+ TPMAPI_E_AUTHORIZING_KEY_NOT_SUPPORTED Handle = 0x80290128
+ TPMAPI_E_INVALID_AUTHORIZATION_SIGNATURE Handle = 0x80290129
+ TPMAPI_E_MALFORMED_AUTHORIZATION_POLICY Handle = 0x8029012A
+ TPMAPI_E_MALFORMED_AUTHORIZATION_OTHER Handle = 0x8029012B
+ TPMAPI_E_SEALING_KEY_CHANGED Handle = 0x8029012C
+ TBSIMP_E_BUFFER_TOO_SMALL Handle = 0x80290200
+ TBSIMP_E_CLEANUP_FAILED Handle = 0x80290201
+ TBSIMP_E_INVALID_CONTEXT_HANDLE Handle = 0x80290202
+ TBSIMP_E_INVALID_CONTEXT_PARAM Handle = 0x80290203
+ TBSIMP_E_TPM_ERROR Handle = 0x80290204
+ TBSIMP_E_HASH_BAD_KEY Handle = 0x80290205
+ TBSIMP_E_DUPLICATE_VHANDLE Handle = 0x80290206
+ TBSIMP_E_INVALID_OUTPUT_POINTER Handle = 0x80290207
+ TBSIMP_E_INVALID_PARAMETER Handle = 0x80290208
+ TBSIMP_E_RPC_INIT_FAILED Handle = 0x80290209
+ TBSIMP_E_SCHEDULER_NOT_RUNNING Handle = 0x8029020A
+ TBSIMP_E_COMMAND_CANCELED Handle = 0x8029020B
+ TBSIMP_E_OUT_OF_MEMORY Handle = 0x8029020C
+ TBSIMP_E_LIST_NO_MORE_ITEMS Handle = 0x8029020D
+ TBSIMP_E_LIST_NOT_FOUND Handle = 0x8029020E
+ TBSIMP_E_NOT_ENOUGH_SPACE Handle = 0x8029020F
+ TBSIMP_E_NOT_ENOUGH_TPM_CONTEXTS Handle = 0x80290210
+ TBSIMP_E_COMMAND_FAILED Handle = 0x80290211
+ TBSIMP_E_UNKNOWN_ORDINAL Handle = 0x80290212
+ TBSIMP_E_RESOURCE_EXPIRED Handle = 0x80290213
+ TBSIMP_E_INVALID_RESOURCE Handle = 0x80290214
+ TBSIMP_E_NOTHING_TO_UNLOAD Handle = 0x80290215
+ TBSIMP_E_HASH_TABLE_FULL Handle = 0x80290216
+ TBSIMP_E_TOO_MANY_TBS_CONTEXTS Handle = 0x80290217
+ TBSIMP_E_TOO_MANY_RESOURCES Handle = 0x80290218
+ TBSIMP_E_PPI_NOT_SUPPORTED Handle = 0x80290219
+ TBSIMP_E_TPM_INCOMPATIBLE Handle = 0x8029021A
+ TBSIMP_E_NO_EVENT_LOG Handle = 0x8029021B
+ TPM_E_PPI_ACPI_FAILURE Handle = 0x80290300
+ TPM_E_PPI_USER_ABORT Handle = 0x80290301
+ TPM_E_PPI_BIOS_FAILURE Handle = 0x80290302
+ TPM_E_PPI_NOT_SUPPORTED Handle = 0x80290303
+ TPM_E_PPI_BLOCKED_IN_BIOS Handle = 0x80290304
+ TPM_E_PCP_ERROR_MASK Handle = 0x80290400
+ TPM_E_PCP_DEVICE_NOT_READY Handle = 0x80290401
+ TPM_E_PCP_INVALID_HANDLE Handle = 0x80290402
+ TPM_E_PCP_INVALID_PARAMETER Handle = 0x80290403
+ TPM_E_PCP_FLAG_NOT_SUPPORTED Handle = 0x80290404
+ TPM_E_PCP_NOT_SUPPORTED Handle = 0x80290405
+ TPM_E_PCP_BUFFER_TOO_SMALL Handle = 0x80290406
+ TPM_E_PCP_INTERNAL_ERROR Handle = 0x80290407
+ TPM_E_PCP_AUTHENTICATION_FAILED Handle = 0x80290408
+ TPM_E_PCP_AUTHENTICATION_IGNORED Handle = 0x80290409
+ TPM_E_PCP_POLICY_NOT_FOUND Handle = 0x8029040A
+ TPM_E_PCP_PROFILE_NOT_FOUND Handle = 0x8029040B
+ TPM_E_PCP_VALIDATION_FAILED Handle = 0x8029040C
+ TPM_E_PCP_WRONG_PARENT Handle = 0x8029040E
+ TPM_E_KEY_NOT_LOADED Handle = 0x8029040F
+ TPM_E_NO_KEY_CERTIFICATION Handle = 0x80290410
+ TPM_E_KEY_NOT_FINALIZED Handle = 0x80290411
+ TPM_E_ATTESTATION_CHALLENGE_NOT_SET Handle = 0x80290412
+ TPM_E_NOT_PCR_BOUND Handle = 0x80290413
+ TPM_E_KEY_ALREADY_FINALIZED Handle = 0x80290414
+ TPM_E_KEY_USAGE_POLICY_NOT_SUPPORTED Handle = 0x80290415
+ TPM_E_KEY_USAGE_POLICY_INVALID Handle = 0x80290416
+ TPM_E_SOFT_KEY_ERROR Handle = 0x80290417
+ TPM_E_KEY_NOT_AUTHENTICATED Handle = 0x80290418
+ TPM_E_PCP_KEY_NOT_AIK Handle = 0x80290419
+ TPM_E_KEY_NOT_SIGNING_KEY Handle = 0x8029041A
+ TPM_E_LOCKED_OUT Handle = 0x8029041B
+ TPM_E_CLAIM_TYPE_NOT_SUPPORTED Handle = 0x8029041C
+ TPM_E_VERSION_NOT_SUPPORTED Handle = 0x8029041D
+ TPM_E_BUFFER_LENGTH_MISMATCH Handle = 0x8029041E
+ TPM_E_PCP_IFX_RSA_KEY_CREATION_BLOCKED Handle = 0x8029041F
+ TPM_E_PCP_TICKET_MISSING Handle = 0x80290420
+ TPM_E_PCP_RAW_POLICY_NOT_SUPPORTED Handle = 0x80290421
+ TPM_E_PCP_KEY_HANDLE_INVALIDATED Handle = 0x80290422
+ TPM_E_PCP_UNSUPPORTED_PSS_SALT Handle = 0x40290423
+ TPM_E_ZERO_EXHAUST_ENABLED Handle = 0x80290500
+ PLA_E_DCS_NOT_FOUND Handle = 0x80300002
+ PLA_E_DCS_IN_USE Handle = 0x803000AA
+ PLA_E_TOO_MANY_FOLDERS Handle = 0x80300045
+ PLA_E_NO_MIN_DISK Handle = 0x80300070
+ PLA_E_DCS_ALREADY_EXISTS Handle = 0x803000B7
+ PLA_S_PROPERTY_IGNORED Handle = 0x00300100
+ PLA_E_PROPERTY_CONFLICT Handle = 0x80300101
+ PLA_E_DCS_SINGLETON_REQUIRED Handle = 0x80300102
+ PLA_E_CREDENTIALS_REQUIRED Handle = 0x80300103
+ PLA_E_DCS_NOT_RUNNING Handle = 0x80300104
+ PLA_E_CONFLICT_INCL_EXCL_API Handle = 0x80300105
+ PLA_E_NETWORK_EXE_NOT_VALID Handle = 0x80300106
+ PLA_E_EXE_ALREADY_CONFIGURED Handle = 0x80300107
+ PLA_E_EXE_PATH_NOT_VALID Handle = 0x80300108
+ PLA_E_DC_ALREADY_EXISTS Handle = 0x80300109
+ PLA_E_DCS_START_WAIT_TIMEOUT Handle = 0x8030010A
+ PLA_E_DC_START_WAIT_TIMEOUT Handle = 0x8030010B
+ PLA_E_REPORT_WAIT_TIMEOUT Handle = 0x8030010C
+ PLA_E_NO_DUPLICATES Handle = 0x8030010D
+ PLA_E_EXE_FULL_PATH_REQUIRED Handle = 0x8030010E
+ PLA_E_INVALID_SESSION_NAME Handle = 0x8030010F
+ PLA_E_PLA_CHANNEL_NOT_ENABLED Handle = 0x80300110
+ PLA_E_TASKSCHED_CHANNEL_NOT_ENABLED Handle = 0x80300111
+ PLA_E_RULES_MANAGER_FAILED Handle = 0x80300112
+ PLA_E_CABAPI_FAILURE Handle = 0x80300113
+ FVE_E_LOCKED_VOLUME Handle = 0x80310000
+ FVE_E_NOT_ENCRYPTED Handle = 0x80310001
+ FVE_E_NO_TPM_BIOS Handle = 0x80310002
+ FVE_E_NO_MBR_METRIC Handle = 0x80310003
+ FVE_E_NO_BOOTSECTOR_METRIC Handle = 0x80310004
+ FVE_E_NO_BOOTMGR_METRIC Handle = 0x80310005
+ FVE_E_WRONG_BOOTMGR Handle = 0x80310006
+ FVE_E_SECURE_KEY_REQUIRED Handle = 0x80310007
+ FVE_E_NOT_ACTIVATED Handle = 0x80310008
+ FVE_E_ACTION_NOT_ALLOWED Handle = 0x80310009
+ FVE_E_AD_SCHEMA_NOT_INSTALLED Handle = 0x8031000A
+ FVE_E_AD_INVALID_DATATYPE Handle = 0x8031000B
+ FVE_E_AD_INVALID_DATASIZE Handle = 0x8031000C
+ FVE_E_AD_NO_VALUES Handle = 0x8031000D
+ FVE_E_AD_ATTR_NOT_SET Handle = 0x8031000E
+ FVE_E_AD_GUID_NOT_FOUND Handle = 0x8031000F
+ FVE_E_BAD_INFORMATION Handle = 0x80310010
+ FVE_E_TOO_SMALL Handle = 0x80310011
+ FVE_E_SYSTEM_VOLUME Handle = 0x80310012
+ FVE_E_FAILED_WRONG_FS Handle = 0x80310013
+ FVE_E_BAD_PARTITION_SIZE Handle = 0x80310014
+ FVE_E_NOT_SUPPORTED Handle = 0x80310015
+ FVE_E_BAD_DATA Handle = 0x80310016
+ FVE_E_VOLUME_NOT_BOUND Handle = 0x80310017
+ FVE_E_TPM_NOT_OWNED Handle = 0x80310018
+ FVE_E_NOT_DATA_VOLUME Handle = 0x80310019
+ FVE_E_AD_INSUFFICIENT_BUFFER Handle = 0x8031001A
+ FVE_E_CONV_READ Handle = 0x8031001B
+ FVE_E_CONV_WRITE Handle = 0x8031001C
+ FVE_E_KEY_REQUIRED Handle = 0x8031001D
+ FVE_E_CLUSTERING_NOT_SUPPORTED Handle = 0x8031001E
+ FVE_E_VOLUME_BOUND_ALREADY Handle = 0x8031001F
+ FVE_E_OS_NOT_PROTECTED Handle = 0x80310020
+ FVE_E_PROTECTION_DISABLED Handle = 0x80310021
+ FVE_E_RECOVERY_KEY_REQUIRED Handle = 0x80310022
+ FVE_E_FOREIGN_VOLUME Handle = 0x80310023
+ FVE_E_OVERLAPPED_UPDATE Handle = 0x80310024
+ FVE_E_TPM_SRK_AUTH_NOT_ZERO Handle = 0x80310025
+ FVE_E_FAILED_SECTOR_SIZE Handle = 0x80310026
+ FVE_E_FAILED_AUTHENTICATION Handle = 0x80310027
+ FVE_E_NOT_OS_VOLUME Handle = 0x80310028
+ FVE_E_AUTOUNLOCK_ENABLED Handle = 0x80310029
+ FVE_E_WRONG_BOOTSECTOR Handle = 0x8031002A
+ FVE_E_WRONG_SYSTEM_FS Handle = 0x8031002B
+ FVE_E_POLICY_PASSWORD_REQUIRED Handle = 0x8031002C
+ FVE_E_CANNOT_SET_FVEK_ENCRYPTED Handle = 0x8031002D
+ FVE_E_CANNOT_ENCRYPT_NO_KEY Handle = 0x8031002E
+ FVE_E_BOOTABLE_CDDVD Handle = 0x80310030
+ FVE_E_PROTECTOR_EXISTS Handle = 0x80310031
+ FVE_E_RELATIVE_PATH Handle = 0x80310032
+ FVE_E_PROTECTOR_NOT_FOUND Handle = 0x80310033
+ FVE_E_INVALID_KEY_FORMAT Handle = 0x80310034
+ FVE_E_INVALID_PASSWORD_FORMAT Handle = 0x80310035
+ FVE_E_FIPS_RNG_CHECK_FAILED Handle = 0x80310036
+ FVE_E_FIPS_PREVENTS_RECOVERY_PASSWORD Handle = 0x80310037
+ FVE_E_FIPS_PREVENTS_EXTERNAL_KEY_EXPORT Handle = 0x80310038
+ FVE_E_NOT_DECRYPTED Handle = 0x80310039
+ FVE_E_INVALID_PROTECTOR_TYPE Handle = 0x8031003A
+ FVE_E_NO_PROTECTORS_TO_TEST Handle = 0x8031003B
+ FVE_E_KEYFILE_NOT_FOUND Handle = 0x8031003C
+ FVE_E_KEYFILE_INVALID Handle = 0x8031003D
+ FVE_E_KEYFILE_NO_VMK Handle = 0x8031003E
+ FVE_E_TPM_DISABLED Handle = 0x8031003F
+ FVE_E_NOT_ALLOWED_IN_SAFE_MODE Handle = 0x80310040
+ FVE_E_TPM_INVALID_PCR Handle = 0x80310041
+ FVE_E_TPM_NO_VMK Handle = 0x80310042
+ FVE_E_PIN_INVALID Handle = 0x80310043
+ FVE_E_AUTH_INVALID_APPLICATION Handle = 0x80310044
+ FVE_E_AUTH_INVALID_CONFIG Handle = 0x80310045
+ FVE_E_FIPS_DISABLE_PROTECTION_NOT_ALLOWED Handle = 0x80310046
+ FVE_E_FS_NOT_EXTENDED Handle = 0x80310047
+ FVE_E_FIRMWARE_TYPE_NOT_SUPPORTED Handle = 0x80310048
+ FVE_E_NO_LICENSE Handle = 0x80310049
+ FVE_E_NOT_ON_STACK Handle = 0x8031004A
+ FVE_E_FS_MOUNTED Handle = 0x8031004B
+ FVE_E_TOKEN_NOT_IMPERSONATED Handle = 0x8031004C
+ FVE_E_DRY_RUN_FAILED Handle = 0x8031004D
+ FVE_E_REBOOT_REQUIRED Handle = 0x8031004E
+ FVE_E_DEBUGGER_ENABLED Handle = 0x8031004F
+ FVE_E_RAW_ACCESS Handle = 0x80310050
+ FVE_E_RAW_BLOCKED Handle = 0x80310051
+ FVE_E_BCD_APPLICATIONS_PATH_INCORRECT Handle = 0x80310052
+ FVE_E_NOT_ALLOWED_IN_VERSION Handle = 0x80310053
+ FVE_E_NO_AUTOUNLOCK_MASTER_KEY Handle = 0x80310054
+ FVE_E_MOR_FAILED Handle = 0x80310055
+ FVE_E_HIDDEN_VOLUME Handle = 0x80310056
+ FVE_E_TRANSIENT_STATE Handle = 0x80310057
+ FVE_E_PUBKEY_NOT_ALLOWED Handle = 0x80310058
+ FVE_E_VOLUME_HANDLE_OPEN Handle = 0x80310059
+ FVE_E_NO_FEATURE_LICENSE Handle = 0x8031005A
+ FVE_E_INVALID_STARTUP_OPTIONS Handle = 0x8031005B
+ FVE_E_POLICY_RECOVERY_PASSWORD_NOT_ALLOWED Handle = 0x8031005C
+ FVE_E_POLICY_RECOVERY_PASSWORD_REQUIRED Handle = 0x8031005D
+ FVE_E_POLICY_RECOVERY_KEY_NOT_ALLOWED Handle = 0x8031005E
+ FVE_E_POLICY_RECOVERY_KEY_REQUIRED Handle = 0x8031005F
+ FVE_E_POLICY_STARTUP_PIN_NOT_ALLOWED Handle = 0x80310060
+ FVE_E_POLICY_STARTUP_PIN_REQUIRED Handle = 0x80310061
+ FVE_E_POLICY_STARTUP_KEY_NOT_ALLOWED Handle = 0x80310062
+ FVE_E_POLICY_STARTUP_KEY_REQUIRED Handle = 0x80310063
+ FVE_E_POLICY_STARTUP_PIN_KEY_NOT_ALLOWED Handle = 0x80310064
+ FVE_E_POLICY_STARTUP_PIN_KEY_REQUIRED Handle = 0x80310065
+ FVE_E_POLICY_STARTUP_TPM_NOT_ALLOWED Handle = 0x80310066
+ FVE_E_POLICY_STARTUP_TPM_REQUIRED Handle = 0x80310067
+ FVE_E_POLICY_INVALID_PIN_LENGTH Handle = 0x80310068
+ FVE_E_KEY_PROTECTOR_NOT_SUPPORTED Handle = 0x80310069
+ FVE_E_POLICY_PASSPHRASE_NOT_ALLOWED Handle = 0x8031006A
+ FVE_E_POLICY_PASSPHRASE_REQUIRED Handle = 0x8031006B
+ FVE_E_FIPS_PREVENTS_PASSPHRASE Handle = 0x8031006C
+ FVE_E_OS_VOLUME_PASSPHRASE_NOT_ALLOWED Handle = 0x8031006D
+ FVE_E_INVALID_BITLOCKER_OID Handle = 0x8031006E
+ FVE_E_VOLUME_TOO_SMALL Handle = 0x8031006F
+ FVE_E_DV_NOT_SUPPORTED_ON_FS Handle = 0x80310070
+ FVE_E_DV_NOT_ALLOWED_BY_GP Handle = 0x80310071
+ FVE_E_POLICY_USER_CERTIFICATE_NOT_ALLOWED Handle = 0x80310072
+ FVE_E_POLICY_USER_CERTIFICATE_REQUIRED Handle = 0x80310073
+ FVE_E_POLICY_USER_CERT_MUST_BE_HW Handle = 0x80310074
+ FVE_E_POLICY_USER_CONFIGURE_FDV_AUTOUNLOCK_NOT_ALLOWED Handle = 0x80310075
+ FVE_E_POLICY_USER_CONFIGURE_RDV_AUTOUNLOCK_NOT_ALLOWED Handle = 0x80310076
+ FVE_E_POLICY_USER_CONFIGURE_RDV_NOT_ALLOWED Handle = 0x80310077
+ FVE_E_POLICY_USER_ENABLE_RDV_NOT_ALLOWED Handle = 0x80310078
+ FVE_E_POLICY_USER_DISABLE_RDV_NOT_ALLOWED Handle = 0x80310079
+ FVE_E_POLICY_INVALID_PASSPHRASE_LENGTH Handle = 0x80310080
+ FVE_E_POLICY_PASSPHRASE_TOO_SIMPLE Handle = 0x80310081
+ FVE_E_RECOVERY_PARTITION Handle = 0x80310082
+ FVE_E_POLICY_CONFLICT_FDV_RK_OFF_AUK_ON Handle = 0x80310083
+ FVE_E_POLICY_CONFLICT_RDV_RK_OFF_AUK_ON Handle = 0x80310084
+ FVE_E_NON_BITLOCKER_OID Handle = 0x80310085
+ FVE_E_POLICY_PROHIBITS_SELFSIGNED Handle = 0x80310086
+ FVE_E_POLICY_CONFLICT_RO_AND_STARTUP_KEY_REQUIRED Handle = 0x80310087
+ FVE_E_CONV_RECOVERY_FAILED Handle = 0x80310088
+ FVE_E_VIRTUALIZED_SPACE_TOO_BIG Handle = 0x80310089
+ FVE_E_POLICY_CONFLICT_OSV_RP_OFF_ADB_ON Handle = 0x80310090
+ FVE_E_POLICY_CONFLICT_FDV_RP_OFF_ADB_ON Handle = 0x80310091
+ FVE_E_POLICY_CONFLICT_RDV_RP_OFF_ADB_ON Handle = 0x80310092
+ FVE_E_NON_BITLOCKER_KU Handle = 0x80310093
+ FVE_E_PRIVATEKEY_AUTH_FAILED Handle = 0x80310094
+ FVE_E_REMOVAL_OF_DRA_FAILED Handle = 0x80310095
+ FVE_E_OPERATION_NOT_SUPPORTED_ON_VISTA_VOLUME Handle = 0x80310096
+ FVE_E_CANT_LOCK_AUTOUNLOCK_ENABLED_VOLUME Handle = 0x80310097
+ FVE_E_FIPS_HASH_KDF_NOT_ALLOWED Handle = 0x80310098
+ FVE_E_ENH_PIN_INVALID Handle = 0x80310099
+ FVE_E_INVALID_PIN_CHARS Handle = 0x8031009A
+ FVE_E_INVALID_DATUM_TYPE Handle = 0x8031009B
+ FVE_E_EFI_ONLY Handle = 0x8031009C
+ FVE_E_MULTIPLE_NKP_CERTS Handle = 0x8031009D
+ FVE_E_REMOVAL_OF_NKP_FAILED Handle = 0x8031009E
+ FVE_E_INVALID_NKP_CERT Handle = 0x8031009F
+ FVE_E_NO_EXISTING_PIN Handle = 0x803100A0
+ FVE_E_PROTECTOR_CHANGE_PIN_MISMATCH Handle = 0x803100A1
+ FVE_E_PIN_PROTECTOR_CHANGE_BY_STD_USER_DISALLOWED Handle = 0x803100A2
+ FVE_E_PROTECTOR_CHANGE_MAX_PIN_CHANGE_ATTEMPTS_REACHED Handle = 0x803100A3
+ FVE_E_POLICY_PASSPHRASE_REQUIRES_ASCII Handle = 0x803100A4
+ FVE_E_FULL_ENCRYPTION_NOT_ALLOWED_ON_TP_STORAGE Handle = 0x803100A5
+ FVE_E_WIPE_NOT_ALLOWED_ON_TP_STORAGE Handle = 0x803100A6
+ FVE_E_KEY_LENGTH_NOT_SUPPORTED_BY_EDRIVE Handle = 0x803100A7
+ FVE_E_NO_EXISTING_PASSPHRASE Handle = 0x803100A8
+ FVE_E_PROTECTOR_CHANGE_PASSPHRASE_MISMATCH Handle = 0x803100A9
+ FVE_E_PASSPHRASE_TOO_LONG Handle = 0x803100AA
+ FVE_E_NO_PASSPHRASE_WITH_TPM Handle = 0x803100AB
+ FVE_E_NO_TPM_WITH_PASSPHRASE Handle = 0x803100AC
+ FVE_E_NOT_ALLOWED_ON_CSV_STACK Handle = 0x803100AD
+ FVE_E_NOT_ALLOWED_ON_CLUSTER Handle = 0x803100AE
+ FVE_E_EDRIVE_NO_FAILOVER_TO_SW Handle = 0x803100AF
+ FVE_E_EDRIVE_BAND_IN_USE Handle = 0x803100B0
+ FVE_E_EDRIVE_DISALLOWED_BY_GP Handle = 0x803100B1
+ FVE_E_EDRIVE_INCOMPATIBLE_VOLUME Handle = 0x803100B2
+ FVE_E_NOT_ALLOWED_TO_UPGRADE_WHILE_CONVERTING Handle = 0x803100B3
+ FVE_E_EDRIVE_DV_NOT_SUPPORTED Handle = 0x803100B4
+ FVE_E_NO_PREBOOT_KEYBOARD_DETECTED Handle = 0x803100B5
+ FVE_E_NO_PREBOOT_KEYBOARD_OR_WINRE_DETECTED Handle = 0x803100B6
+ FVE_E_POLICY_REQUIRES_STARTUP_PIN_ON_TOUCH_DEVICE Handle = 0x803100B7
+ FVE_E_POLICY_REQUIRES_RECOVERY_PASSWORD_ON_TOUCH_DEVICE Handle = 0x803100B8
+ FVE_E_WIPE_CANCEL_NOT_APPLICABLE Handle = 0x803100B9
+ FVE_E_SECUREBOOT_DISABLED Handle = 0x803100BA
+ FVE_E_SECUREBOOT_CONFIGURATION_INVALID Handle = 0x803100BB
+ FVE_E_EDRIVE_DRY_RUN_FAILED Handle = 0x803100BC
+ FVE_E_SHADOW_COPY_PRESENT Handle = 0x803100BD
+ FVE_E_POLICY_INVALID_ENHANCED_BCD_SETTINGS Handle = 0x803100BE
+ FVE_E_EDRIVE_INCOMPATIBLE_FIRMWARE Handle = 0x803100BF
+ FVE_E_PROTECTOR_CHANGE_MAX_PASSPHRASE_CHANGE_ATTEMPTS_REACHED Handle = 0x803100C0
+ FVE_E_PASSPHRASE_PROTECTOR_CHANGE_BY_STD_USER_DISALLOWED Handle = 0x803100C1
+ FVE_E_LIVEID_ACCOUNT_SUSPENDED Handle = 0x803100C2
+ FVE_E_LIVEID_ACCOUNT_BLOCKED Handle = 0x803100C3
+ FVE_E_NOT_PROVISIONED_ON_ALL_VOLUMES Handle = 0x803100C4
+ FVE_E_DE_FIXED_DATA_NOT_SUPPORTED Handle = 0x803100C5
+ FVE_E_DE_HARDWARE_NOT_COMPLIANT Handle = 0x803100C6
+ FVE_E_DE_WINRE_NOT_CONFIGURED Handle = 0x803100C7
+ FVE_E_DE_PROTECTION_SUSPENDED Handle = 0x803100C8
+ FVE_E_DE_OS_VOLUME_NOT_PROTECTED Handle = 0x803100C9
+ FVE_E_DE_DEVICE_LOCKEDOUT Handle = 0x803100CA
+ FVE_E_DE_PROTECTION_NOT_YET_ENABLED Handle = 0x803100CB
+ FVE_E_INVALID_PIN_CHARS_DETAILED Handle = 0x803100CC
+ FVE_E_DEVICE_LOCKOUT_COUNTER_UNAVAILABLE Handle = 0x803100CD
+ FVE_E_DEVICELOCKOUT_COUNTER_MISMATCH Handle = 0x803100CE
+ FVE_E_BUFFER_TOO_LARGE Handle = 0x803100CF
+ FVE_E_NO_SUCH_CAPABILITY_ON_TARGET Handle = 0x803100D0
+ FVE_E_DE_PREVENTED_FOR_OS Handle = 0x803100D1
+ FVE_E_DE_VOLUME_OPTED_OUT Handle = 0x803100D2
+ FVE_E_DE_VOLUME_NOT_SUPPORTED Handle = 0x803100D3
+ FVE_E_EOW_NOT_SUPPORTED_IN_VERSION Handle = 0x803100D4
+ FVE_E_ADBACKUP_NOT_ENABLED Handle = 0x803100D5
+ FVE_E_VOLUME_EXTEND_PREVENTS_EOW_DECRYPT Handle = 0x803100D6
+ FVE_E_NOT_DE_VOLUME Handle = 0x803100D7
+ FVE_E_PROTECTION_CANNOT_BE_DISABLED Handle = 0x803100D8
+ FVE_E_OSV_KSR_NOT_ALLOWED Handle = 0x803100D9
+ FWP_E_CALLOUT_NOT_FOUND Handle = 0x80320001
+ FWP_E_CONDITION_NOT_FOUND Handle = 0x80320002
+ FWP_E_FILTER_NOT_FOUND Handle = 0x80320003
+ FWP_E_LAYER_NOT_FOUND Handle = 0x80320004
+ FWP_E_PROVIDER_NOT_FOUND Handle = 0x80320005
+ FWP_E_PROVIDER_CONTEXT_NOT_FOUND Handle = 0x80320006
+ FWP_E_SUBLAYER_NOT_FOUND Handle = 0x80320007
+ FWP_E_NOT_FOUND Handle = 0x80320008
+ FWP_E_ALREADY_EXISTS Handle = 0x80320009
+ FWP_E_IN_USE Handle = 0x8032000A
+ FWP_E_DYNAMIC_SESSION_IN_PROGRESS Handle = 0x8032000B
+ FWP_E_WRONG_SESSION Handle = 0x8032000C
+ FWP_E_NO_TXN_IN_PROGRESS Handle = 0x8032000D
+ FWP_E_TXN_IN_PROGRESS Handle = 0x8032000E
+ FWP_E_TXN_ABORTED Handle = 0x8032000F
+ FWP_E_SESSION_ABORTED Handle = 0x80320010
+ FWP_E_INCOMPATIBLE_TXN Handle = 0x80320011
+ FWP_E_TIMEOUT Handle = 0x80320012
+ FWP_E_NET_EVENTS_DISABLED Handle = 0x80320013
+ FWP_E_INCOMPATIBLE_LAYER Handle = 0x80320014
+ FWP_E_KM_CLIENTS_ONLY Handle = 0x80320015
+ FWP_E_LIFETIME_MISMATCH Handle = 0x80320016
+ FWP_E_BUILTIN_OBJECT Handle = 0x80320017
+ FWP_E_TOO_MANY_CALLOUTS Handle = 0x80320018
+ FWP_E_NOTIFICATION_DROPPED Handle = 0x80320019
+ FWP_E_TRAFFIC_MISMATCH Handle = 0x8032001A
+ FWP_E_INCOMPATIBLE_SA_STATE Handle = 0x8032001B
+ FWP_E_NULL_POINTER Handle = 0x8032001C
+ FWP_E_INVALID_ENUMERATOR Handle = 0x8032001D
+ FWP_E_INVALID_FLAGS Handle = 0x8032001E
+ FWP_E_INVALID_NET_MASK Handle = 0x8032001F
+ FWP_E_INVALID_RANGE Handle = 0x80320020
+ FWP_E_INVALID_INTERVAL Handle = 0x80320021
+ FWP_E_ZERO_LENGTH_ARRAY Handle = 0x80320022
+ FWP_E_NULL_DISPLAY_NAME Handle = 0x80320023
+ FWP_E_INVALID_ACTION_TYPE Handle = 0x80320024
+ FWP_E_INVALID_WEIGHT Handle = 0x80320025
+ FWP_E_MATCH_TYPE_MISMATCH Handle = 0x80320026
+ FWP_E_TYPE_MISMATCH Handle = 0x80320027
+ FWP_E_OUT_OF_BOUNDS Handle = 0x80320028
+ FWP_E_RESERVED Handle = 0x80320029
+ FWP_E_DUPLICATE_CONDITION Handle = 0x8032002A
+ FWP_E_DUPLICATE_KEYMOD Handle = 0x8032002B
+ FWP_E_ACTION_INCOMPATIBLE_WITH_LAYER Handle = 0x8032002C
+ FWP_E_ACTION_INCOMPATIBLE_WITH_SUBLAYER Handle = 0x8032002D
+ FWP_E_CONTEXT_INCOMPATIBLE_WITH_LAYER Handle = 0x8032002E
+ FWP_E_CONTEXT_INCOMPATIBLE_WITH_CALLOUT Handle = 0x8032002F
+ FWP_E_INCOMPATIBLE_AUTH_METHOD Handle = 0x80320030
+ FWP_E_INCOMPATIBLE_DH_GROUP Handle = 0x80320031
+ FWP_E_EM_NOT_SUPPORTED Handle = 0x80320032
+ FWP_E_NEVER_MATCH Handle = 0x80320033
+ FWP_E_PROVIDER_CONTEXT_MISMATCH Handle = 0x80320034
+ FWP_E_INVALID_PARAMETER Handle = 0x80320035
+ FWP_E_TOO_MANY_SUBLAYERS Handle = 0x80320036
+ FWP_E_CALLOUT_NOTIFICATION_FAILED Handle = 0x80320037
+ FWP_E_INVALID_AUTH_TRANSFORM Handle = 0x80320038
+ FWP_E_INVALID_CIPHER_TRANSFORM Handle = 0x80320039
+ FWP_E_INCOMPATIBLE_CIPHER_TRANSFORM Handle = 0x8032003A
+ FWP_E_INVALID_TRANSFORM_COMBINATION Handle = 0x8032003B
+ FWP_E_DUPLICATE_AUTH_METHOD Handle = 0x8032003C
+ FWP_E_INVALID_TUNNEL_ENDPOINT Handle = 0x8032003D
+ FWP_E_L2_DRIVER_NOT_READY Handle = 0x8032003E
+ FWP_E_KEY_DICTATOR_ALREADY_REGISTERED Handle = 0x8032003F
+ FWP_E_KEY_DICTATION_INVALID_KEYING_MATERIAL Handle = 0x80320040
+ FWP_E_CONNECTIONS_DISABLED Handle = 0x80320041
+ FWP_E_INVALID_DNS_NAME Handle = 0x80320042
+ FWP_E_STILL_ON Handle = 0x80320043
+ FWP_E_IKEEXT_NOT_RUNNING Handle = 0x80320044
+ FWP_E_DROP_NOICMP Handle = 0x80320104
+ WS_S_ASYNC Handle = 0x003D0000
+ WS_S_END Handle = 0x003D0001
+ WS_E_INVALID_FORMAT Handle = 0x803D0000
+ WS_E_OBJECT_FAULTED Handle = 0x803D0001
+ WS_E_NUMERIC_OVERFLOW Handle = 0x803D0002
+ WS_E_INVALID_OPERATION Handle = 0x803D0003
+ WS_E_OPERATION_ABORTED Handle = 0x803D0004
+ WS_E_ENDPOINT_ACCESS_DENIED Handle = 0x803D0005
+ WS_E_OPERATION_TIMED_OUT Handle = 0x803D0006
+ WS_E_OPERATION_ABANDONED Handle = 0x803D0007
+ WS_E_QUOTA_EXCEEDED Handle = 0x803D0008
+ WS_E_NO_TRANSLATION_AVAILABLE Handle = 0x803D0009
+ WS_E_SECURITY_VERIFICATION_FAILURE Handle = 0x803D000A
+ WS_E_ADDRESS_IN_USE Handle = 0x803D000B
+ WS_E_ADDRESS_NOT_AVAILABLE Handle = 0x803D000C
+ WS_E_ENDPOINT_NOT_FOUND Handle = 0x803D000D
+ WS_E_ENDPOINT_NOT_AVAILABLE Handle = 0x803D000E
+ WS_E_ENDPOINT_FAILURE Handle = 0x803D000F
+ WS_E_ENDPOINT_UNREACHABLE Handle = 0x803D0010
+ WS_E_ENDPOINT_ACTION_NOT_SUPPORTED Handle = 0x803D0011
+ WS_E_ENDPOINT_TOO_BUSY Handle = 0x803D0012
+ WS_E_ENDPOINT_FAULT_RECEIVED Handle = 0x803D0013
+ WS_E_ENDPOINT_DISCONNECTED Handle = 0x803D0014
+ WS_E_PROXY_FAILURE Handle = 0x803D0015
+ WS_E_PROXY_ACCESS_DENIED Handle = 0x803D0016
+ WS_E_NOT_SUPPORTED Handle = 0x803D0017
+ WS_E_PROXY_REQUIRES_BASIC_AUTH Handle = 0x803D0018
+ WS_E_PROXY_REQUIRES_DIGEST_AUTH Handle = 0x803D0019
+ WS_E_PROXY_REQUIRES_NTLM_AUTH Handle = 0x803D001A
+ WS_E_PROXY_REQUIRES_NEGOTIATE_AUTH Handle = 0x803D001B
+ WS_E_SERVER_REQUIRES_BASIC_AUTH Handle = 0x803D001C
+ WS_E_SERVER_REQUIRES_DIGEST_AUTH Handle = 0x803D001D
+ WS_E_SERVER_REQUIRES_NTLM_AUTH Handle = 0x803D001E
+ WS_E_SERVER_REQUIRES_NEGOTIATE_AUTH Handle = 0x803D001F
+ WS_E_INVALID_ENDPOINT_URL Handle = 0x803D0020
+ WS_E_OTHER Handle = 0x803D0021
+ WS_E_SECURITY_TOKEN_EXPIRED Handle = 0x803D0022
+ WS_E_SECURITY_SYSTEM_FAILURE Handle = 0x803D0023
+ ERROR_NDIS_INTERFACE_CLOSING syscall.Errno = 0x80340002
+ ERROR_NDIS_BAD_VERSION syscall.Errno = 0x80340004
+ ERROR_NDIS_BAD_CHARACTERISTICS syscall.Errno = 0x80340005
+ ERROR_NDIS_ADAPTER_NOT_FOUND syscall.Errno = 0x80340006
+ ERROR_NDIS_OPEN_FAILED syscall.Errno = 0x80340007
+ ERROR_NDIS_DEVICE_FAILED syscall.Errno = 0x80340008
+ ERROR_NDIS_MULTICAST_FULL syscall.Errno = 0x80340009
+ ERROR_NDIS_MULTICAST_EXISTS syscall.Errno = 0x8034000A
+ ERROR_NDIS_MULTICAST_NOT_FOUND syscall.Errno = 0x8034000B
+ ERROR_NDIS_REQUEST_ABORTED syscall.Errno = 0x8034000C
+ ERROR_NDIS_RESET_IN_PROGRESS syscall.Errno = 0x8034000D
+ ERROR_NDIS_NOT_SUPPORTED syscall.Errno = 0x803400BB
+ ERROR_NDIS_INVALID_PACKET syscall.Errno = 0x8034000F
+ ERROR_NDIS_ADAPTER_NOT_READY syscall.Errno = 0x80340011
+ ERROR_NDIS_INVALID_LENGTH syscall.Errno = 0x80340014
+ ERROR_NDIS_INVALID_DATA syscall.Errno = 0x80340015
+ ERROR_NDIS_BUFFER_TOO_SHORT syscall.Errno = 0x80340016
+ ERROR_NDIS_INVALID_OID syscall.Errno = 0x80340017
+ ERROR_NDIS_ADAPTER_REMOVED syscall.Errno = 0x80340018
+ ERROR_NDIS_UNSUPPORTED_MEDIA syscall.Errno = 0x80340019
+ ERROR_NDIS_GROUP_ADDRESS_IN_USE syscall.Errno = 0x8034001A
+ ERROR_NDIS_FILE_NOT_FOUND syscall.Errno = 0x8034001B
+ ERROR_NDIS_ERROR_READING_FILE syscall.Errno = 0x8034001C
+ ERROR_NDIS_ALREADY_MAPPED syscall.Errno = 0x8034001D
+ ERROR_NDIS_RESOURCE_CONFLICT syscall.Errno = 0x8034001E
+ ERROR_NDIS_MEDIA_DISCONNECTED syscall.Errno = 0x8034001F
+ ERROR_NDIS_INVALID_ADDRESS syscall.Errno = 0x80340022
+ ERROR_NDIS_INVALID_DEVICE_REQUEST syscall.Errno = 0x80340010
+ ERROR_NDIS_PAUSED syscall.Errno = 0x8034002A
+ ERROR_NDIS_INTERFACE_NOT_FOUND syscall.Errno = 0x8034002B
+ ERROR_NDIS_UNSUPPORTED_REVISION syscall.Errno = 0x8034002C
+ ERROR_NDIS_INVALID_PORT syscall.Errno = 0x8034002D
+ ERROR_NDIS_INVALID_PORT_STATE syscall.Errno = 0x8034002E
+ ERROR_NDIS_LOW_POWER_STATE syscall.Errno = 0x8034002F
+ ERROR_NDIS_REINIT_REQUIRED syscall.Errno = 0x80340030
+ ERROR_NDIS_NO_QUEUES syscall.Errno = 0x80340031
+ ERROR_NDIS_DOT11_AUTO_CONFIG_ENABLED syscall.Errno = 0x80342000
+ ERROR_NDIS_DOT11_MEDIA_IN_USE syscall.Errno = 0x80342001
+ ERROR_NDIS_DOT11_POWER_STATE_INVALID syscall.Errno = 0x80342002
+ ERROR_NDIS_PM_WOL_PATTERN_LIST_FULL syscall.Errno = 0x80342003
+ ERROR_NDIS_PM_PROTOCOL_OFFLOAD_LIST_FULL syscall.Errno = 0x80342004
+ ERROR_NDIS_DOT11_AP_CHANNEL_CURRENTLY_NOT_AVAILABLE syscall.Errno = 0x80342005
+ ERROR_NDIS_DOT11_AP_BAND_CURRENTLY_NOT_AVAILABLE syscall.Errno = 0x80342006
+ ERROR_NDIS_DOT11_AP_CHANNEL_NOT_ALLOWED syscall.Errno = 0x80342007
+ ERROR_NDIS_DOT11_AP_BAND_NOT_ALLOWED syscall.Errno = 0x80342008
+ ERROR_NDIS_INDICATION_REQUIRED syscall.Errno = 0x00340001
+ ERROR_NDIS_OFFLOAD_POLICY syscall.Errno = 0xC034100F
+ ERROR_NDIS_OFFLOAD_CONNECTION_REJECTED syscall.Errno = 0xC0341012
+ ERROR_NDIS_OFFLOAD_PATH_REJECTED syscall.Errno = 0xC0341013
+ ERROR_HV_INVALID_HYPERCALL_CODE syscall.Errno = 0xC0350002
+ ERROR_HV_INVALID_HYPERCALL_INPUT syscall.Errno = 0xC0350003
+ ERROR_HV_INVALID_ALIGNMENT syscall.Errno = 0xC0350004
+ ERROR_HV_INVALID_PARAMETER syscall.Errno = 0xC0350005
+ ERROR_HV_ACCESS_DENIED syscall.Errno = 0xC0350006
+ ERROR_HV_INVALID_PARTITION_STATE syscall.Errno = 0xC0350007
+ ERROR_HV_OPERATION_DENIED syscall.Errno = 0xC0350008
+ ERROR_HV_UNKNOWN_PROPERTY syscall.Errno = 0xC0350009
+ ERROR_HV_PROPERTY_VALUE_OUT_OF_RANGE syscall.Errno = 0xC035000A
+ ERROR_HV_INSUFFICIENT_MEMORY syscall.Errno = 0xC035000B
+ ERROR_HV_PARTITION_TOO_DEEP syscall.Errno = 0xC035000C
+ ERROR_HV_INVALID_PARTITION_ID syscall.Errno = 0xC035000D
+ ERROR_HV_INVALID_VP_INDEX syscall.Errno = 0xC035000E
+ ERROR_HV_INVALID_PORT_ID syscall.Errno = 0xC0350011
+ ERROR_HV_INVALID_CONNECTION_ID syscall.Errno = 0xC0350012
+ ERROR_HV_INSUFFICIENT_BUFFERS syscall.Errno = 0xC0350013
+ ERROR_HV_NOT_ACKNOWLEDGED syscall.Errno = 0xC0350014
+ ERROR_HV_INVALID_VP_STATE syscall.Errno = 0xC0350015
+ ERROR_HV_ACKNOWLEDGED syscall.Errno = 0xC0350016
+ ERROR_HV_INVALID_SAVE_RESTORE_STATE syscall.Errno = 0xC0350017
+ ERROR_HV_INVALID_SYNIC_STATE syscall.Errno = 0xC0350018
+ ERROR_HV_OBJECT_IN_USE syscall.Errno = 0xC0350019
+ ERROR_HV_INVALID_PROXIMITY_DOMAIN_INFO syscall.Errno = 0xC035001A
+ ERROR_HV_NO_DATA syscall.Errno = 0xC035001B
+ ERROR_HV_INACTIVE syscall.Errno = 0xC035001C
+ ERROR_HV_NO_RESOURCES syscall.Errno = 0xC035001D
+ ERROR_HV_FEATURE_UNAVAILABLE syscall.Errno = 0xC035001E
+ ERROR_HV_INSUFFICIENT_BUFFER syscall.Errno = 0xC0350033
+ ERROR_HV_INSUFFICIENT_DEVICE_DOMAINS syscall.Errno = 0xC0350038
+ ERROR_HV_CPUID_FEATURE_VALIDATION syscall.Errno = 0xC035003C
+ ERROR_HV_CPUID_XSAVE_FEATURE_VALIDATION syscall.Errno = 0xC035003D
+ ERROR_HV_PROCESSOR_STARTUP_TIMEOUT syscall.Errno = 0xC035003E
+ ERROR_HV_SMX_ENABLED syscall.Errno = 0xC035003F
+ ERROR_HV_INVALID_LP_INDEX syscall.Errno = 0xC0350041
+ ERROR_HV_INVALID_REGISTER_VALUE syscall.Errno = 0xC0350050
+ ERROR_HV_INVALID_VTL_STATE syscall.Errno = 0xC0350051
+ ERROR_HV_NX_NOT_DETECTED syscall.Errno = 0xC0350055
+ ERROR_HV_INVALID_DEVICE_ID syscall.Errno = 0xC0350057
+ ERROR_HV_INVALID_DEVICE_STATE syscall.Errno = 0xC0350058
+ ERROR_HV_PENDING_PAGE_REQUESTS syscall.Errno = 0x00350059
+ ERROR_HV_PAGE_REQUEST_INVALID syscall.Errno = 0xC0350060
+ ERROR_HV_INVALID_CPU_GROUP_ID syscall.Errno = 0xC035006F
+ ERROR_HV_INVALID_CPU_GROUP_STATE syscall.Errno = 0xC0350070
+ ERROR_HV_OPERATION_FAILED syscall.Errno = 0xC0350071
+ ERROR_HV_NOT_ALLOWED_WITH_NESTED_VIRT_ACTIVE syscall.Errno = 0xC0350072
+ ERROR_HV_INSUFFICIENT_ROOT_MEMORY syscall.Errno = 0xC0350073
+ ERROR_HV_NOT_PRESENT syscall.Errno = 0xC0351000
+ ERROR_VID_DUPLICATE_HANDLER syscall.Errno = 0xC0370001
+ ERROR_VID_TOO_MANY_HANDLERS syscall.Errno = 0xC0370002
+ ERROR_VID_QUEUE_FULL syscall.Errno = 0xC0370003
+ ERROR_VID_HANDLER_NOT_PRESENT syscall.Errno = 0xC0370004
+ ERROR_VID_INVALID_OBJECT_NAME syscall.Errno = 0xC0370005
+ ERROR_VID_PARTITION_NAME_TOO_LONG syscall.Errno = 0xC0370006
+ ERROR_VID_MESSAGE_QUEUE_NAME_TOO_LONG syscall.Errno = 0xC0370007
+ ERROR_VID_PARTITION_ALREADY_EXISTS syscall.Errno = 0xC0370008
+ ERROR_VID_PARTITION_DOES_NOT_EXIST syscall.Errno = 0xC0370009
+ ERROR_VID_PARTITION_NAME_NOT_FOUND syscall.Errno = 0xC037000A
+ ERROR_VID_MESSAGE_QUEUE_ALREADY_EXISTS syscall.Errno = 0xC037000B
+ ERROR_VID_EXCEEDED_MBP_ENTRY_MAP_LIMIT syscall.Errno = 0xC037000C
+ ERROR_VID_MB_STILL_REFERENCED syscall.Errno = 0xC037000D
+ ERROR_VID_CHILD_GPA_PAGE_SET_CORRUPTED syscall.Errno = 0xC037000E
+ ERROR_VID_INVALID_NUMA_SETTINGS syscall.Errno = 0xC037000F
+ ERROR_VID_INVALID_NUMA_NODE_INDEX syscall.Errno = 0xC0370010
+ ERROR_VID_NOTIFICATION_QUEUE_ALREADY_ASSOCIATED syscall.Errno = 0xC0370011
+ ERROR_VID_INVALID_MEMORY_BLOCK_HANDLE syscall.Errno = 0xC0370012
+ ERROR_VID_PAGE_RANGE_OVERFLOW syscall.Errno = 0xC0370013
+ ERROR_VID_INVALID_MESSAGE_QUEUE_HANDLE syscall.Errno = 0xC0370014
+ ERROR_VID_INVALID_GPA_RANGE_HANDLE syscall.Errno = 0xC0370015
+ ERROR_VID_NO_MEMORY_BLOCK_NOTIFICATION_QUEUE syscall.Errno = 0xC0370016
+ ERROR_VID_MEMORY_BLOCK_LOCK_COUNT_EXCEEDED syscall.Errno = 0xC0370017
+ ERROR_VID_INVALID_PPM_HANDLE syscall.Errno = 0xC0370018
+ ERROR_VID_MBPS_ARE_LOCKED syscall.Errno = 0xC0370019
+ ERROR_VID_MESSAGE_QUEUE_CLOSED syscall.Errno = 0xC037001A
+ ERROR_VID_VIRTUAL_PROCESSOR_LIMIT_EXCEEDED syscall.Errno = 0xC037001B
+ ERROR_VID_STOP_PENDING syscall.Errno = 0xC037001C
+ ERROR_VID_INVALID_PROCESSOR_STATE syscall.Errno = 0xC037001D
+ ERROR_VID_EXCEEDED_KM_CONTEXT_COUNT_LIMIT syscall.Errno = 0xC037001E
+ ERROR_VID_KM_INTERFACE_ALREADY_INITIALIZED syscall.Errno = 0xC037001F
+ ERROR_VID_MB_PROPERTY_ALREADY_SET_RESET syscall.Errno = 0xC0370020
+ ERROR_VID_MMIO_RANGE_DESTROYED syscall.Errno = 0xC0370021
+ ERROR_VID_INVALID_CHILD_GPA_PAGE_SET syscall.Errno = 0xC0370022
+ ERROR_VID_RESERVE_PAGE_SET_IS_BEING_USED syscall.Errno = 0xC0370023
+ ERROR_VID_RESERVE_PAGE_SET_TOO_SMALL syscall.Errno = 0xC0370024
+ ERROR_VID_MBP_ALREADY_LOCKED_USING_RESERVED_PAGE syscall.Errno = 0xC0370025
+ ERROR_VID_MBP_COUNT_EXCEEDED_LIMIT syscall.Errno = 0xC0370026
+ ERROR_VID_SAVED_STATE_CORRUPT syscall.Errno = 0xC0370027
+ ERROR_VID_SAVED_STATE_UNRECOGNIZED_ITEM syscall.Errno = 0xC0370028
+ ERROR_VID_SAVED_STATE_INCOMPATIBLE syscall.Errno = 0xC0370029
+ ERROR_VID_VTL_ACCESS_DENIED syscall.Errno = 0xC037002A
+ ERROR_VMCOMPUTE_TERMINATED_DURING_START syscall.Errno = 0xC0370100
+ ERROR_VMCOMPUTE_IMAGE_MISMATCH syscall.Errno = 0xC0370101
+ ERROR_VMCOMPUTE_HYPERV_NOT_INSTALLED syscall.Errno = 0xC0370102
+ ERROR_VMCOMPUTE_OPERATION_PENDING syscall.Errno = 0xC0370103
+ ERROR_VMCOMPUTE_TOO_MANY_NOTIFICATIONS syscall.Errno = 0xC0370104
+ ERROR_VMCOMPUTE_INVALID_STATE syscall.Errno = 0xC0370105
+ ERROR_VMCOMPUTE_UNEXPECTED_EXIT syscall.Errno = 0xC0370106
+ ERROR_VMCOMPUTE_TERMINATED syscall.Errno = 0xC0370107
+ ERROR_VMCOMPUTE_CONNECT_FAILED syscall.Errno = 0xC0370108
+ ERROR_VMCOMPUTE_TIMEOUT syscall.Errno = 0xC0370109
+ ERROR_VMCOMPUTE_CONNECTION_CLOSED syscall.Errno = 0xC037010A
+ ERROR_VMCOMPUTE_UNKNOWN_MESSAGE syscall.Errno = 0xC037010B
+ ERROR_VMCOMPUTE_UNSUPPORTED_PROTOCOL_VERSION syscall.Errno = 0xC037010C
+ ERROR_VMCOMPUTE_INVALID_JSON syscall.Errno = 0xC037010D
+ ERROR_VMCOMPUTE_SYSTEM_NOT_FOUND syscall.Errno = 0xC037010E
+ ERROR_VMCOMPUTE_SYSTEM_ALREADY_EXISTS syscall.Errno = 0xC037010F
+ ERROR_VMCOMPUTE_SYSTEM_ALREADY_STOPPED syscall.Errno = 0xC0370110
+ ERROR_VMCOMPUTE_PROTOCOL_ERROR syscall.Errno = 0xC0370111
+ ERROR_VMCOMPUTE_INVALID_LAYER syscall.Errno = 0xC0370112
+ ERROR_VMCOMPUTE_WINDOWS_INSIDER_REQUIRED syscall.Errno = 0xC0370113
+ HCS_E_TERMINATED_DURING_START Handle = 0x80370100
+ HCS_E_IMAGE_MISMATCH Handle = 0x80370101
+ HCS_E_HYPERV_NOT_INSTALLED Handle = 0x80370102
+ HCS_E_INVALID_STATE Handle = 0x80370105
+ HCS_E_UNEXPECTED_EXIT Handle = 0x80370106
+ HCS_E_TERMINATED Handle = 0x80370107
+ HCS_E_CONNECT_FAILED Handle = 0x80370108
+ HCS_E_CONNECTION_TIMEOUT Handle = 0x80370109
+ HCS_E_CONNECTION_CLOSED Handle = 0x8037010A
+ HCS_E_UNKNOWN_MESSAGE Handle = 0x8037010B
+ HCS_E_UNSUPPORTED_PROTOCOL_VERSION Handle = 0x8037010C
+ HCS_E_INVALID_JSON Handle = 0x8037010D
+ HCS_E_SYSTEM_NOT_FOUND Handle = 0x8037010E
+ HCS_E_SYSTEM_ALREADY_EXISTS Handle = 0x8037010F
+ HCS_E_SYSTEM_ALREADY_STOPPED Handle = 0x80370110
+ HCS_E_PROTOCOL_ERROR Handle = 0x80370111
+ HCS_E_INVALID_LAYER Handle = 0x80370112
+ HCS_E_WINDOWS_INSIDER_REQUIRED Handle = 0x80370113
+ HCS_E_SERVICE_NOT_AVAILABLE Handle = 0x80370114
+ HCS_E_OPERATION_NOT_STARTED Handle = 0x80370115
+ HCS_E_OPERATION_ALREADY_STARTED Handle = 0x80370116
+ HCS_E_OPERATION_PENDING Handle = 0x80370117
+ HCS_E_OPERATION_TIMEOUT Handle = 0x80370118
+ HCS_E_OPERATION_SYSTEM_CALLBACK_ALREADY_SET Handle = 0x80370119
+ HCS_E_OPERATION_RESULT_ALLOCATION_FAILED Handle = 0x8037011A
+ HCS_E_ACCESS_DENIED Handle = 0x8037011B
+ HCS_E_GUEST_CRITICAL_ERROR Handle = 0x8037011C
+ ERROR_VNET_VIRTUAL_SWITCH_NAME_NOT_FOUND syscall.Errno = 0xC0370200
+ ERROR_VID_REMOTE_NODE_PARENT_GPA_PAGES_USED syscall.Errno = 0x80370001
+ WHV_E_UNKNOWN_CAPABILITY Handle = 0x80370300
+ WHV_E_INSUFFICIENT_BUFFER Handle = 0x80370301
+ WHV_E_UNKNOWN_PROPERTY Handle = 0x80370302
+ WHV_E_UNSUPPORTED_HYPERVISOR_CONFIG Handle = 0x80370303
+ WHV_E_INVALID_PARTITION_CONFIG Handle = 0x80370304
+ WHV_E_GPA_RANGE_NOT_FOUND Handle = 0x80370305
+ WHV_E_VP_ALREADY_EXISTS Handle = 0x80370306
+ WHV_E_VP_DOES_NOT_EXIST Handle = 0x80370307
+ WHV_E_INVALID_VP_STATE Handle = 0x80370308
+ WHV_E_INVALID_VP_REGISTER_NAME Handle = 0x80370309
+ ERROR_VSMB_SAVED_STATE_FILE_NOT_FOUND syscall.Errno = 0xC0370400
+ ERROR_VSMB_SAVED_STATE_CORRUPT syscall.Errno = 0xC0370401
+ ERROR_VOLMGR_INCOMPLETE_REGENERATION syscall.Errno = 0x80380001
+ ERROR_VOLMGR_INCOMPLETE_DISK_MIGRATION syscall.Errno = 0x80380002
+ ERROR_VOLMGR_DATABASE_FULL syscall.Errno = 0xC0380001
+ ERROR_VOLMGR_DISK_CONFIGURATION_CORRUPTED syscall.Errno = 0xC0380002
+ ERROR_VOLMGR_DISK_CONFIGURATION_NOT_IN_SYNC syscall.Errno = 0xC0380003
+ ERROR_VOLMGR_PACK_CONFIG_UPDATE_FAILED syscall.Errno = 0xC0380004
+ ERROR_VOLMGR_DISK_CONTAINS_NON_SIMPLE_VOLUME syscall.Errno = 0xC0380005
+ ERROR_VOLMGR_DISK_DUPLICATE syscall.Errno = 0xC0380006
+ ERROR_VOLMGR_DISK_DYNAMIC syscall.Errno = 0xC0380007
+ ERROR_VOLMGR_DISK_ID_INVALID syscall.Errno = 0xC0380008
+ ERROR_VOLMGR_DISK_INVALID syscall.Errno = 0xC0380009
+ ERROR_VOLMGR_DISK_LAST_VOTER syscall.Errno = 0xC038000A
+ ERROR_VOLMGR_DISK_LAYOUT_INVALID syscall.Errno = 0xC038000B
+ ERROR_VOLMGR_DISK_LAYOUT_NON_BASIC_BETWEEN_BASIC_PARTITIONS syscall.Errno = 0xC038000C
+ ERROR_VOLMGR_DISK_LAYOUT_NOT_CYLINDER_ALIGNED syscall.Errno = 0xC038000D
+ ERROR_VOLMGR_DISK_LAYOUT_PARTITIONS_TOO_SMALL syscall.Errno = 0xC038000E
+ ERROR_VOLMGR_DISK_LAYOUT_PRIMARY_BETWEEN_LOGICAL_PARTITIONS syscall.Errno = 0xC038000F
+ ERROR_VOLMGR_DISK_LAYOUT_TOO_MANY_PARTITIONS syscall.Errno = 0xC0380010
+ ERROR_VOLMGR_DISK_MISSING syscall.Errno = 0xC0380011
+ ERROR_VOLMGR_DISK_NOT_EMPTY syscall.Errno = 0xC0380012
+ ERROR_VOLMGR_DISK_NOT_ENOUGH_SPACE syscall.Errno = 0xC0380013
+ ERROR_VOLMGR_DISK_REVECTORING_FAILED syscall.Errno = 0xC0380014
+ ERROR_VOLMGR_DISK_SECTOR_SIZE_INVALID syscall.Errno = 0xC0380015
+ ERROR_VOLMGR_DISK_SET_NOT_CONTAINED syscall.Errno = 0xC0380016
+ ERROR_VOLMGR_DISK_USED_BY_MULTIPLE_MEMBERS syscall.Errno = 0xC0380017
+ ERROR_VOLMGR_DISK_USED_BY_MULTIPLE_PLEXES syscall.Errno = 0xC0380018
+ ERROR_VOLMGR_DYNAMIC_DISK_NOT_SUPPORTED syscall.Errno = 0xC0380019
+ ERROR_VOLMGR_EXTENT_ALREADY_USED syscall.Errno = 0xC038001A
+ ERROR_VOLMGR_EXTENT_NOT_CONTIGUOUS syscall.Errno = 0xC038001B
+ ERROR_VOLMGR_EXTENT_NOT_IN_PUBLIC_REGION syscall.Errno = 0xC038001C
+ ERROR_VOLMGR_EXTENT_NOT_SECTOR_ALIGNED syscall.Errno = 0xC038001D
+ ERROR_VOLMGR_EXTENT_OVERLAPS_EBR_PARTITION syscall.Errno = 0xC038001E
+ ERROR_VOLMGR_EXTENT_VOLUME_LENGTHS_DO_NOT_MATCH syscall.Errno = 0xC038001F
+ ERROR_VOLMGR_FAULT_TOLERANT_NOT_SUPPORTED syscall.Errno = 0xC0380020
+ ERROR_VOLMGR_INTERLEAVE_LENGTH_INVALID syscall.Errno = 0xC0380021
+ ERROR_VOLMGR_MAXIMUM_REGISTERED_USERS syscall.Errno = 0xC0380022
+ ERROR_VOLMGR_MEMBER_IN_SYNC syscall.Errno = 0xC0380023
+ ERROR_VOLMGR_MEMBER_INDEX_DUPLICATE syscall.Errno = 0xC0380024
+ ERROR_VOLMGR_MEMBER_INDEX_INVALID syscall.Errno = 0xC0380025
+ ERROR_VOLMGR_MEMBER_MISSING syscall.Errno = 0xC0380026
+ ERROR_VOLMGR_MEMBER_NOT_DETACHED syscall.Errno = 0xC0380027
+ ERROR_VOLMGR_MEMBER_REGENERATING syscall.Errno = 0xC0380028
+ ERROR_VOLMGR_ALL_DISKS_FAILED syscall.Errno = 0xC0380029
+ ERROR_VOLMGR_NO_REGISTERED_USERS syscall.Errno = 0xC038002A
+ ERROR_VOLMGR_NO_SUCH_USER syscall.Errno = 0xC038002B
+ ERROR_VOLMGR_NOTIFICATION_RESET syscall.Errno = 0xC038002C
+ ERROR_VOLMGR_NUMBER_OF_MEMBERS_INVALID syscall.Errno = 0xC038002D
+ ERROR_VOLMGR_NUMBER_OF_PLEXES_INVALID syscall.Errno = 0xC038002E
+ ERROR_VOLMGR_PACK_DUPLICATE syscall.Errno = 0xC038002F
+ ERROR_VOLMGR_PACK_ID_INVALID syscall.Errno = 0xC0380030
+ ERROR_VOLMGR_PACK_INVALID syscall.Errno = 0xC0380031
+ ERROR_VOLMGR_PACK_NAME_INVALID syscall.Errno = 0xC0380032
+ ERROR_VOLMGR_PACK_OFFLINE syscall.Errno = 0xC0380033
+ ERROR_VOLMGR_PACK_HAS_QUORUM syscall.Errno = 0xC0380034
+ ERROR_VOLMGR_PACK_WITHOUT_QUORUM syscall.Errno = 0xC0380035
+ ERROR_VOLMGR_PARTITION_STYLE_INVALID syscall.Errno = 0xC0380036
+ ERROR_VOLMGR_PARTITION_UPDATE_FAILED syscall.Errno = 0xC0380037
+ ERROR_VOLMGR_PLEX_IN_SYNC syscall.Errno = 0xC0380038
+ ERROR_VOLMGR_PLEX_INDEX_DUPLICATE syscall.Errno = 0xC0380039
+ ERROR_VOLMGR_PLEX_INDEX_INVALID syscall.Errno = 0xC038003A
+ ERROR_VOLMGR_PLEX_LAST_ACTIVE syscall.Errno = 0xC038003B
+ ERROR_VOLMGR_PLEX_MISSING syscall.Errno = 0xC038003C
+ ERROR_VOLMGR_PLEX_REGENERATING syscall.Errno = 0xC038003D
+ ERROR_VOLMGR_PLEX_TYPE_INVALID syscall.Errno = 0xC038003E
+ ERROR_VOLMGR_PLEX_NOT_RAID5 syscall.Errno = 0xC038003F
+ ERROR_VOLMGR_PLEX_NOT_SIMPLE syscall.Errno = 0xC0380040
+ ERROR_VOLMGR_STRUCTURE_SIZE_INVALID syscall.Errno = 0xC0380041
+ ERROR_VOLMGR_TOO_MANY_NOTIFICATION_REQUESTS syscall.Errno = 0xC0380042
+ ERROR_VOLMGR_TRANSACTION_IN_PROGRESS syscall.Errno = 0xC0380043
+ ERROR_VOLMGR_UNEXPECTED_DISK_LAYOUT_CHANGE syscall.Errno = 0xC0380044
+ ERROR_VOLMGR_VOLUME_CONTAINS_MISSING_DISK syscall.Errno = 0xC0380045
+ ERROR_VOLMGR_VOLUME_ID_INVALID syscall.Errno = 0xC0380046
+ ERROR_VOLMGR_VOLUME_LENGTH_INVALID syscall.Errno = 0xC0380047
+ ERROR_VOLMGR_VOLUME_LENGTH_NOT_SECTOR_SIZE_MULTIPLE syscall.Errno = 0xC0380048
+ ERROR_VOLMGR_VOLUME_NOT_MIRRORED syscall.Errno = 0xC0380049
+ ERROR_VOLMGR_VOLUME_NOT_RETAINED syscall.Errno = 0xC038004A
+ ERROR_VOLMGR_VOLUME_OFFLINE syscall.Errno = 0xC038004B
+ ERROR_VOLMGR_VOLUME_RETAINED syscall.Errno = 0xC038004C
+ ERROR_VOLMGR_NUMBER_OF_EXTENTS_INVALID syscall.Errno = 0xC038004D
+ ERROR_VOLMGR_DIFFERENT_SECTOR_SIZE syscall.Errno = 0xC038004E
+ ERROR_VOLMGR_BAD_BOOT_DISK syscall.Errno = 0xC038004F
+ ERROR_VOLMGR_PACK_CONFIG_OFFLINE syscall.Errno = 0xC0380050
+ ERROR_VOLMGR_PACK_CONFIG_ONLINE syscall.Errno = 0xC0380051
+ ERROR_VOLMGR_NOT_PRIMARY_PACK syscall.Errno = 0xC0380052
+ ERROR_VOLMGR_PACK_LOG_UPDATE_FAILED syscall.Errno = 0xC0380053
+ ERROR_VOLMGR_NUMBER_OF_DISKS_IN_PLEX_INVALID syscall.Errno = 0xC0380054
+ ERROR_VOLMGR_NUMBER_OF_DISKS_IN_MEMBER_INVALID syscall.Errno = 0xC0380055
+ ERROR_VOLMGR_VOLUME_MIRRORED syscall.Errno = 0xC0380056
+ ERROR_VOLMGR_PLEX_NOT_SIMPLE_SPANNED syscall.Errno = 0xC0380057
+ ERROR_VOLMGR_NO_VALID_LOG_COPIES syscall.Errno = 0xC0380058
+ ERROR_VOLMGR_PRIMARY_PACK_PRESENT syscall.Errno = 0xC0380059
+ ERROR_VOLMGR_NUMBER_OF_DISKS_INVALID syscall.Errno = 0xC038005A
+ ERROR_VOLMGR_MIRROR_NOT_SUPPORTED syscall.Errno = 0xC038005B
+ ERROR_VOLMGR_RAID5_NOT_SUPPORTED syscall.Errno = 0xC038005C
+ ERROR_BCD_NOT_ALL_ENTRIES_IMPORTED syscall.Errno = 0x80390001
+ ERROR_BCD_TOO_MANY_ELEMENTS syscall.Errno = 0xC0390002
+ ERROR_BCD_NOT_ALL_ENTRIES_SYNCHRONIZED syscall.Errno = 0x80390003
+ ERROR_VHD_DRIVE_FOOTER_MISSING syscall.Errno = 0xC03A0001
+ ERROR_VHD_DRIVE_FOOTER_CHECKSUM_MISMATCH syscall.Errno = 0xC03A0002
+ ERROR_VHD_DRIVE_FOOTER_CORRUPT syscall.Errno = 0xC03A0003
+ ERROR_VHD_FORMAT_UNKNOWN syscall.Errno = 0xC03A0004
+ ERROR_VHD_FORMAT_UNSUPPORTED_VERSION syscall.Errno = 0xC03A0005
+ ERROR_VHD_SPARSE_HEADER_CHECKSUM_MISMATCH syscall.Errno = 0xC03A0006
+ ERROR_VHD_SPARSE_HEADER_UNSUPPORTED_VERSION syscall.Errno = 0xC03A0007
+ ERROR_VHD_SPARSE_HEADER_CORRUPT syscall.Errno = 0xC03A0008
+ ERROR_VHD_BLOCK_ALLOCATION_FAILURE syscall.Errno = 0xC03A0009
+ ERROR_VHD_BLOCK_ALLOCATION_TABLE_CORRUPT syscall.Errno = 0xC03A000A
+ ERROR_VHD_INVALID_BLOCK_SIZE syscall.Errno = 0xC03A000B
+ ERROR_VHD_BITMAP_MISMATCH syscall.Errno = 0xC03A000C
+ ERROR_VHD_PARENT_VHD_NOT_FOUND syscall.Errno = 0xC03A000D
+ ERROR_VHD_CHILD_PARENT_ID_MISMATCH syscall.Errno = 0xC03A000E
+ ERROR_VHD_CHILD_PARENT_TIMESTAMP_MISMATCH syscall.Errno = 0xC03A000F
+ ERROR_VHD_METADATA_READ_FAILURE syscall.Errno = 0xC03A0010
+ ERROR_VHD_METADATA_WRITE_FAILURE syscall.Errno = 0xC03A0011
+ ERROR_VHD_INVALID_SIZE syscall.Errno = 0xC03A0012
+ ERROR_VHD_INVALID_FILE_SIZE syscall.Errno = 0xC03A0013
+ ERROR_VIRTDISK_PROVIDER_NOT_FOUND syscall.Errno = 0xC03A0014
+ ERROR_VIRTDISK_NOT_VIRTUAL_DISK syscall.Errno = 0xC03A0015
+ ERROR_VHD_PARENT_VHD_ACCESS_DENIED syscall.Errno = 0xC03A0016
+ ERROR_VHD_CHILD_PARENT_SIZE_MISMATCH syscall.Errno = 0xC03A0017
+ ERROR_VHD_DIFFERENCING_CHAIN_CYCLE_DETECTED syscall.Errno = 0xC03A0018
+ ERROR_VHD_DIFFERENCING_CHAIN_ERROR_IN_PARENT syscall.Errno = 0xC03A0019
+ ERROR_VIRTUAL_DISK_LIMITATION syscall.Errno = 0xC03A001A
+ ERROR_VHD_INVALID_TYPE syscall.Errno = 0xC03A001B
+ ERROR_VHD_INVALID_STATE syscall.Errno = 0xC03A001C
+ ERROR_VIRTDISK_UNSUPPORTED_DISK_SECTOR_SIZE syscall.Errno = 0xC03A001D
+ ERROR_VIRTDISK_DISK_ALREADY_OWNED syscall.Errno = 0xC03A001E
+ ERROR_VIRTDISK_DISK_ONLINE_AND_WRITABLE syscall.Errno = 0xC03A001F
+ ERROR_CTLOG_TRACKING_NOT_INITIALIZED syscall.Errno = 0xC03A0020
+ ERROR_CTLOG_LOGFILE_SIZE_EXCEEDED_MAXSIZE syscall.Errno = 0xC03A0021
+ ERROR_CTLOG_VHD_CHANGED_OFFLINE syscall.Errno = 0xC03A0022
+ ERROR_CTLOG_INVALID_TRACKING_STATE syscall.Errno = 0xC03A0023
+ ERROR_CTLOG_INCONSISTENT_TRACKING_FILE syscall.Errno = 0xC03A0024
+ ERROR_VHD_RESIZE_WOULD_TRUNCATE_DATA syscall.Errno = 0xC03A0025
+ ERROR_VHD_COULD_NOT_COMPUTE_MINIMUM_VIRTUAL_SIZE syscall.Errno = 0xC03A0026
+ ERROR_VHD_ALREADY_AT_OR_BELOW_MINIMUM_VIRTUAL_SIZE syscall.Errno = 0xC03A0027
+ ERROR_VHD_METADATA_FULL syscall.Errno = 0xC03A0028
+ ERROR_VHD_INVALID_CHANGE_TRACKING_ID syscall.Errno = 0xC03A0029
+ ERROR_VHD_CHANGE_TRACKING_DISABLED syscall.Errno = 0xC03A002A
+ ERROR_VHD_MISSING_CHANGE_TRACKING_INFORMATION syscall.Errno = 0xC03A0030
+ ERROR_QUERY_STORAGE_ERROR syscall.Errno = 0x803A0001
+ HCN_E_NETWORK_NOT_FOUND Handle = 0x803B0001
+ HCN_E_ENDPOINT_NOT_FOUND Handle = 0x803B0002
+ HCN_E_LAYER_NOT_FOUND Handle = 0x803B0003
+ HCN_E_SWITCH_NOT_FOUND Handle = 0x803B0004
+ HCN_E_SUBNET_NOT_FOUND Handle = 0x803B0005
+ HCN_E_ADAPTER_NOT_FOUND Handle = 0x803B0006
+ HCN_E_PORT_NOT_FOUND Handle = 0x803B0007
+ HCN_E_POLICY_NOT_FOUND Handle = 0x803B0008
+ HCN_E_VFP_PORTSETTING_NOT_FOUND Handle = 0x803B0009
+ HCN_E_INVALID_NETWORK Handle = 0x803B000A
+ HCN_E_INVALID_NETWORK_TYPE Handle = 0x803B000B
+ HCN_E_INVALID_ENDPOINT Handle = 0x803B000C
+ HCN_E_INVALID_POLICY Handle = 0x803B000D
+ HCN_E_INVALID_POLICY_TYPE Handle = 0x803B000E
+ HCN_E_INVALID_REMOTE_ENDPOINT_OPERATION Handle = 0x803B000F
+ HCN_E_NETWORK_ALREADY_EXISTS Handle = 0x803B0010
+ HCN_E_LAYER_ALREADY_EXISTS Handle = 0x803B0011
+ HCN_E_POLICY_ALREADY_EXISTS Handle = 0x803B0012
+ HCN_E_PORT_ALREADY_EXISTS Handle = 0x803B0013
+ HCN_E_ENDPOINT_ALREADY_ATTACHED Handle = 0x803B0014
+ HCN_E_REQUEST_UNSUPPORTED Handle = 0x803B0015
+ HCN_E_MAPPING_NOT_SUPPORTED Handle = 0x803B0016
+ HCN_E_DEGRADED_OPERATION Handle = 0x803B0017
+ HCN_E_SHARED_SWITCH_MODIFICATION Handle = 0x803B0018
+ HCN_E_GUID_CONVERSION_FAILURE Handle = 0x803B0019
+ HCN_E_REGKEY_FAILURE Handle = 0x803B001A
+ HCN_E_INVALID_JSON Handle = 0x803B001B
+ HCN_E_INVALID_JSON_REFERENCE Handle = 0x803B001C
+ HCN_E_ENDPOINT_SHARING_DISABLED Handle = 0x803B001D
+ HCN_E_INVALID_IP Handle = 0x803B001E
+ HCN_E_SWITCH_EXTENSION_NOT_FOUND Handle = 0x803B001F
+ HCN_E_MANAGER_STOPPED Handle = 0x803B0020
+ GCN_E_MODULE_NOT_FOUND Handle = 0x803B0021
+ GCN_E_NO_REQUEST_HANDLERS Handle = 0x803B0022
+ GCN_E_REQUEST_UNSUPPORTED Handle = 0x803B0023
+ GCN_E_RUNTIMEKEYS_FAILED Handle = 0x803B0024
+ GCN_E_NETADAPTER_TIMEOUT Handle = 0x803B0025
+ GCN_E_NETADAPTER_NOT_FOUND Handle = 0x803B0026
+ GCN_E_NETCOMPARTMENT_NOT_FOUND Handle = 0x803B0027
+ GCN_E_NETINTERFACE_NOT_FOUND Handle = 0x803B0028
+ GCN_E_DEFAULTNAMESPACE_EXISTS Handle = 0x803B0029
+ SDIAG_E_CANCELLED syscall.Errno = 0x803C0100
+ SDIAG_E_SCRIPT syscall.Errno = 0x803C0101
+ SDIAG_E_POWERSHELL syscall.Errno = 0x803C0102
+ SDIAG_E_MANAGEDHOST syscall.Errno = 0x803C0103
+ SDIAG_E_NOVERIFIER syscall.Errno = 0x803C0104
+ SDIAG_S_CANNOTRUN syscall.Errno = 0x003C0105
+ SDIAG_E_DISABLED syscall.Errno = 0x803C0106
+ SDIAG_E_TRUST syscall.Errno = 0x803C0107
+ SDIAG_E_CANNOTRUN syscall.Errno = 0x803C0108
+ SDIAG_E_VERSION syscall.Errno = 0x803C0109
+ SDIAG_E_RESOURCE syscall.Errno = 0x803C010A
+ SDIAG_E_ROOTCAUSE syscall.Errno = 0x803C010B
+ WPN_E_CHANNEL_CLOSED Handle = 0x803E0100
+ WPN_E_CHANNEL_REQUEST_NOT_COMPLETE Handle = 0x803E0101
+ WPN_E_INVALID_APP Handle = 0x803E0102
+ WPN_E_OUTSTANDING_CHANNEL_REQUEST Handle = 0x803E0103
+ WPN_E_DUPLICATE_CHANNEL Handle = 0x803E0104
+ WPN_E_PLATFORM_UNAVAILABLE Handle = 0x803E0105
+ WPN_E_NOTIFICATION_POSTED Handle = 0x803E0106
+ WPN_E_NOTIFICATION_HIDDEN Handle = 0x803E0107
+ WPN_E_NOTIFICATION_NOT_POSTED Handle = 0x803E0108
+ WPN_E_CLOUD_DISABLED Handle = 0x803E0109
+ WPN_E_CLOUD_INCAPABLE Handle = 0x803E0110
+ WPN_E_CLOUD_AUTH_UNAVAILABLE Handle = 0x803E011A
+ WPN_E_CLOUD_SERVICE_UNAVAILABLE Handle = 0x803E011B
+ WPN_E_FAILED_LOCK_SCREEN_UPDATE_INTIALIZATION Handle = 0x803E011C
+ WPN_E_NOTIFICATION_DISABLED Handle = 0x803E0111
+ WPN_E_NOTIFICATION_INCAPABLE Handle = 0x803E0112
+ WPN_E_INTERNET_INCAPABLE Handle = 0x803E0113
+ WPN_E_NOTIFICATION_TYPE_DISABLED Handle = 0x803E0114
+ WPN_E_NOTIFICATION_SIZE Handle = 0x803E0115
+ WPN_E_TAG_SIZE Handle = 0x803E0116
+ WPN_E_ACCESS_DENIED Handle = 0x803E0117
+ WPN_E_DUPLICATE_REGISTRATION Handle = 0x803E0118
+ WPN_E_PUSH_NOTIFICATION_INCAPABLE Handle = 0x803E0119
+ WPN_E_DEV_ID_SIZE Handle = 0x803E0120
+ WPN_E_TAG_ALPHANUMERIC Handle = 0x803E012A
+ WPN_E_INVALID_HTTP_STATUS_CODE Handle = 0x803E012B
+ WPN_E_OUT_OF_SESSION Handle = 0x803E0200
+ WPN_E_POWER_SAVE Handle = 0x803E0201
+ WPN_E_IMAGE_NOT_FOUND_IN_CACHE Handle = 0x803E0202
+ WPN_E_ALL_URL_NOT_COMPLETED Handle = 0x803E0203
+ WPN_E_INVALID_CLOUD_IMAGE Handle = 0x803E0204
+ WPN_E_NOTIFICATION_ID_MATCHED Handle = 0x803E0205
+ WPN_E_CALLBACK_ALREADY_REGISTERED Handle = 0x803E0206
+ WPN_E_TOAST_NOTIFICATION_DROPPED Handle = 0x803E0207
+ WPN_E_STORAGE_LOCKED Handle = 0x803E0208
+ WPN_E_GROUP_SIZE Handle = 0x803E0209
+ WPN_E_GROUP_ALPHANUMERIC Handle = 0x803E020A
+ WPN_E_CLOUD_DISABLED_FOR_APP Handle = 0x803E020B
+ E_MBN_CONTEXT_NOT_ACTIVATED Handle = 0x80548201
+ E_MBN_BAD_SIM Handle = 0x80548202
+ E_MBN_DATA_CLASS_NOT_AVAILABLE Handle = 0x80548203
+ E_MBN_INVALID_ACCESS_STRING Handle = 0x80548204
+ E_MBN_MAX_ACTIVATED_CONTEXTS Handle = 0x80548205
+ E_MBN_PACKET_SVC_DETACHED Handle = 0x80548206
+ E_MBN_PROVIDER_NOT_VISIBLE Handle = 0x80548207
+ E_MBN_RADIO_POWER_OFF Handle = 0x80548208
+ E_MBN_SERVICE_NOT_ACTIVATED Handle = 0x80548209
+ E_MBN_SIM_NOT_INSERTED Handle = 0x8054820A
+ E_MBN_VOICE_CALL_IN_PROGRESS Handle = 0x8054820B
+ E_MBN_INVALID_CACHE Handle = 0x8054820C
+ E_MBN_NOT_REGISTERED Handle = 0x8054820D
+ E_MBN_PROVIDERS_NOT_FOUND Handle = 0x8054820E
+ E_MBN_PIN_NOT_SUPPORTED Handle = 0x8054820F
+ E_MBN_PIN_REQUIRED Handle = 0x80548210
+ E_MBN_PIN_DISABLED Handle = 0x80548211
+ E_MBN_FAILURE Handle = 0x80548212
+ E_MBN_INVALID_PROFILE Handle = 0x80548218
+ E_MBN_DEFAULT_PROFILE_EXIST Handle = 0x80548219
+ E_MBN_SMS_ENCODING_NOT_SUPPORTED Handle = 0x80548220
+ E_MBN_SMS_FILTER_NOT_SUPPORTED Handle = 0x80548221
+ E_MBN_SMS_INVALID_MEMORY_INDEX Handle = 0x80548222
+ E_MBN_SMS_LANG_NOT_SUPPORTED Handle = 0x80548223
+ E_MBN_SMS_MEMORY_FAILURE Handle = 0x80548224
+ E_MBN_SMS_NETWORK_TIMEOUT Handle = 0x80548225
+ E_MBN_SMS_UNKNOWN_SMSC_ADDRESS Handle = 0x80548226
+ E_MBN_SMS_FORMAT_NOT_SUPPORTED Handle = 0x80548227
+ E_MBN_SMS_OPERATION_NOT_ALLOWED Handle = 0x80548228
+ E_MBN_SMS_MEMORY_FULL Handle = 0x80548229
+ PEER_E_IPV6_NOT_INSTALLED Handle = 0x80630001
+ PEER_E_NOT_INITIALIZED Handle = 0x80630002
+ PEER_E_CANNOT_START_SERVICE Handle = 0x80630003
+ PEER_E_NOT_LICENSED Handle = 0x80630004
+ PEER_E_INVALID_GRAPH Handle = 0x80630010
+ PEER_E_DBNAME_CHANGED Handle = 0x80630011
+ PEER_E_DUPLICATE_GRAPH Handle = 0x80630012
+ PEER_E_GRAPH_NOT_READY Handle = 0x80630013
+ PEER_E_GRAPH_SHUTTING_DOWN Handle = 0x80630014
+ PEER_E_GRAPH_IN_USE Handle = 0x80630015
+ PEER_E_INVALID_DATABASE Handle = 0x80630016
+ PEER_E_TOO_MANY_ATTRIBUTES Handle = 0x80630017
+ PEER_E_CONNECTION_NOT_FOUND Handle = 0x80630103
+ PEER_E_CONNECT_SELF Handle = 0x80630106
+ PEER_E_ALREADY_LISTENING Handle = 0x80630107
+ PEER_E_NODE_NOT_FOUND Handle = 0x80630108
+ PEER_E_CONNECTION_FAILED Handle = 0x80630109
+ PEER_E_CONNECTION_NOT_AUTHENTICATED Handle = 0x8063010A
+ PEER_E_CONNECTION_REFUSED Handle = 0x8063010B
+ PEER_E_CLASSIFIER_TOO_LONG Handle = 0x80630201
+ PEER_E_TOO_MANY_IDENTITIES Handle = 0x80630202
+ PEER_E_NO_KEY_ACCESS Handle = 0x80630203
+ PEER_E_GROUPS_EXIST Handle = 0x80630204
+ PEER_E_RECORD_NOT_FOUND Handle = 0x80630301
+ PEER_E_DATABASE_ACCESSDENIED Handle = 0x80630302
+ PEER_E_DBINITIALIZATION_FAILED Handle = 0x80630303
+ PEER_E_MAX_RECORD_SIZE_EXCEEDED Handle = 0x80630304
+ PEER_E_DATABASE_ALREADY_PRESENT Handle = 0x80630305
+ PEER_E_DATABASE_NOT_PRESENT Handle = 0x80630306
+ PEER_E_IDENTITY_NOT_FOUND Handle = 0x80630401
+ PEER_E_EVENT_HANDLE_NOT_FOUND Handle = 0x80630501
+ PEER_E_INVALID_SEARCH Handle = 0x80630601
+ PEER_E_INVALID_ATTRIBUTES Handle = 0x80630602
+ PEER_E_INVITATION_NOT_TRUSTED Handle = 0x80630701
+ PEER_E_CHAIN_TOO_LONG Handle = 0x80630703
+ PEER_E_INVALID_TIME_PERIOD Handle = 0x80630705
+ PEER_E_CIRCULAR_CHAIN_DETECTED Handle = 0x80630706
+ PEER_E_CERT_STORE_CORRUPTED Handle = 0x80630801
+ PEER_E_NO_CLOUD Handle = 0x80631001
+ PEER_E_CLOUD_NAME_AMBIGUOUS Handle = 0x80631005
+ PEER_E_INVALID_RECORD Handle = 0x80632010
+ PEER_E_NOT_AUTHORIZED Handle = 0x80632020
+ PEER_E_PASSWORD_DOES_NOT_MEET_POLICY Handle = 0x80632021
+ PEER_E_DEFERRED_VALIDATION Handle = 0x80632030
+ PEER_E_INVALID_GROUP_PROPERTIES Handle = 0x80632040
+ PEER_E_INVALID_PEER_NAME Handle = 0x80632050
+ PEER_E_INVALID_CLASSIFIER Handle = 0x80632060
+ PEER_E_INVALID_FRIENDLY_NAME Handle = 0x80632070
+ PEER_E_INVALID_ROLE_PROPERTY Handle = 0x80632071
+ PEER_E_INVALID_CLASSIFIER_PROPERTY Handle = 0x80632072
+ PEER_E_INVALID_RECORD_EXPIRATION Handle = 0x80632080
+ PEER_E_INVALID_CREDENTIAL_INFO Handle = 0x80632081
+ PEER_E_INVALID_CREDENTIAL Handle = 0x80632082
+ PEER_E_INVALID_RECORD_SIZE Handle = 0x80632083
+ PEER_E_UNSUPPORTED_VERSION Handle = 0x80632090
+ PEER_E_GROUP_NOT_READY Handle = 0x80632091
+ PEER_E_GROUP_IN_USE Handle = 0x80632092
+ PEER_E_INVALID_GROUP Handle = 0x80632093
+ PEER_E_NO_MEMBERS_FOUND Handle = 0x80632094
+ PEER_E_NO_MEMBER_CONNECTIONS Handle = 0x80632095
+ PEER_E_UNABLE_TO_LISTEN Handle = 0x80632096
+ PEER_E_IDENTITY_DELETED Handle = 0x806320A0
+ PEER_E_SERVICE_NOT_AVAILABLE Handle = 0x806320A1
+ PEER_E_CONTACT_NOT_FOUND Handle = 0x80636001
+ PEER_S_GRAPH_DATA_CREATED Handle = 0x00630001
+ PEER_S_NO_EVENT_DATA Handle = 0x00630002
+ PEER_S_ALREADY_CONNECTED Handle = 0x00632000
+ PEER_S_SUBSCRIPTION_EXISTS Handle = 0x00636000
+ PEER_S_NO_CONNECTIVITY Handle = 0x00630005
+ PEER_S_ALREADY_A_MEMBER Handle = 0x00630006
+ PEER_E_CANNOT_CONVERT_PEER_NAME Handle = 0x80634001
+ PEER_E_INVALID_PEER_HOST_NAME Handle = 0x80634002
+ PEER_E_NO_MORE Handle = 0x80634003
+ PEER_E_PNRP_DUPLICATE_PEER_NAME Handle = 0x80634005
+ PEER_E_INVITE_CANCELLED Handle = 0x80637000
+ PEER_E_INVITE_RESPONSE_NOT_AVAILABLE Handle = 0x80637001
+ PEER_E_NOT_SIGNED_IN Handle = 0x80637003
+ PEER_E_PRIVACY_DECLINED Handle = 0x80637004
+ PEER_E_TIMEOUT Handle = 0x80637005
+ PEER_E_INVALID_ADDRESS Handle = 0x80637007
+ PEER_E_FW_EXCEPTION_DISABLED Handle = 0x80637008
+ PEER_E_FW_BLOCKED_BY_POLICY Handle = 0x80637009
+ PEER_E_FW_BLOCKED_BY_SHIELDS_UP Handle = 0x8063700A
+ PEER_E_FW_DECLINED Handle = 0x8063700B
+ UI_E_CREATE_FAILED Handle = 0x802A0001
+ UI_E_SHUTDOWN_CALLED Handle = 0x802A0002
+ UI_E_ILLEGAL_REENTRANCY Handle = 0x802A0003
+ UI_E_OBJECT_SEALED Handle = 0x802A0004
+ UI_E_VALUE_NOT_SET Handle = 0x802A0005
+ UI_E_VALUE_NOT_DETERMINED Handle = 0x802A0006
+ UI_E_INVALID_OUTPUT Handle = 0x802A0007
+ UI_E_BOOLEAN_EXPECTED Handle = 0x802A0008
+ UI_E_DIFFERENT_OWNER Handle = 0x802A0009
+ UI_E_AMBIGUOUS_MATCH Handle = 0x802A000A
+ UI_E_FP_OVERFLOW Handle = 0x802A000B
+ UI_E_WRONG_THREAD Handle = 0x802A000C
+ UI_E_STORYBOARD_ACTIVE Handle = 0x802A0101
+ UI_E_STORYBOARD_NOT_PLAYING Handle = 0x802A0102
+ UI_E_START_KEYFRAME_AFTER_END Handle = 0x802A0103
+ UI_E_END_KEYFRAME_NOT_DETERMINED Handle = 0x802A0104
+ UI_E_LOOPS_OVERLAP Handle = 0x802A0105
+ UI_E_TRANSITION_ALREADY_USED Handle = 0x802A0106
+ UI_E_TRANSITION_NOT_IN_STORYBOARD Handle = 0x802A0107
+ UI_E_TRANSITION_ECLIPSED Handle = 0x802A0108
+ UI_E_TIME_BEFORE_LAST_UPDATE Handle = 0x802A0109
+ UI_E_TIMER_CLIENT_ALREADY_CONNECTED Handle = 0x802A010A
+ UI_E_INVALID_DIMENSION Handle = 0x802A010B
+ UI_E_PRIMITIVE_OUT_OF_BOUNDS Handle = 0x802A010C
+ UI_E_WINDOW_CLOSED Handle = 0x802A0201
+ E_BLUETOOTH_ATT_INVALID_HANDLE Handle = 0x80650001
+ E_BLUETOOTH_ATT_READ_NOT_PERMITTED Handle = 0x80650002
+ E_BLUETOOTH_ATT_WRITE_NOT_PERMITTED Handle = 0x80650003
+ E_BLUETOOTH_ATT_INVALID_PDU Handle = 0x80650004
+ E_BLUETOOTH_ATT_INSUFFICIENT_AUTHENTICATION Handle = 0x80650005
+ E_BLUETOOTH_ATT_REQUEST_NOT_SUPPORTED Handle = 0x80650006
+ E_BLUETOOTH_ATT_INVALID_OFFSET Handle = 0x80650007
+ E_BLUETOOTH_ATT_INSUFFICIENT_AUTHORIZATION Handle = 0x80650008
+ E_BLUETOOTH_ATT_PREPARE_QUEUE_FULL Handle = 0x80650009
+ E_BLUETOOTH_ATT_ATTRIBUTE_NOT_FOUND Handle = 0x8065000A
+ E_BLUETOOTH_ATT_ATTRIBUTE_NOT_LONG Handle = 0x8065000B
+ E_BLUETOOTH_ATT_INSUFFICIENT_ENCRYPTION_KEY_SIZE Handle = 0x8065000C
+ E_BLUETOOTH_ATT_INVALID_ATTRIBUTE_VALUE_LENGTH Handle = 0x8065000D
+ E_BLUETOOTH_ATT_UNLIKELY Handle = 0x8065000E
+ E_BLUETOOTH_ATT_INSUFFICIENT_ENCRYPTION Handle = 0x8065000F
+ E_BLUETOOTH_ATT_UNSUPPORTED_GROUP_TYPE Handle = 0x80650010
+ E_BLUETOOTH_ATT_INSUFFICIENT_RESOURCES Handle = 0x80650011
+ E_BLUETOOTH_ATT_UNKNOWN_ERROR Handle = 0x80651000
+ E_AUDIO_ENGINE_NODE_NOT_FOUND Handle = 0x80660001
+ E_HDAUDIO_EMPTY_CONNECTION_LIST Handle = 0x80660002
+ E_HDAUDIO_CONNECTION_LIST_NOT_SUPPORTED Handle = 0x80660003
+ E_HDAUDIO_NO_LOGICAL_DEVICES_CREATED Handle = 0x80660004
+ E_HDAUDIO_NULL_LINKED_LIST_ENTRY Handle = 0x80660005
+ STATEREPOSITORY_E_CONCURRENCY_LOCKING_FAILURE Handle = 0x80670001
+ STATEREPOSITORY_E_STATEMENT_INPROGRESS Handle = 0x80670002
+ STATEREPOSITORY_E_CONFIGURATION_INVALID Handle = 0x80670003
+ STATEREPOSITORY_E_UNKNOWN_SCHEMA_VERSION Handle = 0x80670004
+ STATEREPOSITORY_ERROR_DICTIONARY_CORRUPTED Handle = 0x80670005
+ STATEREPOSITORY_E_BLOCKED Handle = 0x80670006
+ STATEREPOSITORY_E_BUSY_RETRY Handle = 0x80670007
+ STATEREPOSITORY_E_BUSY_RECOVERY_RETRY Handle = 0x80670008
+ STATEREPOSITORY_E_LOCKED_RETRY Handle = 0x80670009
+ STATEREPOSITORY_E_LOCKED_SHAREDCACHE_RETRY Handle = 0x8067000A
+ STATEREPOSITORY_E_TRANSACTION_REQUIRED Handle = 0x8067000B
+ STATEREPOSITORY_E_BUSY_TIMEOUT_EXCEEDED Handle = 0x8067000C
+ STATEREPOSITORY_E_BUSY_RECOVERY_TIMEOUT_EXCEEDED Handle = 0x8067000D
+ STATEREPOSITORY_E_LOCKED_TIMEOUT_EXCEEDED Handle = 0x8067000E
+ STATEREPOSITORY_E_LOCKED_SHAREDCACHE_TIMEOUT_EXCEEDED Handle = 0x8067000F
+ STATEREPOSITORY_E_SERVICE_STOP_IN_PROGRESS Handle = 0x80670010
+ STATEREPOSTORY_E_NESTED_TRANSACTION_NOT_SUPPORTED Handle = 0x80670011
+ STATEREPOSITORY_ERROR_CACHE_CORRUPTED Handle = 0x80670012
+ STATEREPOSITORY_TRANSACTION_CALLER_ID_CHANGED Handle = 0x00670013
+ STATEREPOSITORY_TRANSACTION_IN_PROGRESS Handle = 0x00670014
+ ERROR_SPACES_POOL_WAS_DELETED Handle = 0x00E70001
+ ERROR_SPACES_FAULT_DOMAIN_TYPE_INVALID Handle = 0x80E70001
+ ERROR_SPACES_INTERNAL_ERROR Handle = 0x80E70002
+ ERROR_SPACES_RESILIENCY_TYPE_INVALID Handle = 0x80E70003
+ ERROR_SPACES_DRIVE_SECTOR_SIZE_INVALID Handle = 0x80E70004
+ ERROR_SPACES_DRIVE_REDUNDANCY_INVALID Handle = 0x80E70006
+ ERROR_SPACES_NUMBER_OF_DATA_COPIES_INVALID Handle = 0x80E70007
+ ERROR_SPACES_PARITY_LAYOUT_INVALID Handle = 0x80E70008
+ ERROR_SPACES_INTERLEAVE_LENGTH_INVALID Handle = 0x80E70009
+ ERROR_SPACES_NUMBER_OF_COLUMNS_INVALID Handle = 0x80E7000A
+ ERROR_SPACES_NOT_ENOUGH_DRIVES Handle = 0x80E7000B
+ ERROR_SPACES_EXTENDED_ERROR Handle = 0x80E7000C
+ ERROR_SPACES_PROVISIONING_TYPE_INVALID Handle = 0x80E7000D
+ ERROR_SPACES_ALLOCATION_SIZE_INVALID Handle = 0x80E7000E
+ ERROR_SPACES_ENCLOSURE_AWARE_INVALID Handle = 0x80E7000F
+ ERROR_SPACES_WRITE_CACHE_SIZE_INVALID Handle = 0x80E70010
+ ERROR_SPACES_NUMBER_OF_GROUPS_INVALID Handle = 0x80E70011
+ ERROR_SPACES_DRIVE_OPERATIONAL_STATE_INVALID Handle = 0x80E70012
+ ERROR_SPACES_ENTRY_INCOMPLETE Handle = 0x80E70013
+ ERROR_SPACES_ENTRY_INVALID Handle = 0x80E70014
+ ERROR_VOLSNAP_BOOTFILE_NOT_VALID Handle = 0x80820001
+ ERROR_VOLSNAP_ACTIVATION_TIMEOUT Handle = 0x80820002
+ ERROR_TIERING_NOT_SUPPORTED_ON_VOLUME Handle = 0x80830001
+ ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS Handle = 0x80830002
+ ERROR_TIERING_STORAGE_TIER_NOT_FOUND Handle = 0x80830003
+ ERROR_TIERING_INVALID_FILE_ID Handle = 0x80830004
+ ERROR_TIERING_WRONG_CLUSTER_NODE Handle = 0x80830005
+ ERROR_TIERING_ALREADY_PROCESSING Handle = 0x80830006
+ ERROR_TIERING_CANNOT_PIN_OBJECT Handle = 0x80830007
+ ERROR_TIERING_FILE_IS_NOT_PINNED Handle = 0x80830008
+ ERROR_NOT_A_TIERED_VOLUME Handle = 0x80830009
+ ERROR_ATTRIBUTE_NOT_PRESENT Handle = 0x8083000A
+ ERROR_SECCORE_INVALID_COMMAND Handle = 0xC0E80000
+ ERROR_NO_APPLICABLE_APP_LICENSES_FOUND Handle = 0xC0EA0001
+ ERROR_CLIP_LICENSE_NOT_FOUND Handle = 0xC0EA0002
+ ERROR_CLIP_DEVICE_LICENSE_MISSING Handle = 0xC0EA0003
+ ERROR_CLIP_LICENSE_INVALID_SIGNATURE Handle = 0xC0EA0004
+ ERROR_CLIP_KEYHOLDER_LICENSE_MISSING_OR_INVALID Handle = 0xC0EA0005
+ ERROR_CLIP_LICENSE_EXPIRED Handle = 0xC0EA0006
+ ERROR_CLIP_LICENSE_SIGNED_BY_UNKNOWN_SOURCE Handle = 0xC0EA0007
+ ERROR_CLIP_LICENSE_NOT_SIGNED Handle = 0xC0EA0008
+ ERROR_CLIP_LICENSE_HARDWARE_ID_OUT_OF_TOLERANCE Handle = 0xC0EA0009
+ ERROR_CLIP_LICENSE_DEVICE_ID_MISMATCH Handle = 0xC0EA000A
+ DXGI_STATUS_OCCLUDED Handle = 0x087A0001
+ DXGI_STATUS_CLIPPED Handle = 0x087A0002
+ DXGI_STATUS_NO_REDIRECTION Handle = 0x087A0004
+ DXGI_STATUS_NO_DESKTOP_ACCESS Handle = 0x087A0005
+ DXGI_STATUS_GRAPHICS_VIDPN_SOURCE_IN_USE Handle = 0x087A0006
+ DXGI_STATUS_MODE_CHANGED Handle = 0x087A0007
+ DXGI_STATUS_MODE_CHANGE_IN_PROGRESS Handle = 0x087A0008
+ DXGI_ERROR_INVALID_CALL Handle = 0x887A0001
+ DXGI_ERROR_NOT_FOUND Handle = 0x887A0002
+ DXGI_ERROR_MORE_DATA Handle = 0x887A0003
+ DXGI_ERROR_UNSUPPORTED Handle = 0x887A0004
+ DXGI_ERROR_DEVICE_REMOVED Handle = 0x887A0005
+ DXGI_ERROR_DEVICE_HUNG Handle = 0x887A0006
+ DXGI_ERROR_DEVICE_RESET Handle = 0x887A0007
+ DXGI_ERROR_WAS_STILL_DRAWING Handle = 0x887A000A
+ DXGI_ERROR_FRAME_STATISTICS_DISJOINT Handle = 0x887A000B
+ DXGI_ERROR_GRAPHICS_VIDPN_SOURCE_IN_USE Handle = 0x887A000C
+ DXGI_ERROR_DRIVER_INTERNAL_ERROR Handle = 0x887A0020
+ DXGI_ERROR_NONEXCLUSIVE Handle = 0x887A0021
+ DXGI_ERROR_NOT_CURRENTLY_AVAILABLE Handle = 0x887A0022
+ DXGI_ERROR_REMOTE_CLIENT_DISCONNECTED Handle = 0x887A0023
+ DXGI_ERROR_REMOTE_OUTOFMEMORY Handle = 0x887A0024
+ DXGI_ERROR_ACCESS_LOST Handle = 0x887A0026
+ DXGI_ERROR_WAIT_TIMEOUT Handle = 0x887A0027
+ DXGI_ERROR_SESSION_DISCONNECTED Handle = 0x887A0028
+ DXGI_ERROR_RESTRICT_TO_OUTPUT_STALE Handle = 0x887A0029
+ DXGI_ERROR_CANNOT_PROTECT_CONTENT Handle = 0x887A002A
+ DXGI_ERROR_ACCESS_DENIED Handle = 0x887A002B
+ DXGI_ERROR_NAME_ALREADY_EXISTS Handle = 0x887A002C
+ DXGI_ERROR_SDK_COMPONENT_MISSING Handle = 0x887A002D
+ DXGI_ERROR_NOT_CURRENT Handle = 0x887A002E
+ DXGI_ERROR_HW_PROTECTION_OUTOFMEMORY Handle = 0x887A0030
+ DXGI_ERROR_DYNAMIC_CODE_POLICY_VIOLATION Handle = 0x887A0031
+ DXGI_ERROR_NON_COMPOSITED_UI Handle = 0x887A0032
+ DXGI_STATUS_UNOCCLUDED Handle = 0x087A0009
+ DXGI_STATUS_DDA_WAS_STILL_DRAWING Handle = 0x087A000A
+ DXGI_ERROR_MODE_CHANGE_IN_PROGRESS Handle = 0x887A0025
+ DXGI_STATUS_PRESENT_REQUIRED Handle = 0x087A002F
+ DXGI_ERROR_CACHE_CORRUPT Handle = 0x887A0033
+ DXGI_ERROR_CACHE_FULL Handle = 0x887A0034
+ DXGI_ERROR_CACHE_HASH_COLLISION Handle = 0x887A0035
+ DXGI_ERROR_ALREADY_EXISTS Handle = 0x887A0036
+ DXGI_DDI_ERR_WASSTILLDRAWING Handle = 0x887B0001
+ DXGI_DDI_ERR_UNSUPPORTED Handle = 0x887B0002
+ DXGI_DDI_ERR_NONEXCLUSIVE Handle = 0x887B0003
+ D3D10_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS Handle = 0x88790001
+ D3D10_ERROR_FILE_NOT_FOUND Handle = 0x88790002
+ D3D11_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS Handle = 0x887C0001
+ D3D11_ERROR_FILE_NOT_FOUND Handle = 0x887C0002
+ D3D11_ERROR_TOO_MANY_UNIQUE_VIEW_OBJECTS Handle = 0x887C0003
+ D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD Handle = 0x887C0004
+ D3D12_ERROR_ADAPTER_NOT_FOUND Handle = 0x887E0001
+ D3D12_ERROR_DRIVER_VERSION_MISMATCH Handle = 0x887E0002
+ D2DERR_WRONG_STATE Handle = 0x88990001
+ D2DERR_NOT_INITIALIZED Handle = 0x88990002
+ D2DERR_UNSUPPORTED_OPERATION Handle = 0x88990003
+ D2DERR_SCANNER_FAILED Handle = 0x88990004
+ D2DERR_SCREEN_ACCESS_DENIED Handle = 0x88990005
+ D2DERR_DISPLAY_STATE_INVALID Handle = 0x88990006
+ D2DERR_ZERO_VECTOR Handle = 0x88990007
+ D2DERR_INTERNAL_ERROR Handle = 0x88990008
+ D2DERR_DISPLAY_FORMAT_NOT_SUPPORTED Handle = 0x88990009
+ D2DERR_INVALID_CALL Handle = 0x8899000A
+ D2DERR_NO_HARDWARE_DEVICE Handle = 0x8899000B
+ D2DERR_RECREATE_TARGET Handle = 0x8899000C
+ D2DERR_TOO_MANY_SHADER_ELEMENTS Handle = 0x8899000D
+ D2DERR_SHADER_COMPILE_FAILED Handle = 0x8899000E
+ D2DERR_MAX_TEXTURE_SIZE_EXCEEDED Handle = 0x8899000F
+ D2DERR_UNSUPPORTED_VERSION Handle = 0x88990010
+ D2DERR_BAD_NUMBER Handle = 0x88990011
+ D2DERR_WRONG_FACTORY Handle = 0x88990012
+ D2DERR_LAYER_ALREADY_IN_USE Handle = 0x88990013
+ D2DERR_POP_CALL_DID_NOT_MATCH_PUSH Handle = 0x88990014
+ D2DERR_WRONG_RESOURCE_DOMAIN Handle = 0x88990015
+ D2DERR_PUSH_POP_UNBALANCED Handle = 0x88990016
+ D2DERR_RENDER_TARGET_HAS_LAYER_OR_CLIPRECT Handle = 0x88990017
+ D2DERR_INCOMPATIBLE_BRUSH_TYPES Handle = 0x88990018
+ D2DERR_WIN32_ERROR Handle = 0x88990019
+ D2DERR_TARGET_NOT_GDI_COMPATIBLE Handle = 0x8899001A
+ D2DERR_TEXT_EFFECT_IS_WRONG_TYPE Handle = 0x8899001B
+ D2DERR_TEXT_RENDERER_NOT_RELEASED Handle = 0x8899001C
+ D2DERR_EXCEEDS_MAX_BITMAP_SIZE Handle = 0x8899001D
+ D2DERR_INVALID_GRAPH_CONFIGURATION Handle = 0x8899001E
+ D2DERR_INVALID_INTERNAL_GRAPH_CONFIGURATION Handle = 0x8899001F
+ D2DERR_CYCLIC_GRAPH Handle = 0x88990020
+ D2DERR_BITMAP_CANNOT_DRAW Handle = 0x88990021
+ D2DERR_OUTSTANDING_BITMAP_REFERENCES Handle = 0x88990022
+ D2DERR_ORIGINAL_TARGET_NOT_BOUND Handle = 0x88990023
+ D2DERR_INVALID_TARGET Handle = 0x88990024
+ D2DERR_BITMAP_BOUND_AS_TARGET Handle = 0x88990025
+ D2DERR_INSUFFICIENT_DEVICE_CAPABILITIES Handle = 0x88990026
+ D2DERR_INTERMEDIATE_TOO_LARGE Handle = 0x88990027
+ D2DERR_EFFECT_IS_NOT_REGISTERED Handle = 0x88990028
+ D2DERR_INVALID_PROPERTY Handle = 0x88990029
+ D2DERR_NO_SUBPROPERTIES Handle = 0x8899002A
+ D2DERR_PRINT_JOB_CLOSED Handle = 0x8899002B
+ D2DERR_PRINT_FORMAT_NOT_SUPPORTED Handle = 0x8899002C
+ D2DERR_TOO_MANY_TRANSFORM_INPUTS Handle = 0x8899002D
+ D2DERR_INVALID_GLYPH_IMAGE Handle = 0x8899002E
+ DWRITE_E_FILEFORMAT Handle = 0x88985000
+ DWRITE_E_UNEXPECTED Handle = 0x88985001
+ DWRITE_E_NOFONT Handle = 0x88985002
+ DWRITE_E_FILENOTFOUND Handle = 0x88985003
+ DWRITE_E_FILEACCESS Handle = 0x88985004
+ DWRITE_E_FONTCOLLECTIONOBSOLETE Handle = 0x88985005
+ DWRITE_E_ALREADYREGISTERED Handle = 0x88985006
+ DWRITE_E_CACHEFORMAT Handle = 0x88985007
+ DWRITE_E_CACHEVERSION Handle = 0x88985008
+ DWRITE_E_UNSUPPORTEDOPERATION Handle = 0x88985009
+ DWRITE_E_TEXTRENDERERINCOMPATIBLE Handle = 0x8898500A
+ DWRITE_E_FLOWDIRECTIONCONFLICTS Handle = 0x8898500B
+ DWRITE_E_NOCOLOR Handle = 0x8898500C
+ DWRITE_E_REMOTEFONT Handle = 0x8898500D
+ DWRITE_E_DOWNLOADCANCELLED Handle = 0x8898500E
+ DWRITE_E_DOWNLOADFAILED Handle = 0x8898500F
+ DWRITE_E_TOOMANYDOWNLOADS Handle = 0x88985010
+ WINCODEC_ERR_WRONGSTATE Handle = 0x88982F04
+ WINCODEC_ERR_VALUEOUTOFRANGE Handle = 0x88982F05
+ WINCODEC_ERR_UNKNOWNIMAGEFORMAT Handle = 0x88982F07
+ WINCODEC_ERR_UNSUPPORTEDVERSION Handle = 0x88982F0B
+ WINCODEC_ERR_NOTINITIALIZED Handle = 0x88982F0C
+ WINCODEC_ERR_ALREADYLOCKED Handle = 0x88982F0D
+ WINCODEC_ERR_PROPERTYNOTFOUND Handle = 0x88982F40
+ WINCODEC_ERR_PROPERTYNOTSUPPORTED Handle = 0x88982F41
+ WINCODEC_ERR_PROPERTYSIZE Handle = 0x88982F42
+ WINCODEC_ERR_CODECPRESENT Handle = 0x88982F43
+ WINCODEC_ERR_CODECNOTHUMBNAIL Handle = 0x88982F44
+ WINCODEC_ERR_PALETTEUNAVAILABLE Handle = 0x88982F45
+ WINCODEC_ERR_CODECTOOMANYSCANLINES Handle = 0x88982F46
+ WINCODEC_ERR_INTERNALERROR Handle = 0x88982F48
+ WINCODEC_ERR_SOURCERECTDOESNOTMATCHDIMENSIONS Handle = 0x88982F49
+ WINCODEC_ERR_COMPONENTNOTFOUND Handle = 0x88982F50
+ WINCODEC_ERR_IMAGESIZEOUTOFRANGE Handle = 0x88982F51
+ WINCODEC_ERR_TOOMUCHMETADATA Handle = 0x88982F52
+ WINCODEC_ERR_BADIMAGE Handle = 0x88982F60
+ WINCODEC_ERR_BADHEADER Handle = 0x88982F61
+ WINCODEC_ERR_FRAMEMISSING Handle = 0x88982F62
+ WINCODEC_ERR_BADMETADATAHEADER Handle = 0x88982F63
+ WINCODEC_ERR_BADSTREAMDATA Handle = 0x88982F70
+ WINCODEC_ERR_STREAMWRITE Handle = 0x88982F71
+ WINCODEC_ERR_STREAMREAD Handle = 0x88982F72
+ WINCODEC_ERR_STREAMNOTAVAILABLE Handle = 0x88982F73
+ WINCODEC_ERR_UNSUPPORTEDPIXELFORMAT Handle = 0x88982F80
+ WINCODEC_ERR_UNSUPPORTEDOPERATION Handle = 0x88982F81
+ WINCODEC_ERR_INVALIDREGISTRATION Handle = 0x88982F8A
+ WINCODEC_ERR_COMPONENTINITIALIZEFAILURE Handle = 0x88982F8B
+ WINCODEC_ERR_INSUFFICIENTBUFFER Handle = 0x88982F8C
+ WINCODEC_ERR_DUPLICATEMETADATAPRESENT Handle = 0x88982F8D
+ WINCODEC_ERR_PROPERTYUNEXPECTEDTYPE Handle = 0x88982F8E
+ WINCODEC_ERR_UNEXPECTEDSIZE Handle = 0x88982F8F
+ WINCODEC_ERR_INVALIDQUERYREQUEST Handle = 0x88982F90
+ WINCODEC_ERR_UNEXPECTEDMETADATATYPE Handle = 0x88982F91
+ WINCODEC_ERR_REQUESTONLYVALIDATMETADATAROOT Handle = 0x88982F92
+ WINCODEC_ERR_INVALIDQUERYCHARACTER Handle = 0x88982F93
+ WINCODEC_ERR_WIN32ERROR Handle = 0x88982F94
+ WINCODEC_ERR_INVALIDPROGRESSIVELEVEL Handle = 0x88982F95
+ WINCODEC_ERR_INVALIDJPEGSCANINDEX Handle = 0x88982F96
+ MILERR_OBJECTBUSY Handle = 0x88980001
+ MILERR_INSUFFICIENTBUFFER Handle = 0x88980002
+ MILERR_WIN32ERROR Handle = 0x88980003
+ MILERR_SCANNER_FAILED Handle = 0x88980004
+ MILERR_SCREENACCESSDENIED Handle = 0x88980005
+ MILERR_DISPLAYSTATEINVALID Handle = 0x88980006
+ MILERR_NONINVERTIBLEMATRIX Handle = 0x88980007
+ MILERR_ZEROVECTOR Handle = 0x88980008
+ MILERR_TERMINATED Handle = 0x88980009
+ MILERR_BADNUMBER Handle = 0x8898000A
+ MILERR_INTERNALERROR Handle = 0x88980080
+ MILERR_DISPLAYFORMATNOTSUPPORTED Handle = 0x88980084
+ MILERR_INVALIDCALL Handle = 0x88980085
+ MILERR_ALREADYLOCKED Handle = 0x88980086
+ MILERR_NOTLOCKED Handle = 0x88980087
+ MILERR_DEVICECANNOTRENDERTEXT Handle = 0x88980088
+ MILERR_GLYPHBITMAPMISSED Handle = 0x88980089
+ MILERR_MALFORMEDGLYPHCACHE Handle = 0x8898008A
+ MILERR_GENERIC_IGNORE Handle = 0x8898008B
+ MILERR_MALFORMED_GUIDELINE_DATA Handle = 0x8898008C
+ MILERR_NO_HARDWARE_DEVICE Handle = 0x8898008D
+ MILERR_NEED_RECREATE_AND_PRESENT Handle = 0x8898008E
+ MILERR_ALREADY_INITIALIZED Handle = 0x8898008F
+ MILERR_MISMATCHED_SIZE Handle = 0x88980090
+ MILERR_NO_REDIRECTION_SURFACE_AVAILABLE Handle = 0x88980091
+ MILERR_REMOTING_NOT_SUPPORTED Handle = 0x88980092
+ MILERR_QUEUED_PRESENT_NOT_SUPPORTED Handle = 0x88980093
+ MILERR_NOT_QUEUING_PRESENTS Handle = 0x88980094
+ MILERR_NO_REDIRECTION_SURFACE_RETRY_LATER Handle = 0x88980095
+ MILERR_TOOMANYSHADERELEMNTS Handle = 0x88980096
+ MILERR_MROW_READLOCK_FAILED Handle = 0x88980097
+ MILERR_MROW_UPDATE_FAILED Handle = 0x88980098
+ MILERR_SHADER_COMPILE_FAILED Handle = 0x88980099
+ MILERR_MAX_TEXTURE_SIZE_EXCEEDED Handle = 0x8898009A
+ MILERR_QPC_TIME_WENT_BACKWARD Handle = 0x8898009B
+ MILERR_DXGI_ENUMERATION_OUT_OF_SYNC Handle = 0x8898009D
+ MILERR_ADAPTER_NOT_FOUND Handle = 0x8898009E
+ MILERR_COLORSPACE_NOT_SUPPORTED Handle = 0x8898009F
+ MILERR_PREFILTER_NOT_SUPPORTED Handle = 0x889800A0
+ MILERR_DISPLAYID_ACCESS_DENIED Handle = 0x889800A1
+ UCEERR_INVALIDPACKETHEADER Handle = 0x88980400
+ UCEERR_UNKNOWNPACKET Handle = 0x88980401
+ UCEERR_ILLEGALPACKET Handle = 0x88980402
+ UCEERR_MALFORMEDPACKET Handle = 0x88980403
+ UCEERR_ILLEGALHANDLE Handle = 0x88980404
+ UCEERR_HANDLELOOKUPFAILED Handle = 0x88980405
+ UCEERR_RENDERTHREADFAILURE Handle = 0x88980406
+ UCEERR_CTXSTACKFRSTTARGETNULL Handle = 0x88980407
+ UCEERR_CONNECTIONIDLOOKUPFAILED Handle = 0x88980408
+ UCEERR_BLOCKSFULL Handle = 0x88980409
+ UCEERR_MEMORYFAILURE Handle = 0x8898040A
+ UCEERR_PACKETRECORDOUTOFRANGE Handle = 0x8898040B
+ UCEERR_ILLEGALRECORDTYPE Handle = 0x8898040C
+ UCEERR_OUTOFHANDLES Handle = 0x8898040D
+ UCEERR_UNCHANGABLE_UPDATE_ATTEMPTED Handle = 0x8898040E
+ UCEERR_NO_MULTIPLE_WORKER_THREADS Handle = 0x8898040F
+ UCEERR_REMOTINGNOTSUPPORTED Handle = 0x88980410
+ UCEERR_MISSINGENDCOMMAND Handle = 0x88980411
+ UCEERR_MISSINGBEGINCOMMAND Handle = 0x88980412
+ UCEERR_CHANNELSYNCTIMEDOUT Handle = 0x88980413
+ UCEERR_CHANNELSYNCABANDONED Handle = 0x88980414
+ UCEERR_UNSUPPORTEDTRANSPORTVERSION Handle = 0x88980415
+ UCEERR_TRANSPORTUNAVAILABLE Handle = 0x88980416
+ UCEERR_FEEDBACK_UNSUPPORTED Handle = 0x88980417
+ UCEERR_COMMANDTRANSPORTDENIED Handle = 0x88980418
+ UCEERR_GRAPHICSSTREAMUNAVAILABLE Handle = 0x88980419
+ UCEERR_GRAPHICSSTREAMALREADYOPEN Handle = 0x88980420
+ UCEERR_TRANSPORTDISCONNECTED Handle = 0x88980421
+ UCEERR_TRANSPORTOVERLOADED Handle = 0x88980422
+ UCEERR_PARTITION_ZOMBIED Handle = 0x88980423
+ MILAVERR_NOCLOCK Handle = 0x88980500
+ MILAVERR_NOMEDIATYPE Handle = 0x88980501
+ MILAVERR_NOVIDEOMIXER Handle = 0x88980502
+ MILAVERR_NOVIDEOPRESENTER Handle = 0x88980503
+ MILAVERR_NOREADYFRAMES Handle = 0x88980504
+ MILAVERR_MODULENOTLOADED Handle = 0x88980505
+ MILAVERR_WMPFACTORYNOTREGISTERED Handle = 0x88980506
+ MILAVERR_INVALIDWMPVERSION Handle = 0x88980507
+ MILAVERR_INSUFFICIENTVIDEORESOURCES Handle = 0x88980508
+ MILAVERR_VIDEOACCELERATIONNOTAVAILABLE Handle = 0x88980509
+ MILAVERR_REQUESTEDTEXTURETOOBIG Handle = 0x8898050A
+ MILAVERR_SEEKFAILED Handle = 0x8898050B
+ MILAVERR_UNEXPECTEDWMPFAILURE Handle = 0x8898050C
+ MILAVERR_MEDIAPLAYERCLOSED Handle = 0x8898050D
+ MILAVERR_UNKNOWNHARDWAREERROR Handle = 0x8898050E
+ MILEFFECTSERR_UNKNOWNPROPERTY Handle = 0x8898060E
+ MILEFFECTSERR_EFFECTNOTPARTOFGROUP Handle = 0x8898060F
+ MILEFFECTSERR_NOINPUTSOURCEATTACHED Handle = 0x88980610
+ MILEFFECTSERR_CONNECTORNOTCONNECTED Handle = 0x88980611
+ MILEFFECTSERR_CONNECTORNOTASSOCIATEDWITHEFFECT Handle = 0x88980612
+ MILEFFECTSERR_RESERVED Handle = 0x88980613
+ MILEFFECTSERR_CYCLEDETECTED Handle = 0x88980614
+ MILEFFECTSERR_EFFECTINMORETHANONEGRAPH Handle = 0x88980615
+ MILEFFECTSERR_EFFECTALREADYINAGRAPH Handle = 0x88980616
+ MILEFFECTSERR_EFFECTHASNOCHILDREN Handle = 0x88980617
+ MILEFFECTSERR_ALREADYATTACHEDTOLISTENER Handle = 0x88980618
+ MILEFFECTSERR_NOTAFFINETRANSFORM Handle = 0x88980619
+ MILEFFECTSERR_EMPTYBOUNDS Handle = 0x8898061A
+ MILEFFECTSERR_OUTPUTSIZETOOLARGE Handle = 0x8898061B
+ DWMERR_STATE_TRANSITION_FAILED Handle = 0x88980700
+ DWMERR_THEME_FAILED Handle = 0x88980701
+ DWMERR_CATASTROPHIC_FAILURE Handle = 0x88980702
+ DCOMPOSITION_ERROR_WINDOW_ALREADY_COMPOSED Handle = 0x88980800
+ DCOMPOSITION_ERROR_SURFACE_BEING_RENDERED Handle = 0x88980801
+ DCOMPOSITION_ERROR_SURFACE_NOT_BEING_RENDERED Handle = 0x88980802
+ ONL_E_INVALID_AUTHENTICATION_TARGET Handle = 0x80860001
+ ONL_E_ACCESS_DENIED_BY_TOU Handle = 0x80860002
+ ONL_E_INVALID_APPLICATION Handle = 0x80860003
+ ONL_E_PASSWORD_UPDATE_REQUIRED Handle = 0x80860004
+ ONL_E_ACCOUNT_UPDATE_REQUIRED Handle = 0x80860005
+ ONL_E_FORCESIGNIN Handle = 0x80860006
+ ONL_E_ACCOUNT_LOCKED Handle = 0x80860007
+ ONL_E_PARENTAL_CONSENT_REQUIRED Handle = 0x80860008
+ ONL_E_EMAIL_VERIFICATION_REQUIRED Handle = 0x80860009
+ ONL_E_ACCOUNT_SUSPENDED_COMPROIMISE Handle = 0x8086000A
+ ONL_E_ACCOUNT_SUSPENDED_ABUSE Handle = 0x8086000B
+ ONL_E_ACTION_REQUIRED Handle = 0x8086000C
+ ONL_CONNECTION_COUNT_LIMIT Handle = 0x8086000D
+ ONL_E_CONNECTED_ACCOUNT_CAN_NOT_SIGNOUT Handle = 0x8086000E
+ ONL_E_USER_AUTHENTICATION_REQUIRED Handle = 0x8086000F
+ ONL_E_REQUEST_THROTTLED Handle = 0x80860010
+ FA_E_MAX_PERSISTED_ITEMS_REACHED Handle = 0x80270220
+ FA_E_HOMEGROUP_NOT_AVAILABLE Handle = 0x80270222
+ E_MONITOR_RESOLUTION_TOO_LOW Handle = 0x80270250
+ E_ELEVATED_ACTIVATION_NOT_SUPPORTED Handle = 0x80270251
+ E_UAC_DISABLED Handle = 0x80270252
+ E_FULL_ADMIN_NOT_SUPPORTED Handle = 0x80270253
+ E_APPLICATION_NOT_REGISTERED Handle = 0x80270254
+ E_MULTIPLE_EXTENSIONS_FOR_APPLICATION Handle = 0x80270255
+ E_MULTIPLE_PACKAGES_FOR_FAMILY Handle = 0x80270256
+ E_APPLICATION_MANAGER_NOT_RUNNING Handle = 0x80270257
+ S_STORE_LAUNCHED_FOR_REMEDIATION Handle = 0x00270258
+ S_APPLICATION_ACTIVATION_ERROR_HANDLED_BY_DIALOG Handle = 0x00270259
+ E_APPLICATION_ACTIVATION_TIMED_OUT Handle = 0x8027025A
+ E_APPLICATION_ACTIVATION_EXEC_FAILURE Handle = 0x8027025B
+ E_APPLICATION_TEMPORARY_LICENSE_ERROR Handle = 0x8027025C
+ E_APPLICATION_TRIAL_LICENSE_EXPIRED Handle = 0x8027025D
+ E_SKYDRIVE_ROOT_TARGET_FILE_SYSTEM_NOT_SUPPORTED Handle = 0x80270260
+ E_SKYDRIVE_ROOT_TARGET_OVERLAP Handle = 0x80270261
+ E_SKYDRIVE_ROOT_TARGET_CANNOT_INDEX Handle = 0x80270262
+ E_SKYDRIVE_FILE_NOT_UPLOADED Handle = 0x80270263
+ E_SKYDRIVE_UPDATE_AVAILABILITY_FAIL Handle = 0x80270264
+ E_SKYDRIVE_ROOT_TARGET_VOLUME_ROOT_NOT_SUPPORTED Handle = 0x80270265
+ E_SYNCENGINE_FILE_SIZE_OVER_LIMIT Handle = 0x8802B001
+ E_SYNCENGINE_FILE_SIZE_EXCEEDS_REMAINING_QUOTA Handle = 0x8802B002
+ E_SYNCENGINE_UNSUPPORTED_FILE_NAME Handle = 0x8802B003
+ E_SYNCENGINE_FOLDER_ITEM_COUNT_LIMIT_EXCEEDED Handle = 0x8802B004
+ E_SYNCENGINE_FILE_SYNC_PARTNER_ERROR Handle = 0x8802B005
+ E_SYNCENGINE_SYNC_PAUSED_BY_SERVICE Handle = 0x8802B006
+ E_SYNCENGINE_FILE_IDENTIFIER_UNKNOWN Handle = 0x8802C002
+ E_SYNCENGINE_SERVICE_AUTHENTICATION_FAILED Handle = 0x8802C003
+ E_SYNCENGINE_UNKNOWN_SERVICE_ERROR Handle = 0x8802C004
+ E_SYNCENGINE_SERVICE_RETURNED_UNEXPECTED_SIZE Handle = 0x8802C005
+ E_SYNCENGINE_REQUEST_BLOCKED_BY_SERVICE Handle = 0x8802C006
+ E_SYNCENGINE_REQUEST_BLOCKED_DUE_TO_CLIENT_ERROR Handle = 0x8802C007
+ E_SYNCENGINE_FOLDER_INACCESSIBLE Handle = 0x8802D001
+ E_SYNCENGINE_UNSUPPORTED_FOLDER_NAME Handle = 0x8802D002
+ E_SYNCENGINE_UNSUPPORTED_MARKET Handle = 0x8802D003
+ E_SYNCENGINE_PATH_LENGTH_LIMIT_EXCEEDED Handle = 0x8802D004
+ E_SYNCENGINE_REMOTE_PATH_LENGTH_LIMIT_EXCEEDED Handle = 0x8802D005
+ E_SYNCENGINE_CLIENT_UPDATE_NEEDED Handle = 0x8802D006
+ E_SYNCENGINE_PROXY_AUTHENTICATION_REQUIRED Handle = 0x8802D007
+ E_SYNCENGINE_STORAGE_SERVICE_PROVISIONING_FAILED Handle = 0x8802D008
+ E_SYNCENGINE_UNSUPPORTED_REPARSE_POINT Handle = 0x8802D009
+ E_SYNCENGINE_STORAGE_SERVICE_BLOCKED Handle = 0x8802D00A
+ E_SYNCENGINE_FOLDER_IN_REDIRECTION Handle = 0x8802D00B
+ EAS_E_POLICY_NOT_MANAGED_BY_OS Handle = 0x80550001
+ EAS_E_POLICY_COMPLIANT_WITH_ACTIONS Handle = 0x80550002
+ EAS_E_REQUESTED_POLICY_NOT_ENFORCEABLE Handle = 0x80550003
+ EAS_E_CURRENT_USER_HAS_BLANK_PASSWORD Handle = 0x80550004
+ EAS_E_REQUESTED_POLICY_PASSWORD_EXPIRATION_INCOMPATIBLE Handle = 0x80550005
+ EAS_E_USER_CANNOT_CHANGE_PASSWORD Handle = 0x80550006
+ EAS_E_ADMINS_HAVE_BLANK_PASSWORD Handle = 0x80550007
+ EAS_E_ADMINS_CANNOT_CHANGE_PASSWORD Handle = 0x80550008
+ EAS_E_LOCAL_CONTROLLED_USERS_CANNOT_CHANGE_PASSWORD Handle = 0x80550009
+ EAS_E_PASSWORD_POLICY_NOT_ENFORCEABLE_FOR_CONNECTED_ADMINS Handle = 0x8055000A
+ EAS_E_CONNECTED_ADMINS_NEED_TO_CHANGE_PASSWORD Handle = 0x8055000B
+ EAS_E_PASSWORD_POLICY_NOT_ENFORCEABLE_FOR_CURRENT_CONNECTED_USER Handle = 0x8055000C
+ EAS_E_CURRENT_CONNECTED_USER_NEED_TO_CHANGE_PASSWORD Handle = 0x8055000D
+ WEB_E_UNSUPPORTED_FORMAT Handle = 0x83750001
+ WEB_E_INVALID_XML Handle = 0x83750002
+ WEB_E_MISSING_REQUIRED_ELEMENT Handle = 0x83750003
+ WEB_E_MISSING_REQUIRED_ATTRIBUTE Handle = 0x83750004
+ WEB_E_UNEXPECTED_CONTENT Handle = 0x83750005
+ WEB_E_RESOURCE_TOO_LARGE Handle = 0x83750006
+ WEB_E_INVALID_JSON_STRING Handle = 0x83750007
+ WEB_E_INVALID_JSON_NUMBER Handle = 0x83750008
+ WEB_E_JSON_VALUE_NOT_FOUND Handle = 0x83750009
+ HTTP_E_STATUS_UNEXPECTED Handle = 0x80190001
+ HTTP_E_STATUS_UNEXPECTED_REDIRECTION Handle = 0x80190003
+ HTTP_E_STATUS_UNEXPECTED_CLIENT_ERROR Handle = 0x80190004
+ HTTP_E_STATUS_UNEXPECTED_SERVER_ERROR Handle = 0x80190005
+ HTTP_E_STATUS_AMBIGUOUS Handle = 0x8019012C
+ HTTP_E_STATUS_MOVED Handle = 0x8019012D
+ HTTP_E_STATUS_REDIRECT Handle = 0x8019012E
+ HTTP_E_STATUS_REDIRECT_METHOD Handle = 0x8019012F
+ HTTP_E_STATUS_NOT_MODIFIED Handle = 0x80190130
+ HTTP_E_STATUS_USE_PROXY Handle = 0x80190131
+ HTTP_E_STATUS_REDIRECT_KEEP_VERB Handle = 0x80190133
+ HTTP_E_STATUS_BAD_REQUEST Handle = 0x80190190
+ HTTP_E_STATUS_DENIED Handle = 0x80190191
+ HTTP_E_STATUS_PAYMENT_REQ Handle = 0x80190192
+ HTTP_E_STATUS_FORBIDDEN Handle = 0x80190193
+ HTTP_E_STATUS_NOT_FOUND Handle = 0x80190194
+ HTTP_E_STATUS_BAD_METHOD Handle = 0x80190195
+ HTTP_E_STATUS_NONE_ACCEPTABLE Handle = 0x80190196
+ HTTP_E_STATUS_PROXY_AUTH_REQ Handle = 0x80190197
+ HTTP_E_STATUS_REQUEST_TIMEOUT Handle = 0x80190198
+ HTTP_E_STATUS_CONFLICT Handle = 0x80190199
+ HTTP_E_STATUS_GONE Handle = 0x8019019A
+ HTTP_E_STATUS_LENGTH_REQUIRED Handle = 0x8019019B
+ HTTP_E_STATUS_PRECOND_FAILED Handle = 0x8019019C
+ HTTP_E_STATUS_REQUEST_TOO_LARGE Handle = 0x8019019D
+ HTTP_E_STATUS_URI_TOO_LONG Handle = 0x8019019E
+ HTTP_E_STATUS_UNSUPPORTED_MEDIA Handle = 0x8019019F
+ HTTP_E_STATUS_RANGE_NOT_SATISFIABLE Handle = 0x801901A0
+ HTTP_E_STATUS_EXPECTATION_FAILED Handle = 0x801901A1
+ HTTP_E_STATUS_SERVER_ERROR Handle = 0x801901F4
+ HTTP_E_STATUS_NOT_SUPPORTED Handle = 0x801901F5
+ HTTP_E_STATUS_BAD_GATEWAY Handle = 0x801901F6
+ HTTP_E_STATUS_SERVICE_UNAVAIL Handle = 0x801901F7
+ HTTP_E_STATUS_GATEWAY_TIMEOUT Handle = 0x801901F8
+ HTTP_E_STATUS_VERSION_NOT_SUP Handle = 0x801901F9
+ E_INVALID_PROTOCOL_OPERATION Handle = 0x83760001
+ E_INVALID_PROTOCOL_FORMAT Handle = 0x83760002
+ E_PROTOCOL_EXTENSIONS_NOT_SUPPORTED Handle = 0x83760003
+ E_SUBPROTOCOL_NOT_SUPPORTED Handle = 0x83760004
+ E_PROTOCOL_VERSION_NOT_SUPPORTED Handle = 0x83760005
+ INPUT_E_OUT_OF_ORDER Handle = 0x80400000
+ INPUT_E_REENTRANCY Handle = 0x80400001
+ INPUT_E_MULTIMODAL Handle = 0x80400002
+ INPUT_E_PACKET Handle = 0x80400003
+ INPUT_E_FRAME Handle = 0x80400004
+ INPUT_E_HISTORY Handle = 0x80400005
+ INPUT_E_DEVICE_INFO Handle = 0x80400006
+ INPUT_E_TRANSFORM Handle = 0x80400007
+ INPUT_E_DEVICE_PROPERTY Handle = 0x80400008
+ INET_E_INVALID_URL Handle = 0x800C0002
+ INET_E_NO_SESSION Handle = 0x800C0003
+ INET_E_CANNOT_CONNECT Handle = 0x800C0004
+ INET_E_RESOURCE_NOT_FOUND Handle = 0x800C0005
+ INET_E_OBJECT_NOT_FOUND Handle = 0x800C0006
+ INET_E_DATA_NOT_AVAILABLE Handle = 0x800C0007
+ INET_E_DOWNLOAD_FAILURE Handle = 0x800C0008
+ INET_E_AUTHENTICATION_REQUIRED Handle = 0x800C0009
+ INET_E_NO_VALID_MEDIA Handle = 0x800C000A
+ INET_E_CONNECTION_TIMEOUT Handle = 0x800C000B
+ INET_E_INVALID_REQUEST Handle = 0x800C000C
+ INET_E_UNKNOWN_PROTOCOL Handle = 0x800C000D
+ INET_E_SECURITY_PROBLEM Handle = 0x800C000E
+ INET_E_CANNOT_LOAD_DATA Handle = 0x800C000F
+ INET_E_CANNOT_INSTANTIATE_OBJECT Handle = 0x800C0010
+ INET_E_INVALID_CERTIFICATE Handle = 0x800C0019
+ INET_E_REDIRECT_FAILED Handle = 0x800C0014
+ INET_E_REDIRECT_TO_DIR Handle = 0x800C0015
+ ERROR_DBG_CREATE_PROCESS_FAILURE_LOCKDOWN Handle = 0x80B00001
+ ERROR_DBG_ATTACH_PROCESS_FAILURE_LOCKDOWN Handle = 0x80B00002
+ ERROR_DBG_CONNECT_SERVER_FAILURE_LOCKDOWN Handle = 0x80B00003
+ ERROR_DBG_START_SERVER_FAILURE_LOCKDOWN Handle = 0x80B00004
+ ERROR_IO_PREEMPTED Handle = 0x89010001
+ JSCRIPT_E_CANTEXECUTE Handle = 0x89020001
+ WEP_E_NOT_PROVISIONED_ON_ALL_VOLUMES Handle = 0x88010001
+ WEP_E_FIXED_DATA_NOT_SUPPORTED Handle = 0x88010002
+ WEP_E_HARDWARE_NOT_COMPLIANT Handle = 0x88010003
+ WEP_E_LOCK_NOT_CONFIGURED Handle = 0x88010004
+ WEP_E_PROTECTION_SUSPENDED Handle = 0x88010005
+ WEP_E_NO_LICENSE Handle = 0x88010006
+ WEP_E_OS_NOT_PROTECTED Handle = 0x88010007
+ WEP_E_UNEXPECTED_FAIL Handle = 0x88010008
+ WEP_E_BUFFER_TOO_LARGE Handle = 0x88010009
+ ERROR_SVHDX_ERROR_STORED Handle = 0xC05C0000
+ ERROR_SVHDX_ERROR_NOT_AVAILABLE Handle = 0xC05CFF00
+ ERROR_SVHDX_UNIT_ATTENTION_AVAILABLE Handle = 0xC05CFF01
+ ERROR_SVHDX_UNIT_ATTENTION_CAPACITY_DATA_CHANGED Handle = 0xC05CFF02
+ ERROR_SVHDX_UNIT_ATTENTION_RESERVATIONS_PREEMPTED Handle = 0xC05CFF03
+ ERROR_SVHDX_UNIT_ATTENTION_RESERVATIONS_RELEASED Handle = 0xC05CFF04
+ ERROR_SVHDX_UNIT_ATTENTION_REGISTRATIONS_PREEMPTED Handle = 0xC05CFF05
+ ERROR_SVHDX_UNIT_ATTENTION_OPERATING_DEFINITION_CHANGED Handle = 0xC05CFF06
+ ERROR_SVHDX_RESERVATION_CONFLICT Handle = 0xC05CFF07
+ ERROR_SVHDX_WRONG_FILE_TYPE Handle = 0xC05CFF08
+ ERROR_SVHDX_VERSION_MISMATCH Handle = 0xC05CFF09
+ ERROR_VHD_SHARED Handle = 0xC05CFF0A
+ ERROR_SVHDX_NO_INITIATOR Handle = 0xC05CFF0B
+ ERROR_VHDSET_BACKING_STORAGE_NOT_FOUND Handle = 0xC05CFF0C
+ ERROR_SMB_NO_PREAUTH_INTEGRITY_HASH_OVERLAP Handle = 0xC05D0000
+ ERROR_SMB_BAD_CLUSTER_DIALECT Handle = 0xC05D0001
+ WININET_E_OUT_OF_HANDLES Handle = 0x80072EE1
+ WININET_E_TIMEOUT Handle = 0x80072EE2
+ WININET_E_EXTENDED_ERROR Handle = 0x80072EE3
+ WININET_E_INTERNAL_ERROR Handle = 0x80072EE4
+ WININET_E_INVALID_URL Handle = 0x80072EE5
+ WININET_E_UNRECOGNIZED_SCHEME Handle = 0x80072EE6
+ WININET_E_NAME_NOT_RESOLVED Handle = 0x80072EE7
+ WININET_E_PROTOCOL_NOT_FOUND Handle = 0x80072EE8
+ WININET_E_INVALID_OPTION Handle = 0x80072EE9
+ WININET_E_BAD_OPTION_LENGTH Handle = 0x80072EEA
+ WININET_E_OPTION_NOT_SETTABLE Handle = 0x80072EEB
+ WININET_E_SHUTDOWN Handle = 0x80072EEC
+ WININET_E_INCORRECT_USER_NAME Handle = 0x80072EED
+ WININET_E_INCORRECT_PASSWORD Handle = 0x80072EEE
+ WININET_E_LOGIN_FAILURE Handle = 0x80072EEF
+ WININET_E_INVALID_OPERATION Handle = 0x80072EF0
+ WININET_E_OPERATION_CANCELLED Handle = 0x80072EF1
+ WININET_E_INCORRECT_HANDLE_TYPE Handle = 0x80072EF2
+ WININET_E_INCORRECT_HANDLE_STATE Handle = 0x80072EF3
+ WININET_E_NOT_PROXY_REQUEST Handle = 0x80072EF4
+ WININET_E_REGISTRY_VALUE_NOT_FOUND Handle = 0x80072EF5
+ WININET_E_BAD_REGISTRY_PARAMETER Handle = 0x80072EF6
+ WININET_E_NO_DIRECT_ACCESS Handle = 0x80072EF7
+ WININET_E_NO_CONTEXT Handle = 0x80072EF8
+ WININET_E_NO_CALLBACK Handle = 0x80072EF9
+ WININET_E_REQUEST_PENDING Handle = 0x80072EFA
+ WININET_E_INCORRECT_FORMAT Handle = 0x80072EFB
+ WININET_E_ITEM_NOT_FOUND Handle = 0x80072EFC
+ WININET_E_CANNOT_CONNECT Handle = 0x80072EFD
+ WININET_E_CONNECTION_ABORTED Handle = 0x80072EFE
+ WININET_E_CONNECTION_RESET Handle = 0x80072EFF
+ WININET_E_FORCE_RETRY Handle = 0x80072F00
+ WININET_E_INVALID_PROXY_REQUEST Handle = 0x80072F01
+ WININET_E_NEED_UI Handle = 0x80072F02
+ WININET_E_HANDLE_EXISTS Handle = 0x80072F04
+ WININET_E_SEC_CERT_DATE_INVALID Handle = 0x80072F05
+ WININET_E_SEC_CERT_CN_INVALID Handle = 0x80072F06
+ WININET_E_HTTP_TO_HTTPS_ON_REDIR Handle = 0x80072F07
+ WININET_E_HTTPS_TO_HTTP_ON_REDIR Handle = 0x80072F08
+ WININET_E_MIXED_SECURITY Handle = 0x80072F09
+ WININET_E_CHG_POST_IS_NON_SECURE Handle = 0x80072F0A
+ WININET_E_POST_IS_NON_SECURE Handle = 0x80072F0B
+ WININET_E_CLIENT_AUTH_CERT_NEEDED Handle = 0x80072F0C
+ WININET_E_INVALID_CA Handle = 0x80072F0D
+ WININET_E_CLIENT_AUTH_NOT_SETUP Handle = 0x80072F0E
+ WININET_E_ASYNC_THREAD_FAILED Handle = 0x80072F0F
+ WININET_E_REDIRECT_SCHEME_CHANGE Handle = 0x80072F10
+ WININET_E_DIALOG_PENDING Handle = 0x80072F11
+ WININET_E_RETRY_DIALOG Handle = 0x80072F12
+ WININET_E_NO_NEW_CONTAINERS Handle = 0x80072F13
+ WININET_E_HTTPS_HTTP_SUBMIT_REDIR Handle = 0x80072F14
+ WININET_E_SEC_CERT_ERRORS Handle = 0x80072F17
+ WININET_E_SEC_CERT_REV_FAILED Handle = 0x80072F19
+ WININET_E_HEADER_NOT_FOUND Handle = 0x80072F76
+ WININET_E_DOWNLEVEL_SERVER Handle = 0x80072F77
+ WININET_E_INVALID_SERVER_RESPONSE Handle = 0x80072F78
+ WININET_E_INVALID_HEADER Handle = 0x80072F79
+ WININET_E_INVALID_QUERY_REQUEST Handle = 0x80072F7A
+ WININET_E_HEADER_ALREADY_EXISTS Handle = 0x80072F7B
+ WININET_E_REDIRECT_FAILED Handle = 0x80072F7C
+ WININET_E_SECURITY_CHANNEL_ERROR Handle = 0x80072F7D
+ WININET_E_UNABLE_TO_CACHE_FILE Handle = 0x80072F7E
+ WININET_E_TCPIP_NOT_INSTALLED Handle = 0x80072F7F
+ WININET_E_DISCONNECTED Handle = 0x80072F83
+ WININET_E_SERVER_UNREACHABLE Handle = 0x80072F84
+ WININET_E_PROXY_SERVER_UNREACHABLE Handle = 0x80072F85
+ WININET_E_BAD_AUTO_PROXY_SCRIPT Handle = 0x80072F86
+ WININET_E_UNABLE_TO_DOWNLOAD_SCRIPT Handle = 0x80072F87
+ WININET_E_SEC_INVALID_CERT Handle = 0x80072F89
+ WININET_E_SEC_CERT_REVOKED Handle = 0x80072F8A
+ WININET_E_FAILED_DUETOSECURITYCHECK Handle = 0x80072F8B
+ WININET_E_NOT_INITIALIZED Handle = 0x80072F8C
+ WININET_E_LOGIN_FAILURE_DISPLAY_ENTITY_BODY Handle = 0x80072F8E
+ WININET_E_DECODING_FAILED Handle = 0x80072F8F
+ WININET_E_NOT_REDIRECTED Handle = 0x80072F80
+ WININET_E_COOKIE_NEEDS_CONFIRMATION Handle = 0x80072F81
+ WININET_E_COOKIE_DECLINED Handle = 0x80072F82
+ WININET_E_REDIRECT_NEEDS_CONFIRMATION Handle = 0x80072F88
+ SQLITE_E_ERROR Handle = 0x87AF0001
+ SQLITE_E_INTERNAL Handle = 0x87AF0002
+ SQLITE_E_PERM Handle = 0x87AF0003
+ SQLITE_E_ABORT Handle = 0x87AF0004
+ SQLITE_E_BUSY Handle = 0x87AF0005
+ SQLITE_E_LOCKED Handle = 0x87AF0006
+ SQLITE_E_NOMEM Handle = 0x87AF0007
+ SQLITE_E_READONLY Handle = 0x87AF0008
+ SQLITE_E_INTERRUPT Handle = 0x87AF0009
+ SQLITE_E_IOERR Handle = 0x87AF000A
+ SQLITE_E_CORRUPT Handle = 0x87AF000B
+ SQLITE_E_NOTFOUND Handle = 0x87AF000C
+ SQLITE_E_FULL Handle = 0x87AF000D
+ SQLITE_E_CANTOPEN Handle = 0x87AF000E
+ SQLITE_E_PROTOCOL Handle = 0x87AF000F
+ SQLITE_E_EMPTY Handle = 0x87AF0010
+ SQLITE_E_SCHEMA Handle = 0x87AF0011
+ SQLITE_E_TOOBIG Handle = 0x87AF0012
+ SQLITE_E_CONSTRAINT Handle = 0x87AF0013
+ SQLITE_E_MISMATCH Handle = 0x87AF0014
+ SQLITE_E_MISUSE Handle = 0x87AF0015
+ SQLITE_E_NOLFS Handle = 0x87AF0016
+ SQLITE_E_AUTH Handle = 0x87AF0017
+ SQLITE_E_FORMAT Handle = 0x87AF0018
+ SQLITE_E_RANGE Handle = 0x87AF0019
+ SQLITE_E_NOTADB Handle = 0x87AF001A
+ SQLITE_E_NOTICE Handle = 0x87AF001B
+ SQLITE_E_WARNING Handle = 0x87AF001C
+ SQLITE_E_ROW Handle = 0x87AF0064
+ SQLITE_E_DONE Handle = 0x87AF0065
+ SQLITE_E_IOERR_READ Handle = 0x87AF010A
+ SQLITE_E_IOERR_SHORT_READ Handle = 0x87AF020A
+ SQLITE_E_IOERR_WRITE Handle = 0x87AF030A
+ SQLITE_E_IOERR_FSYNC Handle = 0x87AF040A
+ SQLITE_E_IOERR_DIR_FSYNC Handle = 0x87AF050A
+ SQLITE_E_IOERR_TRUNCATE Handle = 0x87AF060A
+ SQLITE_E_IOERR_FSTAT Handle = 0x87AF070A
+ SQLITE_E_IOERR_UNLOCK Handle = 0x87AF080A
+ SQLITE_E_IOERR_RDLOCK Handle = 0x87AF090A
+ SQLITE_E_IOERR_DELETE Handle = 0x87AF0A0A
+ SQLITE_E_IOERR_BLOCKED Handle = 0x87AF0B0A
+ SQLITE_E_IOERR_NOMEM Handle = 0x87AF0C0A
+ SQLITE_E_IOERR_ACCESS Handle = 0x87AF0D0A
+ SQLITE_E_IOERR_CHECKRESERVEDLOCK Handle = 0x87AF0E0A
+ SQLITE_E_IOERR_LOCK Handle = 0x87AF0F0A
+ SQLITE_E_IOERR_CLOSE Handle = 0x87AF100A
+ SQLITE_E_IOERR_DIR_CLOSE Handle = 0x87AF110A
+ SQLITE_E_IOERR_SHMOPEN Handle = 0x87AF120A
+ SQLITE_E_IOERR_SHMSIZE Handle = 0x87AF130A
+ SQLITE_E_IOERR_SHMLOCK Handle = 0x87AF140A
+ SQLITE_E_IOERR_SHMMAP Handle = 0x87AF150A
+ SQLITE_E_IOERR_SEEK Handle = 0x87AF160A
+ SQLITE_E_IOERR_DELETE_NOENT Handle = 0x87AF170A
+ SQLITE_E_IOERR_MMAP Handle = 0x87AF180A
+ SQLITE_E_IOERR_GETTEMPPATH Handle = 0x87AF190A
+ SQLITE_E_IOERR_CONVPATH Handle = 0x87AF1A0A
+ SQLITE_E_IOERR_VNODE Handle = 0x87AF1A02
+ SQLITE_E_IOERR_AUTH Handle = 0x87AF1A03
+ SQLITE_E_LOCKED_SHAREDCACHE Handle = 0x87AF0106
+ SQLITE_E_BUSY_RECOVERY Handle = 0x87AF0105
+ SQLITE_E_BUSY_SNAPSHOT Handle = 0x87AF0205
+ SQLITE_E_CANTOPEN_NOTEMPDIR Handle = 0x87AF010E
+ SQLITE_E_CANTOPEN_ISDIR Handle = 0x87AF020E
+ SQLITE_E_CANTOPEN_FULLPATH Handle = 0x87AF030E
+ SQLITE_E_CANTOPEN_CONVPATH Handle = 0x87AF040E
+ SQLITE_E_CORRUPT_VTAB Handle = 0x87AF010B
+ SQLITE_E_READONLY_RECOVERY Handle = 0x87AF0108
+ SQLITE_E_READONLY_CANTLOCK Handle = 0x87AF0208
+ SQLITE_E_READONLY_ROLLBACK Handle = 0x87AF0308
+ SQLITE_E_READONLY_DBMOVED Handle = 0x87AF0408
+ SQLITE_E_ABORT_ROLLBACK Handle = 0x87AF0204
+ SQLITE_E_CONSTRAINT_CHECK Handle = 0x87AF0113
+ SQLITE_E_CONSTRAINT_COMMITHOOK Handle = 0x87AF0213
+ SQLITE_E_CONSTRAINT_FOREIGNKEY Handle = 0x87AF0313
+ SQLITE_E_CONSTRAINT_FUNCTION Handle = 0x87AF0413
+ SQLITE_E_CONSTRAINT_NOTNULL Handle = 0x87AF0513
+ SQLITE_E_CONSTRAINT_PRIMARYKEY Handle = 0x87AF0613
+ SQLITE_E_CONSTRAINT_TRIGGER Handle = 0x87AF0713
+ SQLITE_E_CONSTRAINT_UNIQUE Handle = 0x87AF0813
+ SQLITE_E_CONSTRAINT_VTAB Handle = 0x87AF0913
+ SQLITE_E_CONSTRAINT_ROWID Handle = 0x87AF0A13
+ SQLITE_E_NOTICE_RECOVER_WAL Handle = 0x87AF011B
+ SQLITE_E_NOTICE_RECOVER_ROLLBACK Handle = 0x87AF021B
+ SQLITE_E_WARNING_AUTOINDEX Handle = 0x87AF011C
+ UTC_E_TOGGLE_TRACE_STARTED Handle = 0x87C51001
+ UTC_E_ALTERNATIVE_TRACE_CANNOT_PREEMPT Handle = 0x87C51002
+ UTC_E_AOT_NOT_RUNNING Handle = 0x87C51003
+ UTC_E_SCRIPT_TYPE_INVALID Handle = 0x87C51004
+ UTC_E_SCENARIODEF_NOT_FOUND Handle = 0x87C51005
+ UTC_E_TRACEPROFILE_NOT_FOUND Handle = 0x87C51006
+ UTC_E_FORWARDER_ALREADY_ENABLED Handle = 0x87C51007
+ UTC_E_FORWARDER_ALREADY_DISABLED Handle = 0x87C51008
+ UTC_E_EVENTLOG_ENTRY_MALFORMED Handle = 0x87C51009
+ UTC_E_DIAGRULES_SCHEMAVERSION_MISMATCH Handle = 0x87C5100A
+ UTC_E_SCRIPT_TERMINATED Handle = 0x87C5100B
+ UTC_E_INVALID_CUSTOM_FILTER Handle = 0x87C5100C
+ UTC_E_TRACE_NOT_RUNNING Handle = 0x87C5100D
+ UTC_E_REESCALATED_TOO_QUICKLY Handle = 0x87C5100E
+ UTC_E_ESCALATION_ALREADY_RUNNING Handle = 0x87C5100F
+ UTC_E_PERFTRACK_ALREADY_TRACING Handle = 0x87C51010
+ UTC_E_REACHED_MAX_ESCALATIONS Handle = 0x87C51011
+ UTC_E_FORWARDER_PRODUCER_MISMATCH Handle = 0x87C51012
+ UTC_E_INTENTIONAL_SCRIPT_FAILURE Handle = 0x87C51013
+ UTC_E_SQM_INIT_FAILED Handle = 0x87C51014
+ UTC_E_NO_WER_LOGGER_SUPPORTED Handle = 0x87C51015
+ UTC_E_TRACERS_DONT_EXIST Handle = 0x87C51016
+ UTC_E_WINRT_INIT_FAILED Handle = 0x87C51017
+ UTC_E_SCENARIODEF_SCHEMAVERSION_MISMATCH Handle = 0x87C51018
+ UTC_E_INVALID_FILTER Handle = 0x87C51019
+ UTC_E_EXE_TERMINATED Handle = 0x87C5101A
+ UTC_E_ESCALATION_NOT_AUTHORIZED Handle = 0x87C5101B
+ UTC_E_SETUP_NOT_AUTHORIZED Handle = 0x87C5101C
+ UTC_E_CHILD_PROCESS_FAILED Handle = 0x87C5101D
+ UTC_E_COMMAND_LINE_NOT_AUTHORIZED Handle = 0x87C5101E
+ UTC_E_CANNOT_LOAD_SCENARIO_EDITOR_XML Handle = 0x87C5101F
+ UTC_E_ESCALATION_TIMED_OUT Handle = 0x87C51020
+ UTC_E_SETUP_TIMED_OUT Handle = 0x87C51021
+ UTC_E_TRIGGER_MISMATCH Handle = 0x87C51022
+ UTC_E_TRIGGER_NOT_FOUND Handle = 0x87C51023
+ UTC_E_SIF_NOT_SUPPORTED Handle = 0x87C51024
+ UTC_E_DELAY_TERMINATED Handle = 0x87C51025
+ UTC_E_DEVICE_TICKET_ERROR Handle = 0x87C51026
+ UTC_E_TRACE_BUFFER_LIMIT_EXCEEDED Handle = 0x87C51027
+ UTC_E_API_RESULT_UNAVAILABLE Handle = 0x87C51028
+ UTC_E_RPC_TIMEOUT Handle = 0x87C51029
+ UTC_E_RPC_WAIT_FAILED Handle = 0x87C5102A
+ UTC_E_API_BUSY Handle = 0x87C5102B
+ UTC_E_TRACE_MIN_DURATION_REQUIREMENT_NOT_MET Handle = 0x87C5102C
+ UTC_E_EXCLUSIVITY_NOT_AVAILABLE Handle = 0x87C5102D
+ UTC_E_GETFILE_FILE_PATH_NOT_APPROVED Handle = 0x87C5102E
+ UTC_E_ESCALATION_DIRECTORY_ALREADY_EXISTS Handle = 0x87C5102F
+ UTC_E_TIME_TRIGGER_ON_START_INVALID Handle = 0x87C51030
+ UTC_E_TIME_TRIGGER_ONLY_VALID_ON_SINGLE_TRANSITION Handle = 0x87C51031
+ UTC_E_TIME_TRIGGER_INVALID_TIME_RANGE Handle = 0x87C51032
+ UTC_E_MULTIPLE_TIME_TRIGGER_ON_SINGLE_STATE Handle = 0x87C51033
+ UTC_E_BINARY_MISSING Handle = 0x87C51034
+ UTC_E_NETWORK_CAPTURE_NOT_ALLOWED Handle = 0x87C51035
+ UTC_E_FAILED_TO_RESOLVE_CONTAINER_ID Handle = 0x87C51036
+ UTC_E_UNABLE_TO_RESOLVE_SESSION Handle = 0x87C51037
+ UTC_E_THROTTLED Handle = 0x87C51038
+ UTC_E_UNAPPROVED_SCRIPT Handle = 0x87C51039
+ UTC_E_SCRIPT_MISSING Handle = 0x87C5103A
+ UTC_E_SCENARIO_THROTTLED Handle = 0x87C5103B
+ UTC_E_API_NOT_SUPPORTED Handle = 0x87C5103C
+ UTC_E_GETFILE_EXTERNAL_PATH_NOT_APPROVED Handle = 0x87C5103D
+ UTC_E_TRY_GET_SCENARIO_TIMEOUT_EXCEEDED Handle = 0x87C5103E
+ UTC_E_CERT_REV_FAILED Handle = 0x87C5103F
+ UTC_E_FAILED_TO_START_NDISCAP Handle = 0x87C51040
+ UTC_E_KERNELDUMP_LIMIT_REACHED Handle = 0x87C51041
+ UTC_E_MISSING_AGGREGATE_EVENT_TAG Handle = 0x87C51042
+ UTC_E_INVALID_AGGREGATION_STRUCT Handle = 0x87C51043
+ UTC_E_ACTION_NOT_SUPPORTED_IN_DESTINATION Handle = 0x87C51044
+ UTC_E_FILTER_MISSING_ATTRIBUTE Handle = 0x87C51045
+ UTC_E_FILTER_INVALID_TYPE Handle = 0x87C51046
+ UTC_E_FILTER_VARIABLE_NOT_FOUND Handle = 0x87C51047
+ UTC_E_FILTER_FUNCTION_RESTRICTED Handle = 0x87C51048
+ UTC_E_FILTER_VERSION_MISMATCH Handle = 0x87C51049
+ UTC_E_FILTER_INVALID_FUNCTION Handle = 0x87C51050
+ UTC_E_FILTER_INVALID_FUNCTION_PARAMS Handle = 0x87C51051
+ UTC_E_FILTER_INVALID_COMMAND Handle = 0x87C51052
+ UTC_E_FILTER_ILLEGAL_EVAL Handle = 0x87C51053
+ UTC_E_TTTRACER_RETURNED_ERROR Handle = 0x87C51054
+ UTC_E_AGENT_DIAGNOSTICS_TOO_LARGE Handle = 0x87C51055
+ UTC_E_FAILED_TO_RECEIVE_AGENT_DIAGNOSTICS Handle = 0x87C51056
+ UTC_E_SCENARIO_HAS_NO_ACTIONS Handle = 0x87C51057
+ UTC_E_TTTRACER_STORAGE_FULL Handle = 0x87C51058
+ UTC_E_INSUFFICIENT_SPACE_TO_START_TRACE Handle = 0x87C51059
+ UTC_E_ESCALATION_CANCELLED_AT_SHUTDOWN Handle = 0x87C5105A
+ UTC_E_GETFILEINFOACTION_FILE_NOT_APPROVED Handle = 0x87C5105B
+ WINML_ERR_INVALID_DEVICE Handle = 0x88900001
+ WINML_ERR_INVALID_BINDING Handle = 0x88900002
+ WINML_ERR_VALUE_NOTFOUND Handle = 0x88900003
+ WINML_ERR_SIZE_MISMATCH Handle = 0x88900004
+)
diff --git a/vendor/golang.org/x/sys/windows/zknownfolderids_windows.go b/vendor/golang.org/x/sys/windows/zknownfolderids_windows.go
new file mode 100644
index 00000000..6048ac67
--- /dev/null
+++ b/vendor/golang.org/x/sys/windows/zknownfolderids_windows.go
@@ -0,0 +1,149 @@
+// Code generated by 'mkknownfolderids.bash'; DO NOT EDIT.
+
+package windows
+
+type KNOWNFOLDERID GUID
+
+var (
+ FOLDERID_NetworkFolder = &KNOWNFOLDERID{0xd20beec4, 0x5ca8, 0x4905, [8]byte{0xae, 0x3b, 0xbf, 0x25, 0x1e, 0xa0, 0x9b, 0x53}}
+ FOLDERID_ComputerFolder = &KNOWNFOLDERID{0x0ac0837c, 0xbbf8, 0x452a, [8]byte{0x85, 0x0d, 0x79, 0xd0, 0x8e, 0x66, 0x7c, 0xa7}}
+ FOLDERID_InternetFolder = &KNOWNFOLDERID{0x4d9f7874, 0x4e0c, 0x4904, [8]byte{0x96, 0x7b, 0x40, 0xb0, 0xd2, 0x0c, 0x3e, 0x4b}}
+ FOLDERID_ControlPanelFolder = &KNOWNFOLDERID{0x82a74aeb, 0xaeb4, 0x465c, [8]byte{0xa0, 0x14, 0xd0, 0x97, 0xee, 0x34, 0x6d, 0x63}}
+ FOLDERID_PrintersFolder = &KNOWNFOLDERID{0x76fc4e2d, 0xd6ad, 0x4519, [8]byte{0xa6, 0x63, 0x37, 0xbd, 0x56, 0x06, 0x81, 0x85}}
+ FOLDERID_SyncManagerFolder = &KNOWNFOLDERID{0x43668bf8, 0xc14e, 0x49b2, [8]byte{0x97, 0xc9, 0x74, 0x77, 0x84, 0xd7, 0x84, 0xb7}}
+ FOLDERID_SyncSetupFolder = &KNOWNFOLDERID{0x0f214138, 0xb1d3, 0x4a90, [8]byte{0xbb, 0xa9, 0x27, 0xcb, 0xc0, 0xc5, 0x38, 0x9a}}
+ FOLDERID_ConflictFolder = &KNOWNFOLDERID{0x4bfefb45, 0x347d, 0x4006, [8]byte{0xa5, 0xbe, 0xac, 0x0c, 0xb0, 0x56, 0x71, 0x92}}
+ FOLDERID_SyncResultsFolder = &KNOWNFOLDERID{0x289a9a43, 0xbe44, 0x4057, [8]byte{0xa4, 0x1b, 0x58, 0x7a, 0x76, 0xd7, 0xe7, 0xf9}}
+ FOLDERID_RecycleBinFolder = &KNOWNFOLDERID{0xb7534046, 0x3ecb, 0x4c18, [8]byte{0xbe, 0x4e, 0x64, 0xcd, 0x4c, 0xb7, 0xd6, 0xac}}
+ FOLDERID_ConnectionsFolder = &KNOWNFOLDERID{0x6f0cd92b, 0x2e97, 0x45d1, [8]byte{0x88, 0xff, 0xb0, 0xd1, 0x86, 0xb8, 0xde, 0xdd}}
+ FOLDERID_Fonts = &KNOWNFOLDERID{0xfd228cb7, 0xae11, 0x4ae3, [8]byte{0x86, 0x4c, 0x16, 0xf3, 0x91, 0x0a, 0xb8, 0xfe}}
+ FOLDERID_Desktop = &KNOWNFOLDERID{0xb4bfcc3a, 0xdb2c, 0x424c, [8]byte{0xb0, 0x29, 0x7f, 0xe9, 0x9a, 0x87, 0xc6, 0x41}}
+ FOLDERID_Startup = &KNOWNFOLDERID{0xb97d20bb, 0xf46a, 0x4c97, [8]byte{0xba, 0x10, 0x5e, 0x36, 0x08, 0x43, 0x08, 0x54}}
+ FOLDERID_Programs = &KNOWNFOLDERID{0xa77f5d77, 0x2e2b, 0x44c3, [8]byte{0xa6, 0xa2, 0xab, 0xa6, 0x01, 0x05, 0x4a, 0x51}}
+ FOLDERID_StartMenu = &KNOWNFOLDERID{0x625b53c3, 0xab48, 0x4ec1, [8]byte{0xba, 0x1f, 0xa1, 0xef, 0x41, 0x46, 0xfc, 0x19}}
+ FOLDERID_Recent = &KNOWNFOLDERID{0xae50c081, 0xebd2, 0x438a, [8]byte{0x86, 0x55, 0x8a, 0x09, 0x2e, 0x34, 0x98, 0x7a}}
+ FOLDERID_SendTo = &KNOWNFOLDERID{0x8983036c, 0x27c0, 0x404b, [8]byte{0x8f, 0x08, 0x10, 0x2d, 0x10, 0xdc, 0xfd, 0x74}}
+ FOLDERID_Documents = &KNOWNFOLDERID{0xfdd39ad0, 0x238f, 0x46af, [8]byte{0xad, 0xb4, 0x6c, 0x85, 0x48, 0x03, 0x69, 0xc7}}
+ FOLDERID_Favorites = &KNOWNFOLDERID{0x1777f761, 0x68ad, 0x4d8a, [8]byte{0x87, 0xbd, 0x30, 0xb7, 0x59, 0xfa, 0x33, 0xdd}}
+ FOLDERID_NetHood = &KNOWNFOLDERID{0xc5abbf53, 0xe17f, 0x4121, [8]byte{0x89, 0x00, 0x86, 0x62, 0x6f, 0xc2, 0xc9, 0x73}}
+ FOLDERID_PrintHood = &KNOWNFOLDERID{0x9274bd8d, 0xcfd1, 0x41c3, [8]byte{0xb3, 0x5e, 0xb1, 0x3f, 0x55, 0xa7, 0x58, 0xf4}}
+ FOLDERID_Templates = &KNOWNFOLDERID{0xa63293e8, 0x664e, 0x48db, [8]byte{0xa0, 0x79, 0xdf, 0x75, 0x9e, 0x05, 0x09, 0xf7}}
+ FOLDERID_CommonStartup = &KNOWNFOLDERID{0x82a5ea35, 0xd9cd, 0x47c5, [8]byte{0x96, 0x29, 0xe1, 0x5d, 0x2f, 0x71, 0x4e, 0x6e}}
+ FOLDERID_CommonPrograms = &KNOWNFOLDERID{0x0139d44e, 0x6afe, 0x49f2, [8]byte{0x86, 0x90, 0x3d, 0xaf, 0xca, 0xe6, 0xff, 0xb8}}
+ FOLDERID_CommonStartMenu = &KNOWNFOLDERID{0xa4115719, 0xd62e, 0x491d, [8]byte{0xaa, 0x7c, 0xe7, 0x4b, 0x8b, 0xe3, 0xb0, 0x67}}
+ FOLDERID_PublicDesktop = &KNOWNFOLDERID{0xc4aa340d, 0xf20f, 0x4863, [8]byte{0xaf, 0xef, 0xf8, 0x7e, 0xf2, 0xe6, 0xba, 0x25}}
+ FOLDERID_ProgramData = &KNOWNFOLDERID{0x62ab5d82, 0xfdc1, 0x4dc3, [8]byte{0xa9, 0xdd, 0x07, 0x0d, 0x1d, 0x49, 0x5d, 0x97}}
+ FOLDERID_CommonTemplates = &KNOWNFOLDERID{0xb94237e7, 0x57ac, 0x4347, [8]byte{0x91, 0x51, 0xb0, 0x8c, 0x6c, 0x32, 0xd1, 0xf7}}
+ FOLDERID_PublicDocuments = &KNOWNFOLDERID{0xed4824af, 0xdce4, 0x45a8, [8]byte{0x81, 0xe2, 0xfc, 0x79, 0x65, 0x08, 0x36, 0x34}}
+ FOLDERID_RoamingAppData = &KNOWNFOLDERID{0x3eb685db, 0x65f9, 0x4cf6, [8]byte{0xa0, 0x3a, 0xe3, 0xef, 0x65, 0x72, 0x9f, 0x3d}}
+ FOLDERID_LocalAppData = &KNOWNFOLDERID{0xf1b32785, 0x6fba, 0x4fcf, [8]byte{0x9d, 0x55, 0x7b, 0x8e, 0x7f, 0x15, 0x70, 0x91}}
+ FOLDERID_LocalAppDataLow = &KNOWNFOLDERID{0xa520a1a4, 0x1780, 0x4ff6, [8]byte{0xbd, 0x18, 0x16, 0x73, 0x43, 0xc5, 0xaf, 0x16}}
+ FOLDERID_InternetCache = &KNOWNFOLDERID{0x352481e8, 0x33be, 0x4251, [8]byte{0xba, 0x85, 0x60, 0x07, 0xca, 0xed, 0xcf, 0x9d}}
+ FOLDERID_Cookies = &KNOWNFOLDERID{0x2b0f765d, 0xc0e9, 0x4171, [8]byte{0x90, 0x8e, 0x08, 0xa6, 0x11, 0xb8, 0x4f, 0xf6}}
+ FOLDERID_History = &KNOWNFOLDERID{0xd9dc8a3b, 0xb784, 0x432e, [8]byte{0xa7, 0x81, 0x5a, 0x11, 0x30, 0xa7, 0x59, 0x63}}
+ FOLDERID_System = &KNOWNFOLDERID{0x1ac14e77, 0x02e7, 0x4e5d, [8]byte{0xb7, 0x44, 0x2e, 0xb1, 0xae, 0x51, 0x98, 0xb7}}
+ FOLDERID_SystemX86 = &KNOWNFOLDERID{0xd65231b0, 0xb2f1, 0x4857, [8]byte{0xa4, 0xce, 0xa8, 0xe7, 0xc6, 0xea, 0x7d, 0x27}}
+ FOLDERID_Windows = &KNOWNFOLDERID{0xf38bf404, 0x1d43, 0x42f2, [8]byte{0x93, 0x05, 0x67, 0xde, 0x0b, 0x28, 0xfc, 0x23}}
+ FOLDERID_Profile = &KNOWNFOLDERID{0x5e6c858f, 0x0e22, 0x4760, [8]byte{0x9a, 0xfe, 0xea, 0x33, 0x17, 0xb6, 0x71, 0x73}}
+ FOLDERID_Pictures = &KNOWNFOLDERID{0x33e28130, 0x4e1e, 0x4676, [8]byte{0x83, 0x5a, 0x98, 0x39, 0x5c, 0x3b, 0xc3, 0xbb}}
+ FOLDERID_ProgramFilesX86 = &KNOWNFOLDERID{0x7c5a40ef, 0xa0fb, 0x4bfc, [8]byte{0x87, 0x4a, 0xc0, 0xf2, 0xe0, 0xb9, 0xfa, 0x8e}}
+ FOLDERID_ProgramFilesCommonX86 = &KNOWNFOLDERID{0xde974d24, 0xd9c6, 0x4d3e, [8]byte{0xbf, 0x91, 0xf4, 0x45, 0x51, 0x20, 0xb9, 0x17}}
+ FOLDERID_ProgramFilesX64 = &KNOWNFOLDERID{0x6d809377, 0x6af0, 0x444b, [8]byte{0x89, 0x57, 0xa3, 0x77, 0x3f, 0x02, 0x20, 0x0e}}
+ FOLDERID_ProgramFilesCommonX64 = &KNOWNFOLDERID{0x6365d5a7, 0x0f0d, 0x45e5, [8]byte{0x87, 0xf6, 0x0d, 0xa5, 0x6b, 0x6a, 0x4f, 0x7d}}
+ FOLDERID_ProgramFiles = &KNOWNFOLDERID{0x905e63b6, 0xc1bf, 0x494e, [8]byte{0xb2, 0x9c, 0x65, 0xb7, 0x32, 0xd3, 0xd2, 0x1a}}
+ FOLDERID_ProgramFilesCommon = &KNOWNFOLDERID{0xf7f1ed05, 0x9f6d, 0x47a2, [8]byte{0xaa, 0xae, 0x29, 0xd3, 0x17, 0xc6, 0xf0, 0x66}}
+ FOLDERID_UserProgramFiles = &KNOWNFOLDERID{0x5cd7aee2, 0x2219, 0x4a67, [8]byte{0xb8, 0x5d, 0x6c, 0x9c, 0xe1, 0x56, 0x60, 0xcb}}
+ FOLDERID_UserProgramFilesCommon = &KNOWNFOLDERID{0xbcbd3057, 0xca5c, 0x4622, [8]byte{0xb4, 0x2d, 0xbc, 0x56, 0xdb, 0x0a, 0xe5, 0x16}}
+ FOLDERID_AdminTools = &KNOWNFOLDERID{0x724ef170, 0xa42d, 0x4fef, [8]byte{0x9f, 0x26, 0xb6, 0x0e, 0x84, 0x6f, 0xba, 0x4f}}
+ FOLDERID_CommonAdminTools = &KNOWNFOLDERID{0xd0384e7d, 0xbac3, 0x4797, [8]byte{0x8f, 0x14, 0xcb, 0xa2, 0x29, 0xb3, 0x92, 0xb5}}
+ FOLDERID_Music = &KNOWNFOLDERID{0x4bd8d571, 0x6d19, 0x48d3, [8]byte{0xbe, 0x97, 0x42, 0x22, 0x20, 0x08, 0x0e, 0x43}}
+ FOLDERID_Videos = &KNOWNFOLDERID{0x18989b1d, 0x99b5, 0x455b, [8]byte{0x84, 0x1c, 0xab, 0x7c, 0x74, 0xe4, 0xdd, 0xfc}}
+ FOLDERID_Ringtones = &KNOWNFOLDERID{0xc870044b, 0xf49e, 0x4126, [8]byte{0xa9, 0xc3, 0xb5, 0x2a, 0x1f, 0xf4, 0x11, 0xe8}}
+ FOLDERID_PublicPictures = &KNOWNFOLDERID{0xb6ebfb86, 0x6907, 0x413c, [8]byte{0x9a, 0xf7, 0x4f, 0xc2, 0xab, 0xf0, 0x7c, 0xc5}}
+ FOLDERID_PublicMusic = &KNOWNFOLDERID{0x3214fab5, 0x9757, 0x4298, [8]byte{0xbb, 0x61, 0x92, 0xa9, 0xde, 0xaa, 0x44, 0xff}}
+ FOLDERID_PublicVideos = &KNOWNFOLDERID{0x2400183a, 0x6185, 0x49fb, [8]byte{0xa2, 0xd8, 0x4a, 0x39, 0x2a, 0x60, 0x2b, 0xa3}}
+ FOLDERID_PublicRingtones = &KNOWNFOLDERID{0xe555ab60, 0x153b, 0x4d17, [8]byte{0x9f, 0x04, 0xa5, 0xfe, 0x99, 0xfc, 0x15, 0xec}}
+ FOLDERID_ResourceDir = &KNOWNFOLDERID{0x8ad10c31, 0x2adb, 0x4296, [8]byte{0xa8, 0xf7, 0xe4, 0x70, 0x12, 0x32, 0xc9, 0x72}}
+ FOLDERID_LocalizedResourcesDir = &KNOWNFOLDERID{0x2a00375e, 0x224c, 0x49de, [8]byte{0xb8, 0xd1, 0x44, 0x0d, 0xf7, 0xef, 0x3d, 0xdc}}
+ FOLDERID_CommonOEMLinks = &KNOWNFOLDERID{0xc1bae2d0, 0x10df, 0x4334, [8]byte{0xbe, 0xdd, 0x7a, 0xa2, 0x0b, 0x22, 0x7a, 0x9d}}
+ FOLDERID_CDBurning = &KNOWNFOLDERID{0x9e52ab10, 0xf80d, 0x49df, [8]byte{0xac, 0xb8, 0x43, 0x30, 0xf5, 0x68, 0x78, 0x55}}
+ FOLDERID_UserProfiles = &KNOWNFOLDERID{0x0762d272, 0xc50a, 0x4bb0, [8]byte{0xa3, 0x82, 0x69, 0x7d, 0xcd, 0x72, 0x9b, 0x80}}
+ FOLDERID_Playlists = &KNOWNFOLDERID{0xde92c1c7, 0x837f, 0x4f69, [8]byte{0xa3, 0xbb, 0x86, 0xe6, 0x31, 0x20, 0x4a, 0x23}}
+ FOLDERID_SamplePlaylists = &KNOWNFOLDERID{0x15ca69b3, 0x30ee, 0x49c1, [8]byte{0xac, 0xe1, 0x6b, 0x5e, 0xc3, 0x72, 0xaf, 0xb5}}
+ FOLDERID_SampleMusic = &KNOWNFOLDERID{0xb250c668, 0xf57d, 0x4ee1, [8]byte{0xa6, 0x3c, 0x29, 0x0e, 0xe7, 0xd1, 0xaa, 0x1f}}
+ FOLDERID_SamplePictures = &KNOWNFOLDERID{0xc4900540, 0x2379, 0x4c75, [8]byte{0x84, 0x4b, 0x64, 0xe6, 0xfa, 0xf8, 0x71, 0x6b}}
+ FOLDERID_SampleVideos = &KNOWNFOLDERID{0x859ead94, 0x2e85, 0x48ad, [8]byte{0xa7, 0x1a, 0x09, 0x69, 0xcb, 0x56, 0xa6, 0xcd}}
+ FOLDERID_PhotoAlbums = &KNOWNFOLDERID{0x69d2cf90, 0xfc33, 0x4fb7, [8]byte{0x9a, 0x0c, 0xeb, 0xb0, 0xf0, 0xfc, 0xb4, 0x3c}}
+ FOLDERID_Public = &KNOWNFOLDERID{0xdfdf76a2, 0xc82a, 0x4d63, [8]byte{0x90, 0x6a, 0x56, 0x44, 0xac, 0x45, 0x73, 0x85}}
+ FOLDERID_ChangeRemovePrograms = &KNOWNFOLDERID{0xdf7266ac, 0x9274, 0x4867, [8]byte{0x8d, 0x55, 0x3b, 0xd6, 0x61, 0xde, 0x87, 0x2d}}
+ FOLDERID_AppUpdates = &KNOWNFOLDERID{0xa305ce99, 0xf527, 0x492b, [8]byte{0x8b, 0x1a, 0x7e, 0x76, 0xfa, 0x98, 0xd6, 0xe4}}
+ FOLDERID_AddNewPrograms = &KNOWNFOLDERID{0xde61d971, 0x5ebc, 0x4f02, [8]byte{0xa3, 0xa9, 0x6c, 0x82, 0x89, 0x5e, 0x5c, 0x04}}
+ FOLDERID_Downloads = &KNOWNFOLDERID{0x374de290, 0x123f, 0x4565, [8]byte{0x91, 0x64, 0x39, 0xc4, 0x92, 0x5e, 0x46, 0x7b}}
+ FOLDERID_PublicDownloads = &KNOWNFOLDERID{0x3d644c9b, 0x1fb8, 0x4f30, [8]byte{0x9b, 0x45, 0xf6, 0x70, 0x23, 0x5f, 0x79, 0xc0}}
+ FOLDERID_SavedSearches = &KNOWNFOLDERID{0x7d1d3a04, 0xdebb, 0x4115, [8]byte{0x95, 0xcf, 0x2f, 0x29, 0xda, 0x29, 0x20, 0xda}}
+ FOLDERID_QuickLaunch = &KNOWNFOLDERID{0x52a4f021, 0x7b75, 0x48a9, [8]byte{0x9f, 0x6b, 0x4b, 0x87, 0xa2, 0x10, 0xbc, 0x8f}}
+ FOLDERID_Contacts = &KNOWNFOLDERID{0x56784854, 0xc6cb, 0x462b, [8]byte{0x81, 0x69, 0x88, 0xe3, 0x50, 0xac, 0xb8, 0x82}}
+ FOLDERID_SidebarParts = &KNOWNFOLDERID{0xa75d362e, 0x50fc, 0x4fb7, [8]byte{0xac, 0x2c, 0xa8, 0xbe, 0xaa, 0x31, 0x44, 0x93}}
+ FOLDERID_SidebarDefaultParts = &KNOWNFOLDERID{0x7b396e54, 0x9ec5, 0x4300, [8]byte{0xbe, 0x0a, 0x24, 0x82, 0xeb, 0xae, 0x1a, 0x26}}
+ FOLDERID_PublicGameTasks = &KNOWNFOLDERID{0xdebf2536, 0xe1a8, 0x4c59, [8]byte{0xb6, 0xa2, 0x41, 0x45, 0x86, 0x47, 0x6a, 0xea}}
+ FOLDERID_GameTasks = &KNOWNFOLDERID{0x054fae61, 0x4dd8, 0x4787, [8]byte{0x80, 0xb6, 0x09, 0x02, 0x20, 0xc4, 0xb7, 0x00}}
+ FOLDERID_SavedGames = &KNOWNFOLDERID{0x4c5c32ff, 0xbb9d, 0x43b0, [8]byte{0xb5, 0xb4, 0x2d, 0x72, 0xe5, 0x4e, 0xaa, 0xa4}}
+ FOLDERID_Games = &KNOWNFOLDERID{0xcac52c1a, 0xb53d, 0x4edc, [8]byte{0x92, 0xd7, 0x6b, 0x2e, 0x8a, 0xc1, 0x94, 0x34}}
+ FOLDERID_SEARCH_MAPI = &KNOWNFOLDERID{0x98ec0e18, 0x2098, 0x4d44, [8]byte{0x86, 0x44, 0x66, 0x97, 0x93, 0x15, 0xa2, 0x81}}
+ FOLDERID_SEARCH_CSC = &KNOWNFOLDERID{0xee32e446, 0x31ca, 0x4aba, [8]byte{0x81, 0x4f, 0xa5, 0xeb, 0xd2, 0xfd, 0x6d, 0x5e}}
+ FOLDERID_Links = &KNOWNFOLDERID{0xbfb9d5e0, 0xc6a9, 0x404c, [8]byte{0xb2, 0xb2, 0xae, 0x6d, 0xb6, 0xaf, 0x49, 0x68}}
+ FOLDERID_UsersFiles = &KNOWNFOLDERID{0xf3ce0f7c, 0x4901, 0x4acc, [8]byte{0x86, 0x48, 0xd5, 0xd4, 0x4b, 0x04, 0xef, 0x8f}}
+ FOLDERID_UsersLibraries = &KNOWNFOLDERID{0xa302545d, 0xdeff, 0x464b, [8]byte{0xab, 0xe8, 0x61, 0xc8, 0x64, 0x8d, 0x93, 0x9b}}
+ FOLDERID_SearchHome = &KNOWNFOLDERID{0x190337d1, 0xb8ca, 0x4121, [8]byte{0xa6, 0x39, 0x6d, 0x47, 0x2d, 0x16, 0x97, 0x2a}}
+ FOLDERID_OriginalImages = &KNOWNFOLDERID{0x2c36c0aa, 0x5812, 0x4b87, [8]byte{0xbf, 0xd0, 0x4c, 0xd0, 0xdf, 0xb1, 0x9b, 0x39}}
+ FOLDERID_DocumentsLibrary = &KNOWNFOLDERID{0x7b0db17d, 0x9cd2, 0x4a93, [8]byte{0x97, 0x33, 0x46, 0xcc, 0x89, 0x02, 0x2e, 0x7c}}
+ FOLDERID_MusicLibrary = &KNOWNFOLDERID{0x2112ab0a, 0xc86a, 0x4ffe, [8]byte{0xa3, 0x68, 0x0d, 0xe9, 0x6e, 0x47, 0x01, 0x2e}}
+ FOLDERID_PicturesLibrary = &KNOWNFOLDERID{0xa990ae9f, 0xa03b, 0x4e80, [8]byte{0x94, 0xbc, 0x99, 0x12, 0xd7, 0x50, 0x41, 0x04}}
+ FOLDERID_VideosLibrary = &KNOWNFOLDERID{0x491e922f, 0x5643, 0x4af4, [8]byte{0xa7, 0xeb, 0x4e, 0x7a, 0x13, 0x8d, 0x81, 0x74}}
+ FOLDERID_RecordedTVLibrary = &KNOWNFOLDERID{0x1a6fdba2, 0xf42d, 0x4358, [8]byte{0xa7, 0x98, 0xb7, 0x4d, 0x74, 0x59, 0x26, 0xc5}}
+ FOLDERID_HomeGroup = &KNOWNFOLDERID{0x52528a6b, 0xb9e3, 0x4add, [8]byte{0xb6, 0x0d, 0x58, 0x8c, 0x2d, 0xba, 0x84, 0x2d}}
+ FOLDERID_HomeGroupCurrentUser = &KNOWNFOLDERID{0x9b74b6a3, 0x0dfd, 0x4f11, [8]byte{0x9e, 0x78, 0x5f, 0x78, 0x00, 0xf2, 0xe7, 0x72}}
+ FOLDERID_DeviceMetadataStore = &KNOWNFOLDERID{0x5ce4a5e9, 0xe4eb, 0x479d, [8]byte{0xb8, 0x9f, 0x13, 0x0c, 0x02, 0x88, 0x61, 0x55}}
+ FOLDERID_Libraries = &KNOWNFOLDERID{0x1b3ea5dc, 0xb587, 0x4786, [8]byte{0xb4, 0xef, 0xbd, 0x1d, 0xc3, 0x32, 0xae, 0xae}}
+ FOLDERID_PublicLibraries = &KNOWNFOLDERID{0x48daf80b, 0xe6cf, 0x4f4e, [8]byte{0xb8, 0x00, 0x0e, 0x69, 0xd8, 0x4e, 0xe3, 0x84}}
+ FOLDERID_UserPinned = &KNOWNFOLDERID{0x9e3995ab, 0x1f9c, 0x4f13, [8]byte{0xb8, 0x27, 0x48, 0xb2, 0x4b, 0x6c, 0x71, 0x74}}
+ FOLDERID_ImplicitAppShortcuts = &KNOWNFOLDERID{0xbcb5256f, 0x79f6, 0x4cee, [8]byte{0xb7, 0x25, 0xdc, 0x34, 0xe4, 0x02, 0xfd, 0x46}}
+ FOLDERID_AccountPictures = &KNOWNFOLDERID{0x008ca0b1, 0x55b4, 0x4c56, [8]byte{0xb8, 0xa8, 0x4d, 0xe4, 0xb2, 0x99, 0xd3, 0xbe}}
+ FOLDERID_PublicUserTiles = &KNOWNFOLDERID{0x0482af6c, 0x08f1, 0x4c34, [8]byte{0x8c, 0x90, 0xe1, 0x7e, 0xc9, 0x8b, 0x1e, 0x17}}
+ FOLDERID_AppsFolder = &KNOWNFOLDERID{0x1e87508d, 0x89c2, 0x42f0, [8]byte{0x8a, 0x7e, 0x64, 0x5a, 0x0f, 0x50, 0xca, 0x58}}
+ FOLDERID_StartMenuAllPrograms = &KNOWNFOLDERID{0xf26305ef, 0x6948, 0x40b9, [8]byte{0xb2, 0x55, 0x81, 0x45, 0x3d, 0x09, 0xc7, 0x85}}
+ FOLDERID_CommonStartMenuPlaces = &KNOWNFOLDERID{0xa440879f, 0x87a0, 0x4f7d, [8]byte{0xb7, 0x00, 0x02, 0x07, 0xb9, 0x66, 0x19, 0x4a}}
+ FOLDERID_ApplicationShortcuts = &KNOWNFOLDERID{0xa3918781, 0xe5f2, 0x4890, [8]byte{0xb3, 0xd9, 0xa7, 0xe5, 0x43, 0x32, 0x32, 0x8c}}
+ FOLDERID_RoamingTiles = &KNOWNFOLDERID{0x00bcfc5a, 0xed94, 0x4e48, [8]byte{0x96, 0xa1, 0x3f, 0x62, 0x17, 0xf2, 0x19, 0x90}}
+ FOLDERID_RoamedTileImages = &KNOWNFOLDERID{0xaaa8d5a5, 0xf1d6, 0x4259, [8]byte{0xba, 0xa8, 0x78, 0xe7, 0xef, 0x60, 0x83, 0x5e}}
+ FOLDERID_Screenshots = &KNOWNFOLDERID{0xb7bede81, 0xdf94, 0x4682, [8]byte{0xa7, 0xd8, 0x57, 0xa5, 0x26, 0x20, 0xb8, 0x6f}}
+ FOLDERID_CameraRoll = &KNOWNFOLDERID{0xab5fb87b, 0x7ce2, 0x4f83, [8]byte{0x91, 0x5d, 0x55, 0x08, 0x46, 0xc9, 0x53, 0x7b}}
+ FOLDERID_SkyDrive = &KNOWNFOLDERID{0xa52bba46, 0xe9e1, 0x435f, [8]byte{0xb3, 0xd9, 0x28, 0xda, 0xa6, 0x48, 0xc0, 0xf6}}
+ FOLDERID_OneDrive = &KNOWNFOLDERID{0xa52bba46, 0xe9e1, 0x435f, [8]byte{0xb3, 0xd9, 0x28, 0xda, 0xa6, 0x48, 0xc0, 0xf6}}
+ FOLDERID_SkyDriveDocuments = &KNOWNFOLDERID{0x24d89e24, 0x2f19, 0x4534, [8]byte{0x9d, 0xde, 0x6a, 0x66, 0x71, 0xfb, 0xb8, 0xfe}}
+ FOLDERID_SkyDrivePictures = &KNOWNFOLDERID{0x339719b5, 0x8c47, 0x4894, [8]byte{0x94, 0xc2, 0xd8, 0xf7, 0x7a, 0xdd, 0x44, 0xa6}}
+ FOLDERID_SkyDriveMusic = &KNOWNFOLDERID{0xc3f2459e, 0x80d6, 0x45dc, [8]byte{0xbf, 0xef, 0x1f, 0x76, 0x9f, 0x2b, 0xe7, 0x30}}
+ FOLDERID_SkyDriveCameraRoll = &KNOWNFOLDERID{0x767e6811, 0x49cb, 0x4273, [8]byte{0x87, 0xc2, 0x20, 0xf3, 0x55, 0xe1, 0x08, 0x5b}}
+ FOLDERID_SearchHistory = &KNOWNFOLDERID{0x0d4c3db6, 0x03a3, 0x462f, [8]byte{0xa0, 0xe6, 0x08, 0x92, 0x4c, 0x41, 0xb5, 0xd4}}
+ FOLDERID_SearchTemplates = &KNOWNFOLDERID{0x7e636bfe, 0xdfa9, 0x4d5e, [8]byte{0xb4, 0x56, 0xd7, 0xb3, 0x98, 0x51, 0xd8, 0xa9}}
+ FOLDERID_CameraRollLibrary = &KNOWNFOLDERID{0x2b20df75, 0x1eda, 0x4039, [8]byte{0x80, 0x97, 0x38, 0x79, 0x82, 0x27, 0xd5, 0xb7}}
+ FOLDERID_SavedPictures = &KNOWNFOLDERID{0x3b193882, 0xd3ad, 0x4eab, [8]byte{0x96, 0x5a, 0x69, 0x82, 0x9d, 0x1f, 0xb5, 0x9f}}
+ FOLDERID_SavedPicturesLibrary = &KNOWNFOLDERID{0xe25b5812, 0xbe88, 0x4bd9, [8]byte{0x94, 0xb0, 0x29, 0x23, 0x34, 0x77, 0xb6, 0xc3}}
+ FOLDERID_RetailDemo = &KNOWNFOLDERID{0x12d4c69e, 0x24ad, 0x4923, [8]byte{0xbe, 0x19, 0x31, 0x32, 0x1c, 0x43, 0xa7, 0x67}}
+ FOLDERID_Device = &KNOWNFOLDERID{0x1c2ac1dc, 0x4358, 0x4b6c, [8]byte{0x97, 0x33, 0xaf, 0x21, 0x15, 0x65, 0x76, 0xf0}}
+ FOLDERID_DevelopmentFiles = &KNOWNFOLDERID{0xdbe8e08e, 0x3053, 0x4bbc, [8]byte{0xb1, 0x83, 0x2a, 0x7b, 0x2b, 0x19, 0x1e, 0x59}}
+ FOLDERID_Objects3D = &KNOWNFOLDERID{0x31c0dd25, 0x9439, 0x4f12, [8]byte{0xbf, 0x41, 0x7f, 0xf4, 0xed, 0xa3, 0x87, 0x22}}
+ FOLDERID_AppCaptures = &KNOWNFOLDERID{0xedc0fe71, 0x98d8, 0x4f4a, [8]byte{0xb9, 0x20, 0xc8, 0xdc, 0x13, 0x3c, 0xb1, 0x65}}
+ FOLDERID_LocalDocuments = &KNOWNFOLDERID{0xf42ee2d3, 0x909f, 0x4907, [8]byte{0x88, 0x71, 0x4c, 0x22, 0xfc, 0x0b, 0xf7, 0x56}}
+ FOLDERID_LocalPictures = &KNOWNFOLDERID{0x0ddd015d, 0xb06c, 0x45d5, [8]byte{0x8c, 0x4c, 0xf5, 0x97, 0x13, 0x85, 0x46, 0x39}}
+ FOLDERID_LocalVideos = &KNOWNFOLDERID{0x35286a68, 0x3c57, 0x41a1, [8]byte{0xbb, 0xb1, 0x0e, 0xae, 0x73, 0xd7, 0x6c, 0x95}}
+ FOLDERID_LocalMusic = &KNOWNFOLDERID{0xa0c69a99, 0x21c8, 0x4671, [8]byte{0x87, 0x03, 0x79, 0x34, 0x16, 0x2f, 0xcf, 0x1d}}
+ FOLDERID_LocalDownloads = &KNOWNFOLDERID{0x7d83ee9b, 0x2244, 0x4e70, [8]byte{0xb1, 0xf5, 0x53, 0x93, 0x04, 0x2a, 0xf1, 0xe4}}
+ FOLDERID_RecordedCalls = &KNOWNFOLDERID{0x2f8b40c2, 0x83ed, 0x48ee, [8]byte{0xb3, 0x83, 0xa1, 0xf1, 0x57, 0xec, 0x6f, 0x9a}}
+ FOLDERID_AllAppMods = &KNOWNFOLDERID{0x7ad67899, 0x66af, 0x43ba, [8]byte{0x91, 0x56, 0x6a, 0xad, 0x42, 0xe6, 0xc5, 0x96}}
+ FOLDERID_CurrentAppMods = &KNOWNFOLDERID{0x3db40b20, 0x2a30, 0x4dbe, [8]byte{0x91, 0x7e, 0x77, 0x1d, 0xd2, 0x1d, 0xd0, 0x99}}
+ FOLDERID_AppDataDesktop = &KNOWNFOLDERID{0xb2c5e279, 0x7add, 0x439f, [8]byte{0xb2, 0x8c, 0xc4, 0x1f, 0xe1, 0xbb, 0xf6, 0x72}}
+ FOLDERID_AppDataDocuments = &KNOWNFOLDERID{0x7be16610, 0x1f7f, 0x44ac, [8]byte{0xbf, 0xf0, 0x83, 0xe1, 0x5f, 0x2f, 0xfc, 0xa1}}
+ FOLDERID_AppDataFavorites = &KNOWNFOLDERID{0x7cfbefbc, 0xde1f, 0x45aa, [8]byte{0xb8, 0x43, 0xa5, 0x42, 0xac, 0x53, 0x6c, 0xc9}}
+ FOLDERID_AppDataProgramData = &KNOWNFOLDERID{0x559d40a3, 0xa036, 0x40fa, [8]byte{0xaf, 0x61, 0x84, 0xcb, 0x43, 0x0a, 0x4d, 0x34}}
+)
diff --git a/vendor/golang.org/x/sys/windows/zsyscall_windows.go b/vendor/golang.org/x/sys/windows/zsyscall_windows.go
new file mode 100644
index 00000000..204b1db3
--- /dev/null
+++ b/vendor/golang.org/x/sys/windows/zsyscall_windows.go
@@ -0,0 +1,3146 @@
+// Code generated by 'go generate'; DO NOT EDIT.
+
+package windows
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+var _ unsafe.Pointer
+
+// Do the interface allocations only once for common
+// Errno values.
+const (
+ errnoERROR_IO_PENDING = 997
+)
+
+var (
+ errERROR_IO_PENDING error = syscall.Errno(errnoERROR_IO_PENDING)
+ errERROR_EINVAL error = syscall.EINVAL
+)
+
+// errnoErr returns common boxed Errno values, to prevent
+// allocations at runtime.
+func errnoErr(e syscall.Errno) error {
+ switch e {
+ case 0:
+ return errERROR_EINVAL
+ case errnoERROR_IO_PENDING:
+ return errERROR_IO_PENDING
+ }
+ // TODO: add more here, after collecting data on the common
+ // error values see on Windows. (perhaps when running
+ // all.bat?)
+ return e
+}
+
+var (
+ modadvapi32 = NewLazySystemDLL("advapi32.dll")
+ modcrypt32 = NewLazySystemDLL("crypt32.dll")
+ moddnsapi = NewLazySystemDLL("dnsapi.dll")
+ modiphlpapi = NewLazySystemDLL("iphlpapi.dll")
+ modkernel32 = NewLazySystemDLL("kernel32.dll")
+ modmswsock = NewLazySystemDLL("mswsock.dll")
+ modnetapi32 = NewLazySystemDLL("netapi32.dll")
+ modntdll = NewLazySystemDLL("ntdll.dll")
+ modole32 = NewLazySystemDLL("ole32.dll")
+ modpsapi = NewLazySystemDLL("psapi.dll")
+ modsecur32 = NewLazySystemDLL("secur32.dll")
+ modshell32 = NewLazySystemDLL("shell32.dll")
+ moduser32 = NewLazySystemDLL("user32.dll")
+ moduserenv = NewLazySystemDLL("userenv.dll")
+ modws2_32 = NewLazySystemDLL("ws2_32.dll")
+ modwtsapi32 = NewLazySystemDLL("wtsapi32.dll")
+
+ procAdjustTokenGroups = modadvapi32.NewProc("AdjustTokenGroups")
+ procAdjustTokenPrivileges = modadvapi32.NewProc("AdjustTokenPrivileges")
+ procAllocateAndInitializeSid = modadvapi32.NewProc("AllocateAndInitializeSid")
+ procBuildSecurityDescriptorW = modadvapi32.NewProc("BuildSecurityDescriptorW")
+ procChangeServiceConfig2W = modadvapi32.NewProc("ChangeServiceConfig2W")
+ procChangeServiceConfigW = modadvapi32.NewProc("ChangeServiceConfigW")
+ procCheckTokenMembership = modadvapi32.NewProc("CheckTokenMembership")
+ procCloseServiceHandle = modadvapi32.NewProc("CloseServiceHandle")
+ procControlService = modadvapi32.NewProc("ControlService")
+ procConvertSecurityDescriptorToStringSecurityDescriptorW = modadvapi32.NewProc("ConvertSecurityDescriptorToStringSecurityDescriptorW")
+ procConvertSidToStringSidW = modadvapi32.NewProc("ConvertSidToStringSidW")
+ procConvertStringSecurityDescriptorToSecurityDescriptorW = modadvapi32.NewProc("ConvertStringSecurityDescriptorToSecurityDescriptorW")
+ procConvertStringSidToSidW = modadvapi32.NewProc("ConvertStringSidToSidW")
+ procCopySid = modadvapi32.NewProc("CopySid")
+ procCreateServiceW = modadvapi32.NewProc("CreateServiceW")
+ procCreateWellKnownSid = modadvapi32.NewProc("CreateWellKnownSid")
+ procCryptAcquireContextW = modadvapi32.NewProc("CryptAcquireContextW")
+ procCryptGenRandom = modadvapi32.NewProc("CryptGenRandom")
+ procCryptReleaseContext = modadvapi32.NewProc("CryptReleaseContext")
+ procDeleteService = modadvapi32.NewProc("DeleteService")
+ procDeregisterEventSource = modadvapi32.NewProc("DeregisterEventSource")
+ procDuplicateTokenEx = modadvapi32.NewProc("DuplicateTokenEx")
+ procEnumServicesStatusExW = modadvapi32.NewProc("EnumServicesStatusExW")
+ procEqualSid = modadvapi32.NewProc("EqualSid")
+ procFreeSid = modadvapi32.NewProc("FreeSid")
+ procGetLengthSid = modadvapi32.NewProc("GetLengthSid")
+ procGetNamedSecurityInfoW = modadvapi32.NewProc("GetNamedSecurityInfoW")
+ procGetSecurityDescriptorControl = modadvapi32.NewProc("GetSecurityDescriptorControl")
+ procGetSecurityDescriptorDacl = modadvapi32.NewProc("GetSecurityDescriptorDacl")
+ procGetSecurityDescriptorGroup = modadvapi32.NewProc("GetSecurityDescriptorGroup")
+ procGetSecurityDescriptorLength = modadvapi32.NewProc("GetSecurityDescriptorLength")
+ procGetSecurityDescriptorOwner = modadvapi32.NewProc("GetSecurityDescriptorOwner")
+ procGetSecurityDescriptorRMControl = modadvapi32.NewProc("GetSecurityDescriptorRMControl")
+ procGetSecurityDescriptorSacl = modadvapi32.NewProc("GetSecurityDescriptorSacl")
+ procGetSecurityInfo = modadvapi32.NewProc("GetSecurityInfo")
+ procGetSidIdentifierAuthority = modadvapi32.NewProc("GetSidIdentifierAuthority")
+ procGetSidSubAuthority = modadvapi32.NewProc("GetSidSubAuthority")
+ procGetSidSubAuthorityCount = modadvapi32.NewProc("GetSidSubAuthorityCount")
+ procGetTokenInformation = modadvapi32.NewProc("GetTokenInformation")
+ procImpersonateSelf = modadvapi32.NewProc("ImpersonateSelf")
+ procInitializeSecurityDescriptor = modadvapi32.NewProc("InitializeSecurityDescriptor")
+ procInitiateSystemShutdownExW = modadvapi32.NewProc("InitiateSystemShutdownExW")
+ procIsTokenRestricted = modadvapi32.NewProc("IsTokenRestricted")
+ procIsValidSecurityDescriptor = modadvapi32.NewProc("IsValidSecurityDescriptor")
+ procIsValidSid = modadvapi32.NewProc("IsValidSid")
+ procIsWellKnownSid = modadvapi32.NewProc("IsWellKnownSid")
+ procLookupAccountNameW = modadvapi32.NewProc("LookupAccountNameW")
+ procLookupAccountSidW = modadvapi32.NewProc("LookupAccountSidW")
+ procLookupPrivilegeValueW = modadvapi32.NewProc("LookupPrivilegeValueW")
+ procMakeAbsoluteSD = modadvapi32.NewProc("MakeAbsoluteSD")
+ procMakeSelfRelativeSD = modadvapi32.NewProc("MakeSelfRelativeSD")
+ procNotifyServiceStatusChangeW = modadvapi32.NewProc("NotifyServiceStatusChangeW")
+ procOpenProcessToken = modadvapi32.NewProc("OpenProcessToken")
+ procOpenSCManagerW = modadvapi32.NewProc("OpenSCManagerW")
+ procOpenServiceW = modadvapi32.NewProc("OpenServiceW")
+ procOpenThreadToken = modadvapi32.NewProc("OpenThreadToken")
+ procQueryServiceConfig2W = modadvapi32.NewProc("QueryServiceConfig2W")
+ procQueryServiceConfigW = modadvapi32.NewProc("QueryServiceConfigW")
+ procQueryServiceLockStatusW = modadvapi32.NewProc("QueryServiceLockStatusW")
+ procQueryServiceStatus = modadvapi32.NewProc("QueryServiceStatus")
+ procQueryServiceStatusEx = modadvapi32.NewProc("QueryServiceStatusEx")
+ procRegCloseKey = modadvapi32.NewProc("RegCloseKey")
+ procRegEnumKeyExW = modadvapi32.NewProc("RegEnumKeyExW")
+ procRegOpenKeyExW = modadvapi32.NewProc("RegOpenKeyExW")
+ procRegQueryInfoKeyW = modadvapi32.NewProc("RegQueryInfoKeyW")
+ procRegQueryValueExW = modadvapi32.NewProc("RegQueryValueExW")
+ procRegisterEventSourceW = modadvapi32.NewProc("RegisterEventSourceW")
+ procReportEventW = modadvapi32.NewProc("ReportEventW")
+ procRevertToSelf = modadvapi32.NewProc("RevertToSelf")
+ procSetEntriesInAclW = modadvapi32.NewProc("SetEntriesInAclW")
+ procSetKernelObjectSecurity = modadvapi32.NewProc("SetKernelObjectSecurity")
+ procSetNamedSecurityInfoW = modadvapi32.NewProc("SetNamedSecurityInfoW")
+ procSetSecurityDescriptorControl = modadvapi32.NewProc("SetSecurityDescriptorControl")
+ procSetSecurityDescriptorDacl = modadvapi32.NewProc("SetSecurityDescriptorDacl")
+ procSetSecurityDescriptorGroup = modadvapi32.NewProc("SetSecurityDescriptorGroup")
+ procSetSecurityDescriptorOwner = modadvapi32.NewProc("SetSecurityDescriptorOwner")
+ procSetSecurityDescriptorRMControl = modadvapi32.NewProc("SetSecurityDescriptorRMControl")
+ procSetSecurityDescriptorSacl = modadvapi32.NewProc("SetSecurityDescriptorSacl")
+ procSetSecurityInfo = modadvapi32.NewProc("SetSecurityInfo")
+ procSetServiceStatus = modadvapi32.NewProc("SetServiceStatus")
+ procSetThreadToken = modadvapi32.NewProc("SetThreadToken")
+ procSetTokenInformation = modadvapi32.NewProc("SetTokenInformation")
+ procStartServiceCtrlDispatcherW = modadvapi32.NewProc("StartServiceCtrlDispatcherW")
+ procStartServiceW = modadvapi32.NewProc("StartServiceW")
+ procCertAddCertificateContextToStore = modcrypt32.NewProc("CertAddCertificateContextToStore")
+ procCertCloseStore = modcrypt32.NewProc("CertCloseStore")
+ procCertCreateCertificateContext = modcrypt32.NewProc("CertCreateCertificateContext")
+ procCertDeleteCertificateFromStore = modcrypt32.NewProc("CertDeleteCertificateFromStore")
+ procCertEnumCertificatesInStore = modcrypt32.NewProc("CertEnumCertificatesInStore")
+ procCertFreeCertificateChain = modcrypt32.NewProc("CertFreeCertificateChain")
+ procCertFreeCertificateContext = modcrypt32.NewProc("CertFreeCertificateContext")
+ procCertGetCertificateChain = modcrypt32.NewProc("CertGetCertificateChain")
+ procCertOpenStore = modcrypt32.NewProc("CertOpenStore")
+ procCertOpenSystemStoreW = modcrypt32.NewProc("CertOpenSystemStoreW")
+ procCertVerifyCertificateChainPolicy = modcrypt32.NewProc("CertVerifyCertificateChainPolicy")
+ procDnsNameCompare_W = moddnsapi.NewProc("DnsNameCompare_W")
+ procDnsQuery_W = moddnsapi.NewProc("DnsQuery_W")
+ procDnsRecordListFree = moddnsapi.NewProc("DnsRecordListFree")
+ procGetAdaptersAddresses = modiphlpapi.NewProc("GetAdaptersAddresses")
+ procGetAdaptersInfo = modiphlpapi.NewProc("GetAdaptersInfo")
+ procGetIfEntry = modiphlpapi.NewProc("GetIfEntry")
+ procAssignProcessToJobObject = modkernel32.NewProc("AssignProcessToJobObject")
+ procCancelIo = modkernel32.NewProc("CancelIo")
+ procCancelIoEx = modkernel32.NewProc("CancelIoEx")
+ procCloseHandle = modkernel32.NewProc("CloseHandle")
+ procCreateDirectoryW = modkernel32.NewProc("CreateDirectoryW")
+ procCreateEventExW = modkernel32.NewProc("CreateEventExW")
+ procCreateEventW = modkernel32.NewProc("CreateEventW")
+ procCreateFileMappingW = modkernel32.NewProc("CreateFileMappingW")
+ procCreateFileW = modkernel32.NewProc("CreateFileW")
+ procCreateHardLinkW = modkernel32.NewProc("CreateHardLinkW")
+ procCreateIoCompletionPort = modkernel32.NewProc("CreateIoCompletionPort")
+ procCreateJobObjectW = modkernel32.NewProc("CreateJobObjectW")
+ procCreateMutexExW = modkernel32.NewProc("CreateMutexExW")
+ procCreateMutexW = modkernel32.NewProc("CreateMutexW")
+ procCreatePipe = modkernel32.NewProc("CreatePipe")
+ procCreateProcessW = modkernel32.NewProc("CreateProcessW")
+ procCreateSymbolicLinkW = modkernel32.NewProc("CreateSymbolicLinkW")
+ procCreateToolhelp32Snapshot = modkernel32.NewProc("CreateToolhelp32Snapshot")
+ procDefineDosDeviceW = modkernel32.NewProc("DefineDosDeviceW")
+ procDeleteFileW = modkernel32.NewProc("DeleteFileW")
+ procDeleteVolumeMountPointW = modkernel32.NewProc("DeleteVolumeMountPointW")
+ procDeviceIoControl = modkernel32.NewProc("DeviceIoControl")
+ procDuplicateHandle = modkernel32.NewProc("DuplicateHandle")
+ procExitProcess = modkernel32.NewProc("ExitProcess")
+ procFindClose = modkernel32.NewProc("FindClose")
+ procFindFirstFileW = modkernel32.NewProc("FindFirstFileW")
+ procFindFirstVolumeMountPointW = modkernel32.NewProc("FindFirstVolumeMountPointW")
+ procFindFirstVolumeW = modkernel32.NewProc("FindFirstVolumeW")
+ procFindNextFileW = modkernel32.NewProc("FindNextFileW")
+ procFindNextVolumeMountPointW = modkernel32.NewProc("FindNextVolumeMountPointW")
+ procFindNextVolumeW = modkernel32.NewProc("FindNextVolumeW")
+ procFindVolumeClose = modkernel32.NewProc("FindVolumeClose")
+ procFindVolumeMountPointClose = modkernel32.NewProc("FindVolumeMountPointClose")
+ procFlushFileBuffers = modkernel32.NewProc("FlushFileBuffers")
+ procFlushViewOfFile = modkernel32.NewProc("FlushViewOfFile")
+ procFormatMessageW = modkernel32.NewProc("FormatMessageW")
+ procFreeEnvironmentStringsW = modkernel32.NewProc("FreeEnvironmentStringsW")
+ procFreeLibrary = modkernel32.NewProc("FreeLibrary")
+ procGenerateConsoleCtrlEvent = modkernel32.NewProc("GenerateConsoleCtrlEvent")
+ procGetACP = modkernel32.NewProc("GetACP")
+ procGetCommandLineW = modkernel32.NewProc("GetCommandLineW")
+ procGetComputerNameExW = modkernel32.NewProc("GetComputerNameExW")
+ procGetComputerNameW = modkernel32.NewProc("GetComputerNameW")
+ procGetConsoleMode = modkernel32.NewProc("GetConsoleMode")
+ procGetConsoleScreenBufferInfo = modkernel32.NewProc("GetConsoleScreenBufferInfo")
+ procGetCurrentDirectoryW = modkernel32.NewProc("GetCurrentDirectoryW")
+ procGetCurrentProcessId = modkernel32.NewProc("GetCurrentProcessId")
+ procGetCurrentThreadId = modkernel32.NewProc("GetCurrentThreadId")
+ procGetDiskFreeSpaceExW = modkernel32.NewProc("GetDiskFreeSpaceExW")
+ procGetDriveTypeW = modkernel32.NewProc("GetDriveTypeW")
+ procGetEnvironmentStringsW = modkernel32.NewProc("GetEnvironmentStringsW")
+ procGetEnvironmentVariableW = modkernel32.NewProc("GetEnvironmentVariableW")
+ procGetExitCodeProcess = modkernel32.NewProc("GetExitCodeProcess")
+ procGetFileAttributesExW = modkernel32.NewProc("GetFileAttributesExW")
+ procGetFileAttributesW = modkernel32.NewProc("GetFileAttributesW")
+ procGetFileInformationByHandle = modkernel32.NewProc("GetFileInformationByHandle")
+ procGetFileInformationByHandleEx = modkernel32.NewProc("GetFileInformationByHandleEx")
+ procGetFileType = modkernel32.NewProc("GetFileType")
+ procGetFinalPathNameByHandleW = modkernel32.NewProc("GetFinalPathNameByHandleW")
+ procGetFullPathNameW = modkernel32.NewProc("GetFullPathNameW")
+ procGetLastError = modkernel32.NewProc("GetLastError")
+ procGetLogicalDriveStringsW = modkernel32.NewProc("GetLogicalDriveStringsW")
+ procGetLogicalDrives = modkernel32.NewProc("GetLogicalDrives")
+ procGetLongPathNameW = modkernel32.NewProc("GetLongPathNameW")
+ procGetModuleFileNameW = modkernel32.NewProc("GetModuleFileNameW")
+ procGetModuleHandleExW = modkernel32.NewProc("GetModuleHandleExW")
+ procGetOverlappedResult = modkernel32.NewProc("GetOverlappedResult")
+ procGetPriorityClass = modkernel32.NewProc("GetPriorityClass")
+ procGetProcAddress = modkernel32.NewProc("GetProcAddress")
+ procGetProcessId = modkernel32.NewProc("GetProcessId")
+ procGetProcessPreferredUILanguages = modkernel32.NewProc("GetProcessPreferredUILanguages")
+ procGetProcessShutdownParameters = modkernel32.NewProc("GetProcessShutdownParameters")
+ procGetProcessTimes = modkernel32.NewProc("GetProcessTimes")
+ procGetProcessWorkingSetSizeEx = modkernel32.NewProc("GetProcessWorkingSetSizeEx")
+ procGetQueuedCompletionStatus = modkernel32.NewProc("GetQueuedCompletionStatus")
+ procGetShortPathNameW = modkernel32.NewProc("GetShortPathNameW")
+ procGetStartupInfoW = modkernel32.NewProc("GetStartupInfoW")
+ procGetStdHandle = modkernel32.NewProc("GetStdHandle")
+ procGetSystemDirectoryW = modkernel32.NewProc("GetSystemDirectoryW")
+ procGetSystemPreferredUILanguages = modkernel32.NewProc("GetSystemPreferredUILanguages")
+ procGetSystemTimeAsFileTime = modkernel32.NewProc("GetSystemTimeAsFileTime")
+ procGetSystemTimePreciseAsFileTime = modkernel32.NewProc("GetSystemTimePreciseAsFileTime")
+ procGetSystemWindowsDirectoryW = modkernel32.NewProc("GetSystemWindowsDirectoryW")
+ procGetTempPathW = modkernel32.NewProc("GetTempPathW")
+ procGetThreadPreferredUILanguages = modkernel32.NewProc("GetThreadPreferredUILanguages")
+ procGetTickCount64 = modkernel32.NewProc("GetTickCount64")
+ procGetTimeZoneInformation = modkernel32.NewProc("GetTimeZoneInformation")
+ procGetUserPreferredUILanguages = modkernel32.NewProc("GetUserPreferredUILanguages")
+ procGetVersion = modkernel32.NewProc("GetVersion")
+ procGetVolumeInformationByHandleW = modkernel32.NewProc("GetVolumeInformationByHandleW")
+ procGetVolumeInformationW = modkernel32.NewProc("GetVolumeInformationW")
+ procGetVolumeNameForVolumeMountPointW = modkernel32.NewProc("GetVolumeNameForVolumeMountPointW")
+ procGetVolumePathNameW = modkernel32.NewProc("GetVolumePathNameW")
+ procGetVolumePathNamesForVolumeNameW = modkernel32.NewProc("GetVolumePathNamesForVolumeNameW")
+ procGetWindowsDirectoryW = modkernel32.NewProc("GetWindowsDirectoryW")
+ procIsWow64Process = modkernel32.NewProc("IsWow64Process")
+ procIsWow64Process2 = modkernel32.NewProc("IsWow64Process2")
+ procLoadLibraryExW = modkernel32.NewProc("LoadLibraryExW")
+ procLoadLibraryW = modkernel32.NewProc("LoadLibraryW")
+ procLocalFree = modkernel32.NewProc("LocalFree")
+ procLockFileEx = modkernel32.NewProc("LockFileEx")
+ procMapViewOfFile = modkernel32.NewProc("MapViewOfFile")
+ procMoveFileExW = modkernel32.NewProc("MoveFileExW")
+ procMoveFileW = modkernel32.NewProc("MoveFileW")
+ procMultiByteToWideChar = modkernel32.NewProc("MultiByteToWideChar")
+ procOpenEventW = modkernel32.NewProc("OpenEventW")
+ procOpenMutexW = modkernel32.NewProc("OpenMutexW")
+ procOpenProcess = modkernel32.NewProc("OpenProcess")
+ procOpenThread = modkernel32.NewProc("OpenThread")
+ procPostQueuedCompletionStatus = modkernel32.NewProc("PostQueuedCompletionStatus")
+ procProcess32FirstW = modkernel32.NewProc("Process32FirstW")
+ procProcess32NextW = modkernel32.NewProc("Process32NextW")
+ procProcessIdToSessionId = modkernel32.NewProc("ProcessIdToSessionId")
+ procPulseEvent = modkernel32.NewProc("PulseEvent")
+ procQueryDosDeviceW = modkernel32.NewProc("QueryDosDeviceW")
+ procQueryInformationJobObject = modkernel32.NewProc("QueryInformationJobObject")
+ procReadConsoleW = modkernel32.NewProc("ReadConsoleW")
+ procReadDirectoryChangesW = modkernel32.NewProc("ReadDirectoryChangesW")
+ procReadFile = modkernel32.NewProc("ReadFile")
+ procReleaseMutex = modkernel32.NewProc("ReleaseMutex")
+ procRemoveDirectoryW = modkernel32.NewProc("RemoveDirectoryW")
+ procResetEvent = modkernel32.NewProc("ResetEvent")
+ procResumeThread = modkernel32.NewProc("ResumeThread")
+ procSetConsoleCursorPosition = modkernel32.NewProc("SetConsoleCursorPosition")
+ procSetConsoleMode = modkernel32.NewProc("SetConsoleMode")
+ procSetCurrentDirectoryW = modkernel32.NewProc("SetCurrentDirectoryW")
+ procSetDefaultDllDirectories = modkernel32.NewProc("SetDefaultDllDirectories")
+ procSetDllDirectoryW = modkernel32.NewProc("SetDllDirectoryW")
+ procSetEndOfFile = modkernel32.NewProc("SetEndOfFile")
+ procSetEnvironmentVariableW = modkernel32.NewProc("SetEnvironmentVariableW")
+ procSetErrorMode = modkernel32.NewProc("SetErrorMode")
+ procSetEvent = modkernel32.NewProc("SetEvent")
+ procSetFileAttributesW = modkernel32.NewProc("SetFileAttributesW")
+ procSetFileCompletionNotificationModes = modkernel32.NewProc("SetFileCompletionNotificationModes")
+ procSetFileInformationByHandle = modkernel32.NewProc("SetFileInformationByHandle")
+ procSetFilePointer = modkernel32.NewProc("SetFilePointer")
+ procSetFileTime = modkernel32.NewProc("SetFileTime")
+ procSetHandleInformation = modkernel32.NewProc("SetHandleInformation")
+ procSetInformationJobObject = modkernel32.NewProc("SetInformationJobObject")
+ procSetPriorityClass = modkernel32.NewProc("SetPriorityClass")
+ procSetProcessPriorityBoost = modkernel32.NewProc("SetProcessPriorityBoost")
+ procSetProcessShutdownParameters = modkernel32.NewProc("SetProcessShutdownParameters")
+ procSetProcessWorkingSetSizeEx = modkernel32.NewProc("SetProcessWorkingSetSizeEx")
+ procSetStdHandle = modkernel32.NewProc("SetStdHandle")
+ procSetVolumeLabelW = modkernel32.NewProc("SetVolumeLabelW")
+ procSetVolumeMountPointW = modkernel32.NewProc("SetVolumeMountPointW")
+ procSleepEx = modkernel32.NewProc("SleepEx")
+ procTerminateJobObject = modkernel32.NewProc("TerminateJobObject")
+ procTerminateProcess = modkernel32.NewProc("TerminateProcess")
+ procThread32First = modkernel32.NewProc("Thread32First")
+ procThread32Next = modkernel32.NewProc("Thread32Next")
+ procUnlockFileEx = modkernel32.NewProc("UnlockFileEx")
+ procUnmapViewOfFile = modkernel32.NewProc("UnmapViewOfFile")
+ procVirtualAlloc = modkernel32.NewProc("VirtualAlloc")
+ procVirtualFree = modkernel32.NewProc("VirtualFree")
+ procVirtualLock = modkernel32.NewProc("VirtualLock")
+ procVirtualProtect = modkernel32.NewProc("VirtualProtect")
+ procVirtualUnlock = modkernel32.NewProc("VirtualUnlock")
+ procWaitForMultipleObjects = modkernel32.NewProc("WaitForMultipleObjects")
+ procWaitForSingleObject = modkernel32.NewProc("WaitForSingleObject")
+ procWriteConsoleW = modkernel32.NewProc("WriteConsoleW")
+ procWriteFile = modkernel32.NewProc("WriteFile")
+ procAcceptEx = modmswsock.NewProc("AcceptEx")
+ procGetAcceptExSockaddrs = modmswsock.NewProc("GetAcceptExSockaddrs")
+ procTransmitFile = modmswsock.NewProc("TransmitFile")
+ procNetApiBufferFree = modnetapi32.NewProc("NetApiBufferFree")
+ procNetGetJoinInformation = modnetapi32.NewProc("NetGetJoinInformation")
+ procNetUserGetInfo = modnetapi32.NewProc("NetUserGetInfo")
+ procRtlGetNtVersionNumbers = modntdll.NewProc("RtlGetNtVersionNumbers")
+ procRtlGetVersion = modntdll.NewProc("RtlGetVersion")
+ procCLSIDFromString = modole32.NewProc("CLSIDFromString")
+ procCoCreateGuid = modole32.NewProc("CoCreateGuid")
+ procCoTaskMemFree = modole32.NewProc("CoTaskMemFree")
+ procStringFromGUID2 = modole32.NewProc("StringFromGUID2")
+ procEnumProcesses = modpsapi.NewProc("EnumProcesses")
+ procGetUserNameExW = modsecur32.NewProc("GetUserNameExW")
+ procTranslateNameW = modsecur32.NewProc("TranslateNameW")
+ procCommandLineToArgvW = modshell32.NewProc("CommandLineToArgvW")
+ procSHGetKnownFolderPath = modshell32.NewProc("SHGetKnownFolderPath")
+ procShellExecuteW = modshell32.NewProc("ShellExecuteW")
+ procExitWindowsEx = moduser32.NewProc("ExitWindowsEx")
+ procMessageBoxW = moduser32.NewProc("MessageBoxW")
+ procCreateEnvironmentBlock = moduserenv.NewProc("CreateEnvironmentBlock")
+ procDestroyEnvironmentBlock = moduserenv.NewProc("DestroyEnvironmentBlock")
+ procGetUserProfileDirectoryW = moduserenv.NewProc("GetUserProfileDirectoryW")
+ procFreeAddrInfoW = modws2_32.NewProc("FreeAddrInfoW")
+ procGetAddrInfoW = modws2_32.NewProc("GetAddrInfoW")
+ procWSACleanup = modws2_32.NewProc("WSACleanup")
+ procWSAEnumProtocolsW = modws2_32.NewProc("WSAEnumProtocolsW")
+ procWSAIoctl = modws2_32.NewProc("WSAIoctl")
+ procWSARecv = modws2_32.NewProc("WSARecv")
+ procWSARecvFrom = modws2_32.NewProc("WSARecvFrom")
+ procWSASend = modws2_32.NewProc("WSASend")
+ procWSASendTo = modws2_32.NewProc("WSASendTo")
+ procWSAStartup = modws2_32.NewProc("WSAStartup")
+ procbind = modws2_32.NewProc("bind")
+ procclosesocket = modws2_32.NewProc("closesocket")
+ procconnect = modws2_32.NewProc("connect")
+ procgethostbyname = modws2_32.NewProc("gethostbyname")
+ procgetpeername = modws2_32.NewProc("getpeername")
+ procgetprotobyname = modws2_32.NewProc("getprotobyname")
+ procgetservbyname = modws2_32.NewProc("getservbyname")
+ procgetsockname = modws2_32.NewProc("getsockname")
+ procgetsockopt = modws2_32.NewProc("getsockopt")
+ proclisten = modws2_32.NewProc("listen")
+ procntohs = modws2_32.NewProc("ntohs")
+ procrecvfrom = modws2_32.NewProc("recvfrom")
+ procsendto = modws2_32.NewProc("sendto")
+ procsetsockopt = modws2_32.NewProc("setsockopt")
+ procshutdown = modws2_32.NewProc("shutdown")
+ procsocket = modws2_32.NewProc("socket")
+ procWTSEnumerateSessionsW = modwtsapi32.NewProc("WTSEnumerateSessionsW")
+ procWTSFreeMemory = modwtsapi32.NewProc("WTSFreeMemory")
+ procWTSQueryUserToken = modwtsapi32.NewProc("WTSQueryUserToken")
+)
+
+func AdjustTokenGroups(token Token, resetToDefault bool, newstate *Tokengroups, buflen uint32, prevstate *Tokengroups, returnlen *uint32) (err error) {
+ var _p0 uint32
+ if resetToDefault {
+ _p0 = 1
+ }
+ r1, _, e1 := syscall.Syscall6(procAdjustTokenGroups.Addr(), 6, uintptr(token), uintptr(_p0), uintptr(unsafe.Pointer(newstate)), uintptr(buflen), uintptr(unsafe.Pointer(prevstate)), uintptr(unsafe.Pointer(returnlen)))
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func AdjustTokenPrivileges(token Token, disableAllPrivileges bool, newstate *Tokenprivileges, buflen uint32, prevstate *Tokenprivileges, returnlen *uint32) (err error) {
+ var _p0 uint32
+ if disableAllPrivileges {
+ _p0 = 1
+ }
+ r1, _, e1 := syscall.Syscall6(procAdjustTokenPrivileges.Addr(), 6, uintptr(token), uintptr(_p0), uintptr(unsafe.Pointer(newstate)), uintptr(buflen), uintptr(unsafe.Pointer(prevstate)), uintptr(unsafe.Pointer(returnlen)))
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func AllocateAndInitializeSid(identAuth *SidIdentifierAuthority, subAuth byte, subAuth0 uint32, subAuth1 uint32, subAuth2 uint32, subAuth3 uint32, subAuth4 uint32, subAuth5 uint32, subAuth6 uint32, subAuth7 uint32, sid **SID) (err error) {
+ r1, _, e1 := syscall.Syscall12(procAllocateAndInitializeSid.Addr(), 11, uintptr(unsafe.Pointer(identAuth)), uintptr(subAuth), uintptr(subAuth0), uintptr(subAuth1), uintptr(subAuth2), uintptr(subAuth3), uintptr(subAuth4), uintptr(subAuth5), uintptr(subAuth6), uintptr(subAuth7), uintptr(unsafe.Pointer(sid)), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func buildSecurityDescriptor(owner *TRUSTEE, group *TRUSTEE, countAccessEntries uint32, accessEntries *EXPLICIT_ACCESS, countAuditEntries uint32, auditEntries *EXPLICIT_ACCESS, oldSecurityDescriptor *SECURITY_DESCRIPTOR, sizeNewSecurityDescriptor *uint32, newSecurityDescriptor **SECURITY_DESCRIPTOR) (ret error) {
+ r0, _, _ := syscall.Syscall9(procBuildSecurityDescriptorW.Addr(), 9, uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(countAccessEntries), uintptr(unsafe.Pointer(accessEntries)), uintptr(countAuditEntries), uintptr(unsafe.Pointer(auditEntries)), uintptr(unsafe.Pointer(oldSecurityDescriptor)), uintptr(unsafe.Pointer(sizeNewSecurityDescriptor)), uintptr(unsafe.Pointer(newSecurityDescriptor)))
+ if r0 != 0 {
+ ret = syscall.Errno(r0)
+ }
+ return
+}
+
+func ChangeServiceConfig2(service Handle, infoLevel uint32, info *byte) (err error) {
+ r1, _, e1 := syscall.Syscall(procChangeServiceConfig2W.Addr(), 3, uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(info)))
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func ChangeServiceConfig(service Handle, serviceType uint32, startType uint32, errorControl uint32, binaryPathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16, displayName *uint16) (err error) {
+ r1, _, e1 := syscall.Syscall12(procChangeServiceConfigW.Addr(), 11, uintptr(service), uintptr(serviceType), uintptr(startType), uintptr(errorControl), uintptr(unsafe.Pointer(binaryPathName)), uintptr(unsafe.Pointer(loadOrderGroup)), uintptr(unsafe.Pointer(tagId)), uintptr(unsafe.Pointer(dependencies)), uintptr(unsafe.Pointer(serviceStartName)), uintptr(unsafe.Pointer(password)), uintptr(unsafe.Pointer(displayName)), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func checkTokenMembership(tokenHandle Token, sidToCheck *SID, isMember *int32) (err error) {
+ r1, _, e1 := syscall.Syscall(procCheckTokenMembership.Addr(), 3, uintptr(tokenHandle), uintptr(unsafe.Pointer(sidToCheck)), uintptr(unsafe.Pointer(isMember)))
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func CloseServiceHandle(handle Handle) (err error) {
+ r1, _, e1 := syscall.Syscall(procCloseServiceHandle.Addr(), 1, uintptr(handle), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func ControlService(service Handle, control uint32, status *SERVICE_STATUS) (err error) {
+ r1, _, e1 := syscall.Syscall(procControlService.Addr(), 3, uintptr(service), uintptr(control), uintptr(unsafe.Pointer(status)))
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func convertSecurityDescriptorToStringSecurityDescriptor(sd *SECURITY_DESCRIPTOR, revision uint32, securityInformation SECURITY_INFORMATION, str **uint16, strLen *uint32) (err error) {
+ r1, _, e1 := syscall.Syscall6(procConvertSecurityDescriptorToStringSecurityDescriptorW.Addr(), 5, uintptr(unsafe.Pointer(sd)), uintptr(revision), uintptr(securityInformation), uintptr(unsafe.Pointer(str)), uintptr(unsafe.Pointer(strLen)), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func ConvertSidToStringSid(sid *SID, stringSid **uint16) (err error) {
+ r1, _, e1 := syscall.Syscall(procConvertSidToStringSidW.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(stringSid)), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func convertStringSecurityDescriptorToSecurityDescriptor(str string, revision uint32, sd **SECURITY_DESCRIPTOR, size *uint32) (err error) {
+ var _p0 *uint16
+ _p0, err = syscall.UTF16PtrFromString(str)
+ if err != nil {
+ return
+ }
+ return _convertStringSecurityDescriptorToSecurityDescriptor(_p0, revision, sd, size)
+}
+
+func _convertStringSecurityDescriptorToSecurityDescriptor(str *uint16, revision uint32, sd **SECURITY_DESCRIPTOR, size *uint32) (err error) {
+ r1, _, e1 := syscall.Syscall6(procConvertStringSecurityDescriptorToSecurityDescriptorW.Addr(), 4, uintptr(unsafe.Pointer(str)), uintptr(revision), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(size)), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func ConvertStringSidToSid(stringSid *uint16, sid **SID) (err error) {
+ r1, _, e1 := syscall.Syscall(procConvertStringSidToSidW.Addr(), 2, uintptr(unsafe.Pointer(stringSid)), uintptr(unsafe.Pointer(sid)), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func CopySid(destSidLen uint32, destSid *SID, srcSid *SID) (err error) {
+ r1, _, e1 := syscall.Syscall(procCopySid.Addr(), 3, uintptr(destSidLen), uintptr(unsafe.Pointer(destSid)), uintptr(unsafe.Pointer(srcSid)))
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func CreateService(mgr Handle, serviceName *uint16, displayName *uint16, access uint32, srvType uint32, startType uint32, errCtl uint32, pathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16) (handle Handle, err error) {
+ r0, _, e1 := syscall.Syscall15(procCreateServiceW.Addr(), 13, uintptr(mgr), uintptr(unsafe.Pointer(serviceName)), uintptr(unsafe.Pointer(displayName)), uintptr(access), uintptr(srvType), uintptr(startType), uintptr(errCtl), uintptr(unsafe.Pointer(pathName)), uintptr(unsafe.Pointer(loadOrderGroup)), uintptr(unsafe.Pointer(tagId)), uintptr(unsafe.Pointer(dependencies)), uintptr(unsafe.Pointer(serviceStartName)), uintptr(unsafe.Pointer(password)), 0, 0)
+ handle = Handle(r0)
+ if handle == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func createWellKnownSid(sidType WELL_KNOWN_SID_TYPE, domainSid *SID, sid *SID, sizeSid *uint32) (err error) {
+ r1, _, e1 := syscall.Syscall6(procCreateWellKnownSid.Addr(), 4, uintptr(sidType), uintptr(unsafe.Pointer(domainSid)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sizeSid)), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func CryptAcquireContext(provhandle *Handle, container *uint16, provider *uint16, provtype uint32, flags uint32) (err error) {
+ r1, _, e1 := syscall.Syscall6(procCryptAcquireContextW.Addr(), 5, uintptr(unsafe.Pointer(provhandle)), uintptr(unsafe.Pointer(container)), uintptr(unsafe.Pointer(provider)), uintptr(provtype), uintptr(flags), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func CryptGenRandom(provhandle Handle, buflen uint32, buf *byte) (err error) {
+ r1, _, e1 := syscall.Syscall(procCryptGenRandom.Addr(), 3, uintptr(provhandle), uintptr(buflen), uintptr(unsafe.Pointer(buf)))
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func CryptReleaseContext(provhandle Handle, flags uint32) (err error) {
+ r1, _, e1 := syscall.Syscall(procCryptReleaseContext.Addr(), 2, uintptr(provhandle), uintptr(flags), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func DeleteService(service Handle) (err error) {
+ r1, _, e1 := syscall.Syscall(procDeleteService.Addr(), 1, uintptr(service), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func DeregisterEventSource(handle Handle) (err error) {
+ r1, _, e1 := syscall.Syscall(procDeregisterEventSource.Addr(), 1, uintptr(handle), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func DuplicateTokenEx(existingToken Token, desiredAccess uint32, tokenAttributes *SecurityAttributes, impersonationLevel uint32, tokenType uint32, newToken *Token) (err error) {
+ r1, _, e1 := syscall.Syscall6(procDuplicateTokenEx.Addr(), 6, uintptr(existingToken), uintptr(desiredAccess), uintptr(unsafe.Pointer(tokenAttributes)), uintptr(impersonationLevel), uintptr(tokenType), uintptr(unsafe.Pointer(newToken)))
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func EnumServicesStatusEx(mgr Handle, infoLevel uint32, serviceType uint32, serviceState uint32, services *byte, bufSize uint32, bytesNeeded *uint32, servicesReturned *uint32, resumeHandle *uint32, groupName *uint16) (err error) {
+ r1, _, e1 := syscall.Syscall12(procEnumServicesStatusExW.Addr(), 10, uintptr(mgr), uintptr(infoLevel), uintptr(serviceType), uintptr(serviceState), uintptr(unsafe.Pointer(services)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), uintptr(unsafe.Pointer(servicesReturned)), uintptr(unsafe.Pointer(resumeHandle)), uintptr(unsafe.Pointer(groupName)), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func EqualSid(sid1 *SID, sid2 *SID) (isEqual bool) {
+ r0, _, _ := syscall.Syscall(procEqualSid.Addr(), 2, uintptr(unsafe.Pointer(sid1)), uintptr(unsafe.Pointer(sid2)), 0)
+ isEqual = r0 != 0
+ return
+}
+
+func FreeSid(sid *SID) (err error) {
+ r1, _, e1 := syscall.Syscall(procFreeSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0)
+ if r1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetLengthSid(sid *SID) (len uint32) {
+ r0, _, _ := syscall.Syscall(procGetLengthSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0)
+ len = uint32(r0)
+ return
+}
+
+func getNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) {
+ var _p0 *uint16
+ _p0, ret = syscall.UTF16PtrFromString(objectName)
+ if ret != nil {
+ return
+ }
+ return _getNamedSecurityInfo(_p0, objectType, securityInformation, owner, group, dacl, sacl, sd)
+}
+
+func _getNamedSecurityInfo(objectName *uint16, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) {
+ r0, _, _ := syscall.Syscall9(procGetNamedSecurityInfoW.Addr(), 8, uintptr(unsafe.Pointer(objectName)), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(sd)), 0)
+ if r0 != 0 {
+ ret = syscall.Errno(r0)
+ }
+ return
+}
+
+func getSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, control *SECURITY_DESCRIPTOR_CONTROL, revision *uint32) (err error) {
+ r1, _, e1 := syscall.Syscall(procGetSecurityDescriptorControl.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(control)), uintptr(unsafe.Pointer(revision)))
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func getSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent *bool, dacl **ACL, daclDefaulted *bool) (err error) {
+ var _p0 uint32
+ if *daclPresent {
+ _p0 = 1
+ }
+ var _p1 uint32
+ if *daclDefaulted {
+ _p1 = 1
+ }
+ r1, _, e1 := syscall.Syscall6(procGetSecurityDescriptorDacl.Addr(), 4, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(&_p0)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(&_p1)), 0, 0)
+ *daclPresent = _p0 != 0
+ *daclDefaulted = _p1 != 0
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func getSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group **SID, groupDefaulted *bool) (err error) {
+ var _p0 uint32
+ if *groupDefaulted {
+ _p0 = 1
+ }
+ r1, _, e1 := syscall.Syscall(procGetSecurityDescriptorGroup.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(&_p0)))
+ *groupDefaulted = _p0 != 0
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func getSecurityDescriptorLength(sd *SECURITY_DESCRIPTOR) (len uint32) {
+ r0, _, _ := syscall.Syscall(procGetSecurityDescriptorLength.Addr(), 1, uintptr(unsafe.Pointer(sd)), 0, 0)
+ len = uint32(r0)
+ return
+}
+
+func getSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner **SID, ownerDefaulted *bool) (err error) {
+ var _p0 uint32
+ if *ownerDefaulted {
+ _p0 = 1
+ }
+ r1, _, e1 := syscall.Syscall(procGetSecurityDescriptorOwner.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(&_p0)))
+ *ownerDefaulted = _p0 != 0
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func getSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) (ret error) {
+ r0, _, _ := syscall.Syscall(procGetSecurityDescriptorRMControl.Addr(), 2, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(rmControl)), 0)
+ if r0 != 0 {
+ ret = syscall.Errno(r0)
+ }
+ return
+}
+
+func getSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent *bool, sacl **ACL, saclDefaulted *bool) (err error) {
+ var _p0 uint32
+ if *saclPresent {
+ _p0 = 1
+ }
+ var _p1 uint32
+ if *saclDefaulted {
+ _p1 = 1
+ }
+ r1, _, e1 := syscall.Syscall6(procGetSecurityDescriptorSacl.Addr(), 4, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(&_p0)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(&_p1)), 0, 0)
+ *saclPresent = _p0 != 0
+ *saclDefaulted = _p1 != 0
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func getSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) {
+ r0, _, _ := syscall.Syscall9(procGetSecurityInfo.Addr(), 8, uintptr(handle), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(sd)), 0)
+ if r0 != 0 {
+ ret = syscall.Errno(r0)
+ }
+ return
+}
+
+func getSidIdentifierAuthority(sid *SID) (authority *SidIdentifierAuthority) {
+ r0, _, _ := syscall.Syscall(procGetSidIdentifierAuthority.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0)
+ authority = (*SidIdentifierAuthority)(unsafe.Pointer(r0))
+ return
+}
+
+func getSidSubAuthority(sid *SID, index uint32) (subAuthority *uint32) {
+ r0, _, _ := syscall.Syscall(procGetSidSubAuthority.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(index), 0)
+ subAuthority = (*uint32)(unsafe.Pointer(r0))
+ return
+}
+
+func getSidSubAuthorityCount(sid *SID) (count *uint8) {
+ r0, _, _ := syscall.Syscall(procGetSidSubAuthorityCount.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0)
+ count = (*uint8)(unsafe.Pointer(r0))
+ return
+}
+
+func GetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32, returnedLen *uint32) (err error) {
+ r1, _, e1 := syscall.Syscall6(procGetTokenInformation.Addr(), 5, uintptr(token), uintptr(infoClass), uintptr(unsafe.Pointer(info)), uintptr(infoLen), uintptr(unsafe.Pointer(returnedLen)), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func ImpersonateSelf(impersonationlevel uint32) (err error) {
+ r1, _, e1 := syscall.Syscall(procImpersonateSelf.Addr(), 1, uintptr(impersonationlevel), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func initializeSecurityDescriptor(absoluteSD *SECURITY_DESCRIPTOR, revision uint32) (err error) {
+ r1, _, e1 := syscall.Syscall(procInitializeSecurityDescriptor.Addr(), 2, uintptr(unsafe.Pointer(absoluteSD)), uintptr(revision), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func InitiateSystemShutdownEx(machineName *uint16, message *uint16, timeout uint32, forceAppsClosed bool, rebootAfterShutdown bool, reason uint32) (err error) {
+ var _p0 uint32
+ if forceAppsClosed {
+ _p0 = 1
+ }
+ var _p1 uint32
+ if rebootAfterShutdown {
+ _p1 = 1
+ }
+ r1, _, e1 := syscall.Syscall6(procInitiateSystemShutdownExW.Addr(), 6, uintptr(unsafe.Pointer(machineName)), uintptr(unsafe.Pointer(message)), uintptr(timeout), uintptr(_p0), uintptr(_p1), uintptr(reason))
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func isTokenRestricted(tokenHandle Token) (ret bool, err error) {
+ r0, _, e1 := syscall.Syscall(procIsTokenRestricted.Addr(), 1, uintptr(tokenHandle), 0, 0)
+ ret = r0 != 0
+ if !ret {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func isValidSecurityDescriptor(sd *SECURITY_DESCRIPTOR) (isValid bool) {
+ r0, _, _ := syscall.Syscall(procIsValidSecurityDescriptor.Addr(), 1, uintptr(unsafe.Pointer(sd)), 0, 0)
+ isValid = r0 != 0
+ return
+}
+
+func isValidSid(sid *SID) (isValid bool) {
+ r0, _, _ := syscall.Syscall(procIsValidSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0)
+ isValid = r0 != 0
+ return
+}
+
+func isWellKnownSid(sid *SID, sidType WELL_KNOWN_SID_TYPE) (isWellKnown bool) {
+ r0, _, _ := syscall.Syscall(procIsWellKnownSid.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(sidType), 0)
+ isWellKnown = r0 != 0
+ return
+}
+
+func LookupAccountName(systemName *uint16, accountName *uint16, sid *SID, sidLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) {
+ r1, _, e1 := syscall.Syscall9(procLookupAccountNameW.Addr(), 7, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(accountName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sidLen)), uintptr(unsafe.Pointer(refdDomainName)), uintptr(unsafe.Pointer(refdDomainNameLen)), uintptr(unsafe.Pointer(use)), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func LookupAccountSid(systemName *uint16, sid *SID, name *uint16, nameLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) {
+ r1, _, e1 := syscall.Syscall9(procLookupAccountSidW.Addr(), 7, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(refdDomainName)), uintptr(unsafe.Pointer(refdDomainNameLen)), uintptr(unsafe.Pointer(use)), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func LookupPrivilegeValue(systemname *uint16, name *uint16, luid *LUID) (err error) {
+ r1, _, e1 := syscall.Syscall(procLookupPrivilegeValueW.Addr(), 3, uintptr(unsafe.Pointer(systemname)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(luid)))
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func makeAbsoluteSD(selfRelativeSD *SECURITY_DESCRIPTOR, absoluteSD *SECURITY_DESCRIPTOR, absoluteSDSize *uint32, dacl *ACL, daclSize *uint32, sacl *ACL, saclSize *uint32, owner *SID, ownerSize *uint32, group *SID, groupSize *uint32) (err error) {
+ r1, _, e1 := syscall.Syscall12(procMakeAbsoluteSD.Addr(), 11, uintptr(unsafe.Pointer(selfRelativeSD)), uintptr(unsafe.Pointer(absoluteSD)), uintptr(unsafe.Pointer(absoluteSDSize)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(daclSize)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(saclSize)), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(ownerSize)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(groupSize)), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func makeSelfRelativeSD(absoluteSD *SECURITY_DESCRIPTOR, selfRelativeSD *SECURITY_DESCRIPTOR, selfRelativeSDSize *uint32) (err error) {
+ r1, _, e1 := syscall.Syscall(procMakeSelfRelativeSD.Addr(), 3, uintptr(unsafe.Pointer(absoluteSD)), uintptr(unsafe.Pointer(selfRelativeSD)), uintptr(unsafe.Pointer(selfRelativeSDSize)))
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func NotifyServiceStatusChange(service Handle, notifyMask uint32, notifier *SERVICE_NOTIFY) (ret error) {
+ r0, _, _ := syscall.Syscall(procNotifyServiceStatusChangeW.Addr(), 3, uintptr(service), uintptr(notifyMask), uintptr(unsafe.Pointer(notifier)))
+ if r0 != 0 {
+ ret = syscall.Errno(r0)
+ }
+ return
+}
+
+func OpenProcessToken(process Handle, access uint32, token *Token) (err error) {
+ r1, _, e1 := syscall.Syscall(procOpenProcessToken.Addr(), 3, uintptr(process), uintptr(access), uintptr(unsafe.Pointer(token)))
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func OpenSCManager(machineName *uint16, databaseName *uint16, access uint32) (handle Handle, err error) {
+ r0, _, e1 := syscall.Syscall(procOpenSCManagerW.Addr(), 3, uintptr(unsafe.Pointer(machineName)), uintptr(unsafe.Pointer(databaseName)), uintptr(access))
+ handle = Handle(r0)
+ if handle == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func OpenService(mgr Handle, serviceName *uint16, access uint32) (handle Handle, err error) {
+ r0, _, e1 := syscall.Syscall(procOpenServiceW.Addr(), 3, uintptr(mgr), uintptr(unsafe.Pointer(serviceName)), uintptr(access))
+ handle = Handle(r0)
+ if handle == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func OpenThreadToken(thread Handle, access uint32, openAsSelf bool, token *Token) (err error) {
+ var _p0 uint32
+ if openAsSelf {
+ _p0 = 1
+ }
+ r1, _, e1 := syscall.Syscall6(procOpenThreadToken.Addr(), 4, uintptr(thread), uintptr(access), uintptr(_p0), uintptr(unsafe.Pointer(token)), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func QueryServiceConfig2(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) {
+ r1, _, e1 := syscall.Syscall6(procQueryServiceConfig2W.Addr(), 5, uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(buff)), uintptr(buffSize), uintptr(unsafe.Pointer(bytesNeeded)), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func QueryServiceConfig(service Handle, serviceConfig *QUERY_SERVICE_CONFIG, bufSize uint32, bytesNeeded *uint32) (err error) {
+ r1, _, e1 := syscall.Syscall6(procQueryServiceConfigW.Addr(), 4, uintptr(service), uintptr(unsafe.Pointer(serviceConfig)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func QueryServiceLockStatus(mgr Handle, lockStatus *QUERY_SERVICE_LOCK_STATUS, bufSize uint32, bytesNeeded *uint32) (err error) {
+ r1, _, e1 := syscall.Syscall6(procQueryServiceLockStatusW.Addr(), 4, uintptr(mgr), uintptr(unsafe.Pointer(lockStatus)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func QueryServiceStatus(service Handle, status *SERVICE_STATUS) (err error) {
+ r1, _, e1 := syscall.Syscall(procQueryServiceStatus.Addr(), 2, uintptr(service), uintptr(unsafe.Pointer(status)), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func QueryServiceStatusEx(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) {
+ r1, _, e1 := syscall.Syscall6(procQueryServiceStatusEx.Addr(), 5, uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(buff)), uintptr(buffSize), uintptr(unsafe.Pointer(bytesNeeded)), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func RegCloseKey(key Handle) (regerrno error) {
+ r0, _, _ := syscall.Syscall(procRegCloseKey.Addr(), 1, uintptr(key), 0, 0)
+ if r0 != 0 {
+ regerrno = syscall.Errno(r0)
+ }
+ return
+}
+
+func RegEnumKeyEx(key Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, class *uint16, classLen *uint32, lastWriteTime *Filetime) (regerrno error) {
+ r0, _, _ := syscall.Syscall9(procRegEnumKeyExW.Addr(), 8, uintptr(key), uintptr(index), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(class)), uintptr(unsafe.Pointer(classLen)), uintptr(unsafe.Pointer(lastWriteTime)), 0)
+ if r0 != 0 {
+ regerrno = syscall.Errno(r0)
+ }
+ return
+}
+
+func RegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint32, result *Handle) (regerrno error) {
+ r0, _, _ := syscall.Syscall6(procRegOpenKeyExW.Addr(), 5, uintptr(key), uintptr(unsafe.Pointer(subkey)), uintptr(options), uintptr(desiredAccess), uintptr(unsafe.Pointer(result)), 0)
+ if r0 != 0 {
+ regerrno = syscall.Errno(r0)
+ }
+ return
+}
+
+func RegQueryInfoKey(key Handle, class *uint16, classLen *uint32, reserved *uint32, subkeysLen *uint32, maxSubkeyLen *uint32, maxClassLen *uint32, valuesLen *uint32, maxValueNameLen *uint32, maxValueLen *uint32, saLen *uint32, lastWriteTime *Filetime) (regerrno error) {
+ r0, _, _ := syscall.Syscall12(procRegQueryInfoKeyW.Addr(), 12, uintptr(key), uintptr(unsafe.Pointer(class)), uintptr(unsafe.Pointer(classLen)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(subkeysLen)), uintptr(unsafe.Pointer(maxSubkeyLen)), uintptr(unsafe.Pointer(maxClassLen)), uintptr(unsafe.Pointer(valuesLen)), uintptr(unsafe.Pointer(maxValueNameLen)), uintptr(unsafe.Pointer(maxValueLen)), uintptr(unsafe.Pointer(saLen)), uintptr(unsafe.Pointer(lastWriteTime)))
+ if r0 != 0 {
+ regerrno = syscall.Errno(r0)
+ }
+ return
+}
+
+func RegQueryValueEx(key Handle, name *uint16, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) {
+ r0, _, _ := syscall.Syscall6(procRegQueryValueExW.Addr(), 6, uintptr(key), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(valtype)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(buflen)))
+ if r0 != 0 {
+ regerrno = syscall.Errno(r0)
+ }
+ return
+}
+
+func RegisterEventSource(uncServerName *uint16, sourceName *uint16) (handle Handle, err error) {
+ r0, _, e1 := syscall.Syscall(procRegisterEventSourceW.Addr(), 2, uintptr(unsafe.Pointer(uncServerName)), uintptr(unsafe.Pointer(sourceName)), 0)
+ handle = Handle(r0)
+ if handle == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func ReportEvent(log Handle, etype uint16, category uint16, eventId uint32, usrSId uintptr, numStrings uint16, dataSize uint32, strings **uint16, rawData *byte) (err error) {
+ r1, _, e1 := syscall.Syscall9(procReportEventW.Addr(), 9, uintptr(log), uintptr(etype), uintptr(category), uintptr(eventId), uintptr(usrSId), uintptr(numStrings), uintptr(dataSize), uintptr(unsafe.Pointer(strings)), uintptr(unsafe.Pointer(rawData)))
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func RevertToSelf() (err error) {
+ r1, _, e1 := syscall.Syscall(procRevertToSelf.Addr(), 0, 0, 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func setEntriesInAcl(countExplicitEntries uint32, explicitEntries *EXPLICIT_ACCESS, oldACL *ACL, newACL **ACL) (ret error) {
+ r0, _, _ := syscall.Syscall6(procSetEntriesInAclW.Addr(), 4, uintptr(countExplicitEntries), uintptr(unsafe.Pointer(explicitEntries)), uintptr(unsafe.Pointer(oldACL)), uintptr(unsafe.Pointer(newACL)), 0, 0)
+ if r0 != 0 {
+ ret = syscall.Errno(r0)
+ }
+ return
+}
+
+func SetKernelObjectSecurity(handle Handle, securityInformation SECURITY_INFORMATION, securityDescriptor *SECURITY_DESCRIPTOR) (err error) {
+ r1, _, e1 := syscall.Syscall(procSetKernelObjectSecurity.Addr(), 3, uintptr(handle), uintptr(securityInformation), uintptr(unsafe.Pointer(securityDescriptor)))
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func SetNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) {
+ var _p0 *uint16
+ _p0, ret = syscall.UTF16PtrFromString(objectName)
+ if ret != nil {
+ return
+ }
+ return _SetNamedSecurityInfo(_p0, objectType, securityInformation, owner, group, dacl, sacl)
+}
+
+func _SetNamedSecurityInfo(objectName *uint16, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) {
+ r0, _, _ := syscall.Syscall9(procSetNamedSecurityInfoW.Addr(), 7, uintptr(unsafe.Pointer(objectName)), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), 0, 0)
+ if r0 != 0 {
+ ret = syscall.Errno(r0)
+ }
+ return
+}
+
+func setSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, controlBitsOfInterest SECURITY_DESCRIPTOR_CONTROL, controlBitsToSet SECURITY_DESCRIPTOR_CONTROL) (err error) {
+ r1, _, e1 := syscall.Syscall(procSetSecurityDescriptorControl.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(controlBitsOfInterest), uintptr(controlBitsToSet))
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func setSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent bool, dacl *ACL, daclDefaulted bool) (err error) {
+ var _p0 uint32
+ if daclPresent {
+ _p0 = 1
+ }
+ var _p1 uint32
+ if daclDefaulted {
+ _p1 = 1
+ }
+ r1, _, e1 := syscall.Syscall6(procSetSecurityDescriptorDacl.Addr(), 4, uintptr(unsafe.Pointer(sd)), uintptr(_p0), uintptr(unsafe.Pointer(dacl)), uintptr(_p1), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func setSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group *SID, groupDefaulted bool) (err error) {
+ var _p0 uint32
+ if groupDefaulted {
+ _p0 = 1
+ }
+ r1, _, e1 := syscall.Syscall(procSetSecurityDescriptorGroup.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(group)), uintptr(_p0))
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func setSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner *SID, ownerDefaulted bool) (err error) {
+ var _p0 uint32
+ if ownerDefaulted {
+ _p0 = 1
+ }
+ r1, _, e1 := syscall.Syscall(procSetSecurityDescriptorOwner.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(owner)), uintptr(_p0))
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func setSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) {
+ syscall.Syscall(procSetSecurityDescriptorRMControl.Addr(), 2, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(rmControl)), 0)
+ return
+}
+
+func setSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent bool, sacl *ACL, saclDefaulted bool) (err error) {
+ var _p0 uint32
+ if saclPresent {
+ _p0 = 1
+ }
+ var _p1 uint32
+ if saclDefaulted {
+ _p1 = 1
+ }
+ r1, _, e1 := syscall.Syscall6(procSetSecurityDescriptorSacl.Addr(), 4, uintptr(unsafe.Pointer(sd)), uintptr(_p0), uintptr(unsafe.Pointer(sacl)), uintptr(_p1), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func SetSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) {
+ r0, _, _ := syscall.Syscall9(procSetSecurityInfo.Addr(), 7, uintptr(handle), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), 0, 0)
+ if r0 != 0 {
+ ret = syscall.Errno(r0)
+ }
+ return
+}
+
+func SetServiceStatus(service Handle, serviceStatus *SERVICE_STATUS) (err error) {
+ r1, _, e1 := syscall.Syscall(procSetServiceStatus.Addr(), 2, uintptr(service), uintptr(unsafe.Pointer(serviceStatus)), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func SetThreadToken(thread *Handle, token Token) (err error) {
+ r1, _, e1 := syscall.Syscall(procSetThreadToken.Addr(), 2, uintptr(unsafe.Pointer(thread)), uintptr(token), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func SetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32) (err error) {
+ r1, _, e1 := syscall.Syscall6(procSetTokenInformation.Addr(), 4, uintptr(token), uintptr(infoClass), uintptr(unsafe.Pointer(info)), uintptr(infoLen), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func StartServiceCtrlDispatcher(serviceTable *SERVICE_TABLE_ENTRY) (err error) {
+ r1, _, e1 := syscall.Syscall(procStartServiceCtrlDispatcherW.Addr(), 1, uintptr(unsafe.Pointer(serviceTable)), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func StartService(service Handle, numArgs uint32, argVectors **uint16) (err error) {
+ r1, _, e1 := syscall.Syscall(procStartServiceW.Addr(), 3, uintptr(service), uintptr(numArgs), uintptr(unsafe.Pointer(argVectors)))
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func CertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) {
+ r1, _, e1 := syscall.Syscall6(procCertAddCertificateContextToStore.Addr(), 4, uintptr(store), uintptr(unsafe.Pointer(certContext)), uintptr(addDisposition), uintptr(unsafe.Pointer(storeContext)), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func CertCloseStore(store Handle, flags uint32) (err error) {
+ r1, _, e1 := syscall.Syscall(procCertCloseStore.Addr(), 2, uintptr(store), uintptr(flags), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) {
+ r0, _, e1 := syscall.Syscall(procCertCreateCertificateContext.Addr(), 3, uintptr(certEncodingType), uintptr(unsafe.Pointer(certEncoded)), uintptr(encodedLen))
+ context = (*CertContext)(unsafe.Pointer(r0))
+ if context == nil {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func CertDeleteCertificateFromStore(certContext *CertContext) (err error) {
+ r1, _, e1 := syscall.Syscall(procCertDeleteCertificateFromStore.Addr(), 1, uintptr(unsafe.Pointer(certContext)), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) {
+ r0, _, e1 := syscall.Syscall(procCertEnumCertificatesInStore.Addr(), 2, uintptr(store), uintptr(unsafe.Pointer(prevContext)), 0)
+ context = (*CertContext)(unsafe.Pointer(r0))
+ if context == nil {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func CertFreeCertificateChain(ctx *CertChainContext) {
+ syscall.Syscall(procCertFreeCertificateChain.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0)
+ return
+}
+
+func CertFreeCertificateContext(ctx *CertContext) (err error) {
+ r1, _, e1 := syscall.Syscall(procCertFreeCertificateContext.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) {
+ r1, _, e1 := syscall.Syscall9(procCertGetCertificateChain.Addr(), 8, uintptr(engine), uintptr(unsafe.Pointer(leaf)), uintptr(unsafe.Pointer(time)), uintptr(additionalStore), uintptr(unsafe.Pointer(para)), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(chainCtx)), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) {
+ r0, _, e1 := syscall.Syscall6(procCertOpenStore.Addr(), 5, uintptr(storeProvider), uintptr(msgAndCertEncodingType), uintptr(cryptProv), uintptr(flags), uintptr(para), 0)
+ handle = Handle(r0)
+ if handle == InvalidHandle {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func CertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) {
+ r0, _, e1 := syscall.Syscall(procCertOpenSystemStoreW.Addr(), 2, uintptr(hprov), uintptr(unsafe.Pointer(name)), 0)
+ store = Handle(r0)
+ if store == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) {
+ r1, _, e1 := syscall.Syscall6(procCertVerifyCertificateChainPolicy.Addr(), 4, uintptr(policyOID), uintptr(unsafe.Pointer(chain)), uintptr(unsafe.Pointer(para)), uintptr(unsafe.Pointer(status)), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func DnsNameCompare(name1 *uint16, name2 *uint16) (same bool) {
+ r0, _, _ := syscall.Syscall(procDnsNameCompare_W.Addr(), 2, uintptr(unsafe.Pointer(name1)), uintptr(unsafe.Pointer(name2)), 0)
+ same = r0 != 0
+ return
+}
+
+func DnsQuery(name string, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) {
+ var _p0 *uint16
+ _p0, status = syscall.UTF16PtrFromString(name)
+ if status != nil {
+ return
+ }
+ return _DnsQuery(_p0, qtype, options, extra, qrs, pr)
+}
+
+func _DnsQuery(name *uint16, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) {
+ r0, _, _ := syscall.Syscall6(procDnsQuery_W.Addr(), 6, uintptr(unsafe.Pointer(name)), uintptr(qtype), uintptr(options), uintptr(unsafe.Pointer(extra)), uintptr(unsafe.Pointer(qrs)), uintptr(unsafe.Pointer(pr)))
+ if r0 != 0 {
+ status = syscall.Errno(r0)
+ }
+ return
+}
+
+func DnsRecordListFree(rl *DNSRecord, freetype uint32) {
+ syscall.Syscall(procDnsRecordListFree.Addr(), 2, uintptr(unsafe.Pointer(rl)), uintptr(freetype), 0)
+ return
+}
+
+func GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) {
+ r0, _, _ := syscall.Syscall6(procGetAdaptersAddresses.Addr(), 5, uintptr(family), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(adapterAddresses)), uintptr(unsafe.Pointer(sizePointer)), 0)
+ if r0 != 0 {
+ errcode = syscall.Errno(r0)
+ }
+ return
+}
+
+func GetAdaptersInfo(ai *IpAdapterInfo, ol *uint32) (errcode error) {
+ r0, _, _ := syscall.Syscall(procGetAdaptersInfo.Addr(), 2, uintptr(unsafe.Pointer(ai)), uintptr(unsafe.Pointer(ol)), 0)
+ if r0 != 0 {
+ errcode = syscall.Errno(r0)
+ }
+ return
+}
+
+func GetIfEntry(pIfRow *MibIfRow) (errcode error) {
+ r0, _, _ := syscall.Syscall(procGetIfEntry.Addr(), 1, uintptr(unsafe.Pointer(pIfRow)), 0, 0)
+ if r0 != 0 {
+ errcode = syscall.Errno(r0)
+ }
+ return
+}
+
+func AssignProcessToJobObject(job Handle, process Handle) (err error) {
+ r1, _, e1 := syscall.Syscall(procAssignProcessToJobObject.Addr(), 2, uintptr(job), uintptr(process), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func CancelIo(s Handle) (err error) {
+ r1, _, e1 := syscall.Syscall(procCancelIo.Addr(), 1, uintptr(s), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func CancelIoEx(s Handle, o *Overlapped) (err error) {
+ r1, _, e1 := syscall.Syscall(procCancelIoEx.Addr(), 2, uintptr(s), uintptr(unsafe.Pointer(o)), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func CloseHandle(handle Handle) (err error) {
+ r1, _, e1 := syscall.Syscall(procCloseHandle.Addr(), 1, uintptr(handle), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func CreateDirectory(path *uint16, sa *SecurityAttributes) (err error) {
+ r1, _, e1 := syscall.Syscall(procCreateDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(sa)), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func CreateEventEx(eventAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) {
+ r0, _, e1 := syscall.Syscall6(procCreateEventExW.Addr(), 4, uintptr(unsafe.Pointer(eventAttrs)), uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(desiredAccess), 0, 0)
+ handle = Handle(r0)
+ if handle == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func CreateEvent(eventAttrs *SecurityAttributes, manualReset uint32, initialState uint32, name *uint16) (handle Handle, err error) {
+ r0, _, e1 := syscall.Syscall6(procCreateEventW.Addr(), 4, uintptr(unsafe.Pointer(eventAttrs)), uintptr(manualReset), uintptr(initialState), uintptr(unsafe.Pointer(name)), 0, 0)
+ handle = Handle(r0)
+ if handle == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func CreateFileMapping(fhandle Handle, sa *SecurityAttributes, prot uint32, maxSizeHigh uint32, maxSizeLow uint32, name *uint16) (handle Handle, err error) {
+ r0, _, e1 := syscall.Syscall6(procCreateFileMappingW.Addr(), 6, uintptr(fhandle), uintptr(unsafe.Pointer(sa)), uintptr(prot), uintptr(maxSizeHigh), uintptr(maxSizeLow), uintptr(unsafe.Pointer(name)))
+ handle = Handle(r0)
+ if handle == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func CreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile Handle) (handle Handle, err error) {
+ r0, _, e1 := syscall.Syscall9(procCreateFileW.Addr(), 7, uintptr(unsafe.Pointer(name)), uintptr(access), uintptr(mode), uintptr(unsafe.Pointer(sa)), uintptr(createmode), uintptr(attrs), uintptr(templatefile), 0, 0)
+ handle = Handle(r0)
+ if handle == InvalidHandle {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func CreateHardLink(filename *uint16, existingfilename *uint16, reserved uintptr) (err error) {
+ r1, _, e1 := syscall.Syscall(procCreateHardLinkW.Addr(), 3, uintptr(unsafe.Pointer(filename)), uintptr(unsafe.Pointer(existingfilename)), uintptr(reserved))
+ if r1&0xff == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func CreateIoCompletionPort(filehandle Handle, cphandle Handle, key uint32, threadcnt uint32) (handle Handle, err error) {
+ r0, _, e1 := syscall.Syscall6(procCreateIoCompletionPort.Addr(), 4, uintptr(filehandle), uintptr(cphandle), uintptr(key), uintptr(threadcnt), 0, 0)
+ handle = Handle(r0)
+ if handle == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func CreateJobObject(jobAttr *SecurityAttributes, name *uint16) (handle Handle, err error) {
+ r0, _, e1 := syscall.Syscall(procCreateJobObjectW.Addr(), 2, uintptr(unsafe.Pointer(jobAttr)), uintptr(unsafe.Pointer(name)), 0)
+ handle = Handle(r0)
+ if handle == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func CreateMutexEx(mutexAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) {
+ r0, _, e1 := syscall.Syscall6(procCreateMutexExW.Addr(), 4, uintptr(unsafe.Pointer(mutexAttrs)), uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(desiredAccess), 0, 0)
+ handle = Handle(r0)
+ if handle == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func CreateMutex(mutexAttrs *SecurityAttributes, initialOwner bool, name *uint16) (handle Handle, err error) {
+ var _p0 uint32
+ if initialOwner {
+ _p0 = 1
+ }
+ r0, _, e1 := syscall.Syscall(procCreateMutexW.Addr(), 3, uintptr(unsafe.Pointer(mutexAttrs)), uintptr(_p0), uintptr(unsafe.Pointer(name)))
+ handle = Handle(r0)
+ if handle == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func CreatePipe(readhandle *Handle, writehandle *Handle, sa *SecurityAttributes, size uint32) (err error) {
+ r1, _, e1 := syscall.Syscall6(procCreatePipe.Addr(), 4, uintptr(unsafe.Pointer(readhandle)), uintptr(unsafe.Pointer(writehandle)), uintptr(unsafe.Pointer(sa)), uintptr(size), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) {
+ var _p0 uint32
+ if inheritHandles {
+ _p0 = 1
+ }
+ r1, _, e1 := syscall.Syscall12(procCreateProcessW.Addr(), 10, uintptr(unsafe.Pointer(appName)), uintptr(unsafe.Pointer(commandLine)), uintptr(unsafe.Pointer(procSecurity)), uintptr(unsafe.Pointer(threadSecurity)), uintptr(_p0), uintptr(creationFlags), uintptr(unsafe.Pointer(env)), uintptr(unsafe.Pointer(currentDir)), uintptr(unsafe.Pointer(startupInfo)), uintptr(unsafe.Pointer(outProcInfo)), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func CreateSymbolicLink(symlinkfilename *uint16, targetfilename *uint16, flags uint32) (err error) {
+ r1, _, e1 := syscall.Syscall(procCreateSymbolicLinkW.Addr(), 3, uintptr(unsafe.Pointer(symlinkfilename)), uintptr(unsafe.Pointer(targetfilename)), uintptr(flags))
+ if r1&0xff == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func CreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) {
+ r0, _, e1 := syscall.Syscall(procCreateToolhelp32Snapshot.Addr(), 2, uintptr(flags), uintptr(processId), 0)
+ handle = Handle(r0)
+ if handle == InvalidHandle {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func DefineDosDevice(flags uint32, deviceName *uint16, targetPath *uint16) (err error) {
+ r1, _, e1 := syscall.Syscall(procDefineDosDeviceW.Addr(), 3, uintptr(flags), uintptr(unsafe.Pointer(deviceName)), uintptr(unsafe.Pointer(targetPath)))
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func DeleteFile(path *uint16) (err error) {
+ r1, _, e1 := syscall.Syscall(procDeleteFileW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func DeleteVolumeMountPoint(volumeMountPoint *uint16) (err error) {
+ r1, _, e1 := syscall.Syscall(procDeleteVolumeMountPointW.Addr(), 1, uintptr(unsafe.Pointer(volumeMountPoint)), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func DeviceIoControl(handle Handle, ioControlCode uint32, inBuffer *byte, inBufferSize uint32, outBuffer *byte, outBufferSize uint32, bytesReturned *uint32, overlapped *Overlapped) (err error) {
+ r1, _, e1 := syscall.Syscall9(procDeviceIoControl.Addr(), 8, uintptr(handle), uintptr(ioControlCode), uintptr(unsafe.Pointer(inBuffer)), uintptr(inBufferSize), uintptr(unsafe.Pointer(outBuffer)), uintptr(outBufferSize), uintptr(unsafe.Pointer(bytesReturned)), uintptr(unsafe.Pointer(overlapped)), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func DuplicateHandle(hSourceProcessHandle Handle, hSourceHandle Handle, hTargetProcessHandle Handle, lpTargetHandle *Handle, dwDesiredAccess uint32, bInheritHandle bool, dwOptions uint32) (err error) {
+ var _p0 uint32
+ if bInheritHandle {
+ _p0 = 1
+ }
+ r1, _, e1 := syscall.Syscall9(procDuplicateHandle.Addr(), 7, uintptr(hSourceProcessHandle), uintptr(hSourceHandle), uintptr(hTargetProcessHandle), uintptr(unsafe.Pointer(lpTargetHandle)), uintptr(dwDesiredAccess), uintptr(_p0), uintptr(dwOptions), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func ExitProcess(exitcode uint32) {
+ syscall.Syscall(procExitProcess.Addr(), 1, uintptr(exitcode), 0, 0)
+ return
+}
+
+func FindClose(handle Handle) (err error) {
+ r1, _, e1 := syscall.Syscall(procFindClose.Addr(), 1, uintptr(handle), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func findFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err error) {
+ r0, _, e1 := syscall.Syscall(procFindFirstFileW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(data)), 0)
+ handle = Handle(r0)
+ if handle == InvalidHandle {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func FindFirstVolumeMountPoint(rootPathName *uint16, volumeMountPoint *uint16, bufferLength uint32) (handle Handle, err error) {
+ r0, _, e1 := syscall.Syscall(procFindFirstVolumeMountPointW.Addr(), 3, uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(bufferLength))
+ handle = Handle(r0)
+ if handle == InvalidHandle {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func FindFirstVolume(volumeName *uint16, bufferLength uint32) (handle Handle, err error) {
+ r0, _, e1 := syscall.Syscall(procFindFirstVolumeW.Addr(), 2, uintptr(unsafe.Pointer(volumeName)), uintptr(bufferLength), 0)
+ handle = Handle(r0)
+ if handle == InvalidHandle {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func findNextFile1(handle Handle, data *win32finddata1) (err error) {
+ r1, _, e1 := syscall.Syscall(procFindNextFileW.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(data)), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func FindNextVolumeMountPoint(findVolumeMountPoint Handle, volumeMountPoint *uint16, bufferLength uint32) (err error) {
+ r1, _, e1 := syscall.Syscall(procFindNextVolumeMountPointW.Addr(), 3, uintptr(findVolumeMountPoint), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(bufferLength))
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func FindNextVolume(findVolume Handle, volumeName *uint16, bufferLength uint32) (err error) {
+ r1, _, e1 := syscall.Syscall(procFindNextVolumeW.Addr(), 3, uintptr(findVolume), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferLength))
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func FindVolumeClose(findVolume Handle) (err error) {
+ r1, _, e1 := syscall.Syscall(procFindVolumeClose.Addr(), 1, uintptr(findVolume), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func FindVolumeMountPointClose(findVolumeMountPoint Handle) (err error) {
+ r1, _, e1 := syscall.Syscall(procFindVolumeMountPointClose.Addr(), 1, uintptr(findVolumeMountPoint), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func FlushFileBuffers(handle Handle) (err error) {
+ r1, _, e1 := syscall.Syscall(procFlushFileBuffers.Addr(), 1, uintptr(handle), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func FlushViewOfFile(addr uintptr, length uintptr) (err error) {
+ r1, _, e1 := syscall.Syscall(procFlushViewOfFile.Addr(), 2, uintptr(addr), uintptr(length), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func FormatMessage(flags uint32, msgsrc uintptr, msgid uint32, langid uint32, buf []uint16, args *byte) (n uint32, err error) {
+ var _p0 *uint16
+ if len(buf) > 0 {
+ _p0 = &buf[0]
+ }
+ r0, _, e1 := syscall.Syscall9(procFormatMessageW.Addr(), 7, uintptr(flags), uintptr(msgsrc), uintptr(msgid), uintptr(langid), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(args)), 0, 0)
+ n = uint32(r0)
+ if n == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func FreeEnvironmentStrings(envs *uint16) (err error) {
+ r1, _, e1 := syscall.Syscall(procFreeEnvironmentStringsW.Addr(), 1, uintptr(unsafe.Pointer(envs)), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func FreeLibrary(handle Handle) (err error) {
+ r1, _, e1 := syscall.Syscall(procFreeLibrary.Addr(), 1, uintptr(handle), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GenerateConsoleCtrlEvent(ctrlEvent uint32, processGroupID uint32) (err error) {
+ r1, _, e1 := syscall.Syscall(procGenerateConsoleCtrlEvent.Addr(), 2, uintptr(ctrlEvent), uintptr(processGroupID), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetACP() (acp uint32) {
+ r0, _, _ := syscall.Syscall(procGetACP.Addr(), 0, 0, 0, 0)
+ acp = uint32(r0)
+ return
+}
+
+func GetCommandLine() (cmd *uint16) {
+ r0, _, _ := syscall.Syscall(procGetCommandLineW.Addr(), 0, 0, 0, 0)
+ cmd = (*uint16)(unsafe.Pointer(r0))
+ return
+}
+
+func GetComputerNameEx(nametype uint32, buf *uint16, n *uint32) (err error) {
+ r1, _, e1 := syscall.Syscall(procGetComputerNameExW.Addr(), 3, uintptr(nametype), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n)))
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetComputerName(buf *uint16, n *uint32) (err error) {
+ r1, _, e1 := syscall.Syscall(procGetComputerNameW.Addr(), 2, uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n)), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetConsoleMode(console Handle, mode *uint32) (err error) {
+ r1, _, e1 := syscall.Syscall(procGetConsoleMode.Addr(), 2, uintptr(console), uintptr(unsafe.Pointer(mode)), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetConsoleScreenBufferInfo(console Handle, info *ConsoleScreenBufferInfo) (err error) {
+ r1, _, e1 := syscall.Syscall(procGetConsoleScreenBufferInfo.Addr(), 2, uintptr(console), uintptr(unsafe.Pointer(info)), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetCurrentDirectory(buflen uint32, buf *uint16) (n uint32, err error) {
+ r0, _, e1 := syscall.Syscall(procGetCurrentDirectoryW.Addr(), 2, uintptr(buflen), uintptr(unsafe.Pointer(buf)), 0)
+ n = uint32(r0)
+ if n == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetCurrentProcessId() (pid uint32) {
+ r0, _, _ := syscall.Syscall(procGetCurrentProcessId.Addr(), 0, 0, 0, 0)
+ pid = uint32(r0)
+ return
+}
+
+func GetCurrentThreadId() (id uint32) {
+ r0, _, _ := syscall.Syscall(procGetCurrentThreadId.Addr(), 0, 0, 0, 0)
+ id = uint32(r0)
+ return
+}
+
+func GetDiskFreeSpaceEx(directoryName *uint16, freeBytesAvailableToCaller *uint64, totalNumberOfBytes *uint64, totalNumberOfFreeBytes *uint64) (err error) {
+ r1, _, e1 := syscall.Syscall6(procGetDiskFreeSpaceExW.Addr(), 4, uintptr(unsafe.Pointer(directoryName)), uintptr(unsafe.Pointer(freeBytesAvailableToCaller)), uintptr(unsafe.Pointer(totalNumberOfBytes)), uintptr(unsafe.Pointer(totalNumberOfFreeBytes)), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetDriveType(rootPathName *uint16) (driveType uint32) {
+ r0, _, _ := syscall.Syscall(procGetDriveTypeW.Addr(), 1, uintptr(unsafe.Pointer(rootPathName)), 0, 0)
+ driveType = uint32(r0)
+ return
+}
+
+func GetEnvironmentStrings() (envs *uint16, err error) {
+ r0, _, e1 := syscall.Syscall(procGetEnvironmentStringsW.Addr(), 0, 0, 0, 0)
+ envs = (*uint16)(unsafe.Pointer(r0))
+ if envs == nil {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetEnvironmentVariable(name *uint16, buffer *uint16, size uint32) (n uint32, err error) {
+ r0, _, e1 := syscall.Syscall(procGetEnvironmentVariableW.Addr(), 3, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(buffer)), uintptr(size))
+ n = uint32(r0)
+ if n == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetExitCodeProcess(handle Handle, exitcode *uint32) (err error) {
+ r1, _, e1 := syscall.Syscall(procGetExitCodeProcess.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(exitcode)), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetFileAttributesEx(name *uint16, level uint32, info *byte) (err error) {
+ r1, _, e1 := syscall.Syscall(procGetFileAttributesExW.Addr(), 3, uintptr(unsafe.Pointer(name)), uintptr(level), uintptr(unsafe.Pointer(info)))
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetFileAttributes(name *uint16) (attrs uint32, err error) {
+ r0, _, e1 := syscall.Syscall(procGetFileAttributesW.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0)
+ attrs = uint32(r0)
+ if attrs == INVALID_FILE_ATTRIBUTES {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetFileInformationByHandle(handle Handle, data *ByHandleFileInformation) (err error) {
+ r1, _, e1 := syscall.Syscall(procGetFileInformationByHandle.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(data)), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetFileInformationByHandleEx(handle Handle, class uint32, outBuffer *byte, outBufferLen uint32) (err error) {
+ r1, _, e1 := syscall.Syscall6(procGetFileInformationByHandleEx.Addr(), 4, uintptr(handle), uintptr(class), uintptr(unsafe.Pointer(outBuffer)), uintptr(outBufferLen), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetFileType(filehandle Handle) (n uint32, err error) {
+ r0, _, e1 := syscall.Syscall(procGetFileType.Addr(), 1, uintptr(filehandle), 0, 0)
+ n = uint32(r0)
+ if n == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetFinalPathNameByHandle(file Handle, filePath *uint16, filePathSize uint32, flags uint32) (n uint32, err error) {
+ r0, _, e1 := syscall.Syscall6(procGetFinalPathNameByHandleW.Addr(), 4, uintptr(file), uintptr(unsafe.Pointer(filePath)), uintptr(filePathSize), uintptr(flags), 0, 0)
+ n = uint32(r0)
+ if n == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) (n uint32, err error) {
+ r0, _, e1 := syscall.Syscall6(procGetFullPathNameW.Addr(), 4, uintptr(unsafe.Pointer(path)), uintptr(buflen), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(fname)), 0, 0)
+ n = uint32(r0)
+ if n == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetLastError() (lasterr error) {
+ r0, _, _ := syscall.Syscall(procGetLastError.Addr(), 0, 0, 0, 0)
+ if r0 != 0 {
+ lasterr = syscall.Errno(r0)
+ }
+ return
+}
+
+func GetLogicalDriveStrings(bufferLength uint32, buffer *uint16) (n uint32, err error) {
+ r0, _, e1 := syscall.Syscall(procGetLogicalDriveStringsW.Addr(), 2, uintptr(bufferLength), uintptr(unsafe.Pointer(buffer)), 0)
+ n = uint32(r0)
+ if n == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetLogicalDrives() (drivesBitMask uint32, err error) {
+ r0, _, e1 := syscall.Syscall(procGetLogicalDrives.Addr(), 0, 0, 0, 0)
+ drivesBitMask = uint32(r0)
+ if drivesBitMask == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetLongPathName(path *uint16, buf *uint16, buflen uint32) (n uint32, err error) {
+ r0, _, e1 := syscall.Syscall(procGetLongPathNameW.Addr(), 3, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(buf)), uintptr(buflen))
+ n = uint32(r0)
+ if n == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetModuleFileName(module Handle, filename *uint16, size uint32) (n uint32, err error) {
+ r0, _, e1 := syscall.Syscall(procGetModuleFileNameW.Addr(), 3, uintptr(module), uintptr(unsafe.Pointer(filename)), uintptr(size))
+ n = uint32(r0)
+ if n == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetModuleHandleEx(flags uint32, moduleName *uint16, module *Handle) (err error) {
+ r1, _, e1 := syscall.Syscall(procGetModuleHandleExW.Addr(), 3, uintptr(flags), uintptr(unsafe.Pointer(moduleName)), uintptr(unsafe.Pointer(module)))
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetOverlappedResult(handle Handle, overlapped *Overlapped, done *uint32, wait bool) (err error) {
+ var _p0 uint32
+ if wait {
+ _p0 = 1
+ }
+ r1, _, e1 := syscall.Syscall6(procGetOverlappedResult.Addr(), 4, uintptr(handle), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(done)), uintptr(_p0), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetPriorityClass(process Handle) (ret uint32, err error) {
+ r0, _, e1 := syscall.Syscall(procGetPriorityClass.Addr(), 1, uintptr(process), 0, 0)
+ ret = uint32(r0)
+ if ret == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetProcAddress(module Handle, procname string) (proc uintptr, err error) {
+ var _p0 *byte
+ _p0, err = syscall.BytePtrFromString(procname)
+ if err != nil {
+ return
+ }
+ return _GetProcAddress(module, _p0)
+}
+
+func _GetProcAddress(module Handle, procname *byte) (proc uintptr, err error) {
+ r0, _, e1 := syscall.Syscall(procGetProcAddress.Addr(), 2, uintptr(module), uintptr(unsafe.Pointer(procname)), 0)
+ proc = uintptr(r0)
+ if proc == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetProcessId(process Handle) (id uint32, err error) {
+ r0, _, e1 := syscall.Syscall(procGetProcessId.Addr(), 1, uintptr(process), 0, 0)
+ id = uint32(r0)
+ if id == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func getProcessPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) {
+ r1, _, e1 := syscall.Syscall6(procGetProcessPreferredUILanguages.Addr(), 4, uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize)), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetProcessShutdownParameters(level *uint32, flags *uint32) (err error) {
+ r1, _, e1 := syscall.Syscall(procGetProcessShutdownParameters.Addr(), 2, uintptr(unsafe.Pointer(level)), uintptr(unsafe.Pointer(flags)), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetProcessTimes(handle Handle, creationTime *Filetime, exitTime *Filetime, kernelTime *Filetime, userTime *Filetime) (err error) {
+ r1, _, e1 := syscall.Syscall6(procGetProcessTimes.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(creationTime)), uintptr(unsafe.Pointer(exitTime)), uintptr(unsafe.Pointer(kernelTime)), uintptr(unsafe.Pointer(userTime)), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetProcessWorkingSetSizeEx(hProcess Handle, lpMinimumWorkingSetSize *uintptr, lpMaximumWorkingSetSize *uintptr, flags *uint32) {
+ syscall.Syscall6(procGetProcessWorkingSetSizeEx.Addr(), 4, uintptr(hProcess), uintptr(unsafe.Pointer(lpMinimumWorkingSetSize)), uintptr(unsafe.Pointer(lpMaximumWorkingSetSize)), uintptr(unsafe.Pointer(flags)), 0, 0)
+ return
+}
+
+func GetQueuedCompletionStatus(cphandle Handle, qty *uint32, key *uint32, overlapped **Overlapped, timeout uint32) (err error) {
+ r1, _, e1 := syscall.Syscall6(procGetQueuedCompletionStatus.Addr(), 5, uintptr(cphandle), uintptr(unsafe.Pointer(qty)), uintptr(unsafe.Pointer(key)), uintptr(unsafe.Pointer(overlapped)), uintptr(timeout), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetShortPathName(longpath *uint16, shortpath *uint16, buflen uint32) (n uint32, err error) {
+ r0, _, e1 := syscall.Syscall(procGetShortPathNameW.Addr(), 3, uintptr(unsafe.Pointer(longpath)), uintptr(unsafe.Pointer(shortpath)), uintptr(buflen))
+ n = uint32(r0)
+ if n == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetStartupInfo(startupInfo *StartupInfo) (err error) {
+ r1, _, e1 := syscall.Syscall(procGetStartupInfoW.Addr(), 1, uintptr(unsafe.Pointer(startupInfo)), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetStdHandle(stdhandle uint32) (handle Handle, err error) {
+ r0, _, e1 := syscall.Syscall(procGetStdHandle.Addr(), 1, uintptr(stdhandle), 0, 0)
+ handle = Handle(r0)
+ if handle == InvalidHandle {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func getSystemDirectory(dir *uint16, dirLen uint32) (len uint32, err error) {
+ r0, _, e1 := syscall.Syscall(procGetSystemDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(dir)), uintptr(dirLen), 0)
+ len = uint32(r0)
+ if len == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func getSystemPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) {
+ r1, _, e1 := syscall.Syscall6(procGetSystemPreferredUILanguages.Addr(), 4, uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize)), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetSystemTimeAsFileTime(time *Filetime) {
+ syscall.Syscall(procGetSystemTimeAsFileTime.Addr(), 1, uintptr(unsafe.Pointer(time)), 0, 0)
+ return
+}
+
+func GetSystemTimePreciseAsFileTime(time *Filetime) {
+ syscall.Syscall(procGetSystemTimePreciseAsFileTime.Addr(), 1, uintptr(unsafe.Pointer(time)), 0, 0)
+ return
+}
+
+func getSystemWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) {
+ r0, _, e1 := syscall.Syscall(procGetSystemWindowsDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(dir)), uintptr(dirLen), 0)
+ len = uint32(r0)
+ if len == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetTempPath(buflen uint32, buf *uint16) (n uint32, err error) {
+ r0, _, e1 := syscall.Syscall(procGetTempPathW.Addr(), 2, uintptr(buflen), uintptr(unsafe.Pointer(buf)), 0)
+ n = uint32(r0)
+ if n == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func getThreadPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) {
+ r1, _, e1 := syscall.Syscall6(procGetThreadPreferredUILanguages.Addr(), 4, uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize)), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func getTickCount64() (ms uint64) {
+ r0, _, _ := syscall.Syscall(procGetTickCount64.Addr(), 0, 0, 0, 0)
+ ms = uint64(r0)
+ return
+}
+
+func GetTimeZoneInformation(tzi *Timezoneinformation) (rc uint32, err error) {
+ r0, _, e1 := syscall.Syscall(procGetTimeZoneInformation.Addr(), 1, uintptr(unsafe.Pointer(tzi)), 0, 0)
+ rc = uint32(r0)
+ if rc == 0xffffffff {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func getUserPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) {
+ r1, _, e1 := syscall.Syscall6(procGetUserPreferredUILanguages.Addr(), 4, uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize)), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetVersion() (ver uint32, err error) {
+ r0, _, e1 := syscall.Syscall(procGetVersion.Addr(), 0, 0, 0, 0)
+ ver = uint32(r0)
+ if ver == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetVolumeInformationByHandle(file Handle, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) {
+ r1, _, e1 := syscall.Syscall9(procGetVolumeInformationByHandleW.Addr(), 8, uintptr(file), uintptr(unsafe.Pointer(volumeNameBuffer)), uintptr(volumeNameSize), uintptr(unsafe.Pointer(volumeNameSerialNumber)), uintptr(unsafe.Pointer(maximumComponentLength)), uintptr(unsafe.Pointer(fileSystemFlags)), uintptr(unsafe.Pointer(fileSystemNameBuffer)), uintptr(fileSystemNameSize), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetVolumeInformation(rootPathName *uint16, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) {
+ r1, _, e1 := syscall.Syscall9(procGetVolumeInformationW.Addr(), 8, uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeNameBuffer)), uintptr(volumeNameSize), uintptr(unsafe.Pointer(volumeNameSerialNumber)), uintptr(unsafe.Pointer(maximumComponentLength)), uintptr(unsafe.Pointer(fileSystemFlags)), uintptr(unsafe.Pointer(fileSystemNameBuffer)), uintptr(fileSystemNameSize), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetVolumeNameForVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16, bufferlength uint32) (err error) {
+ r1, _, e1 := syscall.Syscall(procGetVolumeNameForVolumeMountPointW.Addr(), 3, uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferlength))
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetVolumePathName(fileName *uint16, volumePathName *uint16, bufferLength uint32) (err error) {
+ r1, _, e1 := syscall.Syscall(procGetVolumePathNameW.Addr(), 3, uintptr(unsafe.Pointer(fileName)), uintptr(unsafe.Pointer(volumePathName)), uintptr(bufferLength))
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetVolumePathNamesForVolumeName(volumeName *uint16, volumePathNames *uint16, bufferLength uint32, returnLength *uint32) (err error) {
+ r1, _, e1 := syscall.Syscall6(procGetVolumePathNamesForVolumeNameW.Addr(), 4, uintptr(unsafe.Pointer(volumeName)), uintptr(unsafe.Pointer(volumePathNames)), uintptr(bufferLength), uintptr(unsafe.Pointer(returnLength)), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func getWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) {
+ r0, _, e1 := syscall.Syscall(procGetWindowsDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(dir)), uintptr(dirLen), 0)
+ len = uint32(r0)
+ if len == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func IsWow64Process(handle Handle, isWow64 *bool) (err error) {
+ var _p0 uint32
+ if *isWow64 {
+ _p0 = 1
+ }
+ r1, _, e1 := syscall.Syscall(procIsWow64Process.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(&_p0)), 0)
+ *isWow64 = _p0 != 0
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func IsWow64Process2(handle Handle, processMachine *uint16, nativeMachine *uint16) (err error) {
+ err = procIsWow64Process2.Find()
+ if err != nil {
+ return
+ }
+ r1, _, e1 := syscall.Syscall(procIsWow64Process2.Addr(), 3, uintptr(handle), uintptr(unsafe.Pointer(processMachine)), uintptr(unsafe.Pointer(nativeMachine)))
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func LoadLibraryEx(libname string, zero Handle, flags uintptr) (handle Handle, err error) {
+ var _p0 *uint16
+ _p0, err = syscall.UTF16PtrFromString(libname)
+ if err != nil {
+ return
+ }
+ return _LoadLibraryEx(_p0, zero, flags)
+}
+
+func _LoadLibraryEx(libname *uint16, zero Handle, flags uintptr) (handle Handle, err error) {
+ r0, _, e1 := syscall.Syscall(procLoadLibraryExW.Addr(), 3, uintptr(unsafe.Pointer(libname)), uintptr(zero), uintptr(flags))
+ handle = Handle(r0)
+ if handle == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func LoadLibrary(libname string) (handle Handle, err error) {
+ var _p0 *uint16
+ _p0, err = syscall.UTF16PtrFromString(libname)
+ if err != nil {
+ return
+ }
+ return _LoadLibrary(_p0)
+}
+
+func _LoadLibrary(libname *uint16) (handle Handle, err error) {
+ r0, _, e1 := syscall.Syscall(procLoadLibraryW.Addr(), 1, uintptr(unsafe.Pointer(libname)), 0, 0)
+ handle = Handle(r0)
+ if handle == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func LocalFree(hmem Handle) (handle Handle, err error) {
+ r0, _, e1 := syscall.Syscall(procLocalFree.Addr(), 1, uintptr(hmem), 0, 0)
+ handle = Handle(r0)
+ if handle != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func LockFileEx(file Handle, flags uint32, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *Overlapped) (err error) {
+ r1, _, e1 := syscall.Syscall6(procLockFileEx.Addr(), 6, uintptr(file), uintptr(flags), uintptr(reserved), uintptr(bytesLow), uintptr(bytesHigh), uintptr(unsafe.Pointer(overlapped)))
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func MapViewOfFile(handle Handle, access uint32, offsetHigh uint32, offsetLow uint32, length uintptr) (addr uintptr, err error) {
+ r0, _, e1 := syscall.Syscall6(procMapViewOfFile.Addr(), 5, uintptr(handle), uintptr(access), uintptr(offsetHigh), uintptr(offsetLow), uintptr(length), 0)
+ addr = uintptr(r0)
+ if addr == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func MoveFileEx(from *uint16, to *uint16, flags uint32) (err error) {
+ r1, _, e1 := syscall.Syscall(procMoveFileExW.Addr(), 3, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), uintptr(flags))
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func MoveFile(from *uint16, to *uint16) (err error) {
+ r1, _, e1 := syscall.Syscall(procMoveFileW.Addr(), 2, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func MultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) {
+ r0, _, e1 := syscall.Syscall6(procMultiByteToWideChar.Addr(), 6, uintptr(codePage), uintptr(dwFlags), uintptr(unsafe.Pointer(str)), uintptr(nstr), uintptr(unsafe.Pointer(wchar)), uintptr(nwchar))
+ nwrite = int32(r0)
+ if nwrite == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func OpenEvent(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) {
+ var _p0 uint32
+ if inheritHandle {
+ _p0 = 1
+ }
+ r0, _, e1 := syscall.Syscall(procOpenEventW.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(unsafe.Pointer(name)))
+ handle = Handle(r0)
+ if handle == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func OpenMutex(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) {
+ var _p0 uint32
+ if inheritHandle {
+ _p0 = 1
+ }
+ r0, _, e1 := syscall.Syscall(procOpenMutexW.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(unsafe.Pointer(name)))
+ handle = Handle(r0)
+ if handle == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func OpenProcess(desiredAccess uint32, inheritHandle bool, processId uint32) (handle Handle, err error) {
+ var _p0 uint32
+ if inheritHandle {
+ _p0 = 1
+ }
+ r0, _, e1 := syscall.Syscall(procOpenProcess.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(processId))
+ handle = Handle(r0)
+ if handle == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func OpenThread(desiredAccess uint32, inheritHandle bool, threadId uint32) (handle Handle, err error) {
+ var _p0 uint32
+ if inheritHandle {
+ _p0 = 1
+ }
+ r0, _, e1 := syscall.Syscall(procOpenThread.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(threadId))
+ handle = Handle(r0)
+ if handle == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func PostQueuedCompletionStatus(cphandle Handle, qty uint32, key uint32, overlapped *Overlapped) (err error) {
+ r1, _, e1 := syscall.Syscall6(procPostQueuedCompletionStatus.Addr(), 4, uintptr(cphandle), uintptr(qty), uintptr(key), uintptr(unsafe.Pointer(overlapped)), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func Process32First(snapshot Handle, procEntry *ProcessEntry32) (err error) {
+ r1, _, e1 := syscall.Syscall(procProcess32FirstW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(procEntry)), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func Process32Next(snapshot Handle, procEntry *ProcessEntry32) (err error) {
+ r1, _, e1 := syscall.Syscall(procProcess32NextW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(procEntry)), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func ProcessIdToSessionId(pid uint32, sessionid *uint32) (err error) {
+ r1, _, e1 := syscall.Syscall(procProcessIdToSessionId.Addr(), 2, uintptr(pid), uintptr(unsafe.Pointer(sessionid)), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func PulseEvent(event Handle) (err error) {
+ r1, _, e1 := syscall.Syscall(procPulseEvent.Addr(), 1, uintptr(event), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func QueryDosDevice(deviceName *uint16, targetPath *uint16, max uint32) (n uint32, err error) {
+ r0, _, e1 := syscall.Syscall(procQueryDosDeviceW.Addr(), 3, uintptr(unsafe.Pointer(deviceName)), uintptr(unsafe.Pointer(targetPath)), uintptr(max))
+ n = uint32(r0)
+ if n == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func QueryInformationJobObject(job Handle, JobObjectInformationClass int32, JobObjectInformation uintptr, JobObjectInformationLength uint32, retlen *uint32) (err error) {
+ r1, _, e1 := syscall.Syscall6(procQueryInformationJobObject.Addr(), 5, uintptr(job), uintptr(JobObjectInformationClass), uintptr(JobObjectInformation), uintptr(JobObjectInformationLength), uintptr(unsafe.Pointer(retlen)), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func ReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, inputControl *byte) (err error) {
+ r1, _, e1 := syscall.Syscall6(procReadConsoleW.Addr(), 5, uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(toread), uintptr(unsafe.Pointer(read)), uintptr(unsafe.Pointer(inputControl)), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree bool, mask uint32, retlen *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) {
+ var _p0 uint32
+ if watchSubTree {
+ _p0 = 1
+ }
+ r1, _, e1 := syscall.Syscall9(procReadDirectoryChangesW.Addr(), 8, uintptr(handle), uintptr(unsafe.Pointer(buf)), uintptr(buflen), uintptr(_p0), uintptr(mask), uintptr(unsafe.Pointer(retlen)), uintptr(unsafe.Pointer(overlapped)), uintptr(completionRoutine), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func ReadFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) {
+ var _p0 *byte
+ if len(buf) > 0 {
+ _p0 = &buf[0]
+ }
+ r1, _, e1 := syscall.Syscall6(procReadFile.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(done)), uintptr(unsafe.Pointer(overlapped)), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func ReleaseMutex(mutex Handle) (err error) {
+ r1, _, e1 := syscall.Syscall(procReleaseMutex.Addr(), 1, uintptr(mutex), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func RemoveDirectory(path *uint16) (err error) {
+ r1, _, e1 := syscall.Syscall(procRemoveDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func ResetEvent(event Handle) (err error) {
+ r1, _, e1 := syscall.Syscall(procResetEvent.Addr(), 1, uintptr(event), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func ResumeThread(thread Handle) (ret uint32, err error) {
+ r0, _, e1 := syscall.Syscall(procResumeThread.Addr(), 1, uintptr(thread), 0, 0)
+ ret = uint32(r0)
+ if ret == 0xffffffff {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func setConsoleCursorPosition(console Handle, position uint32) (err error) {
+ r1, _, e1 := syscall.Syscall(procSetConsoleCursorPosition.Addr(), 2, uintptr(console), uintptr(position), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func SetConsoleMode(console Handle, mode uint32) (err error) {
+ r1, _, e1 := syscall.Syscall(procSetConsoleMode.Addr(), 2, uintptr(console), uintptr(mode), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func SetCurrentDirectory(path *uint16) (err error) {
+ r1, _, e1 := syscall.Syscall(procSetCurrentDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func SetDefaultDllDirectories(directoryFlags uint32) (err error) {
+ r1, _, e1 := syscall.Syscall(procSetDefaultDllDirectories.Addr(), 1, uintptr(directoryFlags), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func SetDllDirectory(path string) (err error) {
+ var _p0 *uint16
+ _p0, err = syscall.UTF16PtrFromString(path)
+ if err != nil {
+ return
+ }
+ return _SetDllDirectory(_p0)
+}
+
+func _SetDllDirectory(path *uint16) (err error) {
+ r1, _, e1 := syscall.Syscall(procSetDllDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func SetEndOfFile(handle Handle) (err error) {
+ r1, _, e1 := syscall.Syscall(procSetEndOfFile.Addr(), 1, uintptr(handle), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func SetEnvironmentVariable(name *uint16, value *uint16) (err error) {
+ r1, _, e1 := syscall.Syscall(procSetEnvironmentVariableW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(value)), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func SetErrorMode(mode uint32) (ret uint32) {
+ r0, _, _ := syscall.Syscall(procSetErrorMode.Addr(), 1, uintptr(mode), 0, 0)
+ ret = uint32(r0)
+ return
+}
+
+func SetEvent(event Handle) (err error) {
+ r1, _, e1 := syscall.Syscall(procSetEvent.Addr(), 1, uintptr(event), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func SetFileAttributes(name *uint16, attrs uint32) (err error) {
+ r1, _, e1 := syscall.Syscall(procSetFileAttributesW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(attrs), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func SetFileCompletionNotificationModes(handle Handle, flags uint8) (err error) {
+ r1, _, e1 := syscall.Syscall(procSetFileCompletionNotificationModes.Addr(), 2, uintptr(handle), uintptr(flags), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func SetFileInformationByHandle(handle Handle, class uint32, inBuffer *byte, inBufferLen uint32) (err error) {
+ r1, _, e1 := syscall.Syscall6(procSetFileInformationByHandle.Addr(), 4, uintptr(handle), uintptr(class), uintptr(unsafe.Pointer(inBuffer)), uintptr(inBufferLen), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func SetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence uint32) (newlowoffset uint32, err error) {
+ r0, _, e1 := syscall.Syscall6(procSetFilePointer.Addr(), 4, uintptr(handle), uintptr(lowoffset), uintptr(unsafe.Pointer(highoffsetptr)), uintptr(whence), 0, 0)
+ newlowoffset = uint32(r0)
+ if newlowoffset == 0xffffffff {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func SetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error) {
+ r1, _, e1 := syscall.Syscall6(procSetFileTime.Addr(), 4, uintptr(handle), uintptr(unsafe.Pointer(ctime)), uintptr(unsafe.Pointer(atime)), uintptr(unsafe.Pointer(wtime)), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func SetHandleInformation(handle Handle, mask uint32, flags uint32) (err error) {
+ r1, _, e1 := syscall.Syscall(procSetHandleInformation.Addr(), 3, uintptr(handle), uintptr(mask), uintptr(flags))
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func SetInformationJobObject(job Handle, JobObjectInformationClass uint32, JobObjectInformation uintptr, JobObjectInformationLength uint32) (ret int, err error) {
+ r0, _, e1 := syscall.Syscall6(procSetInformationJobObject.Addr(), 4, uintptr(job), uintptr(JobObjectInformationClass), uintptr(JobObjectInformation), uintptr(JobObjectInformationLength), 0, 0)
+ ret = int(r0)
+ if ret == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func SetPriorityClass(process Handle, priorityClass uint32) (err error) {
+ r1, _, e1 := syscall.Syscall(procSetPriorityClass.Addr(), 2, uintptr(process), uintptr(priorityClass), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func SetProcessPriorityBoost(process Handle, disable bool) (err error) {
+ var _p0 uint32
+ if disable {
+ _p0 = 1
+ }
+ r1, _, e1 := syscall.Syscall(procSetProcessPriorityBoost.Addr(), 2, uintptr(process), uintptr(_p0), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func SetProcessShutdownParameters(level uint32, flags uint32) (err error) {
+ r1, _, e1 := syscall.Syscall(procSetProcessShutdownParameters.Addr(), 2, uintptr(level), uintptr(flags), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func SetProcessWorkingSetSizeEx(hProcess Handle, dwMinimumWorkingSetSize uintptr, dwMaximumWorkingSetSize uintptr, flags uint32) (err error) {
+ r1, _, e1 := syscall.Syscall6(procSetProcessWorkingSetSizeEx.Addr(), 4, uintptr(hProcess), uintptr(dwMinimumWorkingSetSize), uintptr(dwMaximumWorkingSetSize), uintptr(flags), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func SetStdHandle(stdhandle uint32, handle Handle) (err error) {
+ r1, _, e1 := syscall.Syscall(procSetStdHandle.Addr(), 2, uintptr(stdhandle), uintptr(handle), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func SetVolumeLabel(rootPathName *uint16, volumeName *uint16) (err error) {
+ r1, _, e1 := syscall.Syscall(procSetVolumeLabelW.Addr(), 2, uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeName)), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func SetVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16) (err error) {
+ r1, _, e1 := syscall.Syscall(procSetVolumeMountPointW.Addr(), 2, uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(unsafe.Pointer(volumeName)), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func SleepEx(milliseconds uint32, alertable bool) (ret uint32) {
+ var _p0 uint32
+ if alertable {
+ _p0 = 1
+ }
+ r0, _, _ := syscall.Syscall(procSleepEx.Addr(), 2, uintptr(milliseconds), uintptr(_p0), 0)
+ ret = uint32(r0)
+ return
+}
+
+func TerminateJobObject(job Handle, exitCode uint32) (err error) {
+ r1, _, e1 := syscall.Syscall(procTerminateJobObject.Addr(), 2, uintptr(job), uintptr(exitCode), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func TerminateProcess(handle Handle, exitcode uint32) (err error) {
+ r1, _, e1 := syscall.Syscall(procTerminateProcess.Addr(), 2, uintptr(handle), uintptr(exitcode), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func Thread32First(snapshot Handle, threadEntry *ThreadEntry32) (err error) {
+ r1, _, e1 := syscall.Syscall(procThread32First.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(threadEntry)), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func Thread32Next(snapshot Handle, threadEntry *ThreadEntry32) (err error) {
+ r1, _, e1 := syscall.Syscall(procThread32Next.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(threadEntry)), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func UnlockFileEx(file Handle, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *Overlapped) (err error) {
+ r1, _, e1 := syscall.Syscall6(procUnlockFileEx.Addr(), 5, uintptr(file), uintptr(reserved), uintptr(bytesLow), uintptr(bytesHigh), uintptr(unsafe.Pointer(overlapped)), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func UnmapViewOfFile(addr uintptr) (err error) {
+ r1, _, e1 := syscall.Syscall(procUnmapViewOfFile.Addr(), 1, uintptr(addr), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func VirtualAlloc(address uintptr, size uintptr, alloctype uint32, protect uint32) (value uintptr, err error) {
+ r0, _, e1 := syscall.Syscall6(procVirtualAlloc.Addr(), 4, uintptr(address), uintptr(size), uintptr(alloctype), uintptr(protect), 0, 0)
+ value = uintptr(r0)
+ if value == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func VirtualFree(address uintptr, size uintptr, freetype uint32) (err error) {
+ r1, _, e1 := syscall.Syscall(procVirtualFree.Addr(), 3, uintptr(address), uintptr(size), uintptr(freetype))
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func VirtualLock(addr uintptr, length uintptr) (err error) {
+ r1, _, e1 := syscall.Syscall(procVirtualLock.Addr(), 2, uintptr(addr), uintptr(length), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func VirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect *uint32) (err error) {
+ r1, _, e1 := syscall.Syscall6(procVirtualProtect.Addr(), 4, uintptr(address), uintptr(size), uintptr(newprotect), uintptr(unsafe.Pointer(oldprotect)), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func VirtualUnlock(addr uintptr, length uintptr) (err error) {
+ r1, _, e1 := syscall.Syscall(procVirtualUnlock.Addr(), 2, uintptr(addr), uintptr(length), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func waitForMultipleObjects(count uint32, handles uintptr, waitAll bool, waitMilliseconds uint32) (event uint32, err error) {
+ var _p0 uint32
+ if waitAll {
+ _p0 = 1
+ }
+ r0, _, e1 := syscall.Syscall6(procWaitForMultipleObjects.Addr(), 4, uintptr(count), uintptr(handles), uintptr(_p0), uintptr(waitMilliseconds), 0, 0)
+ event = uint32(r0)
+ if event == 0xffffffff {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func WaitForSingleObject(handle Handle, waitMilliseconds uint32) (event uint32, err error) {
+ r0, _, e1 := syscall.Syscall(procWaitForSingleObject.Addr(), 2, uintptr(handle), uintptr(waitMilliseconds), 0)
+ event = uint32(r0)
+ if event == 0xffffffff {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) {
+ r1, _, e1 := syscall.Syscall6(procWriteConsoleW.Addr(), 5, uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(towrite), uintptr(unsafe.Pointer(written)), uintptr(unsafe.Pointer(reserved)), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func WriteFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) {
+ var _p0 *byte
+ if len(buf) > 0 {
+ _p0 = &buf[0]
+ }
+ r1, _, e1 := syscall.Syscall6(procWriteFile.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(done)), uintptr(unsafe.Pointer(overlapped)), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func AcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, recvd *uint32, overlapped *Overlapped) (err error) {
+ r1, _, e1 := syscall.Syscall9(procAcceptEx.Addr(), 8, uintptr(ls), uintptr(as), uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(overlapped)), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetAcceptExSockaddrs(buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, lrsa **RawSockaddrAny, lrsalen *int32, rrsa **RawSockaddrAny, rrsalen *int32) {
+ syscall.Syscall9(procGetAcceptExSockaddrs.Addr(), 8, uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(lrsa)), uintptr(unsafe.Pointer(lrsalen)), uintptr(unsafe.Pointer(rrsa)), uintptr(unsafe.Pointer(rrsalen)), 0)
+ return
+}
+
+func TransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) {
+ r1, _, e1 := syscall.Syscall9(procTransmitFile.Addr(), 7, uintptr(s), uintptr(handle), uintptr(bytesToWrite), uintptr(bytsPerSend), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(transmitFileBuf)), uintptr(flags), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func NetApiBufferFree(buf *byte) (neterr error) {
+ r0, _, _ := syscall.Syscall(procNetApiBufferFree.Addr(), 1, uintptr(unsafe.Pointer(buf)), 0, 0)
+ if r0 != 0 {
+ neterr = syscall.Errno(r0)
+ }
+ return
+}
+
+func NetGetJoinInformation(server *uint16, name **uint16, bufType *uint32) (neterr error) {
+ r0, _, _ := syscall.Syscall(procNetGetJoinInformation.Addr(), 3, uintptr(unsafe.Pointer(server)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(bufType)))
+ if r0 != 0 {
+ neterr = syscall.Errno(r0)
+ }
+ return
+}
+
+func NetUserGetInfo(serverName *uint16, userName *uint16, level uint32, buf **byte) (neterr error) {
+ r0, _, _ := syscall.Syscall6(procNetUserGetInfo.Addr(), 4, uintptr(unsafe.Pointer(serverName)), uintptr(unsafe.Pointer(userName)), uintptr(level), uintptr(unsafe.Pointer(buf)), 0, 0)
+ if r0 != 0 {
+ neterr = syscall.Errno(r0)
+ }
+ return
+}
+
+func rtlGetNtVersionNumbers(majorVersion *uint32, minorVersion *uint32, buildNumber *uint32) {
+ syscall.Syscall(procRtlGetNtVersionNumbers.Addr(), 3, uintptr(unsafe.Pointer(majorVersion)), uintptr(unsafe.Pointer(minorVersion)), uintptr(unsafe.Pointer(buildNumber)))
+ return
+}
+
+func rtlGetVersion(info *OsVersionInfoEx) (ret error) {
+ r0, _, _ := syscall.Syscall(procRtlGetVersion.Addr(), 1, uintptr(unsafe.Pointer(info)), 0, 0)
+ if r0 != 0 {
+ ret = syscall.Errno(r0)
+ }
+ return
+}
+
+func clsidFromString(lpsz *uint16, pclsid *GUID) (ret error) {
+ r0, _, _ := syscall.Syscall(procCLSIDFromString.Addr(), 2, uintptr(unsafe.Pointer(lpsz)), uintptr(unsafe.Pointer(pclsid)), 0)
+ if r0 != 0 {
+ ret = syscall.Errno(r0)
+ }
+ return
+}
+
+func coCreateGuid(pguid *GUID) (ret error) {
+ r0, _, _ := syscall.Syscall(procCoCreateGuid.Addr(), 1, uintptr(unsafe.Pointer(pguid)), 0, 0)
+ if r0 != 0 {
+ ret = syscall.Errno(r0)
+ }
+ return
+}
+
+func CoTaskMemFree(address unsafe.Pointer) {
+ syscall.Syscall(procCoTaskMemFree.Addr(), 1, uintptr(address), 0, 0)
+ return
+}
+
+func stringFromGUID2(rguid *GUID, lpsz *uint16, cchMax int32) (chars int32) {
+ r0, _, _ := syscall.Syscall(procStringFromGUID2.Addr(), 3, uintptr(unsafe.Pointer(rguid)), uintptr(unsafe.Pointer(lpsz)), uintptr(cchMax))
+ chars = int32(r0)
+ return
+}
+
+func EnumProcesses(processIds []uint32, bytesReturned *uint32) (err error) {
+ var _p0 *uint32
+ if len(processIds) > 0 {
+ _p0 = &processIds[0]
+ }
+ r1, _, e1 := syscall.Syscall(procEnumProcesses.Addr(), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(processIds)), uintptr(unsafe.Pointer(bytesReturned)))
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetUserNameEx(nameFormat uint32, nameBuffre *uint16, nSize *uint32) (err error) {
+ r1, _, e1 := syscall.Syscall(procGetUserNameExW.Addr(), 3, uintptr(nameFormat), uintptr(unsafe.Pointer(nameBuffre)), uintptr(unsafe.Pointer(nSize)))
+ if r1&0xff == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func TranslateName(accName *uint16, accNameFormat uint32, desiredNameFormat uint32, translatedName *uint16, nSize *uint32) (err error) {
+ r1, _, e1 := syscall.Syscall6(procTranslateNameW.Addr(), 5, uintptr(unsafe.Pointer(accName)), uintptr(accNameFormat), uintptr(desiredNameFormat), uintptr(unsafe.Pointer(translatedName)), uintptr(unsafe.Pointer(nSize)), 0)
+ if r1&0xff == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func CommandLineToArgv(cmd *uint16, argc *int32) (argv *[8192]*[8192]uint16, err error) {
+ r0, _, e1 := syscall.Syscall(procCommandLineToArgvW.Addr(), 2, uintptr(unsafe.Pointer(cmd)), uintptr(unsafe.Pointer(argc)), 0)
+ argv = (*[8192]*[8192]uint16)(unsafe.Pointer(r0))
+ if argv == nil {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func shGetKnownFolderPath(id *KNOWNFOLDERID, flags uint32, token Token, path **uint16) (ret error) {
+ r0, _, _ := syscall.Syscall6(procSHGetKnownFolderPath.Addr(), 4, uintptr(unsafe.Pointer(id)), uintptr(flags), uintptr(token), uintptr(unsafe.Pointer(path)), 0, 0)
+ if r0 != 0 {
+ ret = syscall.Errno(r0)
+ }
+ return
+}
+
+func ShellExecute(hwnd Handle, verb *uint16, file *uint16, args *uint16, cwd *uint16, showCmd int32) (err error) {
+ r1, _, e1 := syscall.Syscall6(procShellExecuteW.Addr(), 6, uintptr(hwnd), uintptr(unsafe.Pointer(verb)), uintptr(unsafe.Pointer(file)), uintptr(unsafe.Pointer(args)), uintptr(unsafe.Pointer(cwd)), uintptr(showCmd))
+ if r1 <= 32 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func ExitWindowsEx(flags uint32, reason uint32) (err error) {
+ r1, _, e1 := syscall.Syscall(procExitWindowsEx.Addr(), 2, uintptr(flags), uintptr(reason), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func MessageBox(hwnd Handle, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) {
+ r0, _, e1 := syscall.Syscall6(procMessageBoxW.Addr(), 4, uintptr(hwnd), uintptr(unsafe.Pointer(text)), uintptr(unsafe.Pointer(caption)), uintptr(boxtype), 0, 0)
+ ret = int32(r0)
+ if ret == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func CreateEnvironmentBlock(block **uint16, token Token, inheritExisting bool) (err error) {
+ var _p0 uint32
+ if inheritExisting {
+ _p0 = 1
+ }
+ r1, _, e1 := syscall.Syscall(procCreateEnvironmentBlock.Addr(), 3, uintptr(unsafe.Pointer(block)), uintptr(token), uintptr(_p0))
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func DestroyEnvironmentBlock(block *uint16) (err error) {
+ r1, _, e1 := syscall.Syscall(procDestroyEnvironmentBlock.Addr(), 1, uintptr(unsafe.Pointer(block)), 0, 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) {
+ r1, _, e1 := syscall.Syscall(procGetUserProfileDirectoryW.Addr(), 3, uintptr(t), uintptr(unsafe.Pointer(dir)), uintptr(unsafe.Pointer(dirLen)))
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func FreeAddrInfoW(addrinfo *AddrinfoW) {
+ syscall.Syscall(procFreeAddrInfoW.Addr(), 1, uintptr(unsafe.Pointer(addrinfo)), 0, 0)
+ return
+}
+
+func GetAddrInfoW(nodename *uint16, servicename *uint16, hints *AddrinfoW, result **AddrinfoW) (sockerr error) {
+ r0, _, _ := syscall.Syscall6(procGetAddrInfoW.Addr(), 4, uintptr(unsafe.Pointer(nodename)), uintptr(unsafe.Pointer(servicename)), uintptr(unsafe.Pointer(hints)), uintptr(unsafe.Pointer(result)), 0, 0)
+ if r0 != 0 {
+ sockerr = syscall.Errno(r0)
+ }
+ return
+}
+
+func WSACleanup() (err error) {
+ r1, _, e1 := syscall.Syscall(procWSACleanup.Addr(), 0, 0, 0, 0)
+ if r1 == socket_error {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func WSAEnumProtocols(protocols *int32, protocolBuffer *WSAProtocolInfo, bufferLength *uint32) (n int32, err error) {
+ r0, _, e1 := syscall.Syscall(procWSAEnumProtocolsW.Addr(), 3, uintptr(unsafe.Pointer(protocols)), uintptr(unsafe.Pointer(protocolBuffer)), uintptr(unsafe.Pointer(bufferLength)))
+ n = int32(r0)
+ if n == -1 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func WSAIoctl(s Handle, iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbob uint32, cbbr *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) {
+ r1, _, e1 := syscall.Syscall9(procWSAIoctl.Addr(), 9, uintptr(s), uintptr(iocc), uintptr(unsafe.Pointer(inbuf)), uintptr(cbif), uintptr(unsafe.Pointer(outbuf)), uintptr(cbob), uintptr(unsafe.Pointer(cbbr)), uintptr(unsafe.Pointer(overlapped)), uintptr(completionRoutine))
+ if r1 == socket_error {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func WSARecv(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, overlapped *Overlapped, croutine *byte) (err error) {
+ r1, _, e1 := syscall.Syscall9(procWSARecv.Addr(), 7, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0, 0)
+ if r1 == socket_error {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func WSARecvFrom(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, from *RawSockaddrAny, fromlen *int32, overlapped *Overlapped, croutine *byte) (err error) {
+ r1, _, e1 := syscall.Syscall9(procWSARecvFrom.Addr(), 9, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)))
+ if r1 == socket_error {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func WSASend(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, overlapped *Overlapped, croutine *byte) (err error) {
+ r1, _, e1 := syscall.Syscall9(procWSASend.Addr(), 7, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(sent)), uintptr(flags), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0, 0)
+ if r1 == socket_error {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func WSASendTo(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to *RawSockaddrAny, tolen int32, overlapped *Overlapped, croutine *byte) (err error) {
+ r1, _, e1 := syscall.Syscall9(procWSASendTo.Addr(), 9, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(sent)), uintptr(flags), uintptr(unsafe.Pointer(to)), uintptr(tolen), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)))
+ if r1 == socket_error {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func WSAStartup(verreq uint32, data *WSAData) (sockerr error) {
+ r0, _, _ := syscall.Syscall(procWSAStartup.Addr(), 2, uintptr(verreq), uintptr(unsafe.Pointer(data)), 0)
+ if r0 != 0 {
+ sockerr = syscall.Errno(r0)
+ }
+ return
+}
+
+func bind(s Handle, name unsafe.Pointer, namelen int32) (err error) {
+ r1, _, e1 := syscall.Syscall(procbind.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen))
+ if r1 == socket_error {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func Closesocket(s Handle) (err error) {
+ r1, _, e1 := syscall.Syscall(procclosesocket.Addr(), 1, uintptr(s), 0, 0)
+ if r1 == socket_error {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func connect(s Handle, name unsafe.Pointer, namelen int32) (err error) {
+ r1, _, e1 := syscall.Syscall(procconnect.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen))
+ if r1 == socket_error {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetHostByName(name string) (h *Hostent, err error) {
+ var _p0 *byte
+ _p0, err = syscall.BytePtrFromString(name)
+ if err != nil {
+ return
+ }
+ return _GetHostByName(_p0)
+}
+
+func _GetHostByName(name *byte) (h *Hostent, err error) {
+ r0, _, e1 := syscall.Syscall(procgethostbyname.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0)
+ h = (*Hostent)(unsafe.Pointer(r0))
+ if h == nil {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func getpeername(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) {
+ r1, _, e1 := syscall.Syscall(procgetpeername.Addr(), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ if r1 == socket_error {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetProtoByName(name string) (p *Protoent, err error) {
+ var _p0 *byte
+ _p0, err = syscall.BytePtrFromString(name)
+ if err != nil {
+ return
+ }
+ return _GetProtoByName(_p0)
+}
+
+func _GetProtoByName(name *byte) (p *Protoent, err error) {
+ r0, _, e1 := syscall.Syscall(procgetprotobyname.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0)
+ p = (*Protoent)(unsafe.Pointer(r0))
+ if p == nil {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func GetServByName(name string, proto string) (s *Servent, err error) {
+ var _p0 *byte
+ _p0, err = syscall.BytePtrFromString(name)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = syscall.BytePtrFromString(proto)
+ if err != nil {
+ return
+ }
+ return _GetServByName(_p0, _p1)
+}
+
+func _GetServByName(name *byte, proto *byte) (s *Servent, err error) {
+ r0, _, e1 := syscall.Syscall(procgetservbyname.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(proto)), 0)
+ s = (*Servent)(unsafe.Pointer(r0))
+ if s == nil {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func getsockname(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) {
+ r1, _, e1 := syscall.Syscall(procgetsockname.Addr(), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ if r1 == socket_error {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func Getsockopt(s Handle, level int32, optname int32, optval *byte, optlen *int32) (err error) {
+ r1, _, e1 := syscall.Syscall6(procgetsockopt.Addr(), 5, uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(unsafe.Pointer(optlen)), 0)
+ if r1 == socket_error {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func listen(s Handle, backlog int32) (err error) {
+ r1, _, e1 := syscall.Syscall(proclisten.Addr(), 2, uintptr(s), uintptr(backlog), 0)
+ if r1 == socket_error {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func Ntohs(netshort uint16) (u uint16) {
+ r0, _, _ := syscall.Syscall(procntohs.Addr(), 1, uintptr(netshort), 0, 0)
+ u = uint16(r0)
+ return
+}
+
+func recvfrom(s Handle, buf []byte, flags int32, from *RawSockaddrAny, fromlen *int32) (n int32, err error) {
+ var _p0 *byte
+ if len(buf) > 0 {
+ _p0 = &buf[0]
+ }
+ r0, _, e1 := syscall.Syscall6(procrecvfrom.Addr(), 6, uintptr(s), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
+ n = int32(r0)
+ if n == -1 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func sendto(s Handle, buf []byte, flags int32, to unsafe.Pointer, tolen int32) (err error) {
+ var _p0 *byte
+ if len(buf) > 0 {
+ _p0 = &buf[0]
+ }
+ r1, _, e1 := syscall.Syscall6(procsendto.Addr(), 6, uintptr(s), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(tolen))
+ if r1 == socket_error {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func Setsockopt(s Handle, level int32, optname int32, optval *byte, optlen int32) (err error) {
+ r1, _, e1 := syscall.Syscall6(procsetsockopt.Addr(), 5, uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(optlen), 0)
+ if r1 == socket_error {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func shutdown(s Handle, how int32) (err error) {
+ r1, _, e1 := syscall.Syscall(procshutdown.Addr(), 2, uintptr(s), uintptr(how), 0)
+ if r1 == socket_error {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func socket(af int32, typ int32, protocol int32) (handle Handle, err error) {
+ r0, _, e1 := syscall.Syscall(procsocket.Addr(), 3, uintptr(af), uintptr(typ), uintptr(protocol))
+ handle = Handle(r0)
+ if handle == InvalidHandle {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func WTSEnumerateSessions(handle Handle, reserved uint32, version uint32, sessions **WTS_SESSION_INFO, count *uint32) (err error) {
+ r1, _, e1 := syscall.Syscall6(procWTSEnumerateSessionsW.Addr(), 5, uintptr(handle), uintptr(reserved), uintptr(version), uintptr(unsafe.Pointer(sessions)), uintptr(unsafe.Pointer(count)), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+func WTSFreeMemory(ptr uintptr) {
+ syscall.Syscall(procWTSFreeMemory.Addr(), 1, uintptr(ptr), 0, 0)
+ return
+}
+
+func WTSQueryUserToken(session uint32, token *Token) (err error) {
+ r1, _, e1 := syscall.Syscall(procWTSQueryUserToken.Addr(), 2, uintptr(session), uintptr(unsafe.Pointer(token)), 0)
+ if r1 == 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
diff --git a/vendor/golang.org/x/text/unicode/bidi/BUILD.bazel b/vendor/golang.org/x/text/unicode/bidi/BUILD.bazel
index d043bd7c..8518a63c 100644
--- a/vendor/golang.org/x/text/unicode/bidi/BUILD.bazel
+++ b/vendor/golang.org/x/text/unicode/bidi/BUILD.bazel
@@ -10,6 +10,7 @@ go_library(
"tables10.0.0.go",
"tables11.0.0.go",
"tables12.0.0.go",
+ "tables13.0.0.go",
"tables9.0.0.go",
"trieval.go",
],
diff --git a/vendor/golang.org/x/text/unicode/bidi/tables12.0.0.go b/vendor/golang.org/x/text/unicode/bidi/tables12.0.0.go
index 7ffa3651..647f2d42 100644
--- a/vendor/golang.org/x/text/unicode/bidi/tables12.0.0.go
+++ b/vendor/golang.org/x/text/unicode/bidi/tables12.0.0.go
@@ -1,6 +1,6 @@
// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
-// +build go1.14
+// +build go1.14,!go1.16
package bidi
diff --git a/vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go b/vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go
new file mode 100644
index 00000000..c937d097
--- /dev/null
+++ b/vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go
@@ -0,0 +1,1955 @@
+// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
+
+// +build go1.16
+
+package bidi
+
+// UnicodeVersion is the Unicode version from which the tables in this package are derived.
+const UnicodeVersion = "13.0.0"
+
+// xorMasks contains masks to be xor-ed with brackets to get the reverse
+// version.
+var xorMasks = []int32{ // 8 elements
+ 0, 1, 6, 7, 3, 15, 29, 63,
+} // Size: 56 bytes
+
+// lookup returns the trie value for the first UTF-8 encoding in s and
+// the width in bytes of this encoding. The size will be 0 if s does not
+// hold enough bytes to complete the encoding. len(s) must be greater than 0.
+func (t *bidiTrie) lookup(s []byte) (v uint8, sz int) {
+ c0 := s[0]
+ switch {
+ case c0 < 0x80: // is ASCII
+ return bidiValues[c0], 1
+ case c0 < 0xC2:
+ return 0, 1 // Illegal UTF-8: not a starter, not ASCII.
+ case c0 < 0xE0: // 2-byte UTF-8
+ if len(s) < 2 {
+ return 0, 0
+ }
+ i := bidiIndex[c0]
+ c1 := s[1]
+ if c1 < 0x80 || 0xC0 <= c1 {
+ return 0, 1 // Illegal UTF-8: not a continuation byte.
+ }
+ return t.lookupValue(uint32(i), c1), 2
+ case c0 < 0xF0: // 3-byte UTF-8
+ if len(s) < 3 {
+ return 0, 0
+ }
+ i := bidiIndex[c0]
+ c1 := s[1]
+ if c1 < 0x80 || 0xC0 <= c1 {
+ return 0, 1 // Illegal UTF-8: not a continuation byte.
+ }
+ o := uint32(i)<<6 + uint32(c1)
+ i = bidiIndex[o]
+ c2 := s[2]
+ if c2 < 0x80 || 0xC0 <= c2 {
+ return 0, 2 // Illegal UTF-8: not a continuation byte.
+ }
+ return t.lookupValue(uint32(i), c2), 3
+ case c0 < 0xF8: // 4-byte UTF-8
+ if len(s) < 4 {
+ return 0, 0
+ }
+ i := bidiIndex[c0]
+ c1 := s[1]
+ if c1 < 0x80 || 0xC0 <= c1 {
+ return 0, 1 // Illegal UTF-8: not a continuation byte.
+ }
+ o := uint32(i)<<6 + uint32(c1)
+ i = bidiIndex[o]
+ c2 := s[2]
+ if c2 < 0x80 || 0xC0 <= c2 {
+ return 0, 2 // Illegal UTF-8: not a continuation byte.
+ }
+ o = uint32(i)<<6 + uint32(c2)
+ i = bidiIndex[o]
+ c3 := s[3]
+ if c3 < 0x80 || 0xC0 <= c3 {
+ return 0, 3 // Illegal UTF-8: not a continuation byte.
+ }
+ return t.lookupValue(uint32(i), c3), 4
+ }
+ // Illegal rune
+ return 0, 1
+}
+
+// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.
+// s must start with a full and valid UTF-8 encoded rune.
+func (t *bidiTrie) lookupUnsafe(s []byte) uint8 {
+ c0 := s[0]
+ if c0 < 0x80 { // is ASCII
+ return bidiValues[c0]
+ }
+ i := bidiIndex[c0]
+ if c0 < 0xE0 { // 2-byte UTF-8
+ return t.lookupValue(uint32(i), s[1])
+ }
+ i = bidiIndex[uint32(i)<<6+uint32(s[1])]
+ if c0 < 0xF0 { // 3-byte UTF-8
+ return t.lookupValue(uint32(i), s[2])
+ }
+ i = bidiIndex[uint32(i)<<6+uint32(s[2])]
+ if c0 < 0xF8 { // 4-byte UTF-8
+ return t.lookupValue(uint32(i), s[3])
+ }
+ return 0
+}
+
+// lookupString returns the trie value for the first UTF-8 encoding in s and
+// the width in bytes of this encoding. The size will be 0 if s does not
+// hold enough bytes to complete the encoding. len(s) must be greater than 0.
+func (t *bidiTrie) lookupString(s string) (v uint8, sz int) {
+ c0 := s[0]
+ switch {
+ case c0 < 0x80: // is ASCII
+ return bidiValues[c0], 1
+ case c0 < 0xC2:
+ return 0, 1 // Illegal UTF-8: not a starter, not ASCII.
+ case c0 < 0xE0: // 2-byte UTF-8
+ if len(s) < 2 {
+ return 0, 0
+ }
+ i := bidiIndex[c0]
+ c1 := s[1]
+ if c1 < 0x80 || 0xC0 <= c1 {
+ return 0, 1 // Illegal UTF-8: not a continuation byte.
+ }
+ return t.lookupValue(uint32(i), c1), 2
+ case c0 < 0xF0: // 3-byte UTF-8
+ if len(s) < 3 {
+ return 0, 0
+ }
+ i := bidiIndex[c0]
+ c1 := s[1]
+ if c1 < 0x80 || 0xC0 <= c1 {
+ return 0, 1 // Illegal UTF-8: not a continuation byte.
+ }
+ o := uint32(i)<<6 + uint32(c1)
+ i = bidiIndex[o]
+ c2 := s[2]
+ if c2 < 0x80 || 0xC0 <= c2 {
+ return 0, 2 // Illegal UTF-8: not a continuation byte.
+ }
+ return t.lookupValue(uint32(i), c2), 3
+ case c0 < 0xF8: // 4-byte UTF-8
+ if len(s) < 4 {
+ return 0, 0
+ }
+ i := bidiIndex[c0]
+ c1 := s[1]
+ if c1 < 0x80 || 0xC0 <= c1 {
+ return 0, 1 // Illegal UTF-8: not a continuation byte.
+ }
+ o := uint32(i)<<6 + uint32(c1)
+ i = bidiIndex[o]
+ c2 := s[2]
+ if c2 < 0x80 || 0xC0 <= c2 {
+ return 0, 2 // Illegal UTF-8: not a continuation byte.
+ }
+ o = uint32(i)<<6 + uint32(c2)
+ i = bidiIndex[o]
+ c3 := s[3]
+ if c3 < 0x80 || 0xC0 <= c3 {
+ return 0, 3 // Illegal UTF-8: not a continuation byte.
+ }
+ return t.lookupValue(uint32(i), c3), 4
+ }
+ // Illegal rune
+ return 0, 1
+}
+
+// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.
+// s must start with a full and valid UTF-8 encoded rune.
+func (t *bidiTrie) lookupStringUnsafe(s string) uint8 {
+ c0 := s[0]
+ if c0 < 0x80 { // is ASCII
+ return bidiValues[c0]
+ }
+ i := bidiIndex[c0]
+ if c0 < 0xE0 { // 2-byte UTF-8
+ return t.lookupValue(uint32(i), s[1])
+ }
+ i = bidiIndex[uint32(i)<<6+uint32(s[1])]
+ if c0 < 0xF0 { // 3-byte UTF-8
+ return t.lookupValue(uint32(i), s[2])
+ }
+ i = bidiIndex[uint32(i)<<6+uint32(s[2])]
+ if c0 < 0xF8 { // 4-byte UTF-8
+ return t.lookupValue(uint32(i), s[3])
+ }
+ return 0
+}
+
+// bidiTrie. Total size: 17408 bytes (17.00 KiB). Checksum: df85fcbfe9b8377f.
+type bidiTrie struct{}
+
+func newBidiTrie(i int) *bidiTrie {
+ return &bidiTrie{}
+}
+
+// lookupValue determines the type of block n and looks up the value for b.
+func (t *bidiTrie) lookupValue(n uint32, b byte) uint8 {
+ switch {
+ default:
+ return uint8(bidiValues[n<<6+uint32(b)])
+ }
+}
+
+// bidiValues: 248 blocks, 15872 entries, 15872 bytes
+// The third block is the zero block.
+var bidiValues = [15872]uint8{
+ // Block 0x0, offset 0x0
+ 0x00: 0x000b, 0x01: 0x000b, 0x02: 0x000b, 0x03: 0x000b, 0x04: 0x000b, 0x05: 0x000b,
+ 0x06: 0x000b, 0x07: 0x000b, 0x08: 0x000b, 0x09: 0x0008, 0x0a: 0x0007, 0x0b: 0x0008,
+ 0x0c: 0x0009, 0x0d: 0x0007, 0x0e: 0x000b, 0x0f: 0x000b, 0x10: 0x000b, 0x11: 0x000b,
+ 0x12: 0x000b, 0x13: 0x000b, 0x14: 0x000b, 0x15: 0x000b, 0x16: 0x000b, 0x17: 0x000b,
+ 0x18: 0x000b, 0x19: 0x000b, 0x1a: 0x000b, 0x1b: 0x000b, 0x1c: 0x0007, 0x1d: 0x0007,
+ 0x1e: 0x0007, 0x1f: 0x0008, 0x20: 0x0009, 0x21: 0x000a, 0x22: 0x000a, 0x23: 0x0004,
+ 0x24: 0x0004, 0x25: 0x0004, 0x26: 0x000a, 0x27: 0x000a, 0x28: 0x003a, 0x29: 0x002a,
+ 0x2a: 0x000a, 0x2b: 0x0003, 0x2c: 0x0006, 0x2d: 0x0003, 0x2e: 0x0006, 0x2f: 0x0006,
+ 0x30: 0x0002, 0x31: 0x0002, 0x32: 0x0002, 0x33: 0x0002, 0x34: 0x0002, 0x35: 0x0002,
+ 0x36: 0x0002, 0x37: 0x0002, 0x38: 0x0002, 0x39: 0x0002, 0x3a: 0x0006, 0x3b: 0x000a,
+ 0x3c: 0x000a, 0x3d: 0x000a, 0x3e: 0x000a, 0x3f: 0x000a,
+ // Block 0x1, offset 0x40
+ 0x40: 0x000a,
+ 0x5b: 0x005a, 0x5c: 0x000a, 0x5d: 0x004a,
+ 0x5e: 0x000a, 0x5f: 0x000a, 0x60: 0x000a,
+ 0x7b: 0x005a,
+ 0x7c: 0x000a, 0x7d: 0x004a, 0x7e: 0x000a, 0x7f: 0x000b,
+ // Block 0x2, offset 0x80
+ // Block 0x3, offset 0xc0
+ 0xc0: 0x000b, 0xc1: 0x000b, 0xc2: 0x000b, 0xc3: 0x000b, 0xc4: 0x000b, 0xc5: 0x0007,
+ 0xc6: 0x000b, 0xc7: 0x000b, 0xc8: 0x000b, 0xc9: 0x000b, 0xca: 0x000b, 0xcb: 0x000b,
+ 0xcc: 0x000b, 0xcd: 0x000b, 0xce: 0x000b, 0xcf: 0x000b, 0xd0: 0x000b, 0xd1: 0x000b,
+ 0xd2: 0x000b, 0xd3: 0x000b, 0xd4: 0x000b, 0xd5: 0x000b, 0xd6: 0x000b, 0xd7: 0x000b,
+ 0xd8: 0x000b, 0xd9: 0x000b, 0xda: 0x000b, 0xdb: 0x000b, 0xdc: 0x000b, 0xdd: 0x000b,
+ 0xde: 0x000b, 0xdf: 0x000b, 0xe0: 0x0006, 0xe1: 0x000a, 0xe2: 0x0004, 0xe3: 0x0004,
+ 0xe4: 0x0004, 0xe5: 0x0004, 0xe6: 0x000a, 0xe7: 0x000a, 0xe8: 0x000a, 0xe9: 0x000a,
+ 0xeb: 0x000a, 0xec: 0x000a, 0xed: 0x000b, 0xee: 0x000a, 0xef: 0x000a,
+ 0xf0: 0x0004, 0xf1: 0x0004, 0xf2: 0x0002, 0xf3: 0x0002, 0xf4: 0x000a,
+ 0xf6: 0x000a, 0xf7: 0x000a, 0xf8: 0x000a, 0xf9: 0x0002, 0xfb: 0x000a,
+ 0xfc: 0x000a, 0xfd: 0x000a, 0xfe: 0x000a, 0xff: 0x000a,
+ // Block 0x4, offset 0x100
+ 0x117: 0x000a,
+ 0x137: 0x000a,
+ // Block 0x5, offset 0x140
+ 0x179: 0x000a, 0x17a: 0x000a,
+ // Block 0x6, offset 0x180
+ 0x182: 0x000a, 0x183: 0x000a, 0x184: 0x000a, 0x185: 0x000a,
+ 0x186: 0x000a, 0x187: 0x000a, 0x188: 0x000a, 0x189: 0x000a, 0x18a: 0x000a, 0x18b: 0x000a,
+ 0x18c: 0x000a, 0x18d: 0x000a, 0x18e: 0x000a, 0x18f: 0x000a,
+ 0x192: 0x000a, 0x193: 0x000a, 0x194: 0x000a, 0x195: 0x000a, 0x196: 0x000a, 0x197: 0x000a,
+ 0x198: 0x000a, 0x199: 0x000a, 0x19a: 0x000a, 0x19b: 0x000a, 0x19c: 0x000a, 0x19d: 0x000a,
+ 0x19e: 0x000a, 0x19f: 0x000a,
+ 0x1a5: 0x000a, 0x1a6: 0x000a, 0x1a7: 0x000a, 0x1a8: 0x000a, 0x1a9: 0x000a,
+ 0x1aa: 0x000a, 0x1ab: 0x000a, 0x1ac: 0x000a, 0x1ad: 0x000a, 0x1af: 0x000a,
+ 0x1b0: 0x000a, 0x1b1: 0x000a, 0x1b2: 0x000a, 0x1b3: 0x000a, 0x1b4: 0x000a, 0x1b5: 0x000a,
+ 0x1b6: 0x000a, 0x1b7: 0x000a, 0x1b8: 0x000a, 0x1b9: 0x000a, 0x1ba: 0x000a, 0x1bb: 0x000a,
+ 0x1bc: 0x000a, 0x1bd: 0x000a, 0x1be: 0x000a, 0x1bf: 0x000a,
+ // Block 0x7, offset 0x1c0
+ 0x1c0: 0x000c, 0x1c1: 0x000c, 0x1c2: 0x000c, 0x1c3: 0x000c, 0x1c4: 0x000c, 0x1c5: 0x000c,
+ 0x1c6: 0x000c, 0x1c7: 0x000c, 0x1c8: 0x000c, 0x1c9: 0x000c, 0x1ca: 0x000c, 0x1cb: 0x000c,
+ 0x1cc: 0x000c, 0x1cd: 0x000c, 0x1ce: 0x000c, 0x1cf: 0x000c, 0x1d0: 0x000c, 0x1d1: 0x000c,
+ 0x1d2: 0x000c, 0x1d3: 0x000c, 0x1d4: 0x000c, 0x1d5: 0x000c, 0x1d6: 0x000c, 0x1d7: 0x000c,
+ 0x1d8: 0x000c, 0x1d9: 0x000c, 0x1da: 0x000c, 0x1db: 0x000c, 0x1dc: 0x000c, 0x1dd: 0x000c,
+ 0x1de: 0x000c, 0x1df: 0x000c, 0x1e0: 0x000c, 0x1e1: 0x000c, 0x1e2: 0x000c, 0x1e3: 0x000c,
+ 0x1e4: 0x000c, 0x1e5: 0x000c, 0x1e6: 0x000c, 0x1e7: 0x000c, 0x1e8: 0x000c, 0x1e9: 0x000c,
+ 0x1ea: 0x000c, 0x1eb: 0x000c, 0x1ec: 0x000c, 0x1ed: 0x000c, 0x1ee: 0x000c, 0x1ef: 0x000c,
+ 0x1f0: 0x000c, 0x1f1: 0x000c, 0x1f2: 0x000c, 0x1f3: 0x000c, 0x1f4: 0x000c, 0x1f5: 0x000c,
+ 0x1f6: 0x000c, 0x1f7: 0x000c, 0x1f8: 0x000c, 0x1f9: 0x000c, 0x1fa: 0x000c, 0x1fb: 0x000c,
+ 0x1fc: 0x000c, 0x1fd: 0x000c, 0x1fe: 0x000c, 0x1ff: 0x000c,
+ // Block 0x8, offset 0x200
+ 0x200: 0x000c, 0x201: 0x000c, 0x202: 0x000c, 0x203: 0x000c, 0x204: 0x000c, 0x205: 0x000c,
+ 0x206: 0x000c, 0x207: 0x000c, 0x208: 0x000c, 0x209: 0x000c, 0x20a: 0x000c, 0x20b: 0x000c,
+ 0x20c: 0x000c, 0x20d: 0x000c, 0x20e: 0x000c, 0x20f: 0x000c, 0x210: 0x000c, 0x211: 0x000c,
+ 0x212: 0x000c, 0x213: 0x000c, 0x214: 0x000c, 0x215: 0x000c, 0x216: 0x000c, 0x217: 0x000c,
+ 0x218: 0x000c, 0x219: 0x000c, 0x21a: 0x000c, 0x21b: 0x000c, 0x21c: 0x000c, 0x21d: 0x000c,
+ 0x21e: 0x000c, 0x21f: 0x000c, 0x220: 0x000c, 0x221: 0x000c, 0x222: 0x000c, 0x223: 0x000c,
+ 0x224: 0x000c, 0x225: 0x000c, 0x226: 0x000c, 0x227: 0x000c, 0x228: 0x000c, 0x229: 0x000c,
+ 0x22a: 0x000c, 0x22b: 0x000c, 0x22c: 0x000c, 0x22d: 0x000c, 0x22e: 0x000c, 0x22f: 0x000c,
+ 0x234: 0x000a, 0x235: 0x000a,
+ 0x23e: 0x000a,
+ // Block 0x9, offset 0x240
+ 0x244: 0x000a, 0x245: 0x000a,
+ 0x247: 0x000a,
+ // Block 0xa, offset 0x280
+ 0x2b6: 0x000a,
+ // Block 0xb, offset 0x2c0
+ 0x2c3: 0x000c, 0x2c4: 0x000c, 0x2c5: 0x000c,
+ 0x2c6: 0x000c, 0x2c7: 0x000c, 0x2c8: 0x000c, 0x2c9: 0x000c,
+ // Block 0xc, offset 0x300
+ 0x30a: 0x000a,
+ 0x30d: 0x000a, 0x30e: 0x000a, 0x30f: 0x0004, 0x310: 0x0001, 0x311: 0x000c,
+ 0x312: 0x000c, 0x313: 0x000c, 0x314: 0x000c, 0x315: 0x000c, 0x316: 0x000c, 0x317: 0x000c,
+ 0x318: 0x000c, 0x319: 0x000c, 0x31a: 0x000c, 0x31b: 0x000c, 0x31c: 0x000c, 0x31d: 0x000c,
+ 0x31e: 0x000c, 0x31f: 0x000c, 0x320: 0x000c, 0x321: 0x000c, 0x322: 0x000c, 0x323: 0x000c,
+ 0x324: 0x000c, 0x325: 0x000c, 0x326: 0x000c, 0x327: 0x000c, 0x328: 0x000c, 0x329: 0x000c,
+ 0x32a: 0x000c, 0x32b: 0x000c, 0x32c: 0x000c, 0x32d: 0x000c, 0x32e: 0x000c, 0x32f: 0x000c,
+ 0x330: 0x000c, 0x331: 0x000c, 0x332: 0x000c, 0x333: 0x000c, 0x334: 0x000c, 0x335: 0x000c,
+ 0x336: 0x000c, 0x337: 0x000c, 0x338: 0x000c, 0x339: 0x000c, 0x33a: 0x000c, 0x33b: 0x000c,
+ 0x33c: 0x000c, 0x33d: 0x000c, 0x33e: 0x0001, 0x33f: 0x000c,
+ // Block 0xd, offset 0x340
+ 0x340: 0x0001, 0x341: 0x000c, 0x342: 0x000c, 0x343: 0x0001, 0x344: 0x000c, 0x345: 0x000c,
+ 0x346: 0x0001, 0x347: 0x000c, 0x348: 0x0001, 0x349: 0x0001, 0x34a: 0x0001, 0x34b: 0x0001,
+ 0x34c: 0x0001, 0x34d: 0x0001, 0x34e: 0x0001, 0x34f: 0x0001, 0x350: 0x0001, 0x351: 0x0001,
+ 0x352: 0x0001, 0x353: 0x0001, 0x354: 0x0001, 0x355: 0x0001, 0x356: 0x0001, 0x357: 0x0001,
+ 0x358: 0x0001, 0x359: 0x0001, 0x35a: 0x0001, 0x35b: 0x0001, 0x35c: 0x0001, 0x35d: 0x0001,
+ 0x35e: 0x0001, 0x35f: 0x0001, 0x360: 0x0001, 0x361: 0x0001, 0x362: 0x0001, 0x363: 0x0001,
+ 0x364: 0x0001, 0x365: 0x0001, 0x366: 0x0001, 0x367: 0x0001, 0x368: 0x0001, 0x369: 0x0001,
+ 0x36a: 0x0001, 0x36b: 0x0001, 0x36c: 0x0001, 0x36d: 0x0001, 0x36e: 0x0001, 0x36f: 0x0001,
+ 0x370: 0x0001, 0x371: 0x0001, 0x372: 0x0001, 0x373: 0x0001, 0x374: 0x0001, 0x375: 0x0001,
+ 0x376: 0x0001, 0x377: 0x0001, 0x378: 0x0001, 0x379: 0x0001, 0x37a: 0x0001, 0x37b: 0x0001,
+ 0x37c: 0x0001, 0x37d: 0x0001, 0x37e: 0x0001, 0x37f: 0x0001,
+ // Block 0xe, offset 0x380
+ 0x380: 0x0005, 0x381: 0x0005, 0x382: 0x0005, 0x383: 0x0005, 0x384: 0x0005, 0x385: 0x0005,
+ 0x386: 0x000a, 0x387: 0x000a, 0x388: 0x000d, 0x389: 0x0004, 0x38a: 0x0004, 0x38b: 0x000d,
+ 0x38c: 0x0006, 0x38d: 0x000d, 0x38e: 0x000a, 0x38f: 0x000a, 0x390: 0x000c, 0x391: 0x000c,
+ 0x392: 0x000c, 0x393: 0x000c, 0x394: 0x000c, 0x395: 0x000c, 0x396: 0x000c, 0x397: 0x000c,
+ 0x398: 0x000c, 0x399: 0x000c, 0x39a: 0x000c, 0x39b: 0x000d, 0x39c: 0x000d, 0x39d: 0x000d,
+ 0x39e: 0x000d, 0x39f: 0x000d, 0x3a0: 0x000d, 0x3a1: 0x000d, 0x3a2: 0x000d, 0x3a3: 0x000d,
+ 0x3a4: 0x000d, 0x3a5: 0x000d, 0x3a6: 0x000d, 0x3a7: 0x000d, 0x3a8: 0x000d, 0x3a9: 0x000d,
+ 0x3aa: 0x000d, 0x3ab: 0x000d, 0x3ac: 0x000d, 0x3ad: 0x000d, 0x3ae: 0x000d, 0x3af: 0x000d,
+ 0x3b0: 0x000d, 0x3b1: 0x000d, 0x3b2: 0x000d, 0x3b3: 0x000d, 0x3b4: 0x000d, 0x3b5: 0x000d,
+ 0x3b6: 0x000d, 0x3b7: 0x000d, 0x3b8: 0x000d, 0x3b9: 0x000d, 0x3ba: 0x000d, 0x3bb: 0x000d,
+ 0x3bc: 0x000d, 0x3bd: 0x000d, 0x3be: 0x000d, 0x3bf: 0x000d,
+ // Block 0xf, offset 0x3c0
+ 0x3c0: 0x000d, 0x3c1: 0x000d, 0x3c2: 0x000d, 0x3c3: 0x000d, 0x3c4: 0x000d, 0x3c5: 0x000d,
+ 0x3c6: 0x000d, 0x3c7: 0x000d, 0x3c8: 0x000d, 0x3c9: 0x000d, 0x3ca: 0x000d, 0x3cb: 0x000c,
+ 0x3cc: 0x000c, 0x3cd: 0x000c, 0x3ce: 0x000c, 0x3cf: 0x000c, 0x3d0: 0x000c, 0x3d1: 0x000c,
+ 0x3d2: 0x000c, 0x3d3: 0x000c, 0x3d4: 0x000c, 0x3d5: 0x000c, 0x3d6: 0x000c, 0x3d7: 0x000c,
+ 0x3d8: 0x000c, 0x3d9: 0x000c, 0x3da: 0x000c, 0x3db: 0x000c, 0x3dc: 0x000c, 0x3dd: 0x000c,
+ 0x3de: 0x000c, 0x3df: 0x000c, 0x3e0: 0x0005, 0x3e1: 0x0005, 0x3e2: 0x0005, 0x3e3: 0x0005,
+ 0x3e4: 0x0005, 0x3e5: 0x0005, 0x3e6: 0x0005, 0x3e7: 0x0005, 0x3e8: 0x0005, 0x3e9: 0x0005,
+ 0x3ea: 0x0004, 0x3eb: 0x0005, 0x3ec: 0x0005, 0x3ed: 0x000d, 0x3ee: 0x000d, 0x3ef: 0x000d,
+ 0x3f0: 0x000c, 0x3f1: 0x000d, 0x3f2: 0x000d, 0x3f3: 0x000d, 0x3f4: 0x000d, 0x3f5: 0x000d,
+ 0x3f6: 0x000d, 0x3f7: 0x000d, 0x3f8: 0x000d, 0x3f9: 0x000d, 0x3fa: 0x000d, 0x3fb: 0x000d,
+ 0x3fc: 0x000d, 0x3fd: 0x000d, 0x3fe: 0x000d, 0x3ff: 0x000d,
+ // Block 0x10, offset 0x400
+ 0x400: 0x000d, 0x401: 0x000d, 0x402: 0x000d, 0x403: 0x000d, 0x404: 0x000d, 0x405: 0x000d,
+ 0x406: 0x000d, 0x407: 0x000d, 0x408: 0x000d, 0x409: 0x000d, 0x40a: 0x000d, 0x40b: 0x000d,
+ 0x40c: 0x000d, 0x40d: 0x000d, 0x40e: 0x000d, 0x40f: 0x000d, 0x410: 0x000d, 0x411: 0x000d,
+ 0x412: 0x000d, 0x413: 0x000d, 0x414: 0x000d, 0x415: 0x000d, 0x416: 0x000d, 0x417: 0x000d,
+ 0x418: 0x000d, 0x419: 0x000d, 0x41a: 0x000d, 0x41b: 0x000d, 0x41c: 0x000d, 0x41d: 0x000d,
+ 0x41e: 0x000d, 0x41f: 0x000d, 0x420: 0x000d, 0x421: 0x000d, 0x422: 0x000d, 0x423: 0x000d,
+ 0x424: 0x000d, 0x425: 0x000d, 0x426: 0x000d, 0x427: 0x000d, 0x428: 0x000d, 0x429: 0x000d,
+ 0x42a: 0x000d, 0x42b: 0x000d, 0x42c: 0x000d, 0x42d: 0x000d, 0x42e: 0x000d, 0x42f: 0x000d,
+ 0x430: 0x000d, 0x431: 0x000d, 0x432: 0x000d, 0x433: 0x000d, 0x434: 0x000d, 0x435: 0x000d,
+ 0x436: 0x000d, 0x437: 0x000d, 0x438: 0x000d, 0x439: 0x000d, 0x43a: 0x000d, 0x43b: 0x000d,
+ 0x43c: 0x000d, 0x43d: 0x000d, 0x43e: 0x000d, 0x43f: 0x000d,
+ // Block 0x11, offset 0x440
+ 0x440: 0x000d, 0x441: 0x000d, 0x442: 0x000d, 0x443: 0x000d, 0x444: 0x000d, 0x445: 0x000d,
+ 0x446: 0x000d, 0x447: 0x000d, 0x448: 0x000d, 0x449: 0x000d, 0x44a: 0x000d, 0x44b: 0x000d,
+ 0x44c: 0x000d, 0x44d: 0x000d, 0x44e: 0x000d, 0x44f: 0x000d, 0x450: 0x000d, 0x451: 0x000d,
+ 0x452: 0x000d, 0x453: 0x000d, 0x454: 0x000d, 0x455: 0x000d, 0x456: 0x000c, 0x457: 0x000c,
+ 0x458: 0x000c, 0x459: 0x000c, 0x45a: 0x000c, 0x45b: 0x000c, 0x45c: 0x000c, 0x45d: 0x0005,
+ 0x45e: 0x000a, 0x45f: 0x000c, 0x460: 0x000c, 0x461: 0x000c, 0x462: 0x000c, 0x463: 0x000c,
+ 0x464: 0x000c, 0x465: 0x000d, 0x466: 0x000d, 0x467: 0x000c, 0x468: 0x000c, 0x469: 0x000a,
+ 0x46a: 0x000c, 0x46b: 0x000c, 0x46c: 0x000c, 0x46d: 0x000c, 0x46e: 0x000d, 0x46f: 0x000d,
+ 0x470: 0x0002, 0x471: 0x0002, 0x472: 0x0002, 0x473: 0x0002, 0x474: 0x0002, 0x475: 0x0002,
+ 0x476: 0x0002, 0x477: 0x0002, 0x478: 0x0002, 0x479: 0x0002, 0x47a: 0x000d, 0x47b: 0x000d,
+ 0x47c: 0x000d, 0x47d: 0x000d, 0x47e: 0x000d, 0x47f: 0x000d,
+ // Block 0x12, offset 0x480
+ 0x480: 0x000d, 0x481: 0x000d, 0x482: 0x000d, 0x483: 0x000d, 0x484: 0x000d, 0x485: 0x000d,
+ 0x486: 0x000d, 0x487: 0x000d, 0x488: 0x000d, 0x489: 0x000d, 0x48a: 0x000d, 0x48b: 0x000d,
+ 0x48c: 0x000d, 0x48d: 0x000d, 0x48e: 0x000d, 0x48f: 0x000d, 0x490: 0x000d, 0x491: 0x000c,
+ 0x492: 0x000d, 0x493: 0x000d, 0x494: 0x000d, 0x495: 0x000d, 0x496: 0x000d, 0x497: 0x000d,
+ 0x498: 0x000d, 0x499: 0x000d, 0x49a: 0x000d, 0x49b: 0x000d, 0x49c: 0x000d, 0x49d: 0x000d,
+ 0x49e: 0x000d, 0x49f: 0x000d, 0x4a0: 0x000d, 0x4a1: 0x000d, 0x4a2: 0x000d, 0x4a3: 0x000d,
+ 0x4a4: 0x000d, 0x4a5: 0x000d, 0x4a6: 0x000d, 0x4a7: 0x000d, 0x4a8: 0x000d, 0x4a9: 0x000d,
+ 0x4aa: 0x000d, 0x4ab: 0x000d, 0x4ac: 0x000d, 0x4ad: 0x000d, 0x4ae: 0x000d, 0x4af: 0x000d,
+ 0x4b0: 0x000c, 0x4b1: 0x000c, 0x4b2: 0x000c, 0x4b3: 0x000c, 0x4b4: 0x000c, 0x4b5: 0x000c,
+ 0x4b6: 0x000c, 0x4b7: 0x000c, 0x4b8: 0x000c, 0x4b9: 0x000c, 0x4ba: 0x000c, 0x4bb: 0x000c,
+ 0x4bc: 0x000c, 0x4bd: 0x000c, 0x4be: 0x000c, 0x4bf: 0x000c,
+ // Block 0x13, offset 0x4c0
+ 0x4c0: 0x000c, 0x4c1: 0x000c, 0x4c2: 0x000c, 0x4c3: 0x000c, 0x4c4: 0x000c, 0x4c5: 0x000c,
+ 0x4c6: 0x000c, 0x4c7: 0x000c, 0x4c8: 0x000c, 0x4c9: 0x000c, 0x4ca: 0x000c, 0x4cb: 0x000d,
+ 0x4cc: 0x000d, 0x4cd: 0x000d, 0x4ce: 0x000d, 0x4cf: 0x000d, 0x4d0: 0x000d, 0x4d1: 0x000d,
+ 0x4d2: 0x000d, 0x4d3: 0x000d, 0x4d4: 0x000d, 0x4d5: 0x000d, 0x4d6: 0x000d, 0x4d7: 0x000d,
+ 0x4d8: 0x000d, 0x4d9: 0x000d, 0x4da: 0x000d, 0x4db: 0x000d, 0x4dc: 0x000d, 0x4dd: 0x000d,
+ 0x4de: 0x000d, 0x4df: 0x000d, 0x4e0: 0x000d, 0x4e1: 0x000d, 0x4e2: 0x000d, 0x4e3: 0x000d,
+ 0x4e4: 0x000d, 0x4e5: 0x000d, 0x4e6: 0x000d, 0x4e7: 0x000d, 0x4e8: 0x000d, 0x4e9: 0x000d,
+ 0x4ea: 0x000d, 0x4eb: 0x000d, 0x4ec: 0x000d, 0x4ed: 0x000d, 0x4ee: 0x000d, 0x4ef: 0x000d,
+ 0x4f0: 0x000d, 0x4f1: 0x000d, 0x4f2: 0x000d, 0x4f3: 0x000d, 0x4f4: 0x000d, 0x4f5: 0x000d,
+ 0x4f6: 0x000d, 0x4f7: 0x000d, 0x4f8: 0x000d, 0x4f9: 0x000d, 0x4fa: 0x000d, 0x4fb: 0x000d,
+ 0x4fc: 0x000d, 0x4fd: 0x000d, 0x4fe: 0x000d, 0x4ff: 0x000d,
+ // Block 0x14, offset 0x500
+ 0x500: 0x000d, 0x501: 0x000d, 0x502: 0x000d, 0x503: 0x000d, 0x504: 0x000d, 0x505: 0x000d,
+ 0x506: 0x000d, 0x507: 0x000d, 0x508: 0x000d, 0x509: 0x000d, 0x50a: 0x000d, 0x50b: 0x000d,
+ 0x50c: 0x000d, 0x50d: 0x000d, 0x50e: 0x000d, 0x50f: 0x000d, 0x510: 0x000d, 0x511: 0x000d,
+ 0x512: 0x000d, 0x513: 0x000d, 0x514: 0x000d, 0x515: 0x000d, 0x516: 0x000d, 0x517: 0x000d,
+ 0x518: 0x000d, 0x519: 0x000d, 0x51a: 0x000d, 0x51b: 0x000d, 0x51c: 0x000d, 0x51d: 0x000d,
+ 0x51e: 0x000d, 0x51f: 0x000d, 0x520: 0x000d, 0x521: 0x000d, 0x522: 0x000d, 0x523: 0x000d,
+ 0x524: 0x000d, 0x525: 0x000d, 0x526: 0x000c, 0x527: 0x000c, 0x528: 0x000c, 0x529: 0x000c,
+ 0x52a: 0x000c, 0x52b: 0x000c, 0x52c: 0x000c, 0x52d: 0x000c, 0x52e: 0x000c, 0x52f: 0x000c,
+ 0x530: 0x000c, 0x531: 0x000d, 0x532: 0x000d, 0x533: 0x000d, 0x534: 0x000d, 0x535: 0x000d,
+ 0x536: 0x000d, 0x537: 0x000d, 0x538: 0x000d, 0x539: 0x000d, 0x53a: 0x000d, 0x53b: 0x000d,
+ 0x53c: 0x000d, 0x53d: 0x000d, 0x53e: 0x000d, 0x53f: 0x000d,
+ // Block 0x15, offset 0x540
+ 0x540: 0x0001, 0x541: 0x0001, 0x542: 0x0001, 0x543: 0x0001, 0x544: 0x0001, 0x545: 0x0001,
+ 0x546: 0x0001, 0x547: 0x0001, 0x548: 0x0001, 0x549: 0x0001, 0x54a: 0x0001, 0x54b: 0x0001,
+ 0x54c: 0x0001, 0x54d: 0x0001, 0x54e: 0x0001, 0x54f: 0x0001, 0x550: 0x0001, 0x551: 0x0001,
+ 0x552: 0x0001, 0x553: 0x0001, 0x554: 0x0001, 0x555: 0x0001, 0x556: 0x0001, 0x557: 0x0001,
+ 0x558: 0x0001, 0x559: 0x0001, 0x55a: 0x0001, 0x55b: 0x0001, 0x55c: 0x0001, 0x55d: 0x0001,
+ 0x55e: 0x0001, 0x55f: 0x0001, 0x560: 0x0001, 0x561: 0x0001, 0x562: 0x0001, 0x563: 0x0001,
+ 0x564: 0x0001, 0x565: 0x0001, 0x566: 0x0001, 0x567: 0x0001, 0x568: 0x0001, 0x569: 0x0001,
+ 0x56a: 0x0001, 0x56b: 0x000c, 0x56c: 0x000c, 0x56d: 0x000c, 0x56e: 0x000c, 0x56f: 0x000c,
+ 0x570: 0x000c, 0x571: 0x000c, 0x572: 0x000c, 0x573: 0x000c, 0x574: 0x0001, 0x575: 0x0001,
+ 0x576: 0x000a, 0x577: 0x000a, 0x578: 0x000a, 0x579: 0x000a, 0x57a: 0x0001, 0x57b: 0x0001,
+ 0x57c: 0x0001, 0x57d: 0x000c, 0x57e: 0x0001, 0x57f: 0x0001,
+ // Block 0x16, offset 0x580
+ 0x580: 0x0001, 0x581: 0x0001, 0x582: 0x0001, 0x583: 0x0001, 0x584: 0x0001, 0x585: 0x0001,
+ 0x586: 0x0001, 0x587: 0x0001, 0x588: 0x0001, 0x589: 0x0001, 0x58a: 0x0001, 0x58b: 0x0001,
+ 0x58c: 0x0001, 0x58d: 0x0001, 0x58e: 0x0001, 0x58f: 0x0001, 0x590: 0x0001, 0x591: 0x0001,
+ 0x592: 0x0001, 0x593: 0x0001, 0x594: 0x0001, 0x595: 0x0001, 0x596: 0x000c, 0x597: 0x000c,
+ 0x598: 0x000c, 0x599: 0x000c, 0x59a: 0x0001, 0x59b: 0x000c, 0x59c: 0x000c, 0x59d: 0x000c,
+ 0x59e: 0x000c, 0x59f: 0x000c, 0x5a0: 0x000c, 0x5a1: 0x000c, 0x5a2: 0x000c, 0x5a3: 0x000c,
+ 0x5a4: 0x0001, 0x5a5: 0x000c, 0x5a6: 0x000c, 0x5a7: 0x000c, 0x5a8: 0x0001, 0x5a9: 0x000c,
+ 0x5aa: 0x000c, 0x5ab: 0x000c, 0x5ac: 0x000c, 0x5ad: 0x000c, 0x5ae: 0x0001, 0x5af: 0x0001,
+ 0x5b0: 0x0001, 0x5b1: 0x0001, 0x5b2: 0x0001, 0x5b3: 0x0001, 0x5b4: 0x0001, 0x5b5: 0x0001,
+ 0x5b6: 0x0001, 0x5b7: 0x0001, 0x5b8: 0x0001, 0x5b9: 0x0001, 0x5ba: 0x0001, 0x5bb: 0x0001,
+ 0x5bc: 0x0001, 0x5bd: 0x0001, 0x5be: 0x0001, 0x5bf: 0x0001,
+ // Block 0x17, offset 0x5c0
+ 0x5c0: 0x0001, 0x5c1: 0x0001, 0x5c2: 0x0001, 0x5c3: 0x0001, 0x5c4: 0x0001, 0x5c5: 0x0001,
+ 0x5c6: 0x0001, 0x5c7: 0x0001, 0x5c8: 0x0001, 0x5c9: 0x0001, 0x5ca: 0x0001, 0x5cb: 0x0001,
+ 0x5cc: 0x0001, 0x5cd: 0x0001, 0x5ce: 0x0001, 0x5cf: 0x0001, 0x5d0: 0x0001, 0x5d1: 0x0001,
+ 0x5d2: 0x0001, 0x5d3: 0x0001, 0x5d4: 0x0001, 0x5d5: 0x0001, 0x5d6: 0x0001, 0x5d7: 0x0001,
+ 0x5d8: 0x0001, 0x5d9: 0x000c, 0x5da: 0x000c, 0x5db: 0x000c, 0x5dc: 0x0001, 0x5dd: 0x0001,
+ 0x5de: 0x0001, 0x5df: 0x0001, 0x5e0: 0x000d, 0x5e1: 0x000d, 0x5e2: 0x000d, 0x5e3: 0x000d,
+ 0x5e4: 0x000d, 0x5e5: 0x000d, 0x5e6: 0x000d, 0x5e7: 0x000d, 0x5e8: 0x000d, 0x5e9: 0x000d,
+ 0x5ea: 0x000d, 0x5eb: 0x000d, 0x5ec: 0x000d, 0x5ed: 0x000d, 0x5ee: 0x000d, 0x5ef: 0x000d,
+ 0x5f0: 0x0001, 0x5f1: 0x0001, 0x5f2: 0x0001, 0x5f3: 0x0001, 0x5f4: 0x0001, 0x5f5: 0x0001,
+ 0x5f6: 0x0001, 0x5f7: 0x0001, 0x5f8: 0x0001, 0x5f9: 0x0001, 0x5fa: 0x0001, 0x5fb: 0x0001,
+ 0x5fc: 0x0001, 0x5fd: 0x0001, 0x5fe: 0x0001, 0x5ff: 0x0001,
+ // Block 0x18, offset 0x600
+ 0x600: 0x0001, 0x601: 0x0001, 0x602: 0x0001, 0x603: 0x0001, 0x604: 0x0001, 0x605: 0x0001,
+ 0x606: 0x0001, 0x607: 0x0001, 0x608: 0x0001, 0x609: 0x0001, 0x60a: 0x0001, 0x60b: 0x0001,
+ 0x60c: 0x0001, 0x60d: 0x0001, 0x60e: 0x0001, 0x60f: 0x0001, 0x610: 0x0001, 0x611: 0x0001,
+ 0x612: 0x0001, 0x613: 0x0001, 0x614: 0x0001, 0x615: 0x0001, 0x616: 0x0001, 0x617: 0x0001,
+ 0x618: 0x0001, 0x619: 0x0001, 0x61a: 0x0001, 0x61b: 0x0001, 0x61c: 0x0001, 0x61d: 0x0001,
+ 0x61e: 0x0001, 0x61f: 0x0001, 0x620: 0x000d, 0x621: 0x000d, 0x622: 0x000d, 0x623: 0x000d,
+ 0x624: 0x000d, 0x625: 0x000d, 0x626: 0x000d, 0x627: 0x000d, 0x628: 0x000d, 0x629: 0x000d,
+ 0x62a: 0x000d, 0x62b: 0x000d, 0x62c: 0x000d, 0x62d: 0x000d, 0x62e: 0x000d, 0x62f: 0x000d,
+ 0x630: 0x000d, 0x631: 0x000d, 0x632: 0x000d, 0x633: 0x000d, 0x634: 0x000d, 0x635: 0x000d,
+ 0x636: 0x000d, 0x637: 0x000d, 0x638: 0x000d, 0x639: 0x000d, 0x63a: 0x000d, 0x63b: 0x000d,
+ 0x63c: 0x000d, 0x63d: 0x000d, 0x63e: 0x000d, 0x63f: 0x000d,
+ // Block 0x19, offset 0x640
+ 0x640: 0x000d, 0x641: 0x000d, 0x642: 0x000d, 0x643: 0x000d, 0x644: 0x000d, 0x645: 0x000d,
+ 0x646: 0x000d, 0x647: 0x000d, 0x648: 0x000d, 0x649: 0x000d, 0x64a: 0x000d, 0x64b: 0x000d,
+ 0x64c: 0x000d, 0x64d: 0x000d, 0x64e: 0x000d, 0x64f: 0x000d, 0x650: 0x000d, 0x651: 0x000d,
+ 0x652: 0x000d, 0x653: 0x000c, 0x654: 0x000c, 0x655: 0x000c, 0x656: 0x000c, 0x657: 0x000c,
+ 0x658: 0x000c, 0x659: 0x000c, 0x65a: 0x000c, 0x65b: 0x000c, 0x65c: 0x000c, 0x65d: 0x000c,
+ 0x65e: 0x000c, 0x65f: 0x000c, 0x660: 0x000c, 0x661: 0x000c, 0x662: 0x0005, 0x663: 0x000c,
+ 0x664: 0x000c, 0x665: 0x000c, 0x666: 0x000c, 0x667: 0x000c, 0x668: 0x000c, 0x669: 0x000c,
+ 0x66a: 0x000c, 0x66b: 0x000c, 0x66c: 0x000c, 0x66d: 0x000c, 0x66e: 0x000c, 0x66f: 0x000c,
+ 0x670: 0x000c, 0x671: 0x000c, 0x672: 0x000c, 0x673: 0x000c, 0x674: 0x000c, 0x675: 0x000c,
+ 0x676: 0x000c, 0x677: 0x000c, 0x678: 0x000c, 0x679: 0x000c, 0x67a: 0x000c, 0x67b: 0x000c,
+ 0x67c: 0x000c, 0x67d: 0x000c, 0x67e: 0x000c, 0x67f: 0x000c,
+ // Block 0x1a, offset 0x680
+ 0x680: 0x000c, 0x681: 0x000c, 0x682: 0x000c,
+ 0x6ba: 0x000c,
+ 0x6bc: 0x000c,
+ // Block 0x1b, offset 0x6c0
+ 0x6c1: 0x000c, 0x6c2: 0x000c, 0x6c3: 0x000c, 0x6c4: 0x000c, 0x6c5: 0x000c,
+ 0x6c6: 0x000c, 0x6c7: 0x000c, 0x6c8: 0x000c,
+ 0x6cd: 0x000c, 0x6d1: 0x000c,
+ 0x6d2: 0x000c, 0x6d3: 0x000c, 0x6d4: 0x000c, 0x6d5: 0x000c, 0x6d6: 0x000c, 0x6d7: 0x000c,
+ 0x6e2: 0x000c, 0x6e3: 0x000c,
+ // Block 0x1c, offset 0x700
+ 0x701: 0x000c,
+ 0x73c: 0x000c,
+ // Block 0x1d, offset 0x740
+ 0x741: 0x000c, 0x742: 0x000c, 0x743: 0x000c, 0x744: 0x000c,
+ 0x74d: 0x000c,
+ 0x762: 0x000c, 0x763: 0x000c,
+ 0x772: 0x0004, 0x773: 0x0004,
+ 0x77b: 0x0004,
+ 0x77e: 0x000c,
+ // Block 0x1e, offset 0x780
+ 0x781: 0x000c, 0x782: 0x000c,
+ 0x7bc: 0x000c,
+ // Block 0x1f, offset 0x7c0
+ 0x7c1: 0x000c, 0x7c2: 0x000c,
+ 0x7c7: 0x000c, 0x7c8: 0x000c, 0x7cb: 0x000c,
+ 0x7cc: 0x000c, 0x7cd: 0x000c, 0x7d1: 0x000c,
+ 0x7f0: 0x000c, 0x7f1: 0x000c, 0x7f5: 0x000c,
+ // Block 0x20, offset 0x800
+ 0x801: 0x000c, 0x802: 0x000c, 0x803: 0x000c, 0x804: 0x000c, 0x805: 0x000c,
+ 0x807: 0x000c, 0x808: 0x000c,
+ 0x80d: 0x000c,
+ 0x822: 0x000c, 0x823: 0x000c,
+ 0x831: 0x0004,
+ 0x83a: 0x000c, 0x83b: 0x000c,
+ 0x83c: 0x000c, 0x83d: 0x000c, 0x83e: 0x000c, 0x83f: 0x000c,
+ // Block 0x21, offset 0x840
+ 0x841: 0x000c,
+ 0x87c: 0x000c, 0x87f: 0x000c,
+ // Block 0x22, offset 0x880
+ 0x881: 0x000c, 0x882: 0x000c, 0x883: 0x000c, 0x884: 0x000c,
+ 0x88d: 0x000c,
+ 0x895: 0x000c, 0x896: 0x000c,
+ 0x8a2: 0x000c, 0x8a3: 0x000c,
+ // Block 0x23, offset 0x8c0
+ 0x8c2: 0x000c,
+ // Block 0x24, offset 0x900
+ 0x900: 0x000c,
+ 0x90d: 0x000c,
+ 0x933: 0x000a, 0x934: 0x000a, 0x935: 0x000a,
+ 0x936: 0x000a, 0x937: 0x000a, 0x938: 0x000a, 0x939: 0x0004, 0x93a: 0x000a,
+ // Block 0x25, offset 0x940
+ 0x940: 0x000c, 0x944: 0x000c,
+ 0x97e: 0x000c, 0x97f: 0x000c,
+ // Block 0x26, offset 0x980
+ 0x980: 0x000c,
+ 0x986: 0x000c, 0x987: 0x000c, 0x988: 0x000c, 0x98a: 0x000c, 0x98b: 0x000c,
+ 0x98c: 0x000c, 0x98d: 0x000c,
+ 0x995: 0x000c, 0x996: 0x000c,
+ 0x9a2: 0x000c, 0x9a3: 0x000c,
+ 0x9b8: 0x000a, 0x9b9: 0x000a, 0x9ba: 0x000a, 0x9bb: 0x000a,
+ 0x9bc: 0x000a, 0x9bd: 0x000a, 0x9be: 0x000a,
+ // Block 0x27, offset 0x9c0
+ 0x9cc: 0x000c, 0x9cd: 0x000c,
+ 0x9e2: 0x000c, 0x9e3: 0x000c,
+ // Block 0x28, offset 0xa00
+ 0xa00: 0x000c, 0xa01: 0x000c,
+ 0xa3b: 0x000c,
+ 0xa3c: 0x000c,
+ // Block 0x29, offset 0xa40
+ 0xa41: 0x000c, 0xa42: 0x000c, 0xa43: 0x000c, 0xa44: 0x000c,
+ 0xa4d: 0x000c,
+ 0xa62: 0x000c, 0xa63: 0x000c,
+ // Block 0x2a, offset 0xa80
+ 0xa81: 0x000c,
+ // Block 0x2b, offset 0xac0
+ 0xaca: 0x000c,
+ 0xad2: 0x000c, 0xad3: 0x000c, 0xad4: 0x000c, 0xad6: 0x000c,
+ // Block 0x2c, offset 0xb00
+ 0xb31: 0x000c, 0xb34: 0x000c, 0xb35: 0x000c,
+ 0xb36: 0x000c, 0xb37: 0x000c, 0xb38: 0x000c, 0xb39: 0x000c, 0xb3a: 0x000c,
+ 0xb3f: 0x0004,
+ // Block 0x2d, offset 0xb40
+ 0xb47: 0x000c, 0xb48: 0x000c, 0xb49: 0x000c, 0xb4a: 0x000c, 0xb4b: 0x000c,
+ 0xb4c: 0x000c, 0xb4d: 0x000c, 0xb4e: 0x000c,
+ // Block 0x2e, offset 0xb80
+ 0xbb1: 0x000c, 0xbb4: 0x000c, 0xbb5: 0x000c,
+ 0xbb6: 0x000c, 0xbb7: 0x000c, 0xbb8: 0x000c, 0xbb9: 0x000c, 0xbba: 0x000c, 0xbbb: 0x000c,
+ 0xbbc: 0x000c,
+ // Block 0x2f, offset 0xbc0
+ 0xbc8: 0x000c, 0xbc9: 0x000c, 0xbca: 0x000c, 0xbcb: 0x000c,
+ 0xbcc: 0x000c, 0xbcd: 0x000c,
+ // Block 0x30, offset 0xc00
+ 0xc18: 0x000c, 0xc19: 0x000c,
+ 0xc35: 0x000c,
+ 0xc37: 0x000c, 0xc39: 0x000c, 0xc3a: 0x003a, 0xc3b: 0x002a,
+ 0xc3c: 0x003a, 0xc3d: 0x002a,
+ // Block 0x31, offset 0xc40
+ 0xc71: 0x000c, 0xc72: 0x000c, 0xc73: 0x000c, 0xc74: 0x000c, 0xc75: 0x000c,
+ 0xc76: 0x000c, 0xc77: 0x000c, 0xc78: 0x000c, 0xc79: 0x000c, 0xc7a: 0x000c, 0xc7b: 0x000c,
+ 0xc7c: 0x000c, 0xc7d: 0x000c, 0xc7e: 0x000c,
+ // Block 0x32, offset 0xc80
+ 0xc80: 0x000c, 0xc81: 0x000c, 0xc82: 0x000c, 0xc83: 0x000c, 0xc84: 0x000c,
+ 0xc86: 0x000c, 0xc87: 0x000c,
+ 0xc8d: 0x000c, 0xc8e: 0x000c, 0xc8f: 0x000c, 0xc90: 0x000c, 0xc91: 0x000c,
+ 0xc92: 0x000c, 0xc93: 0x000c, 0xc94: 0x000c, 0xc95: 0x000c, 0xc96: 0x000c, 0xc97: 0x000c,
+ 0xc99: 0x000c, 0xc9a: 0x000c, 0xc9b: 0x000c, 0xc9c: 0x000c, 0xc9d: 0x000c,
+ 0xc9e: 0x000c, 0xc9f: 0x000c, 0xca0: 0x000c, 0xca1: 0x000c, 0xca2: 0x000c, 0xca3: 0x000c,
+ 0xca4: 0x000c, 0xca5: 0x000c, 0xca6: 0x000c, 0xca7: 0x000c, 0xca8: 0x000c, 0xca9: 0x000c,
+ 0xcaa: 0x000c, 0xcab: 0x000c, 0xcac: 0x000c, 0xcad: 0x000c, 0xcae: 0x000c, 0xcaf: 0x000c,
+ 0xcb0: 0x000c, 0xcb1: 0x000c, 0xcb2: 0x000c, 0xcb3: 0x000c, 0xcb4: 0x000c, 0xcb5: 0x000c,
+ 0xcb6: 0x000c, 0xcb7: 0x000c, 0xcb8: 0x000c, 0xcb9: 0x000c, 0xcba: 0x000c, 0xcbb: 0x000c,
+ 0xcbc: 0x000c,
+ // Block 0x33, offset 0xcc0
+ 0xcc6: 0x000c,
+ // Block 0x34, offset 0xd00
+ 0xd2d: 0x000c, 0xd2e: 0x000c, 0xd2f: 0x000c,
+ 0xd30: 0x000c, 0xd32: 0x000c, 0xd33: 0x000c, 0xd34: 0x000c, 0xd35: 0x000c,
+ 0xd36: 0x000c, 0xd37: 0x000c, 0xd39: 0x000c, 0xd3a: 0x000c,
+ 0xd3d: 0x000c, 0xd3e: 0x000c,
+ // Block 0x35, offset 0xd40
+ 0xd58: 0x000c, 0xd59: 0x000c,
+ 0xd5e: 0x000c, 0xd5f: 0x000c, 0xd60: 0x000c,
+ 0xd71: 0x000c, 0xd72: 0x000c, 0xd73: 0x000c, 0xd74: 0x000c,
+ // Block 0x36, offset 0xd80
+ 0xd82: 0x000c, 0xd85: 0x000c,
+ 0xd86: 0x000c,
+ 0xd8d: 0x000c,
+ 0xd9d: 0x000c,
+ // Block 0x37, offset 0xdc0
+ 0xddd: 0x000c,
+ 0xdde: 0x000c, 0xddf: 0x000c,
+ // Block 0x38, offset 0xe00
+ 0xe10: 0x000a, 0xe11: 0x000a,
+ 0xe12: 0x000a, 0xe13: 0x000a, 0xe14: 0x000a, 0xe15: 0x000a, 0xe16: 0x000a, 0xe17: 0x000a,
+ 0xe18: 0x000a, 0xe19: 0x000a,
+ // Block 0x39, offset 0xe40
+ 0xe40: 0x000a,
+ // Block 0x3a, offset 0xe80
+ 0xe80: 0x0009,
+ 0xe9b: 0x007a, 0xe9c: 0x006a,
+ // Block 0x3b, offset 0xec0
+ 0xed2: 0x000c, 0xed3: 0x000c, 0xed4: 0x000c,
+ 0xef2: 0x000c, 0xef3: 0x000c, 0xef4: 0x000c,
+ // Block 0x3c, offset 0xf00
+ 0xf12: 0x000c, 0xf13: 0x000c,
+ 0xf32: 0x000c, 0xf33: 0x000c,
+ // Block 0x3d, offset 0xf40
+ 0xf74: 0x000c, 0xf75: 0x000c,
+ 0xf77: 0x000c, 0xf78: 0x000c, 0xf79: 0x000c, 0xf7a: 0x000c, 0xf7b: 0x000c,
+ 0xf7c: 0x000c, 0xf7d: 0x000c,
+ // Block 0x3e, offset 0xf80
+ 0xf86: 0x000c, 0xf89: 0x000c, 0xf8a: 0x000c, 0xf8b: 0x000c,
+ 0xf8c: 0x000c, 0xf8d: 0x000c, 0xf8e: 0x000c, 0xf8f: 0x000c, 0xf90: 0x000c, 0xf91: 0x000c,
+ 0xf92: 0x000c, 0xf93: 0x000c,
+ 0xf9b: 0x0004, 0xf9d: 0x000c,
+ 0xfb0: 0x000a, 0xfb1: 0x000a, 0xfb2: 0x000a, 0xfb3: 0x000a, 0xfb4: 0x000a, 0xfb5: 0x000a,
+ 0xfb6: 0x000a, 0xfb7: 0x000a, 0xfb8: 0x000a, 0xfb9: 0x000a,
+ // Block 0x3f, offset 0xfc0
+ 0xfc0: 0x000a, 0xfc1: 0x000a, 0xfc2: 0x000a, 0xfc3: 0x000a, 0xfc4: 0x000a, 0xfc5: 0x000a,
+ 0xfc6: 0x000a, 0xfc7: 0x000a, 0xfc8: 0x000a, 0xfc9: 0x000a, 0xfca: 0x000a, 0xfcb: 0x000c,
+ 0xfcc: 0x000c, 0xfcd: 0x000c, 0xfce: 0x000b,
+ // Block 0x40, offset 0x1000
+ 0x1005: 0x000c,
+ 0x1006: 0x000c,
+ 0x1029: 0x000c,
+ // Block 0x41, offset 0x1040
+ 0x1060: 0x000c, 0x1061: 0x000c, 0x1062: 0x000c,
+ 0x1067: 0x000c, 0x1068: 0x000c,
+ 0x1072: 0x000c,
+ 0x1079: 0x000c, 0x107a: 0x000c, 0x107b: 0x000c,
+ // Block 0x42, offset 0x1080
+ 0x1080: 0x000a, 0x1084: 0x000a, 0x1085: 0x000a,
+ // Block 0x43, offset 0x10c0
+ 0x10de: 0x000a, 0x10df: 0x000a, 0x10e0: 0x000a, 0x10e1: 0x000a, 0x10e2: 0x000a, 0x10e3: 0x000a,
+ 0x10e4: 0x000a, 0x10e5: 0x000a, 0x10e6: 0x000a, 0x10e7: 0x000a, 0x10e8: 0x000a, 0x10e9: 0x000a,
+ 0x10ea: 0x000a, 0x10eb: 0x000a, 0x10ec: 0x000a, 0x10ed: 0x000a, 0x10ee: 0x000a, 0x10ef: 0x000a,
+ 0x10f0: 0x000a, 0x10f1: 0x000a, 0x10f2: 0x000a, 0x10f3: 0x000a, 0x10f4: 0x000a, 0x10f5: 0x000a,
+ 0x10f6: 0x000a, 0x10f7: 0x000a, 0x10f8: 0x000a, 0x10f9: 0x000a, 0x10fa: 0x000a, 0x10fb: 0x000a,
+ 0x10fc: 0x000a, 0x10fd: 0x000a, 0x10fe: 0x000a, 0x10ff: 0x000a,
+ // Block 0x44, offset 0x1100
+ 0x1117: 0x000c,
+ 0x1118: 0x000c, 0x111b: 0x000c,
+ // Block 0x45, offset 0x1140
+ 0x1156: 0x000c,
+ 0x1158: 0x000c, 0x1159: 0x000c, 0x115a: 0x000c, 0x115b: 0x000c, 0x115c: 0x000c, 0x115d: 0x000c,
+ 0x115e: 0x000c, 0x1160: 0x000c, 0x1162: 0x000c,
+ 0x1165: 0x000c, 0x1166: 0x000c, 0x1167: 0x000c, 0x1168: 0x000c, 0x1169: 0x000c,
+ 0x116a: 0x000c, 0x116b: 0x000c, 0x116c: 0x000c,
+ 0x1173: 0x000c, 0x1174: 0x000c, 0x1175: 0x000c,
+ 0x1176: 0x000c, 0x1177: 0x000c, 0x1178: 0x000c, 0x1179: 0x000c, 0x117a: 0x000c, 0x117b: 0x000c,
+ 0x117c: 0x000c, 0x117f: 0x000c,
+ // Block 0x46, offset 0x1180
+ 0x11b0: 0x000c, 0x11b1: 0x000c, 0x11b2: 0x000c, 0x11b3: 0x000c, 0x11b4: 0x000c, 0x11b5: 0x000c,
+ 0x11b6: 0x000c, 0x11b7: 0x000c, 0x11b8: 0x000c, 0x11b9: 0x000c, 0x11ba: 0x000c, 0x11bb: 0x000c,
+ 0x11bc: 0x000c, 0x11bd: 0x000c, 0x11be: 0x000c, 0x11bf: 0x000c,
+ // Block 0x47, offset 0x11c0
+ 0x11c0: 0x000c,
+ // Block 0x48, offset 0x1200
+ 0x1200: 0x000c, 0x1201: 0x000c, 0x1202: 0x000c, 0x1203: 0x000c,
+ 0x1234: 0x000c,
+ 0x1236: 0x000c, 0x1237: 0x000c, 0x1238: 0x000c, 0x1239: 0x000c, 0x123a: 0x000c,
+ 0x123c: 0x000c,
+ // Block 0x49, offset 0x1240
+ 0x1242: 0x000c,
+ 0x126b: 0x000c, 0x126c: 0x000c, 0x126d: 0x000c, 0x126e: 0x000c, 0x126f: 0x000c,
+ 0x1270: 0x000c, 0x1271: 0x000c, 0x1272: 0x000c, 0x1273: 0x000c,
+ // Block 0x4a, offset 0x1280
+ 0x1280: 0x000c, 0x1281: 0x000c,
+ 0x12a2: 0x000c, 0x12a3: 0x000c,
+ 0x12a4: 0x000c, 0x12a5: 0x000c, 0x12a8: 0x000c, 0x12a9: 0x000c,
+ 0x12ab: 0x000c, 0x12ac: 0x000c, 0x12ad: 0x000c,
+ // Block 0x4b, offset 0x12c0
+ 0x12e6: 0x000c, 0x12e8: 0x000c, 0x12e9: 0x000c,
+ 0x12ed: 0x000c, 0x12ef: 0x000c,
+ 0x12f0: 0x000c, 0x12f1: 0x000c,
+ // Block 0x4c, offset 0x1300
+ 0x132c: 0x000c, 0x132d: 0x000c, 0x132e: 0x000c, 0x132f: 0x000c,
+ 0x1330: 0x000c, 0x1331: 0x000c, 0x1332: 0x000c, 0x1333: 0x000c,
+ 0x1336: 0x000c, 0x1337: 0x000c,
+ // Block 0x4d, offset 0x1340
+ 0x1350: 0x000c, 0x1351: 0x000c,
+ 0x1352: 0x000c, 0x1354: 0x000c, 0x1355: 0x000c, 0x1356: 0x000c, 0x1357: 0x000c,
+ 0x1358: 0x000c, 0x1359: 0x000c, 0x135a: 0x000c, 0x135b: 0x000c, 0x135c: 0x000c, 0x135d: 0x000c,
+ 0x135e: 0x000c, 0x135f: 0x000c, 0x1360: 0x000c, 0x1362: 0x000c, 0x1363: 0x000c,
+ 0x1364: 0x000c, 0x1365: 0x000c, 0x1366: 0x000c, 0x1367: 0x000c, 0x1368: 0x000c,
+ 0x136d: 0x000c,
+ 0x1374: 0x000c,
+ 0x1378: 0x000c, 0x1379: 0x000c,
+ // Block 0x4e, offset 0x1380
+ 0x1380: 0x000c, 0x1381: 0x000c, 0x1382: 0x000c, 0x1383: 0x000c, 0x1384: 0x000c, 0x1385: 0x000c,
+ 0x1386: 0x000c, 0x1387: 0x000c, 0x1388: 0x000c, 0x1389: 0x000c, 0x138a: 0x000c, 0x138b: 0x000c,
+ 0x138c: 0x000c, 0x138d: 0x000c, 0x138e: 0x000c, 0x138f: 0x000c, 0x1390: 0x000c, 0x1391: 0x000c,
+ 0x1392: 0x000c, 0x1393: 0x000c, 0x1394: 0x000c, 0x1395: 0x000c, 0x1396: 0x000c, 0x1397: 0x000c,
+ 0x1398: 0x000c, 0x1399: 0x000c, 0x139a: 0x000c, 0x139b: 0x000c, 0x139c: 0x000c, 0x139d: 0x000c,
+ 0x139e: 0x000c, 0x139f: 0x000c, 0x13a0: 0x000c, 0x13a1: 0x000c, 0x13a2: 0x000c, 0x13a3: 0x000c,
+ 0x13a4: 0x000c, 0x13a5: 0x000c, 0x13a6: 0x000c, 0x13a7: 0x000c, 0x13a8: 0x000c, 0x13a9: 0x000c,
+ 0x13aa: 0x000c, 0x13ab: 0x000c, 0x13ac: 0x000c, 0x13ad: 0x000c, 0x13ae: 0x000c, 0x13af: 0x000c,
+ 0x13b0: 0x000c, 0x13b1: 0x000c, 0x13b2: 0x000c, 0x13b3: 0x000c, 0x13b4: 0x000c, 0x13b5: 0x000c,
+ 0x13b6: 0x000c, 0x13b7: 0x000c, 0x13b8: 0x000c, 0x13b9: 0x000c, 0x13bb: 0x000c,
+ 0x13bc: 0x000c, 0x13bd: 0x000c, 0x13be: 0x000c, 0x13bf: 0x000c,
+ // Block 0x4f, offset 0x13c0
+ 0x13fd: 0x000a, 0x13ff: 0x000a,
+ // Block 0x50, offset 0x1400
+ 0x1400: 0x000a, 0x1401: 0x000a,
+ 0x140d: 0x000a, 0x140e: 0x000a, 0x140f: 0x000a,
+ 0x141d: 0x000a,
+ 0x141e: 0x000a, 0x141f: 0x000a,
+ 0x142d: 0x000a, 0x142e: 0x000a, 0x142f: 0x000a,
+ 0x143d: 0x000a, 0x143e: 0x000a,
+ // Block 0x51, offset 0x1440
+ 0x1440: 0x0009, 0x1441: 0x0009, 0x1442: 0x0009, 0x1443: 0x0009, 0x1444: 0x0009, 0x1445: 0x0009,
+ 0x1446: 0x0009, 0x1447: 0x0009, 0x1448: 0x0009, 0x1449: 0x0009, 0x144a: 0x0009, 0x144b: 0x000b,
+ 0x144c: 0x000b, 0x144d: 0x000b, 0x144f: 0x0001, 0x1450: 0x000a, 0x1451: 0x000a,
+ 0x1452: 0x000a, 0x1453: 0x000a, 0x1454: 0x000a, 0x1455: 0x000a, 0x1456: 0x000a, 0x1457: 0x000a,
+ 0x1458: 0x000a, 0x1459: 0x000a, 0x145a: 0x000a, 0x145b: 0x000a, 0x145c: 0x000a, 0x145d: 0x000a,
+ 0x145e: 0x000a, 0x145f: 0x000a, 0x1460: 0x000a, 0x1461: 0x000a, 0x1462: 0x000a, 0x1463: 0x000a,
+ 0x1464: 0x000a, 0x1465: 0x000a, 0x1466: 0x000a, 0x1467: 0x000a, 0x1468: 0x0009, 0x1469: 0x0007,
+ 0x146a: 0x000e, 0x146b: 0x000e, 0x146c: 0x000e, 0x146d: 0x000e, 0x146e: 0x000e, 0x146f: 0x0006,
+ 0x1470: 0x0004, 0x1471: 0x0004, 0x1472: 0x0004, 0x1473: 0x0004, 0x1474: 0x0004, 0x1475: 0x000a,
+ 0x1476: 0x000a, 0x1477: 0x000a, 0x1478: 0x000a, 0x1479: 0x000a, 0x147a: 0x000a, 0x147b: 0x000a,
+ 0x147c: 0x000a, 0x147d: 0x000a, 0x147e: 0x000a, 0x147f: 0x000a,
+ // Block 0x52, offset 0x1480
+ 0x1480: 0x000a, 0x1481: 0x000a, 0x1482: 0x000a, 0x1483: 0x000a, 0x1484: 0x0006, 0x1485: 0x009a,
+ 0x1486: 0x008a, 0x1487: 0x000a, 0x1488: 0x000a, 0x1489: 0x000a, 0x148a: 0x000a, 0x148b: 0x000a,
+ 0x148c: 0x000a, 0x148d: 0x000a, 0x148e: 0x000a, 0x148f: 0x000a, 0x1490: 0x000a, 0x1491: 0x000a,
+ 0x1492: 0x000a, 0x1493: 0x000a, 0x1494: 0x000a, 0x1495: 0x000a, 0x1496: 0x000a, 0x1497: 0x000a,
+ 0x1498: 0x000a, 0x1499: 0x000a, 0x149a: 0x000a, 0x149b: 0x000a, 0x149c: 0x000a, 0x149d: 0x000a,
+ 0x149e: 0x000a, 0x149f: 0x0009, 0x14a0: 0x000b, 0x14a1: 0x000b, 0x14a2: 0x000b, 0x14a3: 0x000b,
+ 0x14a4: 0x000b, 0x14a5: 0x000b, 0x14a6: 0x000e, 0x14a7: 0x000e, 0x14a8: 0x000e, 0x14a9: 0x000e,
+ 0x14aa: 0x000b, 0x14ab: 0x000b, 0x14ac: 0x000b, 0x14ad: 0x000b, 0x14ae: 0x000b, 0x14af: 0x000b,
+ 0x14b0: 0x0002, 0x14b4: 0x0002, 0x14b5: 0x0002,
+ 0x14b6: 0x0002, 0x14b7: 0x0002, 0x14b8: 0x0002, 0x14b9: 0x0002, 0x14ba: 0x0003, 0x14bb: 0x0003,
+ 0x14bc: 0x000a, 0x14bd: 0x009a, 0x14be: 0x008a,
+ // Block 0x53, offset 0x14c0
+ 0x14c0: 0x0002, 0x14c1: 0x0002, 0x14c2: 0x0002, 0x14c3: 0x0002, 0x14c4: 0x0002, 0x14c5: 0x0002,
+ 0x14c6: 0x0002, 0x14c7: 0x0002, 0x14c8: 0x0002, 0x14c9: 0x0002, 0x14ca: 0x0003, 0x14cb: 0x0003,
+ 0x14cc: 0x000a, 0x14cd: 0x009a, 0x14ce: 0x008a,
+ 0x14e0: 0x0004, 0x14e1: 0x0004, 0x14e2: 0x0004, 0x14e3: 0x0004,
+ 0x14e4: 0x0004, 0x14e5: 0x0004, 0x14e6: 0x0004, 0x14e7: 0x0004, 0x14e8: 0x0004, 0x14e9: 0x0004,
+ 0x14ea: 0x0004, 0x14eb: 0x0004, 0x14ec: 0x0004, 0x14ed: 0x0004, 0x14ee: 0x0004, 0x14ef: 0x0004,
+ 0x14f0: 0x0004, 0x14f1: 0x0004, 0x14f2: 0x0004, 0x14f3: 0x0004, 0x14f4: 0x0004, 0x14f5: 0x0004,
+ 0x14f6: 0x0004, 0x14f7: 0x0004, 0x14f8: 0x0004, 0x14f9: 0x0004, 0x14fa: 0x0004, 0x14fb: 0x0004,
+ 0x14fc: 0x0004, 0x14fd: 0x0004, 0x14fe: 0x0004, 0x14ff: 0x0004,
+ // Block 0x54, offset 0x1500
+ 0x1500: 0x0004, 0x1501: 0x0004, 0x1502: 0x0004, 0x1503: 0x0004, 0x1504: 0x0004, 0x1505: 0x0004,
+ 0x1506: 0x0004, 0x1507: 0x0004, 0x1508: 0x0004, 0x1509: 0x0004, 0x150a: 0x0004, 0x150b: 0x0004,
+ 0x150c: 0x0004, 0x150d: 0x0004, 0x150e: 0x0004, 0x150f: 0x0004, 0x1510: 0x000c, 0x1511: 0x000c,
+ 0x1512: 0x000c, 0x1513: 0x000c, 0x1514: 0x000c, 0x1515: 0x000c, 0x1516: 0x000c, 0x1517: 0x000c,
+ 0x1518: 0x000c, 0x1519: 0x000c, 0x151a: 0x000c, 0x151b: 0x000c, 0x151c: 0x000c, 0x151d: 0x000c,
+ 0x151e: 0x000c, 0x151f: 0x000c, 0x1520: 0x000c, 0x1521: 0x000c, 0x1522: 0x000c, 0x1523: 0x000c,
+ 0x1524: 0x000c, 0x1525: 0x000c, 0x1526: 0x000c, 0x1527: 0x000c, 0x1528: 0x000c, 0x1529: 0x000c,
+ 0x152a: 0x000c, 0x152b: 0x000c, 0x152c: 0x000c, 0x152d: 0x000c, 0x152e: 0x000c, 0x152f: 0x000c,
+ 0x1530: 0x000c,
+ // Block 0x55, offset 0x1540
+ 0x1540: 0x000a, 0x1541: 0x000a, 0x1543: 0x000a, 0x1544: 0x000a, 0x1545: 0x000a,
+ 0x1546: 0x000a, 0x1548: 0x000a, 0x1549: 0x000a,
+ 0x1554: 0x000a, 0x1556: 0x000a, 0x1557: 0x000a,
+ 0x1558: 0x000a,
+ 0x155e: 0x000a, 0x155f: 0x000a, 0x1560: 0x000a, 0x1561: 0x000a, 0x1562: 0x000a, 0x1563: 0x000a,
+ 0x1565: 0x000a, 0x1567: 0x000a, 0x1569: 0x000a,
+ 0x156e: 0x0004,
+ 0x157a: 0x000a, 0x157b: 0x000a,
+ // Block 0x56, offset 0x1580
+ 0x1580: 0x000a, 0x1581: 0x000a, 0x1582: 0x000a, 0x1583: 0x000a, 0x1584: 0x000a,
+ 0x158a: 0x000a, 0x158b: 0x000a,
+ 0x158c: 0x000a, 0x158d: 0x000a, 0x1590: 0x000a, 0x1591: 0x000a,
+ 0x1592: 0x000a, 0x1593: 0x000a, 0x1594: 0x000a, 0x1595: 0x000a, 0x1596: 0x000a, 0x1597: 0x000a,
+ 0x1598: 0x000a, 0x1599: 0x000a, 0x159a: 0x000a, 0x159b: 0x000a, 0x159c: 0x000a, 0x159d: 0x000a,
+ 0x159e: 0x000a, 0x159f: 0x000a,
+ // Block 0x57, offset 0x15c0
+ 0x15c9: 0x000a, 0x15ca: 0x000a, 0x15cb: 0x000a,
+ 0x15d0: 0x000a, 0x15d1: 0x000a,
+ 0x15d2: 0x000a, 0x15d3: 0x000a, 0x15d4: 0x000a, 0x15d5: 0x000a, 0x15d6: 0x000a, 0x15d7: 0x000a,
+ 0x15d8: 0x000a, 0x15d9: 0x000a, 0x15da: 0x000a, 0x15db: 0x000a, 0x15dc: 0x000a, 0x15dd: 0x000a,
+ 0x15de: 0x000a, 0x15df: 0x000a, 0x15e0: 0x000a, 0x15e1: 0x000a, 0x15e2: 0x000a, 0x15e3: 0x000a,
+ 0x15e4: 0x000a, 0x15e5: 0x000a, 0x15e6: 0x000a, 0x15e7: 0x000a, 0x15e8: 0x000a, 0x15e9: 0x000a,
+ 0x15ea: 0x000a, 0x15eb: 0x000a, 0x15ec: 0x000a, 0x15ed: 0x000a, 0x15ee: 0x000a, 0x15ef: 0x000a,
+ 0x15f0: 0x000a, 0x15f1: 0x000a, 0x15f2: 0x000a, 0x15f3: 0x000a, 0x15f4: 0x000a, 0x15f5: 0x000a,
+ 0x15f6: 0x000a, 0x15f7: 0x000a, 0x15f8: 0x000a, 0x15f9: 0x000a, 0x15fa: 0x000a, 0x15fb: 0x000a,
+ 0x15fc: 0x000a, 0x15fd: 0x000a, 0x15fe: 0x000a, 0x15ff: 0x000a,
+ // Block 0x58, offset 0x1600
+ 0x1600: 0x000a, 0x1601: 0x000a, 0x1602: 0x000a, 0x1603: 0x000a, 0x1604: 0x000a, 0x1605: 0x000a,
+ 0x1606: 0x000a, 0x1607: 0x000a, 0x1608: 0x000a, 0x1609: 0x000a, 0x160a: 0x000a, 0x160b: 0x000a,
+ 0x160c: 0x000a, 0x160d: 0x000a, 0x160e: 0x000a, 0x160f: 0x000a, 0x1610: 0x000a, 0x1611: 0x000a,
+ 0x1612: 0x000a, 0x1613: 0x000a, 0x1614: 0x000a, 0x1615: 0x000a, 0x1616: 0x000a, 0x1617: 0x000a,
+ 0x1618: 0x000a, 0x1619: 0x000a, 0x161a: 0x000a, 0x161b: 0x000a, 0x161c: 0x000a, 0x161d: 0x000a,
+ 0x161e: 0x000a, 0x161f: 0x000a, 0x1620: 0x000a, 0x1621: 0x000a, 0x1622: 0x000a, 0x1623: 0x000a,
+ 0x1624: 0x000a, 0x1625: 0x000a, 0x1626: 0x000a, 0x1627: 0x000a, 0x1628: 0x000a, 0x1629: 0x000a,
+ 0x162a: 0x000a, 0x162b: 0x000a, 0x162c: 0x000a, 0x162d: 0x000a, 0x162e: 0x000a, 0x162f: 0x000a,
+ 0x1630: 0x000a, 0x1631: 0x000a, 0x1632: 0x000a, 0x1633: 0x000a, 0x1634: 0x000a, 0x1635: 0x000a,
+ 0x1636: 0x000a, 0x1637: 0x000a, 0x1638: 0x000a, 0x1639: 0x000a, 0x163a: 0x000a, 0x163b: 0x000a,
+ 0x163c: 0x000a, 0x163d: 0x000a, 0x163e: 0x000a, 0x163f: 0x000a,
+ // Block 0x59, offset 0x1640
+ 0x1640: 0x000a, 0x1641: 0x000a, 0x1642: 0x000a, 0x1643: 0x000a, 0x1644: 0x000a, 0x1645: 0x000a,
+ 0x1646: 0x000a, 0x1647: 0x000a, 0x1648: 0x000a, 0x1649: 0x000a, 0x164a: 0x000a, 0x164b: 0x000a,
+ 0x164c: 0x000a, 0x164d: 0x000a, 0x164e: 0x000a, 0x164f: 0x000a, 0x1650: 0x000a, 0x1651: 0x000a,
+ 0x1652: 0x0003, 0x1653: 0x0004, 0x1654: 0x000a, 0x1655: 0x000a, 0x1656: 0x000a, 0x1657: 0x000a,
+ 0x1658: 0x000a, 0x1659: 0x000a, 0x165a: 0x000a, 0x165b: 0x000a, 0x165c: 0x000a, 0x165d: 0x000a,
+ 0x165e: 0x000a, 0x165f: 0x000a, 0x1660: 0x000a, 0x1661: 0x000a, 0x1662: 0x000a, 0x1663: 0x000a,
+ 0x1664: 0x000a, 0x1665: 0x000a, 0x1666: 0x000a, 0x1667: 0x000a, 0x1668: 0x000a, 0x1669: 0x000a,
+ 0x166a: 0x000a, 0x166b: 0x000a, 0x166c: 0x000a, 0x166d: 0x000a, 0x166e: 0x000a, 0x166f: 0x000a,
+ 0x1670: 0x000a, 0x1671: 0x000a, 0x1672: 0x000a, 0x1673: 0x000a, 0x1674: 0x000a, 0x1675: 0x000a,
+ 0x1676: 0x000a, 0x1677: 0x000a, 0x1678: 0x000a, 0x1679: 0x000a, 0x167a: 0x000a, 0x167b: 0x000a,
+ 0x167c: 0x000a, 0x167d: 0x000a, 0x167e: 0x000a, 0x167f: 0x000a,
+ // Block 0x5a, offset 0x1680
+ 0x1680: 0x000a, 0x1681: 0x000a, 0x1682: 0x000a, 0x1683: 0x000a, 0x1684: 0x000a, 0x1685: 0x000a,
+ 0x1686: 0x000a, 0x1687: 0x000a, 0x1688: 0x003a, 0x1689: 0x002a, 0x168a: 0x003a, 0x168b: 0x002a,
+ 0x168c: 0x000a, 0x168d: 0x000a, 0x168e: 0x000a, 0x168f: 0x000a, 0x1690: 0x000a, 0x1691: 0x000a,
+ 0x1692: 0x000a, 0x1693: 0x000a, 0x1694: 0x000a, 0x1695: 0x000a, 0x1696: 0x000a, 0x1697: 0x000a,
+ 0x1698: 0x000a, 0x1699: 0x000a, 0x169a: 0x000a, 0x169b: 0x000a, 0x169c: 0x000a, 0x169d: 0x000a,
+ 0x169e: 0x000a, 0x169f: 0x000a, 0x16a0: 0x000a, 0x16a1: 0x000a, 0x16a2: 0x000a, 0x16a3: 0x000a,
+ 0x16a4: 0x000a, 0x16a5: 0x000a, 0x16a6: 0x000a, 0x16a7: 0x000a, 0x16a8: 0x000a, 0x16a9: 0x009a,
+ 0x16aa: 0x008a, 0x16ab: 0x000a, 0x16ac: 0x000a, 0x16ad: 0x000a, 0x16ae: 0x000a, 0x16af: 0x000a,
+ 0x16b0: 0x000a, 0x16b1: 0x000a, 0x16b2: 0x000a, 0x16b3: 0x000a, 0x16b4: 0x000a, 0x16b5: 0x000a,
+ // Block 0x5b, offset 0x16c0
+ 0x16fb: 0x000a,
+ 0x16fc: 0x000a, 0x16fd: 0x000a, 0x16fe: 0x000a, 0x16ff: 0x000a,
+ // Block 0x5c, offset 0x1700
+ 0x1700: 0x000a, 0x1701: 0x000a, 0x1702: 0x000a, 0x1703: 0x000a, 0x1704: 0x000a, 0x1705: 0x000a,
+ 0x1706: 0x000a, 0x1707: 0x000a, 0x1708: 0x000a, 0x1709: 0x000a, 0x170a: 0x000a, 0x170b: 0x000a,
+ 0x170c: 0x000a, 0x170d: 0x000a, 0x170e: 0x000a, 0x170f: 0x000a, 0x1710: 0x000a, 0x1711: 0x000a,
+ 0x1712: 0x000a, 0x1713: 0x000a, 0x1714: 0x000a, 0x1716: 0x000a, 0x1717: 0x000a,
+ 0x1718: 0x000a, 0x1719: 0x000a, 0x171a: 0x000a, 0x171b: 0x000a, 0x171c: 0x000a, 0x171d: 0x000a,
+ 0x171e: 0x000a, 0x171f: 0x000a, 0x1720: 0x000a, 0x1721: 0x000a, 0x1722: 0x000a, 0x1723: 0x000a,
+ 0x1724: 0x000a, 0x1725: 0x000a, 0x1726: 0x000a, 0x1727: 0x000a, 0x1728: 0x000a, 0x1729: 0x000a,
+ 0x172a: 0x000a, 0x172b: 0x000a, 0x172c: 0x000a, 0x172d: 0x000a, 0x172e: 0x000a, 0x172f: 0x000a,
+ 0x1730: 0x000a, 0x1731: 0x000a, 0x1732: 0x000a, 0x1733: 0x000a, 0x1734: 0x000a, 0x1735: 0x000a,
+ 0x1736: 0x000a, 0x1737: 0x000a, 0x1738: 0x000a, 0x1739: 0x000a, 0x173a: 0x000a, 0x173b: 0x000a,
+ 0x173c: 0x000a, 0x173d: 0x000a, 0x173e: 0x000a, 0x173f: 0x000a,
+ // Block 0x5d, offset 0x1740
+ 0x1740: 0x000a, 0x1741: 0x000a, 0x1742: 0x000a, 0x1743: 0x000a, 0x1744: 0x000a, 0x1745: 0x000a,
+ 0x1746: 0x000a, 0x1747: 0x000a, 0x1748: 0x000a, 0x1749: 0x000a, 0x174a: 0x000a, 0x174b: 0x000a,
+ 0x174c: 0x000a, 0x174d: 0x000a, 0x174e: 0x000a, 0x174f: 0x000a, 0x1750: 0x000a, 0x1751: 0x000a,
+ 0x1752: 0x000a, 0x1753: 0x000a, 0x1754: 0x000a, 0x1755: 0x000a, 0x1756: 0x000a, 0x1757: 0x000a,
+ 0x1758: 0x000a, 0x1759: 0x000a, 0x175a: 0x000a, 0x175b: 0x000a, 0x175c: 0x000a, 0x175d: 0x000a,
+ 0x175e: 0x000a, 0x175f: 0x000a, 0x1760: 0x000a, 0x1761: 0x000a, 0x1762: 0x000a, 0x1763: 0x000a,
+ 0x1764: 0x000a, 0x1765: 0x000a, 0x1766: 0x000a,
+ // Block 0x5e, offset 0x1780
+ 0x1780: 0x000a, 0x1781: 0x000a, 0x1782: 0x000a, 0x1783: 0x000a, 0x1784: 0x000a, 0x1785: 0x000a,
+ 0x1786: 0x000a, 0x1787: 0x000a, 0x1788: 0x000a, 0x1789: 0x000a, 0x178a: 0x000a,
+ 0x17a0: 0x000a, 0x17a1: 0x000a, 0x17a2: 0x000a, 0x17a3: 0x000a,
+ 0x17a4: 0x000a, 0x17a5: 0x000a, 0x17a6: 0x000a, 0x17a7: 0x000a, 0x17a8: 0x000a, 0x17a9: 0x000a,
+ 0x17aa: 0x000a, 0x17ab: 0x000a, 0x17ac: 0x000a, 0x17ad: 0x000a, 0x17ae: 0x000a, 0x17af: 0x000a,
+ 0x17b0: 0x000a, 0x17b1: 0x000a, 0x17b2: 0x000a, 0x17b3: 0x000a, 0x17b4: 0x000a, 0x17b5: 0x000a,
+ 0x17b6: 0x000a, 0x17b7: 0x000a, 0x17b8: 0x000a, 0x17b9: 0x000a, 0x17ba: 0x000a, 0x17bb: 0x000a,
+ 0x17bc: 0x000a, 0x17bd: 0x000a, 0x17be: 0x000a, 0x17bf: 0x000a,
+ // Block 0x5f, offset 0x17c0
+ 0x17c0: 0x000a, 0x17c1: 0x000a, 0x17c2: 0x000a, 0x17c3: 0x000a, 0x17c4: 0x000a, 0x17c5: 0x000a,
+ 0x17c6: 0x000a, 0x17c7: 0x000a, 0x17c8: 0x0002, 0x17c9: 0x0002, 0x17ca: 0x0002, 0x17cb: 0x0002,
+ 0x17cc: 0x0002, 0x17cd: 0x0002, 0x17ce: 0x0002, 0x17cf: 0x0002, 0x17d0: 0x0002, 0x17d1: 0x0002,
+ 0x17d2: 0x0002, 0x17d3: 0x0002, 0x17d4: 0x0002, 0x17d5: 0x0002, 0x17d6: 0x0002, 0x17d7: 0x0002,
+ 0x17d8: 0x0002, 0x17d9: 0x0002, 0x17da: 0x0002, 0x17db: 0x0002,
+ // Block 0x60, offset 0x1800
+ 0x182a: 0x000a, 0x182b: 0x000a, 0x182c: 0x000a, 0x182d: 0x000a, 0x182e: 0x000a, 0x182f: 0x000a,
+ 0x1830: 0x000a, 0x1831: 0x000a, 0x1832: 0x000a, 0x1833: 0x000a, 0x1834: 0x000a, 0x1835: 0x000a,
+ 0x1836: 0x000a, 0x1837: 0x000a, 0x1838: 0x000a, 0x1839: 0x000a, 0x183a: 0x000a, 0x183b: 0x000a,
+ 0x183c: 0x000a, 0x183d: 0x000a, 0x183e: 0x000a, 0x183f: 0x000a,
+ // Block 0x61, offset 0x1840
+ 0x1840: 0x000a, 0x1841: 0x000a, 0x1842: 0x000a, 0x1843: 0x000a, 0x1844: 0x000a, 0x1845: 0x000a,
+ 0x1846: 0x000a, 0x1847: 0x000a, 0x1848: 0x000a, 0x1849: 0x000a, 0x184a: 0x000a, 0x184b: 0x000a,
+ 0x184c: 0x000a, 0x184d: 0x000a, 0x184e: 0x000a, 0x184f: 0x000a, 0x1850: 0x000a, 0x1851: 0x000a,
+ 0x1852: 0x000a, 0x1853: 0x000a, 0x1854: 0x000a, 0x1855: 0x000a, 0x1856: 0x000a, 0x1857: 0x000a,
+ 0x1858: 0x000a, 0x1859: 0x000a, 0x185a: 0x000a, 0x185b: 0x000a, 0x185c: 0x000a, 0x185d: 0x000a,
+ 0x185e: 0x000a, 0x185f: 0x000a, 0x1860: 0x000a, 0x1861: 0x000a, 0x1862: 0x000a, 0x1863: 0x000a,
+ 0x1864: 0x000a, 0x1865: 0x000a, 0x1866: 0x000a, 0x1867: 0x000a, 0x1868: 0x000a, 0x1869: 0x000a,
+ 0x186a: 0x000a, 0x186b: 0x000a, 0x186d: 0x000a, 0x186e: 0x000a, 0x186f: 0x000a,
+ 0x1870: 0x000a, 0x1871: 0x000a, 0x1872: 0x000a, 0x1873: 0x000a, 0x1874: 0x000a, 0x1875: 0x000a,
+ 0x1876: 0x000a, 0x1877: 0x000a, 0x1878: 0x000a, 0x1879: 0x000a, 0x187a: 0x000a, 0x187b: 0x000a,
+ 0x187c: 0x000a, 0x187d: 0x000a, 0x187e: 0x000a, 0x187f: 0x000a,
+ // Block 0x62, offset 0x1880
+ 0x1880: 0x000a, 0x1881: 0x000a, 0x1882: 0x000a, 0x1883: 0x000a, 0x1884: 0x000a, 0x1885: 0x000a,
+ 0x1886: 0x000a, 0x1887: 0x000a, 0x1888: 0x000a, 0x1889: 0x000a, 0x188a: 0x000a, 0x188b: 0x000a,
+ 0x188c: 0x000a, 0x188d: 0x000a, 0x188e: 0x000a, 0x188f: 0x000a, 0x1890: 0x000a, 0x1891: 0x000a,
+ 0x1892: 0x000a, 0x1893: 0x000a, 0x1894: 0x000a, 0x1895: 0x000a, 0x1896: 0x000a, 0x1897: 0x000a,
+ 0x1898: 0x000a, 0x1899: 0x000a, 0x189a: 0x000a, 0x189b: 0x000a, 0x189c: 0x000a, 0x189d: 0x000a,
+ 0x189e: 0x000a, 0x189f: 0x000a, 0x18a0: 0x000a, 0x18a1: 0x000a, 0x18a2: 0x000a, 0x18a3: 0x000a,
+ 0x18a4: 0x000a, 0x18a5: 0x000a, 0x18a6: 0x000a, 0x18a7: 0x000a, 0x18a8: 0x003a, 0x18a9: 0x002a,
+ 0x18aa: 0x003a, 0x18ab: 0x002a, 0x18ac: 0x003a, 0x18ad: 0x002a, 0x18ae: 0x003a, 0x18af: 0x002a,
+ 0x18b0: 0x003a, 0x18b1: 0x002a, 0x18b2: 0x003a, 0x18b3: 0x002a, 0x18b4: 0x003a, 0x18b5: 0x002a,
+ 0x18b6: 0x000a, 0x18b7: 0x000a, 0x18b8: 0x000a, 0x18b9: 0x000a, 0x18ba: 0x000a, 0x18bb: 0x000a,
+ 0x18bc: 0x000a, 0x18bd: 0x000a, 0x18be: 0x000a, 0x18bf: 0x000a,
+ // Block 0x63, offset 0x18c0
+ 0x18c0: 0x000a, 0x18c1: 0x000a, 0x18c2: 0x000a, 0x18c3: 0x000a, 0x18c4: 0x000a, 0x18c5: 0x009a,
+ 0x18c6: 0x008a, 0x18c7: 0x000a, 0x18c8: 0x000a, 0x18c9: 0x000a, 0x18ca: 0x000a, 0x18cb: 0x000a,
+ 0x18cc: 0x000a, 0x18cd: 0x000a, 0x18ce: 0x000a, 0x18cf: 0x000a, 0x18d0: 0x000a, 0x18d1: 0x000a,
+ 0x18d2: 0x000a, 0x18d3: 0x000a, 0x18d4: 0x000a, 0x18d5: 0x000a, 0x18d6: 0x000a, 0x18d7: 0x000a,
+ 0x18d8: 0x000a, 0x18d9: 0x000a, 0x18da: 0x000a, 0x18db: 0x000a, 0x18dc: 0x000a, 0x18dd: 0x000a,
+ 0x18de: 0x000a, 0x18df: 0x000a, 0x18e0: 0x000a, 0x18e1: 0x000a, 0x18e2: 0x000a, 0x18e3: 0x000a,
+ 0x18e4: 0x000a, 0x18e5: 0x000a, 0x18e6: 0x003a, 0x18e7: 0x002a, 0x18e8: 0x003a, 0x18e9: 0x002a,
+ 0x18ea: 0x003a, 0x18eb: 0x002a, 0x18ec: 0x003a, 0x18ed: 0x002a, 0x18ee: 0x003a, 0x18ef: 0x002a,
+ 0x18f0: 0x000a, 0x18f1: 0x000a, 0x18f2: 0x000a, 0x18f3: 0x000a, 0x18f4: 0x000a, 0x18f5: 0x000a,
+ 0x18f6: 0x000a, 0x18f7: 0x000a, 0x18f8: 0x000a, 0x18f9: 0x000a, 0x18fa: 0x000a, 0x18fb: 0x000a,
+ 0x18fc: 0x000a, 0x18fd: 0x000a, 0x18fe: 0x000a, 0x18ff: 0x000a,
+ // Block 0x64, offset 0x1900
+ 0x1900: 0x000a, 0x1901: 0x000a, 0x1902: 0x000a, 0x1903: 0x007a, 0x1904: 0x006a, 0x1905: 0x009a,
+ 0x1906: 0x008a, 0x1907: 0x00ba, 0x1908: 0x00aa, 0x1909: 0x009a, 0x190a: 0x008a, 0x190b: 0x007a,
+ 0x190c: 0x006a, 0x190d: 0x00da, 0x190e: 0x002a, 0x190f: 0x003a, 0x1910: 0x00ca, 0x1911: 0x009a,
+ 0x1912: 0x008a, 0x1913: 0x007a, 0x1914: 0x006a, 0x1915: 0x009a, 0x1916: 0x008a, 0x1917: 0x00ba,
+ 0x1918: 0x00aa, 0x1919: 0x000a, 0x191a: 0x000a, 0x191b: 0x000a, 0x191c: 0x000a, 0x191d: 0x000a,
+ 0x191e: 0x000a, 0x191f: 0x000a, 0x1920: 0x000a, 0x1921: 0x000a, 0x1922: 0x000a, 0x1923: 0x000a,
+ 0x1924: 0x000a, 0x1925: 0x000a, 0x1926: 0x000a, 0x1927: 0x000a, 0x1928: 0x000a, 0x1929: 0x000a,
+ 0x192a: 0x000a, 0x192b: 0x000a, 0x192c: 0x000a, 0x192d: 0x000a, 0x192e: 0x000a, 0x192f: 0x000a,
+ 0x1930: 0x000a, 0x1931: 0x000a, 0x1932: 0x000a, 0x1933: 0x000a, 0x1934: 0x000a, 0x1935: 0x000a,
+ 0x1936: 0x000a, 0x1937: 0x000a, 0x1938: 0x000a, 0x1939: 0x000a, 0x193a: 0x000a, 0x193b: 0x000a,
+ 0x193c: 0x000a, 0x193d: 0x000a, 0x193e: 0x000a, 0x193f: 0x000a,
+ // Block 0x65, offset 0x1940
+ 0x1940: 0x000a, 0x1941: 0x000a, 0x1942: 0x000a, 0x1943: 0x000a, 0x1944: 0x000a, 0x1945: 0x000a,
+ 0x1946: 0x000a, 0x1947: 0x000a, 0x1948: 0x000a, 0x1949: 0x000a, 0x194a: 0x000a, 0x194b: 0x000a,
+ 0x194c: 0x000a, 0x194d: 0x000a, 0x194e: 0x000a, 0x194f: 0x000a, 0x1950: 0x000a, 0x1951: 0x000a,
+ 0x1952: 0x000a, 0x1953: 0x000a, 0x1954: 0x000a, 0x1955: 0x000a, 0x1956: 0x000a, 0x1957: 0x000a,
+ 0x1958: 0x003a, 0x1959: 0x002a, 0x195a: 0x003a, 0x195b: 0x002a, 0x195c: 0x000a, 0x195d: 0x000a,
+ 0x195e: 0x000a, 0x195f: 0x000a, 0x1960: 0x000a, 0x1961: 0x000a, 0x1962: 0x000a, 0x1963: 0x000a,
+ 0x1964: 0x000a, 0x1965: 0x000a, 0x1966: 0x000a, 0x1967: 0x000a, 0x1968: 0x000a, 0x1969: 0x000a,
+ 0x196a: 0x000a, 0x196b: 0x000a, 0x196c: 0x000a, 0x196d: 0x000a, 0x196e: 0x000a, 0x196f: 0x000a,
+ 0x1970: 0x000a, 0x1971: 0x000a, 0x1972: 0x000a, 0x1973: 0x000a, 0x1974: 0x000a, 0x1975: 0x000a,
+ 0x1976: 0x000a, 0x1977: 0x000a, 0x1978: 0x000a, 0x1979: 0x000a, 0x197a: 0x000a, 0x197b: 0x000a,
+ 0x197c: 0x003a, 0x197d: 0x002a, 0x197e: 0x000a, 0x197f: 0x000a,
+ // Block 0x66, offset 0x1980
+ 0x1980: 0x000a, 0x1981: 0x000a, 0x1982: 0x000a, 0x1983: 0x000a, 0x1984: 0x000a, 0x1985: 0x000a,
+ 0x1986: 0x000a, 0x1987: 0x000a, 0x1988: 0x000a, 0x1989: 0x000a, 0x198a: 0x000a, 0x198b: 0x000a,
+ 0x198c: 0x000a, 0x198d: 0x000a, 0x198e: 0x000a, 0x198f: 0x000a, 0x1990: 0x000a, 0x1991: 0x000a,
+ 0x1992: 0x000a, 0x1993: 0x000a, 0x1994: 0x000a, 0x1995: 0x000a, 0x1996: 0x000a, 0x1997: 0x000a,
+ 0x1998: 0x000a, 0x1999: 0x000a, 0x199a: 0x000a, 0x199b: 0x000a, 0x199c: 0x000a, 0x199d: 0x000a,
+ 0x199e: 0x000a, 0x199f: 0x000a, 0x19a0: 0x000a, 0x19a1: 0x000a, 0x19a2: 0x000a, 0x19a3: 0x000a,
+ 0x19a4: 0x000a, 0x19a5: 0x000a, 0x19a6: 0x000a, 0x19a7: 0x000a, 0x19a8: 0x000a, 0x19a9: 0x000a,
+ 0x19aa: 0x000a, 0x19ab: 0x000a, 0x19ac: 0x000a, 0x19ad: 0x000a, 0x19ae: 0x000a, 0x19af: 0x000a,
+ 0x19b0: 0x000a, 0x19b1: 0x000a, 0x19b2: 0x000a, 0x19b3: 0x000a,
+ 0x19b6: 0x000a, 0x19b7: 0x000a, 0x19b8: 0x000a, 0x19b9: 0x000a, 0x19ba: 0x000a, 0x19bb: 0x000a,
+ 0x19bc: 0x000a, 0x19bd: 0x000a, 0x19be: 0x000a, 0x19bf: 0x000a,
+ // Block 0x67, offset 0x19c0
+ 0x19c0: 0x000a, 0x19c1: 0x000a, 0x19c2: 0x000a, 0x19c3: 0x000a, 0x19c4: 0x000a, 0x19c5: 0x000a,
+ 0x19c6: 0x000a, 0x19c7: 0x000a, 0x19c8: 0x000a, 0x19c9: 0x000a, 0x19ca: 0x000a, 0x19cb: 0x000a,
+ 0x19cc: 0x000a, 0x19cd: 0x000a, 0x19ce: 0x000a, 0x19cf: 0x000a, 0x19d0: 0x000a, 0x19d1: 0x000a,
+ 0x19d2: 0x000a, 0x19d3: 0x000a, 0x19d4: 0x000a, 0x19d5: 0x000a, 0x19d7: 0x000a,
+ 0x19d8: 0x000a, 0x19d9: 0x000a, 0x19da: 0x000a, 0x19db: 0x000a, 0x19dc: 0x000a, 0x19dd: 0x000a,
+ 0x19de: 0x000a, 0x19df: 0x000a, 0x19e0: 0x000a, 0x19e1: 0x000a, 0x19e2: 0x000a, 0x19e3: 0x000a,
+ 0x19e4: 0x000a, 0x19e5: 0x000a, 0x19e6: 0x000a, 0x19e7: 0x000a, 0x19e8: 0x000a, 0x19e9: 0x000a,
+ 0x19ea: 0x000a, 0x19eb: 0x000a, 0x19ec: 0x000a, 0x19ed: 0x000a, 0x19ee: 0x000a, 0x19ef: 0x000a,
+ 0x19f0: 0x000a, 0x19f1: 0x000a, 0x19f2: 0x000a, 0x19f3: 0x000a, 0x19f4: 0x000a, 0x19f5: 0x000a,
+ 0x19f6: 0x000a, 0x19f7: 0x000a, 0x19f8: 0x000a, 0x19f9: 0x000a, 0x19fa: 0x000a, 0x19fb: 0x000a,
+ 0x19fc: 0x000a, 0x19fd: 0x000a, 0x19fe: 0x000a, 0x19ff: 0x000a,
+ // Block 0x68, offset 0x1a00
+ 0x1a25: 0x000a, 0x1a26: 0x000a, 0x1a27: 0x000a, 0x1a28: 0x000a, 0x1a29: 0x000a,
+ 0x1a2a: 0x000a, 0x1a2f: 0x000c,
+ 0x1a30: 0x000c, 0x1a31: 0x000c,
+ 0x1a39: 0x000a, 0x1a3a: 0x000a, 0x1a3b: 0x000a,
+ 0x1a3c: 0x000a, 0x1a3d: 0x000a, 0x1a3e: 0x000a, 0x1a3f: 0x000a,
+ // Block 0x69, offset 0x1a40
+ 0x1a7f: 0x000c,
+ // Block 0x6a, offset 0x1a80
+ 0x1aa0: 0x000c, 0x1aa1: 0x000c, 0x1aa2: 0x000c, 0x1aa3: 0x000c,
+ 0x1aa4: 0x000c, 0x1aa5: 0x000c, 0x1aa6: 0x000c, 0x1aa7: 0x000c, 0x1aa8: 0x000c, 0x1aa9: 0x000c,
+ 0x1aaa: 0x000c, 0x1aab: 0x000c, 0x1aac: 0x000c, 0x1aad: 0x000c, 0x1aae: 0x000c, 0x1aaf: 0x000c,
+ 0x1ab0: 0x000c, 0x1ab1: 0x000c, 0x1ab2: 0x000c, 0x1ab3: 0x000c, 0x1ab4: 0x000c, 0x1ab5: 0x000c,
+ 0x1ab6: 0x000c, 0x1ab7: 0x000c, 0x1ab8: 0x000c, 0x1ab9: 0x000c, 0x1aba: 0x000c, 0x1abb: 0x000c,
+ 0x1abc: 0x000c, 0x1abd: 0x000c, 0x1abe: 0x000c, 0x1abf: 0x000c,
+ // Block 0x6b, offset 0x1ac0
+ 0x1ac0: 0x000a, 0x1ac1: 0x000a, 0x1ac2: 0x000a, 0x1ac3: 0x000a, 0x1ac4: 0x000a, 0x1ac5: 0x000a,
+ 0x1ac6: 0x000a, 0x1ac7: 0x000a, 0x1ac8: 0x000a, 0x1ac9: 0x000a, 0x1aca: 0x000a, 0x1acb: 0x000a,
+ 0x1acc: 0x000a, 0x1acd: 0x000a, 0x1ace: 0x000a, 0x1acf: 0x000a, 0x1ad0: 0x000a, 0x1ad1: 0x000a,
+ 0x1ad2: 0x000a, 0x1ad3: 0x000a, 0x1ad4: 0x000a, 0x1ad5: 0x000a, 0x1ad6: 0x000a, 0x1ad7: 0x000a,
+ 0x1ad8: 0x000a, 0x1ad9: 0x000a, 0x1ada: 0x000a, 0x1adb: 0x000a, 0x1adc: 0x000a, 0x1add: 0x000a,
+ 0x1ade: 0x000a, 0x1adf: 0x000a, 0x1ae0: 0x000a, 0x1ae1: 0x000a, 0x1ae2: 0x003a, 0x1ae3: 0x002a,
+ 0x1ae4: 0x003a, 0x1ae5: 0x002a, 0x1ae6: 0x003a, 0x1ae7: 0x002a, 0x1ae8: 0x003a, 0x1ae9: 0x002a,
+ 0x1aea: 0x000a, 0x1aeb: 0x000a, 0x1aec: 0x000a, 0x1aed: 0x000a, 0x1aee: 0x000a, 0x1aef: 0x000a,
+ 0x1af0: 0x000a, 0x1af1: 0x000a, 0x1af2: 0x000a, 0x1af3: 0x000a, 0x1af4: 0x000a, 0x1af5: 0x000a,
+ 0x1af6: 0x000a, 0x1af7: 0x000a, 0x1af8: 0x000a, 0x1af9: 0x000a, 0x1afa: 0x000a, 0x1afb: 0x000a,
+ 0x1afc: 0x000a, 0x1afd: 0x000a, 0x1afe: 0x000a, 0x1aff: 0x000a,
+ // Block 0x6c, offset 0x1b00
+ 0x1b00: 0x000a, 0x1b01: 0x000a, 0x1b02: 0x000a, 0x1b03: 0x000a, 0x1b04: 0x000a, 0x1b05: 0x000a,
+ 0x1b06: 0x000a, 0x1b07: 0x000a, 0x1b08: 0x000a, 0x1b09: 0x000a, 0x1b0a: 0x000a, 0x1b0b: 0x000a,
+ 0x1b0c: 0x000a, 0x1b0d: 0x000a, 0x1b0e: 0x000a, 0x1b0f: 0x000a, 0x1b10: 0x000a, 0x1b11: 0x000a,
+ 0x1b12: 0x000a,
+ // Block 0x6d, offset 0x1b40
+ 0x1b40: 0x000a, 0x1b41: 0x000a, 0x1b42: 0x000a, 0x1b43: 0x000a, 0x1b44: 0x000a, 0x1b45: 0x000a,
+ 0x1b46: 0x000a, 0x1b47: 0x000a, 0x1b48: 0x000a, 0x1b49: 0x000a, 0x1b4a: 0x000a, 0x1b4b: 0x000a,
+ 0x1b4c: 0x000a, 0x1b4d: 0x000a, 0x1b4e: 0x000a, 0x1b4f: 0x000a, 0x1b50: 0x000a, 0x1b51: 0x000a,
+ 0x1b52: 0x000a, 0x1b53: 0x000a, 0x1b54: 0x000a, 0x1b55: 0x000a, 0x1b56: 0x000a, 0x1b57: 0x000a,
+ 0x1b58: 0x000a, 0x1b59: 0x000a, 0x1b5b: 0x000a, 0x1b5c: 0x000a, 0x1b5d: 0x000a,
+ 0x1b5e: 0x000a, 0x1b5f: 0x000a, 0x1b60: 0x000a, 0x1b61: 0x000a, 0x1b62: 0x000a, 0x1b63: 0x000a,
+ 0x1b64: 0x000a, 0x1b65: 0x000a, 0x1b66: 0x000a, 0x1b67: 0x000a, 0x1b68: 0x000a, 0x1b69: 0x000a,
+ 0x1b6a: 0x000a, 0x1b6b: 0x000a, 0x1b6c: 0x000a, 0x1b6d: 0x000a, 0x1b6e: 0x000a, 0x1b6f: 0x000a,
+ 0x1b70: 0x000a, 0x1b71: 0x000a, 0x1b72: 0x000a, 0x1b73: 0x000a, 0x1b74: 0x000a, 0x1b75: 0x000a,
+ 0x1b76: 0x000a, 0x1b77: 0x000a, 0x1b78: 0x000a, 0x1b79: 0x000a, 0x1b7a: 0x000a, 0x1b7b: 0x000a,
+ 0x1b7c: 0x000a, 0x1b7d: 0x000a, 0x1b7e: 0x000a, 0x1b7f: 0x000a,
+ // Block 0x6e, offset 0x1b80
+ 0x1b80: 0x000a, 0x1b81: 0x000a, 0x1b82: 0x000a, 0x1b83: 0x000a, 0x1b84: 0x000a, 0x1b85: 0x000a,
+ 0x1b86: 0x000a, 0x1b87: 0x000a, 0x1b88: 0x000a, 0x1b89: 0x000a, 0x1b8a: 0x000a, 0x1b8b: 0x000a,
+ 0x1b8c: 0x000a, 0x1b8d: 0x000a, 0x1b8e: 0x000a, 0x1b8f: 0x000a, 0x1b90: 0x000a, 0x1b91: 0x000a,
+ 0x1b92: 0x000a, 0x1b93: 0x000a, 0x1b94: 0x000a, 0x1b95: 0x000a, 0x1b96: 0x000a, 0x1b97: 0x000a,
+ 0x1b98: 0x000a, 0x1b99: 0x000a, 0x1b9a: 0x000a, 0x1b9b: 0x000a, 0x1b9c: 0x000a, 0x1b9d: 0x000a,
+ 0x1b9e: 0x000a, 0x1b9f: 0x000a, 0x1ba0: 0x000a, 0x1ba1: 0x000a, 0x1ba2: 0x000a, 0x1ba3: 0x000a,
+ 0x1ba4: 0x000a, 0x1ba5: 0x000a, 0x1ba6: 0x000a, 0x1ba7: 0x000a, 0x1ba8: 0x000a, 0x1ba9: 0x000a,
+ 0x1baa: 0x000a, 0x1bab: 0x000a, 0x1bac: 0x000a, 0x1bad: 0x000a, 0x1bae: 0x000a, 0x1baf: 0x000a,
+ 0x1bb0: 0x000a, 0x1bb1: 0x000a, 0x1bb2: 0x000a, 0x1bb3: 0x000a,
+ // Block 0x6f, offset 0x1bc0
+ 0x1bc0: 0x000a, 0x1bc1: 0x000a, 0x1bc2: 0x000a, 0x1bc3: 0x000a, 0x1bc4: 0x000a, 0x1bc5: 0x000a,
+ 0x1bc6: 0x000a, 0x1bc7: 0x000a, 0x1bc8: 0x000a, 0x1bc9: 0x000a, 0x1bca: 0x000a, 0x1bcb: 0x000a,
+ 0x1bcc: 0x000a, 0x1bcd: 0x000a, 0x1bce: 0x000a, 0x1bcf: 0x000a, 0x1bd0: 0x000a, 0x1bd1: 0x000a,
+ 0x1bd2: 0x000a, 0x1bd3: 0x000a, 0x1bd4: 0x000a, 0x1bd5: 0x000a,
+ 0x1bf0: 0x000a, 0x1bf1: 0x000a, 0x1bf2: 0x000a, 0x1bf3: 0x000a, 0x1bf4: 0x000a, 0x1bf5: 0x000a,
+ 0x1bf6: 0x000a, 0x1bf7: 0x000a, 0x1bf8: 0x000a, 0x1bf9: 0x000a, 0x1bfa: 0x000a, 0x1bfb: 0x000a,
+ // Block 0x70, offset 0x1c00
+ 0x1c00: 0x0009, 0x1c01: 0x000a, 0x1c02: 0x000a, 0x1c03: 0x000a, 0x1c04: 0x000a,
+ 0x1c08: 0x003a, 0x1c09: 0x002a, 0x1c0a: 0x003a, 0x1c0b: 0x002a,
+ 0x1c0c: 0x003a, 0x1c0d: 0x002a, 0x1c0e: 0x003a, 0x1c0f: 0x002a, 0x1c10: 0x003a, 0x1c11: 0x002a,
+ 0x1c12: 0x000a, 0x1c13: 0x000a, 0x1c14: 0x003a, 0x1c15: 0x002a, 0x1c16: 0x003a, 0x1c17: 0x002a,
+ 0x1c18: 0x003a, 0x1c19: 0x002a, 0x1c1a: 0x003a, 0x1c1b: 0x002a, 0x1c1c: 0x000a, 0x1c1d: 0x000a,
+ 0x1c1e: 0x000a, 0x1c1f: 0x000a, 0x1c20: 0x000a,
+ 0x1c2a: 0x000c, 0x1c2b: 0x000c, 0x1c2c: 0x000c, 0x1c2d: 0x000c,
+ 0x1c30: 0x000a,
+ 0x1c36: 0x000a, 0x1c37: 0x000a,
+ 0x1c3d: 0x000a, 0x1c3e: 0x000a, 0x1c3f: 0x000a,
+ // Block 0x71, offset 0x1c40
+ 0x1c59: 0x000c, 0x1c5a: 0x000c, 0x1c5b: 0x000a, 0x1c5c: 0x000a,
+ 0x1c60: 0x000a,
+ // Block 0x72, offset 0x1c80
+ 0x1cbb: 0x000a,
+ // Block 0x73, offset 0x1cc0
+ 0x1cc0: 0x000a, 0x1cc1: 0x000a, 0x1cc2: 0x000a, 0x1cc3: 0x000a, 0x1cc4: 0x000a, 0x1cc5: 0x000a,
+ 0x1cc6: 0x000a, 0x1cc7: 0x000a, 0x1cc8: 0x000a, 0x1cc9: 0x000a, 0x1cca: 0x000a, 0x1ccb: 0x000a,
+ 0x1ccc: 0x000a, 0x1ccd: 0x000a, 0x1cce: 0x000a, 0x1ccf: 0x000a, 0x1cd0: 0x000a, 0x1cd1: 0x000a,
+ 0x1cd2: 0x000a, 0x1cd3: 0x000a, 0x1cd4: 0x000a, 0x1cd5: 0x000a, 0x1cd6: 0x000a, 0x1cd7: 0x000a,
+ 0x1cd8: 0x000a, 0x1cd9: 0x000a, 0x1cda: 0x000a, 0x1cdb: 0x000a, 0x1cdc: 0x000a, 0x1cdd: 0x000a,
+ 0x1cde: 0x000a, 0x1cdf: 0x000a, 0x1ce0: 0x000a, 0x1ce1: 0x000a, 0x1ce2: 0x000a, 0x1ce3: 0x000a,
+ // Block 0x74, offset 0x1d00
+ 0x1d1d: 0x000a,
+ 0x1d1e: 0x000a,
+ // Block 0x75, offset 0x1d40
+ 0x1d50: 0x000a, 0x1d51: 0x000a,
+ 0x1d52: 0x000a, 0x1d53: 0x000a, 0x1d54: 0x000a, 0x1d55: 0x000a, 0x1d56: 0x000a, 0x1d57: 0x000a,
+ 0x1d58: 0x000a, 0x1d59: 0x000a, 0x1d5a: 0x000a, 0x1d5b: 0x000a, 0x1d5c: 0x000a, 0x1d5d: 0x000a,
+ 0x1d5e: 0x000a, 0x1d5f: 0x000a,
+ 0x1d7c: 0x000a, 0x1d7d: 0x000a, 0x1d7e: 0x000a,
+ // Block 0x76, offset 0x1d80
+ 0x1db1: 0x000a, 0x1db2: 0x000a, 0x1db3: 0x000a, 0x1db4: 0x000a, 0x1db5: 0x000a,
+ 0x1db6: 0x000a, 0x1db7: 0x000a, 0x1db8: 0x000a, 0x1db9: 0x000a, 0x1dba: 0x000a, 0x1dbb: 0x000a,
+ 0x1dbc: 0x000a, 0x1dbd: 0x000a, 0x1dbe: 0x000a, 0x1dbf: 0x000a,
+ // Block 0x77, offset 0x1dc0
+ 0x1dcc: 0x000a, 0x1dcd: 0x000a, 0x1dce: 0x000a, 0x1dcf: 0x000a,
+ // Block 0x78, offset 0x1e00
+ 0x1e37: 0x000a, 0x1e38: 0x000a, 0x1e39: 0x000a, 0x1e3a: 0x000a,
+ // Block 0x79, offset 0x1e40
+ 0x1e5e: 0x000a, 0x1e5f: 0x000a,
+ 0x1e7f: 0x000a,
+ // Block 0x7a, offset 0x1e80
+ 0x1e90: 0x000a, 0x1e91: 0x000a,
+ 0x1e92: 0x000a, 0x1e93: 0x000a, 0x1e94: 0x000a, 0x1e95: 0x000a, 0x1e96: 0x000a, 0x1e97: 0x000a,
+ 0x1e98: 0x000a, 0x1e99: 0x000a, 0x1e9a: 0x000a, 0x1e9b: 0x000a, 0x1e9c: 0x000a, 0x1e9d: 0x000a,
+ 0x1e9e: 0x000a, 0x1e9f: 0x000a, 0x1ea0: 0x000a, 0x1ea1: 0x000a, 0x1ea2: 0x000a, 0x1ea3: 0x000a,
+ 0x1ea4: 0x000a, 0x1ea5: 0x000a, 0x1ea6: 0x000a, 0x1ea7: 0x000a, 0x1ea8: 0x000a, 0x1ea9: 0x000a,
+ 0x1eaa: 0x000a, 0x1eab: 0x000a, 0x1eac: 0x000a, 0x1ead: 0x000a, 0x1eae: 0x000a, 0x1eaf: 0x000a,
+ 0x1eb0: 0x000a, 0x1eb1: 0x000a, 0x1eb2: 0x000a, 0x1eb3: 0x000a, 0x1eb4: 0x000a, 0x1eb5: 0x000a,
+ 0x1eb6: 0x000a, 0x1eb7: 0x000a, 0x1eb8: 0x000a, 0x1eb9: 0x000a, 0x1eba: 0x000a, 0x1ebb: 0x000a,
+ 0x1ebc: 0x000a, 0x1ebd: 0x000a, 0x1ebe: 0x000a, 0x1ebf: 0x000a,
+ // Block 0x7b, offset 0x1ec0
+ 0x1ec0: 0x000a, 0x1ec1: 0x000a, 0x1ec2: 0x000a, 0x1ec3: 0x000a, 0x1ec4: 0x000a, 0x1ec5: 0x000a,
+ 0x1ec6: 0x000a,
+ // Block 0x7c, offset 0x1f00
+ 0x1f0d: 0x000a, 0x1f0e: 0x000a, 0x1f0f: 0x000a,
+ // Block 0x7d, offset 0x1f40
+ 0x1f6f: 0x000c,
+ 0x1f70: 0x000c, 0x1f71: 0x000c, 0x1f72: 0x000c, 0x1f73: 0x000a, 0x1f74: 0x000c, 0x1f75: 0x000c,
+ 0x1f76: 0x000c, 0x1f77: 0x000c, 0x1f78: 0x000c, 0x1f79: 0x000c, 0x1f7a: 0x000c, 0x1f7b: 0x000c,
+ 0x1f7c: 0x000c, 0x1f7d: 0x000c, 0x1f7e: 0x000a, 0x1f7f: 0x000a,
+ // Block 0x7e, offset 0x1f80
+ 0x1f9e: 0x000c, 0x1f9f: 0x000c,
+ // Block 0x7f, offset 0x1fc0
+ 0x1ff0: 0x000c, 0x1ff1: 0x000c,
+ // Block 0x80, offset 0x2000
+ 0x2000: 0x000a, 0x2001: 0x000a, 0x2002: 0x000a, 0x2003: 0x000a, 0x2004: 0x000a, 0x2005: 0x000a,
+ 0x2006: 0x000a, 0x2007: 0x000a, 0x2008: 0x000a, 0x2009: 0x000a, 0x200a: 0x000a, 0x200b: 0x000a,
+ 0x200c: 0x000a, 0x200d: 0x000a, 0x200e: 0x000a, 0x200f: 0x000a, 0x2010: 0x000a, 0x2011: 0x000a,
+ 0x2012: 0x000a, 0x2013: 0x000a, 0x2014: 0x000a, 0x2015: 0x000a, 0x2016: 0x000a, 0x2017: 0x000a,
+ 0x2018: 0x000a, 0x2019: 0x000a, 0x201a: 0x000a, 0x201b: 0x000a, 0x201c: 0x000a, 0x201d: 0x000a,
+ 0x201e: 0x000a, 0x201f: 0x000a, 0x2020: 0x000a, 0x2021: 0x000a,
+ // Block 0x81, offset 0x2040
+ 0x2048: 0x000a,
+ // Block 0x82, offset 0x2080
+ 0x2082: 0x000c,
+ 0x2086: 0x000c, 0x208b: 0x000c,
+ 0x20a5: 0x000c, 0x20a6: 0x000c, 0x20a8: 0x000a, 0x20a9: 0x000a,
+ 0x20aa: 0x000a, 0x20ab: 0x000a, 0x20ac: 0x000c,
+ 0x20b8: 0x0004, 0x20b9: 0x0004,
+ // Block 0x83, offset 0x20c0
+ 0x20f4: 0x000a, 0x20f5: 0x000a,
+ 0x20f6: 0x000a, 0x20f7: 0x000a,
+ // Block 0x84, offset 0x2100
+ 0x2104: 0x000c, 0x2105: 0x000c,
+ 0x2120: 0x000c, 0x2121: 0x000c, 0x2122: 0x000c, 0x2123: 0x000c,
+ 0x2124: 0x000c, 0x2125: 0x000c, 0x2126: 0x000c, 0x2127: 0x000c, 0x2128: 0x000c, 0x2129: 0x000c,
+ 0x212a: 0x000c, 0x212b: 0x000c, 0x212c: 0x000c, 0x212d: 0x000c, 0x212e: 0x000c, 0x212f: 0x000c,
+ 0x2130: 0x000c, 0x2131: 0x000c,
+ 0x213f: 0x000c,
+ // Block 0x85, offset 0x2140
+ 0x2166: 0x000c, 0x2167: 0x000c, 0x2168: 0x000c, 0x2169: 0x000c,
+ 0x216a: 0x000c, 0x216b: 0x000c, 0x216c: 0x000c, 0x216d: 0x000c,
+ // Block 0x86, offset 0x2180
+ 0x2187: 0x000c, 0x2188: 0x000c, 0x2189: 0x000c, 0x218a: 0x000c, 0x218b: 0x000c,
+ 0x218c: 0x000c, 0x218d: 0x000c, 0x218e: 0x000c, 0x218f: 0x000c, 0x2190: 0x000c, 0x2191: 0x000c,
+ // Block 0x87, offset 0x21c0
+ 0x21c0: 0x000c, 0x21c1: 0x000c, 0x21c2: 0x000c,
+ 0x21f3: 0x000c,
+ 0x21f6: 0x000c, 0x21f7: 0x000c, 0x21f8: 0x000c, 0x21f9: 0x000c,
+ 0x21fc: 0x000c, 0x21fd: 0x000c,
+ // Block 0x88, offset 0x2200
+ 0x2225: 0x000c,
+ // Block 0x89, offset 0x2240
+ 0x2269: 0x000c,
+ 0x226a: 0x000c, 0x226b: 0x000c, 0x226c: 0x000c, 0x226d: 0x000c, 0x226e: 0x000c,
+ 0x2271: 0x000c, 0x2272: 0x000c, 0x2275: 0x000c,
+ 0x2276: 0x000c,
+ // Block 0x8a, offset 0x2280
+ 0x2283: 0x000c,
+ 0x228c: 0x000c,
+ 0x22bc: 0x000c,
+ // Block 0x8b, offset 0x22c0
+ 0x22f0: 0x000c, 0x22f2: 0x000c, 0x22f3: 0x000c, 0x22f4: 0x000c,
+ 0x22f7: 0x000c, 0x22f8: 0x000c,
+ 0x22fe: 0x000c, 0x22ff: 0x000c,
+ // Block 0x8c, offset 0x2300
+ 0x2301: 0x000c,
+ 0x232c: 0x000c, 0x232d: 0x000c,
+ 0x2336: 0x000c,
+ // Block 0x8d, offset 0x2340
+ 0x236a: 0x000a, 0x236b: 0x000a,
+ // Block 0x8e, offset 0x2380
+ 0x23a5: 0x000c, 0x23a8: 0x000c,
+ 0x23ad: 0x000c,
+ // Block 0x8f, offset 0x23c0
+ 0x23dd: 0x0001,
+ 0x23de: 0x000c, 0x23df: 0x0001, 0x23e0: 0x0001, 0x23e1: 0x0001, 0x23e2: 0x0001, 0x23e3: 0x0001,
+ 0x23e4: 0x0001, 0x23e5: 0x0001, 0x23e6: 0x0001, 0x23e7: 0x0001, 0x23e8: 0x0001, 0x23e9: 0x0003,
+ 0x23ea: 0x0001, 0x23eb: 0x0001, 0x23ec: 0x0001, 0x23ed: 0x0001, 0x23ee: 0x0001, 0x23ef: 0x0001,
+ 0x23f0: 0x0001, 0x23f1: 0x0001, 0x23f2: 0x0001, 0x23f3: 0x0001, 0x23f4: 0x0001, 0x23f5: 0x0001,
+ 0x23f6: 0x0001, 0x23f7: 0x0001, 0x23f8: 0x0001, 0x23f9: 0x0001, 0x23fa: 0x0001, 0x23fb: 0x0001,
+ 0x23fc: 0x0001, 0x23fd: 0x0001, 0x23fe: 0x0001, 0x23ff: 0x0001,
+ // Block 0x90, offset 0x2400
+ 0x2400: 0x0001, 0x2401: 0x0001, 0x2402: 0x0001, 0x2403: 0x0001, 0x2404: 0x0001, 0x2405: 0x0001,
+ 0x2406: 0x0001, 0x2407: 0x0001, 0x2408: 0x0001, 0x2409: 0x0001, 0x240a: 0x0001, 0x240b: 0x0001,
+ 0x240c: 0x0001, 0x240d: 0x0001, 0x240e: 0x0001, 0x240f: 0x0001, 0x2410: 0x000d, 0x2411: 0x000d,
+ 0x2412: 0x000d, 0x2413: 0x000d, 0x2414: 0x000d, 0x2415: 0x000d, 0x2416: 0x000d, 0x2417: 0x000d,
+ 0x2418: 0x000d, 0x2419: 0x000d, 0x241a: 0x000d, 0x241b: 0x000d, 0x241c: 0x000d, 0x241d: 0x000d,
+ 0x241e: 0x000d, 0x241f: 0x000d, 0x2420: 0x000d, 0x2421: 0x000d, 0x2422: 0x000d, 0x2423: 0x000d,
+ 0x2424: 0x000d, 0x2425: 0x000d, 0x2426: 0x000d, 0x2427: 0x000d, 0x2428: 0x000d, 0x2429: 0x000d,
+ 0x242a: 0x000d, 0x242b: 0x000d, 0x242c: 0x000d, 0x242d: 0x000d, 0x242e: 0x000d, 0x242f: 0x000d,
+ 0x2430: 0x000d, 0x2431: 0x000d, 0x2432: 0x000d, 0x2433: 0x000d, 0x2434: 0x000d, 0x2435: 0x000d,
+ 0x2436: 0x000d, 0x2437: 0x000d, 0x2438: 0x000d, 0x2439: 0x000d, 0x243a: 0x000d, 0x243b: 0x000d,
+ 0x243c: 0x000d, 0x243d: 0x000d, 0x243e: 0x000d, 0x243f: 0x000d,
+ // Block 0x91, offset 0x2440
+ 0x2440: 0x000d, 0x2441: 0x000d, 0x2442: 0x000d, 0x2443: 0x000d, 0x2444: 0x000d, 0x2445: 0x000d,
+ 0x2446: 0x000d, 0x2447: 0x000d, 0x2448: 0x000d, 0x2449: 0x000d, 0x244a: 0x000d, 0x244b: 0x000d,
+ 0x244c: 0x000d, 0x244d: 0x000d, 0x244e: 0x000d, 0x244f: 0x000d, 0x2450: 0x000d, 0x2451: 0x000d,
+ 0x2452: 0x000d, 0x2453: 0x000d, 0x2454: 0x000d, 0x2455: 0x000d, 0x2456: 0x000d, 0x2457: 0x000d,
+ 0x2458: 0x000d, 0x2459: 0x000d, 0x245a: 0x000d, 0x245b: 0x000d, 0x245c: 0x000d, 0x245d: 0x000d,
+ 0x245e: 0x000d, 0x245f: 0x000d, 0x2460: 0x000d, 0x2461: 0x000d, 0x2462: 0x000d, 0x2463: 0x000d,
+ 0x2464: 0x000d, 0x2465: 0x000d, 0x2466: 0x000d, 0x2467: 0x000d, 0x2468: 0x000d, 0x2469: 0x000d,
+ 0x246a: 0x000d, 0x246b: 0x000d, 0x246c: 0x000d, 0x246d: 0x000d, 0x246e: 0x000d, 0x246f: 0x000d,
+ 0x2470: 0x000d, 0x2471: 0x000d, 0x2472: 0x000d, 0x2473: 0x000d, 0x2474: 0x000d, 0x2475: 0x000d,
+ 0x2476: 0x000d, 0x2477: 0x000d, 0x2478: 0x000d, 0x2479: 0x000d, 0x247a: 0x000d, 0x247b: 0x000d,
+ 0x247c: 0x000d, 0x247d: 0x000d, 0x247e: 0x000a, 0x247f: 0x000a,
+ // Block 0x92, offset 0x2480
+ 0x2480: 0x000d, 0x2481: 0x000d, 0x2482: 0x000d, 0x2483: 0x000d, 0x2484: 0x000d, 0x2485: 0x000d,
+ 0x2486: 0x000d, 0x2487: 0x000d, 0x2488: 0x000d, 0x2489: 0x000d, 0x248a: 0x000d, 0x248b: 0x000d,
+ 0x248c: 0x000d, 0x248d: 0x000d, 0x248e: 0x000d, 0x248f: 0x000d, 0x2490: 0x000b, 0x2491: 0x000b,
+ 0x2492: 0x000b, 0x2493: 0x000b, 0x2494: 0x000b, 0x2495: 0x000b, 0x2496: 0x000b, 0x2497: 0x000b,
+ 0x2498: 0x000b, 0x2499: 0x000b, 0x249a: 0x000b, 0x249b: 0x000b, 0x249c: 0x000b, 0x249d: 0x000b,
+ 0x249e: 0x000b, 0x249f: 0x000b, 0x24a0: 0x000b, 0x24a1: 0x000b, 0x24a2: 0x000b, 0x24a3: 0x000b,
+ 0x24a4: 0x000b, 0x24a5: 0x000b, 0x24a6: 0x000b, 0x24a7: 0x000b, 0x24a8: 0x000b, 0x24a9: 0x000b,
+ 0x24aa: 0x000b, 0x24ab: 0x000b, 0x24ac: 0x000b, 0x24ad: 0x000b, 0x24ae: 0x000b, 0x24af: 0x000b,
+ 0x24b0: 0x000d, 0x24b1: 0x000d, 0x24b2: 0x000d, 0x24b3: 0x000d, 0x24b4: 0x000d, 0x24b5: 0x000d,
+ 0x24b6: 0x000d, 0x24b7: 0x000d, 0x24b8: 0x000d, 0x24b9: 0x000d, 0x24ba: 0x000d, 0x24bb: 0x000d,
+ 0x24bc: 0x000d, 0x24bd: 0x000a, 0x24be: 0x000d, 0x24bf: 0x000d,
+ // Block 0x93, offset 0x24c0
+ 0x24c0: 0x000c, 0x24c1: 0x000c, 0x24c2: 0x000c, 0x24c3: 0x000c, 0x24c4: 0x000c, 0x24c5: 0x000c,
+ 0x24c6: 0x000c, 0x24c7: 0x000c, 0x24c8: 0x000c, 0x24c9: 0x000c, 0x24ca: 0x000c, 0x24cb: 0x000c,
+ 0x24cc: 0x000c, 0x24cd: 0x000c, 0x24ce: 0x000c, 0x24cf: 0x000c, 0x24d0: 0x000a, 0x24d1: 0x000a,
+ 0x24d2: 0x000a, 0x24d3: 0x000a, 0x24d4: 0x000a, 0x24d5: 0x000a, 0x24d6: 0x000a, 0x24d7: 0x000a,
+ 0x24d8: 0x000a, 0x24d9: 0x000a,
+ 0x24e0: 0x000c, 0x24e1: 0x000c, 0x24e2: 0x000c, 0x24e3: 0x000c,
+ 0x24e4: 0x000c, 0x24e5: 0x000c, 0x24e6: 0x000c, 0x24e7: 0x000c, 0x24e8: 0x000c, 0x24e9: 0x000c,
+ 0x24ea: 0x000c, 0x24eb: 0x000c, 0x24ec: 0x000c, 0x24ed: 0x000c, 0x24ee: 0x000c, 0x24ef: 0x000c,
+ 0x24f0: 0x000a, 0x24f1: 0x000a, 0x24f2: 0x000a, 0x24f3: 0x000a, 0x24f4: 0x000a, 0x24f5: 0x000a,
+ 0x24f6: 0x000a, 0x24f7: 0x000a, 0x24f8: 0x000a, 0x24f9: 0x000a, 0x24fa: 0x000a, 0x24fb: 0x000a,
+ 0x24fc: 0x000a, 0x24fd: 0x000a, 0x24fe: 0x000a, 0x24ff: 0x000a,
+ // Block 0x94, offset 0x2500
+ 0x2500: 0x000a, 0x2501: 0x000a, 0x2502: 0x000a, 0x2503: 0x000a, 0x2504: 0x000a, 0x2505: 0x000a,
+ 0x2506: 0x000a, 0x2507: 0x000a, 0x2508: 0x000a, 0x2509: 0x000a, 0x250a: 0x000a, 0x250b: 0x000a,
+ 0x250c: 0x000a, 0x250d: 0x000a, 0x250e: 0x000a, 0x250f: 0x000a, 0x2510: 0x0006, 0x2511: 0x000a,
+ 0x2512: 0x0006, 0x2514: 0x000a, 0x2515: 0x0006, 0x2516: 0x000a, 0x2517: 0x000a,
+ 0x2518: 0x000a, 0x2519: 0x009a, 0x251a: 0x008a, 0x251b: 0x007a, 0x251c: 0x006a, 0x251d: 0x009a,
+ 0x251e: 0x008a, 0x251f: 0x0004, 0x2520: 0x000a, 0x2521: 0x000a, 0x2522: 0x0003, 0x2523: 0x0003,
+ 0x2524: 0x000a, 0x2525: 0x000a, 0x2526: 0x000a, 0x2528: 0x000a, 0x2529: 0x0004,
+ 0x252a: 0x0004, 0x252b: 0x000a,
+ 0x2530: 0x000d, 0x2531: 0x000d, 0x2532: 0x000d, 0x2533: 0x000d, 0x2534: 0x000d, 0x2535: 0x000d,
+ 0x2536: 0x000d, 0x2537: 0x000d, 0x2538: 0x000d, 0x2539: 0x000d, 0x253a: 0x000d, 0x253b: 0x000d,
+ 0x253c: 0x000d, 0x253d: 0x000d, 0x253e: 0x000d, 0x253f: 0x000d,
+ // Block 0x95, offset 0x2540
+ 0x2540: 0x000d, 0x2541: 0x000d, 0x2542: 0x000d, 0x2543: 0x000d, 0x2544: 0x000d, 0x2545: 0x000d,
+ 0x2546: 0x000d, 0x2547: 0x000d, 0x2548: 0x000d, 0x2549: 0x000d, 0x254a: 0x000d, 0x254b: 0x000d,
+ 0x254c: 0x000d, 0x254d: 0x000d, 0x254e: 0x000d, 0x254f: 0x000d, 0x2550: 0x000d, 0x2551: 0x000d,
+ 0x2552: 0x000d, 0x2553: 0x000d, 0x2554: 0x000d, 0x2555: 0x000d, 0x2556: 0x000d, 0x2557: 0x000d,
+ 0x2558: 0x000d, 0x2559: 0x000d, 0x255a: 0x000d, 0x255b: 0x000d, 0x255c: 0x000d, 0x255d: 0x000d,
+ 0x255e: 0x000d, 0x255f: 0x000d, 0x2560: 0x000d, 0x2561: 0x000d, 0x2562: 0x000d, 0x2563: 0x000d,
+ 0x2564: 0x000d, 0x2565: 0x000d, 0x2566: 0x000d, 0x2567: 0x000d, 0x2568: 0x000d, 0x2569: 0x000d,
+ 0x256a: 0x000d, 0x256b: 0x000d, 0x256c: 0x000d, 0x256d: 0x000d, 0x256e: 0x000d, 0x256f: 0x000d,
+ 0x2570: 0x000d, 0x2571: 0x000d, 0x2572: 0x000d, 0x2573: 0x000d, 0x2574: 0x000d, 0x2575: 0x000d,
+ 0x2576: 0x000d, 0x2577: 0x000d, 0x2578: 0x000d, 0x2579: 0x000d, 0x257a: 0x000d, 0x257b: 0x000d,
+ 0x257c: 0x000d, 0x257d: 0x000d, 0x257e: 0x000d, 0x257f: 0x000b,
+ // Block 0x96, offset 0x2580
+ 0x2581: 0x000a, 0x2582: 0x000a, 0x2583: 0x0004, 0x2584: 0x0004, 0x2585: 0x0004,
+ 0x2586: 0x000a, 0x2587: 0x000a, 0x2588: 0x003a, 0x2589: 0x002a, 0x258a: 0x000a, 0x258b: 0x0003,
+ 0x258c: 0x0006, 0x258d: 0x0003, 0x258e: 0x0006, 0x258f: 0x0006, 0x2590: 0x0002, 0x2591: 0x0002,
+ 0x2592: 0x0002, 0x2593: 0x0002, 0x2594: 0x0002, 0x2595: 0x0002, 0x2596: 0x0002, 0x2597: 0x0002,
+ 0x2598: 0x0002, 0x2599: 0x0002, 0x259a: 0x0006, 0x259b: 0x000a, 0x259c: 0x000a, 0x259d: 0x000a,
+ 0x259e: 0x000a, 0x259f: 0x000a, 0x25a0: 0x000a,
+ 0x25bb: 0x005a,
+ 0x25bc: 0x000a, 0x25bd: 0x004a, 0x25be: 0x000a, 0x25bf: 0x000a,
+ // Block 0x97, offset 0x25c0
+ 0x25c0: 0x000a,
+ 0x25db: 0x005a, 0x25dc: 0x000a, 0x25dd: 0x004a,
+ 0x25de: 0x000a, 0x25df: 0x00fa, 0x25e0: 0x00ea, 0x25e1: 0x000a, 0x25e2: 0x003a, 0x25e3: 0x002a,
+ 0x25e4: 0x000a, 0x25e5: 0x000a,
+ // Block 0x98, offset 0x2600
+ 0x2620: 0x0004, 0x2621: 0x0004, 0x2622: 0x000a, 0x2623: 0x000a,
+ 0x2624: 0x000a, 0x2625: 0x0004, 0x2626: 0x0004, 0x2628: 0x000a, 0x2629: 0x000a,
+ 0x262a: 0x000a, 0x262b: 0x000a, 0x262c: 0x000a, 0x262d: 0x000a, 0x262e: 0x000a,
+ 0x2630: 0x000b, 0x2631: 0x000b, 0x2632: 0x000b, 0x2633: 0x000b, 0x2634: 0x000b, 0x2635: 0x000b,
+ 0x2636: 0x000b, 0x2637: 0x000b, 0x2638: 0x000b, 0x2639: 0x000a, 0x263a: 0x000a, 0x263b: 0x000a,
+ 0x263c: 0x000a, 0x263d: 0x000a, 0x263e: 0x000b, 0x263f: 0x000b,
+ // Block 0x99, offset 0x2640
+ 0x2641: 0x000a,
+ // Block 0x9a, offset 0x2680
+ 0x2680: 0x000a, 0x2681: 0x000a, 0x2682: 0x000a, 0x2683: 0x000a, 0x2684: 0x000a, 0x2685: 0x000a,
+ 0x2686: 0x000a, 0x2687: 0x000a, 0x2688: 0x000a, 0x2689: 0x000a, 0x268a: 0x000a, 0x268b: 0x000a,
+ 0x268c: 0x000a, 0x2690: 0x000a, 0x2691: 0x000a,
+ 0x2692: 0x000a, 0x2693: 0x000a, 0x2694: 0x000a, 0x2695: 0x000a, 0x2696: 0x000a, 0x2697: 0x000a,
+ 0x2698: 0x000a, 0x2699: 0x000a, 0x269a: 0x000a, 0x269b: 0x000a, 0x269c: 0x000a,
+ 0x26a0: 0x000a,
+ // Block 0x9b, offset 0x26c0
+ 0x26fd: 0x000c,
+ // Block 0x9c, offset 0x2700
+ 0x2720: 0x000c, 0x2721: 0x0002, 0x2722: 0x0002, 0x2723: 0x0002,
+ 0x2724: 0x0002, 0x2725: 0x0002, 0x2726: 0x0002, 0x2727: 0x0002, 0x2728: 0x0002, 0x2729: 0x0002,
+ 0x272a: 0x0002, 0x272b: 0x0002, 0x272c: 0x0002, 0x272d: 0x0002, 0x272e: 0x0002, 0x272f: 0x0002,
+ 0x2730: 0x0002, 0x2731: 0x0002, 0x2732: 0x0002, 0x2733: 0x0002, 0x2734: 0x0002, 0x2735: 0x0002,
+ 0x2736: 0x0002, 0x2737: 0x0002, 0x2738: 0x0002, 0x2739: 0x0002, 0x273a: 0x0002, 0x273b: 0x0002,
+ // Block 0x9d, offset 0x2740
+ 0x2776: 0x000c, 0x2777: 0x000c, 0x2778: 0x000c, 0x2779: 0x000c, 0x277a: 0x000c,
+ // Block 0x9e, offset 0x2780
+ 0x2780: 0x0001, 0x2781: 0x0001, 0x2782: 0x0001, 0x2783: 0x0001, 0x2784: 0x0001, 0x2785: 0x0001,
+ 0x2786: 0x0001, 0x2787: 0x0001, 0x2788: 0x0001, 0x2789: 0x0001, 0x278a: 0x0001, 0x278b: 0x0001,
+ 0x278c: 0x0001, 0x278d: 0x0001, 0x278e: 0x0001, 0x278f: 0x0001, 0x2790: 0x0001, 0x2791: 0x0001,
+ 0x2792: 0x0001, 0x2793: 0x0001, 0x2794: 0x0001, 0x2795: 0x0001, 0x2796: 0x0001, 0x2797: 0x0001,
+ 0x2798: 0x0001, 0x2799: 0x0001, 0x279a: 0x0001, 0x279b: 0x0001, 0x279c: 0x0001, 0x279d: 0x0001,
+ 0x279e: 0x0001, 0x279f: 0x0001, 0x27a0: 0x0001, 0x27a1: 0x0001, 0x27a2: 0x0001, 0x27a3: 0x0001,
+ 0x27a4: 0x0001, 0x27a5: 0x0001, 0x27a6: 0x0001, 0x27a7: 0x0001, 0x27a8: 0x0001, 0x27a9: 0x0001,
+ 0x27aa: 0x0001, 0x27ab: 0x0001, 0x27ac: 0x0001, 0x27ad: 0x0001, 0x27ae: 0x0001, 0x27af: 0x0001,
+ 0x27b0: 0x0001, 0x27b1: 0x0001, 0x27b2: 0x0001, 0x27b3: 0x0001, 0x27b4: 0x0001, 0x27b5: 0x0001,
+ 0x27b6: 0x0001, 0x27b7: 0x0001, 0x27b8: 0x0001, 0x27b9: 0x0001, 0x27ba: 0x0001, 0x27bb: 0x0001,
+ 0x27bc: 0x0001, 0x27bd: 0x0001, 0x27be: 0x0001, 0x27bf: 0x0001,
+ // Block 0x9f, offset 0x27c0
+ 0x27c0: 0x0001, 0x27c1: 0x0001, 0x27c2: 0x0001, 0x27c3: 0x0001, 0x27c4: 0x0001, 0x27c5: 0x0001,
+ 0x27c6: 0x0001, 0x27c7: 0x0001, 0x27c8: 0x0001, 0x27c9: 0x0001, 0x27ca: 0x0001, 0x27cb: 0x0001,
+ 0x27cc: 0x0001, 0x27cd: 0x0001, 0x27ce: 0x0001, 0x27cf: 0x0001, 0x27d0: 0x0001, 0x27d1: 0x0001,
+ 0x27d2: 0x0001, 0x27d3: 0x0001, 0x27d4: 0x0001, 0x27d5: 0x0001, 0x27d6: 0x0001, 0x27d7: 0x0001,
+ 0x27d8: 0x0001, 0x27d9: 0x0001, 0x27da: 0x0001, 0x27db: 0x0001, 0x27dc: 0x0001, 0x27dd: 0x0001,
+ 0x27de: 0x0001, 0x27df: 0x000a, 0x27e0: 0x0001, 0x27e1: 0x0001, 0x27e2: 0x0001, 0x27e3: 0x0001,
+ 0x27e4: 0x0001, 0x27e5: 0x0001, 0x27e6: 0x0001, 0x27e7: 0x0001, 0x27e8: 0x0001, 0x27e9: 0x0001,
+ 0x27ea: 0x0001, 0x27eb: 0x0001, 0x27ec: 0x0001, 0x27ed: 0x0001, 0x27ee: 0x0001, 0x27ef: 0x0001,
+ 0x27f0: 0x0001, 0x27f1: 0x0001, 0x27f2: 0x0001, 0x27f3: 0x0001, 0x27f4: 0x0001, 0x27f5: 0x0001,
+ 0x27f6: 0x0001, 0x27f7: 0x0001, 0x27f8: 0x0001, 0x27f9: 0x0001, 0x27fa: 0x0001, 0x27fb: 0x0001,
+ 0x27fc: 0x0001, 0x27fd: 0x0001, 0x27fe: 0x0001, 0x27ff: 0x0001,
+ // Block 0xa0, offset 0x2800
+ 0x2800: 0x0001, 0x2801: 0x000c, 0x2802: 0x000c, 0x2803: 0x000c, 0x2804: 0x0001, 0x2805: 0x000c,
+ 0x2806: 0x000c, 0x2807: 0x0001, 0x2808: 0x0001, 0x2809: 0x0001, 0x280a: 0x0001, 0x280b: 0x0001,
+ 0x280c: 0x000c, 0x280d: 0x000c, 0x280e: 0x000c, 0x280f: 0x000c, 0x2810: 0x0001, 0x2811: 0x0001,
+ 0x2812: 0x0001, 0x2813: 0x0001, 0x2814: 0x0001, 0x2815: 0x0001, 0x2816: 0x0001, 0x2817: 0x0001,
+ 0x2818: 0x0001, 0x2819: 0x0001, 0x281a: 0x0001, 0x281b: 0x0001, 0x281c: 0x0001, 0x281d: 0x0001,
+ 0x281e: 0x0001, 0x281f: 0x0001, 0x2820: 0x0001, 0x2821: 0x0001, 0x2822: 0x0001, 0x2823: 0x0001,
+ 0x2824: 0x0001, 0x2825: 0x0001, 0x2826: 0x0001, 0x2827: 0x0001, 0x2828: 0x0001, 0x2829: 0x0001,
+ 0x282a: 0x0001, 0x282b: 0x0001, 0x282c: 0x0001, 0x282d: 0x0001, 0x282e: 0x0001, 0x282f: 0x0001,
+ 0x2830: 0x0001, 0x2831: 0x0001, 0x2832: 0x0001, 0x2833: 0x0001, 0x2834: 0x0001, 0x2835: 0x0001,
+ 0x2836: 0x0001, 0x2837: 0x0001, 0x2838: 0x000c, 0x2839: 0x000c, 0x283a: 0x000c, 0x283b: 0x0001,
+ 0x283c: 0x0001, 0x283d: 0x0001, 0x283e: 0x0001, 0x283f: 0x000c,
+ // Block 0xa1, offset 0x2840
+ 0x2840: 0x0001, 0x2841: 0x0001, 0x2842: 0x0001, 0x2843: 0x0001, 0x2844: 0x0001, 0x2845: 0x0001,
+ 0x2846: 0x0001, 0x2847: 0x0001, 0x2848: 0x0001, 0x2849: 0x0001, 0x284a: 0x0001, 0x284b: 0x0001,
+ 0x284c: 0x0001, 0x284d: 0x0001, 0x284e: 0x0001, 0x284f: 0x0001, 0x2850: 0x0001, 0x2851: 0x0001,
+ 0x2852: 0x0001, 0x2853: 0x0001, 0x2854: 0x0001, 0x2855: 0x0001, 0x2856: 0x0001, 0x2857: 0x0001,
+ 0x2858: 0x0001, 0x2859: 0x0001, 0x285a: 0x0001, 0x285b: 0x0001, 0x285c: 0x0001, 0x285d: 0x0001,
+ 0x285e: 0x0001, 0x285f: 0x0001, 0x2860: 0x0001, 0x2861: 0x0001, 0x2862: 0x0001, 0x2863: 0x0001,
+ 0x2864: 0x0001, 0x2865: 0x000c, 0x2866: 0x000c, 0x2867: 0x0001, 0x2868: 0x0001, 0x2869: 0x0001,
+ 0x286a: 0x0001, 0x286b: 0x0001, 0x286c: 0x0001, 0x286d: 0x0001, 0x286e: 0x0001, 0x286f: 0x0001,
+ 0x2870: 0x0001, 0x2871: 0x0001, 0x2872: 0x0001, 0x2873: 0x0001, 0x2874: 0x0001, 0x2875: 0x0001,
+ 0x2876: 0x0001, 0x2877: 0x0001, 0x2878: 0x0001, 0x2879: 0x0001, 0x287a: 0x0001, 0x287b: 0x0001,
+ 0x287c: 0x0001, 0x287d: 0x0001, 0x287e: 0x0001, 0x287f: 0x0001,
+ // Block 0xa2, offset 0x2880
+ 0x2880: 0x0001, 0x2881: 0x0001, 0x2882: 0x0001, 0x2883: 0x0001, 0x2884: 0x0001, 0x2885: 0x0001,
+ 0x2886: 0x0001, 0x2887: 0x0001, 0x2888: 0x0001, 0x2889: 0x0001, 0x288a: 0x0001, 0x288b: 0x0001,
+ 0x288c: 0x0001, 0x288d: 0x0001, 0x288e: 0x0001, 0x288f: 0x0001, 0x2890: 0x0001, 0x2891: 0x0001,
+ 0x2892: 0x0001, 0x2893: 0x0001, 0x2894: 0x0001, 0x2895: 0x0001, 0x2896: 0x0001, 0x2897: 0x0001,
+ 0x2898: 0x0001, 0x2899: 0x0001, 0x289a: 0x0001, 0x289b: 0x0001, 0x289c: 0x0001, 0x289d: 0x0001,
+ 0x289e: 0x0001, 0x289f: 0x0001, 0x28a0: 0x0001, 0x28a1: 0x0001, 0x28a2: 0x0001, 0x28a3: 0x0001,
+ 0x28a4: 0x0001, 0x28a5: 0x0001, 0x28a6: 0x0001, 0x28a7: 0x0001, 0x28a8: 0x0001, 0x28a9: 0x0001,
+ 0x28aa: 0x0001, 0x28ab: 0x0001, 0x28ac: 0x0001, 0x28ad: 0x0001, 0x28ae: 0x0001, 0x28af: 0x0001,
+ 0x28b0: 0x0001, 0x28b1: 0x0001, 0x28b2: 0x0001, 0x28b3: 0x0001, 0x28b4: 0x0001, 0x28b5: 0x0001,
+ 0x28b6: 0x0001, 0x28b7: 0x0001, 0x28b8: 0x0001, 0x28b9: 0x000a, 0x28ba: 0x000a, 0x28bb: 0x000a,
+ 0x28bc: 0x000a, 0x28bd: 0x000a, 0x28be: 0x000a, 0x28bf: 0x000a,
+ // Block 0xa3, offset 0x28c0
+ 0x28c0: 0x000d, 0x28c1: 0x000d, 0x28c2: 0x000d, 0x28c3: 0x000d, 0x28c4: 0x000d, 0x28c5: 0x000d,
+ 0x28c6: 0x000d, 0x28c7: 0x000d, 0x28c8: 0x000d, 0x28c9: 0x000d, 0x28ca: 0x000d, 0x28cb: 0x000d,
+ 0x28cc: 0x000d, 0x28cd: 0x000d, 0x28ce: 0x000d, 0x28cf: 0x000d, 0x28d0: 0x000d, 0x28d1: 0x000d,
+ 0x28d2: 0x000d, 0x28d3: 0x000d, 0x28d4: 0x000d, 0x28d5: 0x000d, 0x28d6: 0x000d, 0x28d7: 0x000d,
+ 0x28d8: 0x000d, 0x28d9: 0x000d, 0x28da: 0x000d, 0x28db: 0x000d, 0x28dc: 0x000d, 0x28dd: 0x000d,
+ 0x28de: 0x000d, 0x28df: 0x000d, 0x28e0: 0x000d, 0x28e1: 0x000d, 0x28e2: 0x000d, 0x28e3: 0x000d,
+ 0x28e4: 0x000c, 0x28e5: 0x000c, 0x28e6: 0x000c, 0x28e7: 0x000c, 0x28e8: 0x000d, 0x28e9: 0x000d,
+ 0x28ea: 0x000d, 0x28eb: 0x000d, 0x28ec: 0x000d, 0x28ed: 0x000d, 0x28ee: 0x000d, 0x28ef: 0x000d,
+ 0x28f0: 0x0005, 0x28f1: 0x0005, 0x28f2: 0x0005, 0x28f3: 0x0005, 0x28f4: 0x0005, 0x28f5: 0x0005,
+ 0x28f6: 0x0005, 0x28f7: 0x0005, 0x28f8: 0x0005, 0x28f9: 0x0005, 0x28fa: 0x000d, 0x28fb: 0x000d,
+ 0x28fc: 0x000d, 0x28fd: 0x000d, 0x28fe: 0x000d, 0x28ff: 0x000d,
+ // Block 0xa4, offset 0x2900
+ 0x2900: 0x0001, 0x2901: 0x0001, 0x2902: 0x0001, 0x2903: 0x0001, 0x2904: 0x0001, 0x2905: 0x0001,
+ 0x2906: 0x0001, 0x2907: 0x0001, 0x2908: 0x0001, 0x2909: 0x0001, 0x290a: 0x0001, 0x290b: 0x0001,
+ 0x290c: 0x0001, 0x290d: 0x0001, 0x290e: 0x0001, 0x290f: 0x0001, 0x2910: 0x0001, 0x2911: 0x0001,
+ 0x2912: 0x0001, 0x2913: 0x0001, 0x2914: 0x0001, 0x2915: 0x0001, 0x2916: 0x0001, 0x2917: 0x0001,
+ 0x2918: 0x0001, 0x2919: 0x0001, 0x291a: 0x0001, 0x291b: 0x0001, 0x291c: 0x0001, 0x291d: 0x0001,
+ 0x291e: 0x0001, 0x291f: 0x0001, 0x2920: 0x0005, 0x2921: 0x0005, 0x2922: 0x0005, 0x2923: 0x0005,
+ 0x2924: 0x0005, 0x2925: 0x0005, 0x2926: 0x0005, 0x2927: 0x0005, 0x2928: 0x0005, 0x2929: 0x0005,
+ 0x292a: 0x0005, 0x292b: 0x0005, 0x292c: 0x0005, 0x292d: 0x0005, 0x292e: 0x0005, 0x292f: 0x0005,
+ 0x2930: 0x0005, 0x2931: 0x0005, 0x2932: 0x0005, 0x2933: 0x0005, 0x2934: 0x0005, 0x2935: 0x0005,
+ 0x2936: 0x0005, 0x2937: 0x0005, 0x2938: 0x0005, 0x2939: 0x0005, 0x293a: 0x0005, 0x293b: 0x0005,
+ 0x293c: 0x0005, 0x293d: 0x0005, 0x293e: 0x0005, 0x293f: 0x0001,
+ // Block 0xa5, offset 0x2940
+ 0x2940: 0x0001, 0x2941: 0x0001, 0x2942: 0x0001, 0x2943: 0x0001, 0x2944: 0x0001, 0x2945: 0x0001,
+ 0x2946: 0x0001, 0x2947: 0x0001, 0x2948: 0x0001, 0x2949: 0x0001, 0x294a: 0x0001, 0x294b: 0x0001,
+ 0x294c: 0x0001, 0x294d: 0x0001, 0x294e: 0x0001, 0x294f: 0x0001, 0x2950: 0x0001, 0x2951: 0x0001,
+ 0x2952: 0x0001, 0x2953: 0x0001, 0x2954: 0x0001, 0x2955: 0x0001, 0x2956: 0x0001, 0x2957: 0x0001,
+ 0x2958: 0x0001, 0x2959: 0x0001, 0x295a: 0x0001, 0x295b: 0x0001, 0x295c: 0x0001, 0x295d: 0x0001,
+ 0x295e: 0x0001, 0x295f: 0x0001, 0x2960: 0x0001, 0x2961: 0x0001, 0x2962: 0x0001, 0x2963: 0x0001,
+ 0x2964: 0x0001, 0x2965: 0x0001, 0x2966: 0x0001, 0x2967: 0x0001, 0x2968: 0x0001, 0x2969: 0x0001,
+ 0x296a: 0x0001, 0x296b: 0x000c, 0x296c: 0x000c, 0x296d: 0x0001, 0x296e: 0x0001, 0x296f: 0x0001,
+ 0x2970: 0x0001, 0x2971: 0x0001, 0x2972: 0x0001, 0x2973: 0x0001, 0x2974: 0x0001, 0x2975: 0x0001,
+ 0x2976: 0x0001, 0x2977: 0x0001, 0x2978: 0x0001, 0x2979: 0x0001, 0x297a: 0x0001, 0x297b: 0x0001,
+ 0x297c: 0x0001, 0x297d: 0x0001, 0x297e: 0x0001, 0x297f: 0x0001,
+ // Block 0xa6, offset 0x2980
+ 0x2980: 0x0001, 0x2981: 0x0001, 0x2982: 0x0001, 0x2983: 0x0001, 0x2984: 0x0001, 0x2985: 0x0001,
+ 0x2986: 0x0001, 0x2987: 0x0001, 0x2988: 0x0001, 0x2989: 0x0001, 0x298a: 0x0001, 0x298b: 0x0001,
+ 0x298c: 0x0001, 0x298d: 0x0001, 0x298e: 0x0001, 0x298f: 0x0001, 0x2990: 0x0001, 0x2991: 0x0001,
+ 0x2992: 0x0001, 0x2993: 0x0001, 0x2994: 0x0001, 0x2995: 0x0001, 0x2996: 0x0001, 0x2997: 0x0001,
+ 0x2998: 0x0001, 0x2999: 0x0001, 0x299a: 0x0001, 0x299b: 0x0001, 0x299c: 0x0001, 0x299d: 0x0001,
+ 0x299e: 0x0001, 0x299f: 0x0001, 0x29a0: 0x0001, 0x29a1: 0x0001, 0x29a2: 0x0001, 0x29a3: 0x0001,
+ 0x29a4: 0x0001, 0x29a5: 0x0001, 0x29a6: 0x0001, 0x29a7: 0x0001, 0x29a8: 0x0001, 0x29a9: 0x0001,
+ 0x29aa: 0x0001, 0x29ab: 0x0001, 0x29ac: 0x0001, 0x29ad: 0x0001, 0x29ae: 0x0001, 0x29af: 0x0001,
+ 0x29b0: 0x000d, 0x29b1: 0x000d, 0x29b2: 0x000d, 0x29b3: 0x000d, 0x29b4: 0x000d, 0x29b5: 0x000d,
+ 0x29b6: 0x000d, 0x29b7: 0x000d, 0x29b8: 0x000d, 0x29b9: 0x000d, 0x29ba: 0x000d, 0x29bb: 0x000d,
+ 0x29bc: 0x000d, 0x29bd: 0x000d, 0x29be: 0x000d, 0x29bf: 0x000d,
+ // Block 0xa7, offset 0x29c0
+ 0x29c0: 0x000d, 0x29c1: 0x000d, 0x29c2: 0x000d, 0x29c3: 0x000d, 0x29c4: 0x000d, 0x29c5: 0x000d,
+ 0x29c6: 0x000c, 0x29c7: 0x000c, 0x29c8: 0x000c, 0x29c9: 0x000c, 0x29ca: 0x000c, 0x29cb: 0x000c,
+ 0x29cc: 0x000c, 0x29cd: 0x000c, 0x29ce: 0x000c, 0x29cf: 0x000c, 0x29d0: 0x000c, 0x29d1: 0x000d,
+ 0x29d2: 0x000d, 0x29d3: 0x000d, 0x29d4: 0x000d, 0x29d5: 0x000d, 0x29d6: 0x000d, 0x29d7: 0x000d,
+ 0x29d8: 0x000d, 0x29d9: 0x000d, 0x29da: 0x000d, 0x29db: 0x000d, 0x29dc: 0x000d, 0x29dd: 0x000d,
+ 0x29de: 0x000d, 0x29df: 0x000d, 0x29e0: 0x000d, 0x29e1: 0x000d, 0x29e2: 0x000d, 0x29e3: 0x000d,
+ 0x29e4: 0x000d, 0x29e5: 0x000d, 0x29e6: 0x000d, 0x29e7: 0x000d, 0x29e8: 0x000d, 0x29e9: 0x000d,
+ 0x29ea: 0x000d, 0x29eb: 0x000d, 0x29ec: 0x000d, 0x29ed: 0x000d, 0x29ee: 0x000d, 0x29ef: 0x000d,
+ 0x29f0: 0x0001, 0x29f1: 0x0001, 0x29f2: 0x0001, 0x29f3: 0x0001, 0x29f4: 0x0001, 0x29f5: 0x0001,
+ 0x29f6: 0x0001, 0x29f7: 0x0001, 0x29f8: 0x0001, 0x29f9: 0x0001, 0x29fa: 0x0001, 0x29fb: 0x0001,
+ 0x29fc: 0x0001, 0x29fd: 0x0001, 0x29fe: 0x0001, 0x29ff: 0x0001,
+ // Block 0xa8, offset 0x2a00
+ 0x2a01: 0x000c,
+ 0x2a38: 0x000c, 0x2a39: 0x000c, 0x2a3a: 0x000c, 0x2a3b: 0x000c,
+ 0x2a3c: 0x000c, 0x2a3d: 0x000c, 0x2a3e: 0x000c, 0x2a3f: 0x000c,
+ // Block 0xa9, offset 0x2a40
+ 0x2a40: 0x000c, 0x2a41: 0x000c, 0x2a42: 0x000c, 0x2a43: 0x000c, 0x2a44: 0x000c, 0x2a45: 0x000c,
+ 0x2a46: 0x000c,
+ 0x2a52: 0x000a, 0x2a53: 0x000a, 0x2a54: 0x000a, 0x2a55: 0x000a, 0x2a56: 0x000a, 0x2a57: 0x000a,
+ 0x2a58: 0x000a, 0x2a59: 0x000a, 0x2a5a: 0x000a, 0x2a5b: 0x000a, 0x2a5c: 0x000a, 0x2a5d: 0x000a,
+ 0x2a5e: 0x000a, 0x2a5f: 0x000a, 0x2a60: 0x000a, 0x2a61: 0x000a, 0x2a62: 0x000a, 0x2a63: 0x000a,
+ 0x2a64: 0x000a, 0x2a65: 0x000a,
+ 0x2a7f: 0x000c,
+ // Block 0xaa, offset 0x2a80
+ 0x2a80: 0x000c, 0x2a81: 0x000c,
+ 0x2ab3: 0x000c, 0x2ab4: 0x000c, 0x2ab5: 0x000c,
+ 0x2ab6: 0x000c, 0x2ab9: 0x000c, 0x2aba: 0x000c,
+ // Block 0xab, offset 0x2ac0
+ 0x2ac0: 0x000c, 0x2ac1: 0x000c, 0x2ac2: 0x000c,
+ 0x2ae7: 0x000c, 0x2ae8: 0x000c, 0x2ae9: 0x000c,
+ 0x2aea: 0x000c, 0x2aeb: 0x000c, 0x2aed: 0x000c, 0x2aee: 0x000c, 0x2aef: 0x000c,
+ 0x2af0: 0x000c, 0x2af1: 0x000c, 0x2af2: 0x000c, 0x2af3: 0x000c, 0x2af4: 0x000c,
+ // Block 0xac, offset 0x2b00
+ 0x2b33: 0x000c,
+ // Block 0xad, offset 0x2b40
+ 0x2b40: 0x000c, 0x2b41: 0x000c,
+ 0x2b76: 0x000c, 0x2b77: 0x000c, 0x2b78: 0x000c, 0x2b79: 0x000c, 0x2b7a: 0x000c, 0x2b7b: 0x000c,
+ 0x2b7c: 0x000c, 0x2b7d: 0x000c, 0x2b7e: 0x000c,
+ // Block 0xae, offset 0x2b80
+ 0x2b89: 0x000c, 0x2b8a: 0x000c, 0x2b8b: 0x000c,
+ 0x2b8c: 0x000c, 0x2b8f: 0x000c,
+ // Block 0xaf, offset 0x2bc0
+ 0x2bef: 0x000c,
+ 0x2bf0: 0x000c, 0x2bf1: 0x000c, 0x2bf4: 0x000c,
+ 0x2bf6: 0x000c, 0x2bf7: 0x000c,
+ 0x2bfe: 0x000c,
+ // Block 0xb0, offset 0x2c00
+ 0x2c1f: 0x000c, 0x2c23: 0x000c,
+ 0x2c24: 0x000c, 0x2c25: 0x000c, 0x2c26: 0x000c, 0x2c27: 0x000c, 0x2c28: 0x000c, 0x2c29: 0x000c,
+ 0x2c2a: 0x000c,
+ // Block 0xb1, offset 0x2c40
+ 0x2c40: 0x000c,
+ 0x2c66: 0x000c, 0x2c67: 0x000c, 0x2c68: 0x000c, 0x2c69: 0x000c,
+ 0x2c6a: 0x000c, 0x2c6b: 0x000c, 0x2c6c: 0x000c,
+ 0x2c70: 0x000c, 0x2c71: 0x000c, 0x2c72: 0x000c, 0x2c73: 0x000c, 0x2c74: 0x000c,
+ // Block 0xb2, offset 0x2c80
+ 0x2cb8: 0x000c, 0x2cb9: 0x000c, 0x2cba: 0x000c, 0x2cbb: 0x000c,
+ 0x2cbc: 0x000c, 0x2cbd: 0x000c, 0x2cbe: 0x000c, 0x2cbf: 0x000c,
+ // Block 0xb3, offset 0x2cc0
+ 0x2cc2: 0x000c, 0x2cc3: 0x000c, 0x2cc4: 0x000c,
+ 0x2cc6: 0x000c,
+ 0x2cde: 0x000c,
+ // Block 0xb4, offset 0x2d00
+ 0x2d33: 0x000c, 0x2d34: 0x000c, 0x2d35: 0x000c,
+ 0x2d36: 0x000c, 0x2d37: 0x000c, 0x2d38: 0x000c, 0x2d3a: 0x000c,
+ 0x2d3f: 0x000c,
+ // Block 0xb5, offset 0x2d40
+ 0x2d40: 0x000c, 0x2d42: 0x000c, 0x2d43: 0x000c,
+ // Block 0xb6, offset 0x2d80
+ 0x2db2: 0x000c, 0x2db3: 0x000c, 0x2db4: 0x000c, 0x2db5: 0x000c,
+ 0x2dbc: 0x000c, 0x2dbd: 0x000c, 0x2dbf: 0x000c,
+ // Block 0xb7, offset 0x2dc0
+ 0x2dc0: 0x000c,
+ 0x2ddc: 0x000c, 0x2ddd: 0x000c,
+ // Block 0xb8, offset 0x2e00
+ 0x2e33: 0x000c, 0x2e34: 0x000c, 0x2e35: 0x000c,
+ 0x2e36: 0x000c, 0x2e37: 0x000c, 0x2e38: 0x000c, 0x2e39: 0x000c, 0x2e3a: 0x000c,
+ 0x2e3d: 0x000c, 0x2e3f: 0x000c,
+ // Block 0xb9, offset 0x2e40
+ 0x2e40: 0x000c,
+ 0x2e60: 0x000a, 0x2e61: 0x000a, 0x2e62: 0x000a, 0x2e63: 0x000a,
+ 0x2e64: 0x000a, 0x2e65: 0x000a, 0x2e66: 0x000a, 0x2e67: 0x000a, 0x2e68: 0x000a, 0x2e69: 0x000a,
+ 0x2e6a: 0x000a, 0x2e6b: 0x000a, 0x2e6c: 0x000a,
+ // Block 0xba, offset 0x2e80
+ 0x2eab: 0x000c, 0x2ead: 0x000c,
+ 0x2eb0: 0x000c, 0x2eb1: 0x000c, 0x2eb2: 0x000c, 0x2eb3: 0x000c, 0x2eb4: 0x000c, 0x2eb5: 0x000c,
+ 0x2eb7: 0x000c,
+ // Block 0xbb, offset 0x2ec0
+ 0x2edd: 0x000c,
+ 0x2ede: 0x000c, 0x2edf: 0x000c, 0x2ee2: 0x000c, 0x2ee3: 0x000c,
+ 0x2ee4: 0x000c, 0x2ee5: 0x000c, 0x2ee7: 0x000c, 0x2ee8: 0x000c, 0x2ee9: 0x000c,
+ 0x2eea: 0x000c, 0x2eeb: 0x000c,
+ // Block 0xbc, offset 0x2f00
+ 0x2f2f: 0x000c,
+ 0x2f30: 0x000c, 0x2f31: 0x000c, 0x2f32: 0x000c, 0x2f33: 0x000c, 0x2f34: 0x000c, 0x2f35: 0x000c,
+ 0x2f36: 0x000c, 0x2f37: 0x000c, 0x2f39: 0x000c, 0x2f3a: 0x000c,
+ // Block 0xbd, offset 0x2f40
+ 0x2f7b: 0x000c,
+ 0x2f7c: 0x000c, 0x2f7e: 0x000c,
+ // Block 0xbe, offset 0x2f80
+ 0x2f83: 0x000c,
+ // Block 0xbf, offset 0x2fc0
+ 0x2fd4: 0x000c, 0x2fd5: 0x000c, 0x2fd6: 0x000c, 0x2fd7: 0x000c,
+ 0x2fda: 0x000c, 0x2fdb: 0x000c,
+ 0x2fe0: 0x000c,
+ // Block 0xc0, offset 0x3000
+ 0x3001: 0x000c, 0x3002: 0x000c, 0x3003: 0x000c, 0x3004: 0x000c, 0x3005: 0x000c,
+ 0x3006: 0x000c, 0x3009: 0x000c, 0x300a: 0x000c,
+ 0x3033: 0x000c, 0x3034: 0x000c, 0x3035: 0x000c,
+ 0x3036: 0x000c, 0x3037: 0x000c, 0x3038: 0x000c, 0x303b: 0x000c,
+ 0x303c: 0x000c, 0x303d: 0x000c, 0x303e: 0x000c,
+ // Block 0xc1, offset 0x3040
+ 0x3047: 0x000c,
+ 0x3051: 0x000c,
+ 0x3052: 0x000c, 0x3053: 0x000c, 0x3054: 0x000c, 0x3055: 0x000c, 0x3056: 0x000c,
+ 0x3059: 0x000c, 0x305a: 0x000c, 0x305b: 0x000c,
+ // Block 0xc2, offset 0x3080
+ 0x308a: 0x000c, 0x308b: 0x000c,
+ 0x308c: 0x000c, 0x308d: 0x000c, 0x308e: 0x000c, 0x308f: 0x000c, 0x3090: 0x000c, 0x3091: 0x000c,
+ 0x3092: 0x000c, 0x3093: 0x000c, 0x3094: 0x000c, 0x3095: 0x000c, 0x3096: 0x000c,
+ 0x3098: 0x000c, 0x3099: 0x000c,
+ // Block 0xc3, offset 0x30c0
+ 0x30f0: 0x000c, 0x30f1: 0x000c, 0x30f2: 0x000c, 0x30f3: 0x000c, 0x30f4: 0x000c, 0x30f5: 0x000c,
+ 0x30f6: 0x000c, 0x30f8: 0x000c, 0x30f9: 0x000c, 0x30fa: 0x000c, 0x30fb: 0x000c,
+ 0x30fc: 0x000c, 0x30fd: 0x000c,
+ // Block 0xc4, offset 0x3100
+ 0x3112: 0x000c, 0x3113: 0x000c, 0x3114: 0x000c, 0x3115: 0x000c, 0x3116: 0x000c, 0x3117: 0x000c,
+ 0x3118: 0x000c, 0x3119: 0x000c, 0x311a: 0x000c, 0x311b: 0x000c, 0x311c: 0x000c, 0x311d: 0x000c,
+ 0x311e: 0x000c, 0x311f: 0x000c, 0x3120: 0x000c, 0x3121: 0x000c, 0x3122: 0x000c, 0x3123: 0x000c,
+ 0x3124: 0x000c, 0x3125: 0x000c, 0x3126: 0x000c, 0x3127: 0x000c,
+ 0x312a: 0x000c, 0x312b: 0x000c, 0x312c: 0x000c, 0x312d: 0x000c, 0x312e: 0x000c, 0x312f: 0x000c,
+ 0x3130: 0x000c, 0x3132: 0x000c, 0x3133: 0x000c, 0x3135: 0x000c,
+ 0x3136: 0x000c,
+ // Block 0xc5, offset 0x3140
+ 0x3171: 0x000c, 0x3172: 0x000c, 0x3173: 0x000c, 0x3174: 0x000c, 0x3175: 0x000c,
+ 0x3176: 0x000c, 0x317a: 0x000c,
+ 0x317c: 0x000c, 0x317d: 0x000c, 0x317f: 0x000c,
+ // Block 0xc6, offset 0x3180
+ 0x3180: 0x000c, 0x3181: 0x000c, 0x3182: 0x000c, 0x3183: 0x000c, 0x3184: 0x000c, 0x3185: 0x000c,
+ 0x3187: 0x000c,
+ // Block 0xc7, offset 0x31c0
+ 0x31d0: 0x000c, 0x31d1: 0x000c,
+ 0x31d5: 0x000c, 0x31d7: 0x000c,
+ // Block 0xc8, offset 0x3200
+ 0x3233: 0x000c, 0x3234: 0x000c,
+ // Block 0xc9, offset 0x3240
+ 0x3255: 0x000a, 0x3256: 0x000a, 0x3257: 0x000a,
+ 0x3258: 0x000a, 0x3259: 0x000a, 0x325a: 0x000a, 0x325b: 0x000a, 0x325c: 0x000a, 0x325d: 0x0004,
+ 0x325e: 0x0004, 0x325f: 0x0004, 0x3260: 0x0004, 0x3261: 0x000a, 0x3262: 0x000a, 0x3263: 0x000a,
+ 0x3264: 0x000a, 0x3265: 0x000a, 0x3266: 0x000a, 0x3267: 0x000a, 0x3268: 0x000a, 0x3269: 0x000a,
+ 0x326a: 0x000a, 0x326b: 0x000a, 0x326c: 0x000a, 0x326d: 0x000a, 0x326e: 0x000a, 0x326f: 0x000a,
+ 0x3270: 0x000a, 0x3271: 0x000a,
+ // Block 0xca, offset 0x3280
+ 0x32b0: 0x000c, 0x32b1: 0x000c, 0x32b2: 0x000c, 0x32b3: 0x000c, 0x32b4: 0x000c,
+ // Block 0xcb, offset 0x32c0
+ 0x32f0: 0x000c, 0x32f1: 0x000c, 0x32f2: 0x000c, 0x32f3: 0x000c, 0x32f4: 0x000c, 0x32f5: 0x000c,
+ 0x32f6: 0x000c,
+ // Block 0xcc, offset 0x3300
+ 0x330f: 0x000c,
+ // Block 0xcd, offset 0x3340
+ 0x334f: 0x000c, 0x3350: 0x000c, 0x3351: 0x000c,
+ 0x3352: 0x000c,
+ // Block 0xce, offset 0x3380
+ 0x33a2: 0x000a,
+ 0x33a4: 0x000c,
+ // Block 0xcf, offset 0x33c0
+ 0x33dd: 0x000c,
+ 0x33de: 0x000c, 0x33e0: 0x000b, 0x33e1: 0x000b, 0x33e2: 0x000b, 0x33e3: 0x000b,
+ // Block 0xd0, offset 0x3400
+ 0x3427: 0x000c, 0x3428: 0x000c, 0x3429: 0x000c,
+ 0x3433: 0x000b, 0x3434: 0x000b, 0x3435: 0x000b,
+ 0x3436: 0x000b, 0x3437: 0x000b, 0x3438: 0x000b, 0x3439: 0x000b, 0x343a: 0x000b, 0x343b: 0x000c,
+ 0x343c: 0x000c, 0x343d: 0x000c, 0x343e: 0x000c, 0x343f: 0x000c,
+ // Block 0xd1, offset 0x3440
+ 0x3440: 0x000c, 0x3441: 0x000c, 0x3442: 0x000c, 0x3445: 0x000c,
+ 0x3446: 0x000c, 0x3447: 0x000c, 0x3448: 0x000c, 0x3449: 0x000c, 0x344a: 0x000c, 0x344b: 0x000c,
+ 0x346a: 0x000c, 0x346b: 0x000c, 0x346c: 0x000c, 0x346d: 0x000c,
+ // Block 0xd2, offset 0x3480
+ 0x3480: 0x000a, 0x3481: 0x000a, 0x3482: 0x000c, 0x3483: 0x000c, 0x3484: 0x000c, 0x3485: 0x000a,
+ // Block 0xd3, offset 0x34c0
+ 0x34c0: 0x000a, 0x34c1: 0x000a, 0x34c2: 0x000a, 0x34c3: 0x000a, 0x34c4: 0x000a, 0x34c5: 0x000a,
+ 0x34c6: 0x000a, 0x34c7: 0x000a, 0x34c8: 0x000a, 0x34c9: 0x000a, 0x34ca: 0x000a, 0x34cb: 0x000a,
+ 0x34cc: 0x000a, 0x34cd: 0x000a, 0x34ce: 0x000a, 0x34cf: 0x000a, 0x34d0: 0x000a, 0x34d1: 0x000a,
+ 0x34d2: 0x000a, 0x34d3: 0x000a, 0x34d4: 0x000a, 0x34d5: 0x000a, 0x34d6: 0x000a,
+ // Block 0xd4, offset 0x3500
+ 0x351b: 0x000a,
+ // Block 0xd5, offset 0x3540
+ 0x3555: 0x000a,
+ // Block 0xd6, offset 0x3580
+ 0x358f: 0x000a,
+ // Block 0xd7, offset 0x35c0
+ 0x35c9: 0x000a,
+ // Block 0xd8, offset 0x3600
+ 0x3603: 0x000a,
+ 0x360e: 0x0002, 0x360f: 0x0002, 0x3610: 0x0002, 0x3611: 0x0002,
+ 0x3612: 0x0002, 0x3613: 0x0002, 0x3614: 0x0002, 0x3615: 0x0002, 0x3616: 0x0002, 0x3617: 0x0002,
+ 0x3618: 0x0002, 0x3619: 0x0002, 0x361a: 0x0002, 0x361b: 0x0002, 0x361c: 0x0002, 0x361d: 0x0002,
+ 0x361e: 0x0002, 0x361f: 0x0002, 0x3620: 0x0002, 0x3621: 0x0002, 0x3622: 0x0002, 0x3623: 0x0002,
+ 0x3624: 0x0002, 0x3625: 0x0002, 0x3626: 0x0002, 0x3627: 0x0002, 0x3628: 0x0002, 0x3629: 0x0002,
+ 0x362a: 0x0002, 0x362b: 0x0002, 0x362c: 0x0002, 0x362d: 0x0002, 0x362e: 0x0002, 0x362f: 0x0002,
+ 0x3630: 0x0002, 0x3631: 0x0002, 0x3632: 0x0002, 0x3633: 0x0002, 0x3634: 0x0002, 0x3635: 0x0002,
+ 0x3636: 0x0002, 0x3637: 0x0002, 0x3638: 0x0002, 0x3639: 0x0002, 0x363a: 0x0002, 0x363b: 0x0002,
+ 0x363c: 0x0002, 0x363d: 0x0002, 0x363e: 0x0002, 0x363f: 0x0002,
+ // Block 0xd9, offset 0x3640
+ 0x3640: 0x000c, 0x3641: 0x000c, 0x3642: 0x000c, 0x3643: 0x000c, 0x3644: 0x000c, 0x3645: 0x000c,
+ 0x3646: 0x000c, 0x3647: 0x000c, 0x3648: 0x000c, 0x3649: 0x000c, 0x364a: 0x000c, 0x364b: 0x000c,
+ 0x364c: 0x000c, 0x364d: 0x000c, 0x364e: 0x000c, 0x364f: 0x000c, 0x3650: 0x000c, 0x3651: 0x000c,
+ 0x3652: 0x000c, 0x3653: 0x000c, 0x3654: 0x000c, 0x3655: 0x000c, 0x3656: 0x000c, 0x3657: 0x000c,
+ 0x3658: 0x000c, 0x3659: 0x000c, 0x365a: 0x000c, 0x365b: 0x000c, 0x365c: 0x000c, 0x365d: 0x000c,
+ 0x365e: 0x000c, 0x365f: 0x000c, 0x3660: 0x000c, 0x3661: 0x000c, 0x3662: 0x000c, 0x3663: 0x000c,
+ 0x3664: 0x000c, 0x3665: 0x000c, 0x3666: 0x000c, 0x3667: 0x000c, 0x3668: 0x000c, 0x3669: 0x000c,
+ 0x366a: 0x000c, 0x366b: 0x000c, 0x366c: 0x000c, 0x366d: 0x000c, 0x366e: 0x000c, 0x366f: 0x000c,
+ 0x3670: 0x000c, 0x3671: 0x000c, 0x3672: 0x000c, 0x3673: 0x000c, 0x3674: 0x000c, 0x3675: 0x000c,
+ 0x3676: 0x000c, 0x367b: 0x000c,
+ 0x367c: 0x000c, 0x367d: 0x000c, 0x367e: 0x000c, 0x367f: 0x000c,
+ // Block 0xda, offset 0x3680
+ 0x3680: 0x000c, 0x3681: 0x000c, 0x3682: 0x000c, 0x3683: 0x000c, 0x3684: 0x000c, 0x3685: 0x000c,
+ 0x3686: 0x000c, 0x3687: 0x000c, 0x3688: 0x000c, 0x3689: 0x000c, 0x368a: 0x000c, 0x368b: 0x000c,
+ 0x368c: 0x000c, 0x368d: 0x000c, 0x368e: 0x000c, 0x368f: 0x000c, 0x3690: 0x000c, 0x3691: 0x000c,
+ 0x3692: 0x000c, 0x3693: 0x000c, 0x3694: 0x000c, 0x3695: 0x000c, 0x3696: 0x000c, 0x3697: 0x000c,
+ 0x3698: 0x000c, 0x3699: 0x000c, 0x369a: 0x000c, 0x369b: 0x000c, 0x369c: 0x000c, 0x369d: 0x000c,
+ 0x369e: 0x000c, 0x369f: 0x000c, 0x36a0: 0x000c, 0x36a1: 0x000c, 0x36a2: 0x000c, 0x36a3: 0x000c,
+ 0x36a4: 0x000c, 0x36a5: 0x000c, 0x36a6: 0x000c, 0x36a7: 0x000c, 0x36a8: 0x000c, 0x36a9: 0x000c,
+ 0x36aa: 0x000c, 0x36ab: 0x000c, 0x36ac: 0x000c,
+ 0x36b5: 0x000c,
+ // Block 0xdb, offset 0x36c0
+ 0x36c4: 0x000c,
+ 0x36db: 0x000c, 0x36dc: 0x000c, 0x36dd: 0x000c,
+ 0x36de: 0x000c, 0x36df: 0x000c, 0x36e1: 0x000c, 0x36e2: 0x000c, 0x36e3: 0x000c,
+ 0x36e4: 0x000c, 0x36e5: 0x000c, 0x36e6: 0x000c, 0x36e7: 0x000c, 0x36e8: 0x000c, 0x36e9: 0x000c,
+ 0x36ea: 0x000c, 0x36eb: 0x000c, 0x36ec: 0x000c, 0x36ed: 0x000c, 0x36ee: 0x000c, 0x36ef: 0x000c,
+ // Block 0xdc, offset 0x3700
+ 0x3700: 0x000c, 0x3701: 0x000c, 0x3702: 0x000c, 0x3703: 0x000c, 0x3704: 0x000c, 0x3705: 0x000c,
+ 0x3706: 0x000c, 0x3708: 0x000c, 0x3709: 0x000c, 0x370a: 0x000c, 0x370b: 0x000c,
+ 0x370c: 0x000c, 0x370d: 0x000c, 0x370e: 0x000c, 0x370f: 0x000c, 0x3710: 0x000c, 0x3711: 0x000c,
+ 0x3712: 0x000c, 0x3713: 0x000c, 0x3714: 0x000c, 0x3715: 0x000c, 0x3716: 0x000c, 0x3717: 0x000c,
+ 0x3718: 0x000c, 0x371b: 0x000c, 0x371c: 0x000c, 0x371d: 0x000c,
+ 0x371e: 0x000c, 0x371f: 0x000c, 0x3720: 0x000c, 0x3721: 0x000c, 0x3723: 0x000c,
+ 0x3724: 0x000c, 0x3726: 0x000c, 0x3727: 0x000c, 0x3728: 0x000c, 0x3729: 0x000c,
+ 0x372a: 0x000c,
+ // Block 0xdd, offset 0x3740
+ 0x376c: 0x000c, 0x376d: 0x000c, 0x376e: 0x000c, 0x376f: 0x000c,
+ 0x377f: 0x0004,
+ // Block 0xde, offset 0x3780
+ 0x3780: 0x0001, 0x3781: 0x0001, 0x3782: 0x0001, 0x3783: 0x0001, 0x3784: 0x0001, 0x3785: 0x0001,
+ 0x3786: 0x0001, 0x3787: 0x0001, 0x3788: 0x0001, 0x3789: 0x0001, 0x378a: 0x0001, 0x378b: 0x0001,
+ 0x378c: 0x0001, 0x378d: 0x0001, 0x378e: 0x0001, 0x378f: 0x0001, 0x3790: 0x000c, 0x3791: 0x000c,
+ 0x3792: 0x000c, 0x3793: 0x000c, 0x3794: 0x000c, 0x3795: 0x000c, 0x3796: 0x000c, 0x3797: 0x0001,
+ 0x3798: 0x0001, 0x3799: 0x0001, 0x379a: 0x0001, 0x379b: 0x0001, 0x379c: 0x0001, 0x379d: 0x0001,
+ 0x379e: 0x0001, 0x379f: 0x0001, 0x37a0: 0x0001, 0x37a1: 0x0001, 0x37a2: 0x0001, 0x37a3: 0x0001,
+ 0x37a4: 0x0001, 0x37a5: 0x0001, 0x37a6: 0x0001, 0x37a7: 0x0001, 0x37a8: 0x0001, 0x37a9: 0x0001,
+ 0x37aa: 0x0001, 0x37ab: 0x0001, 0x37ac: 0x0001, 0x37ad: 0x0001, 0x37ae: 0x0001, 0x37af: 0x0001,
+ 0x37b0: 0x0001, 0x37b1: 0x0001, 0x37b2: 0x0001, 0x37b3: 0x0001, 0x37b4: 0x0001, 0x37b5: 0x0001,
+ 0x37b6: 0x0001, 0x37b7: 0x0001, 0x37b8: 0x0001, 0x37b9: 0x0001, 0x37ba: 0x0001, 0x37bb: 0x0001,
+ 0x37bc: 0x0001, 0x37bd: 0x0001, 0x37be: 0x0001, 0x37bf: 0x0001,
+ // Block 0xdf, offset 0x37c0
+ 0x37c0: 0x0001, 0x37c1: 0x0001, 0x37c2: 0x0001, 0x37c3: 0x0001, 0x37c4: 0x000c, 0x37c5: 0x000c,
+ 0x37c6: 0x000c, 0x37c7: 0x000c, 0x37c8: 0x000c, 0x37c9: 0x000c, 0x37ca: 0x000c, 0x37cb: 0x0001,
+ 0x37cc: 0x0001, 0x37cd: 0x0001, 0x37ce: 0x0001, 0x37cf: 0x0001, 0x37d0: 0x0001, 0x37d1: 0x0001,
+ 0x37d2: 0x0001, 0x37d3: 0x0001, 0x37d4: 0x0001, 0x37d5: 0x0001, 0x37d6: 0x0001, 0x37d7: 0x0001,
+ 0x37d8: 0x0001, 0x37d9: 0x0001, 0x37da: 0x0001, 0x37db: 0x0001, 0x37dc: 0x0001, 0x37dd: 0x0001,
+ 0x37de: 0x0001, 0x37df: 0x0001, 0x37e0: 0x0001, 0x37e1: 0x0001, 0x37e2: 0x0001, 0x37e3: 0x0001,
+ 0x37e4: 0x0001, 0x37e5: 0x0001, 0x37e6: 0x0001, 0x37e7: 0x0001, 0x37e8: 0x0001, 0x37e9: 0x0001,
+ 0x37ea: 0x0001, 0x37eb: 0x0001, 0x37ec: 0x0001, 0x37ed: 0x0001, 0x37ee: 0x0001, 0x37ef: 0x0001,
+ 0x37f0: 0x0001, 0x37f1: 0x0001, 0x37f2: 0x0001, 0x37f3: 0x0001, 0x37f4: 0x0001, 0x37f5: 0x0001,
+ 0x37f6: 0x0001, 0x37f7: 0x0001, 0x37f8: 0x0001, 0x37f9: 0x0001, 0x37fa: 0x0001, 0x37fb: 0x0001,
+ 0x37fc: 0x0001, 0x37fd: 0x0001, 0x37fe: 0x0001, 0x37ff: 0x0001,
+ // Block 0xe0, offset 0x3800
+ 0x3800: 0x000d, 0x3801: 0x000d, 0x3802: 0x000d, 0x3803: 0x000d, 0x3804: 0x000d, 0x3805: 0x000d,
+ 0x3806: 0x000d, 0x3807: 0x000d, 0x3808: 0x000d, 0x3809: 0x000d, 0x380a: 0x000d, 0x380b: 0x000d,
+ 0x380c: 0x000d, 0x380d: 0x000d, 0x380e: 0x000d, 0x380f: 0x000d, 0x3810: 0x0001, 0x3811: 0x0001,
+ 0x3812: 0x0001, 0x3813: 0x0001, 0x3814: 0x0001, 0x3815: 0x0001, 0x3816: 0x0001, 0x3817: 0x0001,
+ 0x3818: 0x0001, 0x3819: 0x0001, 0x381a: 0x0001, 0x381b: 0x0001, 0x381c: 0x0001, 0x381d: 0x0001,
+ 0x381e: 0x0001, 0x381f: 0x0001, 0x3820: 0x0001, 0x3821: 0x0001, 0x3822: 0x0001, 0x3823: 0x0001,
+ 0x3824: 0x0001, 0x3825: 0x0001, 0x3826: 0x0001, 0x3827: 0x0001, 0x3828: 0x0001, 0x3829: 0x0001,
+ 0x382a: 0x0001, 0x382b: 0x0001, 0x382c: 0x0001, 0x382d: 0x0001, 0x382e: 0x0001, 0x382f: 0x0001,
+ 0x3830: 0x0001, 0x3831: 0x0001, 0x3832: 0x0001, 0x3833: 0x0001, 0x3834: 0x0001, 0x3835: 0x0001,
+ 0x3836: 0x0001, 0x3837: 0x0001, 0x3838: 0x0001, 0x3839: 0x0001, 0x383a: 0x0001, 0x383b: 0x0001,
+ 0x383c: 0x0001, 0x383d: 0x0001, 0x383e: 0x0001, 0x383f: 0x0001,
+ // Block 0xe1, offset 0x3840
+ 0x3840: 0x000d, 0x3841: 0x000d, 0x3842: 0x000d, 0x3843: 0x000d, 0x3844: 0x000d, 0x3845: 0x000d,
+ 0x3846: 0x000d, 0x3847: 0x000d, 0x3848: 0x000d, 0x3849: 0x000d, 0x384a: 0x000d, 0x384b: 0x000d,
+ 0x384c: 0x000d, 0x384d: 0x000d, 0x384e: 0x000d, 0x384f: 0x000d, 0x3850: 0x000d, 0x3851: 0x000d,
+ 0x3852: 0x000d, 0x3853: 0x000d, 0x3854: 0x000d, 0x3855: 0x000d, 0x3856: 0x000d, 0x3857: 0x000d,
+ 0x3858: 0x000d, 0x3859: 0x000d, 0x385a: 0x000d, 0x385b: 0x000d, 0x385c: 0x000d, 0x385d: 0x000d,
+ 0x385e: 0x000d, 0x385f: 0x000d, 0x3860: 0x000d, 0x3861: 0x000d, 0x3862: 0x000d, 0x3863: 0x000d,
+ 0x3864: 0x000d, 0x3865: 0x000d, 0x3866: 0x000d, 0x3867: 0x000d, 0x3868: 0x000d, 0x3869: 0x000d,
+ 0x386a: 0x000d, 0x386b: 0x000d, 0x386c: 0x000d, 0x386d: 0x000d, 0x386e: 0x000d, 0x386f: 0x000d,
+ 0x3870: 0x000a, 0x3871: 0x000a, 0x3872: 0x000d, 0x3873: 0x000d, 0x3874: 0x000d, 0x3875: 0x000d,
+ 0x3876: 0x000d, 0x3877: 0x000d, 0x3878: 0x000d, 0x3879: 0x000d, 0x387a: 0x000d, 0x387b: 0x000d,
+ 0x387c: 0x000d, 0x387d: 0x000d, 0x387e: 0x000d, 0x387f: 0x000d,
+ // Block 0xe2, offset 0x3880
+ 0x3880: 0x000a, 0x3881: 0x000a, 0x3882: 0x000a, 0x3883: 0x000a, 0x3884: 0x000a, 0x3885: 0x000a,
+ 0x3886: 0x000a, 0x3887: 0x000a, 0x3888: 0x000a, 0x3889: 0x000a, 0x388a: 0x000a, 0x388b: 0x000a,
+ 0x388c: 0x000a, 0x388d: 0x000a, 0x388e: 0x000a, 0x388f: 0x000a, 0x3890: 0x000a, 0x3891: 0x000a,
+ 0x3892: 0x000a, 0x3893: 0x000a, 0x3894: 0x000a, 0x3895: 0x000a, 0x3896: 0x000a, 0x3897: 0x000a,
+ 0x3898: 0x000a, 0x3899: 0x000a, 0x389a: 0x000a, 0x389b: 0x000a, 0x389c: 0x000a, 0x389d: 0x000a,
+ 0x389e: 0x000a, 0x389f: 0x000a, 0x38a0: 0x000a, 0x38a1: 0x000a, 0x38a2: 0x000a, 0x38a3: 0x000a,
+ 0x38a4: 0x000a, 0x38a5: 0x000a, 0x38a6: 0x000a, 0x38a7: 0x000a, 0x38a8: 0x000a, 0x38a9: 0x000a,
+ 0x38aa: 0x000a, 0x38ab: 0x000a,
+ 0x38b0: 0x000a, 0x38b1: 0x000a, 0x38b2: 0x000a, 0x38b3: 0x000a, 0x38b4: 0x000a, 0x38b5: 0x000a,
+ 0x38b6: 0x000a, 0x38b7: 0x000a, 0x38b8: 0x000a, 0x38b9: 0x000a, 0x38ba: 0x000a, 0x38bb: 0x000a,
+ 0x38bc: 0x000a, 0x38bd: 0x000a, 0x38be: 0x000a, 0x38bf: 0x000a,
+ // Block 0xe3, offset 0x38c0
+ 0x38c0: 0x000a, 0x38c1: 0x000a, 0x38c2: 0x000a, 0x38c3: 0x000a, 0x38c4: 0x000a, 0x38c5: 0x000a,
+ 0x38c6: 0x000a, 0x38c7: 0x000a, 0x38c8: 0x000a, 0x38c9: 0x000a, 0x38ca: 0x000a, 0x38cb: 0x000a,
+ 0x38cc: 0x000a, 0x38cd: 0x000a, 0x38ce: 0x000a, 0x38cf: 0x000a, 0x38d0: 0x000a, 0x38d1: 0x000a,
+ 0x38d2: 0x000a, 0x38d3: 0x000a,
+ 0x38e0: 0x000a, 0x38e1: 0x000a, 0x38e2: 0x000a, 0x38e3: 0x000a,
+ 0x38e4: 0x000a, 0x38e5: 0x000a, 0x38e6: 0x000a, 0x38e7: 0x000a, 0x38e8: 0x000a, 0x38e9: 0x000a,
+ 0x38ea: 0x000a, 0x38eb: 0x000a, 0x38ec: 0x000a, 0x38ed: 0x000a, 0x38ee: 0x000a,
+ 0x38f1: 0x000a, 0x38f2: 0x000a, 0x38f3: 0x000a, 0x38f4: 0x000a, 0x38f5: 0x000a,
+ 0x38f6: 0x000a, 0x38f7: 0x000a, 0x38f8: 0x000a, 0x38f9: 0x000a, 0x38fa: 0x000a, 0x38fb: 0x000a,
+ 0x38fc: 0x000a, 0x38fd: 0x000a, 0x38fe: 0x000a, 0x38ff: 0x000a,
+ // Block 0xe4, offset 0x3900
+ 0x3901: 0x000a, 0x3902: 0x000a, 0x3903: 0x000a, 0x3904: 0x000a, 0x3905: 0x000a,
+ 0x3906: 0x000a, 0x3907: 0x000a, 0x3908: 0x000a, 0x3909: 0x000a, 0x390a: 0x000a, 0x390b: 0x000a,
+ 0x390c: 0x000a, 0x390d: 0x000a, 0x390e: 0x000a, 0x390f: 0x000a, 0x3911: 0x000a,
+ 0x3912: 0x000a, 0x3913: 0x000a, 0x3914: 0x000a, 0x3915: 0x000a, 0x3916: 0x000a, 0x3917: 0x000a,
+ 0x3918: 0x000a, 0x3919: 0x000a, 0x391a: 0x000a, 0x391b: 0x000a, 0x391c: 0x000a, 0x391d: 0x000a,
+ 0x391e: 0x000a, 0x391f: 0x000a, 0x3920: 0x000a, 0x3921: 0x000a, 0x3922: 0x000a, 0x3923: 0x000a,
+ 0x3924: 0x000a, 0x3925: 0x000a, 0x3926: 0x000a, 0x3927: 0x000a, 0x3928: 0x000a, 0x3929: 0x000a,
+ 0x392a: 0x000a, 0x392b: 0x000a, 0x392c: 0x000a, 0x392d: 0x000a, 0x392e: 0x000a, 0x392f: 0x000a,
+ 0x3930: 0x000a, 0x3931: 0x000a, 0x3932: 0x000a, 0x3933: 0x000a, 0x3934: 0x000a, 0x3935: 0x000a,
+ // Block 0xe5, offset 0x3940
+ 0x3940: 0x0002, 0x3941: 0x0002, 0x3942: 0x0002, 0x3943: 0x0002, 0x3944: 0x0002, 0x3945: 0x0002,
+ 0x3946: 0x0002, 0x3947: 0x0002, 0x3948: 0x0002, 0x3949: 0x0002, 0x394a: 0x0002, 0x394b: 0x000a,
+ 0x394c: 0x000a, 0x394d: 0x000a, 0x394e: 0x000a, 0x394f: 0x000a,
+ 0x396f: 0x000a,
+ // Block 0xe6, offset 0x3980
+ 0x39aa: 0x000a, 0x39ab: 0x000a, 0x39ac: 0x000a, 0x39ad: 0x000a, 0x39ae: 0x000a, 0x39af: 0x000a,
+ // Block 0xe7, offset 0x39c0
+ 0x39ed: 0x000a,
+ // Block 0xe8, offset 0x3a00
+ 0x3a20: 0x000a, 0x3a21: 0x000a, 0x3a22: 0x000a, 0x3a23: 0x000a,
+ 0x3a24: 0x000a, 0x3a25: 0x000a,
+ // Block 0xe9, offset 0x3a40
+ 0x3a40: 0x000a, 0x3a41: 0x000a, 0x3a42: 0x000a, 0x3a43: 0x000a, 0x3a44: 0x000a, 0x3a45: 0x000a,
+ 0x3a46: 0x000a, 0x3a47: 0x000a, 0x3a48: 0x000a, 0x3a49: 0x000a, 0x3a4a: 0x000a, 0x3a4b: 0x000a,
+ 0x3a4c: 0x000a, 0x3a4d: 0x000a, 0x3a4e: 0x000a, 0x3a4f: 0x000a, 0x3a50: 0x000a, 0x3a51: 0x000a,
+ 0x3a52: 0x000a, 0x3a53: 0x000a, 0x3a54: 0x000a, 0x3a55: 0x000a, 0x3a56: 0x000a, 0x3a57: 0x000a,
+ 0x3a60: 0x000a, 0x3a61: 0x000a, 0x3a62: 0x000a, 0x3a63: 0x000a,
+ 0x3a64: 0x000a, 0x3a65: 0x000a, 0x3a66: 0x000a, 0x3a67: 0x000a, 0x3a68: 0x000a, 0x3a69: 0x000a,
+ 0x3a6a: 0x000a, 0x3a6b: 0x000a, 0x3a6c: 0x000a,
+ 0x3a70: 0x000a, 0x3a71: 0x000a, 0x3a72: 0x000a, 0x3a73: 0x000a, 0x3a74: 0x000a, 0x3a75: 0x000a,
+ 0x3a76: 0x000a, 0x3a77: 0x000a, 0x3a78: 0x000a, 0x3a79: 0x000a, 0x3a7a: 0x000a, 0x3a7b: 0x000a,
+ 0x3a7c: 0x000a,
+ // Block 0xea, offset 0x3a80
+ 0x3a80: 0x000a, 0x3a81: 0x000a, 0x3a82: 0x000a, 0x3a83: 0x000a, 0x3a84: 0x000a, 0x3a85: 0x000a,
+ 0x3a86: 0x000a, 0x3a87: 0x000a, 0x3a88: 0x000a, 0x3a89: 0x000a, 0x3a8a: 0x000a, 0x3a8b: 0x000a,
+ 0x3a8c: 0x000a, 0x3a8d: 0x000a, 0x3a8e: 0x000a, 0x3a8f: 0x000a, 0x3a90: 0x000a, 0x3a91: 0x000a,
+ 0x3a92: 0x000a, 0x3a93: 0x000a, 0x3a94: 0x000a, 0x3a95: 0x000a, 0x3a96: 0x000a, 0x3a97: 0x000a,
+ 0x3a98: 0x000a,
+ 0x3aa0: 0x000a, 0x3aa1: 0x000a, 0x3aa2: 0x000a, 0x3aa3: 0x000a,
+ 0x3aa4: 0x000a, 0x3aa5: 0x000a, 0x3aa6: 0x000a, 0x3aa7: 0x000a, 0x3aa8: 0x000a, 0x3aa9: 0x000a,
+ 0x3aaa: 0x000a, 0x3aab: 0x000a,
+ // Block 0xeb, offset 0x3ac0
+ 0x3ac0: 0x000a, 0x3ac1: 0x000a, 0x3ac2: 0x000a, 0x3ac3: 0x000a, 0x3ac4: 0x000a, 0x3ac5: 0x000a,
+ 0x3ac6: 0x000a, 0x3ac7: 0x000a, 0x3ac8: 0x000a, 0x3ac9: 0x000a, 0x3aca: 0x000a, 0x3acb: 0x000a,
+ 0x3ad0: 0x000a, 0x3ad1: 0x000a,
+ 0x3ad2: 0x000a, 0x3ad3: 0x000a, 0x3ad4: 0x000a, 0x3ad5: 0x000a, 0x3ad6: 0x000a, 0x3ad7: 0x000a,
+ 0x3ad8: 0x000a, 0x3ad9: 0x000a, 0x3ada: 0x000a, 0x3adb: 0x000a, 0x3adc: 0x000a, 0x3add: 0x000a,
+ 0x3ade: 0x000a, 0x3adf: 0x000a, 0x3ae0: 0x000a, 0x3ae1: 0x000a, 0x3ae2: 0x000a, 0x3ae3: 0x000a,
+ 0x3ae4: 0x000a, 0x3ae5: 0x000a, 0x3ae6: 0x000a, 0x3ae7: 0x000a, 0x3ae8: 0x000a, 0x3ae9: 0x000a,
+ 0x3aea: 0x000a, 0x3aeb: 0x000a, 0x3aec: 0x000a, 0x3aed: 0x000a, 0x3aee: 0x000a, 0x3aef: 0x000a,
+ 0x3af0: 0x000a, 0x3af1: 0x000a, 0x3af2: 0x000a, 0x3af3: 0x000a, 0x3af4: 0x000a, 0x3af5: 0x000a,
+ 0x3af6: 0x000a, 0x3af7: 0x000a, 0x3af8: 0x000a, 0x3af9: 0x000a, 0x3afa: 0x000a, 0x3afb: 0x000a,
+ 0x3afc: 0x000a, 0x3afd: 0x000a, 0x3afe: 0x000a, 0x3aff: 0x000a,
+ // Block 0xec, offset 0x3b00
+ 0x3b00: 0x000a, 0x3b01: 0x000a, 0x3b02: 0x000a, 0x3b03: 0x000a, 0x3b04: 0x000a, 0x3b05: 0x000a,
+ 0x3b06: 0x000a, 0x3b07: 0x000a,
+ 0x3b10: 0x000a, 0x3b11: 0x000a,
+ 0x3b12: 0x000a, 0x3b13: 0x000a, 0x3b14: 0x000a, 0x3b15: 0x000a, 0x3b16: 0x000a, 0x3b17: 0x000a,
+ 0x3b18: 0x000a, 0x3b19: 0x000a,
+ 0x3b20: 0x000a, 0x3b21: 0x000a, 0x3b22: 0x000a, 0x3b23: 0x000a,
+ 0x3b24: 0x000a, 0x3b25: 0x000a, 0x3b26: 0x000a, 0x3b27: 0x000a, 0x3b28: 0x000a, 0x3b29: 0x000a,
+ 0x3b2a: 0x000a, 0x3b2b: 0x000a, 0x3b2c: 0x000a, 0x3b2d: 0x000a, 0x3b2e: 0x000a, 0x3b2f: 0x000a,
+ 0x3b30: 0x000a, 0x3b31: 0x000a, 0x3b32: 0x000a, 0x3b33: 0x000a, 0x3b34: 0x000a, 0x3b35: 0x000a,
+ 0x3b36: 0x000a, 0x3b37: 0x000a, 0x3b38: 0x000a, 0x3b39: 0x000a, 0x3b3a: 0x000a, 0x3b3b: 0x000a,
+ 0x3b3c: 0x000a, 0x3b3d: 0x000a, 0x3b3e: 0x000a, 0x3b3f: 0x000a,
+ // Block 0xed, offset 0x3b40
+ 0x3b40: 0x000a, 0x3b41: 0x000a, 0x3b42: 0x000a, 0x3b43: 0x000a, 0x3b44: 0x000a, 0x3b45: 0x000a,
+ 0x3b46: 0x000a, 0x3b47: 0x000a,
+ 0x3b50: 0x000a, 0x3b51: 0x000a,
+ 0x3b52: 0x000a, 0x3b53: 0x000a, 0x3b54: 0x000a, 0x3b55: 0x000a, 0x3b56: 0x000a, 0x3b57: 0x000a,
+ 0x3b58: 0x000a, 0x3b59: 0x000a, 0x3b5a: 0x000a, 0x3b5b: 0x000a, 0x3b5c: 0x000a, 0x3b5d: 0x000a,
+ 0x3b5e: 0x000a, 0x3b5f: 0x000a, 0x3b60: 0x000a, 0x3b61: 0x000a, 0x3b62: 0x000a, 0x3b63: 0x000a,
+ 0x3b64: 0x000a, 0x3b65: 0x000a, 0x3b66: 0x000a, 0x3b67: 0x000a, 0x3b68: 0x000a, 0x3b69: 0x000a,
+ 0x3b6a: 0x000a, 0x3b6b: 0x000a, 0x3b6c: 0x000a, 0x3b6d: 0x000a,
+ 0x3b70: 0x000a, 0x3b71: 0x000a,
+ // Block 0xee, offset 0x3b80
+ 0x3b80: 0x000a, 0x3b81: 0x000a, 0x3b82: 0x000a, 0x3b83: 0x000a, 0x3b84: 0x000a, 0x3b85: 0x000a,
+ 0x3b86: 0x000a, 0x3b87: 0x000a, 0x3b88: 0x000a, 0x3b89: 0x000a, 0x3b8a: 0x000a, 0x3b8b: 0x000a,
+ 0x3b8c: 0x000a, 0x3b8d: 0x000a, 0x3b8e: 0x000a, 0x3b8f: 0x000a, 0x3b90: 0x000a, 0x3b91: 0x000a,
+ 0x3b92: 0x000a, 0x3b93: 0x000a, 0x3b94: 0x000a, 0x3b95: 0x000a, 0x3b96: 0x000a, 0x3b97: 0x000a,
+ 0x3b98: 0x000a, 0x3b99: 0x000a, 0x3b9a: 0x000a, 0x3b9b: 0x000a, 0x3b9c: 0x000a, 0x3b9d: 0x000a,
+ 0x3b9e: 0x000a, 0x3b9f: 0x000a, 0x3ba0: 0x000a, 0x3ba1: 0x000a, 0x3ba2: 0x000a, 0x3ba3: 0x000a,
+ 0x3ba4: 0x000a, 0x3ba5: 0x000a, 0x3ba6: 0x000a, 0x3ba7: 0x000a, 0x3ba8: 0x000a, 0x3ba9: 0x000a,
+ 0x3baa: 0x000a, 0x3bab: 0x000a, 0x3bac: 0x000a, 0x3bad: 0x000a, 0x3bae: 0x000a, 0x3baf: 0x000a,
+ 0x3bb0: 0x000a, 0x3bb1: 0x000a, 0x3bb2: 0x000a, 0x3bb3: 0x000a, 0x3bb4: 0x000a, 0x3bb5: 0x000a,
+ 0x3bb6: 0x000a, 0x3bb7: 0x000a, 0x3bb8: 0x000a, 0x3bba: 0x000a, 0x3bbb: 0x000a,
+ 0x3bbc: 0x000a, 0x3bbd: 0x000a, 0x3bbe: 0x000a, 0x3bbf: 0x000a,
+ // Block 0xef, offset 0x3bc0
+ 0x3bc0: 0x000a, 0x3bc1: 0x000a, 0x3bc2: 0x000a, 0x3bc3: 0x000a, 0x3bc4: 0x000a, 0x3bc5: 0x000a,
+ 0x3bc6: 0x000a, 0x3bc7: 0x000a, 0x3bc8: 0x000a, 0x3bc9: 0x000a, 0x3bca: 0x000a, 0x3bcb: 0x000a,
+ 0x3bcd: 0x000a, 0x3bce: 0x000a, 0x3bcf: 0x000a, 0x3bd0: 0x000a, 0x3bd1: 0x000a,
+ 0x3bd2: 0x000a, 0x3bd3: 0x000a, 0x3bd4: 0x000a, 0x3bd5: 0x000a, 0x3bd6: 0x000a, 0x3bd7: 0x000a,
+ 0x3bd8: 0x000a, 0x3bd9: 0x000a, 0x3bda: 0x000a, 0x3bdb: 0x000a, 0x3bdc: 0x000a, 0x3bdd: 0x000a,
+ 0x3bde: 0x000a, 0x3bdf: 0x000a, 0x3be0: 0x000a, 0x3be1: 0x000a, 0x3be2: 0x000a, 0x3be3: 0x000a,
+ 0x3be4: 0x000a, 0x3be5: 0x000a, 0x3be6: 0x000a, 0x3be7: 0x000a, 0x3be8: 0x000a, 0x3be9: 0x000a,
+ 0x3bea: 0x000a, 0x3beb: 0x000a, 0x3bec: 0x000a, 0x3bed: 0x000a, 0x3bee: 0x000a, 0x3bef: 0x000a,
+ 0x3bf0: 0x000a, 0x3bf1: 0x000a, 0x3bf2: 0x000a, 0x3bf3: 0x000a, 0x3bf4: 0x000a, 0x3bf5: 0x000a,
+ 0x3bf6: 0x000a, 0x3bf7: 0x000a, 0x3bf8: 0x000a, 0x3bf9: 0x000a, 0x3bfa: 0x000a, 0x3bfb: 0x000a,
+ 0x3bfc: 0x000a, 0x3bfd: 0x000a, 0x3bfe: 0x000a, 0x3bff: 0x000a,
+ // Block 0xf0, offset 0x3c00
+ 0x3c00: 0x000a, 0x3c01: 0x000a, 0x3c02: 0x000a, 0x3c03: 0x000a, 0x3c04: 0x000a, 0x3c05: 0x000a,
+ 0x3c06: 0x000a, 0x3c07: 0x000a, 0x3c08: 0x000a, 0x3c09: 0x000a, 0x3c0a: 0x000a, 0x3c0b: 0x000a,
+ 0x3c0c: 0x000a, 0x3c0d: 0x000a, 0x3c0e: 0x000a, 0x3c0f: 0x000a, 0x3c10: 0x000a, 0x3c11: 0x000a,
+ 0x3c12: 0x000a, 0x3c13: 0x000a,
+ 0x3c20: 0x000a, 0x3c21: 0x000a, 0x3c22: 0x000a, 0x3c23: 0x000a,
+ 0x3c24: 0x000a, 0x3c25: 0x000a, 0x3c26: 0x000a, 0x3c27: 0x000a, 0x3c28: 0x000a, 0x3c29: 0x000a,
+ 0x3c2a: 0x000a, 0x3c2b: 0x000a, 0x3c2c: 0x000a, 0x3c2d: 0x000a,
+ 0x3c30: 0x000a, 0x3c31: 0x000a, 0x3c32: 0x000a, 0x3c33: 0x000a, 0x3c34: 0x000a,
+ 0x3c38: 0x000a, 0x3c39: 0x000a, 0x3c3a: 0x000a,
+ // Block 0xf1, offset 0x3c40
+ 0x3c40: 0x000a, 0x3c41: 0x000a, 0x3c42: 0x000a, 0x3c43: 0x000a, 0x3c44: 0x000a, 0x3c45: 0x000a,
+ 0x3c46: 0x000a,
+ 0x3c50: 0x000a, 0x3c51: 0x000a,
+ 0x3c52: 0x000a, 0x3c53: 0x000a, 0x3c54: 0x000a, 0x3c55: 0x000a, 0x3c56: 0x000a, 0x3c57: 0x000a,
+ 0x3c58: 0x000a, 0x3c59: 0x000a, 0x3c5a: 0x000a, 0x3c5b: 0x000a, 0x3c5c: 0x000a, 0x3c5d: 0x000a,
+ 0x3c5e: 0x000a, 0x3c5f: 0x000a, 0x3c60: 0x000a, 0x3c61: 0x000a, 0x3c62: 0x000a, 0x3c63: 0x000a,
+ 0x3c64: 0x000a, 0x3c65: 0x000a, 0x3c66: 0x000a, 0x3c67: 0x000a, 0x3c68: 0x000a,
+ 0x3c70: 0x000a, 0x3c71: 0x000a, 0x3c72: 0x000a, 0x3c73: 0x000a, 0x3c74: 0x000a, 0x3c75: 0x000a,
+ 0x3c76: 0x000a,
+ // Block 0xf2, offset 0x3c80
+ 0x3c80: 0x000a, 0x3c81: 0x000a, 0x3c82: 0x000a,
+ 0x3c90: 0x000a, 0x3c91: 0x000a,
+ 0x3c92: 0x000a, 0x3c93: 0x000a, 0x3c94: 0x000a, 0x3c95: 0x000a, 0x3c96: 0x000a,
+ // Block 0xf3, offset 0x3cc0
+ 0x3cc0: 0x000a, 0x3cc1: 0x000a, 0x3cc2: 0x000a, 0x3cc3: 0x000a, 0x3cc4: 0x000a, 0x3cc5: 0x000a,
+ 0x3cc6: 0x000a, 0x3cc7: 0x000a, 0x3cc8: 0x000a, 0x3cc9: 0x000a, 0x3cca: 0x000a, 0x3ccb: 0x000a,
+ 0x3ccc: 0x000a, 0x3ccd: 0x000a, 0x3cce: 0x000a, 0x3ccf: 0x000a, 0x3cd0: 0x000a, 0x3cd1: 0x000a,
+ 0x3cd2: 0x000a, 0x3cd4: 0x000a, 0x3cd5: 0x000a, 0x3cd6: 0x000a, 0x3cd7: 0x000a,
+ 0x3cd8: 0x000a, 0x3cd9: 0x000a, 0x3cda: 0x000a, 0x3cdb: 0x000a, 0x3cdc: 0x000a, 0x3cdd: 0x000a,
+ 0x3cde: 0x000a, 0x3cdf: 0x000a, 0x3ce0: 0x000a, 0x3ce1: 0x000a, 0x3ce2: 0x000a, 0x3ce3: 0x000a,
+ 0x3ce4: 0x000a, 0x3ce5: 0x000a, 0x3ce6: 0x000a, 0x3ce7: 0x000a, 0x3ce8: 0x000a, 0x3ce9: 0x000a,
+ 0x3cea: 0x000a, 0x3ceb: 0x000a, 0x3cec: 0x000a, 0x3ced: 0x000a, 0x3cee: 0x000a, 0x3cef: 0x000a,
+ 0x3cf0: 0x000a, 0x3cf1: 0x000a, 0x3cf2: 0x000a, 0x3cf3: 0x000a, 0x3cf4: 0x000a, 0x3cf5: 0x000a,
+ 0x3cf6: 0x000a, 0x3cf7: 0x000a, 0x3cf8: 0x000a, 0x3cf9: 0x000a, 0x3cfa: 0x000a, 0x3cfb: 0x000a,
+ 0x3cfc: 0x000a, 0x3cfd: 0x000a, 0x3cfe: 0x000a, 0x3cff: 0x000a,
+ // Block 0xf4, offset 0x3d00
+ 0x3d00: 0x000a, 0x3d01: 0x000a, 0x3d02: 0x000a, 0x3d03: 0x000a, 0x3d04: 0x000a, 0x3d05: 0x000a,
+ 0x3d06: 0x000a, 0x3d07: 0x000a, 0x3d08: 0x000a, 0x3d09: 0x000a, 0x3d0a: 0x000a,
+ 0x3d30: 0x0002, 0x3d31: 0x0002, 0x3d32: 0x0002, 0x3d33: 0x0002, 0x3d34: 0x0002, 0x3d35: 0x0002,
+ 0x3d36: 0x0002, 0x3d37: 0x0002, 0x3d38: 0x0002, 0x3d39: 0x0002,
+ // Block 0xf5, offset 0x3d40
+ 0x3d7e: 0x000b, 0x3d7f: 0x000b,
+ // Block 0xf6, offset 0x3d80
+ 0x3d80: 0x000b, 0x3d81: 0x000b, 0x3d82: 0x000b, 0x3d83: 0x000b, 0x3d84: 0x000b, 0x3d85: 0x000b,
+ 0x3d86: 0x000b, 0x3d87: 0x000b, 0x3d88: 0x000b, 0x3d89: 0x000b, 0x3d8a: 0x000b, 0x3d8b: 0x000b,
+ 0x3d8c: 0x000b, 0x3d8d: 0x000b, 0x3d8e: 0x000b, 0x3d8f: 0x000b, 0x3d90: 0x000b, 0x3d91: 0x000b,
+ 0x3d92: 0x000b, 0x3d93: 0x000b, 0x3d94: 0x000b, 0x3d95: 0x000b, 0x3d96: 0x000b, 0x3d97: 0x000b,
+ 0x3d98: 0x000b, 0x3d99: 0x000b, 0x3d9a: 0x000b, 0x3d9b: 0x000b, 0x3d9c: 0x000b, 0x3d9d: 0x000b,
+ 0x3d9e: 0x000b, 0x3d9f: 0x000b, 0x3da0: 0x000b, 0x3da1: 0x000b, 0x3da2: 0x000b, 0x3da3: 0x000b,
+ 0x3da4: 0x000b, 0x3da5: 0x000b, 0x3da6: 0x000b, 0x3da7: 0x000b, 0x3da8: 0x000b, 0x3da9: 0x000b,
+ 0x3daa: 0x000b, 0x3dab: 0x000b, 0x3dac: 0x000b, 0x3dad: 0x000b, 0x3dae: 0x000b, 0x3daf: 0x000b,
+ 0x3db0: 0x000b, 0x3db1: 0x000b, 0x3db2: 0x000b, 0x3db3: 0x000b, 0x3db4: 0x000b, 0x3db5: 0x000b,
+ 0x3db6: 0x000b, 0x3db7: 0x000b, 0x3db8: 0x000b, 0x3db9: 0x000b, 0x3dba: 0x000b, 0x3dbb: 0x000b,
+ 0x3dbc: 0x000b, 0x3dbd: 0x000b, 0x3dbe: 0x000b, 0x3dbf: 0x000b,
+ // Block 0xf7, offset 0x3dc0
+ 0x3dc0: 0x000c, 0x3dc1: 0x000c, 0x3dc2: 0x000c, 0x3dc3: 0x000c, 0x3dc4: 0x000c, 0x3dc5: 0x000c,
+ 0x3dc6: 0x000c, 0x3dc7: 0x000c, 0x3dc8: 0x000c, 0x3dc9: 0x000c, 0x3dca: 0x000c, 0x3dcb: 0x000c,
+ 0x3dcc: 0x000c, 0x3dcd: 0x000c, 0x3dce: 0x000c, 0x3dcf: 0x000c, 0x3dd0: 0x000c, 0x3dd1: 0x000c,
+ 0x3dd2: 0x000c, 0x3dd3: 0x000c, 0x3dd4: 0x000c, 0x3dd5: 0x000c, 0x3dd6: 0x000c, 0x3dd7: 0x000c,
+ 0x3dd8: 0x000c, 0x3dd9: 0x000c, 0x3dda: 0x000c, 0x3ddb: 0x000c, 0x3ddc: 0x000c, 0x3ddd: 0x000c,
+ 0x3dde: 0x000c, 0x3ddf: 0x000c, 0x3de0: 0x000c, 0x3de1: 0x000c, 0x3de2: 0x000c, 0x3de3: 0x000c,
+ 0x3de4: 0x000c, 0x3de5: 0x000c, 0x3de6: 0x000c, 0x3de7: 0x000c, 0x3de8: 0x000c, 0x3de9: 0x000c,
+ 0x3dea: 0x000c, 0x3deb: 0x000c, 0x3dec: 0x000c, 0x3ded: 0x000c, 0x3dee: 0x000c, 0x3def: 0x000c,
+ 0x3df0: 0x000b, 0x3df1: 0x000b, 0x3df2: 0x000b, 0x3df3: 0x000b, 0x3df4: 0x000b, 0x3df5: 0x000b,
+ 0x3df6: 0x000b, 0x3df7: 0x000b, 0x3df8: 0x000b, 0x3df9: 0x000b, 0x3dfa: 0x000b, 0x3dfb: 0x000b,
+ 0x3dfc: 0x000b, 0x3dfd: 0x000b, 0x3dfe: 0x000b, 0x3dff: 0x000b,
+}
+
+// bidiIndex: 24 blocks, 1536 entries, 1536 bytes
+// Block 0 is the zero block.
+var bidiIndex = [1536]uint8{
+ // Block 0x0, offset 0x0
+ // Block 0x1, offset 0x40
+ // Block 0x2, offset 0x80
+ // Block 0x3, offset 0xc0
+ 0xc2: 0x01, 0xc3: 0x02,
+ 0xca: 0x03, 0xcb: 0x04, 0xcc: 0x05, 0xcd: 0x06, 0xce: 0x07, 0xcf: 0x08,
+ 0xd2: 0x09, 0xd6: 0x0a, 0xd7: 0x0b,
+ 0xd8: 0x0c, 0xd9: 0x0d, 0xda: 0x0e, 0xdb: 0x0f, 0xdc: 0x10, 0xdd: 0x11, 0xde: 0x12, 0xdf: 0x13,
+ 0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xe4: 0x06,
+ 0xea: 0x07, 0xef: 0x08,
+ 0xf0: 0x11, 0xf1: 0x12, 0xf2: 0x12, 0xf3: 0x14, 0xf4: 0x15,
+ // Block 0x4, offset 0x100
+ 0x120: 0x14, 0x121: 0x15, 0x122: 0x16, 0x123: 0x17, 0x124: 0x18, 0x125: 0x19, 0x126: 0x1a, 0x127: 0x1b,
+ 0x128: 0x1c, 0x129: 0x1d, 0x12a: 0x1c, 0x12b: 0x1e, 0x12c: 0x1f, 0x12d: 0x20, 0x12e: 0x21, 0x12f: 0x22,
+ 0x130: 0x23, 0x131: 0x24, 0x132: 0x1a, 0x133: 0x25, 0x134: 0x26, 0x135: 0x27, 0x136: 0x28, 0x137: 0x29,
+ 0x138: 0x2a, 0x139: 0x2b, 0x13a: 0x2c, 0x13b: 0x2d, 0x13c: 0x2e, 0x13d: 0x2f, 0x13e: 0x30, 0x13f: 0x31,
+ // Block 0x5, offset 0x140
+ 0x140: 0x32, 0x141: 0x33, 0x142: 0x34,
+ 0x14d: 0x35, 0x14e: 0x36,
+ 0x150: 0x37,
+ 0x15a: 0x38, 0x15c: 0x39, 0x15d: 0x3a, 0x15e: 0x3b, 0x15f: 0x3c,
+ 0x160: 0x3d, 0x162: 0x3e, 0x164: 0x3f, 0x165: 0x40, 0x167: 0x41,
+ 0x168: 0x42, 0x169: 0x43, 0x16a: 0x44, 0x16b: 0x45, 0x16c: 0x46, 0x16d: 0x47, 0x16e: 0x48, 0x16f: 0x49,
+ 0x170: 0x4a, 0x173: 0x4b, 0x177: 0x4c,
+ 0x17e: 0x4d, 0x17f: 0x4e,
+ // Block 0x6, offset 0x180
+ 0x180: 0x4f, 0x181: 0x50, 0x182: 0x51, 0x183: 0x52, 0x184: 0x53, 0x185: 0x54, 0x186: 0x55, 0x187: 0x56,
+ 0x188: 0x57, 0x189: 0x56, 0x18a: 0x56, 0x18b: 0x56, 0x18c: 0x58, 0x18d: 0x59, 0x18e: 0x5a, 0x18f: 0x56,
+ 0x190: 0x5b, 0x191: 0x5c, 0x192: 0x5d, 0x193: 0x5e, 0x194: 0x56, 0x195: 0x56, 0x196: 0x56, 0x197: 0x56,
+ 0x198: 0x56, 0x199: 0x56, 0x19a: 0x5f, 0x19b: 0x56, 0x19c: 0x56, 0x19d: 0x60, 0x19e: 0x56, 0x19f: 0x61,
+ 0x1a4: 0x56, 0x1a5: 0x56, 0x1a6: 0x62, 0x1a7: 0x63,
+ 0x1a8: 0x56, 0x1a9: 0x56, 0x1aa: 0x56, 0x1ab: 0x56, 0x1ac: 0x56, 0x1ad: 0x64, 0x1ae: 0x65, 0x1af: 0x56,
+ 0x1b3: 0x66, 0x1b5: 0x67, 0x1b7: 0x68,
+ 0x1b8: 0x69, 0x1b9: 0x6a, 0x1ba: 0x6b, 0x1bb: 0x6c, 0x1bc: 0x56, 0x1bd: 0x56, 0x1be: 0x56, 0x1bf: 0x6d,
+ // Block 0x7, offset 0x1c0
+ 0x1c0: 0x6e, 0x1c2: 0x6f, 0x1c3: 0x70, 0x1c7: 0x71,
+ 0x1c8: 0x72, 0x1c9: 0x73, 0x1ca: 0x74, 0x1cb: 0x75, 0x1cd: 0x76, 0x1cf: 0x77,
+ // Block 0x8, offset 0x200
+ 0x237: 0x56,
+ // Block 0x9, offset 0x240
+ 0x252: 0x78, 0x253: 0x79,
+ 0x258: 0x7a, 0x259: 0x7b, 0x25a: 0x7c, 0x25b: 0x7d, 0x25c: 0x7e, 0x25e: 0x7f,
+ 0x260: 0x80, 0x261: 0x81, 0x263: 0x82, 0x264: 0x83, 0x265: 0x84, 0x266: 0x85, 0x267: 0x86,
+ 0x268: 0x87, 0x269: 0x88, 0x26a: 0x89, 0x26b: 0x8a, 0x26d: 0x8b, 0x26f: 0x8c,
+ // Block 0xa, offset 0x280
+ 0x2ac: 0x8d, 0x2ad: 0x8e, 0x2ae: 0x0e, 0x2af: 0x0e,
+ 0x2b0: 0x0e, 0x2b1: 0x0e, 0x2b2: 0x0e, 0x2b3: 0x0e, 0x2b4: 0x8f, 0x2b5: 0x0e, 0x2b6: 0x0e, 0x2b7: 0x90,
+ 0x2b8: 0x91, 0x2b9: 0x92, 0x2ba: 0x0e, 0x2bb: 0x93, 0x2bc: 0x94, 0x2bd: 0x95, 0x2bf: 0x96,
+ // Block 0xb, offset 0x2c0
+ 0x2c4: 0x97, 0x2c5: 0x56, 0x2c6: 0x98, 0x2c7: 0x99,
+ 0x2cb: 0x9a, 0x2cd: 0x9b,
+ 0x2e0: 0x9c, 0x2e1: 0x9c, 0x2e2: 0x9c, 0x2e3: 0x9c, 0x2e4: 0x9d, 0x2e5: 0x9c, 0x2e6: 0x9c, 0x2e7: 0x9c,
+ 0x2e8: 0x9e, 0x2e9: 0x9c, 0x2ea: 0x9c, 0x2eb: 0x9f, 0x2ec: 0xa0, 0x2ed: 0x9c, 0x2ee: 0x9c, 0x2ef: 0x9c,
+ 0x2f0: 0x9c, 0x2f1: 0x9c, 0x2f2: 0x9c, 0x2f3: 0x9c, 0x2f4: 0xa1, 0x2f5: 0x9c, 0x2f6: 0x9c, 0x2f7: 0x9c,
+ 0x2f8: 0x9c, 0x2f9: 0xa2, 0x2fa: 0xa3, 0x2fb: 0x9c, 0x2fc: 0xa4, 0x2fd: 0xa5, 0x2fe: 0x9c, 0x2ff: 0x9c,
+ // Block 0xc, offset 0x300
+ 0x300: 0xa6, 0x301: 0xa7, 0x302: 0xa8, 0x304: 0xa9, 0x305: 0xaa, 0x306: 0xab, 0x307: 0xac,
+ 0x308: 0xad, 0x30b: 0xae, 0x30c: 0x26, 0x30d: 0xaf,
+ 0x310: 0xb0, 0x311: 0xb1, 0x312: 0xb2, 0x313: 0xb3, 0x316: 0xb4, 0x317: 0xb5,
+ 0x318: 0xb6, 0x319: 0xb7, 0x31a: 0xb8, 0x31c: 0xb9,
+ 0x320: 0xba, 0x324: 0xbb, 0x325: 0xbc, 0x327: 0xbd,
+ 0x328: 0xbe, 0x329: 0xbf, 0x32a: 0xc0,
+ 0x330: 0xc1, 0x332: 0xc2, 0x334: 0xc3, 0x335: 0xc4, 0x336: 0xc5,
+ 0x33b: 0xc6, 0x33f: 0xc7,
+ // Block 0xd, offset 0x340
+ 0x36b: 0xc8, 0x36c: 0xc9,
+ 0x37d: 0xca, 0x37e: 0xcb, 0x37f: 0xcc,
+ // Block 0xe, offset 0x380
+ 0x3b2: 0xcd,
+ // Block 0xf, offset 0x3c0
+ 0x3c5: 0xce, 0x3c6: 0xcf,
+ 0x3c8: 0x56, 0x3c9: 0xd0, 0x3cc: 0x56, 0x3cd: 0xd1,
+ 0x3db: 0xd2, 0x3dc: 0xd3, 0x3dd: 0xd4, 0x3de: 0xd5, 0x3df: 0xd6,
+ 0x3e8: 0xd7, 0x3e9: 0xd8, 0x3ea: 0xd9,
+ // Block 0x10, offset 0x400
+ 0x400: 0xda, 0x404: 0xc9,
+ 0x40b: 0xdb,
+ 0x420: 0x9c, 0x421: 0x9c, 0x422: 0x9c, 0x423: 0xdc, 0x424: 0x9c, 0x425: 0xdd, 0x426: 0x9c, 0x427: 0x9c,
+ 0x428: 0x9c, 0x429: 0x9c, 0x42a: 0x9c, 0x42b: 0x9c, 0x42c: 0x9c, 0x42d: 0x9c, 0x42e: 0x9c, 0x42f: 0x9c,
+ 0x430: 0x9c, 0x431: 0xa4, 0x432: 0x0e, 0x433: 0x9c, 0x434: 0x0e, 0x435: 0xde, 0x436: 0x9c, 0x437: 0x9c,
+ 0x438: 0x0e, 0x439: 0x0e, 0x43a: 0x0e, 0x43b: 0xdf, 0x43c: 0x9c, 0x43d: 0x9c, 0x43e: 0x9c, 0x43f: 0x9c,
+ // Block 0x11, offset 0x440
+ 0x440: 0xe0, 0x441: 0x56, 0x442: 0xe1, 0x443: 0xe2, 0x444: 0xe3, 0x445: 0xe4, 0x446: 0xe5,
+ 0x449: 0xe6, 0x44c: 0x56, 0x44d: 0x56, 0x44e: 0x56, 0x44f: 0x56,
+ 0x450: 0x56, 0x451: 0x56, 0x452: 0x56, 0x453: 0x56, 0x454: 0x56, 0x455: 0x56, 0x456: 0x56, 0x457: 0x56,
+ 0x458: 0x56, 0x459: 0x56, 0x45a: 0x56, 0x45b: 0xe7, 0x45c: 0x56, 0x45d: 0x6c, 0x45e: 0x56, 0x45f: 0xe8,
+ 0x460: 0xe9, 0x461: 0xea, 0x462: 0xeb, 0x464: 0x56, 0x465: 0xec, 0x466: 0x56, 0x467: 0xed,
+ 0x468: 0x56, 0x469: 0xee, 0x46a: 0xef, 0x46b: 0xf0, 0x46c: 0x56, 0x46d: 0x56, 0x46e: 0xf1, 0x46f: 0xf2,
+ 0x47f: 0xf3,
+ // Block 0x12, offset 0x480
+ 0x4bf: 0xf3,
+ // Block 0x13, offset 0x4c0
+ 0x4d0: 0x09, 0x4d1: 0x0a, 0x4d6: 0x0b,
+ 0x4db: 0x0c, 0x4dd: 0x0d, 0x4de: 0x0e, 0x4df: 0x0f,
+ 0x4ef: 0x10,
+ 0x4ff: 0x10,
+ // Block 0x14, offset 0x500
+ 0x50f: 0x10,
+ 0x51f: 0x10,
+ 0x52f: 0x10,
+ 0x53f: 0x10,
+ // Block 0x15, offset 0x540
+ 0x540: 0xf4, 0x541: 0xf4, 0x542: 0xf4, 0x543: 0xf4, 0x544: 0x05, 0x545: 0x05, 0x546: 0x05, 0x547: 0xf5,
+ 0x548: 0xf4, 0x549: 0xf4, 0x54a: 0xf4, 0x54b: 0xf4, 0x54c: 0xf4, 0x54d: 0xf4, 0x54e: 0xf4, 0x54f: 0xf4,
+ 0x550: 0xf4, 0x551: 0xf4, 0x552: 0xf4, 0x553: 0xf4, 0x554: 0xf4, 0x555: 0xf4, 0x556: 0xf4, 0x557: 0xf4,
+ 0x558: 0xf4, 0x559: 0xf4, 0x55a: 0xf4, 0x55b: 0xf4, 0x55c: 0xf4, 0x55d: 0xf4, 0x55e: 0xf4, 0x55f: 0xf4,
+ 0x560: 0xf4, 0x561: 0xf4, 0x562: 0xf4, 0x563: 0xf4, 0x564: 0xf4, 0x565: 0xf4, 0x566: 0xf4, 0x567: 0xf4,
+ 0x568: 0xf4, 0x569: 0xf4, 0x56a: 0xf4, 0x56b: 0xf4, 0x56c: 0xf4, 0x56d: 0xf4, 0x56e: 0xf4, 0x56f: 0xf4,
+ 0x570: 0xf4, 0x571: 0xf4, 0x572: 0xf4, 0x573: 0xf4, 0x574: 0xf4, 0x575: 0xf4, 0x576: 0xf4, 0x577: 0xf4,
+ 0x578: 0xf4, 0x579: 0xf4, 0x57a: 0xf4, 0x57b: 0xf4, 0x57c: 0xf4, 0x57d: 0xf4, 0x57e: 0xf4, 0x57f: 0xf4,
+ // Block 0x16, offset 0x580
+ 0x58f: 0x10,
+ 0x59f: 0x10,
+ 0x5a0: 0x13,
+ 0x5af: 0x10,
+ 0x5bf: 0x10,
+ // Block 0x17, offset 0x5c0
+ 0x5cf: 0x10,
+}
+
+// Total table size 17464 bytes (17KiB); checksum: F50EF68C
diff --git a/vendor/golang.org/x/text/unicode/norm/BUILD.bazel b/vendor/golang.org/x/text/unicode/norm/BUILD.bazel
index 58908b91..b4d0d66c 100644
--- a/vendor/golang.org/x/text/unicode/norm/BUILD.bazel
+++ b/vendor/golang.org/x/text/unicode/norm/BUILD.bazel
@@ -12,6 +12,7 @@ go_library(
"tables10.0.0.go",
"tables11.0.0.go",
"tables12.0.0.go",
+ "tables13.0.0.go",
"tables9.0.0.go",
"transform.go",
"trie.go",
diff --git a/vendor/golang.org/x/text/unicode/norm/tables12.0.0.go b/vendor/golang.org/x/text/unicode/norm/tables12.0.0.go
index 10f5202c..7e1ae096 100644
--- a/vendor/golang.org/x/text/unicode/norm/tables12.0.0.go
+++ b/vendor/golang.org/x/text/unicode/norm/tables12.0.0.go
@@ -1,6 +1,6 @@
// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
-// +build go1.14
+// +build go1.14,!go1.16
package norm
diff --git a/vendor/golang.org/x/text/unicode/norm/tables13.0.0.go b/vendor/golang.org/x/text/unicode/norm/tables13.0.0.go
new file mode 100644
index 00000000..9ea1b421
--- /dev/null
+++ b/vendor/golang.org/x/text/unicode/norm/tables13.0.0.go
@@ -0,0 +1,7760 @@
+// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
+
+// +build go1.16
+
+package norm
+
+import "sync"
+
+const (
+ // Version is the Unicode edition from which the tables are derived.
+ Version = "13.0.0"
+
+ // MaxTransformChunkSize indicates the maximum number of bytes that Transform
+ // may need to write atomically for any Form. Making a destination buffer at
+ // least this size ensures that Transform can always make progress and that
+ // the user does not need to grow the buffer on an ErrShortDst.
+ MaxTransformChunkSize = 35 + maxNonStarters*4
+)
+
+var ccc = [56]uint8{
+ 0, 1, 6, 7, 8, 9, 10, 11,
+ 12, 13, 14, 15, 16, 17, 18, 19,
+ 20, 21, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, 33, 34, 35,
+ 36, 84, 91, 103, 107, 118, 122, 129,
+ 130, 132, 202, 214, 216, 218, 220, 222,
+ 224, 226, 228, 230, 232, 233, 234, 240,
+}
+
+const (
+ firstMulti = 0x1870
+ firstCCC = 0x2CAB
+ endMulti = 0x2F77
+ firstLeadingCCC = 0x49C5
+ firstCCCZeroExcept = 0x4A8F
+ firstStarterWithNLead = 0x4AB6
+ lastDecomp = 0x4AB8
+ maxDecomp = 0x8000
+)
+
+// decomps: 19128 bytes
+var decomps = [...]byte{
+ // Bytes 0 - 3f
+ 0x00, 0x41, 0x20, 0x41, 0x21, 0x41, 0x22, 0x41,
+ 0x23, 0x41, 0x24, 0x41, 0x25, 0x41, 0x26, 0x41,
+ 0x27, 0x41, 0x28, 0x41, 0x29, 0x41, 0x2A, 0x41,
+ 0x2B, 0x41, 0x2C, 0x41, 0x2D, 0x41, 0x2E, 0x41,
+ 0x2F, 0x41, 0x30, 0x41, 0x31, 0x41, 0x32, 0x41,
+ 0x33, 0x41, 0x34, 0x41, 0x35, 0x41, 0x36, 0x41,
+ 0x37, 0x41, 0x38, 0x41, 0x39, 0x41, 0x3A, 0x41,
+ 0x3B, 0x41, 0x3C, 0x41, 0x3D, 0x41, 0x3E, 0x41,
+ // Bytes 40 - 7f
+ 0x3F, 0x41, 0x40, 0x41, 0x41, 0x41, 0x42, 0x41,
+ 0x43, 0x41, 0x44, 0x41, 0x45, 0x41, 0x46, 0x41,
+ 0x47, 0x41, 0x48, 0x41, 0x49, 0x41, 0x4A, 0x41,
+ 0x4B, 0x41, 0x4C, 0x41, 0x4D, 0x41, 0x4E, 0x41,
+ 0x4F, 0x41, 0x50, 0x41, 0x51, 0x41, 0x52, 0x41,
+ 0x53, 0x41, 0x54, 0x41, 0x55, 0x41, 0x56, 0x41,
+ 0x57, 0x41, 0x58, 0x41, 0x59, 0x41, 0x5A, 0x41,
+ 0x5B, 0x41, 0x5C, 0x41, 0x5D, 0x41, 0x5E, 0x41,
+ // Bytes 80 - bf
+ 0x5F, 0x41, 0x60, 0x41, 0x61, 0x41, 0x62, 0x41,
+ 0x63, 0x41, 0x64, 0x41, 0x65, 0x41, 0x66, 0x41,
+ 0x67, 0x41, 0x68, 0x41, 0x69, 0x41, 0x6A, 0x41,
+ 0x6B, 0x41, 0x6C, 0x41, 0x6D, 0x41, 0x6E, 0x41,
+ 0x6F, 0x41, 0x70, 0x41, 0x71, 0x41, 0x72, 0x41,
+ 0x73, 0x41, 0x74, 0x41, 0x75, 0x41, 0x76, 0x41,
+ 0x77, 0x41, 0x78, 0x41, 0x79, 0x41, 0x7A, 0x41,
+ 0x7B, 0x41, 0x7C, 0x41, 0x7D, 0x41, 0x7E, 0x42,
+ // Bytes c0 - ff
+ 0xC2, 0xA2, 0x42, 0xC2, 0xA3, 0x42, 0xC2, 0xA5,
+ 0x42, 0xC2, 0xA6, 0x42, 0xC2, 0xAC, 0x42, 0xC2,
+ 0xB7, 0x42, 0xC3, 0x86, 0x42, 0xC3, 0xB0, 0x42,
+ 0xC4, 0xA6, 0x42, 0xC4, 0xA7, 0x42, 0xC4, 0xB1,
+ 0x42, 0xC5, 0x8B, 0x42, 0xC5, 0x93, 0x42, 0xC6,
+ 0x8E, 0x42, 0xC6, 0x90, 0x42, 0xC6, 0xAB, 0x42,
+ 0xC8, 0xA2, 0x42, 0xC8, 0xB7, 0x42, 0xC9, 0x90,
+ 0x42, 0xC9, 0x91, 0x42, 0xC9, 0x92, 0x42, 0xC9,
+ // Bytes 100 - 13f
+ 0x94, 0x42, 0xC9, 0x95, 0x42, 0xC9, 0x99, 0x42,
+ 0xC9, 0x9B, 0x42, 0xC9, 0x9C, 0x42, 0xC9, 0x9F,
+ 0x42, 0xC9, 0xA1, 0x42, 0xC9, 0xA3, 0x42, 0xC9,
+ 0xA5, 0x42, 0xC9, 0xA6, 0x42, 0xC9, 0xA8, 0x42,
+ 0xC9, 0xA9, 0x42, 0xC9, 0xAA, 0x42, 0xC9, 0xAB,
+ 0x42, 0xC9, 0xAD, 0x42, 0xC9, 0xAF, 0x42, 0xC9,
+ 0xB0, 0x42, 0xC9, 0xB1, 0x42, 0xC9, 0xB2, 0x42,
+ 0xC9, 0xB3, 0x42, 0xC9, 0xB4, 0x42, 0xC9, 0xB5,
+ // Bytes 140 - 17f
+ 0x42, 0xC9, 0xB8, 0x42, 0xC9, 0xB9, 0x42, 0xC9,
+ 0xBB, 0x42, 0xCA, 0x81, 0x42, 0xCA, 0x82, 0x42,
+ 0xCA, 0x83, 0x42, 0xCA, 0x89, 0x42, 0xCA, 0x8A,
+ 0x42, 0xCA, 0x8B, 0x42, 0xCA, 0x8C, 0x42, 0xCA,
+ 0x8D, 0x42, 0xCA, 0x90, 0x42, 0xCA, 0x91, 0x42,
+ 0xCA, 0x92, 0x42, 0xCA, 0x95, 0x42, 0xCA, 0x9D,
+ 0x42, 0xCA, 0x9F, 0x42, 0xCA, 0xB9, 0x42, 0xCE,
+ 0x91, 0x42, 0xCE, 0x92, 0x42, 0xCE, 0x93, 0x42,
+ // Bytes 180 - 1bf
+ 0xCE, 0x94, 0x42, 0xCE, 0x95, 0x42, 0xCE, 0x96,
+ 0x42, 0xCE, 0x97, 0x42, 0xCE, 0x98, 0x42, 0xCE,
+ 0x99, 0x42, 0xCE, 0x9A, 0x42, 0xCE, 0x9B, 0x42,
+ 0xCE, 0x9C, 0x42, 0xCE, 0x9D, 0x42, 0xCE, 0x9E,
+ 0x42, 0xCE, 0x9F, 0x42, 0xCE, 0xA0, 0x42, 0xCE,
+ 0xA1, 0x42, 0xCE, 0xA3, 0x42, 0xCE, 0xA4, 0x42,
+ 0xCE, 0xA5, 0x42, 0xCE, 0xA6, 0x42, 0xCE, 0xA7,
+ 0x42, 0xCE, 0xA8, 0x42, 0xCE, 0xA9, 0x42, 0xCE,
+ // Bytes 1c0 - 1ff
+ 0xB1, 0x42, 0xCE, 0xB2, 0x42, 0xCE, 0xB3, 0x42,
+ 0xCE, 0xB4, 0x42, 0xCE, 0xB5, 0x42, 0xCE, 0xB6,
+ 0x42, 0xCE, 0xB7, 0x42, 0xCE, 0xB8, 0x42, 0xCE,
+ 0xB9, 0x42, 0xCE, 0xBA, 0x42, 0xCE, 0xBB, 0x42,
+ 0xCE, 0xBC, 0x42, 0xCE, 0xBD, 0x42, 0xCE, 0xBE,
+ 0x42, 0xCE, 0xBF, 0x42, 0xCF, 0x80, 0x42, 0xCF,
+ 0x81, 0x42, 0xCF, 0x82, 0x42, 0xCF, 0x83, 0x42,
+ 0xCF, 0x84, 0x42, 0xCF, 0x85, 0x42, 0xCF, 0x86,
+ // Bytes 200 - 23f
+ 0x42, 0xCF, 0x87, 0x42, 0xCF, 0x88, 0x42, 0xCF,
+ 0x89, 0x42, 0xCF, 0x9C, 0x42, 0xCF, 0x9D, 0x42,
+ 0xD0, 0xBD, 0x42, 0xD1, 0x8A, 0x42, 0xD1, 0x8C,
+ 0x42, 0xD7, 0x90, 0x42, 0xD7, 0x91, 0x42, 0xD7,
+ 0x92, 0x42, 0xD7, 0x93, 0x42, 0xD7, 0x94, 0x42,
+ 0xD7, 0x9B, 0x42, 0xD7, 0x9C, 0x42, 0xD7, 0x9D,
+ 0x42, 0xD7, 0xA2, 0x42, 0xD7, 0xA8, 0x42, 0xD7,
+ 0xAA, 0x42, 0xD8, 0xA1, 0x42, 0xD8, 0xA7, 0x42,
+ // Bytes 240 - 27f
+ 0xD8, 0xA8, 0x42, 0xD8, 0xA9, 0x42, 0xD8, 0xAA,
+ 0x42, 0xD8, 0xAB, 0x42, 0xD8, 0xAC, 0x42, 0xD8,
+ 0xAD, 0x42, 0xD8, 0xAE, 0x42, 0xD8, 0xAF, 0x42,
+ 0xD8, 0xB0, 0x42, 0xD8, 0xB1, 0x42, 0xD8, 0xB2,
+ 0x42, 0xD8, 0xB3, 0x42, 0xD8, 0xB4, 0x42, 0xD8,
+ 0xB5, 0x42, 0xD8, 0xB6, 0x42, 0xD8, 0xB7, 0x42,
+ 0xD8, 0xB8, 0x42, 0xD8, 0xB9, 0x42, 0xD8, 0xBA,
+ 0x42, 0xD9, 0x81, 0x42, 0xD9, 0x82, 0x42, 0xD9,
+ // Bytes 280 - 2bf
+ 0x83, 0x42, 0xD9, 0x84, 0x42, 0xD9, 0x85, 0x42,
+ 0xD9, 0x86, 0x42, 0xD9, 0x87, 0x42, 0xD9, 0x88,
+ 0x42, 0xD9, 0x89, 0x42, 0xD9, 0x8A, 0x42, 0xD9,
+ 0xAE, 0x42, 0xD9, 0xAF, 0x42, 0xD9, 0xB1, 0x42,
+ 0xD9, 0xB9, 0x42, 0xD9, 0xBA, 0x42, 0xD9, 0xBB,
+ 0x42, 0xD9, 0xBE, 0x42, 0xD9, 0xBF, 0x42, 0xDA,
+ 0x80, 0x42, 0xDA, 0x83, 0x42, 0xDA, 0x84, 0x42,
+ 0xDA, 0x86, 0x42, 0xDA, 0x87, 0x42, 0xDA, 0x88,
+ // Bytes 2c0 - 2ff
+ 0x42, 0xDA, 0x8C, 0x42, 0xDA, 0x8D, 0x42, 0xDA,
+ 0x8E, 0x42, 0xDA, 0x91, 0x42, 0xDA, 0x98, 0x42,
+ 0xDA, 0xA1, 0x42, 0xDA, 0xA4, 0x42, 0xDA, 0xA6,
+ 0x42, 0xDA, 0xA9, 0x42, 0xDA, 0xAD, 0x42, 0xDA,
+ 0xAF, 0x42, 0xDA, 0xB1, 0x42, 0xDA, 0xB3, 0x42,
+ 0xDA, 0xBA, 0x42, 0xDA, 0xBB, 0x42, 0xDA, 0xBE,
+ 0x42, 0xDB, 0x81, 0x42, 0xDB, 0x85, 0x42, 0xDB,
+ 0x86, 0x42, 0xDB, 0x87, 0x42, 0xDB, 0x88, 0x42,
+ // Bytes 300 - 33f
+ 0xDB, 0x89, 0x42, 0xDB, 0x8B, 0x42, 0xDB, 0x8C,
+ 0x42, 0xDB, 0x90, 0x42, 0xDB, 0x92, 0x43, 0xE0,
+ 0xBC, 0x8B, 0x43, 0xE1, 0x83, 0x9C, 0x43, 0xE1,
+ 0x84, 0x80, 0x43, 0xE1, 0x84, 0x81, 0x43, 0xE1,
+ 0x84, 0x82, 0x43, 0xE1, 0x84, 0x83, 0x43, 0xE1,
+ 0x84, 0x84, 0x43, 0xE1, 0x84, 0x85, 0x43, 0xE1,
+ 0x84, 0x86, 0x43, 0xE1, 0x84, 0x87, 0x43, 0xE1,
+ 0x84, 0x88, 0x43, 0xE1, 0x84, 0x89, 0x43, 0xE1,
+ // Bytes 340 - 37f
+ 0x84, 0x8A, 0x43, 0xE1, 0x84, 0x8B, 0x43, 0xE1,
+ 0x84, 0x8C, 0x43, 0xE1, 0x84, 0x8D, 0x43, 0xE1,
+ 0x84, 0x8E, 0x43, 0xE1, 0x84, 0x8F, 0x43, 0xE1,
+ 0x84, 0x90, 0x43, 0xE1, 0x84, 0x91, 0x43, 0xE1,
+ 0x84, 0x92, 0x43, 0xE1, 0x84, 0x94, 0x43, 0xE1,
+ 0x84, 0x95, 0x43, 0xE1, 0x84, 0x9A, 0x43, 0xE1,
+ 0x84, 0x9C, 0x43, 0xE1, 0x84, 0x9D, 0x43, 0xE1,
+ 0x84, 0x9E, 0x43, 0xE1, 0x84, 0xA0, 0x43, 0xE1,
+ // Bytes 380 - 3bf
+ 0x84, 0xA1, 0x43, 0xE1, 0x84, 0xA2, 0x43, 0xE1,
+ 0x84, 0xA3, 0x43, 0xE1, 0x84, 0xA7, 0x43, 0xE1,
+ 0x84, 0xA9, 0x43, 0xE1, 0x84, 0xAB, 0x43, 0xE1,
+ 0x84, 0xAC, 0x43, 0xE1, 0x84, 0xAD, 0x43, 0xE1,
+ 0x84, 0xAE, 0x43, 0xE1, 0x84, 0xAF, 0x43, 0xE1,
+ 0x84, 0xB2, 0x43, 0xE1, 0x84, 0xB6, 0x43, 0xE1,
+ 0x85, 0x80, 0x43, 0xE1, 0x85, 0x87, 0x43, 0xE1,
+ 0x85, 0x8C, 0x43, 0xE1, 0x85, 0x97, 0x43, 0xE1,
+ // Bytes 3c0 - 3ff
+ 0x85, 0x98, 0x43, 0xE1, 0x85, 0x99, 0x43, 0xE1,
+ 0x85, 0xA0, 0x43, 0xE1, 0x86, 0x84, 0x43, 0xE1,
+ 0x86, 0x85, 0x43, 0xE1, 0x86, 0x88, 0x43, 0xE1,
+ 0x86, 0x91, 0x43, 0xE1, 0x86, 0x92, 0x43, 0xE1,
+ 0x86, 0x94, 0x43, 0xE1, 0x86, 0x9E, 0x43, 0xE1,
+ 0x86, 0xA1, 0x43, 0xE1, 0x87, 0x87, 0x43, 0xE1,
+ 0x87, 0x88, 0x43, 0xE1, 0x87, 0x8C, 0x43, 0xE1,
+ 0x87, 0x8E, 0x43, 0xE1, 0x87, 0x93, 0x43, 0xE1,
+ // Bytes 400 - 43f
+ 0x87, 0x97, 0x43, 0xE1, 0x87, 0x99, 0x43, 0xE1,
+ 0x87, 0x9D, 0x43, 0xE1, 0x87, 0x9F, 0x43, 0xE1,
+ 0x87, 0xB1, 0x43, 0xE1, 0x87, 0xB2, 0x43, 0xE1,
+ 0xB4, 0x82, 0x43, 0xE1, 0xB4, 0x96, 0x43, 0xE1,
+ 0xB4, 0x97, 0x43, 0xE1, 0xB4, 0x9C, 0x43, 0xE1,
+ 0xB4, 0x9D, 0x43, 0xE1, 0xB4, 0xA5, 0x43, 0xE1,
+ 0xB5, 0xBB, 0x43, 0xE1, 0xB6, 0x85, 0x43, 0xE2,
+ 0x80, 0x82, 0x43, 0xE2, 0x80, 0x83, 0x43, 0xE2,
+ // Bytes 440 - 47f
+ 0x80, 0x90, 0x43, 0xE2, 0x80, 0x93, 0x43, 0xE2,
+ 0x80, 0x94, 0x43, 0xE2, 0x82, 0xA9, 0x43, 0xE2,
+ 0x86, 0x90, 0x43, 0xE2, 0x86, 0x91, 0x43, 0xE2,
+ 0x86, 0x92, 0x43, 0xE2, 0x86, 0x93, 0x43, 0xE2,
+ 0x88, 0x82, 0x43, 0xE2, 0x88, 0x87, 0x43, 0xE2,
+ 0x88, 0x91, 0x43, 0xE2, 0x88, 0x92, 0x43, 0xE2,
+ 0x94, 0x82, 0x43, 0xE2, 0x96, 0xA0, 0x43, 0xE2,
+ 0x97, 0x8B, 0x43, 0xE2, 0xA6, 0x85, 0x43, 0xE2,
+ // Bytes 480 - 4bf
+ 0xA6, 0x86, 0x43, 0xE2, 0xB5, 0xA1, 0x43, 0xE3,
+ 0x80, 0x81, 0x43, 0xE3, 0x80, 0x82, 0x43, 0xE3,
+ 0x80, 0x88, 0x43, 0xE3, 0x80, 0x89, 0x43, 0xE3,
+ 0x80, 0x8A, 0x43, 0xE3, 0x80, 0x8B, 0x43, 0xE3,
+ 0x80, 0x8C, 0x43, 0xE3, 0x80, 0x8D, 0x43, 0xE3,
+ 0x80, 0x8E, 0x43, 0xE3, 0x80, 0x8F, 0x43, 0xE3,
+ 0x80, 0x90, 0x43, 0xE3, 0x80, 0x91, 0x43, 0xE3,
+ 0x80, 0x92, 0x43, 0xE3, 0x80, 0x94, 0x43, 0xE3,
+ // Bytes 4c0 - 4ff
+ 0x80, 0x95, 0x43, 0xE3, 0x80, 0x96, 0x43, 0xE3,
+ 0x80, 0x97, 0x43, 0xE3, 0x82, 0xA1, 0x43, 0xE3,
+ 0x82, 0xA2, 0x43, 0xE3, 0x82, 0xA3, 0x43, 0xE3,
+ 0x82, 0xA4, 0x43, 0xE3, 0x82, 0xA5, 0x43, 0xE3,
+ 0x82, 0xA6, 0x43, 0xE3, 0x82, 0xA7, 0x43, 0xE3,
+ 0x82, 0xA8, 0x43, 0xE3, 0x82, 0xA9, 0x43, 0xE3,
+ 0x82, 0xAA, 0x43, 0xE3, 0x82, 0xAB, 0x43, 0xE3,
+ 0x82, 0xAD, 0x43, 0xE3, 0x82, 0xAF, 0x43, 0xE3,
+ // Bytes 500 - 53f
+ 0x82, 0xB1, 0x43, 0xE3, 0x82, 0xB3, 0x43, 0xE3,
+ 0x82, 0xB5, 0x43, 0xE3, 0x82, 0xB7, 0x43, 0xE3,
+ 0x82, 0xB9, 0x43, 0xE3, 0x82, 0xBB, 0x43, 0xE3,
+ 0x82, 0xBD, 0x43, 0xE3, 0x82, 0xBF, 0x43, 0xE3,
+ 0x83, 0x81, 0x43, 0xE3, 0x83, 0x83, 0x43, 0xE3,
+ 0x83, 0x84, 0x43, 0xE3, 0x83, 0x86, 0x43, 0xE3,
+ 0x83, 0x88, 0x43, 0xE3, 0x83, 0x8A, 0x43, 0xE3,
+ 0x83, 0x8B, 0x43, 0xE3, 0x83, 0x8C, 0x43, 0xE3,
+ // Bytes 540 - 57f
+ 0x83, 0x8D, 0x43, 0xE3, 0x83, 0x8E, 0x43, 0xE3,
+ 0x83, 0x8F, 0x43, 0xE3, 0x83, 0x92, 0x43, 0xE3,
+ 0x83, 0x95, 0x43, 0xE3, 0x83, 0x98, 0x43, 0xE3,
+ 0x83, 0x9B, 0x43, 0xE3, 0x83, 0x9E, 0x43, 0xE3,
+ 0x83, 0x9F, 0x43, 0xE3, 0x83, 0xA0, 0x43, 0xE3,
+ 0x83, 0xA1, 0x43, 0xE3, 0x83, 0xA2, 0x43, 0xE3,
+ 0x83, 0xA3, 0x43, 0xE3, 0x83, 0xA4, 0x43, 0xE3,
+ 0x83, 0xA5, 0x43, 0xE3, 0x83, 0xA6, 0x43, 0xE3,
+ // Bytes 580 - 5bf
+ 0x83, 0xA7, 0x43, 0xE3, 0x83, 0xA8, 0x43, 0xE3,
+ 0x83, 0xA9, 0x43, 0xE3, 0x83, 0xAA, 0x43, 0xE3,
+ 0x83, 0xAB, 0x43, 0xE3, 0x83, 0xAC, 0x43, 0xE3,
+ 0x83, 0xAD, 0x43, 0xE3, 0x83, 0xAF, 0x43, 0xE3,
+ 0x83, 0xB0, 0x43, 0xE3, 0x83, 0xB1, 0x43, 0xE3,
+ 0x83, 0xB2, 0x43, 0xE3, 0x83, 0xB3, 0x43, 0xE3,
+ 0x83, 0xBB, 0x43, 0xE3, 0x83, 0xBC, 0x43, 0xE3,
+ 0x92, 0x9E, 0x43, 0xE3, 0x92, 0xB9, 0x43, 0xE3,
+ // Bytes 5c0 - 5ff
+ 0x92, 0xBB, 0x43, 0xE3, 0x93, 0x9F, 0x43, 0xE3,
+ 0x94, 0x95, 0x43, 0xE3, 0x9B, 0xAE, 0x43, 0xE3,
+ 0x9B, 0xBC, 0x43, 0xE3, 0x9E, 0x81, 0x43, 0xE3,
+ 0xA0, 0xAF, 0x43, 0xE3, 0xA1, 0xA2, 0x43, 0xE3,
+ 0xA1, 0xBC, 0x43, 0xE3, 0xA3, 0x87, 0x43, 0xE3,
+ 0xA3, 0xA3, 0x43, 0xE3, 0xA4, 0x9C, 0x43, 0xE3,
+ 0xA4, 0xBA, 0x43, 0xE3, 0xA8, 0xAE, 0x43, 0xE3,
+ 0xA9, 0xAC, 0x43, 0xE3, 0xAB, 0xA4, 0x43, 0xE3,
+ // Bytes 600 - 63f
+ 0xAC, 0x88, 0x43, 0xE3, 0xAC, 0x99, 0x43, 0xE3,
+ 0xAD, 0x89, 0x43, 0xE3, 0xAE, 0x9D, 0x43, 0xE3,
+ 0xB0, 0x98, 0x43, 0xE3, 0xB1, 0x8E, 0x43, 0xE3,
+ 0xB4, 0xB3, 0x43, 0xE3, 0xB6, 0x96, 0x43, 0xE3,
+ 0xBA, 0xAC, 0x43, 0xE3, 0xBA, 0xB8, 0x43, 0xE3,
+ 0xBC, 0x9B, 0x43, 0xE3, 0xBF, 0xBC, 0x43, 0xE4,
+ 0x80, 0x88, 0x43, 0xE4, 0x80, 0x98, 0x43, 0xE4,
+ 0x80, 0xB9, 0x43, 0xE4, 0x81, 0x86, 0x43, 0xE4,
+ // Bytes 640 - 67f
+ 0x82, 0x96, 0x43, 0xE4, 0x83, 0xA3, 0x43, 0xE4,
+ 0x84, 0xAF, 0x43, 0xE4, 0x88, 0x82, 0x43, 0xE4,
+ 0x88, 0xA7, 0x43, 0xE4, 0x8A, 0xA0, 0x43, 0xE4,
+ 0x8C, 0x81, 0x43, 0xE4, 0x8C, 0xB4, 0x43, 0xE4,
+ 0x8D, 0x99, 0x43, 0xE4, 0x8F, 0x95, 0x43, 0xE4,
+ 0x8F, 0x99, 0x43, 0xE4, 0x90, 0x8B, 0x43, 0xE4,
+ 0x91, 0xAB, 0x43, 0xE4, 0x94, 0xAB, 0x43, 0xE4,
+ 0x95, 0x9D, 0x43, 0xE4, 0x95, 0xA1, 0x43, 0xE4,
+ // Bytes 680 - 6bf
+ 0x95, 0xAB, 0x43, 0xE4, 0x97, 0x97, 0x43, 0xE4,
+ 0x97, 0xB9, 0x43, 0xE4, 0x98, 0xB5, 0x43, 0xE4,
+ 0x9A, 0xBE, 0x43, 0xE4, 0x9B, 0x87, 0x43, 0xE4,
+ 0xA6, 0x95, 0x43, 0xE4, 0xA7, 0xA6, 0x43, 0xE4,
+ 0xA9, 0xAE, 0x43, 0xE4, 0xA9, 0xB6, 0x43, 0xE4,
+ 0xAA, 0xB2, 0x43, 0xE4, 0xAC, 0xB3, 0x43, 0xE4,
+ 0xAF, 0x8E, 0x43, 0xE4, 0xB3, 0x8E, 0x43, 0xE4,
+ 0xB3, 0xAD, 0x43, 0xE4, 0xB3, 0xB8, 0x43, 0xE4,
+ // Bytes 6c0 - 6ff
+ 0xB5, 0x96, 0x43, 0xE4, 0xB8, 0x80, 0x43, 0xE4,
+ 0xB8, 0x81, 0x43, 0xE4, 0xB8, 0x83, 0x43, 0xE4,
+ 0xB8, 0x89, 0x43, 0xE4, 0xB8, 0x8A, 0x43, 0xE4,
+ 0xB8, 0x8B, 0x43, 0xE4, 0xB8, 0x8D, 0x43, 0xE4,
+ 0xB8, 0x99, 0x43, 0xE4, 0xB8, 0xA6, 0x43, 0xE4,
+ 0xB8, 0xA8, 0x43, 0xE4, 0xB8, 0xAD, 0x43, 0xE4,
+ 0xB8, 0xB2, 0x43, 0xE4, 0xB8, 0xB6, 0x43, 0xE4,
+ 0xB8, 0xB8, 0x43, 0xE4, 0xB8, 0xB9, 0x43, 0xE4,
+ // Bytes 700 - 73f
+ 0xB8, 0xBD, 0x43, 0xE4, 0xB8, 0xBF, 0x43, 0xE4,
+ 0xB9, 0x81, 0x43, 0xE4, 0xB9, 0x99, 0x43, 0xE4,
+ 0xB9, 0x9D, 0x43, 0xE4, 0xBA, 0x82, 0x43, 0xE4,
+ 0xBA, 0x85, 0x43, 0xE4, 0xBA, 0x86, 0x43, 0xE4,
+ 0xBA, 0x8C, 0x43, 0xE4, 0xBA, 0x94, 0x43, 0xE4,
+ 0xBA, 0xA0, 0x43, 0xE4, 0xBA, 0xA4, 0x43, 0xE4,
+ 0xBA, 0xAE, 0x43, 0xE4, 0xBA, 0xBA, 0x43, 0xE4,
+ 0xBB, 0x80, 0x43, 0xE4, 0xBB, 0x8C, 0x43, 0xE4,
+ // Bytes 740 - 77f
+ 0xBB, 0xA4, 0x43, 0xE4, 0xBC, 0x81, 0x43, 0xE4,
+ 0xBC, 0x91, 0x43, 0xE4, 0xBD, 0xA0, 0x43, 0xE4,
+ 0xBE, 0x80, 0x43, 0xE4, 0xBE, 0x86, 0x43, 0xE4,
+ 0xBE, 0x8B, 0x43, 0xE4, 0xBE, 0xAE, 0x43, 0xE4,
+ 0xBE, 0xBB, 0x43, 0xE4, 0xBE, 0xBF, 0x43, 0xE5,
+ 0x80, 0x82, 0x43, 0xE5, 0x80, 0xAB, 0x43, 0xE5,
+ 0x81, 0xBA, 0x43, 0xE5, 0x82, 0x99, 0x43, 0xE5,
+ 0x83, 0x8F, 0x43, 0xE5, 0x83, 0x9A, 0x43, 0xE5,
+ // Bytes 780 - 7bf
+ 0x83, 0xA7, 0x43, 0xE5, 0x84, 0xAA, 0x43, 0xE5,
+ 0x84, 0xBF, 0x43, 0xE5, 0x85, 0x80, 0x43, 0xE5,
+ 0x85, 0x85, 0x43, 0xE5, 0x85, 0x8D, 0x43, 0xE5,
+ 0x85, 0x94, 0x43, 0xE5, 0x85, 0xA4, 0x43, 0xE5,
+ 0x85, 0xA5, 0x43, 0xE5, 0x85, 0xA7, 0x43, 0xE5,
+ 0x85, 0xA8, 0x43, 0xE5, 0x85, 0xA9, 0x43, 0xE5,
+ 0x85, 0xAB, 0x43, 0xE5, 0x85, 0xAD, 0x43, 0xE5,
+ 0x85, 0xB7, 0x43, 0xE5, 0x86, 0x80, 0x43, 0xE5,
+ // Bytes 7c0 - 7ff
+ 0x86, 0x82, 0x43, 0xE5, 0x86, 0x8D, 0x43, 0xE5,
+ 0x86, 0x92, 0x43, 0xE5, 0x86, 0x95, 0x43, 0xE5,
+ 0x86, 0x96, 0x43, 0xE5, 0x86, 0x97, 0x43, 0xE5,
+ 0x86, 0x99, 0x43, 0xE5, 0x86, 0xA4, 0x43, 0xE5,
+ 0x86, 0xAB, 0x43, 0xE5, 0x86, 0xAC, 0x43, 0xE5,
+ 0x86, 0xB5, 0x43, 0xE5, 0x86, 0xB7, 0x43, 0xE5,
+ 0x87, 0x89, 0x43, 0xE5, 0x87, 0x8C, 0x43, 0xE5,
+ 0x87, 0x9C, 0x43, 0xE5, 0x87, 0x9E, 0x43, 0xE5,
+ // Bytes 800 - 83f
+ 0x87, 0xA0, 0x43, 0xE5, 0x87, 0xB5, 0x43, 0xE5,
+ 0x88, 0x80, 0x43, 0xE5, 0x88, 0x83, 0x43, 0xE5,
+ 0x88, 0x87, 0x43, 0xE5, 0x88, 0x97, 0x43, 0xE5,
+ 0x88, 0x9D, 0x43, 0xE5, 0x88, 0xA9, 0x43, 0xE5,
+ 0x88, 0xBA, 0x43, 0xE5, 0x88, 0xBB, 0x43, 0xE5,
+ 0x89, 0x86, 0x43, 0xE5, 0x89, 0x8D, 0x43, 0xE5,
+ 0x89, 0xB2, 0x43, 0xE5, 0x89, 0xB7, 0x43, 0xE5,
+ 0x8A, 0x89, 0x43, 0xE5, 0x8A, 0x9B, 0x43, 0xE5,
+ // Bytes 840 - 87f
+ 0x8A, 0xA3, 0x43, 0xE5, 0x8A, 0xB3, 0x43, 0xE5,
+ 0x8A, 0xB4, 0x43, 0xE5, 0x8B, 0x87, 0x43, 0xE5,
+ 0x8B, 0x89, 0x43, 0xE5, 0x8B, 0x92, 0x43, 0xE5,
+ 0x8B, 0x9E, 0x43, 0xE5, 0x8B, 0xA4, 0x43, 0xE5,
+ 0x8B, 0xB5, 0x43, 0xE5, 0x8B, 0xB9, 0x43, 0xE5,
+ 0x8B, 0xBA, 0x43, 0xE5, 0x8C, 0x85, 0x43, 0xE5,
+ 0x8C, 0x86, 0x43, 0xE5, 0x8C, 0x95, 0x43, 0xE5,
+ 0x8C, 0x97, 0x43, 0xE5, 0x8C, 0x9A, 0x43, 0xE5,
+ // Bytes 880 - 8bf
+ 0x8C, 0xB8, 0x43, 0xE5, 0x8C, 0xBB, 0x43, 0xE5,
+ 0x8C, 0xBF, 0x43, 0xE5, 0x8D, 0x81, 0x43, 0xE5,
+ 0x8D, 0x84, 0x43, 0xE5, 0x8D, 0x85, 0x43, 0xE5,
+ 0x8D, 0x89, 0x43, 0xE5, 0x8D, 0x91, 0x43, 0xE5,
+ 0x8D, 0x94, 0x43, 0xE5, 0x8D, 0x9A, 0x43, 0xE5,
+ 0x8D, 0x9C, 0x43, 0xE5, 0x8D, 0xA9, 0x43, 0xE5,
+ 0x8D, 0xB0, 0x43, 0xE5, 0x8D, 0xB3, 0x43, 0xE5,
+ 0x8D, 0xB5, 0x43, 0xE5, 0x8D, 0xBD, 0x43, 0xE5,
+ // Bytes 8c0 - 8ff
+ 0x8D, 0xBF, 0x43, 0xE5, 0x8E, 0x82, 0x43, 0xE5,
+ 0x8E, 0xB6, 0x43, 0xE5, 0x8F, 0x83, 0x43, 0xE5,
+ 0x8F, 0x88, 0x43, 0xE5, 0x8F, 0x8A, 0x43, 0xE5,
+ 0x8F, 0x8C, 0x43, 0xE5, 0x8F, 0x9F, 0x43, 0xE5,
+ 0x8F, 0xA3, 0x43, 0xE5, 0x8F, 0xA5, 0x43, 0xE5,
+ 0x8F, 0xAB, 0x43, 0xE5, 0x8F, 0xAF, 0x43, 0xE5,
+ 0x8F, 0xB1, 0x43, 0xE5, 0x8F, 0xB3, 0x43, 0xE5,
+ 0x90, 0x86, 0x43, 0xE5, 0x90, 0x88, 0x43, 0xE5,
+ // Bytes 900 - 93f
+ 0x90, 0x8D, 0x43, 0xE5, 0x90, 0x8F, 0x43, 0xE5,
+ 0x90, 0x9D, 0x43, 0xE5, 0x90, 0xB8, 0x43, 0xE5,
+ 0x90, 0xB9, 0x43, 0xE5, 0x91, 0x82, 0x43, 0xE5,
+ 0x91, 0x88, 0x43, 0xE5, 0x91, 0xA8, 0x43, 0xE5,
+ 0x92, 0x9E, 0x43, 0xE5, 0x92, 0xA2, 0x43, 0xE5,
+ 0x92, 0xBD, 0x43, 0xE5, 0x93, 0xB6, 0x43, 0xE5,
+ 0x94, 0x90, 0x43, 0xE5, 0x95, 0x8F, 0x43, 0xE5,
+ 0x95, 0x93, 0x43, 0xE5, 0x95, 0x95, 0x43, 0xE5,
+ // Bytes 940 - 97f
+ 0x95, 0xA3, 0x43, 0xE5, 0x96, 0x84, 0x43, 0xE5,
+ 0x96, 0x87, 0x43, 0xE5, 0x96, 0x99, 0x43, 0xE5,
+ 0x96, 0x9D, 0x43, 0xE5, 0x96, 0xAB, 0x43, 0xE5,
+ 0x96, 0xB3, 0x43, 0xE5, 0x96, 0xB6, 0x43, 0xE5,
+ 0x97, 0x80, 0x43, 0xE5, 0x97, 0x82, 0x43, 0xE5,
+ 0x97, 0xA2, 0x43, 0xE5, 0x98, 0x86, 0x43, 0xE5,
+ 0x99, 0x91, 0x43, 0xE5, 0x99, 0xA8, 0x43, 0xE5,
+ 0x99, 0xB4, 0x43, 0xE5, 0x9B, 0x97, 0x43, 0xE5,
+ // Bytes 980 - 9bf
+ 0x9B, 0x9B, 0x43, 0xE5, 0x9B, 0xB9, 0x43, 0xE5,
+ 0x9C, 0x96, 0x43, 0xE5, 0x9C, 0x97, 0x43, 0xE5,
+ 0x9C, 0x9F, 0x43, 0xE5, 0x9C, 0xB0, 0x43, 0xE5,
+ 0x9E, 0x8B, 0x43, 0xE5, 0x9F, 0x8E, 0x43, 0xE5,
+ 0x9F, 0xB4, 0x43, 0xE5, 0xA0, 0x8D, 0x43, 0xE5,
+ 0xA0, 0xB1, 0x43, 0xE5, 0xA0, 0xB2, 0x43, 0xE5,
+ 0xA1, 0x80, 0x43, 0xE5, 0xA1, 0x9A, 0x43, 0xE5,
+ 0xA1, 0x9E, 0x43, 0xE5, 0xA2, 0xA8, 0x43, 0xE5,
+ // Bytes 9c0 - 9ff
+ 0xA2, 0xAC, 0x43, 0xE5, 0xA2, 0xB3, 0x43, 0xE5,
+ 0xA3, 0x98, 0x43, 0xE5, 0xA3, 0x9F, 0x43, 0xE5,
+ 0xA3, 0xAB, 0x43, 0xE5, 0xA3, 0xAE, 0x43, 0xE5,
+ 0xA3, 0xB0, 0x43, 0xE5, 0xA3, 0xB2, 0x43, 0xE5,
+ 0xA3, 0xB7, 0x43, 0xE5, 0xA4, 0x82, 0x43, 0xE5,
+ 0xA4, 0x86, 0x43, 0xE5, 0xA4, 0x8A, 0x43, 0xE5,
+ 0xA4, 0x95, 0x43, 0xE5, 0xA4, 0x9A, 0x43, 0xE5,
+ 0xA4, 0x9C, 0x43, 0xE5, 0xA4, 0xA2, 0x43, 0xE5,
+ // Bytes a00 - a3f
+ 0xA4, 0xA7, 0x43, 0xE5, 0xA4, 0xA9, 0x43, 0xE5,
+ 0xA5, 0x84, 0x43, 0xE5, 0xA5, 0x88, 0x43, 0xE5,
+ 0xA5, 0x91, 0x43, 0xE5, 0xA5, 0x94, 0x43, 0xE5,
+ 0xA5, 0xA2, 0x43, 0xE5, 0xA5, 0xB3, 0x43, 0xE5,
+ 0xA7, 0x98, 0x43, 0xE5, 0xA7, 0xAC, 0x43, 0xE5,
+ 0xA8, 0x9B, 0x43, 0xE5, 0xA8, 0xA7, 0x43, 0xE5,
+ 0xA9, 0xA2, 0x43, 0xE5, 0xA9, 0xA6, 0x43, 0xE5,
+ 0xAA, 0xB5, 0x43, 0xE5, 0xAC, 0x88, 0x43, 0xE5,
+ // Bytes a40 - a7f
+ 0xAC, 0xA8, 0x43, 0xE5, 0xAC, 0xBE, 0x43, 0xE5,
+ 0xAD, 0x90, 0x43, 0xE5, 0xAD, 0x97, 0x43, 0xE5,
+ 0xAD, 0xA6, 0x43, 0xE5, 0xAE, 0x80, 0x43, 0xE5,
+ 0xAE, 0x85, 0x43, 0xE5, 0xAE, 0x97, 0x43, 0xE5,
+ 0xAF, 0x83, 0x43, 0xE5, 0xAF, 0x98, 0x43, 0xE5,
+ 0xAF, 0xA7, 0x43, 0xE5, 0xAF, 0xAE, 0x43, 0xE5,
+ 0xAF, 0xB3, 0x43, 0xE5, 0xAF, 0xB8, 0x43, 0xE5,
+ 0xAF, 0xBF, 0x43, 0xE5, 0xB0, 0x86, 0x43, 0xE5,
+ // Bytes a80 - abf
+ 0xB0, 0x8F, 0x43, 0xE5, 0xB0, 0xA2, 0x43, 0xE5,
+ 0xB0, 0xB8, 0x43, 0xE5, 0xB0, 0xBF, 0x43, 0xE5,
+ 0xB1, 0xA0, 0x43, 0xE5, 0xB1, 0xA2, 0x43, 0xE5,
+ 0xB1, 0xA4, 0x43, 0xE5, 0xB1, 0xA5, 0x43, 0xE5,
+ 0xB1, 0xAE, 0x43, 0xE5, 0xB1, 0xB1, 0x43, 0xE5,
+ 0xB2, 0x8D, 0x43, 0xE5, 0xB3, 0x80, 0x43, 0xE5,
+ 0xB4, 0x99, 0x43, 0xE5, 0xB5, 0x83, 0x43, 0xE5,
+ 0xB5, 0x90, 0x43, 0xE5, 0xB5, 0xAB, 0x43, 0xE5,
+ // Bytes ac0 - aff
+ 0xB5, 0xAE, 0x43, 0xE5, 0xB5, 0xBC, 0x43, 0xE5,
+ 0xB6, 0xB2, 0x43, 0xE5, 0xB6, 0xBA, 0x43, 0xE5,
+ 0xB7, 0x9B, 0x43, 0xE5, 0xB7, 0xA1, 0x43, 0xE5,
+ 0xB7, 0xA2, 0x43, 0xE5, 0xB7, 0xA5, 0x43, 0xE5,
+ 0xB7, 0xA6, 0x43, 0xE5, 0xB7, 0xB1, 0x43, 0xE5,
+ 0xB7, 0xBD, 0x43, 0xE5, 0xB7, 0xBE, 0x43, 0xE5,
+ 0xB8, 0xA8, 0x43, 0xE5, 0xB8, 0xBD, 0x43, 0xE5,
+ 0xB9, 0xA9, 0x43, 0xE5, 0xB9, 0xB2, 0x43, 0xE5,
+ // Bytes b00 - b3f
+ 0xB9, 0xB4, 0x43, 0xE5, 0xB9, 0xBA, 0x43, 0xE5,
+ 0xB9, 0xBC, 0x43, 0xE5, 0xB9, 0xBF, 0x43, 0xE5,
+ 0xBA, 0xA6, 0x43, 0xE5, 0xBA, 0xB0, 0x43, 0xE5,
+ 0xBA, 0xB3, 0x43, 0xE5, 0xBA, 0xB6, 0x43, 0xE5,
+ 0xBB, 0x89, 0x43, 0xE5, 0xBB, 0x8A, 0x43, 0xE5,
+ 0xBB, 0x92, 0x43, 0xE5, 0xBB, 0x93, 0x43, 0xE5,
+ 0xBB, 0x99, 0x43, 0xE5, 0xBB, 0xAC, 0x43, 0xE5,
+ 0xBB, 0xB4, 0x43, 0xE5, 0xBB, 0xBE, 0x43, 0xE5,
+ // Bytes b40 - b7f
+ 0xBC, 0x84, 0x43, 0xE5, 0xBC, 0x8B, 0x43, 0xE5,
+ 0xBC, 0x93, 0x43, 0xE5, 0xBC, 0xA2, 0x43, 0xE5,
+ 0xBD, 0x90, 0x43, 0xE5, 0xBD, 0x93, 0x43, 0xE5,
+ 0xBD, 0xA1, 0x43, 0xE5, 0xBD, 0xA2, 0x43, 0xE5,
+ 0xBD, 0xA9, 0x43, 0xE5, 0xBD, 0xAB, 0x43, 0xE5,
+ 0xBD, 0xB3, 0x43, 0xE5, 0xBE, 0x8B, 0x43, 0xE5,
+ 0xBE, 0x8C, 0x43, 0xE5, 0xBE, 0x97, 0x43, 0xE5,
+ 0xBE, 0x9A, 0x43, 0xE5, 0xBE, 0xA9, 0x43, 0xE5,
+ // Bytes b80 - bbf
+ 0xBE, 0xAD, 0x43, 0xE5, 0xBF, 0x83, 0x43, 0xE5,
+ 0xBF, 0x8D, 0x43, 0xE5, 0xBF, 0x97, 0x43, 0xE5,
+ 0xBF, 0xB5, 0x43, 0xE5, 0xBF, 0xB9, 0x43, 0xE6,
+ 0x80, 0x92, 0x43, 0xE6, 0x80, 0x9C, 0x43, 0xE6,
+ 0x81, 0xB5, 0x43, 0xE6, 0x82, 0x81, 0x43, 0xE6,
+ 0x82, 0x94, 0x43, 0xE6, 0x83, 0x87, 0x43, 0xE6,
+ 0x83, 0x98, 0x43, 0xE6, 0x83, 0xA1, 0x43, 0xE6,
+ 0x84, 0x88, 0x43, 0xE6, 0x85, 0x84, 0x43, 0xE6,
+ // Bytes bc0 - bff
+ 0x85, 0x88, 0x43, 0xE6, 0x85, 0x8C, 0x43, 0xE6,
+ 0x85, 0x8E, 0x43, 0xE6, 0x85, 0xA0, 0x43, 0xE6,
+ 0x85, 0xA8, 0x43, 0xE6, 0x85, 0xBA, 0x43, 0xE6,
+ 0x86, 0x8E, 0x43, 0xE6, 0x86, 0x90, 0x43, 0xE6,
+ 0x86, 0xA4, 0x43, 0xE6, 0x86, 0xAF, 0x43, 0xE6,
+ 0x86, 0xB2, 0x43, 0xE6, 0x87, 0x9E, 0x43, 0xE6,
+ 0x87, 0xB2, 0x43, 0xE6, 0x87, 0xB6, 0x43, 0xE6,
+ 0x88, 0x80, 0x43, 0xE6, 0x88, 0x88, 0x43, 0xE6,
+ // Bytes c00 - c3f
+ 0x88, 0x90, 0x43, 0xE6, 0x88, 0x9B, 0x43, 0xE6,
+ 0x88, 0xAE, 0x43, 0xE6, 0x88, 0xB4, 0x43, 0xE6,
+ 0x88, 0xB6, 0x43, 0xE6, 0x89, 0x8B, 0x43, 0xE6,
+ 0x89, 0x93, 0x43, 0xE6, 0x89, 0x9D, 0x43, 0xE6,
+ 0x8A, 0x95, 0x43, 0xE6, 0x8A, 0xB1, 0x43, 0xE6,
+ 0x8B, 0x89, 0x43, 0xE6, 0x8B, 0x8F, 0x43, 0xE6,
+ 0x8B, 0x93, 0x43, 0xE6, 0x8B, 0x94, 0x43, 0xE6,
+ 0x8B, 0xBC, 0x43, 0xE6, 0x8B, 0xBE, 0x43, 0xE6,
+ // Bytes c40 - c7f
+ 0x8C, 0x87, 0x43, 0xE6, 0x8C, 0xBD, 0x43, 0xE6,
+ 0x8D, 0x90, 0x43, 0xE6, 0x8D, 0x95, 0x43, 0xE6,
+ 0x8D, 0xA8, 0x43, 0xE6, 0x8D, 0xBB, 0x43, 0xE6,
+ 0x8E, 0x83, 0x43, 0xE6, 0x8E, 0xA0, 0x43, 0xE6,
+ 0x8E, 0xA9, 0x43, 0xE6, 0x8F, 0x84, 0x43, 0xE6,
+ 0x8F, 0x85, 0x43, 0xE6, 0x8F, 0xA4, 0x43, 0xE6,
+ 0x90, 0x9C, 0x43, 0xE6, 0x90, 0xA2, 0x43, 0xE6,
+ 0x91, 0x92, 0x43, 0xE6, 0x91, 0xA9, 0x43, 0xE6,
+ // Bytes c80 - cbf
+ 0x91, 0xB7, 0x43, 0xE6, 0x91, 0xBE, 0x43, 0xE6,
+ 0x92, 0x9A, 0x43, 0xE6, 0x92, 0x9D, 0x43, 0xE6,
+ 0x93, 0x84, 0x43, 0xE6, 0x94, 0xAF, 0x43, 0xE6,
+ 0x94, 0xB4, 0x43, 0xE6, 0x95, 0x8F, 0x43, 0xE6,
+ 0x95, 0x96, 0x43, 0xE6, 0x95, 0xAC, 0x43, 0xE6,
+ 0x95, 0xB8, 0x43, 0xE6, 0x96, 0x87, 0x43, 0xE6,
+ 0x96, 0x97, 0x43, 0xE6, 0x96, 0x99, 0x43, 0xE6,
+ 0x96, 0xA4, 0x43, 0xE6, 0x96, 0xB0, 0x43, 0xE6,
+ // Bytes cc0 - cff
+ 0x96, 0xB9, 0x43, 0xE6, 0x97, 0x85, 0x43, 0xE6,
+ 0x97, 0xA0, 0x43, 0xE6, 0x97, 0xA2, 0x43, 0xE6,
+ 0x97, 0xA3, 0x43, 0xE6, 0x97, 0xA5, 0x43, 0xE6,
+ 0x98, 0x93, 0x43, 0xE6, 0x98, 0xA0, 0x43, 0xE6,
+ 0x99, 0x89, 0x43, 0xE6, 0x99, 0xB4, 0x43, 0xE6,
+ 0x9A, 0x88, 0x43, 0xE6, 0x9A, 0x91, 0x43, 0xE6,
+ 0x9A, 0x9C, 0x43, 0xE6, 0x9A, 0xB4, 0x43, 0xE6,
+ 0x9B, 0x86, 0x43, 0xE6, 0x9B, 0xB0, 0x43, 0xE6,
+ // Bytes d00 - d3f
+ 0x9B, 0xB4, 0x43, 0xE6, 0x9B, 0xB8, 0x43, 0xE6,
+ 0x9C, 0x80, 0x43, 0xE6, 0x9C, 0x88, 0x43, 0xE6,
+ 0x9C, 0x89, 0x43, 0xE6, 0x9C, 0x97, 0x43, 0xE6,
+ 0x9C, 0x9B, 0x43, 0xE6, 0x9C, 0xA1, 0x43, 0xE6,
+ 0x9C, 0xA8, 0x43, 0xE6, 0x9D, 0x8E, 0x43, 0xE6,
+ 0x9D, 0x93, 0x43, 0xE6, 0x9D, 0x96, 0x43, 0xE6,
+ 0x9D, 0x9E, 0x43, 0xE6, 0x9D, 0xBB, 0x43, 0xE6,
+ 0x9E, 0x85, 0x43, 0xE6, 0x9E, 0x97, 0x43, 0xE6,
+ // Bytes d40 - d7f
+ 0x9F, 0xB3, 0x43, 0xE6, 0x9F, 0xBA, 0x43, 0xE6,
+ 0xA0, 0x97, 0x43, 0xE6, 0xA0, 0x9F, 0x43, 0xE6,
+ 0xA0, 0xAA, 0x43, 0xE6, 0xA1, 0x92, 0x43, 0xE6,
+ 0xA2, 0x81, 0x43, 0xE6, 0xA2, 0x85, 0x43, 0xE6,
+ 0xA2, 0x8E, 0x43, 0xE6, 0xA2, 0xA8, 0x43, 0xE6,
+ 0xA4, 0x94, 0x43, 0xE6, 0xA5, 0x82, 0x43, 0xE6,
+ 0xA6, 0xA3, 0x43, 0xE6, 0xA7, 0xAA, 0x43, 0xE6,
+ 0xA8, 0x82, 0x43, 0xE6, 0xA8, 0x93, 0x43, 0xE6,
+ // Bytes d80 - dbf
+ 0xAA, 0xA8, 0x43, 0xE6, 0xAB, 0x93, 0x43, 0xE6,
+ 0xAB, 0x9B, 0x43, 0xE6, 0xAC, 0x84, 0x43, 0xE6,
+ 0xAC, 0xA0, 0x43, 0xE6, 0xAC, 0xA1, 0x43, 0xE6,
+ 0xAD, 0x94, 0x43, 0xE6, 0xAD, 0xA2, 0x43, 0xE6,
+ 0xAD, 0xA3, 0x43, 0xE6, 0xAD, 0xB2, 0x43, 0xE6,
+ 0xAD, 0xB7, 0x43, 0xE6, 0xAD, 0xB9, 0x43, 0xE6,
+ 0xAE, 0x9F, 0x43, 0xE6, 0xAE, 0xAE, 0x43, 0xE6,
+ 0xAE, 0xB3, 0x43, 0xE6, 0xAE, 0xBA, 0x43, 0xE6,
+ // Bytes dc0 - dff
+ 0xAE, 0xBB, 0x43, 0xE6, 0xAF, 0x8B, 0x43, 0xE6,
+ 0xAF, 0x8D, 0x43, 0xE6, 0xAF, 0x94, 0x43, 0xE6,
+ 0xAF, 0x9B, 0x43, 0xE6, 0xB0, 0x8F, 0x43, 0xE6,
+ 0xB0, 0x94, 0x43, 0xE6, 0xB0, 0xB4, 0x43, 0xE6,
+ 0xB1, 0x8E, 0x43, 0xE6, 0xB1, 0xA7, 0x43, 0xE6,
+ 0xB2, 0x88, 0x43, 0xE6, 0xB2, 0xBF, 0x43, 0xE6,
+ 0xB3, 0x8C, 0x43, 0xE6, 0xB3, 0x8D, 0x43, 0xE6,
+ 0xB3, 0xA5, 0x43, 0xE6, 0xB3, 0xA8, 0x43, 0xE6,
+ // Bytes e00 - e3f
+ 0xB4, 0x96, 0x43, 0xE6, 0xB4, 0x9B, 0x43, 0xE6,
+ 0xB4, 0x9E, 0x43, 0xE6, 0xB4, 0xB4, 0x43, 0xE6,
+ 0xB4, 0xBE, 0x43, 0xE6, 0xB5, 0x81, 0x43, 0xE6,
+ 0xB5, 0xA9, 0x43, 0xE6, 0xB5, 0xAA, 0x43, 0xE6,
+ 0xB5, 0xB7, 0x43, 0xE6, 0xB5, 0xB8, 0x43, 0xE6,
+ 0xB6, 0x85, 0x43, 0xE6, 0xB7, 0x8B, 0x43, 0xE6,
+ 0xB7, 0x9A, 0x43, 0xE6, 0xB7, 0xAA, 0x43, 0xE6,
+ 0xB7, 0xB9, 0x43, 0xE6, 0xB8, 0x9A, 0x43, 0xE6,
+ // Bytes e40 - e7f
+ 0xB8, 0xAF, 0x43, 0xE6, 0xB9, 0xAE, 0x43, 0xE6,
+ 0xBA, 0x80, 0x43, 0xE6, 0xBA, 0x9C, 0x43, 0xE6,
+ 0xBA, 0xBA, 0x43, 0xE6, 0xBB, 0x87, 0x43, 0xE6,
+ 0xBB, 0x8B, 0x43, 0xE6, 0xBB, 0x91, 0x43, 0xE6,
+ 0xBB, 0x9B, 0x43, 0xE6, 0xBC, 0x8F, 0x43, 0xE6,
+ 0xBC, 0x94, 0x43, 0xE6, 0xBC, 0xA2, 0x43, 0xE6,
+ 0xBC, 0xA3, 0x43, 0xE6, 0xBD, 0xAE, 0x43, 0xE6,
+ 0xBF, 0x86, 0x43, 0xE6, 0xBF, 0xAB, 0x43, 0xE6,
+ // Bytes e80 - ebf
+ 0xBF, 0xBE, 0x43, 0xE7, 0x80, 0x9B, 0x43, 0xE7,
+ 0x80, 0x9E, 0x43, 0xE7, 0x80, 0xB9, 0x43, 0xE7,
+ 0x81, 0x8A, 0x43, 0xE7, 0x81, 0xAB, 0x43, 0xE7,
+ 0x81, 0xB0, 0x43, 0xE7, 0x81, 0xB7, 0x43, 0xE7,
+ 0x81, 0xBD, 0x43, 0xE7, 0x82, 0x99, 0x43, 0xE7,
+ 0x82, 0xAD, 0x43, 0xE7, 0x83, 0x88, 0x43, 0xE7,
+ 0x83, 0x99, 0x43, 0xE7, 0x84, 0xA1, 0x43, 0xE7,
+ 0x85, 0x85, 0x43, 0xE7, 0x85, 0x89, 0x43, 0xE7,
+ // Bytes ec0 - eff
+ 0x85, 0xAE, 0x43, 0xE7, 0x86, 0x9C, 0x43, 0xE7,
+ 0x87, 0x8E, 0x43, 0xE7, 0x87, 0x90, 0x43, 0xE7,
+ 0x88, 0x90, 0x43, 0xE7, 0x88, 0x9B, 0x43, 0xE7,
+ 0x88, 0xA8, 0x43, 0xE7, 0x88, 0xAA, 0x43, 0xE7,
+ 0x88, 0xAB, 0x43, 0xE7, 0x88, 0xB5, 0x43, 0xE7,
+ 0x88, 0xB6, 0x43, 0xE7, 0x88, 0xBB, 0x43, 0xE7,
+ 0x88, 0xBF, 0x43, 0xE7, 0x89, 0x87, 0x43, 0xE7,
+ 0x89, 0x90, 0x43, 0xE7, 0x89, 0x99, 0x43, 0xE7,
+ // Bytes f00 - f3f
+ 0x89, 0x9B, 0x43, 0xE7, 0x89, 0xA2, 0x43, 0xE7,
+ 0x89, 0xB9, 0x43, 0xE7, 0x8A, 0x80, 0x43, 0xE7,
+ 0x8A, 0x95, 0x43, 0xE7, 0x8A, 0xAC, 0x43, 0xE7,
+ 0x8A, 0xAF, 0x43, 0xE7, 0x8B, 0x80, 0x43, 0xE7,
+ 0x8B, 0xBC, 0x43, 0xE7, 0x8C, 0xAA, 0x43, 0xE7,
+ 0x8D, 0xB5, 0x43, 0xE7, 0x8D, 0xBA, 0x43, 0xE7,
+ 0x8E, 0x84, 0x43, 0xE7, 0x8E, 0x87, 0x43, 0xE7,
+ 0x8E, 0x89, 0x43, 0xE7, 0x8E, 0x8B, 0x43, 0xE7,
+ // Bytes f40 - f7f
+ 0x8E, 0xA5, 0x43, 0xE7, 0x8E, 0xB2, 0x43, 0xE7,
+ 0x8F, 0x9E, 0x43, 0xE7, 0x90, 0x86, 0x43, 0xE7,
+ 0x90, 0x89, 0x43, 0xE7, 0x90, 0xA2, 0x43, 0xE7,
+ 0x91, 0x87, 0x43, 0xE7, 0x91, 0x9C, 0x43, 0xE7,
+ 0x91, 0xA9, 0x43, 0xE7, 0x91, 0xB1, 0x43, 0xE7,
+ 0x92, 0x85, 0x43, 0xE7, 0x92, 0x89, 0x43, 0xE7,
+ 0x92, 0x98, 0x43, 0xE7, 0x93, 0x8A, 0x43, 0xE7,
+ 0x93, 0x9C, 0x43, 0xE7, 0x93, 0xA6, 0x43, 0xE7,
+ // Bytes f80 - fbf
+ 0x94, 0x86, 0x43, 0xE7, 0x94, 0x98, 0x43, 0xE7,
+ 0x94, 0x9F, 0x43, 0xE7, 0x94, 0xA4, 0x43, 0xE7,
+ 0x94, 0xA8, 0x43, 0xE7, 0x94, 0xB0, 0x43, 0xE7,
+ 0x94, 0xB2, 0x43, 0xE7, 0x94, 0xB3, 0x43, 0xE7,
+ 0x94, 0xB7, 0x43, 0xE7, 0x94, 0xBB, 0x43, 0xE7,
+ 0x94, 0xBE, 0x43, 0xE7, 0x95, 0x99, 0x43, 0xE7,
+ 0x95, 0xA5, 0x43, 0xE7, 0x95, 0xB0, 0x43, 0xE7,
+ 0x96, 0x8B, 0x43, 0xE7, 0x96, 0x92, 0x43, 0xE7,
+ // Bytes fc0 - fff
+ 0x97, 0xA2, 0x43, 0xE7, 0x98, 0x90, 0x43, 0xE7,
+ 0x98, 0x9D, 0x43, 0xE7, 0x98, 0x9F, 0x43, 0xE7,
+ 0x99, 0x82, 0x43, 0xE7, 0x99, 0xA9, 0x43, 0xE7,
+ 0x99, 0xB6, 0x43, 0xE7, 0x99, 0xBD, 0x43, 0xE7,
+ 0x9A, 0xAE, 0x43, 0xE7, 0x9A, 0xBF, 0x43, 0xE7,
+ 0x9B, 0x8A, 0x43, 0xE7, 0x9B, 0x9B, 0x43, 0xE7,
+ 0x9B, 0xA3, 0x43, 0xE7, 0x9B, 0xA7, 0x43, 0xE7,
+ 0x9B, 0xAE, 0x43, 0xE7, 0x9B, 0xB4, 0x43, 0xE7,
+ // Bytes 1000 - 103f
+ 0x9C, 0x81, 0x43, 0xE7, 0x9C, 0x9E, 0x43, 0xE7,
+ 0x9C, 0x9F, 0x43, 0xE7, 0x9D, 0x80, 0x43, 0xE7,
+ 0x9D, 0x8A, 0x43, 0xE7, 0x9E, 0x8B, 0x43, 0xE7,
+ 0x9E, 0xA7, 0x43, 0xE7, 0x9F, 0x9B, 0x43, 0xE7,
+ 0x9F, 0xA2, 0x43, 0xE7, 0x9F, 0xB3, 0x43, 0xE7,
+ 0xA1, 0x8E, 0x43, 0xE7, 0xA1, 0xAB, 0x43, 0xE7,
+ 0xA2, 0x8C, 0x43, 0xE7, 0xA2, 0x91, 0x43, 0xE7,
+ 0xA3, 0x8A, 0x43, 0xE7, 0xA3, 0x8C, 0x43, 0xE7,
+ // Bytes 1040 - 107f
+ 0xA3, 0xBB, 0x43, 0xE7, 0xA4, 0xAA, 0x43, 0xE7,
+ 0xA4, 0xBA, 0x43, 0xE7, 0xA4, 0xBC, 0x43, 0xE7,
+ 0xA4, 0xBE, 0x43, 0xE7, 0xA5, 0x88, 0x43, 0xE7,
+ 0xA5, 0x89, 0x43, 0xE7, 0xA5, 0x90, 0x43, 0xE7,
+ 0xA5, 0x96, 0x43, 0xE7, 0xA5, 0x9D, 0x43, 0xE7,
+ 0xA5, 0x9E, 0x43, 0xE7, 0xA5, 0xA5, 0x43, 0xE7,
+ 0xA5, 0xBF, 0x43, 0xE7, 0xA6, 0x81, 0x43, 0xE7,
+ 0xA6, 0x8D, 0x43, 0xE7, 0xA6, 0x8E, 0x43, 0xE7,
+ // Bytes 1080 - 10bf
+ 0xA6, 0x8F, 0x43, 0xE7, 0xA6, 0xAE, 0x43, 0xE7,
+ 0xA6, 0xB8, 0x43, 0xE7, 0xA6, 0xBE, 0x43, 0xE7,
+ 0xA7, 0x8A, 0x43, 0xE7, 0xA7, 0x98, 0x43, 0xE7,
+ 0xA7, 0xAB, 0x43, 0xE7, 0xA8, 0x9C, 0x43, 0xE7,
+ 0xA9, 0x80, 0x43, 0xE7, 0xA9, 0x8A, 0x43, 0xE7,
+ 0xA9, 0x8F, 0x43, 0xE7, 0xA9, 0xB4, 0x43, 0xE7,
+ 0xA9, 0xBA, 0x43, 0xE7, 0xAA, 0x81, 0x43, 0xE7,
+ 0xAA, 0xB1, 0x43, 0xE7, 0xAB, 0x8B, 0x43, 0xE7,
+ // Bytes 10c0 - 10ff
+ 0xAB, 0xAE, 0x43, 0xE7, 0xAB, 0xB9, 0x43, 0xE7,
+ 0xAC, 0xA0, 0x43, 0xE7, 0xAE, 0x8F, 0x43, 0xE7,
+ 0xAF, 0x80, 0x43, 0xE7, 0xAF, 0x86, 0x43, 0xE7,
+ 0xAF, 0x89, 0x43, 0xE7, 0xB0, 0xBE, 0x43, 0xE7,
+ 0xB1, 0xA0, 0x43, 0xE7, 0xB1, 0xB3, 0x43, 0xE7,
+ 0xB1, 0xBB, 0x43, 0xE7, 0xB2, 0x92, 0x43, 0xE7,
+ 0xB2, 0xBE, 0x43, 0xE7, 0xB3, 0x92, 0x43, 0xE7,
+ 0xB3, 0x96, 0x43, 0xE7, 0xB3, 0xA3, 0x43, 0xE7,
+ // Bytes 1100 - 113f
+ 0xB3, 0xA7, 0x43, 0xE7, 0xB3, 0xA8, 0x43, 0xE7,
+ 0xB3, 0xB8, 0x43, 0xE7, 0xB4, 0x80, 0x43, 0xE7,
+ 0xB4, 0x90, 0x43, 0xE7, 0xB4, 0xA2, 0x43, 0xE7,
+ 0xB4, 0xAF, 0x43, 0xE7, 0xB5, 0x82, 0x43, 0xE7,
+ 0xB5, 0x9B, 0x43, 0xE7, 0xB5, 0xA3, 0x43, 0xE7,
+ 0xB6, 0xA0, 0x43, 0xE7, 0xB6, 0xBE, 0x43, 0xE7,
+ 0xB7, 0x87, 0x43, 0xE7, 0xB7, 0xB4, 0x43, 0xE7,
+ 0xB8, 0x82, 0x43, 0xE7, 0xB8, 0x89, 0x43, 0xE7,
+ // Bytes 1140 - 117f
+ 0xB8, 0xB7, 0x43, 0xE7, 0xB9, 0x81, 0x43, 0xE7,
+ 0xB9, 0x85, 0x43, 0xE7, 0xBC, 0xB6, 0x43, 0xE7,
+ 0xBC, 0xBE, 0x43, 0xE7, 0xBD, 0x91, 0x43, 0xE7,
+ 0xBD, 0xB2, 0x43, 0xE7, 0xBD, 0xB9, 0x43, 0xE7,
+ 0xBD, 0xBA, 0x43, 0xE7, 0xBE, 0x85, 0x43, 0xE7,
+ 0xBE, 0x8A, 0x43, 0xE7, 0xBE, 0x95, 0x43, 0xE7,
+ 0xBE, 0x9A, 0x43, 0xE7, 0xBE, 0xBD, 0x43, 0xE7,
+ 0xBF, 0xBA, 0x43, 0xE8, 0x80, 0x81, 0x43, 0xE8,
+ // Bytes 1180 - 11bf
+ 0x80, 0x85, 0x43, 0xE8, 0x80, 0x8C, 0x43, 0xE8,
+ 0x80, 0x92, 0x43, 0xE8, 0x80, 0xB3, 0x43, 0xE8,
+ 0x81, 0x86, 0x43, 0xE8, 0x81, 0xA0, 0x43, 0xE8,
+ 0x81, 0xAF, 0x43, 0xE8, 0x81, 0xB0, 0x43, 0xE8,
+ 0x81, 0xBE, 0x43, 0xE8, 0x81, 0xBF, 0x43, 0xE8,
+ 0x82, 0x89, 0x43, 0xE8, 0x82, 0x8B, 0x43, 0xE8,
+ 0x82, 0xAD, 0x43, 0xE8, 0x82, 0xB2, 0x43, 0xE8,
+ 0x84, 0x83, 0x43, 0xE8, 0x84, 0xBE, 0x43, 0xE8,
+ // Bytes 11c0 - 11ff
+ 0x87, 0x98, 0x43, 0xE8, 0x87, 0xA3, 0x43, 0xE8,
+ 0x87, 0xA8, 0x43, 0xE8, 0x87, 0xAA, 0x43, 0xE8,
+ 0x87, 0xAD, 0x43, 0xE8, 0x87, 0xB3, 0x43, 0xE8,
+ 0x87, 0xBC, 0x43, 0xE8, 0x88, 0x81, 0x43, 0xE8,
+ 0x88, 0x84, 0x43, 0xE8, 0x88, 0x8C, 0x43, 0xE8,
+ 0x88, 0x98, 0x43, 0xE8, 0x88, 0x9B, 0x43, 0xE8,
+ 0x88, 0x9F, 0x43, 0xE8, 0x89, 0xAE, 0x43, 0xE8,
+ 0x89, 0xAF, 0x43, 0xE8, 0x89, 0xB2, 0x43, 0xE8,
+ // Bytes 1200 - 123f
+ 0x89, 0xB8, 0x43, 0xE8, 0x89, 0xB9, 0x43, 0xE8,
+ 0x8A, 0x8B, 0x43, 0xE8, 0x8A, 0x91, 0x43, 0xE8,
+ 0x8A, 0x9D, 0x43, 0xE8, 0x8A, 0xB1, 0x43, 0xE8,
+ 0x8A, 0xB3, 0x43, 0xE8, 0x8A, 0xBD, 0x43, 0xE8,
+ 0x8B, 0xA5, 0x43, 0xE8, 0x8B, 0xA6, 0x43, 0xE8,
+ 0x8C, 0x9D, 0x43, 0xE8, 0x8C, 0xA3, 0x43, 0xE8,
+ 0x8C, 0xB6, 0x43, 0xE8, 0x8D, 0x92, 0x43, 0xE8,
+ 0x8D, 0x93, 0x43, 0xE8, 0x8D, 0xA3, 0x43, 0xE8,
+ // Bytes 1240 - 127f
+ 0x8E, 0xAD, 0x43, 0xE8, 0x8E, 0xBD, 0x43, 0xE8,
+ 0x8F, 0x89, 0x43, 0xE8, 0x8F, 0x8A, 0x43, 0xE8,
+ 0x8F, 0x8C, 0x43, 0xE8, 0x8F, 0x9C, 0x43, 0xE8,
+ 0x8F, 0xA7, 0x43, 0xE8, 0x8F, 0xAF, 0x43, 0xE8,
+ 0x8F, 0xB1, 0x43, 0xE8, 0x90, 0xBD, 0x43, 0xE8,
+ 0x91, 0x89, 0x43, 0xE8, 0x91, 0x97, 0x43, 0xE8,
+ 0x93, 0xAE, 0x43, 0xE8, 0x93, 0xB1, 0x43, 0xE8,
+ 0x93, 0xB3, 0x43, 0xE8, 0x93, 0xBC, 0x43, 0xE8,
+ // Bytes 1280 - 12bf
+ 0x94, 0x96, 0x43, 0xE8, 0x95, 0xA4, 0x43, 0xE8,
+ 0x97, 0x8D, 0x43, 0xE8, 0x97, 0xBA, 0x43, 0xE8,
+ 0x98, 0x86, 0x43, 0xE8, 0x98, 0x92, 0x43, 0xE8,
+ 0x98, 0xAD, 0x43, 0xE8, 0x98, 0xBF, 0x43, 0xE8,
+ 0x99, 0x8D, 0x43, 0xE8, 0x99, 0x90, 0x43, 0xE8,
+ 0x99, 0x9C, 0x43, 0xE8, 0x99, 0xA7, 0x43, 0xE8,
+ 0x99, 0xA9, 0x43, 0xE8, 0x99, 0xAB, 0x43, 0xE8,
+ 0x9A, 0x88, 0x43, 0xE8, 0x9A, 0xA9, 0x43, 0xE8,
+ // Bytes 12c0 - 12ff
+ 0x9B, 0xA2, 0x43, 0xE8, 0x9C, 0x8E, 0x43, 0xE8,
+ 0x9C, 0xA8, 0x43, 0xE8, 0x9D, 0xAB, 0x43, 0xE8,
+ 0x9D, 0xB9, 0x43, 0xE8, 0x9E, 0x86, 0x43, 0xE8,
+ 0x9E, 0xBA, 0x43, 0xE8, 0x9F, 0xA1, 0x43, 0xE8,
+ 0xA0, 0x81, 0x43, 0xE8, 0xA0, 0x9F, 0x43, 0xE8,
+ 0xA1, 0x80, 0x43, 0xE8, 0xA1, 0x8C, 0x43, 0xE8,
+ 0xA1, 0xA0, 0x43, 0xE8, 0xA1, 0xA3, 0x43, 0xE8,
+ 0xA3, 0x82, 0x43, 0xE8, 0xA3, 0x8F, 0x43, 0xE8,
+ // Bytes 1300 - 133f
+ 0xA3, 0x97, 0x43, 0xE8, 0xA3, 0x9E, 0x43, 0xE8,
+ 0xA3, 0xA1, 0x43, 0xE8, 0xA3, 0xB8, 0x43, 0xE8,
+ 0xA3, 0xBA, 0x43, 0xE8, 0xA4, 0x90, 0x43, 0xE8,
+ 0xA5, 0x81, 0x43, 0xE8, 0xA5, 0xA4, 0x43, 0xE8,
+ 0xA5, 0xBE, 0x43, 0xE8, 0xA6, 0x86, 0x43, 0xE8,
+ 0xA6, 0x8B, 0x43, 0xE8, 0xA6, 0x96, 0x43, 0xE8,
+ 0xA7, 0x92, 0x43, 0xE8, 0xA7, 0xA3, 0x43, 0xE8,
+ 0xA8, 0x80, 0x43, 0xE8, 0xAA, 0xA0, 0x43, 0xE8,
+ // Bytes 1340 - 137f
+ 0xAA, 0xAA, 0x43, 0xE8, 0xAA, 0xBF, 0x43, 0xE8,
+ 0xAB, 0x8B, 0x43, 0xE8, 0xAB, 0x92, 0x43, 0xE8,
+ 0xAB, 0x96, 0x43, 0xE8, 0xAB, 0xAD, 0x43, 0xE8,
+ 0xAB, 0xB8, 0x43, 0xE8, 0xAB, 0xBE, 0x43, 0xE8,
+ 0xAC, 0x81, 0x43, 0xE8, 0xAC, 0xB9, 0x43, 0xE8,
+ 0xAD, 0x98, 0x43, 0xE8, 0xAE, 0x80, 0x43, 0xE8,
+ 0xAE, 0x8A, 0x43, 0xE8, 0xB0, 0xB7, 0x43, 0xE8,
+ 0xB1, 0x86, 0x43, 0xE8, 0xB1, 0x88, 0x43, 0xE8,
+ // Bytes 1380 - 13bf
+ 0xB1, 0x95, 0x43, 0xE8, 0xB1, 0xB8, 0x43, 0xE8,
+ 0xB2, 0x9D, 0x43, 0xE8, 0xB2, 0xA1, 0x43, 0xE8,
+ 0xB2, 0xA9, 0x43, 0xE8, 0xB2, 0xAB, 0x43, 0xE8,
+ 0xB3, 0x81, 0x43, 0xE8, 0xB3, 0x82, 0x43, 0xE8,
+ 0xB3, 0x87, 0x43, 0xE8, 0xB3, 0x88, 0x43, 0xE8,
+ 0xB3, 0x93, 0x43, 0xE8, 0xB4, 0x88, 0x43, 0xE8,
+ 0xB4, 0x9B, 0x43, 0xE8, 0xB5, 0xA4, 0x43, 0xE8,
+ 0xB5, 0xB0, 0x43, 0xE8, 0xB5, 0xB7, 0x43, 0xE8,
+ // Bytes 13c0 - 13ff
+ 0xB6, 0xB3, 0x43, 0xE8, 0xB6, 0xBC, 0x43, 0xE8,
+ 0xB7, 0x8B, 0x43, 0xE8, 0xB7, 0xAF, 0x43, 0xE8,
+ 0xB7, 0xB0, 0x43, 0xE8, 0xBA, 0xAB, 0x43, 0xE8,
+ 0xBB, 0x8A, 0x43, 0xE8, 0xBB, 0x94, 0x43, 0xE8,
+ 0xBC, 0xA6, 0x43, 0xE8, 0xBC, 0xAA, 0x43, 0xE8,
+ 0xBC, 0xB8, 0x43, 0xE8, 0xBC, 0xBB, 0x43, 0xE8,
+ 0xBD, 0xA2, 0x43, 0xE8, 0xBE, 0x9B, 0x43, 0xE8,
+ 0xBE, 0x9E, 0x43, 0xE8, 0xBE, 0xB0, 0x43, 0xE8,
+ // Bytes 1400 - 143f
+ 0xBE, 0xB5, 0x43, 0xE8, 0xBE, 0xB6, 0x43, 0xE9,
+ 0x80, 0xA3, 0x43, 0xE9, 0x80, 0xB8, 0x43, 0xE9,
+ 0x81, 0x8A, 0x43, 0xE9, 0x81, 0xA9, 0x43, 0xE9,
+ 0x81, 0xB2, 0x43, 0xE9, 0x81, 0xBC, 0x43, 0xE9,
+ 0x82, 0x8F, 0x43, 0xE9, 0x82, 0x91, 0x43, 0xE9,
+ 0x82, 0x94, 0x43, 0xE9, 0x83, 0x8E, 0x43, 0xE9,
+ 0x83, 0x9E, 0x43, 0xE9, 0x83, 0xB1, 0x43, 0xE9,
+ 0x83, 0xBD, 0x43, 0xE9, 0x84, 0x91, 0x43, 0xE9,
+ // Bytes 1440 - 147f
+ 0x84, 0x9B, 0x43, 0xE9, 0x85, 0x89, 0x43, 0xE9,
+ 0x85, 0x8D, 0x43, 0xE9, 0x85, 0xAA, 0x43, 0xE9,
+ 0x86, 0x99, 0x43, 0xE9, 0x86, 0xB4, 0x43, 0xE9,
+ 0x87, 0x86, 0x43, 0xE9, 0x87, 0x8C, 0x43, 0xE9,
+ 0x87, 0x8F, 0x43, 0xE9, 0x87, 0x91, 0x43, 0xE9,
+ 0x88, 0xB4, 0x43, 0xE9, 0x88, 0xB8, 0x43, 0xE9,
+ 0x89, 0xB6, 0x43, 0xE9, 0x89, 0xBC, 0x43, 0xE9,
+ 0x8B, 0x97, 0x43, 0xE9, 0x8B, 0x98, 0x43, 0xE9,
+ // Bytes 1480 - 14bf
+ 0x8C, 0x84, 0x43, 0xE9, 0x8D, 0x8A, 0x43, 0xE9,
+ 0x8F, 0xB9, 0x43, 0xE9, 0x90, 0x95, 0x43, 0xE9,
+ 0x95, 0xB7, 0x43, 0xE9, 0x96, 0x80, 0x43, 0xE9,
+ 0x96, 0x8B, 0x43, 0xE9, 0x96, 0xAD, 0x43, 0xE9,
+ 0x96, 0xB7, 0x43, 0xE9, 0x98, 0x9C, 0x43, 0xE9,
+ 0x98, 0xAE, 0x43, 0xE9, 0x99, 0x8B, 0x43, 0xE9,
+ 0x99, 0x8D, 0x43, 0xE9, 0x99, 0xB5, 0x43, 0xE9,
+ 0x99, 0xB8, 0x43, 0xE9, 0x99, 0xBC, 0x43, 0xE9,
+ // Bytes 14c0 - 14ff
+ 0x9A, 0x86, 0x43, 0xE9, 0x9A, 0xA3, 0x43, 0xE9,
+ 0x9A, 0xB6, 0x43, 0xE9, 0x9A, 0xB7, 0x43, 0xE9,
+ 0x9A, 0xB8, 0x43, 0xE9, 0x9A, 0xB9, 0x43, 0xE9,
+ 0x9B, 0x83, 0x43, 0xE9, 0x9B, 0xA2, 0x43, 0xE9,
+ 0x9B, 0xA3, 0x43, 0xE9, 0x9B, 0xA8, 0x43, 0xE9,
+ 0x9B, 0xB6, 0x43, 0xE9, 0x9B, 0xB7, 0x43, 0xE9,
+ 0x9C, 0xA3, 0x43, 0xE9, 0x9C, 0xB2, 0x43, 0xE9,
+ 0x9D, 0x88, 0x43, 0xE9, 0x9D, 0x91, 0x43, 0xE9,
+ // Bytes 1500 - 153f
+ 0x9D, 0x96, 0x43, 0xE9, 0x9D, 0x9E, 0x43, 0xE9,
+ 0x9D, 0xA2, 0x43, 0xE9, 0x9D, 0xA9, 0x43, 0xE9,
+ 0x9F, 0x8B, 0x43, 0xE9, 0x9F, 0x9B, 0x43, 0xE9,
+ 0x9F, 0xA0, 0x43, 0xE9, 0x9F, 0xAD, 0x43, 0xE9,
+ 0x9F, 0xB3, 0x43, 0xE9, 0x9F, 0xBF, 0x43, 0xE9,
+ 0xA0, 0x81, 0x43, 0xE9, 0xA0, 0x85, 0x43, 0xE9,
+ 0xA0, 0x8B, 0x43, 0xE9, 0xA0, 0x98, 0x43, 0xE9,
+ 0xA0, 0xA9, 0x43, 0xE9, 0xA0, 0xBB, 0x43, 0xE9,
+ // Bytes 1540 - 157f
+ 0xA1, 0x9E, 0x43, 0xE9, 0xA2, 0xA8, 0x43, 0xE9,
+ 0xA3, 0x9B, 0x43, 0xE9, 0xA3, 0x9F, 0x43, 0xE9,
+ 0xA3, 0xA2, 0x43, 0xE9, 0xA3, 0xAF, 0x43, 0xE9,
+ 0xA3, 0xBC, 0x43, 0xE9, 0xA4, 0xA8, 0x43, 0xE9,
+ 0xA4, 0xA9, 0x43, 0xE9, 0xA6, 0x96, 0x43, 0xE9,
+ 0xA6, 0x99, 0x43, 0xE9, 0xA6, 0xA7, 0x43, 0xE9,
+ 0xA6, 0xAC, 0x43, 0xE9, 0xA7, 0x82, 0x43, 0xE9,
+ 0xA7, 0xB1, 0x43, 0xE9, 0xA7, 0xBE, 0x43, 0xE9,
+ // Bytes 1580 - 15bf
+ 0xA9, 0xAA, 0x43, 0xE9, 0xAA, 0xA8, 0x43, 0xE9,
+ 0xAB, 0x98, 0x43, 0xE9, 0xAB, 0x9F, 0x43, 0xE9,
+ 0xAC, 0x92, 0x43, 0xE9, 0xAC, 0xA5, 0x43, 0xE9,
+ 0xAC, 0xAF, 0x43, 0xE9, 0xAC, 0xB2, 0x43, 0xE9,
+ 0xAC, 0xBC, 0x43, 0xE9, 0xAD, 0x9A, 0x43, 0xE9,
+ 0xAD, 0xAF, 0x43, 0xE9, 0xB1, 0x80, 0x43, 0xE9,
+ 0xB1, 0x97, 0x43, 0xE9, 0xB3, 0xA5, 0x43, 0xE9,
+ 0xB3, 0xBD, 0x43, 0xE9, 0xB5, 0xA7, 0x43, 0xE9,
+ // Bytes 15c0 - 15ff
+ 0xB6, 0xB4, 0x43, 0xE9, 0xB7, 0xBA, 0x43, 0xE9,
+ 0xB8, 0x9E, 0x43, 0xE9, 0xB9, 0xB5, 0x43, 0xE9,
+ 0xB9, 0xBF, 0x43, 0xE9, 0xBA, 0x97, 0x43, 0xE9,
+ 0xBA, 0x9F, 0x43, 0xE9, 0xBA, 0xA5, 0x43, 0xE9,
+ 0xBA, 0xBB, 0x43, 0xE9, 0xBB, 0x83, 0x43, 0xE9,
+ 0xBB, 0x8D, 0x43, 0xE9, 0xBB, 0x8E, 0x43, 0xE9,
+ 0xBB, 0x91, 0x43, 0xE9, 0xBB, 0xB9, 0x43, 0xE9,
+ 0xBB, 0xBD, 0x43, 0xE9, 0xBB, 0xBE, 0x43, 0xE9,
+ // Bytes 1600 - 163f
+ 0xBC, 0x85, 0x43, 0xE9, 0xBC, 0x8E, 0x43, 0xE9,
+ 0xBC, 0x8F, 0x43, 0xE9, 0xBC, 0x93, 0x43, 0xE9,
+ 0xBC, 0x96, 0x43, 0xE9, 0xBC, 0xA0, 0x43, 0xE9,
+ 0xBC, 0xBB, 0x43, 0xE9, 0xBD, 0x83, 0x43, 0xE9,
+ 0xBD, 0x8A, 0x43, 0xE9, 0xBD, 0x92, 0x43, 0xE9,
+ 0xBE, 0x8D, 0x43, 0xE9, 0xBE, 0x8E, 0x43, 0xE9,
+ 0xBE, 0x9C, 0x43, 0xE9, 0xBE, 0x9F, 0x43, 0xE9,
+ 0xBE, 0xA0, 0x43, 0xEA, 0x9C, 0xA7, 0x43, 0xEA,
+ // Bytes 1640 - 167f
+ 0x9D, 0xAF, 0x43, 0xEA, 0xAC, 0xB7, 0x43, 0xEA,
+ 0xAD, 0x92, 0x44, 0xF0, 0xA0, 0x84, 0xA2, 0x44,
+ 0xF0, 0xA0, 0x94, 0x9C, 0x44, 0xF0, 0xA0, 0x94,
+ 0xA5, 0x44, 0xF0, 0xA0, 0x95, 0x8B, 0x44, 0xF0,
+ 0xA0, 0x98, 0xBA, 0x44, 0xF0, 0xA0, 0xA0, 0x84,
+ 0x44, 0xF0, 0xA0, 0xA3, 0x9E, 0x44, 0xF0, 0xA0,
+ 0xA8, 0xAC, 0x44, 0xF0, 0xA0, 0xAD, 0xA3, 0x44,
+ 0xF0, 0xA1, 0x93, 0xA4, 0x44, 0xF0, 0xA1, 0x9A,
+ // Bytes 1680 - 16bf
+ 0xA8, 0x44, 0xF0, 0xA1, 0x9B, 0xAA, 0x44, 0xF0,
+ 0xA1, 0xA7, 0x88, 0x44, 0xF0, 0xA1, 0xAC, 0x98,
+ 0x44, 0xF0, 0xA1, 0xB4, 0x8B, 0x44, 0xF0, 0xA1,
+ 0xB7, 0xA4, 0x44, 0xF0, 0xA1, 0xB7, 0xA6, 0x44,
+ 0xF0, 0xA2, 0x86, 0x83, 0x44, 0xF0, 0xA2, 0x86,
+ 0x9F, 0x44, 0xF0, 0xA2, 0x8C, 0xB1, 0x44, 0xF0,
+ 0xA2, 0x9B, 0x94, 0x44, 0xF0, 0xA2, 0xA1, 0x84,
+ 0x44, 0xF0, 0xA2, 0xA1, 0x8A, 0x44, 0xF0, 0xA2,
+ // Bytes 16c0 - 16ff
+ 0xAC, 0x8C, 0x44, 0xF0, 0xA2, 0xAF, 0xB1, 0x44,
+ 0xF0, 0xA3, 0x80, 0x8A, 0x44, 0xF0, 0xA3, 0x8A,
+ 0xB8, 0x44, 0xF0, 0xA3, 0x8D, 0x9F, 0x44, 0xF0,
+ 0xA3, 0x8E, 0x93, 0x44, 0xF0, 0xA3, 0x8E, 0x9C,
+ 0x44, 0xF0, 0xA3, 0x8F, 0x83, 0x44, 0xF0, 0xA3,
+ 0x8F, 0x95, 0x44, 0xF0, 0xA3, 0x91, 0xAD, 0x44,
+ 0xF0, 0xA3, 0x9A, 0xA3, 0x44, 0xF0, 0xA3, 0xA2,
+ 0xA7, 0x44, 0xF0, 0xA3, 0xAA, 0x8D, 0x44, 0xF0,
+ // Bytes 1700 - 173f
+ 0xA3, 0xAB, 0xBA, 0x44, 0xF0, 0xA3, 0xB2, 0xBC,
+ 0x44, 0xF0, 0xA3, 0xB4, 0x9E, 0x44, 0xF0, 0xA3,
+ 0xBB, 0x91, 0x44, 0xF0, 0xA3, 0xBD, 0x9E, 0x44,
+ 0xF0, 0xA3, 0xBE, 0x8E, 0x44, 0xF0, 0xA4, 0x89,
+ 0xA3, 0x44, 0xF0, 0xA4, 0x8B, 0xAE, 0x44, 0xF0,
+ 0xA4, 0x8E, 0xAB, 0x44, 0xF0, 0xA4, 0x98, 0x88,
+ 0x44, 0xF0, 0xA4, 0x9C, 0xB5, 0x44, 0xF0, 0xA4,
+ 0xA0, 0x94, 0x44, 0xF0, 0xA4, 0xB0, 0xB6, 0x44,
+ // Bytes 1740 - 177f
+ 0xF0, 0xA4, 0xB2, 0x92, 0x44, 0xF0, 0xA4, 0xBE,
+ 0xA1, 0x44, 0xF0, 0xA4, 0xBE, 0xB8, 0x44, 0xF0,
+ 0xA5, 0x81, 0x84, 0x44, 0xF0, 0xA5, 0x83, 0xB2,
+ 0x44, 0xF0, 0xA5, 0x83, 0xB3, 0x44, 0xF0, 0xA5,
+ 0x84, 0x99, 0x44, 0xF0, 0xA5, 0x84, 0xB3, 0x44,
+ 0xF0, 0xA5, 0x89, 0x89, 0x44, 0xF0, 0xA5, 0x90,
+ 0x9D, 0x44, 0xF0, 0xA5, 0x98, 0xA6, 0x44, 0xF0,
+ 0xA5, 0x9A, 0x9A, 0x44, 0xF0, 0xA5, 0x9B, 0x85,
+ // Bytes 1780 - 17bf
+ 0x44, 0xF0, 0xA5, 0xA5, 0xBC, 0x44, 0xF0, 0xA5,
+ 0xAA, 0xA7, 0x44, 0xF0, 0xA5, 0xAE, 0xAB, 0x44,
+ 0xF0, 0xA5, 0xB2, 0x80, 0x44, 0xF0, 0xA5, 0xB3,
+ 0x90, 0x44, 0xF0, 0xA5, 0xBE, 0x86, 0x44, 0xF0,
+ 0xA6, 0x87, 0x9A, 0x44, 0xF0, 0xA6, 0x88, 0xA8,
+ 0x44, 0xF0, 0xA6, 0x89, 0x87, 0x44, 0xF0, 0xA6,
+ 0x8B, 0x99, 0x44, 0xF0, 0xA6, 0x8C, 0xBE, 0x44,
+ 0xF0, 0xA6, 0x93, 0x9A, 0x44, 0xF0, 0xA6, 0x94,
+ // Bytes 17c0 - 17ff
+ 0xA3, 0x44, 0xF0, 0xA6, 0x96, 0xA8, 0x44, 0xF0,
+ 0xA6, 0x9E, 0xA7, 0x44, 0xF0, 0xA6, 0x9E, 0xB5,
+ 0x44, 0xF0, 0xA6, 0xAC, 0xBC, 0x44, 0xF0, 0xA6,
+ 0xB0, 0xB6, 0x44, 0xF0, 0xA6, 0xB3, 0x95, 0x44,
+ 0xF0, 0xA6, 0xB5, 0xAB, 0x44, 0xF0, 0xA6, 0xBC,
+ 0xAC, 0x44, 0xF0, 0xA6, 0xBE, 0xB1, 0x44, 0xF0,
+ 0xA7, 0x83, 0x92, 0x44, 0xF0, 0xA7, 0x8F, 0x8A,
+ 0x44, 0xF0, 0xA7, 0x99, 0xA7, 0x44, 0xF0, 0xA7,
+ // Bytes 1800 - 183f
+ 0xA2, 0xAE, 0x44, 0xF0, 0xA7, 0xA5, 0xA6, 0x44,
+ 0xF0, 0xA7, 0xB2, 0xA8, 0x44, 0xF0, 0xA7, 0xBB,
+ 0x93, 0x44, 0xF0, 0xA7, 0xBC, 0xAF, 0x44, 0xF0,
+ 0xA8, 0x97, 0x92, 0x44, 0xF0, 0xA8, 0x97, 0xAD,
+ 0x44, 0xF0, 0xA8, 0x9C, 0xAE, 0x44, 0xF0, 0xA8,
+ 0xAF, 0xBA, 0x44, 0xF0, 0xA8, 0xB5, 0xB7, 0x44,
+ 0xF0, 0xA9, 0x85, 0x85, 0x44, 0xF0, 0xA9, 0x87,
+ 0x9F, 0x44, 0xF0, 0xA9, 0x88, 0x9A, 0x44, 0xF0,
+ // Bytes 1840 - 187f
+ 0xA9, 0x90, 0x8A, 0x44, 0xF0, 0xA9, 0x92, 0x96,
+ 0x44, 0xF0, 0xA9, 0x96, 0xB6, 0x44, 0xF0, 0xA9,
+ 0xAC, 0xB0, 0x44, 0xF0, 0xAA, 0x83, 0x8E, 0x44,
+ 0xF0, 0xAA, 0x84, 0x85, 0x44, 0xF0, 0xAA, 0x88,
+ 0x8E, 0x44, 0xF0, 0xAA, 0x8A, 0x91, 0x44, 0xF0,
+ 0xAA, 0x8E, 0x92, 0x44, 0xF0, 0xAA, 0x98, 0x80,
+ 0x42, 0x21, 0x21, 0x42, 0x21, 0x3F, 0x42, 0x2E,
+ 0x2E, 0x42, 0x30, 0x2C, 0x42, 0x30, 0x2E, 0x42,
+ // Bytes 1880 - 18bf
+ 0x31, 0x2C, 0x42, 0x31, 0x2E, 0x42, 0x31, 0x30,
+ 0x42, 0x31, 0x31, 0x42, 0x31, 0x32, 0x42, 0x31,
+ 0x33, 0x42, 0x31, 0x34, 0x42, 0x31, 0x35, 0x42,
+ 0x31, 0x36, 0x42, 0x31, 0x37, 0x42, 0x31, 0x38,
+ 0x42, 0x31, 0x39, 0x42, 0x32, 0x2C, 0x42, 0x32,
+ 0x2E, 0x42, 0x32, 0x30, 0x42, 0x32, 0x31, 0x42,
+ 0x32, 0x32, 0x42, 0x32, 0x33, 0x42, 0x32, 0x34,
+ 0x42, 0x32, 0x35, 0x42, 0x32, 0x36, 0x42, 0x32,
+ // Bytes 18c0 - 18ff
+ 0x37, 0x42, 0x32, 0x38, 0x42, 0x32, 0x39, 0x42,
+ 0x33, 0x2C, 0x42, 0x33, 0x2E, 0x42, 0x33, 0x30,
+ 0x42, 0x33, 0x31, 0x42, 0x33, 0x32, 0x42, 0x33,
+ 0x33, 0x42, 0x33, 0x34, 0x42, 0x33, 0x35, 0x42,
+ 0x33, 0x36, 0x42, 0x33, 0x37, 0x42, 0x33, 0x38,
+ 0x42, 0x33, 0x39, 0x42, 0x34, 0x2C, 0x42, 0x34,
+ 0x2E, 0x42, 0x34, 0x30, 0x42, 0x34, 0x31, 0x42,
+ 0x34, 0x32, 0x42, 0x34, 0x33, 0x42, 0x34, 0x34,
+ // Bytes 1900 - 193f
+ 0x42, 0x34, 0x35, 0x42, 0x34, 0x36, 0x42, 0x34,
+ 0x37, 0x42, 0x34, 0x38, 0x42, 0x34, 0x39, 0x42,
+ 0x35, 0x2C, 0x42, 0x35, 0x2E, 0x42, 0x35, 0x30,
+ 0x42, 0x36, 0x2C, 0x42, 0x36, 0x2E, 0x42, 0x37,
+ 0x2C, 0x42, 0x37, 0x2E, 0x42, 0x38, 0x2C, 0x42,
+ 0x38, 0x2E, 0x42, 0x39, 0x2C, 0x42, 0x39, 0x2E,
+ 0x42, 0x3D, 0x3D, 0x42, 0x3F, 0x21, 0x42, 0x3F,
+ 0x3F, 0x42, 0x41, 0x55, 0x42, 0x42, 0x71, 0x42,
+ // Bytes 1940 - 197f
+ 0x43, 0x44, 0x42, 0x44, 0x4A, 0x42, 0x44, 0x5A,
+ 0x42, 0x44, 0x7A, 0x42, 0x47, 0x42, 0x42, 0x47,
+ 0x79, 0x42, 0x48, 0x50, 0x42, 0x48, 0x56, 0x42,
+ 0x48, 0x67, 0x42, 0x48, 0x7A, 0x42, 0x49, 0x49,
+ 0x42, 0x49, 0x4A, 0x42, 0x49, 0x55, 0x42, 0x49,
+ 0x56, 0x42, 0x49, 0x58, 0x42, 0x4B, 0x42, 0x42,
+ 0x4B, 0x4B, 0x42, 0x4B, 0x4D, 0x42, 0x4C, 0x4A,
+ 0x42, 0x4C, 0x6A, 0x42, 0x4D, 0x42, 0x42, 0x4D,
+ // Bytes 1980 - 19bf
+ 0x43, 0x42, 0x4D, 0x44, 0x42, 0x4D, 0x52, 0x42,
+ 0x4D, 0x56, 0x42, 0x4D, 0x57, 0x42, 0x4E, 0x4A,
+ 0x42, 0x4E, 0x6A, 0x42, 0x4E, 0x6F, 0x42, 0x50,
+ 0x48, 0x42, 0x50, 0x52, 0x42, 0x50, 0x61, 0x42,
+ 0x52, 0x73, 0x42, 0x53, 0x44, 0x42, 0x53, 0x4D,
+ 0x42, 0x53, 0x53, 0x42, 0x53, 0x76, 0x42, 0x54,
+ 0x4D, 0x42, 0x56, 0x49, 0x42, 0x57, 0x43, 0x42,
+ 0x57, 0x5A, 0x42, 0x57, 0x62, 0x42, 0x58, 0x49,
+ // Bytes 19c0 - 19ff
+ 0x42, 0x63, 0x63, 0x42, 0x63, 0x64, 0x42, 0x63,
+ 0x6D, 0x42, 0x64, 0x42, 0x42, 0x64, 0x61, 0x42,
+ 0x64, 0x6C, 0x42, 0x64, 0x6D, 0x42, 0x64, 0x7A,
+ 0x42, 0x65, 0x56, 0x42, 0x66, 0x66, 0x42, 0x66,
+ 0x69, 0x42, 0x66, 0x6C, 0x42, 0x66, 0x6D, 0x42,
+ 0x68, 0x61, 0x42, 0x69, 0x69, 0x42, 0x69, 0x6A,
+ 0x42, 0x69, 0x6E, 0x42, 0x69, 0x76, 0x42, 0x69,
+ 0x78, 0x42, 0x6B, 0x41, 0x42, 0x6B, 0x56, 0x42,
+ // Bytes 1a00 - 1a3f
+ 0x6B, 0x57, 0x42, 0x6B, 0x67, 0x42, 0x6B, 0x6C,
+ 0x42, 0x6B, 0x6D, 0x42, 0x6B, 0x74, 0x42, 0x6C,
+ 0x6A, 0x42, 0x6C, 0x6D, 0x42, 0x6C, 0x6E, 0x42,
+ 0x6C, 0x78, 0x42, 0x6D, 0x32, 0x42, 0x6D, 0x33,
+ 0x42, 0x6D, 0x41, 0x42, 0x6D, 0x56, 0x42, 0x6D,
+ 0x57, 0x42, 0x6D, 0x62, 0x42, 0x6D, 0x67, 0x42,
+ 0x6D, 0x6C, 0x42, 0x6D, 0x6D, 0x42, 0x6D, 0x73,
+ 0x42, 0x6E, 0x41, 0x42, 0x6E, 0x46, 0x42, 0x6E,
+ // Bytes 1a40 - 1a7f
+ 0x56, 0x42, 0x6E, 0x57, 0x42, 0x6E, 0x6A, 0x42,
+ 0x6E, 0x6D, 0x42, 0x6E, 0x73, 0x42, 0x6F, 0x56,
+ 0x42, 0x70, 0x41, 0x42, 0x70, 0x46, 0x42, 0x70,
+ 0x56, 0x42, 0x70, 0x57, 0x42, 0x70, 0x63, 0x42,
+ 0x70, 0x73, 0x42, 0x73, 0x72, 0x42, 0x73, 0x74,
+ 0x42, 0x76, 0x69, 0x42, 0x78, 0x69, 0x43, 0x28,
+ 0x31, 0x29, 0x43, 0x28, 0x32, 0x29, 0x43, 0x28,
+ 0x33, 0x29, 0x43, 0x28, 0x34, 0x29, 0x43, 0x28,
+ // Bytes 1a80 - 1abf
+ 0x35, 0x29, 0x43, 0x28, 0x36, 0x29, 0x43, 0x28,
+ 0x37, 0x29, 0x43, 0x28, 0x38, 0x29, 0x43, 0x28,
+ 0x39, 0x29, 0x43, 0x28, 0x41, 0x29, 0x43, 0x28,
+ 0x42, 0x29, 0x43, 0x28, 0x43, 0x29, 0x43, 0x28,
+ 0x44, 0x29, 0x43, 0x28, 0x45, 0x29, 0x43, 0x28,
+ 0x46, 0x29, 0x43, 0x28, 0x47, 0x29, 0x43, 0x28,
+ 0x48, 0x29, 0x43, 0x28, 0x49, 0x29, 0x43, 0x28,
+ 0x4A, 0x29, 0x43, 0x28, 0x4B, 0x29, 0x43, 0x28,
+ // Bytes 1ac0 - 1aff
+ 0x4C, 0x29, 0x43, 0x28, 0x4D, 0x29, 0x43, 0x28,
+ 0x4E, 0x29, 0x43, 0x28, 0x4F, 0x29, 0x43, 0x28,
+ 0x50, 0x29, 0x43, 0x28, 0x51, 0x29, 0x43, 0x28,
+ 0x52, 0x29, 0x43, 0x28, 0x53, 0x29, 0x43, 0x28,
+ 0x54, 0x29, 0x43, 0x28, 0x55, 0x29, 0x43, 0x28,
+ 0x56, 0x29, 0x43, 0x28, 0x57, 0x29, 0x43, 0x28,
+ 0x58, 0x29, 0x43, 0x28, 0x59, 0x29, 0x43, 0x28,
+ 0x5A, 0x29, 0x43, 0x28, 0x61, 0x29, 0x43, 0x28,
+ // Bytes 1b00 - 1b3f
+ 0x62, 0x29, 0x43, 0x28, 0x63, 0x29, 0x43, 0x28,
+ 0x64, 0x29, 0x43, 0x28, 0x65, 0x29, 0x43, 0x28,
+ 0x66, 0x29, 0x43, 0x28, 0x67, 0x29, 0x43, 0x28,
+ 0x68, 0x29, 0x43, 0x28, 0x69, 0x29, 0x43, 0x28,
+ 0x6A, 0x29, 0x43, 0x28, 0x6B, 0x29, 0x43, 0x28,
+ 0x6C, 0x29, 0x43, 0x28, 0x6D, 0x29, 0x43, 0x28,
+ 0x6E, 0x29, 0x43, 0x28, 0x6F, 0x29, 0x43, 0x28,
+ 0x70, 0x29, 0x43, 0x28, 0x71, 0x29, 0x43, 0x28,
+ // Bytes 1b40 - 1b7f
+ 0x72, 0x29, 0x43, 0x28, 0x73, 0x29, 0x43, 0x28,
+ 0x74, 0x29, 0x43, 0x28, 0x75, 0x29, 0x43, 0x28,
+ 0x76, 0x29, 0x43, 0x28, 0x77, 0x29, 0x43, 0x28,
+ 0x78, 0x29, 0x43, 0x28, 0x79, 0x29, 0x43, 0x28,
+ 0x7A, 0x29, 0x43, 0x2E, 0x2E, 0x2E, 0x43, 0x31,
+ 0x30, 0x2E, 0x43, 0x31, 0x31, 0x2E, 0x43, 0x31,
+ 0x32, 0x2E, 0x43, 0x31, 0x33, 0x2E, 0x43, 0x31,
+ 0x34, 0x2E, 0x43, 0x31, 0x35, 0x2E, 0x43, 0x31,
+ // Bytes 1b80 - 1bbf
+ 0x36, 0x2E, 0x43, 0x31, 0x37, 0x2E, 0x43, 0x31,
+ 0x38, 0x2E, 0x43, 0x31, 0x39, 0x2E, 0x43, 0x32,
+ 0x30, 0x2E, 0x43, 0x3A, 0x3A, 0x3D, 0x43, 0x3D,
+ 0x3D, 0x3D, 0x43, 0x43, 0x6F, 0x2E, 0x43, 0x46,
+ 0x41, 0x58, 0x43, 0x47, 0x48, 0x7A, 0x43, 0x47,
+ 0x50, 0x61, 0x43, 0x49, 0x49, 0x49, 0x43, 0x4C,
+ 0x54, 0x44, 0x43, 0x4C, 0xC2, 0xB7, 0x43, 0x4D,
+ 0x48, 0x7A, 0x43, 0x4D, 0x50, 0x61, 0x43, 0x4D,
+ // Bytes 1bc0 - 1bff
+ 0xCE, 0xA9, 0x43, 0x50, 0x50, 0x4D, 0x43, 0x50,
+ 0x50, 0x56, 0x43, 0x50, 0x54, 0x45, 0x43, 0x54,
+ 0x45, 0x4C, 0x43, 0x54, 0x48, 0x7A, 0x43, 0x56,
+ 0x49, 0x49, 0x43, 0x58, 0x49, 0x49, 0x43, 0x61,
+ 0x2F, 0x63, 0x43, 0x61, 0x2F, 0x73, 0x43, 0x61,
+ 0xCA, 0xBE, 0x43, 0x62, 0x61, 0x72, 0x43, 0x63,
+ 0x2F, 0x6F, 0x43, 0x63, 0x2F, 0x75, 0x43, 0x63,
+ 0x61, 0x6C, 0x43, 0x63, 0x6D, 0x32, 0x43, 0x63,
+ // Bytes 1c00 - 1c3f
+ 0x6D, 0x33, 0x43, 0x64, 0x6D, 0x32, 0x43, 0x64,
+ 0x6D, 0x33, 0x43, 0x65, 0x72, 0x67, 0x43, 0x66,
+ 0x66, 0x69, 0x43, 0x66, 0x66, 0x6C, 0x43, 0x67,
+ 0x61, 0x6C, 0x43, 0x68, 0x50, 0x61, 0x43, 0x69,
+ 0x69, 0x69, 0x43, 0x6B, 0x48, 0x7A, 0x43, 0x6B,
+ 0x50, 0x61, 0x43, 0x6B, 0x6D, 0x32, 0x43, 0x6B,
+ 0x6D, 0x33, 0x43, 0x6B, 0xCE, 0xA9, 0x43, 0x6C,
+ 0x6F, 0x67, 0x43, 0x6C, 0xC2, 0xB7, 0x43, 0x6D,
+ // Bytes 1c40 - 1c7f
+ 0x69, 0x6C, 0x43, 0x6D, 0x6D, 0x32, 0x43, 0x6D,
+ 0x6D, 0x33, 0x43, 0x6D, 0x6F, 0x6C, 0x43, 0x72,
+ 0x61, 0x64, 0x43, 0x76, 0x69, 0x69, 0x43, 0x78,
+ 0x69, 0x69, 0x43, 0xC2, 0xB0, 0x43, 0x43, 0xC2,
+ 0xB0, 0x46, 0x43, 0xCA, 0xBC, 0x6E, 0x43, 0xCE,
+ 0xBC, 0x41, 0x43, 0xCE, 0xBC, 0x46, 0x43, 0xCE,
+ 0xBC, 0x56, 0x43, 0xCE, 0xBC, 0x57, 0x43, 0xCE,
+ 0xBC, 0x67, 0x43, 0xCE, 0xBC, 0x6C, 0x43, 0xCE,
+ // Bytes 1c80 - 1cbf
+ 0xBC, 0x6D, 0x43, 0xCE, 0xBC, 0x73, 0x44, 0x28,
+ 0x31, 0x30, 0x29, 0x44, 0x28, 0x31, 0x31, 0x29,
+ 0x44, 0x28, 0x31, 0x32, 0x29, 0x44, 0x28, 0x31,
+ 0x33, 0x29, 0x44, 0x28, 0x31, 0x34, 0x29, 0x44,
+ 0x28, 0x31, 0x35, 0x29, 0x44, 0x28, 0x31, 0x36,
+ 0x29, 0x44, 0x28, 0x31, 0x37, 0x29, 0x44, 0x28,
+ 0x31, 0x38, 0x29, 0x44, 0x28, 0x31, 0x39, 0x29,
+ 0x44, 0x28, 0x32, 0x30, 0x29, 0x44, 0x30, 0xE7,
+ // Bytes 1cc0 - 1cff
+ 0x82, 0xB9, 0x44, 0x31, 0xE2, 0x81, 0x84, 0x44,
+ 0x31, 0xE6, 0x97, 0xA5, 0x44, 0x31, 0xE6, 0x9C,
+ 0x88, 0x44, 0x31, 0xE7, 0x82, 0xB9, 0x44, 0x32,
+ 0xE6, 0x97, 0xA5, 0x44, 0x32, 0xE6, 0x9C, 0x88,
+ 0x44, 0x32, 0xE7, 0x82, 0xB9, 0x44, 0x33, 0xE6,
+ 0x97, 0xA5, 0x44, 0x33, 0xE6, 0x9C, 0x88, 0x44,
+ 0x33, 0xE7, 0x82, 0xB9, 0x44, 0x34, 0xE6, 0x97,
+ 0xA5, 0x44, 0x34, 0xE6, 0x9C, 0x88, 0x44, 0x34,
+ // Bytes 1d00 - 1d3f
+ 0xE7, 0x82, 0xB9, 0x44, 0x35, 0xE6, 0x97, 0xA5,
+ 0x44, 0x35, 0xE6, 0x9C, 0x88, 0x44, 0x35, 0xE7,
+ 0x82, 0xB9, 0x44, 0x36, 0xE6, 0x97, 0xA5, 0x44,
+ 0x36, 0xE6, 0x9C, 0x88, 0x44, 0x36, 0xE7, 0x82,
+ 0xB9, 0x44, 0x37, 0xE6, 0x97, 0xA5, 0x44, 0x37,
+ 0xE6, 0x9C, 0x88, 0x44, 0x37, 0xE7, 0x82, 0xB9,
+ 0x44, 0x38, 0xE6, 0x97, 0xA5, 0x44, 0x38, 0xE6,
+ 0x9C, 0x88, 0x44, 0x38, 0xE7, 0x82, 0xB9, 0x44,
+ // Bytes 1d40 - 1d7f
+ 0x39, 0xE6, 0x97, 0xA5, 0x44, 0x39, 0xE6, 0x9C,
+ 0x88, 0x44, 0x39, 0xE7, 0x82, 0xB9, 0x44, 0x56,
+ 0x49, 0x49, 0x49, 0x44, 0x61, 0x2E, 0x6D, 0x2E,
+ 0x44, 0x6B, 0x63, 0x61, 0x6C, 0x44, 0x70, 0x2E,
+ 0x6D, 0x2E, 0x44, 0x76, 0x69, 0x69, 0x69, 0x44,
+ 0xD5, 0xA5, 0xD6, 0x82, 0x44, 0xD5, 0xB4, 0xD5,
+ 0xA5, 0x44, 0xD5, 0xB4, 0xD5, 0xAB, 0x44, 0xD5,
+ 0xB4, 0xD5, 0xAD, 0x44, 0xD5, 0xB4, 0xD5, 0xB6,
+ // Bytes 1d80 - 1dbf
+ 0x44, 0xD5, 0xBE, 0xD5, 0xB6, 0x44, 0xD7, 0x90,
+ 0xD7, 0x9C, 0x44, 0xD8, 0xA7, 0xD9, 0xB4, 0x44,
+ 0xD8, 0xA8, 0xD8, 0xAC, 0x44, 0xD8, 0xA8, 0xD8,
+ 0xAD, 0x44, 0xD8, 0xA8, 0xD8, 0xAE, 0x44, 0xD8,
+ 0xA8, 0xD8, 0xB1, 0x44, 0xD8, 0xA8, 0xD8, 0xB2,
+ 0x44, 0xD8, 0xA8, 0xD9, 0x85, 0x44, 0xD8, 0xA8,
+ 0xD9, 0x86, 0x44, 0xD8, 0xA8, 0xD9, 0x87, 0x44,
+ 0xD8, 0xA8, 0xD9, 0x89, 0x44, 0xD8, 0xA8, 0xD9,
+ // Bytes 1dc0 - 1dff
+ 0x8A, 0x44, 0xD8, 0xAA, 0xD8, 0xAC, 0x44, 0xD8,
+ 0xAA, 0xD8, 0xAD, 0x44, 0xD8, 0xAA, 0xD8, 0xAE,
+ 0x44, 0xD8, 0xAA, 0xD8, 0xB1, 0x44, 0xD8, 0xAA,
+ 0xD8, 0xB2, 0x44, 0xD8, 0xAA, 0xD9, 0x85, 0x44,
+ 0xD8, 0xAA, 0xD9, 0x86, 0x44, 0xD8, 0xAA, 0xD9,
+ 0x87, 0x44, 0xD8, 0xAA, 0xD9, 0x89, 0x44, 0xD8,
+ 0xAA, 0xD9, 0x8A, 0x44, 0xD8, 0xAB, 0xD8, 0xAC,
+ 0x44, 0xD8, 0xAB, 0xD8, 0xB1, 0x44, 0xD8, 0xAB,
+ // Bytes 1e00 - 1e3f
+ 0xD8, 0xB2, 0x44, 0xD8, 0xAB, 0xD9, 0x85, 0x44,
+ 0xD8, 0xAB, 0xD9, 0x86, 0x44, 0xD8, 0xAB, 0xD9,
+ 0x87, 0x44, 0xD8, 0xAB, 0xD9, 0x89, 0x44, 0xD8,
+ 0xAB, 0xD9, 0x8A, 0x44, 0xD8, 0xAC, 0xD8, 0xAD,
+ 0x44, 0xD8, 0xAC, 0xD9, 0x85, 0x44, 0xD8, 0xAC,
+ 0xD9, 0x89, 0x44, 0xD8, 0xAC, 0xD9, 0x8A, 0x44,
+ 0xD8, 0xAD, 0xD8, 0xAC, 0x44, 0xD8, 0xAD, 0xD9,
+ 0x85, 0x44, 0xD8, 0xAD, 0xD9, 0x89, 0x44, 0xD8,
+ // Bytes 1e40 - 1e7f
+ 0xAD, 0xD9, 0x8A, 0x44, 0xD8, 0xAE, 0xD8, 0xAC,
+ 0x44, 0xD8, 0xAE, 0xD8, 0xAD, 0x44, 0xD8, 0xAE,
+ 0xD9, 0x85, 0x44, 0xD8, 0xAE, 0xD9, 0x89, 0x44,
+ 0xD8, 0xAE, 0xD9, 0x8A, 0x44, 0xD8, 0xB3, 0xD8,
+ 0xAC, 0x44, 0xD8, 0xB3, 0xD8, 0xAD, 0x44, 0xD8,
+ 0xB3, 0xD8, 0xAE, 0x44, 0xD8, 0xB3, 0xD8, 0xB1,
+ 0x44, 0xD8, 0xB3, 0xD9, 0x85, 0x44, 0xD8, 0xB3,
+ 0xD9, 0x87, 0x44, 0xD8, 0xB3, 0xD9, 0x89, 0x44,
+ // Bytes 1e80 - 1ebf
+ 0xD8, 0xB3, 0xD9, 0x8A, 0x44, 0xD8, 0xB4, 0xD8,
+ 0xAC, 0x44, 0xD8, 0xB4, 0xD8, 0xAD, 0x44, 0xD8,
+ 0xB4, 0xD8, 0xAE, 0x44, 0xD8, 0xB4, 0xD8, 0xB1,
+ 0x44, 0xD8, 0xB4, 0xD9, 0x85, 0x44, 0xD8, 0xB4,
+ 0xD9, 0x87, 0x44, 0xD8, 0xB4, 0xD9, 0x89, 0x44,
+ 0xD8, 0xB4, 0xD9, 0x8A, 0x44, 0xD8, 0xB5, 0xD8,
+ 0xAD, 0x44, 0xD8, 0xB5, 0xD8, 0xAE, 0x44, 0xD8,
+ 0xB5, 0xD8, 0xB1, 0x44, 0xD8, 0xB5, 0xD9, 0x85,
+ // Bytes 1ec0 - 1eff
+ 0x44, 0xD8, 0xB5, 0xD9, 0x89, 0x44, 0xD8, 0xB5,
+ 0xD9, 0x8A, 0x44, 0xD8, 0xB6, 0xD8, 0xAC, 0x44,
+ 0xD8, 0xB6, 0xD8, 0xAD, 0x44, 0xD8, 0xB6, 0xD8,
+ 0xAE, 0x44, 0xD8, 0xB6, 0xD8, 0xB1, 0x44, 0xD8,
+ 0xB6, 0xD9, 0x85, 0x44, 0xD8, 0xB6, 0xD9, 0x89,
+ 0x44, 0xD8, 0xB6, 0xD9, 0x8A, 0x44, 0xD8, 0xB7,
+ 0xD8, 0xAD, 0x44, 0xD8, 0xB7, 0xD9, 0x85, 0x44,
+ 0xD8, 0xB7, 0xD9, 0x89, 0x44, 0xD8, 0xB7, 0xD9,
+ // Bytes 1f00 - 1f3f
+ 0x8A, 0x44, 0xD8, 0xB8, 0xD9, 0x85, 0x44, 0xD8,
+ 0xB9, 0xD8, 0xAC, 0x44, 0xD8, 0xB9, 0xD9, 0x85,
+ 0x44, 0xD8, 0xB9, 0xD9, 0x89, 0x44, 0xD8, 0xB9,
+ 0xD9, 0x8A, 0x44, 0xD8, 0xBA, 0xD8, 0xAC, 0x44,
+ 0xD8, 0xBA, 0xD9, 0x85, 0x44, 0xD8, 0xBA, 0xD9,
+ 0x89, 0x44, 0xD8, 0xBA, 0xD9, 0x8A, 0x44, 0xD9,
+ 0x81, 0xD8, 0xAC, 0x44, 0xD9, 0x81, 0xD8, 0xAD,
+ 0x44, 0xD9, 0x81, 0xD8, 0xAE, 0x44, 0xD9, 0x81,
+ // Bytes 1f40 - 1f7f
+ 0xD9, 0x85, 0x44, 0xD9, 0x81, 0xD9, 0x89, 0x44,
+ 0xD9, 0x81, 0xD9, 0x8A, 0x44, 0xD9, 0x82, 0xD8,
+ 0xAD, 0x44, 0xD9, 0x82, 0xD9, 0x85, 0x44, 0xD9,
+ 0x82, 0xD9, 0x89, 0x44, 0xD9, 0x82, 0xD9, 0x8A,
+ 0x44, 0xD9, 0x83, 0xD8, 0xA7, 0x44, 0xD9, 0x83,
+ 0xD8, 0xAC, 0x44, 0xD9, 0x83, 0xD8, 0xAD, 0x44,
+ 0xD9, 0x83, 0xD8, 0xAE, 0x44, 0xD9, 0x83, 0xD9,
+ 0x84, 0x44, 0xD9, 0x83, 0xD9, 0x85, 0x44, 0xD9,
+ // Bytes 1f80 - 1fbf
+ 0x83, 0xD9, 0x89, 0x44, 0xD9, 0x83, 0xD9, 0x8A,
+ 0x44, 0xD9, 0x84, 0xD8, 0xA7, 0x44, 0xD9, 0x84,
+ 0xD8, 0xAC, 0x44, 0xD9, 0x84, 0xD8, 0xAD, 0x44,
+ 0xD9, 0x84, 0xD8, 0xAE, 0x44, 0xD9, 0x84, 0xD9,
+ 0x85, 0x44, 0xD9, 0x84, 0xD9, 0x87, 0x44, 0xD9,
+ 0x84, 0xD9, 0x89, 0x44, 0xD9, 0x84, 0xD9, 0x8A,
+ 0x44, 0xD9, 0x85, 0xD8, 0xA7, 0x44, 0xD9, 0x85,
+ 0xD8, 0xAC, 0x44, 0xD9, 0x85, 0xD8, 0xAD, 0x44,
+ // Bytes 1fc0 - 1fff
+ 0xD9, 0x85, 0xD8, 0xAE, 0x44, 0xD9, 0x85, 0xD9,
+ 0x85, 0x44, 0xD9, 0x85, 0xD9, 0x89, 0x44, 0xD9,
+ 0x85, 0xD9, 0x8A, 0x44, 0xD9, 0x86, 0xD8, 0xAC,
+ 0x44, 0xD9, 0x86, 0xD8, 0xAD, 0x44, 0xD9, 0x86,
+ 0xD8, 0xAE, 0x44, 0xD9, 0x86, 0xD8, 0xB1, 0x44,
+ 0xD9, 0x86, 0xD8, 0xB2, 0x44, 0xD9, 0x86, 0xD9,
+ 0x85, 0x44, 0xD9, 0x86, 0xD9, 0x86, 0x44, 0xD9,
+ 0x86, 0xD9, 0x87, 0x44, 0xD9, 0x86, 0xD9, 0x89,
+ // Bytes 2000 - 203f
+ 0x44, 0xD9, 0x86, 0xD9, 0x8A, 0x44, 0xD9, 0x87,
+ 0xD8, 0xAC, 0x44, 0xD9, 0x87, 0xD9, 0x85, 0x44,
+ 0xD9, 0x87, 0xD9, 0x89, 0x44, 0xD9, 0x87, 0xD9,
+ 0x8A, 0x44, 0xD9, 0x88, 0xD9, 0xB4, 0x44, 0xD9,
+ 0x8A, 0xD8, 0xAC, 0x44, 0xD9, 0x8A, 0xD8, 0xAD,
+ 0x44, 0xD9, 0x8A, 0xD8, 0xAE, 0x44, 0xD9, 0x8A,
+ 0xD8, 0xB1, 0x44, 0xD9, 0x8A, 0xD8, 0xB2, 0x44,
+ 0xD9, 0x8A, 0xD9, 0x85, 0x44, 0xD9, 0x8A, 0xD9,
+ // Bytes 2040 - 207f
+ 0x86, 0x44, 0xD9, 0x8A, 0xD9, 0x87, 0x44, 0xD9,
+ 0x8A, 0xD9, 0x89, 0x44, 0xD9, 0x8A, 0xD9, 0x8A,
+ 0x44, 0xD9, 0x8A, 0xD9, 0xB4, 0x44, 0xDB, 0x87,
+ 0xD9, 0xB4, 0x45, 0x28, 0xE1, 0x84, 0x80, 0x29,
+ 0x45, 0x28, 0xE1, 0x84, 0x82, 0x29, 0x45, 0x28,
+ 0xE1, 0x84, 0x83, 0x29, 0x45, 0x28, 0xE1, 0x84,
+ 0x85, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x86, 0x29,
+ 0x45, 0x28, 0xE1, 0x84, 0x87, 0x29, 0x45, 0x28,
+ // Bytes 2080 - 20bf
+ 0xE1, 0x84, 0x89, 0x29, 0x45, 0x28, 0xE1, 0x84,
+ 0x8B, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x8C, 0x29,
+ 0x45, 0x28, 0xE1, 0x84, 0x8E, 0x29, 0x45, 0x28,
+ 0xE1, 0x84, 0x8F, 0x29, 0x45, 0x28, 0xE1, 0x84,
+ 0x90, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x91, 0x29,
+ 0x45, 0x28, 0xE1, 0x84, 0x92, 0x29, 0x45, 0x28,
+ 0xE4, 0xB8, 0x80, 0x29, 0x45, 0x28, 0xE4, 0xB8,
+ 0x83, 0x29, 0x45, 0x28, 0xE4, 0xB8, 0x89, 0x29,
+ // Bytes 20c0 - 20ff
+ 0x45, 0x28, 0xE4, 0xB9, 0x9D, 0x29, 0x45, 0x28,
+ 0xE4, 0xBA, 0x8C, 0x29, 0x45, 0x28, 0xE4, 0xBA,
+ 0x94, 0x29, 0x45, 0x28, 0xE4, 0xBB, 0xA3, 0x29,
+ 0x45, 0x28, 0xE4, 0xBC, 0x81, 0x29, 0x45, 0x28,
+ 0xE4, 0xBC, 0x91, 0x29, 0x45, 0x28, 0xE5, 0x85,
+ 0xAB, 0x29, 0x45, 0x28, 0xE5, 0x85, 0xAD, 0x29,
+ 0x45, 0x28, 0xE5, 0x8A, 0xB4, 0x29, 0x45, 0x28,
+ 0xE5, 0x8D, 0x81, 0x29, 0x45, 0x28, 0xE5, 0x8D,
+ // Bytes 2100 - 213f
+ 0x94, 0x29, 0x45, 0x28, 0xE5, 0x90, 0x8D, 0x29,
+ 0x45, 0x28, 0xE5, 0x91, 0xBC, 0x29, 0x45, 0x28,
+ 0xE5, 0x9B, 0x9B, 0x29, 0x45, 0x28, 0xE5, 0x9C,
+ 0x9F, 0x29, 0x45, 0x28, 0xE5, 0xAD, 0xA6, 0x29,
+ 0x45, 0x28, 0xE6, 0x97, 0xA5, 0x29, 0x45, 0x28,
+ 0xE6, 0x9C, 0x88, 0x29, 0x45, 0x28, 0xE6, 0x9C,
+ 0x89, 0x29, 0x45, 0x28, 0xE6, 0x9C, 0xA8, 0x29,
+ 0x45, 0x28, 0xE6, 0xA0, 0xAA, 0x29, 0x45, 0x28,
+ // Bytes 2140 - 217f
+ 0xE6, 0xB0, 0xB4, 0x29, 0x45, 0x28, 0xE7, 0x81,
+ 0xAB, 0x29, 0x45, 0x28, 0xE7, 0x89, 0xB9, 0x29,
+ 0x45, 0x28, 0xE7, 0x9B, 0xA3, 0x29, 0x45, 0x28,
+ 0xE7, 0xA4, 0xBE, 0x29, 0x45, 0x28, 0xE7, 0xA5,
+ 0x9D, 0x29, 0x45, 0x28, 0xE7, 0xA5, 0xAD, 0x29,
+ 0x45, 0x28, 0xE8, 0x87, 0xAA, 0x29, 0x45, 0x28,
+ 0xE8, 0x87, 0xB3, 0x29, 0x45, 0x28, 0xE8, 0xB2,
+ 0xA1, 0x29, 0x45, 0x28, 0xE8, 0xB3, 0x87, 0x29,
+ // Bytes 2180 - 21bf
+ 0x45, 0x28, 0xE9, 0x87, 0x91, 0x29, 0x45, 0x30,
+ 0xE2, 0x81, 0x84, 0x33, 0x45, 0x31, 0x30, 0xE6,
+ 0x97, 0xA5, 0x45, 0x31, 0x30, 0xE6, 0x9C, 0x88,
+ 0x45, 0x31, 0x30, 0xE7, 0x82, 0xB9, 0x45, 0x31,
+ 0x31, 0xE6, 0x97, 0xA5, 0x45, 0x31, 0x31, 0xE6,
+ 0x9C, 0x88, 0x45, 0x31, 0x31, 0xE7, 0x82, 0xB9,
+ 0x45, 0x31, 0x32, 0xE6, 0x97, 0xA5, 0x45, 0x31,
+ 0x32, 0xE6, 0x9C, 0x88, 0x45, 0x31, 0x32, 0xE7,
+ // Bytes 21c0 - 21ff
+ 0x82, 0xB9, 0x45, 0x31, 0x33, 0xE6, 0x97, 0xA5,
+ 0x45, 0x31, 0x33, 0xE7, 0x82, 0xB9, 0x45, 0x31,
+ 0x34, 0xE6, 0x97, 0xA5, 0x45, 0x31, 0x34, 0xE7,
+ 0x82, 0xB9, 0x45, 0x31, 0x35, 0xE6, 0x97, 0xA5,
+ 0x45, 0x31, 0x35, 0xE7, 0x82, 0xB9, 0x45, 0x31,
+ 0x36, 0xE6, 0x97, 0xA5, 0x45, 0x31, 0x36, 0xE7,
+ 0x82, 0xB9, 0x45, 0x31, 0x37, 0xE6, 0x97, 0xA5,
+ 0x45, 0x31, 0x37, 0xE7, 0x82, 0xB9, 0x45, 0x31,
+ // Bytes 2200 - 223f
+ 0x38, 0xE6, 0x97, 0xA5, 0x45, 0x31, 0x38, 0xE7,
+ 0x82, 0xB9, 0x45, 0x31, 0x39, 0xE6, 0x97, 0xA5,
+ 0x45, 0x31, 0x39, 0xE7, 0x82, 0xB9, 0x45, 0x31,
+ 0xE2, 0x81, 0x84, 0x32, 0x45, 0x31, 0xE2, 0x81,
+ 0x84, 0x33, 0x45, 0x31, 0xE2, 0x81, 0x84, 0x34,
+ 0x45, 0x31, 0xE2, 0x81, 0x84, 0x35, 0x45, 0x31,
+ 0xE2, 0x81, 0x84, 0x36, 0x45, 0x31, 0xE2, 0x81,
+ 0x84, 0x37, 0x45, 0x31, 0xE2, 0x81, 0x84, 0x38,
+ // Bytes 2240 - 227f
+ 0x45, 0x31, 0xE2, 0x81, 0x84, 0x39, 0x45, 0x32,
+ 0x30, 0xE6, 0x97, 0xA5, 0x45, 0x32, 0x30, 0xE7,
+ 0x82, 0xB9, 0x45, 0x32, 0x31, 0xE6, 0x97, 0xA5,
+ 0x45, 0x32, 0x31, 0xE7, 0x82, 0xB9, 0x45, 0x32,
+ 0x32, 0xE6, 0x97, 0xA5, 0x45, 0x32, 0x32, 0xE7,
+ 0x82, 0xB9, 0x45, 0x32, 0x33, 0xE6, 0x97, 0xA5,
+ 0x45, 0x32, 0x33, 0xE7, 0x82, 0xB9, 0x45, 0x32,
+ 0x34, 0xE6, 0x97, 0xA5, 0x45, 0x32, 0x34, 0xE7,
+ // Bytes 2280 - 22bf
+ 0x82, 0xB9, 0x45, 0x32, 0x35, 0xE6, 0x97, 0xA5,
+ 0x45, 0x32, 0x36, 0xE6, 0x97, 0xA5, 0x45, 0x32,
+ 0x37, 0xE6, 0x97, 0xA5, 0x45, 0x32, 0x38, 0xE6,
+ 0x97, 0xA5, 0x45, 0x32, 0x39, 0xE6, 0x97, 0xA5,
+ 0x45, 0x32, 0xE2, 0x81, 0x84, 0x33, 0x45, 0x32,
+ 0xE2, 0x81, 0x84, 0x35, 0x45, 0x33, 0x30, 0xE6,
+ 0x97, 0xA5, 0x45, 0x33, 0x31, 0xE6, 0x97, 0xA5,
+ 0x45, 0x33, 0xE2, 0x81, 0x84, 0x34, 0x45, 0x33,
+ // Bytes 22c0 - 22ff
+ 0xE2, 0x81, 0x84, 0x35, 0x45, 0x33, 0xE2, 0x81,
+ 0x84, 0x38, 0x45, 0x34, 0xE2, 0x81, 0x84, 0x35,
+ 0x45, 0x35, 0xE2, 0x81, 0x84, 0x36, 0x45, 0x35,
+ 0xE2, 0x81, 0x84, 0x38, 0x45, 0x37, 0xE2, 0x81,
+ 0x84, 0x38, 0x45, 0x41, 0xE2, 0x88, 0x95, 0x6D,
+ 0x45, 0x56, 0xE2, 0x88, 0x95, 0x6D, 0x45, 0x6D,
+ 0xE2, 0x88, 0x95, 0x73, 0x46, 0x31, 0xE2, 0x81,
+ 0x84, 0x31, 0x30, 0x46, 0x43, 0xE2, 0x88, 0x95,
+ // Bytes 2300 - 233f
+ 0x6B, 0x67, 0x46, 0x6D, 0xE2, 0x88, 0x95, 0x73,
+ 0x32, 0x46, 0xD8, 0xA8, 0xD8, 0xAD, 0xD9, 0x8A,
+ 0x46, 0xD8, 0xA8, 0xD8, 0xAE, 0xD9, 0x8A, 0x46,
+ 0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x85, 0x46, 0xD8,
+ 0xAA, 0xD8, 0xAC, 0xD9, 0x89, 0x46, 0xD8, 0xAA,
+ 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD8, 0xAA, 0xD8,
+ 0xAD, 0xD8, 0xAC, 0x46, 0xD8, 0xAA, 0xD8, 0xAD,
+ 0xD9, 0x85, 0x46, 0xD8, 0xAA, 0xD8, 0xAE, 0xD9,
+ // Bytes 2340 - 237f
+ 0x85, 0x46, 0xD8, 0xAA, 0xD8, 0xAE, 0xD9, 0x89,
+ 0x46, 0xD8, 0xAA, 0xD8, 0xAE, 0xD9, 0x8A, 0x46,
+ 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAC, 0x46, 0xD8,
+ 0xAA, 0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD8, 0xAA,
+ 0xD9, 0x85, 0xD8, 0xAE, 0x46, 0xD8, 0xAA, 0xD9,
+ 0x85, 0xD9, 0x89, 0x46, 0xD8, 0xAA, 0xD9, 0x85,
+ 0xD9, 0x8A, 0x46, 0xD8, 0xAC, 0xD8, 0xAD, 0xD9,
+ 0x89, 0x46, 0xD8, 0xAC, 0xD8, 0xAD, 0xD9, 0x8A,
+ // Bytes 2380 - 23bf
+ 0x46, 0xD8, 0xAC, 0xD9, 0x85, 0xD8, 0xAD, 0x46,
+ 0xD8, 0xAC, 0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD8,
+ 0xAC, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD8, 0xAD,
+ 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD8, 0xAD, 0xD9,
+ 0x85, 0xD9, 0x89, 0x46, 0xD8, 0xAD, 0xD9, 0x85,
+ 0xD9, 0x8A, 0x46, 0xD8, 0xB3, 0xD8, 0xAC, 0xD8,
+ 0xAD, 0x46, 0xD8, 0xB3, 0xD8, 0xAC, 0xD9, 0x89,
+ 0x46, 0xD8, 0xB3, 0xD8, 0xAD, 0xD8, 0xAC, 0x46,
+ // Bytes 23c0 - 23ff
+ 0xD8, 0xB3, 0xD8, 0xAE, 0xD9, 0x89, 0x46, 0xD8,
+ 0xB3, 0xD8, 0xAE, 0xD9, 0x8A, 0x46, 0xD8, 0xB3,
+ 0xD9, 0x85, 0xD8, 0xAC, 0x46, 0xD8, 0xB3, 0xD9,
+ 0x85, 0xD8, 0xAD, 0x46, 0xD8, 0xB3, 0xD9, 0x85,
+ 0xD9, 0x85, 0x46, 0xD8, 0xB4, 0xD8, 0xAC, 0xD9,
+ 0x8A, 0x46, 0xD8, 0xB4, 0xD8, 0xAD, 0xD9, 0x85,
+ 0x46, 0xD8, 0xB4, 0xD8, 0xAD, 0xD9, 0x8A, 0x46,
+ 0xD8, 0xB4, 0xD9, 0x85, 0xD8, 0xAE, 0x46, 0xD8,
+ // Bytes 2400 - 243f
+ 0xB4, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD8, 0xB5,
+ 0xD8, 0xAD, 0xD8, 0xAD, 0x46, 0xD8, 0xB5, 0xD8,
+ 0xAD, 0xD9, 0x8A, 0x46, 0xD8, 0xB5, 0xD9, 0x84,
+ 0xD9, 0x89, 0x46, 0xD8, 0xB5, 0xD9, 0x84, 0xDB,
+ 0x92, 0x46, 0xD8, 0xB5, 0xD9, 0x85, 0xD9, 0x85,
+ 0x46, 0xD8, 0xB6, 0xD8, 0xAD, 0xD9, 0x89, 0x46,
+ 0xD8, 0xB6, 0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD8,
+ 0xB6, 0xD8, 0xAE, 0xD9, 0x85, 0x46, 0xD8, 0xB7,
+ // Bytes 2440 - 247f
+ 0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD8, 0xB7, 0xD9,
+ 0x85, 0xD9, 0x85, 0x46, 0xD8, 0xB7, 0xD9, 0x85,
+ 0xD9, 0x8A, 0x46, 0xD8, 0xB9, 0xD8, 0xAC, 0xD9,
+ 0x85, 0x46, 0xD8, 0xB9, 0xD9, 0x85, 0xD9, 0x85,
+ 0x46, 0xD8, 0xB9, 0xD9, 0x85, 0xD9, 0x89, 0x46,
+ 0xD8, 0xB9, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD8,
+ 0xBA, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD8, 0xBA,
+ 0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD8, 0xBA, 0xD9,
+ // Bytes 2480 - 24bf
+ 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x81, 0xD8, 0xAE,
+ 0xD9, 0x85, 0x46, 0xD9, 0x81, 0xD9, 0x85, 0xD9,
+ 0x8A, 0x46, 0xD9, 0x82, 0xD9, 0x84, 0xDB, 0x92,
+ 0x46, 0xD9, 0x82, 0xD9, 0x85, 0xD8, 0xAD, 0x46,
+ 0xD9, 0x82, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD9,
+ 0x82, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x83,
+ 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD9, 0x83, 0xD9,
+ 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x84, 0xD8, 0xAC,
+ // Bytes 24c0 - 24ff
+ 0xD8, 0xAC, 0x46, 0xD9, 0x84, 0xD8, 0xAC, 0xD9,
+ 0x85, 0x46, 0xD9, 0x84, 0xD8, 0xAC, 0xD9, 0x8A,
+ 0x46, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x85, 0x46,
+ 0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x89, 0x46, 0xD9,
+ 0x84, 0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD9, 0x84,
+ 0xD8, 0xAE, 0xD9, 0x85, 0x46, 0xD9, 0x84, 0xD9,
+ 0x85, 0xD8, 0xAD, 0x46, 0xD9, 0x84, 0xD9, 0x85,
+ 0xD9, 0x8A, 0x46, 0xD9, 0x85, 0xD8, 0xAC, 0xD8,
+ // Bytes 2500 - 253f
+ 0xAD, 0x46, 0xD9, 0x85, 0xD8, 0xAC, 0xD8, 0xAE,
+ 0x46, 0xD9, 0x85, 0xD8, 0xAC, 0xD9, 0x85, 0x46,
+ 0xD9, 0x85, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD9,
+ 0x85, 0xD8, 0xAD, 0xD8, 0xAC, 0x46, 0xD9, 0x85,
+ 0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD9, 0x85, 0xD8,
+ 0xAD, 0xD9, 0x8A, 0x46, 0xD9, 0x85, 0xD8, 0xAE,
+ 0xD8, 0xAC, 0x46, 0xD9, 0x85, 0xD8, 0xAE, 0xD9,
+ 0x85, 0x46, 0xD9, 0x85, 0xD8, 0xAE, 0xD9, 0x8A,
+ // Bytes 2540 - 257f
+ 0x46, 0xD9, 0x85, 0xD9, 0x85, 0xD9, 0x8A, 0x46,
+ 0xD9, 0x86, 0xD8, 0xAC, 0xD8, 0xAD, 0x46, 0xD9,
+ 0x86, 0xD8, 0xAC, 0xD9, 0x85, 0x46, 0xD9, 0x86,
+ 0xD8, 0xAC, 0xD9, 0x89, 0x46, 0xD9, 0x86, 0xD8,
+ 0xAC, 0xD9, 0x8A, 0x46, 0xD9, 0x86, 0xD8, 0xAD,
+ 0xD9, 0x85, 0x46, 0xD9, 0x86, 0xD8, 0xAD, 0xD9,
+ 0x89, 0x46, 0xD9, 0x86, 0xD8, 0xAD, 0xD9, 0x8A,
+ 0x46, 0xD9, 0x86, 0xD9, 0x85, 0xD9, 0x89, 0x46,
+ // Bytes 2580 - 25bf
+ 0xD9, 0x86, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9,
+ 0x87, 0xD9, 0x85, 0xD8, 0xAC, 0x46, 0xD9, 0x87,
+ 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD9, 0x8A, 0xD8,
+ 0xAC, 0xD9, 0x8A, 0x46, 0xD9, 0x8A, 0xD8, 0xAD,
+ 0xD9, 0x8A, 0x46, 0xD9, 0x8A, 0xD9, 0x85, 0xD9,
+ 0x85, 0x46, 0xD9, 0x8A, 0xD9, 0x85, 0xD9, 0x8A,
+ 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xA7, 0x46,
+ 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAC, 0x46, 0xD9,
+ // Bytes 25c0 - 25ff
+ 0x8A, 0xD9, 0x94, 0xD8, 0xAD, 0x46, 0xD9, 0x8A,
+ 0xD9, 0x94, 0xD8, 0xAE, 0x46, 0xD9, 0x8A, 0xD9,
+ 0x94, 0xD8, 0xB1, 0x46, 0xD9, 0x8A, 0xD9, 0x94,
+ 0xD8, 0xB2, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9,
+ 0x85, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x86,
+ 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x87, 0x46,
+ 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x88, 0x46, 0xD9,
+ 0x8A, 0xD9, 0x94, 0xD9, 0x89, 0x46, 0xD9, 0x8A,
+ // Bytes 2600 - 263f
+ 0xD9, 0x94, 0xD9, 0x8A, 0x46, 0xD9, 0x8A, 0xD9,
+ 0x94, 0xDB, 0x86, 0x46, 0xD9, 0x8A, 0xD9, 0x94,
+ 0xDB, 0x87, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xDB,
+ 0x88, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x90,
+ 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x95, 0x46,
+ 0xE0, 0xB9, 0x8D, 0xE0, 0xB8, 0xB2, 0x46, 0xE0,
+ 0xBA, 0xAB, 0xE0, 0xBA, 0x99, 0x46, 0xE0, 0xBA,
+ 0xAB, 0xE0, 0xBA, 0xA1, 0x46, 0xE0, 0xBB, 0x8D,
+ // Bytes 2640 - 267f
+ 0xE0, 0xBA, 0xB2, 0x46, 0xE0, 0xBD, 0x80, 0xE0,
+ 0xBE, 0xB5, 0x46, 0xE0, 0xBD, 0x82, 0xE0, 0xBE,
+ 0xB7, 0x46, 0xE0, 0xBD, 0x8C, 0xE0, 0xBE, 0xB7,
+ 0x46, 0xE0, 0xBD, 0x91, 0xE0, 0xBE, 0xB7, 0x46,
+ 0xE0, 0xBD, 0x96, 0xE0, 0xBE, 0xB7, 0x46, 0xE0,
+ 0xBD, 0x9B, 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE,
+ 0x90, 0xE0, 0xBE, 0xB5, 0x46, 0xE0, 0xBE, 0x92,
+ 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE, 0x9C, 0xE0,
+ // Bytes 2680 - 26bf
+ 0xBE, 0xB7, 0x46, 0xE0, 0xBE, 0xA1, 0xE0, 0xBE,
+ 0xB7, 0x46, 0xE0, 0xBE, 0xA6, 0xE0, 0xBE, 0xB7,
+ 0x46, 0xE0, 0xBE, 0xAB, 0xE0, 0xBE, 0xB7, 0x46,
+ 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2, 0x46, 0xE2,
+ 0x80, 0xB5, 0xE2, 0x80, 0xB5, 0x46, 0xE2, 0x88,
+ 0xAB, 0xE2, 0x88, 0xAB, 0x46, 0xE2, 0x88, 0xAE,
+ 0xE2, 0x88, 0xAE, 0x46, 0xE3, 0x81, 0xBB, 0xE3,
+ 0x81, 0x8B, 0x46, 0xE3, 0x82, 0x88, 0xE3, 0x82,
+ // Bytes 26c0 - 26ff
+ 0x8A, 0x46, 0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xAD,
+ 0x46, 0xE3, 0x82, 0xB3, 0xE3, 0x82, 0xB3, 0x46,
+ 0xE3, 0x82, 0xB3, 0xE3, 0x83, 0x88, 0x46, 0xE3,
+ 0x83, 0x88, 0xE3, 0x83, 0xB3, 0x46, 0xE3, 0x83,
+ 0x8A, 0xE3, 0x83, 0x8E, 0x46, 0xE3, 0x83, 0x9B,
+ 0xE3, 0x83, 0xB3, 0x46, 0xE3, 0x83, 0x9F, 0xE3,
+ 0x83, 0xAA, 0x46, 0xE3, 0x83, 0xAA, 0xE3, 0x83,
+ 0xA9, 0x46, 0xE3, 0x83, 0xAC, 0xE3, 0x83, 0xA0,
+ // Bytes 2700 - 273f
+ 0x46, 0xE4, 0xBB, 0xA4, 0xE5, 0x92, 0x8C, 0x46,
+ 0xE5, 0xA4, 0xA7, 0xE6, 0xAD, 0xA3, 0x46, 0xE5,
+ 0xB9, 0xB3, 0xE6, 0x88, 0x90, 0x46, 0xE6, 0x98,
+ 0x8E, 0xE6, 0xB2, 0xBB, 0x46, 0xE6, 0x98, 0xAD,
+ 0xE5, 0x92, 0x8C, 0x47, 0x72, 0x61, 0x64, 0xE2,
+ 0x88, 0x95, 0x73, 0x47, 0xE3, 0x80, 0x94, 0x53,
+ 0xE3, 0x80, 0x95, 0x48, 0x28, 0xE1, 0x84, 0x80,
+ 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84,
+ // Bytes 2740 - 277f
+ 0x82, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1,
+ 0x84, 0x83, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28,
+ 0xE1, 0x84, 0x85, 0xE1, 0x85, 0xA1, 0x29, 0x48,
+ 0x28, 0xE1, 0x84, 0x86, 0xE1, 0x85, 0xA1, 0x29,
+ 0x48, 0x28, 0xE1, 0x84, 0x87, 0xE1, 0x85, 0xA1,
+ 0x29, 0x48, 0x28, 0xE1, 0x84, 0x89, 0xE1, 0x85,
+ 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x8B, 0xE1,
+ 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x8C,
+ // Bytes 2780 - 27bf
+ 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84,
+ 0x8C, 0xE1, 0x85, 0xAE, 0x29, 0x48, 0x28, 0xE1,
+ 0x84, 0x8E, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28,
+ 0xE1, 0x84, 0x8F, 0xE1, 0x85, 0xA1, 0x29, 0x48,
+ 0x28, 0xE1, 0x84, 0x90, 0xE1, 0x85, 0xA1, 0x29,
+ 0x48, 0x28, 0xE1, 0x84, 0x91, 0xE1, 0x85, 0xA1,
+ 0x29, 0x48, 0x28, 0xE1, 0x84, 0x92, 0xE1, 0x85,
+ 0xA1, 0x29, 0x48, 0x72, 0x61, 0x64, 0xE2, 0x88,
+ // Bytes 27c0 - 27ff
+ 0x95, 0x73, 0x32, 0x48, 0xD8, 0xA7, 0xD9, 0x83,
+ 0xD8, 0xA8, 0xD8, 0xB1, 0x48, 0xD8, 0xA7, 0xD9,
+ 0x84, 0xD9, 0x84, 0xD9, 0x87, 0x48, 0xD8, 0xB1,
+ 0xD8, 0xB3, 0xD9, 0x88, 0xD9, 0x84, 0x48, 0xD8,
+ 0xB1, 0xDB, 0x8C, 0xD8, 0xA7, 0xD9, 0x84, 0x48,
+ 0xD8, 0xB5, 0xD9, 0x84, 0xD8, 0xB9, 0xD9, 0x85,
+ 0x48, 0xD8, 0xB9, 0xD9, 0x84, 0xD9, 0x8A, 0xD9,
+ 0x87, 0x48, 0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x85,
+ // Bytes 2800 - 283f
+ 0xD8, 0xAF, 0x48, 0xD9, 0x88, 0xD8, 0xB3, 0xD9,
+ 0x84, 0xD9, 0x85, 0x49, 0xE2, 0x80, 0xB2, 0xE2,
+ 0x80, 0xB2, 0xE2, 0x80, 0xB2, 0x49, 0xE2, 0x80,
+ 0xB5, 0xE2, 0x80, 0xB5, 0xE2, 0x80, 0xB5, 0x49,
+ 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0xE2, 0x88,
+ 0xAB, 0x49, 0xE2, 0x88, 0xAE, 0xE2, 0x88, 0xAE,
+ 0xE2, 0x88, 0xAE, 0x49, 0xE3, 0x80, 0x94, 0xE4,
+ 0xB8, 0x89, 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80,
+ // Bytes 2840 - 287f
+ 0x94, 0xE4, 0xBA, 0x8C, 0xE3, 0x80, 0x95, 0x49,
+ 0xE3, 0x80, 0x94, 0xE5, 0x8B, 0x9D, 0xE3, 0x80,
+ 0x95, 0x49, 0xE3, 0x80, 0x94, 0xE5, 0xAE, 0x89,
+ 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80, 0x94, 0xE6,
+ 0x89, 0x93, 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80,
+ 0x94, 0xE6, 0x95, 0x97, 0xE3, 0x80, 0x95, 0x49,
+ 0xE3, 0x80, 0x94, 0xE6, 0x9C, 0xAC, 0xE3, 0x80,
+ 0x95, 0x49, 0xE3, 0x80, 0x94, 0xE7, 0x82, 0xB9,
+ // Bytes 2880 - 28bf
+ 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80, 0x94, 0xE7,
+ 0x9B, 0x97, 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x82,
+ 0xA2, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB, 0x49,
+ 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xB3, 0xE3, 0x83,
+ 0x81, 0x49, 0xE3, 0x82, 0xA6, 0xE3, 0x82, 0xA9,
+ 0xE3, 0x83, 0xB3, 0x49, 0xE3, 0x82, 0xAA, 0xE3,
+ 0x83, 0xB3, 0xE3, 0x82, 0xB9, 0x49, 0xE3, 0x82,
+ 0xAA, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xA0, 0x49,
+ // Bytes 28c0 - 28ff
+ 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0xA4, 0xE3, 0x83,
+ 0xAA, 0x49, 0xE3, 0x82, 0xB1, 0xE3, 0x83, 0xBC,
+ 0xE3, 0x82, 0xB9, 0x49, 0xE3, 0x82, 0xB3, 0xE3,
+ 0x83, 0xAB, 0xE3, 0x83, 0x8A, 0x49, 0xE3, 0x82,
+ 0xBB, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x81, 0x49,
+ 0xE3, 0x82, 0xBB, 0xE3, 0x83, 0xB3, 0xE3, 0x83,
+ 0x88, 0x49, 0xE3, 0x83, 0x86, 0xE3, 0x82, 0x99,
+ 0xE3, 0x82, 0xB7, 0x49, 0xE3, 0x83, 0x88, 0xE3,
+ // Bytes 2900 - 293f
+ 0x82, 0x99, 0xE3, 0x83, 0xAB, 0x49, 0xE3, 0x83,
+ 0x8E, 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88, 0x49,
+ 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0xA4, 0xE3, 0x83,
+ 0x84, 0x49, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x99,
+ 0xE3, 0x83, 0xAB, 0x49, 0xE3, 0x83, 0x92, 0xE3,
+ 0x82, 0x9A, 0xE3, 0x82, 0xB3, 0x49, 0xE3, 0x83,
+ 0x95, 0xE3, 0x83, 0xA9, 0xE3, 0x83, 0xB3, 0x49,
+ 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x82,
+ // Bytes 2940 - 297f
+ 0xBD, 0x49, 0xE3, 0x83, 0x98, 0xE3, 0x83, 0xAB,
+ 0xE3, 0x83, 0x84, 0x49, 0xE3, 0x83, 0x9B, 0xE3,
+ 0x83, 0xBC, 0xE3, 0x83, 0xAB, 0x49, 0xE3, 0x83,
+ 0x9B, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xB3, 0x49,
+ 0xE3, 0x83, 0x9E, 0xE3, 0x82, 0xA4, 0xE3, 0x83,
+ 0xAB, 0x49, 0xE3, 0x83, 0x9E, 0xE3, 0x83, 0x83,
+ 0xE3, 0x83, 0x8F, 0x49, 0xE3, 0x83, 0x9E, 0xE3,
+ 0x83, 0xAB, 0xE3, 0x82, 0xAF, 0x49, 0xE3, 0x83,
+ // Bytes 2980 - 29bf
+ 0xA4, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB, 0x49,
+ 0xE3, 0x83, 0xA6, 0xE3, 0x82, 0xA2, 0xE3, 0x83,
+ 0xB3, 0x49, 0xE3, 0x83, 0xAF, 0xE3, 0x83, 0x83,
+ 0xE3, 0x83, 0x88, 0x4C, 0xE2, 0x80, 0xB2, 0xE2,
+ 0x80, 0xB2, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2,
+ 0x4C, 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0xE2,
+ 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0x4C, 0xE3, 0x82,
+ 0xA2, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x95, 0xE3,
+ // Bytes 29c0 - 29ff
+ 0x82, 0xA1, 0x4C, 0xE3, 0x82, 0xA8, 0xE3, 0x83,
+ 0xBC, 0xE3, 0x82, 0xAB, 0xE3, 0x83, 0xBC, 0x4C,
+ 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0xE3, 0x83,
+ 0xAD, 0xE3, 0x83, 0xB3, 0x4C, 0xE3, 0x82, 0xAB,
+ 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xB3, 0xE3, 0x83,
+ 0x9E, 0x4C, 0xE3, 0x82, 0xAB, 0xE3, 0x83, 0xA9,
+ 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88, 0x4C, 0xE3,
+ 0x82, 0xAB, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xAA,
+ // Bytes 2a00 - 2a3f
+ 0xE3, 0x83, 0xBC, 0x4C, 0xE3, 0x82, 0xAD, 0xE3,
+ 0x82, 0x99, 0xE3, 0x83, 0x8B, 0xE3, 0x83, 0xBC,
+ 0x4C, 0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xA5, 0xE3,
+ 0x83, 0xAA, 0xE3, 0x83, 0xBC, 0x4C, 0xE3, 0x82,
+ 0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xA9, 0xE3,
+ 0x83, 0xA0, 0x4C, 0xE3, 0x82, 0xAF, 0xE3, 0x83,
+ 0xAD, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x8D, 0x4C,
+ 0xE3, 0x82, 0xB5, 0xE3, 0x82, 0xA4, 0xE3, 0x82,
+ // Bytes 2a40 - 2a7f
+ 0xAF, 0xE3, 0x83, 0xAB, 0x4C, 0xE3, 0x82, 0xBF,
+ 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x82,
+ 0xB9, 0x4C, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x9A,
+ 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x84, 0x4C, 0xE3,
+ 0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xAF,
+ 0xE3, 0x83, 0xAB, 0x4C, 0xE3, 0x83, 0x95, 0xE3,
+ 0x82, 0xA3, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88,
+ 0x4C, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x99, 0xE3,
+ // Bytes 2a80 - 2abf
+ 0x83, 0xBC, 0xE3, 0x82, 0xBF, 0x4C, 0xE3, 0x83,
+ 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0x8B, 0xE3,
+ 0x83, 0x92, 0x4C, 0xE3, 0x83, 0x98, 0xE3, 0x82,
+ 0x9A, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xB9, 0x4C,
+ 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x99, 0xE3, 0x83,
+ 0xAB, 0xE3, 0x83, 0x88, 0x4C, 0xE3, 0x83, 0x9E,
+ 0xE3, 0x82, 0xA4, 0xE3, 0x82, 0xAF, 0xE3, 0x83,
+ 0xAD, 0x4C, 0xE3, 0x83, 0x9F, 0xE3, 0x82, 0xAF,
+ // Bytes 2ac0 - 2aff
+ 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xB3, 0x4C, 0xE3,
+ 0x83, 0xA1, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88,
+ 0xE3, 0x83, 0xAB, 0x4C, 0xE3, 0x83, 0xAA, 0xE3,
+ 0x83, 0x83, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB,
+ 0x4C, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x92, 0xE3,
+ 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0x4C, 0xE6, 0xA0,
+ 0xAA, 0xE5, 0xBC, 0x8F, 0xE4, 0xBC, 0x9A, 0xE7,
+ 0xA4, 0xBE, 0x4E, 0x28, 0xE1, 0x84, 0x8B, 0xE1,
+ // Bytes 2b00 - 2b3f
+ 0x85, 0xA9, 0xE1, 0x84, 0x92, 0xE1, 0x85, 0xAE,
+ 0x29, 0x4F, 0xD8, 0xAC, 0xD9, 0x84, 0x20, 0xD8,
+ 0xAC, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x84, 0xD9,
+ 0x87, 0x4F, 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0x8F,
+ 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3, 0x83,
+ 0x88, 0x4F, 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0xB3,
+ 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x82,
+ 0xA2, 0x4F, 0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xAD,
+ // Bytes 2b40 - 2b7f
+ 0xE3, 0x83, 0xAF, 0xE3, 0x83, 0x83, 0xE3, 0x83,
+ 0x88, 0x4F, 0xE3, 0x82, 0xB5, 0xE3, 0x83, 0xB3,
+ 0xE3, 0x83, 0x81, 0xE3, 0x83, 0xBC, 0xE3, 0x83,
+ 0xA0, 0x4F, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x99,
+ 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAC, 0xE3, 0x83,
+ 0xAB, 0x4F, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0xAF,
+ 0xE3, 0x82, 0xBF, 0xE3, 0x83, 0xBC, 0xE3, 0x83,
+ 0xAB, 0x4F, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x9A,
+ // Bytes 2b80 - 2bbf
+ 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xB3, 0xE3, 0x83,
+ 0x88, 0x4F, 0xE3, 0x83, 0x9E, 0xE3, 0x83, 0xB3,
+ 0xE3, 0x82, 0xB7, 0xE3, 0x83, 0xA7, 0xE3, 0x83,
+ 0xB3, 0x4F, 0xE3, 0x83, 0xA1, 0xE3, 0x82, 0xAB,
+ 0xE3, 0x82, 0x99, 0xE3, 0x83, 0x88, 0xE3, 0x83,
+ 0xB3, 0x4F, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0xBC,
+ 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x99, 0xE3, 0x83,
+ 0xAB, 0x51, 0x28, 0xE1, 0x84, 0x8B, 0xE1, 0x85,
+ // Bytes 2bc0 - 2bff
+ 0xA9, 0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xA5, 0xE1,
+ 0x86, 0xAB, 0x29, 0x52, 0xE3, 0x82, 0xAD, 0xE3,
+ 0x82, 0x99, 0xE3, 0x83, 0xAB, 0xE3, 0x82, 0xBF,
+ 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC, 0x52, 0xE3,
+ 0x82, 0xAD, 0xE3, 0x83, 0xAD, 0xE3, 0x82, 0xAF,
+ 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xA9, 0xE3, 0x83,
+ 0xA0, 0x52, 0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xAD,
+ 0xE3, 0x83, 0xA1, 0xE3, 0x83, 0xBC, 0xE3, 0x83,
+ // Bytes 2c00 - 2c3f
+ 0x88, 0xE3, 0x83, 0xAB, 0x52, 0xE3, 0x82, 0xAF,
+ 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xA9, 0xE3, 0x83,
+ 0xA0, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xB3, 0x52,
+ 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAB, 0xE3, 0x82,
+ 0xBB, 0xE3, 0x82, 0x99, 0xE3, 0x82, 0xA4, 0xE3,
+ 0x83, 0xAD, 0x52, 0xE3, 0x83, 0x8F, 0xE3, 0x82,
+ 0x9A, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xBB, 0xE3,
+ 0x83, 0xB3, 0xE3, 0x83, 0x88, 0x52, 0xE3, 0x83,
+ // Bytes 2c40 - 2c7f
+ 0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xA2, 0xE3,
+ 0x82, 0xB9, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB,
+ 0x52, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x99, 0xE3,
+ 0x83, 0x83, 0xE3, 0x82, 0xB7, 0xE3, 0x82, 0xA7,
+ 0xE3, 0x83, 0xAB, 0x52, 0xE3, 0x83, 0x9F, 0xE3,
+ 0x83, 0xAA, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x99,
+ 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB, 0x52, 0xE3,
+ 0x83, 0xAC, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x88,
+ // Bytes 2c80 - 2cbf
+ 0xE3, 0x82, 0xB1, 0xE3, 0x82, 0x99, 0xE3, 0x83,
+ 0xB3, 0x61, 0xD8, 0xB5, 0xD9, 0x84, 0xD9, 0x89,
+ 0x20, 0xD8, 0xA7, 0xD9, 0x84, 0xD9, 0x84, 0xD9,
+ 0x87, 0x20, 0xD8, 0xB9, 0xD9, 0x84, 0xD9, 0x8A,
+ 0xD9, 0x87, 0x20, 0xD9, 0x88, 0xD8, 0xB3, 0xD9,
+ 0x84, 0xD9, 0x85, 0x06, 0xE0, 0xA7, 0x87, 0xE0,
+ 0xA6, 0xBE, 0x01, 0x06, 0xE0, 0xA7, 0x87, 0xE0,
+ 0xA7, 0x97, 0x01, 0x06, 0xE0, 0xAD, 0x87, 0xE0,
+ // Bytes 2cc0 - 2cff
+ 0xAC, 0xBE, 0x01, 0x06, 0xE0, 0xAD, 0x87, 0xE0,
+ 0xAD, 0x96, 0x01, 0x06, 0xE0, 0xAD, 0x87, 0xE0,
+ 0xAD, 0x97, 0x01, 0x06, 0xE0, 0xAE, 0x92, 0xE0,
+ 0xAF, 0x97, 0x01, 0x06, 0xE0, 0xAF, 0x86, 0xE0,
+ 0xAE, 0xBE, 0x01, 0x06, 0xE0, 0xAF, 0x86, 0xE0,
+ 0xAF, 0x97, 0x01, 0x06, 0xE0, 0xAF, 0x87, 0xE0,
+ 0xAE, 0xBE, 0x01, 0x06, 0xE0, 0xB2, 0xBF, 0xE0,
+ 0xB3, 0x95, 0x01, 0x06, 0xE0, 0xB3, 0x86, 0xE0,
+ // Bytes 2d00 - 2d3f
+ 0xB3, 0x95, 0x01, 0x06, 0xE0, 0xB3, 0x86, 0xE0,
+ 0xB3, 0x96, 0x01, 0x06, 0xE0, 0xB5, 0x86, 0xE0,
+ 0xB4, 0xBE, 0x01, 0x06, 0xE0, 0xB5, 0x86, 0xE0,
+ 0xB5, 0x97, 0x01, 0x06, 0xE0, 0xB5, 0x87, 0xE0,
+ 0xB4, 0xBE, 0x01, 0x06, 0xE0, 0xB7, 0x99, 0xE0,
+ 0xB7, 0x9F, 0x01, 0x06, 0xE1, 0x80, 0xA5, 0xE1,
+ 0x80, 0xAE, 0x01, 0x06, 0xE1, 0xAC, 0x85, 0xE1,
+ 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC, 0x87, 0xE1,
+ // Bytes 2d40 - 2d7f
+ 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC, 0x89, 0xE1,
+ 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC, 0x8B, 0xE1,
+ 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC, 0x8D, 0xE1,
+ 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC, 0x91, 0xE1,
+ 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC, 0xBA, 0xE1,
+ 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC, 0xBC, 0xE1,
+ 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC, 0xBE, 0xE1,
+ 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC, 0xBF, 0xE1,
+ // Bytes 2d80 - 2dbf
+ 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAD, 0x82, 0xE1,
+ 0xAC, 0xB5, 0x01, 0x08, 0xF0, 0x91, 0x84, 0xB1,
+ 0xF0, 0x91, 0x84, 0xA7, 0x01, 0x08, 0xF0, 0x91,
+ 0x84, 0xB2, 0xF0, 0x91, 0x84, 0xA7, 0x01, 0x08,
+ 0xF0, 0x91, 0x8D, 0x87, 0xF0, 0x91, 0x8C, 0xBE,
+ 0x01, 0x08, 0xF0, 0x91, 0x8D, 0x87, 0xF0, 0x91,
+ 0x8D, 0x97, 0x01, 0x08, 0xF0, 0x91, 0x92, 0xB9,
+ 0xF0, 0x91, 0x92, 0xB0, 0x01, 0x08, 0xF0, 0x91,
+ // Bytes 2dc0 - 2dff
+ 0x92, 0xB9, 0xF0, 0x91, 0x92, 0xBA, 0x01, 0x08,
+ 0xF0, 0x91, 0x92, 0xB9, 0xF0, 0x91, 0x92, 0xBD,
+ 0x01, 0x08, 0xF0, 0x91, 0x96, 0xB8, 0xF0, 0x91,
+ 0x96, 0xAF, 0x01, 0x08, 0xF0, 0x91, 0x96, 0xB9,
+ 0xF0, 0x91, 0x96, 0xAF, 0x01, 0x08, 0xF0, 0x91,
+ 0xA4, 0xB5, 0xF0, 0x91, 0xA4, 0xB0, 0x01, 0x09,
+ 0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x82, 0xE0, 0xB3,
+ 0x95, 0x02, 0x09, 0xE0, 0xB7, 0x99, 0xE0, 0xB7,
+ // Bytes 2e00 - 2e3f
+ 0x8F, 0xE0, 0xB7, 0x8A, 0x16, 0x44, 0x44, 0x5A,
+ 0xCC, 0x8C, 0xCD, 0x44, 0x44, 0x7A, 0xCC, 0x8C,
+ 0xCD, 0x44, 0x64, 0x7A, 0xCC, 0x8C, 0xCD, 0x46,
+ 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x93, 0xCD, 0x46,
+ 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x94, 0xCD, 0x46,
+ 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x95, 0xB9, 0x46,
+ 0xE1, 0x84, 0x80, 0xE1, 0x85, 0xA1, 0x01, 0x46,
+ 0xE1, 0x84, 0x82, 0xE1, 0x85, 0xA1, 0x01, 0x46,
+ // Bytes 2e40 - 2e7f
+ 0xE1, 0x84, 0x83, 0xE1, 0x85, 0xA1, 0x01, 0x46,
+ 0xE1, 0x84, 0x85, 0xE1, 0x85, 0xA1, 0x01, 0x46,
+ 0xE1, 0x84, 0x86, 0xE1, 0x85, 0xA1, 0x01, 0x46,
+ 0xE1, 0x84, 0x87, 0xE1, 0x85, 0xA1, 0x01, 0x46,
+ 0xE1, 0x84, 0x89, 0xE1, 0x85, 0xA1, 0x01, 0x46,
+ 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xA1, 0x01, 0x46,
+ 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xAE, 0x01, 0x46,
+ 0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xA1, 0x01, 0x46,
+ // Bytes 2e80 - 2ebf
+ 0xE1, 0x84, 0x8E, 0xE1, 0x85, 0xA1, 0x01, 0x46,
+ 0xE1, 0x84, 0x8F, 0xE1, 0x85, 0xA1, 0x01, 0x46,
+ 0xE1, 0x84, 0x90, 0xE1, 0x85, 0xA1, 0x01, 0x46,
+ 0xE1, 0x84, 0x91, 0xE1, 0x85, 0xA1, 0x01, 0x46,
+ 0xE1, 0x84, 0x92, 0xE1, 0x85, 0xA1, 0x01, 0x49,
+ 0xE3, 0x83, 0xA1, 0xE3, 0x82, 0xAB, 0xE3, 0x82,
+ 0x99, 0x11, 0x4C, 0xE1, 0x84, 0x8C, 0xE1, 0x85,
+ 0xAE, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xB4, 0x01,
+ // Bytes 2ec0 - 2eff
+ 0x4C, 0xE3, 0x82, 0xAD, 0xE3, 0x82, 0x99, 0xE3,
+ 0x82, 0xAB, 0xE3, 0x82, 0x99, 0x11, 0x4C, 0xE3,
+ 0x82, 0xB3, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x9B,
+ 0xE3, 0x82, 0x9A, 0x11, 0x4C, 0xE3, 0x83, 0xA4,
+ 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, 0xE3, 0x82,
+ 0x99, 0x11, 0x4F, 0xE1, 0x84, 0x8E, 0xE1, 0x85,
+ 0xA1, 0xE1, 0x86, 0xB7, 0xE1, 0x84, 0x80, 0xE1,
+ 0x85, 0xA9, 0x01, 0x4F, 0xE3, 0x82, 0xA4, 0xE3,
+ // Bytes 2f00 - 2f3f
+ 0x83, 0x8B, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xAF,
+ 0xE3, 0x82, 0x99, 0x11, 0x4F, 0xE3, 0x82, 0xB7,
+ 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xB3, 0xE3, 0x82,
+ 0xAF, 0xE3, 0x82, 0x99, 0x11, 0x4F, 0xE3, 0x83,
+ 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3,
+ 0x82, 0xB7, 0xE3, 0x82, 0x99, 0x11, 0x4F, 0xE3,
+ 0x83, 0x9B, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xB3,
+ 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0x11, 0x52,
+ // Bytes 2f40 - 2f7f
+ 0xE3, 0x82, 0xA8, 0xE3, 0x82, 0xB9, 0xE3, 0x82,
+ 0xAF, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, 0xE3,
+ 0x82, 0x99, 0x11, 0x52, 0xE3, 0x83, 0x95, 0xE3,
+ 0x82, 0xA1, 0xE3, 0x83, 0xA9, 0xE3, 0x83, 0x83,
+ 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0x11, 0x86,
+ 0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x82, 0x01, 0x86,
+ 0xE0, 0xB7, 0x99, 0xE0, 0xB7, 0x8F, 0x01, 0x03,
+ 0x3C, 0xCC, 0xB8, 0x05, 0x03, 0x3D, 0xCC, 0xB8,
+ // Bytes 2f80 - 2fbf
+ 0x05, 0x03, 0x3E, 0xCC, 0xB8, 0x05, 0x03, 0x41,
+ 0xCC, 0x80, 0xCD, 0x03, 0x41, 0xCC, 0x81, 0xCD,
+ 0x03, 0x41, 0xCC, 0x83, 0xCD, 0x03, 0x41, 0xCC,
+ 0x84, 0xCD, 0x03, 0x41, 0xCC, 0x89, 0xCD, 0x03,
+ 0x41, 0xCC, 0x8C, 0xCD, 0x03, 0x41, 0xCC, 0x8F,
+ 0xCD, 0x03, 0x41, 0xCC, 0x91, 0xCD, 0x03, 0x41,
+ 0xCC, 0xA5, 0xB9, 0x03, 0x41, 0xCC, 0xA8, 0xA9,
+ 0x03, 0x42, 0xCC, 0x87, 0xCD, 0x03, 0x42, 0xCC,
+ // Bytes 2fc0 - 2fff
+ 0xA3, 0xB9, 0x03, 0x42, 0xCC, 0xB1, 0xB9, 0x03,
+ 0x43, 0xCC, 0x81, 0xCD, 0x03, 0x43, 0xCC, 0x82,
+ 0xCD, 0x03, 0x43, 0xCC, 0x87, 0xCD, 0x03, 0x43,
+ 0xCC, 0x8C, 0xCD, 0x03, 0x44, 0xCC, 0x87, 0xCD,
+ 0x03, 0x44, 0xCC, 0x8C, 0xCD, 0x03, 0x44, 0xCC,
+ 0xA3, 0xB9, 0x03, 0x44, 0xCC, 0xA7, 0xA9, 0x03,
+ 0x44, 0xCC, 0xAD, 0xB9, 0x03, 0x44, 0xCC, 0xB1,
+ 0xB9, 0x03, 0x45, 0xCC, 0x80, 0xCD, 0x03, 0x45,
+ // Bytes 3000 - 303f
+ 0xCC, 0x81, 0xCD, 0x03, 0x45, 0xCC, 0x83, 0xCD,
+ 0x03, 0x45, 0xCC, 0x86, 0xCD, 0x03, 0x45, 0xCC,
+ 0x87, 0xCD, 0x03, 0x45, 0xCC, 0x88, 0xCD, 0x03,
+ 0x45, 0xCC, 0x89, 0xCD, 0x03, 0x45, 0xCC, 0x8C,
+ 0xCD, 0x03, 0x45, 0xCC, 0x8F, 0xCD, 0x03, 0x45,
+ 0xCC, 0x91, 0xCD, 0x03, 0x45, 0xCC, 0xA8, 0xA9,
+ 0x03, 0x45, 0xCC, 0xAD, 0xB9, 0x03, 0x45, 0xCC,
+ 0xB0, 0xB9, 0x03, 0x46, 0xCC, 0x87, 0xCD, 0x03,
+ // Bytes 3040 - 307f
+ 0x47, 0xCC, 0x81, 0xCD, 0x03, 0x47, 0xCC, 0x82,
+ 0xCD, 0x03, 0x47, 0xCC, 0x84, 0xCD, 0x03, 0x47,
+ 0xCC, 0x86, 0xCD, 0x03, 0x47, 0xCC, 0x87, 0xCD,
+ 0x03, 0x47, 0xCC, 0x8C, 0xCD, 0x03, 0x47, 0xCC,
+ 0xA7, 0xA9, 0x03, 0x48, 0xCC, 0x82, 0xCD, 0x03,
+ 0x48, 0xCC, 0x87, 0xCD, 0x03, 0x48, 0xCC, 0x88,
+ 0xCD, 0x03, 0x48, 0xCC, 0x8C, 0xCD, 0x03, 0x48,
+ 0xCC, 0xA3, 0xB9, 0x03, 0x48, 0xCC, 0xA7, 0xA9,
+ // Bytes 3080 - 30bf
+ 0x03, 0x48, 0xCC, 0xAE, 0xB9, 0x03, 0x49, 0xCC,
+ 0x80, 0xCD, 0x03, 0x49, 0xCC, 0x81, 0xCD, 0x03,
+ 0x49, 0xCC, 0x82, 0xCD, 0x03, 0x49, 0xCC, 0x83,
+ 0xCD, 0x03, 0x49, 0xCC, 0x84, 0xCD, 0x03, 0x49,
+ 0xCC, 0x86, 0xCD, 0x03, 0x49, 0xCC, 0x87, 0xCD,
+ 0x03, 0x49, 0xCC, 0x89, 0xCD, 0x03, 0x49, 0xCC,
+ 0x8C, 0xCD, 0x03, 0x49, 0xCC, 0x8F, 0xCD, 0x03,
+ 0x49, 0xCC, 0x91, 0xCD, 0x03, 0x49, 0xCC, 0xA3,
+ // Bytes 30c0 - 30ff
+ 0xB9, 0x03, 0x49, 0xCC, 0xA8, 0xA9, 0x03, 0x49,
+ 0xCC, 0xB0, 0xB9, 0x03, 0x4A, 0xCC, 0x82, 0xCD,
+ 0x03, 0x4B, 0xCC, 0x81, 0xCD, 0x03, 0x4B, 0xCC,
+ 0x8C, 0xCD, 0x03, 0x4B, 0xCC, 0xA3, 0xB9, 0x03,
+ 0x4B, 0xCC, 0xA7, 0xA9, 0x03, 0x4B, 0xCC, 0xB1,
+ 0xB9, 0x03, 0x4C, 0xCC, 0x81, 0xCD, 0x03, 0x4C,
+ 0xCC, 0x8C, 0xCD, 0x03, 0x4C, 0xCC, 0xA7, 0xA9,
+ 0x03, 0x4C, 0xCC, 0xAD, 0xB9, 0x03, 0x4C, 0xCC,
+ // Bytes 3100 - 313f
+ 0xB1, 0xB9, 0x03, 0x4D, 0xCC, 0x81, 0xCD, 0x03,
+ 0x4D, 0xCC, 0x87, 0xCD, 0x03, 0x4D, 0xCC, 0xA3,
+ 0xB9, 0x03, 0x4E, 0xCC, 0x80, 0xCD, 0x03, 0x4E,
+ 0xCC, 0x81, 0xCD, 0x03, 0x4E, 0xCC, 0x83, 0xCD,
+ 0x03, 0x4E, 0xCC, 0x87, 0xCD, 0x03, 0x4E, 0xCC,
+ 0x8C, 0xCD, 0x03, 0x4E, 0xCC, 0xA3, 0xB9, 0x03,
+ 0x4E, 0xCC, 0xA7, 0xA9, 0x03, 0x4E, 0xCC, 0xAD,
+ 0xB9, 0x03, 0x4E, 0xCC, 0xB1, 0xB9, 0x03, 0x4F,
+ // Bytes 3140 - 317f
+ 0xCC, 0x80, 0xCD, 0x03, 0x4F, 0xCC, 0x81, 0xCD,
+ 0x03, 0x4F, 0xCC, 0x86, 0xCD, 0x03, 0x4F, 0xCC,
+ 0x89, 0xCD, 0x03, 0x4F, 0xCC, 0x8B, 0xCD, 0x03,
+ 0x4F, 0xCC, 0x8C, 0xCD, 0x03, 0x4F, 0xCC, 0x8F,
+ 0xCD, 0x03, 0x4F, 0xCC, 0x91, 0xCD, 0x03, 0x50,
+ 0xCC, 0x81, 0xCD, 0x03, 0x50, 0xCC, 0x87, 0xCD,
+ 0x03, 0x52, 0xCC, 0x81, 0xCD, 0x03, 0x52, 0xCC,
+ 0x87, 0xCD, 0x03, 0x52, 0xCC, 0x8C, 0xCD, 0x03,
+ // Bytes 3180 - 31bf
+ 0x52, 0xCC, 0x8F, 0xCD, 0x03, 0x52, 0xCC, 0x91,
+ 0xCD, 0x03, 0x52, 0xCC, 0xA7, 0xA9, 0x03, 0x52,
+ 0xCC, 0xB1, 0xB9, 0x03, 0x53, 0xCC, 0x82, 0xCD,
+ 0x03, 0x53, 0xCC, 0x87, 0xCD, 0x03, 0x53, 0xCC,
+ 0xA6, 0xB9, 0x03, 0x53, 0xCC, 0xA7, 0xA9, 0x03,
+ 0x54, 0xCC, 0x87, 0xCD, 0x03, 0x54, 0xCC, 0x8C,
+ 0xCD, 0x03, 0x54, 0xCC, 0xA3, 0xB9, 0x03, 0x54,
+ 0xCC, 0xA6, 0xB9, 0x03, 0x54, 0xCC, 0xA7, 0xA9,
+ // Bytes 31c0 - 31ff
+ 0x03, 0x54, 0xCC, 0xAD, 0xB9, 0x03, 0x54, 0xCC,
+ 0xB1, 0xB9, 0x03, 0x55, 0xCC, 0x80, 0xCD, 0x03,
+ 0x55, 0xCC, 0x81, 0xCD, 0x03, 0x55, 0xCC, 0x82,
+ 0xCD, 0x03, 0x55, 0xCC, 0x86, 0xCD, 0x03, 0x55,
+ 0xCC, 0x89, 0xCD, 0x03, 0x55, 0xCC, 0x8A, 0xCD,
+ 0x03, 0x55, 0xCC, 0x8B, 0xCD, 0x03, 0x55, 0xCC,
+ 0x8C, 0xCD, 0x03, 0x55, 0xCC, 0x8F, 0xCD, 0x03,
+ 0x55, 0xCC, 0x91, 0xCD, 0x03, 0x55, 0xCC, 0xA3,
+ // Bytes 3200 - 323f
+ 0xB9, 0x03, 0x55, 0xCC, 0xA4, 0xB9, 0x03, 0x55,
+ 0xCC, 0xA8, 0xA9, 0x03, 0x55, 0xCC, 0xAD, 0xB9,
+ 0x03, 0x55, 0xCC, 0xB0, 0xB9, 0x03, 0x56, 0xCC,
+ 0x83, 0xCD, 0x03, 0x56, 0xCC, 0xA3, 0xB9, 0x03,
+ 0x57, 0xCC, 0x80, 0xCD, 0x03, 0x57, 0xCC, 0x81,
+ 0xCD, 0x03, 0x57, 0xCC, 0x82, 0xCD, 0x03, 0x57,
+ 0xCC, 0x87, 0xCD, 0x03, 0x57, 0xCC, 0x88, 0xCD,
+ 0x03, 0x57, 0xCC, 0xA3, 0xB9, 0x03, 0x58, 0xCC,
+ // Bytes 3240 - 327f
+ 0x87, 0xCD, 0x03, 0x58, 0xCC, 0x88, 0xCD, 0x03,
+ 0x59, 0xCC, 0x80, 0xCD, 0x03, 0x59, 0xCC, 0x81,
+ 0xCD, 0x03, 0x59, 0xCC, 0x82, 0xCD, 0x03, 0x59,
+ 0xCC, 0x83, 0xCD, 0x03, 0x59, 0xCC, 0x84, 0xCD,
+ 0x03, 0x59, 0xCC, 0x87, 0xCD, 0x03, 0x59, 0xCC,
+ 0x88, 0xCD, 0x03, 0x59, 0xCC, 0x89, 0xCD, 0x03,
+ 0x59, 0xCC, 0xA3, 0xB9, 0x03, 0x5A, 0xCC, 0x81,
+ 0xCD, 0x03, 0x5A, 0xCC, 0x82, 0xCD, 0x03, 0x5A,
+ // Bytes 3280 - 32bf
+ 0xCC, 0x87, 0xCD, 0x03, 0x5A, 0xCC, 0x8C, 0xCD,
+ 0x03, 0x5A, 0xCC, 0xA3, 0xB9, 0x03, 0x5A, 0xCC,
+ 0xB1, 0xB9, 0x03, 0x61, 0xCC, 0x80, 0xCD, 0x03,
+ 0x61, 0xCC, 0x81, 0xCD, 0x03, 0x61, 0xCC, 0x83,
+ 0xCD, 0x03, 0x61, 0xCC, 0x84, 0xCD, 0x03, 0x61,
+ 0xCC, 0x89, 0xCD, 0x03, 0x61, 0xCC, 0x8C, 0xCD,
+ 0x03, 0x61, 0xCC, 0x8F, 0xCD, 0x03, 0x61, 0xCC,
+ 0x91, 0xCD, 0x03, 0x61, 0xCC, 0xA5, 0xB9, 0x03,
+ // Bytes 32c0 - 32ff
+ 0x61, 0xCC, 0xA8, 0xA9, 0x03, 0x62, 0xCC, 0x87,
+ 0xCD, 0x03, 0x62, 0xCC, 0xA3, 0xB9, 0x03, 0x62,
+ 0xCC, 0xB1, 0xB9, 0x03, 0x63, 0xCC, 0x81, 0xCD,
+ 0x03, 0x63, 0xCC, 0x82, 0xCD, 0x03, 0x63, 0xCC,
+ 0x87, 0xCD, 0x03, 0x63, 0xCC, 0x8C, 0xCD, 0x03,
+ 0x64, 0xCC, 0x87, 0xCD, 0x03, 0x64, 0xCC, 0x8C,
+ 0xCD, 0x03, 0x64, 0xCC, 0xA3, 0xB9, 0x03, 0x64,
+ 0xCC, 0xA7, 0xA9, 0x03, 0x64, 0xCC, 0xAD, 0xB9,
+ // Bytes 3300 - 333f
+ 0x03, 0x64, 0xCC, 0xB1, 0xB9, 0x03, 0x65, 0xCC,
+ 0x80, 0xCD, 0x03, 0x65, 0xCC, 0x81, 0xCD, 0x03,
+ 0x65, 0xCC, 0x83, 0xCD, 0x03, 0x65, 0xCC, 0x86,
+ 0xCD, 0x03, 0x65, 0xCC, 0x87, 0xCD, 0x03, 0x65,
+ 0xCC, 0x88, 0xCD, 0x03, 0x65, 0xCC, 0x89, 0xCD,
+ 0x03, 0x65, 0xCC, 0x8C, 0xCD, 0x03, 0x65, 0xCC,
+ 0x8F, 0xCD, 0x03, 0x65, 0xCC, 0x91, 0xCD, 0x03,
+ 0x65, 0xCC, 0xA8, 0xA9, 0x03, 0x65, 0xCC, 0xAD,
+ // Bytes 3340 - 337f
+ 0xB9, 0x03, 0x65, 0xCC, 0xB0, 0xB9, 0x03, 0x66,
+ 0xCC, 0x87, 0xCD, 0x03, 0x67, 0xCC, 0x81, 0xCD,
+ 0x03, 0x67, 0xCC, 0x82, 0xCD, 0x03, 0x67, 0xCC,
+ 0x84, 0xCD, 0x03, 0x67, 0xCC, 0x86, 0xCD, 0x03,
+ 0x67, 0xCC, 0x87, 0xCD, 0x03, 0x67, 0xCC, 0x8C,
+ 0xCD, 0x03, 0x67, 0xCC, 0xA7, 0xA9, 0x03, 0x68,
+ 0xCC, 0x82, 0xCD, 0x03, 0x68, 0xCC, 0x87, 0xCD,
+ 0x03, 0x68, 0xCC, 0x88, 0xCD, 0x03, 0x68, 0xCC,
+ // Bytes 3380 - 33bf
+ 0x8C, 0xCD, 0x03, 0x68, 0xCC, 0xA3, 0xB9, 0x03,
+ 0x68, 0xCC, 0xA7, 0xA9, 0x03, 0x68, 0xCC, 0xAE,
+ 0xB9, 0x03, 0x68, 0xCC, 0xB1, 0xB9, 0x03, 0x69,
+ 0xCC, 0x80, 0xCD, 0x03, 0x69, 0xCC, 0x81, 0xCD,
+ 0x03, 0x69, 0xCC, 0x82, 0xCD, 0x03, 0x69, 0xCC,
+ 0x83, 0xCD, 0x03, 0x69, 0xCC, 0x84, 0xCD, 0x03,
+ 0x69, 0xCC, 0x86, 0xCD, 0x03, 0x69, 0xCC, 0x89,
+ 0xCD, 0x03, 0x69, 0xCC, 0x8C, 0xCD, 0x03, 0x69,
+ // Bytes 33c0 - 33ff
+ 0xCC, 0x8F, 0xCD, 0x03, 0x69, 0xCC, 0x91, 0xCD,
+ 0x03, 0x69, 0xCC, 0xA3, 0xB9, 0x03, 0x69, 0xCC,
+ 0xA8, 0xA9, 0x03, 0x69, 0xCC, 0xB0, 0xB9, 0x03,
+ 0x6A, 0xCC, 0x82, 0xCD, 0x03, 0x6A, 0xCC, 0x8C,
+ 0xCD, 0x03, 0x6B, 0xCC, 0x81, 0xCD, 0x03, 0x6B,
+ 0xCC, 0x8C, 0xCD, 0x03, 0x6B, 0xCC, 0xA3, 0xB9,
+ 0x03, 0x6B, 0xCC, 0xA7, 0xA9, 0x03, 0x6B, 0xCC,
+ 0xB1, 0xB9, 0x03, 0x6C, 0xCC, 0x81, 0xCD, 0x03,
+ // Bytes 3400 - 343f
+ 0x6C, 0xCC, 0x8C, 0xCD, 0x03, 0x6C, 0xCC, 0xA7,
+ 0xA9, 0x03, 0x6C, 0xCC, 0xAD, 0xB9, 0x03, 0x6C,
+ 0xCC, 0xB1, 0xB9, 0x03, 0x6D, 0xCC, 0x81, 0xCD,
+ 0x03, 0x6D, 0xCC, 0x87, 0xCD, 0x03, 0x6D, 0xCC,
+ 0xA3, 0xB9, 0x03, 0x6E, 0xCC, 0x80, 0xCD, 0x03,
+ 0x6E, 0xCC, 0x81, 0xCD, 0x03, 0x6E, 0xCC, 0x83,
+ 0xCD, 0x03, 0x6E, 0xCC, 0x87, 0xCD, 0x03, 0x6E,
+ 0xCC, 0x8C, 0xCD, 0x03, 0x6E, 0xCC, 0xA3, 0xB9,
+ // Bytes 3440 - 347f
+ 0x03, 0x6E, 0xCC, 0xA7, 0xA9, 0x03, 0x6E, 0xCC,
+ 0xAD, 0xB9, 0x03, 0x6E, 0xCC, 0xB1, 0xB9, 0x03,
+ 0x6F, 0xCC, 0x80, 0xCD, 0x03, 0x6F, 0xCC, 0x81,
+ 0xCD, 0x03, 0x6F, 0xCC, 0x86, 0xCD, 0x03, 0x6F,
+ 0xCC, 0x89, 0xCD, 0x03, 0x6F, 0xCC, 0x8B, 0xCD,
+ 0x03, 0x6F, 0xCC, 0x8C, 0xCD, 0x03, 0x6F, 0xCC,
+ 0x8F, 0xCD, 0x03, 0x6F, 0xCC, 0x91, 0xCD, 0x03,
+ 0x70, 0xCC, 0x81, 0xCD, 0x03, 0x70, 0xCC, 0x87,
+ // Bytes 3480 - 34bf
+ 0xCD, 0x03, 0x72, 0xCC, 0x81, 0xCD, 0x03, 0x72,
+ 0xCC, 0x87, 0xCD, 0x03, 0x72, 0xCC, 0x8C, 0xCD,
+ 0x03, 0x72, 0xCC, 0x8F, 0xCD, 0x03, 0x72, 0xCC,
+ 0x91, 0xCD, 0x03, 0x72, 0xCC, 0xA7, 0xA9, 0x03,
+ 0x72, 0xCC, 0xB1, 0xB9, 0x03, 0x73, 0xCC, 0x82,
+ 0xCD, 0x03, 0x73, 0xCC, 0x87, 0xCD, 0x03, 0x73,
+ 0xCC, 0xA6, 0xB9, 0x03, 0x73, 0xCC, 0xA7, 0xA9,
+ 0x03, 0x74, 0xCC, 0x87, 0xCD, 0x03, 0x74, 0xCC,
+ // Bytes 34c0 - 34ff
+ 0x88, 0xCD, 0x03, 0x74, 0xCC, 0x8C, 0xCD, 0x03,
+ 0x74, 0xCC, 0xA3, 0xB9, 0x03, 0x74, 0xCC, 0xA6,
+ 0xB9, 0x03, 0x74, 0xCC, 0xA7, 0xA9, 0x03, 0x74,
+ 0xCC, 0xAD, 0xB9, 0x03, 0x74, 0xCC, 0xB1, 0xB9,
+ 0x03, 0x75, 0xCC, 0x80, 0xCD, 0x03, 0x75, 0xCC,
+ 0x81, 0xCD, 0x03, 0x75, 0xCC, 0x82, 0xCD, 0x03,
+ 0x75, 0xCC, 0x86, 0xCD, 0x03, 0x75, 0xCC, 0x89,
+ 0xCD, 0x03, 0x75, 0xCC, 0x8A, 0xCD, 0x03, 0x75,
+ // Bytes 3500 - 353f
+ 0xCC, 0x8B, 0xCD, 0x03, 0x75, 0xCC, 0x8C, 0xCD,
+ 0x03, 0x75, 0xCC, 0x8F, 0xCD, 0x03, 0x75, 0xCC,
+ 0x91, 0xCD, 0x03, 0x75, 0xCC, 0xA3, 0xB9, 0x03,
+ 0x75, 0xCC, 0xA4, 0xB9, 0x03, 0x75, 0xCC, 0xA8,
+ 0xA9, 0x03, 0x75, 0xCC, 0xAD, 0xB9, 0x03, 0x75,
+ 0xCC, 0xB0, 0xB9, 0x03, 0x76, 0xCC, 0x83, 0xCD,
+ 0x03, 0x76, 0xCC, 0xA3, 0xB9, 0x03, 0x77, 0xCC,
+ 0x80, 0xCD, 0x03, 0x77, 0xCC, 0x81, 0xCD, 0x03,
+ // Bytes 3540 - 357f
+ 0x77, 0xCC, 0x82, 0xCD, 0x03, 0x77, 0xCC, 0x87,
+ 0xCD, 0x03, 0x77, 0xCC, 0x88, 0xCD, 0x03, 0x77,
+ 0xCC, 0x8A, 0xCD, 0x03, 0x77, 0xCC, 0xA3, 0xB9,
+ 0x03, 0x78, 0xCC, 0x87, 0xCD, 0x03, 0x78, 0xCC,
+ 0x88, 0xCD, 0x03, 0x79, 0xCC, 0x80, 0xCD, 0x03,
+ 0x79, 0xCC, 0x81, 0xCD, 0x03, 0x79, 0xCC, 0x82,
+ 0xCD, 0x03, 0x79, 0xCC, 0x83, 0xCD, 0x03, 0x79,
+ 0xCC, 0x84, 0xCD, 0x03, 0x79, 0xCC, 0x87, 0xCD,
+ // Bytes 3580 - 35bf
+ 0x03, 0x79, 0xCC, 0x88, 0xCD, 0x03, 0x79, 0xCC,
+ 0x89, 0xCD, 0x03, 0x79, 0xCC, 0x8A, 0xCD, 0x03,
+ 0x79, 0xCC, 0xA3, 0xB9, 0x03, 0x7A, 0xCC, 0x81,
+ 0xCD, 0x03, 0x7A, 0xCC, 0x82, 0xCD, 0x03, 0x7A,
+ 0xCC, 0x87, 0xCD, 0x03, 0x7A, 0xCC, 0x8C, 0xCD,
+ 0x03, 0x7A, 0xCC, 0xA3, 0xB9, 0x03, 0x7A, 0xCC,
+ 0xB1, 0xB9, 0x04, 0xC2, 0xA8, 0xCC, 0x80, 0xCE,
+ 0x04, 0xC2, 0xA8, 0xCC, 0x81, 0xCE, 0x04, 0xC2,
+ // Bytes 35c0 - 35ff
+ 0xA8, 0xCD, 0x82, 0xCE, 0x04, 0xC3, 0x86, 0xCC,
+ 0x81, 0xCD, 0x04, 0xC3, 0x86, 0xCC, 0x84, 0xCD,
+ 0x04, 0xC3, 0x98, 0xCC, 0x81, 0xCD, 0x04, 0xC3,
+ 0xA6, 0xCC, 0x81, 0xCD, 0x04, 0xC3, 0xA6, 0xCC,
+ 0x84, 0xCD, 0x04, 0xC3, 0xB8, 0xCC, 0x81, 0xCD,
+ 0x04, 0xC5, 0xBF, 0xCC, 0x87, 0xCD, 0x04, 0xC6,
+ 0xB7, 0xCC, 0x8C, 0xCD, 0x04, 0xCA, 0x92, 0xCC,
+ 0x8C, 0xCD, 0x04, 0xCE, 0x91, 0xCC, 0x80, 0xCD,
+ // Bytes 3600 - 363f
+ 0x04, 0xCE, 0x91, 0xCC, 0x81, 0xCD, 0x04, 0xCE,
+ 0x91, 0xCC, 0x84, 0xCD, 0x04, 0xCE, 0x91, 0xCC,
+ 0x86, 0xCD, 0x04, 0xCE, 0x91, 0xCD, 0x85, 0xDD,
+ 0x04, 0xCE, 0x95, 0xCC, 0x80, 0xCD, 0x04, 0xCE,
+ 0x95, 0xCC, 0x81, 0xCD, 0x04, 0xCE, 0x97, 0xCC,
+ 0x80, 0xCD, 0x04, 0xCE, 0x97, 0xCC, 0x81, 0xCD,
+ 0x04, 0xCE, 0x97, 0xCD, 0x85, 0xDD, 0x04, 0xCE,
+ 0x99, 0xCC, 0x80, 0xCD, 0x04, 0xCE, 0x99, 0xCC,
+ // Bytes 3640 - 367f
+ 0x81, 0xCD, 0x04, 0xCE, 0x99, 0xCC, 0x84, 0xCD,
+ 0x04, 0xCE, 0x99, 0xCC, 0x86, 0xCD, 0x04, 0xCE,
+ 0x99, 0xCC, 0x88, 0xCD, 0x04, 0xCE, 0x9F, 0xCC,
+ 0x80, 0xCD, 0x04, 0xCE, 0x9F, 0xCC, 0x81, 0xCD,
+ 0x04, 0xCE, 0xA1, 0xCC, 0x94, 0xCD, 0x04, 0xCE,
+ 0xA5, 0xCC, 0x80, 0xCD, 0x04, 0xCE, 0xA5, 0xCC,
+ 0x81, 0xCD, 0x04, 0xCE, 0xA5, 0xCC, 0x84, 0xCD,
+ 0x04, 0xCE, 0xA5, 0xCC, 0x86, 0xCD, 0x04, 0xCE,
+ // Bytes 3680 - 36bf
+ 0xA5, 0xCC, 0x88, 0xCD, 0x04, 0xCE, 0xA9, 0xCC,
+ 0x80, 0xCD, 0x04, 0xCE, 0xA9, 0xCC, 0x81, 0xCD,
+ 0x04, 0xCE, 0xA9, 0xCD, 0x85, 0xDD, 0x04, 0xCE,
+ 0xB1, 0xCC, 0x84, 0xCD, 0x04, 0xCE, 0xB1, 0xCC,
+ 0x86, 0xCD, 0x04, 0xCE, 0xB1, 0xCD, 0x85, 0xDD,
+ 0x04, 0xCE, 0xB5, 0xCC, 0x80, 0xCD, 0x04, 0xCE,
+ 0xB5, 0xCC, 0x81, 0xCD, 0x04, 0xCE, 0xB7, 0xCD,
+ 0x85, 0xDD, 0x04, 0xCE, 0xB9, 0xCC, 0x80, 0xCD,
+ // Bytes 36c0 - 36ff
+ 0x04, 0xCE, 0xB9, 0xCC, 0x81, 0xCD, 0x04, 0xCE,
+ 0xB9, 0xCC, 0x84, 0xCD, 0x04, 0xCE, 0xB9, 0xCC,
+ 0x86, 0xCD, 0x04, 0xCE, 0xB9, 0xCD, 0x82, 0xCD,
+ 0x04, 0xCE, 0xBF, 0xCC, 0x80, 0xCD, 0x04, 0xCE,
+ 0xBF, 0xCC, 0x81, 0xCD, 0x04, 0xCF, 0x81, 0xCC,
+ 0x93, 0xCD, 0x04, 0xCF, 0x81, 0xCC, 0x94, 0xCD,
+ 0x04, 0xCF, 0x85, 0xCC, 0x80, 0xCD, 0x04, 0xCF,
+ 0x85, 0xCC, 0x81, 0xCD, 0x04, 0xCF, 0x85, 0xCC,
+ // Bytes 3700 - 373f
+ 0x84, 0xCD, 0x04, 0xCF, 0x85, 0xCC, 0x86, 0xCD,
+ 0x04, 0xCF, 0x85, 0xCD, 0x82, 0xCD, 0x04, 0xCF,
+ 0x89, 0xCD, 0x85, 0xDD, 0x04, 0xCF, 0x92, 0xCC,
+ 0x81, 0xCD, 0x04, 0xCF, 0x92, 0xCC, 0x88, 0xCD,
+ 0x04, 0xD0, 0x86, 0xCC, 0x88, 0xCD, 0x04, 0xD0,
+ 0x90, 0xCC, 0x86, 0xCD, 0x04, 0xD0, 0x90, 0xCC,
+ 0x88, 0xCD, 0x04, 0xD0, 0x93, 0xCC, 0x81, 0xCD,
+ 0x04, 0xD0, 0x95, 0xCC, 0x80, 0xCD, 0x04, 0xD0,
+ // Bytes 3740 - 377f
+ 0x95, 0xCC, 0x86, 0xCD, 0x04, 0xD0, 0x95, 0xCC,
+ 0x88, 0xCD, 0x04, 0xD0, 0x96, 0xCC, 0x86, 0xCD,
+ 0x04, 0xD0, 0x96, 0xCC, 0x88, 0xCD, 0x04, 0xD0,
+ 0x97, 0xCC, 0x88, 0xCD, 0x04, 0xD0, 0x98, 0xCC,
+ 0x80, 0xCD, 0x04, 0xD0, 0x98, 0xCC, 0x84, 0xCD,
+ 0x04, 0xD0, 0x98, 0xCC, 0x86, 0xCD, 0x04, 0xD0,
+ 0x98, 0xCC, 0x88, 0xCD, 0x04, 0xD0, 0x9A, 0xCC,
+ 0x81, 0xCD, 0x04, 0xD0, 0x9E, 0xCC, 0x88, 0xCD,
+ // Bytes 3780 - 37bf
+ 0x04, 0xD0, 0xA3, 0xCC, 0x84, 0xCD, 0x04, 0xD0,
+ 0xA3, 0xCC, 0x86, 0xCD, 0x04, 0xD0, 0xA3, 0xCC,
+ 0x88, 0xCD, 0x04, 0xD0, 0xA3, 0xCC, 0x8B, 0xCD,
+ 0x04, 0xD0, 0xA7, 0xCC, 0x88, 0xCD, 0x04, 0xD0,
+ 0xAB, 0xCC, 0x88, 0xCD, 0x04, 0xD0, 0xAD, 0xCC,
+ 0x88, 0xCD, 0x04, 0xD0, 0xB0, 0xCC, 0x86, 0xCD,
+ 0x04, 0xD0, 0xB0, 0xCC, 0x88, 0xCD, 0x04, 0xD0,
+ 0xB3, 0xCC, 0x81, 0xCD, 0x04, 0xD0, 0xB5, 0xCC,
+ // Bytes 37c0 - 37ff
+ 0x80, 0xCD, 0x04, 0xD0, 0xB5, 0xCC, 0x86, 0xCD,
+ 0x04, 0xD0, 0xB5, 0xCC, 0x88, 0xCD, 0x04, 0xD0,
+ 0xB6, 0xCC, 0x86, 0xCD, 0x04, 0xD0, 0xB6, 0xCC,
+ 0x88, 0xCD, 0x04, 0xD0, 0xB7, 0xCC, 0x88, 0xCD,
+ 0x04, 0xD0, 0xB8, 0xCC, 0x80, 0xCD, 0x04, 0xD0,
+ 0xB8, 0xCC, 0x84, 0xCD, 0x04, 0xD0, 0xB8, 0xCC,
+ 0x86, 0xCD, 0x04, 0xD0, 0xB8, 0xCC, 0x88, 0xCD,
+ 0x04, 0xD0, 0xBA, 0xCC, 0x81, 0xCD, 0x04, 0xD0,
+ // Bytes 3800 - 383f
+ 0xBE, 0xCC, 0x88, 0xCD, 0x04, 0xD1, 0x83, 0xCC,
+ 0x84, 0xCD, 0x04, 0xD1, 0x83, 0xCC, 0x86, 0xCD,
+ 0x04, 0xD1, 0x83, 0xCC, 0x88, 0xCD, 0x04, 0xD1,
+ 0x83, 0xCC, 0x8B, 0xCD, 0x04, 0xD1, 0x87, 0xCC,
+ 0x88, 0xCD, 0x04, 0xD1, 0x8B, 0xCC, 0x88, 0xCD,
+ 0x04, 0xD1, 0x8D, 0xCC, 0x88, 0xCD, 0x04, 0xD1,
+ 0x96, 0xCC, 0x88, 0xCD, 0x04, 0xD1, 0xB4, 0xCC,
+ 0x8F, 0xCD, 0x04, 0xD1, 0xB5, 0xCC, 0x8F, 0xCD,
+ // Bytes 3840 - 387f
+ 0x04, 0xD3, 0x98, 0xCC, 0x88, 0xCD, 0x04, 0xD3,
+ 0x99, 0xCC, 0x88, 0xCD, 0x04, 0xD3, 0xA8, 0xCC,
+ 0x88, 0xCD, 0x04, 0xD3, 0xA9, 0xCC, 0x88, 0xCD,
+ 0x04, 0xD8, 0xA7, 0xD9, 0x93, 0xCD, 0x04, 0xD8,
+ 0xA7, 0xD9, 0x94, 0xCD, 0x04, 0xD8, 0xA7, 0xD9,
+ 0x95, 0xB9, 0x04, 0xD9, 0x88, 0xD9, 0x94, 0xCD,
+ 0x04, 0xD9, 0x8A, 0xD9, 0x94, 0xCD, 0x04, 0xDB,
+ 0x81, 0xD9, 0x94, 0xCD, 0x04, 0xDB, 0x92, 0xD9,
+ // Bytes 3880 - 38bf
+ 0x94, 0xCD, 0x04, 0xDB, 0x95, 0xD9, 0x94, 0xCD,
+ 0x05, 0x41, 0xCC, 0x82, 0xCC, 0x80, 0xCE, 0x05,
+ 0x41, 0xCC, 0x82, 0xCC, 0x81, 0xCE, 0x05, 0x41,
+ 0xCC, 0x82, 0xCC, 0x83, 0xCE, 0x05, 0x41, 0xCC,
+ 0x82, 0xCC, 0x89, 0xCE, 0x05, 0x41, 0xCC, 0x86,
+ 0xCC, 0x80, 0xCE, 0x05, 0x41, 0xCC, 0x86, 0xCC,
+ 0x81, 0xCE, 0x05, 0x41, 0xCC, 0x86, 0xCC, 0x83,
+ 0xCE, 0x05, 0x41, 0xCC, 0x86, 0xCC, 0x89, 0xCE,
+ // Bytes 38c0 - 38ff
+ 0x05, 0x41, 0xCC, 0x87, 0xCC, 0x84, 0xCE, 0x05,
+ 0x41, 0xCC, 0x88, 0xCC, 0x84, 0xCE, 0x05, 0x41,
+ 0xCC, 0x8A, 0xCC, 0x81, 0xCE, 0x05, 0x41, 0xCC,
+ 0xA3, 0xCC, 0x82, 0xCE, 0x05, 0x41, 0xCC, 0xA3,
+ 0xCC, 0x86, 0xCE, 0x05, 0x43, 0xCC, 0xA7, 0xCC,
+ 0x81, 0xCE, 0x05, 0x45, 0xCC, 0x82, 0xCC, 0x80,
+ 0xCE, 0x05, 0x45, 0xCC, 0x82, 0xCC, 0x81, 0xCE,
+ 0x05, 0x45, 0xCC, 0x82, 0xCC, 0x83, 0xCE, 0x05,
+ // Bytes 3900 - 393f
+ 0x45, 0xCC, 0x82, 0xCC, 0x89, 0xCE, 0x05, 0x45,
+ 0xCC, 0x84, 0xCC, 0x80, 0xCE, 0x05, 0x45, 0xCC,
+ 0x84, 0xCC, 0x81, 0xCE, 0x05, 0x45, 0xCC, 0xA3,
+ 0xCC, 0x82, 0xCE, 0x05, 0x45, 0xCC, 0xA7, 0xCC,
+ 0x86, 0xCE, 0x05, 0x49, 0xCC, 0x88, 0xCC, 0x81,
+ 0xCE, 0x05, 0x4C, 0xCC, 0xA3, 0xCC, 0x84, 0xCE,
+ 0x05, 0x4F, 0xCC, 0x82, 0xCC, 0x80, 0xCE, 0x05,
+ 0x4F, 0xCC, 0x82, 0xCC, 0x81, 0xCE, 0x05, 0x4F,
+ // Bytes 3940 - 397f
+ 0xCC, 0x82, 0xCC, 0x83, 0xCE, 0x05, 0x4F, 0xCC,
+ 0x82, 0xCC, 0x89, 0xCE, 0x05, 0x4F, 0xCC, 0x83,
+ 0xCC, 0x81, 0xCE, 0x05, 0x4F, 0xCC, 0x83, 0xCC,
+ 0x84, 0xCE, 0x05, 0x4F, 0xCC, 0x83, 0xCC, 0x88,
+ 0xCE, 0x05, 0x4F, 0xCC, 0x84, 0xCC, 0x80, 0xCE,
+ 0x05, 0x4F, 0xCC, 0x84, 0xCC, 0x81, 0xCE, 0x05,
+ 0x4F, 0xCC, 0x87, 0xCC, 0x84, 0xCE, 0x05, 0x4F,
+ 0xCC, 0x88, 0xCC, 0x84, 0xCE, 0x05, 0x4F, 0xCC,
+ // Bytes 3980 - 39bf
+ 0x9B, 0xCC, 0x80, 0xCE, 0x05, 0x4F, 0xCC, 0x9B,
+ 0xCC, 0x81, 0xCE, 0x05, 0x4F, 0xCC, 0x9B, 0xCC,
+ 0x83, 0xCE, 0x05, 0x4F, 0xCC, 0x9B, 0xCC, 0x89,
+ 0xCE, 0x05, 0x4F, 0xCC, 0x9B, 0xCC, 0xA3, 0xBA,
+ 0x05, 0x4F, 0xCC, 0xA3, 0xCC, 0x82, 0xCE, 0x05,
+ 0x4F, 0xCC, 0xA8, 0xCC, 0x84, 0xCE, 0x05, 0x52,
+ 0xCC, 0xA3, 0xCC, 0x84, 0xCE, 0x05, 0x53, 0xCC,
+ 0x81, 0xCC, 0x87, 0xCE, 0x05, 0x53, 0xCC, 0x8C,
+ // Bytes 39c0 - 39ff
+ 0xCC, 0x87, 0xCE, 0x05, 0x53, 0xCC, 0xA3, 0xCC,
+ 0x87, 0xCE, 0x05, 0x55, 0xCC, 0x83, 0xCC, 0x81,
+ 0xCE, 0x05, 0x55, 0xCC, 0x84, 0xCC, 0x88, 0xCE,
+ 0x05, 0x55, 0xCC, 0x88, 0xCC, 0x80, 0xCE, 0x05,
+ 0x55, 0xCC, 0x88, 0xCC, 0x81, 0xCE, 0x05, 0x55,
+ 0xCC, 0x88, 0xCC, 0x84, 0xCE, 0x05, 0x55, 0xCC,
+ 0x88, 0xCC, 0x8C, 0xCE, 0x05, 0x55, 0xCC, 0x9B,
+ 0xCC, 0x80, 0xCE, 0x05, 0x55, 0xCC, 0x9B, 0xCC,
+ // Bytes 3a00 - 3a3f
+ 0x81, 0xCE, 0x05, 0x55, 0xCC, 0x9B, 0xCC, 0x83,
+ 0xCE, 0x05, 0x55, 0xCC, 0x9B, 0xCC, 0x89, 0xCE,
+ 0x05, 0x55, 0xCC, 0x9B, 0xCC, 0xA3, 0xBA, 0x05,
+ 0x61, 0xCC, 0x82, 0xCC, 0x80, 0xCE, 0x05, 0x61,
+ 0xCC, 0x82, 0xCC, 0x81, 0xCE, 0x05, 0x61, 0xCC,
+ 0x82, 0xCC, 0x83, 0xCE, 0x05, 0x61, 0xCC, 0x82,
+ 0xCC, 0x89, 0xCE, 0x05, 0x61, 0xCC, 0x86, 0xCC,
+ 0x80, 0xCE, 0x05, 0x61, 0xCC, 0x86, 0xCC, 0x81,
+ // Bytes 3a40 - 3a7f
+ 0xCE, 0x05, 0x61, 0xCC, 0x86, 0xCC, 0x83, 0xCE,
+ 0x05, 0x61, 0xCC, 0x86, 0xCC, 0x89, 0xCE, 0x05,
+ 0x61, 0xCC, 0x87, 0xCC, 0x84, 0xCE, 0x05, 0x61,
+ 0xCC, 0x88, 0xCC, 0x84, 0xCE, 0x05, 0x61, 0xCC,
+ 0x8A, 0xCC, 0x81, 0xCE, 0x05, 0x61, 0xCC, 0xA3,
+ 0xCC, 0x82, 0xCE, 0x05, 0x61, 0xCC, 0xA3, 0xCC,
+ 0x86, 0xCE, 0x05, 0x63, 0xCC, 0xA7, 0xCC, 0x81,
+ 0xCE, 0x05, 0x65, 0xCC, 0x82, 0xCC, 0x80, 0xCE,
+ // Bytes 3a80 - 3abf
+ 0x05, 0x65, 0xCC, 0x82, 0xCC, 0x81, 0xCE, 0x05,
+ 0x65, 0xCC, 0x82, 0xCC, 0x83, 0xCE, 0x05, 0x65,
+ 0xCC, 0x82, 0xCC, 0x89, 0xCE, 0x05, 0x65, 0xCC,
+ 0x84, 0xCC, 0x80, 0xCE, 0x05, 0x65, 0xCC, 0x84,
+ 0xCC, 0x81, 0xCE, 0x05, 0x65, 0xCC, 0xA3, 0xCC,
+ 0x82, 0xCE, 0x05, 0x65, 0xCC, 0xA7, 0xCC, 0x86,
+ 0xCE, 0x05, 0x69, 0xCC, 0x88, 0xCC, 0x81, 0xCE,
+ 0x05, 0x6C, 0xCC, 0xA3, 0xCC, 0x84, 0xCE, 0x05,
+ // Bytes 3ac0 - 3aff
+ 0x6F, 0xCC, 0x82, 0xCC, 0x80, 0xCE, 0x05, 0x6F,
+ 0xCC, 0x82, 0xCC, 0x81, 0xCE, 0x05, 0x6F, 0xCC,
+ 0x82, 0xCC, 0x83, 0xCE, 0x05, 0x6F, 0xCC, 0x82,
+ 0xCC, 0x89, 0xCE, 0x05, 0x6F, 0xCC, 0x83, 0xCC,
+ 0x81, 0xCE, 0x05, 0x6F, 0xCC, 0x83, 0xCC, 0x84,
+ 0xCE, 0x05, 0x6F, 0xCC, 0x83, 0xCC, 0x88, 0xCE,
+ 0x05, 0x6F, 0xCC, 0x84, 0xCC, 0x80, 0xCE, 0x05,
+ 0x6F, 0xCC, 0x84, 0xCC, 0x81, 0xCE, 0x05, 0x6F,
+ // Bytes 3b00 - 3b3f
+ 0xCC, 0x87, 0xCC, 0x84, 0xCE, 0x05, 0x6F, 0xCC,
+ 0x88, 0xCC, 0x84, 0xCE, 0x05, 0x6F, 0xCC, 0x9B,
+ 0xCC, 0x80, 0xCE, 0x05, 0x6F, 0xCC, 0x9B, 0xCC,
+ 0x81, 0xCE, 0x05, 0x6F, 0xCC, 0x9B, 0xCC, 0x83,
+ 0xCE, 0x05, 0x6F, 0xCC, 0x9B, 0xCC, 0x89, 0xCE,
+ 0x05, 0x6F, 0xCC, 0x9B, 0xCC, 0xA3, 0xBA, 0x05,
+ 0x6F, 0xCC, 0xA3, 0xCC, 0x82, 0xCE, 0x05, 0x6F,
+ 0xCC, 0xA8, 0xCC, 0x84, 0xCE, 0x05, 0x72, 0xCC,
+ // Bytes 3b40 - 3b7f
+ 0xA3, 0xCC, 0x84, 0xCE, 0x05, 0x73, 0xCC, 0x81,
+ 0xCC, 0x87, 0xCE, 0x05, 0x73, 0xCC, 0x8C, 0xCC,
+ 0x87, 0xCE, 0x05, 0x73, 0xCC, 0xA3, 0xCC, 0x87,
+ 0xCE, 0x05, 0x75, 0xCC, 0x83, 0xCC, 0x81, 0xCE,
+ 0x05, 0x75, 0xCC, 0x84, 0xCC, 0x88, 0xCE, 0x05,
+ 0x75, 0xCC, 0x88, 0xCC, 0x80, 0xCE, 0x05, 0x75,
+ 0xCC, 0x88, 0xCC, 0x81, 0xCE, 0x05, 0x75, 0xCC,
+ 0x88, 0xCC, 0x84, 0xCE, 0x05, 0x75, 0xCC, 0x88,
+ // Bytes 3b80 - 3bbf
+ 0xCC, 0x8C, 0xCE, 0x05, 0x75, 0xCC, 0x9B, 0xCC,
+ 0x80, 0xCE, 0x05, 0x75, 0xCC, 0x9B, 0xCC, 0x81,
+ 0xCE, 0x05, 0x75, 0xCC, 0x9B, 0xCC, 0x83, 0xCE,
+ 0x05, 0x75, 0xCC, 0x9B, 0xCC, 0x89, 0xCE, 0x05,
+ 0x75, 0xCC, 0x9B, 0xCC, 0xA3, 0xBA, 0x05, 0xE1,
+ 0xBE, 0xBF, 0xCC, 0x80, 0xCE, 0x05, 0xE1, 0xBE,
+ 0xBF, 0xCC, 0x81, 0xCE, 0x05, 0xE1, 0xBE, 0xBF,
+ 0xCD, 0x82, 0xCE, 0x05, 0xE1, 0xBF, 0xBE, 0xCC,
+ // Bytes 3bc0 - 3bff
+ 0x80, 0xCE, 0x05, 0xE1, 0xBF, 0xBE, 0xCC, 0x81,
+ 0xCE, 0x05, 0xE1, 0xBF, 0xBE, 0xCD, 0x82, 0xCE,
+ 0x05, 0xE2, 0x86, 0x90, 0xCC, 0xB8, 0x05, 0x05,
+ 0xE2, 0x86, 0x92, 0xCC, 0xB8, 0x05, 0x05, 0xE2,
+ 0x86, 0x94, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x87,
+ 0x90, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x87, 0x92,
+ 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x87, 0x94, 0xCC,
+ 0xB8, 0x05, 0x05, 0xE2, 0x88, 0x83, 0xCC, 0xB8,
+ // Bytes 3c00 - 3c3f
+ 0x05, 0x05, 0xE2, 0x88, 0x88, 0xCC, 0xB8, 0x05,
+ 0x05, 0xE2, 0x88, 0x8B, 0xCC, 0xB8, 0x05, 0x05,
+ 0xE2, 0x88, 0xA3, 0xCC, 0xB8, 0x05, 0x05, 0xE2,
+ 0x88, 0xA5, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x88,
+ 0xBC, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0x83,
+ 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0x85, 0xCC,
+ 0xB8, 0x05, 0x05, 0xE2, 0x89, 0x88, 0xCC, 0xB8,
+ 0x05, 0x05, 0xE2, 0x89, 0x8D, 0xCC, 0xB8, 0x05,
+ // Bytes 3c40 - 3c7f
+ 0x05, 0xE2, 0x89, 0xA1, 0xCC, 0xB8, 0x05, 0x05,
+ 0xE2, 0x89, 0xA4, 0xCC, 0xB8, 0x05, 0x05, 0xE2,
+ 0x89, 0xA5, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89,
+ 0xB2, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xB3,
+ 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xB6, 0xCC,
+ 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xB7, 0xCC, 0xB8,
+ 0x05, 0x05, 0xE2, 0x89, 0xBA, 0xCC, 0xB8, 0x05,
+ 0x05, 0xE2, 0x89, 0xBB, 0xCC, 0xB8, 0x05, 0x05,
+ // Bytes 3c80 - 3cbf
+ 0xE2, 0x89, 0xBC, 0xCC, 0xB8, 0x05, 0x05, 0xE2,
+ 0x89, 0xBD, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A,
+ 0x82, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x83,
+ 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x86, 0xCC,
+ 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x87, 0xCC, 0xB8,
+ 0x05, 0x05, 0xE2, 0x8A, 0x91, 0xCC, 0xB8, 0x05,
+ 0x05, 0xE2, 0x8A, 0x92, 0xCC, 0xB8, 0x05, 0x05,
+ 0xE2, 0x8A, 0xA2, 0xCC, 0xB8, 0x05, 0x05, 0xE2,
+ // Bytes 3cc0 - 3cff
+ 0x8A, 0xA8, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A,
+ 0xA9, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xAB,
+ 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xB2, 0xCC,
+ 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xB3, 0xCC, 0xB8,
+ 0x05, 0x05, 0xE2, 0x8A, 0xB4, 0xCC, 0xB8, 0x05,
+ 0x05, 0xE2, 0x8A, 0xB5, 0xCC, 0xB8, 0x05, 0x06,
+ 0xCE, 0x91, 0xCC, 0x93, 0xCD, 0x85, 0xDE, 0x06,
+ 0xCE, 0x91, 0xCC, 0x94, 0xCD, 0x85, 0xDE, 0x06,
+ // Bytes 3d00 - 3d3f
+ 0xCE, 0x95, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x06,
+ 0xCE, 0x95, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x06,
+ 0xCE, 0x95, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06,
+ 0xCE, 0x95, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06,
+ 0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x85, 0xDE, 0x06,
+ 0xCE, 0x97, 0xCC, 0x94, 0xCD, 0x85, 0xDE, 0x06,
+ 0xCE, 0x99, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x06,
+ 0xCE, 0x99, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x06,
+ // Bytes 3d40 - 3d7f
+ 0xCE, 0x99, 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x06,
+ 0xCE, 0x99, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06,
+ 0xCE, 0x99, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06,
+ 0xCE, 0x99, 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x06,
+ 0xCE, 0x9F, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x06,
+ 0xCE, 0x9F, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x06,
+ 0xCE, 0x9F, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06,
+ 0xCE, 0x9F, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06,
+ // Bytes 3d80 - 3dbf
+ 0xCE, 0xA5, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06,
+ 0xCE, 0xA5, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06,
+ 0xCE, 0xA5, 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x06,
+ 0xCE, 0xA9, 0xCC, 0x93, 0xCD, 0x85, 0xDE, 0x06,
+ 0xCE, 0xA9, 0xCC, 0x94, 0xCD, 0x85, 0xDE, 0x06,
+ 0xCE, 0xB1, 0xCC, 0x80, 0xCD, 0x85, 0xDE, 0x06,
+ 0xCE, 0xB1, 0xCC, 0x81, 0xCD, 0x85, 0xDE, 0x06,
+ 0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x85, 0xDE, 0x06,
+ // Bytes 3dc0 - 3dff
+ 0xCE, 0xB1, 0xCC, 0x94, 0xCD, 0x85, 0xDE, 0x06,
+ 0xCE, 0xB1, 0xCD, 0x82, 0xCD, 0x85, 0xDE, 0x06,
+ 0xCE, 0xB5, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x06,
+ 0xCE, 0xB5, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x06,
+ 0xCE, 0xB5, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06,
+ 0xCE, 0xB5, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06,
+ 0xCE, 0xB7, 0xCC, 0x80, 0xCD, 0x85, 0xDE, 0x06,
+ 0xCE, 0xB7, 0xCC, 0x81, 0xCD, 0x85, 0xDE, 0x06,
+ // Bytes 3e00 - 3e3f
+ 0xCE, 0xB7, 0xCC, 0x93, 0xCD, 0x85, 0xDE, 0x06,
+ 0xCE, 0xB7, 0xCC, 0x94, 0xCD, 0x85, 0xDE, 0x06,
+ 0xCE, 0xB7, 0xCD, 0x82, 0xCD, 0x85, 0xDE, 0x06,
+ 0xCE, 0xB9, 0xCC, 0x88, 0xCC, 0x80, 0xCE, 0x06,
+ 0xCE, 0xB9, 0xCC, 0x88, 0xCC, 0x81, 0xCE, 0x06,
+ 0xCE, 0xB9, 0xCC, 0x88, 0xCD, 0x82, 0xCE, 0x06,
+ 0xCE, 0xB9, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x06,
+ 0xCE, 0xB9, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x06,
+ // Bytes 3e40 - 3e7f
+ 0xCE, 0xB9, 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x06,
+ 0xCE, 0xB9, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06,
+ 0xCE, 0xB9, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06,
+ 0xCE, 0xB9, 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x06,
+ 0xCE, 0xBF, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x06,
+ 0xCE, 0xBF, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x06,
+ 0xCE, 0xBF, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06,
+ 0xCE, 0xBF, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06,
+ // Bytes 3e80 - 3ebf
+ 0xCF, 0x85, 0xCC, 0x88, 0xCC, 0x80, 0xCE, 0x06,
+ 0xCF, 0x85, 0xCC, 0x88, 0xCC, 0x81, 0xCE, 0x06,
+ 0xCF, 0x85, 0xCC, 0x88, 0xCD, 0x82, 0xCE, 0x06,
+ 0xCF, 0x85, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x06,
+ 0xCF, 0x85, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x06,
+ 0xCF, 0x85, 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x06,
+ 0xCF, 0x85, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06,
+ 0xCF, 0x85, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06,
+ // Bytes 3ec0 - 3eff
+ 0xCF, 0x85, 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x06,
+ 0xCF, 0x89, 0xCC, 0x80, 0xCD, 0x85, 0xDE, 0x06,
+ 0xCF, 0x89, 0xCC, 0x81, 0xCD, 0x85, 0xDE, 0x06,
+ 0xCF, 0x89, 0xCC, 0x93, 0xCD, 0x85, 0xDE, 0x06,
+ 0xCF, 0x89, 0xCC, 0x94, 0xCD, 0x85, 0xDE, 0x06,
+ 0xCF, 0x89, 0xCD, 0x82, 0xCD, 0x85, 0xDE, 0x06,
+ 0xE0, 0xA4, 0xA8, 0xE0, 0xA4, 0xBC, 0x0D, 0x06,
+ 0xE0, 0xA4, 0xB0, 0xE0, 0xA4, 0xBC, 0x0D, 0x06,
+ // Bytes 3f00 - 3f3f
+ 0xE0, 0xA4, 0xB3, 0xE0, 0xA4, 0xBC, 0x0D, 0x06,
+ 0xE0, 0xB1, 0x86, 0xE0, 0xB1, 0x96, 0x89, 0x06,
+ 0xE0, 0xB7, 0x99, 0xE0, 0xB7, 0x8A, 0x15, 0x06,
+ 0xE3, 0x81, 0x86, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x81, 0x8B, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x81, 0x8D, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x81, 0x8F, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x81, 0x91, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ // Bytes 3f40 - 3f7f
+ 0xE3, 0x81, 0x93, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x81, 0x95, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x81, 0x97, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x81, 0x99, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x81, 0x9B, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x81, 0x9D, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x81, 0x9F, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x81, 0xA1, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ // Bytes 3f80 - 3fbf
+ 0xE3, 0x81, 0xA4, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x81, 0xA6, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x81, 0xA8, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x81, 0xAF, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x81, 0xAF, 0xE3, 0x82, 0x9A, 0x11, 0x06,
+ 0xE3, 0x81, 0xB2, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x81, 0xB2, 0xE3, 0x82, 0x9A, 0x11, 0x06,
+ 0xE3, 0x81, 0xB5, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ // Bytes 3fc0 - 3fff
+ 0xE3, 0x81, 0xB5, 0xE3, 0x82, 0x9A, 0x11, 0x06,
+ 0xE3, 0x81, 0xB8, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x81, 0xB8, 0xE3, 0x82, 0x9A, 0x11, 0x06,
+ 0xE3, 0x81, 0xBB, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x81, 0xBB, 0xE3, 0x82, 0x9A, 0x11, 0x06,
+ 0xE3, 0x82, 0x9D, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x82, 0xA6, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ // Bytes 4000 - 403f
+ 0xE3, 0x82, 0xAD, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x82, 0xB1, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x82, 0xB3, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x82, 0xB5, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x82, 0xB7, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x82, 0xB9, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x82, 0xBB, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ // Bytes 4040 - 407f
+ 0xE3, 0x82, 0xBD, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x82, 0xBF, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x83, 0x81, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x83, 0x84, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x83, 0x86, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x9A, 0x11, 0x06,
+ // Bytes 4080 - 40bf
+ 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, 0x11, 0x06,
+ 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x9A, 0x11, 0x06,
+ 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0x11, 0x06,
+ 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x9A, 0x11, 0x06,
+ // Bytes 40c0 - 40ff
+ 0xE3, 0x83, 0xAF, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x83, 0xB0, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x83, 0xB1, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x83, 0xB2, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x83, 0xBD, 0xE3, 0x82, 0x99, 0x11, 0x08,
+ 0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85,
+ 0xDF, 0x08, 0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x81,
+ 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x91, 0xCC, 0x93,
+ // Bytes 4100 - 413f
+ 0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x91,
+ 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08,
+ 0xCE, 0x91, 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85,
+ 0xDF, 0x08, 0xCE, 0x91, 0xCC, 0x94, 0xCD, 0x82,
+ 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x97, 0xCC, 0x93,
+ 0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x97,
+ 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08,
+ 0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85,
+ // Bytes 4140 - 417f
+ 0xDF, 0x08, 0xCE, 0x97, 0xCC, 0x94, 0xCC, 0x80,
+ 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x97, 0xCC, 0x94,
+ 0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x97,
+ 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08,
+ 0xCE, 0xA9, 0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85,
+ 0xDF, 0x08, 0xCE, 0xA9, 0xCC, 0x93, 0xCC, 0x81,
+ 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xA9, 0xCC, 0x93,
+ 0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xA9,
+ // Bytes 4180 - 41bf
+ 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08,
+ 0xCE, 0xA9, 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85,
+ 0xDF, 0x08, 0xCE, 0xA9, 0xCC, 0x94, 0xCD, 0x82,
+ 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB1, 0xCC, 0x93,
+ 0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB1,
+ 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08,
+ 0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85,
+ 0xDF, 0x08, 0xCE, 0xB1, 0xCC, 0x94, 0xCC, 0x80,
+ // Bytes 41c0 - 41ff
+ 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB1, 0xCC, 0x94,
+ 0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB1,
+ 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08,
+ 0xCE, 0xB7, 0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85,
+ 0xDF, 0x08, 0xCE, 0xB7, 0xCC, 0x93, 0xCC, 0x81,
+ 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB7, 0xCC, 0x93,
+ 0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB7,
+ 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08,
+ // Bytes 4200 - 423f
+ 0xCE, 0xB7, 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85,
+ 0xDF, 0x08, 0xCE, 0xB7, 0xCC, 0x94, 0xCD, 0x82,
+ 0xCD, 0x85, 0xDF, 0x08, 0xCF, 0x89, 0xCC, 0x93,
+ 0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08, 0xCF, 0x89,
+ 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08,
+ 0xCF, 0x89, 0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85,
+ 0xDF, 0x08, 0xCF, 0x89, 0xCC, 0x94, 0xCC, 0x80,
+ 0xCD, 0x85, 0xDF, 0x08, 0xCF, 0x89, 0xCC, 0x94,
+ // Bytes 4240 - 427f
+ 0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08, 0xCF, 0x89,
+ 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08,
+ 0xF0, 0x91, 0x82, 0x99, 0xF0, 0x91, 0x82, 0xBA,
+ 0x0D, 0x08, 0xF0, 0x91, 0x82, 0x9B, 0xF0, 0x91,
+ 0x82, 0xBA, 0x0D, 0x08, 0xF0, 0x91, 0x82, 0xA5,
+ 0xF0, 0x91, 0x82, 0xBA, 0x0D, 0x42, 0xC2, 0xB4,
+ 0x01, 0x43, 0x20, 0xCC, 0x81, 0xCD, 0x43, 0x20,
+ 0xCC, 0x83, 0xCD, 0x43, 0x20, 0xCC, 0x84, 0xCD,
+ // Bytes 4280 - 42bf
+ 0x43, 0x20, 0xCC, 0x85, 0xCD, 0x43, 0x20, 0xCC,
+ 0x86, 0xCD, 0x43, 0x20, 0xCC, 0x87, 0xCD, 0x43,
+ 0x20, 0xCC, 0x88, 0xCD, 0x43, 0x20, 0xCC, 0x8A,
+ 0xCD, 0x43, 0x20, 0xCC, 0x8B, 0xCD, 0x43, 0x20,
+ 0xCC, 0x93, 0xCD, 0x43, 0x20, 0xCC, 0x94, 0xCD,
+ 0x43, 0x20, 0xCC, 0xA7, 0xA9, 0x43, 0x20, 0xCC,
+ 0xA8, 0xA9, 0x43, 0x20, 0xCC, 0xB3, 0xB9, 0x43,
+ 0x20, 0xCD, 0x82, 0xCD, 0x43, 0x20, 0xCD, 0x85,
+ // Bytes 42c0 - 42ff
+ 0xDD, 0x43, 0x20, 0xD9, 0x8B, 0x5D, 0x43, 0x20,
+ 0xD9, 0x8C, 0x61, 0x43, 0x20, 0xD9, 0x8D, 0x65,
+ 0x43, 0x20, 0xD9, 0x8E, 0x69, 0x43, 0x20, 0xD9,
+ 0x8F, 0x6D, 0x43, 0x20, 0xD9, 0x90, 0x71, 0x43,
+ 0x20, 0xD9, 0x91, 0x75, 0x43, 0x20, 0xD9, 0x92,
+ 0x79, 0x43, 0x41, 0xCC, 0x8A, 0xCD, 0x43, 0x73,
+ 0xCC, 0x87, 0xCD, 0x44, 0x20, 0xE3, 0x82, 0x99,
+ 0x11, 0x44, 0x20, 0xE3, 0x82, 0x9A, 0x11, 0x44,
+ // Bytes 4300 - 433f
+ 0xC2, 0xA8, 0xCC, 0x81, 0xCE, 0x44, 0xCE, 0x91,
+ 0xCC, 0x81, 0xCD, 0x44, 0xCE, 0x95, 0xCC, 0x81,
+ 0xCD, 0x44, 0xCE, 0x97, 0xCC, 0x81, 0xCD, 0x44,
+ 0xCE, 0x99, 0xCC, 0x81, 0xCD, 0x44, 0xCE, 0x9F,
+ 0xCC, 0x81, 0xCD, 0x44, 0xCE, 0xA5, 0xCC, 0x81,
+ 0xCD, 0x44, 0xCE, 0xA5, 0xCC, 0x88, 0xCD, 0x44,
+ 0xCE, 0xA9, 0xCC, 0x81, 0xCD, 0x44, 0xCE, 0xB1,
+ 0xCC, 0x81, 0xCD, 0x44, 0xCE, 0xB5, 0xCC, 0x81,
+ // Bytes 4340 - 437f
+ 0xCD, 0x44, 0xCE, 0xB7, 0xCC, 0x81, 0xCD, 0x44,
+ 0xCE, 0xB9, 0xCC, 0x81, 0xCD, 0x44, 0xCE, 0xBF,
+ 0xCC, 0x81, 0xCD, 0x44, 0xCF, 0x85, 0xCC, 0x81,
+ 0xCD, 0x44, 0xCF, 0x89, 0xCC, 0x81, 0xCD, 0x44,
+ 0xD7, 0x90, 0xD6, 0xB7, 0x35, 0x44, 0xD7, 0x90,
+ 0xD6, 0xB8, 0x39, 0x44, 0xD7, 0x90, 0xD6, 0xBC,
+ 0x45, 0x44, 0xD7, 0x91, 0xD6, 0xBC, 0x45, 0x44,
+ 0xD7, 0x91, 0xD6, 0xBF, 0x4D, 0x44, 0xD7, 0x92,
+ // Bytes 4380 - 43bf
+ 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0x93, 0xD6, 0xBC,
+ 0x45, 0x44, 0xD7, 0x94, 0xD6, 0xBC, 0x45, 0x44,
+ 0xD7, 0x95, 0xD6, 0xB9, 0x3D, 0x44, 0xD7, 0x95,
+ 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0x96, 0xD6, 0xBC,
+ 0x45, 0x44, 0xD7, 0x98, 0xD6, 0xBC, 0x45, 0x44,
+ 0xD7, 0x99, 0xD6, 0xB4, 0x29, 0x44, 0xD7, 0x99,
+ 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0x9A, 0xD6, 0xBC,
+ 0x45, 0x44, 0xD7, 0x9B, 0xD6, 0xBC, 0x45, 0x44,
+ // Bytes 43c0 - 43ff
+ 0xD7, 0x9B, 0xD6, 0xBF, 0x4D, 0x44, 0xD7, 0x9C,
+ 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0x9E, 0xD6, 0xBC,
+ 0x45, 0x44, 0xD7, 0xA0, 0xD6, 0xBC, 0x45, 0x44,
+ 0xD7, 0xA1, 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0xA3,
+ 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0xA4, 0xD6, 0xBC,
+ 0x45, 0x44, 0xD7, 0xA4, 0xD6, 0xBF, 0x4D, 0x44,
+ 0xD7, 0xA6, 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0xA7,
+ 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0xA8, 0xD6, 0xBC,
+ // Bytes 4400 - 443f
+ 0x45, 0x44, 0xD7, 0xA9, 0xD6, 0xBC, 0x45, 0x44,
+ 0xD7, 0xA9, 0xD7, 0x81, 0x51, 0x44, 0xD7, 0xA9,
+ 0xD7, 0x82, 0x55, 0x44, 0xD7, 0xAA, 0xD6, 0xBC,
+ 0x45, 0x44, 0xD7, 0xB2, 0xD6, 0xB7, 0x35, 0x44,
+ 0xD8, 0xA7, 0xD9, 0x8B, 0x5D, 0x44, 0xD8, 0xA7,
+ 0xD9, 0x93, 0xCD, 0x44, 0xD8, 0xA7, 0xD9, 0x94,
+ 0xCD, 0x44, 0xD8, 0xA7, 0xD9, 0x95, 0xB9, 0x44,
+ 0xD8, 0xB0, 0xD9, 0xB0, 0x7D, 0x44, 0xD8, 0xB1,
+ // Bytes 4440 - 447f
+ 0xD9, 0xB0, 0x7D, 0x44, 0xD9, 0x80, 0xD9, 0x8B,
+ 0x5D, 0x44, 0xD9, 0x80, 0xD9, 0x8E, 0x69, 0x44,
+ 0xD9, 0x80, 0xD9, 0x8F, 0x6D, 0x44, 0xD9, 0x80,
+ 0xD9, 0x90, 0x71, 0x44, 0xD9, 0x80, 0xD9, 0x91,
+ 0x75, 0x44, 0xD9, 0x80, 0xD9, 0x92, 0x79, 0x44,
+ 0xD9, 0x87, 0xD9, 0xB0, 0x7D, 0x44, 0xD9, 0x88,
+ 0xD9, 0x94, 0xCD, 0x44, 0xD9, 0x89, 0xD9, 0xB0,
+ 0x7D, 0x44, 0xD9, 0x8A, 0xD9, 0x94, 0xCD, 0x44,
+ // Bytes 4480 - 44bf
+ 0xDB, 0x92, 0xD9, 0x94, 0xCD, 0x44, 0xDB, 0x95,
+ 0xD9, 0x94, 0xCD, 0x45, 0x20, 0xCC, 0x88, 0xCC,
+ 0x80, 0xCE, 0x45, 0x20, 0xCC, 0x88, 0xCC, 0x81,
+ 0xCE, 0x45, 0x20, 0xCC, 0x88, 0xCD, 0x82, 0xCE,
+ 0x45, 0x20, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x45,
+ 0x20, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x45, 0x20,
+ 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x45, 0x20, 0xCC,
+ 0x94, 0xCC, 0x80, 0xCE, 0x45, 0x20, 0xCC, 0x94,
+ // Bytes 44c0 - 44ff
+ 0xCC, 0x81, 0xCE, 0x45, 0x20, 0xCC, 0x94, 0xCD,
+ 0x82, 0xCE, 0x45, 0x20, 0xD9, 0x8C, 0xD9, 0x91,
+ 0x76, 0x45, 0x20, 0xD9, 0x8D, 0xD9, 0x91, 0x76,
+ 0x45, 0x20, 0xD9, 0x8E, 0xD9, 0x91, 0x76, 0x45,
+ 0x20, 0xD9, 0x8F, 0xD9, 0x91, 0x76, 0x45, 0x20,
+ 0xD9, 0x90, 0xD9, 0x91, 0x76, 0x45, 0x20, 0xD9,
+ 0x91, 0xD9, 0xB0, 0x7E, 0x45, 0xE2, 0xAB, 0x9D,
+ 0xCC, 0xB8, 0x05, 0x46, 0xCE, 0xB9, 0xCC, 0x88,
+ // Bytes 4500 - 453f
+ 0xCC, 0x81, 0xCE, 0x46, 0xCF, 0x85, 0xCC, 0x88,
+ 0xCC, 0x81, 0xCE, 0x46, 0xD7, 0xA9, 0xD6, 0xBC,
+ 0xD7, 0x81, 0x52, 0x46, 0xD7, 0xA9, 0xD6, 0xBC,
+ 0xD7, 0x82, 0x56, 0x46, 0xD9, 0x80, 0xD9, 0x8E,
+ 0xD9, 0x91, 0x76, 0x46, 0xD9, 0x80, 0xD9, 0x8F,
+ 0xD9, 0x91, 0x76, 0x46, 0xD9, 0x80, 0xD9, 0x90,
+ 0xD9, 0x91, 0x76, 0x46, 0xE0, 0xA4, 0x95, 0xE0,
+ 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4, 0x96, 0xE0,
+ // Bytes 4540 - 457f
+ 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4, 0x97, 0xE0,
+ 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4, 0x9C, 0xE0,
+ 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4, 0xA1, 0xE0,
+ 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4, 0xA2, 0xE0,
+ 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4, 0xAB, 0xE0,
+ 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4, 0xAF, 0xE0,
+ 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA6, 0xA1, 0xE0,
+ 0xA6, 0xBC, 0x0D, 0x46, 0xE0, 0xA6, 0xA2, 0xE0,
+ // Bytes 4580 - 45bf
+ 0xA6, 0xBC, 0x0D, 0x46, 0xE0, 0xA6, 0xAF, 0xE0,
+ 0xA6, 0xBC, 0x0D, 0x46, 0xE0, 0xA8, 0x96, 0xE0,
+ 0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xA8, 0x97, 0xE0,
+ 0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xA8, 0x9C, 0xE0,
+ 0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xA8, 0xAB, 0xE0,
+ 0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xA8, 0xB2, 0xE0,
+ 0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xA8, 0xB8, 0xE0,
+ 0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xAC, 0xA1, 0xE0,
+ // Bytes 45c0 - 45ff
+ 0xAC, 0xBC, 0x0D, 0x46, 0xE0, 0xAC, 0xA2, 0xE0,
+ 0xAC, 0xBC, 0x0D, 0x46, 0xE0, 0xBE, 0xB2, 0xE0,
+ 0xBE, 0x80, 0xA1, 0x46, 0xE0, 0xBE, 0xB3, 0xE0,
+ 0xBE, 0x80, 0xA1, 0x46, 0xE3, 0x83, 0x86, 0xE3,
+ 0x82, 0x99, 0x11, 0x48, 0xF0, 0x9D, 0x85, 0x97,
+ 0xF0, 0x9D, 0x85, 0xA5, 0xB1, 0x48, 0xF0, 0x9D,
+ 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xB1, 0x48,
+ 0xF0, 0x9D, 0x86, 0xB9, 0xF0, 0x9D, 0x85, 0xA5,
+ // Bytes 4600 - 463f
+ 0xB1, 0x48, 0xF0, 0x9D, 0x86, 0xBA, 0xF0, 0x9D,
+ 0x85, 0xA5, 0xB1, 0x49, 0xE0, 0xBE, 0xB2, 0xE0,
+ 0xBD, 0xB1, 0xE0, 0xBE, 0x80, 0xA2, 0x49, 0xE0,
+ 0xBE, 0xB3, 0xE0, 0xBD, 0xB1, 0xE0, 0xBE, 0x80,
+ 0xA2, 0x4C, 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D,
+ 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAE, 0xB2, 0x4C,
+ 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5,
+ 0xF0, 0x9D, 0x85, 0xAF, 0xB2, 0x4C, 0xF0, 0x9D,
+ // Bytes 4640 - 467f
+ 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D,
+ 0x85, 0xB0, 0xB2, 0x4C, 0xF0, 0x9D, 0x85, 0x98,
+ 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xB1,
+ 0xB2, 0x4C, 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D,
+ 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xB2, 0xB2, 0x4C,
+ 0xF0, 0x9D, 0x86, 0xB9, 0xF0, 0x9D, 0x85, 0xA5,
+ 0xF0, 0x9D, 0x85, 0xAE, 0xB2, 0x4C, 0xF0, 0x9D,
+ 0x86, 0xB9, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D,
+ // Bytes 4680 - 46bf
+ 0x85, 0xAF, 0xB2, 0x4C, 0xF0, 0x9D, 0x86, 0xBA,
+ 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAE,
+ 0xB2, 0x4C, 0xF0, 0x9D, 0x86, 0xBA, 0xF0, 0x9D,
+ 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAF, 0xB2, 0x83,
+ 0x41, 0xCC, 0x82, 0xCD, 0x83, 0x41, 0xCC, 0x86,
+ 0xCD, 0x83, 0x41, 0xCC, 0x87, 0xCD, 0x83, 0x41,
+ 0xCC, 0x88, 0xCD, 0x83, 0x41, 0xCC, 0x8A, 0xCD,
+ 0x83, 0x41, 0xCC, 0xA3, 0xB9, 0x83, 0x43, 0xCC,
+ // Bytes 46c0 - 46ff
+ 0xA7, 0xA9, 0x83, 0x45, 0xCC, 0x82, 0xCD, 0x83,
+ 0x45, 0xCC, 0x84, 0xCD, 0x83, 0x45, 0xCC, 0xA3,
+ 0xB9, 0x83, 0x45, 0xCC, 0xA7, 0xA9, 0x83, 0x49,
+ 0xCC, 0x88, 0xCD, 0x83, 0x4C, 0xCC, 0xA3, 0xB9,
+ 0x83, 0x4F, 0xCC, 0x82, 0xCD, 0x83, 0x4F, 0xCC,
+ 0x83, 0xCD, 0x83, 0x4F, 0xCC, 0x84, 0xCD, 0x83,
+ 0x4F, 0xCC, 0x87, 0xCD, 0x83, 0x4F, 0xCC, 0x88,
+ 0xCD, 0x83, 0x4F, 0xCC, 0x9B, 0xB1, 0x83, 0x4F,
+ // Bytes 4700 - 473f
+ 0xCC, 0xA3, 0xB9, 0x83, 0x4F, 0xCC, 0xA8, 0xA9,
+ 0x83, 0x52, 0xCC, 0xA3, 0xB9, 0x83, 0x53, 0xCC,
+ 0x81, 0xCD, 0x83, 0x53, 0xCC, 0x8C, 0xCD, 0x83,
+ 0x53, 0xCC, 0xA3, 0xB9, 0x83, 0x55, 0xCC, 0x83,
+ 0xCD, 0x83, 0x55, 0xCC, 0x84, 0xCD, 0x83, 0x55,
+ 0xCC, 0x88, 0xCD, 0x83, 0x55, 0xCC, 0x9B, 0xB1,
+ 0x83, 0x61, 0xCC, 0x82, 0xCD, 0x83, 0x61, 0xCC,
+ 0x86, 0xCD, 0x83, 0x61, 0xCC, 0x87, 0xCD, 0x83,
+ // Bytes 4740 - 477f
+ 0x61, 0xCC, 0x88, 0xCD, 0x83, 0x61, 0xCC, 0x8A,
+ 0xCD, 0x83, 0x61, 0xCC, 0xA3, 0xB9, 0x83, 0x63,
+ 0xCC, 0xA7, 0xA9, 0x83, 0x65, 0xCC, 0x82, 0xCD,
+ 0x83, 0x65, 0xCC, 0x84, 0xCD, 0x83, 0x65, 0xCC,
+ 0xA3, 0xB9, 0x83, 0x65, 0xCC, 0xA7, 0xA9, 0x83,
+ 0x69, 0xCC, 0x88, 0xCD, 0x83, 0x6C, 0xCC, 0xA3,
+ 0xB9, 0x83, 0x6F, 0xCC, 0x82, 0xCD, 0x83, 0x6F,
+ 0xCC, 0x83, 0xCD, 0x83, 0x6F, 0xCC, 0x84, 0xCD,
+ // Bytes 4780 - 47bf
+ 0x83, 0x6F, 0xCC, 0x87, 0xCD, 0x83, 0x6F, 0xCC,
+ 0x88, 0xCD, 0x83, 0x6F, 0xCC, 0x9B, 0xB1, 0x83,
+ 0x6F, 0xCC, 0xA3, 0xB9, 0x83, 0x6F, 0xCC, 0xA8,
+ 0xA9, 0x83, 0x72, 0xCC, 0xA3, 0xB9, 0x83, 0x73,
+ 0xCC, 0x81, 0xCD, 0x83, 0x73, 0xCC, 0x8C, 0xCD,
+ 0x83, 0x73, 0xCC, 0xA3, 0xB9, 0x83, 0x75, 0xCC,
+ 0x83, 0xCD, 0x83, 0x75, 0xCC, 0x84, 0xCD, 0x83,
+ 0x75, 0xCC, 0x88, 0xCD, 0x83, 0x75, 0xCC, 0x9B,
+ // Bytes 47c0 - 47ff
+ 0xB1, 0x84, 0xCE, 0x91, 0xCC, 0x93, 0xCD, 0x84,
+ 0xCE, 0x91, 0xCC, 0x94, 0xCD, 0x84, 0xCE, 0x95,
+ 0xCC, 0x93, 0xCD, 0x84, 0xCE, 0x95, 0xCC, 0x94,
+ 0xCD, 0x84, 0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x84,
+ 0xCE, 0x97, 0xCC, 0x94, 0xCD, 0x84, 0xCE, 0x99,
+ 0xCC, 0x93, 0xCD, 0x84, 0xCE, 0x99, 0xCC, 0x94,
+ 0xCD, 0x84, 0xCE, 0x9F, 0xCC, 0x93, 0xCD, 0x84,
+ 0xCE, 0x9F, 0xCC, 0x94, 0xCD, 0x84, 0xCE, 0xA5,
+ // Bytes 4800 - 483f
+ 0xCC, 0x94, 0xCD, 0x84, 0xCE, 0xA9, 0xCC, 0x93,
+ 0xCD, 0x84, 0xCE, 0xA9, 0xCC, 0x94, 0xCD, 0x84,
+ 0xCE, 0xB1, 0xCC, 0x80, 0xCD, 0x84, 0xCE, 0xB1,
+ 0xCC, 0x81, 0xCD, 0x84, 0xCE, 0xB1, 0xCC, 0x93,
+ 0xCD, 0x84, 0xCE, 0xB1, 0xCC, 0x94, 0xCD, 0x84,
+ 0xCE, 0xB1, 0xCD, 0x82, 0xCD, 0x84, 0xCE, 0xB5,
+ 0xCC, 0x93, 0xCD, 0x84, 0xCE, 0xB5, 0xCC, 0x94,
+ 0xCD, 0x84, 0xCE, 0xB7, 0xCC, 0x80, 0xCD, 0x84,
+ // Bytes 4840 - 487f
+ 0xCE, 0xB7, 0xCC, 0x81, 0xCD, 0x84, 0xCE, 0xB7,
+ 0xCC, 0x93, 0xCD, 0x84, 0xCE, 0xB7, 0xCC, 0x94,
+ 0xCD, 0x84, 0xCE, 0xB7, 0xCD, 0x82, 0xCD, 0x84,
+ 0xCE, 0xB9, 0xCC, 0x88, 0xCD, 0x84, 0xCE, 0xB9,
+ 0xCC, 0x93, 0xCD, 0x84, 0xCE, 0xB9, 0xCC, 0x94,
+ 0xCD, 0x84, 0xCE, 0xBF, 0xCC, 0x93, 0xCD, 0x84,
+ 0xCE, 0xBF, 0xCC, 0x94, 0xCD, 0x84, 0xCF, 0x85,
+ 0xCC, 0x88, 0xCD, 0x84, 0xCF, 0x85, 0xCC, 0x93,
+ // Bytes 4880 - 48bf
+ 0xCD, 0x84, 0xCF, 0x85, 0xCC, 0x94, 0xCD, 0x84,
+ 0xCF, 0x89, 0xCC, 0x80, 0xCD, 0x84, 0xCF, 0x89,
+ 0xCC, 0x81, 0xCD, 0x84, 0xCF, 0x89, 0xCC, 0x93,
+ 0xCD, 0x84, 0xCF, 0x89, 0xCC, 0x94, 0xCD, 0x84,
+ 0xCF, 0x89, 0xCD, 0x82, 0xCD, 0x86, 0xCE, 0x91,
+ 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0x91,
+ 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0x91,
+ 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86, 0xCE, 0x91,
+ // Bytes 48c0 - 48ff
+ 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0x91,
+ 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0x91,
+ 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x86, 0xCE, 0x97,
+ 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0x97,
+ 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0x97,
+ 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86, 0xCE, 0x97,
+ 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0x97,
+ 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0x97,
+ // Bytes 4900 - 493f
+ 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x86, 0xCE, 0xA9,
+ 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0xA9,
+ 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0xA9,
+ 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86, 0xCE, 0xA9,
+ 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0xA9,
+ 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0xA9,
+ 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x86, 0xCE, 0xB1,
+ 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0xB1,
+ // Bytes 4940 - 497f
+ 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0xB1,
+ 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86, 0xCE, 0xB1,
+ 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0xB1,
+ 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0xB1,
+ 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x86, 0xCE, 0xB7,
+ 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0xB7,
+ 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0xB7,
+ 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86, 0xCE, 0xB7,
+ // Bytes 4980 - 49bf
+ 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0xB7,
+ 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0xB7,
+ 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x86, 0xCF, 0x89,
+ 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86, 0xCF, 0x89,
+ 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86, 0xCF, 0x89,
+ 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86, 0xCF, 0x89,
+ 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86, 0xCF, 0x89,
+ 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86, 0xCF, 0x89,
+ // Bytes 49c0 - 49ff
+ 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x42, 0xCC, 0x80,
+ 0xCD, 0x33, 0x42, 0xCC, 0x81, 0xCD, 0x33, 0x42,
+ 0xCC, 0x93, 0xCD, 0x33, 0x43, 0xE1, 0x85, 0xA1,
+ 0x01, 0x00, 0x43, 0xE1, 0x85, 0xA2, 0x01, 0x00,
+ 0x43, 0xE1, 0x85, 0xA3, 0x01, 0x00, 0x43, 0xE1,
+ 0x85, 0xA4, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xA5,
+ 0x01, 0x00, 0x43, 0xE1, 0x85, 0xA6, 0x01, 0x00,
+ 0x43, 0xE1, 0x85, 0xA7, 0x01, 0x00, 0x43, 0xE1,
+ // Bytes 4a00 - 4a3f
+ 0x85, 0xA8, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xA9,
+ 0x01, 0x00, 0x43, 0xE1, 0x85, 0xAA, 0x01, 0x00,
+ 0x43, 0xE1, 0x85, 0xAB, 0x01, 0x00, 0x43, 0xE1,
+ 0x85, 0xAC, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xAD,
+ 0x01, 0x00, 0x43, 0xE1, 0x85, 0xAE, 0x01, 0x00,
+ 0x43, 0xE1, 0x85, 0xAF, 0x01, 0x00, 0x43, 0xE1,
+ 0x85, 0xB0, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xB1,
+ 0x01, 0x00, 0x43, 0xE1, 0x85, 0xB2, 0x01, 0x00,
+ // Bytes 4a40 - 4a7f
+ 0x43, 0xE1, 0x85, 0xB3, 0x01, 0x00, 0x43, 0xE1,
+ 0x85, 0xB4, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xB5,
+ 0x01, 0x00, 0x43, 0xE1, 0x86, 0xAA, 0x01, 0x00,
+ 0x43, 0xE1, 0x86, 0xAC, 0x01, 0x00, 0x43, 0xE1,
+ 0x86, 0xAD, 0x01, 0x00, 0x43, 0xE1, 0x86, 0xB0,
+ 0x01, 0x00, 0x43, 0xE1, 0x86, 0xB1, 0x01, 0x00,
+ 0x43, 0xE1, 0x86, 0xB2, 0x01, 0x00, 0x43, 0xE1,
+ 0x86, 0xB3, 0x01, 0x00, 0x43, 0xE1, 0x86, 0xB4,
+ // Bytes 4a80 - 4abf
+ 0x01, 0x00, 0x43, 0xE1, 0x86, 0xB5, 0x01, 0x00,
+ 0x44, 0xCC, 0x88, 0xCC, 0x81, 0xCE, 0x33, 0x43,
+ 0xE3, 0x82, 0x99, 0x11, 0x04, 0x43, 0xE3, 0x82,
+ 0x9A, 0x11, 0x04, 0x46, 0xE0, 0xBD, 0xB1, 0xE0,
+ 0xBD, 0xB2, 0xA2, 0x27, 0x46, 0xE0, 0xBD, 0xB1,
+ 0xE0, 0xBD, 0xB4, 0xA6, 0x27, 0x46, 0xE0, 0xBD,
+ 0xB1, 0xE0, 0xBE, 0x80, 0xA2, 0x27, 0x00, 0x01,
+}
+
+// lookup returns the trie value for the first UTF-8 encoding in s and
+// the width in bytes of this encoding. The size will be 0 if s does not
+// hold enough bytes to complete the encoding. len(s) must be greater than 0.
+func (t *nfcTrie) lookup(s []byte) (v uint16, sz int) {
+ c0 := s[0]
+ switch {
+ case c0 < 0x80: // is ASCII
+ return nfcValues[c0], 1
+ case c0 < 0xC2:
+ return 0, 1 // Illegal UTF-8: not a starter, not ASCII.
+ case c0 < 0xE0: // 2-byte UTF-8
+ if len(s) < 2 {
+ return 0, 0
+ }
+ i := nfcIndex[c0]
+ c1 := s[1]
+ if c1 < 0x80 || 0xC0 <= c1 {
+ return 0, 1 // Illegal UTF-8: not a continuation byte.
+ }
+ return t.lookupValue(uint32(i), c1), 2
+ case c0 < 0xF0: // 3-byte UTF-8
+ if len(s) < 3 {
+ return 0, 0
+ }
+ i := nfcIndex[c0]
+ c1 := s[1]
+ if c1 < 0x80 || 0xC0 <= c1 {
+ return 0, 1 // Illegal UTF-8: not a continuation byte.
+ }
+ o := uint32(i)<<6 + uint32(c1)
+ i = nfcIndex[o]
+ c2 := s[2]
+ if c2 < 0x80 || 0xC0 <= c2 {
+ return 0, 2 // Illegal UTF-8: not a continuation byte.
+ }
+ return t.lookupValue(uint32(i), c2), 3
+ case c0 < 0xF8: // 4-byte UTF-8
+ if len(s) < 4 {
+ return 0, 0
+ }
+ i := nfcIndex[c0]
+ c1 := s[1]
+ if c1 < 0x80 || 0xC0 <= c1 {
+ return 0, 1 // Illegal UTF-8: not a continuation byte.
+ }
+ o := uint32(i)<<6 + uint32(c1)
+ i = nfcIndex[o]
+ c2 := s[2]
+ if c2 < 0x80 || 0xC0 <= c2 {
+ return 0, 2 // Illegal UTF-8: not a continuation byte.
+ }
+ o = uint32(i)<<6 + uint32(c2)
+ i = nfcIndex[o]
+ c3 := s[3]
+ if c3 < 0x80 || 0xC0 <= c3 {
+ return 0, 3 // Illegal UTF-8: not a continuation byte.
+ }
+ return t.lookupValue(uint32(i), c3), 4
+ }
+ // Illegal rune
+ return 0, 1
+}
+
+// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.
+// s must start with a full and valid UTF-8 encoded rune.
+func (t *nfcTrie) lookupUnsafe(s []byte) uint16 {
+ c0 := s[0]
+ if c0 < 0x80 { // is ASCII
+ return nfcValues[c0]
+ }
+ i := nfcIndex[c0]
+ if c0 < 0xE0 { // 2-byte UTF-8
+ return t.lookupValue(uint32(i), s[1])
+ }
+ i = nfcIndex[uint32(i)<<6+uint32(s[1])]
+ if c0 < 0xF0 { // 3-byte UTF-8
+ return t.lookupValue(uint32(i), s[2])
+ }
+ i = nfcIndex[uint32(i)<<6+uint32(s[2])]
+ if c0 < 0xF8 { // 4-byte UTF-8
+ return t.lookupValue(uint32(i), s[3])
+ }
+ return 0
+}
+
+// lookupString returns the trie value for the first UTF-8 encoding in s and
+// the width in bytes of this encoding. The size will be 0 if s does not
+// hold enough bytes to complete the encoding. len(s) must be greater than 0.
+func (t *nfcTrie) lookupString(s string) (v uint16, sz int) {
+ c0 := s[0]
+ switch {
+ case c0 < 0x80: // is ASCII
+ return nfcValues[c0], 1
+ case c0 < 0xC2:
+ return 0, 1 // Illegal UTF-8: not a starter, not ASCII.
+ case c0 < 0xE0: // 2-byte UTF-8
+ if len(s) < 2 {
+ return 0, 0
+ }
+ i := nfcIndex[c0]
+ c1 := s[1]
+ if c1 < 0x80 || 0xC0 <= c1 {
+ return 0, 1 // Illegal UTF-8: not a continuation byte.
+ }
+ return t.lookupValue(uint32(i), c1), 2
+ case c0 < 0xF0: // 3-byte UTF-8
+ if len(s) < 3 {
+ return 0, 0
+ }
+ i := nfcIndex[c0]
+ c1 := s[1]
+ if c1 < 0x80 || 0xC0 <= c1 {
+ return 0, 1 // Illegal UTF-8: not a continuation byte.
+ }
+ o := uint32(i)<<6 + uint32(c1)
+ i = nfcIndex[o]
+ c2 := s[2]
+ if c2 < 0x80 || 0xC0 <= c2 {
+ return 0, 2 // Illegal UTF-8: not a continuation byte.
+ }
+ return t.lookupValue(uint32(i), c2), 3
+ case c0 < 0xF8: // 4-byte UTF-8
+ if len(s) < 4 {
+ return 0, 0
+ }
+ i := nfcIndex[c0]
+ c1 := s[1]
+ if c1 < 0x80 || 0xC0 <= c1 {
+ return 0, 1 // Illegal UTF-8: not a continuation byte.
+ }
+ o := uint32(i)<<6 + uint32(c1)
+ i = nfcIndex[o]
+ c2 := s[2]
+ if c2 < 0x80 || 0xC0 <= c2 {
+ return 0, 2 // Illegal UTF-8: not a continuation byte.
+ }
+ o = uint32(i)<<6 + uint32(c2)
+ i = nfcIndex[o]
+ c3 := s[3]
+ if c3 < 0x80 || 0xC0 <= c3 {
+ return 0, 3 // Illegal UTF-8: not a continuation byte.
+ }
+ return t.lookupValue(uint32(i), c3), 4
+ }
+ // Illegal rune
+ return 0, 1
+}
+
+// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.
+// s must start with a full and valid UTF-8 encoded rune.
+func (t *nfcTrie) lookupStringUnsafe(s string) uint16 {
+ c0 := s[0]
+ if c0 < 0x80 { // is ASCII
+ return nfcValues[c0]
+ }
+ i := nfcIndex[c0]
+ if c0 < 0xE0 { // 2-byte UTF-8
+ return t.lookupValue(uint32(i), s[1])
+ }
+ i = nfcIndex[uint32(i)<<6+uint32(s[1])]
+ if c0 < 0xF0 { // 3-byte UTF-8
+ return t.lookupValue(uint32(i), s[2])
+ }
+ i = nfcIndex[uint32(i)<<6+uint32(s[2])]
+ if c0 < 0xF8 { // 4-byte UTF-8
+ return t.lookupValue(uint32(i), s[3])
+ }
+ return 0
+}
+
+// nfcTrie. Total size: 10680 bytes (10.43 KiB). Checksum: a555db76d4becdd2.
+type nfcTrie struct{}
+
+func newNfcTrie(i int) *nfcTrie {
+ return &nfcTrie{}
+}
+
+// lookupValue determines the type of block n and looks up the value for b.
+func (t *nfcTrie) lookupValue(n uint32, b byte) uint16 {
+ switch {
+ case n < 46:
+ return uint16(nfcValues[n<<6+uint32(b)])
+ default:
+ n -= 46
+ return uint16(nfcSparse.lookup(n, b))
+ }
+}
+
+// nfcValues: 48 blocks, 3072 entries, 6144 bytes
+// The third block is the zero block.
+var nfcValues = [3072]uint16{
+ // Block 0x0, offset 0x0
+ 0x3c: 0xa000, 0x3d: 0xa000, 0x3e: 0xa000,
+ // Block 0x1, offset 0x40
+ 0x41: 0xa000, 0x42: 0xa000, 0x43: 0xa000, 0x44: 0xa000, 0x45: 0xa000,
+ 0x46: 0xa000, 0x47: 0xa000, 0x48: 0xa000, 0x49: 0xa000, 0x4a: 0xa000, 0x4b: 0xa000,
+ 0x4c: 0xa000, 0x4d: 0xa000, 0x4e: 0xa000, 0x4f: 0xa000, 0x50: 0xa000,
+ 0x52: 0xa000, 0x53: 0xa000, 0x54: 0xa000, 0x55: 0xa000, 0x56: 0xa000, 0x57: 0xa000,
+ 0x58: 0xa000, 0x59: 0xa000, 0x5a: 0xa000,
+ 0x61: 0xa000, 0x62: 0xa000, 0x63: 0xa000,
+ 0x64: 0xa000, 0x65: 0xa000, 0x66: 0xa000, 0x67: 0xa000, 0x68: 0xa000, 0x69: 0xa000,
+ 0x6a: 0xa000, 0x6b: 0xa000, 0x6c: 0xa000, 0x6d: 0xa000, 0x6e: 0xa000, 0x6f: 0xa000,
+ 0x70: 0xa000, 0x72: 0xa000, 0x73: 0xa000, 0x74: 0xa000, 0x75: 0xa000,
+ 0x76: 0xa000, 0x77: 0xa000, 0x78: 0xa000, 0x79: 0xa000, 0x7a: 0xa000,
+ // Block 0x2, offset 0x80
+ // Block 0x3, offset 0xc0
+ 0xc0: 0x2f86, 0xc1: 0x2f8b, 0xc2: 0x469f, 0xc3: 0x2f90, 0xc4: 0x46ae, 0xc5: 0x46b3,
+ 0xc6: 0xa000, 0xc7: 0x46bd, 0xc8: 0x2ff9, 0xc9: 0x2ffe, 0xca: 0x46c2, 0xcb: 0x3012,
+ 0xcc: 0x3085, 0xcd: 0x308a, 0xce: 0x308f, 0xcf: 0x46d6, 0xd1: 0x311b,
+ 0xd2: 0x313e, 0xd3: 0x3143, 0xd4: 0x46e0, 0xd5: 0x46e5, 0xd6: 0x46f4,
+ 0xd8: 0xa000, 0xd9: 0x31ca, 0xda: 0x31cf, 0xdb: 0x31d4, 0xdc: 0x4726, 0xdd: 0x324c,
+ 0xe0: 0x3292, 0xe1: 0x3297, 0xe2: 0x4730, 0xe3: 0x329c,
+ 0xe4: 0x473f, 0xe5: 0x4744, 0xe6: 0xa000, 0xe7: 0x474e, 0xe8: 0x3305, 0xe9: 0x330a,
+ 0xea: 0x4753, 0xeb: 0x331e, 0xec: 0x3396, 0xed: 0x339b, 0xee: 0x33a0, 0xef: 0x4767,
+ 0xf1: 0x342c, 0xf2: 0x344f, 0xf3: 0x3454, 0xf4: 0x4771, 0xf5: 0x4776,
+ 0xf6: 0x4785, 0xf8: 0xa000, 0xf9: 0x34e0, 0xfa: 0x34e5, 0xfb: 0x34ea,
+ 0xfc: 0x47b7, 0xfd: 0x3567, 0xff: 0x3580,
+ // Block 0x4, offset 0x100
+ 0x100: 0x2f95, 0x101: 0x32a1, 0x102: 0x46a4, 0x103: 0x4735, 0x104: 0x2fb3, 0x105: 0x32bf,
+ 0x106: 0x2fc7, 0x107: 0x32d3, 0x108: 0x2fcc, 0x109: 0x32d8, 0x10a: 0x2fd1, 0x10b: 0x32dd,
+ 0x10c: 0x2fd6, 0x10d: 0x32e2, 0x10e: 0x2fe0, 0x10f: 0x32ec,
+ 0x112: 0x46c7, 0x113: 0x4758, 0x114: 0x3008, 0x115: 0x3314, 0x116: 0x300d, 0x117: 0x3319,
+ 0x118: 0x302b, 0x119: 0x3337, 0x11a: 0x301c, 0x11b: 0x3328, 0x11c: 0x3044, 0x11d: 0x3350,
+ 0x11e: 0x304e, 0x11f: 0x335a, 0x120: 0x3053, 0x121: 0x335f, 0x122: 0x305d, 0x123: 0x3369,
+ 0x124: 0x3062, 0x125: 0x336e, 0x128: 0x3094, 0x129: 0x33a5,
+ 0x12a: 0x3099, 0x12b: 0x33aa, 0x12c: 0x309e, 0x12d: 0x33af, 0x12e: 0x30c1, 0x12f: 0x33cd,
+ 0x130: 0x30a3, 0x134: 0x30cb, 0x135: 0x33d7,
+ 0x136: 0x30df, 0x137: 0x33f0, 0x139: 0x30e9, 0x13a: 0x33fa, 0x13b: 0x30f3,
+ 0x13c: 0x3404, 0x13d: 0x30ee, 0x13e: 0x33ff,
+ // Block 0x5, offset 0x140
+ 0x143: 0x3116, 0x144: 0x3427, 0x145: 0x312f,
+ 0x146: 0x3440, 0x147: 0x3125, 0x148: 0x3436,
+ 0x14c: 0x46ea, 0x14d: 0x477b, 0x14e: 0x3148, 0x14f: 0x3459, 0x150: 0x3152, 0x151: 0x3463,
+ 0x154: 0x3170, 0x155: 0x3481, 0x156: 0x3189, 0x157: 0x349a,
+ 0x158: 0x317a, 0x159: 0x348b, 0x15a: 0x470d, 0x15b: 0x479e, 0x15c: 0x3193, 0x15d: 0x34a4,
+ 0x15e: 0x31a2, 0x15f: 0x34b3, 0x160: 0x4712, 0x161: 0x47a3, 0x162: 0x31bb, 0x163: 0x34d1,
+ 0x164: 0x31ac, 0x165: 0x34c2, 0x168: 0x471c, 0x169: 0x47ad,
+ 0x16a: 0x4721, 0x16b: 0x47b2, 0x16c: 0x31d9, 0x16d: 0x34ef, 0x16e: 0x31e3, 0x16f: 0x34f9,
+ 0x170: 0x31e8, 0x171: 0x34fe, 0x172: 0x3206, 0x173: 0x351c, 0x174: 0x3229, 0x175: 0x353f,
+ 0x176: 0x3251, 0x177: 0x356c, 0x178: 0x3265, 0x179: 0x3274, 0x17a: 0x3594, 0x17b: 0x327e,
+ 0x17c: 0x359e, 0x17d: 0x3283, 0x17e: 0x35a3, 0x17f: 0xa000,
+ // Block 0x6, offset 0x180
+ 0x184: 0x8100, 0x185: 0x8100,
+ 0x186: 0x8100,
+ 0x18d: 0x2f9f, 0x18e: 0x32ab, 0x18f: 0x30ad, 0x190: 0x33b9, 0x191: 0x3157,
+ 0x192: 0x3468, 0x193: 0x31ed, 0x194: 0x3503, 0x195: 0x39e6, 0x196: 0x3b75, 0x197: 0x39df,
+ 0x198: 0x3b6e, 0x199: 0x39ed, 0x19a: 0x3b7c, 0x19b: 0x39d8, 0x19c: 0x3b67,
+ 0x19e: 0x38c7, 0x19f: 0x3a56, 0x1a0: 0x38c0, 0x1a1: 0x3a4f, 0x1a2: 0x35ca, 0x1a3: 0x35dc,
+ 0x1a6: 0x3058, 0x1a7: 0x3364, 0x1a8: 0x30d5, 0x1a9: 0x33e6,
+ 0x1aa: 0x4703, 0x1ab: 0x4794, 0x1ac: 0x39a7, 0x1ad: 0x3b36, 0x1ae: 0x35ee, 0x1af: 0x35f4,
+ 0x1b0: 0x33dc, 0x1b4: 0x303f, 0x1b5: 0x334b,
+ 0x1b8: 0x3111, 0x1b9: 0x3422, 0x1ba: 0x38ce, 0x1bb: 0x3a5d,
+ 0x1bc: 0x35c4, 0x1bd: 0x35d6, 0x1be: 0x35d0, 0x1bf: 0x35e2,
+ // Block 0x7, offset 0x1c0
+ 0x1c0: 0x2fa4, 0x1c1: 0x32b0, 0x1c2: 0x2fa9, 0x1c3: 0x32b5, 0x1c4: 0x3021, 0x1c5: 0x332d,
+ 0x1c6: 0x3026, 0x1c7: 0x3332, 0x1c8: 0x30b2, 0x1c9: 0x33be, 0x1ca: 0x30b7, 0x1cb: 0x33c3,
+ 0x1cc: 0x315c, 0x1cd: 0x346d, 0x1ce: 0x3161, 0x1cf: 0x3472, 0x1d0: 0x317f, 0x1d1: 0x3490,
+ 0x1d2: 0x3184, 0x1d3: 0x3495, 0x1d4: 0x31f2, 0x1d5: 0x3508, 0x1d6: 0x31f7, 0x1d7: 0x350d,
+ 0x1d8: 0x319d, 0x1d9: 0x34ae, 0x1da: 0x31b6, 0x1db: 0x34cc,
+ 0x1de: 0x3071, 0x1df: 0x337d,
+ 0x1e6: 0x46a9, 0x1e7: 0x473a, 0x1e8: 0x46d1, 0x1e9: 0x4762,
+ 0x1ea: 0x3976, 0x1eb: 0x3b05, 0x1ec: 0x3953, 0x1ed: 0x3ae2, 0x1ee: 0x46ef, 0x1ef: 0x4780,
+ 0x1f0: 0x396f, 0x1f1: 0x3afe, 0x1f2: 0x325b, 0x1f3: 0x3576,
+ // Block 0x8, offset 0x200
+ 0x200: 0x9933, 0x201: 0x9933, 0x202: 0x9933, 0x203: 0x9933, 0x204: 0x9933, 0x205: 0x8133,
+ 0x206: 0x9933, 0x207: 0x9933, 0x208: 0x9933, 0x209: 0x9933, 0x20a: 0x9933, 0x20b: 0x9933,
+ 0x20c: 0x9933, 0x20d: 0x8133, 0x20e: 0x8133, 0x20f: 0x9933, 0x210: 0x8133, 0x211: 0x9933,
+ 0x212: 0x8133, 0x213: 0x9933, 0x214: 0x9933, 0x215: 0x8134, 0x216: 0x812e, 0x217: 0x812e,
+ 0x218: 0x812e, 0x219: 0x812e, 0x21a: 0x8134, 0x21b: 0x992c, 0x21c: 0x812e, 0x21d: 0x812e,
+ 0x21e: 0x812e, 0x21f: 0x812e, 0x220: 0x812e, 0x221: 0x812a, 0x222: 0x812a, 0x223: 0x992e,
+ 0x224: 0x992e, 0x225: 0x992e, 0x226: 0x992e, 0x227: 0x992a, 0x228: 0x992a, 0x229: 0x812e,
+ 0x22a: 0x812e, 0x22b: 0x812e, 0x22c: 0x812e, 0x22d: 0x992e, 0x22e: 0x992e, 0x22f: 0x812e,
+ 0x230: 0x992e, 0x231: 0x992e, 0x232: 0x812e, 0x233: 0x812e, 0x234: 0x8101, 0x235: 0x8101,
+ 0x236: 0x8101, 0x237: 0x8101, 0x238: 0x9901, 0x239: 0x812e, 0x23a: 0x812e, 0x23b: 0x812e,
+ 0x23c: 0x812e, 0x23d: 0x8133, 0x23e: 0x8133, 0x23f: 0x8133,
+ // Block 0x9, offset 0x240
+ 0x240: 0x49c5, 0x241: 0x49ca, 0x242: 0x9933, 0x243: 0x49cf, 0x244: 0x4a88, 0x245: 0x9937,
+ 0x246: 0x8133, 0x247: 0x812e, 0x248: 0x812e, 0x249: 0x812e, 0x24a: 0x8133, 0x24b: 0x8133,
+ 0x24c: 0x8133, 0x24d: 0x812e, 0x24e: 0x812e, 0x250: 0x8133, 0x251: 0x8133,
+ 0x252: 0x8133, 0x253: 0x812e, 0x254: 0x812e, 0x255: 0x812e, 0x256: 0x812e, 0x257: 0x8133,
+ 0x258: 0x8134, 0x259: 0x812e, 0x25a: 0x812e, 0x25b: 0x8133, 0x25c: 0x8135, 0x25d: 0x8136,
+ 0x25e: 0x8136, 0x25f: 0x8135, 0x260: 0x8136, 0x261: 0x8136, 0x262: 0x8135, 0x263: 0x8133,
+ 0x264: 0x8133, 0x265: 0x8133, 0x266: 0x8133, 0x267: 0x8133, 0x268: 0x8133, 0x269: 0x8133,
+ 0x26a: 0x8133, 0x26b: 0x8133, 0x26c: 0x8133, 0x26d: 0x8133, 0x26e: 0x8133, 0x26f: 0x8133,
+ 0x274: 0x0173,
+ 0x27a: 0x8100,
+ 0x27e: 0x0037,
+ // Block 0xa, offset 0x280
+ 0x284: 0x8100, 0x285: 0x35b8,
+ 0x286: 0x3600, 0x287: 0x00ce, 0x288: 0x361e, 0x289: 0x362a, 0x28a: 0x363c,
+ 0x28c: 0x365a, 0x28e: 0x366c, 0x28f: 0x368a, 0x290: 0x3e1f, 0x291: 0xa000,
+ 0x295: 0xa000, 0x297: 0xa000,
+ 0x299: 0xa000,
+ 0x29f: 0xa000, 0x2a1: 0xa000,
+ 0x2a5: 0xa000, 0x2a9: 0xa000,
+ 0x2aa: 0x364e, 0x2ab: 0x367e, 0x2ac: 0x4815, 0x2ad: 0x36ae, 0x2ae: 0x483f, 0x2af: 0x36c0,
+ 0x2b0: 0x3e87, 0x2b1: 0xa000, 0x2b5: 0xa000,
+ 0x2b7: 0xa000, 0x2b9: 0xa000,
+ 0x2bf: 0xa000,
+ // Block 0xb, offset 0x2c0
+ 0x2c0: 0x3738, 0x2c1: 0x3744, 0x2c3: 0x3732,
+ 0x2c6: 0xa000, 0x2c7: 0x3720,
+ 0x2cc: 0x3774, 0x2cd: 0x375c, 0x2ce: 0x3786, 0x2d0: 0xa000,
+ 0x2d3: 0xa000, 0x2d5: 0xa000, 0x2d6: 0xa000, 0x2d7: 0xa000,
+ 0x2d8: 0xa000, 0x2d9: 0x3768, 0x2da: 0xa000,
+ 0x2de: 0xa000, 0x2e3: 0xa000,
+ 0x2e7: 0xa000,
+ 0x2eb: 0xa000, 0x2ed: 0xa000,
+ 0x2f0: 0xa000, 0x2f3: 0xa000, 0x2f5: 0xa000,
+ 0x2f6: 0xa000, 0x2f7: 0xa000, 0x2f8: 0xa000, 0x2f9: 0x37ec, 0x2fa: 0xa000,
+ 0x2fe: 0xa000,
+ // Block 0xc, offset 0x300
+ 0x301: 0x374a, 0x302: 0x37ce,
+ 0x310: 0x3726, 0x311: 0x37aa,
+ 0x312: 0x372c, 0x313: 0x37b0, 0x316: 0x373e, 0x317: 0x37c2,
+ 0x318: 0xa000, 0x319: 0xa000, 0x31a: 0x3840, 0x31b: 0x3846, 0x31c: 0x3750, 0x31d: 0x37d4,
+ 0x31e: 0x3756, 0x31f: 0x37da, 0x322: 0x3762, 0x323: 0x37e6,
+ 0x324: 0x376e, 0x325: 0x37f2, 0x326: 0x377a, 0x327: 0x37fe, 0x328: 0xa000, 0x329: 0xa000,
+ 0x32a: 0x384c, 0x32b: 0x3852, 0x32c: 0x37a4, 0x32d: 0x3828, 0x32e: 0x3780, 0x32f: 0x3804,
+ 0x330: 0x378c, 0x331: 0x3810, 0x332: 0x3792, 0x333: 0x3816, 0x334: 0x3798, 0x335: 0x381c,
+ 0x338: 0x379e, 0x339: 0x3822,
+ // Block 0xd, offset 0x340
+ 0x351: 0x812e,
+ 0x352: 0x8133, 0x353: 0x8133, 0x354: 0x8133, 0x355: 0x8133, 0x356: 0x812e, 0x357: 0x8133,
+ 0x358: 0x8133, 0x359: 0x8133, 0x35a: 0x812f, 0x35b: 0x812e, 0x35c: 0x8133, 0x35d: 0x8133,
+ 0x35e: 0x8133, 0x35f: 0x8133, 0x360: 0x8133, 0x361: 0x8133, 0x362: 0x812e, 0x363: 0x812e,
+ 0x364: 0x812e, 0x365: 0x812e, 0x366: 0x812e, 0x367: 0x812e, 0x368: 0x8133, 0x369: 0x8133,
+ 0x36a: 0x812e, 0x36b: 0x8133, 0x36c: 0x8133, 0x36d: 0x812f, 0x36e: 0x8132, 0x36f: 0x8133,
+ 0x370: 0x8106, 0x371: 0x8107, 0x372: 0x8108, 0x373: 0x8109, 0x374: 0x810a, 0x375: 0x810b,
+ 0x376: 0x810c, 0x377: 0x810d, 0x378: 0x810e, 0x379: 0x810f, 0x37a: 0x810f, 0x37b: 0x8110,
+ 0x37c: 0x8111, 0x37d: 0x8112, 0x37f: 0x8113,
+ // Block 0xe, offset 0x380
+ 0x388: 0xa000, 0x38a: 0xa000, 0x38b: 0x8117,
+ 0x38c: 0x8118, 0x38d: 0x8119, 0x38e: 0x811a, 0x38f: 0x811b, 0x390: 0x811c, 0x391: 0x811d,
+ 0x392: 0x811e, 0x393: 0x9933, 0x394: 0x9933, 0x395: 0x992e, 0x396: 0x812e, 0x397: 0x8133,
+ 0x398: 0x8133, 0x399: 0x8133, 0x39a: 0x8133, 0x39b: 0x8133, 0x39c: 0x812e, 0x39d: 0x8133,
+ 0x39e: 0x8133, 0x39f: 0x812e,
+ 0x3b0: 0x811f,
+ // Block 0xf, offset 0x3c0
+ 0x3d3: 0x812e, 0x3d4: 0x8133, 0x3d5: 0x8133, 0x3d6: 0x8133, 0x3d7: 0x8133,
+ 0x3d8: 0x8133, 0x3d9: 0x8133, 0x3da: 0x8133, 0x3db: 0x8133, 0x3dc: 0x8133, 0x3dd: 0x8133,
+ 0x3de: 0x8133, 0x3df: 0x8133, 0x3e0: 0x8133, 0x3e1: 0x8133, 0x3e3: 0x812e,
+ 0x3e4: 0x8133, 0x3e5: 0x8133, 0x3e6: 0x812e, 0x3e7: 0x8133, 0x3e8: 0x8133, 0x3e9: 0x812e,
+ 0x3ea: 0x8133, 0x3eb: 0x8133, 0x3ec: 0x8133, 0x3ed: 0x812e, 0x3ee: 0x812e, 0x3ef: 0x812e,
+ 0x3f0: 0x8117, 0x3f1: 0x8118, 0x3f2: 0x8119, 0x3f3: 0x8133, 0x3f4: 0x8133, 0x3f5: 0x8133,
+ 0x3f6: 0x812e, 0x3f7: 0x8133, 0x3f8: 0x8133, 0x3f9: 0x812e, 0x3fa: 0x812e, 0x3fb: 0x8133,
+ 0x3fc: 0x8133, 0x3fd: 0x8133, 0x3fe: 0x8133, 0x3ff: 0x8133,
+ // Block 0x10, offset 0x400
+ 0x405: 0xa000,
+ 0x406: 0x2d33, 0x407: 0xa000, 0x408: 0x2d3b, 0x409: 0xa000, 0x40a: 0x2d43, 0x40b: 0xa000,
+ 0x40c: 0x2d4b, 0x40d: 0xa000, 0x40e: 0x2d53, 0x411: 0xa000,
+ 0x412: 0x2d5b,
+ 0x434: 0x8103, 0x435: 0x9900,
+ 0x43a: 0xa000, 0x43b: 0x2d63,
+ 0x43c: 0xa000, 0x43d: 0x2d6b, 0x43e: 0xa000, 0x43f: 0xa000,
+ // Block 0x11, offset 0x440
+ 0x440: 0x8133, 0x441: 0x8133, 0x442: 0x812e, 0x443: 0x8133, 0x444: 0x8133, 0x445: 0x8133,
+ 0x446: 0x8133, 0x447: 0x8133, 0x448: 0x8133, 0x449: 0x8133, 0x44a: 0x812e, 0x44b: 0x8133,
+ 0x44c: 0x8133, 0x44d: 0x8136, 0x44e: 0x812b, 0x44f: 0x812e, 0x450: 0x812a, 0x451: 0x8133,
+ 0x452: 0x8133, 0x453: 0x8133, 0x454: 0x8133, 0x455: 0x8133, 0x456: 0x8133, 0x457: 0x8133,
+ 0x458: 0x8133, 0x459: 0x8133, 0x45a: 0x8133, 0x45b: 0x8133, 0x45c: 0x8133, 0x45d: 0x8133,
+ 0x45e: 0x8133, 0x45f: 0x8133, 0x460: 0x8133, 0x461: 0x8133, 0x462: 0x8133, 0x463: 0x8133,
+ 0x464: 0x8133, 0x465: 0x8133, 0x466: 0x8133, 0x467: 0x8133, 0x468: 0x8133, 0x469: 0x8133,
+ 0x46a: 0x8133, 0x46b: 0x8133, 0x46c: 0x8133, 0x46d: 0x8133, 0x46e: 0x8133, 0x46f: 0x8133,
+ 0x470: 0x8133, 0x471: 0x8133, 0x472: 0x8133, 0x473: 0x8133, 0x474: 0x8133, 0x475: 0x8133,
+ 0x476: 0x8134, 0x477: 0x8132, 0x478: 0x8132, 0x479: 0x812e, 0x47b: 0x8133,
+ 0x47c: 0x8135, 0x47d: 0x812e, 0x47e: 0x8133, 0x47f: 0x812e,
+ // Block 0x12, offset 0x480
+ 0x480: 0x2fae, 0x481: 0x32ba, 0x482: 0x2fb8, 0x483: 0x32c4, 0x484: 0x2fbd, 0x485: 0x32c9,
+ 0x486: 0x2fc2, 0x487: 0x32ce, 0x488: 0x38e3, 0x489: 0x3a72, 0x48a: 0x2fdb, 0x48b: 0x32e7,
+ 0x48c: 0x2fe5, 0x48d: 0x32f1, 0x48e: 0x2ff4, 0x48f: 0x3300, 0x490: 0x2fea, 0x491: 0x32f6,
+ 0x492: 0x2fef, 0x493: 0x32fb, 0x494: 0x3906, 0x495: 0x3a95, 0x496: 0x390d, 0x497: 0x3a9c,
+ 0x498: 0x3030, 0x499: 0x333c, 0x49a: 0x3035, 0x49b: 0x3341, 0x49c: 0x391b, 0x49d: 0x3aaa,
+ 0x49e: 0x303a, 0x49f: 0x3346, 0x4a0: 0x3049, 0x4a1: 0x3355, 0x4a2: 0x3067, 0x4a3: 0x3373,
+ 0x4a4: 0x3076, 0x4a5: 0x3382, 0x4a6: 0x306c, 0x4a7: 0x3378, 0x4a8: 0x307b, 0x4a9: 0x3387,
+ 0x4aa: 0x3080, 0x4ab: 0x338c, 0x4ac: 0x30c6, 0x4ad: 0x33d2, 0x4ae: 0x3922, 0x4af: 0x3ab1,
+ 0x4b0: 0x30d0, 0x4b1: 0x33e1, 0x4b2: 0x30da, 0x4b3: 0x33eb, 0x4b4: 0x30e4, 0x4b5: 0x33f5,
+ 0x4b6: 0x46db, 0x4b7: 0x476c, 0x4b8: 0x3929, 0x4b9: 0x3ab8, 0x4ba: 0x30fd, 0x4bb: 0x340e,
+ 0x4bc: 0x30f8, 0x4bd: 0x3409, 0x4be: 0x3102, 0x4bf: 0x3413,
+ // Block 0x13, offset 0x4c0
+ 0x4c0: 0x3107, 0x4c1: 0x3418, 0x4c2: 0x310c, 0x4c3: 0x341d, 0x4c4: 0x3120, 0x4c5: 0x3431,
+ 0x4c6: 0x312a, 0x4c7: 0x343b, 0x4c8: 0x3139, 0x4c9: 0x344a, 0x4ca: 0x3134, 0x4cb: 0x3445,
+ 0x4cc: 0x394c, 0x4cd: 0x3adb, 0x4ce: 0x395a, 0x4cf: 0x3ae9, 0x4d0: 0x3961, 0x4d1: 0x3af0,
+ 0x4d2: 0x3968, 0x4d3: 0x3af7, 0x4d4: 0x3166, 0x4d5: 0x3477, 0x4d6: 0x316b, 0x4d7: 0x347c,
+ 0x4d8: 0x3175, 0x4d9: 0x3486, 0x4da: 0x4708, 0x4db: 0x4799, 0x4dc: 0x39ae, 0x4dd: 0x3b3d,
+ 0x4de: 0x318e, 0x4df: 0x349f, 0x4e0: 0x3198, 0x4e1: 0x34a9, 0x4e2: 0x4717, 0x4e3: 0x47a8,
+ 0x4e4: 0x39b5, 0x4e5: 0x3b44, 0x4e6: 0x39bc, 0x4e7: 0x3b4b, 0x4e8: 0x39c3, 0x4e9: 0x3b52,
+ 0x4ea: 0x31a7, 0x4eb: 0x34b8, 0x4ec: 0x31b1, 0x4ed: 0x34c7, 0x4ee: 0x31c5, 0x4ef: 0x34db,
+ 0x4f0: 0x31c0, 0x4f1: 0x34d6, 0x4f2: 0x3201, 0x4f3: 0x3517, 0x4f4: 0x3210, 0x4f5: 0x3526,
+ 0x4f6: 0x320b, 0x4f7: 0x3521, 0x4f8: 0x39ca, 0x4f9: 0x3b59, 0x4fa: 0x39d1, 0x4fb: 0x3b60,
+ 0x4fc: 0x3215, 0x4fd: 0x352b, 0x4fe: 0x321a, 0x4ff: 0x3530,
+ // Block 0x14, offset 0x500
+ 0x500: 0x321f, 0x501: 0x3535, 0x502: 0x3224, 0x503: 0x353a, 0x504: 0x3233, 0x505: 0x3549,
+ 0x506: 0x322e, 0x507: 0x3544, 0x508: 0x3238, 0x509: 0x3553, 0x50a: 0x323d, 0x50b: 0x3558,
+ 0x50c: 0x3242, 0x50d: 0x355d, 0x50e: 0x3260, 0x50f: 0x357b, 0x510: 0x3279, 0x511: 0x3599,
+ 0x512: 0x3288, 0x513: 0x35a8, 0x514: 0x328d, 0x515: 0x35ad, 0x516: 0x3391, 0x517: 0x34bd,
+ 0x518: 0x354e, 0x519: 0x358a, 0x51b: 0x35e8,
+ 0x520: 0x46b8, 0x521: 0x4749, 0x522: 0x2f9a, 0x523: 0x32a6,
+ 0x524: 0x388f, 0x525: 0x3a1e, 0x526: 0x3888, 0x527: 0x3a17, 0x528: 0x389d, 0x529: 0x3a2c,
+ 0x52a: 0x3896, 0x52b: 0x3a25, 0x52c: 0x38d5, 0x52d: 0x3a64, 0x52e: 0x38ab, 0x52f: 0x3a3a,
+ 0x530: 0x38a4, 0x531: 0x3a33, 0x532: 0x38b9, 0x533: 0x3a48, 0x534: 0x38b2, 0x535: 0x3a41,
+ 0x536: 0x38dc, 0x537: 0x3a6b, 0x538: 0x46cc, 0x539: 0x475d, 0x53a: 0x3017, 0x53b: 0x3323,
+ 0x53c: 0x3003, 0x53d: 0x330f, 0x53e: 0x38f1, 0x53f: 0x3a80,
+ // Block 0x15, offset 0x540
+ 0x540: 0x38ea, 0x541: 0x3a79, 0x542: 0x38ff, 0x543: 0x3a8e, 0x544: 0x38f8, 0x545: 0x3a87,
+ 0x546: 0x3914, 0x547: 0x3aa3, 0x548: 0x30a8, 0x549: 0x33b4, 0x54a: 0x30bc, 0x54b: 0x33c8,
+ 0x54c: 0x46fe, 0x54d: 0x478f, 0x54e: 0x314d, 0x54f: 0x345e, 0x550: 0x3937, 0x551: 0x3ac6,
+ 0x552: 0x3930, 0x553: 0x3abf, 0x554: 0x3945, 0x555: 0x3ad4, 0x556: 0x393e, 0x557: 0x3acd,
+ 0x558: 0x39a0, 0x559: 0x3b2f, 0x55a: 0x3984, 0x55b: 0x3b13, 0x55c: 0x397d, 0x55d: 0x3b0c,
+ 0x55e: 0x3992, 0x55f: 0x3b21, 0x560: 0x398b, 0x561: 0x3b1a, 0x562: 0x3999, 0x563: 0x3b28,
+ 0x564: 0x31fc, 0x565: 0x3512, 0x566: 0x31de, 0x567: 0x34f4, 0x568: 0x39fb, 0x569: 0x3b8a,
+ 0x56a: 0x39f4, 0x56b: 0x3b83, 0x56c: 0x3a09, 0x56d: 0x3b98, 0x56e: 0x3a02, 0x56f: 0x3b91,
+ 0x570: 0x3a10, 0x571: 0x3b9f, 0x572: 0x3247, 0x573: 0x3562, 0x574: 0x326f, 0x575: 0x358f,
+ 0x576: 0x326a, 0x577: 0x3585, 0x578: 0x3256, 0x579: 0x3571,
+ // Block 0x16, offset 0x580
+ 0x580: 0x481b, 0x581: 0x4821, 0x582: 0x4935, 0x583: 0x494d, 0x584: 0x493d, 0x585: 0x4955,
+ 0x586: 0x4945, 0x587: 0x495d, 0x588: 0x47c1, 0x589: 0x47c7, 0x58a: 0x48a5, 0x58b: 0x48bd,
+ 0x58c: 0x48ad, 0x58d: 0x48c5, 0x58e: 0x48b5, 0x58f: 0x48cd, 0x590: 0x482d, 0x591: 0x4833,
+ 0x592: 0x3dcf, 0x593: 0x3ddf, 0x594: 0x3dd7, 0x595: 0x3de7,
+ 0x598: 0x47cd, 0x599: 0x47d3, 0x59a: 0x3cff, 0x59b: 0x3d0f, 0x59c: 0x3d07, 0x59d: 0x3d17,
+ 0x5a0: 0x4845, 0x5a1: 0x484b, 0x5a2: 0x4965, 0x5a3: 0x497d,
+ 0x5a4: 0x496d, 0x5a5: 0x4985, 0x5a6: 0x4975, 0x5a7: 0x498d, 0x5a8: 0x47d9, 0x5a9: 0x47df,
+ 0x5aa: 0x48d5, 0x5ab: 0x48ed, 0x5ac: 0x48dd, 0x5ad: 0x48f5, 0x5ae: 0x48e5, 0x5af: 0x48fd,
+ 0x5b0: 0x485d, 0x5b1: 0x4863, 0x5b2: 0x3e2f, 0x5b3: 0x3e47, 0x5b4: 0x3e37, 0x5b5: 0x3e4f,
+ 0x5b6: 0x3e3f, 0x5b7: 0x3e57, 0x5b8: 0x47e5, 0x5b9: 0x47eb, 0x5ba: 0x3d2f, 0x5bb: 0x3d47,
+ 0x5bc: 0x3d37, 0x5bd: 0x3d4f, 0x5be: 0x3d3f, 0x5bf: 0x3d57,
+ // Block 0x17, offset 0x5c0
+ 0x5c0: 0x4869, 0x5c1: 0x486f, 0x5c2: 0x3e5f, 0x5c3: 0x3e6f, 0x5c4: 0x3e67, 0x5c5: 0x3e77,
+ 0x5c8: 0x47f1, 0x5c9: 0x47f7, 0x5ca: 0x3d5f, 0x5cb: 0x3d6f,
+ 0x5cc: 0x3d67, 0x5cd: 0x3d77, 0x5d0: 0x487b, 0x5d1: 0x4881,
+ 0x5d2: 0x3e97, 0x5d3: 0x3eaf, 0x5d4: 0x3e9f, 0x5d5: 0x3eb7, 0x5d6: 0x3ea7, 0x5d7: 0x3ebf,
+ 0x5d9: 0x47fd, 0x5db: 0x3d7f, 0x5dd: 0x3d87,
+ 0x5df: 0x3d8f, 0x5e0: 0x4893, 0x5e1: 0x4899, 0x5e2: 0x4995, 0x5e3: 0x49ad,
+ 0x5e4: 0x499d, 0x5e5: 0x49b5, 0x5e6: 0x49a5, 0x5e7: 0x49bd, 0x5e8: 0x4803, 0x5e9: 0x4809,
+ 0x5ea: 0x4905, 0x5eb: 0x491d, 0x5ec: 0x490d, 0x5ed: 0x4925, 0x5ee: 0x4915, 0x5ef: 0x492d,
+ 0x5f0: 0x480f, 0x5f1: 0x4335, 0x5f2: 0x36a8, 0x5f3: 0x433b, 0x5f4: 0x4839, 0x5f5: 0x4341,
+ 0x5f6: 0x36ba, 0x5f7: 0x4347, 0x5f8: 0x36d8, 0x5f9: 0x434d, 0x5fa: 0x36f0, 0x5fb: 0x4353,
+ 0x5fc: 0x4887, 0x5fd: 0x4359,
+ // Block 0x18, offset 0x600
+ 0x600: 0x3db7, 0x601: 0x3dbf, 0x602: 0x419b, 0x603: 0x41b9, 0x604: 0x41a5, 0x605: 0x41c3,
+ 0x606: 0x41af, 0x607: 0x41cd, 0x608: 0x3cef, 0x609: 0x3cf7, 0x60a: 0x40e7, 0x60b: 0x4105,
+ 0x60c: 0x40f1, 0x60d: 0x410f, 0x60e: 0x40fb, 0x60f: 0x4119, 0x610: 0x3dff, 0x611: 0x3e07,
+ 0x612: 0x41d7, 0x613: 0x41f5, 0x614: 0x41e1, 0x615: 0x41ff, 0x616: 0x41eb, 0x617: 0x4209,
+ 0x618: 0x3d1f, 0x619: 0x3d27, 0x61a: 0x4123, 0x61b: 0x4141, 0x61c: 0x412d, 0x61d: 0x414b,
+ 0x61e: 0x4137, 0x61f: 0x4155, 0x620: 0x3ed7, 0x621: 0x3edf, 0x622: 0x4213, 0x623: 0x4231,
+ 0x624: 0x421d, 0x625: 0x423b, 0x626: 0x4227, 0x627: 0x4245, 0x628: 0x3d97, 0x629: 0x3d9f,
+ 0x62a: 0x415f, 0x62b: 0x417d, 0x62c: 0x4169, 0x62d: 0x4187, 0x62e: 0x4173, 0x62f: 0x4191,
+ 0x630: 0x369c, 0x631: 0x3696, 0x632: 0x3da7, 0x633: 0x36a2, 0x634: 0x3daf,
+ 0x636: 0x4827, 0x637: 0x3dc7, 0x638: 0x360c, 0x639: 0x3606, 0x63a: 0x35fa, 0x63b: 0x4305,
+ 0x63c: 0x3612, 0x63d: 0x8100, 0x63e: 0x01d6, 0x63f: 0xa100,
+ // Block 0x19, offset 0x640
+ 0x640: 0x8100, 0x641: 0x35be, 0x642: 0x3def, 0x643: 0x36b4, 0x644: 0x3df7,
+ 0x646: 0x4851, 0x647: 0x3e0f, 0x648: 0x3618, 0x649: 0x430b, 0x64a: 0x3624, 0x64b: 0x4311,
+ 0x64c: 0x3630, 0x64d: 0x3ba6, 0x64e: 0x3bad, 0x64f: 0x3bb4, 0x650: 0x36cc, 0x651: 0x36c6,
+ 0x652: 0x3e17, 0x653: 0x44fb, 0x656: 0x36d2, 0x657: 0x3e27,
+ 0x658: 0x3648, 0x659: 0x3642, 0x65a: 0x3636, 0x65b: 0x4317, 0x65d: 0x3bbb,
+ 0x65e: 0x3bc2, 0x65f: 0x3bc9, 0x660: 0x3702, 0x661: 0x36fc, 0x662: 0x3e7f, 0x663: 0x4503,
+ 0x664: 0x36e4, 0x665: 0x36ea, 0x666: 0x3708, 0x667: 0x3e8f, 0x668: 0x3678, 0x669: 0x3672,
+ 0x66a: 0x3666, 0x66b: 0x4323, 0x66c: 0x3660, 0x66d: 0x35b2, 0x66e: 0x42ff, 0x66f: 0x0081,
+ 0x672: 0x3ec7, 0x673: 0x370e, 0x674: 0x3ecf,
+ 0x676: 0x489f, 0x677: 0x3ee7, 0x678: 0x3654, 0x679: 0x431d, 0x67a: 0x3684, 0x67b: 0x432f,
+ 0x67c: 0x3690, 0x67d: 0x426d, 0x67e: 0xa100,
+ // Block 0x1a, offset 0x680
+ 0x681: 0x3c1d, 0x683: 0xa000, 0x684: 0x3c24, 0x685: 0xa000,
+ 0x687: 0x3c2b, 0x688: 0xa000, 0x689: 0x3c32,
+ 0x68d: 0xa000,
+ 0x6a0: 0x2f7c, 0x6a1: 0xa000, 0x6a2: 0x3c40,
+ 0x6a4: 0xa000, 0x6a5: 0xa000,
+ 0x6ad: 0x3c39, 0x6ae: 0x2f77, 0x6af: 0x2f81,
+ 0x6b0: 0x3c47, 0x6b1: 0x3c4e, 0x6b2: 0xa000, 0x6b3: 0xa000, 0x6b4: 0x3c55, 0x6b5: 0x3c5c,
+ 0x6b6: 0xa000, 0x6b7: 0xa000, 0x6b8: 0x3c63, 0x6b9: 0x3c6a, 0x6ba: 0xa000, 0x6bb: 0xa000,
+ 0x6bc: 0xa000, 0x6bd: 0xa000,
+ // Block 0x1b, offset 0x6c0
+ 0x6c0: 0x3c71, 0x6c1: 0x3c78, 0x6c2: 0xa000, 0x6c3: 0xa000, 0x6c4: 0x3c8d, 0x6c5: 0x3c94,
+ 0x6c6: 0xa000, 0x6c7: 0xa000, 0x6c8: 0x3c9b, 0x6c9: 0x3ca2,
+ 0x6d1: 0xa000,
+ 0x6d2: 0xa000,
+ 0x6e2: 0xa000,
+ 0x6e8: 0xa000, 0x6e9: 0xa000,
+ 0x6eb: 0xa000, 0x6ec: 0x3cb7, 0x6ed: 0x3cbe, 0x6ee: 0x3cc5, 0x6ef: 0x3ccc,
+ 0x6f2: 0xa000, 0x6f3: 0xa000, 0x6f4: 0xa000, 0x6f5: 0xa000,
+ // Block 0x1c, offset 0x700
+ 0x706: 0xa000, 0x70b: 0xa000,
+ 0x70c: 0x3f1f, 0x70d: 0xa000, 0x70e: 0x3f27, 0x70f: 0xa000, 0x710: 0x3f2f, 0x711: 0xa000,
+ 0x712: 0x3f37, 0x713: 0xa000, 0x714: 0x3f3f, 0x715: 0xa000, 0x716: 0x3f47, 0x717: 0xa000,
+ 0x718: 0x3f4f, 0x719: 0xa000, 0x71a: 0x3f57, 0x71b: 0xa000, 0x71c: 0x3f5f, 0x71d: 0xa000,
+ 0x71e: 0x3f67, 0x71f: 0xa000, 0x720: 0x3f6f, 0x721: 0xa000, 0x722: 0x3f77,
+ 0x724: 0xa000, 0x725: 0x3f7f, 0x726: 0xa000, 0x727: 0x3f87, 0x728: 0xa000, 0x729: 0x3f8f,
+ 0x72f: 0xa000,
+ 0x730: 0x3f97, 0x731: 0x3f9f, 0x732: 0xa000, 0x733: 0x3fa7, 0x734: 0x3faf, 0x735: 0xa000,
+ 0x736: 0x3fb7, 0x737: 0x3fbf, 0x738: 0xa000, 0x739: 0x3fc7, 0x73a: 0x3fcf, 0x73b: 0xa000,
+ 0x73c: 0x3fd7, 0x73d: 0x3fdf,
+ // Block 0x1d, offset 0x740
+ 0x754: 0x3f17,
+ 0x759: 0x9904, 0x75a: 0x9904, 0x75b: 0x8100, 0x75c: 0x8100, 0x75d: 0xa000,
+ 0x75e: 0x3fe7,
+ 0x766: 0xa000,
+ 0x76b: 0xa000, 0x76c: 0x3ff7, 0x76d: 0xa000, 0x76e: 0x3fff, 0x76f: 0xa000,
+ 0x770: 0x4007, 0x771: 0xa000, 0x772: 0x400f, 0x773: 0xa000, 0x774: 0x4017, 0x775: 0xa000,
+ 0x776: 0x401f, 0x777: 0xa000, 0x778: 0x4027, 0x779: 0xa000, 0x77a: 0x402f, 0x77b: 0xa000,
+ 0x77c: 0x4037, 0x77d: 0xa000, 0x77e: 0x403f, 0x77f: 0xa000,
+ // Block 0x1e, offset 0x780
+ 0x780: 0x4047, 0x781: 0xa000, 0x782: 0x404f, 0x784: 0xa000, 0x785: 0x4057,
+ 0x786: 0xa000, 0x787: 0x405f, 0x788: 0xa000, 0x789: 0x4067,
+ 0x78f: 0xa000, 0x790: 0x406f, 0x791: 0x4077,
+ 0x792: 0xa000, 0x793: 0x407f, 0x794: 0x4087, 0x795: 0xa000, 0x796: 0x408f, 0x797: 0x4097,
+ 0x798: 0xa000, 0x799: 0x409f, 0x79a: 0x40a7, 0x79b: 0xa000, 0x79c: 0x40af, 0x79d: 0x40b7,
+ 0x7af: 0xa000,
+ 0x7b0: 0xa000, 0x7b1: 0xa000, 0x7b2: 0xa000, 0x7b4: 0x3fef,
+ 0x7b7: 0x40bf, 0x7b8: 0x40c7, 0x7b9: 0x40cf, 0x7ba: 0x40d7,
+ 0x7bd: 0xa000, 0x7be: 0x40df,
+ // Block 0x1f, offset 0x7c0
+ 0x7c0: 0x137a, 0x7c1: 0x0cfe, 0x7c2: 0x13d6, 0x7c3: 0x13a2, 0x7c4: 0x0e5a, 0x7c5: 0x06ee,
+ 0x7c6: 0x08e2, 0x7c7: 0x162e, 0x7c8: 0x162e, 0x7c9: 0x0a0e, 0x7ca: 0x1462, 0x7cb: 0x0946,
+ 0x7cc: 0x0a0a, 0x7cd: 0x0bf2, 0x7ce: 0x0fd2, 0x7cf: 0x1162, 0x7d0: 0x129a, 0x7d1: 0x12d6,
+ 0x7d2: 0x130a, 0x7d3: 0x141e, 0x7d4: 0x0d76, 0x7d5: 0x0e02, 0x7d6: 0x0eae, 0x7d7: 0x0f46,
+ 0x7d8: 0x1262, 0x7d9: 0x144a, 0x7da: 0x1576, 0x7db: 0x0712, 0x7dc: 0x08b6, 0x7dd: 0x0d8a,
+ 0x7de: 0x0ed2, 0x7df: 0x1296, 0x7e0: 0x15c6, 0x7e1: 0x0ab6, 0x7e2: 0x0e7a, 0x7e3: 0x1286,
+ 0x7e4: 0x131a, 0x7e5: 0x0c26, 0x7e6: 0x11be, 0x7e7: 0x12e2, 0x7e8: 0x0b22, 0x7e9: 0x0d12,
+ 0x7ea: 0x0e1a, 0x7eb: 0x0f1e, 0x7ec: 0x142a, 0x7ed: 0x0752, 0x7ee: 0x07ea, 0x7ef: 0x0856,
+ 0x7f0: 0x0c8e, 0x7f1: 0x0d82, 0x7f2: 0x0ece, 0x7f3: 0x0ff2, 0x7f4: 0x117a, 0x7f5: 0x128e,
+ 0x7f6: 0x12a6, 0x7f7: 0x13ca, 0x7f8: 0x14f2, 0x7f9: 0x15a6, 0x7fa: 0x15c2, 0x7fb: 0x102e,
+ 0x7fc: 0x106e, 0x7fd: 0x1126, 0x7fe: 0x1246, 0x7ff: 0x147e,
+ // Block 0x20, offset 0x800
+ 0x800: 0x15ce, 0x801: 0x134e, 0x802: 0x09ca, 0x803: 0x0b3e, 0x804: 0x10de, 0x805: 0x119e,
+ 0x806: 0x0f02, 0x807: 0x1036, 0x808: 0x139a, 0x809: 0x14ea, 0x80a: 0x09c6, 0x80b: 0x0a92,
+ 0x80c: 0x0d7a, 0x80d: 0x0e2e, 0x80e: 0x0e62, 0x80f: 0x1116, 0x810: 0x113e, 0x811: 0x14aa,
+ 0x812: 0x0852, 0x813: 0x11aa, 0x814: 0x07f6, 0x815: 0x07f2, 0x816: 0x109a, 0x817: 0x112a,
+ 0x818: 0x125e, 0x819: 0x14b2, 0x81a: 0x136a, 0x81b: 0x0c2a, 0x81c: 0x0d76, 0x81d: 0x135a,
+ 0x81e: 0x06fa, 0x81f: 0x0a66, 0x820: 0x0b96, 0x821: 0x0f32, 0x822: 0x0fb2, 0x823: 0x0876,
+ 0x824: 0x103e, 0x825: 0x0762, 0x826: 0x0b7a, 0x827: 0x06da, 0x828: 0x0dee, 0x829: 0x0ca6,
+ 0x82a: 0x1112, 0x82b: 0x08ca, 0x82c: 0x09b6, 0x82d: 0x0ffe, 0x82e: 0x1266, 0x82f: 0x133e,
+ 0x830: 0x0dba, 0x831: 0x13fa, 0x832: 0x0de6, 0x833: 0x0c3a, 0x834: 0x121e, 0x835: 0x0c5a,
+ 0x836: 0x0fae, 0x837: 0x072e, 0x838: 0x07aa, 0x839: 0x07ee, 0x83a: 0x0d56, 0x83b: 0x10fe,
+ 0x83c: 0x11f6, 0x83d: 0x134a, 0x83e: 0x145e, 0x83f: 0x085e,
+ // Block 0x21, offset 0x840
+ 0x840: 0x0912, 0x841: 0x0a1a, 0x842: 0x0b32, 0x843: 0x0cc2, 0x844: 0x0e7e, 0x845: 0x1042,
+ 0x846: 0x149a, 0x847: 0x157e, 0x848: 0x15d2, 0x849: 0x15ea, 0x84a: 0x083a, 0x84b: 0x0cf6,
+ 0x84c: 0x0da6, 0x84d: 0x13ee, 0x84e: 0x0afe, 0x84f: 0x0bda, 0x850: 0x0bf6, 0x851: 0x0c86,
+ 0x852: 0x0e6e, 0x853: 0x0eba, 0x854: 0x0f6a, 0x855: 0x108e, 0x856: 0x1132, 0x857: 0x1196,
+ 0x858: 0x13de, 0x859: 0x126e, 0x85a: 0x1406, 0x85b: 0x1482, 0x85c: 0x0812, 0x85d: 0x083e,
+ 0x85e: 0x0926, 0x85f: 0x0eaa, 0x860: 0x12f6, 0x861: 0x133e, 0x862: 0x0b1e, 0x863: 0x0b8e,
+ 0x864: 0x0c52, 0x865: 0x0db2, 0x866: 0x10da, 0x867: 0x0f26, 0x868: 0x073e, 0x869: 0x0982,
+ 0x86a: 0x0a66, 0x86b: 0x0aca, 0x86c: 0x0b9a, 0x86d: 0x0f42, 0x86e: 0x0f5e, 0x86f: 0x116e,
+ 0x870: 0x118e, 0x871: 0x1466, 0x872: 0x14e6, 0x873: 0x14f6, 0x874: 0x1532, 0x875: 0x0756,
+ 0x876: 0x1082, 0x877: 0x1452, 0x878: 0x14ce, 0x879: 0x0bb2, 0x87a: 0x071a, 0x87b: 0x077a,
+ 0x87c: 0x0a6a, 0x87d: 0x0a8a, 0x87e: 0x0cb2, 0x87f: 0x0d76,
+ // Block 0x22, offset 0x880
+ 0x880: 0x0ec6, 0x881: 0x0fce, 0x882: 0x127a, 0x883: 0x141a, 0x884: 0x1626, 0x885: 0x0ce6,
+ 0x886: 0x14a6, 0x887: 0x0836, 0x888: 0x0d32, 0x889: 0x0d3e, 0x88a: 0x0e12, 0x88b: 0x0e4a,
+ 0x88c: 0x0f4e, 0x88d: 0x0faa, 0x88e: 0x102a, 0x88f: 0x110e, 0x890: 0x153e, 0x891: 0x07b2,
+ 0x892: 0x0c06, 0x893: 0x14b6, 0x894: 0x076a, 0x895: 0x0aae, 0x896: 0x0e32, 0x897: 0x13e2,
+ 0x898: 0x0b6a, 0x899: 0x0bba, 0x89a: 0x0d46, 0x89b: 0x0f32, 0x89c: 0x14be, 0x89d: 0x081a,
+ 0x89e: 0x0902, 0x89f: 0x0a9a, 0x8a0: 0x0cd6, 0x8a1: 0x0d22, 0x8a2: 0x0d62, 0x8a3: 0x0df6,
+ 0x8a4: 0x0f4a, 0x8a5: 0x0fbe, 0x8a6: 0x115a, 0x8a7: 0x12fa, 0x8a8: 0x1306, 0x8a9: 0x145a,
+ 0x8aa: 0x14da, 0x8ab: 0x0886, 0x8ac: 0x0e4e, 0x8ad: 0x0906, 0x8ae: 0x0eca, 0x8af: 0x0f6e,
+ 0x8b0: 0x128a, 0x8b1: 0x14c2, 0x8b2: 0x15ae, 0x8b3: 0x15d6, 0x8b4: 0x0d3a, 0x8b5: 0x0e2a,
+ 0x8b6: 0x11c6, 0x8b7: 0x10ba, 0x8b8: 0x10c6, 0x8b9: 0x10ea, 0x8ba: 0x0f1a, 0x8bb: 0x0ea2,
+ 0x8bc: 0x1366, 0x8bd: 0x0736, 0x8be: 0x122e, 0x8bf: 0x081e,
+ // Block 0x23, offset 0x8c0
+ 0x8c0: 0x080e, 0x8c1: 0x0b0e, 0x8c2: 0x0c2e, 0x8c3: 0x10f6, 0x8c4: 0x0a56, 0x8c5: 0x0e06,
+ 0x8c6: 0x0cf2, 0x8c7: 0x13ea, 0x8c8: 0x12ea, 0x8c9: 0x14ae, 0x8ca: 0x1326, 0x8cb: 0x0b2a,
+ 0x8cc: 0x078a, 0x8cd: 0x095e, 0x8d0: 0x09b2,
+ 0x8d2: 0x0ce2, 0x8d5: 0x07fa, 0x8d6: 0x0f22, 0x8d7: 0x0fe6,
+ 0x8d8: 0x104a, 0x8d9: 0x1066, 0x8da: 0x106a, 0x8db: 0x107e, 0x8dc: 0x14fe, 0x8dd: 0x10ee,
+ 0x8de: 0x1172, 0x8e0: 0x1292, 0x8e2: 0x1356,
+ 0x8e5: 0x140a, 0x8e6: 0x1436,
+ 0x8ea: 0x1552, 0x8eb: 0x1556, 0x8ec: 0x155a, 0x8ed: 0x15be, 0x8ee: 0x142e, 0x8ef: 0x14ca,
+ 0x8f0: 0x075a, 0x8f1: 0x077e, 0x8f2: 0x0792, 0x8f3: 0x084e, 0x8f4: 0x085a, 0x8f5: 0x089a,
+ 0x8f6: 0x094e, 0x8f7: 0x096a, 0x8f8: 0x0972, 0x8f9: 0x09ae, 0x8fa: 0x09ba, 0x8fb: 0x0a96,
+ 0x8fc: 0x0a9e, 0x8fd: 0x0ba6, 0x8fe: 0x0bce, 0x8ff: 0x0bd6,
+ // Block 0x24, offset 0x900
+ 0x900: 0x0bee, 0x901: 0x0c9a, 0x902: 0x0cca, 0x903: 0x0cea, 0x904: 0x0d5a, 0x905: 0x0e1e,
+ 0x906: 0x0e3a, 0x907: 0x0e6a, 0x908: 0x0ebe, 0x909: 0x0ede, 0x90a: 0x0f52, 0x90b: 0x1032,
+ 0x90c: 0x104e, 0x90d: 0x1056, 0x90e: 0x1052, 0x90f: 0x105a, 0x910: 0x105e, 0x911: 0x1062,
+ 0x912: 0x1076, 0x913: 0x107a, 0x914: 0x109e, 0x915: 0x10b2, 0x916: 0x10ce, 0x917: 0x1132,
+ 0x918: 0x113a, 0x919: 0x1142, 0x91a: 0x1156, 0x91b: 0x117e, 0x91c: 0x11ce, 0x91d: 0x1202,
+ 0x91e: 0x1202, 0x91f: 0x126a, 0x920: 0x1312, 0x921: 0x132a, 0x922: 0x135e, 0x923: 0x1362,
+ 0x924: 0x13a6, 0x925: 0x13aa, 0x926: 0x1402, 0x927: 0x140a, 0x928: 0x14de, 0x929: 0x1522,
+ 0x92a: 0x153a, 0x92b: 0x0b9e, 0x92c: 0x1721, 0x92d: 0x11e6,
+ 0x930: 0x06e2, 0x931: 0x07e6, 0x932: 0x07a6, 0x933: 0x074e, 0x934: 0x078e, 0x935: 0x07ba,
+ 0x936: 0x084a, 0x937: 0x0866, 0x938: 0x094e, 0x939: 0x093a, 0x93a: 0x094a, 0x93b: 0x0966,
+ 0x93c: 0x09b2, 0x93d: 0x09c2, 0x93e: 0x0a06, 0x93f: 0x0a12,
+ // Block 0x25, offset 0x940
+ 0x940: 0x0a2e, 0x941: 0x0a3e, 0x942: 0x0b26, 0x943: 0x0b2e, 0x944: 0x0b5e, 0x945: 0x0b7e,
+ 0x946: 0x0bae, 0x947: 0x0bc6, 0x948: 0x0bb6, 0x949: 0x0bd6, 0x94a: 0x0bca, 0x94b: 0x0bee,
+ 0x94c: 0x0c0a, 0x94d: 0x0c62, 0x94e: 0x0c6e, 0x94f: 0x0c76, 0x950: 0x0c9e, 0x951: 0x0ce2,
+ 0x952: 0x0d12, 0x953: 0x0d16, 0x954: 0x0d2a, 0x955: 0x0daa, 0x956: 0x0dba, 0x957: 0x0e12,
+ 0x958: 0x0e5e, 0x959: 0x0e56, 0x95a: 0x0e6a, 0x95b: 0x0e86, 0x95c: 0x0ebe, 0x95d: 0x1016,
+ 0x95e: 0x0ee2, 0x95f: 0x0f16, 0x960: 0x0f22, 0x961: 0x0f62, 0x962: 0x0f7e, 0x963: 0x0fa2,
+ 0x964: 0x0fc6, 0x965: 0x0fca, 0x966: 0x0fe6, 0x967: 0x0fea, 0x968: 0x0ffa, 0x969: 0x100e,
+ 0x96a: 0x100a, 0x96b: 0x103a, 0x96c: 0x10b6, 0x96d: 0x10ce, 0x96e: 0x10e6, 0x96f: 0x111e,
+ 0x970: 0x1132, 0x971: 0x114e, 0x972: 0x117e, 0x973: 0x1232, 0x974: 0x125a, 0x975: 0x12ce,
+ 0x976: 0x1316, 0x977: 0x1322, 0x978: 0x132a, 0x979: 0x1342, 0x97a: 0x1356, 0x97b: 0x1346,
+ 0x97c: 0x135e, 0x97d: 0x135a, 0x97e: 0x1352, 0x97f: 0x1362,
+ // Block 0x26, offset 0x980
+ 0x980: 0x136e, 0x981: 0x13aa, 0x982: 0x13e6, 0x983: 0x1416, 0x984: 0x144e, 0x985: 0x146e,
+ 0x986: 0x14ba, 0x987: 0x14de, 0x988: 0x14fe, 0x989: 0x1512, 0x98a: 0x1522, 0x98b: 0x152e,
+ 0x98c: 0x153a, 0x98d: 0x158e, 0x98e: 0x162e, 0x98f: 0x16b8, 0x990: 0x16b3, 0x991: 0x16e5,
+ 0x992: 0x060a, 0x993: 0x0632, 0x994: 0x0636, 0x995: 0x1767, 0x996: 0x1794, 0x997: 0x180c,
+ 0x998: 0x161a, 0x999: 0x162a,
+ // Block 0x27, offset 0x9c0
+ 0x9c0: 0x06fe, 0x9c1: 0x06f6, 0x9c2: 0x0706, 0x9c3: 0x164a, 0x9c4: 0x074a, 0x9c5: 0x075a,
+ 0x9c6: 0x075e, 0x9c7: 0x0766, 0x9c8: 0x076e, 0x9c9: 0x0772, 0x9ca: 0x077e, 0x9cb: 0x0776,
+ 0x9cc: 0x05b6, 0x9cd: 0x165e, 0x9ce: 0x0792, 0x9cf: 0x0796, 0x9d0: 0x079a, 0x9d1: 0x07b6,
+ 0x9d2: 0x164f, 0x9d3: 0x05ba, 0x9d4: 0x07a2, 0x9d5: 0x07c2, 0x9d6: 0x1659, 0x9d7: 0x07d2,
+ 0x9d8: 0x07da, 0x9d9: 0x073a, 0x9da: 0x07e2, 0x9db: 0x07e6, 0x9dc: 0x1834, 0x9dd: 0x0802,
+ 0x9de: 0x080a, 0x9df: 0x05c2, 0x9e0: 0x0822, 0x9e1: 0x0826, 0x9e2: 0x082e, 0x9e3: 0x0832,
+ 0x9e4: 0x05c6, 0x9e5: 0x084a, 0x9e6: 0x084e, 0x9e7: 0x085a, 0x9e8: 0x0866, 0x9e9: 0x086a,
+ 0x9ea: 0x086e, 0x9eb: 0x0876, 0x9ec: 0x0896, 0x9ed: 0x089a, 0x9ee: 0x08a2, 0x9ef: 0x08b2,
+ 0x9f0: 0x08ba, 0x9f1: 0x08be, 0x9f2: 0x08be, 0x9f3: 0x08be, 0x9f4: 0x166d, 0x9f5: 0x0e96,
+ 0x9f6: 0x08d2, 0x9f7: 0x08da, 0x9f8: 0x1672, 0x9f9: 0x08e6, 0x9fa: 0x08ee, 0x9fb: 0x08f6,
+ 0x9fc: 0x091e, 0x9fd: 0x090a, 0x9fe: 0x0916, 0x9ff: 0x091a,
+ // Block 0x28, offset 0xa00
+ 0xa00: 0x0922, 0xa01: 0x092a, 0xa02: 0x092e, 0xa03: 0x0936, 0xa04: 0x093e, 0xa05: 0x0942,
+ 0xa06: 0x0942, 0xa07: 0x094a, 0xa08: 0x0952, 0xa09: 0x0956, 0xa0a: 0x0962, 0xa0b: 0x0986,
+ 0xa0c: 0x096a, 0xa0d: 0x098a, 0xa0e: 0x096e, 0xa0f: 0x0976, 0xa10: 0x080e, 0xa11: 0x09d2,
+ 0xa12: 0x099a, 0xa13: 0x099e, 0xa14: 0x09a2, 0xa15: 0x0996, 0xa16: 0x09aa, 0xa17: 0x09a6,
+ 0xa18: 0x09be, 0xa19: 0x1677, 0xa1a: 0x09da, 0xa1b: 0x09de, 0xa1c: 0x09e6, 0xa1d: 0x09f2,
+ 0xa1e: 0x09fa, 0xa1f: 0x0a16, 0xa20: 0x167c, 0xa21: 0x1681, 0xa22: 0x0a22, 0xa23: 0x0a26,
+ 0xa24: 0x0a2a, 0xa25: 0x0a1e, 0xa26: 0x0a32, 0xa27: 0x05ca, 0xa28: 0x05ce, 0xa29: 0x0a3a,
+ 0xa2a: 0x0a42, 0xa2b: 0x0a42, 0xa2c: 0x1686, 0xa2d: 0x0a5e, 0xa2e: 0x0a62, 0xa2f: 0x0a66,
+ 0xa30: 0x0a6e, 0xa31: 0x168b, 0xa32: 0x0a76, 0xa33: 0x0a7a, 0xa34: 0x0b52, 0xa35: 0x0a82,
+ 0xa36: 0x05d2, 0xa37: 0x0a8e, 0xa38: 0x0a9e, 0xa39: 0x0aaa, 0xa3a: 0x0aa6, 0xa3b: 0x1695,
+ 0xa3c: 0x0ab2, 0xa3d: 0x169a, 0xa3e: 0x0abe, 0xa3f: 0x0aba,
+ // Block 0x29, offset 0xa40
+ 0xa40: 0x0ac2, 0xa41: 0x0ad2, 0xa42: 0x0ad6, 0xa43: 0x05d6, 0xa44: 0x0ae6, 0xa45: 0x0aee,
+ 0xa46: 0x0af2, 0xa47: 0x0af6, 0xa48: 0x05da, 0xa49: 0x169f, 0xa4a: 0x05de, 0xa4b: 0x0b12,
+ 0xa4c: 0x0b16, 0xa4d: 0x0b1a, 0xa4e: 0x0b22, 0xa4f: 0x1866, 0xa50: 0x0b3a, 0xa51: 0x16a9,
+ 0xa52: 0x16a9, 0xa53: 0x11da, 0xa54: 0x0b4a, 0xa55: 0x0b4a, 0xa56: 0x05e2, 0xa57: 0x16cc,
+ 0xa58: 0x179e, 0xa59: 0x0b5a, 0xa5a: 0x0b62, 0xa5b: 0x05e6, 0xa5c: 0x0b76, 0xa5d: 0x0b86,
+ 0xa5e: 0x0b8a, 0xa5f: 0x0b92, 0xa60: 0x0ba2, 0xa61: 0x05ee, 0xa62: 0x05ea, 0xa63: 0x0ba6,
+ 0xa64: 0x16ae, 0xa65: 0x0baa, 0xa66: 0x0bbe, 0xa67: 0x0bc2, 0xa68: 0x0bc6, 0xa69: 0x0bc2,
+ 0xa6a: 0x0bd2, 0xa6b: 0x0bd6, 0xa6c: 0x0be6, 0xa6d: 0x0bde, 0xa6e: 0x0be2, 0xa6f: 0x0bea,
+ 0xa70: 0x0bee, 0xa71: 0x0bf2, 0xa72: 0x0bfe, 0xa73: 0x0c02, 0xa74: 0x0c1a, 0xa75: 0x0c22,
+ 0xa76: 0x0c32, 0xa77: 0x0c46, 0xa78: 0x16bd, 0xa79: 0x0c42, 0xa7a: 0x0c36, 0xa7b: 0x0c4e,
+ 0xa7c: 0x0c56, 0xa7d: 0x0c6a, 0xa7e: 0x16c2, 0xa7f: 0x0c72,
+ // Block 0x2a, offset 0xa80
+ 0xa80: 0x0c66, 0xa81: 0x0c5e, 0xa82: 0x05f2, 0xa83: 0x0c7a, 0xa84: 0x0c82, 0xa85: 0x0c8a,
+ 0xa86: 0x0c7e, 0xa87: 0x05f6, 0xa88: 0x0c9a, 0xa89: 0x0ca2, 0xa8a: 0x16c7, 0xa8b: 0x0cce,
+ 0xa8c: 0x0d02, 0xa8d: 0x0cde, 0xa8e: 0x0602, 0xa8f: 0x0cea, 0xa90: 0x05fe, 0xa91: 0x05fa,
+ 0xa92: 0x07c6, 0xa93: 0x07ca, 0xa94: 0x0d06, 0xa95: 0x0cee, 0xa96: 0x11ae, 0xa97: 0x0666,
+ 0xa98: 0x0d12, 0xa99: 0x0d16, 0xa9a: 0x0d1a, 0xa9b: 0x0d2e, 0xa9c: 0x0d26, 0xa9d: 0x16e0,
+ 0xa9e: 0x0606, 0xa9f: 0x0d42, 0xaa0: 0x0d36, 0xaa1: 0x0d52, 0xaa2: 0x0d5a, 0xaa3: 0x16ea,
+ 0xaa4: 0x0d5e, 0xaa5: 0x0d4a, 0xaa6: 0x0d66, 0xaa7: 0x060a, 0xaa8: 0x0d6a, 0xaa9: 0x0d6e,
+ 0xaaa: 0x0d72, 0xaab: 0x0d7e, 0xaac: 0x16ef, 0xaad: 0x0d86, 0xaae: 0x060e, 0xaaf: 0x0d92,
+ 0xab0: 0x16f4, 0xab1: 0x0d96, 0xab2: 0x0612, 0xab3: 0x0da2, 0xab4: 0x0dae, 0xab5: 0x0dba,
+ 0xab6: 0x0dbe, 0xab7: 0x16f9, 0xab8: 0x1690, 0xab9: 0x16fe, 0xaba: 0x0dde, 0xabb: 0x1703,
+ 0xabc: 0x0dea, 0xabd: 0x0df2, 0xabe: 0x0de2, 0xabf: 0x0dfe,
+ // Block 0x2b, offset 0xac0
+ 0xac0: 0x0e0e, 0xac1: 0x0e1e, 0xac2: 0x0e12, 0xac3: 0x0e16, 0xac4: 0x0e22, 0xac5: 0x0e26,
+ 0xac6: 0x1708, 0xac7: 0x0e0a, 0xac8: 0x0e3e, 0xac9: 0x0e42, 0xaca: 0x0616, 0xacb: 0x0e56,
+ 0xacc: 0x0e52, 0xacd: 0x170d, 0xace: 0x0e36, 0xacf: 0x0e72, 0xad0: 0x1712, 0xad1: 0x1717,
+ 0xad2: 0x0e76, 0xad3: 0x0e8a, 0xad4: 0x0e86, 0xad5: 0x0e82, 0xad6: 0x061a, 0xad7: 0x0e8e,
+ 0xad8: 0x0e9e, 0xad9: 0x0e9a, 0xada: 0x0ea6, 0xadb: 0x1654, 0xadc: 0x0eb6, 0xadd: 0x171c,
+ 0xade: 0x0ec2, 0xadf: 0x1726, 0xae0: 0x0ed6, 0xae1: 0x0ee2, 0xae2: 0x0ef6, 0xae3: 0x172b,
+ 0xae4: 0x0f0a, 0xae5: 0x0f0e, 0xae6: 0x1730, 0xae7: 0x1735, 0xae8: 0x0f2a, 0xae9: 0x0f3a,
+ 0xaea: 0x061e, 0xaeb: 0x0f3e, 0xaec: 0x0622, 0xaed: 0x0622, 0xaee: 0x0f56, 0xaef: 0x0f5a,
+ 0xaf0: 0x0f62, 0xaf1: 0x0f66, 0xaf2: 0x0f72, 0xaf3: 0x0626, 0xaf4: 0x0f8a, 0xaf5: 0x173a,
+ 0xaf6: 0x0fa6, 0xaf7: 0x173f, 0xaf8: 0x0fb2, 0xaf9: 0x16a4, 0xafa: 0x0fc2, 0xafb: 0x1744,
+ 0xafc: 0x1749, 0xafd: 0x174e, 0xafe: 0x062a, 0xaff: 0x062e,
+ // Block 0x2c, offset 0xb00
+ 0xb00: 0x0ffa, 0xb01: 0x1758, 0xb02: 0x1753, 0xb03: 0x175d, 0xb04: 0x1762, 0xb05: 0x1002,
+ 0xb06: 0x1006, 0xb07: 0x1006, 0xb08: 0x100e, 0xb09: 0x0636, 0xb0a: 0x1012, 0xb0b: 0x063a,
+ 0xb0c: 0x063e, 0xb0d: 0x176c, 0xb0e: 0x1026, 0xb0f: 0x102e, 0xb10: 0x103a, 0xb11: 0x0642,
+ 0xb12: 0x1771, 0xb13: 0x105e, 0xb14: 0x1776, 0xb15: 0x177b, 0xb16: 0x107e, 0xb17: 0x1096,
+ 0xb18: 0x0646, 0xb19: 0x109e, 0xb1a: 0x10a2, 0xb1b: 0x10a6, 0xb1c: 0x1780, 0xb1d: 0x1785,
+ 0xb1e: 0x1785, 0xb1f: 0x10be, 0xb20: 0x064a, 0xb21: 0x178a, 0xb22: 0x10d2, 0xb23: 0x10d6,
+ 0xb24: 0x064e, 0xb25: 0x178f, 0xb26: 0x10f2, 0xb27: 0x0652, 0xb28: 0x1102, 0xb29: 0x10fa,
+ 0xb2a: 0x110a, 0xb2b: 0x1799, 0xb2c: 0x1122, 0xb2d: 0x0656, 0xb2e: 0x112e, 0xb2f: 0x1136,
+ 0xb30: 0x1146, 0xb31: 0x065a, 0xb32: 0x17a3, 0xb33: 0x17a8, 0xb34: 0x065e, 0xb35: 0x17ad,
+ 0xb36: 0x115e, 0xb37: 0x17b2, 0xb38: 0x116a, 0xb39: 0x1176, 0xb3a: 0x117e, 0xb3b: 0x17b7,
+ 0xb3c: 0x17bc, 0xb3d: 0x1192, 0xb3e: 0x17c1, 0xb3f: 0x119a,
+ // Block 0x2d, offset 0xb40
+ 0xb40: 0x16d1, 0xb41: 0x0662, 0xb42: 0x11b2, 0xb43: 0x11b6, 0xb44: 0x066a, 0xb45: 0x11ba,
+ 0xb46: 0x0a36, 0xb47: 0x17c6, 0xb48: 0x17cb, 0xb49: 0x16d6, 0xb4a: 0x16db, 0xb4b: 0x11da,
+ 0xb4c: 0x11de, 0xb4d: 0x13f6, 0xb4e: 0x066e, 0xb4f: 0x120a, 0xb50: 0x1206, 0xb51: 0x120e,
+ 0xb52: 0x0842, 0xb53: 0x1212, 0xb54: 0x1216, 0xb55: 0x121a, 0xb56: 0x1222, 0xb57: 0x17d0,
+ 0xb58: 0x121e, 0xb59: 0x1226, 0xb5a: 0x123a, 0xb5b: 0x123e, 0xb5c: 0x122a, 0xb5d: 0x1242,
+ 0xb5e: 0x1256, 0xb5f: 0x126a, 0xb60: 0x1236, 0xb61: 0x124a, 0xb62: 0x124e, 0xb63: 0x1252,
+ 0xb64: 0x17d5, 0xb65: 0x17df, 0xb66: 0x17da, 0xb67: 0x0672, 0xb68: 0x1272, 0xb69: 0x1276,
+ 0xb6a: 0x127e, 0xb6b: 0x17f3, 0xb6c: 0x1282, 0xb6d: 0x17e4, 0xb6e: 0x0676, 0xb6f: 0x067a,
+ 0xb70: 0x17e9, 0xb71: 0x17ee, 0xb72: 0x067e, 0xb73: 0x12a2, 0xb74: 0x12a6, 0xb75: 0x12aa,
+ 0xb76: 0x12ae, 0xb77: 0x12ba, 0xb78: 0x12b6, 0xb79: 0x12c2, 0xb7a: 0x12be, 0xb7b: 0x12ce,
+ 0xb7c: 0x12c6, 0xb7d: 0x12ca, 0xb7e: 0x12d2, 0xb7f: 0x0682,
+ // Block 0x2e, offset 0xb80
+ 0xb80: 0x12da, 0xb81: 0x12de, 0xb82: 0x0686, 0xb83: 0x12ee, 0xb84: 0x12f2, 0xb85: 0x17f8,
+ 0xb86: 0x12fe, 0xb87: 0x1302, 0xb88: 0x068a, 0xb89: 0x130e, 0xb8a: 0x05be, 0xb8b: 0x17fd,
+ 0xb8c: 0x1802, 0xb8d: 0x068e, 0xb8e: 0x0692, 0xb8f: 0x133a, 0xb90: 0x1352, 0xb91: 0x136e,
+ 0xb92: 0x137e, 0xb93: 0x1807, 0xb94: 0x1392, 0xb95: 0x1396, 0xb96: 0x13ae, 0xb97: 0x13ba,
+ 0xb98: 0x1811, 0xb99: 0x1663, 0xb9a: 0x13c6, 0xb9b: 0x13c2, 0xb9c: 0x13ce, 0xb9d: 0x1668,
+ 0xb9e: 0x13da, 0xb9f: 0x13e6, 0xba0: 0x1816, 0xba1: 0x181b, 0xba2: 0x1426, 0xba3: 0x1432,
+ 0xba4: 0x143a, 0xba5: 0x1820, 0xba6: 0x143e, 0xba7: 0x146a, 0xba8: 0x1476, 0xba9: 0x147a,
+ 0xbaa: 0x1472, 0xbab: 0x1486, 0xbac: 0x148a, 0xbad: 0x1825, 0xbae: 0x1496, 0xbaf: 0x0696,
+ 0xbb0: 0x149e, 0xbb1: 0x182a, 0xbb2: 0x069a, 0xbb3: 0x14d6, 0xbb4: 0x0ac6, 0xbb5: 0x14ee,
+ 0xbb6: 0x182f, 0xbb7: 0x1839, 0xbb8: 0x069e, 0xbb9: 0x06a2, 0xbba: 0x1516, 0xbbb: 0x183e,
+ 0xbbc: 0x06a6, 0xbbd: 0x1843, 0xbbe: 0x152e, 0xbbf: 0x152e,
+ // Block 0x2f, offset 0xbc0
+ 0xbc0: 0x1536, 0xbc1: 0x1848, 0xbc2: 0x154e, 0xbc3: 0x06aa, 0xbc4: 0x155e, 0xbc5: 0x156a,
+ 0xbc6: 0x1572, 0xbc7: 0x157a, 0xbc8: 0x06ae, 0xbc9: 0x184d, 0xbca: 0x158e, 0xbcb: 0x15aa,
+ 0xbcc: 0x15b6, 0xbcd: 0x06b2, 0xbce: 0x06b6, 0xbcf: 0x15ba, 0xbd0: 0x1852, 0xbd1: 0x06ba,
+ 0xbd2: 0x1857, 0xbd3: 0x185c, 0xbd4: 0x1861, 0xbd5: 0x15de, 0xbd6: 0x06be, 0xbd7: 0x15f2,
+ 0xbd8: 0x15fa, 0xbd9: 0x15fe, 0xbda: 0x1606, 0xbdb: 0x160e, 0xbdc: 0x1616, 0xbdd: 0x186b,
+}
+
+// nfcIndex: 22 blocks, 1408 entries, 1408 bytes
+// Block 0 is the zero block.
+var nfcIndex = [1408]uint8{
+ // Block 0x0, offset 0x0
+ // Block 0x1, offset 0x40
+ // Block 0x2, offset 0x80
+ // Block 0x3, offset 0xc0
+ 0xc2: 0x2e, 0xc3: 0x01, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x2f, 0xc7: 0x04,
+ 0xc8: 0x05, 0xca: 0x30, 0xcb: 0x31, 0xcc: 0x06, 0xcd: 0x07, 0xce: 0x08, 0xcf: 0x32,
+ 0xd0: 0x09, 0xd1: 0x33, 0xd2: 0x34, 0xd3: 0x0a, 0xd6: 0x0b, 0xd7: 0x35,
+ 0xd8: 0x36, 0xd9: 0x0c, 0xdb: 0x37, 0xdc: 0x38, 0xdd: 0x39, 0xdf: 0x3a,
+ 0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05,
+ 0xea: 0x06, 0xeb: 0x07, 0xec: 0x08, 0xed: 0x09, 0xef: 0x0a,
+ 0xf0: 0x13,
+ // Block 0x4, offset 0x100
+ 0x120: 0x3b, 0x121: 0x3c, 0x123: 0x0d, 0x124: 0x3d, 0x125: 0x3e, 0x126: 0x3f, 0x127: 0x40,
+ 0x128: 0x41, 0x129: 0x42, 0x12a: 0x43, 0x12b: 0x44, 0x12c: 0x3f, 0x12d: 0x45, 0x12e: 0x46, 0x12f: 0x47,
+ 0x131: 0x48, 0x132: 0x49, 0x133: 0x4a, 0x134: 0x4b, 0x135: 0x4c, 0x137: 0x4d,
+ 0x138: 0x4e, 0x139: 0x4f, 0x13a: 0x50, 0x13b: 0x51, 0x13c: 0x52, 0x13d: 0x53, 0x13e: 0x54, 0x13f: 0x55,
+ // Block 0x5, offset 0x140
+ 0x140: 0x56, 0x142: 0x57, 0x144: 0x58, 0x145: 0x59, 0x146: 0x5a, 0x147: 0x5b,
+ 0x14d: 0x5c,
+ 0x15c: 0x5d, 0x15f: 0x5e,
+ 0x162: 0x5f, 0x164: 0x60,
+ 0x168: 0x61, 0x169: 0x62, 0x16a: 0x63, 0x16b: 0x64, 0x16c: 0x0e, 0x16d: 0x65, 0x16e: 0x66, 0x16f: 0x67,
+ 0x170: 0x68, 0x173: 0x69, 0x177: 0x0f,
+ 0x178: 0x10, 0x179: 0x11, 0x17a: 0x12, 0x17b: 0x13, 0x17c: 0x14, 0x17d: 0x15, 0x17e: 0x16, 0x17f: 0x17,
+ // Block 0x6, offset 0x180
+ 0x180: 0x6a, 0x183: 0x6b, 0x184: 0x6c, 0x186: 0x6d, 0x187: 0x6e,
+ 0x188: 0x6f, 0x189: 0x18, 0x18a: 0x19, 0x18b: 0x70, 0x18c: 0x71,
+ 0x1ab: 0x72,
+ 0x1b3: 0x73, 0x1b5: 0x74, 0x1b7: 0x75,
+ // Block 0x7, offset 0x1c0
+ 0x1c0: 0x76, 0x1c1: 0x1a, 0x1c2: 0x1b, 0x1c3: 0x1c, 0x1c4: 0x77, 0x1c5: 0x78,
+ 0x1c9: 0x79, 0x1cc: 0x7a, 0x1cd: 0x7b,
+ // Block 0x8, offset 0x200
+ 0x219: 0x7c, 0x21a: 0x7d, 0x21b: 0x7e,
+ 0x220: 0x7f, 0x223: 0x80, 0x224: 0x81, 0x225: 0x82, 0x226: 0x83, 0x227: 0x84,
+ 0x22a: 0x85, 0x22b: 0x86, 0x22f: 0x87,
+ 0x230: 0x88, 0x231: 0x89, 0x232: 0x8a, 0x233: 0x8b, 0x234: 0x8c, 0x235: 0x8d, 0x236: 0x8e, 0x237: 0x88,
+ 0x238: 0x89, 0x239: 0x8a, 0x23a: 0x8b, 0x23b: 0x8c, 0x23c: 0x8d, 0x23d: 0x8e, 0x23e: 0x88, 0x23f: 0x89,
+ // Block 0x9, offset 0x240
+ 0x240: 0x8a, 0x241: 0x8b, 0x242: 0x8c, 0x243: 0x8d, 0x244: 0x8e, 0x245: 0x88, 0x246: 0x89, 0x247: 0x8a,
+ 0x248: 0x8b, 0x249: 0x8c, 0x24a: 0x8d, 0x24b: 0x8e, 0x24c: 0x88, 0x24d: 0x89, 0x24e: 0x8a, 0x24f: 0x8b,
+ 0x250: 0x8c, 0x251: 0x8d, 0x252: 0x8e, 0x253: 0x88, 0x254: 0x89, 0x255: 0x8a, 0x256: 0x8b, 0x257: 0x8c,
+ 0x258: 0x8d, 0x259: 0x8e, 0x25a: 0x88, 0x25b: 0x89, 0x25c: 0x8a, 0x25d: 0x8b, 0x25e: 0x8c, 0x25f: 0x8d,
+ 0x260: 0x8e, 0x261: 0x88, 0x262: 0x89, 0x263: 0x8a, 0x264: 0x8b, 0x265: 0x8c, 0x266: 0x8d, 0x267: 0x8e,
+ 0x268: 0x88, 0x269: 0x89, 0x26a: 0x8a, 0x26b: 0x8b, 0x26c: 0x8c, 0x26d: 0x8d, 0x26e: 0x8e, 0x26f: 0x88,
+ 0x270: 0x89, 0x271: 0x8a, 0x272: 0x8b, 0x273: 0x8c, 0x274: 0x8d, 0x275: 0x8e, 0x276: 0x88, 0x277: 0x89,
+ 0x278: 0x8a, 0x279: 0x8b, 0x27a: 0x8c, 0x27b: 0x8d, 0x27c: 0x8e, 0x27d: 0x88, 0x27e: 0x89, 0x27f: 0x8a,
+ // Block 0xa, offset 0x280
+ 0x280: 0x8b, 0x281: 0x8c, 0x282: 0x8d, 0x283: 0x8e, 0x284: 0x88, 0x285: 0x89, 0x286: 0x8a, 0x287: 0x8b,
+ 0x288: 0x8c, 0x289: 0x8d, 0x28a: 0x8e, 0x28b: 0x88, 0x28c: 0x89, 0x28d: 0x8a, 0x28e: 0x8b, 0x28f: 0x8c,
+ 0x290: 0x8d, 0x291: 0x8e, 0x292: 0x88, 0x293: 0x89, 0x294: 0x8a, 0x295: 0x8b, 0x296: 0x8c, 0x297: 0x8d,
+ 0x298: 0x8e, 0x299: 0x88, 0x29a: 0x89, 0x29b: 0x8a, 0x29c: 0x8b, 0x29d: 0x8c, 0x29e: 0x8d, 0x29f: 0x8e,
+ 0x2a0: 0x88, 0x2a1: 0x89, 0x2a2: 0x8a, 0x2a3: 0x8b, 0x2a4: 0x8c, 0x2a5: 0x8d, 0x2a6: 0x8e, 0x2a7: 0x88,
+ 0x2a8: 0x89, 0x2a9: 0x8a, 0x2aa: 0x8b, 0x2ab: 0x8c, 0x2ac: 0x8d, 0x2ad: 0x8e, 0x2ae: 0x88, 0x2af: 0x89,
+ 0x2b0: 0x8a, 0x2b1: 0x8b, 0x2b2: 0x8c, 0x2b3: 0x8d, 0x2b4: 0x8e, 0x2b5: 0x88, 0x2b6: 0x89, 0x2b7: 0x8a,
+ 0x2b8: 0x8b, 0x2b9: 0x8c, 0x2ba: 0x8d, 0x2bb: 0x8e, 0x2bc: 0x88, 0x2bd: 0x89, 0x2be: 0x8a, 0x2bf: 0x8b,
+ // Block 0xb, offset 0x2c0
+ 0x2c0: 0x8c, 0x2c1: 0x8d, 0x2c2: 0x8e, 0x2c3: 0x88, 0x2c4: 0x89, 0x2c5: 0x8a, 0x2c6: 0x8b, 0x2c7: 0x8c,
+ 0x2c8: 0x8d, 0x2c9: 0x8e, 0x2ca: 0x88, 0x2cb: 0x89, 0x2cc: 0x8a, 0x2cd: 0x8b, 0x2ce: 0x8c, 0x2cf: 0x8d,
+ 0x2d0: 0x8e, 0x2d1: 0x88, 0x2d2: 0x89, 0x2d3: 0x8a, 0x2d4: 0x8b, 0x2d5: 0x8c, 0x2d6: 0x8d, 0x2d7: 0x8e,
+ 0x2d8: 0x88, 0x2d9: 0x89, 0x2da: 0x8a, 0x2db: 0x8b, 0x2dc: 0x8c, 0x2dd: 0x8d, 0x2de: 0x8f,
+ // Block 0xc, offset 0x300
+ 0x324: 0x1d, 0x325: 0x1e, 0x326: 0x1f, 0x327: 0x20,
+ 0x328: 0x21, 0x329: 0x22, 0x32a: 0x23, 0x32b: 0x24, 0x32c: 0x90, 0x32d: 0x91, 0x32e: 0x92,
+ 0x331: 0x93, 0x332: 0x94, 0x333: 0x95, 0x334: 0x96,
+ 0x338: 0x97, 0x339: 0x98, 0x33a: 0x99, 0x33b: 0x9a, 0x33e: 0x9b, 0x33f: 0x9c,
+ // Block 0xd, offset 0x340
+ 0x347: 0x9d,
+ 0x34b: 0x9e, 0x34d: 0x9f,
+ 0x368: 0xa0, 0x36b: 0xa1,
+ 0x374: 0xa2,
+ 0x37a: 0xa3, 0x37d: 0xa4,
+ // Block 0xe, offset 0x380
+ 0x381: 0xa5, 0x382: 0xa6, 0x384: 0xa7, 0x385: 0x83, 0x387: 0xa8,
+ 0x388: 0xa9, 0x38b: 0xaa, 0x38c: 0xab, 0x38d: 0xac,
+ 0x391: 0xad, 0x392: 0xae, 0x393: 0xaf, 0x396: 0xb0, 0x397: 0xb1,
+ 0x398: 0x74, 0x39a: 0xb2, 0x39c: 0xb3,
+ 0x3a0: 0xb4, 0x3a4: 0xb5, 0x3a5: 0xb6, 0x3a7: 0xb7,
+ 0x3a8: 0xb8, 0x3a9: 0xb9, 0x3aa: 0xba,
+ 0x3b0: 0x74, 0x3b5: 0xbb, 0x3b6: 0xbc,
+ // Block 0xf, offset 0x3c0
+ 0x3eb: 0xbd, 0x3ec: 0xbe,
+ 0x3ff: 0xbf,
+ // Block 0x10, offset 0x400
+ 0x432: 0xc0,
+ // Block 0x11, offset 0x440
+ 0x445: 0xc1, 0x446: 0xc2, 0x447: 0xc3,
+ 0x449: 0xc4,
+ // Block 0x12, offset 0x480
+ 0x480: 0xc5, 0x484: 0xbe,
+ 0x48b: 0xc6,
+ 0x4a3: 0xc7, 0x4a5: 0xc8,
+ // Block 0x13, offset 0x4c0
+ 0x4c8: 0xc9,
+ // Block 0x14, offset 0x500
+ 0x520: 0x25, 0x521: 0x26, 0x522: 0x27, 0x523: 0x28, 0x524: 0x29, 0x525: 0x2a, 0x526: 0x2b, 0x527: 0x2c,
+ 0x528: 0x2d,
+ // Block 0x15, offset 0x540
+ 0x550: 0x0b, 0x551: 0x0c, 0x556: 0x0d,
+ 0x55b: 0x0e, 0x55d: 0x0f, 0x55e: 0x10, 0x55f: 0x11,
+ 0x56f: 0x12,
+}
+
+// nfcSparseOffset: 156 entries, 312 bytes
+var nfcSparseOffset = []uint16{0x0, 0x5, 0x9, 0xb, 0xd, 0x18, 0x28, 0x2a, 0x2f, 0x3a, 0x49, 0x56, 0x5e, 0x63, 0x68, 0x6a, 0x72, 0x79, 0x7c, 0x84, 0x88, 0x8c, 0x8e, 0x90, 0x99, 0x9d, 0xa4, 0xa9, 0xac, 0xb6, 0xb9, 0xc0, 0xc8, 0xcb, 0xcd, 0xd0, 0xd2, 0xd7, 0xe8, 0xf4, 0xf6, 0xfc, 0xfe, 0x100, 0x102, 0x104, 0x106, 0x108, 0x10b, 0x10e, 0x110, 0x113, 0x116, 0x11a, 0x120, 0x122, 0x12b, 0x12d, 0x130, 0x132, 0x13d, 0x141, 0x14f, 0x152, 0x158, 0x15e, 0x169, 0x16d, 0x16f, 0x171, 0x173, 0x175, 0x177, 0x17d, 0x181, 0x183, 0x185, 0x18d, 0x191, 0x194, 0x196, 0x198, 0x19b, 0x19e, 0x1a0, 0x1a2, 0x1a4, 0x1a6, 0x1ac, 0x1af, 0x1b1, 0x1b8, 0x1be, 0x1c4, 0x1cc, 0x1d2, 0x1d8, 0x1de, 0x1e2, 0x1f0, 0x1f9, 0x1fc, 0x1ff, 0x201, 0x204, 0x206, 0x20a, 0x20f, 0x211, 0x213, 0x218, 0x21e, 0x220, 0x222, 0x224, 0x22a, 0x22d, 0x22f, 0x231, 0x237, 0x23a, 0x242, 0x249, 0x24c, 0x24f, 0x251, 0x254, 0x25c, 0x260, 0x267, 0x26a, 0x270, 0x272, 0x275, 0x277, 0x27a, 0x27f, 0x281, 0x283, 0x285, 0x287, 0x289, 0x28c, 0x28e, 0x290, 0x292, 0x294, 0x296, 0x2a3, 0x2ad, 0x2af, 0x2b1, 0x2b7, 0x2b9, 0x2bb, 0x2be}
+
+// nfcSparseValues: 704 entries, 2816 bytes
+var nfcSparseValues = [704]valueRange{
+ // Block 0x0, offset 0x0
+ {value: 0x0000, lo: 0x04},
+ {value: 0xa100, lo: 0xa8, hi: 0xa8},
+ {value: 0x8100, lo: 0xaf, hi: 0xaf},
+ {value: 0x8100, lo: 0xb4, hi: 0xb4},
+ {value: 0x8100, lo: 0xb8, hi: 0xb8},
+ // Block 0x1, offset 0x5
+ {value: 0x0091, lo: 0x03},
+ {value: 0x46f9, lo: 0xa0, hi: 0xa1},
+ {value: 0x472b, lo: 0xaf, hi: 0xb0},
+ {value: 0xa000, lo: 0xb7, hi: 0xb7},
+ // Block 0x2, offset 0x9
+ {value: 0x0000, lo: 0x01},
+ {value: 0xa000, lo: 0x92, hi: 0x92},
+ // Block 0x3, offset 0xb
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8100, lo: 0x98, hi: 0x9d},
+ // Block 0x4, offset 0xd
+ {value: 0x0006, lo: 0x0a},
+ {value: 0xa000, lo: 0x81, hi: 0x81},
+ {value: 0xa000, lo: 0x85, hi: 0x85},
+ {value: 0xa000, lo: 0x89, hi: 0x89},
+ {value: 0x4857, lo: 0x8a, hi: 0x8a},
+ {value: 0x4875, lo: 0x8b, hi: 0x8b},
+ {value: 0x36de, lo: 0x8c, hi: 0x8c},
+ {value: 0x36f6, lo: 0x8d, hi: 0x8d},
+ {value: 0x488d, lo: 0x8e, hi: 0x8e},
+ {value: 0xa000, lo: 0x92, hi: 0x92},
+ {value: 0x3714, lo: 0x93, hi: 0x94},
+ // Block 0x5, offset 0x18
+ {value: 0x0000, lo: 0x0f},
+ {value: 0xa000, lo: 0x83, hi: 0x83},
+ {value: 0xa000, lo: 0x87, hi: 0x87},
+ {value: 0xa000, lo: 0x8b, hi: 0x8b},
+ {value: 0xa000, lo: 0x8d, hi: 0x8d},
+ {value: 0x37bc, lo: 0x90, hi: 0x90},
+ {value: 0x37c8, lo: 0x91, hi: 0x91},
+ {value: 0x37b6, lo: 0x93, hi: 0x93},
+ {value: 0xa000, lo: 0x96, hi: 0x96},
+ {value: 0x382e, lo: 0x97, hi: 0x97},
+ {value: 0x37f8, lo: 0x9c, hi: 0x9c},
+ {value: 0x37e0, lo: 0x9d, hi: 0x9d},
+ {value: 0x380a, lo: 0x9e, hi: 0x9e},
+ {value: 0xa000, lo: 0xb4, hi: 0xb5},
+ {value: 0x3834, lo: 0xb6, hi: 0xb6},
+ {value: 0x383a, lo: 0xb7, hi: 0xb7},
+ // Block 0x6, offset 0x28
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0x83, hi: 0x87},
+ // Block 0x7, offset 0x2a
+ {value: 0x0001, lo: 0x04},
+ {value: 0x8114, lo: 0x81, hi: 0x82},
+ {value: 0x8133, lo: 0x84, hi: 0x84},
+ {value: 0x812e, lo: 0x85, hi: 0x85},
+ {value: 0x810e, lo: 0x87, hi: 0x87},
+ // Block 0x8, offset 0x2f
+ {value: 0x0000, lo: 0x0a},
+ {value: 0x8133, lo: 0x90, hi: 0x97},
+ {value: 0x811a, lo: 0x98, hi: 0x98},
+ {value: 0x811b, lo: 0x99, hi: 0x99},
+ {value: 0x811c, lo: 0x9a, hi: 0x9a},
+ {value: 0x3858, lo: 0xa2, hi: 0xa2},
+ {value: 0x385e, lo: 0xa3, hi: 0xa3},
+ {value: 0x386a, lo: 0xa4, hi: 0xa4},
+ {value: 0x3864, lo: 0xa5, hi: 0xa5},
+ {value: 0x3870, lo: 0xa6, hi: 0xa6},
+ {value: 0xa000, lo: 0xa7, hi: 0xa7},
+ // Block 0x9, offset 0x3a
+ {value: 0x0000, lo: 0x0e},
+ {value: 0x3882, lo: 0x80, hi: 0x80},
+ {value: 0xa000, lo: 0x81, hi: 0x81},
+ {value: 0x3876, lo: 0x82, hi: 0x82},
+ {value: 0xa000, lo: 0x92, hi: 0x92},
+ {value: 0x387c, lo: 0x93, hi: 0x93},
+ {value: 0xa000, lo: 0x95, hi: 0x95},
+ {value: 0x8133, lo: 0x96, hi: 0x9c},
+ {value: 0x8133, lo: 0x9f, hi: 0xa2},
+ {value: 0x812e, lo: 0xa3, hi: 0xa3},
+ {value: 0x8133, lo: 0xa4, hi: 0xa4},
+ {value: 0x8133, lo: 0xa7, hi: 0xa8},
+ {value: 0x812e, lo: 0xaa, hi: 0xaa},
+ {value: 0x8133, lo: 0xab, hi: 0xac},
+ {value: 0x812e, lo: 0xad, hi: 0xad},
+ // Block 0xa, offset 0x49
+ {value: 0x0000, lo: 0x0c},
+ {value: 0x8120, lo: 0x91, hi: 0x91},
+ {value: 0x8133, lo: 0xb0, hi: 0xb0},
+ {value: 0x812e, lo: 0xb1, hi: 0xb1},
+ {value: 0x8133, lo: 0xb2, hi: 0xb3},
+ {value: 0x812e, lo: 0xb4, hi: 0xb4},
+ {value: 0x8133, lo: 0xb5, hi: 0xb6},
+ {value: 0x812e, lo: 0xb7, hi: 0xb9},
+ {value: 0x8133, lo: 0xba, hi: 0xba},
+ {value: 0x812e, lo: 0xbb, hi: 0xbc},
+ {value: 0x8133, lo: 0xbd, hi: 0xbd},
+ {value: 0x812e, lo: 0xbe, hi: 0xbe},
+ {value: 0x8133, lo: 0xbf, hi: 0xbf},
+ // Block 0xb, offset 0x56
+ {value: 0x0005, lo: 0x07},
+ {value: 0x8133, lo: 0x80, hi: 0x80},
+ {value: 0x8133, lo: 0x81, hi: 0x81},
+ {value: 0x812e, lo: 0x82, hi: 0x83},
+ {value: 0x812e, lo: 0x84, hi: 0x85},
+ {value: 0x812e, lo: 0x86, hi: 0x87},
+ {value: 0x812e, lo: 0x88, hi: 0x89},
+ {value: 0x8133, lo: 0x8a, hi: 0x8a},
+ // Block 0xc, offset 0x5e
+ {value: 0x0000, lo: 0x04},
+ {value: 0x8133, lo: 0xab, hi: 0xb1},
+ {value: 0x812e, lo: 0xb2, hi: 0xb2},
+ {value: 0x8133, lo: 0xb3, hi: 0xb3},
+ {value: 0x812e, lo: 0xbd, hi: 0xbd},
+ // Block 0xd, offset 0x63
+ {value: 0x0000, lo: 0x04},
+ {value: 0x8133, lo: 0x96, hi: 0x99},
+ {value: 0x8133, lo: 0x9b, hi: 0xa3},
+ {value: 0x8133, lo: 0xa5, hi: 0xa7},
+ {value: 0x8133, lo: 0xa9, hi: 0xad},
+ // Block 0xe, offset 0x68
+ {value: 0x0000, lo: 0x01},
+ {value: 0x812e, lo: 0x99, hi: 0x9b},
+ // Block 0xf, offset 0x6a
+ {value: 0x0000, lo: 0x07},
+ {value: 0xa000, lo: 0xa8, hi: 0xa8},
+ {value: 0x3eef, lo: 0xa9, hi: 0xa9},
+ {value: 0xa000, lo: 0xb0, hi: 0xb0},
+ {value: 0x3ef7, lo: 0xb1, hi: 0xb1},
+ {value: 0xa000, lo: 0xb3, hi: 0xb3},
+ {value: 0x3eff, lo: 0xb4, hi: 0xb4},
+ {value: 0x9903, lo: 0xbc, hi: 0xbc},
+ // Block 0x10, offset 0x72
+ {value: 0x0008, lo: 0x06},
+ {value: 0x8105, lo: 0x8d, hi: 0x8d},
+ {value: 0x8133, lo: 0x91, hi: 0x91},
+ {value: 0x812e, lo: 0x92, hi: 0x92},
+ {value: 0x8133, lo: 0x93, hi: 0x93},
+ {value: 0x8133, lo: 0x94, hi: 0x94},
+ {value: 0x4533, lo: 0x98, hi: 0x9f},
+ // Block 0x11, offset 0x79
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8103, lo: 0xbc, hi: 0xbc},
+ {value: 0x9900, lo: 0xbe, hi: 0xbe},
+ // Block 0x12, offset 0x7c
+ {value: 0x0008, lo: 0x07},
+ {value: 0xa000, lo: 0x87, hi: 0x87},
+ {value: 0x2cab, lo: 0x8b, hi: 0x8c},
+ {value: 0x8105, lo: 0x8d, hi: 0x8d},
+ {value: 0x9900, lo: 0x97, hi: 0x97},
+ {value: 0x4573, lo: 0x9c, hi: 0x9d},
+ {value: 0x4583, lo: 0x9f, hi: 0x9f},
+ {value: 0x8133, lo: 0xbe, hi: 0xbe},
+ // Block 0x13, offset 0x84
+ {value: 0x0000, lo: 0x03},
+ {value: 0x45ab, lo: 0xb3, hi: 0xb3},
+ {value: 0x45b3, lo: 0xb6, hi: 0xb6},
+ {value: 0x8103, lo: 0xbc, hi: 0xbc},
+ // Block 0x14, offset 0x88
+ {value: 0x0008, lo: 0x03},
+ {value: 0x8105, lo: 0x8d, hi: 0x8d},
+ {value: 0x458b, lo: 0x99, hi: 0x9b},
+ {value: 0x45a3, lo: 0x9e, hi: 0x9e},
+ // Block 0x15, offset 0x8c
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8103, lo: 0xbc, hi: 0xbc},
+ // Block 0x16, offset 0x8e
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0x8d, hi: 0x8d},
+ // Block 0x17, offset 0x90
+ {value: 0x0000, lo: 0x08},
+ {value: 0xa000, lo: 0x87, hi: 0x87},
+ {value: 0x2cc3, lo: 0x88, hi: 0x88},
+ {value: 0x2cbb, lo: 0x8b, hi: 0x8b},
+ {value: 0x2ccb, lo: 0x8c, hi: 0x8c},
+ {value: 0x8105, lo: 0x8d, hi: 0x8d},
+ {value: 0x9900, lo: 0x96, hi: 0x97},
+ {value: 0x45bb, lo: 0x9c, hi: 0x9c},
+ {value: 0x45c3, lo: 0x9d, hi: 0x9d},
+ // Block 0x18, offset 0x99
+ {value: 0x0000, lo: 0x03},
+ {value: 0xa000, lo: 0x92, hi: 0x92},
+ {value: 0x2cd3, lo: 0x94, hi: 0x94},
+ {value: 0x9900, lo: 0xbe, hi: 0xbe},
+ // Block 0x19, offset 0x9d
+ {value: 0x0000, lo: 0x06},
+ {value: 0xa000, lo: 0x86, hi: 0x87},
+ {value: 0x2cdb, lo: 0x8a, hi: 0x8a},
+ {value: 0x2ceb, lo: 0x8b, hi: 0x8b},
+ {value: 0x2ce3, lo: 0x8c, hi: 0x8c},
+ {value: 0x8105, lo: 0x8d, hi: 0x8d},
+ {value: 0x9900, lo: 0x97, hi: 0x97},
+ // Block 0x1a, offset 0xa4
+ {value: 0x1801, lo: 0x04},
+ {value: 0xa000, lo: 0x86, hi: 0x86},
+ {value: 0x3f07, lo: 0x88, hi: 0x88},
+ {value: 0x8105, lo: 0x8d, hi: 0x8d},
+ {value: 0x8121, lo: 0x95, hi: 0x96},
+ // Block 0x1b, offset 0xa9
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8103, lo: 0xbc, hi: 0xbc},
+ {value: 0xa000, lo: 0xbf, hi: 0xbf},
+ // Block 0x1c, offset 0xac
+ {value: 0x0000, lo: 0x09},
+ {value: 0x2cf3, lo: 0x80, hi: 0x80},
+ {value: 0x9900, lo: 0x82, hi: 0x82},
+ {value: 0xa000, lo: 0x86, hi: 0x86},
+ {value: 0x2cfb, lo: 0x87, hi: 0x87},
+ {value: 0x2d03, lo: 0x88, hi: 0x88},
+ {value: 0x2f67, lo: 0x8a, hi: 0x8a},
+ {value: 0x2def, lo: 0x8b, hi: 0x8b},
+ {value: 0x8105, lo: 0x8d, hi: 0x8d},
+ {value: 0x9900, lo: 0x95, hi: 0x96},
+ // Block 0x1d, offset 0xb6
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8105, lo: 0xbb, hi: 0xbc},
+ {value: 0x9900, lo: 0xbe, hi: 0xbe},
+ // Block 0x1e, offset 0xb9
+ {value: 0x0000, lo: 0x06},
+ {value: 0xa000, lo: 0x86, hi: 0x87},
+ {value: 0x2d0b, lo: 0x8a, hi: 0x8a},
+ {value: 0x2d1b, lo: 0x8b, hi: 0x8b},
+ {value: 0x2d13, lo: 0x8c, hi: 0x8c},
+ {value: 0x8105, lo: 0x8d, hi: 0x8d},
+ {value: 0x9900, lo: 0x97, hi: 0x97},
+ // Block 0x1f, offset 0xc0
+ {value: 0x6bdd, lo: 0x07},
+ {value: 0x9905, lo: 0x8a, hi: 0x8a},
+ {value: 0x9900, lo: 0x8f, hi: 0x8f},
+ {value: 0xa000, lo: 0x99, hi: 0x99},
+ {value: 0x3f0f, lo: 0x9a, hi: 0x9a},
+ {value: 0x2f6f, lo: 0x9c, hi: 0x9c},
+ {value: 0x2dfa, lo: 0x9d, hi: 0x9d},
+ {value: 0x2d23, lo: 0x9e, hi: 0x9f},
+ // Block 0x20, offset 0xc8
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8123, lo: 0xb8, hi: 0xb9},
+ {value: 0x8105, lo: 0xba, hi: 0xba},
+ // Block 0x21, offset 0xcb
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8124, lo: 0x88, hi: 0x8b},
+ // Block 0x22, offset 0xcd
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8125, lo: 0xb8, hi: 0xb9},
+ {value: 0x8105, lo: 0xba, hi: 0xba},
+ // Block 0x23, offset 0xd0
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8126, lo: 0x88, hi: 0x8b},
+ // Block 0x24, offset 0xd2
+ {value: 0x0000, lo: 0x04},
+ {value: 0x812e, lo: 0x98, hi: 0x99},
+ {value: 0x812e, lo: 0xb5, hi: 0xb5},
+ {value: 0x812e, lo: 0xb7, hi: 0xb7},
+ {value: 0x812c, lo: 0xb9, hi: 0xb9},
+ // Block 0x25, offset 0xd7
+ {value: 0x0000, lo: 0x10},
+ {value: 0x264a, lo: 0x83, hi: 0x83},
+ {value: 0x2651, lo: 0x8d, hi: 0x8d},
+ {value: 0x2658, lo: 0x92, hi: 0x92},
+ {value: 0x265f, lo: 0x97, hi: 0x97},
+ {value: 0x2666, lo: 0x9c, hi: 0x9c},
+ {value: 0x2643, lo: 0xa9, hi: 0xa9},
+ {value: 0x8127, lo: 0xb1, hi: 0xb1},
+ {value: 0x8128, lo: 0xb2, hi: 0xb2},
+ {value: 0x4a9b, lo: 0xb3, hi: 0xb3},
+ {value: 0x8129, lo: 0xb4, hi: 0xb4},
+ {value: 0x4aa4, lo: 0xb5, hi: 0xb5},
+ {value: 0x45cb, lo: 0xb6, hi: 0xb6},
+ {value: 0x8200, lo: 0xb7, hi: 0xb7},
+ {value: 0x45d3, lo: 0xb8, hi: 0xb8},
+ {value: 0x8200, lo: 0xb9, hi: 0xb9},
+ {value: 0x8128, lo: 0xba, hi: 0xbd},
+ // Block 0x26, offset 0xe8
+ {value: 0x0000, lo: 0x0b},
+ {value: 0x8128, lo: 0x80, hi: 0x80},
+ {value: 0x4aad, lo: 0x81, hi: 0x81},
+ {value: 0x8133, lo: 0x82, hi: 0x83},
+ {value: 0x8105, lo: 0x84, hi: 0x84},
+ {value: 0x8133, lo: 0x86, hi: 0x87},
+ {value: 0x2674, lo: 0x93, hi: 0x93},
+ {value: 0x267b, lo: 0x9d, hi: 0x9d},
+ {value: 0x2682, lo: 0xa2, hi: 0xa2},
+ {value: 0x2689, lo: 0xa7, hi: 0xa7},
+ {value: 0x2690, lo: 0xac, hi: 0xac},
+ {value: 0x266d, lo: 0xb9, hi: 0xb9},
+ // Block 0x27, offset 0xf4
+ {value: 0x0000, lo: 0x01},
+ {value: 0x812e, lo: 0x86, hi: 0x86},
+ // Block 0x28, offset 0xf6
+ {value: 0x0000, lo: 0x05},
+ {value: 0xa000, lo: 0xa5, hi: 0xa5},
+ {value: 0x2d2b, lo: 0xa6, hi: 0xa6},
+ {value: 0x9900, lo: 0xae, hi: 0xae},
+ {value: 0x8103, lo: 0xb7, hi: 0xb7},
+ {value: 0x8105, lo: 0xb9, hi: 0xba},
+ // Block 0x29, offset 0xfc
+ {value: 0x0000, lo: 0x01},
+ {value: 0x812e, lo: 0x8d, hi: 0x8d},
+ // Block 0x2a, offset 0xfe
+ {value: 0x0000, lo: 0x01},
+ {value: 0xa000, lo: 0x80, hi: 0x92},
+ // Block 0x2b, offset 0x100
+ {value: 0x0000, lo: 0x01},
+ {value: 0xb900, lo: 0xa1, hi: 0xb5},
+ // Block 0x2c, offset 0x102
+ {value: 0x0000, lo: 0x01},
+ {value: 0x9900, lo: 0xa8, hi: 0xbf},
+ // Block 0x2d, offset 0x104
+ {value: 0x0000, lo: 0x01},
+ {value: 0x9900, lo: 0x80, hi: 0x82},
+ // Block 0x2e, offset 0x106
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0x9d, hi: 0x9f},
+ // Block 0x2f, offset 0x108
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8105, lo: 0x94, hi: 0x94},
+ {value: 0x8105, lo: 0xb4, hi: 0xb4},
+ // Block 0x30, offset 0x10b
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8105, lo: 0x92, hi: 0x92},
+ {value: 0x8133, lo: 0x9d, hi: 0x9d},
+ // Block 0x31, offset 0x10e
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8132, lo: 0xa9, hi: 0xa9},
+ // Block 0x32, offset 0x110
+ {value: 0x0004, lo: 0x02},
+ {value: 0x812f, lo: 0xb9, hi: 0xba},
+ {value: 0x812e, lo: 0xbb, hi: 0xbb},
+ // Block 0x33, offset 0x113
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8133, lo: 0x97, hi: 0x97},
+ {value: 0x812e, lo: 0x98, hi: 0x98},
+ // Block 0x34, offset 0x116
+ {value: 0x0000, lo: 0x03},
+ {value: 0x8105, lo: 0xa0, hi: 0xa0},
+ {value: 0x8133, lo: 0xb5, hi: 0xbc},
+ {value: 0x812e, lo: 0xbf, hi: 0xbf},
+ // Block 0x35, offset 0x11a
+ {value: 0x0000, lo: 0x05},
+ {value: 0x8133, lo: 0xb0, hi: 0xb4},
+ {value: 0x812e, lo: 0xb5, hi: 0xba},
+ {value: 0x8133, lo: 0xbb, hi: 0xbc},
+ {value: 0x812e, lo: 0xbd, hi: 0xbd},
+ {value: 0x812e, lo: 0xbf, hi: 0xbf},
+ // Block 0x36, offset 0x120
+ {value: 0x0000, lo: 0x01},
+ {value: 0x812e, lo: 0x80, hi: 0x80},
+ // Block 0x37, offset 0x122
+ {value: 0x0000, lo: 0x08},
+ {value: 0x2d73, lo: 0x80, hi: 0x80},
+ {value: 0x2d7b, lo: 0x81, hi: 0x81},
+ {value: 0xa000, lo: 0x82, hi: 0x82},
+ {value: 0x2d83, lo: 0x83, hi: 0x83},
+ {value: 0x8105, lo: 0x84, hi: 0x84},
+ {value: 0x8133, lo: 0xab, hi: 0xab},
+ {value: 0x812e, lo: 0xac, hi: 0xac},
+ {value: 0x8133, lo: 0xad, hi: 0xb3},
+ // Block 0x38, offset 0x12b
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0xaa, hi: 0xab},
+ // Block 0x39, offset 0x12d
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8103, lo: 0xa6, hi: 0xa6},
+ {value: 0x8105, lo: 0xb2, hi: 0xb3},
+ // Block 0x3a, offset 0x130
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8103, lo: 0xb7, hi: 0xb7},
+ // Block 0x3b, offset 0x132
+ {value: 0x0000, lo: 0x0a},
+ {value: 0x8133, lo: 0x90, hi: 0x92},
+ {value: 0x8101, lo: 0x94, hi: 0x94},
+ {value: 0x812e, lo: 0x95, hi: 0x99},
+ {value: 0x8133, lo: 0x9a, hi: 0x9b},
+ {value: 0x812e, lo: 0x9c, hi: 0x9f},
+ {value: 0x8133, lo: 0xa0, hi: 0xa0},
+ {value: 0x8101, lo: 0xa2, hi: 0xa8},
+ {value: 0x812e, lo: 0xad, hi: 0xad},
+ {value: 0x8133, lo: 0xb4, hi: 0xb4},
+ {value: 0x8133, lo: 0xb8, hi: 0xb9},
+ // Block 0x3c, offset 0x13d
+ {value: 0x0004, lo: 0x03},
+ {value: 0x0436, lo: 0x80, hi: 0x81},
+ {value: 0x8100, lo: 0x97, hi: 0x97},
+ {value: 0x8100, lo: 0xbe, hi: 0xbe},
+ // Block 0x3d, offset 0x141
+ {value: 0x0000, lo: 0x0d},
+ {value: 0x8133, lo: 0x90, hi: 0x91},
+ {value: 0x8101, lo: 0x92, hi: 0x93},
+ {value: 0x8133, lo: 0x94, hi: 0x97},
+ {value: 0x8101, lo: 0x98, hi: 0x9a},
+ {value: 0x8133, lo: 0x9b, hi: 0x9c},
+ {value: 0x8133, lo: 0xa1, hi: 0xa1},
+ {value: 0x8101, lo: 0xa5, hi: 0xa6},
+ {value: 0x8133, lo: 0xa7, hi: 0xa7},
+ {value: 0x812e, lo: 0xa8, hi: 0xa8},
+ {value: 0x8133, lo: 0xa9, hi: 0xa9},
+ {value: 0x8101, lo: 0xaa, hi: 0xab},
+ {value: 0x812e, lo: 0xac, hi: 0xaf},
+ {value: 0x8133, lo: 0xb0, hi: 0xb0},
+ // Block 0x3e, offset 0x14f
+ {value: 0x4292, lo: 0x02},
+ {value: 0x01bb, lo: 0xa6, hi: 0xa6},
+ {value: 0x0057, lo: 0xaa, hi: 0xab},
+ // Block 0x3f, offset 0x152
+ {value: 0x0007, lo: 0x05},
+ {value: 0xa000, lo: 0x90, hi: 0x90},
+ {value: 0xa000, lo: 0x92, hi: 0x92},
+ {value: 0xa000, lo: 0x94, hi: 0x94},
+ {value: 0x3bd0, lo: 0x9a, hi: 0x9b},
+ {value: 0x3bde, lo: 0xae, hi: 0xae},
+ // Block 0x40, offset 0x158
+ {value: 0x000e, lo: 0x05},
+ {value: 0x3be5, lo: 0x8d, hi: 0x8e},
+ {value: 0x3bec, lo: 0x8f, hi: 0x8f},
+ {value: 0xa000, lo: 0x90, hi: 0x90},
+ {value: 0xa000, lo: 0x92, hi: 0x92},
+ {value: 0xa000, lo: 0x94, hi: 0x94},
+ // Block 0x41, offset 0x15e
+ {value: 0x63f1, lo: 0x0a},
+ {value: 0xa000, lo: 0x83, hi: 0x83},
+ {value: 0x3bfa, lo: 0x84, hi: 0x84},
+ {value: 0xa000, lo: 0x88, hi: 0x88},
+ {value: 0x3c01, lo: 0x89, hi: 0x89},
+ {value: 0xa000, lo: 0x8b, hi: 0x8b},
+ {value: 0x3c08, lo: 0x8c, hi: 0x8c},
+ {value: 0xa000, lo: 0xa3, hi: 0xa3},
+ {value: 0x3c0f, lo: 0xa4, hi: 0xa5},
+ {value: 0x3c16, lo: 0xa6, hi: 0xa6},
+ {value: 0xa000, lo: 0xbc, hi: 0xbc},
+ // Block 0x42, offset 0x169
+ {value: 0x0007, lo: 0x03},
+ {value: 0x3c7f, lo: 0xa0, hi: 0xa1},
+ {value: 0x3ca9, lo: 0xa2, hi: 0xa3},
+ {value: 0x3cd3, lo: 0xaa, hi: 0xad},
+ // Block 0x43, offset 0x16d
+ {value: 0x0004, lo: 0x01},
+ {value: 0x048e, lo: 0xa9, hi: 0xaa},
+ // Block 0x44, offset 0x16f
+ {value: 0x0000, lo: 0x01},
+ {value: 0x44f4, lo: 0x9c, hi: 0x9c},
+ // Block 0x45, offset 0x171
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0xaf, hi: 0xb1},
+ // Block 0x46, offset 0x173
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0xbf, hi: 0xbf},
+ // Block 0x47, offset 0x175
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0xa0, hi: 0xbf},
+ // Block 0x48, offset 0x177
+ {value: 0x0000, lo: 0x05},
+ {value: 0x812d, lo: 0xaa, hi: 0xaa},
+ {value: 0x8132, lo: 0xab, hi: 0xab},
+ {value: 0x8134, lo: 0xac, hi: 0xac},
+ {value: 0x812f, lo: 0xad, hi: 0xad},
+ {value: 0x8130, lo: 0xae, hi: 0xaf},
+ // Block 0x49, offset 0x17d
+ {value: 0x0000, lo: 0x03},
+ {value: 0x4ab6, lo: 0xb3, hi: 0xb3},
+ {value: 0x4ab6, lo: 0xb5, hi: 0xb6},
+ {value: 0x4ab6, lo: 0xba, hi: 0xbf},
+ // Block 0x4a, offset 0x181
+ {value: 0x0000, lo: 0x01},
+ {value: 0x4ab6, lo: 0x8f, hi: 0xa3},
+ // Block 0x4b, offset 0x183
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8100, lo: 0xae, hi: 0xbe},
+ // Block 0x4c, offset 0x185
+ {value: 0x0000, lo: 0x07},
+ {value: 0x8100, lo: 0x84, hi: 0x84},
+ {value: 0x8100, lo: 0x87, hi: 0x87},
+ {value: 0x8100, lo: 0x90, hi: 0x90},
+ {value: 0x8100, lo: 0x9e, hi: 0x9e},
+ {value: 0x8100, lo: 0xa1, hi: 0xa1},
+ {value: 0x8100, lo: 0xb2, hi: 0xb2},
+ {value: 0x8100, lo: 0xbb, hi: 0xbb},
+ // Block 0x4d, offset 0x18d
+ {value: 0x0000, lo: 0x03},
+ {value: 0x8100, lo: 0x80, hi: 0x80},
+ {value: 0x8100, lo: 0x8b, hi: 0x8b},
+ {value: 0x8100, lo: 0x8e, hi: 0x8e},
+ // Block 0x4e, offset 0x191
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8133, lo: 0xaf, hi: 0xaf},
+ {value: 0x8133, lo: 0xb4, hi: 0xbd},
+ // Block 0x4f, offset 0x194
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0x9e, hi: 0x9f},
+ // Block 0x50, offset 0x196
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0xb0, hi: 0xb1},
+ // Block 0x51, offset 0x198
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8105, lo: 0x86, hi: 0x86},
+ {value: 0x8105, lo: 0xac, hi: 0xac},
+ // Block 0x52, offset 0x19b
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8105, lo: 0x84, hi: 0x84},
+ {value: 0x8133, lo: 0xa0, hi: 0xb1},
+ // Block 0x53, offset 0x19e
+ {value: 0x0000, lo: 0x01},
+ {value: 0x812e, lo: 0xab, hi: 0xad},
+ // Block 0x54, offset 0x1a0
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0x93, hi: 0x93},
+ // Block 0x55, offset 0x1a2
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8103, lo: 0xb3, hi: 0xb3},
+ // Block 0x56, offset 0x1a4
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0x80, hi: 0x80},
+ // Block 0x57, offset 0x1a6
+ {value: 0x0000, lo: 0x05},
+ {value: 0x8133, lo: 0xb0, hi: 0xb0},
+ {value: 0x8133, lo: 0xb2, hi: 0xb3},
+ {value: 0x812e, lo: 0xb4, hi: 0xb4},
+ {value: 0x8133, lo: 0xb7, hi: 0xb8},
+ {value: 0x8133, lo: 0xbe, hi: 0xbf},
+ // Block 0x58, offset 0x1ac
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8133, lo: 0x81, hi: 0x81},
+ {value: 0x8105, lo: 0xb6, hi: 0xb6},
+ // Block 0x59, offset 0x1af
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0xad, hi: 0xad},
+ // Block 0x5a, offset 0x1b1
+ {value: 0x0000, lo: 0x06},
+ {value: 0xe500, lo: 0x80, hi: 0x80},
+ {value: 0xc600, lo: 0x81, hi: 0x9b},
+ {value: 0xe500, lo: 0x9c, hi: 0x9c},
+ {value: 0xc600, lo: 0x9d, hi: 0xb7},
+ {value: 0xe500, lo: 0xb8, hi: 0xb8},
+ {value: 0xc600, lo: 0xb9, hi: 0xbf},
+ // Block 0x5b, offset 0x1b8
+ {value: 0x0000, lo: 0x05},
+ {value: 0xc600, lo: 0x80, hi: 0x93},
+ {value: 0xe500, lo: 0x94, hi: 0x94},
+ {value: 0xc600, lo: 0x95, hi: 0xaf},
+ {value: 0xe500, lo: 0xb0, hi: 0xb0},
+ {value: 0xc600, lo: 0xb1, hi: 0xbf},
+ // Block 0x5c, offset 0x1be
+ {value: 0x0000, lo: 0x05},
+ {value: 0xc600, lo: 0x80, hi: 0x8b},
+ {value: 0xe500, lo: 0x8c, hi: 0x8c},
+ {value: 0xc600, lo: 0x8d, hi: 0xa7},
+ {value: 0xe500, lo: 0xa8, hi: 0xa8},
+ {value: 0xc600, lo: 0xa9, hi: 0xbf},
+ // Block 0x5d, offset 0x1c4
+ {value: 0x0000, lo: 0x07},
+ {value: 0xc600, lo: 0x80, hi: 0x83},
+ {value: 0xe500, lo: 0x84, hi: 0x84},
+ {value: 0xc600, lo: 0x85, hi: 0x9f},
+ {value: 0xe500, lo: 0xa0, hi: 0xa0},
+ {value: 0xc600, lo: 0xa1, hi: 0xbb},
+ {value: 0xe500, lo: 0xbc, hi: 0xbc},
+ {value: 0xc600, lo: 0xbd, hi: 0xbf},
+ // Block 0x5e, offset 0x1cc
+ {value: 0x0000, lo: 0x05},
+ {value: 0xc600, lo: 0x80, hi: 0x97},
+ {value: 0xe500, lo: 0x98, hi: 0x98},
+ {value: 0xc600, lo: 0x99, hi: 0xb3},
+ {value: 0xe500, lo: 0xb4, hi: 0xb4},
+ {value: 0xc600, lo: 0xb5, hi: 0xbf},
+ // Block 0x5f, offset 0x1d2
+ {value: 0x0000, lo: 0x05},
+ {value: 0xc600, lo: 0x80, hi: 0x8f},
+ {value: 0xe500, lo: 0x90, hi: 0x90},
+ {value: 0xc600, lo: 0x91, hi: 0xab},
+ {value: 0xe500, lo: 0xac, hi: 0xac},
+ {value: 0xc600, lo: 0xad, hi: 0xbf},
+ // Block 0x60, offset 0x1d8
+ {value: 0x0000, lo: 0x05},
+ {value: 0xc600, lo: 0x80, hi: 0x87},
+ {value: 0xe500, lo: 0x88, hi: 0x88},
+ {value: 0xc600, lo: 0x89, hi: 0xa3},
+ {value: 0xe500, lo: 0xa4, hi: 0xa4},
+ {value: 0xc600, lo: 0xa5, hi: 0xbf},
+ // Block 0x61, offset 0x1de
+ {value: 0x0000, lo: 0x03},
+ {value: 0xc600, lo: 0x80, hi: 0x87},
+ {value: 0xe500, lo: 0x88, hi: 0x88},
+ {value: 0xc600, lo: 0x89, hi: 0xa3},
+ // Block 0x62, offset 0x1e2
+ {value: 0x0006, lo: 0x0d},
+ {value: 0x43a7, lo: 0x9d, hi: 0x9d},
+ {value: 0x8116, lo: 0x9e, hi: 0x9e},
+ {value: 0x4419, lo: 0x9f, hi: 0x9f},
+ {value: 0x4407, lo: 0xaa, hi: 0xab},
+ {value: 0x450b, lo: 0xac, hi: 0xac},
+ {value: 0x4513, lo: 0xad, hi: 0xad},
+ {value: 0x435f, lo: 0xae, hi: 0xb1},
+ {value: 0x437d, lo: 0xb2, hi: 0xb4},
+ {value: 0x4395, lo: 0xb5, hi: 0xb6},
+ {value: 0x43a1, lo: 0xb8, hi: 0xb8},
+ {value: 0x43ad, lo: 0xb9, hi: 0xbb},
+ {value: 0x43c5, lo: 0xbc, hi: 0xbc},
+ {value: 0x43cb, lo: 0xbe, hi: 0xbe},
+ // Block 0x63, offset 0x1f0
+ {value: 0x0006, lo: 0x08},
+ {value: 0x43d1, lo: 0x80, hi: 0x81},
+ {value: 0x43dd, lo: 0x83, hi: 0x84},
+ {value: 0x43ef, lo: 0x86, hi: 0x89},
+ {value: 0x4413, lo: 0x8a, hi: 0x8a},
+ {value: 0x438f, lo: 0x8b, hi: 0x8b},
+ {value: 0x4377, lo: 0x8c, hi: 0x8c},
+ {value: 0x43bf, lo: 0x8d, hi: 0x8d},
+ {value: 0x43e9, lo: 0x8e, hi: 0x8e},
+ // Block 0x64, offset 0x1f9
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8100, lo: 0xa4, hi: 0xa5},
+ {value: 0x8100, lo: 0xb0, hi: 0xb1},
+ // Block 0x65, offset 0x1fc
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8100, lo: 0x9b, hi: 0x9d},
+ {value: 0x8200, lo: 0x9e, hi: 0xa3},
+ // Block 0x66, offset 0x1ff
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8100, lo: 0x90, hi: 0x90},
+ // Block 0x67, offset 0x201
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8100, lo: 0x99, hi: 0x99},
+ {value: 0x8200, lo: 0xb2, hi: 0xb4},
+ // Block 0x68, offset 0x204
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8100, lo: 0xbc, hi: 0xbd},
+ // Block 0x69, offset 0x206
+ {value: 0x0000, lo: 0x03},
+ {value: 0x8133, lo: 0xa0, hi: 0xa6},
+ {value: 0x812e, lo: 0xa7, hi: 0xad},
+ {value: 0x8133, lo: 0xae, hi: 0xaf},
+ // Block 0x6a, offset 0x20a
+ {value: 0x0000, lo: 0x04},
+ {value: 0x8100, lo: 0x89, hi: 0x8c},
+ {value: 0x8100, lo: 0xb0, hi: 0xb2},
+ {value: 0x8100, lo: 0xb4, hi: 0xb4},
+ {value: 0x8100, lo: 0xb6, hi: 0xbf},
+ // Block 0x6b, offset 0x20f
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8100, lo: 0x81, hi: 0x8c},
+ // Block 0x6c, offset 0x211
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8100, lo: 0xb5, hi: 0xba},
+ // Block 0x6d, offset 0x213
+ {value: 0x0000, lo: 0x04},
+ {value: 0x4ab6, lo: 0x9e, hi: 0x9f},
+ {value: 0x4ab6, lo: 0xa3, hi: 0xa3},
+ {value: 0x4ab6, lo: 0xa5, hi: 0xa6},
+ {value: 0x4ab6, lo: 0xaa, hi: 0xaf},
+ // Block 0x6e, offset 0x218
+ {value: 0x0000, lo: 0x05},
+ {value: 0x4ab6, lo: 0x82, hi: 0x87},
+ {value: 0x4ab6, lo: 0x8a, hi: 0x8f},
+ {value: 0x4ab6, lo: 0x92, hi: 0x97},
+ {value: 0x4ab6, lo: 0x9a, hi: 0x9c},
+ {value: 0x8100, lo: 0xa3, hi: 0xa3},
+ // Block 0x6f, offset 0x21e
+ {value: 0x0000, lo: 0x01},
+ {value: 0x812e, lo: 0xbd, hi: 0xbd},
+ // Block 0x70, offset 0x220
+ {value: 0x0000, lo: 0x01},
+ {value: 0x812e, lo: 0xa0, hi: 0xa0},
+ // Block 0x71, offset 0x222
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0xb6, hi: 0xba},
+ // Block 0x72, offset 0x224
+ {value: 0x002d, lo: 0x05},
+ {value: 0x812e, lo: 0x8d, hi: 0x8d},
+ {value: 0x8133, lo: 0x8f, hi: 0x8f},
+ {value: 0x8133, lo: 0xb8, hi: 0xb8},
+ {value: 0x8101, lo: 0xb9, hi: 0xba},
+ {value: 0x8105, lo: 0xbf, hi: 0xbf},
+ // Block 0x73, offset 0x22a
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8133, lo: 0xa5, hi: 0xa5},
+ {value: 0x812e, lo: 0xa6, hi: 0xa6},
+ // Block 0x74, offset 0x22d
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0xa4, hi: 0xa7},
+ // Block 0x75, offset 0x22f
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0xab, hi: 0xac},
+ // Block 0x76, offset 0x231
+ {value: 0x0000, lo: 0x05},
+ {value: 0x812e, lo: 0x86, hi: 0x87},
+ {value: 0x8133, lo: 0x88, hi: 0x8a},
+ {value: 0x812e, lo: 0x8b, hi: 0x8b},
+ {value: 0x8133, lo: 0x8c, hi: 0x8c},
+ {value: 0x812e, lo: 0x8d, hi: 0x90},
+ // Block 0x77, offset 0x237
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8105, lo: 0x86, hi: 0x86},
+ {value: 0x8105, lo: 0xbf, hi: 0xbf},
+ // Block 0x78, offset 0x23a
+ {value: 0x17fe, lo: 0x07},
+ {value: 0xa000, lo: 0x99, hi: 0x99},
+ {value: 0x424f, lo: 0x9a, hi: 0x9a},
+ {value: 0xa000, lo: 0x9b, hi: 0x9b},
+ {value: 0x4259, lo: 0x9c, hi: 0x9c},
+ {value: 0xa000, lo: 0xa5, hi: 0xa5},
+ {value: 0x4263, lo: 0xab, hi: 0xab},
+ {value: 0x8105, lo: 0xb9, hi: 0xba},
+ // Block 0x79, offset 0x242
+ {value: 0x0000, lo: 0x06},
+ {value: 0x8133, lo: 0x80, hi: 0x82},
+ {value: 0x9900, lo: 0xa7, hi: 0xa7},
+ {value: 0x2d8b, lo: 0xae, hi: 0xae},
+ {value: 0x2d95, lo: 0xaf, hi: 0xaf},
+ {value: 0xa000, lo: 0xb1, hi: 0xb2},
+ {value: 0x8105, lo: 0xb3, hi: 0xb4},
+ // Block 0x7a, offset 0x249
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8105, lo: 0x80, hi: 0x80},
+ {value: 0x8103, lo: 0x8a, hi: 0x8a},
+ // Block 0x7b, offset 0x24c
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8105, lo: 0xb5, hi: 0xb5},
+ {value: 0x8103, lo: 0xb6, hi: 0xb6},
+ // Block 0x7c, offset 0x24f
+ {value: 0x0002, lo: 0x01},
+ {value: 0x8103, lo: 0xa9, hi: 0xaa},
+ // Block 0x7d, offset 0x251
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8103, lo: 0xbb, hi: 0xbc},
+ {value: 0x9900, lo: 0xbe, hi: 0xbe},
+ // Block 0x7e, offset 0x254
+ {value: 0x0000, lo: 0x07},
+ {value: 0xa000, lo: 0x87, hi: 0x87},
+ {value: 0x2d9f, lo: 0x8b, hi: 0x8b},
+ {value: 0x2da9, lo: 0x8c, hi: 0x8c},
+ {value: 0x8105, lo: 0x8d, hi: 0x8d},
+ {value: 0x9900, lo: 0x97, hi: 0x97},
+ {value: 0x8133, lo: 0xa6, hi: 0xac},
+ {value: 0x8133, lo: 0xb0, hi: 0xb4},
+ // Block 0x7f, offset 0x25c
+ {value: 0x0000, lo: 0x03},
+ {value: 0x8105, lo: 0x82, hi: 0x82},
+ {value: 0x8103, lo: 0x86, hi: 0x86},
+ {value: 0x8133, lo: 0x9e, hi: 0x9e},
+ // Block 0x80, offset 0x260
+ {value: 0x6b4d, lo: 0x06},
+ {value: 0x9900, lo: 0xb0, hi: 0xb0},
+ {value: 0xa000, lo: 0xb9, hi: 0xb9},
+ {value: 0x9900, lo: 0xba, hi: 0xba},
+ {value: 0x2dbd, lo: 0xbb, hi: 0xbb},
+ {value: 0x2db3, lo: 0xbc, hi: 0xbd},
+ {value: 0x2dc7, lo: 0xbe, hi: 0xbe},
+ // Block 0x81, offset 0x267
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8105, lo: 0x82, hi: 0x82},
+ {value: 0x8103, lo: 0x83, hi: 0x83},
+ // Block 0x82, offset 0x26a
+ {value: 0x0000, lo: 0x05},
+ {value: 0x9900, lo: 0xaf, hi: 0xaf},
+ {value: 0xa000, lo: 0xb8, hi: 0xb9},
+ {value: 0x2dd1, lo: 0xba, hi: 0xba},
+ {value: 0x2ddb, lo: 0xbb, hi: 0xbb},
+ {value: 0x8105, lo: 0xbf, hi: 0xbf},
+ // Block 0x83, offset 0x270
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8103, lo: 0x80, hi: 0x80},
+ // Block 0x84, offset 0x272
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8105, lo: 0xb6, hi: 0xb6},
+ {value: 0x8103, lo: 0xb7, hi: 0xb7},
+ // Block 0x85, offset 0x275
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0xab, hi: 0xab},
+ // Block 0x86, offset 0x277
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8105, lo: 0xb9, hi: 0xb9},
+ {value: 0x8103, lo: 0xba, hi: 0xba},
+ // Block 0x87, offset 0x27a
+ {value: 0x0000, lo: 0x04},
+ {value: 0x9900, lo: 0xb0, hi: 0xb0},
+ {value: 0xa000, lo: 0xb5, hi: 0xb5},
+ {value: 0x2de5, lo: 0xb8, hi: 0xb8},
+ {value: 0x8105, lo: 0xbd, hi: 0xbe},
+ // Block 0x88, offset 0x27f
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8103, lo: 0x83, hi: 0x83},
+ // Block 0x89, offset 0x281
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0xa0, hi: 0xa0},
+ // Block 0x8a, offset 0x283
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0xb4, hi: 0xb4},
+ // Block 0x8b, offset 0x285
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0x87, hi: 0x87},
+ // Block 0x8c, offset 0x287
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0x99, hi: 0x99},
+ // Block 0x8d, offset 0x289
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8103, lo: 0x82, hi: 0x82},
+ {value: 0x8105, lo: 0x84, hi: 0x85},
+ // Block 0x8e, offset 0x28c
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0x97, hi: 0x97},
+ // Block 0x8f, offset 0x28e
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8101, lo: 0xb0, hi: 0xb4},
+ // Block 0x90, offset 0x290
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0xb0, hi: 0xb6},
+ // Block 0x91, offset 0x292
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8102, lo: 0xb0, hi: 0xb1},
+ // Block 0x92, offset 0x294
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8101, lo: 0x9e, hi: 0x9e},
+ // Block 0x93, offset 0x296
+ {value: 0x0000, lo: 0x0c},
+ {value: 0x45e3, lo: 0x9e, hi: 0x9e},
+ {value: 0x45ed, lo: 0x9f, hi: 0x9f},
+ {value: 0x4621, lo: 0xa0, hi: 0xa0},
+ {value: 0x462f, lo: 0xa1, hi: 0xa1},
+ {value: 0x463d, lo: 0xa2, hi: 0xa2},
+ {value: 0x464b, lo: 0xa3, hi: 0xa3},
+ {value: 0x4659, lo: 0xa4, hi: 0xa4},
+ {value: 0x812c, lo: 0xa5, hi: 0xa6},
+ {value: 0x8101, lo: 0xa7, hi: 0xa9},
+ {value: 0x8131, lo: 0xad, hi: 0xad},
+ {value: 0x812c, lo: 0xae, hi: 0xb2},
+ {value: 0x812e, lo: 0xbb, hi: 0xbf},
+ // Block 0x94, offset 0x2a3
+ {value: 0x0000, lo: 0x09},
+ {value: 0x812e, lo: 0x80, hi: 0x82},
+ {value: 0x8133, lo: 0x85, hi: 0x89},
+ {value: 0x812e, lo: 0x8a, hi: 0x8b},
+ {value: 0x8133, lo: 0xaa, hi: 0xad},
+ {value: 0x45f7, lo: 0xbb, hi: 0xbb},
+ {value: 0x4601, lo: 0xbc, hi: 0xbc},
+ {value: 0x4667, lo: 0xbd, hi: 0xbd},
+ {value: 0x4683, lo: 0xbe, hi: 0xbe},
+ {value: 0x4675, lo: 0xbf, hi: 0xbf},
+ // Block 0x95, offset 0x2ad
+ {value: 0x0000, lo: 0x01},
+ {value: 0x4691, lo: 0x80, hi: 0x80},
+ // Block 0x96, offset 0x2af
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0x82, hi: 0x84},
+ // Block 0x97, offset 0x2b1
+ {value: 0x0000, lo: 0x05},
+ {value: 0x8133, lo: 0x80, hi: 0x86},
+ {value: 0x8133, lo: 0x88, hi: 0x98},
+ {value: 0x8133, lo: 0x9b, hi: 0xa1},
+ {value: 0x8133, lo: 0xa3, hi: 0xa4},
+ {value: 0x8133, lo: 0xa6, hi: 0xaa},
+ // Block 0x98, offset 0x2b7
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0xac, hi: 0xaf},
+ // Block 0x99, offset 0x2b9
+ {value: 0x0000, lo: 0x01},
+ {value: 0x812e, lo: 0x90, hi: 0x96},
+ // Block 0x9a, offset 0x2bb
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8133, lo: 0x84, hi: 0x89},
+ {value: 0x8103, lo: 0x8a, hi: 0x8a},
+ // Block 0x9b, offset 0x2be
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8100, lo: 0x93, hi: 0x93},
+}
+
+// lookup returns the trie value for the first UTF-8 encoding in s and
+// the width in bytes of this encoding. The size will be 0 if s does not
+// hold enough bytes to complete the encoding. len(s) must be greater than 0.
+func (t *nfkcTrie) lookup(s []byte) (v uint16, sz int) {
+ c0 := s[0]
+ switch {
+ case c0 < 0x80: // is ASCII
+ return nfkcValues[c0], 1
+ case c0 < 0xC2:
+ return 0, 1 // Illegal UTF-8: not a starter, not ASCII.
+ case c0 < 0xE0: // 2-byte UTF-8
+ if len(s) < 2 {
+ return 0, 0
+ }
+ i := nfkcIndex[c0]
+ c1 := s[1]
+ if c1 < 0x80 || 0xC0 <= c1 {
+ return 0, 1 // Illegal UTF-8: not a continuation byte.
+ }
+ return t.lookupValue(uint32(i), c1), 2
+ case c0 < 0xF0: // 3-byte UTF-8
+ if len(s) < 3 {
+ return 0, 0
+ }
+ i := nfkcIndex[c0]
+ c1 := s[1]
+ if c1 < 0x80 || 0xC0 <= c1 {
+ return 0, 1 // Illegal UTF-8: not a continuation byte.
+ }
+ o := uint32(i)<<6 + uint32(c1)
+ i = nfkcIndex[o]
+ c2 := s[2]
+ if c2 < 0x80 || 0xC0 <= c2 {
+ return 0, 2 // Illegal UTF-8: not a continuation byte.
+ }
+ return t.lookupValue(uint32(i), c2), 3
+ case c0 < 0xF8: // 4-byte UTF-8
+ if len(s) < 4 {
+ return 0, 0
+ }
+ i := nfkcIndex[c0]
+ c1 := s[1]
+ if c1 < 0x80 || 0xC0 <= c1 {
+ return 0, 1 // Illegal UTF-8: not a continuation byte.
+ }
+ o := uint32(i)<<6 + uint32(c1)
+ i = nfkcIndex[o]
+ c2 := s[2]
+ if c2 < 0x80 || 0xC0 <= c2 {
+ return 0, 2 // Illegal UTF-8: not a continuation byte.
+ }
+ o = uint32(i)<<6 + uint32(c2)
+ i = nfkcIndex[o]
+ c3 := s[3]
+ if c3 < 0x80 || 0xC0 <= c3 {
+ return 0, 3 // Illegal UTF-8: not a continuation byte.
+ }
+ return t.lookupValue(uint32(i), c3), 4
+ }
+ // Illegal rune
+ return 0, 1
+}
+
+// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.
+// s must start with a full and valid UTF-8 encoded rune.
+func (t *nfkcTrie) lookupUnsafe(s []byte) uint16 {
+ c0 := s[0]
+ if c0 < 0x80 { // is ASCII
+ return nfkcValues[c0]
+ }
+ i := nfkcIndex[c0]
+ if c0 < 0xE0 { // 2-byte UTF-8
+ return t.lookupValue(uint32(i), s[1])
+ }
+ i = nfkcIndex[uint32(i)<<6+uint32(s[1])]
+ if c0 < 0xF0 { // 3-byte UTF-8
+ return t.lookupValue(uint32(i), s[2])
+ }
+ i = nfkcIndex[uint32(i)<<6+uint32(s[2])]
+ if c0 < 0xF8 { // 4-byte UTF-8
+ return t.lookupValue(uint32(i), s[3])
+ }
+ return 0
+}
+
+// lookupString returns the trie value for the first UTF-8 encoding in s and
+// the width in bytes of this encoding. The size will be 0 if s does not
+// hold enough bytes to complete the encoding. len(s) must be greater than 0.
+func (t *nfkcTrie) lookupString(s string) (v uint16, sz int) {
+ c0 := s[0]
+ switch {
+ case c0 < 0x80: // is ASCII
+ return nfkcValues[c0], 1
+ case c0 < 0xC2:
+ return 0, 1 // Illegal UTF-8: not a starter, not ASCII.
+ case c0 < 0xE0: // 2-byte UTF-8
+ if len(s) < 2 {
+ return 0, 0
+ }
+ i := nfkcIndex[c0]
+ c1 := s[1]
+ if c1 < 0x80 || 0xC0 <= c1 {
+ return 0, 1 // Illegal UTF-8: not a continuation byte.
+ }
+ return t.lookupValue(uint32(i), c1), 2
+ case c0 < 0xF0: // 3-byte UTF-8
+ if len(s) < 3 {
+ return 0, 0
+ }
+ i := nfkcIndex[c0]
+ c1 := s[1]
+ if c1 < 0x80 || 0xC0 <= c1 {
+ return 0, 1 // Illegal UTF-8: not a continuation byte.
+ }
+ o := uint32(i)<<6 + uint32(c1)
+ i = nfkcIndex[o]
+ c2 := s[2]
+ if c2 < 0x80 || 0xC0 <= c2 {
+ return 0, 2 // Illegal UTF-8: not a continuation byte.
+ }
+ return t.lookupValue(uint32(i), c2), 3
+ case c0 < 0xF8: // 4-byte UTF-8
+ if len(s) < 4 {
+ return 0, 0
+ }
+ i := nfkcIndex[c0]
+ c1 := s[1]
+ if c1 < 0x80 || 0xC0 <= c1 {
+ return 0, 1 // Illegal UTF-8: not a continuation byte.
+ }
+ o := uint32(i)<<6 + uint32(c1)
+ i = nfkcIndex[o]
+ c2 := s[2]
+ if c2 < 0x80 || 0xC0 <= c2 {
+ return 0, 2 // Illegal UTF-8: not a continuation byte.
+ }
+ o = uint32(i)<<6 + uint32(c2)
+ i = nfkcIndex[o]
+ c3 := s[3]
+ if c3 < 0x80 || 0xC0 <= c3 {
+ return 0, 3 // Illegal UTF-8: not a continuation byte.
+ }
+ return t.lookupValue(uint32(i), c3), 4
+ }
+ // Illegal rune
+ return 0, 1
+}
+
+// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.
+// s must start with a full and valid UTF-8 encoded rune.
+func (t *nfkcTrie) lookupStringUnsafe(s string) uint16 {
+ c0 := s[0]
+ if c0 < 0x80 { // is ASCII
+ return nfkcValues[c0]
+ }
+ i := nfkcIndex[c0]
+ if c0 < 0xE0 { // 2-byte UTF-8
+ return t.lookupValue(uint32(i), s[1])
+ }
+ i = nfkcIndex[uint32(i)<<6+uint32(s[1])]
+ if c0 < 0xF0 { // 3-byte UTF-8
+ return t.lookupValue(uint32(i), s[2])
+ }
+ i = nfkcIndex[uint32(i)<<6+uint32(s[2])]
+ if c0 < 0xF8 { // 4-byte UTF-8
+ return t.lookupValue(uint32(i), s[3])
+ }
+ return 0
+}
+
+// nfkcTrie. Total size: 18768 bytes (18.33 KiB). Checksum: c51186dd2412943d.
+type nfkcTrie struct{}
+
+func newNfkcTrie(i int) *nfkcTrie {
+ return &nfkcTrie{}
+}
+
+// lookupValue determines the type of block n and looks up the value for b.
+func (t *nfkcTrie) lookupValue(n uint32, b byte) uint16 {
+ switch {
+ case n < 92:
+ return uint16(nfkcValues[n<<6+uint32(b)])
+ default:
+ n -= 92
+ return uint16(nfkcSparse.lookup(n, b))
+ }
+}
+
+// nfkcValues: 94 blocks, 6016 entries, 12032 bytes
+// The third block is the zero block.
+var nfkcValues = [6016]uint16{
+ // Block 0x0, offset 0x0
+ 0x3c: 0xa000, 0x3d: 0xa000, 0x3e: 0xa000,
+ // Block 0x1, offset 0x40
+ 0x41: 0xa000, 0x42: 0xa000, 0x43: 0xa000, 0x44: 0xa000, 0x45: 0xa000,
+ 0x46: 0xa000, 0x47: 0xa000, 0x48: 0xa000, 0x49: 0xa000, 0x4a: 0xa000, 0x4b: 0xa000,
+ 0x4c: 0xa000, 0x4d: 0xa000, 0x4e: 0xa000, 0x4f: 0xa000, 0x50: 0xa000,
+ 0x52: 0xa000, 0x53: 0xa000, 0x54: 0xa000, 0x55: 0xa000, 0x56: 0xa000, 0x57: 0xa000,
+ 0x58: 0xa000, 0x59: 0xa000, 0x5a: 0xa000,
+ 0x61: 0xa000, 0x62: 0xa000, 0x63: 0xa000,
+ 0x64: 0xa000, 0x65: 0xa000, 0x66: 0xa000, 0x67: 0xa000, 0x68: 0xa000, 0x69: 0xa000,
+ 0x6a: 0xa000, 0x6b: 0xa000, 0x6c: 0xa000, 0x6d: 0xa000, 0x6e: 0xa000, 0x6f: 0xa000,
+ 0x70: 0xa000, 0x72: 0xa000, 0x73: 0xa000, 0x74: 0xa000, 0x75: 0xa000,
+ 0x76: 0xa000, 0x77: 0xa000, 0x78: 0xa000, 0x79: 0xa000, 0x7a: 0xa000,
+ // Block 0x2, offset 0x80
+ // Block 0x3, offset 0xc0
+ 0xc0: 0x2f86, 0xc1: 0x2f8b, 0xc2: 0x469f, 0xc3: 0x2f90, 0xc4: 0x46ae, 0xc5: 0x46b3,
+ 0xc6: 0xa000, 0xc7: 0x46bd, 0xc8: 0x2ff9, 0xc9: 0x2ffe, 0xca: 0x46c2, 0xcb: 0x3012,
+ 0xcc: 0x3085, 0xcd: 0x308a, 0xce: 0x308f, 0xcf: 0x46d6, 0xd1: 0x311b,
+ 0xd2: 0x313e, 0xd3: 0x3143, 0xd4: 0x46e0, 0xd5: 0x46e5, 0xd6: 0x46f4,
+ 0xd8: 0xa000, 0xd9: 0x31ca, 0xda: 0x31cf, 0xdb: 0x31d4, 0xdc: 0x4726, 0xdd: 0x324c,
+ 0xe0: 0x3292, 0xe1: 0x3297, 0xe2: 0x4730, 0xe3: 0x329c,
+ 0xe4: 0x473f, 0xe5: 0x4744, 0xe6: 0xa000, 0xe7: 0x474e, 0xe8: 0x3305, 0xe9: 0x330a,
+ 0xea: 0x4753, 0xeb: 0x331e, 0xec: 0x3396, 0xed: 0x339b, 0xee: 0x33a0, 0xef: 0x4767,
+ 0xf1: 0x342c, 0xf2: 0x344f, 0xf3: 0x3454, 0xf4: 0x4771, 0xf5: 0x4776,
+ 0xf6: 0x4785, 0xf8: 0xa000, 0xf9: 0x34e0, 0xfa: 0x34e5, 0xfb: 0x34ea,
+ 0xfc: 0x47b7, 0xfd: 0x3567, 0xff: 0x3580,
+ // Block 0x4, offset 0x100
+ 0x100: 0x2f95, 0x101: 0x32a1, 0x102: 0x46a4, 0x103: 0x4735, 0x104: 0x2fb3, 0x105: 0x32bf,
+ 0x106: 0x2fc7, 0x107: 0x32d3, 0x108: 0x2fcc, 0x109: 0x32d8, 0x10a: 0x2fd1, 0x10b: 0x32dd,
+ 0x10c: 0x2fd6, 0x10d: 0x32e2, 0x10e: 0x2fe0, 0x10f: 0x32ec,
+ 0x112: 0x46c7, 0x113: 0x4758, 0x114: 0x3008, 0x115: 0x3314, 0x116: 0x300d, 0x117: 0x3319,
+ 0x118: 0x302b, 0x119: 0x3337, 0x11a: 0x301c, 0x11b: 0x3328, 0x11c: 0x3044, 0x11d: 0x3350,
+ 0x11e: 0x304e, 0x11f: 0x335a, 0x120: 0x3053, 0x121: 0x335f, 0x122: 0x305d, 0x123: 0x3369,
+ 0x124: 0x3062, 0x125: 0x336e, 0x128: 0x3094, 0x129: 0x33a5,
+ 0x12a: 0x3099, 0x12b: 0x33aa, 0x12c: 0x309e, 0x12d: 0x33af, 0x12e: 0x30c1, 0x12f: 0x33cd,
+ 0x130: 0x30a3, 0x132: 0x1960, 0x133: 0x19ed, 0x134: 0x30cb, 0x135: 0x33d7,
+ 0x136: 0x30df, 0x137: 0x33f0, 0x139: 0x30e9, 0x13a: 0x33fa, 0x13b: 0x30f3,
+ 0x13c: 0x3404, 0x13d: 0x30ee, 0x13e: 0x33ff, 0x13f: 0x1bb2,
+ // Block 0x5, offset 0x140
+ 0x140: 0x1c3a, 0x143: 0x3116, 0x144: 0x3427, 0x145: 0x312f,
+ 0x146: 0x3440, 0x147: 0x3125, 0x148: 0x3436, 0x149: 0x1c62,
+ 0x14c: 0x46ea, 0x14d: 0x477b, 0x14e: 0x3148, 0x14f: 0x3459, 0x150: 0x3152, 0x151: 0x3463,
+ 0x154: 0x3170, 0x155: 0x3481, 0x156: 0x3189, 0x157: 0x349a,
+ 0x158: 0x317a, 0x159: 0x348b, 0x15a: 0x470d, 0x15b: 0x479e, 0x15c: 0x3193, 0x15d: 0x34a4,
+ 0x15e: 0x31a2, 0x15f: 0x34b3, 0x160: 0x4712, 0x161: 0x47a3, 0x162: 0x31bb, 0x163: 0x34d1,
+ 0x164: 0x31ac, 0x165: 0x34c2, 0x168: 0x471c, 0x169: 0x47ad,
+ 0x16a: 0x4721, 0x16b: 0x47b2, 0x16c: 0x31d9, 0x16d: 0x34ef, 0x16e: 0x31e3, 0x16f: 0x34f9,
+ 0x170: 0x31e8, 0x171: 0x34fe, 0x172: 0x3206, 0x173: 0x351c, 0x174: 0x3229, 0x175: 0x353f,
+ 0x176: 0x3251, 0x177: 0x356c, 0x178: 0x3265, 0x179: 0x3274, 0x17a: 0x3594, 0x17b: 0x327e,
+ 0x17c: 0x359e, 0x17d: 0x3283, 0x17e: 0x35a3, 0x17f: 0x00a7,
+ // Block 0x6, offset 0x180
+ 0x184: 0x2e05, 0x185: 0x2e0b,
+ 0x186: 0x2e11, 0x187: 0x1975, 0x188: 0x1978, 0x189: 0x1a0e, 0x18a: 0x198d, 0x18b: 0x1990,
+ 0x18c: 0x1a44, 0x18d: 0x2f9f, 0x18e: 0x32ab, 0x18f: 0x30ad, 0x190: 0x33b9, 0x191: 0x3157,
+ 0x192: 0x3468, 0x193: 0x31ed, 0x194: 0x3503, 0x195: 0x39e6, 0x196: 0x3b75, 0x197: 0x39df,
+ 0x198: 0x3b6e, 0x199: 0x39ed, 0x19a: 0x3b7c, 0x19b: 0x39d8, 0x19c: 0x3b67,
+ 0x19e: 0x38c7, 0x19f: 0x3a56, 0x1a0: 0x38c0, 0x1a1: 0x3a4f, 0x1a2: 0x35ca, 0x1a3: 0x35dc,
+ 0x1a6: 0x3058, 0x1a7: 0x3364, 0x1a8: 0x30d5, 0x1a9: 0x33e6,
+ 0x1aa: 0x4703, 0x1ab: 0x4794, 0x1ac: 0x39a7, 0x1ad: 0x3b36, 0x1ae: 0x35ee, 0x1af: 0x35f4,
+ 0x1b0: 0x33dc, 0x1b1: 0x1945, 0x1b2: 0x1948, 0x1b3: 0x19d5, 0x1b4: 0x303f, 0x1b5: 0x334b,
+ 0x1b8: 0x3111, 0x1b9: 0x3422, 0x1ba: 0x38ce, 0x1bb: 0x3a5d,
+ 0x1bc: 0x35c4, 0x1bd: 0x35d6, 0x1be: 0x35d0, 0x1bf: 0x35e2,
+ // Block 0x7, offset 0x1c0
+ 0x1c0: 0x2fa4, 0x1c1: 0x32b0, 0x1c2: 0x2fa9, 0x1c3: 0x32b5, 0x1c4: 0x3021, 0x1c5: 0x332d,
+ 0x1c6: 0x3026, 0x1c7: 0x3332, 0x1c8: 0x30b2, 0x1c9: 0x33be, 0x1ca: 0x30b7, 0x1cb: 0x33c3,
+ 0x1cc: 0x315c, 0x1cd: 0x346d, 0x1ce: 0x3161, 0x1cf: 0x3472, 0x1d0: 0x317f, 0x1d1: 0x3490,
+ 0x1d2: 0x3184, 0x1d3: 0x3495, 0x1d4: 0x31f2, 0x1d5: 0x3508, 0x1d6: 0x31f7, 0x1d7: 0x350d,
+ 0x1d8: 0x319d, 0x1d9: 0x34ae, 0x1da: 0x31b6, 0x1db: 0x34cc,
+ 0x1de: 0x3071, 0x1df: 0x337d,
+ 0x1e6: 0x46a9, 0x1e7: 0x473a, 0x1e8: 0x46d1, 0x1e9: 0x4762,
+ 0x1ea: 0x3976, 0x1eb: 0x3b05, 0x1ec: 0x3953, 0x1ed: 0x3ae2, 0x1ee: 0x46ef, 0x1ef: 0x4780,
+ 0x1f0: 0x396f, 0x1f1: 0x3afe, 0x1f2: 0x325b, 0x1f3: 0x3576,
+ // Block 0x8, offset 0x200
+ 0x200: 0x9933, 0x201: 0x9933, 0x202: 0x9933, 0x203: 0x9933, 0x204: 0x9933, 0x205: 0x8133,
+ 0x206: 0x9933, 0x207: 0x9933, 0x208: 0x9933, 0x209: 0x9933, 0x20a: 0x9933, 0x20b: 0x9933,
+ 0x20c: 0x9933, 0x20d: 0x8133, 0x20e: 0x8133, 0x20f: 0x9933, 0x210: 0x8133, 0x211: 0x9933,
+ 0x212: 0x8133, 0x213: 0x9933, 0x214: 0x9933, 0x215: 0x8134, 0x216: 0x812e, 0x217: 0x812e,
+ 0x218: 0x812e, 0x219: 0x812e, 0x21a: 0x8134, 0x21b: 0x992c, 0x21c: 0x812e, 0x21d: 0x812e,
+ 0x21e: 0x812e, 0x21f: 0x812e, 0x220: 0x812e, 0x221: 0x812a, 0x222: 0x812a, 0x223: 0x992e,
+ 0x224: 0x992e, 0x225: 0x992e, 0x226: 0x992e, 0x227: 0x992a, 0x228: 0x992a, 0x229: 0x812e,
+ 0x22a: 0x812e, 0x22b: 0x812e, 0x22c: 0x812e, 0x22d: 0x992e, 0x22e: 0x992e, 0x22f: 0x812e,
+ 0x230: 0x992e, 0x231: 0x992e, 0x232: 0x812e, 0x233: 0x812e, 0x234: 0x8101, 0x235: 0x8101,
+ 0x236: 0x8101, 0x237: 0x8101, 0x238: 0x9901, 0x239: 0x812e, 0x23a: 0x812e, 0x23b: 0x812e,
+ 0x23c: 0x812e, 0x23d: 0x8133, 0x23e: 0x8133, 0x23f: 0x8133,
+ // Block 0x9, offset 0x240
+ 0x240: 0x49c5, 0x241: 0x49ca, 0x242: 0x9933, 0x243: 0x49cf, 0x244: 0x4a88, 0x245: 0x9937,
+ 0x246: 0x8133, 0x247: 0x812e, 0x248: 0x812e, 0x249: 0x812e, 0x24a: 0x8133, 0x24b: 0x8133,
+ 0x24c: 0x8133, 0x24d: 0x812e, 0x24e: 0x812e, 0x250: 0x8133, 0x251: 0x8133,
+ 0x252: 0x8133, 0x253: 0x812e, 0x254: 0x812e, 0x255: 0x812e, 0x256: 0x812e, 0x257: 0x8133,
+ 0x258: 0x8134, 0x259: 0x812e, 0x25a: 0x812e, 0x25b: 0x8133, 0x25c: 0x8135, 0x25d: 0x8136,
+ 0x25e: 0x8136, 0x25f: 0x8135, 0x260: 0x8136, 0x261: 0x8136, 0x262: 0x8135, 0x263: 0x8133,
+ 0x264: 0x8133, 0x265: 0x8133, 0x266: 0x8133, 0x267: 0x8133, 0x268: 0x8133, 0x269: 0x8133,
+ 0x26a: 0x8133, 0x26b: 0x8133, 0x26c: 0x8133, 0x26d: 0x8133, 0x26e: 0x8133, 0x26f: 0x8133,
+ 0x274: 0x0173,
+ 0x27a: 0x42bc,
+ 0x27e: 0x0037,
+ // Block 0xa, offset 0x280
+ 0x284: 0x4271, 0x285: 0x4492,
+ 0x286: 0x3600, 0x287: 0x00ce, 0x288: 0x361e, 0x289: 0x362a, 0x28a: 0x363c,
+ 0x28c: 0x365a, 0x28e: 0x366c, 0x28f: 0x368a, 0x290: 0x3e1f, 0x291: 0xa000,
+ 0x295: 0xa000, 0x297: 0xa000,
+ 0x299: 0xa000,
+ 0x29f: 0xa000, 0x2a1: 0xa000,
+ 0x2a5: 0xa000, 0x2a9: 0xa000,
+ 0x2aa: 0x364e, 0x2ab: 0x367e, 0x2ac: 0x4815, 0x2ad: 0x36ae, 0x2ae: 0x483f, 0x2af: 0x36c0,
+ 0x2b0: 0x3e87, 0x2b1: 0xa000, 0x2b5: 0xa000,
+ 0x2b7: 0xa000, 0x2b9: 0xa000,
+ 0x2bf: 0xa000,
+ // Block 0xb, offset 0x2c0
+ 0x2c1: 0xa000, 0x2c5: 0xa000,
+ 0x2c9: 0xa000, 0x2ca: 0x4857, 0x2cb: 0x4875,
+ 0x2cc: 0x36de, 0x2cd: 0x36f6, 0x2ce: 0x488d, 0x2d0: 0x01c1, 0x2d1: 0x01d3,
+ 0x2d2: 0x01af, 0x2d3: 0x4323, 0x2d4: 0x4329, 0x2d5: 0x01fd, 0x2d6: 0x01eb,
+ 0x2f0: 0x01d9, 0x2f1: 0x01ee, 0x2f2: 0x01f1, 0x2f4: 0x018b, 0x2f5: 0x01ca,
+ 0x2f9: 0x01a9,
+ // Block 0xc, offset 0x300
+ 0x300: 0x3738, 0x301: 0x3744, 0x303: 0x3732,
+ 0x306: 0xa000, 0x307: 0x3720,
+ 0x30c: 0x3774, 0x30d: 0x375c, 0x30e: 0x3786, 0x310: 0xa000,
+ 0x313: 0xa000, 0x315: 0xa000, 0x316: 0xa000, 0x317: 0xa000,
+ 0x318: 0xa000, 0x319: 0x3768, 0x31a: 0xa000,
+ 0x31e: 0xa000, 0x323: 0xa000,
+ 0x327: 0xa000,
+ 0x32b: 0xa000, 0x32d: 0xa000,
+ 0x330: 0xa000, 0x333: 0xa000, 0x335: 0xa000,
+ 0x336: 0xa000, 0x337: 0xa000, 0x338: 0xa000, 0x339: 0x37ec, 0x33a: 0xa000,
+ 0x33e: 0xa000,
+ // Block 0xd, offset 0x340
+ 0x341: 0x374a, 0x342: 0x37ce,
+ 0x350: 0x3726, 0x351: 0x37aa,
+ 0x352: 0x372c, 0x353: 0x37b0, 0x356: 0x373e, 0x357: 0x37c2,
+ 0x358: 0xa000, 0x359: 0xa000, 0x35a: 0x3840, 0x35b: 0x3846, 0x35c: 0x3750, 0x35d: 0x37d4,
+ 0x35e: 0x3756, 0x35f: 0x37da, 0x362: 0x3762, 0x363: 0x37e6,
+ 0x364: 0x376e, 0x365: 0x37f2, 0x366: 0x377a, 0x367: 0x37fe, 0x368: 0xa000, 0x369: 0xa000,
+ 0x36a: 0x384c, 0x36b: 0x3852, 0x36c: 0x37a4, 0x36d: 0x3828, 0x36e: 0x3780, 0x36f: 0x3804,
+ 0x370: 0x378c, 0x371: 0x3810, 0x372: 0x3792, 0x373: 0x3816, 0x374: 0x3798, 0x375: 0x381c,
+ 0x378: 0x379e, 0x379: 0x3822,
+ // Block 0xe, offset 0x380
+ 0x387: 0x1d67,
+ 0x391: 0x812e,
+ 0x392: 0x8133, 0x393: 0x8133, 0x394: 0x8133, 0x395: 0x8133, 0x396: 0x812e, 0x397: 0x8133,
+ 0x398: 0x8133, 0x399: 0x8133, 0x39a: 0x812f, 0x39b: 0x812e, 0x39c: 0x8133, 0x39d: 0x8133,
+ 0x39e: 0x8133, 0x39f: 0x8133, 0x3a0: 0x8133, 0x3a1: 0x8133, 0x3a2: 0x812e, 0x3a3: 0x812e,
+ 0x3a4: 0x812e, 0x3a5: 0x812e, 0x3a6: 0x812e, 0x3a7: 0x812e, 0x3a8: 0x8133, 0x3a9: 0x8133,
+ 0x3aa: 0x812e, 0x3ab: 0x8133, 0x3ac: 0x8133, 0x3ad: 0x812f, 0x3ae: 0x8132, 0x3af: 0x8133,
+ 0x3b0: 0x8106, 0x3b1: 0x8107, 0x3b2: 0x8108, 0x3b3: 0x8109, 0x3b4: 0x810a, 0x3b5: 0x810b,
+ 0x3b6: 0x810c, 0x3b7: 0x810d, 0x3b8: 0x810e, 0x3b9: 0x810f, 0x3ba: 0x810f, 0x3bb: 0x8110,
+ 0x3bc: 0x8111, 0x3bd: 0x8112, 0x3bf: 0x8113,
+ // Block 0xf, offset 0x3c0
+ 0x3c8: 0xa000, 0x3ca: 0xa000, 0x3cb: 0x8117,
+ 0x3cc: 0x8118, 0x3cd: 0x8119, 0x3ce: 0x811a, 0x3cf: 0x811b, 0x3d0: 0x811c, 0x3d1: 0x811d,
+ 0x3d2: 0x811e, 0x3d3: 0x9933, 0x3d4: 0x9933, 0x3d5: 0x992e, 0x3d6: 0x812e, 0x3d7: 0x8133,
+ 0x3d8: 0x8133, 0x3d9: 0x8133, 0x3da: 0x8133, 0x3db: 0x8133, 0x3dc: 0x812e, 0x3dd: 0x8133,
+ 0x3de: 0x8133, 0x3df: 0x812e,
+ 0x3f0: 0x811f, 0x3f5: 0x1d8a,
+ 0x3f6: 0x2019, 0x3f7: 0x2055, 0x3f8: 0x2050,
+ // Block 0x10, offset 0x400
+ 0x413: 0x812e, 0x414: 0x8133, 0x415: 0x8133, 0x416: 0x8133, 0x417: 0x8133,
+ 0x418: 0x8133, 0x419: 0x8133, 0x41a: 0x8133, 0x41b: 0x8133, 0x41c: 0x8133, 0x41d: 0x8133,
+ 0x41e: 0x8133, 0x41f: 0x8133, 0x420: 0x8133, 0x421: 0x8133, 0x423: 0x812e,
+ 0x424: 0x8133, 0x425: 0x8133, 0x426: 0x812e, 0x427: 0x8133, 0x428: 0x8133, 0x429: 0x812e,
+ 0x42a: 0x8133, 0x42b: 0x8133, 0x42c: 0x8133, 0x42d: 0x812e, 0x42e: 0x812e, 0x42f: 0x812e,
+ 0x430: 0x8117, 0x431: 0x8118, 0x432: 0x8119, 0x433: 0x8133, 0x434: 0x8133, 0x435: 0x8133,
+ 0x436: 0x812e, 0x437: 0x8133, 0x438: 0x8133, 0x439: 0x812e, 0x43a: 0x812e, 0x43b: 0x8133,
+ 0x43c: 0x8133, 0x43d: 0x8133, 0x43e: 0x8133, 0x43f: 0x8133,
+ // Block 0x11, offset 0x440
+ 0x445: 0xa000,
+ 0x446: 0x2d33, 0x447: 0xa000, 0x448: 0x2d3b, 0x449: 0xa000, 0x44a: 0x2d43, 0x44b: 0xa000,
+ 0x44c: 0x2d4b, 0x44d: 0xa000, 0x44e: 0x2d53, 0x451: 0xa000,
+ 0x452: 0x2d5b,
+ 0x474: 0x8103, 0x475: 0x9900,
+ 0x47a: 0xa000, 0x47b: 0x2d63,
+ 0x47c: 0xa000, 0x47d: 0x2d6b, 0x47e: 0xa000, 0x47f: 0xa000,
+ // Block 0x12, offset 0x480
+ 0x480: 0x0069, 0x481: 0x006b, 0x482: 0x006f, 0x483: 0x0083, 0x484: 0x00f5, 0x485: 0x00f8,
+ 0x486: 0x0416, 0x487: 0x0085, 0x488: 0x0089, 0x489: 0x008b, 0x48a: 0x0104, 0x48b: 0x0107,
+ 0x48c: 0x010a, 0x48d: 0x008f, 0x48f: 0x0097, 0x490: 0x009b, 0x491: 0x00e0,
+ 0x492: 0x009f, 0x493: 0x00fe, 0x494: 0x041a, 0x495: 0x041e, 0x496: 0x00a1, 0x497: 0x00a9,
+ 0x498: 0x00ab, 0x499: 0x0426, 0x49a: 0x012b, 0x49b: 0x00ad, 0x49c: 0x042a, 0x49d: 0x01c1,
+ 0x49e: 0x01c4, 0x49f: 0x01c7, 0x4a0: 0x01fd, 0x4a1: 0x0200, 0x4a2: 0x0093, 0x4a3: 0x00a5,
+ 0x4a4: 0x00ab, 0x4a5: 0x00ad, 0x4a6: 0x01c1, 0x4a7: 0x01c4, 0x4a8: 0x01ee, 0x4a9: 0x01fd,
+ 0x4aa: 0x0200,
+ 0x4b8: 0x020f,
+ // Block 0x13, offset 0x4c0
+ 0x4db: 0x00fb, 0x4dc: 0x0087, 0x4dd: 0x0101,
+ 0x4de: 0x00d4, 0x4df: 0x010a, 0x4e0: 0x008d, 0x4e1: 0x010d, 0x4e2: 0x0110, 0x4e3: 0x0116,
+ 0x4e4: 0x011c, 0x4e5: 0x011f, 0x4e6: 0x0122, 0x4e7: 0x042e, 0x4e8: 0x016d, 0x4e9: 0x0128,
+ 0x4ea: 0x0432, 0x4eb: 0x0170, 0x4ec: 0x0131, 0x4ed: 0x012e, 0x4ee: 0x0134, 0x4ef: 0x0137,
+ 0x4f0: 0x013a, 0x4f1: 0x013d, 0x4f2: 0x0140, 0x4f3: 0x014c, 0x4f4: 0x014f, 0x4f5: 0x00ec,
+ 0x4f6: 0x0152, 0x4f7: 0x0155, 0x4f8: 0x0422, 0x4f9: 0x0158, 0x4fa: 0x015b, 0x4fb: 0x00b5,
+ 0x4fc: 0x0161, 0x4fd: 0x0164, 0x4fe: 0x0167, 0x4ff: 0x01d3,
+ // Block 0x14, offset 0x500
+ 0x500: 0x8133, 0x501: 0x8133, 0x502: 0x812e, 0x503: 0x8133, 0x504: 0x8133, 0x505: 0x8133,
+ 0x506: 0x8133, 0x507: 0x8133, 0x508: 0x8133, 0x509: 0x8133, 0x50a: 0x812e, 0x50b: 0x8133,
+ 0x50c: 0x8133, 0x50d: 0x8136, 0x50e: 0x812b, 0x50f: 0x812e, 0x510: 0x812a, 0x511: 0x8133,
+ 0x512: 0x8133, 0x513: 0x8133, 0x514: 0x8133, 0x515: 0x8133, 0x516: 0x8133, 0x517: 0x8133,
+ 0x518: 0x8133, 0x519: 0x8133, 0x51a: 0x8133, 0x51b: 0x8133, 0x51c: 0x8133, 0x51d: 0x8133,
+ 0x51e: 0x8133, 0x51f: 0x8133, 0x520: 0x8133, 0x521: 0x8133, 0x522: 0x8133, 0x523: 0x8133,
+ 0x524: 0x8133, 0x525: 0x8133, 0x526: 0x8133, 0x527: 0x8133, 0x528: 0x8133, 0x529: 0x8133,
+ 0x52a: 0x8133, 0x52b: 0x8133, 0x52c: 0x8133, 0x52d: 0x8133, 0x52e: 0x8133, 0x52f: 0x8133,
+ 0x530: 0x8133, 0x531: 0x8133, 0x532: 0x8133, 0x533: 0x8133, 0x534: 0x8133, 0x535: 0x8133,
+ 0x536: 0x8134, 0x537: 0x8132, 0x538: 0x8132, 0x539: 0x812e, 0x53b: 0x8133,
+ 0x53c: 0x8135, 0x53d: 0x812e, 0x53e: 0x8133, 0x53f: 0x812e,
+ // Block 0x15, offset 0x540
+ 0x540: 0x2fae, 0x541: 0x32ba, 0x542: 0x2fb8, 0x543: 0x32c4, 0x544: 0x2fbd, 0x545: 0x32c9,
+ 0x546: 0x2fc2, 0x547: 0x32ce, 0x548: 0x38e3, 0x549: 0x3a72, 0x54a: 0x2fdb, 0x54b: 0x32e7,
+ 0x54c: 0x2fe5, 0x54d: 0x32f1, 0x54e: 0x2ff4, 0x54f: 0x3300, 0x550: 0x2fea, 0x551: 0x32f6,
+ 0x552: 0x2fef, 0x553: 0x32fb, 0x554: 0x3906, 0x555: 0x3a95, 0x556: 0x390d, 0x557: 0x3a9c,
+ 0x558: 0x3030, 0x559: 0x333c, 0x55a: 0x3035, 0x55b: 0x3341, 0x55c: 0x391b, 0x55d: 0x3aaa,
+ 0x55e: 0x303a, 0x55f: 0x3346, 0x560: 0x3049, 0x561: 0x3355, 0x562: 0x3067, 0x563: 0x3373,
+ 0x564: 0x3076, 0x565: 0x3382, 0x566: 0x306c, 0x567: 0x3378, 0x568: 0x307b, 0x569: 0x3387,
+ 0x56a: 0x3080, 0x56b: 0x338c, 0x56c: 0x30c6, 0x56d: 0x33d2, 0x56e: 0x3922, 0x56f: 0x3ab1,
+ 0x570: 0x30d0, 0x571: 0x33e1, 0x572: 0x30da, 0x573: 0x33eb, 0x574: 0x30e4, 0x575: 0x33f5,
+ 0x576: 0x46db, 0x577: 0x476c, 0x578: 0x3929, 0x579: 0x3ab8, 0x57a: 0x30fd, 0x57b: 0x340e,
+ 0x57c: 0x30f8, 0x57d: 0x3409, 0x57e: 0x3102, 0x57f: 0x3413,
+ // Block 0x16, offset 0x580
+ 0x580: 0x3107, 0x581: 0x3418, 0x582: 0x310c, 0x583: 0x341d, 0x584: 0x3120, 0x585: 0x3431,
+ 0x586: 0x312a, 0x587: 0x343b, 0x588: 0x3139, 0x589: 0x344a, 0x58a: 0x3134, 0x58b: 0x3445,
+ 0x58c: 0x394c, 0x58d: 0x3adb, 0x58e: 0x395a, 0x58f: 0x3ae9, 0x590: 0x3961, 0x591: 0x3af0,
+ 0x592: 0x3968, 0x593: 0x3af7, 0x594: 0x3166, 0x595: 0x3477, 0x596: 0x316b, 0x597: 0x347c,
+ 0x598: 0x3175, 0x599: 0x3486, 0x59a: 0x4708, 0x59b: 0x4799, 0x59c: 0x39ae, 0x59d: 0x3b3d,
+ 0x59e: 0x318e, 0x59f: 0x349f, 0x5a0: 0x3198, 0x5a1: 0x34a9, 0x5a2: 0x4717, 0x5a3: 0x47a8,
+ 0x5a4: 0x39b5, 0x5a5: 0x3b44, 0x5a6: 0x39bc, 0x5a7: 0x3b4b, 0x5a8: 0x39c3, 0x5a9: 0x3b52,
+ 0x5aa: 0x31a7, 0x5ab: 0x34b8, 0x5ac: 0x31b1, 0x5ad: 0x34c7, 0x5ae: 0x31c5, 0x5af: 0x34db,
+ 0x5b0: 0x31c0, 0x5b1: 0x34d6, 0x5b2: 0x3201, 0x5b3: 0x3517, 0x5b4: 0x3210, 0x5b5: 0x3526,
+ 0x5b6: 0x320b, 0x5b7: 0x3521, 0x5b8: 0x39ca, 0x5b9: 0x3b59, 0x5ba: 0x39d1, 0x5bb: 0x3b60,
+ 0x5bc: 0x3215, 0x5bd: 0x352b, 0x5be: 0x321a, 0x5bf: 0x3530,
+ // Block 0x17, offset 0x5c0
+ 0x5c0: 0x321f, 0x5c1: 0x3535, 0x5c2: 0x3224, 0x5c3: 0x353a, 0x5c4: 0x3233, 0x5c5: 0x3549,
+ 0x5c6: 0x322e, 0x5c7: 0x3544, 0x5c8: 0x3238, 0x5c9: 0x3553, 0x5ca: 0x323d, 0x5cb: 0x3558,
+ 0x5cc: 0x3242, 0x5cd: 0x355d, 0x5ce: 0x3260, 0x5cf: 0x357b, 0x5d0: 0x3279, 0x5d1: 0x3599,
+ 0x5d2: 0x3288, 0x5d3: 0x35a8, 0x5d4: 0x328d, 0x5d5: 0x35ad, 0x5d6: 0x3391, 0x5d7: 0x34bd,
+ 0x5d8: 0x354e, 0x5d9: 0x358a, 0x5da: 0x1be6, 0x5db: 0x42ee,
+ 0x5e0: 0x46b8, 0x5e1: 0x4749, 0x5e2: 0x2f9a, 0x5e3: 0x32a6,
+ 0x5e4: 0x388f, 0x5e5: 0x3a1e, 0x5e6: 0x3888, 0x5e7: 0x3a17, 0x5e8: 0x389d, 0x5e9: 0x3a2c,
+ 0x5ea: 0x3896, 0x5eb: 0x3a25, 0x5ec: 0x38d5, 0x5ed: 0x3a64, 0x5ee: 0x38ab, 0x5ef: 0x3a3a,
+ 0x5f0: 0x38a4, 0x5f1: 0x3a33, 0x5f2: 0x38b9, 0x5f3: 0x3a48, 0x5f4: 0x38b2, 0x5f5: 0x3a41,
+ 0x5f6: 0x38dc, 0x5f7: 0x3a6b, 0x5f8: 0x46cc, 0x5f9: 0x475d, 0x5fa: 0x3017, 0x5fb: 0x3323,
+ 0x5fc: 0x3003, 0x5fd: 0x330f, 0x5fe: 0x38f1, 0x5ff: 0x3a80,
+ // Block 0x18, offset 0x600
+ 0x600: 0x38ea, 0x601: 0x3a79, 0x602: 0x38ff, 0x603: 0x3a8e, 0x604: 0x38f8, 0x605: 0x3a87,
+ 0x606: 0x3914, 0x607: 0x3aa3, 0x608: 0x30a8, 0x609: 0x33b4, 0x60a: 0x30bc, 0x60b: 0x33c8,
+ 0x60c: 0x46fe, 0x60d: 0x478f, 0x60e: 0x314d, 0x60f: 0x345e, 0x610: 0x3937, 0x611: 0x3ac6,
+ 0x612: 0x3930, 0x613: 0x3abf, 0x614: 0x3945, 0x615: 0x3ad4, 0x616: 0x393e, 0x617: 0x3acd,
+ 0x618: 0x39a0, 0x619: 0x3b2f, 0x61a: 0x3984, 0x61b: 0x3b13, 0x61c: 0x397d, 0x61d: 0x3b0c,
+ 0x61e: 0x3992, 0x61f: 0x3b21, 0x620: 0x398b, 0x621: 0x3b1a, 0x622: 0x3999, 0x623: 0x3b28,
+ 0x624: 0x31fc, 0x625: 0x3512, 0x626: 0x31de, 0x627: 0x34f4, 0x628: 0x39fb, 0x629: 0x3b8a,
+ 0x62a: 0x39f4, 0x62b: 0x3b83, 0x62c: 0x3a09, 0x62d: 0x3b98, 0x62e: 0x3a02, 0x62f: 0x3b91,
+ 0x630: 0x3a10, 0x631: 0x3b9f, 0x632: 0x3247, 0x633: 0x3562, 0x634: 0x326f, 0x635: 0x358f,
+ 0x636: 0x326a, 0x637: 0x3585, 0x638: 0x3256, 0x639: 0x3571,
+ // Block 0x19, offset 0x640
+ 0x640: 0x481b, 0x641: 0x4821, 0x642: 0x4935, 0x643: 0x494d, 0x644: 0x493d, 0x645: 0x4955,
+ 0x646: 0x4945, 0x647: 0x495d, 0x648: 0x47c1, 0x649: 0x47c7, 0x64a: 0x48a5, 0x64b: 0x48bd,
+ 0x64c: 0x48ad, 0x64d: 0x48c5, 0x64e: 0x48b5, 0x64f: 0x48cd, 0x650: 0x482d, 0x651: 0x4833,
+ 0x652: 0x3dcf, 0x653: 0x3ddf, 0x654: 0x3dd7, 0x655: 0x3de7,
+ 0x658: 0x47cd, 0x659: 0x47d3, 0x65a: 0x3cff, 0x65b: 0x3d0f, 0x65c: 0x3d07, 0x65d: 0x3d17,
+ 0x660: 0x4845, 0x661: 0x484b, 0x662: 0x4965, 0x663: 0x497d,
+ 0x664: 0x496d, 0x665: 0x4985, 0x666: 0x4975, 0x667: 0x498d, 0x668: 0x47d9, 0x669: 0x47df,
+ 0x66a: 0x48d5, 0x66b: 0x48ed, 0x66c: 0x48dd, 0x66d: 0x48f5, 0x66e: 0x48e5, 0x66f: 0x48fd,
+ 0x670: 0x485d, 0x671: 0x4863, 0x672: 0x3e2f, 0x673: 0x3e47, 0x674: 0x3e37, 0x675: 0x3e4f,
+ 0x676: 0x3e3f, 0x677: 0x3e57, 0x678: 0x47e5, 0x679: 0x47eb, 0x67a: 0x3d2f, 0x67b: 0x3d47,
+ 0x67c: 0x3d37, 0x67d: 0x3d4f, 0x67e: 0x3d3f, 0x67f: 0x3d57,
+ // Block 0x1a, offset 0x680
+ 0x680: 0x4869, 0x681: 0x486f, 0x682: 0x3e5f, 0x683: 0x3e6f, 0x684: 0x3e67, 0x685: 0x3e77,
+ 0x688: 0x47f1, 0x689: 0x47f7, 0x68a: 0x3d5f, 0x68b: 0x3d6f,
+ 0x68c: 0x3d67, 0x68d: 0x3d77, 0x690: 0x487b, 0x691: 0x4881,
+ 0x692: 0x3e97, 0x693: 0x3eaf, 0x694: 0x3e9f, 0x695: 0x3eb7, 0x696: 0x3ea7, 0x697: 0x3ebf,
+ 0x699: 0x47fd, 0x69b: 0x3d7f, 0x69d: 0x3d87,
+ 0x69f: 0x3d8f, 0x6a0: 0x4893, 0x6a1: 0x4899, 0x6a2: 0x4995, 0x6a3: 0x49ad,
+ 0x6a4: 0x499d, 0x6a5: 0x49b5, 0x6a6: 0x49a5, 0x6a7: 0x49bd, 0x6a8: 0x4803, 0x6a9: 0x4809,
+ 0x6aa: 0x4905, 0x6ab: 0x491d, 0x6ac: 0x490d, 0x6ad: 0x4925, 0x6ae: 0x4915, 0x6af: 0x492d,
+ 0x6b0: 0x480f, 0x6b1: 0x4335, 0x6b2: 0x36a8, 0x6b3: 0x433b, 0x6b4: 0x4839, 0x6b5: 0x4341,
+ 0x6b6: 0x36ba, 0x6b7: 0x4347, 0x6b8: 0x36d8, 0x6b9: 0x434d, 0x6ba: 0x36f0, 0x6bb: 0x4353,
+ 0x6bc: 0x4887, 0x6bd: 0x4359,
+ // Block 0x1b, offset 0x6c0
+ 0x6c0: 0x3db7, 0x6c1: 0x3dbf, 0x6c2: 0x419b, 0x6c3: 0x41b9, 0x6c4: 0x41a5, 0x6c5: 0x41c3,
+ 0x6c6: 0x41af, 0x6c7: 0x41cd, 0x6c8: 0x3cef, 0x6c9: 0x3cf7, 0x6ca: 0x40e7, 0x6cb: 0x4105,
+ 0x6cc: 0x40f1, 0x6cd: 0x410f, 0x6ce: 0x40fb, 0x6cf: 0x4119, 0x6d0: 0x3dff, 0x6d1: 0x3e07,
+ 0x6d2: 0x41d7, 0x6d3: 0x41f5, 0x6d4: 0x41e1, 0x6d5: 0x41ff, 0x6d6: 0x41eb, 0x6d7: 0x4209,
+ 0x6d8: 0x3d1f, 0x6d9: 0x3d27, 0x6da: 0x4123, 0x6db: 0x4141, 0x6dc: 0x412d, 0x6dd: 0x414b,
+ 0x6de: 0x4137, 0x6df: 0x4155, 0x6e0: 0x3ed7, 0x6e1: 0x3edf, 0x6e2: 0x4213, 0x6e3: 0x4231,
+ 0x6e4: 0x421d, 0x6e5: 0x423b, 0x6e6: 0x4227, 0x6e7: 0x4245, 0x6e8: 0x3d97, 0x6e9: 0x3d9f,
+ 0x6ea: 0x415f, 0x6eb: 0x417d, 0x6ec: 0x4169, 0x6ed: 0x4187, 0x6ee: 0x4173, 0x6ef: 0x4191,
+ 0x6f0: 0x369c, 0x6f1: 0x3696, 0x6f2: 0x3da7, 0x6f3: 0x36a2, 0x6f4: 0x3daf,
+ 0x6f6: 0x4827, 0x6f7: 0x3dc7, 0x6f8: 0x360c, 0x6f9: 0x3606, 0x6fa: 0x35fa, 0x6fb: 0x4305,
+ 0x6fc: 0x3612, 0x6fd: 0x429e, 0x6fe: 0x01d6, 0x6ff: 0x429e,
+ // Block 0x1c, offset 0x700
+ 0x700: 0x42b7, 0x701: 0x4499, 0x702: 0x3def, 0x703: 0x36b4, 0x704: 0x3df7,
+ 0x706: 0x4851, 0x707: 0x3e0f, 0x708: 0x3618, 0x709: 0x430b, 0x70a: 0x3624, 0x70b: 0x4311,
+ 0x70c: 0x3630, 0x70d: 0x44a0, 0x70e: 0x44a7, 0x70f: 0x44ae, 0x710: 0x36cc, 0x711: 0x36c6,
+ 0x712: 0x3e17, 0x713: 0x44fb, 0x716: 0x36d2, 0x717: 0x3e27,
+ 0x718: 0x3648, 0x719: 0x3642, 0x71a: 0x3636, 0x71b: 0x4317, 0x71d: 0x44b5,
+ 0x71e: 0x44bc, 0x71f: 0x44c3, 0x720: 0x3702, 0x721: 0x36fc, 0x722: 0x3e7f, 0x723: 0x4503,
+ 0x724: 0x36e4, 0x725: 0x36ea, 0x726: 0x3708, 0x727: 0x3e8f, 0x728: 0x3678, 0x729: 0x3672,
+ 0x72a: 0x3666, 0x72b: 0x4323, 0x72c: 0x3660, 0x72d: 0x448b, 0x72e: 0x4492, 0x72f: 0x0081,
+ 0x732: 0x3ec7, 0x733: 0x370e, 0x734: 0x3ecf,
+ 0x736: 0x489f, 0x737: 0x3ee7, 0x738: 0x3654, 0x739: 0x431d, 0x73a: 0x3684, 0x73b: 0x432f,
+ 0x73c: 0x3690, 0x73d: 0x4271, 0x73e: 0x42a3,
+ // Block 0x1d, offset 0x740
+ 0x740: 0x1bde, 0x741: 0x1be2, 0x742: 0x0047, 0x743: 0x1c5a, 0x745: 0x1bee,
+ 0x746: 0x1bf2, 0x747: 0x00e9, 0x749: 0x1c5e, 0x74a: 0x008f, 0x74b: 0x0051,
+ 0x74c: 0x0051, 0x74d: 0x0051, 0x74e: 0x0091, 0x74f: 0x00da, 0x750: 0x0053, 0x751: 0x0053,
+ 0x752: 0x0059, 0x753: 0x0099, 0x755: 0x005d, 0x756: 0x1993,
+ 0x759: 0x0061, 0x75a: 0x0063, 0x75b: 0x0065, 0x75c: 0x0065, 0x75d: 0x0065,
+ 0x760: 0x19a5, 0x761: 0x1bce, 0x762: 0x19ae,
+ 0x764: 0x0075, 0x766: 0x01bb, 0x768: 0x0075,
+ 0x76a: 0x0057, 0x76b: 0x42e9, 0x76c: 0x0045, 0x76d: 0x0047, 0x76f: 0x008b,
+ 0x770: 0x004b, 0x771: 0x004d, 0x773: 0x005b, 0x774: 0x009f, 0x775: 0x0218,
+ 0x776: 0x021b, 0x777: 0x021e, 0x778: 0x0221, 0x779: 0x0093, 0x77b: 0x1b9e,
+ 0x77c: 0x01eb, 0x77d: 0x01c4, 0x77e: 0x017c, 0x77f: 0x01a3,
+ // Block 0x1e, offset 0x780
+ 0x780: 0x0466, 0x785: 0x0049,
+ 0x786: 0x0089, 0x787: 0x008b, 0x788: 0x0093, 0x789: 0x0095,
+ 0x790: 0x2234, 0x791: 0x2240,
+ 0x792: 0x22f4, 0x793: 0x221c, 0x794: 0x22a0, 0x795: 0x2228, 0x796: 0x22a6, 0x797: 0x22be,
+ 0x798: 0x22ca, 0x799: 0x222e, 0x79a: 0x22d0, 0x79b: 0x223a, 0x79c: 0x22c4, 0x79d: 0x22d6,
+ 0x79e: 0x22dc, 0x79f: 0x1cc2, 0x7a0: 0x0053, 0x7a1: 0x195d, 0x7a2: 0x1baa, 0x7a3: 0x1966,
+ 0x7a4: 0x006d, 0x7a5: 0x19b1, 0x7a6: 0x1bd6, 0x7a7: 0x1d4e, 0x7a8: 0x1969, 0x7a9: 0x0071,
+ 0x7aa: 0x19bd, 0x7ab: 0x1bda, 0x7ac: 0x0059, 0x7ad: 0x0047, 0x7ae: 0x0049, 0x7af: 0x005b,
+ 0x7b0: 0x0093, 0x7b1: 0x19ea, 0x7b2: 0x1c1e, 0x7b3: 0x19f3, 0x7b4: 0x00ad, 0x7b5: 0x1a68,
+ 0x7b6: 0x1c52, 0x7b7: 0x1d62, 0x7b8: 0x19f6, 0x7b9: 0x00b1, 0x7ba: 0x1a6b, 0x7bb: 0x1c56,
+ 0x7bc: 0x0099, 0x7bd: 0x0087, 0x7be: 0x0089, 0x7bf: 0x009b,
+ // Block 0x1f, offset 0x7c0
+ 0x7c1: 0x3c1d, 0x7c3: 0xa000, 0x7c4: 0x3c24, 0x7c5: 0xa000,
+ 0x7c7: 0x3c2b, 0x7c8: 0xa000, 0x7c9: 0x3c32,
+ 0x7cd: 0xa000,
+ 0x7e0: 0x2f7c, 0x7e1: 0xa000, 0x7e2: 0x3c40,
+ 0x7e4: 0xa000, 0x7e5: 0xa000,
+ 0x7ed: 0x3c39, 0x7ee: 0x2f77, 0x7ef: 0x2f81,
+ 0x7f0: 0x3c47, 0x7f1: 0x3c4e, 0x7f2: 0xa000, 0x7f3: 0xa000, 0x7f4: 0x3c55, 0x7f5: 0x3c5c,
+ 0x7f6: 0xa000, 0x7f7: 0xa000, 0x7f8: 0x3c63, 0x7f9: 0x3c6a, 0x7fa: 0xa000, 0x7fb: 0xa000,
+ 0x7fc: 0xa000, 0x7fd: 0xa000,
+ // Block 0x20, offset 0x800
+ 0x800: 0x3c71, 0x801: 0x3c78, 0x802: 0xa000, 0x803: 0xa000, 0x804: 0x3c8d, 0x805: 0x3c94,
+ 0x806: 0xa000, 0x807: 0xa000, 0x808: 0x3c9b, 0x809: 0x3ca2,
+ 0x811: 0xa000,
+ 0x812: 0xa000,
+ 0x822: 0xa000,
+ 0x828: 0xa000, 0x829: 0xa000,
+ 0x82b: 0xa000, 0x82c: 0x3cb7, 0x82d: 0x3cbe, 0x82e: 0x3cc5, 0x82f: 0x3ccc,
+ 0x832: 0xa000, 0x833: 0xa000, 0x834: 0xa000, 0x835: 0xa000,
+ // Block 0x21, offset 0x840
+ 0x860: 0x0023, 0x861: 0x0025, 0x862: 0x0027, 0x863: 0x0029,
+ 0x864: 0x002b, 0x865: 0x002d, 0x866: 0x002f, 0x867: 0x0031, 0x868: 0x0033, 0x869: 0x1885,
+ 0x86a: 0x1888, 0x86b: 0x188b, 0x86c: 0x188e, 0x86d: 0x1891, 0x86e: 0x1894, 0x86f: 0x1897,
+ 0x870: 0x189a, 0x871: 0x189d, 0x872: 0x18a0, 0x873: 0x18a9, 0x874: 0x1a6e, 0x875: 0x1a72,
+ 0x876: 0x1a76, 0x877: 0x1a7a, 0x878: 0x1a7e, 0x879: 0x1a82, 0x87a: 0x1a86, 0x87b: 0x1a8a,
+ 0x87c: 0x1a8e, 0x87d: 0x1c86, 0x87e: 0x1c8b, 0x87f: 0x1c90,
+ // Block 0x22, offset 0x880
+ 0x880: 0x1c95, 0x881: 0x1c9a, 0x882: 0x1c9f, 0x883: 0x1ca4, 0x884: 0x1ca9, 0x885: 0x1cae,
+ 0x886: 0x1cb3, 0x887: 0x1cb8, 0x888: 0x1882, 0x889: 0x18a6, 0x88a: 0x18ca, 0x88b: 0x18ee,
+ 0x88c: 0x1912, 0x88d: 0x191b, 0x88e: 0x1921, 0x88f: 0x1927, 0x890: 0x192d, 0x891: 0x1b66,
+ 0x892: 0x1b6a, 0x893: 0x1b6e, 0x894: 0x1b72, 0x895: 0x1b76, 0x896: 0x1b7a, 0x897: 0x1b7e,
+ 0x898: 0x1b82, 0x899: 0x1b86, 0x89a: 0x1b8a, 0x89b: 0x1b8e, 0x89c: 0x1afa, 0x89d: 0x1afe,
+ 0x89e: 0x1b02, 0x89f: 0x1b06, 0x8a0: 0x1b0a, 0x8a1: 0x1b0e, 0x8a2: 0x1b12, 0x8a3: 0x1b16,
+ 0x8a4: 0x1b1a, 0x8a5: 0x1b1e, 0x8a6: 0x1b22, 0x8a7: 0x1b26, 0x8a8: 0x1b2a, 0x8a9: 0x1b2e,
+ 0x8aa: 0x1b32, 0x8ab: 0x1b36, 0x8ac: 0x1b3a, 0x8ad: 0x1b3e, 0x8ae: 0x1b42, 0x8af: 0x1b46,
+ 0x8b0: 0x1b4a, 0x8b1: 0x1b4e, 0x8b2: 0x1b52, 0x8b3: 0x1b56, 0x8b4: 0x1b5a, 0x8b5: 0x1b5e,
+ 0x8b6: 0x0043, 0x8b7: 0x0045, 0x8b8: 0x0047, 0x8b9: 0x0049, 0x8ba: 0x004b, 0x8bb: 0x004d,
+ 0x8bc: 0x004f, 0x8bd: 0x0051, 0x8be: 0x0053, 0x8bf: 0x0055,
+ // Block 0x23, offset 0x8c0
+ 0x8c0: 0x06c2, 0x8c1: 0x06e6, 0x8c2: 0x06f2, 0x8c3: 0x0702, 0x8c4: 0x070a, 0x8c5: 0x0716,
+ 0x8c6: 0x071e, 0x8c7: 0x0726, 0x8c8: 0x0732, 0x8c9: 0x0786, 0x8ca: 0x079e, 0x8cb: 0x07ae,
+ 0x8cc: 0x07be, 0x8cd: 0x07ce, 0x8ce: 0x07de, 0x8cf: 0x07fe, 0x8d0: 0x0802, 0x8d1: 0x0806,
+ 0x8d2: 0x083a, 0x8d3: 0x0862, 0x8d4: 0x0872, 0x8d5: 0x087a, 0x8d6: 0x087e, 0x8d7: 0x088a,
+ 0x8d8: 0x08a6, 0x8d9: 0x08aa, 0x8da: 0x08c2, 0x8db: 0x08c6, 0x8dc: 0x08ce, 0x8dd: 0x08de,
+ 0x8de: 0x097a, 0x8df: 0x098e, 0x8e0: 0x09ce, 0x8e1: 0x09e2, 0x8e2: 0x09ea, 0x8e3: 0x09ee,
+ 0x8e4: 0x09fe, 0x8e5: 0x0a1a, 0x8e6: 0x0a46, 0x8e7: 0x0a52, 0x8e8: 0x0a72, 0x8e9: 0x0a7e,
+ 0x8ea: 0x0a82, 0x8eb: 0x0a86, 0x8ec: 0x0a9e, 0x8ed: 0x0aa2, 0x8ee: 0x0ace, 0x8ef: 0x0ada,
+ 0x8f0: 0x0ae2, 0x8f1: 0x0aea, 0x8f2: 0x0afa, 0x8f3: 0x0b02, 0x8f4: 0x0b0a, 0x8f5: 0x0b36,
+ 0x8f6: 0x0b3a, 0x8f7: 0x0b42, 0x8f8: 0x0b46, 0x8f9: 0x0b4e, 0x8fa: 0x0b56, 0x8fb: 0x0b66,
+ 0x8fc: 0x0b82, 0x8fd: 0x0bfa, 0x8fe: 0x0c0e, 0x8ff: 0x0c12,
+ // Block 0x24, offset 0x900
+ 0x900: 0x0c92, 0x901: 0x0c96, 0x902: 0x0caa, 0x903: 0x0cae, 0x904: 0x0cb6, 0x905: 0x0cbe,
+ 0x906: 0x0cc6, 0x907: 0x0cd2, 0x908: 0x0cfa, 0x909: 0x0d0a, 0x90a: 0x0d1e, 0x90b: 0x0d8e,
+ 0x90c: 0x0d9a, 0x90d: 0x0daa, 0x90e: 0x0db6, 0x90f: 0x0dc2, 0x910: 0x0dca, 0x911: 0x0dce,
+ 0x912: 0x0dd2, 0x913: 0x0dd6, 0x914: 0x0dda, 0x915: 0x0e92, 0x916: 0x0eda, 0x917: 0x0ee6,
+ 0x918: 0x0eea, 0x919: 0x0eee, 0x91a: 0x0ef2, 0x91b: 0x0efa, 0x91c: 0x0efe, 0x91d: 0x0f12,
+ 0x91e: 0x0f2e, 0x91f: 0x0f36, 0x920: 0x0f76, 0x921: 0x0f7a, 0x922: 0x0f82, 0x923: 0x0f86,
+ 0x924: 0x0f8e, 0x925: 0x0f92, 0x926: 0x0fb6, 0x927: 0x0fba, 0x928: 0x0fd6, 0x929: 0x0fda,
+ 0x92a: 0x0fde, 0x92b: 0x0fe2, 0x92c: 0x0ff6, 0x92d: 0x101a, 0x92e: 0x101e, 0x92f: 0x1022,
+ 0x930: 0x1046, 0x931: 0x1086, 0x932: 0x108a, 0x933: 0x10aa, 0x934: 0x10ba, 0x935: 0x10c2,
+ 0x936: 0x10e2, 0x937: 0x1106, 0x938: 0x114a, 0x939: 0x1152, 0x93a: 0x1166, 0x93b: 0x1172,
+ 0x93c: 0x117a, 0x93d: 0x1182, 0x93e: 0x1186, 0x93f: 0x118a,
+ // Block 0x25, offset 0x940
+ 0x940: 0x11a2, 0x941: 0x11a6, 0x942: 0x11c2, 0x943: 0x11ca, 0x944: 0x11d2, 0x945: 0x11d6,
+ 0x946: 0x11e2, 0x947: 0x11ea, 0x948: 0x11ee, 0x949: 0x11f2, 0x94a: 0x11fa, 0x94b: 0x11fe,
+ 0x94c: 0x129e, 0x94d: 0x12b2, 0x94e: 0x12e6, 0x94f: 0x12ea, 0x950: 0x12f2, 0x951: 0x131e,
+ 0x952: 0x1326, 0x953: 0x132e, 0x954: 0x1336, 0x955: 0x1372, 0x956: 0x1376, 0x957: 0x137e,
+ 0x958: 0x1382, 0x959: 0x1386, 0x95a: 0x13b2, 0x95b: 0x13b6, 0x95c: 0x13be, 0x95d: 0x13d2,
+ 0x95e: 0x13d6, 0x95f: 0x13f2, 0x960: 0x13fa, 0x961: 0x13fe, 0x962: 0x1422, 0x963: 0x1442,
+ 0x964: 0x1456, 0x965: 0x145a, 0x966: 0x1462, 0x967: 0x148e, 0x968: 0x1492, 0x969: 0x14a2,
+ 0x96a: 0x14c6, 0x96b: 0x14d2, 0x96c: 0x14e2, 0x96d: 0x14fa, 0x96e: 0x1502, 0x96f: 0x1506,
+ 0x970: 0x150a, 0x971: 0x150e, 0x972: 0x151a, 0x973: 0x151e, 0x974: 0x1526, 0x975: 0x1542,
+ 0x976: 0x1546, 0x977: 0x154a, 0x978: 0x1562, 0x979: 0x1566, 0x97a: 0x156e, 0x97b: 0x1582,
+ 0x97c: 0x1586, 0x97d: 0x158a, 0x97e: 0x1592, 0x97f: 0x1596,
+ // Block 0x26, offset 0x980
+ 0x986: 0xa000, 0x98b: 0xa000,
+ 0x98c: 0x3f1f, 0x98d: 0xa000, 0x98e: 0x3f27, 0x98f: 0xa000, 0x990: 0x3f2f, 0x991: 0xa000,
+ 0x992: 0x3f37, 0x993: 0xa000, 0x994: 0x3f3f, 0x995: 0xa000, 0x996: 0x3f47, 0x997: 0xa000,
+ 0x998: 0x3f4f, 0x999: 0xa000, 0x99a: 0x3f57, 0x99b: 0xa000, 0x99c: 0x3f5f, 0x99d: 0xa000,
+ 0x99e: 0x3f67, 0x99f: 0xa000, 0x9a0: 0x3f6f, 0x9a1: 0xa000, 0x9a2: 0x3f77,
+ 0x9a4: 0xa000, 0x9a5: 0x3f7f, 0x9a6: 0xa000, 0x9a7: 0x3f87, 0x9a8: 0xa000, 0x9a9: 0x3f8f,
+ 0x9af: 0xa000,
+ 0x9b0: 0x3f97, 0x9b1: 0x3f9f, 0x9b2: 0xa000, 0x9b3: 0x3fa7, 0x9b4: 0x3faf, 0x9b5: 0xa000,
+ 0x9b6: 0x3fb7, 0x9b7: 0x3fbf, 0x9b8: 0xa000, 0x9b9: 0x3fc7, 0x9ba: 0x3fcf, 0x9bb: 0xa000,
+ 0x9bc: 0x3fd7, 0x9bd: 0x3fdf,
+ // Block 0x27, offset 0x9c0
+ 0x9d4: 0x3f17,
+ 0x9d9: 0x9904, 0x9da: 0x9904, 0x9db: 0x42f3, 0x9dc: 0x42f9, 0x9dd: 0xa000,
+ 0x9de: 0x3fe7, 0x9df: 0x26ba,
+ 0x9e6: 0xa000,
+ 0x9eb: 0xa000, 0x9ec: 0x3ff7, 0x9ed: 0xa000, 0x9ee: 0x3fff, 0x9ef: 0xa000,
+ 0x9f0: 0x4007, 0x9f1: 0xa000, 0x9f2: 0x400f, 0x9f3: 0xa000, 0x9f4: 0x4017, 0x9f5: 0xa000,
+ 0x9f6: 0x401f, 0x9f7: 0xa000, 0x9f8: 0x4027, 0x9f9: 0xa000, 0x9fa: 0x402f, 0x9fb: 0xa000,
+ 0x9fc: 0x4037, 0x9fd: 0xa000, 0x9fe: 0x403f, 0x9ff: 0xa000,
+ // Block 0x28, offset 0xa00
+ 0xa00: 0x4047, 0xa01: 0xa000, 0xa02: 0x404f, 0xa04: 0xa000, 0xa05: 0x4057,
+ 0xa06: 0xa000, 0xa07: 0x405f, 0xa08: 0xa000, 0xa09: 0x4067,
+ 0xa0f: 0xa000, 0xa10: 0x406f, 0xa11: 0x4077,
+ 0xa12: 0xa000, 0xa13: 0x407f, 0xa14: 0x4087, 0xa15: 0xa000, 0xa16: 0x408f, 0xa17: 0x4097,
+ 0xa18: 0xa000, 0xa19: 0x409f, 0xa1a: 0x40a7, 0xa1b: 0xa000, 0xa1c: 0x40af, 0xa1d: 0x40b7,
+ 0xa2f: 0xa000,
+ 0xa30: 0xa000, 0xa31: 0xa000, 0xa32: 0xa000, 0xa34: 0x3fef,
+ 0xa37: 0x40bf, 0xa38: 0x40c7, 0xa39: 0x40cf, 0xa3a: 0x40d7,
+ 0xa3d: 0xa000, 0xa3e: 0x40df, 0xa3f: 0x26cf,
+ // Block 0x29, offset 0xa40
+ 0xa40: 0x036a, 0xa41: 0x032e, 0xa42: 0x0332, 0xa43: 0x0336, 0xa44: 0x037e, 0xa45: 0x033a,
+ 0xa46: 0x033e, 0xa47: 0x0342, 0xa48: 0x0346, 0xa49: 0x034a, 0xa4a: 0x034e, 0xa4b: 0x0352,
+ 0xa4c: 0x0356, 0xa4d: 0x035a, 0xa4e: 0x035e, 0xa4f: 0x49d4, 0xa50: 0x49da, 0xa51: 0x49e0,
+ 0xa52: 0x49e6, 0xa53: 0x49ec, 0xa54: 0x49f2, 0xa55: 0x49f8, 0xa56: 0x49fe, 0xa57: 0x4a04,
+ 0xa58: 0x4a0a, 0xa59: 0x4a10, 0xa5a: 0x4a16, 0xa5b: 0x4a1c, 0xa5c: 0x4a22, 0xa5d: 0x4a28,
+ 0xa5e: 0x4a2e, 0xa5f: 0x4a34, 0xa60: 0x4a3a, 0xa61: 0x4a40, 0xa62: 0x4a46, 0xa63: 0x4a4c,
+ 0xa64: 0x03c6, 0xa65: 0x0362, 0xa66: 0x0366, 0xa67: 0x03ea, 0xa68: 0x03ee, 0xa69: 0x03f2,
+ 0xa6a: 0x03f6, 0xa6b: 0x03fa, 0xa6c: 0x03fe, 0xa6d: 0x0402, 0xa6e: 0x036e, 0xa6f: 0x0406,
+ 0xa70: 0x040a, 0xa71: 0x0372, 0xa72: 0x0376, 0xa73: 0x037a, 0xa74: 0x0382, 0xa75: 0x0386,
+ 0xa76: 0x038a, 0xa77: 0x038e, 0xa78: 0x0392, 0xa79: 0x0396, 0xa7a: 0x039a, 0xa7b: 0x039e,
+ 0xa7c: 0x03a2, 0xa7d: 0x03a6, 0xa7e: 0x03aa, 0xa7f: 0x03ae,
+ // Block 0x2a, offset 0xa80
+ 0xa80: 0x03b2, 0xa81: 0x03b6, 0xa82: 0x040e, 0xa83: 0x0412, 0xa84: 0x03ba, 0xa85: 0x03be,
+ 0xa86: 0x03c2, 0xa87: 0x03ca, 0xa88: 0x03ce, 0xa89: 0x03d2, 0xa8a: 0x03d6, 0xa8b: 0x03da,
+ 0xa8c: 0x03de, 0xa8d: 0x03e2, 0xa8e: 0x03e6,
+ 0xa92: 0x06c2, 0xa93: 0x071e, 0xa94: 0x06ce, 0xa95: 0x097e, 0xa96: 0x06d2, 0xa97: 0x06ea,
+ 0xa98: 0x06d6, 0xa99: 0x0f96, 0xa9a: 0x070a, 0xa9b: 0x06de, 0xa9c: 0x06c6, 0xa9d: 0x0a02,
+ 0xa9e: 0x0992, 0xa9f: 0x0732,
+ // Block 0x2b, offset 0xac0
+ 0xac0: 0x205a, 0xac1: 0x2060, 0xac2: 0x2066, 0xac3: 0x206c, 0xac4: 0x2072, 0xac5: 0x2078,
+ 0xac6: 0x207e, 0xac7: 0x2084, 0xac8: 0x208a, 0xac9: 0x2090, 0xaca: 0x2096, 0xacb: 0x209c,
+ 0xacc: 0x20a2, 0xacd: 0x20a8, 0xace: 0x2733, 0xacf: 0x273c, 0xad0: 0x2745, 0xad1: 0x274e,
+ 0xad2: 0x2757, 0xad3: 0x2760, 0xad4: 0x2769, 0xad5: 0x2772, 0xad6: 0x277b, 0xad7: 0x278d,
+ 0xad8: 0x2796, 0xad9: 0x279f, 0xada: 0x27a8, 0xadb: 0x27b1, 0xadc: 0x2784, 0xadd: 0x2bb9,
+ 0xade: 0x2afa, 0xae0: 0x20ae, 0xae1: 0x20c6, 0xae2: 0x20ba, 0xae3: 0x210e,
+ 0xae4: 0x20cc, 0xae5: 0x20ea, 0xae6: 0x20b4, 0xae7: 0x20e4, 0xae8: 0x20c0, 0xae9: 0x20f6,
+ 0xaea: 0x2126, 0xaeb: 0x2144, 0xaec: 0x213e, 0xaed: 0x2132, 0xaee: 0x2180, 0xaef: 0x2114,
+ 0xaf0: 0x2120, 0xaf1: 0x2138, 0xaf2: 0x212c, 0xaf3: 0x2156, 0xaf4: 0x2102, 0xaf5: 0x214a,
+ 0xaf6: 0x2174, 0xaf7: 0x215c, 0xaf8: 0x20f0, 0xaf9: 0x20d2, 0xafa: 0x2108, 0xafb: 0x211a,
+ 0xafc: 0x2150, 0xafd: 0x20d8, 0xafe: 0x217a, 0xaff: 0x20fc,
+ // Block 0x2c, offset 0xb00
+ 0xb00: 0x2162, 0xb01: 0x20de, 0xb02: 0x2168, 0xb03: 0x216e, 0xb04: 0x0932, 0xb05: 0x0b06,
+ 0xb06: 0x0caa, 0xb07: 0x10ca,
+ 0xb10: 0x1bca, 0xb11: 0x18ac,
+ 0xb12: 0x18af, 0xb13: 0x18b2, 0xb14: 0x18b5, 0xb15: 0x18b8, 0xb16: 0x18bb, 0xb17: 0x18be,
+ 0xb18: 0x18c1, 0xb19: 0x18c4, 0xb1a: 0x18cd, 0xb1b: 0x18d0, 0xb1c: 0x18d3, 0xb1d: 0x18d6,
+ 0xb1e: 0x18d9, 0xb1f: 0x18dc, 0xb20: 0x0316, 0xb21: 0x031e, 0xb22: 0x0322, 0xb23: 0x032a,
+ 0xb24: 0x032e, 0xb25: 0x0332, 0xb26: 0x033a, 0xb27: 0x0342, 0xb28: 0x0346, 0xb29: 0x034e,
+ 0xb2a: 0x0352, 0xb2b: 0x0356, 0xb2c: 0x035a, 0xb2d: 0x035e, 0xb2e: 0x2e2f, 0xb2f: 0x2e37,
+ 0xb30: 0x2e3f, 0xb31: 0x2e47, 0xb32: 0x2e4f, 0xb33: 0x2e57, 0xb34: 0x2e5f, 0xb35: 0x2e67,
+ 0xb36: 0x2e77, 0xb37: 0x2e7f, 0xb38: 0x2e87, 0xb39: 0x2e8f, 0xb3a: 0x2e97, 0xb3b: 0x2e9f,
+ 0xb3c: 0x2eea, 0xb3d: 0x2eb2, 0xb3e: 0x2e6f,
+ // Block 0x2d, offset 0xb40
+ 0xb40: 0x06c2, 0xb41: 0x071e, 0xb42: 0x06ce, 0xb43: 0x097e, 0xb44: 0x0722, 0xb45: 0x07b2,
+ 0xb46: 0x06ca, 0xb47: 0x07ae, 0xb48: 0x070e, 0xb49: 0x088a, 0xb4a: 0x0d0a, 0xb4b: 0x0e92,
+ 0xb4c: 0x0dda, 0xb4d: 0x0d1e, 0xb4e: 0x1462, 0xb4f: 0x098e, 0xb50: 0x0cd2, 0xb51: 0x0d4e,
+ 0xb52: 0x0d0e, 0xb53: 0x104e, 0xb54: 0x08fe, 0xb55: 0x0f06, 0xb56: 0x138a, 0xb57: 0x1062,
+ 0xb58: 0x0846, 0xb59: 0x1092, 0xb5a: 0x0f9e, 0xb5b: 0x0a1a, 0xb5c: 0x1412, 0xb5d: 0x0782,
+ 0xb5e: 0x08ae, 0xb5f: 0x0dfa, 0xb60: 0x152a, 0xb61: 0x0746, 0xb62: 0x07d6, 0xb63: 0x0d9e,
+ 0xb64: 0x06d2, 0xb65: 0x06ea, 0xb66: 0x06d6, 0xb67: 0x0ade, 0xb68: 0x08f2, 0xb69: 0x0882,
+ 0xb6a: 0x0a5a, 0xb6b: 0x0a4e, 0xb6c: 0x0fee, 0xb6d: 0x0742, 0xb6e: 0x139e, 0xb6f: 0x089e,
+ 0xb70: 0x09f6, 0xb71: 0x18df, 0xb72: 0x18e2, 0xb73: 0x18e5, 0xb74: 0x18e8, 0xb75: 0x18f1,
+ 0xb76: 0x18f4, 0xb77: 0x18f7, 0xb78: 0x18fa, 0xb79: 0x18fd, 0xb7a: 0x1900, 0xb7b: 0x1903,
+ 0xb7c: 0x1906, 0xb7d: 0x1909, 0xb7e: 0x190c, 0xb7f: 0x1915,
+ // Block 0x2e, offset 0xb80
+ 0xb80: 0x1ccc, 0xb81: 0x1cdb, 0xb82: 0x1cea, 0xb83: 0x1cf9, 0xb84: 0x1d08, 0xb85: 0x1d17,
+ 0xb86: 0x1d26, 0xb87: 0x1d35, 0xb88: 0x1d44, 0xb89: 0x2192, 0xb8a: 0x21a4, 0xb8b: 0x21b6,
+ 0xb8c: 0x1957, 0xb8d: 0x1c0a, 0xb8e: 0x19d8, 0xb8f: 0x1bae, 0xb90: 0x04ce, 0xb91: 0x04d6,
+ 0xb92: 0x04de, 0xb93: 0x04e6, 0xb94: 0x04ee, 0xb95: 0x04f2, 0xb96: 0x04f6, 0xb97: 0x04fa,
+ 0xb98: 0x04fe, 0xb99: 0x0502, 0xb9a: 0x0506, 0xb9b: 0x050a, 0xb9c: 0x050e, 0xb9d: 0x0512,
+ 0xb9e: 0x0516, 0xb9f: 0x051a, 0xba0: 0x051e, 0xba1: 0x0526, 0xba2: 0x052a, 0xba3: 0x052e,
+ 0xba4: 0x0532, 0xba5: 0x0536, 0xba6: 0x053a, 0xba7: 0x053e, 0xba8: 0x0542, 0xba9: 0x0546,
+ 0xbaa: 0x054a, 0xbab: 0x054e, 0xbac: 0x0552, 0xbad: 0x0556, 0xbae: 0x055a, 0xbaf: 0x055e,
+ 0xbb0: 0x0562, 0xbb1: 0x0566, 0xbb2: 0x056a, 0xbb3: 0x0572, 0xbb4: 0x057a, 0xbb5: 0x0582,
+ 0xbb6: 0x0586, 0xbb7: 0x058a, 0xbb8: 0x058e, 0xbb9: 0x0592, 0xbba: 0x0596, 0xbbb: 0x059a,
+ 0xbbc: 0x059e, 0xbbd: 0x05a2, 0xbbe: 0x05a6, 0xbbf: 0x2700,
+ // Block 0x2f, offset 0xbc0
+ 0xbc0: 0x2b19, 0xbc1: 0x29b5, 0xbc2: 0x2b29, 0xbc3: 0x288d, 0xbc4: 0x2efb, 0xbc5: 0x2897,
+ 0xbc6: 0x28a1, 0xbc7: 0x2f3f, 0xbc8: 0x29c2, 0xbc9: 0x28ab, 0xbca: 0x28b5, 0xbcb: 0x28bf,
+ 0xbcc: 0x29e9, 0xbcd: 0x29f6, 0xbce: 0x29cf, 0xbcf: 0x29dc, 0xbd0: 0x2ec0, 0xbd1: 0x2a03,
+ 0xbd2: 0x2a10, 0xbd3: 0x2bcb, 0xbd4: 0x26c1, 0xbd5: 0x2bde, 0xbd6: 0x2bf1, 0xbd7: 0x2b39,
+ 0xbd8: 0x2a1d, 0xbd9: 0x2c04, 0xbda: 0x2c17, 0xbdb: 0x2a2a, 0xbdc: 0x28c9, 0xbdd: 0x28d3,
+ 0xbde: 0x2ece, 0xbdf: 0x2a37, 0xbe0: 0x2b49, 0xbe1: 0x2f0c, 0xbe2: 0x28dd, 0xbe3: 0x28e7,
+ 0xbe4: 0x2a44, 0xbe5: 0x28f1, 0xbe6: 0x28fb, 0xbe7: 0x26d6, 0xbe8: 0x26dd, 0xbe9: 0x2905,
+ 0xbea: 0x290f, 0xbeb: 0x2c2a, 0xbec: 0x2a51, 0xbed: 0x2b59, 0xbee: 0x2c3d, 0xbef: 0x2a5e,
+ 0xbf0: 0x2923, 0xbf1: 0x2919, 0xbf2: 0x2f53, 0xbf3: 0x2a6b, 0xbf4: 0x2c50, 0xbf5: 0x292d,
+ 0xbf6: 0x2b69, 0xbf7: 0x2937, 0xbf8: 0x2a85, 0xbf9: 0x2941, 0xbfa: 0x2a92, 0xbfb: 0x2f1d,
+ 0xbfc: 0x2a78, 0xbfd: 0x2b79, 0xbfe: 0x2a9f, 0xbff: 0x26e4,
+ // Block 0x30, offset 0xc00
+ 0xc00: 0x2f2e, 0xc01: 0x294b, 0xc02: 0x2955, 0xc03: 0x2aac, 0xc04: 0x295f, 0xc05: 0x2969,
+ 0xc06: 0x2973, 0xc07: 0x2b89, 0xc08: 0x2ab9, 0xc09: 0x26eb, 0xc0a: 0x2c63, 0xc0b: 0x2ea7,
+ 0xc0c: 0x2b99, 0xc0d: 0x2ac6, 0xc0e: 0x2edc, 0xc0f: 0x297d, 0xc10: 0x2987, 0xc11: 0x2ad3,
+ 0xc12: 0x26f2, 0xc13: 0x2ae0, 0xc14: 0x2ba9, 0xc15: 0x26f9, 0xc16: 0x2c76, 0xc17: 0x2991,
+ 0xc18: 0x1cbd, 0xc19: 0x1cd1, 0xc1a: 0x1ce0, 0xc1b: 0x1cef, 0xc1c: 0x1cfe, 0xc1d: 0x1d0d,
+ 0xc1e: 0x1d1c, 0xc1f: 0x1d2b, 0xc20: 0x1d3a, 0xc21: 0x1d49, 0xc22: 0x2198, 0xc23: 0x21aa,
+ 0xc24: 0x21bc, 0xc25: 0x21c8, 0xc26: 0x21d4, 0xc27: 0x21e0, 0xc28: 0x21ec, 0xc29: 0x21f8,
+ 0xc2a: 0x2204, 0xc2b: 0x2210, 0xc2c: 0x224c, 0xc2d: 0x2258, 0xc2e: 0x2264, 0xc2f: 0x2270,
+ 0xc30: 0x227c, 0xc31: 0x1c1a, 0xc32: 0x19cc, 0xc33: 0x1939, 0xc34: 0x1bea, 0xc35: 0x1a4d,
+ 0xc36: 0x1a5c, 0xc37: 0x19d2, 0xc38: 0x1c02, 0xc39: 0x1c06, 0xc3a: 0x1963, 0xc3b: 0x270e,
+ 0xc3c: 0x271c, 0xc3d: 0x2707, 0xc3e: 0x2715, 0xc3f: 0x2aed,
+ // Block 0x31, offset 0xc40
+ 0xc40: 0x1a50, 0xc41: 0x1a38, 0xc42: 0x1c66, 0xc43: 0x1a20, 0xc44: 0x19f9, 0xc45: 0x196c,
+ 0xc46: 0x197b, 0xc47: 0x194b, 0xc48: 0x1bf6, 0xc49: 0x1d58, 0xc4a: 0x1a53, 0xc4b: 0x1a3b,
+ 0xc4c: 0x1c6a, 0xc4d: 0x1c76, 0xc4e: 0x1a2c, 0xc4f: 0x1a02, 0xc50: 0x195a, 0xc51: 0x1c22,
+ 0xc52: 0x1bb6, 0xc53: 0x1ba2, 0xc54: 0x1bd2, 0xc55: 0x1c7a, 0xc56: 0x1a2f, 0xc57: 0x19cf,
+ 0xc58: 0x1a05, 0xc59: 0x19e4, 0xc5a: 0x1a47, 0xc5b: 0x1c7e, 0xc5c: 0x1a32, 0xc5d: 0x19c6,
+ 0xc5e: 0x1a08, 0xc5f: 0x1c42, 0xc60: 0x1bfa, 0xc61: 0x1a1a, 0xc62: 0x1c2a, 0xc63: 0x1c46,
+ 0xc64: 0x1bfe, 0xc65: 0x1a1d, 0xc66: 0x1c2e, 0xc67: 0x22ee, 0xc68: 0x2302, 0xc69: 0x199c,
+ 0xc6a: 0x1c26, 0xc6b: 0x1bba, 0xc6c: 0x1ba6, 0xc6d: 0x1c4e, 0xc6e: 0x2723, 0xc6f: 0x27ba,
+ 0xc70: 0x1a5f, 0xc71: 0x1a4a, 0xc72: 0x1c82, 0xc73: 0x1a35, 0xc74: 0x1a56, 0xc75: 0x1a3e,
+ 0xc76: 0x1c6e, 0xc77: 0x1a23, 0xc78: 0x19fc, 0xc79: 0x1987, 0xc7a: 0x1a59, 0xc7b: 0x1a41,
+ 0xc7c: 0x1c72, 0xc7d: 0x1a26, 0xc7e: 0x19ff, 0xc7f: 0x198a,
+ // Block 0x32, offset 0xc80
+ 0xc80: 0x1c32, 0xc81: 0x1bbe, 0xc82: 0x1d53, 0xc83: 0x193c, 0xc84: 0x19c0, 0xc85: 0x19c3,
+ 0xc86: 0x22fb, 0xc87: 0x1b9a, 0xc88: 0x19c9, 0xc89: 0x194e, 0xc8a: 0x19e7, 0xc8b: 0x1951,
+ 0xc8c: 0x19f0, 0xc8d: 0x196f, 0xc8e: 0x1972, 0xc8f: 0x1a0b, 0xc90: 0x1a11, 0xc91: 0x1a14,
+ 0xc92: 0x1c36, 0xc93: 0x1a17, 0xc94: 0x1a29, 0xc95: 0x1c3e, 0xc96: 0x1c4a, 0xc97: 0x1996,
+ 0xc98: 0x1d5d, 0xc99: 0x1bc2, 0xc9a: 0x1999, 0xc9b: 0x1a62, 0xc9c: 0x19ab, 0xc9d: 0x19ba,
+ 0xc9e: 0x22e8, 0xc9f: 0x22e2, 0xca0: 0x1cc7, 0xca1: 0x1cd6, 0xca2: 0x1ce5, 0xca3: 0x1cf4,
+ 0xca4: 0x1d03, 0xca5: 0x1d12, 0xca6: 0x1d21, 0xca7: 0x1d30, 0xca8: 0x1d3f, 0xca9: 0x218c,
+ 0xcaa: 0x219e, 0xcab: 0x21b0, 0xcac: 0x21c2, 0xcad: 0x21ce, 0xcae: 0x21da, 0xcaf: 0x21e6,
+ 0xcb0: 0x21f2, 0xcb1: 0x21fe, 0xcb2: 0x220a, 0xcb3: 0x2246, 0xcb4: 0x2252, 0xcb5: 0x225e,
+ 0xcb6: 0x226a, 0xcb7: 0x2276, 0xcb8: 0x2282, 0xcb9: 0x2288, 0xcba: 0x228e, 0xcbb: 0x2294,
+ 0xcbc: 0x229a, 0xcbd: 0x22ac, 0xcbe: 0x22b2, 0xcbf: 0x1c16,
+ // Block 0x33, offset 0xcc0
+ 0xcc0: 0x137a, 0xcc1: 0x0cfe, 0xcc2: 0x13d6, 0xcc3: 0x13a2, 0xcc4: 0x0e5a, 0xcc5: 0x06ee,
+ 0xcc6: 0x08e2, 0xcc7: 0x162e, 0xcc8: 0x162e, 0xcc9: 0x0a0e, 0xcca: 0x1462, 0xccb: 0x0946,
+ 0xccc: 0x0a0a, 0xccd: 0x0bf2, 0xcce: 0x0fd2, 0xccf: 0x1162, 0xcd0: 0x129a, 0xcd1: 0x12d6,
+ 0xcd2: 0x130a, 0xcd3: 0x141e, 0xcd4: 0x0d76, 0xcd5: 0x0e02, 0xcd6: 0x0eae, 0xcd7: 0x0f46,
+ 0xcd8: 0x1262, 0xcd9: 0x144a, 0xcda: 0x1576, 0xcdb: 0x0712, 0xcdc: 0x08b6, 0xcdd: 0x0d8a,
+ 0xcde: 0x0ed2, 0xcdf: 0x1296, 0xce0: 0x15c6, 0xce1: 0x0ab6, 0xce2: 0x0e7a, 0xce3: 0x1286,
+ 0xce4: 0x131a, 0xce5: 0x0c26, 0xce6: 0x11be, 0xce7: 0x12e2, 0xce8: 0x0b22, 0xce9: 0x0d12,
+ 0xcea: 0x0e1a, 0xceb: 0x0f1e, 0xcec: 0x142a, 0xced: 0x0752, 0xcee: 0x07ea, 0xcef: 0x0856,
+ 0xcf0: 0x0c8e, 0xcf1: 0x0d82, 0xcf2: 0x0ece, 0xcf3: 0x0ff2, 0xcf4: 0x117a, 0xcf5: 0x128e,
+ 0xcf6: 0x12a6, 0xcf7: 0x13ca, 0xcf8: 0x14f2, 0xcf9: 0x15a6, 0xcfa: 0x15c2, 0xcfb: 0x102e,
+ 0xcfc: 0x106e, 0xcfd: 0x1126, 0xcfe: 0x1246, 0xcff: 0x147e,
+ // Block 0x34, offset 0xd00
+ 0xd00: 0x15ce, 0xd01: 0x134e, 0xd02: 0x09ca, 0xd03: 0x0b3e, 0xd04: 0x10de, 0xd05: 0x119e,
+ 0xd06: 0x0f02, 0xd07: 0x1036, 0xd08: 0x139a, 0xd09: 0x14ea, 0xd0a: 0x09c6, 0xd0b: 0x0a92,
+ 0xd0c: 0x0d7a, 0xd0d: 0x0e2e, 0xd0e: 0x0e62, 0xd0f: 0x1116, 0xd10: 0x113e, 0xd11: 0x14aa,
+ 0xd12: 0x0852, 0xd13: 0x11aa, 0xd14: 0x07f6, 0xd15: 0x07f2, 0xd16: 0x109a, 0xd17: 0x112a,
+ 0xd18: 0x125e, 0xd19: 0x14b2, 0xd1a: 0x136a, 0xd1b: 0x0c2a, 0xd1c: 0x0d76, 0xd1d: 0x135a,
+ 0xd1e: 0x06fa, 0xd1f: 0x0a66, 0xd20: 0x0b96, 0xd21: 0x0f32, 0xd22: 0x0fb2, 0xd23: 0x0876,
+ 0xd24: 0x103e, 0xd25: 0x0762, 0xd26: 0x0b7a, 0xd27: 0x06da, 0xd28: 0x0dee, 0xd29: 0x0ca6,
+ 0xd2a: 0x1112, 0xd2b: 0x08ca, 0xd2c: 0x09b6, 0xd2d: 0x0ffe, 0xd2e: 0x1266, 0xd2f: 0x133e,
+ 0xd30: 0x0dba, 0xd31: 0x13fa, 0xd32: 0x0de6, 0xd33: 0x0c3a, 0xd34: 0x121e, 0xd35: 0x0c5a,
+ 0xd36: 0x0fae, 0xd37: 0x072e, 0xd38: 0x07aa, 0xd39: 0x07ee, 0xd3a: 0x0d56, 0xd3b: 0x10fe,
+ 0xd3c: 0x11f6, 0xd3d: 0x134a, 0xd3e: 0x145e, 0xd3f: 0x085e,
+ // Block 0x35, offset 0xd40
+ 0xd40: 0x0912, 0xd41: 0x0a1a, 0xd42: 0x0b32, 0xd43: 0x0cc2, 0xd44: 0x0e7e, 0xd45: 0x1042,
+ 0xd46: 0x149a, 0xd47: 0x157e, 0xd48: 0x15d2, 0xd49: 0x15ea, 0xd4a: 0x083a, 0xd4b: 0x0cf6,
+ 0xd4c: 0x0da6, 0xd4d: 0x13ee, 0xd4e: 0x0afe, 0xd4f: 0x0bda, 0xd50: 0x0bf6, 0xd51: 0x0c86,
+ 0xd52: 0x0e6e, 0xd53: 0x0eba, 0xd54: 0x0f6a, 0xd55: 0x108e, 0xd56: 0x1132, 0xd57: 0x1196,
+ 0xd58: 0x13de, 0xd59: 0x126e, 0xd5a: 0x1406, 0xd5b: 0x1482, 0xd5c: 0x0812, 0xd5d: 0x083e,
+ 0xd5e: 0x0926, 0xd5f: 0x0eaa, 0xd60: 0x12f6, 0xd61: 0x133e, 0xd62: 0x0b1e, 0xd63: 0x0b8e,
+ 0xd64: 0x0c52, 0xd65: 0x0db2, 0xd66: 0x10da, 0xd67: 0x0f26, 0xd68: 0x073e, 0xd69: 0x0982,
+ 0xd6a: 0x0a66, 0xd6b: 0x0aca, 0xd6c: 0x0b9a, 0xd6d: 0x0f42, 0xd6e: 0x0f5e, 0xd6f: 0x116e,
+ 0xd70: 0x118e, 0xd71: 0x1466, 0xd72: 0x14e6, 0xd73: 0x14f6, 0xd74: 0x1532, 0xd75: 0x0756,
+ 0xd76: 0x1082, 0xd77: 0x1452, 0xd78: 0x14ce, 0xd79: 0x0bb2, 0xd7a: 0x071a, 0xd7b: 0x077a,
+ 0xd7c: 0x0a6a, 0xd7d: 0x0a8a, 0xd7e: 0x0cb2, 0xd7f: 0x0d76,
+ // Block 0x36, offset 0xd80
+ 0xd80: 0x0ec6, 0xd81: 0x0fce, 0xd82: 0x127a, 0xd83: 0x141a, 0xd84: 0x1626, 0xd85: 0x0ce6,
+ 0xd86: 0x14a6, 0xd87: 0x0836, 0xd88: 0x0d32, 0xd89: 0x0d3e, 0xd8a: 0x0e12, 0xd8b: 0x0e4a,
+ 0xd8c: 0x0f4e, 0xd8d: 0x0faa, 0xd8e: 0x102a, 0xd8f: 0x110e, 0xd90: 0x153e, 0xd91: 0x07b2,
+ 0xd92: 0x0c06, 0xd93: 0x14b6, 0xd94: 0x076a, 0xd95: 0x0aae, 0xd96: 0x0e32, 0xd97: 0x13e2,
+ 0xd98: 0x0b6a, 0xd99: 0x0bba, 0xd9a: 0x0d46, 0xd9b: 0x0f32, 0xd9c: 0x14be, 0xd9d: 0x081a,
+ 0xd9e: 0x0902, 0xd9f: 0x0a9a, 0xda0: 0x0cd6, 0xda1: 0x0d22, 0xda2: 0x0d62, 0xda3: 0x0df6,
+ 0xda4: 0x0f4a, 0xda5: 0x0fbe, 0xda6: 0x115a, 0xda7: 0x12fa, 0xda8: 0x1306, 0xda9: 0x145a,
+ 0xdaa: 0x14da, 0xdab: 0x0886, 0xdac: 0x0e4e, 0xdad: 0x0906, 0xdae: 0x0eca, 0xdaf: 0x0f6e,
+ 0xdb0: 0x128a, 0xdb1: 0x14c2, 0xdb2: 0x15ae, 0xdb3: 0x15d6, 0xdb4: 0x0d3a, 0xdb5: 0x0e2a,
+ 0xdb6: 0x11c6, 0xdb7: 0x10ba, 0xdb8: 0x10c6, 0xdb9: 0x10ea, 0xdba: 0x0f1a, 0xdbb: 0x0ea2,
+ 0xdbc: 0x1366, 0xdbd: 0x0736, 0xdbe: 0x122e, 0xdbf: 0x081e,
+ // Block 0x37, offset 0xdc0
+ 0xdc0: 0x080e, 0xdc1: 0x0b0e, 0xdc2: 0x0c2e, 0xdc3: 0x10f6, 0xdc4: 0x0a56, 0xdc5: 0x0e06,
+ 0xdc6: 0x0cf2, 0xdc7: 0x13ea, 0xdc8: 0x12ea, 0xdc9: 0x14ae, 0xdca: 0x1326, 0xdcb: 0x0b2a,
+ 0xdcc: 0x078a, 0xdcd: 0x095e, 0xdd0: 0x09b2,
+ 0xdd2: 0x0ce2, 0xdd5: 0x07fa, 0xdd6: 0x0f22, 0xdd7: 0x0fe6,
+ 0xdd8: 0x104a, 0xdd9: 0x1066, 0xdda: 0x106a, 0xddb: 0x107e, 0xddc: 0x14fe, 0xddd: 0x10ee,
+ 0xdde: 0x1172, 0xde0: 0x1292, 0xde2: 0x1356,
+ 0xde5: 0x140a, 0xde6: 0x1436,
+ 0xdea: 0x1552, 0xdeb: 0x1556, 0xdec: 0x155a, 0xded: 0x15be, 0xdee: 0x142e, 0xdef: 0x14ca,
+ 0xdf0: 0x075a, 0xdf1: 0x077e, 0xdf2: 0x0792, 0xdf3: 0x084e, 0xdf4: 0x085a, 0xdf5: 0x089a,
+ 0xdf6: 0x094e, 0xdf7: 0x096a, 0xdf8: 0x0972, 0xdf9: 0x09ae, 0xdfa: 0x09ba, 0xdfb: 0x0a96,
+ 0xdfc: 0x0a9e, 0xdfd: 0x0ba6, 0xdfe: 0x0bce, 0xdff: 0x0bd6,
+ // Block 0x38, offset 0xe00
+ 0xe00: 0x0bee, 0xe01: 0x0c9a, 0xe02: 0x0cca, 0xe03: 0x0cea, 0xe04: 0x0d5a, 0xe05: 0x0e1e,
+ 0xe06: 0x0e3a, 0xe07: 0x0e6a, 0xe08: 0x0ebe, 0xe09: 0x0ede, 0xe0a: 0x0f52, 0xe0b: 0x1032,
+ 0xe0c: 0x104e, 0xe0d: 0x1056, 0xe0e: 0x1052, 0xe0f: 0x105a, 0xe10: 0x105e, 0xe11: 0x1062,
+ 0xe12: 0x1076, 0xe13: 0x107a, 0xe14: 0x109e, 0xe15: 0x10b2, 0xe16: 0x10ce, 0xe17: 0x1132,
+ 0xe18: 0x113a, 0xe19: 0x1142, 0xe1a: 0x1156, 0xe1b: 0x117e, 0xe1c: 0x11ce, 0xe1d: 0x1202,
+ 0xe1e: 0x1202, 0xe1f: 0x126a, 0xe20: 0x1312, 0xe21: 0x132a, 0xe22: 0x135e, 0xe23: 0x1362,
+ 0xe24: 0x13a6, 0xe25: 0x13aa, 0xe26: 0x1402, 0xe27: 0x140a, 0xe28: 0x14de, 0xe29: 0x1522,
+ 0xe2a: 0x153a, 0xe2b: 0x0b9e, 0xe2c: 0x1721, 0xe2d: 0x11e6,
+ 0xe30: 0x06e2, 0xe31: 0x07e6, 0xe32: 0x07a6, 0xe33: 0x074e, 0xe34: 0x078e, 0xe35: 0x07ba,
+ 0xe36: 0x084a, 0xe37: 0x0866, 0xe38: 0x094e, 0xe39: 0x093a, 0xe3a: 0x094a, 0xe3b: 0x0966,
+ 0xe3c: 0x09b2, 0xe3d: 0x09c2, 0xe3e: 0x0a06, 0xe3f: 0x0a12,
+ // Block 0x39, offset 0xe40
+ 0xe40: 0x0a2e, 0xe41: 0x0a3e, 0xe42: 0x0b26, 0xe43: 0x0b2e, 0xe44: 0x0b5e, 0xe45: 0x0b7e,
+ 0xe46: 0x0bae, 0xe47: 0x0bc6, 0xe48: 0x0bb6, 0xe49: 0x0bd6, 0xe4a: 0x0bca, 0xe4b: 0x0bee,
+ 0xe4c: 0x0c0a, 0xe4d: 0x0c62, 0xe4e: 0x0c6e, 0xe4f: 0x0c76, 0xe50: 0x0c9e, 0xe51: 0x0ce2,
+ 0xe52: 0x0d12, 0xe53: 0x0d16, 0xe54: 0x0d2a, 0xe55: 0x0daa, 0xe56: 0x0dba, 0xe57: 0x0e12,
+ 0xe58: 0x0e5e, 0xe59: 0x0e56, 0xe5a: 0x0e6a, 0xe5b: 0x0e86, 0xe5c: 0x0ebe, 0xe5d: 0x1016,
+ 0xe5e: 0x0ee2, 0xe5f: 0x0f16, 0xe60: 0x0f22, 0xe61: 0x0f62, 0xe62: 0x0f7e, 0xe63: 0x0fa2,
+ 0xe64: 0x0fc6, 0xe65: 0x0fca, 0xe66: 0x0fe6, 0xe67: 0x0fea, 0xe68: 0x0ffa, 0xe69: 0x100e,
+ 0xe6a: 0x100a, 0xe6b: 0x103a, 0xe6c: 0x10b6, 0xe6d: 0x10ce, 0xe6e: 0x10e6, 0xe6f: 0x111e,
+ 0xe70: 0x1132, 0xe71: 0x114e, 0xe72: 0x117e, 0xe73: 0x1232, 0xe74: 0x125a, 0xe75: 0x12ce,
+ 0xe76: 0x1316, 0xe77: 0x1322, 0xe78: 0x132a, 0xe79: 0x1342, 0xe7a: 0x1356, 0xe7b: 0x1346,
+ 0xe7c: 0x135e, 0xe7d: 0x135a, 0xe7e: 0x1352, 0xe7f: 0x1362,
+ // Block 0x3a, offset 0xe80
+ 0xe80: 0x136e, 0xe81: 0x13aa, 0xe82: 0x13e6, 0xe83: 0x1416, 0xe84: 0x144e, 0xe85: 0x146e,
+ 0xe86: 0x14ba, 0xe87: 0x14de, 0xe88: 0x14fe, 0xe89: 0x1512, 0xe8a: 0x1522, 0xe8b: 0x152e,
+ 0xe8c: 0x153a, 0xe8d: 0x158e, 0xe8e: 0x162e, 0xe8f: 0x16b8, 0xe90: 0x16b3, 0xe91: 0x16e5,
+ 0xe92: 0x060a, 0xe93: 0x0632, 0xe94: 0x0636, 0xe95: 0x1767, 0xe96: 0x1794, 0xe97: 0x180c,
+ 0xe98: 0x161a, 0xe99: 0x162a,
+ // Block 0x3b, offset 0xec0
+ 0xec0: 0x19db, 0xec1: 0x19de, 0xec2: 0x19e1, 0xec3: 0x1c0e, 0xec4: 0x1c12, 0xec5: 0x1a65,
+ 0xec6: 0x1a65,
+ 0xed3: 0x1d7b, 0xed4: 0x1d6c, 0xed5: 0x1d71, 0xed6: 0x1d80, 0xed7: 0x1d76,
+ 0xedd: 0x43a7,
+ 0xede: 0x8116, 0xedf: 0x4419, 0xee0: 0x0230, 0xee1: 0x0218, 0xee2: 0x0221, 0xee3: 0x0224,
+ 0xee4: 0x0227, 0xee5: 0x022a, 0xee6: 0x022d, 0xee7: 0x0233, 0xee8: 0x0236, 0xee9: 0x0017,
+ 0xeea: 0x4407, 0xeeb: 0x440d, 0xeec: 0x450b, 0xeed: 0x4513, 0xeee: 0x435f, 0xeef: 0x4365,
+ 0xef0: 0x436b, 0xef1: 0x4371, 0xef2: 0x437d, 0xef3: 0x4383, 0xef4: 0x4389, 0xef5: 0x4395,
+ 0xef6: 0x439b, 0xef8: 0x43a1, 0xef9: 0x43ad, 0xefa: 0x43b3, 0xefb: 0x43b9,
+ 0xefc: 0x43c5, 0xefe: 0x43cb,
+ // Block 0x3c, offset 0xf00
+ 0xf00: 0x43d1, 0xf01: 0x43d7, 0xf03: 0x43dd, 0xf04: 0x43e3,
+ 0xf06: 0x43ef, 0xf07: 0x43f5, 0xf08: 0x43fb, 0xf09: 0x4401, 0xf0a: 0x4413, 0xf0b: 0x438f,
+ 0xf0c: 0x4377, 0xf0d: 0x43bf, 0xf0e: 0x43e9, 0xf0f: 0x1d85, 0xf10: 0x029c, 0xf11: 0x029c,
+ 0xf12: 0x02a5, 0xf13: 0x02a5, 0xf14: 0x02a5, 0xf15: 0x02a5, 0xf16: 0x02a8, 0xf17: 0x02a8,
+ 0xf18: 0x02a8, 0xf19: 0x02a8, 0xf1a: 0x02ae, 0xf1b: 0x02ae, 0xf1c: 0x02ae, 0xf1d: 0x02ae,
+ 0xf1e: 0x02a2, 0xf1f: 0x02a2, 0xf20: 0x02a2, 0xf21: 0x02a2, 0xf22: 0x02ab, 0xf23: 0x02ab,
+ 0xf24: 0x02ab, 0xf25: 0x02ab, 0xf26: 0x029f, 0xf27: 0x029f, 0xf28: 0x029f, 0xf29: 0x029f,
+ 0xf2a: 0x02d2, 0xf2b: 0x02d2, 0xf2c: 0x02d2, 0xf2d: 0x02d2, 0xf2e: 0x02d5, 0xf2f: 0x02d5,
+ 0xf30: 0x02d5, 0xf31: 0x02d5, 0xf32: 0x02b4, 0xf33: 0x02b4, 0xf34: 0x02b4, 0xf35: 0x02b4,
+ 0xf36: 0x02b1, 0xf37: 0x02b1, 0xf38: 0x02b1, 0xf39: 0x02b1, 0xf3a: 0x02b7, 0xf3b: 0x02b7,
+ 0xf3c: 0x02b7, 0xf3d: 0x02b7, 0xf3e: 0x02ba, 0xf3f: 0x02ba,
+ // Block 0x3d, offset 0xf40
+ 0xf40: 0x02ba, 0xf41: 0x02ba, 0xf42: 0x02c3, 0xf43: 0x02c3, 0xf44: 0x02c0, 0xf45: 0x02c0,
+ 0xf46: 0x02c6, 0xf47: 0x02c6, 0xf48: 0x02bd, 0xf49: 0x02bd, 0xf4a: 0x02cc, 0xf4b: 0x02cc,
+ 0xf4c: 0x02c9, 0xf4d: 0x02c9, 0xf4e: 0x02d8, 0xf4f: 0x02d8, 0xf50: 0x02d8, 0xf51: 0x02d8,
+ 0xf52: 0x02de, 0xf53: 0x02de, 0xf54: 0x02de, 0xf55: 0x02de, 0xf56: 0x02e4, 0xf57: 0x02e4,
+ 0xf58: 0x02e4, 0xf59: 0x02e4, 0xf5a: 0x02e1, 0xf5b: 0x02e1, 0xf5c: 0x02e1, 0xf5d: 0x02e1,
+ 0xf5e: 0x02e7, 0xf5f: 0x02e7, 0xf60: 0x02ea, 0xf61: 0x02ea, 0xf62: 0x02ea, 0xf63: 0x02ea,
+ 0xf64: 0x4485, 0xf65: 0x4485, 0xf66: 0x02f0, 0xf67: 0x02f0, 0xf68: 0x02f0, 0xf69: 0x02f0,
+ 0xf6a: 0x02ed, 0xf6b: 0x02ed, 0xf6c: 0x02ed, 0xf6d: 0x02ed, 0xf6e: 0x030b, 0xf6f: 0x030b,
+ 0xf70: 0x447f, 0xf71: 0x447f,
+ // Block 0x3e, offset 0xf80
+ 0xf93: 0x02db, 0xf94: 0x02db, 0xf95: 0x02db, 0xf96: 0x02db, 0xf97: 0x02f9,
+ 0xf98: 0x02f9, 0xf99: 0x02f6, 0xf9a: 0x02f6, 0xf9b: 0x02fc, 0xf9c: 0x02fc, 0xf9d: 0x2055,
+ 0xf9e: 0x0302, 0xf9f: 0x0302, 0xfa0: 0x02f3, 0xfa1: 0x02f3, 0xfa2: 0x02ff, 0xfa3: 0x02ff,
+ 0xfa4: 0x0308, 0xfa5: 0x0308, 0xfa6: 0x0308, 0xfa7: 0x0308, 0xfa8: 0x0290, 0xfa9: 0x0290,
+ 0xfaa: 0x25b0, 0xfab: 0x25b0, 0xfac: 0x2620, 0xfad: 0x2620, 0xfae: 0x25ef, 0xfaf: 0x25ef,
+ 0xfb0: 0x260b, 0xfb1: 0x260b, 0xfb2: 0x2604, 0xfb3: 0x2604, 0xfb4: 0x2612, 0xfb5: 0x2612,
+ 0xfb6: 0x2619, 0xfb7: 0x2619, 0xfb8: 0x2619, 0xfb9: 0x25f6, 0xfba: 0x25f6, 0xfbb: 0x25f6,
+ 0xfbc: 0x0305, 0xfbd: 0x0305, 0xfbe: 0x0305, 0xfbf: 0x0305,
+ // Block 0x3f, offset 0xfc0
+ 0xfc0: 0x25b7, 0xfc1: 0x25be, 0xfc2: 0x25da, 0xfc3: 0x25f6, 0xfc4: 0x25fd, 0xfc5: 0x1d8f,
+ 0xfc6: 0x1d94, 0xfc7: 0x1d99, 0xfc8: 0x1da8, 0xfc9: 0x1db7, 0xfca: 0x1dbc, 0xfcb: 0x1dc1,
+ 0xfcc: 0x1dc6, 0xfcd: 0x1dcb, 0xfce: 0x1dda, 0xfcf: 0x1de9, 0xfd0: 0x1dee, 0xfd1: 0x1df3,
+ 0xfd2: 0x1e02, 0xfd3: 0x1e11, 0xfd4: 0x1e16, 0xfd5: 0x1e1b, 0xfd6: 0x1e20, 0xfd7: 0x1e2f,
+ 0xfd8: 0x1e34, 0xfd9: 0x1e43, 0xfda: 0x1e48, 0xfdb: 0x1e4d, 0xfdc: 0x1e5c, 0xfdd: 0x1e61,
+ 0xfde: 0x1e66, 0xfdf: 0x1e70, 0xfe0: 0x1eac, 0xfe1: 0x1ebb, 0xfe2: 0x1eca, 0xfe3: 0x1ecf,
+ 0xfe4: 0x1ed4, 0xfe5: 0x1ede, 0xfe6: 0x1eed, 0xfe7: 0x1ef2, 0xfe8: 0x1f01, 0xfe9: 0x1f06,
+ 0xfea: 0x1f0b, 0xfeb: 0x1f1a, 0xfec: 0x1f1f, 0xfed: 0x1f2e, 0xfee: 0x1f33, 0xfef: 0x1f38,
+ 0xff0: 0x1f3d, 0xff1: 0x1f42, 0xff2: 0x1f47, 0xff3: 0x1f4c, 0xff4: 0x1f51, 0xff5: 0x1f56,
+ 0xff6: 0x1f5b, 0xff7: 0x1f60, 0xff8: 0x1f65, 0xff9: 0x1f6a, 0xffa: 0x1f6f, 0xffb: 0x1f74,
+ 0xffc: 0x1f79, 0xffd: 0x1f7e, 0xffe: 0x1f83, 0xfff: 0x1f8d,
+ // Block 0x40, offset 0x1000
+ 0x1000: 0x1f92, 0x1001: 0x1f97, 0x1002: 0x1f9c, 0x1003: 0x1fa6, 0x1004: 0x1fab, 0x1005: 0x1fb5,
+ 0x1006: 0x1fba, 0x1007: 0x1fbf, 0x1008: 0x1fc4, 0x1009: 0x1fc9, 0x100a: 0x1fce, 0x100b: 0x1fd3,
+ 0x100c: 0x1fd8, 0x100d: 0x1fdd, 0x100e: 0x1fec, 0x100f: 0x1ffb, 0x1010: 0x2000, 0x1011: 0x2005,
+ 0x1012: 0x200a, 0x1013: 0x200f, 0x1014: 0x2014, 0x1015: 0x201e, 0x1016: 0x2023, 0x1017: 0x2028,
+ 0x1018: 0x2037, 0x1019: 0x2046, 0x101a: 0x204b, 0x101b: 0x4437, 0x101c: 0x443d, 0x101d: 0x4473,
+ 0x101e: 0x44ca, 0x101f: 0x44d1, 0x1020: 0x44d8, 0x1021: 0x44df, 0x1022: 0x44e6, 0x1023: 0x44ed,
+ 0x1024: 0x25cc, 0x1025: 0x25d3, 0x1026: 0x25da, 0x1027: 0x25e1, 0x1028: 0x25f6, 0x1029: 0x25fd,
+ 0x102a: 0x1d9e, 0x102b: 0x1da3, 0x102c: 0x1da8, 0x102d: 0x1dad, 0x102e: 0x1db7, 0x102f: 0x1dbc,
+ 0x1030: 0x1dd0, 0x1031: 0x1dd5, 0x1032: 0x1dda, 0x1033: 0x1ddf, 0x1034: 0x1de9, 0x1035: 0x1dee,
+ 0x1036: 0x1df8, 0x1037: 0x1dfd, 0x1038: 0x1e02, 0x1039: 0x1e07, 0x103a: 0x1e11, 0x103b: 0x1e16,
+ 0x103c: 0x1f42, 0x103d: 0x1f47, 0x103e: 0x1f56, 0x103f: 0x1f5b,
+ // Block 0x41, offset 0x1040
+ 0x1040: 0x1f60, 0x1041: 0x1f74, 0x1042: 0x1f79, 0x1043: 0x1f7e, 0x1044: 0x1f83, 0x1045: 0x1f9c,
+ 0x1046: 0x1fa6, 0x1047: 0x1fab, 0x1048: 0x1fb0, 0x1049: 0x1fc4, 0x104a: 0x1fe2, 0x104b: 0x1fe7,
+ 0x104c: 0x1fec, 0x104d: 0x1ff1, 0x104e: 0x1ffb, 0x104f: 0x2000, 0x1050: 0x4473, 0x1051: 0x202d,
+ 0x1052: 0x2032, 0x1053: 0x2037, 0x1054: 0x203c, 0x1055: 0x2046, 0x1056: 0x204b, 0x1057: 0x25b7,
+ 0x1058: 0x25be, 0x1059: 0x25c5, 0x105a: 0x25da, 0x105b: 0x25e8, 0x105c: 0x1d8f, 0x105d: 0x1d94,
+ 0x105e: 0x1d99, 0x105f: 0x1da8, 0x1060: 0x1db2, 0x1061: 0x1dc1, 0x1062: 0x1dc6, 0x1063: 0x1dcb,
+ 0x1064: 0x1dda, 0x1065: 0x1de4, 0x1066: 0x1e02, 0x1067: 0x1e1b, 0x1068: 0x1e20, 0x1069: 0x1e2f,
+ 0x106a: 0x1e34, 0x106b: 0x1e43, 0x106c: 0x1e4d, 0x106d: 0x1e5c, 0x106e: 0x1e61, 0x106f: 0x1e66,
+ 0x1070: 0x1e70, 0x1071: 0x1eac, 0x1072: 0x1eb1, 0x1073: 0x1ebb, 0x1074: 0x1eca, 0x1075: 0x1ecf,
+ 0x1076: 0x1ed4, 0x1077: 0x1ede, 0x1078: 0x1eed, 0x1079: 0x1f01, 0x107a: 0x1f06, 0x107b: 0x1f0b,
+ 0x107c: 0x1f1a, 0x107d: 0x1f1f, 0x107e: 0x1f2e, 0x107f: 0x1f33,
+ // Block 0x42, offset 0x1080
+ 0x1080: 0x1f38, 0x1081: 0x1f3d, 0x1082: 0x1f4c, 0x1083: 0x1f51, 0x1084: 0x1f65, 0x1085: 0x1f6a,
+ 0x1086: 0x1f6f, 0x1087: 0x1f74, 0x1088: 0x1f79, 0x1089: 0x1f8d, 0x108a: 0x1f92, 0x108b: 0x1f97,
+ 0x108c: 0x1f9c, 0x108d: 0x1fa1, 0x108e: 0x1fb5, 0x108f: 0x1fba, 0x1090: 0x1fbf, 0x1091: 0x1fc4,
+ 0x1092: 0x1fd3, 0x1093: 0x1fd8, 0x1094: 0x1fdd, 0x1095: 0x1fec, 0x1096: 0x1ff6, 0x1097: 0x2005,
+ 0x1098: 0x200a, 0x1099: 0x4467, 0x109a: 0x201e, 0x109b: 0x2023, 0x109c: 0x2028, 0x109d: 0x2037,
+ 0x109e: 0x2041, 0x109f: 0x25da, 0x10a0: 0x25e8, 0x10a1: 0x1da8, 0x10a2: 0x1db2, 0x10a3: 0x1dda,
+ 0x10a4: 0x1de4, 0x10a5: 0x1e02, 0x10a6: 0x1e0c, 0x10a7: 0x1e70, 0x10a8: 0x1e75, 0x10a9: 0x1e98,
+ 0x10aa: 0x1e9d, 0x10ab: 0x1f74, 0x10ac: 0x1f79, 0x10ad: 0x1f9c, 0x10ae: 0x1fec, 0x10af: 0x1ff6,
+ 0x10b0: 0x2037, 0x10b1: 0x2041, 0x10b2: 0x451b, 0x10b3: 0x4523, 0x10b4: 0x452b, 0x10b5: 0x1ef7,
+ 0x10b6: 0x1efc, 0x10b7: 0x1f10, 0x10b8: 0x1f15, 0x10b9: 0x1f24, 0x10ba: 0x1f29, 0x10bb: 0x1e7a,
+ 0x10bc: 0x1e7f, 0x10bd: 0x1ea2, 0x10be: 0x1ea7, 0x10bf: 0x1e39,
+ // Block 0x43, offset 0x10c0
+ 0x10c0: 0x1e3e, 0x10c1: 0x1e25, 0x10c2: 0x1e2a, 0x10c3: 0x1e52, 0x10c4: 0x1e57, 0x10c5: 0x1ec0,
+ 0x10c6: 0x1ec5, 0x10c7: 0x1ee3, 0x10c8: 0x1ee8, 0x10c9: 0x1e84, 0x10ca: 0x1e89, 0x10cb: 0x1e8e,
+ 0x10cc: 0x1e98, 0x10cd: 0x1e93, 0x10ce: 0x1e6b, 0x10cf: 0x1eb6, 0x10d0: 0x1ed9, 0x10d1: 0x1ef7,
+ 0x10d2: 0x1efc, 0x10d3: 0x1f10, 0x10d4: 0x1f15, 0x10d5: 0x1f24, 0x10d6: 0x1f29, 0x10d7: 0x1e7a,
+ 0x10d8: 0x1e7f, 0x10d9: 0x1ea2, 0x10da: 0x1ea7, 0x10db: 0x1e39, 0x10dc: 0x1e3e, 0x10dd: 0x1e25,
+ 0x10de: 0x1e2a, 0x10df: 0x1e52, 0x10e0: 0x1e57, 0x10e1: 0x1ec0, 0x10e2: 0x1ec5, 0x10e3: 0x1ee3,
+ 0x10e4: 0x1ee8, 0x10e5: 0x1e84, 0x10e6: 0x1e89, 0x10e7: 0x1e8e, 0x10e8: 0x1e98, 0x10e9: 0x1e93,
+ 0x10ea: 0x1e6b, 0x10eb: 0x1eb6, 0x10ec: 0x1ed9, 0x10ed: 0x1e84, 0x10ee: 0x1e89, 0x10ef: 0x1e8e,
+ 0x10f0: 0x1e98, 0x10f1: 0x1e75, 0x10f2: 0x1e9d, 0x10f3: 0x1ef2, 0x10f4: 0x1e5c, 0x10f5: 0x1e61,
+ 0x10f6: 0x1e66, 0x10f7: 0x1e84, 0x10f8: 0x1e89, 0x10f9: 0x1e8e, 0x10fa: 0x1ef2, 0x10fb: 0x1f01,
+ 0x10fc: 0x441f, 0x10fd: 0x441f,
+ // Block 0x44, offset 0x1100
+ 0x1110: 0x2317, 0x1111: 0x232c,
+ 0x1112: 0x232c, 0x1113: 0x2333, 0x1114: 0x233a, 0x1115: 0x234f, 0x1116: 0x2356, 0x1117: 0x235d,
+ 0x1118: 0x2380, 0x1119: 0x2380, 0x111a: 0x23a3, 0x111b: 0x239c, 0x111c: 0x23b8, 0x111d: 0x23aa,
+ 0x111e: 0x23b1, 0x111f: 0x23d4, 0x1120: 0x23d4, 0x1121: 0x23cd, 0x1122: 0x23db, 0x1123: 0x23db,
+ 0x1124: 0x2405, 0x1125: 0x2405, 0x1126: 0x2421, 0x1127: 0x23e9, 0x1128: 0x23e9, 0x1129: 0x23e2,
+ 0x112a: 0x23f7, 0x112b: 0x23f7, 0x112c: 0x23fe, 0x112d: 0x23fe, 0x112e: 0x2428, 0x112f: 0x2436,
+ 0x1130: 0x2436, 0x1131: 0x243d, 0x1132: 0x243d, 0x1133: 0x2444, 0x1134: 0x244b, 0x1135: 0x2452,
+ 0x1136: 0x2459, 0x1137: 0x2459, 0x1138: 0x2460, 0x1139: 0x246e, 0x113a: 0x247c, 0x113b: 0x2475,
+ 0x113c: 0x2483, 0x113d: 0x2483, 0x113e: 0x2498, 0x113f: 0x249f,
+ // Block 0x45, offset 0x1140
+ 0x1140: 0x24d0, 0x1141: 0x24de, 0x1142: 0x24d7, 0x1143: 0x24bb, 0x1144: 0x24bb, 0x1145: 0x24e5,
+ 0x1146: 0x24e5, 0x1147: 0x24ec, 0x1148: 0x24ec, 0x1149: 0x2516, 0x114a: 0x251d, 0x114b: 0x2524,
+ 0x114c: 0x24fa, 0x114d: 0x2508, 0x114e: 0x252b, 0x114f: 0x2532,
+ 0x1152: 0x2501, 0x1153: 0x2586, 0x1154: 0x258d, 0x1155: 0x2563, 0x1156: 0x256a, 0x1157: 0x254e,
+ 0x1158: 0x254e, 0x1159: 0x2555, 0x115a: 0x257f, 0x115b: 0x2578, 0x115c: 0x25a2, 0x115d: 0x25a2,
+ 0x115e: 0x2310, 0x115f: 0x2325, 0x1160: 0x231e, 0x1161: 0x2348, 0x1162: 0x2341, 0x1163: 0x236b,
+ 0x1164: 0x2364, 0x1165: 0x238e, 0x1166: 0x2372, 0x1167: 0x2387, 0x1168: 0x23bf, 0x1169: 0x240c,
+ 0x116a: 0x23f0, 0x116b: 0x242f, 0x116c: 0x24c9, 0x116d: 0x24f3, 0x116e: 0x259b, 0x116f: 0x2594,
+ 0x1170: 0x25a9, 0x1171: 0x2540, 0x1172: 0x24a6, 0x1173: 0x2571, 0x1174: 0x2498, 0x1175: 0x24d0,
+ 0x1176: 0x2467, 0x1177: 0x24b4, 0x1178: 0x2547, 0x1179: 0x2539, 0x117a: 0x24c2, 0x117b: 0x24ad,
+ 0x117c: 0x24c2, 0x117d: 0x2547, 0x117e: 0x2379, 0x117f: 0x2395,
+ // Block 0x46, offset 0x1180
+ 0x1180: 0x250f, 0x1181: 0x248a, 0x1182: 0x2309, 0x1183: 0x24ad, 0x1184: 0x2452, 0x1185: 0x2421,
+ 0x1186: 0x23c6, 0x1187: 0x255c,
+ 0x11b0: 0x241a, 0x11b1: 0x2491, 0x11b2: 0x27cc, 0x11b3: 0x27c3, 0x11b4: 0x27f9, 0x11b5: 0x27e7,
+ 0x11b6: 0x27d5, 0x11b7: 0x27f0, 0x11b8: 0x2802, 0x11b9: 0x2413, 0x11ba: 0x2c89, 0x11bb: 0x2b09,
+ 0x11bc: 0x27de,
+ // Block 0x47, offset 0x11c0
+ 0x11d0: 0x0019, 0x11d1: 0x0486,
+ 0x11d2: 0x048a, 0x11d3: 0x0035, 0x11d4: 0x0037, 0x11d5: 0x0003, 0x11d6: 0x003f, 0x11d7: 0x04c2,
+ 0x11d8: 0x04c6, 0x11d9: 0x1b62,
+ 0x11e0: 0x8133, 0x11e1: 0x8133, 0x11e2: 0x8133, 0x11e3: 0x8133,
+ 0x11e4: 0x8133, 0x11e5: 0x8133, 0x11e6: 0x8133, 0x11e7: 0x812e, 0x11e8: 0x812e, 0x11e9: 0x812e,
+ 0x11ea: 0x812e, 0x11eb: 0x812e, 0x11ec: 0x812e, 0x11ed: 0x812e, 0x11ee: 0x8133, 0x11ef: 0x8133,
+ 0x11f0: 0x1876, 0x11f1: 0x0446, 0x11f2: 0x0442, 0x11f3: 0x007f, 0x11f4: 0x007f, 0x11f5: 0x0011,
+ 0x11f6: 0x0013, 0x11f7: 0x00b7, 0x11f8: 0x00bb, 0x11f9: 0x04ba, 0x11fa: 0x04be, 0x11fb: 0x04ae,
+ 0x11fc: 0x04b2, 0x11fd: 0x0496, 0x11fe: 0x049a, 0x11ff: 0x048e,
+ // Block 0x48, offset 0x1200
+ 0x1200: 0x0492, 0x1201: 0x049e, 0x1202: 0x04a2, 0x1203: 0x04a6, 0x1204: 0x04aa,
+ 0x1207: 0x0077, 0x1208: 0x007b, 0x1209: 0x4280, 0x120a: 0x4280, 0x120b: 0x4280,
+ 0x120c: 0x4280, 0x120d: 0x007f, 0x120e: 0x007f, 0x120f: 0x007f, 0x1210: 0x0019, 0x1211: 0x0486,
+ 0x1212: 0x001d, 0x1214: 0x0037, 0x1215: 0x0035, 0x1216: 0x003f, 0x1217: 0x0003,
+ 0x1218: 0x0446, 0x1219: 0x0011, 0x121a: 0x0013, 0x121b: 0x00b7, 0x121c: 0x00bb, 0x121d: 0x04ba,
+ 0x121e: 0x04be, 0x121f: 0x0007, 0x1220: 0x000d, 0x1221: 0x0015, 0x1222: 0x0017, 0x1223: 0x001b,
+ 0x1224: 0x0039, 0x1225: 0x003d, 0x1226: 0x003b, 0x1228: 0x0079, 0x1229: 0x0009,
+ 0x122a: 0x000b, 0x122b: 0x0041,
+ 0x1230: 0x42c1, 0x1231: 0x4443, 0x1232: 0x42c6, 0x1234: 0x42cb,
+ 0x1236: 0x42d0, 0x1237: 0x4449, 0x1238: 0x42d5, 0x1239: 0x444f, 0x123a: 0x42da, 0x123b: 0x4455,
+ 0x123c: 0x42df, 0x123d: 0x445b, 0x123e: 0x42e4, 0x123f: 0x4461,
+ // Block 0x49, offset 0x1240
+ 0x1240: 0x0239, 0x1241: 0x4425, 0x1242: 0x4425, 0x1243: 0x442b, 0x1244: 0x442b, 0x1245: 0x446d,
+ 0x1246: 0x446d, 0x1247: 0x4431, 0x1248: 0x4431, 0x1249: 0x4479, 0x124a: 0x4479, 0x124b: 0x4479,
+ 0x124c: 0x4479, 0x124d: 0x023c, 0x124e: 0x023c, 0x124f: 0x023f, 0x1250: 0x023f, 0x1251: 0x023f,
+ 0x1252: 0x023f, 0x1253: 0x0242, 0x1254: 0x0242, 0x1255: 0x0245, 0x1256: 0x0245, 0x1257: 0x0245,
+ 0x1258: 0x0245, 0x1259: 0x0248, 0x125a: 0x0248, 0x125b: 0x0248, 0x125c: 0x0248, 0x125d: 0x024b,
+ 0x125e: 0x024b, 0x125f: 0x024b, 0x1260: 0x024b, 0x1261: 0x024e, 0x1262: 0x024e, 0x1263: 0x024e,
+ 0x1264: 0x024e, 0x1265: 0x0251, 0x1266: 0x0251, 0x1267: 0x0251, 0x1268: 0x0251, 0x1269: 0x0254,
+ 0x126a: 0x0254, 0x126b: 0x0257, 0x126c: 0x0257, 0x126d: 0x025a, 0x126e: 0x025a, 0x126f: 0x025d,
+ 0x1270: 0x025d, 0x1271: 0x0260, 0x1272: 0x0260, 0x1273: 0x0260, 0x1274: 0x0260, 0x1275: 0x0263,
+ 0x1276: 0x0263, 0x1277: 0x0263, 0x1278: 0x0263, 0x1279: 0x0266, 0x127a: 0x0266, 0x127b: 0x0266,
+ 0x127c: 0x0266, 0x127d: 0x0269, 0x127e: 0x0269, 0x127f: 0x0269,
+ // Block 0x4a, offset 0x1280
+ 0x1280: 0x0269, 0x1281: 0x026c, 0x1282: 0x026c, 0x1283: 0x026c, 0x1284: 0x026c, 0x1285: 0x026f,
+ 0x1286: 0x026f, 0x1287: 0x026f, 0x1288: 0x026f, 0x1289: 0x0272, 0x128a: 0x0272, 0x128b: 0x0272,
+ 0x128c: 0x0272, 0x128d: 0x0275, 0x128e: 0x0275, 0x128f: 0x0275, 0x1290: 0x0275, 0x1291: 0x0278,
+ 0x1292: 0x0278, 0x1293: 0x0278, 0x1294: 0x0278, 0x1295: 0x027b, 0x1296: 0x027b, 0x1297: 0x027b,
+ 0x1298: 0x027b, 0x1299: 0x027e, 0x129a: 0x027e, 0x129b: 0x027e, 0x129c: 0x027e, 0x129d: 0x0281,
+ 0x129e: 0x0281, 0x129f: 0x0281, 0x12a0: 0x0281, 0x12a1: 0x0284, 0x12a2: 0x0284, 0x12a3: 0x0284,
+ 0x12a4: 0x0284, 0x12a5: 0x0287, 0x12a6: 0x0287, 0x12a7: 0x0287, 0x12a8: 0x0287, 0x12a9: 0x028a,
+ 0x12aa: 0x028a, 0x12ab: 0x028a, 0x12ac: 0x028a, 0x12ad: 0x028d, 0x12ae: 0x028d, 0x12af: 0x0290,
+ 0x12b0: 0x0290, 0x12b1: 0x0293, 0x12b2: 0x0293, 0x12b3: 0x0293, 0x12b4: 0x0293, 0x12b5: 0x2e17,
+ 0x12b6: 0x2e17, 0x12b7: 0x2e1f, 0x12b8: 0x2e1f, 0x12b9: 0x2e27, 0x12ba: 0x2e27, 0x12bb: 0x1f88,
+ 0x12bc: 0x1f88,
+ // Block 0x4b, offset 0x12c0
+ 0x12c0: 0x0081, 0x12c1: 0x0083, 0x12c2: 0x0085, 0x12c3: 0x0087, 0x12c4: 0x0089, 0x12c5: 0x008b,
+ 0x12c6: 0x008d, 0x12c7: 0x008f, 0x12c8: 0x0091, 0x12c9: 0x0093, 0x12ca: 0x0095, 0x12cb: 0x0097,
+ 0x12cc: 0x0099, 0x12cd: 0x009b, 0x12ce: 0x009d, 0x12cf: 0x009f, 0x12d0: 0x00a1, 0x12d1: 0x00a3,
+ 0x12d2: 0x00a5, 0x12d3: 0x00a7, 0x12d4: 0x00a9, 0x12d5: 0x00ab, 0x12d6: 0x00ad, 0x12d7: 0x00af,
+ 0x12d8: 0x00b1, 0x12d9: 0x00b3, 0x12da: 0x00b5, 0x12db: 0x00b7, 0x12dc: 0x00b9, 0x12dd: 0x00bb,
+ 0x12de: 0x00bd, 0x12df: 0x047a, 0x12e0: 0x047e, 0x12e1: 0x048a, 0x12e2: 0x049e, 0x12e3: 0x04a2,
+ 0x12e4: 0x0486, 0x12e5: 0x05ae, 0x12e6: 0x05a6, 0x12e7: 0x04ca, 0x12e8: 0x04d2, 0x12e9: 0x04da,
+ 0x12ea: 0x04e2, 0x12eb: 0x04ea, 0x12ec: 0x056e, 0x12ed: 0x0576, 0x12ee: 0x057e, 0x12ef: 0x0522,
+ 0x12f0: 0x05b2, 0x12f1: 0x04ce, 0x12f2: 0x04d6, 0x12f3: 0x04de, 0x12f4: 0x04e6, 0x12f5: 0x04ee,
+ 0x12f6: 0x04f2, 0x12f7: 0x04f6, 0x12f8: 0x04fa, 0x12f9: 0x04fe, 0x12fa: 0x0502, 0x12fb: 0x0506,
+ 0x12fc: 0x050a, 0x12fd: 0x050e, 0x12fe: 0x0512, 0x12ff: 0x0516,
+ // Block 0x4c, offset 0x1300
+ 0x1300: 0x051a, 0x1301: 0x051e, 0x1302: 0x0526, 0x1303: 0x052a, 0x1304: 0x052e, 0x1305: 0x0532,
+ 0x1306: 0x0536, 0x1307: 0x053a, 0x1308: 0x053e, 0x1309: 0x0542, 0x130a: 0x0546, 0x130b: 0x054a,
+ 0x130c: 0x054e, 0x130d: 0x0552, 0x130e: 0x0556, 0x130f: 0x055a, 0x1310: 0x055e, 0x1311: 0x0562,
+ 0x1312: 0x0566, 0x1313: 0x056a, 0x1314: 0x0572, 0x1315: 0x057a, 0x1316: 0x0582, 0x1317: 0x0586,
+ 0x1318: 0x058a, 0x1319: 0x058e, 0x131a: 0x0592, 0x131b: 0x0596, 0x131c: 0x059a, 0x131d: 0x05aa,
+ 0x131e: 0x4a8f, 0x131f: 0x4a95, 0x1320: 0x03c6, 0x1321: 0x0316, 0x1322: 0x031a, 0x1323: 0x4a52,
+ 0x1324: 0x031e, 0x1325: 0x4a58, 0x1326: 0x4a5e, 0x1327: 0x0322, 0x1328: 0x0326, 0x1329: 0x032a,
+ 0x132a: 0x4a64, 0x132b: 0x4a6a, 0x132c: 0x4a70, 0x132d: 0x4a76, 0x132e: 0x4a7c, 0x132f: 0x4a82,
+ 0x1330: 0x036a, 0x1331: 0x032e, 0x1332: 0x0332, 0x1333: 0x0336, 0x1334: 0x037e, 0x1335: 0x033a,
+ 0x1336: 0x033e, 0x1337: 0x0342, 0x1338: 0x0346, 0x1339: 0x034a, 0x133a: 0x034e, 0x133b: 0x0352,
+ 0x133c: 0x0356, 0x133d: 0x035a, 0x133e: 0x035e,
+ // Block 0x4d, offset 0x1340
+ 0x1342: 0x49d4, 0x1343: 0x49da, 0x1344: 0x49e0, 0x1345: 0x49e6,
+ 0x1346: 0x49ec, 0x1347: 0x49f2, 0x134a: 0x49f8, 0x134b: 0x49fe,
+ 0x134c: 0x4a04, 0x134d: 0x4a0a, 0x134e: 0x4a10, 0x134f: 0x4a16,
+ 0x1352: 0x4a1c, 0x1353: 0x4a22, 0x1354: 0x4a28, 0x1355: 0x4a2e, 0x1356: 0x4a34, 0x1357: 0x4a3a,
+ 0x135a: 0x4a40, 0x135b: 0x4a46, 0x135c: 0x4a4c,
+ 0x1360: 0x00bf, 0x1361: 0x00c2, 0x1362: 0x00cb, 0x1363: 0x427b,
+ 0x1364: 0x00c8, 0x1365: 0x00c5, 0x1366: 0x044a, 0x1368: 0x046e, 0x1369: 0x044e,
+ 0x136a: 0x0452, 0x136b: 0x0456, 0x136c: 0x045a, 0x136d: 0x0472, 0x136e: 0x0476,
+ // Block 0x4e, offset 0x1380
+ 0x1380: 0x0063, 0x1381: 0x0065, 0x1382: 0x0067, 0x1383: 0x0069, 0x1384: 0x006b, 0x1385: 0x006d,
+ 0x1386: 0x006f, 0x1387: 0x0071, 0x1388: 0x0073, 0x1389: 0x0075, 0x138a: 0x0083, 0x138b: 0x0085,
+ 0x138c: 0x0087, 0x138d: 0x0089, 0x138e: 0x008b, 0x138f: 0x008d, 0x1390: 0x008f, 0x1391: 0x0091,
+ 0x1392: 0x0093, 0x1393: 0x0095, 0x1394: 0x0097, 0x1395: 0x0099, 0x1396: 0x009b, 0x1397: 0x009d,
+ 0x1398: 0x009f, 0x1399: 0x00a1, 0x139a: 0x00a3, 0x139b: 0x00a5, 0x139c: 0x00a7, 0x139d: 0x00a9,
+ 0x139e: 0x00ab, 0x139f: 0x00ad, 0x13a0: 0x00af, 0x13a1: 0x00b1, 0x13a2: 0x00b3, 0x13a3: 0x00b5,
+ 0x13a4: 0x00dd, 0x13a5: 0x00f2, 0x13a8: 0x0176, 0x13a9: 0x0179,
+ 0x13aa: 0x017c, 0x13ab: 0x017f, 0x13ac: 0x0182, 0x13ad: 0x0185, 0x13ae: 0x0188, 0x13af: 0x018b,
+ 0x13b0: 0x018e, 0x13b1: 0x0191, 0x13b2: 0x0194, 0x13b3: 0x0197, 0x13b4: 0x019a, 0x13b5: 0x019d,
+ 0x13b6: 0x01a0, 0x13b7: 0x01a3, 0x13b8: 0x01a6, 0x13b9: 0x018b, 0x13ba: 0x01a9, 0x13bb: 0x01ac,
+ 0x13bc: 0x01af, 0x13bd: 0x01b2, 0x13be: 0x01b5, 0x13bf: 0x01b8,
+ // Block 0x4f, offset 0x13c0
+ 0x13c0: 0x0200, 0x13c1: 0x0203, 0x13c2: 0x0206, 0x13c3: 0x045e, 0x13c4: 0x01ca, 0x13c5: 0x01d3,
+ 0x13c6: 0x01d9, 0x13c7: 0x01fd, 0x13c8: 0x01ee, 0x13c9: 0x01eb, 0x13ca: 0x0209, 0x13cb: 0x020c,
+ 0x13ce: 0x0021, 0x13cf: 0x0023, 0x13d0: 0x0025, 0x13d1: 0x0027,
+ 0x13d2: 0x0029, 0x13d3: 0x002b, 0x13d4: 0x002d, 0x13d5: 0x002f, 0x13d6: 0x0031, 0x13d7: 0x0033,
+ 0x13d8: 0x0021, 0x13d9: 0x0023, 0x13da: 0x0025, 0x13db: 0x0027, 0x13dc: 0x0029, 0x13dd: 0x002b,
+ 0x13de: 0x002d, 0x13df: 0x002f, 0x13e0: 0x0031, 0x13e1: 0x0033, 0x13e2: 0x0021, 0x13e3: 0x0023,
+ 0x13e4: 0x0025, 0x13e5: 0x0027, 0x13e6: 0x0029, 0x13e7: 0x002b, 0x13e8: 0x002d, 0x13e9: 0x002f,
+ 0x13ea: 0x0031, 0x13eb: 0x0033, 0x13ec: 0x0021, 0x13ed: 0x0023, 0x13ee: 0x0025, 0x13ef: 0x0027,
+ 0x13f0: 0x0029, 0x13f1: 0x002b, 0x13f2: 0x002d, 0x13f3: 0x002f, 0x13f4: 0x0031, 0x13f5: 0x0033,
+ 0x13f6: 0x0021, 0x13f7: 0x0023, 0x13f8: 0x0025, 0x13f9: 0x0027, 0x13fa: 0x0029, 0x13fb: 0x002b,
+ 0x13fc: 0x002d, 0x13fd: 0x002f, 0x13fe: 0x0031, 0x13ff: 0x0033,
+ // Block 0x50, offset 0x1400
+ 0x1400: 0x023c, 0x1401: 0x023f, 0x1402: 0x024b, 0x1403: 0x0254, 0x1405: 0x028d,
+ 0x1406: 0x025d, 0x1407: 0x024e, 0x1408: 0x026c, 0x1409: 0x0293, 0x140a: 0x027e, 0x140b: 0x0281,
+ 0x140c: 0x0284, 0x140d: 0x0287, 0x140e: 0x0260, 0x140f: 0x0272, 0x1410: 0x0278, 0x1411: 0x0266,
+ 0x1412: 0x027b, 0x1413: 0x025a, 0x1414: 0x0263, 0x1415: 0x0245, 0x1416: 0x0248, 0x1417: 0x0251,
+ 0x1418: 0x0257, 0x1419: 0x0269, 0x141a: 0x026f, 0x141b: 0x0275, 0x141c: 0x0296, 0x141d: 0x02e7,
+ 0x141e: 0x02cf, 0x141f: 0x0299, 0x1421: 0x023f, 0x1422: 0x024b,
+ 0x1424: 0x028a, 0x1427: 0x024e, 0x1429: 0x0293,
+ 0x142a: 0x027e, 0x142b: 0x0281, 0x142c: 0x0284, 0x142d: 0x0287, 0x142e: 0x0260, 0x142f: 0x0272,
+ 0x1430: 0x0278, 0x1431: 0x0266, 0x1432: 0x027b, 0x1434: 0x0263, 0x1435: 0x0245,
+ 0x1436: 0x0248, 0x1437: 0x0251, 0x1439: 0x0269, 0x143b: 0x0275,
+ // Block 0x51, offset 0x1440
+ 0x1442: 0x024b,
+ 0x1447: 0x024e, 0x1449: 0x0293, 0x144b: 0x0281,
+ 0x144d: 0x0287, 0x144e: 0x0260, 0x144f: 0x0272, 0x1451: 0x0266,
+ 0x1452: 0x027b, 0x1454: 0x0263, 0x1457: 0x0251,
+ 0x1459: 0x0269, 0x145b: 0x0275, 0x145d: 0x02e7,
+ 0x145f: 0x0299, 0x1461: 0x023f, 0x1462: 0x024b,
+ 0x1464: 0x028a, 0x1467: 0x024e, 0x1468: 0x026c, 0x1469: 0x0293,
+ 0x146a: 0x027e, 0x146c: 0x0284, 0x146d: 0x0287, 0x146e: 0x0260, 0x146f: 0x0272,
+ 0x1470: 0x0278, 0x1471: 0x0266, 0x1472: 0x027b, 0x1474: 0x0263, 0x1475: 0x0245,
+ 0x1476: 0x0248, 0x1477: 0x0251, 0x1479: 0x0269, 0x147a: 0x026f, 0x147b: 0x0275,
+ 0x147c: 0x0296, 0x147e: 0x02cf,
+ // Block 0x52, offset 0x1480
+ 0x1480: 0x023c, 0x1481: 0x023f, 0x1482: 0x024b, 0x1483: 0x0254, 0x1484: 0x028a, 0x1485: 0x028d,
+ 0x1486: 0x025d, 0x1487: 0x024e, 0x1488: 0x026c, 0x1489: 0x0293, 0x148b: 0x0281,
+ 0x148c: 0x0284, 0x148d: 0x0287, 0x148e: 0x0260, 0x148f: 0x0272, 0x1490: 0x0278, 0x1491: 0x0266,
+ 0x1492: 0x027b, 0x1493: 0x025a, 0x1494: 0x0263, 0x1495: 0x0245, 0x1496: 0x0248, 0x1497: 0x0251,
+ 0x1498: 0x0257, 0x1499: 0x0269, 0x149a: 0x026f, 0x149b: 0x0275,
+ 0x14a1: 0x023f, 0x14a2: 0x024b, 0x14a3: 0x0254,
+ 0x14a5: 0x028d, 0x14a6: 0x025d, 0x14a7: 0x024e, 0x14a8: 0x026c, 0x14a9: 0x0293,
+ 0x14ab: 0x0281, 0x14ac: 0x0284, 0x14ad: 0x0287, 0x14ae: 0x0260, 0x14af: 0x0272,
+ 0x14b0: 0x0278, 0x14b1: 0x0266, 0x14b2: 0x027b, 0x14b3: 0x025a, 0x14b4: 0x0263, 0x14b5: 0x0245,
+ 0x14b6: 0x0248, 0x14b7: 0x0251, 0x14b8: 0x0257, 0x14b9: 0x0269, 0x14ba: 0x026f, 0x14bb: 0x0275,
+ // Block 0x53, offset 0x14c0
+ 0x14c0: 0x187c, 0x14c1: 0x1879, 0x14c2: 0x187f, 0x14c3: 0x18a3, 0x14c4: 0x18c7, 0x14c5: 0x18eb,
+ 0x14c6: 0x190f, 0x14c7: 0x1918, 0x14c8: 0x191e, 0x14c9: 0x1924, 0x14ca: 0x192a,
+ 0x14d0: 0x1a92, 0x14d1: 0x1a96,
+ 0x14d2: 0x1a9a, 0x14d3: 0x1a9e, 0x14d4: 0x1aa2, 0x14d5: 0x1aa6, 0x14d6: 0x1aaa, 0x14d7: 0x1aae,
+ 0x14d8: 0x1ab2, 0x14d9: 0x1ab6, 0x14da: 0x1aba, 0x14db: 0x1abe, 0x14dc: 0x1ac2, 0x14dd: 0x1ac6,
+ 0x14de: 0x1aca, 0x14df: 0x1ace, 0x14e0: 0x1ad2, 0x14e1: 0x1ad6, 0x14e2: 0x1ada, 0x14e3: 0x1ade,
+ 0x14e4: 0x1ae2, 0x14e5: 0x1ae6, 0x14e6: 0x1aea, 0x14e7: 0x1aee, 0x14e8: 0x1af2, 0x14e9: 0x1af6,
+ 0x14ea: 0x272b, 0x14eb: 0x0047, 0x14ec: 0x0065, 0x14ed: 0x193f, 0x14ee: 0x19b7,
+ 0x14f0: 0x0043, 0x14f1: 0x0045, 0x14f2: 0x0047, 0x14f3: 0x0049, 0x14f4: 0x004b, 0x14f5: 0x004d,
+ 0x14f6: 0x004f, 0x14f7: 0x0051, 0x14f8: 0x0053, 0x14f9: 0x0055, 0x14fa: 0x0057, 0x14fb: 0x0059,
+ 0x14fc: 0x005b, 0x14fd: 0x005d, 0x14fe: 0x005f, 0x14ff: 0x0061,
+ // Block 0x54, offset 0x1500
+ 0x1500: 0x26b3, 0x1501: 0x26c8, 0x1502: 0x0506,
+ 0x1510: 0x0c12, 0x1511: 0x0a4a,
+ 0x1512: 0x08d6, 0x1513: 0x45db, 0x1514: 0x071e, 0x1515: 0x09f2, 0x1516: 0x1332, 0x1517: 0x0a02,
+ 0x1518: 0x072a, 0x1519: 0x0cda, 0x151a: 0x0eb2, 0x151b: 0x0cb2, 0x151c: 0x082a, 0x151d: 0x0b6e,
+ 0x151e: 0x07c2, 0x151f: 0x0cba, 0x1520: 0x0816, 0x1521: 0x111a, 0x1522: 0x0f86, 0x1523: 0x138e,
+ 0x1524: 0x09d6, 0x1525: 0x090e, 0x1526: 0x0e66, 0x1527: 0x0c1e, 0x1528: 0x0c4a, 0x1529: 0x06c2,
+ 0x152a: 0x06ce, 0x152b: 0x140e, 0x152c: 0x0ade, 0x152d: 0x06ea, 0x152e: 0x08f2, 0x152f: 0x0c3e,
+ 0x1530: 0x13b6, 0x1531: 0x0c16, 0x1532: 0x1072, 0x1533: 0x10ae, 0x1534: 0x08fa, 0x1535: 0x0e46,
+ 0x1536: 0x0d0e, 0x1537: 0x0d0a, 0x1538: 0x0f9a, 0x1539: 0x082e, 0x153a: 0x095a, 0x153b: 0x1446,
+ // Block 0x55, offset 0x1540
+ 0x1540: 0x06fe, 0x1541: 0x06f6, 0x1542: 0x0706, 0x1543: 0x164a, 0x1544: 0x074a, 0x1545: 0x075a,
+ 0x1546: 0x075e, 0x1547: 0x0766, 0x1548: 0x076e, 0x1549: 0x0772, 0x154a: 0x077e, 0x154b: 0x0776,
+ 0x154c: 0x05b6, 0x154d: 0x165e, 0x154e: 0x0792, 0x154f: 0x0796, 0x1550: 0x079a, 0x1551: 0x07b6,
+ 0x1552: 0x164f, 0x1553: 0x05ba, 0x1554: 0x07a2, 0x1555: 0x07c2, 0x1556: 0x1659, 0x1557: 0x07d2,
+ 0x1558: 0x07da, 0x1559: 0x073a, 0x155a: 0x07e2, 0x155b: 0x07e6, 0x155c: 0x1834, 0x155d: 0x0802,
+ 0x155e: 0x080a, 0x155f: 0x05c2, 0x1560: 0x0822, 0x1561: 0x0826, 0x1562: 0x082e, 0x1563: 0x0832,
+ 0x1564: 0x05c6, 0x1565: 0x084a, 0x1566: 0x084e, 0x1567: 0x085a, 0x1568: 0x0866, 0x1569: 0x086a,
+ 0x156a: 0x086e, 0x156b: 0x0876, 0x156c: 0x0896, 0x156d: 0x089a, 0x156e: 0x08a2, 0x156f: 0x08b2,
+ 0x1570: 0x08ba, 0x1571: 0x08be, 0x1572: 0x08be, 0x1573: 0x08be, 0x1574: 0x166d, 0x1575: 0x0e96,
+ 0x1576: 0x08d2, 0x1577: 0x08da, 0x1578: 0x1672, 0x1579: 0x08e6, 0x157a: 0x08ee, 0x157b: 0x08f6,
+ 0x157c: 0x091e, 0x157d: 0x090a, 0x157e: 0x0916, 0x157f: 0x091a,
+ // Block 0x56, offset 0x1580
+ 0x1580: 0x0922, 0x1581: 0x092a, 0x1582: 0x092e, 0x1583: 0x0936, 0x1584: 0x093e, 0x1585: 0x0942,
+ 0x1586: 0x0942, 0x1587: 0x094a, 0x1588: 0x0952, 0x1589: 0x0956, 0x158a: 0x0962, 0x158b: 0x0986,
+ 0x158c: 0x096a, 0x158d: 0x098a, 0x158e: 0x096e, 0x158f: 0x0976, 0x1590: 0x080e, 0x1591: 0x09d2,
+ 0x1592: 0x099a, 0x1593: 0x099e, 0x1594: 0x09a2, 0x1595: 0x0996, 0x1596: 0x09aa, 0x1597: 0x09a6,
+ 0x1598: 0x09be, 0x1599: 0x1677, 0x159a: 0x09da, 0x159b: 0x09de, 0x159c: 0x09e6, 0x159d: 0x09f2,
+ 0x159e: 0x09fa, 0x159f: 0x0a16, 0x15a0: 0x167c, 0x15a1: 0x1681, 0x15a2: 0x0a22, 0x15a3: 0x0a26,
+ 0x15a4: 0x0a2a, 0x15a5: 0x0a1e, 0x15a6: 0x0a32, 0x15a7: 0x05ca, 0x15a8: 0x05ce, 0x15a9: 0x0a3a,
+ 0x15aa: 0x0a42, 0x15ab: 0x0a42, 0x15ac: 0x1686, 0x15ad: 0x0a5e, 0x15ae: 0x0a62, 0x15af: 0x0a66,
+ 0x15b0: 0x0a6e, 0x15b1: 0x168b, 0x15b2: 0x0a76, 0x15b3: 0x0a7a, 0x15b4: 0x0b52, 0x15b5: 0x0a82,
+ 0x15b6: 0x05d2, 0x15b7: 0x0a8e, 0x15b8: 0x0a9e, 0x15b9: 0x0aaa, 0x15ba: 0x0aa6, 0x15bb: 0x1695,
+ 0x15bc: 0x0ab2, 0x15bd: 0x169a, 0x15be: 0x0abe, 0x15bf: 0x0aba,
+ // Block 0x57, offset 0x15c0
+ 0x15c0: 0x0ac2, 0x15c1: 0x0ad2, 0x15c2: 0x0ad6, 0x15c3: 0x05d6, 0x15c4: 0x0ae6, 0x15c5: 0x0aee,
+ 0x15c6: 0x0af2, 0x15c7: 0x0af6, 0x15c8: 0x05da, 0x15c9: 0x169f, 0x15ca: 0x05de, 0x15cb: 0x0b12,
+ 0x15cc: 0x0b16, 0x15cd: 0x0b1a, 0x15ce: 0x0b22, 0x15cf: 0x1866, 0x15d0: 0x0b3a, 0x15d1: 0x16a9,
+ 0x15d2: 0x16a9, 0x15d3: 0x11da, 0x15d4: 0x0b4a, 0x15d5: 0x0b4a, 0x15d6: 0x05e2, 0x15d7: 0x16cc,
+ 0x15d8: 0x179e, 0x15d9: 0x0b5a, 0x15da: 0x0b62, 0x15db: 0x05e6, 0x15dc: 0x0b76, 0x15dd: 0x0b86,
+ 0x15de: 0x0b8a, 0x15df: 0x0b92, 0x15e0: 0x0ba2, 0x15e1: 0x05ee, 0x15e2: 0x05ea, 0x15e3: 0x0ba6,
+ 0x15e4: 0x16ae, 0x15e5: 0x0baa, 0x15e6: 0x0bbe, 0x15e7: 0x0bc2, 0x15e8: 0x0bc6, 0x15e9: 0x0bc2,
+ 0x15ea: 0x0bd2, 0x15eb: 0x0bd6, 0x15ec: 0x0be6, 0x15ed: 0x0bde, 0x15ee: 0x0be2, 0x15ef: 0x0bea,
+ 0x15f0: 0x0bee, 0x15f1: 0x0bf2, 0x15f2: 0x0bfe, 0x15f3: 0x0c02, 0x15f4: 0x0c1a, 0x15f5: 0x0c22,
+ 0x15f6: 0x0c32, 0x15f7: 0x0c46, 0x15f8: 0x16bd, 0x15f9: 0x0c42, 0x15fa: 0x0c36, 0x15fb: 0x0c4e,
+ 0x15fc: 0x0c56, 0x15fd: 0x0c6a, 0x15fe: 0x16c2, 0x15ff: 0x0c72,
+ // Block 0x58, offset 0x1600
+ 0x1600: 0x0c66, 0x1601: 0x0c5e, 0x1602: 0x05f2, 0x1603: 0x0c7a, 0x1604: 0x0c82, 0x1605: 0x0c8a,
+ 0x1606: 0x0c7e, 0x1607: 0x05f6, 0x1608: 0x0c9a, 0x1609: 0x0ca2, 0x160a: 0x16c7, 0x160b: 0x0cce,
+ 0x160c: 0x0d02, 0x160d: 0x0cde, 0x160e: 0x0602, 0x160f: 0x0cea, 0x1610: 0x05fe, 0x1611: 0x05fa,
+ 0x1612: 0x07c6, 0x1613: 0x07ca, 0x1614: 0x0d06, 0x1615: 0x0cee, 0x1616: 0x11ae, 0x1617: 0x0666,
+ 0x1618: 0x0d12, 0x1619: 0x0d16, 0x161a: 0x0d1a, 0x161b: 0x0d2e, 0x161c: 0x0d26, 0x161d: 0x16e0,
+ 0x161e: 0x0606, 0x161f: 0x0d42, 0x1620: 0x0d36, 0x1621: 0x0d52, 0x1622: 0x0d5a, 0x1623: 0x16ea,
+ 0x1624: 0x0d5e, 0x1625: 0x0d4a, 0x1626: 0x0d66, 0x1627: 0x060a, 0x1628: 0x0d6a, 0x1629: 0x0d6e,
+ 0x162a: 0x0d72, 0x162b: 0x0d7e, 0x162c: 0x16ef, 0x162d: 0x0d86, 0x162e: 0x060e, 0x162f: 0x0d92,
+ 0x1630: 0x16f4, 0x1631: 0x0d96, 0x1632: 0x0612, 0x1633: 0x0da2, 0x1634: 0x0dae, 0x1635: 0x0dba,
+ 0x1636: 0x0dbe, 0x1637: 0x16f9, 0x1638: 0x1690, 0x1639: 0x16fe, 0x163a: 0x0dde, 0x163b: 0x1703,
+ 0x163c: 0x0dea, 0x163d: 0x0df2, 0x163e: 0x0de2, 0x163f: 0x0dfe,
+ // Block 0x59, offset 0x1640
+ 0x1640: 0x0e0e, 0x1641: 0x0e1e, 0x1642: 0x0e12, 0x1643: 0x0e16, 0x1644: 0x0e22, 0x1645: 0x0e26,
+ 0x1646: 0x1708, 0x1647: 0x0e0a, 0x1648: 0x0e3e, 0x1649: 0x0e42, 0x164a: 0x0616, 0x164b: 0x0e56,
+ 0x164c: 0x0e52, 0x164d: 0x170d, 0x164e: 0x0e36, 0x164f: 0x0e72, 0x1650: 0x1712, 0x1651: 0x1717,
+ 0x1652: 0x0e76, 0x1653: 0x0e8a, 0x1654: 0x0e86, 0x1655: 0x0e82, 0x1656: 0x061a, 0x1657: 0x0e8e,
+ 0x1658: 0x0e9e, 0x1659: 0x0e9a, 0x165a: 0x0ea6, 0x165b: 0x1654, 0x165c: 0x0eb6, 0x165d: 0x171c,
+ 0x165e: 0x0ec2, 0x165f: 0x1726, 0x1660: 0x0ed6, 0x1661: 0x0ee2, 0x1662: 0x0ef6, 0x1663: 0x172b,
+ 0x1664: 0x0f0a, 0x1665: 0x0f0e, 0x1666: 0x1730, 0x1667: 0x1735, 0x1668: 0x0f2a, 0x1669: 0x0f3a,
+ 0x166a: 0x061e, 0x166b: 0x0f3e, 0x166c: 0x0622, 0x166d: 0x0622, 0x166e: 0x0f56, 0x166f: 0x0f5a,
+ 0x1670: 0x0f62, 0x1671: 0x0f66, 0x1672: 0x0f72, 0x1673: 0x0626, 0x1674: 0x0f8a, 0x1675: 0x173a,
+ 0x1676: 0x0fa6, 0x1677: 0x173f, 0x1678: 0x0fb2, 0x1679: 0x16a4, 0x167a: 0x0fc2, 0x167b: 0x1744,
+ 0x167c: 0x1749, 0x167d: 0x174e, 0x167e: 0x062a, 0x167f: 0x062e,
+ // Block 0x5a, offset 0x1680
+ 0x1680: 0x0ffa, 0x1681: 0x1758, 0x1682: 0x1753, 0x1683: 0x175d, 0x1684: 0x1762, 0x1685: 0x1002,
+ 0x1686: 0x1006, 0x1687: 0x1006, 0x1688: 0x100e, 0x1689: 0x0636, 0x168a: 0x1012, 0x168b: 0x063a,
+ 0x168c: 0x063e, 0x168d: 0x176c, 0x168e: 0x1026, 0x168f: 0x102e, 0x1690: 0x103a, 0x1691: 0x0642,
+ 0x1692: 0x1771, 0x1693: 0x105e, 0x1694: 0x1776, 0x1695: 0x177b, 0x1696: 0x107e, 0x1697: 0x1096,
+ 0x1698: 0x0646, 0x1699: 0x109e, 0x169a: 0x10a2, 0x169b: 0x10a6, 0x169c: 0x1780, 0x169d: 0x1785,
+ 0x169e: 0x1785, 0x169f: 0x10be, 0x16a0: 0x064a, 0x16a1: 0x178a, 0x16a2: 0x10d2, 0x16a3: 0x10d6,
+ 0x16a4: 0x064e, 0x16a5: 0x178f, 0x16a6: 0x10f2, 0x16a7: 0x0652, 0x16a8: 0x1102, 0x16a9: 0x10fa,
+ 0x16aa: 0x110a, 0x16ab: 0x1799, 0x16ac: 0x1122, 0x16ad: 0x0656, 0x16ae: 0x112e, 0x16af: 0x1136,
+ 0x16b0: 0x1146, 0x16b1: 0x065a, 0x16b2: 0x17a3, 0x16b3: 0x17a8, 0x16b4: 0x065e, 0x16b5: 0x17ad,
+ 0x16b6: 0x115e, 0x16b7: 0x17b2, 0x16b8: 0x116a, 0x16b9: 0x1176, 0x16ba: 0x117e, 0x16bb: 0x17b7,
+ 0x16bc: 0x17bc, 0x16bd: 0x1192, 0x16be: 0x17c1, 0x16bf: 0x119a,
+ // Block 0x5b, offset 0x16c0
+ 0x16c0: 0x16d1, 0x16c1: 0x0662, 0x16c2: 0x11b2, 0x16c3: 0x11b6, 0x16c4: 0x066a, 0x16c5: 0x11ba,
+ 0x16c6: 0x0a36, 0x16c7: 0x17c6, 0x16c8: 0x17cb, 0x16c9: 0x16d6, 0x16ca: 0x16db, 0x16cb: 0x11da,
+ 0x16cc: 0x11de, 0x16cd: 0x13f6, 0x16ce: 0x066e, 0x16cf: 0x120a, 0x16d0: 0x1206, 0x16d1: 0x120e,
+ 0x16d2: 0x0842, 0x16d3: 0x1212, 0x16d4: 0x1216, 0x16d5: 0x121a, 0x16d6: 0x1222, 0x16d7: 0x17d0,
+ 0x16d8: 0x121e, 0x16d9: 0x1226, 0x16da: 0x123a, 0x16db: 0x123e, 0x16dc: 0x122a, 0x16dd: 0x1242,
+ 0x16de: 0x1256, 0x16df: 0x126a, 0x16e0: 0x1236, 0x16e1: 0x124a, 0x16e2: 0x124e, 0x16e3: 0x1252,
+ 0x16e4: 0x17d5, 0x16e5: 0x17df, 0x16e6: 0x17da, 0x16e7: 0x0672, 0x16e8: 0x1272, 0x16e9: 0x1276,
+ 0x16ea: 0x127e, 0x16eb: 0x17f3, 0x16ec: 0x1282, 0x16ed: 0x17e4, 0x16ee: 0x0676, 0x16ef: 0x067a,
+ 0x16f0: 0x17e9, 0x16f1: 0x17ee, 0x16f2: 0x067e, 0x16f3: 0x12a2, 0x16f4: 0x12a6, 0x16f5: 0x12aa,
+ 0x16f6: 0x12ae, 0x16f7: 0x12ba, 0x16f8: 0x12b6, 0x16f9: 0x12c2, 0x16fa: 0x12be, 0x16fb: 0x12ce,
+ 0x16fc: 0x12c6, 0x16fd: 0x12ca, 0x16fe: 0x12d2, 0x16ff: 0x0682,
+ // Block 0x5c, offset 0x1700
+ 0x1700: 0x12da, 0x1701: 0x12de, 0x1702: 0x0686, 0x1703: 0x12ee, 0x1704: 0x12f2, 0x1705: 0x17f8,
+ 0x1706: 0x12fe, 0x1707: 0x1302, 0x1708: 0x068a, 0x1709: 0x130e, 0x170a: 0x05be, 0x170b: 0x17fd,
+ 0x170c: 0x1802, 0x170d: 0x068e, 0x170e: 0x0692, 0x170f: 0x133a, 0x1710: 0x1352, 0x1711: 0x136e,
+ 0x1712: 0x137e, 0x1713: 0x1807, 0x1714: 0x1392, 0x1715: 0x1396, 0x1716: 0x13ae, 0x1717: 0x13ba,
+ 0x1718: 0x1811, 0x1719: 0x1663, 0x171a: 0x13c6, 0x171b: 0x13c2, 0x171c: 0x13ce, 0x171d: 0x1668,
+ 0x171e: 0x13da, 0x171f: 0x13e6, 0x1720: 0x1816, 0x1721: 0x181b, 0x1722: 0x1426, 0x1723: 0x1432,
+ 0x1724: 0x143a, 0x1725: 0x1820, 0x1726: 0x143e, 0x1727: 0x146a, 0x1728: 0x1476, 0x1729: 0x147a,
+ 0x172a: 0x1472, 0x172b: 0x1486, 0x172c: 0x148a, 0x172d: 0x1825, 0x172e: 0x1496, 0x172f: 0x0696,
+ 0x1730: 0x149e, 0x1731: 0x182a, 0x1732: 0x069a, 0x1733: 0x14d6, 0x1734: 0x0ac6, 0x1735: 0x14ee,
+ 0x1736: 0x182f, 0x1737: 0x1839, 0x1738: 0x069e, 0x1739: 0x06a2, 0x173a: 0x1516, 0x173b: 0x183e,
+ 0x173c: 0x06a6, 0x173d: 0x1843, 0x173e: 0x152e, 0x173f: 0x152e,
+ // Block 0x5d, offset 0x1740
+ 0x1740: 0x1536, 0x1741: 0x1848, 0x1742: 0x154e, 0x1743: 0x06aa, 0x1744: 0x155e, 0x1745: 0x156a,
+ 0x1746: 0x1572, 0x1747: 0x157a, 0x1748: 0x06ae, 0x1749: 0x184d, 0x174a: 0x158e, 0x174b: 0x15aa,
+ 0x174c: 0x15b6, 0x174d: 0x06b2, 0x174e: 0x06b6, 0x174f: 0x15ba, 0x1750: 0x1852, 0x1751: 0x06ba,
+ 0x1752: 0x1857, 0x1753: 0x185c, 0x1754: 0x1861, 0x1755: 0x15de, 0x1756: 0x06be, 0x1757: 0x15f2,
+ 0x1758: 0x15fa, 0x1759: 0x15fe, 0x175a: 0x1606, 0x175b: 0x160e, 0x175c: 0x1616, 0x175d: 0x186b,
+}
+
+// nfkcIndex: 22 blocks, 1408 entries, 2816 bytes
+// Block 0 is the zero block.
+var nfkcIndex = [1408]uint16{
+ // Block 0x0, offset 0x0
+ // Block 0x1, offset 0x40
+ // Block 0x2, offset 0x80
+ // Block 0x3, offset 0xc0
+ 0xc2: 0x5c, 0xc3: 0x01, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x5d, 0xc7: 0x04,
+ 0xc8: 0x05, 0xca: 0x5e, 0xcb: 0x5f, 0xcc: 0x06, 0xcd: 0x07, 0xce: 0x08, 0xcf: 0x09,
+ 0xd0: 0x0a, 0xd1: 0x60, 0xd2: 0x61, 0xd3: 0x0b, 0xd6: 0x0c, 0xd7: 0x62,
+ 0xd8: 0x63, 0xd9: 0x0d, 0xdb: 0x64, 0xdc: 0x65, 0xdd: 0x66, 0xdf: 0x67,
+ 0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05,
+ 0xea: 0x06, 0xeb: 0x07, 0xec: 0x08, 0xed: 0x09, 0xef: 0x0a,
+ 0xf0: 0x13,
+ // Block 0x4, offset 0x100
+ 0x120: 0x68, 0x121: 0x69, 0x123: 0x0e, 0x124: 0x6a, 0x125: 0x6b, 0x126: 0x6c, 0x127: 0x6d,
+ 0x128: 0x6e, 0x129: 0x6f, 0x12a: 0x70, 0x12b: 0x71, 0x12c: 0x6c, 0x12d: 0x72, 0x12e: 0x73, 0x12f: 0x74,
+ 0x131: 0x75, 0x132: 0x76, 0x133: 0x77, 0x134: 0x78, 0x135: 0x79, 0x137: 0x7a,
+ 0x138: 0x7b, 0x139: 0x7c, 0x13a: 0x7d, 0x13b: 0x7e, 0x13c: 0x7f, 0x13d: 0x80, 0x13e: 0x81, 0x13f: 0x82,
+ // Block 0x5, offset 0x140
+ 0x140: 0x83, 0x142: 0x84, 0x143: 0x85, 0x144: 0x86, 0x145: 0x87, 0x146: 0x88, 0x147: 0x89,
+ 0x14d: 0x8a,
+ 0x15c: 0x8b, 0x15f: 0x8c,
+ 0x162: 0x8d, 0x164: 0x8e,
+ 0x168: 0x8f, 0x169: 0x90, 0x16a: 0x91, 0x16b: 0x92, 0x16c: 0x0f, 0x16d: 0x93, 0x16e: 0x94, 0x16f: 0x95,
+ 0x170: 0x96, 0x173: 0x97, 0x174: 0x98, 0x175: 0x10, 0x176: 0x11, 0x177: 0x12,
+ 0x178: 0x13, 0x179: 0x14, 0x17a: 0x15, 0x17b: 0x16, 0x17c: 0x17, 0x17d: 0x18, 0x17e: 0x19, 0x17f: 0x1a,
+ // Block 0x6, offset 0x180
+ 0x180: 0x99, 0x181: 0x9a, 0x182: 0x9b, 0x183: 0x9c, 0x184: 0x1b, 0x185: 0x1c, 0x186: 0x9d, 0x187: 0x9e,
+ 0x188: 0x9f, 0x189: 0x1d, 0x18a: 0x1e, 0x18b: 0xa0, 0x18c: 0xa1,
+ 0x191: 0x1f, 0x192: 0x20, 0x193: 0xa2,
+ 0x1a8: 0xa3, 0x1a9: 0xa4, 0x1ab: 0xa5,
+ 0x1b1: 0xa6, 0x1b3: 0xa7, 0x1b5: 0xa8, 0x1b7: 0xa9,
+ 0x1ba: 0xaa, 0x1bb: 0xab, 0x1bc: 0x21, 0x1bd: 0x22, 0x1be: 0x23, 0x1bf: 0xac,
+ // Block 0x7, offset 0x1c0
+ 0x1c0: 0xad, 0x1c1: 0x24, 0x1c2: 0x25, 0x1c3: 0x26, 0x1c4: 0xae, 0x1c5: 0x27, 0x1c6: 0x28,
+ 0x1c8: 0x29, 0x1c9: 0x2a, 0x1ca: 0x2b, 0x1cb: 0x2c, 0x1cc: 0x2d, 0x1cd: 0x2e, 0x1ce: 0x2f, 0x1cf: 0x30,
+ // Block 0x8, offset 0x200
+ 0x219: 0xaf, 0x21a: 0xb0, 0x21b: 0xb1, 0x21d: 0xb2, 0x21f: 0xb3,
+ 0x220: 0xb4, 0x223: 0xb5, 0x224: 0xb6, 0x225: 0xb7, 0x226: 0xb8, 0x227: 0xb9,
+ 0x22a: 0xba, 0x22b: 0xbb, 0x22d: 0xbc, 0x22f: 0xbd,
+ 0x230: 0xbe, 0x231: 0xbf, 0x232: 0xc0, 0x233: 0xc1, 0x234: 0xc2, 0x235: 0xc3, 0x236: 0xc4, 0x237: 0xbe,
+ 0x238: 0xbf, 0x239: 0xc0, 0x23a: 0xc1, 0x23b: 0xc2, 0x23c: 0xc3, 0x23d: 0xc4, 0x23e: 0xbe, 0x23f: 0xbf,
+ // Block 0x9, offset 0x240
+ 0x240: 0xc0, 0x241: 0xc1, 0x242: 0xc2, 0x243: 0xc3, 0x244: 0xc4, 0x245: 0xbe, 0x246: 0xbf, 0x247: 0xc0,
+ 0x248: 0xc1, 0x249: 0xc2, 0x24a: 0xc3, 0x24b: 0xc4, 0x24c: 0xbe, 0x24d: 0xbf, 0x24e: 0xc0, 0x24f: 0xc1,
+ 0x250: 0xc2, 0x251: 0xc3, 0x252: 0xc4, 0x253: 0xbe, 0x254: 0xbf, 0x255: 0xc0, 0x256: 0xc1, 0x257: 0xc2,
+ 0x258: 0xc3, 0x259: 0xc4, 0x25a: 0xbe, 0x25b: 0xbf, 0x25c: 0xc0, 0x25d: 0xc1, 0x25e: 0xc2, 0x25f: 0xc3,
+ 0x260: 0xc4, 0x261: 0xbe, 0x262: 0xbf, 0x263: 0xc0, 0x264: 0xc1, 0x265: 0xc2, 0x266: 0xc3, 0x267: 0xc4,
+ 0x268: 0xbe, 0x269: 0xbf, 0x26a: 0xc0, 0x26b: 0xc1, 0x26c: 0xc2, 0x26d: 0xc3, 0x26e: 0xc4, 0x26f: 0xbe,
+ 0x270: 0xbf, 0x271: 0xc0, 0x272: 0xc1, 0x273: 0xc2, 0x274: 0xc3, 0x275: 0xc4, 0x276: 0xbe, 0x277: 0xbf,
+ 0x278: 0xc0, 0x279: 0xc1, 0x27a: 0xc2, 0x27b: 0xc3, 0x27c: 0xc4, 0x27d: 0xbe, 0x27e: 0xbf, 0x27f: 0xc0,
+ // Block 0xa, offset 0x280
+ 0x280: 0xc1, 0x281: 0xc2, 0x282: 0xc3, 0x283: 0xc4, 0x284: 0xbe, 0x285: 0xbf, 0x286: 0xc0, 0x287: 0xc1,
+ 0x288: 0xc2, 0x289: 0xc3, 0x28a: 0xc4, 0x28b: 0xbe, 0x28c: 0xbf, 0x28d: 0xc0, 0x28e: 0xc1, 0x28f: 0xc2,
+ 0x290: 0xc3, 0x291: 0xc4, 0x292: 0xbe, 0x293: 0xbf, 0x294: 0xc0, 0x295: 0xc1, 0x296: 0xc2, 0x297: 0xc3,
+ 0x298: 0xc4, 0x299: 0xbe, 0x29a: 0xbf, 0x29b: 0xc0, 0x29c: 0xc1, 0x29d: 0xc2, 0x29e: 0xc3, 0x29f: 0xc4,
+ 0x2a0: 0xbe, 0x2a1: 0xbf, 0x2a2: 0xc0, 0x2a3: 0xc1, 0x2a4: 0xc2, 0x2a5: 0xc3, 0x2a6: 0xc4, 0x2a7: 0xbe,
+ 0x2a8: 0xbf, 0x2a9: 0xc0, 0x2aa: 0xc1, 0x2ab: 0xc2, 0x2ac: 0xc3, 0x2ad: 0xc4, 0x2ae: 0xbe, 0x2af: 0xbf,
+ 0x2b0: 0xc0, 0x2b1: 0xc1, 0x2b2: 0xc2, 0x2b3: 0xc3, 0x2b4: 0xc4, 0x2b5: 0xbe, 0x2b6: 0xbf, 0x2b7: 0xc0,
+ 0x2b8: 0xc1, 0x2b9: 0xc2, 0x2ba: 0xc3, 0x2bb: 0xc4, 0x2bc: 0xbe, 0x2bd: 0xbf, 0x2be: 0xc0, 0x2bf: 0xc1,
+ // Block 0xb, offset 0x2c0
+ 0x2c0: 0xc2, 0x2c1: 0xc3, 0x2c2: 0xc4, 0x2c3: 0xbe, 0x2c4: 0xbf, 0x2c5: 0xc0, 0x2c6: 0xc1, 0x2c7: 0xc2,
+ 0x2c8: 0xc3, 0x2c9: 0xc4, 0x2ca: 0xbe, 0x2cb: 0xbf, 0x2cc: 0xc0, 0x2cd: 0xc1, 0x2ce: 0xc2, 0x2cf: 0xc3,
+ 0x2d0: 0xc4, 0x2d1: 0xbe, 0x2d2: 0xbf, 0x2d3: 0xc0, 0x2d4: 0xc1, 0x2d5: 0xc2, 0x2d6: 0xc3, 0x2d7: 0xc4,
+ 0x2d8: 0xbe, 0x2d9: 0xbf, 0x2da: 0xc0, 0x2db: 0xc1, 0x2dc: 0xc2, 0x2dd: 0xc3, 0x2de: 0xc5,
+ // Block 0xc, offset 0x300
+ 0x324: 0x31, 0x325: 0x32, 0x326: 0x33, 0x327: 0x34,
+ 0x328: 0x35, 0x329: 0x36, 0x32a: 0x37, 0x32b: 0x38, 0x32c: 0x39, 0x32d: 0x3a, 0x32e: 0x3b, 0x32f: 0x3c,
+ 0x330: 0x3d, 0x331: 0x3e, 0x332: 0x3f, 0x333: 0x40, 0x334: 0x41, 0x335: 0x42, 0x336: 0x43, 0x337: 0x44,
+ 0x338: 0x45, 0x339: 0x46, 0x33a: 0x47, 0x33b: 0x48, 0x33c: 0xc6, 0x33d: 0x49, 0x33e: 0x4a, 0x33f: 0x4b,
+ // Block 0xd, offset 0x340
+ 0x347: 0xc7,
+ 0x34b: 0xc8, 0x34d: 0xc9,
+ 0x368: 0xca, 0x36b: 0xcb,
+ 0x374: 0xcc,
+ 0x37a: 0xcd, 0x37d: 0xce,
+ // Block 0xe, offset 0x380
+ 0x381: 0xcf, 0x382: 0xd0, 0x384: 0xd1, 0x385: 0xb8, 0x387: 0xd2,
+ 0x388: 0xd3, 0x38b: 0xd4, 0x38c: 0xd5, 0x38d: 0xd6,
+ 0x391: 0xd7, 0x392: 0xd8, 0x393: 0xd9, 0x396: 0xda, 0x397: 0xdb,
+ 0x398: 0xdc, 0x39a: 0xdd, 0x39c: 0xde,
+ 0x3a0: 0xdf, 0x3a4: 0xe0, 0x3a5: 0xe1, 0x3a7: 0xe2,
+ 0x3a8: 0xe3, 0x3a9: 0xe4, 0x3aa: 0xe5,
+ 0x3b0: 0xdc, 0x3b5: 0xe6, 0x3b6: 0xe7,
+ // Block 0xf, offset 0x3c0
+ 0x3eb: 0xe8, 0x3ec: 0xe9,
+ 0x3ff: 0xea,
+ // Block 0x10, offset 0x400
+ 0x432: 0xeb,
+ // Block 0x11, offset 0x440
+ 0x445: 0xec, 0x446: 0xed, 0x447: 0xee,
+ 0x449: 0xef,
+ 0x450: 0xf0, 0x451: 0xf1, 0x452: 0xf2, 0x453: 0xf3, 0x454: 0xf4, 0x455: 0xf5, 0x456: 0xf6, 0x457: 0xf7,
+ 0x458: 0xf8, 0x459: 0xf9, 0x45a: 0x4c, 0x45b: 0xfa, 0x45c: 0xfb, 0x45d: 0xfc, 0x45e: 0xfd, 0x45f: 0x4d,
+ // Block 0x12, offset 0x480
+ 0x480: 0xfe, 0x484: 0xe9,
+ 0x48b: 0xff,
+ 0x4a3: 0x100, 0x4a5: 0x101,
+ 0x4b8: 0x4e, 0x4b9: 0x4f, 0x4ba: 0x50,
+ // Block 0x13, offset 0x4c0
+ 0x4c4: 0x51, 0x4c5: 0x102, 0x4c6: 0x103,
+ 0x4c8: 0x52, 0x4c9: 0x104,
+ 0x4ef: 0x105,
+ // Block 0x14, offset 0x500
+ 0x520: 0x53, 0x521: 0x54, 0x522: 0x55, 0x523: 0x56, 0x524: 0x57, 0x525: 0x58, 0x526: 0x59, 0x527: 0x5a,
+ 0x528: 0x5b,
+ // Block 0x15, offset 0x540
+ 0x550: 0x0b, 0x551: 0x0c, 0x556: 0x0d,
+ 0x55b: 0x0e, 0x55d: 0x0f, 0x55e: 0x10, 0x55f: 0x11,
+ 0x56f: 0x12,
+}
+
+// nfkcSparseOffset: 170 entries, 340 bytes
+var nfkcSparseOffset = []uint16{0x0, 0xe, 0x12, 0x1b, 0x25, 0x35, 0x37, 0x3c, 0x47, 0x56, 0x63, 0x6b, 0x70, 0x75, 0x77, 0x7f, 0x86, 0x89, 0x91, 0x95, 0x99, 0x9b, 0x9d, 0xa6, 0xaa, 0xb1, 0xb6, 0xb9, 0xc3, 0xc6, 0xcd, 0xd5, 0xd9, 0xdb, 0xdf, 0xe3, 0xe9, 0xfa, 0x106, 0x108, 0x10e, 0x110, 0x112, 0x114, 0x116, 0x118, 0x11a, 0x11c, 0x11f, 0x122, 0x124, 0x127, 0x12a, 0x12e, 0x134, 0x136, 0x13f, 0x141, 0x144, 0x146, 0x151, 0x15c, 0x16a, 0x178, 0x188, 0x196, 0x19d, 0x1a3, 0x1b2, 0x1b6, 0x1b8, 0x1bc, 0x1be, 0x1c1, 0x1c3, 0x1c6, 0x1c8, 0x1cb, 0x1cd, 0x1cf, 0x1d1, 0x1dd, 0x1e7, 0x1f1, 0x1f4, 0x1f8, 0x1fa, 0x1fc, 0x1fe, 0x201, 0x204, 0x206, 0x208, 0x20a, 0x20c, 0x212, 0x215, 0x21a, 0x21c, 0x223, 0x229, 0x22f, 0x237, 0x23d, 0x243, 0x249, 0x24d, 0x24f, 0x251, 0x253, 0x255, 0x25b, 0x25e, 0x260, 0x262, 0x268, 0x26b, 0x273, 0x27a, 0x27d, 0x280, 0x282, 0x285, 0x28d, 0x291, 0x298, 0x29b, 0x2a1, 0x2a3, 0x2a5, 0x2a8, 0x2aa, 0x2ad, 0x2b2, 0x2b4, 0x2b6, 0x2b8, 0x2ba, 0x2bc, 0x2bf, 0x2c1, 0x2c3, 0x2c5, 0x2c7, 0x2c9, 0x2d6, 0x2e0, 0x2e2, 0x2e4, 0x2e8, 0x2ed, 0x2f9, 0x2fe, 0x307, 0x30d, 0x312, 0x316, 0x31b, 0x31f, 0x32f, 0x33d, 0x34b, 0x359, 0x35f, 0x361, 0x363, 0x366, 0x371, 0x373, 0x37d}
+
+// nfkcSparseValues: 895 entries, 3580 bytes
+var nfkcSparseValues = [895]valueRange{
+ // Block 0x0, offset 0x0
+ {value: 0x0002, lo: 0x0d},
+ {value: 0x0001, lo: 0xa0, hi: 0xa0},
+ {value: 0x428f, lo: 0xa8, hi: 0xa8},
+ {value: 0x0083, lo: 0xaa, hi: 0xaa},
+ {value: 0x427b, lo: 0xaf, hi: 0xaf},
+ {value: 0x0025, lo: 0xb2, hi: 0xb3},
+ {value: 0x4271, lo: 0xb4, hi: 0xb4},
+ {value: 0x01df, lo: 0xb5, hi: 0xb5},
+ {value: 0x42a8, lo: 0xb8, hi: 0xb8},
+ {value: 0x0023, lo: 0xb9, hi: 0xb9},
+ {value: 0x009f, lo: 0xba, hi: 0xba},
+ {value: 0x2222, lo: 0xbc, hi: 0xbc},
+ {value: 0x2216, lo: 0xbd, hi: 0xbd},
+ {value: 0x22b8, lo: 0xbe, hi: 0xbe},
+ // Block 0x1, offset 0xe
+ {value: 0x0091, lo: 0x03},
+ {value: 0x46f9, lo: 0xa0, hi: 0xa1},
+ {value: 0x472b, lo: 0xaf, hi: 0xb0},
+ {value: 0xa000, lo: 0xb7, hi: 0xb7},
+ // Block 0x2, offset 0x12
+ {value: 0x0003, lo: 0x08},
+ {value: 0xa000, lo: 0x92, hi: 0x92},
+ {value: 0x0091, lo: 0xb0, hi: 0xb0},
+ {value: 0x0119, lo: 0xb1, hi: 0xb1},
+ {value: 0x0095, lo: 0xb2, hi: 0xb2},
+ {value: 0x00a5, lo: 0xb3, hi: 0xb3},
+ {value: 0x0143, lo: 0xb4, hi: 0xb6},
+ {value: 0x00af, lo: 0xb7, hi: 0xb7},
+ {value: 0x00b3, lo: 0xb8, hi: 0xb8},
+ // Block 0x3, offset 0x1b
+ {value: 0x000a, lo: 0x09},
+ {value: 0x4285, lo: 0x98, hi: 0x98},
+ {value: 0x428a, lo: 0x99, hi: 0x9a},
+ {value: 0x42ad, lo: 0x9b, hi: 0x9b},
+ {value: 0x4276, lo: 0x9c, hi: 0x9c},
+ {value: 0x4299, lo: 0x9d, hi: 0x9d},
+ {value: 0x0113, lo: 0xa0, hi: 0xa0},
+ {value: 0x0099, lo: 0xa1, hi: 0xa1},
+ {value: 0x00a7, lo: 0xa2, hi: 0xa3},
+ {value: 0x016a, lo: 0xa4, hi: 0xa4},
+ // Block 0x4, offset 0x25
+ {value: 0x0000, lo: 0x0f},
+ {value: 0xa000, lo: 0x83, hi: 0x83},
+ {value: 0xa000, lo: 0x87, hi: 0x87},
+ {value: 0xa000, lo: 0x8b, hi: 0x8b},
+ {value: 0xa000, lo: 0x8d, hi: 0x8d},
+ {value: 0x37bc, lo: 0x90, hi: 0x90},
+ {value: 0x37c8, lo: 0x91, hi: 0x91},
+ {value: 0x37b6, lo: 0x93, hi: 0x93},
+ {value: 0xa000, lo: 0x96, hi: 0x96},
+ {value: 0x382e, lo: 0x97, hi: 0x97},
+ {value: 0x37f8, lo: 0x9c, hi: 0x9c},
+ {value: 0x37e0, lo: 0x9d, hi: 0x9d},
+ {value: 0x380a, lo: 0x9e, hi: 0x9e},
+ {value: 0xa000, lo: 0xb4, hi: 0xb5},
+ {value: 0x3834, lo: 0xb6, hi: 0xb6},
+ {value: 0x383a, lo: 0xb7, hi: 0xb7},
+ // Block 0x5, offset 0x35
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0x83, hi: 0x87},
+ // Block 0x6, offset 0x37
+ {value: 0x0001, lo: 0x04},
+ {value: 0x8114, lo: 0x81, hi: 0x82},
+ {value: 0x8133, lo: 0x84, hi: 0x84},
+ {value: 0x812e, lo: 0x85, hi: 0x85},
+ {value: 0x810e, lo: 0x87, hi: 0x87},
+ // Block 0x7, offset 0x3c
+ {value: 0x0000, lo: 0x0a},
+ {value: 0x8133, lo: 0x90, hi: 0x97},
+ {value: 0x811a, lo: 0x98, hi: 0x98},
+ {value: 0x811b, lo: 0x99, hi: 0x99},
+ {value: 0x811c, lo: 0x9a, hi: 0x9a},
+ {value: 0x3858, lo: 0xa2, hi: 0xa2},
+ {value: 0x385e, lo: 0xa3, hi: 0xa3},
+ {value: 0x386a, lo: 0xa4, hi: 0xa4},
+ {value: 0x3864, lo: 0xa5, hi: 0xa5},
+ {value: 0x3870, lo: 0xa6, hi: 0xa6},
+ {value: 0xa000, lo: 0xa7, hi: 0xa7},
+ // Block 0x8, offset 0x47
+ {value: 0x0000, lo: 0x0e},
+ {value: 0x3882, lo: 0x80, hi: 0x80},
+ {value: 0xa000, lo: 0x81, hi: 0x81},
+ {value: 0x3876, lo: 0x82, hi: 0x82},
+ {value: 0xa000, lo: 0x92, hi: 0x92},
+ {value: 0x387c, lo: 0x93, hi: 0x93},
+ {value: 0xa000, lo: 0x95, hi: 0x95},
+ {value: 0x8133, lo: 0x96, hi: 0x9c},
+ {value: 0x8133, lo: 0x9f, hi: 0xa2},
+ {value: 0x812e, lo: 0xa3, hi: 0xa3},
+ {value: 0x8133, lo: 0xa4, hi: 0xa4},
+ {value: 0x8133, lo: 0xa7, hi: 0xa8},
+ {value: 0x812e, lo: 0xaa, hi: 0xaa},
+ {value: 0x8133, lo: 0xab, hi: 0xac},
+ {value: 0x812e, lo: 0xad, hi: 0xad},
+ // Block 0x9, offset 0x56
+ {value: 0x0000, lo: 0x0c},
+ {value: 0x8120, lo: 0x91, hi: 0x91},
+ {value: 0x8133, lo: 0xb0, hi: 0xb0},
+ {value: 0x812e, lo: 0xb1, hi: 0xb1},
+ {value: 0x8133, lo: 0xb2, hi: 0xb3},
+ {value: 0x812e, lo: 0xb4, hi: 0xb4},
+ {value: 0x8133, lo: 0xb5, hi: 0xb6},
+ {value: 0x812e, lo: 0xb7, hi: 0xb9},
+ {value: 0x8133, lo: 0xba, hi: 0xba},
+ {value: 0x812e, lo: 0xbb, hi: 0xbc},
+ {value: 0x8133, lo: 0xbd, hi: 0xbd},
+ {value: 0x812e, lo: 0xbe, hi: 0xbe},
+ {value: 0x8133, lo: 0xbf, hi: 0xbf},
+ // Block 0xa, offset 0x63
+ {value: 0x0005, lo: 0x07},
+ {value: 0x8133, lo: 0x80, hi: 0x80},
+ {value: 0x8133, lo: 0x81, hi: 0x81},
+ {value: 0x812e, lo: 0x82, hi: 0x83},
+ {value: 0x812e, lo: 0x84, hi: 0x85},
+ {value: 0x812e, lo: 0x86, hi: 0x87},
+ {value: 0x812e, lo: 0x88, hi: 0x89},
+ {value: 0x8133, lo: 0x8a, hi: 0x8a},
+ // Block 0xb, offset 0x6b
+ {value: 0x0000, lo: 0x04},
+ {value: 0x8133, lo: 0xab, hi: 0xb1},
+ {value: 0x812e, lo: 0xb2, hi: 0xb2},
+ {value: 0x8133, lo: 0xb3, hi: 0xb3},
+ {value: 0x812e, lo: 0xbd, hi: 0xbd},
+ // Block 0xc, offset 0x70
+ {value: 0x0000, lo: 0x04},
+ {value: 0x8133, lo: 0x96, hi: 0x99},
+ {value: 0x8133, lo: 0x9b, hi: 0xa3},
+ {value: 0x8133, lo: 0xa5, hi: 0xa7},
+ {value: 0x8133, lo: 0xa9, hi: 0xad},
+ // Block 0xd, offset 0x75
+ {value: 0x0000, lo: 0x01},
+ {value: 0x812e, lo: 0x99, hi: 0x9b},
+ // Block 0xe, offset 0x77
+ {value: 0x0000, lo: 0x07},
+ {value: 0xa000, lo: 0xa8, hi: 0xa8},
+ {value: 0x3eef, lo: 0xa9, hi: 0xa9},
+ {value: 0xa000, lo: 0xb0, hi: 0xb0},
+ {value: 0x3ef7, lo: 0xb1, hi: 0xb1},
+ {value: 0xa000, lo: 0xb3, hi: 0xb3},
+ {value: 0x3eff, lo: 0xb4, hi: 0xb4},
+ {value: 0x9903, lo: 0xbc, hi: 0xbc},
+ // Block 0xf, offset 0x7f
+ {value: 0x0008, lo: 0x06},
+ {value: 0x8105, lo: 0x8d, hi: 0x8d},
+ {value: 0x8133, lo: 0x91, hi: 0x91},
+ {value: 0x812e, lo: 0x92, hi: 0x92},
+ {value: 0x8133, lo: 0x93, hi: 0x93},
+ {value: 0x8133, lo: 0x94, hi: 0x94},
+ {value: 0x4533, lo: 0x98, hi: 0x9f},
+ // Block 0x10, offset 0x86
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8103, lo: 0xbc, hi: 0xbc},
+ {value: 0x9900, lo: 0xbe, hi: 0xbe},
+ // Block 0x11, offset 0x89
+ {value: 0x0008, lo: 0x07},
+ {value: 0xa000, lo: 0x87, hi: 0x87},
+ {value: 0x2cab, lo: 0x8b, hi: 0x8c},
+ {value: 0x8105, lo: 0x8d, hi: 0x8d},
+ {value: 0x9900, lo: 0x97, hi: 0x97},
+ {value: 0x4573, lo: 0x9c, hi: 0x9d},
+ {value: 0x4583, lo: 0x9f, hi: 0x9f},
+ {value: 0x8133, lo: 0xbe, hi: 0xbe},
+ // Block 0x12, offset 0x91
+ {value: 0x0000, lo: 0x03},
+ {value: 0x45ab, lo: 0xb3, hi: 0xb3},
+ {value: 0x45b3, lo: 0xb6, hi: 0xb6},
+ {value: 0x8103, lo: 0xbc, hi: 0xbc},
+ // Block 0x13, offset 0x95
+ {value: 0x0008, lo: 0x03},
+ {value: 0x8105, lo: 0x8d, hi: 0x8d},
+ {value: 0x458b, lo: 0x99, hi: 0x9b},
+ {value: 0x45a3, lo: 0x9e, hi: 0x9e},
+ // Block 0x14, offset 0x99
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8103, lo: 0xbc, hi: 0xbc},
+ // Block 0x15, offset 0x9b
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0x8d, hi: 0x8d},
+ // Block 0x16, offset 0x9d
+ {value: 0x0000, lo: 0x08},
+ {value: 0xa000, lo: 0x87, hi: 0x87},
+ {value: 0x2cc3, lo: 0x88, hi: 0x88},
+ {value: 0x2cbb, lo: 0x8b, hi: 0x8b},
+ {value: 0x2ccb, lo: 0x8c, hi: 0x8c},
+ {value: 0x8105, lo: 0x8d, hi: 0x8d},
+ {value: 0x9900, lo: 0x96, hi: 0x97},
+ {value: 0x45bb, lo: 0x9c, hi: 0x9c},
+ {value: 0x45c3, lo: 0x9d, hi: 0x9d},
+ // Block 0x17, offset 0xa6
+ {value: 0x0000, lo: 0x03},
+ {value: 0xa000, lo: 0x92, hi: 0x92},
+ {value: 0x2cd3, lo: 0x94, hi: 0x94},
+ {value: 0x9900, lo: 0xbe, hi: 0xbe},
+ // Block 0x18, offset 0xaa
+ {value: 0x0000, lo: 0x06},
+ {value: 0xa000, lo: 0x86, hi: 0x87},
+ {value: 0x2cdb, lo: 0x8a, hi: 0x8a},
+ {value: 0x2ceb, lo: 0x8b, hi: 0x8b},
+ {value: 0x2ce3, lo: 0x8c, hi: 0x8c},
+ {value: 0x8105, lo: 0x8d, hi: 0x8d},
+ {value: 0x9900, lo: 0x97, hi: 0x97},
+ // Block 0x19, offset 0xb1
+ {value: 0x1801, lo: 0x04},
+ {value: 0xa000, lo: 0x86, hi: 0x86},
+ {value: 0x3f07, lo: 0x88, hi: 0x88},
+ {value: 0x8105, lo: 0x8d, hi: 0x8d},
+ {value: 0x8121, lo: 0x95, hi: 0x96},
+ // Block 0x1a, offset 0xb6
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8103, lo: 0xbc, hi: 0xbc},
+ {value: 0xa000, lo: 0xbf, hi: 0xbf},
+ // Block 0x1b, offset 0xb9
+ {value: 0x0000, lo: 0x09},
+ {value: 0x2cf3, lo: 0x80, hi: 0x80},
+ {value: 0x9900, lo: 0x82, hi: 0x82},
+ {value: 0xa000, lo: 0x86, hi: 0x86},
+ {value: 0x2cfb, lo: 0x87, hi: 0x87},
+ {value: 0x2d03, lo: 0x88, hi: 0x88},
+ {value: 0x2f67, lo: 0x8a, hi: 0x8a},
+ {value: 0x2def, lo: 0x8b, hi: 0x8b},
+ {value: 0x8105, lo: 0x8d, hi: 0x8d},
+ {value: 0x9900, lo: 0x95, hi: 0x96},
+ // Block 0x1c, offset 0xc3
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8105, lo: 0xbb, hi: 0xbc},
+ {value: 0x9900, lo: 0xbe, hi: 0xbe},
+ // Block 0x1d, offset 0xc6
+ {value: 0x0000, lo: 0x06},
+ {value: 0xa000, lo: 0x86, hi: 0x87},
+ {value: 0x2d0b, lo: 0x8a, hi: 0x8a},
+ {value: 0x2d1b, lo: 0x8b, hi: 0x8b},
+ {value: 0x2d13, lo: 0x8c, hi: 0x8c},
+ {value: 0x8105, lo: 0x8d, hi: 0x8d},
+ {value: 0x9900, lo: 0x97, hi: 0x97},
+ // Block 0x1e, offset 0xcd
+ {value: 0x6bdd, lo: 0x07},
+ {value: 0x9905, lo: 0x8a, hi: 0x8a},
+ {value: 0x9900, lo: 0x8f, hi: 0x8f},
+ {value: 0xa000, lo: 0x99, hi: 0x99},
+ {value: 0x3f0f, lo: 0x9a, hi: 0x9a},
+ {value: 0x2f6f, lo: 0x9c, hi: 0x9c},
+ {value: 0x2dfa, lo: 0x9d, hi: 0x9d},
+ {value: 0x2d23, lo: 0x9e, hi: 0x9f},
+ // Block 0x1f, offset 0xd5
+ {value: 0x0000, lo: 0x03},
+ {value: 0x2627, lo: 0xb3, hi: 0xb3},
+ {value: 0x8123, lo: 0xb8, hi: 0xb9},
+ {value: 0x8105, lo: 0xba, hi: 0xba},
+ // Block 0x20, offset 0xd9
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8124, lo: 0x88, hi: 0x8b},
+ // Block 0x21, offset 0xdb
+ {value: 0x0000, lo: 0x03},
+ {value: 0x263c, lo: 0xb3, hi: 0xb3},
+ {value: 0x8125, lo: 0xb8, hi: 0xb9},
+ {value: 0x8105, lo: 0xba, hi: 0xba},
+ // Block 0x22, offset 0xdf
+ {value: 0x0000, lo: 0x03},
+ {value: 0x8126, lo: 0x88, hi: 0x8b},
+ {value: 0x262e, lo: 0x9c, hi: 0x9c},
+ {value: 0x2635, lo: 0x9d, hi: 0x9d},
+ // Block 0x23, offset 0xe3
+ {value: 0x0000, lo: 0x05},
+ {value: 0x030e, lo: 0x8c, hi: 0x8c},
+ {value: 0x812e, lo: 0x98, hi: 0x99},
+ {value: 0x812e, lo: 0xb5, hi: 0xb5},
+ {value: 0x812e, lo: 0xb7, hi: 0xb7},
+ {value: 0x812c, lo: 0xb9, hi: 0xb9},
+ // Block 0x24, offset 0xe9
+ {value: 0x0000, lo: 0x10},
+ {value: 0x264a, lo: 0x83, hi: 0x83},
+ {value: 0x2651, lo: 0x8d, hi: 0x8d},
+ {value: 0x2658, lo: 0x92, hi: 0x92},
+ {value: 0x265f, lo: 0x97, hi: 0x97},
+ {value: 0x2666, lo: 0x9c, hi: 0x9c},
+ {value: 0x2643, lo: 0xa9, hi: 0xa9},
+ {value: 0x8127, lo: 0xb1, hi: 0xb1},
+ {value: 0x8128, lo: 0xb2, hi: 0xb2},
+ {value: 0x4a9b, lo: 0xb3, hi: 0xb3},
+ {value: 0x8129, lo: 0xb4, hi: 0xb4},
+ {value: 0x4aa4, lo: 0xb5, hi: 0xb5},
+ {value: 0x45cb, lo: 0xb6, hi: 0xb6},
+ {value: 0x460b, lo: 0xb7, hi: 0xb7},
+ {value: 0x45d3, lo: 0xb8, hi: 0xb8},
+ {value: 0x4616, lo: 0xb9, hi: 0xb9},
+ {value: 0x8128, lo: 0xba, hi: 0xbd},
+ // Block 0x25, offset 0xfa
+ {value: 0x0000, lo: 0x0b},
+ {value: 0x8128, lo: 0x80, hi: 0x80},
+ {value: 0x4aad, lo: 0x81, hi: 0x81},
+ {value: 0x8133, lo: 0x82, hi: 0x83},
+ {value: 0x8105, lo: 0x84, hi: 0x84},
+ {value: 0x8133, lo: 0x86, hi: 0x87},
+ {value: 0x2674, lo: 0x93, hi: 0x93},
+ {value: 0x267b, lo: 0x9d, hi: 0x9d},
+ {value: 0x2682, lo: 0xa2, hi: 0xa2},
+ {value: 0x2689, lo: 0xa7, hi: 0xa7},
+ {value: 0x2690, lo: 0xac, hi: 0xac},
+ {value: 0x266d, lo: 0xb9, hi: 0xb9},
+ // Block 0x26, offset 0x106
+ {value: 0x0000, lo: 0x01},
+ {value: 0x812e, lo: 0x86, hi: 0x86},
+ // Block 0x27, offset 0x108
+ {value: 0x0000, lo: 0x05},
+ {value: 0xa000, lo: 0xa5, hi: 0xa5},
+ {value: 0x2d2b, lo: 0xa6, hi: 0xa6},
+ {value: 0x9900, lo: 0xae, hi: 0xae},
+ {value: 0x8103, lo: 0xb7, hi: 0xb7},
+ {value: 0x8105, lo: 0xb9, hi: 0xba},
+ // Block 0x28, offset 0x10e
+ {value: 0x0000, lo: 0x01},
+ {value: 0x812e, lo: 0x8d, hi: 0x8d},
+ // Block 0x29, offset 0x110
+ {value: 0x0000, lo: 0x01},
+ {value: 0x0312, lo: 0xbc, hi: 0xbc},
+ // Block 0x2a, offset 0x112
+ {value: 0x0000, lo: 0x01},
+ {value: 0xa000, lo: 0x80, hi: 0x92},
+ // Block 0x2b, offset 0x114
+ {value: 0x0000, lo: 0x01},
+ {value: 0xb900, lo: 0xa1, hi: 0xb5},
+ // Block 0x2c, offset 0x116
+ {value: 0x0000, lo: 0x01},
+ {value: 0x9900, lo: 0xa8, hi: 0xbf},
+ // Block 0x2d, offset 0x118
+ {value: 0x0000, lo: 0x01},
+ {value: 0x9900, lo: 0x80, hi: 0x82},
+ // Block 0x2e, offset 0x11a
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0x9d, hi: 0x9f},
+ // Block 0x2f, offset 0x11c
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8105, lo: 0x94, hi: 0x94},
+ {value: 0x8105, lo: 0xb4, hi: 0xb4},
+ // Block 0x30, offset 0x11f
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8105, lo: 0x92, hi: 0x92},
+ {value: 0x8133, lo: 0x9d, hi: 0x9d},
+ // Block 0x31, offset 0x122
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8132, lo: 0xa9, hi: 0xa9},
+ // Block 0x32, offset 0x124
+ {value: 0x0004, lo: 0x02},
+ {value: 0x812f, lo: 0xb9, hi: 0xba},
+ {value: 0x812e, lo: 0xbb, hi: 0xbb},
+ // Block 0x33, offset 0x127
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8133, lo: 0x97, hi: 0x97},
+ {value: 0x812e, lo: 0x98, hi: 0x98},
+ // Block 0x34, offset 0x12a
+ {value: 0x0000, lo: 0x03},
+ {value: 0x8105, lo: 0xa0, hi: 0xa0},
+ {value: 0x8133, lo: 0xb5, hi: 0xbc},
+ {value: 0x812e, lo: 0xbf, hi: 0xbf},
+ // Block 0x35, offset 0x12e
+ {value: 0x0000, lo: 0x05},
+ {value: 0x8133, lo: 0xb0, hi: 0xb4},
+ {value: 0x812e, lo: 0xb5, hi: 0xba},
+ {value: 0x8133, lo: 0xbb, hi: 0xbc},
+ {value: 0x812e, lo: 0xbd, hi: 0xbd},
+ {value: 0x812e, lo: 0xbf, hi: 0xbf},
+ // Block 0x36, offset 0x134
+ {value: 0x0000, lo: 0x01},
+ {value: 0x812e, lo: 0x80, hi: 0x80},
+ // Block 0x37, offset 0x136
+ {value: 0x0000, lo: 0x08},
+ {value: 0x2d73, lo: 0x80, hi: 0x80},
+ {value: 0x2d7b, lo: 0x81, hi: 0x81},
+ {value: 0xa000, lo: 0x82, hi: 0x82},
+ {value: 0x2d83, lo: 0x83, hi: 0x83},
+ {value: 0x8105, lo: 0x84, hi: 0x84},
+ {value: 0x8133, lo: 0xab, hi: 0xab},
+ {value: 0x812e, lo: 0xac, hi: 0xac},
+ {value: 0x8133, lo: 0xad, hi: 0xb3},
+ // Block 0x38, offset 0x13f
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0xaa, hi: 0xab},
+ // Block 0x39, offset 0x141
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8103, lo: 0xa6, hi: 0xa6},
+ {value: 0x8105, lo: 0xb2, hi: 0xb3},
+ // Block 0x3a, offset 0x144
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8103, lo: 0xb7, hi: 0xb7},
+ // Block 0x3b, offset 0x146
+ {value: 0x0000, lo: 0x0a},
+ {value: 0x8133, lo: 0x90, hi: 0x92},
+ {value: 0x8101, lo: 0x94, hi: 0x94},
+ {value: 0x812e, lo: 0x95, hi: 0x99},
+ {value: 0x8133, lo: 0x9a, hi: 0x9b},
+ {value: 0x812e, lo: 0x9c, hi: 0x9f},
+ {value: 0x8133, lo: 0xa0, hi: 0xa0},
+ {value: 0x8101, lo: 0xa2, hi: 0xa8},
+ {value: 0x812e, lo: 0xad, hi: 0xad},
+ {value: 0x8133, lo: 0xb4, hi: 0xb4},
+ {value: 0x8133, lo: 0xb8, hi: 0xb9},
+ // Block 0x3c, offset 0x151
+ {value: 0x0002, lo: 0x0a},
+ {value: 0x0043, lo: 0xac, hi: 0xac},
+ {value: 0x00d1, lo: 0xad, hi: 0xad},
+ {value: 0x0045, lo: 0xae, hi: 0xae},
+ {value: 0x0049, lo: 0xb0, hi: 0xb1},
+ {value: 0x00e6, lo: 0xb2, hi: 0xb2},
+ {value: 0x004f, lo: 0xb3, hi: 0xba},
+ {value: 0x005f, lo: 0xbc, hi: 0xbc},
+ {value: 0x00ef, lo: 0xbd, hi: 0xbd},
+ {value: 0x0061, lo: 0xbe, hi: 0xbe},
+ {value: 0x0065, lo: 0xbf, hi: 0xbf},
+ // Block 0x3d, offset 0x15c
+ {value: 0x0000, lo: 0x0d},
+ {value: 0x0001, lo: 0x80, hi: 0x8a},
+ {value: 0x043e, lo: 0x91, hi: 0x91},
+ {value: 0x42b2, lo: 0x97, hi: 0x97},
+ {value: 0x001d, lo: 0xa4, hi: 0xa4},
+ {value: 0x1876, lo: 0xa5, hi: 0xa5},
+ {value: 0x1b62, lo: 0xa6, hi: 0xa6},
+ {value: 0x0001, lo: 0xaf, hi: 0xaf},
+ {value: 0x2697, lo: 0xb3, hi: 0xb3},
+ {value: 0x280b, lo: 0xb4, hi: 0xb4},
+ {value: 0x269e, lo: 0xb6, hi: 0xb6},
+ {value: 0x2815, lo: 0xb7, hi: 0xb7},
+ {value: 0x1870, lo: 0xbc, hi: 0xbc},
+ {value: 0x4280, lo: 0xbe, hi: 0xbe},
+ // Block 0x3e, offset 0x16a
+ {value: 0x0002, lo: 0x0d},
+ {value: 0x1936, lo: 0x87, hi: 0x87},
+ {value: 0x1933, lo: 0x88, hi: 0x88},
+ {value: 0x1873, lo: 0x89, hi: 0x89},
+ {value: 0x299b, lo: 0x97, hi: 0x97},
+ {value: 0x0001, lo: 0x9f, hi: 0x9f},
+ {value: 0x0021, lo: 0xb0, hi: 0xb0},
+ {value: 0x0093, lo: 0xb1, hi: 0xb1},
+ {value: 0x0029, lo: 0xb4, hi: 0xb9},
+ {value: 0x0017, lo: 0xba, hi: 0xba},
+ {value: 0x046a, lo: 0xbb, hi: 0xbb},
+ {value: 0x003b, lo: 0xbc, hi: 0xbc},
+ {value: 0x0011, lo: 0xbd, hi: 0xbe},
+ {value: 0x009d, lo: 0xbf, hi: 0xbf},
+ // Block 0x3f, offset 0x178
+ {value: 0x0002, lo: 0x0f},
+ {value: 0x0021, lo: 0x80, hi: 0x89},
+ {value: 0x0017, lo: 0x8a, hi: 0x8a},
+ {value: 0x046a, lo: 0x8b, hi: 0x8b},
+ {value: 0x003b, lo: 0x8c, hi: 0x8c},
+ {value: 0x0011, lo: 0x8d, hi: 0x8e},
+ {value: 0x0083, lo: 0x90, hi: 0x90},
+ {value: 0x008b, lo: 0x91, hi: 0x91},
+ {value: 0x009f, lo: 0x92, hi: 0x92},
+ {value: 0x00b1, lo: 0x93, hi: 0x93},
+ {value: 0x0104, lo: 0x94, hi: 0x94},
+ {value: 0x0091, lo: 0x95, hi: 0x95},
+ {value: 0x0097, lo: 0x96, hi: 0x99},
+ {value: 0x00a1, lo: 0x9a, hi: 0x9a},
+ {value: 0x00a7, lo: 0x9b, hi: 0x9c},
+ {value: 0x199f, lo: 0xa8, hi: 0xa8},
+ // Block 0x40, offset 0x188
+ {value: 0x0000, lo: 0x0d},
+ {value: 0x8133, lo: 0x90, hi: 0x91},
+ {value: 0x8101, lo: 0x92, hi: 0x93},
+ {value: 0x8133, lo: 0x94, hi: 0x97},
+ {value: 0x8101, lo: 0x98, hi: 0x9a},
+ {value: 0x8133, lo: 0x9b, hi: 0x9c},
+ {value: 0x8133, lo: 0xa1, hi: 0xa1},
+ {value: 0x8101, lo: 0xa5, hi: 0xa6},
+ {value: 0x8133, lo: 0xa7, hi: 0xa7},
+ {value: 0x812e, lo: 0xa8, hi: 0xa8},
+ {value: 0x8133, lo: 0xa9, hi: 0xa9},
+ {value: 0x8101, lo: 0xaa, hi: 0xab},
+ {value: 0x812e, lo: 0xac, hi: 0xaf},
+ {value: 0x8133, lo: 0xb0, hi: 0xb0},
+ // Block 0x41, offset 0x196
+ {value: 0x0007, lo: 0x06},
+ {value: 0x2186, lo: 0x89, hi: 0x89},
+ {value: 0xa000, lo: 0x90, hi: 0x90},
+ {value: 0xa000, lo: 0x92, hi: 0x92},
+ {value: 0xa000, lo: 0x94, hi: 0x94},
+ {value: 0x3bd0, lo: 0x9a, hi: 0x9b},
+ {value: 0x3bde, lo: 0xae, hi: 0xae},
+ // Block 0x42, offset 0x19d
+ {value: 0x000e, lo: 0x05},
+ {value: 0x3be5, lo: 0x8d, hi: 0x8e},
+ {value: 0x3bec, lo: 0x8f, hi: 0x8f},
+ {value: 0xa000, lo: 0x90, hi: 0x90},
+ {value: 0xa000, lo: 0x92, hi: 0x92},
+ {value: 0xa000, lo: 0x94, hi: 0x94},
+ // Block 0x43, offset 0x1a3
+ {value: 0x017a, lo: 0x0e},
+ {value: 0xa000, lo: 0x83, hi: 0x83},
+ {value: 0x3bfa, lo: 0x84, hi: 0x84},
+ {value: 0xa000, lo: 0x88, hi: 0x88},
+ {value: 0x3c01, lo: 0x89, hi: 0x89},
+ {value: 0xa000, lo: 0x8b, hi: 0x8b},
+ {value: 0x3c08, lo: 0x8c, hi: 0x8c},
+ {value: 0xa000, lo: 0xa3, hi: 0xa3},
+ {value: 0x3c0f, lo: 0xa4, hi: 0xa4},
+ {value: 0xa000, lo: 0xa5, hi: 0xa5},
+ {value: 0x3c16, lo: 0xa6, hi: 0xa6},
+ {value: 0x26a5, lo: 0xac, hi: 0xad},
+ {value: 0x26ac, lo: 0xaf, hi: 0xaf},
+ {value: 0x2829, lo: 0xb0, hi: 0xb0},
+ {value: 0xa000, lo: 0xbc, hi: 0xbc},
+ // Block 0x44, offset 0x1b2
+ {value: 0x0007, lo: 0x03},
+ {value: 0x3c7f, lo: 0xa0, hi: 0xa1},
+ {value: 0x3ca9, lo: 0xa2, hi: 0xa3},
+ {value: 0x3cd3, lo: 0xaa, hi: 0xad},
+ // Block 0x45, offset 0x1b6
+ {value: 0x0004, lo: 0x01},
+ {value: 0x048e, lo: 0xa9, hi: 0xaa},
+ // Block 0x46, offset 0x1b8
+ {value: 0x0002, lo: 0x03},
+ {value: 0x0057, lo: 0x80, hi: 0x8f},
+ {value: 0x0083, lo: 0x90, hi: 0xa9},
+ {value: 0x0021, lo: 0xaa, hi: 0xaa},
+ // Block 0x47, offset 0x1bc
+ {value: 0x0000, lo: 0x01},
+ {value: 0x29a8, lo: 0x8c, hi: 0x8c},
+ // Block 0x48, offset 0x1be
+ {value: 0x0266, lo: 0x02},
+ {value: 0x1b92, lo: 0xb4, hi: 0xb4},
+ {value: 0x1930, lo: 0xb5, hi: 0xb6},
+ // Block 0x49, offset 0x1c1
+ {value: 0x0000, lo: 0x01},
+ {value: 0x44f4, lo: 0x9c, hi: 0x9c},
+ // Block 0x4a, offset 0x1c3
+ {value: 0x0000, lo: 0x02},
+ {value: 0x0095, lo: 0xbc, hi: 0xbc},
+ {value: 0x006d, lo: 0xbd, hi: 0xbd},
+ // Block 0x4b, offset 0x1c6
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0xaf, hi: 0xb1},
+ // Block 0x4c, offset 0x1c8
+ {value: 0x0000, lo: 0x02},
+ {value: 0x0482, lo: 0xaf, hi: 0xaf},
+ {value: 0x8105, lo: 0xbf, hi: 0xbf},
+ // Block 0x4d, offset 0x1cb
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0xa0, hi: 0xbf},
+ // Block 0x4e, offset 0x1cd
+ {value: 0x0000, lo: 0x01},
+ {value: 0x0dc6, lo: 0x9f, hi: 0x9f},
+ // Block 0x4f, offset 0x1cf
+ {value: 0x0000, lo: 0x01},
+ {value: 0x1632, lo: 0xb3, hi: 0xb3},
+ // Block 0x50, offset 0x1d1
+ {value: 0x0004, lo: 0x0b},
+ {value: 0x159a, lo: 0x80, hi: 0x82},
+ {value: 0x15b2, lo: 0x83, hi: 0x83},
+ {value: 0x15ca, lo: 0x84, hi: 0x85},
+ {value: 0x15da, lo: 0x86, hi: 0x89},
+ {value: 0x15ee, lo: 0x8a, hi: 0x8c},
+ {value: 0x1602, lo: 0x8d, hi: 0x8d},
+ {value: 0x160a, lo: 0x8e, hi: 0x8e},
+ {value: 0x1612, lo: 0x8f, hi: 0x90},
+ {value: 0x161e, lo: 0x91, hi: 0x93},
+ {value: 0x162e, lo: 0x94, hi: 0x94},
+ {value: 0x1636, lo: 0x95, hi: 0x95},
+ // Block 0x51, offset 0x1dd
+ {value: 0x0004, lo: 0x09},
+ {value: 0x0001, lo: 0x80, hi: 0x80},
+ {value: 0x812d, lo: 0xaa, hi: 0xaa},
+ {value: 0x8132, lo: 0xab, hi: 0xab},
+ {value: 0x8134, lo: 0xac, hi: 0xac},
+ {value: 0x812f, lo: 0xad, hi: 0xad},
+ {value: 0x8130, lo: 0xae, hi: 0xae},
+ {value: 0x8130, lo: 0xaf, hi: 0xaf},
+ {value: 0x04b6, lo: 0xb6, hi: 0xb6},
+ {value: 0x088a, lo: 0xb8, hi: 0xba},
+ // Block 0x52, offset 0x1e7
+ {value: 0x0006, lo: 0x09},
+ {value: 0x0316, lo: 0xb1, hi: 0xb1},
+ {value: 0x031a, lo: 0xb2, hi: 0xb2},
+ {value: 0x4a52, lo: 0xb3, hi: 0xb3},
+ {value: 0x031e, lo: 0xb4, hi: 0xb4},
+ {value: 0x4a58, lo: 0xb5, hi: 0xb6},
+ {value: 0x0322, lo: 0xb7, hi: 0xb7},
+ {value: 0x0326, lo: 0xb8, hi: 0xb8},
+ {value: 0x032a, lo: 0xb9, hi: 0xb9},
+ {value: 0x4a64, lo: 0xba, hi: 0xbf},
+ // Block 0x53, offset 0x1f1
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8133, lo: 0xaf, hi: 0xaf},
+ {value: 0x8133, lo: 0xb4, hi: 0xbd},
+ // Block 0x54, offset 0x1f4
+ {value: 0x0000, lo: 0x03},
+ {value: 0x0212, lo: 0x9c, hi: 0x9c},
+ {value: 0x0215, lo: 0x9d, hi: 0x9d},
+ {value: 0x8133, lo: 0x9e, hi: 0x9f},
+ // Block 0x55, offset 0x1f8
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0xb0, hi: 0xb1},
+ // Block 0x56, offset 0x1fa
+ {value: 0x0000, lo: 0x01},
+ {value: 0x163e, lo: 0xb0, hi: 0xb0},
+ // Block 0x57, offset 0x1fc
+ {value: 0x000c, lo: 0x01},
+ {value: 0x00d7, lo: 0xb8, hi: 0xb9},
+ // Block 0x58, offset 0x1fe
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8105, lo: 0x86, hi: 0x86},
+ {value: 0x8105, lo: 0xac, hi: 0xac},
+ // Block 0x59, offset 0x201
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8105, lo: 0x84, hi: 0x84},
+ {value: 0x8133, lo: 0xa0, hi: 0xb1},
+ // Block 0x5a, offset 0x204
+ {value: 0x0000, lo: 0x01},
+ {value: 0x812e, lo: 0xab, hi: 0xad},
+ // Block 0x5b, offset 0x206
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0x93, hi: 0x93},
+ // Block 0x5c, offset 0x208
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8103, lo: 0xb3, hi: 0xb3},
+ // Block 0x5d, offset 0x20a
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0x80, hi: 0x80},
+ // Block 0x5e, offset 0x20c
+ {value: 0x0000, lo: 0x05},
+ {value: 0x8133, lo: 0xb0, hi: 0xb0},
+ {value: 0x8133, lo: 0xb2, hi: 0xb3},
+ {value: 0x812e, lo: 0xb4, hi: 0xb4},
+ {value: 0x8133, lo: 0xb7, hi: 0xb8},
+ {value: 0x8133, lo: 0xbe, hi: 0xbf},
+ // Block 0x5f, offset 0x212
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8133, lo: 0x81, hi: 0x81},
+ {value: 0x8105, lo: 0xb6, hi: 0xb6},
+ // Block 0x60, offset 0x215
+ {value: 0x0008, lo: 0x04},
+ {value: 0x163a, lo: 0x9c, hi: 0x9d},
+ {value: 0x0125, lo: 0x9e, hi: 0x9e},
+ {value: 0x1646, lo: 0x9f, hi: 0x9f},
+ {value: 0x015e, lo: 0xa9, hi: 0xa9},
+ // Block 0x61, offset 0x21a
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0xad, hi: 0xad},
+ // Block 0x62, offset 0x21c
+ {value: 0x0000, lo: 0x06},
+ {value: 0xe500, lo: 0x80, hi: 0x80},
+ {value: 0xc600, lo: 0x81, hi: 0x9b},
+ {value: 0xe500, lo: 0x9c, hi: 0x9c},
+ {value: 0xc600, lo: 0x9d, hi: 0xb7},
+ {value: 0xe500, lo: 0xb8, hi: 0xb8},
+ {value: 0xc600, lo: 0xb9, hi: 0xbf},
+ // Block 0x63, offset 0x223
+ {value: 0x0000, lo: 0x05},
+ {value: 0xc600, lo: 0x80, hi: 0x93},
+ {value: 0xe500, lo: 0x94, hi: 0x94},
+ {value: 0xc600, lo: 0x95, hi: 0xaf},
+ {value: 0xe500, lo: 0xb0, hi: 0xb0},
+ {value: 0xc600, lo: 0xb1, hi: 0xbf},
+ // Block 0x64, offset 0x229
+ {value: 0x0000, lo: 0x05},
+ {value: 0xc600, lo: 0x80, hi: 0x8b},
+ {value: 0xe500, lo: 0x8c, hi: 0x8c},
+ {value: 0xc600, lo: 0x8d, hi: 0xa7},
+ {value: 0xe500, lo: 0xa8, hi: 0xa8},
+ {value: 0xc600, lo: 0xa9, hi: 0xbf},
+ // Block 0x65, offset 0x22f
+ {value: 0x0000, lo: 0x07},
+ {value: 0xc600, lo: 0x80, hi: 0x83},
+ {value: 0xe500, lo: 0x84, hi: 0x84},
+ {value: 0xc600, lo: 0x85, hi: 0x9f},
+ {value: 0xe500, lo: 0xa0, hi: 0xa0},
+ {value: 0xc600, lo: 0xa1, hi: 0xbb},
+ {value: 0xe500, lo: 0xbc, hi: 0xbc},
+ {value: 0xc600, lo: 0xbd, hi: 0xbf},
+ // Block 0x66, offset 0x237
+ {value: 0x0000, lo: 0x05},
+ {value: 0xc600, lo: 0x80, hi: 0x97},
+ {value: 0xe500, lo: 0x98, hi: 0x98},
+ {value: 0xc600, lo: 0x99, hi: 0xb3},
+ {value: 0xe500, lo: 0xb4, hi: 0xb4},
+ {value: 0xc600, lo: 0xb5, hi: 0xbf},
+ // Block 0x67, offset 0x23d
+ {value: 0x0000, lo: 0x05},
+ {value: 0xc600, lo: 0x80, hi: 0x8f},
+ {value: 0xe500, lo: 0x90, hi: 0x90},
+ {value: 0xc600, lo: 0x91, hi: 0xab},
+ {value: 0xe500, lo: 0xac, hi: 0xac},
+ {value: 0xc600, lo: 0xad, hi: 0xbf},
+ // Block 0x68, offset 0x243
+ {value: 0x0000, lo: 0x05},
+ {value: 0xc600, lo: 0x80, hi: 0x87},
+ {value: 0xe500, lo: 0x88, hi: 0x88},
+ {value: 0xc600, lo: 0x89, hi: 0xa3},
+ {value: 0xe500, lo: 0xa4, hi: 0xa4},
+ {value: 0xc600, lo: 0xa5, hi: 0xbf},
+ // Block 0x69, offset 0x249
+ {value: 0x0000, lo: 0x03},
+ {value: 0xc600, lo: 0x80, hi: 0x87},
+ {value: 0xe500, lo: 0x88, hi: 0x88},
+ {value: 0xc600, lo: 0x89, hi: 0xa3},
+ // Block 0x6a, offset 0x24d
+ {value: 0x0002, lo: 0x01},
+ {value: 0x0003, lo: 0x81, hi: 0xbf},
+ // Block 0x6b, offset 0x24f
+ {value: 0x0000, lo: 0x01},
+ {value: 0x812e, lo: 0xbd, hi: 0xbd},
+ // Block 0x6c, offset 0x251
+ {value: 0x0000, lo: 0x01},
+ {value: 0x812e, lo: 0xa0, hi: 0xa0},
+ // Block 0x6d, offset 0x253
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0xb6, hi: 0xba},
+ // Block 0x6e, offset 0x255
+ {value: 0x002d, lo: 0x05},
+ {value: 0x812e, lo: 0x8d, hi: 0x8d},
+ {value: 0x8133, lo: 0x8f, hi: 0x8f},
+ {value: 0x8133, lo: 0xb8, hi: 0xb8},
+ {value: 0x8101, lo: 0xb9, hi: 0xba},
+ {value: 0x8105, lo: 0xbf, hi: 0xbf},
+ // Block 0x6f, offset 0x25b
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8133, lo: 0xa5, hi: 0xa5},
+ {value: 0x812e, lo: 0xa6, hi: 0xa6},
+ // Block 0x70, offset 0x25e
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0xa4, hi: 0xa7},
+ // Block 0x71, offset 0x260
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0xab, hi: 0xac},
+ // Block 0x72, offset 0x262
+ {value: 0x0000, lo: 0x05},
+ {value: 0x812e, lo: 0x86, hi: 0x87},
+ {value: 0x8133, lo: 0x88, hi: 0x8a},
+ {value: 0x812e, lo: 0x8b, hi: 0x8b},
+ {value: 0x8133, lo: 0x8c, hi: 0x8c},
+ {value: 0x812e, lo: 0x8d, hi: 0x90},
+ // Block 0x73, offset 0x268
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8105, lo: 0x86, hi: 0x86},
+ {value: 0x8105, lo: 0xbf, hi: 0xbf},
+ // Block 0x74, offset 0x26b
+ {value: 0x17fe, lo: 0x07},
+ {value: 0xa000, lo: 0x99, hi: 0x99},
+ {value: 0x424f, lo: 0x9a, hi: 0x9a},
+ {value: 0xa000, lo: 0x9b, hi: 0x9b},
+ {value: 0x4259, lo: 0x9c, hi: 0x9c},
+ {value: 0xa000, lo: 0xa5, hi: 0xa5},
+ {value: 0x4263, lo: 0xab, hi: 0xab},
+ {value: 0x8105, lo: 0xb9, hi: 0xba},
+ // Block 0x75, offset 0x273
+ {value: 0x0000, lo: 0x06},
+ {value: 0x8133, lo: 0x80, hi: 0x82},
+ {value: 0x9900, lo: 0xa7, hi: 0xa7},
+ {value: 0x2d8b, lo: 0xae, hi: 0xae},
+ {value: 0x2d95, lo: 0xaf, hi: 0xaf},
+ {value: 0xa000, lo: 0xb1, hi: 0xb2},
+ {value: 0x8105, lo: 0xb3, hi: 0xb4},
+ // Block 0x76, offset 0x27a
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8105, lo: 0x80, hi: 0x80},
+ {value: 0x8103, lo: 0x8a, hi: 0x8a},
+ // Block 0x77, offset 0x27d
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8105, lo: 0xb5, hi: 0xb5},
+ {value: 0x8103, lo: 0xb6, hi: 0xb6},
+ // Block 0x78, offset 0x280
+ {value: 0x0002, lo: 0x01},
+ {value: 0x8103, lo: 0xa9, hi: 0xaa},
+ // Block 0x79, offset 0x282
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8103, lo: 0xbb, hi: 0xbc},
+ {value: 0x9900, lo: 0xbe, hi: 0xbe},
+ // Block 0x7a, offset 0x285
+ {value: 0x0000, lo: 0x07},
+ {value: 0xa000, lo: 0x87, hi: 0x87},
+ {value: 0x2d9f, lo: 0x8b, hi: 0x8b},
+ {value: 0x2da9, lo: 0x8c, hi: 0x8c},
+ {value: 0x8105, lo: 0x8d, hi: 0x8d},
+ {value: 0x9900, lo: 0x97, hi: 0x97},
+ {value: 0x8133, lo: 0xa6, hi: 0xac},
+ {value: 0x8133, lo: 0xb0, hi: 0xb4},
+ // Block 0x7b, offset 0x28d
+ {value: 0x0000, lo: 0x03},
+ {value: 0x8105, lo: 0x82, hi: 0x82},
+ {value: 0x8103, lo: 0x86, hi: 0x86},
+ {value: 0x8133, lo: 0x9e, hi: 0x9e},
+ // Block 0x7c, offset 0x291
+ {value: 0x6b4d, lo: 0x06},
+ {value: 0x9900, lo: 0xb0, hi: 0xb0},
+ {value: 0xa000, lo: 0xb9, hi: 0xb9},
+ {value: 0x9900, lo: 0xba, hi: 0xba},
+ {value: 0x2dbd, lo: 0xbb, hi: 0xbb},
+ {value: 0x2db3, lo: 0xbc, hi: 0xbd},
+ {value: 0x2dc7, lo: 0xbe, hi: 0xbe},
+ // Block 0x7d, offset 0x298
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8105, lo: 0x82, hi: 0x82},
+ {value: 0x8103, lo: 0x83, hi: 0x83},
+ // Block 0x7e, offset 0x29b
+ {value: 0x0000, lo: 0x05},
+ {value: 0x9900, lo: 0xaf, hi: 0xaf},
+ {value: 0xa000, lo: 0xb8, hi: 0xb9},
+ {value: 0x2dd1, lo: 0xba, hi: 0xba},
+ {value: 0x2ddb, lo: 0xbb, hi: 0xbb},
+ {value: 0x8105, lo: 0xbf, hi: 0xbf},
+ // Block 0x7f, offset 0x2a1
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8103, lo: 0x80, hi: 0x80},
+ // Block 0x80, offset 0x2a3
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0xbf, hi: 0xbf},
+ // Block 0x81, offset 0x2a5
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8105, lo: 0xb6, hi: 0xb6},
+ {value: 0x8103, lo: 0xb7, hi: 0xb7},
+ // Block 0x82, offset 0x2a8
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0xab, hi: 0xab},
+ // Block 0x83, offset 0x2aa
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8105, lo: 0xb9, hi: 0xb9},
+ {value: 0x8103, lo: 0xba, hi: 0xba},
+ // Block 0x84, offset 0x2ad
+ {value: 0x0000, lo: 0x04},
+ {value: 0x9900, lo: 0xb0, hi: 0xb0},
+ {value: 0xa000, lo: 0xb5, hi: 0xb5},
+ {value: 0x2de5, lo: 0xb8, hi: 0xb8},
+ {value: 0x8105, lo: 0xbd, hi: 0xbe},
+ // Block 0x85, offset 0x2b2
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8103, lo: 0x83, hi: 0x83},
+ // Block 0x86, offset 0x2b4
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0xa0, hi: 0xa0},
+ // Block 0x87, offset 0x2b6
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0xb4, hi: 0xb4},
+ // Block 0x88, offset 0x2b8
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0x87, hi: 0x87},
+ // Block 0x89, offset 0x2ba
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0x99, hi: 0x99},
+ // Block 0x8a, offset 0x2bc
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8103, lo: 0x82, hi: 0x82},
+ {value: 0x8105, lo: 0x84, hi: 0x85},
+ // Block 0x8b, offset 0x2bf
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0x97, hi: 0x97},
+ // Block 0x8c, offset 0x2c1
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8101, lo: 0xb0, hi: 0xb4},
+ // Block 0x8d, offset 0x2c3
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0xb0, hi: 0xb6},
+ // Block 0x8e, offset 0x2c5
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8102, lo: 0xb0, hi: 0xb1},
+ // Block 0x8f, offset 0x2c7
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8101, lo: 0x9e, hi: 0x9e},
+ // Block 0x90, offset 0x2c9
+ {value: 0x0000, lo: 0x0c},
+ {value: 0x45e3, lo: 0x9e, hi: 0x9e},
+ {value: 0x45ed, lo: 0x9f, hi: 0x9f},
+ {value: 0x4621, lo: 0xa0, hi: 0xa0},
+ {value: 0x462f, lo: 0xa1, hi: 0xa1},
+ {value: 0x463d, lo: 0xa2, hi: 0xa2},
+ {value: 0x464b, lo: 0xa3, hi: 0xa3},
+ {value: 0x4659, lo: 0xa4, hi: 0xa4},
+ {value: 0x812c, lo: 0xa5, hi: 0xa6},
+ {value: 0x8101, lo: 0xa7, hi: 0xa9},
+ {value: 0x8131, lo: 0xad, hi: 0xad},
+ {value: 0x812c, lo: 0xae, hi: 0xb2},
+ {value: 0x812e, lo: 0xbb, hi: 0xbf},
+ // Block 0x91, offset 0x2d6
+ {value: 0x0000, lo: 0x09},
+ {value: 0x812e, lo: 0x80, hi: 0x82},
+ {value: 0x8133, lo: 0x85, hi: 0x89},
+ {value: 0x812e, lo: 0x8a, hi: 0x8b},
+ {value: 0x8133, lo: 0xaa, hi: 0xad},
+ {value: 0x45f7, lo: 0xbb, hi: 0xbb},
+ {value: 0x4601, lo: 0xbc, hi: 0xbc},
+ {value: 0x4667, lo: 0xbd, hi: 0xbd},
+ {value: 0x4683, lo: 0xbe, hi: 0xbe},
+ {value: 0x4675, lo: 0xbf, hi: 0xbf},
+ // Block 0x92, offset 0x2e0
+ {value: 0x0000, lo: 0x01},
+ {value: 0x4691, lo: 0x80, hi: 0x80},
+ // Block 0x93, offset 0x2e2
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0x82, hi: 0x84},
+ // Block 0x94, offset 0x2e4
+ {value: 0x0002, lo: 0x03},
+ {value: 0x0043, lo: 0x80, hi: 0x99},
+ {value: 0x0083, lo: 0x9a, hi: 0xb3},
+ {value: 0x0043, lo: 0xb4, hi: 0xbf},
+ // Block 0x95, offset 0x2e8
+ {value: 0x0002, lo: 0x04},
+ {value: 0x005b, lo: 0x80, hi: 0x8d},
+ {value: 0x0083, lo: 0x8e, hi: 0x94},
+ {value: 0x0093, lo: 0x96, hi: 0xa7},
+ {value: 0x0043, lo: 0xa8, hi: 0xbf},
+ // Block 0x96, offset 0x2ed
+ {value: 0x0002, lo: 0x0b},
+ {value: 0x0073, lo: 0x80, hi: 0x81},
+ {value: 0x0083, lo: 0x82, hi: 0x9b},
+ {value: 0x0043, lo: 0x9c, hi: 0x9c},
+ {value: 0x0047, lo: 0x9e, hi: 0x9f},
+ {value: 0x004f, lo: 0xa2, hi: 0xa2},
+ {value: 0x0055, lo: 0xa5, hi: 0xa6},
+ {value: 0x005d, lo: 0xa9, hi: 0xac},
+ {value: 0x0067, lo: 0xae, hi: 0xb5},
+ {value: 0x0083, lo: 0xb6, hi: 0xb9},
+ {value: 0x008d, lo: 0xbb, hi: 0xbb},
+ {value: 0x0091, lo: 0xbd, hi: 0xbf},
+ // Block 0x97, offset 0x2f9
+ {value: 0x0002, lo: 0x04},
+ {value: 0x0097, lo: 0x80, hi: 0x83},
+ {value: 0x00a1, lo: 0x85, hi: 0x8f},
+ {value: 0x0043, lo: 0x90, hi: 0xa9},
+ {value: 0x0083, lo: 0xaa, hi: 0xbf},
+ // Block 0x98, offset 0x2fe
+ {value: 0x0002, lo: 0x08},
+ {value: 0x00af, lo: 0x80, hi: 0x83},
+ {value: 0x0043, lo: 0x84, hi: 0x85},
+ {value: 0x0049, lo: 0x87, hi: 0x8a},
+ {value: 0x0055, lo: 0x8d, hi: 0x94},
+ {value: 0x0067, lo: 0x96, hi: 0x9c},
+ {value: 0x0083, lo: 0x9e, hi: 0xb7},
+ {value: 0x0043, lo: 0xb8, hi: 0xb9},
+ {value: 0x0049, lo: 0xbb, hi: 0xbe},
+ // Block 0x99, offset 0x307
+ {value: 0x0002, lo: 0x05},
+ {value: 0x0053, lo: 0x80, hi: 0x84},
+ {value: 0x005f, lo: 0x86, hi: 0x86},
+ {value: 0x0067, lo: 0x8a, hi: 0x90},
+ {value: 0x0083, lo: 0x92, hi: 0xab},
+ {value: 0x0043, lo: 0xac, hi: 0xbf},
+ // Block 0x9a, offset 0x30d
+ {value: 0x0002, lo: 0x04},
+ {value: 0x006b, lo: 0x80, hi: 0x85},
+ {value: 0x0083, lo: 0x86, hi: 0x9f},
+ {value: 0x0043, lo: 0xa0, hi: 0xb9},
+ {value: 0x0083, lo: 0xba, hi: 0xbf},
+ // Block 0x9b, offset 0x312
+ {value: 0x0002, lo: 0x03},
+ {value: 0x008f, lo: 0x80, hi: 0x93},
+ {value: 0x0043, lo: 0x94, hi: 0xad},
+ {value: 0x0083, lo: 0xae, hi: 0xbf},
+ // Block 0x9c, offset 0x316
+ {value: 0x0002, lo: 0x04},
+ {value: 0x00a7, lo: 0x80, hi: 0x87},
+ {value: 0x0043, lo: 0x88, hi: 0xa1},
+ {value: 0x0083, lo: 0xa2, hi: 0xbb},
+ {value: 0x0043, lo: 0xbc, hi: 0xbf},
+ // Block 0x9d, offset 0x31b
+ {value: 0x0002, lo: 0x03},
+ {value: 0x004b, lo: 0x80, hi: 0x95},
+ {value: 0x0083, lo: 0x96, hi: 0xaf},
+ {value: 0x0043, lo: 0xb0, hi: 0xbf},
+ // Block 0x9e, offset 0x31f
+ {value: 0x0003, lo: 0x0f},
+ {value: 0x01bb, lo: 0x80, hi: 0x80},
+ {value: 0x0462, lo: 0x81, hi: 0x81},
+ {value: 0x01be, lo: 0x82, hi: 0x9a},
+ {value: 0x045e, lo: 0x9b, hi: 0x9b},
+ {value: 0x01ca, lo: 0x9c, hi: 0x9c},
+ {value: 0x01d3, lo: 0x9d, hi: 0x9d},
+ {value: 0x01d9, lo: 0x9e, hi: 0x9e},
+ {value: 0x01fd, lo: 0x9f, hi: 0x9f},
+ {value: 0x01ee, lo: 0xa0, hi: 0xa0},
+ {value: 0x01eb, lo: 0xa1, hi: 0xa1},
+ {value: 0x0176, lo: 0xa2, hi: 0xb2},
+ {value: 0x018b, lo: 0xb3, hi: 0xb3},
+ {value: 0x01a9, lo: 0xb4, hi: 0xba},
+ {value: 0x0462, lo: 0xbb, hi: 0xbb},
+ {value: 0x01be, lo: 0xbc, hi: 0xbf},
+ // Block 0x9f, offset 0x32f
+ {value: 0x0003, lo: 0x0d},
+ {value: 0x01ca, lo: 0x80, hi: 0x94},
+ {value: 0x045e, lo: 0x95, hi: 0x95},
+ {value: 0x01ca, lo: 0x96, hi: 0x96},
+ {value: 0x01d3, lo: 0x97, hi: 0x97},
+ {value: 0x01d9, lo: 0x98, hi: 0x98},
+ {value: 0x01fd, lo: 0x99, hi: 0x99},
+ {value: 0x01ee, lo: 0x9a, hi: 0x9a},
+ {value: 0x01eb, lo: 0x9b, hi: 0x9b},
+ {value: 0x0176, lo: 0x9c, hi: 0xac},
+ {value: 0x018b, lo: 0xad, hi: 0xad},
+ {value: 0x01a9, lo: 0xae, hi: 0xb4},
+ {value: 0x0462, lo: 0xb5, hi: 0xb5},
+ {value: 0x01be, lo: 0xb6, hi: 0xbf},
+ // Block 0xa0, offset 0x33d
+ {value: 0x0003, lo: 0x0d},
+ {value: 0x01dc, lo: 0x80, hi: 0x8e},
+ {value: 0x045e, lo: 0x8f, hi: 0x8f},
+ {value: 0x01ca, lo: 0x90, hi: 0x90},
+ {value: 0x01d3, lo: 0x91, hi: 0x91},
+ {value: 0x01d9, lo: 0x92, hi: 0x92},
+ {value: 0x01fd, lo: 0x93, hi: 0x93},
+ {value: 0x01ee, lo: 0x94, hi: 0x94},
+ {value: 0x01eb, lo: 0x95, hi: 0x95},
+ {value: 0x0176, lo: 0x96, hi: 0xa6},
+ {value: 0x018b, lo: 0xa7, hi: 0xa7},
+ {value: 0x01a9, lo: 0xa8, hi: 0xae},
+ {value: 0x0462, lo: 0xaf, hi: 0xaf},
+ {value: 0x01be, lo: 0xb0, hi: 0xbf},
+ // Block 0xa1, offset 0x34b
+ {value: 0x0003, lo: 0x0d},
+ {value: 0x01ee, lo: 0x80, hi: 0x88},
+ {value: 0x045e, lo: 0x89, hi: 0x89},
+ {value: 0x01ca, lo: 0x8a, hi: 0x8a},
+ {value: 0x01d3, lo: 0x8b, hi: 0x8b},
+ {value: 0x01d9, lo: 0x8c, hi: 0x8c},
+ {value: 0x01fd, lo: 0x8d, hi: 0x8d},
+ {value: 0x01ee, lo: 0x8e, hi: 0x8e},
+ {value: 0x01eb, lo: 0x8f, hi: 0x8f},
+ {value: 0x0176, lo: 0x90, hi: 0xa0},
+ {value: 0x018b, lo: 0xa1, hi: 0xa1},
+ {value: 0x01a9, lo: 0xa2, hi: 0xa8},
+ {value: 0x0462, lo: 0xa9, hi: 0xa9},
+ {value: 0x01be, lo: 0xaa, hi: 0xbf},
+ // Block 0xa2, offset 0x359
+ {value: 0x0000, lo: 0x05},
+ {value: 0x8133, lo: 0x80, hi: 0x86},
+ {value: 0x8133, lo: 0x88, hi: 0x98},
+ {value: 0x8133, lo: 0x9b, hi: 0xa1},
+ {value: 0x8133, lo: 0xa3, hi: 0xa4},
+ {value: 0x8133, lo: 0xa6, hi: 0xaa},
+ // Block 0xa3, offset 0x35f
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0xac, hi: 0xaf},
+ // Block 0xa4, offset 0x361
+ {value: 0x0000, lo: 0x01},
+ {value: 0x812e, lo: 0x90, hi: 0x96},
+ // Block 0xa5, offset 0x363
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8133, lo: 0x84, hi: 0x89},
+ {value: 0x8103, lo: 0x8a, hi: 0x8a},
+ // Block 0xa6, offset 0x366
+ {value: 0x0002, lo: 0x0a},
+ {value: 0x0063, lo: 0x80, hi: 0x89},
+ {value: 0x1954, lo: 0x8a, hi: 0x8a},
+ {value: 0x1987, lo: 0x8b, hi: 0x8b},
+ {value: 0x19a2, lo: 0x8c, hi: 0x8c},
+ {value: 0x19a8, lo: 0x8d, hi: 0x8d},
+ {value: 0x1bc6, lo: 0x8e, hi: 0x8e},
+ {value: 0x19b4, lo: 0x8f, hi: 0x8f},
+ {value: 0x197e, lo: 0xaa, hi: 0xaa},
+ {value: 0x1981, lo: 0xab, hi: 0xab},
+ {value: 0x1984, lo: 0xac, hi: 0xac},
+ // Block 0xa7, offset 0x371
+ {value: 0x0000, lo: 0x01},
+ {value: 0x1942, lo: 0x90, hi: 0x90},
+ // Block 0xa8, offset 0x373
+ {value: 0x0028, lo: 0x09},
+ {value: 0x286f, lo: 0x80, hi: 0x80},
+ {value: 0x2833, lo: 0x81, hi: 0x81},
+ {value: 0x283d, lo: 0x82, hi: 0x82},
+ {value: 0x2851, lo: 0x83, hi: 0x84},
+ {value: 0x285b, lo: 0x85, hi: 0x86},
+ {value: 0x2847, lo: 0x87, hi: 0x87},
+ {value: 0x2865, lo: 0x88, hi: 0x88},
+ {value: 0x0b72, lo: 0x90, hi: 0x90},
+ {value: 0x08ea, lo: 0x91, hi: 0x91},
+ // Block 0xa9, offset 0x37d
+ {value: 0x0002, lo: 0x01},
+ {value: 0x0021, lo: 0xb0, hi: 0xb9},
+}
+
+// recompMap: 7528 bytes (entries only)
+var recompMap map[uint32]rune
+var recompMapOnce sync.Once
+
+const recompMapPacked = "" +
+ "\x00A\x03\x00\x00\x00\x00\xc0" + // 0x00410300: 0x000000C0
+ "\x00A\x03\x01\x00\x00\x00\xc1" + // 0x00410301: 0x000000C1
+ "\x00A\x03\x02\x00\x00\x00\xc2" + // 0x00410302: 0x000000C2
+ "\x00A\x03\x03\x00\x00\x00\xc3" + // 0x00410303: 0x000000C3
+ "\x00A\x03\b\x00\x00\x00\xc4" + // 0x00410308: 0x000000C4
+ "\x00A\x03\n\x00\x00\x00\xc5" + // 0x0041030A: 0x000000C5
+ "\x00C\x03'\x00\x00\x00\xc7" + // 0x00430327: 0x000000C7
+ "\x00E\x03\x00\x00\x00\x00\xc8" + // 0x00450300: 0x000000C8
+ "\x00E\x03\x01\x00\x00\x00\xc9" + // 0x00450301: 0x000000C9
+ "\x00E\x03\x02\x00\x00\x00\xca" + // 0x00450302: 0x000000CA
+ "\x00E\x03\b\x00\x00\x00\xcb" + // 0x00450308: 0x000000CB
+ "\x00I\x03\x00\x00\x00\x00\xcc" + // 0x00490300: 0x000000CC
+ "\x00I\x03\x01\x00\x00\x00\xcd" + // 0x00490301: 0x000000CD
+ "\x00I\x03\x02\x00\x00\x00\xce" + // 0x00490302: 0x000000CE
+ "\x00I\x03\b\x00\x00\x00\xcf" + // 0x00490308: 0x000000CF
+ "\x00N\x03\x03\x00\x00\x00\xd1" + // 0x004E0303: 0x000000D1
+ "\x00O\x03\x00\x00\x00\x00\xd2" + // 0x004F0300: 0x000000D2
+ "\x00O\x03\x01\x00\x00\x00\xd3" + // 0x004F0301: 0x000000D3
+ "\x00O\x03\x02\x00\x00\x00\xd4" + // 0x004F0302: 0x000000D4
+ "\x00O\x03\x03\x00\x00\x00\xd5" + // 0x004F0303: 0x000000D5
+ "\x00O\x03\b\x00\x00\x00\xd6" + // 0x004F0308: 0x000000D6
+ "\x00U\x03\x00\x00\x00\x00\xd9" + // 0x00550300: 0x000000D9
+ "\x00U\x03\x01\x00\x00\x00\xda" + // 0x00550301: 0x000000DA
+ "\x00U\x03\x02\x00\x00\x00\xdb" + // 0x00550302: 0x000000DB
+ "\x00U\x03\b\x00\x00\x00\xdc" + // 0x00550308: 0x000000DC
+ "\x00Y\x03\x01\x00\x00\x00\xdd" + // 0x00590301: 0x000000DD
+ "\x00a\x03\x00\x00\x00\x00\xe0" + // 0x00610300: 0x000000E0
+ "\x00a\x03\x01\x00\x00\x00\xe1" + // 0x00610301: 0x000000E1
+ "\x00a\x03\x02\x00\x00\x00\xe2" + // 0x00610302: 0x000000E2
+ "\x00a\x03\x03\x00\x00\x00\xe3" + // 0x00610303: 0x000000E3
+ "\x00a\x03\b\x00\x00\x00\xe4" + // 0x00610308: 0x000000E4
+ "\x00a\x03\n\x00\x00\x00\xe5" + // 0x0061030A: 0x000000E5
+ "\x00c\x03'\x00\x00\x00\xe7" + // 0x00630327: 0x000000E7
+ "\x00e\x03\x00\x00\x00\x00\xe8" + // 0x00650300: 0x000000E8
+ "\x00e\x03\x01\x00\x00\x00\xe9" + // 0x00650301: 0x000000E9
+ "\x00e\x03\x02\x00\x00\x00\xea" + // 0x00650302: 0x000000EA
+ "\x00e\x03\b\x00\x00\x00\xeb" + // 0x00650308: 0x000000EB
+ "\x00i\x03\x00\x00\x00\x00\xec" + // 0x00690300: 0x000000EC
+ "\x00i\x03\x01\x00\x00\x00\xed" + // 0x00690301: 0x000000ED
+ "\x00i\x03\x02\x00\x00\x00\xee" + // 0x00690302: 0x000000EE
+ "\x00i\x03\b\x00\x00\x00\xef" + // 0x00690308: 0x000000EF
+ "\x00n\x03\x03\x00\x00\x00\xf1" + // 0x006E0303: 0x000000F1
+ "\x00o\x03\x00\x00\x00\x00\xf2" + // 0x006F0300: 0x000000F2
+ "\x00o\x03\x01\x00\x00\x00\xf3" + // 0x006F0301: 0x000000F3
+ "\x00o\x03\x02\x00\x00\x00\xf4" + // 0x006F0302: 0x000000F4
+ "\x00o\x03\x03\x00\x00\x00\xf5" + // 0x006F0303: 0x000000F5
+ "\x00o\x03\b\x00\x00\x00\xf6" + // 0x006F0308: 0x000000F6
+ "\x00u\x03\x00\x00\x00\x00\xf9" + // 0x00750300: 0x000000F9
+ "\x00u\x03\x01\x00\x00\x00\xfa" + // 0x00750301: 0x000000FA
+ "\x00u\x03\x02\x00\x00\x00\xfb" + // 0x00750302: 0x000000FB
+ "\x00u\x03\b\x00\x00\x00\xfc" + // 0x00750308: 0x000000FC
+ "\x00y\x03\x01\x00\x00\x00\xfd" + // 0x00790301: 0x000000FD
+ "\x00y\x03\b\x00\x00\x00\xff" + // 0x00790308: 0x000000FF
+ "\x00A\x03\x04\x00\x00\x01\x00" + // 0x00410304: 0x00000100
+ "\x00a\x03\x04\x00\x00\x01\x01" + // 0x00610304: 0x00000101
+ "\x00A\x03\x06\x00\x00\x01\x02" + // 0x00410306: 0x00000102
+ "\x00a\x03\x06\x00\x00\x01\x03" + // 0x00610306: 0x00000103
+ "\x00A\x03(\x00\x00\x01\x04" + // 0x00410328: 0x00000104
+ "\x00a\x03(\x00\x00\x01\x05" + // 0x00610328: 0x00000105
+ "\x00C\x03\x01\x00\x00\x01\x06" + // 0x00430301: 0x00000106
+ "\x00c\x03\x01\x00\x00\x01\a" + // 0x00630301: 0x00000107
+ "\x00C\x03\x02\x00\x00\x01\b" + // 0x00430302: 0x00000108
+ "\x00c\x03\x02\x00\x00\x01\t" + // 0x00630302: 0x00000109
+ "\x00C\x03\a\x00\x00\x01\n" + // 0x00430307: 0x0000010A
+ "\x00c\x03\a\x00\x00\x01\v" + // 0x00630307: 0x0000010B
+ "\x00C\x03\f\x00\x00\x01\f" + // 0x0043030C: 0x0000010C
+ "\x00c\x03\f\x00\x00\x01\r" + // 0x0063030C: 0x0000010D
+ "\x00D\x03\f\x00\x00\x01\x0e" + // 0x0044030C: 0x0000010E
+ "\x00d\x03\f\x00\x00\x01\x0f" + // 0x0064030C: 0x0000010F
+ "\x00E\x03\x04\x00\x00\x01\x12" + // 0x00450304: 0x00000112
+ "\x00e\x03\x04\x00\x00\x01\x13" + // 0x00650304: 0x00000113
+ "\x00E\x03\x06\x00\x00\x01\x14" + // 0x00450306: 0x00000114
+ "\x00e\x03\x06\x00\x00\x01\x15" + // 0x00650306: 0x00000115
+ "\x00E\x03\a\x00\x00\x01\x16" + // 0x00450307: 0x00000116
+ "\x00e\x03\a\x00\x00\x01\x17" + // 0x00650307: 0x00000117
+ "\x00E\x03(\x00\x00\x01\x18" + // 0x00450328: 0x00000118
+ "\x00e\x03(\x00\x00\x01\x19" + // 0x00650328: 0x00000119
+ "\x00E\x03\f\x00\x00\x01\x1a" + // 0x0045030C: 0x0000011A
+ "\x00e\x03\f\x00\x00\x01\x1b" + // 0x0065030C: 0x0000011B
+ "\x00G\x03\x02\x00\x00\x01\x1c" + // 0x00470302: 0x0000011C
+ "\x00g\x03\x02\x00\x00\x01\x1d" + // 0x00670302: 0x0000011D
+ "\x00G\x03\x06\x00\x00\x01\x1e" + // 0x00470306: 0x0000011E
+ "\x00g\x03\x06\x00\x00\x01\x1f" + // 0x00670306: 0x0000011F
+ "\x00G\x03\a\x00\x00\x01 " + // 0x00470307: 0x00000120
+ "\x00g\x03\a\x00\x00\x01!" + // 0x00670307: 0x00000121
+ "\x00G\x03'\x00\x00\x01\"" + // 0x00470327: 0x00000122
+ "\x00g\x03'\x00\x00\x01#" + // 0x00670327: 0x00000123
+ "\x00H\x03\x02\x00\x00\x01$" + // 0x00480302: 0x00000124
+ "\x00h\x03\x02\x00\x00\x01%" + // 0x00680302: 0x00000125
+ "\x00I\x03\x03\x00\x00\x01(" + // 0x00490303: 0x00000128
+ "\x00i\x03\x03\x00\x00\x01)" + // 0x00690303: 0x00000129
+ "\x00I\x03\x04\x00\x00\x01*" + // 0x00490304: 0x0000012A
+ "\x00i\x03\x04\x00\x00\x01+" + // 0x00690304: 0x0000012B
+ "\x00I\x03\x06\x00\x00\x01," + // 0x00490306: 0x0000012C
+ "\x00i\x03\x06\x00\x00\x01-" + // 0x00690306: 0x0000012D
+ "\x00I\x03(\x00\x00\x01." + // 0x00490328: 0x0000012E
+ "\x00i\x03(\x00\x00\x01/" + // 0x00690328: 0x0000012F
+ "\x00I\x03\a\x00\x00\x010" + // 0x00490307: 0x00000130
+ "\x00J\x03\x02\x00\x00\x014" + // 0x004A0302: 0x00000134
+ "\x00j\x03\x02\x00\x00\x015" + // 0x006A0302: 0x00000135
+ "\x00K\x03'\x00\x00\x016" + // 0x004B0327: 0x00000136
+ "\x00k\x03'\x00\x00\x017" + // 0x006B0327: 0x00000137
+ "\x00L\x03\x01\x00\x00\x019" + // 0x004C0301: 0x00000139
+ "\x00l\x03\x01\x00\x00\x01:" + // 0x006C0301: 0x0000013A
+ "\x00L\x03'\x00\x00\x01;" + // 0x004C0327: 0x0000013B
+ "\x00l\x03'\x00\x00\x01<" + // 0x006C0327: 0x0000013C
+ "\x00L\x03\f\x00\x00\x01=" + // 0x004C030C: 0x0000013D
+ "\x00l\x03\f\x00\x00\x01>" + // 0x006C030C: 0x0000013E
+ "\x00N\x03\x01\x00\x00\x01C" + // 0x004E0301: 0x00000143
+ "\x00n\x03\x01\x00\x00\x01D" + // 0x006E0301: 0x00000144
+ "\x00N\x03'\x00\x00\x01E" + // 0x004E0327: 0x00000145
+ "\x00n\x03'\x00\x00\x01F" + // 0x006E0327: 0x00000146
+ "\x00N\x03\f\x00\x00\x01G" + // 0x004E030C: 0x00000147
+ "\x00n\x03\f\x00\x00\x01H" + // 0x006E030C: 0x00000148
+ "\x00O\x03\x04\x00\x00\x01L" + // 0x004F0304: 0x0000014C
+ "\x00o\x03\x04\x00\x00\x01M" + // 0x006F0304: 0x0000014D
+ "\x00O\x03\x06\x00\x00\x01N" + // 0x004F0306: 0x0000014E
+ "\x00o\x03\x06\x00\x00\x01O" + // 0x006F0306: 0x0000014F
+ "\x00O\x03\v\x00\x00\x01P" + // 0x004F030B: 0x00000150
+ "\x00o\x03\v\x00\x00\x01Q" + // 0x006F030B: 0x00000151
+ "\x00R\x03\x01\x00\x00\x01T" + // 0x00520301: 0x00000154
+ "\x00r\x03\x01\x00\x00\x01U" + // 0x00720301: 0x00000155
+ "\x00R\x03'\x00\x00\x01V" + // 0x00520327: 0x00000156
+ "\x00r\x03'\x00\x00\x01W" + // 0x00720327: 0x00000157
+ "\x00R\x03\f\x00\x00\x01X" + // 0x0052030C: 0x00000158
+ "\x00r\x03\f\x00\x00\x01Y" + // 0x0072030C: 0x00000159
+ "\x00S\x03\x01\x00\x00\x01Z" + // 0x00530301: 0x0000015A
+ "\x00s\x03\x01\x00\x00\x01[" + // 0x00730301: 0x0000015B
+ "\x00S\x03\x02\x00\x00\x01\\" + // 0x00530302: 0x0000015C
+ "\x00s\x03\x02\x00\x00\x01]" + // 0x00730302: 0x0000015D
+ "\x00S\x03'\x00\x00\x01^" + // 0x00530327: 0x0000015E
+ "\x00s\x03'\x00\x00\x01_" + // 0x00730327: 0x0000015F
+ "\x00S\x03\f\x00\x00\x01`" + // 0x0053030C: 0x00000160
+ "\x00s\x03\f\x00\x00\x01a" + // 0x0073030C: 0x00000161
+ "\x00T\x03'\x00\x00\x01b" + // 0x00540327: 0x00000162
+ "\x00t\x03'\x00\x00\x01c" + // 0x00740327: 0x00000163
+ "\x00T\x03\f\x00\x00\x01d" + // 0x0054030C: 0x00000164
+ "\x00t\x03\f\x00\x00\x01e" + // 0x0074030C: 0x00000165
+ "\x00U\x03\x03\x00\x00\x01h" + // 0x00550303: 0x00000168
+ "\x00u\x03\x03\x00\x00\x01i" + // 0x00750303: 0x00000169
+ "\x00U\x03\x04\x00\x00\x01j" + // 0x00550304: 0x0000016A
+ "\x00u\x03\x04\x00\x00\x01k" + // 0x00750304: 0x0000016B
+ "\x00U\x03\x06\x00\x00\x01l" + // 0x00550306: 0x0000016C
+ "\x00u\x03\x06\x00\x00\x01m" + // 0x00750306: 0x0000016D
+ "\x00U\x03\n\x00\x00\x01n" + // 0x0055030A: 0x0000016E
+ "\x00u\x03\n\x00\x00\x01o" + // 0x0075030A: 0x0000016F
+ "\x00U\x03\v\x00\x00\x01p" + // 0x0055030B: 0x00000170
+ "\x00u\x03\v\x00\x00\x01q" + // 0x0075030B: 0x00000171
+ "\x00U\x03(\x00\x00\x01r" + // 0x00550328: 0x00000172
+ "\x00u\x03(\x00\x00\x01s" + // 0x00750328: 0x00000173
+ "\x00W\x03\x02\x00\x00\x01t" + // 0x00570302: 0x00000174
+ "\x00w\x03\x02\x00\x00\x01u" + // 0x00770302: 0x00000175
+ "\x00Y\x03\x02\x00\x00\x01v" + // 0x00590302: 0x00000176
+ "\x00y\x03\x02\x00\x00\x01w" + // 0x00790302: 0x00000177
+ "\x00Y\x03\b\x00\x00\x01x" + // 0x00590308: 0x00000178
+ "\x00Z\x03\x01\x00\x00\x01y" + // 0x005A0301: 0x00000179
+ "\x00z\x03\x01\x00\x00\x01z" + // 0x007A0301: 0x0000017A
+ "\x00Z\x03\a\x00\x00\x01{" + // 0x005A0307: 0x0000017B
+ "\x00z\x03\a\x00\x00\x01|" + // 0x007A0307: 0x0000017C
+ "\x00Z\x03\f\x00\x00\x01}" + // 0x005A030C: 0x0000017D
+ "\x00z\x03\f\x00\x00\x01~" + // 0x007A030C: 0x0000017E
+ "\x00O\x03\x1b\x00\x00\x01\xa0" + // 0x004F031B: 0x000001A0
+ "\x00o\x03\x1b\x00\x00\x01\xa1" + // 0x006F031B: 0x000001A1
+ "\x00U\x03\x1b\x00\x00\x01\xaf" + // 0x0055031B: 0x000001AF
+ "\x00u\x03\x1b\x00\x00\x01\xb0" + // 0x0075031B: 0x000001B0
+ "\x00A\x03\f\x00\x00\x01\xcd" + // 0x0041030C: 0x000001CD
+ "\x00a\x03\f\x00\x00\x01\xce" + // 0x0061030C: 0x000001CE
+ "\x00I\x03\f\x00\x00\x01\xcf" + // 0x0049030C: 0x000001CF
+ "\x00i\x03\f\x00\x00\x01\xd0" + // 0x0069030C: 0x000001D0
+ "\x00O\x03\f\x00\x00\x01\xd1" + // 0x004F030C: 0x000001D1
+ "\x00o\x03\f\x00\x00\x01\xd2" + // 0x006F030C: 0x000001D2
+ "\x00U\x03\f\x00\x00\x01\xd3" + // 0x0055030C: 0x000001D3
+ "\x00u\x03\f\x00\x00\x01\xd4" + // 0x0075030C: 0x000001D4
+ "\x00\xdc\x03\x04\x00\x00\x01\xd5" + // 0x00DC0304: 0x000001D5
+ "\x00\xfc\x03\x04\x00\x00\x01\xd6" + // 0x00FC0304: 0x000001D6
+ "\x00\xdc\x03\x01\x00\x00\x01\xd7" + // 0x00DC0301: 0x000001D7
+ "\x00\xfc\x03\x01\x00\x00\x01\xd8" + // 0x00FC0301: 0x000001D8
+ "\x00\xdc\x03\f\x00\x00\x01\xd9" + // 0x00DC030C: 0x000001D9
+ "\x00\xfc\x03\f\x00\x00\x01\xda" + // 0x00FC030C: 0x000001DA
+ "\x00\xdc\x03\x00\x00\x00\x01\xdb" + // 0x00DC0300: 0x000001DB
+ "\x00\xfc\x03\x00\x00\x00\x01\xdc" + // 0x00FC0300: 0x000001DC
+ "\x00\xc4\x03\x04\x00\x00\x01\xde" + // 0x00C40304: 0x000001DE
+ "\x00\xe4\x03\x04\x00\x00\x01\xdf" + // 0x00E40304: 0x000001DF
+ "\x02&\x03\x04\x00\x00\x01\xe0" + // 0x02260304: 0x000001E0
+ "\x02'\x03\x04\x00\x00\x01\xe1" + // 0x02270304: 0x000001E1
+ "\x00\xc6\x03\x04\x00\x00\x01\xe2" + // 0x00C60304: 0x000001E2
+ "\x00\xe6\x03\x04\x00\x00\x01\xe3" + // 0x00E60304: 0x000001E3
+ "\x00G\x03\f\x00\x00\x01\xe6" + // 0x0047030C: 0x000001E6
+ "\x00g\x03\f\x00\x00\x01\xe7" + // 0x0067030C: 0x000001E7
+ "\x00K\x03\f\x00\x00\x01\xe8" + // 0x004B030C: 0x000001E8
+ "\x00k\x03\f\x00\x00\x01\xe9" + // 0x006B030C: 0x000001E9
+ "\x00O\x03(\x00\x00\x01\xea" + // 0x004F0328: 0x000001EA
+ "\x00o\x03(\x00\x00\x01\xeb" + // 0x006F0328: 0x000001EB
+ "\x01\xea\x03\x04\x00\x00\x01\xec" + // 0x01EA0304: 0x000001EC
+ "\x01\xeb\x03\x04\x00\x00\x01\xed" + // 0x01EB0304: 0x000001ED
+ "\x01\xb7\x03\f\x00\x00\x01\xee" + // 0x01B7030C: 0x000001EE
+ "\x02\x92\x03\f\x00\x00\x01\xef" + // 0x0292030C: 0x000001EF
+ "\x00j\x03\f\x00\x00\x01\xf0" + // 0x006A030C: 0x000001F0
+ "\x00G\x03\x01\x00\x00\x01\xf4" + // 0x00470301: 0x000001F4
+ "\x00g\x03\x01\x00\x00\x01\xf5" + // 0x00670301: 0x000001F5
+ "\x00N\x03\x00\x00\x00\x01\xf8" + // 0x004E0300: 0x000001F8
+ "\x00n\x03\x00\x00\x00\x01\xf9" + // 0x006E0300: 0x000001F9
+ "\x00\xc5\x03\x01\x00\x00\x01\xfa" + // 0x00C50301: 0x000001FA
+ "\x00\xe5\x03\x01\x00\x00\x01\xfb" + // 0x00E50301: 0x000001FB
+ "\x00\xc6\x03\x01\x00\x00\x01\xfc" + // 0x00C60301: 0x000001FC
+ "\x00\xe6\x03\x01\x00\x00\x01\xfd" + // 0x00E60301: 0x000001FD
+ "\x00\xd8\x03\x01\x00\x00\x01\xfe" + // 0x00D80301: 0x000001FE
+ "\x00\xf8\x03\x01\x00\x00\x01\xff" + // 0x00F80301: 0x000001FF
+ "\x00A\x03\x0f\x00\x00\x02\x00" + // 0x0041030F: 0x00000200
+ "\x00a\x03\x0f\x00\x00\x02\x01" + // 0x0061030F: 0x00000201
+ "\x00A\x03\x11\x00\x00\x02\x02" + // 0x00410311: 0x00000202
+ "\x00a\x03\x11\x00\x00\x02\x03" + // 0x00610311: 0x00000203
+ "\x00E\x03\x0f\x00\x00\x02\x04" + // 0x0045030F: 0x00000204
+ "\x00e\x03\x0f\x00\x00\x02\x05" + // 0x0065030F: 0x00000205
+ "\x00E\x03\x11\x00\x00\x02\x06" + // 0x00450311: 0x00000206
+ "\x00e\x03\x11\x00\x00\x02\a" + // 0x00650311: 0x00000207
+ "\x00I\x03\x0f\x00\x00\x02\b" + // 0x0049030F: 0x00000208
+ "\x00i\x03\x0f\x00\x00\x02\t" + // 0x0069030F: 0x00000209
+ "\x00I\x03\x11\x00\x00\x02\n" + // 0x00490311: 0x0000020A
+ "\x00i\x03\x11\x00\x00\x02\v" + // 0x00690311: 0x0000020B
+ "\x00O\x03\x0f\x00\x00\x02\f" + // 0x004F030F: 0x0000020C
+ "\x00o\x03\x0f\x00\x00\x02\r" + // 0x006F030F: 0x0000020D
+ "\x00O\x03\x11\x00\x00\x02\x0e" + // 0x004F0311: 0x0000020E
+ "\x00o\x03\x11\x00\x00\x02\x0f" + // 0x006F0311: 0x0000020F
+ "\x00R\x03\x0f\x00\x00\x02\x10" + // 0x0052030F: 0x00000210
+ "\x00r\x03\x0f\x00\x00\x02\x11" + // 0x0072030F: 0x00000211
+ "\x00R\x03\x11\x00\x00\x02\x12" + // 0x00520311: 0x00000212
+ "\x00r\x03\x11\x00\x00\x02\x13" + // 0x00720311: 0x00000213
+ "\x00U\x03\x0f\x00\x00\x02\x14" + // 0x0055030F: 0x00000214
+ "\x00u\x03\x0f\x00\x00\x02\x15" + // 0x0075030F: 0x00000215
+ "\x00U\x03\x11\x00\x00\x02\x16" + // 0x00550311: 0x00000216
+ "\x00u\x03\x11\x00\x00\x02\x17" + // 0x00750311: 0x00000217
+ "\x00S\x03&\x00\x00\x02\x18" + // 0x00530326: 0x00000218
+ "\x00s\x03&\x00\x00\x02\x19" + // 0x00730326: 0x00000219
+ "\x00T\x03&\x00\x00\x02\x1a" + // 0x00540326: 0x0000021A
+ "\x00t\x03&\x00\x00\x02\x1b" + // 0x00740326: 0x0000021B
+ "\x00H\x03\f\x00\x00\x02\x1e" + // 0x0048030C: 0x0000021E
+ "\x00h\x03\f\x00\x00\x02\x1f" + // 0x0068030C: 0x0000021F
+ "\x00A\x03\a\x00\x00\x02&" + // 0x00410307: 0x00000226
+ "\x00a\x03\a\x00\x00\x02'" + // 0x00610307: 0x00000227
+ "\x00E\x03'\x00\x00\x02(" + // 0x00450327: 0x00000228
+ "\x00e\x03'\x00\x00\x02)" + // 0x00650327: 0x00000229
+ "\x00\xd6\x03\x04\x00\x00\x02*" + // 0x00D60304: 0x0000022A
+ "\x00\xf6\x03\x04\x00\x00\x02+" + // 0x00F60304: 0x0000022B
+ "\x00\xd5\x03\x04\x00\x00\x02," + // 0x00D50304: 0x0000022C
+ "\x00\xf5\x03\x04\x00\x00\x02-" + // 0x00F50304: 0x0000022D
+ "\x00O\x03\a\x00\x00\x02." + // 0x004F0307: 0x0000022E
+ "\x00o\x03\a\x00\x00\x02/" + // 0x006F0307: 0x0000022F
+ "\x02.\x03\x04\x00\x00\x020" + // 0x022E0304: 0x00000230
+ "\x02/\x03\x04\x00\x00\x021" + // 0x022F0304: 0x00000231
+ "\x00Y\x03\x04\x00\x00\x022" + // 0x00590304: 0x00000232
+ "\x00y\x03\x04\x00\x00\x023" + // 0x00790304: 0x00000233
+ "\x00\xa8\x03\x01\x00\x00\x03\x85" + // 0x00A80301: 0x00000385
+ "\x03\x91\x03\x01\x00\x00\x03\x86" + // 0x03910301: 0x00000386
+ "\x03\x95\x03\x01\x00\x00\x03\x88" + // 0x03950301: 0x00000388
+ "\x03\x97\x03\x01\x00\x00\x03\x89" + // 0x03970301: 0x00000389
+ "\x03\x99\x03\x01\x00\x00\x03\x8a" + // 0x03990301: 0x0000038A
+ "\x03\x9f\x03\x01\x00\x00\x03\x8c" + // 0x039F0301: 0x0000038C
+ "\x03\xa5\x03\x01\x00\x00\x03\x8e" + // 0x03A50301: 0x0000038E
+ "\x03\xa9\x03\x01\x00\x00\x03\x8f" + // 0x03A90301: 0x0000038F
+ "\x03\xca\x03\x01\x00\x00\x03\x90" + // 0x03CA0301: 0x00000390
+ "\x03\x99\x03\b\x00\x00\x03\xaa" + // 0x03990308: 0x000003AA
+ "\x03\xa5\x03\b\x00\x00\x03\xab" + // 0x03A50308: 0x000003AB
+ "\x03\xb1\x03\x01\x00\x00\x03\xac" + // 0x03B10301: 0x000003AC
+ "\x03\xb5\x03\x01\x00\x00\x03\xad" + // 0x03B50301: 0x000003AD
+ "\x03\xb7\x03\x01\x00\x00\x03\xae" + // 0x03B70301: 0x000003AE
+ "\x03\xb9\x03\x01\x00\x00\x03\xaf" + // 0x03B90301: 0x000003AF
+ "\x03\xcb\x03\x01\x00\x00\x03\xb0" + // 0x03CB0301: 0x000003B0
+ "\x03\xb9\x03\b\x00\x00\x03\xca" + // 0x03B90308: 0x000003CA
+ "\x03\xc5\x03\b\x00\x00\x03\xcb" + // 0x03C50308: 0x000003CB
+ "\x03\xbf\x03\x01\x00\x00\x03\xcc" + // 0x03BF0301: 0x000003CC
+ "\x03\xc5\x03\x01\x00\x00\x03\xcd" + // 0x03C50301: 0x000003CD
+ "\x03\xc9\x03\x01\x00\x00\x03\xce" + // 0x03C90301: 0x000003CE
+ "\x03\xd2\x03\x01\x00\x00\x03\xd3" + // 0x03D20301: 0x000003D3
+ "\x03\xd2\x03\b\x00\x00\x03\xd4" + // 0x03D20308: 0x000003D4
+ "\x04\x15\x03\x00\x00\x00\x04\x00" + // 0x04150300: 0x00000400
+ "\x04\x15\x03\b\x00\x00\x04\x01" + // 0x04150308: 0x00000401
+ "\x04\x13\x03\x01\x00\x00\x04\x03" + // 0x04130301: 0x00000403
+ "\x04\x06\x03\b\x00\x00\x04\a" + // 0x04060308: 0x00000407
+ "\x04\x1a\x03\x01\x00\x00\x04\f" + // 0x041A0301: 0x0000040C
+ "\x04\x18\x03\x00\x00\x00\x04\r" + // 0x04180300: 0x0000040D
+ "\x04#\x03\x06\x00\x00\x04\x0e" + // 0x04230306: 0x0000040E
+ "\x04\x18\x03\x06\x00\x00\x04\x19" + // 0x04180306: 0x00000419
+ "\x048\x03\x06\x00\x00\x049" + // 0x04380306: 0x00000439
+ "\x045\x03\x00\x00\x00\x04P" + // 0x04350300: 0x00000450
+ "\x045\x03\b\x00\x00\x04Q" + // 0x04350308: 0x00000451
+ "\x043\x03\x01\x00\x00\x04S" + // 0x04330301: 0x00000453
+ "\x04V\x03\b\x00\x00\x04W" + // 0x04560308: 0x00000457
+ "\x04:\x03\x01\x00\x00\x04\\" + // 0x043A0301: 0x0000045C
+ "\x048\x03\x00\x00\x00\x04]" + // 0x04380300: 0x0000045D
+ "\x04C\x03\x06\x00\x00\x04^" + // 0x04430306: 0x0000045E
+ "\x04t\x03\x0f\x00\x00\x04v" + // 0x0474030F: 0x00000476
+ "\x04u\x03\x0f\x00\x00\x04w" + // 0x0475030F: 0x00000477
+ "\x04\x16\x03\x06\x00\x00\x04\xc1" + // 0x04160306: 0x000004C1
+ "\x046\x03\x06\x00\x00\x04\xc2" + // 0x04360306: 0x000004C2
+ "\x04\x10\x03\x06\x00\x00\x04\xd0" + // 0x04100306: 0x000004D0
+ "\x040\x03\x06\x00\x00\x04\xd1" + // 0x04300306: 0x000004D1
+ "\x04\x10\x03\b\x00\x00\x04\xd2" + // 0x04100308: 0x000004D2
+ "\x040\x03\b\x00\x00\x04\xd3" + // 0x04300308: 0x000004D3
+ "\x04\x15\x03\x06\x00\x00\x04\xd6" + // 0x04150306: 0x000004D6
+ "\x045\x03\x06\x00\x00\x04\xd7" + // 0x04350306: 0x000004D7
+ "\x04\xd8\x03\b\x00\x00\x04\xda" + // 0x04D80308: 0x000004DA
+ "\x04\xd9\x03\b\x00\x00\x04\xdb" + // 0x04D90308: 0x000004DB
+ "\x04\x16\x03\b\x00\x00\x04\xdc" + // 0x04160308: 0x000004DC
+ "\x046\x03\b\x00\x00\x04\xdd" + // 0x04360308: 0x000004DD
+ "\x04\x17\x03\b\x00\x00\x04\xde" + // 0x04170308: 0x000004DE
+ "\x047\x03\b\x00\x00\x04\xdf" + // 0x04370308: 0x000004DF
+ "\x04\x18\x03\x04\x00\x00\x04\xe2" + // 0x04180304: 0x000004E2
+ "\x048\x03\x04\x00\x00\x04\xe3" + // 0x04380304: 0x000004E3
+ "\x04\x18\x03\b\x00\x00\x04\xe4" + // 0x04180308: 0x000004E4
+ "\x048\x03\b\x00\x00\x04\xe5" + // 0x04380308: 0x000004E5
+ "\x04\x1e\x03\b\x00\x00\x04\xe6" + // 0x041E0308: 0x000004E6
+ "\x04>\x03\b\x00\x00\x04\xe7" + // 0x043E0308: 0x000004E7
+ "\x04\xe8\x03\b\x00\x00\x04\xea" + // 0x04E80308: 0x000004EA
+ "\x04\xe9\x03\b\x00\x00\x04\xeb" + // 0x04E90308: 0x000004EB
+ "\x04-\x03\b\x00\x00\x04\xec" + // 0x042D0308: 0x000004EC
+ "\x04M\x03\b\x00\x00\x04\xed" + // 0x044D0308: 0x000004ED
+ "\x04#\x03\x04\x00\x00\x04\xee" + // 0x04230304: 0x000004EE
+ "\x04C\x03\x04\x00\x00\x04\xef" + // 0x04430304: 0x000004EF
+ "\x04#\x03\b\x00\x00\x04\xf0" + // 0x04230308: 0x000004F0
+ "\x04C\x03\b\x00\x00\x04\xf1" + // 0x04430308: 0x000004F1
+ "\x04#\x03\v\x00\x00\x04\xf2" + // 0x0423030B: 0x000004F2
+ "\x04C\x03\v\x00\x00\x04\xf3" + // 0x0443030B: 0x000004F3
+ "\x04'\x03\b\x00\x00\x04\xf4" + // 0x04270308: 0x000004F4
+ "\x04G\x03\b\x00\x00\x04\xf5" + // 0x04470308: 0x000004F5
+ "\x04+\x03\b\x00\x00\x04\xf8" + // 0x042B0308: 0x000004F8
+ "\x04K\x03\b\x00\x00\x04\xf9" + // 0x044B0308: 0x000004F9
+ "\x06'\x06S\x00\x00\x06\"" + // 0x06270653: 0x00000622
+ "\x06'\x06T\x00\x00\x06#" + // 0x06270654: 0x00000623
+ "\x06H\x06T\x00\x00\x06$" + // 0x06480654: 0x00000624
+ "\x06'\x06U\x00\x00\x06%" + // 0x06270655: 0x00000625
+ "\x06J\x06T\x00\x00\x06&" + // 0x064A0654: 0x00000626
+ "\x06\xd5\x06T\x00\x00\x06\xc0" + // 0x06D50654: 0x000006C0
+ "\x06\xc1\x06T\x00\x00\x06\xc2" + // 0x06C10654: 0x000006C2
+ "\x06\xd2\x06T\x00\x00\x06\xd3" + // 0x06D20654: 0x000006D3
+ "\t(\t<\x00\x00\t)" + // 0x0928093C: 0x00000929
+ "\t0\t<\x00\x00\t1" + // 0x0930093C: 0x00000931
+ "\t3\t<\x00\x00\t4" + // 0x0933093C: 0x00000934
+ "\t\xc7\t\xbe\x00\x00\t\xcb" + // 0x09C709BE: 0x000009CB
+ "\t\xc7\t\xd7\x00\x00\t\xcc" + // 0x09C709D7: 0x000009CC
+ "\vG\vV\x00\x00\vH" + // 0x0B470B56: 0x00000B48
+ "\vG\v>\x00\x00\vK" + // 0x0B470B3E: 0x00000B4B
+ "\vG\vW\x00\x00\vL" + // 0x0B470B57: 0x00000B4C
+ "\v\x92\v\xd7\x00\x00\v\x94" + // 0x0B920BD7: 0x00000B94
+ "\v\xc6\v\xbe\x00\x00\v\xca" + // 0x0BC60BBE: 0x00000BCA
+ "\v\xc7\v\xbe\x00\x00\v\xcb" + // 0x0BC70BBE: 0x00000BCB
+ "\v\xc6\v\xd7\x00\x00\v\xcc" + // 0x0BC60BD7: 0x00000BCC
+ "\fF\fV\x00\x00\fH" + // 0x0C460C56: 0x00000C48
+ "\f\xbf\f\xd5\x00\x00\f\xc0" + // 0x0CBF0CD5: 0x00000CC0
+ "\f\xc6\f\xd5\x00\x00\f\xc7" + // 0x0CC60CD5: 0x00000CC7
+ "\f\xc6\f\xd6\x00\x00\f\xc8" + // 0x0CC60CD6: 0x00000CC8
+ "\f\xc6\f\xc2\x00\x00\f\xca" + // 0x0CC60CC2: 0x00000CCA
+ "\f\xca\f\xd5\x00\x00\f\xcb" + // 0x0CCA0CD5: 0x00000CCB
+ "\rF\r>\x00\x00\rJ" + // 0x0D460D3E: 0x00000D4A
+ "\rG\r>\x00\x00\rK" + // 0x0D470D3E: 0x00000D4B
+ "\rF\rW\x00\x00\rL" + // 0x0D460D57: 0x00000D4C
+ "\r\xd9\r\xca\x00\x00\r\xda" + // 0x0DD90DCA: 0x00000DDA
+ "\r\xd9\r\xcf\x00\x00\r\xdc" + // 0x0DD90DCF: 0x00000DDC
+ "\r\xdc\r\xca\x00\x00\r\xdd" + // 0x0DDC0DCA: 0x00000DDD
+ "\r\xd9\r\xdf\x00\x00\r\xde" + // 0x0DD90DDF: 0x00000DDE
+ "\x10%\x10.\x00\x00\x10&" + // 0x1025102E: 0x00001026
+ "\x1b\x05\x1b5\x00\x00\x1b\x06" + // 0x1B051B35: 0x00001B06
+ "\x1b\a\x1b5\x00\x00\x1b\b" + // 0x1B071B35: 0x00001B08
+ "\x1b\t\x1b5\x00\x00\x1b\n" + // 0x1B091B35: 0x00001B0A
+ "\x1b\v\x1b5\x00\x00\x1b\f" + // 0x1B0B1B35: 0x00001B0C
+ "\x1b\r\x1b5\x00\x00\x1b\x0e" + // 0x1B0D1B35: 0x00001B0E
+ "\x1b\x11\x1b5\x00\x00\x1b\x12" + // 0x1B111B35: 0x00001B12
+ "\x1b:\x1b5\x00\x00\x1b;" + // 0x1B3A1B35: 0x00001B3B
+ "\x1b<\x1b5\x00\x00\x1b=" + // 0x1B3C1B35: 0x00001B3D
+ "\x1b>\x1b5\x00\x00\x1b@" + // 0x1B3E1B35: 0x00001B40
+ "\x1b?\x1b5\x00\x00\x1bA" + // 0x1B3F1B35: 0x00001B41
+ "\x1bB\x1b5\x00\x00\x1bC" + // 0x1B421B35: 0x00001B43
+ "\x00A\x03%\x00\x00\x1e\x00" + // 0x00410325: 0x00001E00
+ "\x00a\x03%\x00\x00\x1e\x01" + // 0x00610325: 0x00001E01
+ "\x00B\x03\a\x00\x00\x1e\x02" + // 0x00420307: 0x00001E02
+ "\x00b\x03\a\x00\x00\x1e\x03" + // 0x00620307: 0x00001E03
+ "\x00B\x03#\x00\x00\x1e\x04" + // 0x00420323: 0x00001E04
+ "\x00b\x03#\x00\x00\x1e\x05" + // 0x00620323: 0x00001E05
+ "\x00B\x031\x00\x00\x1e\x06" + // 0x00420331: 0x00001E06
+ "\x00b\x031\x00\x00\x1e\a" + // 0x00620331: 0x00001E07
+ "\x00\xc7\x03\x01\x00\x00\x1e\b" + // 0x00C70301: 0x00001E08
+ "\x00\xe7\x03\x01\x00\x00\x1e\t" + // 0x00E70301: 0x00001E09
+ "\x00D\x03\a\x00\x00\x1e\n" + // 0x00440307: 0x00001E0A
+ "\x00d\x03\a\x00\x00\x1e\v" + // 0x00640307: 0x00001E0B
+ "\x00D\x03#\x00\x00\x1e\f" + // 0x00440323: 0x00001E0C
+ "\x00d\x03#\x00\x00\x1e\r" + // 0x00640323: 0x00001E0D
+ "\x00D\x031\x00\x00\x1e\x0e" + // 0x00440331: 0x00001E0E
+ "\x00d\x031\x00\x00\x1e\x0f" + // 0x00640331: 0x00001E0F
+ "\x00D\x03'\x00\x00\x1e\x10" + // 0x00440327: 0x00001E10
+ "\x00d\x03'\x00\x00\x1e\x11" + // 0x00640327: 0x00001E11
+ "\x00D\x03-\x00\x00\x1e\x12" + // 0x0044032D: 0x00001E12
+ "\x00d\x03-\x00\x00\x1e\x13" + // 0x0064032D: 0x00001E13
+ "\x01\x12\x03\x00\x00\x00\x1e\x14" + // 0x01120300: 0x00001E14
+ "\x01\x13\x03\x00\x00\x00\x1e\x15" + // 0x01130300: 0x00001E15
+ "\x01\x12\x03\x01\x00\x00\x1e\x16" + // 0x01120301: 0x00001E16
+ "\x01\x13\x03\x01\x00\x00\x1e\x17" + // 0x01130301: 0x00001E17
+ "\x00E\x03-\x00\x00\x1e\x18" + // 0x0045032D: 0x00001E18
+ "\x00e\x03-\x00\x00\x1e\x19" + // 0x0065032D: 0x00001E19
+ "\x00E\x030\x00\x00\x1e\x1a" + // 0x00450330: 0x00001E1A
+ "\x00e\x030\x00\x00\x1e\x1b" + // 0x00650330: 0x00001E1B
+ "\x02(\x03\x06\x00\x00\x1e\x1c" + // 0x02280306: 0x00001E1C
+ "\x02)\x03\x06\x00\x00\x1e\x1d" + // 0x02290306: 0x00001E1D
+ "\x00F\x03\a\x00\x00\x1e\x1e" + // 0x00460307: 0x00001E1E
+ "\x00f\x03\a\x00\x00\x1e\x1f" + // 0x00660307: 0x00001E1F
+ "\x00G\x03\x04\x00\x00\x1e " + // 0x00470304: 0x00001E20
+ "\x00g\x03\x04\x00\x00\x1e!" + // 0x00670304: 0x00001E21
+ "\x00H\x03\a\x00\x00\x1e\"" + // 0x00480307: 0x00001E22
+ "\x00h\x03\a\x00\x00\x1e#" + // 0x00680307: 0x00001E23
+ "\x00H\x03#\x00\x00\x1e$" + // 0x00480323: 0x00001E24
+ "\x00h\x03#\x00\x00\x1e%" + // 0x00680323: 0x00001E25
+ "\x00H\x03\b\x00\x00\x1e&" + // 0x00480308: 0x00001E26
+ "\x00h\x03\b\x00\x00\x1e'" + // 0x00680308: 0x00001E27
+ "\x00H\x03'\x00\x00\x1e(" + // 0x00480327: 0x00001E28
+ "\x00h\x03'\x00\x00\x1e)" + // 0x00680327: 0x00001E29
+ "\x00H\x03.\x00\x00\x1e*" + // 0x0048032E: 0x00001E2A
+ "\x00h\x03.\x00\x00\x1e+" + // 0x0068032E: 0x00001E2B
+ "\x00I\x030\x00\x00\x1e," + // 0x00490330: 0x00001E2C
+ "\x00i\x030\x00\x00\x1e-" + // 0x00690330: 0x00001E2D
+ "\x00\xcf\x03\x01\x00\x00\x1e." + // 0x00CF0301: 0x00001E2E
+ "\x00\xef\x03\x01\x00\x00\x1e/" + // 0x00EF0301: 0x00001E2F
+ "\x00K\x03\x01\x00\x00\x1e0" + // 0x004B0301: 0x00001E30
+ "\x00k\x03\x01\x00\x00\x1e1" + // 0x006B0301: 0x00001E31
+ "\x00K\x03#\x00\x00\x1e2" + // 0x004B0323: 0x00001E32
+ "\x00k\x03#\x00\x00\x1e3" + // 0x006B0323: 0x00001E33
+ "\x00K\x031\x00\x00\x1e4" + // 0x004B0331: 0x00001E34
+ "\x00k\x031\x00\x00\x1e5" + // 0x006B0331: 0x00001E35
+ "\x00L\x03#\x00\x00\x1e6" + // 0x004C0323: 0x00001E36
+ "\x00l\x03#\x00\x00\x1e7" + // 0x006C0323: 0x00001E37
+ "\x1e6\x03\x04\x00\x00\x1e8" + // 0x1E360304: 0x00001E38
+ "\x1e7\x03\x04\x00\x00\x1e9" + // 0x1E370304: 0x00001E39
+ "\x00L\x031\x00\x00\x1e:" + // 0x004C0331: 0x00001E3A
+ "\x00l\x031\x00\x00\x1e;" + // 0x006C0331: 0x00001E3B
+ "\x00L\x03-\x00\x00\x1e<" + // 0x004C032D: 0x00001E3C
+ "\x00l\x03-\x00\x00\x1e=" + // 0x006C032D: 0x00001E3D
+ "\x00M\x03\x01\x00\x00\x1e>" + // 0x004D0301: 0x00001E3E
+ "\x00m\x03\x01\x00\x00\x1e?" + // 0x006D0301: 0x00001E3F
+ "\x00M\x03\a\x00\x00\x1e@" + // 0x004D0307: 0x00001E40
+ "\x00m\x03\a\x00\x00\x1eA" + // 0x006D0307: 0x00001E41
+ "\x00M\x03#\x00\x00\x1eB" + // 0x004D0323: 0x00001E42
+ "\x00m\x03#\x00\x00\x1eC" + // 0x006D0323: 0x00001E43
+ "\x00N\x03\a\x00\x00\x1eD" + // 0x004E0307: 0x00001E44
+ "\x00n\x03\a\x00\x00\x1eE" + // 0x006E0307: 0x00001E45
+ "\x00N\x03#\x00\x00\x1eF" + // 0x004E0323: 0x00001E46
+ "\x00n\x03#\x00\x00\x1eG" + // 0x006E0323: 0x00001E47
+ "\x00N\x031\x00\x00\x1eH" + // 0x004E0331: 0x00001E48
+ "\x00n\x031\x00\x00\x1eI" + // 0x006E0331: 0x00001E49
+ "\x00N\x03-\x00\x00\x1eJ" + // 0x004E032D: 0x00001E4A
+ "\x00n\x03-\x00\x00\x1eK" + // 0x006E032D: 0x00001E4B
+ "\x00\xd5\x03\x01\x00\x00\x1eL" + // 0x00D50301: 0x00001E4C
+ "\x00\xf5\x03\x01\x00\x00\x1eM" + // 0x00F50301: 0x00001E4D
+ "\x00\xd5\x03\b\x00\x00\x1eN" + // 0x00D50308: 0x00001E4E
+ "\x00\xf5\x03\b\x00\x00\x1eO" + // 0x00F50308: 0x00001E4F
+ "\x01L\x03\x00\x00\x00\x1eP" + // 0x014C0300: 0x00001E50
+ "\x01M\x03\x00\x00\x00\x1eQ" + // 0x014D0300: 0x00001E51
+ "\x01L\x03\x01\x00\x00\x1eR" + // 0x014C0301: 0x00001E52
+ "\x01M\x03\x01\x00\x00\x1eS" + // 0x014D0301: 0x00001E53
+ "\x00P\x03\x01\x00\x00\x1eT" + // 0x00500301: 0x00001E54
+ "\x00p\x03\x01\x00\x00\x1eU" + // 0x00700301: 0x00001E55
+ "\x00P\x03\a\x00\x00\x1eV" + // 0x00500307: 0x00001E56
+ "\x00p\x03\a\x00\x00\x1eW" + // 0x00700307: 0x00001E57
+ "\x00R\x03\a\x00\x00\x1eX" + // 0x00520307: 0x00001E58
+ "\x00r\x03\a\x00\x00\x1eY" + // 0x00720307: 0x00001E59
+ "\x00R\x03#\x00\x00\x1eZ" + // 0x00520323: 0x00001E5A
+ "\x00r\x03#\x00\x00\x1e[" + // 0x00720323: 0x00001E5B
+ "\x1eZ\x03\x04\x00\x00\x1e\\" + // 0x1E5A0304: 0x00001E5C
+ "\x1e[\x03\x04\x00\x00\x1e]" + // 0x1E5B0304: 0x00001E5D
+ "\x00R\x031\x00\x00\x1e^" + // 0x00520331: 0x00001E5E
+ "\x00r\x031\x00\x00\x1e_" + // 0x00720331: 0x00001E5F
+ "\x00S\x03\a\x00\x00\x1e`" + // 0x00530307: 0x00001E60
+ "\x00s\x03\a\x00\x00\x1ea" + // 0x00730307: 0x00001E61
+ "\x00S\x03#\x00\x00\x1eb" + // 0x00530323: 0x00001E62
+ "\x00s\x03#\x00\x00\x1ec" + // 0x00730323: 0x00001E63
+ "\x01Z\x03\a\x00\x00\x1ed" + // 0x015A0307: 0x00001E64
+ "\x01[\x03\a\x00\x00\x1ee" + // 0x015B0307: 0x00001E65
+ "\x01`\x03\a\x00\x00\x1ef" + // 0x01600307: 0x00001E66
+ "\x01a\x03\a\x00\x00\x1eg" + // 0x01610307: 0x00001E67
+ "\x1eb\x03\a\x00\x00\x1eh" + // 0x1E620307: 0x00001E68
+ "\x1ec\x03\a\x00\x00\x1ei" + // 0x1E630307: 0x00001E69
+ "\x00T\x03\a\x00\x00\x1ej" + // 0x00540307: 0x00001E6A
+ "\x00t\x03\a\x00\x00\x1ek" + // 0x00740307: 0x00001E6B
+ "\x00T\x03#\x00\x00\x1el" + // 0x00540323: 0x00001E6C
+ "\x00t\x03#\x00\x00\x1em" + // 0x00740323: 0x00001E6D
+ "\x00T\x031\x00\x00\x1en" + // 0x00540331: 0x00001E6E
+ "\x00t\x031\x00\x00\x1eo" + // 0x00740331: 0x00001E6F
+ "\x00T\x03-\x00\x00\x1ep" + // 0x0054032D: 0x00001E70
+ "\x00t\x03-\x00\x00\x1eq" + // 0x0074032D: 0x00001E71
+ "\x00U\x03$\x00\x00\x1er" + // 0x00550324: 0x00001E72
+ "\x00u\x03$\x00\x00\x1es" + // 0x00750324: 0x00001E73
+ "\x00U\x030\x00\x00\x1et" + // 0x00550330: 0x00001E74
+ "\x00u\x030\x00\x00\x1eu" + // 0x00750330: 0x00001E75
+ "\x00U\x03-\x00\x00\x1ev" + // 0x0055032D: 0x00001E76
+ "\x00u\x03-\x00\x00\x1ew" + // 0x0075032D: 0x00001E77
+ "\x01h\x03\x01\x00\x00\x1ex" + // 0x01680301: 0x00001E78
+ "\x01i\x03\x01\x00\x00\x1ey" + // 0x01690301: 0x00001E79
+ "\x01j\x03\b\x00\x00\x1ez" + // 0x016A0308: 0x00001E7A
+ "\x01k\x03\b\x00\x00\x1e{" + // 0x016B0308: 0x00001E7B
+ "\x00V\x03\x03\x00\x00\x1e|" + // 0x00560303: 0x00001E7C
+ "\x00v\x03\x03\x00\x00\x1e}" + // 0x00760303: 0x00001E7D
+ "\x00V\x03#\x00\x00\x1e~" + // 0x00560323: 0x00001E7E
+ "\x00v\x03#\x00\x00\x1e\u007f" + // 0x00760323: 0x00001E7F
+ "\x00W\x03\x00\x00\x00\x1e\x80" + // 0x00570300: 0x00001E80
+ "\x00w\x03\x00\x00\x00\x1e\x81" + // 0x00770300: 0x00001E81
+ "\x00W\x03\x01\x00\x00\x1e\x82" + // 0x00570301: 0x00001E82
+ "\x00w\x03\x01\x00\x00\x1e\x83" + // 0x00770301: 0x00001E83
+ "\x00W\x03\b\x00\x00\x1e\x84" + // 0x00570308: 0x00001E84
+ "\x00w\x03\b\x00\x00\x1e\x85" + // 0x00770308: 0x00001E85
+ "\x00W\x03\a\x00\x00\x1e\x86" + // 0x00570307: 0x00001E86
+ "\x00w\x03\a\x00\x00\x1e\x87" + // 0x00770307: 0x00001E87
+ "\x00W\x03#\x00\x00\x1e\x88" + // 0x00570323: 0x00001E88
+ "\x00w\x03#\x00\x00\x1e\x89" + // 0x00770323: 0x00001E89
+ "\x00X\x03\a\x00\x00\x1e\x8a" + // 0x00580307: 0x00001E8A
+ "\x00x\x03\a\x00\x00\x1e\x8b" + // 0x00780307: 0x00001E8B
+ "\x00X\x03\b\x00\x00\x1e\x8c" + // 0x00580308: 0x00001E8C
+ "\x00x\x03\b\x00\x00\x1e\x8d" + // 0x00780308: 0x00001E8D
+ "\x00Y\x03\a\x00\x00\x1e\x8e" + // 0x00590307: 0x00001E8E
+ "\x00y\x03\a\x00\x00\x1e\x8f" + // 0x00790307: 0x00001E8F
+ "\x00Z\x03\x02\x00\x00\x1e\x90" + // 0x005A0302: 0x00001E90
+ "\x00z\x03\x02\x00\x00\x1e\x91" + // 0x007A0302: 0x00001E91
+ "\x00Z\x03#\x00\x00\x1e\x92" + // 0x005A0323: 0x00001E92
+ "\x00z\x03#\x00\x00\x1e\x93" + // 0x007A0323: 0x00001E93
+ "\x00Z\x031\x00\x00\x1e\x94" + // 0x005A0331: 0x00001E94
+ "\x00z\x031\x00\x00\x1e\x95" + // 0x007A0331: 0x00001E95
+ "\x00h\x031\x00\x00\x1e\x96" + // 0x00680331: 0x00001E96
+ "\x00t\x03\b\x00\x00\x1e\x97" + // 0x00740308: 0x00001E97
+ "\x00w\x03\n\x00\x00\x1e\x98" + // 0x0077030A: 0x00001E98
+ "\x00y\x03\n\x00\x00\x1e\x99" + // 0x0079030A: 0x00001E99
+ "\x01\u007f\x03\a\x00\x00\x1e\x9b" + // 0x017F0307: 0x00001E9B
+ "\x00A\x03#\x00\x00\x1e\xa0" + // 0x00410323: 0x00001EA0
+ "\x00a\x03#\x00\x00\x1e\xa1" + // 0x00610323: 0x00001EA1
+ "\x00A\x03\t\x00\x00\x1e\xa2" + // 0x00410309: 0x00001EA2
+ "\x00a\x03\t\x00\x00\x1e\xa3" + // 0x00610309: 0x00001EA3
+ "\x00\xc2\x03\x01\x00\x00\x1e\xa4" + // 0x00C20301: 0x00001EA4
+ "\x00\xe2\x03\x01\x00\x00\x1e\xa5" + // 0x00E20301: 0x00001EA5
+ "\x00\xc2\x03\x00\x00\x00\x1e\xa6" + // 0x00C20300: 0x00001EA6
+ "\x00\xe2\x03\x00\x00\x00\x1e\xa7" + // 0x00E20300: 0x00001EA7
+ "\x00\xc2\x03\t\x00\x00\x1e\xa8" + // 0x00C20309: 0x00001EA8
+ "\x00\xe2\x03\t\x00\x00\x1e\xa9" + // 0x00E20309: 0x00001EA9
+ "\x00\xc2\x03\x03\x00\x00\x1e\xaa" + // 0x00C20303: 0x00001EAA
+ "\x00\xe2\x03\x03\x00\x00\x1e\xab" + // 0x00E20303: 0x00001EAB
+ "\x1e\xa0\x03\x02\x00\x00\x1e\xac" + // 0x1EA00302: 0x00001EAC
+ "\x1e\xa1\x03\x02\x00\x00\x1e\xad" + // 0x1EA10302: 0x00001EAD
+ "\x01\x02\x03\x01\x00\x00\x1e\xae" + // 0x01020301: 0x00001EAE
+ "\x01\x03\x03\x01\x00\x00\x1e\xaf" + // 0x01030301: 0x00001EAF
+ "\x01\x02\x03\x00\x00\x00\x1e\xb0" + // 0x01020300: 0x00001EB0
+ "\x01\x03\x03\x00\x00\x00\x1e\xb1" + // 0x01030300: 0x00001EB1
+ "\x01\x02\x03\t\x00\x00\x1e\xb2" + // 0x01020309: 0x00001EB2
+ "\x01\x03\x03\t\x00\x00\x1e\xb3" + // 0x01030309: 0x00001EB3
+ "\x01\x02\x03\x03\x00\x00\x1e\xb4" + // 0x01020303: 0x00001EB4
+ "\x01\x03\x03\x03\x00\x00\x1e\xb5" + // 0x01030303: 0x00001EB5
+ "\x1e\xa0\x03\x06\x00\x00\x1e\xb6" + // 0x1EA00306: 0x00001EB6
+ "\x1e\xa1\x03\x06\x00\x00\x1e\xb7" + // 0x1EA10306: 0x00001EB7
+ "\x00E\x03#\x00\x00\x1e\xb8" + // 0x00450323: 0x00001EB8
+ "\x00e\x03#\x00\x00\x1e\xb9" + // 0x00650323: 0x00001EB9
+ "\x00E\x03\t\x00\x00\x1e\xba" + // 0x00450309: 0x00001EBA
+ "\x00e\x03\t\x00\x00\x1e\xbb" + // 0x00650309: 0x00001EBB
+ "\x00E\x03\x03\x00\x00\x1e\xbc" + // 0x00450303: 0x00001EBC
+ "\x00e\x03\x03\x00\x00\x1e\xbd" + // 0x00650303: 0x00001EBD
+ "\x00\xca\x03\x01\x00\x00\x1e\xbe" + // 0x00CA0301: 0x00001EBE
+ "\x00\xea\x03\x01\x00\x00\x1e\xbf" + // 0x00EA0301: 0x00001EBF
+ "\x00\xca\x03\x00\x00\x00\x1e\xc0" + // 0x00CA0300: 0x00001EC0
+ "\x00\xea\x03\x00\x00\x00\x1e\xc1" + // 0x00EA0300: 0x00001EC1
+ "\x00\xca\x03\t\x00\x00\x1e\xc2" + // 0x00CA0309: 0x00001EC2
+ "\x00\xea\x03\t\x00\x00\x1e\xc3" + // 0x00EA0309: 0x00001EC3
+ "\x00\xca\x03\x03\x00\x00\x1e\xc4" + // 0x00CA0303: 0x00001EC4
+ "\x00\xea\x03\x03\x00\x00\x1e\xc5" + // 0x00EA0303: 0x00001EC5
+ "\x1e\xb8\x03\x02\x00\x00\x1e\xc6" + // 0x1EB80302: 0x00001EC6
+ "\x1e\xb9\x03\x02\x00\x00\x1e\xc7" + // 0x1EB90302: 0x00001EC7
+ "\x00I\x03\t\x00\x00\x1e\xc8" + // 0x00490309: 0x00001EC8
+ "\x00i\x03\t\x00\x00\x1e\xc9" + // 0x00690309: 0x00001EC9
+ "\x00I\x03#\x00\x00\x1e\xca" + // 0x00490323: 0x00001ECA
+ "\x00i\x03#\x00\x00\x1e\xcb" + // 0x00690323: 0x00001ECB
+ "\x00O\x03#\x00\x00\x1e\xcc" + // 0x004F0323: 0x00001ECC
+ "\x00o\x03#\x00\x00\x1e\xcd" + // 0x006F0323: 0x00001ECD
+ "\x00O\x03\t\x00\x00\x1e\xce" + // 0x004F0309: 0x00001ECE
+ "\x00o\x03\t\x00\x00\x1e\xcf" + // 0x006F0309: 0x00001ECF
+ "\x00\xd4\x03\x01\x00\x00\x1e\xd0" + // 0x00D40301: 0x00001ED0
+ "\x00\xf4\x03\x01\x00\x00\x1e\xd1" + // 0x00F40301: 0x00001ED1
+ "\x00\xd4\x03\x00\x00\x00\x1e\xd2" + // 0x00D40300: 0x00001ED2
+ "\x00\xf4\x03\x00\x00\x00\x1e\xd3" + // 0x00F40300: 0x00001ED3
+ "\x00\xd4\x03\t\x00\x00\x1e\xd4" + // 0x00D40309: 0x00001ED4
+ "\x00\xf4\x03\t\x00\x00\x1e\xd5" + // 0x00F40309: 0x00001ED5
+ "\x00\xd4\x03\x03\x00\x00\x1e\xd6" + // 0x00D40303: 0x00001ED6
+ "\x00\xf4\x03\x03\x00\x00\x1e\xd7" + // 0x00F40303: 0x00001ED7
+ "\x1e\xcc\x03\x02\x00\x00\x1e\xd8" + // 0x1ECC0302: 0x00001ED8
+ "\x1e\xcd\x03\x02\x00\x00\x1e\xd9" + // 0x1ECD0302: 0x00001ED9
+ "\x01\xa0\x03\x01\x00\x00\x1e\xda" + // 0x01A00301: 0x00001EDA
+ "\x01\xa1\x03\x01\x00\x00\x1e\xdb" + // 0x01A10301: 0x00001EDB
+ "\x01\xa0\x03\x00\x00\x00\x1e\xdc" + // 0x01A00300: 0x00001EDC
+ "\x01\xa1\x03\x00\x00\x00\x1e\xdd" + // 0x01A10300: 0x00001EDD
+ "\x01\xa0\x03\t\x00\x00\x1e\xde" + // 0x01A00309: 0x00001EDE
+ "\x01\xa1\x03\t\x00\x00\x1e\xdf" + // 0x01A10309: 0x00001EDF
+ "\x01\xa0\x03\x03\x00\x00\x1e\xe0" + // 0x01A00303: 0x00001EE0
+ "\x01\xa1\x03\x03\x00\x00\x1e\xe1" + // 0x01A10303: 0x00001EE1
+ "\x01\xa0\x03#\x00\x00\x1e\xe2" + // 0x01A00323: 0x00001EE2
+ "\x01\xa1\x03#\x00\x00\x1e\xe3" + // 0x01A10323: 0x00001EE3
+ "\x00U\x03#\x00\x00\x1e\xe4" + // 0x00550323: 0x00001EE4
+ "\x00u\x03#\x00\x00\x1e\xe5" + // 0x00750323: 0x00001EE5
+ "\x00U\x03\t\x00\x00\x1e\xe6" + // 0x00550309: 0x00001EE6
+ "\x00u\x03\t\x00\x00\x1e\xe7" + // 0x00750309: 0x00001EE7
+ "\x01\xaf\x03\x01\x00\x00\x1e\xe8" + // 0x01AF0301: 0x00001EE8
+ "\x01\xb0\x03\x01\x00\x00\x1e\xe9" + // 0x01B00301: 0x00001EE9
+ "\x01\xaf\x03\x00\x00\x00\x1e\xea" + // 0x01AF0300: 0x00001EEA
+ "\x01\xb0\x03\x00\x00\x00\x1e\xeb" + // 0x01B00300: 0x00001EEB
+ "\x01\xaf\x03\t\x00\x00\x1e\xec" + // 0x01AF0309: 0x00001EEC
+ "\x01\xb0\x03\t\x00\x00\x1e\xed" + // 0x01B00309: 0x00001EED
+ "\x01\xaf\x03\x03\x00\x00\x1e\xee" + // 0x01AF0303: 0x00001EEE
+ "\x01\xb0\x03\x03\x00\x00\x1e\xef" + // 0x01B00303: 0x00001EEF
+ "\x01\xaf\x03#\x00\x00\x1e\xf0" + // 0x01AF0323: 0x00001EF0
+ "\x01\xb0\x03#\x00\x00\x1e\xf1" + // 0x01B00323: 0x00001EF1
+ "\x00Y\x03\x00\x00\x00\x1e\xf2" + // 0x00590300: 0x00001EF2
+ "\x00y\x03\x00\x00\x00\x1e\xf3" + // 0x00790300: 0x00001EF3
+ "\x00Y\x03#\x00\x00\x1e\xf4" + // 0x00590323: 0x00001EF4
+ "\x00y\x03#\x00\x00\x1e\xf5" + // 0x00790323: 0x00001EF5
+ "\x00Y\x03\t\x00\x00\x1e\xf6" + // 0x00590309: 0x00001EF6
+ "\x00y\x03\t\x00\x00\x1e\xf7" + // 0x00790309: 0x00001EF7
+ "\x00Y\x03\x03\x00\x00\x1e\xf8" + // 0x00590303: 0x00001EF8
+ "\x00y\x03\x03\x00\x00\x1e\xf9" + // 0x00790303: 0x00001EF9
+ "\x03\xb1\x03\x13\x00\x00\x1f\x00" + // 0x03B10313: 0x00001F00
+ "\x03\xb1\x03\x14\x00\x00\x1f\x01" + // 0x03B10314: 0x00001F01
+ "\x1f\x00\x03\x00\x00\x00\x1f\x02" + // 0x1F000300: 0x00001F02
+ "\x1f\x01\x03\x00\x00\x00\x1f\x03" + // 0x1F010300: 0x00001F03
+ "\x1f\x00\x03\x01\x00\x00\x1f\x04" + // 0x1F000301: 0x00001F04
+ "\x1f\x01\x03\x01\x00\x00\x1f\x05" + // 0x1F010301: 0x00001F05
+ "\x1f\x00\x03B\x00\x00\x1f\x06" + // 0x1F000342: 0x00001F06
+ "\x1f\x01\x03B\x00\x00\x1f\a" + // 0x1F010342: 0x00001F07
+ "\x03\x91\x03\x13\x00\x00\x1f\b" + // 0x03910313: 0x00001F08
+ "\x03\x91\x03\x14\x00\x00\x1f\t" + // 0x03910314: 0x00001F09
+ "\x1f\b\x03\x00\x00\x00\x1f\n" + // 0x1F080300: 0x00001F0A
+ "\x1f\t\x03\x00\x00\x00\x1f\v" + // 0x1F090300: 0x00001F0B
+ "\x1f\b\x03\x01\x00\x00\x1f\f" + // 0x1F080301: 0x00001F0C
+ "\x1f\t\x03\x01\x00\x00\x1f\r" + // 0x1F090301: 0x00001F0D
+ "\x1f\b\x03B\x00\x00\x1f\x0e" + // 0x1F080342: 0x00001F0E
+ "\x1f\t\x03B\x00\x00\x1f\x0f" + // 0x1F090342: 0x00001F0F
+ "\x03\xb5\x03\x13\x00\x00\x1f\x10" + // 0x03B50313: 0x00001F10
+ "\x03\xb5\x03\x14\x00\x00\x1f\x11" + // 0x03B50314: 0x00001F11
+ "\x1f\x10\x03\x00\x00\x00\x1f\x12" + // 0x1F100300: 0x00001F12
+ "\x1f\x11\x03\x00\x00\x00\x1f\x13" + // 0x1F110300: 0x00001F13
+ "\x1f\x10\x03\x01\x00\x00\x1f\x14" + // 0x1F100301: 0x00001F14
+ "\x1f\x11\x03\x01\x00\x00\x1f\x15" + // 0x1F110301: 0x00001F15
+ "\x03\x95\x03\x13\x00\x00\x1f\x18" + // 0x03950313: 0x00001F18
+ "\x03\x95\x03\x14\x00\x00\x1f\x19" + // 0x03950314: 0x00001F19
+ "\x1f\x18\x03\x00\x00\x00\x1f\x1a" + // 0x1F180300: 0x00001F1A
+ "\x1f\x19\x03\x00\x00\x00\x1f\x1b" + // 0x1F190300: 0x00001F1B
+ "\x1f\x18\x03\x01\x00\x00\x1f\x1c" + // 0x1F180301: 0x00001F1C
+ "\x1f\x19\x03\x01\x00\x00\x1f\x1d" + // 0x1F190301: 0x00001F1D
+ "\x03\xb7\x03\x13\x00\x00\x1f " + // 0x03B70313: 0x00001F20
+ "\x03\xb7\x03\x14\x00\x00\x1f!" + // 0x03B70314: 0x00001F21
+ "\x1f \x03\x00\x00\x00\x1f\"" + // 0x1F200300: 0x00001F22
+ "\x1f!\x03\x00\x00\x00\x1f#" + // 0x1F210300: 0x00001F23
+ "\x1f \x03\x01\x00\x00\x1f$" + // 0x1F200301: 0x00001F24
+ "\x1f!\x03\x01\x00\x00\x1f%" + // 0x1F210301: 0x00001F25
+ "\x1f \x03B\x00\x00\x1f&" + // 0x1F200342: 0x00001F26
+ "\x1f!\x03B\x00\x00\x1f'" + // 0x1F210342: 0x00001F27
+ "\x03\x97\x03\x13\x00\x00\x1f(" + // 0x03970313: 0x00001F28
+ "\x03\x97\x03\x14\x00\x00\x1f)" + // 0x03970314: 0x00001F29
+ "\x1f(\x03\x00\x00\x00\x1f*" + // 0x1F280300: 0x00001F2A
+ "\x1f)\x03\x00\x00\x00\x1f+" + // 0x1F290300: 0x00001F2B
+ "\x1f(\x03\x01\x00\x00\x1f," + // 0x1F280301: 0x00001F2C
+ "\x1f)\x03\x01\x00\x00\x1f-" + // 0x1F290301: 0x00001F2D
+ "\x1f(\x03B\x00\x00\x1f." + // 0x1F280342: 0x00001F2E
+ "\x1f)\x03B\x00\x00\x1f/" + // 0x1F290342: 0x00001F2F
+ "\x03\xb9\x03\x13\x00\x00\x1f0" + // 0x03B90313: 0x00001F30
+ "\x03\xb9\x03\x14\x00\x00\x1f1" + // 0x03B90314: 0x00001F31
+ "\x1f0\x03\x00\x00\x00\x1f2" + // 0x1F300300: 0x00001F32
+ "\x1f1\x03\x00\x00\x00\x1f3" + // 0x1F310300: 0x00001F33
+ "\x1f0\x03\x01\x00\x00\x1f4" + // 0x1F300301: 0x00001F34
+ "\x1f1\x03\x01\x00\x00\x1f5" + // 0x1F310301: 0x00001F35
+ "\x1f0\x03B\x00\x00\x1f6" + // 0x1F300342: 0x00001F36
+ "\x1f1\x03B\x00\x00\x1f7" + // 0x1F310342: 0x00001F37
+ "\x03\x99\x03\x13\x00\x00\x1f8" + // 0x03990313: 0x00001F38
+ "\x03\x99\x03\x14\x00\x00\x1f9" + // 0x03990314: 0x00001F39
+ "\x1f8\x03\x00\x00\x00\x1f:" + // 0x1F380300: 0x00001F3A
+ "\x1f9\x03\x00\x00\x00\x1f;" + // 0x1F390300: 0x00001F3B
+ "\x1f8\x03\x01\x00\x00\x1f<" + // 0x1F380301: 0x00001F3C
+ "\x1f9\x03\x01\x00\x00\x1f=" + // 0x1F390301: 0x00001F3D
+ "\x1f8\x03B\x00\x00\x1f>" + // 0x1F380342: 0x00001F3E
+ "\x1f9\x03B\x00\x00\x1f?" + // 0x1F390342: 0x00001F3F
+ "\x03\xbf\x03\x13\x00\x00\x1f@" + // 0x03BF0313: 0x00001F40
+ "\x03\xbf\x03\x14\x00\x00\x1fA" + // 0x03BF0314: 0x00001F41
+ "\x1f@\x03\x00\x00\x00\x1fB" + // 0x1F400300: 0x00001F42
+ "\x1fA\x03\x00\x00\x00\x1fC" + // 0x1F410300: 0x00001F43
+ "\x1f@\x03\x01\x00\x00\x1fD" + // 0x1F400301: 0x00001F44
+ "\x1fA\x03\x01\x00\x00\x1fE" + // 0x1F410301: 0x00001F45
+ "\x03\x9f\x03\x13\x00\x00\x1fH" + // 0x039F0313: 0x00001F48
+ "\x03\x9f\x03\x14\x00\x00\x1fI" + // 0x039F0314: 0x00001F49
+ "\x1fH\x03\x00\x00\x00\x1fJ" + // 0x1F480300: 0x00001F4A
+ "\x1fI\x03\x00\x00\x00\x1fK" + // 0x1F490300: 0x00001F4B
+ "\x1fH\x03\x01\x00\x00\x1fL" + // 0x1F480301: 0x00001F4C
+ "\x1fI\x03\x01\x00\x00\x1fM" + // 0x1F490301: 0x00001F4D
+ "\x03\xc5\x03\x13\x00\x00\x1fP" + // 0x03C50313: 0x00001F50
+ "\x03\xc5\x03\x14\x00\x00\x1fQ" + // 0x03C50314: 0x00001F51
+ "\x1fP\x03\x00\x00\x00\x1fR" + // 0x1F500300: 0x00001F52
+ "\x1fQ\x03\x00\x00\x00\x1fS" + // 0x1F510300: 0x00001F53
+ "\x1fP\x03\x01\x00\x00\x1fT" + // 0x1F500301: 0x00001F54
+ "\x1fQ\x03\x01\x00\x00\x1fU" + // 0x1F510301: 0x00001F55
+ "\x1fP\x03B\x00\x00\x1fV" + // 0x1F500342: 0x00001F56
+ "\x1fQ\x03B\x00\x00\x1fW" + // 0x1F510342: 0x00001F57
+ "\x03\xa5\x03\x14\x00\x00\x1fY" + // 0x03A50314: 0x00001F59
+ "\x1fY\x03\x00\x00\x00\x1f[" + // 0x1F590300: 0x00001F5B
+ "\x1fY\x03\x01\x00\x00\x1f]" + // 0x1F590301: 0x00001F5D
+ "\x1fY\x03B\x00\x00\x1f_" + // 0x1F590342: 0x00001F5F
+ "\x03\xc9\x03\x13\x00\x00\x1f`" + // 0x03C90313: 0x00001F60
+ "\x03\xc9\x03\x14\x00\x00\x1fa" + // 0x03C90314: 0x00001F61
+ "\x1f`\x03\x00\x00\x00\x1fb" + // 0x1F600300: 0x00001F62
+ "\x1fa\x03\x00\x00\x00\x1fc" + // 0x1F610300: 0x00001F63
+ "\x1f`\x03\x01\x00\x00\x1fd" + // 0x1F600301: 0x00001F64
+ "\x1fa\x03\x01\x00\x00\x1fe" + // 0x1F610301: 0x00001F65
+ "\x1f`\x03B\x00\x00\x1ff" + // 0x1F600342: 0x00001F66
+ "\x1fa\x03B\x00\x00\x1fg" + // 0x1F610342: 0x00001F67
+ "\x03\xa9\x03\x13\x00\x00\x1fh" + // 0x03A90313: 0x00001F68
+ "\x03\xa9\x03\x14\x00\x00\x1fi" + // 0x03A90314: 0x00001F69
+ "\x1fh\x03\x00\x00\x00\x1fj" + // 0x1F680300: 0x00001F6A
+ "\x1fi\x03\x00\x00\x00\x1fk" + // 0x1F690300: 0x00001F6B
+ "\x1fh\x03\x01\x00\x00\x1fl" + // 0x1F680301: 0x00001F6C
+ "\x1fi\x03\x01\x00\x00\x1fm" + // 0x1F690301: 0x00001F6D
+ "\x1fh\x03B\x00\x00\x1fn" + // 0x1F680342: 0x00001F6E
+ "\x1fi\x03B\x00\x00\x1fo" + // 0x1F690342: 0x00001F6F
+ "\x03\xb1\x03\x00\x00\x00\x1fp" + // 0x03B10300: 0x00001F70
+ "\x03\xb5\x03\x00\x00\x00\x1fr" + // 0x03B50300: 0x00001F72
+ "\x03\xb7\x03\x00\x00\x00\x1ft" + // 0x03B70300: 0x00001F74
+ "\x03\xb9\x03\x00\x00\x00\x1fv" + // 0x03B90300: 0x00001F76
+ "\x03\xbf\x03\x00\x00\x00\x1fx" + // 0x03BF0300: 0x00001F78
+ "\x03\xc5\x03\x00\x00\x00\x1fz" + // 0x03C50300: 0x00001F7A
+ "\x03\xc9\x03\x00\x00\x00\x1f|" + // 0x03C90300: 0x00001F7C
+ "\x1f\x00\x03E\x00\x00\x1f\x80" + // 0x1F000345: 0x00001F80
+ "\x1f\x01\x03E\x00\x00\x1f\x81" + // 0x1F010345: 0x00001F81
+ "\x1f\x02\x03E\x00\x00\x1f\x82" + // 0x1F020345: 0x00001F82
+ "\x1f\x03\x03E\x00\x00\x1f\x83" + // 0x1F030345: 0x00001F83
+ "\x1f\x04\x03E\x00\x00\x1f\x84" + // 0x1F040345: 0x00001F84
+ "\x1f\x05\x03E\x00\x00\x1f\x85" + // 0x1F050345: 0x00001F85
+ "\x1f\x06\x03E\x00\x00\x1f\x86" + // 0x1F060345: 0x00001F86
+ "\x1f\a\x03E\x00\x00\x1f\x87" + // 0x1F070345: 0x00001F87
+ "\x1f\b\x03E\x00\x00\x1f\x88" + // 0x1F080345: 0x00001F88
+ "\x1f\t\x03E\x00\x00\x1f\x89" + // 0x1F090345: 0x00001F89
+ "\x1f\n\x03E\x00\x00\x1f\x8a" + // 0x1F0A0345: 0x00001F8A
+ "\x1f\v\x03E\x00\x00\x1f\x8b" + // 0x1F0B0345: 0x00001F8B
+ "\x1f\f\x03E\x00\x00\x1f\x8c" + // 0x1F0C0345: 0x00001F8C
+ "\x1f\r\x03E\x00\x00\x1f\x8d" + // 0x1F0D0345: 0x00001F8D
+ "\x1f\x0e\x03E\x00\x00\x1f\x8e" + // 0x1F0E0345: 0x00001F8E
+ "\x1f\x0f\x03E\x00\x00\x1f\x8f" + // 0x1F0F0345: 0x00001F8F
+ "\x1f \x03E\x00\x00\x1f\x90" + // 0x1F200345: 0x00001F90
+ "\x1f!\x03E\x00\x00\x1f\x91" + // 0x1F210345: 0x00001F91
+ "\x1f\"\x03E\x00\x00\x1f\x92" + // 0x1F220345: 0x00001F92
+ "\x1f#\x03E\x00\x00\x1f\x93" + // 0x1F230345: 0x00001F93
+ "\x1f$\x03E\x00\x00\x1f\x94" + // 0x1F240345: 0x00001F94
+ "\x1f%\x03E\x00\x00\x1f\x95" + // 0x1F250345: 0x00001F95
+ "\x1f&\x03E\x00\x00\x1f\x96" + // 0x1F260345: 0x00001F96
+ "\x1f'\x03E\x00\x00\x1f\x97" + // 0x1F270345: 0x00001F97
+ "\x1f(\x03E\x00\x00\x1f\x98" + // 0x1F280345: 0x00001F98
+ "\x1f)\x03E\x00\x00\x1f\x99" + // 0x1F290345: 0x00001F99
+ "\x1f*\x03E\x00\x00\x1f\x9a" + // 0x1F2A0345: 0x00001F9A
+ "\x1f+\x03E\x00\x00\x1f\x9b" + // 0x1F2B0345: 0x00001F9B
+ "\x1f,\x03E\x00\x00\x1f\x9c" + // 0x1F2C0345: 0x00001F9C
+ "\x1f-\x03E\x00\x00\x1f\x9d" + // 0x1F2D0345: 0x00001F9D
+ "\x1f.\x03E\x00\x00\x1f\x9e" + // 0x1F2E0345: 0x00001F9E
+ "\x1f/\x03E\x00\x00\x1f\x9f" + // 0x1F2F0345: 0x00001F9F
+ "\x1f`\x03E\x00\x00\x1f\xa0" + // 0x1F600345: 0x00001FA0
+ "\x1fa\x03E\x00\x00\x1f\xa1" + // 0x1F610345: 0x00001FA1
+ "\x1fb\x03E\x00\x00\x1f\xa2" + // 0x1F620345: 0x00001FA2
+ "\x1fc\x03E\x00\x00\x1f\xa3" + // 0x1F630345: 0x00001FA3
+ "\x1fd\x03E\x00\x00\x1f\xa4" + // 0x1F640345: 0x00001FA4
+ "\x1fe\x03E\x00\x00\x1f\xa5" + // 0x1F650345: 0x00001FA5
+ "\x1ff\x03E\x00\x00\x1f\xa6" + // 0x1F660345: 0x00001FA6
+ "\x1fg\x03E\x00\x00\x1f\xa7" + // 0x1F670345: 0x00001FA7
+ "\x1fh\x03E\x00\x00\x1f\xa8" + // 0x1F680345: 0x00001FA8
+ "\x1fi\x03E\x00\x00\x1f\xa9" + // 0x1F690345: 0x00001FA9
+ "\x1fj\x03E\x00\x00\x1f\xaa" + // 0x1F6A0345: 0x00001FAA
+ "\x1fk\x03E\x00\x00\x1f\xab" + // 0x1F6B0345: 0x00001FAB
+ "\x1fl\x03E\x00\x00\x1f\xac" + // 0x1F6C0345: 0x00001FAC
+ "\x1fm\x03E\x00\x00\x1f\xad" + // 0x1F6D0345: 0x00001FAD
+ "\x1fn\x03E\x00\x00\x1f\xae" + // 0x1F6E0345: 0x00001FAE
+ "\x1fo\x03E\x00\x00\x1f\xaf" + // 0x1F6F0345: 0x00001FAF
+ "\x03\xb1\x03\x06\x00\x00\x1f\xb0" + // 0x03B10306: 0x00001FB0
+ "\x03\xb1\x03\x04\x00\x00\x1f\xb1" + // 0x03B10304: 0x00001FB1
+ "\x1fp\x03E\x00\x00\x1f\xb2" + // 0x1F700345: 0x00001FB2
+ "\x03\xb1\x03E\x00\x00\x1f\xb3" + // 0x03B10345: 0x00001FB3
+ "\x03\xac\x03E\x00\x00\x1f\xb4" + // 0x03AC0345: 0x00001FB4
+ "\x03\xb1\x03B\x00\x00\x1f\xb6" + // 0x03B10342: 0x00001FB6
+ "\x1f\xb6\x03E\x00\x00\x1f\xb7" + // 0x1FB60345: 0x00001FB7
+ "\x03\x91\x03\x06\x00\x00\x1f\xb8" + // 0x03910306: 0x00001FB8
+ "\x03\x91\x03\x04\x00\x00\x1f\xb9" + // 0x03910304: 0x00001FB9
+ "\x03\x91\x03\x00\x00\x00\x1f\xba" + // 0x03910300: 0x00001FBA
+ "\x03\x91\x03E\x00\x00\x1f\xbc" + // 0x03910345: 0x00001FBC
+ "\x00\xa8\x03B\x00\x00\x1f\xc1" + // 0x00A80342: 0x00001FC1
+ "\x1ft\x03E\x00\x00\x1f\xc2" + // 0x1F740345: 0x00001FC2
+ "\x03\xb7\x03E\x00\x00\x1f\xc3" + // 0x03B70345: 0x00001FC3
+ "\x03\xae\x03E\x00\x00\x1f\xc4" + // 0x03AE0345: 0x00001FC4
+ "\x03\xb7\x03B\x00\x00\x1f\xc6" + // 0x03B70342: 0x00001FC6
+ "\x1f\xc6\x03E\x00\x00\x1f\xc7" + // 0x1FC60345: 0x00001FC7
+ "\x03\x95\x03\x00\x00\x00\x1f\xc8" + // 0x03950300: 0x00001FC8
+ "\x03\x97\x03\x00\x00\x00\x1f\xca" + // 0x03970300: 0x00001FCA
+ "\x03\x97\x03E\x00\x00\x1f\xcc" + // 0x03970345: 0x00001FCC
+ "\x1f\xbf\x03\x00\x00\x00\x1f\xcd" + // 0x1FBF0300: 0x00001FCD
+ "\x1f\xbf\x03\x01\x00\x00\x1f\xce" + // 0x1FBF0301: 0x00001FCE
+ "\x1f\xbf\x03B\x00\x00\x1f\xcf" + // 0x1FBF0342: 0x00001FCF
+ "\x03\xb9\x03\x06\x00\x00\x1f\xd0" + // 0x03B90306: 0x00001FD0
+ "\x03\xb9\x03\x04\x00\x00\x1f\xd1" + // 0x03B90304: 0x00001FD1
+ "\x03\xca\x03\x00\x00\x00\x1f\xd2" + // 0x03CA0300: 0x00001FD2
+ "\x03\xb9\x03B\x00\x00\x1f\xd6" + // 0x03B90342: 0x00001FD6
+ "\x03\xca\x03B\x00\x00\x1f\xd7" + // 0x03CA0342: 0x00001FD7
+ "\x03\x99\x03\x06\x00\x00\x1f\xd8" + // 0x03990306: 0x00001FD8
+ "\x03\x99\x03\x04\x00\x00\x1f\xd9" + // 0x03990304: 0x00001FD9
+ "\x03\x99\x03\x00\x00\x00\x1f\xda" + // 0x03990300: 0x00001FDA
+ "\x1f\xfe\x03\x00\x00\x00\x1f\xdd" + // 0x1FFE0300: 0x00001FDD
+ "\x1f\xfe\x03\x01\x00\x00\x1f\xde" + // 0x1FFE0301: 0x00001FDE
+ "\x1f\xfe\x03B\x00\x00\x1f\xdf" + // 0x1FFE0342: 0x00001FDF
+ "\x03\xc5\x03\x06\x00\x00\x1f\xe0" + // 0x03C50306: 0x00001FE0
+ "\x03\xc5\x03\x04\x00\x00\x1f\xe1" + // 0x03C50304: 0x00001FE1
+ "\x03\xcb\x03\x00\x00\x00\x1f\xe2" + // 0x03CB0300: 0x00001FE2
+ "\x03\xc1\x03\x13\x00\x00\x1f\xe4" + // 0x03C10313: 0x00001FE4
+ "\x03\xc1\x03\x14\x00\x00\x1f\xe5" + // 0x03C10314: 0x00001FE5
+ "\x03\xc5\x03B\x00\x00\x1f\xe6" + // 0x03C50342: 0x00001FE6
+ "\x03\xcb\x03B\x00\x00\x1f\xe7" + // 0x03CB0342: 0x00001FE7
+ "\x03\xa5\x03\x06\x00\x00\x1f\xe8" + // 0x03A50306: 0x00001FE8
+ "\x03\xa5\x03\x04\x00\x00\x1f\xe9" + // 0x03A50304: 0x00001FE9
+ "\x03\xa5\x03\x00\x00\x00\x1f\xea" + // 0x03A50300: 0x00001FEA
+ "\x03\xa1\x03\x14\x00\x00\x1f\xec" + // 0x03A10314: 0x00001FEC
+ "\x00\xa8\x03\x00\x00\x00\x1f\xed" + // 0x00A80300: 0x00001FED
+ "\x1f|\x03E\x00\x00\x1f\xf2" + // 0x1F7C0345: 0x00001FF2
+ "\x03\xc9\x03E\x00\x00\x1f\xf3" + // 0x03C90345: 0x00001FF3
+ "\x03\xce\x03E\x00\x00\x1f\xf4" + // 0x03CE0345: 0x00001FF4
+ "\x03\xc9\x03B\x00\x00\x1f\xf6" + // 0x03C90342: 0x00001FF6
+ "\x1f\xf6\x03E\x00\x00\x1f\xf7" + // 0x1FF60345: 0x00001FF7
+ "\x03\x9f\x03\x00\x00\x00\x1f\xf8" + // 0x039F0300: 0x00001FF8
+ "\x03\xa9\x03\x00\x00\x00\x1f\xfa" + // 0x03A90300: 0x00001FFA
+ "\x03\xa9\x03E\x00\x00\x1f\xfc" + // 0x03A90345: 0x00001FFC
+ "!\x90\x038\x00\x00!\x9a" + // 0x21900338: 0x0000219A
+ "!\x92\x038\x00\x00!\x9b" + // 0x21920338: 0x0000219B
+ "!\x94\x038\x00\x00!\xae" + // 0x21940338: 0x000021AE
+ "!\xd0\x038\x00\x00!\xcd" + // 0x21D00338: 0x000021CD
+ "!\xd4\x038\x00\x00!\xce" + // 0x21D40338: 0x000021CE
+ "!\xd2\x038\x00\x00!\xcf" + // 0x21D20338: 0x000021CF
+ "\"\x03\x038\x00\x00\"\x04" + // 0x22030338: 0x00002204
+ "\"\b\x038\x00\x00\"\t" + // 0x22080338: 0x00002209
+ "\"\v\x038\x00\x00\"\f" + // 0x220B0338: 0x0000220C
+ "\"#\x038\x00\x00\"$" + // 0x22230338: 0x00002224
+ "\"%\x038\x00\x00\"&" + // 0x22250338: 0x00002226
+ "\"<\x038\x00\x00\"A" + // 0x223C0338: 0x00002241
+ "\"C\x038\x00\x00\"D" + // 0x22430338: 0x00002244
+ "\"E\x038\x00\x00\"G" + // 0x22450338: 0x00002247
+ "\"H\x038\x00\x00\"I" + // 0x22480338: 0x00002249
+ "\x00=\x038\x00\x00\"`" + // 0x003D0338: 0x00002260
+ "\"a\x038\x00\x00\"b" + // 0x22610338: 0x00002262
+ "\"M\x038\x00\x00\"m" + // 0x224D0338: 0x0000226D
+ "\x00<\x038\x00\x00\"n" + // 0x003C0338: 0x0000226E
+ "\x00>\x038\x00\x00\"o" + // 0x003E0338: 0x0000226F
+ "\"d\x038\x00\x00\"p" + // 0x22640338: 0x00002270
+ "\"e\x038\x00\x00\"q" + // 0x22650338: 0x00002271
+ "\"r\x038\x00\x00\"t" + // 0x22720338: 0x00002274
+ "\"s\x038\x00\x00\"u" + // 0x22730338: 0x00002275
+ "\"v\x038\x00\x00\"x" + // 0x22760338: 0x00002278
+ "\"w\x038\x00\x00\"y" + // 0x22770338: 0x00002279
+ "\"z\x038\x00\x00\"\x80" + // 0x227A0338: 0x00002280
+ "\"{\x038\x00\x00\"\x81" + // 0x227B0338: 0x00002281
+ "\"\x82\x038\x00\x00\"\x84" + // 0x22820338: 0x00002284
+ "\"\x83\x038\x00\x00\"\x85" + // 0x22830338: 0x00002285
+ "\"\x86\x038\x00\x00\"\x88" + // 0x22860338: 0x00002288
+ "\"\x87\x038\x00\x00\"\x89" + // 0x22870338: 0x00002289
+ "\"\xa2\x038\x00\x00\"\xac" + // 0x22A20338: 0x000022AC
+ "\"\xa8\x038\x00\x00\"\xad" + // 0x22A80338: 0x000022AD
+ "\"\xa9\x038\x00\x00\"\xae" + // 0x22A90338: 0x000022AE
+ "\"\xab\x038\x00\x00\"\xaf" + // 0x22AB0338: 0x000022AF
+ "\"|\x038\x00\x00\"\xe0" + // 0x227C0338: 0x000022E0
+ "\"}\x038\x00\x00\"\xe1" + // 0x227D0338: 0x000022E1
+ "\"\x91\x038\x00\x00\"\xe2" + // 0x22910338: 0x000022E2
+ "\"\x92\x038\x00\x00\"\xe3" + // 0x22920338: 0x000022E3
+ "\"\xb2\x038\x00\x00\"\xea" + // 0x22B20338: 0x000022EA
+ "\"\xb3\x038\x00\x00\"\xeb" + // 0x22B30338: 0x000022EB
+ "\"\xb4\x038\x00\x00\"\xec" + // 0x22B40338: 0x000022EC
+ "\"\xb5\x038\x00\x00\"\xed" + // 0x22B50338: 0x000022ED
+ "0K0\x99\x00\x000L" + // 0x304B3099: 0x0000304C
+ "0M0\x99\x00\x000N" + // 0x304D3099: 0x0000304E
+ "0O0\x99\x00\x000P" + // 0x304F3099: 0x00003050
+ "0Q0\x99\x00\x000R" + // 0x30513099: 0x00003052
+ "0S0\x99\x00\x000T" + // 0x30533099: 0x00003054
+ "0U0\x99\x00\x000V" + // 0x30553099: 0x00003056
+ "0W0\x99\x00\x000X" + // 0x30573099: 0x00003058
+ "0Y0\x99\x00\x000Z" + // 0x30593099: 0x0000305A
+ "0[0\x99\x00\x000\\" + // 0x305B3099: 0x0000305C
+ "0]0\x99\x00\x000^" + // 0x305D3099: 0x0000305E
+ "0_0\x99\x00\x000`" + // 0x305F3099: 0x00003060
+ "0a0\x99\x00\x000b" + // 0x30613099: 0x00003062
+ "0d0\x99\x00\x000e" + // 0x30643099: 0x00003065
+ "0f0\x99\x00\x000g" + // 0x30663099: 0x00003067
+ "0h0\x99\x00\x000i" + // 0x30683099: 0x00003069
+ "0o0\x99\x00\x000p" + // 0x306F3099: 0x00003070
+ "0o0\x9a\x00\x000q" + // 0x306F309A: 0x00003071
+ "0r0\x99\x00\x000s" + // 0x30723099: 0x00003073
+ "0r0\x9a\x00\x000t" + // 0x3072309A: 0x00003074
+ "0u0\x99\x00\x000v" + // 0x30753099: 0x00003076
+ "0u0\x9a\x00\x000w" + // 0x3075309A: 0x00003077
+ "0x0\x99\x00\x000y" + // 0x30783099: 0x00003079
+ "0x0\x9a\x00\x000z" + // 0x3078309A: 0x0000307A
+ "0{0\x99\x00\x000|" + // 0x307B3099: 0x0000307C
+ "0{0\x9a\x00\x000}" + // 0x307B309A: 0x0000307D
+ "0F0\x99\x00\x000\x94" + // 0x30463099: 0x00003094
+ "0\x9d0\x99\x00\x000\x9e" + // 0x309D3099: 0x0000309E
+ "0\xab0\x99\x00\x000\xac" + // 0x30AB3099: 0x000030AC
+ "0\xad0\x99\x00\x000\xae" + // 0x30AD3099: 0x000030AE
+ "0\xaf0\x99\x00\x000\xb0" + // 0x30AF3099: 0x000030B0
+ "0\xb10\x99\x00\x000\xb2" + // 0x30B13099: 0x000030B2
+ "0\xb30\x99\x00\x000\xb4" + // 0x30B33099: 0x000030B4
+ "0\xb50\x99\x00\x000\xb6" + // 0x30B53099: 0x000030B6
+ "0\xb70\x99\x00\x000\xb8" + // 0x30B73099: 0x000030B8
+ "0\xb90\x99\x00\x000\xba" + // 0x30B93099: 0x000030BA
+ "0\xbb0\x99\x00\x000\xbc" + // 0x30BB3099: 0x000030BC
+ "0\xbd0\x99\x00\x000\xbe" + // 0x30BD3099: 0x000030BE
+ "0\xbf0\x99\x00\x000\xc0" + // 0x30BF3099: 0x000030C0
+ "0\xc10\x99\x00\x000\xc2" + // 0x30C13099: 0x000030C2
+ "0\xc40\x99\x00\x000\xc5" + // 0x30C43099: 0x000030C5
+ "0\xc60\x99\x00\x000\xc7" + // 0x30C63099: 0x000030C7
+ "0\xc80\x99\x00\x000\xc9" + // 0x30C83099: 0x000030C9
+ "0\xcf0\x99\x00\x000\xd0" + // 0x30CF3099: 0x000030D0
+ "0\xcf0\x9a\x00\x000\xd1" + // 0x30CF309A: 0x000030D1
+ "0\xd20\x99\x00\x000\xd3" + // 0x30D23099: 0x000030D3
+ "0\xd20\x9a\x00\x000\xd4" + // 0x30D2309A: 0x000030D4
+ "0\xd50\x99\x00\x000\xd6" + // 0x30D53099: 0x000030D6
+ "0\xd50\x9a\x00\x000\xd7" + // 0x30D5309A: 0x000030D7
+ "0\xd80\x99\x00\x000\xd9" + // 0x30D83099: 0x000030D9
+ "0\xd80\x9a\x00\x000\xda" + // 0x30D8309A: 0x000030DA
+ "0\xdb0\x99\x00\x000\xdc" + // 0x30DB3099: 0x000030DC
+ "0\xdb0\x9a\x00\x000\xdd" + // 0x30DB309A: 0x000030DD
+ "0\xa60\x99\x00\x000\xf4" + // 0x30A63099: 0x000030F4
+ "0\xef0\x99\x00\x000\xf7" + // 0x30EF3099: 0x000030F7
+ "0\xf00\x99\x00\x000\xf8" + // 0x30F03099: 0x000030F8
+ "0\xf10\x99\x00\x000\xf9" + // 0x30F13099: 0x000030F9
+ "0\xf20\x99\x00\x000\xfa" + // 0x30F23099: 0x000030FA
+ "0\xfd0\x99\x00\x000\xfe" + // 0x30FD3099: 0x000030FE
+ "\x10\x99\x10\xba\x00\x01\x10\x9a" + // 0x109910BA: 0x0001109A
+ "\x10\x9b\x10\xba\x00\x01\x10\x9c" + // 0x109B10BA: 0x0001109C
+ "\x10\xa5\x10\xba\x00\x01\x10\xab" + // 0x10A510BA: 0x000110AB
+ "\x111\x11'\x00\x01\x11." + // 0x11311127: 0x0001112E
+ "\x112\x11'\x00\x01\x11/" + // 0x11321127: 0x0001112F
+ "\x13G\x13>\x00\x01\x13K" + // 0x1347133E: 0x0001134B
+ "\x13G\x13W\x00\x01\x13L" + // 0x13471357: 0x0001134C
+ "\x14\xb9\x14\xba\x00\x01\x14\xbb" + // 0x14B914BA: 0x000114BB
+ "\x14\xb9\x14\xb0\x00\x01\x14\xbc" + // 0x14B914B0: 0x000114BC
+ "\x14\xb9\x14\xbd\x00\x01\x14\xbe" + // 0x14B914BD: 0x000114BE
+ "\x15\xb8\x15\xaf\x00\x01\x15\xba" + // 0x15B815AF: 0x000115BA
+ "\x15\xb9\x15\xaf\x00\x01\x15\xbb" + // 0x15B915AF: 0x000115BB
+ "\x195\x190\x00\x01\x198" + // 0x19351930: 0x00011938
+ ""
+ // Total size of tables: 55KB (56160 bytes)
diff --git a/vendor/golang.org/x/tools/go/analysis/analysis.go b/vendor/golang.org/x/tools/go/analysis/analysis.go
index 8c997735..8c3c2e7a 100644
--- a/vendor/golang.org/x/tools/go/analysis/analysis.go
+++ b/vendor/golang.org/x/tools/go/analysis/analysis.go
@@ -95,12 +95,13 @@ type Pass struct {
Analyzer *Analyzer // the identity of the current analyzer
// syntax and type information
- Fset *token.FileSet // file position information
- Files []*ast.File // the abstract syntax tree of each file
- OtherFiles []string // names of non-Go files of this package
- Pkg *types.Package // type information about the package
- TypesInfo *types.Info // type information about the syntax trees
- TypesSizes types.Sizes // function for computing sizes of types
+ Fset *token.FileSet // file position information
+ Files []*ast.File // the abstract syntax tree of each file
+ OtherFiles []string // names of non-Go files of this package
+ IgnoredFiles []string // names of ignored source files in this package
+ Pkg *types.Package // type information about the package
+ TypesInfo *types.Info // type information about the syntax trees
+ TypesSizes types.Sizes // function for computing sizes of types
// Report reports a Diagnostic, a finding about a specific location
// in the analyzed source code such as a potential mistake.
diff --git a/vendor/golang.org/x/tools/go/analysis/doc.go b/vendor/golang.org/x/tools/go/analysis/doc.go
index fb17a0e4..9fa3302d 100644
--- a/vendor/golang.org/x/tools/go/analysis/doc.go
+++ b/vendor/golang.org/x/tools/go/analysis/doc.go
@@ -121,13 +121,14 @@ package being analyzed, and provides operations to the Run function for
reporting diagnostics and other information back to the driver.
type Pass struct {
- Fset *token.FileSet
- Files []*ast.File
- OtherFiles []string
- Pkg *types.Package
- TypesInfo *types.Info
- ResultOf map[*Analyzer]interface{}
- Report func(Diagnostic)
+ Fset *token.FileSet
+ Files []*ast.File
+ OtherFiles []string
+ IgnoredFiles []string
+ Pkg *types.Package
+ TypesInfo *types.Info
+ ResultOf map[*Analyzer]interface{}
+ Report func(Diagnostic)
...
}
@@ -139,6 +140,12 @@ files such as assembly that are part of this package. See the "asmdecl"
or "buildtags" analyzers for examples of loading non-Go files and reporting
diagnostics against them.
+The IgnoredFiles field provides the names, but not the contents,
+of ignored Go and non-Go source files that are not part of this package
+with the current build configuration but may be part of other build
+configurations. See the "buildtags" analyzer for an example of loading
+and checking IgnoredFiles.
+
The ResultOf field provides the results computed by the analyzers
required by this one, as expressed in its Analyzer.Requires field. The
driver runs the required analyzers first and makes their results
diff --git a/vendor/golang.org/x/tools/go/analysis/validate.go b/vendor/golang.org/x/tools/go/analysis/validate.go
index be981434..ad0e7276 100644
--- a/vendor/golang.org/x/tools/go/analysis/validate.go
+++ b/vendor/golang.org/x/tools/go/analysis/validate.go
@@ -3,6 +3,7 @@ package analysis
import (
"fmt"
"reflect"
+ "strings"
"unicode"
)
@@ -58,14 +59,28 @@ func Validate(analyzers []*Analyzer) error {
}
// recursion
- for i, req := range a.Requires {
+ for _, req := range a.Requires {
if err := visit(req); err != nil {
- return fmt.Errorf("%s.Requires[%d]: %v", a.Name, i, err)
+ return err
}
}
color[a] = black
}
+ if color[a] == grey {
+ stack := []*Analyzer{a}
+ inCycle := map[string]bool{}
+ for len(stack) > 0 {
+ current := stack[len(stack)-1]
+ stack = stack[:len(stack)-1]
+ if color[current] == grey && !inCycle[current.Name] {
+ inCycle[current.Name] = true
+ stack = append(stack, current.Requires...)
+ }
+ }
+ return &CycleInRequiresGraphError{AnalyzerNames: inCycle}
+ }
+
return nil
}
for _, a := range analyzers {
@@ -95,3 +110,17 @@ func validIdent(name string) bool {
}
return name != ""
}
+
+type CycleInRequiresGraphError struct {
+ AnalyzerNames map[string]bool
+}
+
+func (e *CycleInRequiresGraphError) Error() string {
+ var b strings.Builder
+ b.WriteString("cycle detected involving the following analyzers:")
+ for n := range e.AnalyzerNames {
+ b.WriteByte(' ')
+ b.WriteString(n)
+ }
+ return b.String()
+}
diff --git a/vendor/golang.org/x/tools/go/internal/gcimporter/gcimporter.go b/vendor/golang.org/x/tools/go/internal/gcimporter/gcimporter.go
index 8dcd8bbb..e8cba6b2 100644
--- a/vendor/golang.org/x/tools/go/internal/gcimporter/gcimporter.go
+++ b/vendor/golang.org/x/tools/go/internal/gcimporter/gcimporter.go
@@ -491,7 +491,7 @@ func (p *parser) parseMapType(parent *types.Package) types.Type {
//
// For unqualified and anonymous names, the returned package is the parent
// package unless parent == nil, in which case the returned package is the
-// package being imported. (The parent package is not nil if the the name
+// package being imported. (The parent package is not nil if the name
// is an unqualified struct field or interface method name belonging to a
// type declared in another package.)
//
diff --git a/vendor/golang.org/x/tools/go/internal/packagesdriver/sizes.go b/vendor/golang.org/x/tools/go/internal/packagesdriver/sizes.go
index dc6177c1..f4d73b23 100644
--- a/vendor/golang.org/x/tools/go/internal/packagesdriver/sizes.go
+++ b/vendor/golang.org/x/tools/go/internal/packagesdriver/sizes.go
@@ -6,12 +6,9 @@
package packagesdriver
import (
- "bytes"
"context"
- "encoding/json"
"fmt"
"go/types"
- "os/exec"
"strings"
"golang.org/x/tools/internal/gocommand"
@@ -19,82 +16,17 @@ import (
var debug = false
-func GetSizes(ctx context.Context, buildFlags, env []string, gocmdRunner *gocommand.Runner, dir string) (types.Sizes, error) {
- // TODO(matloob): Clean this up. This code is mostly a copy of packages.findExternalDriver.
- const toolPrefix = "GOPACKAGESDRIVER="
- tool := ""
- for _, env := range env {
- if val := strings.TrimPrefix(env, toolPrefix); val != env {
- tool = val
- }
- }
-
- if tool == "" {
- var err error
- tool, err = exec.LookPath("gopackagesdriver")
- if err != nil {
- // We did not find the driver, so use "go list".
- tool = "off"
- }
- }
-
- if tool == "off" {
- return GetSizesGolist(ctx, buildFlags, env, gocmdRunner, dir)
- }
-
- req, err := json.Marshal(struct {
- Command string `json:"command"`
- Env []string `json:"env"`
- BuildFlags []string `json:"build_flags"`
- }{
- Command: "sizes",
- Env: env,
- BuildFlags: buildFlags,
- })
- if err != nil {
- return nil, fmt.Errorf("failed to encode message to driver tool: %v", err)
- }
-
- buf := new(bytes.Buffer)
- cmd := exec.CommandContext(ctx, tool)
- cmd.Dir = dir
- cmd.Env = env
- cmd.Stdin = bytes.NewReader(req)
- cmd.Stdout = buf
- cmd.Stderr = new(bytes.Buffer)
- if err := cmd.Run(); err != nil {
- return nil, fmt.Errorf("%v: %v: %s", tool, err, cmd.Stderr)
- }
- var response struct {
- // Sizes, if not nil, is the types.Sizes to use when type checking.
- Sizes *types.StdSizes
- }
- if err := json.Unmarshal(buf.Bytes(), &response); err != nil {
- return nil, err
- }
- return response.Sizes, nil
-}
-
-func GetSizesGolist(ctx context.Context, buildFlags, env []string, gocmdRunner *gocommand.Runner, dir string) (types.Sizes, error) {
- inv := gocommand.Invocation{
- Verb: "list",
- Args: []string{"-f", "{{context.GOARCH}} {{context.Compiler}}", "--", "unsafe"},
- Env: env,
- BuildFlags: buildFlags,
- WorkingDir: dir,
- }
+func GetSizesGolist(ctx context.Context, inv gocommand.Invocation, gocmdRunner *gocommand.Runner) (types.Sizes, error) {
+ inv.Verb = "list"
+ inv.Args = []string{"-f", "{{context.GOARCH}} {{context.Compiler}}", "--", "unsafe"}
stdout, stderr, friendlyErr, rawErr := gocmdRunner.RunRaw(ctx, inv)
var goarch, compiler string
if rawErr != nil {
if strings.Contains(rawErr.Error(), "cannot find main module") {
// User's running outside of a module. All bets are off. Get GOARCH and guess compiler is gc.
// TODO(matloob): Is this a problem in practice?
- inv := gocommand.Invocation{
- Verb: "env",
- Args: []string{"GOARCH"},
- Env: env,
- WorkingDir: dir,
- }
+ inv.Verb = "env"
+ inv.Args = []string{"GOARCH"}
envout, enverr := gocmdRunner.Run(ctx, inv)
if enverr != nil {
return nil, enverr
diff --git a/vendor/golang.org/x/tools/go/packages/external.go b/vendor/golang.org/x/tools/go/packages/external.go
index 8c8473fd..7db1d129 100644
--- a/vendor/golang.org/x/tools/go/packages/external.go
+++ b/vendor/golang.org/x/tools/go/packages/external.go
@@ -89,7 +89,7 @@ func findExternalDriver(cfg *Config) driver {
return nil, fmt.Errorf("%v: %v: %s", tool, err, cmd.Stderr)
}
if len(stderr.Bytes()) != 0 && os.Getenv("GOPACKAGESPRINTDRIVERERRORS") != "" {
- fmt.Fprintf(os.Stderr, "%s stderr: <<%s>>\n", cmdDebugStr(cmd, words...), stderr)
+ fmt.Fprintf(os.Stderr, "%s stderr: <<%s>>\n", cmdDebugStr(cmd), stderr)
}
var response driverResponse
diff --git a/vendor/golang.org/x/tools/go/packages/golist.go b/vendor/golang.org/x/tools/go/packages/golist.go
index 6e91391c..c83ca097 100644
--- a/vendor/golang.org/x/tools/go/packages/golist.go
+++ b/vendor/golang.org/x/tools/go/packages/golist.go
@@ -10,6 +10,7 @@ import (
"encoding/json"
"fmt"
"go/types"
+ "io/ioutil"
"log"
"os"
"os/exec"
@@ -89,6 +90,10 @@ type golistState struct {
rootDirsError error
rootDirs map[string]string
+ goVersionOnce sync.Once
+ goVersionError error
+ goVersion int // The X in Go 1.X.
+
// vendorDirs caches the (non)existence of vendor directories.
vendorDirs map[string]bool
}
@@ -135,6 +140,12 @@ func goListDriver(cfg *Config, patterns ...string) (*driverResponse, error) {
response := newDeduper()
+ state := &golistState{
+ cfg: cfg,
+ ctx: ctx,
+ vendorDirs: map[string]bool{},
+ }
+
// Fill in response.Sizes asynchronously if necessary.
var sizeserr error
var sizeswg sync.WaitGroup
@@ -142,19 +153,13 @@ func goListDriver(cfg *Config, patterns ...string) (*driverResponse, error) {
sizeswg.Add(1)
go func() {
var sizes types.Sizes
- sizes, sizeserr = packagesdriver.GetSizesGolist(ctx, cfg.BuildFlags, cfg.Env, cfg.gocmdRunner, cfg.Dir)
+ sizes, sizeserr = packagesdriver.GetSizesGolist(ctx, state.cfgInvocation(), cfg.gocmdRunner)
// types.SizesFor always returns nil or a *types.StdSizes.
response.dr.Sizes, _ = sizes.(*types.StdSizes)
sizeswg.Done()
}()
}
- state := &golistState{
- cfg: cfg,
- ctx: ctx,
- vendorDirs: map[string]bool{},
- }
-
// Determine files requested in contains patterns
var containFiles []string
restPatterns := make([]string, 0, len(patterns))
@@ -204,43 +209,60 @@ extractQueries:
}
}
- modifiedPkgs, needPkgs, err := state.processGolistOverlay(response)
- if err != nil {
- return nil, err
- }
+ // Only use go/packages' overlay processing if we're using a Go version
+ // below 1.16. Otherwise, go list handles it.
+ if goVersion, err := state.getGoVersion(); err == nil && goVersion < 16 {
+ modifiedPkgs, needPkgs, err := state.processGolistOverlay(response)
+ if err != nil {
+ return nil, err
+ }
- var containsCandidates []string
- if len(containFiles) > 0 {
- containsCandidates = append(containsCandidates, modifiedPkgs...)
- containsCandidates = append(containsCandidates, needPkgs...)
- }
- if err := state.addNeededOverlayPackages(response, needPkgs); err != nil {
- return nil, err
- }
- // Check candidate packages for containFiles.
- if len(containFiles) > 0 {
- for _, id := range containsCandidates {
- pkg, ok := response.seenPackages[id]
- if !ok {
- response.addPackage(&Package{
- ID: id,
- Errors: []Error{
- {
+ var containsCandidates []string
+ if len(containFiles) > 0 {
+ containsCandidates = append(containsCandidates, modifiedPkgs...)
+ containsCandidates = append(containsCandidates, needPkgs...)
+ }
+ if err := state.addNeededOverlayPackages(response, needPkgs); err != nil {
+ return nil, err
+ }
+ // Check candidate packages for containFiles.
+ if len(containFiles) > 0 {
+ for _, id := range containsCandidates {
+ pkg, ok := response.seenPackages[id]
+ if !ok {
+ response.addPackage(&Package{
+ ID: id,
+ Errors: []Error{{
Kind: ListError,
Msg: fmt.Sprintf("package %s expected but not seen", id),
- },
- },
- })
- continue
- }
- for _, f := range containFiles {
- for _, g := range pkg.GoFiles {
- if sameFile(f, g) {
- response.addRoot(id)
+ }},
+ })
+ continue
+ }
+ for _, f := range containFiles {
+ for _, g := range pkg.GoFiles {
+ if sameFile(f, g) {
+ response.addRoot(id)
+ }
}
}
}
}
+ // Add root for any package that matches a pattern. This applies only to
+ // packages that are modified by overlays, since they are not added as
+ // roots automatically.
+ for _, pattern := range restPatterns {
+ match := matchPattern(pattern)
+ for _, pkgID := range modifiedPkgs {
+ pkg, ok := response.seenPackages[pkgID]
+ if !ok {
+ continue
+ }
+ if match(pkg.PkgPath) {
+ response.addRoot(pkg.ID)
+ }
+ }
+ }
}
sizeswg.Wait()
@@ -362,32 +384,34 @@ func (state *golistState) adhocPackage(pattern, query string) (*driverResponse,
// Fields must match go list;
// see $GOROOT/src/cmd/go/internal/load/pkg.go.
type jsonPackage struct {
- ImportPath string
- Dir string
- Name string
- Export string
- GoFiles []string
- CompiledGoFiles []string
- CFiles []string
- CgoFiles []string
- CXXFiles []string
- MFiles []string
- HFiles []string
- FFiles []string
- SFiles []string
- SwigFiles []string
- SwigCXXFiles []string
- SysoFiles []string
- Imports []string
- ImportMap map[string]string
- Deps []string
- Module *Module
- TestGoFiles []string
- TestImports []string
- XTestGoFiles []string
- XTestImports []string
- ForTest string // q in a "p [q.test]" package, else ""
- DepOnly bool
+ ImportPath string
+ Dir string
+ Name string
+ Export string
+ GoFiles []string
+ CompiledGoFiles []string
+ IgnoredGoFiles []string
+ IgnoredOtherFiles []string
+ CFiles []string
+ CgoFiles []string
+ CXXFiles []string
+ MFiles []string
+ HFiles []string
+ FFiles []string
+ SFiles []string
+ SwigFiles []string
+ SwigCXXFiles []string
+ SysoFiles []string
+ Imports []string
+ ImportMap map[string]string
+ Deps []string
+ Module *Module
+ TestGoFiles []string
+ TestImports []string
+ XTestGoFiles []string
+ XTestImports []string
+ ForTest string // q in a "p [q.test]" package, else ""
+ DepOnly bool
Error *jsonPackageError
}
@@ -539,6 +563,7 @@ func (state *golistState) createDriverResponse(words ...string) (*driverResponse
GoFiles: absJoin(p.Dir, p.GoFiles, p.CgoFiles),
CompiledGoFiles: absJoin(p.Dir, p.CompiledGoFiles),
OtherFiles: absJoin(p.Dir, otherFiles(p)...),
+ IgnoredFiles: absJoin(p.Dir, p.IgnoredGoFiles, p.IgnoredOtherFiles),
forTest: p.ForTest,
Module: p.Module,
}
@@ -635,6 +660,39 @@ func (state *golistState) createDriverResponse(words ...string) (*driverResponse
pkg.CompiledGoFiles = pkg.GoFiles
}
+ // Temporary work-around for golang/go#39986. Parse filenames out of
+ // error messages. This happens if there are unrecoverable syntax
+ // errors in the source, so we can't match on a specific error message.
+ if err := p.Error; err != nil && state.shouldAddFilenameFromError(p) {
+ addFilenameFromPos := func(pos string) bool {
+ split := strings.Split(pos, ":")
+ if len(split) < 1 {
+ return false
+ }
+ filename := strings.TrimSpace(split[0])
+ if filename == "" {
+ return false
+ }
+ if !filepath.IsAbs(filename) {
+ filename = filepath.Join(state.cfg.Dir, filename)
+ }
+ info, _ := os.Stat(filename)
+ if info == nil {
+ return false
+ }
+ pkg.CompiledGoFiles = append(pkg.CompiledGoFiles, filename)
+ pkg.GoFiles = append(pkg.GoFiles, filename)
+ return true
+ }
+ found := addFilenameFromPos(err.Pos)
+ // In some cases, go list only reports the error position in the
+ // error text, not the error position. One such case is when the
+ // file's package name is a keyword (see golang.org/issue/39763).
+ if !found {
+ addFilenameFromPos(err.Err)
+ }
+ }
+
if p.Error != nil {
msg := strings.TrimSpace(p.Error.Err) // Trim to work around golang.org/issue/32363.
// Address golang.org/issue/35964 by appending import stack to error message.
@@ -664,7 +722,38 @@ func (state *golistState) createDriverResponse(words ...string) (*driverResponse
return &response, nil
}
-// getPkgPath finds the package path of a directory if it's relative to a root directory.
+func (state *golistState) shouldAddFilenameFromError(p *jsonPackage) bool {
+ if len(p.GoFiles) > 0 || len(p.CompiledGoFiles) > 0 {
+ return false
+ }
+
+ goV, err := state.getGoVersion()
+ if err != nil {
+ return false
+ }
+
+ // On Go 1.14 and earlier, only add filenames from errors if the import stack is empty.
+ // The import stack behaves differently for these versions than newer Go versions.
+ if goV < 15 {
+ return len(p.Error.ImportStack) == 0
+ }
+
+ // On Go 1.15 and later, only parse filenames out of error if there's no import stack,
+ // or the current package is at the top of the import stack. This is not guaranteed
+ // to work perfectly, but should avoid some cases where files in errors don't belong to this
+ // package.
+ return len(p.Error.ImportStack) == 0 || p.Error.ImportStack[len(p.Error.ImportStack)-1] == p.ImportPath
+}
+
+func (state *golistState) getGoVersion() (int, error) {
+ state.goVersionOnce.Do(func() {
+ state.goVersion, state.goVersionError = gocommand.GoVersion(state.ctx, state.cfgInvocation(), state.cfg.gocmdRunner)
+ })
+ return state.goVersion, state.goVersionError
+}
+
+// getPkgPath finds the package path of a directory if it's relative to a root
+// directory.
func (state *golistState) getPkgPath(dir string) (string, bool, error) {
absDir, err := filepath.Abs(dir)
if err != nil {
@@ -731,18 +820,47 @@ func golistargs(cfg *Config, words []string) []string {
return fullargs
}
-// invokeGo returns the stdout of a go command invocation.
-func (state *golistState) invokeGo(verb string, args ...string) (*bytes.Buffer, error) {
+// cfgInvocation returns an Invocation that reflects cfg's settings.
+func (state *golistState) cfgInvocation() gocommand.Invocation {
cfg := state.cfg
-
- inv := gocommand.Invocation{
- Verb: verb,
- Args: args,
+ return gocommand.Invocation{
BuildFlags: cfg.BuildFlags,
+ ModFile: cfg.modFile,
+ ModFlag: cfg.modFlag,
+ CleanEnv: cfg.Env != nil,
Env: cfg.Env,
Logf: cfg.Logf,
WorkingDir: cfg.Dir,
}
+}
+
+// invokeGo returns the stdout of a go command invocation.
+func (state *golistState) invokeGo(verb string, args ...string) (*bytes.Buffer, error) {
+ cfg := state.cfg
+
+ inv := state.cfgInvocation()
+
+ // For Go versions 1.16 and above, `go list` accepts overlays directly via
+ // the -overlay flag. Set it, if it's available.
+ //
+ // The check for "list" is not necessarily required, but we should avoid
+ // getting the go version if possible.
+ if verb == "list" {
+ goVersion, err := state.getGoVersion()
+ if err != nil {
+ return nil, err
+ }
+ if goVersion >= 16 {
+ filename, cleanup, err := state.writeOverlays()
+ if err != nil {
+ return nil, err
+ }
+ defer cleanup()
+ inv.Overlay = filename
+ }
+ }
+ inv.Verb = verb
+ inv.Args = args
gocmdRunner := cfg.gocmdRunner
if gocmdRunner == nil {
gocmdRunner = &gocommand.Runner{}
@@ -784,8 +902,13 @@ func (state *golistState) invokeGo(verb string, args ...string) (*bytes.Buffer,
return unicode.IsOneOf([]*unicode.RangeTable{unicode.L, unicode.M, unicode.N, unicode.P, unicode.S}, r) &&
!strings.ContainsRune("!\"#$%&'()*,:;<=>?[\\]^`{|}\uFFFD", r)
}
+ // golang/go#36770: Handle case where cmd/go prints module download messages before the error.
+ msg := stderr.String()
+ for strings.HasPrefix(msg, "go: downloading") {
+ msg = msg[strings.IndexRune(msg, '\n')+1:]
+ }
if len(stderr.String()) > 0 && strings.HasPrefix(stderr.String(), "# ") {
- msg := stderr.String()[len("# "):]
+ msg := msg[len("# "):]
if strings.HasPrefix(strings.TrimLeftFunc(msg, isPkgPathRune), "\n") {
return stdout, nil
}
@@ -882,6 +1005,67 @@ func (state *golistState) invokeGo(verb string, args ...string) (*bytes.Buffer,
return stdout, nil
}
+// OverlayJSON is the format overlay files are expected to be in.
+// The Replace map maps from overlaid paths to replacement paths:
+// the Go command will forward all reads trying to open
+// each overlaid path to its replacement path, or consider the overlaid
+// path not to exist if the replacement path is empty.
+//
+// From golang/go#39958.
+type OverlayJSON struct {
+ Replace map[string]string `json:"replace,omitempty"`
+}
+
+// writeOverlays writes out files for go list's -overlay flag, as described
+// above.
+func (state *golistState) writeOverlays() (filename string, cleanup func(), err error) {
+ // Do nothing if there are no overlays in the config.
+ if len(state.cfg.Overlay) == 0 {
+ return "", func() {}, nil
+ }
+ dir, err := ioutil.TempDir("", "gopackages-*")
+ if err != nil {
+ return "", nil, err
+ }
+ // The caller must clean up this directory, unless this function returns an
+ // error.
+ cleanup = func() {
+ os.RemoveAll(dir)
+ }
+ defer func() {
+ if err != nil {
+ cleanup()
+ }
+ }()
+ overlays := map[string]string{}
+ for k, v := range state.cfg.Overlay {
+ // Create a unique filename for the overlaid files, to avoid
+ // creating nested directories.
+ noSeparator := strings.Join(strings.Split(filepath.ToSlash(k), "/"), "")
+ f, err := ioutil.TempFile(dir, fmt.Sprintf("*-%s", noSeparator))
+ if err != nil {
+ return "", func() {}, err
+ }
+ if _, err := f.Write(v); err != nil {
+ return "", func() {}, err
+ }
+ if err := f.Close(); err != nil {
+ return "", func() {}, err
+ }
+ overlays[k] = f.Name()
+ }
+ b, err := json.Marshal(OverlayJSON{Replace: overlays})
+ if err != nil {
+ return "", func() {}, err
+ }
+ // Write out the overlay file that contains the filepath mappings.
+ filename = filepath.Join(dir, "overlay.json")
+ if err := ioutil.WriteFile(filename, b, 0665); err != nil {
+ return "", func() {}, err
+ }
+ return filename, cleanup, nil
+}
+
func containsGoFile(s []string) bool {
for _, f := range s {
if strings.HasSuffix(f, ".go") {
@@ -891,17 +1075,22 @@ func containsGoFile(s []string) bool {
return false
}
-func cmdDebugStr(cmd *exec.Cmd, args ...string) string {
+func cmdDebugStr(cmd *exec.Cmd) string {
env := make(map[string]string)
for _, kv := range cmd.Env {
- split := strings.Split(kv, "=")
+ split := strings.SplitN(kv, "=", 2)
k, v := split[0], split[1]
env[k] = v
}
- var quotedArgs []string
- for _, arg := range args {
- quotedArgs = append(quotedArgs, strconv.Quote(arg))
- }
- return fmt.Sprintf("GOROOT=%v GOPATH=%v GO111MODULE=%v PWD=%v go %s", env["GOROOT"], env["GOPATH"], env["GO111MODULE"], env["PWD"], strings.Join(quotedArgs, " "))
+ var args []string
+ for _, arg := range cmd.Args {
+ quoted := strconv.Quote(arg)
+ if quoted[1:len(quoted)-1] != arg || strings.Contains(arg, " ") {
+ args = append(args, quoted)
+ } else {
+ args = append(args, arg)
+ }
+ }
+ return fmt.Sprintf("GOROOT=%v GOPATH=%v GO111MODULE=%v GOPROXY=%v PWD=%v %v", env["GOROOT"], env["GOPATH"], env["GO111MODULE"], env["GOPROXY"], env["PWD"], strings.Join(args, " "))
}
diff --git a/vendor/golang.org/x/tools/go/packages/golist_overlay.go b/vendor/golang.org/x/tools/go/packages/golist_overlay.go
index 338d6f62..de2c1dc5 100644
--- a/vendor/golang.org/x/tools/go/packages/golist_overlay.go
+++ b/vendor/golang.org/x/tools/go/packages/golist_overlay.go
@@ -1,3 +1,7 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
package packages
import (
@@ -8,9 +12,12 @@ import (
"log"
"os"
"path/filepath"
+ "regexp"
"sort"
"strconv"
"strings"
+
+ "golang.org/x/tools/internal/gocommand"
)
// processGolistOverlay provides rudimentary support for adding
@@ -89,9 +96,19 @@ func (state *golistState) processGolistOverlay(response *responseDeduper) (modif
// because the file is generated in another directory.
testVariantOf = p
continue nextPackage
+ } else if !isTestFile && hasTestFiles(p) {
+ // We're examining a test variant, but the overlaid file is
+ // a non-test file. Because the overlay implementation
+ // (currently) only adds a file to one package, skip this
+ // package, so that we can add the file to the production
+ // variant of the package. (https://golang.org/issue/36857
+ // tracks handling overlays on both the production and test
+ // variant of a package).
+ continue nextPackage
}
- // We must have already seen the package of which this is a test variant.
if pkg != nil && p != pkg && pkg.PkgPath == p.PkgPath {
+ // We have already seen the production version of the
+ // for which p is a test variant.
if hasTestFiles(p) {
testVariantOf = pkg
}
@@ -102,8 +119,11 @@ func (state *golistState) processGolistOverlay(response *responseDeduper) (modif
}
}
}
- // The overlay could have included an entirely new package.
- if pkg == nil {
+ // The overlay could have included an entirely new package or an
+ // ad-hoc package. An ad-hoc package is one that we have manually
+ // constructed from inadequate `go list` results for a file= query.
+ // It will have the ID command-line-arguments.
+ if pkg == nil || pkg.ID == "command-line-arguments" {
// Try to find the module or gopath dir the file is contained in.
// Then for modules, add the module opath to the beginning.
pkgPath, ok, err := state.getPkgPath(dir)
@@ -127,35 +147,40 @@ func (state *golistState) processGolistOverlay(response *responseDeduper) (modif
id = fmt.Sprintf("%s [%s.test]", pkgPath, pkgPath)
}
}
- // Try to reclaim a package with the same ID, if it exists in the response.
- for _, p := range response.dr.Packages {
- if reclaimPackage(p, id, opath, contents) {
- pkg = p
- break
- }
- }
- // Otherwise, create a new package.
- if pkg == nil {
- pkg = &Package{
- PkgPath: pkgPath,
- ID: id,
- Name: pkgName,
- Imports: make(map[string]*Package),
- }
- response.addPackage(pkg)
- havePkgs[pkg.PkgPath] = id
- // Add the production package's sources for a test variant.
- if isTestFile && !isXTest && testVariantOf != nil {
- pkg.GoFiles = append(pkg.GoFiles, testVariantOf.GoFiles...)
- pkg.CompiledGoFiles = append(pkg.CompiledGoFiles, testVariantOf.CompiledGoFiles...)
- // Add the package under test and its imports to the test variant.
- pkg.forTest = testVariantOf.PkgPath
- for k, v := range testVariantOf.Imports {
- pkg.Imports[k] = &Package{ID: v.ID}
+ if pkg != nil {
+ // TODO(rstambler): We should change the package's path and ID
+ // here. The only issue is that this messes with the roots.
+ } else {
+ // Try to reclaim a package with the same ID, if it exists in the response.
+ for _, p := range response.dr.Packages {
+ if reclaimPackage(p, id, opath, contents) {
+ pkg = p
+ break
}
}
- if isXTest {
- pkg.forTest = forTest
+ // Otherwise, create a new package.
+ if pkg == nil {
+ pkg = &Package{
+ PkgPath: pkgPath,
+ ID: id,
+ Name: pkgName,
+ Imports: make(map[string]*Package),
+ }
+ response.addPackage(pkg)
+ havePkgs[pkg.PkgPath] = id
+ // Add the production package's sources for a test variant.
+ if isTestFile && !isXTest && testVariantOf != nil {
+ pkg.GoFiles = append(pkg.GoFiles, testVariantOf.GoFiles...)
+ pkg.CompiledGoFiles = append(pkg.CompiledGoFiles, testVariantOf.CompiledGoFiles...)
+ // Add the package under test and its imports to the test variant.
+ pkg.forTest = testVariantOf.PkgPath
+ for k, v := range testVariantOf.Imports {
+ pkg.Imports[k] = &Package{ID: v.ID}
+ }
+ }
+ if isXTest {
+ pkg.forTest = forTest
+ }
}
}
}
@@ -232,7 +257,7 @@ func (state *golistState) processGolistOverlay(response *responseDeduper) (modif
return modifiedPkgs, needPkgs, err
}
-// resolveImport finds the the ID of a package given its import path.
+// resolveImport finds the ID of a package given its import path.
// In particular, it will find the right vendored copy when in GOPATH mode.
func (state *golistState) resolveImport(sourceDir, importPath string) (string, error) {
env, err := state.getEnv()
@@ -307,24 +332,25 @@ func (state *golistState) determineRootDirs() (map[string]string, error) {
}
func (state *golistState) determineRootDirsModules() (map[string]string, error) {
- // This will only return the root directory for the main module.
- // For now we only support overlays in main modules.
+ // List all of the modules--the first will be the directory for the main
+ // module. Any replaced modules will also need to be treated as roots.
// Editing files in the module cache isn't a great idea, so we don't
- // plan to ever support that, but editing files in replaced modules
- // is something we may want to support. To do that, we'll want to
- // do a go list -m to determine the replaced module's module path and
- // directory, and then a go list -m {{with .Replace}}{{.Dir}}{{end}}
- // from the main module to determine if that module is actually a replacement.
- // See bcmills's comment here: https://github.com/golang/go/issues/37629#issuecomment-594179751
- // for more information.
- out, err := state.invokeGo("list", "-m", "-json")
+ // plan to ever support that.
+ out, err := state.invokeGo("list", "-m", "-json", "all")
if err != nil {
- return nil, err
+ // 'go list all' will fail if we're outside of a module and
+ // GO111MODULE=on. Try falling back without 'all'.
+ var innerErr error
+ out, innerErr = state.invokeGo("list", "-m", "-json")
+ if innerErr != nil {
+ return nil, err
+ }
}
- m := map[string]string{}
- type jsonMod struct{ Path, Dir string }
+ roots := map[string]string{}
+ modules := map[string]string{}
+ var i int
for dec := json.NewDecoder(out); dec.More(); {
- mod := new(jsonMod)
+ mod := new(gocommand.ModuleJSON)
if err := dec.Decode(mod); err != nil {
return nil, err
}
@@ -334,10 +360,15 @@ func (state *golistState) determineRootDirsModules() (map[string]string, error)
if err != nil {
return nil, err
}
- m[absDir] = mod.Path
+ modules[absDir] = mod.Path
+ // The first result is the main module.
+ if i == 0 || mod.Replace != nil && mod.Replace.Path != "" {
+ roots[absDir] = mod.Path
+ }
}
+ i++
}
- return m, nil
+ return roots, nil
}
func (state *golistState) determineRootDirsGOPATH() (map[string]string, error) {
@@ -463,3 +494,79 @@ func maybeFixPackageName(newName string, isTestFile bool, pkgsOfDir []*Package)
p.Name = newName
}
}
+
+// This function is copy-pasted from
+// https://github.com/golang/go/blob/9706f510a5e2754595d716bd64be8375997311fb/src/cmd/go/internal/search/search.go#L360.
+// It should be deleted when we remove support for overlays from go/packages.
+//
+// NOTE: This does not handle any ./... or ./ style queries, as this function
+// doesn't know the working directory.
+//
+// matchPattern(pattern)(name) reports whether
+// name matches pattern. Pattern is a limited glob
+// pattern in which '...' means 'any string' and there
+// is no other special syntax.
+// Unfortunately, there are two special cases. Quoting "go help packages":
+//
+// First, /... at the end of the pattern can match an empty string,
+// so that net/... matches both net and packages in its subdirectories, like net/http.
+// Second, any slash-separated pattern element containing a wildcard never
+// participates in a match of the "vendor" element in the path of a vendored
+// package, so that ./... does not match packages in subdirectories of
+// ./vendor or ./mycode/vendor, but ./vendor/... and ./mycode/vendor/... do.
+// Note, however, that a directory named vendor that itself contains code
+// is not a vendored package: cmd/vendor would be a command named vendor,
+// and the pattern cmd/... matches it.
+func matchPattern(pattern string) func(name string) bool {
+ // Convert pattern to regular expression.
+ // The strategy for the trailing /... is to nest it in an explicit ? expression.
+ // The strategy for the vendor exclusion is to change the unmatchable
+ // vendor strings to a disallowed code point (vendorChar) and to use
+ // "(anything but that codepoint)*" as the implementation of the ... wildcard.
+ // This is a bit complicated but the obvious alternative,
+ // namely a hand-written search like in most shell glob matchers,
+ // is too easy to make accidentally exponential.
+ // Using package regexp guarantees linear-time matching.
+
+ const vendorChar = "\x00"
+
+ if strings.Contains(pattern, vendorChar) {
+ return func(name string) bool { return false }
+ }
+
+ re := regexp.QuoteMeta(pattern)
+ re = replaceVendor(re, vendorChar)
+ switch {
+ case strings.HasSuffix(re, `/`+vendorChar+`/\.\.\.`):
+ re = strings.TrimSuffix(re, `/`+vendorChar+`/\.\.\.`) + `(/vendor|/` + vendorChar + `/\.\.\.)`
+ case re == vendorChar+`/\.\.\.`:
+ re = `(/vendor|/` + vendorChar + `/\.\.\.)`
+ case strings.HasSuffix(re, `/\.\.\.`):
+ re = strings.TrimSuffix(re, `/\.\.\.`) + `(/\.\.\.)?`
+ }
+ re = strings.ReplaceAll(re, `\.\.\.`, `[^`+vendorChar+`]*`)
+
+ reg := regexp.MustCompile(`^` + re + `$`)
+
+ return func(name string) bool {
+ if strings.Contains(name, vendorChar) {
+ return false
+ }
+ return reg.MatchString(replaceVendor(name, vendorChar))
+ }
+}
+
+// replaceVendor returns the result of replacing
+// non-trailing vendor path elements in x with repl.
+func replaceVendor(x, repl string) string {
+ if !strings.Contains(x, "vendor") {
+ return x
+ }
+ elem := strings.Split(x, "/")
+ for i := 0; i < len(elem)-1; i++ {
+ if elem[i] == "vendor" {
+ elem[i] = repl
+ }
+ }
+ return strings.Join(elem, "/")
+}
diff --git a/vendor/golang.org/x/tools/go/packages/packages.go b/vendor/golang.org/x/tools/go/packages/packages.go
index 04053f1e..38475e87 100644
--- a/vendor/golang.org/x/tools/go/packages/packages.go
+++ b/vendor/golang.org/x/tools/go/packages/packages.go
@@ -144,6 +144,12 @@ type Config struct {
// the build system's query tool.
BuildFlags []string
+ // modFile will be used for -modfile in go command invocations.
+ modFile string
+
+ // modFlag will be used for -modfile in go command invocations.
+ modFlag string
+
// Fset provides source position information for syntax trees and types.
// If Fset is nil, Load will use a new fileset, but preserve Fset's value.
Fset *token.FileSet
@@ -289,6 +295,11 @@ type Package struct {
// including assembly, C, C++, Fortran, Objective-C, SWIG, and so on.
OtherFiles []string
+ // IgnoredFiles lists source files that are not part of the package
+ // using the current build configuration but that might be part of
+ // the package using other build configurations.
+ IgnoredFiles []string
+
// ExportFile is the absolute path to a file containing type
// information for the package as provided by the build system.
ExportFile string
@@ -361,6 +372,12 @@ func init() {
packagesinternal.SetGoCmdRunner = func(config interface{}, runner *gocommand.Runner) {
config.(*Config).gocmdRunner = runner
}
+ packagesinternal.SetModFile = func(config interface{}, value string) {
+ config.(*Config).modFile = value
+ }
+ packagesinternal.SetModFlag = func(config interface{}, value string) {
+ config.(*Config).modFlag = value
+ }
packagesinternal.TypecheckCgo = int(typecheckCgo)
}
@@ -404,6 +421,7 @@ type flatPackage struct {
GoFiles []string `json:",omitempty"`
CompiledGoFiles []string `json:",omitempty"`
OtherFiles []string `json:",omitempty"`
+ IgnoredFiles []string `json:",omitempty"`
ExportFile string `json:",omitempty"`
Imports map[string]string `json:",omitempty"`
}
@@ -426,6 +444,7 @@ func (p *Package) MarshalJSON() ([]byte, error) {
GoFiles: p.GoFiles,
CompiledGoFiles: p.CompiledGoFiles,
OtherFiles: p.OtherFiles,
+ IgnoredFiles: p.IgnoredFiles,
ExportFile: p.ExportFile,
}
if len(p.Imports) > 0 {
@@ -712,7 +731,8 @@ func (ld *loader) refine(roots []string, list ...*Package) ([]*Package, error) {
result[i] = lpkg.Package
}
for i := range ld.pkgs {
- // Clear all unrequested fields, for extra de-Hyrum-ization.
+ // Clear all unrequested fields,
+ // to catch programs that use more than they request.
if ld.requestedMode&NeedName == 0 {
ld.pkgs[i].Name = ""
ld.pkgs[i].PkgPath = ""
@@ -720,6 +740,7 @@ func (ld *loader) refine(roots []string, list ...*Package) ([]*Package, error) {
if ld.requestedMode&NeedFiles == 0 {
ld.pkgs[i].GoFiles = nil
ld.pkgs[i].OtherFiles = nil
+ ld.pkgs[i].IgnoredFiles = nil
}
if ld.requestedMode&NeedCompiledGoFiles == 0 {
ld.pkgs[i].CompiledGoFiles = nil
diff --git a/vendor/golang.org/x/tools/internal/analysisinternal/BUILD.bazel b/vendor/golang.org/x/tools/internal/analysisinternal/BUILD.bazel
index 74f0b08b..eadd27f9 100644
--- a/vendor/golang.org/x/tools/internal/analysisinternal/BUILD.bazel
+++ b/vendor/golang.org/x/tools/internal/analysisinternal/BUILD.bazel
@@ -6,5 +6,8 @@ go_library(
importmap = "kope.io/etcd-manager/vendor/golang.org/x/tools/internal/analysisinternal",
importpath = "golang.org/x/tools/internal/analysisinternal",
visibility = ["//vendor/golang.org/x/tools:__subpackages__"],
- deps = ["//vendor/golang.org/x/tools/go/ast/astutil:go_default_library"],
+ deps = [
+ "//vendor/golang.org/x/tools/go/ast/astutil:go_default_library",
+ "//vendor/golang.org/x/tools/internal/lsp/fuzzy:go_default_library",
+ ],
)
diff --git a/vendor/golang.org/x/tools/internal/analysisinternal/analysis.go b/vendor/golang.org/x/tools/internal/analysisinternal/analysis.go
index 14b96a79..01f6e829 100644
--- a/vendor/golang.org/x/tools/internal/analysisinternal/analysis.go
+++ b/vendor/golang.org/x/tools/internal/analysisinternal/analysis.go
@@ -14,6 +14,12 @@ import (
"strings"
"golang.org/x/tools/go/ast/astutil"
+ "golang.org/x/tools/internal/lsp/fuzzy"
+)
+
+var (
+ GetTypeErrors func(p interface{}) []types.Error
+ SetTypeErrors func(p interface{}, errors []types.Error)
)
func TypeErrorEndPos(fset *token.FileSet, src []byte, start token.Pos) token.Pos {
@@ -45,7 +51,7 @@ func ZeroValue(fset *token.FileSet, f *ast.File, pkg *types.Package, typ types.T
default:
panic("unknown basic type")
}
- case *types.Chan, *types.Interface, *types.Map, *types.Pointer, *types.Signature, *types.Slice:
+ case *types.Chan, *types.Interface, *types.Map, *types.Pointer, *types.Signature, *types.Slice, *types.Array:
return ast.NewIdent("nil")
case *types.Struct:
texpr := TypeExpr(fset, f, pkg, typ) // typ because we want the name here.
@@ -55,21 +61,23 @@ func ZeroValue(fset *token.FileSet, f *ast.File, pkg *types.Package, typ types.T
return &ast.CompositeLit{
Type: texpr,
}
- case *types.Array:
- texpr := TypeExpr(fset, f, pkg, u.Elem())
- if texpr == nil {
- return nil
- }
- return &ast.CompositeLit{
- Type: &ast.ArrayType{
- Elt: texpr,
- Len: &ast.BasicLit{Kind: token.INT, Value: fmt.Sprintf("%v", u.Len())},
- },
- }
}
return nil
}
+// IsZeroValue checks whether the given expression is a 'zero value' (as determined by output of
+// analysisinternal.ZeroValue)
+func IsZeroValue(expr ast.Expr) bool {
+ switch e := expr.(type) {
+ case *ast.BasicLit:
+ return e.Value == "0" || e.Value == `""`
+ case *ast.Ident:
+ return e.Name == "nil" || e.Name == "false"
+ default:
+ return false
+ }
+}
+
func TypeExpr(fset *token.FileSet, f *ast.File, pkg *types.Package, typ types.Type) ast.Expr {
switch t := typ.(type) {
case *types.Basic:
@@ -79,7 +87,96 @@ func TypeExpr(fset *token.FileSet, f *ast.File, pkg *types.Package, typ types.Ty
default:
return ast.NewIdent(t.Name())
}
+ case *types.Pointer:
+ x := TypeExpr(fset, f, pkg, t.Elem())
+ if x == nil {
+ return nil
+ }
+ return &ast.UnaryExpr{
+ Op: token.MUL,
+ X: x,
+ }
+ case *types.Array:
+ elt := TypeExpr(fset, f, pkg, t.Elem())
+ if elt == nil {
+ return nil
+ }
+ return &ast.ArrayType{
+ Len: &ast.BasicLit{
+ Kind: token.INT,
+ Value: fmt.Sprintf("%d", t.Len()),
+ },
+ Elt: elt,
+ }
+ case *types.Slice:
+ elt := TypeExpr(fset, f, pkg, t.Elem())
+ if elt == nil {
+ return nil
+ }
+ return &ast.ArrayType{
+ Elt: elt,
+ }
+ case *types.Map:
+ key := TypeExpr(fset, f, pkg, t.Key())
+ value := TypeExpr(fset, f, pkg, t.Elem())
+ if key == nil || value == nil {
+ return nil
+ }
+ return &ast.MapType{
+ Key: key,
+ Value: value,
+ }
+ case *types.Chan:
+ dir := ast.ChanDir(t.Dir())
+ if t.Dir() == types.SendRecv {
+ dir = ast.SEND | ast.RECV
+ }
+ value := TypeExpr(fset, f, pkg, t.Elem())
+ if value == nil {
+ return nil
+ }
+ return &ast.ChanType{
+ Dir: dir,
+ Value: value,
+ }
+ case *types.Signature:
+ var params []*ast.Field
+ for i := 0; i < t.Params().Len(); i++ {
+ p := TypeExpr(fset, f, pkg, t.Params().At(i).Type())
+ if p == nil {
+ return nil
+ }
+ params = append(params, &ast.Field{
+ Type: p,
+ Names: []*ast.Ident{
+ {
+ Name: t.Params().At(i).Name(),
+ },
+ },
+ })
+ }
+ var returns []*ast.Field
+ for i := 0; i < t.Results().Len(); i++ {
+ r := TypeExpr(fset, f, pkg, t.Results().At(i).Type())
+ if r == nil {
+ return nil
+ }
+ returns = append(returns, &ast.Field{
+ Type: r,
+ })
+ }
+ return &ast.FuncType{
+ Params: &ast.FieldList{
+ List: params,
+ },
+ Results: &ast.FieldList{
+ List: returns,
+ },
+ }
case *types.Named:
+ if t.Obj().Pkg() == nil {
+ return ast.NewIdent(t.Obj().Name())
+ }
if t.Obj().Pkg() == pkg {
return ast.NewIdent(t.Obj().Name())
}
@@ -101,19 +198,15 @@ func TypeExpr(fset *token.FileSet, f *ast.File, pkg *types.Package, typ types.Ty
X: ast.NewIdent(pkgName),
Sel: ast.NewIdent(t.Obj().Name()),
}
- case *types.Pointer:
- return &ast.UnaryExpr{
- Op: token.MUL,
- X: TypeExpr(fset, f, pkg, t.Elem()),
- }
+ case *types.Struct:
+ return ast.NewIdent(t.String())
+ case *types.Interface:
+ return ast.NewIdent(t.String())
default:
- return nil // TODO: anonymous structs, but who does that
+ return nil
}
}
-var GetTypeErrors = func(p interface{}) []types.Error { return nil }
-var SetTypeErrors = func(p interface{}, errors []types.Error) {}
-
type TypeErrorPass string
const (
@@ -121,3 +214,212 @@ const (
NoResultValues TypeErrorPass = "noresultvalues"
UndeclaredName TypeErrorPass = "undeclaredname"
)
+
+// StmtToInsertVarBefore returns the ast.Stmt before which we can safely insert a new variable.
+// Some examples:
+//
+// Basic Example:
+// z := 1
+// y := z + x
+// If x is undeclared, then this function would return `y := z + x`, so that we
+// can insert `x := ` on the line before `y := z + x`.
+//
+// If stmt example:
+// if z == 1 {
+// } else if z == y {}
+// If y is undeclared, then this function would return `if z == 1 {`, because we cannot
+// insert a statement between an if and an else if statement. As a result, we need to find
+// the top of the if chain to insert `y := ` before.
+func StmtToInsertVarBefore(path []ast.Node) ast.Stmt {
+ enclosingIndex := -1
+ for i, p := range path {
+ if _, ok := p.(ast.Stmt); ok {
+ enclosingIndex = i
+ break
+ }
+ }
+ if enclosingIndex == -1 {
+ return nil
+ }
+ enclosingStmt := path[enclosingIndex]
+ switch enclosingStmt.(type) {
+ case *ast.IfStmt:
+ // The enclosingStmt is inside of the if declaration,
+ // We need to check if we are in an else-if stmt and
+ // get the base if statement.
+ return baseIfStmt(path, enclosingIndex)
+ case *ast.CaseClause:
+ // Get the enclosing switch stmt if the enclosingStmt is
+ // inside of the case statement.
+ for i := enclosingIndex + 1; i < len(path); i++ {
+ if node, ok := path[i].(*ast.SwitchStmt); ok {
+ return node
+ } else if node, ok := path[i].(*ast.TypeSwitchStmt); ok {
+ return node
+ }
+ }
+ }
+ if len(path) <= enclosingIndex+1 {
+ return enclosingStmt.(ast.Stmt)
+ }
+ // Check if the enclosing statement is inside another node.
+ switch expr := path[enclosingIndex+1].(type) {
+ case *ast.IfStmt:
+ // Get the base if statement.
+ return baseIfStmt(path, enclosingIndex+1)
+ case *ast.ForStmt:
+ if expr.Init == enclosingStmt || expr.Post == enclosingStmt {
+ return expr
+ }
+ }
+ return enclosingStmt.(ast.Stmt)
+}
+
+// baseIfStmt walks up the if/else-if chain until we get to
+// the top of the current if chain.
+func baseIfStmt(path []ast.Node, index int) ast.Stmt {
+ stmt := path[index]
+ for i := index + 1; i < len(path); i++ {
+ if node, ok := path[i].(*ast.IfStmt); ok && node.Else == stmt {
+ stmt = node
+ continue
+ }
+ break
+ }
+ return stmt.(ast.Stmt)
+}
+
+// WalkASTWithParent walks the AST rooted at n. The semantics are
+// similar to ast.Inspect except it does not call f(nil).
+func WalkASTWithParent(n ast.Node, f func(n ast.Node, parent ast.Node) bool) {
+ var ancestors []ast.Node
+ ast.Inspect(n, func(n ast.Node) (recurse bool) {
+ if n == nil {
+ ancestors = ancestors[:len(ancestors)-1]
+ return false
+ }
+
+ var parent ast.Node
+ if len(ancestors) > 0 {
+ parent = ancestors[len(ancestors)-1]
+ }
+ ancestors = append(ancestors, n)
+ return f(n, parent)
+ })
+}
+
+// FindMatchingIdents finds all identifiers in 'node' that match any of the given types.
+// 'pos' represents the position at which the identifiers may be inserted. 'pos' must be within
+// the scope of each of identifier we select. Otherwise, we will insert a variable at 'pos' that
+// is unrecognized.
+func FindMatchingIdents(typs []types.Type, node ast.Node, pos token.Pos, info *types.Info, pkg *types.Package) map[types.Type][]*ast.Ident {
+ matches := map[types.Type][]*ast.Ident{}
+ // Initialize matches to contain the variable types we are searching for.
+ for _, typ := range typs {
+ if typ == nil {
+ continue
+ }
+ matches[typ] = []*ast.Ident{}
+ }
+ seen := map[types.Object]struct{}{}
+ ast.Inspect(node, func(n ast.Node) bool {
+ if n == nil {
+ return false
+ }
+ // Prevent circular definitions. If 'pos' is within an assignment statement, do not
+ // allow any identifiers in that assignment statement to be selected. Otherwise,
+ // we could do the following, where 'x' satisfies the type of 'f0':
+ //
+ // x := fakeStruct{f0: x}
+ //
+ assignment, ok := n.(*ast.AssignStmt)
+ if ok && pos > assignment.Pos() && pos <= assignment.End() {
+ return false
+ }
+ if n.End() > pos {
+ return n.Pos() <= pos
+ }
+ ident, ok := n.(*ast.Ident)
+ if !ok || ident.Name == "_" {
+ return true
+ }
+ obj := info.Defs[ident]
+ if obj == nil || obj.Type() == nil {
+ return true
+ }
+ if _, ok := obj.(*types.TypeName); ok {
+ return true
+ }
+ // Prevent duplicates in matches' values.
+ if _, ok = seen[obj]; ok {
+ return true
+ }
+ seen[obj] = struct{}{}
+ // Find the scope for the given position. Then, check whether the object
+ // exists within the scope.
+ innerScope := pkg.Scope().Innermost(pos)
+ if innerScope == nil {
+ return true
+ }
+ _, foundObj := innerScope.LookupParent(ident.Name, pos)
+ if foundObj != obj {
+ return true
+ }
+ // The object must match one of the types that we are searching for.
+ if idents, ok := matches[obj.Type()]; ok {
+ matches[obj.Type()] = append(idents, ast.NewIdent(ident.Name))
+ }
+ // If the object type does not exactly match any of the target types, greedily
+ // find the first target type that the object type can satisfy.
+ for typ := range matches {
+ if obj.Type() == typ {
+ continue
+ }
+ if equivalentTypes(obj.Type(), typ) {
+ matches[typ] = append(matches[typ], ast.NewIdent(ident.Name))
+ }
+ }
+ return true
+ })
+ return matches
+}
+
+func equivalentTypes(want, got types.Type) bool {
+ if want == got || types.Identical(want, got) {
+ return true
+ }
+ // Code segment to help check for untyped equality from (golang/go#32146).
+ if rhs, ok := want.(*types.Basic); ok && rhs.Info()&types.IsUntyped > 0 {
+ if lhs, ok := got.Underlying().(*types.Basic); ok {
+ return rhs.Info()&types.IsConstType == lhs.Info()&types.IsConstType
+ }
+ }
+ return types.AssignableTo(want, got)
+}
+
+// FindBestMatch employs fuzzy matching to evaluate the similarity of each given identifier to the
+// given pattern. We return the identifier whose name is most similar to the pattern.
+func FindBestMatch(pattern string, idents []*ast.Ident) ast.Expr {
+ fuzz := fuzzy.NewMatcher(pattern)
+ var bestFuzz ast.Expr
+ highScore := float32(0) // minimum score is 0 (no match)
+ for _, ident := range idents {
+ // TODO: Improve scoring algorithm.
+ score := fuzz.Score(ident.Name)
+ if score > highScore {
+ highScore = score
+ bestFuzz = ident
+ } else if score == 0 {
+ // Order matters in the fuzzy matching algorithm. If we find no match
+ // when matching the target to the identifier, try matching the identifier
+ // to the target.
+ revFuzz := fuzzy.NewMatcher(ident.Name)
+ revScore := revFuzz.Score(pattern)
+ if revScore > highScore {
+ highScore = revScore
+ bestFuzz = ident
+ }
+ }
+ }
+ return bestFuzz
+}
diff --git a/vendor/golang.org/x/tools/internal/event/core/event.go b/vendor/golang.org/x/tools/internal/event/core/event.go
index e37b4949..a6cf0e64 100644
--- a/vendor/golang.org/x/tools/internal/event/core/event.go
+++ b/vendor/golang.org/x/tools/internal/event/core/event.go
@@ -12,7 +12,7 @@ import (
"golang.org/x/tools/internal/event/label"
)
-// Event holds the information about an event of note that ocurred.
+// Event holds the information about an event of note that occurred.
type Event struct {
at time.Time
diff --git a/vendor/golang.org/x/tools/internal/gocommand/BUILD.bazel b/vendor/golang.org/x/tools/internal/gocommand/BUILD.bazel
index d43029fb..8c39674b 100644
--- a/vendor/golang.org/x/tools/internal/gocommand/BUILD.bazel
+++ b/vendor/golang.org/x/tools/internal/gocommand/BUILD.bazel
@@ -5,6 +5,7 @@ go_library(
srcs = [
"invoke.go",
"vendor.go",
+ "version.go",
],
importmap = "kope.io/etcd-manager/vendor/golang.org/x/tools/internal/gocommand",
importpath = "golang.org/x/tools/internal/gocommand",
diff --git a/vendor/golang.org/x/tools/internal/gocommand/invoke.go b/vendor/golang.org/x/tools/internal/gocommand/invoke.go
index f516e176..f65aad4e 100644
--- a/vendor/golang.org/x/tools/internal/gocommand/invoke.go
+++ b/vendor/golang.org/x/tools/internal/gocommand/invoke.go
@@ -13,6 +13,7 @@ import (
"os"
"os/exec"
"regexp"
+ "strconv"
"strings"
"sync"
"time"
@@ -130,6 +131,12 @@ type Invocation struct {
Verb string
Args []string
BuildFlags []string
+ ModFlag string
+ ModFile string
+ Overlay string
+ // If CleanEnv is set, the invocation will run only with the environment
+ // in Env, not starting with os.Environ.
+ CleanEnv bool
Env []string
WorkingDir string
Logf func(format string, args ...interface{})
@@ -158,17 +165,41 @@ func (i *Invocation) run(ctx context.Context, stdout, stderr io.Writer) error {
}
goArgs := []string{i.Verb}
+
+ appendModFile := func() {
+ if i.ModFile != "" {
+ goArgs = append(goArgs, "-modfile="+i.ModFile)
+ }
+ }
+ appendModFlag := func() {
+ if i.ModFlag != "" {
+ goArgs = append(goArgs, "-mod="+i.ModFlag)
+ }
+ }
+ appendOverlayFlag := func() {
+ if i.Overlay != "" {
+ goArgs = append(goArgs, "-overlay="+i.Overlay)
+ }
+ }
+
switch i.Verb {
+ case "env", "version":
+ goArgs = append(goArgs, i.Args...)
case "mod":
- // mod needs the sub-verb before build flags.
+ // mod needs the sub-verb before flags.
goArgs = append(goArgs, i.Args[0])
- goArgs = append(goArgs, i.BuildFlags...)
+ appendModFile()
goArgs = append(goArgs, i.Args[1:]...)
- case "env":
- // env doesn't take build flags.
+ case "get":
+ goArgs = append(goArgs, i.BuildFlags...)
+ appendModFile()
goArgs = append(goArgs, i.Args...)
- default:
+
+ default: // notably list and build.
goArgs = append(goArgs, i.BuildFlags...)
+ appendModFile()
+ appendModFlag()
+ appendOverlayFlag()
goArgs = append(goArgs, i.Args...)
}
cmd := exec.Command("go", goArgs...)
@@ -180,7 +211,10 @@ func (i *Invocation) run(ctx context.Context, stdout, stderr io.Writer) error {
// The Go stdlib has a special feature where if the cwd and the PWD are the
// same node then it trusts the PWD, so by setting it in the env for the child
// process we fix up all the paths returned by the go command.
- cmd.Env = append(os.Environ(), i.Env...)
+ if !i.CleanEnv {
+ cmd.Env = os.Environ()
+ }
+ cmd.Env = append(cmd.Env, i.Env...)
if i.WorkingDir != "" {
cmd.Env = append(cmd.Env, "PWD="+i.WorkingDir)
cmd.Dir = i.WorkingDir
@@ -221,10 +255,19 @@ func runCmdContext(ctx context.Context, cmd *exec.Cmd) error {
func cmdDebugStr(cmd *exec.Cmd) string {
env := make(map[string]string)
for _, kv := range cmd.Env {
- split := strings.Split(kv, "=")
+ split := strings.SplitN(kv, "=", 2)
k, v := split[0], split[1]
env[k] = v
}
- return fmt.Sprintf("GOROOT=%v GOPATH=%v GO111MODULE=%v GOPROXY=%v PWD=%v go %v", env["GOROOT"], env["GOPATH"], env["GO111MODULE"], env["GOPROXY"], env["PWD"], cmd.Args)
+ var args []string
+ for _, arg := range cmd.Args {
+ quoted := strconv.Quote(arg)
+ if quoted[1:len(quoted)-1] != arg || strings.Contains(arg, " ") {
+ args = append(args, quoted)
+ } else {
+ args = append(args, arg)
+ }
+ }
+ return fmt.Sprintf("GOROOT=%v GOPATH=%v GO111MODULE=%v GOPROXY=%v PWD=%v %v", env["GOROOT"], env["GOPATH"], env["GO111MODULE"], env["GOPROXY"], env["PWD"], strings.Join(args, " "))
}
diff --git a/vendor/golang.org/x/tools/internal/gocommand/version.go b/vendor/golang.org/x/tools/internal/gocommand/version.go
new file mode 100644
index 00000000..60d45ac0
--- /dev/null
+++ b/vendor/golang.org/x/tools/internal/gocommand/version.go
@@ -0,0 +1,40 @@
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package gocommand
+
+import (
+ "context"
+ "fmt"
+ "strings"
+)
+
+// GoVersion checks the go version by running "go list" with modules off.
+// It returns the X in Go 1.X.
+func GoVersion(ctx context.Context, inv Invocation, r *Runner) (int, error) {
+ inv.Verb = "list"
+ inv.Args = []string{"-e", "-f", `{{context.ReleaseTags}}`}
+ inv.Env = append(append([]string{}, inv.Env...), "GO111MODULE=off")
+ // Unset any unneeded flags.
+ inv.ModFile = ""
+ inv.ModFlag = ""
+ stdoutBytes, err := r.Run(ctx, inv)
+ if err != nil {
+ return 0, err
+ }
+ stdout := stdoutBytes.String()
+ if len(stdout) < 3 {
+ return 0, fmt.Errorf("bad ReleaseTags output: %q", stdout)
+ }
+ // Split up "[go1.1 go1.15]"
+ tags := strings.Fields(stdout[1 : len(stdout)-2])
+ for i := len(tags) - 1; i >= 0; i-- {
+ var version int
+ if _, err := fmt.Sscanf(tags[i], "go1.%d", &version); err != nil {
+ continue
+ }
+ return version, nil
+ }
+ return 0, fmt.Errorf("no parseable ReleaseTags in %v", tags)
+}
diff --git a/vendor/golang.org/x/tools/internal/lsp/fuzzy/BUILD.bazel b/vendor/golang.org/x/tools/internal/lsp/fuzzy/BUILD.bazel
new file mode 100644
index 00000000..db1f5827
--- /dev/null
+++ b/vendor/golang.org/x/tools/internal/lsp/fuzzy/BUILD.bazel
@@ -0,0 +1,12 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_library")
+
+go_library(
+ name = "go_default_library",
+ srcs = [
+ "input.go",
+ "matcher.go",
+ ],
+ importmap = "kope.io/etcd-manager/vendor/golang.org/x/tools/internal/lsp/fuzzy",
+ importpath = "golang.org/x/tools/internal/lsp/fuzzy",
+ visibility = ["//vendor/golang.org/x/tools:__subpackages__"],
+)
diff --git a/vendor/golang.org/x/tools/internal/lsp/fuzzy/input.go b/vendor/golang.org/x/tools/internal/lsp/fuzzy/input.go
new file mode 100644
index 00000000..ac377035
--- /dev/null
+++ b/vendor/golang.org/x/tools/internal/lsp/fuzzy/input.go
@@ -0,0 +1,168 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package fuzzy
+
+import (
+ "unicode"
+)
+
+// RuneRole specifies the role of a rune in the context of an input.
+type RuneRole byte
+
+const (
+ // RNone specifies a rune without any role in the input (i.e., whitespace/non-ASCII).
+ RNone RuneRole = iota
+ // RSep specifies a rune with the role of segment separator.
+ RSep
+ // RTail specifies a rune which is a lower-case tail in a word in the input.
+ RTail
+ // RUCTail specifies a rune which is an upper-case tail in a word in the input.
+ RUCTail
+ // RHead specifies a rune which is the first character in a word in the input.
+ RHead
+)
+
+// RuneRoles detects the roles of each byte rune in an input string and stores it in the output
+// slice. The rune role depends on the input type. Stops when it parsed all the runes in the string
+// or when it filled the output. If output is nil, then it gets created.
+func RuneRoles(str string, reuse []RuneRole) []RuneRole {
+ var output []RuneRole
+ if cap(reuse) < len(str) {
+ output = make([]RuneRole, 0, len(str))
+ } else {
+ output = reuse[:0]
+ }
+
+ prev, prev2 := rtNone, rtNone
+ for i := 0; i < len(str); i++ {
+ r := rune(str[i])
+
+ role := RNone
+
+ curr := rtLower
+ if str[i] <= unicode.MaxASCII {
+ curr = runeType(rt[str[i]] - '0')
+ }
+
+ if curr == rtLower {
+ if prev == rtNone || prev == rtPunct {
+ role = RHead
+ } else {
+ role = RTail
+ }
+ } else if curr == rtUpper {
+ role = RHead
+
+ if prev == rtUpper {
+ // This and previous characters are both upper case.
+
+ if i+1 == len(str) {
+ // This is last character, previous was also uppercase -> this is UCTail
+ // i.e., (current char is C): aBC / BC / ABC
+ role = RUCTail
+ }
+ }
+ } else if curr == rtPunct {
+ switch r {
+ case '.', ':':
+ role = RSep
+ }
+ }
+ if curr != rtLower {
+ if i > 1 && output[i-1] == RHead && prev2 == rtUpper && (output[i-2] == RHead || output[i-2] == RUCTail) {
+ // The previous two characters were uppercase. The current one is not a lower case, so the
+ // previous one can't be a HEAD. Make it a UCTail.
+ // i.e., (last char is current char - B must be a UCTail): ABC / ZABC / AB.
+ output[i-1] = RUCTail
+ }
+ }
+
+ output = append(output, role)
+ prev2 = prev
+ prev = curr
+ }
+ return output
+}
+
+type runeType byte
+
+const (
+ rtNone runeType = iota
+ rtPunct
+ rtLower
+ rtUpper
+)
+
+const rt = "00000000000000000000000000000000000000000000001122222222221000000333333333333333333333333330000002222222222222222222222222200000"
+
+// LastSegment returns the substring representing the last segment from the input, where each
+// byte has an associated RuneRole in the roles slice. This makes sense only for inputs of Symbol
+// or Filename type.
+func LastSegment(input string, roles []RuneRole) string {
+ // Exclude ending separators.
+ end := len(input) - 1
+ for end >= 0 && roles[end] == RSep {
+ end--
+ }
+ if end < 0 {
+ return ""
+ }
+
+ start := end - 1
+ for start >= 0 && roles[start] != RSep {
+ start--
+ }
+
+ return input[start+1 : end+1]
+}
+
+// ToLower transforms the input string to lower case, which is stored in the output byte slice.
+// The lower casing considers only ASCII values - non ASCII values are left unmodified.
+// Stops when parsed all input or when it filled the output slice. If output is nil, then it gets
+// created.
+func ToLower(input string, reuse []byte) []byte {
+ output := reuse
+ if cap(reuse) < len(input) {
+ output = make([]byte, len(input))
+ }
+
+ for i := 0; i < len(input); i++ {
+ r := rune(input[i])
+ if r <= unicode.MaxASCII {
+ if 'A' <= r && r <= 'Z' {
+ r += 'a' - 'A'
+ }
+ }
+ output[i] = byte(r)
+ }
+ return output[:len(input)]
+}
+
+// WordConsumer defines a consumer for a word delimited by the [start,end) byte offsets in an input
+// (start is inclusive, end is exclusive).
+type WordConsumer func(start, end int)
+
+// Words find word delimiters in an input based on its bytes' mappings to rune roles. The offset
+// delimiters for each word are fed to the provided consumer function.
+func Words(roles []RuneRole, consume WordConsumer) {
+ var wordStart int
+ for i, r := range roles {
+ switch r {
+ case RUCTail, RTail:
+ case RHead, RNone, RSep:
+ if i != wordStart {
+ consume(wordStart, i)
+ }
+ wordStart = i
+ if r != RHead {
+ // Skip this character.
+ wordStart = i + 1
+ }
+ }
+ }
+ if wordStart != len(roles) {
+ consume(wordStart, len(roles))
+ }
+}
diff --git a/vendor/golang.org/x/tools/internal/lsp/fuzzy/matcher.go b/vendor/golang.org/x/tools/internal/lsp/fuzzy/matcher.go
new file mode 100644
index 00000000..16a64309
--- /dev/null
+++ b/vendor/golang.org/x/tools/internal/lsp/fuzzy/matcher.go
@@ -0,0 +1,398 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Package fuzzy implements a fuzzy matching algorithm.
+package fuzzy
+
+import (
+ "bytes"
+ "fmt"
+)
+
+const (
+ // MaxInputSize is the maximum size of the input scored against the fuzzy matcher. Longer inputs
+ // will be truncated to this size.
+ MaxInputSize = 127
+ // MaxPatternSize is the maximum size of the pattern used to construct the fuzzy matcher. Longer
+ // inputs are truncated to this size.
+ MaxPatternSize = 63
+)
+
+type scoreVal int
+
+func (s scoreVal) val() int {
+ return int(s) >> 1
+}
+
+func (s scoreVal) prevK() int {
+ return int(s) & 1
+}
+
+func score(val int, prevK int /*0 or 1*/) scoreVal {
+ return scoreVal(val<<1 + prevK)
+}
+
+// Matcher implements a fuzzy matching algorithm for scoring candidates against a pattern.
+// The matcher does not support parallel usage.
+type Matcher struct {
+ pattern string
+ patternLower []byte // lower-case version of the pattern
+ patternShort []byte // first characters of the pattern
+ caseSensitive bool // set if the pattern is mix-cased
+
+ patternRoles []RuneRole // the role of each character in the pattern
+ roles []RuneRole // the role of each character in the tested string
+
+ scores [MaxInputSize + 1][MaxPatternSize + 1][2]scoreVal
+
+ scoreScale float32
+
+ lastCandidateLen int // in bytes
+ lastCandidateMatched bool
+
+ // Here we save the last candidate in lower-case. This is basically a byte slice we reuse for
+ // performance reasons, so the slice is not reallocated for every candidate.
+ lowerBuf [MaxInputSize]byte
+ rolesBuf [MaxInputSize]RuneRole
+}
+
+func (m *Matcher) bestK(i, j int) int {
+ if m.scores[i][j][0].val() < m.scores[i][j][1].val() {
+ return 1
+ }
+ return 0
+}
+
+// NewMatcher returns a new fuzzy matcher for scoring candidates against the provided pattern.
+func NewMatcher(pattern string) *Matcher {
+ if len(pattern) > MaxPatternSize {
+ pattern = pattern[:MaxPatternSize]
+ }
+
+ m := &Matcher{
+ pattern: pattern,
+ patternLower: ToLower(pattern, nil),
+ }
+
+ for i, c := range m.patternLower {
+ if pattern[i] != c {
+ m.caseSensitive = true
+ break
+ }
+ }
+
+ if len(pattern) > 3 {
+ m.patternShort = m.patternLower[:3]
+ } else {
+ m.patternShort = m.patternLower
+ }
+
+ m.patternRoles = RuneRoles(pattern, nil)
+
+ if len(pattern) > 0 {
+ maxCharScore := 4
+ m.scoreScale = 1 / float32(maxCharScore*len(pattern))
+ }
+
+ return m
+}
+
+// Score returns the score returned by matching the candidate to the pattern.
+// This is not designed for parallel use. Multiple candidates must be scored sequentially.
+// Returns a score between 0 and 1 (0 - no match, 1 - perfect match).
+func (m *Matcher) Score(candidate string) float32 {
+ if len(candidate) > MaxInputSize {
+ candidate = candidate[:MaxInputSize]
+ }
+ lower := ToLower(candidate, m.lowerBuf[:])
+ m.lastCandidateLen = len(candidate)
+
+ if len(m.pattern) == 0 {
+ // Empty patterns perfectly match candidates.
+ return 1
+ }
+
+ if m.match(candidate, lower) {
+ sc := m.computeScore(candidate, lower)
+ if sc > minScore/2 && !m.poorMatch() {
+ m.lastCandidateMatched = true
+ if len(m.pattern) == len(candidate) {
+ // Perfect match.
+ return 1
+ }
+
+ if sc < 0 {
+ sc = 0
+ }
+ normalizedScore := float32(sc) * m.scoreScale
+ if normalizedScore > 1 {
+ normalizedScore = 1
+ }
+
+ return normalizedScore
+ }
+ }
+
+ m.lastCandidateMatched = false
+ return 0
+}
+
+const minScore = -10000
+
+// MatchedRanges returns matches ranges for the last scored string as a flattened array of
+// [begin, end) byte offset pairs.
+func (m *Matcher) MatchedRanges() []int {
+ if len(m.pattern) == 0 || !m.lastCandidateMatched {
+ return nil
+ }
+ i, j := m.lastCandidateLen, len(m.pattern)
+ if m.scores[i][j][0].val() < minScore/2 && m.scores[i][j][1].val() < minScore/2 {
+ return nil
+ }
+
+ var ret []int
+ k := m.bestK(i, j)
+ for i > 0 {
+ take := (k == 1)
+ k = m.scores[i][j][k].prevK()
+ if take {
+ if len(ret) == 0 || ret[len(ret)-1] != i {
+ ret = append(ret, i)
+ ret = append(ret, i-1)
+ } else {
+ ret[len(ret)-1] = i - 1
+ }
+ j--
+ }
+ i--
+ }
+ // Reverse slice.
+ for i := 0; i < len(ret)/2; i++ {
+ ret[i], ret[len(ret)-1-i] = ret[len(ret)-1-i], ret[i]
+ }
+ return ret
+}
+
+func (m *Matcher) match(candidate string, candidateLower []byte) bool {
+ i, j := 0, 0
+ for ; i < len(candidateLower) && j < len(m.patternLower); i++ {
+ if candidateLower[i] == m.patternLower[j] {
+ j++
+ }
+ }
+ if j != len(m.patternLower) {
+ return false
+ }
+
+ // The input passes the simple test against pattern, so it is time to classify its characters.
+ // Character roles are used below to find the last segment.
+ m.roles = RuneRoles(candidate, m.rolesBuf[:])
+
+ return true
+}
+
+func (m *Matcher) computeScore(candidate string, candidateLower []byte) int {
+ pattLen, candLen := len(m.pattern), len(candidate)
+
+ for j := 0; j <= len(m.pattern); j++ {
+ m.scores[0][j][0] = minScore << 1
+ m.scores[0][j][1] = minScore << 1
+ }
+ m.scores[0][0][0] = score(0, 0) // Start with 0.
+
+ segmentsLeft, lastSegStart := 1, 0
+ for i := 0; i < candLen; i++ {
+ if m.roles[i] == RSep {
+ segmentsLeft++
+ lastSegStart = i + 1
+ }
+ }
+
+ // A per-character bonus for a consecutive match.
+ consecutiveBonus := 2
+ wordIdx := 0 // Word count within segment.
+ for i := 1; i <= candLen; i++ {
+
+ role := m.roles[i-1]
+ isHead := role == RHead
+
+ if isHead {
+ wordIdx++
+ } else if role == RSep && segmentsLeft > 1 {
+ wordIdx = 0
+ segmentsLeft--
+ }
+
+ var skipPenalty int
+ if i == 1 || (i-1) == lastSegStart {
+ // Skipping the start of first or last segment.
+ skipPenalty++
+ }
+
+ for j := 0; j <= pattLen; j++ {
+ // By default, we don't have a match. Fill in the skip data.
+ m.scores[i][j][1] = minScore << 1
+
+ // Compute the skip score.
+ k := 0
+ if m.scores[i-1][j][0].val() < m.scores[i-1][j][1].val() {
+ k = 1
+ }
+
+ skipScore := m.scores[i-1][j][k].val()
+ // Do not penalize missing characters after the last matched segment.
+ if j != pattLen {
+ skipScore -= skipPenalty
+ }
+ m.scores[i][j][0] = score(skipScore, k)
+
+ if j == 0 || candidateLower[i-1] != m.patternLower[j-1] {
+ // Not a match.
+ continue
+ }
+ pRole := m.patternRoles[j-1]
+
+ if role == RTail && pRole == RHead {
+ if j > 1 {
+ // Not a match: a head in the pattern matches a tail character in the candidate.
+ continue
+ }
+ // Special treatment for the first character of the pattern. We allow
+ // matches in the middle of a word if they are long enough, at least
+ // min(3, pattern.length) characters.
+ if !bytes.HasPrefix(candidateLower[i-1:], m.patternShort) {
+ continue
+ }
+ }
+
+ // Compute the char score.
+ var charScore int
+ // Bonus 1: the char is in the candidate's last segment.
+ if segmentsLeft <= 1 {
+ charScore++
+ }
+ // Bonus 2: Case match or a Head in the pattern aligns with one in the word.
+ // Single-case patterns lack segmentation signals and we assume any character
+ // can be a head of a segment.
+ if candidate[i-1] == m.pattern[j-1] || role == RHead && (!m.caseSensitive || pRole == RHead) {
+ charScore++
+ }
+
+ // Penalty 1: pattern char is Head, candidate char is Tail.
+ if role == RTail && pRole == RHead {
+ charScore--
+ }
+ // Penalty 2: first pattern character matched in the middle of a word.
+ if j == 1 && role == RTail {
+ charScore -= 4
+ }
+
+ // Third dimension encodes whether there is a gap between the previous match and the current
+ // one.
+ for k := 0; k < 2; k++ {
+ sc := m.scores[i-1][j-1][k].val() + charScore
+
+ isConsecutive := k == 1 || i-1 == 0 || i-1 == lastSegStart
+ if isConsecutive {
+ // Bonus 3: a consecutive match. First character match also gets a bonus to
+ // ensure prefix final match score normalizes to 1.0.
+ // Logically, this is a part of charScore, but we have to compute it here because it
+ // only applies for consecutive matches (k == 1).
+ sc += consecutiveBonus
+ }
+ if k == 0 {
+ // Penalty 3: Matching inside a segment (and previous char wasn't matched). Penalize for the lack
+ // of alignment.
+ if role == RTail || role == RUCTail {
+ sc -= 3
+ }
+ }
+
+ if sc > m.scores[i][j][1].val() {
+ m.scores[i][j][1] = score(sc, k)
+ }
+ }
+ }
+ }
+
+ result := m.scores[len(candidate)][len(m.pattern)][m.bestK(len(candidate), len(m.pattern))].val()
+
+ return result
+}
+
+// ScoreTable returns the score table computed for the provided candidate. Used only for debugging.
+func (m *Matcher) ScoreTable(candidate string) string {
+ var buf bytes.Buffer
+
+ var line1, line2, separator bytes.Buffer
+ line1.WriteString("\t")
+ line2.WriteString("\t")
+ for j := 0; j < len(m.pattern); j++ {
+ line1.WriteString(fmt.Sprintf("%c\t\t", m.pattern[j]))
+ separator.WriteString("----------------")
+ }
+
+ buf.WriteString(line1.String())
+ buf.WriteString("\n")
+ buf.WriteString(separator.String())
+ buf.WriteString("\n")
+
+ for i := 1; i <= len(candidate); i++ {
+ line1.Reset()
+ line2.Reset()
+
+ line1.WriteString(fmt.Sprintf("%c\t", candidate[i-1]))
+ line2.WriteString("\t")
+
+ for j := 1; j <= len(m.pattern); j++ {
+ line1.WriteString(fmt.Sprintf("M%6d(%c)\t", m.scores[i][j][0].val(), dir(m.scores[i][j][0].prevK())))
+ line2.WriteString(fmt.Sprintf("H%6d(%c)\t", m.scores[i][j][1].val(), dir(m.scores[i][j][1].prevK())))
+ }
+ buf.WriteString(line1.String())
+ buf.WriteString("\n")
+ buf.WriteString(line2.String())
+ buf.WriteString("\n")
+ buf.WriteString(separator.String())
+ buf.WriteString("\n")
+ }
+
+ return buf.String()
+}
+
+func dir(prevK int) rune {
+ if prevK == 0 {
+ return 'M'
+ }
+ return 'H'
+}
+
+func (m *Matcher) poorMatch() bool {
+ if len(m.pattern) < 2 {
+ return false
+ }
+
+ i, j := m.lastCandidateLen, len(m.pattern)
+ k := m.bestK(i, j)
+
+ var counter, len int
+ for i > 0 {
+ take := (k == 1)
+ k = m.scores[i][j][k].prevK()
+ if take {
+ len++
+ if k == 0 && len < 3 && m.roles[i-1] == RTail {
+ // Short match in the middle of a word
+ counter++
+ if counter > 1 {
+ return true
+ }
+ }
+ j--
+ } else {
+ len = 0
+ }
+ i--
+ }
+ return false
+}
diff --git a/vendor/golang.org/x/tools/internal/packagesinternal/packages.go b/vendor/golang.org/x/tools/internal/packagesinternal/packages.go
index 2c4527f2..1335a5ee 100644
--- a/vendor/golang.org/x/tools/internal/packagesinternal/packages.go
+++ b/vendor/golang.org/x/tools/internal/packagesinternal/packages.go
@@ -12,3 +12,6 @@ var GetGoCmdRunner = func(config interface{}) *gocommand.Runner { return nil }
var SetGoCmdRunner = func(config interface{}, runner *gocommand.Runner) {}
var TypecheckCgo int
+
+var SetModFlag = func(config interface{}, value string) {}
+var SetModFile = func(config interface{}, value string) {}
diff --git a/vendor/golang.org/x/tools/internal/typesinternal/BUILD.bazel b/vendor/golang.org/x/tools/internal/typesinternal/BUILD.bazel
index adbf2fc1..64d9312d 100644
--- a/vendor/golang.org/x/tools/internal/typesinternal/BUILD.bazel
+++ b/vendor/golang.org/x/tools/internal/typesinternal/BUILD.bazel
@@ -2,7 +2,11 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library")
go_library(
name = "go_default_library",
- srcs = ["types.go"],
+ srcs = [
+ "errorcode.go",
+ "errorcode_string.go",
+ "types.go",
+ ],
importmap = "kope.io/etcd-manager/vendor/golang.org/x/tools/internal/typesinternal",
importpath = "golang.org/x/tools/internal/typesinternal",
visibility = ["//vendor/golang.org/x/tools:__subpackages__"],
diff --git a/vendor/golang.org/x/tools/internal/typesinternal/errorcode.go b/vendor/golang.org/x/tools/internal/typesinternal/errorcode.go
new file mode 100644
index 00000000..65473eb2
--- /dev/null
+++ b/vendor/golang.org/x/tools/internal/typesinternal/errorcode.go
@@ -0,0 +1,1358 @@
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package typesinternal
+
+//go:generate stringer -type=ErrorCode
+
+type ErrorCode int
+
+// This file defines the error codes that can be produced during type-checking.
+// Collectively, these codes provide an identifier that may be used to
+// implement special handling for certain types of errors.
+//
+// Error codes should be fine-grained enough that the exact nature of the error
+// can be easily determined, but coarse enough that they are not an
+// implementation detail of the type checking algorithm. As a rule-of-thumb,
+// errors should be considered equivalent if there is a theoretical refactoring
+// of the type checker in which they are emitted in exactly one place. For
+// example, the type checker emits different error messages for "too many
+// arguments" and "too few arguments", but one can imagine an alternative type
+// checker where this check instead just emits a single "wrong number of
+// arguments", so these errors should have the same code.
+//
+// Error code names should be as brief as possible while retaining accuracy and
+// distinctiveness. In most cases names should start with an adjective
+// describing the nature of the error (e.g. "invalid", "unused", "misplaced"),
+// and end with a noun identifying the relevant language object. For example,
+// "DuplicateDecl" or "InvalidSliceExpr". For brevity, naming follows the
+// convention that "bad" implies a problem with syntax, and "invalid" implies a
+// problem with types.
+
+const (
+ _ ErrorCode = iota
+
+ // Test is reserved for errors that only apply while in self-test mode.
+ Test
+
+ /* package names */
+
+ // BlankPkgName occurs when a package name is the blank identifier "_".
+ //
+ // Per the spec:
+ // "The PackageName must not be the blank identifier."
+ BlankPkgName
+
+ // MismatchedPkgName occurs when a file's package name doesn't match the
+ // package name already established by other files.
+ MismatchedPkgName
+
+ // InvalidPkgUse occurs when a package identifier is used outside of a
+ // selector expression.
+ //
+ // Example:
+ // import "fmt"
+ //
+ // var _ = fmt
+ InvalidPkgUse
+
+ /* imports */
+
+ // BadImportPath occurs when an import path is not valid.
+ BadImportPath
+
+ // BrokenImport occurs when importing a package fails.
+ //
+ // Example:
+ // import "amissingpackage"
+ BrokenImport
+
+ // ImportCRenamed occurs when the special import "C" is renamed. "C" is a
+ // pseudo-package, and must not be renamed.
+ //
+ // Example:
+ // import _ "C"
+ ImportCRenamed
+
+ // UnusedImport occurs when an import is unused.
+ //
+ // Example:
+ // import "fmt"
+ //
+ // func main() {}
+ UnusedImport
+
+ /* initialization */
+
+ // InvalidInitCycle occurs when an invalid cycle is detected within the
+ // initialization graph.
+ //
+ // Example:
+ // var x int = f()
+ //
+ // func f() int { return x }
+ InvalidInitCycle
+
+ /* decls */
+
+ // DuplicateDecl occurs when an identifier is declared multiple times.
+ //
+ // Example:
+ // var x = 1
+ // var x = 2
+ DuplicateDecl
+
+ // InvalidDeclCycle occurs when a declaration cycle is not valid.
+ //
+ // Example:
+ // import "unsafe"
+ //
+ // type T struct {
+ // a [n]int
+ // }
+ //
+ // var n = unsafe.Sizeof(T{})
+ InvalidDeclCycle
+
+ // InvalidTypeCycle occurs when a cycle in type definitions results in a
+ // type that is not well-defined.
+ //
+ // Example:
+ // import "unsafe"
+ //
+ // type T [unsafe.Sizeof(T{})]int
+ InvalidTypeCycle
+
+ /* decls > const */
+
+ // InvalidConstInit occurs when a const declaration has a non-constant
+ // initializer.
+ //
+ // Example:
+ // var x int
+ // const _ = x
+ InvalidConstInit
+
+ // InvalidConstVal occurs when a const value cannot be converted to its
+ // target type.
+ //
+ // TODO(findleyr): this error code and example are not very clear. Consider
+ // removing it.
+ //
+ // Example:
+ // const _ = 1 << "hello"
+ InvalidConstVal
+
+ // InvalidConstType occurs when the underlying type in a const declaration
+ // is not a valid constant type.
+ //
+ // Example:
+ // const c *int = 4
+ InvalidConstType
+
+ /* decls > var (+ other variable assignment codes) */
+
+ // UntypedNil occurs when the predeclared (untyped) value nil is used to
+ // initialize a variable declared without an explicit type.
+ //
+ // Example:
+ // var x = nil
+ UntypedNil
+
+ // WrongAssignCount occurs when the number of values on the right-hand side
+ // of an assignment or or initialization expression does not match the number
+ // of variables on the left-hand side.
+ //
+ // Example:
+ // var x = 1, 2
+ WrongAssignCount
+
+ // UnassignableOperand occurs when the left-hand side of an assignment is
+ // not assignable.
+ //
+ // Example:
+ // func f() {
+ // const c = 1
+ // c = 2
+ // }
+ UnassignableOperand
+
+ // NoNewVar occurs when a short variable declaration (':=') does not declare
+ // new variables.
+ //
+ // Example:
+ // func f() {
+ // x := 1
+ // x := 2
+ // }
+ NoNewVar
+
+ // MultiValAssignOp occurs when an assignment operation (+=, *=, etc) does
+ // not have single-valued left-hand or right-hand side.
+ //
+ // Per the spec:
+ // "In assignment operations, both the left- and right-hand expression lists
+ // must contain exactly one single-valued expression"
+ //
+ // Example:
+ // func f() int {
+ // x, y := 1, 2
+ // x, y += 1
+ // return x + y
+ // }
+ MultiValAssignOp
+
+ // InvalidIfaceAssign occurs when a value of type T is used as an
+ // interface, but T does not implement a method of the expected interface.
+ //
+ // Example:
+ // type I interface {
+ // f()
+ // }
+ //
+ // type T int
+ //
+ // var x I = T(1)
+ InvalidIfaceAssign
+
+ // InvalidChanAssign occurs when a chan assignment is invalid.
+ //
+ // Per the spec, a value x is assignable to a channel type T if:
+ // "x is a bidirectional channel value, T is a channel type, x's type V and
+ // T have identical element types, and at least one of V or T is not a
+ // defined type."
+ //
+ // Example:
+ // type T1 chan int
+ // type T2 chan int
+ //
+ // var x T1
+ // // Invalid assignment because both types are named
+ // var _ T2 = x
+ InvalidChanAssign
+
+ // IncompatibleAssign occurs when the type of the right-hand side expression
+ // in an assignment cannot be assigned to the type of the variable being
+ // assigned.
+ //
+ // Example:
+ // var x []int
+ // var _ int = x
+ IncompatibleAssign
+
+ // UnaddressableFieldAssign occurs when trying to assign to a struct field
+ // in a map value.
+ //
+ // Example:
+ // func f() {
+ // m := make(map[string]struct{i int})
+ // m["foo"].i = 42
+ // }
+ UnaddressableFieldAssign
+
+ /* decls > type (+ other type expression codes) */
+
+ // NotAType occurs when the identifier used as the underlying type in a type
+ // declaration or the right-hand side of a type alias does not denote a type.
+ //
+ // Example:
+ // var S = 2
+ //
+ // type T S
+ NotAType
+
+ // InvalidArrayLen occurs when an array length is not a constant value.
+ //
+ // Example:
+ // var n = 3
+ // var _ = [n]int{}
+ InvalidArrayLen
+
+ // BlankIfaceMethod occurs when a method name is '_'.
+ //
+ // Per the spec:
+ // "The name of each explicitly specified method must be unique and not
+ // blank."
+ //
+ // Example:
+ // type T interface {
+ // _(int)
+ // }
+ BlankIfaceMethod
+
+ // IncomparableMapKey occurs when a map key type does not support the == and
+ // != operators.
+ //
+ // Per the spec:
+ // "The comparison operators == and != must be fully defined for operands of
+ // the key type; thus the key type must not be a function, map, or slice."
+ //
+ // Example:
+ // var x map[T]int
+ //
+ // type T []int
+ IncomparableMapKey
+
+ // InvalidIfaceEmbed occurs when a non-interface type is embedded in an
+ // interface.
+ //
+ // Example:
+ // type T struct {}
+ //
+ // func (T) m()
+ //
+ // type I interface {
+ // T
+ // }
+ InvalidIfaceEmbed
+
+ // InvalidPtrEmbed occurs when an embedded field is of the pointer form *T,
+ // and T itself is itself a pointer, an unsafe.Pointer, or an interface.
+ //
+ // Per the spec:
+ // "An embedded field must be specified as a type name T or as a pointer to
+ // a non-interface type name *T, and T itself may not be a pointer type."
+ //
+ // Example:
+ // type T *int
+ //
+ // type S struct {
+ // *T
+ // }
+ InvalidPtrEmbed
+
+ /* decls > func and method */
+
+ // BadRecv occurs when a method declaration does not have exactly one
+ // receiver parameter.
+ //
+ // Example:
+ // func () _() {}
+ BadRecv
+
+ // InvalidRecv occurs when a receiver type expression is not of the form T
+ // or *T, or T is a pointer type.
+ //
+ // Example:
+ // type T struct {}
+ //
+ // func (**T) m() {}
+ InvalidRecv
+
+ // DuplicateFieldAndMethod occurs when an identifier appears as both a field
+ // and method name.
+ //
+ // Example:
+ // type T struct {
+ // m int
+ // }
+ //
+ // func (T) m() {}
+ DuplicateFieldAndMethod
+
+ // DuplicateMethod occurs when two methods on the same receiver type have
+ // the same name.
+ //
+ // Example:
+ // type T struct {}
+ // func (T) m() {}
+ // func (T) m(i int) int { return i }
+ DuplicateMethod
+
+ /* decls > special */
+
+ // InvalidBlank occurs when a blank identifier is used as a value or type.
+ //
+ // Per the spec:
+ // "The blank identifier may appear as an operand only on the left-hand side
+ // of an assignment."
+ //
+ // Example:
+ // var x = _
+ InvalidBlank
+
+ // InvalidIota occurs when the predeclared identifier iota is used outside
+ // of a constant declaration.
+ //
+ // Example:
+ // var x = iota
+ InvalidIota
+
+ // MissingInitBody occurs when an init function is missing its body.
+ //
+ // Example:
+ // func init()
+ MissingInitBody
+
+ // InvalidInitSig occurs when an init function declares parameters or
+ // results.
+ //
+ // Example:
+ // func init() int { return 1 }
+ InvalidInitSig
+
+ // InvalidInitDecl occurs when init is declared as anything other than a
+ // function.
+ //
+ // Example:
+ // var init = 1
+ InvalidInitDecl
+
+ // InvalidMainDecl occurs when main is declared as anything other than a
+ // function, in a main package.
+ InvalidMainDecl
+
+ /* exprs */
+
+ // TooManyValues occurs when a function returns too many values for the
+ // expression context in which it is used.
+ //
+ // Example:
+ // func ReturnTwo() (int, int) {
+ // return 1, 2
+ // }
+ //
+ // var x = ReturnTwo()
+ TooManyValues
+
+ // NotAnExpr occurs when a type expression is used where a value expression
+ // is expected.
+ //
+ // Example:
+ // type T struct {}
+ //
+ // func f() {
+ // T
+ // }
+ NotAnExpr
+
+ /* exprs > const */
+
+ // TruncatedFloat occurs when a float constant is truncated to an integer
+ // value.
+ //
+ // Example:
+ // var _ int = 98.6
+ TruncatedFloat
+
+ // NumericOverflow occurs when a numeric constant overflows its target type.
+ //
+ // Example:
+ // var x int8 = 1000
+ NumericOverflow
+
+ /* exprs > operation */
+
+ // UndefinedOp occurs when an operator is not defined for the type(s) used
+ // in an operation.
+ //
+ // Example:
+ // var c = "a" - "b"
+ UndefinedOp
+
+ // MismatchedTypes occurs when operand types are incompatible in a binary
+ // operation.
+ //
+ // Example:
+ // var a = "hello"
+ // var b = 1
+ // var c = a - b
+ MismatchedTypes
+
+ // DivByZero occurs when a division operation is provable at compile
+ // time to be a division by zero.
+ //
+ // Example:
+ // const divisor = 0
+ // var x int = 1/divisor
+ DivByZero
+
+ // NonNumericIncDec occurs when an increment or decrement operator is
+ // applied to a non-numeric value.
+ //
+ // Example:
+ // func f() {
+ // var c = "c"
+ // c++
+ // }
+ NonNumericIncDec
+
+ /* exprs > ptr */
+
+ // UnaddressableOperand occurs when the & operator is applied to an
+ // unaddressable expression.
+ //
+ // Example:
+ // var x = &1
+ UnaddressableOperand
+
+ // InvalidIndirection occurs when a non-pointer value is indirected via the
+ // '*' operator.
+ //
+ // Example:
+ // var x int
+ // var y = *x
+ InvalidIndirection
+
+ /* exprs > [] */
+
+ // NonIndexableOperand occurs when an index operation is applied to a value
+ // that cannot be indexed.
+ //
+ // Example:
+ // var x = 1
+ // var y = x[1]
+ NonIndexableOperand
+
+ // InvalidIndex occurs when an index argument is not of integer type,
+ // negative, or out-of-bounds.
+ //
+ // Example:
+ // var s = [...]int{1,2,3}
+ // var x = s[5]
+ //
+ // Example:
+ // var s = []int{1,2,3}
+ // var _ = s[-1]
+ //
+ // Example:
+ // var s = []int{1,2,3}
+ // var i string
+ // var _ = s[i]
+ InvalidIndex
+
+ // SwappedSliceIndices occurs when constant indices in a slice expression
+ // are decreasing in value.
+ //
+ // Example:
+ // var _ = []int{1,2,3}[2:1]
+ SwappedSliceIndices
+
+ /* operators > slice */
+
+ // NonSliceableOperand occurs when a slice operation is applied to a value
+ // whose type is not sliceable, or is unaddressable.
+ //
+ // Example:
+ // var x = [...]int{1, 2, 3}[:1]
+ //
+ // Example:
+ // var x = 1
+ // var y = 1[:1]
+ NonSliceableOperand
+
+ // InvalidSliceExpr occurs when a three-index slice expression (a[x:y:z]) is
+ // applied to a string.
+ //
+ // Example:
+ // var s = "hello"
+ // var x = s[1:2:3]
+ InvalidSliceExpr
+
+ /* exprs > shift */
+
+ // InvalidShiftCount occurs when the right-hand side of a shift operation is
+ // either non-integer, negative, or too large.
+ //
+ // Example:
+ // var (
+ // x string
+ // y int = 1 << x
+ // )
+ InvalidShiftCount
+
+ // InvalidShiftOperand occurs when the shifted operand is not an integer.
+ //
+ // Example:
+ // var s = "hello"
+ // var x = s << 2
+ InvalidShiftOperand
+
+ /* exprs > chan */
+
+ // InvalidReceive occurs when there is a channel receive from a value that
+ // is either not a channel, or is a send-only channel.
+ //
+ // Example:
+ // func f() {
+ // var x = 1
+ // <-x
+ // }
+ InvalidReceive
+
+ // InvalidSend occurs when there is a channel send to a value that is not a
+ // channel, or is a receive-only channel.
+ //
+ // Example:
+ // func f() {
+ // var x = 1
+ // x <- "hello!"
+ // }
+ InvalidSend
+
+ /* exprs > literal */
+
+ // DuplicateLitKey occurs when an index is duplicated in a slice, array, or
+ // map literal.
+ //
+ // Example:
+ // var _ = []int{0:1, 0:2}
+ //
+ // Example:
+ // var _ = map[string]int{"a": 1, "a": 2}
+ DuplicateLitKey
+
+ // MissingLitKey occurs when a map literal is missing a key expression.
+ //
+ // Example:
+ // var _ = map[string]int{1}
+ MissingLitKey
+
+ // InvalidLitIndex occurs when the key in a key-value element of a slice or
+ // array literal is not an integer constant.
+ //
+ // Example:
+ // var i = 0
+ // var x = []string{i: "world"}
+ InvalidLitIndex
+
+ // OversizeArrayLit occurs when an array literal exceeds its length.
+ //
+ // Example:
+ // var _ = [2]int{1,2,3}
+ OversizeArrayLit
+
+ // MixedStructLit occurs when a struct literal contains a mix of positional
+ // and named elements.
+ //
+ // Example:
+ // var _ = struct{i, j int}{i: 1, 2}
+ MixedStructLit
+
+ // InvalidStructLit occurs when a positional struct literal has an incorrect
+ // number of values.
+ //
+ // Example:
+ // var _ = struct{i, j int}{1,2,3}
+ InvalidStructLit
+
+ // MissingLitField occurs when a struct literal refers to a field that does
+ // not exist on the struct type.
+ //
+ // Example:
+ // var _ = struct{i int}{j: 2}
+ MissingLitField
+
+ // DuplicateLitField occurs when a struct literal contains duplicated
+ // fields.
+ //
+ // Example:
+ // var _ = struct{i int}{i: 1, i: 2}
+ DuplicateLitField
+
+ // UnexportedLitField occurs when a positional struct literal implicitly
+ // assigns an unexported field of an imported type.
+ UnexportedLitField
+
+ // InvalidLitField occurs when a field name is not a valid identifier.
+ //
+ // Example:
+ // var _ = struct{i int}{1: 1}
+ InvalidLitField
+
+ // UntypedLit occurs when a composite literal omits a required type
+ // identifier.
+ //
+ // Example:
+ // type outer struct{
+ // inner struct { i int }
+ // }
+ //
+ // var _ = outer{inner: {1}}
+ UntypedLit
+
+ // InvalidLit occurs when a composite literal expression does not match its
+ // type.
+ //
+ // Example:
+ // type P *struct{
+ // x int
+ // }
+ // var _ = P {}
+ InvalidLit
+
+ /* exprs > selector */
+
+ // AmbiguousSelector occurs when a selector is ambiguous.
+ //
+ // Example:
+ // type E1 struct { i int }
+ // type E2 struct { i int }
+ // type T struct { E1; E2 }
+ //
+ // var x T
+ // var _ = x.i
+ AmbiguousSelector
+
+ // UndeclaredImportedName occurs when a package-qualified identifier is
+ // undeclared by the imported package.
+ //
+ // Example:
+ // import "go/types"
+ //
+ // var _ = types.NotAnActualIdentifier
+ UndeclaredImportedName
+
+ // UnexportedName occurs when a selector refers to an unexported identifier
+ // of an imported package.
+ //
+ // Example:
+ // import "reflect"
+ //
+ // type _ reflect.flag
+ UnexportedName
+
+ // UndeclaredName occurs when an identifier is not declared in the current
+ // scope.
+ //
+ // Example:
+ // var x T
+ UndeclaredName
+
+ // MissingFieldOrMethod occurs when a selector references a field or method
+ // that does not exist.
+ //
+ // Example:
+ // type T struct {}
+ //
+ // var x = T{}.f
+ MissingFieldOrMethod
+
+ /* exprs > ... */
+
+ // BadDotDotDotSyntax occurs when a "..." occurs in a context where it is
+ // not valid.
+ //
+ // Example:
+ // var _ = map[int][...]int{0: {}}
+ BadDotDotDotSyntax
+
+ // NonVariadicDotDotDot occurs when a "..." is used on the final argument to
+ // a non-variadic function.
+ //
+ // Example:
+ // func printArgs(s []string) {
+ // for _, a := range s {
+ // println(a)
+ // }
+ // }
+ //
+ // func f() {
+ // s := []string{"a", "b", "c"}
+ // printArgs(s...)
+ // }
+ NonVariadicDotDotDot
+
+ // MisplacedDotDotDot occurs when a "..." is used somewhere other than the
+ // final argument to a function call.
+ //
+ // Example:
+ // func printArgs(args ...int) {
+ // for _, a := range args {
+ // println(a)
+ // }
+ // }
+ //
+ // func f() {
+ // a := []int{1,2,3}
+ // printArgs(0, a...)
+ // }
+ MisplacedDotDotDot
+
+ // InvalidDotDotDotOperand occurs when a "..." operator is applied to a
+ // single-valued operand.
+ //
+ // Example:
+ // func printArgs(args ...int) {
+ // for _, a := range args {
+ // println(a)
+ // }
+ // }
+ //
+ // func f() {
+ // a := 1
+ // printArgs(a...)
+ // }
+ //
+ // Example:
+ // func args() (int, int) {
+ // return 1, 2
+ // }
+ //
+ // func printArgs(args ...int) {
+ // for _, a := range args {
+ // println(a)
+ // }
+ // }
+ //
+ // func g() {
+ // printArgs(args()...)
+ // }
+ InvalidDotDotDotOperand
+
+ // InvalidDotDotDot occurs when a "..." is used in a non-variadic built-in
+ // function.
+ //
+ // Example:
+ // var s = []int{1, 2, 3}
+ // var l = len(s...)
+ InvalidDotDotDot
+
+ /* exprs > built-in */
+
+ // UncalledBuiltin occurs when a built-in function is used as a
+ // function-valued expression, instead of being called.
+ //
+ // Per the spec:
+ // "The built-in functions do not have standard Go types, so they can only
+ // appear in call expressions; they cannot be used as function values."
+ //
+ // Example:
+ // var _ = copy
+ UncalledBuiltin
+
+ // InvalidAppend occurs when append is called with a first argument that is
+ // not a slice.
+ //
+ // Example:
+ // var _ = append(1, 2)
+ InvalidAppend
+
+ // InvalidCap occurs when an argument to the cap built-in function is not of
+ // supported type.
+ //
+ // See https://golang.org/ref/spec#Lengthand_capacity for information on
+ // which underlying types are supported as arguments to cap and len.
+ //
+ // Example:
+ // var s = 2
+ // var x = cap(s)
+ InvalidCap
+
+ // InvalidClose occurs when close(...) is called with an argument that is
+ // not of channel type, or that is a receive-only channel.
+ //
+ // Example:
+ // func f() {
+ // var x int
+ // close(x)
+ // }
+ InvalidClose
+
+ // InvalidCopy occurs when the arguments are not of slice type or do not
+ // have compatible type.
+ //
+ // See https://golang.org/ref/spec#Appendingand_copying_slices for more
+ // information on the type requirements for the copy built-in.
+ //
+ // Example:
+ // func f() {
+ // var x []int
+ // y := []int64{1,2,3}
+ // copy(x, y)
+ // }
+ InvalidCopy
+
+ // InvalidComplex occurs when the complex built-in function is called with
+ // arguments with incompatible types.
+ //
+ // Example:
+ // var _ = complex(float32(1), float64(2))
+ InvalidComplex
+
+ // InvalidDelete occurs when the delete built-in function is called with a
+ // first argument that is not a map.
+ //
+ // Example:
+ // func f() {
+ // m := "hello"
+ // delete(m, "e")
+ // }
+ InvalidDelete
+
+ // InvalidImag occurs when the imag built-in function is called with an
+ // argument that does not have complex type.
+ //
+ // Example:
+ // var _ = imag(int(1))
+ InvalidImag
+
+ // InvalidLen occurs when an argument to the len built-in function is not of
+ // supported type.
+ //
+ // See https://golang.org/ref/spec#Lengthand_capacity for information on
+ // which underlying types are supported as arguments to cap and len.
+ //
+ // Example:
+ // var s = 2
+ // var x = len(s)
+ InvalidLen
+
+ // SwappedMakeArgs occurs when make is called with three arguments, and its
+ // length argument is larger than its capacity argument.
+ //
+ // Example:
+ // var x = make([]int, 3, 2)
+ SwappedMakeArgs
+
+ // InvalidMake occurs when make is called with an unsupported type argument.
+ //
+ // See https://golang.org/ref/spec#Makingslices_maps_and_channels for
+ // information on the types that may be created using make.
+ //
+ // Example:
+ // var x = make(int)
+ InvalidMake
+
+ // InvalidReal occurs when the real built-in function is called with an
+ // argument that does not have complex type.
+ //
+ // Example:
+ // var _ = real(int(1))
+ InvalidReal
+
+ /* exprs > assertion */
+
+ // InvalidAssert occurs when a type assertion is applied to a
+ // value that is not of interface type.
+ //
+ // Example:
+ // var x = 1
+ // var _ = x.(float64)
+ InvalidAssert
+
+ // ImpossibleAssert occurs for a type assertion x.(T) when the value x of
+ // interface cannot have dynamic type T, due to a missing or mismatching
+ // method on T.
+ //
+ // Example:
+ // type T int
+ //
+ // func (t *T) m() int { return int(*t) }
+ //
+ // type I interface { m() int }
+ //
+ // var x I
+ // var _ = x.(T)
+ ImpossibleAssert
+
+ /* exprs > conversion */
+
+ // InvalidConversion occurs when the argument type cannot be converted to the
+ // target.
+ //
+ // See https://golang.org/ref/spec#Conversions for the rules of
+ // convertibility.
+ //
+ // Example:
+ // var x float64
+ // var _ = string(x)
+ InvalidConversion
+
+ // InvalidUntypedConversion occurs when an there is no valid implicit
+ // conversion from an untyped value satisfying the type constraints of the
+ // context in which it is used.
+ //
+ // Example:
+ // var _ = 1 + ""
+ InvalidUntypedConversion
+
+ /* offsetof */
+
+ // BadOffsetofSyntax occurs when unsafe.Offsetof is called with an argument
+ // that is not a selector expression.
+ //
+ // Example:
+ // import "unsafe"
+ //
+ // var x int
+ // var _ = unsafe.Offsetof(x)
+ BadOffsetofSyntax
+
+ // InvalidOffsetof occurs when unsafe.Offsetof is called with a method
+ // selector, rather than a field selector, or when the field is embedded via
+ // a pointer.
+ //
+ // Per the spec:
+ //
+ // "If f is an embedded field, it must be reachable without pointer
+ // indirections through fields of the struct. "
+ //
+ // Example:
+ // import "unsafe"
+ //
+ // type T struct { f int }
+ // type S struct { *T }
+ // var s S
+ // var _ = unsafe.Offsetof(s.f)
+ //
+ // Example:
+ // import "unsafe"
+ //
+ // type S struct{}
+ //
+ // func (S) m() {}
+ //
+ // var s S
+ // var _ = unsafe.Offsetof(s.m)
+ InvalidOffsetof
+
+ /* control flow > scope */
+
+ // UnusedExpr occurs when a side-effect free expression is used as a
+ // statement. Such a statement has no effect.
+ //
+ // Example:
+ // func f(i int) {
+ // i*i
+ // }
+ UnusedExpr
+
+ // UnusedVar occurs when a variable is declared but unused.
+ //
+ // Example:
+ // func f() {
+ // x := 1
+ // }
+ UnusedVar
+
+ // MissingReturn occurs when a function with results is missing a return
+ // statement.
+ //
+ // Example:
+ // func f() int {}
+ MissingReturn
+
+ // WrongResultCount occurs when a return statement returns an incorrect
+ // number of values.
+ //
+ // Example:
+ // func ReturnOne() int {
+ // return 1, 2
+ // }
+ WrongResultCount
+
+ // OutOfScopeResult occurs when the name of a value implicitly returned by
+ // an empty return statement is shadowed in a nested scope.
+ //
+ // Example:
+ // func factor(n int) (i int) {
+ // for i := 2; i < n; i++ {
+ // if n%i == 0 {
+ // return
+ // }
+ // }
+ // return 0
+ // }
+ OutOfScopeResult
+
+ /* control flow > if */
+
+ // InvalidCond occurs when an if condition is not a boolean expression.
+ //
+ // Example:
+ // func checkReturn(i int) {
+ // if i {
+ // panic("non-zero return")
+ // }
+ // }
+ InvalidCond
+
+ /* control flow > for */
+
+ // InvalidPostDecl occurs when there is a declaration in a for-loop post
+ // statement.
+ //
+ // Example:
+ // func f() {
+ // for i := 0; i < 10; j := 0 {}
+ // }
+ InvalidPostDecl
+
+ // InvalidChanRange occurs when a send-only channel used in a range
+ // expression.
+ //
+ // Example:
+ // func sum(c chan<- int) {
+ // s := 0
+ // for i := range c {
+ // s += i
+ // }
+ // }
+ InvalidChanRange
+
+ // InvalidIterVar occurs when two iteration variables are used while ranging
+ // over a channel.
+ //
+ // Example:
+ // func f(c chan int) {
+ // for k, v := range c {
+ // println(k, v)
+ // }
+ // }
+ InvalidIterVar
+
+ // InvalidRangeExpr occurs when the type of a range expression is not array,
+ // slice, string, map, or channel.
+ //
+ // Example:
+ // func f(i int) {
+ // for j := range i {
+ // println(j)
+ // }
+ // }
+ InvalidRangeExpr
+
+ /* control flow > switch */
+
+ // MisplacedBreak occurs when a break statement is not within a for, switch,
+ // or select statement of the innermost function definition.
+ //
+ // Example:
+ // func f() {
+ // break
+ // }
+ MisplacedBreak
+
+ // MisplacedContinue occurs when a continue statement is not within a for
+ // loop of the innermost function definition.
+ //
+ // Example:
+ // func sumeven(n int) int {
+ // proceed := func() {
+ // continue
+ // }
+ // sum := 0
+ // for i := 1; i <= n; i++ {
+ // if i % 2 != 0 {
+ // proceed()
+ // }
+ // sum += i
+ // }
+ // return sum
+ // }
+ MisplacedContinue
+
+ // MisplacedFallthrough occurs when a fallthrough statement is not within an
+ // expression switch.
+ //
+ // Example:
+ // func typename(i interface{}) string {
+ // switch i.(type) {
+ // case int64:
+ // fallthrough
+ // case int:
+ // return "int"
+ // }
+ // return "unsupported"
+ // }
+ MisplacedFallthrough
+
+ // DuplicateCase occurs when a type or expression switch has duplicate
+ // cases.
+ //
+ // Example:
+ // func printInt(i int) {
+ // switch i {
+ // case 1:
+ // println("one")
+ // case 1:
+ // println("One")
+ // }
+ // }
+ DuplicateCase
+
+ // DuplicateDefault occurs when a type or expression switch has multiple
+ // default clauses.
+ //
+ // Example:
+ // func printInt(i int) {
+ // switch i {
+ // case 1:
+ // println("one")
+ // default:
+ // println("One")
+ // default:
+ // println("1")
+ // }
+ // }
+ DuplicateDefault
+
+ // BadTypeKeyword occurs when a .(type) expression is used anywhere other
+ // than a type switch.
+ //
+ // Example:
+ // type I interface {
+ // m()
+ // }
+ // var t I
+ // var _ = t.(type)
+ BadTypeKeyword
+
+ // InvalidTypeSwitch occurs when .(type) is used on an expression that is
+ // not of interface type.
+ //
+ // Example:
+ // func f(i int) {
+ // switch x := i.(type) {}
+ // }
+ InvalidTypeSwitch
+
+ /* control flow > select */
+
+ // InvalidSelectCase occurs when a select case is not a channel send or
+ // receive.
+ //
+ // Example:
+ // func checkChan(c <-chan int) bool {
+ // select {
+ // case c:
+ // return true
+ // default:
+ // return false
+ // }
+ // }
+ InvalidSelectCase
+
+ /* control flow > labels and jumps */
+
+ // UndeclaredLabel occurs when an undeclared label is jumped to.
+ //
+ // Example:
+ // func f() {
+ // goto L
+ // }
+ UndeclaredLabel
+
+ // DuplicateLabel occurs when a label is declared more than once.
+ //
+ // Example:
+ // func f() int {
+ // L:
+ // L:
+ // return 1
+ // }
+ DuplicateLabel
+
+ // MisplacedLabel occurs when a break or continue label is not on a for,
+ // switch, or select statement.
+ //
+ // Example:
+ // func f() {
+ // L:
+ // a := []int{1,2,3}
+ // for _, e := range a {
+ // if e > 10 {
+ // break L
+ // }
+ // println(a)
+ // }
+ // }
+ MisplacedLabel
+
+ // UnusedLabel occurs when a label is declared but not used.
+ //
+ // Example:
+ // func f() {
+ // L:
+ // }
+ UnusedLabel
+
+ // JumpOverDecl occurs when a label jumps over a variable declaration.
+ //
+ // Example:
+ // func f() int {
+ // goto L
+ // x := 2
+ // L:
+ // x++
+ // return x
+ // }
+ JumpOverDecl
+
+ // JumpIntoBlock occurs when a forward jump goes to a label inside a nested
+ // block.
+ //
+ // Example:
+ // func f(x int) {
+ // goto L
+ // if x > 0 {
+ // L:
+ // print("inside block")
+ // }
+ // }
+ JumpIntoBlock
+
+ /* control flow > calls */
+
+ // InvalidMethodExpr occurs when a pointer method is called but the argument
+ // is not addressable.
+ //
+ // Example:
+ // type T struct {}
+ //
+ // func (*T) m() int { return 1 }
+ //
+ // var _ = T.m(T{})
+ InvalidMethodExpr
+
+ // WrongArgCount occurs when too few or too many arguments are passed by a
+ // function call.
+ //
+ // Example:
+ // func f(i int) {}
+ // var x = f()
+ WrongArgCount
+
+ // InvalidCall occurs when an expression is called that is not of function
+ // type.
+ //
+ // Example:
+ // var x = "x"
+ // var y = x()
+ InvalidCall
+
+ /* control flow > suspended */
+
+ // UnusedResults occurs when a restricted expression-only built-in function
+ // is suspended via go or defer. Such a suspension discards the results of
+ // these side-effect free built-in functions, and therefore is ineffectual.
+ //
+ // Example:
+ // func f(a []int) int {
+ // defer len(a)
+ // return i
+ // }
+ UnusedResults
+
+ // InvalidDefer occurs when a deferred expression is not a function call,
+ // for example if the expression is a type conversion.
+ //
+ // Example:
+ // func f(i int) int {
+ // defer int32(i)
+ // return i
+ // }
+ InvalidDefer
+
+ // InvalidGo occurs when a go expression is not a function call, for example
+ // if the expression is a type conversion.
+ //
+ // Example:
+ // func f(i int) int {
+ // go int32(i)
+ // return i
+ // }
+ InvalidGo
+)
diff --git a/vendor/golang.org/x/tools/internal/typesinternal/errorcode_string.go b/vendor/golang.org/x/tools/internal/typesinternal/errorcode_string.go
new file mode 100644
index 00000000..97f3ec89
--- /dev/null
+++ b/vendor/golang.org/x/tools/internal/typesinternal/errorcode_string.go
@@ -0,0 +1,152 @@
+// Code generated by "stringer -type=ErrorCode"; DO NOT EDIT.
+
+package typesinternal
+
+import "strconv"
+
+func _() {
+ // An "invalid array index" compiler error signifies that the constant values have changed.
+ // Re-run the stringer command to generate them again.
+ var x [1]struct{}
+ _ = x[Test-1]
+ _ = x[BlankPkgName-2]
+ _ = x[MismatchedPkgName-3]
+ _ = x[InvalidPkgUse-4]
+ _ = x[BadImportPath-5]
+ _ = x[BrokenImport-6]
+ _ = x[ImportCRenamed-7]
+ _ = x[UnusedImport-8]
+ _ = x[InvalidInitCycle-9]
+ _ = x[DuplicateDecl-10]
+ _ = x[InvalidDeclCycle-11]
+ _ = x[InvalidTypeCycle-12]
+ _ = x[InvalidConstInit-13]
+ _ = x[InvalidConstVal-14]
+ _ = x[InvalidConstType-15]
+ _ = x[UntypedNil-16]
+ _ = x[WrongAssignCount-17]
+ _ = x[UnassignableOperand-18]
+ _ = x[NoNewVar-19]
+ _ = x[MultiValAssignOp-20]
+ _ = x[InvalidIfaceAssign-21]
+ _ = x[InvalidChanAssign-22]
+ _ = x[IncompatibleAssign-23]
+ _ = x[UnaddressableFieldAssign-24]
+ _ = x[NotAType-25]
+ _ = x[InvalidArrayLen-26]
+ _ = x[BlankIfaceMethod-27]
+ _ = x[IncomparableMapKey-28]
+ _ = x[InvalidIfaceEmbed-29]
+ _ = x[InvalidPtrEmbed-30]
+ _ = x[BadRecv-31]
+ _ = x[InvalidRecv-32]
+ _ = x[DuplicateFieldAndMethod-33]
+ _ = x[DuplicateMethod-34]
+ _ = x[InvalidBlank-35]
+ _ = x[InvalidIota-36]
+ _ = x[MissingInitBody-37]
+ _ = x[InvalidInitSig-38]
+ _ = x[InvalidInitDecl-39]
+ _ = x[InvalidMainDecl-40]
+ _ = x[TooManyValues-41]
+ _ = x[NotAnExpr-42]
+ _ = x[TruncatedFloat-43]
+ _ = x[NumericOverflow-44]
+ _ = x[UndefinedOp-45]
+ _ = x[MismatchedTypes-46]
+ _ = x[DivByZero-47]
+ _ = x[NonNumericIncDec-48]
+ _ = x[UnaddressableOperand-49]
+ _ = x[InvalidIndirection-50]
+ _ = x[NonIndexableOperand-51]
+ _ = x[InvalidIndex-52]
+ _ = x[SwappedSliceIndices-53]
+ _ = x[NonSliceableOperand-54]
+ _ = x[InvalidSliceExpr-55]
+ _ = x[InvalidShiftCount-56]
+ _ = x[InvalidShiftOperand-57]
+ _ = x[InvalidReceive-58]
+ _ = x[InvalidSend-59]
+ _ = x[DuplicateLitKey-60]
+ _ = x[MissingLitKey-61]
+ _ = x[InvalidLitIndex-62]
+ _ = x[OversizeArrayLit-63]
+ _ = x[MixedStructLit-64]
+ _ = x[InvalidStructLit-65]
+ _ = x[MissingLitField-66]
+ _ = x[DuplicateLitField-67]
+ _ = x[UnexportedLitField-68]
+ _ = x[InvalidLitField-69]
+ _ = x[UntypedLit-70]
+ _ = x[InvalidLit-71]
+ _ = x[AmbiguousSelector-72]
+ _ = x[UndeclaredImportedName-73]
+ _ = x[UnexportedName-74]
+ _ = x[UndeclaredName-75]
+ _ = x[MissingFieldOrMethod-76]
+ _ = x[BadDotDotDotSyntax-77]
+ _ = x[NonVariadicDotDotDot-78]
+ _ = x[MisplacedDotDotDot-79]
+ _ = x[InvalidDotDotDotOperand-80]
+ _ = x[InvalidDotDotDot-81]
+ _ = x[UncalledBuiltin-82]
+ _ = x[InvalidAppend-83]
+ _ = x[InvalidCap-84]
+ _ = x[InvalidClose-85]
+ _ = x[InvalidCopy-86]
+ _ = x[InvalidComplex-87]
+ _ = x[InvalidDelete-88]
+ _ = x[InvalidImag-89]
+ _ = x[InvalidLen-90]
+ _ = x[SwappedMakeArgs-91]
+ _ = x[InvalidMake-92]
+ _ = x[InvalidReal-93]
+ _ = x[InvalidAssert-94]
+ _ = x[ImpossibleAssert-95]
+ _ = x[InvalidConversion-96]
+ _ = x[InvalidUntypedConversion-97]
+ _ = x[BadOffsetofSyntax-98]
+ _ = x[InvalidOffsetof-99]
+ _ = x[UnusedExpr-100]
+ _ = x[UnusedVar-101]
+ _ = x[MissingReturn-102]
+ _ = x[WrongResultCount-103]
+ _ = x[OutOfScopeResult-104]
+ _ = x[InvalidCond-105]
+ _ = x[InvalidPostDecl-106]
+ _ = x[InvalidChanRange-107]
+ _ = x[InvalidIterVar-108]
+ _ = x[InvalidRangeExpr-109]
+ _ = x[MisplacedBreak-110]
+ _ = x[MisplacedContinue-111]
+ _ = x[MisplacedFallthrough-112]
+ _ = x[DuplicateCase-113]
+ _ = x[DuplicateDefault-114]
+ _ = x[BadTypeKeyword-115]
+ _ = x[InvalidTypeSwitch-116]
+ _ = x[InvalidSelectCase-117]
+ _ = x[UndeclaredLabel-118]
+ _ = x[DuplicateLabel-119]
+ _ = x[MisplacedLabel-120]
+ _ = x[UnusedLabel-121]
+ _ = x[JumpOverDecl-122]
+ _ = x[JumpIntoBlock-123]
+ _ = x[InvalidMethodExpr-124]
+ _ = x[WrongArgCount-125]
+ _ = x[InvalidCall-126]
+ _ = x[UnusedResults-127]
+ _ = x[InvalidDefer-128]
+ _ = x[InvalidGo-129]
+}
+
+const _ErrorCode_name = "TestBlankPkgNameMismatchedPkgNameInvalidPkgUseBadImportPathBrokenImportImportCRenamedUnusedImportInvalidInitCycleDuplicateDeclInvalidDeclCycleInvalidTypeCycleInvalidConstInitInvalidConstValInvalidConstTypeUntypedNilWrongAssignCountUnassignableOperandNoNewVarMultiValAssignOpInvalidIfaceAssignInvalidChanAssignIncompatibleAssignUnaddressableFieldAssignNotATypeInvalidArrayLenBlankIfaceMethodIncomparableMapKeyInvalidIfaceEmbedInvalidPtrEmbedBadRecvInvalidRecvDuplicateFieldAndMethodDuplicateMethodInvalidBlankInvalidIotaMissingInitBodyInvalidInitSigInvalidInitDeclInvalidMainDeclTooManyValuesNotAnExprTruncatedFloatNumericOverflowUndefinedOpMismatchedTypesDivByZeroNonNumericIncDecUnaddressableOperandInvalidIndirectionNonIndexableOperandInvalidIndexSwappedSliceIndicesNonSliceableOperandInvalidSliceExprInvalidShiftCountInvalidShiftOperandInvalidReceiveInvalidSendDuplicateLitKeyMissingLitKeyInvalidLitIndexOversizeArrayLitMixedStructLitInvalidStructLitMissingLitFieldDuplicateLitFieldUnexportedLitFieldInvalidLitFieldUntypedLitInvalidLitAmbiguousSelectorUndeclaredImportedNameUnexportedNameUndeclaredNameMissingFieldOrMethodBadDotDotDotSyntaxNonVariadicDotDotDotMisplacedDotDotDotInvalidDotDotDotOperandInvalidDotDotDotUncalledBuiltinInvalidAppendInvalidCapInvalidCloseInvalidCopyInvalidComplexInvalidDeleteInvalidImagInvalidLenSwappedMakeArgsInvalidMakeInvalidRealInvalidAssertImpossibleAssertInvalidConversionInvalidUntypedConversionBadOffsetofSyntaxInvalidOffsetofUnusedExprUnusedVarMissingReturnWrongResultCountOutOfScopeResultInvalidCondInvalidPostDeclInvalidChanRangeInvalidIterVarInvalidRangeExprMisplacedBreakMisplacedContinueMisplacedFallthroughDuplicateCaseDuplicateDefaultBadTypeKeywordInvalidTypeSwitchInvalidSelectCaseUndeclaredLabelDuplicateLabelMisplacedLabelUnusedLabelJumpOverDeclJumpIntoBlockInvalidMethodExprWrongArgCountInvalidCallUnusedResultsInvalidDeferInvalidGo"
+
+var _ErrorCode_index = [...]uint16{0, 4, 16, 33, 46, 59, 71, 85, 97, 113, 126, 142, 158, 174, 189, 205, 215, 231, 250, 258, 274, 292, 309, 327, 351, 359, 374, 390, 408, 425, 440, 447, 458, 481, 496, 508, 519, 534, 548, 563, 578, 591, 600, 614, 629, 640, 655, 664, 680, 700, 718, 737, 749, 768, 787, 803, 820, 839, 853, 864, 879, 892, 907, 923, 937, 953, 968, 985, 1003, 1018, 1028, 1038, 1055, 1077, 1091, 1105, 1125, 1143, 1163, 1181, 1204, 1220, 1235, 1248, 1258, 1270, 1281, 1295, 1308, 1319, 1329, 1344, 1355, 1366, 1379, 1395, 1412, 1436, 1453, 1468, 1478, 1487, 1500, 1516, 1532, 1543, 1558, 1574, 1588, 1604, 1618, 1635, 1655, 1668, 1684, 1698, 1715, 1732, 1747, 1761, 1775, 1786, 1798, 1811, 1828, 1841, 1852, 1865, 1877, 1886}
+
+func (i ErrorCode) String() string {
+ i -= 1
+ if i < 0 || i >= ErrorCode(len(_ErrorCode_index)-1) {
+ return "ErrorCode(" + strconv.FormatInt(int64(i+1), 10) + ")"
+ }
+ return _ErrorCode_name[_ErrorCode_index[i]:_ErrorCode_index[i+1]]
+}
diff --git a/vendor/gopkg.in/yaml.v2/.travis.yml b/vendor/gopkg.in/yaml.v2/.travis.yml
index 055480b9..7348c50c 100644
--- a/vendor/gopkg.in/yaml.v2/.travis.yml
+++ b/vendor/gopkg.in/yaml.v2/.travis.yml
@@ -11,6 +11,7 @@ go:
- "1.11.x"
- "1.12.x"
- "1.13.x"
+ - "1.14.x"
- "tip"
go_import_path: gopkg.in/yaml.v2
diff --git a/vendor/gopkg.in/yaml.v2/apic.go b/vendor/gopkg.in/yaml.v2/apic.go
index d2c2308f..acf71402 100644
--- a/vendor/gopkg.in/yaml.v2/apic.go
+++ b/vendor/gopkg.in/yaml.v2/apic.go
@@ -79,6 +79,8 @@ func yaml_parser_set_encoding(parser *yaml_parser_t, encoding yaml_encoding_t) {
parser.encoding = encoding
}
+var disableLineWrapping = false
+
// Create a new emitter object.
func yaml_emitter_initialize(emitter *yaml_emitter_t) {
*emitter = yaml_emitter_t{
@@ -86,7 +88,9 @@ func yaml_emitter_initialize(emitter *yaml_emitter_t) {
raw_buffer: make([]byte, 0, output_raw_buffer_size),
states: make([]yaml_emitter_state_t, 0, initial_stack_size),
events: make([]yaml_event_t, 0, initial_queue_size),
- best_width: -1,
+ }
+ if disableLineWrapping {
+ emitter.best_width = -1
}
}
diff --git a/vendor/gopkg.in/yaml.v2/go.mod b/vendor/gopkg.in/yaml.v2/go.mod
index 1934e876..2cbb85ae 100644
--- a/vendor/gopkg.in/yaml.v2/go.mod
+++ b/vendor/gopkg.in/yaml.v2/go.mod
@@ -1,5 +1,5 @@
-module "gopkg.in/yaml.v2"
+module gopkg.in/yaml.v2
-require (
- "gopkg.in/check.v1" v0.0.0-20161208181325-20d25e280405
-)
+go 1.15
+
+require gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405
diff --git a/vendor/gopkg.in/yaml.v2/yaml.go b/vendor/gopkg.in/yaml.v2/yaml.go
index 89650e29..30813884 100644
--- a/vendor/gopkg.in/yaml.v2/yaml.go
+++ b/vendor/gopkg.in/yaml.v2/yaml.go
@@ -175,7 +175,7 @@ func unmarshal(in []byte, out interface{}, strict bool) (err error) {
// Zero valued structs will be omitted if all their public
// fields are zero, unless they implement an IsZero
// method (see the IsZeroer interface type), in which
-// case the field will be included if that method returns true.
+// case the field will be excluded if IsZero returns true.
//
// flow Marshal using a flow style (useful for structs,
// sequences and maps).
@@ -464,3 +464,15 @@ func isZero(v reflect.Value) bool {
}
return false
}
+
+// FutureLineWrap globally disables line wrapping when encoding long strings.
+// This is a temporary and thus deprecated method introduced to faciliate
+// migration towards v3, which offers more control of line lengths on
+// individual encodings, and has a default matching the behavior introduced
+// by this function.
+//
+// The default formatting of v2 was erroneously changed in v2.3.0 and reverted
+// in v2.4.0, at which point this function was introduced to help migration.
+func FutureLineWrap() {
+ disableLineWrapping = true
+}
diff --git a/vendor/honnef.co/go/tools/code/code.go b/vendor/honnef.co/go/tools/code/code.go
index 6f4df8b9..c0679a3d 100644
--- a/vendor/honnef.co/go/tools/code/code.go
+++ b/vendor/honnef.co/go/tools/code/code.go
@@ -53,6 +53,7 @@ func IsCallToAny(call *ir.CallCommon, names ...string) bool {
return false
}
+// OPT(dh): IsType is kind of expensive; should we really use it?
func IsType(T types.Type, name string) bool { return types.TypeString(T, nil) == name }
func FilterDebug(instr []ir.Instruction) []ir.Instruction {
diff --git a/vendor/honnef.co/go/tools/facts/generated.go b/vendor/honnef.co/go/tools/facts/generated.go
index 18cbb49b..058fd892 100644
--- a/vendor/honnef.co/go/tools/facts/generated.go
+++ b/vendor/honnef.co/go/tools/facts/generated.go
@@ -46,6 +46,10 @@ func isGenerated(path string) (Generator, bool) {
s = bytes.TrimSuffix(s, crnl)
s = bytes.TrimSuffix(s, nl)
if bytes.HasPrefix(s, prefix) && bytes.HasSuffix(s, suffix) {
+ if len(s)-len(suffix) < len(prefix) {
+ return Unknown, true
+ }
+
text := string(s[len(prefix) : len(s)-len(suffix)])
switch text {
case "by goyacc.":
diff --git a/vendor/honnef.co/go/tools/pattern/match.go b/vendor/honnef.co/go/tools/pattern/match.go
index ff039baa..2c036ed1 100644
--- a/vendor/honnef.co/go/tools/pattern/match.go
+++ b/vendor/honnef.co/go/tools/pattern/match.go
@@ -242,6 +242,28 @@ func match(m *Matcher, l, r interface{}) (interface{}, bool) {
}
}
+ {
+ ln, ok1 := l.([]*ast.Field)
+ rn, ok2 := r.([]*ast.Field)
+ if ok1 || ok2 {
+ if ok1 && !ok2 {
+ rn = []*ast.Field{r.(*ast.Field)}
+ } else if !ok1 && ok2 {
+ ln = []*ast.Field{l.(*ast.Field)}
+ }
+
+ if len(ln) != len(rn) {
+ return nil, false
+ }
+ for i, ll := range ln {
+ if _, ok := match(m, ll, rn[i]); !ok {
+ return nil, false
+ }
+ }
+ return r, true
+ }
+ }
+
panic(fmt.Sprintf("unsupported comparison: %T and %T", l, r))
}
diff --git a/vendor/honnef.co/go/tools/simple/lint.go b/vendor/honnef.co/go/tools/simple/lint.go
index 91571b6e..5a9571de 100644
--- a/vendor/honnef.co/go/tools/simple/lint.go
+++ b/vendor/honnef.co/go/tools/simple/lint.go
@@ -271,8 +271,8 @@ func CheckStringsContains(pass *analysis.Pass) (interface{}, error) {
var (
checkBytesCompareQ = pattern.MustParse(`(BinaryExpr (CallExpr (Function "bytes.Compare") args) op@(Or "==" "!=") (BasicLit "INT" "0"))`)
- checkBytesCompareRn = pattern.MustParse(`(CallExpr (SelectorExpr (Ident "bytes") (Ident "Equal")) args)`)
- checkBytesCompareRe = pattern.MustParse(`(UnaryExpr "!" (CallExpr (SelectorExpr (Ident "bytes") (Ident "Equal")) args))`)
+ checkBytesCompareRe = pattern.MustParse(`(CallExpr (SelectorExpr (Ident "bytes") (Ident "Equal")) args)`)
+ checkBytesCompareRn = pattern.MustParse(`(UnaryExpr "!" (CallExpr (SelectorExpr (Ident "bytes") (Ident "Equal")) args))`)
)
func CheckBytesCompare(pass *analysis.Pass) (interface{}, error) {
diff --git a/vendor/honnef.co/go/tools/staticcheck/lint.go b/vendor/honnef.co/go/tools/staticcheck/lint.go
index 16b6dbd8..3c1c00f7 100644
--- a/vendor/honnef.co/go/tools/staticcheck/lint.go
+++ b/vendor/honnef.co/go/tools/staticcheck/lint.go
@@ -528,8 +528,26 @@ func checkPrintfCallImpl(carg *Argument, f ir.Value, args []ir.Value) {
return true
}
- if flags&isString != 0 && (code.IsType(T, "[]byte") || isStringer(T, ms) || isError(T, ms)) {
- return true
+ if flags&isString != 0 {
+ isStringyElem := func(typ types.Type) bool {
+ if typ, ok := typ.Underlying().(*types.Basic); ok {
+ return typ.Kind() == types.Byte
+ }
+ return false
+ }
+ switch T := T.(type) {
+ case *types.Slice:
+ if isStringyElem(T.Elem()) {
+ return true
+ }
+ case *types.Array:
+ if isStringyElem(T.Elem()) {
+ return true
+ }
+ }
+ if isStringer(T, ms) || isError(T, ms) {
+ return true
+ }
}
if flags&isPointer != 0 && code.IsPointerLike(T) {
@@ -1086,6 +1104,12 @@ func CheckDubiousDeferInChannelRangeLoop(pass *analysis.Pass) (interface{}, erro
}
func CheckTestMainExit(pass *analysis.Pass) (interface{}, error) {
+ if code.IsGoVersion(pass, 15) {
+ // Beginning with Go 1.15, the test framework will call
+ // os.Exit for us.
+ return nil, nil
+ }
+
var (
fnmain ast.Node
callsExit bool
@@ -1721,6 +1745,10 @@ func CheckUnreadVariableValues(pass *analysis.Pass) (interface{}, error) {
continue
}
+ if _, ok := val.(*ir.Const); ok {
+ // a zero-valued constant, for example in 'foo := []string(nil)'
+ continue
+ }
if !hasUse(val, nil) {
report.Report(pass, assign, fmt.Sprintf("this value of %s is never used", lhs))
}
@@ -2707,6 +2735,10 @@ func CheckSillyBitwiseOps(pass *analysis.Pass) (interface{}, error) {
if !ok {
return
}
+ if obj.Pkg() != pass.Pkg {
+ // identifier was dot-imported
+ return
+ }
if v, _ := constant.Int64Val(obj.Val()); v != 0 {
return
}
diff --git a/vendor/honnef.co/go/tools/stylecheck/lint.go b/vendor/honnef.co/go/tools/stylecheck/lint.go
index 75a0112b..3cdabe15 100644
--- a/vendor/honnef.co/go/tools/stylecheck/lint.go
+++ b/vendor/honnef.co/go/tools/stylecheck/lint.go
@@ -410,6 +410,10 @@ func CheckErrorStrings(pass *analysis.Pass) (interface{}, error) {
}
}
+ if strings.ContainsRune(word, '(') {
+ // Might be a function call
+ continue instrLoop
+ }
word = strings.TrimRightFunc(word, func(r rune) bool { return unicode.IsPunct(r) })
if objNames[fn.Package()][word] {
// Word is probably the name of a function or type in this package
diff --git a/vendor/honnef.co/go/tools/version/version.go b/vendor/honnef.co/go/tools/version/version.go
index eed7b0de..39e3e60e 100644
--- a/vendor/honnef.co/go/tools/version/version.go
+++ b/vendor/honnef.co/go/tools/version/version.go
@@ -7,7 +7,7 @@ import (
"runtime"
)
-const Version = "2020.1.4"
+const Version = "2020.1.6"
// version returns a version descriptor and reports whether the
// version is a known release.
diff --git a/vendor/k8s.io/klog/v2/README.md b/vendor/k8s.io/klog/v2/README.md
index 2f9f6f0d..64d29622 100644
--- a/vendor/k8s.io/klog/v2/README.md
+++ b/vendor/k8s.io/klog/v2/README.md
@@ -27,7 +27,7 @@ Historical context is available here:
How to use klog
===============
-- Replace imports for `github.com/golang/glog` with `k8s.io/klog`
+- Replace imports for `"github.com/golang/glog"` with `"k8s.io/klog/v2"`
- Use `klog.InitFlags(nil)` explicitly for initializing global flags as we no longer use `init()` method to register the flags
- You can now use `log_file` instead of `log_dir` for logging to a single file (See `examples/log_file/usage_log_file.go`)
- If you want to redirect everything logged using klog somewhere else (say syslog!), you can use `klog.SetOutput()` method and supply a `io.Writer`. (See `examples/set_output/usage_set_output.go`)
@@ -35,6 +35,10 @@ How to use klog
**NOTE**: please use the newer go versions that support semantic import versioning in modules, ideally go 1.11.4 or greater.
+### Coexisting with klog/v2
+
+See [this example](examples/coexist_klog_v1_and_v2/) to see how to coexist with both klog/v1 and klog/v2.
+
### Coexisting with glog
This package can be used side by side with glog. [This example](examples/coexist_glog/coexist_glog.go) shows how to initialize and synchronize flags from the global `flag.CommandLine` FlagSet. In addition, the example makes use of stderr as combined output by setting `alsologtostderr` (or `logtostderr`) to `true`.
diff --git a/vendor/k8s.io/klog/v2/SECURITY.md b/vendor/k8s.io/klog/v2/SECURITY.md
new file mode 100644
index 00000000..2083d44c
--- /dev/null
+++ b/vendor/k8s.io/klog/v2/SECURITY.md
@@ -0,0 +1,22 @@
+# Security Policy
+
+## Security Announcements
+
+Join the [kubernetes-security-announce] group for security and vulnerability announcements.
+
+You can also subscribe to an RSS feed of the above using [this link][kubernetes-security-announce-rss].
+
+## Reporting a Vulnerability
+
+Instructions for reporting a vulnerability can be found on the
+[Kubernetes Security and Disclosure Information] page.
+
+## Supported Versions
+
+Information about supported Kubernetes versions can be found on the
+[Kubernetes version and version skew support policy] page on the Kubernetes website.
+
+[kubernetes-security-announce]: https://groups.google.com/forum/#!forum/kubernetes-security-announce
+[kubernetes-security-announce-rss]: https://groups.google.com/forum/feed/kubernetes-security-announce/msgs/rss_v2_0.xml?num=50
+[Kubernetes version and version skew support policy]: https://kubernetes.io/docs/setup/release/version-skew-policy/#supported-versions
+[Kubernetes Security and Disclosure Information]: https://kubernetes.io/docs/reference/issues-security/security/#report-a-vulnerability
diff --git a/vendor/k8s.io/klog/v2/klog.go b/vendor/k8s.io/klog/v2/klog.go
index 49f1f2dd..23cced62 100644
--- a/vendor/k8s.io/klog/v2/klog.go
+++ b/vendor/k8s.io/klog/v2/klog.go
@@ -413,6 +413,7 @@ func init() {
logging.skipHeaders = false
logging.addDirHeader = false
logging.skipLogHeaders = false
+ logging.oneOutput = false
go logging.flushDaemon()
}
@@ -432,6 +433,7 @@ func InitFlags(flagset *flag.FlagSet) {
flagset.Var(&logging.verbosity, "v", "number for the log level verbosity")
flagset.BoolVar(&logging.addDirHeader, "add_dir_header", logging.addDirHeader, "If true, adds the file directory to the header of the log messages")
flagset.BoolVar(&logging.skipHeaders, "skip_headers", logging.skipHeaders, "If true, avoid header prefixes in the log messages")
+ flagset.BoolVar(&logging.oneOutput, "one_output", logging.oneOutput, "If true, only write logs to their native severity level (vs also writing to each lower severity level")
flagset.BoolVar(&logging.skipLogHeaders, "skip_log_headers", logging.skipLogHeaders, "If true, avoid headers when opening log files")
flagset.Var(&logging.stderrThreshold, "stderrthreshold", "logs at or above this threshold go to stderr")
flagset.Var(&logging.vmodule, "vmodule", "comma-separated list of pattern=N settings for file-filtered logging")
@@ -505,6 +507,12 @@ type loggingT struct {
// If set, all output will be redirected unconditionally to the provided logr.Logger
logr logr.Logger
+
+ // If true, messages will not be propagated to lower severity log levels
+ oneOutput bool
+
+ // If set, all output will be filtered through the filter.
+ filter LogFilter
}
// buffer holds a byte Buffer for reuse. The zero value is ready for use.
@@ -687,7 +695,7 @@ func (buf *buffer) someDigits(i, d int) int {
return copy(buf.tmp[i:], buf.tmp[j:])
}
-func (l *loggingT) println(s severity, logr logr.Logger, args ...interface{}) {
+func (l *loggingT) println(s severity, logr logr.Logger, filter LogFilter, args ...interface{}) {
buf, file, line := l.header(s, 0)
// if logr is set, we clear the generated header as we rely on the backing
// logr implementation to print headers
@@ -695,15 +703,18 @@ func (l *loggingT) println(s severity, logr logr.Logger, args ...interface{}) {
l.putBuffer(buf)
buf = l.getBuffer()
}
+ if filter != nil {
+ args = filter.Filter(args)
+ }
fmt.Fprintln(buf, args...)
l.output(s, logr, buf, file, line, false)
}
-func (l *loggingT) print(s severity, logr logr.Logger, args ...interface{}) {
- l.printDepth(s, logr, 1, args...)
+func (l *loggingT) print(s severity, logr logr.Logger, filter LogFilter, args ...interface{}) {
+ l.printDepth(s, logr, filter, 1, args...)
}
-func (l *loggingT) printDepth(s severity, logr logr.Logger, depth int, args ...interface{}) {
+func (l *loggingT) printDepth(s severity, logr logr.Logger, filter LogFilter, depth int, args ...interface{}) {
buf, file, line := l.header(s, depth)
// if logr is set, we clear the generated header as we rely on the backing
// logr implementation to print headers
@@ -711,6 +722,9 @@ func (l *loggingT) printDepth(s severity, logr logr.Logger, depth int, args ...i
l.putBuffer(buf)
buf = l.getBuffer()
}
+ if filter != nil {
+ args = filter.Filter(args)
+ }
fmt.Fprint(buf, args...)
if buf.Bytes()[buf.Len()-1] != '\n' {
buf.WriteByte('\n')
@@ -718,7 +732,7 @@ func (l *loggingT) printDepth(s severity, logr logr.Logger, depth int, args ...i
l.output(s, logr, buf, file, line, false)
}
-func (l *loggingT) printf(s severity, logr logr.Logger, format string, args ...interface{}) {
+func (l *loggingT) printf(s severity, logr logr.Logger, filter LogFilter, format string, args ...interface{}) {
buf, file, line := l.header(s, 0)
// if logr is set, we clear the generated header as we rely on the backing
// logr implementation to print headers
@@ -726,6 +740,9 @@ func (l *loggingT) printf(s severity, logr logr.Logger, format string, args ...i
l.putBuffer(buf)
buf = l.getBuffer()
}
+ if filter != nil {
+ format, args = filter.FilterF(format, args)
+ }
fmt.Fprintf(buf, format, args...)
if buf.Bytes()[buf.Len()-1] != '\n' {
buf.WriteByte('\n')
@@ -736,7 +753,7 @@ func (l *loggingT) printf(s severity, logr logr.Logger, format string, args ...i
// printWithFileLine behaves like print but uses the provided file and line number. If
// alsoLogToStderr is true, the log message always appears on standard error; it
// will also appear in the log file unless --logtostderr is set.
-func (l *loggingT) printWithFileLine(s severity, logr logr.Logger, file string, line int, alsoToStderr bool, args ...interface{}) {
+func (l *loggingT) printWithFileLine(s severity, logr logr.Logger, filter LogFilter, file string, line int, alsoToStderr bool, args ...interface{}) {
buf := l.formatHeader(s, file, line)
// if logr is set, we clear the generated header as we rely on the backing
// logr implementation to print headers
@@ -744,6 +761,9 @@ func (l *loggingT) printWithFileLine(s severity, logr logr.Logger, file string,
l.putBuffer(buf)
buf = l.getBuffer()
}
+ if filter != nil {
+ args = filter.Filter(args)
+ }
fmt.Fprint(buf, args...)
if buf.Bytes()[buf.Len()-1] != '\n' {
buf.WriteByte('\n')
@@ -752,18 +772,24 @@ func (l *loggingT) printWithFileLine(s severity, logr logr.Logger, file string,
}
// if loggr is specified, will call loggr.Error, otherwise output with logging module.
-func (l *loggingT) errorS(err error, loggr logr.Logger, msg string, keysAndValues ...interface{}) {
+func (l *loggingT) errorS(err error, loggr logr.Logger, filter LogFilter, msg string, keysAndValues ...interface{}) {
+ if filter != nil {
+ msg, keysAndValues = filter.FilterS(msg, keysAndValues)
+ }
if loggr != nil {
- loggr.Error(err, msg, keysAndValues)
+ loggr.Error(err, msg, keysAndValues...)
return
}
l.printS(err, msg, keysAndValues...)
}
// if loggr is specified, will call loggr.Info, otherwise output with logging module.
-func (l *loggingT) infoS(loggr logr.Logger, msg string, keysAndValues ...interface{}) {
+func (l *loggingT) infoS(loggr logr.Logger, filter LogFilter, msg string, keysAndValues ...interface{}) {
+ if filter != nil {
+ msg, keysAndValues = filter.FilterS(msg, keysAndValues)
+ }
if loggr != nil {
- loggr.Info(msg, keysAndValues)
+ loggr.Info(msg, keysAndValues...)
return
}
l.printS(nil, msg, keysAndValues...)
@@ -785,7 +811,7 @@ func (l *loggingT) printS(err error, msg string, keysAndValues ...interface{}) {
} else {
s = errorLog
}
- l.printDepth(s, logging.logr, 2, b)
+ l.printDepth(s, logging.logr, nil, 2, b)
}
const missingValue = "(MISSING)"
@@ -919,18 +945,22 @@ func (l *loggingT) output(s severity, log logr.Logger, buf *buffer, file string,
}
}
- switch s {
- case fatalLog:
- l.file[fatalLog].Write(data)
- fallthrough
- case errorLog:
- l.file[errorLog].Write(data)
- fallthrough
- case warningLog:
- l.file[warningLog].Write(data)
- fallthrough
- case infoLog:
- l.file[infoLog].Write(data)
+ if l.oneOutput {
+ l.file[s].Write(data)
+ } else {
+ switch s {
+ case fatalLog:
+ l.file[fatalLog].Write(data)
+ fallthrough
+ case errorLog:
+ l.file[errorLog].Write(data)
+ fallthrough
+ case warningLog:
+ l.file[warningLog].Write(data)
+ fallthrough
+ case infoLog:
+ l.file[infoLog].Write(data)
+ }
}
}
}
@@ -1077,11 +1107,19 @@ func (sb *syncBuffer) rotateFile(now time.Time, startup bool) error {
}
var err error
sb.file, _, err = create(severityName[sb.sev], now, startup)
- sb.nbytes = 0
if err != nil {
return err
}
-
+ if startup {
+ fileInfo, err := sb.file.Stat()
+ if err != nil {
+ return fmt.Errorf("file stat could not get fileinfo: %v", err)
+ }
+ // init file size
+ sb.nbytes = uint64(fileInfo.Size())
+ } else {
+ sb.nbytes = 0
+ }
sb.Writer = bufio.NewWriterSize(sb.file, bufferSize)
if sb.logger.skipLogHeaders {
@@ -1197,7 +1235,7 @@ func (lb logBridge) Write(b []byte) (n int, err error) {
}
// printWithFileLine with alsoToStderr=true, so standard log messages
// always appear on standard error.
- logging.printWithFileLine(severity(lb), logging.logr, file, line, true, text)
+ logging.printWithFileLine(severity(lb), logging.logr, logging.filter, file, line, true, text)
return len(b), nil
}
@@ -1232,13 +1270,14 @@ func (l *loggingT) setV(pc uintptr) Level {
type Verbose struct {
enabled bool
logr logr.Logger
+ filter LogFilter
}
func newVerbose(level Level, b bool) Verbose {
if logging.logr == nil {
- return Verbose{b, nil}
+ return Verbose{b, nil, logging.filter}
}
- return Verbose{b, logging.logr.V(int(level))}
+ return Verbose{b, logging.logr.V(int(level)), logging.filter}
}
// V reports whether verbosity at the call site is at least the requested level.
@@ -1265,7 +1304,7 @@ func V(level Level) Verbose {
return newVerbose(level, true)
}
- // It's off globally but it vmodule may still be set.
+ // It's off globally but vmodule may still be set.
// Here is another cheap but safe test to see if vmodule is enabled.
if atomic.LoadInt32(&logging.filterLength) > 0 {
// Now we need a proper lock to use the logging structure. The pcs field
@@ -1296,7 +1335,7 @@ func (v Verbose) Enabled() bool {
// See the documentation of V for usage.
func (v Verbose) Info(args ...interface{}) {
if v.enabled {
- logging.print(infoLog, v.logr, args...)
+ logging.print(infoLog, v.logr, v.filter, args...)
}
}
@@ -1304,7 +1343,7 @@ func (v Verbose) Info(args ...interface{}) {
// See the documentation of V for usage.
func (v Verbose) Infoln(args ...interface{}) {
if v.enabled {
- logging.println(infoLog, v.logr, args...)
+ logging.println(infoLog, v.logr, v.filter, args...)
}
}
@@ -1312,7 +1351,7 @@ func (v Verbose) Infoln(args ...interface{}) {
// See the documentation of V for usage.
func (v Verbose) Infof(format string, args ...interface{}) {
if v.enabled {
- logging.printf(infoLog, v.logr, format, args...)
+ logging.printf(infoLog, v.logr, v.filter, format, args...)
}
}
@@ -1320,14 +1359,14 @@ func (v Verbose) Infof(format string, args ...interface{}) {
// See the documentation of V for usage.
func (v Verbose) InfoS(msg string, keysAndValues ...interface{}) {
if v.enabled {
- logging.infoS(v.logr, msg, keysAndValues...)
+ logging.infoS(v.logr, v.filter, msg, keysAndValues...)
}
}
// Deprecated: Use ErrorS instead.
func (v Verbose) Error(err error, msg string, args ...interface{}) {
if v.enabled {
- logging.errorS(err, v.logr, msg, args...)
+ logging.errorS(err, v.logr, v.filter, msg, args...)
}
}
@@ -1335,32 +1374,32 @@ func (v Verbose) Error(err error, msg string, args ...interface{}) {
// See the documentation of V for usage.
func (v Verbose) ErrorS(err error, msg string, keysAndValues ...interface{}) {
if v.enabled {
- logging.errorS(err, v.logr, msg, keysAndValues...)
+ logging.errorS(err, v.logr, v.filter, msg, keysAndValues...)
}
}
// Info logs to the INFO log.
// Arguments are handled in the manner of fmt.Print; a newline is appended if missing.
func Info(args ...interface{}) {
- logging.print(infoLog, logging.logr, args...)
+ logging.print(infoLog, logging.logr, logging.filter, args...)
}
// InfoDepth acts as Info but uses depth to determine which call frame to log.
// InfoDepth(0, "msg") is the same as Info("msg").
func InfoDepth(depth int, args ...interface{}) {
- logging.printDepth(infoLog, logging.logr, depth, args...)
+ logging.printDepth(infoLog, logging.logr, logging.filter, depth, args...)
}
// Infoln logs to the INFO log.
// Arguments are handled in the manner of fmt.Println; a newline is always appended.
func Infoln(args ...interface{}) {
- logging.println(infoLog, logging.logr, args...)
+ logging.println(infoLog, logging.logr, logging.filter, args...)
}
// Infof logs to the INFO log.
// Arguments are handled in the manner of fmt.Printf; a newline is appended if missing.
func Infof(format string, args ...interface{}) {
- logging.printf(infoLog, logging.logr, format, args...)
+ logging.printf(infoLog, logging.logr, logging.filter, format, args...)
}
// InfoS structured logs to the INFO log.
@@ -1372,55 +1411,55 @@ func Infof(format string, args ...interface{}) {
// output:
// >> I1025 00:15:15.525108 1 controller_utils.go:116] "Pod status updated" pod="kubedns" status="ready"
func InfoS(msg string, keysAndValues ...interface{}) {
- logging.infoS(logging.logr, msg, keysAndValues...)
+ logging.infoS(logging.logr, logging.filter, msg, keysAndValues...)
}
// Warning logs to the WARNING and INFO logs.
// Arguments are handled in the manner of fmt.Print; a newline is appended if missing.
func Warning(args ...interface{}) {
- logging.print(warningLog, logging.logr, args...)
+ logging.print(warningLog, logging.logr, logging.filter, args...)
}
// WarningDepth acts as Warning but uses depth to determine which call frame to log.
// WarningDepth(0, "msg") is the same as Warning("msg").
func WarningDepth(depth int, args ...interface{}) {
- logging.printDepth(warningLog, logging.logr, depth, args...)
+ logging.printDepth(warningLog, logging.logr, logging.filter, depth, args...)
}
// Warningln logs to the WARNING and INFO logs.
// Arguments are handled in the manner of fmt.Println; a newline is always appended.
func Warningln(args ...interface{}) {
- logging.println(warningLog, logging.logr, args...)
+ logging.println(warningLog, logging.logr, logging.filter, args...)
}
// Warningf logs to the WARNING and INFO logs.
// Arguments are handled in the manner of fmt.Printf; a newline is appended if missing.
func Warningf(format string, args ...interface{}) {
- logging.printf(warningLog, logging.logr, format, args...)
+ logging.printf(warningLog, logging.logr, logging.filter, format, args...)
}
// Error logs to the ERROR, WARNING, and INFO logs.
// Arguments are handled in the manner of fmt.Print; a newline is appended if missing.
func Error(args ...interface{}) {
- logging.print(errorLog, logging.logr, args...)
+ logging.print(errorLog, logging.logr, logging.filter, args...)
}
// ErrorDepth acts as Error but uses depth to determine which call frame to log.
// ErrorDepth(0, "msg") is the same as Error("msg").
func ErrorDepth(depth int, args ...interface{}) {
- logging.printDepth(errorLog, logging.logr, depth, args...)
+ logging.printDepth(errorLog, logging.logr, logging.filter, depth, args...)
}
// Errorln logs to the ERROR, WARNING, and INFO logs.
// Arguments are handled in the manner of fmt.Println; a newline is always appended.
func Errorln(args ...interface{}) {
- logging.println(errorLog, logging.logr, args...)
+ logging.println(errorLog, logging.logr, logging.filter, args...)
}
// Errorf logs to the ERROR, WARNING, and INFO logs.
// Arguments are handled in the manner of fmt.Printf; a newline is appended if missing.
func Errorf(format string, args ...interface{}) {
- logging.printf(errorLog, logging.logr, format, args...)
+ logging.printf(errorLog, logging.logr, logging.filter, format, args...)
}
// ErrorS structured logs to the ERROR, WARNING, and INFO logs.
@@ -1433,34 +1472,34 @@ func Errorf(format string, args ...interface{}) {
// output:
// >> E1025 00:15:15.525108 1 controller_utils.go:114] "Failed to update pod status" err="timeout"
func ErrorS(err error, msg string, keysAndValues ...interface{}) {
- logging.errorS(err, logging.logr, msg, keysAndValues...)
+ logging.errorS(err, logging.logr, logging.filter, msg, keysAndValues...)
}
// Fatal logs to the FATAL, ERROR, WARNING, and INFO logs,
// including a stack trace of all running goroutines, then calls os.Exit(255).
// Arguments are handled in the manner of fmt.Print; a newline is appended if missing.
func Fatal(args ...interface{}) {
- logging.print(fatalLog, logging.logr, args...)
+ logging.print(fatalLog, logging.logr, logging.filter, args...)
}
// FatalDepth acts as Fatal but uses depth to determine which call frame to log.
// FatalDepth(0, "msg") is the same as Fatal("msg").
func FatalDepth(depth int, args ...interface{}) {
- logging.printDepth(fatalLog, logging.logr, depth, args...)
+ logging.printDepth(fatalLog, logging.logr, logging.filter, depth, args...)
}
// Fatalln logs to the FATAL, ERROR, WARNING, and INFO logs,
// including a stack trace of all running goroutines, then calls os.Exit(255).
// Arguments are handled in the manner of fmt.Println; a newline is always appended.
func Fatalln(args ...interface{}) {
- logging.println(fatalLog, logging.logr, args...)
+ logging.println(fatalLog, logging.logr, logging.filter, args...)
}
// Fatalf logs to the FATAL, ERROR, WARNING, and INFO logs,
// including a stack trace of all running goroutines, then calls os.Exit(255).
// Arguments are handled in the manner of fmt.Printf; a newline is appended if missing.
func Fatalf(format string, args ...interface{}) {
- logging.printf(fatalLog, logging.logr, format, args...)
+ logging.printf(fatalLog, logging.logr, logging.filter, format, args...)
}
// fatalNoStacks is non-zero if we are to exit without dumping goroutine stacks.
@@ -1471,27 +1510,42 @@ var fatalNoStacks uint32
// Arguments are handled in the manner of fmt.Print; a newline is appended if missing.
func Exit(args ...interface{}) {
atomic.StoreUint32(&fatalNoStacks, 1)
- logging.print(fatalLog, logging.logr, args...)
+ logging.print(fatalLog, logging.logr, logging.filter, args...)
}
// ExitDepth acts as Exit but uses depth to determine which call frame to log.
// ExitDepth(0, "msg") is the same as Exit("msg").
func ExitDepth(depth int, args ...interface{}) {
atomic.StoreUint32(&fatalNoStacks, 1)
- logging.printDepth(fatalLog, logging.logr, depth, args...)
+ logging.printDepth(fatalLog, logging.logr, logging.filter, depth, args...)
}
// Exitln logs to the FATAL, ERROR, WARNING, and INFO logs, then calls os.Exit(1).
func Exitln(args ...interface{}) {
atomic.StoreUint32(&fatalNoStacks, 1)
- logging.println(fatalLog, logging.logr, args...)
+ logging.println(fatalLog, logging.logr, logging.filter, args...)
}
// Exitf logs to the FATAL, ERROR, WARNING, and INFO logs, then calls os.Exit(1).
// Arguments are handled in the manner of fmt.Printf; a newline is appended if missing.
func Exitf(format string, args ...interface{}) {
atomic.StoreUint32(&fatalNoStacks, 1)
- logging.printf(fatalLog, logging.logr, format, args...)
+ logging.printf(fatalLog, logging.logr, logging.filter, format, args...)
+}
+
+// LogFilter is a collection of functions that can filter all logging calls,
+// e.g. for sanitization of arguments and prevent accidental leaking of secrets.
+type LogFilter interface {
+ Filter(args []interface{}) []interface{}
+ FilterF(format string, args []interface{}) (string, []interface{})
+ FilterS(msg string, keysAndValues []interface{}) (string, []interface{})
+}
+
+func SetLogFilter(filter LogFilter) {
+ logging.mu.Lock()
+ defer logging.mu.Unlock()
+
+ logging.filter = filter
}
// ObjectRef references a kubernetes object
diff --git a/vendor/k8s.io/kops/util/pkg/vfs/BUILD.bazel b/vendor/k8s.io/kops/util/pkg/vfs/BUILD.bazel
index 99cc3590..214fccce 100644
--- a/vendor/k8s.io/kops/util/pkg/vfs/BUILD.bazel
+++ b/vendor/k8s.io/kops/util/pkg/vfs/BUILD.bazel
@@ -3,6 +3,8 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library")
go_library(
name = "go_default_library",
srcs = [
+ "azureblob.go",
+ "azureclient.go",
"cache.go",
"context.go",
"fs.go",
@@ -25,6 +27,8 @@ go_library(
importpath = "k8s.io/kops/util/pkg/vfs",
visibility = ["//visibility:public"],
deps = [
+ "//vendor/github.com/Azure/azure-pipeline-go/pipeline:go_default_library",
+ "//vendor/github.com/Azure/azure-storage-blob-go/azblob:go_default_library",
"//vendor/github.com/aws/aws-sdk-go/aws:go_default_library",
"//vendor/github.com/aws/aws-sdk-go/aws/awserr:go_default_library",
"//vendor/github.com/aws/aws-sdk-go/aws/credentials:go_default_library",
@@ -45,6 +49,7 @@ go_library(
"//vendor/github.com/hashicorp/vault/api:go_default_library",
"//vendor/github.com/pkg/sftp:go_default_library",
"//vendor/golang.org/x/crypto/ssh:go_default_library",
+ "//vendor/golang.org/x/oauth2:go_default_library",
"//vendor/google.golang.org/api/googleapi:go_default_library",
"//vendor/google.golang.org/api/option:go_default_library",
"//vendor/google.golang.org/api/storage/v1:go_default_library",
diff --git a/vendor/k8s.io/kops/util/pkg/vfs/azureblob.go b/vendor/k8s.io/kops/util/pkg/vfs/azureblob.go
new file mode 100644
index 00000000..2353919d
--- /dev/null
+++ b/vendor/k8s.io/kops/util/pkg/vfs/azureblob.go
@@ -0,0 +1,288 @@
+/*
+Copyright 2020 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package vfs
+
+import (
+ "bytes"
+ "context"
+ "encoding/base64"
+ "fmt"
+ "io"
+ "os"
+ "path"
+ "strings"
+ "sync"
+
+ "github.com/Azure/azure-storage-blob-go/azblob"
+ "k8s.io/kops/util/pkg/hashing"
+)
+
+// AzureBlobPath is a path in the VFS space backed by Azure Blob.
+type AzureBlobPath struct {
+ client *azureClient
+ container string
+ key string
+ md5Hash string
+}
+
+var _ Path = &AzureBlobPath{}
+var _ HasHash = &AzureBlobPath{}
+
+// NewAzureBlobPath returns a new AzureBlobPath.
+func NewAzureBlobPath(client *azureClient, container string, key string) *AzureBlobPath {
+ return &AzureBlobPath{
+ client: client,
+ container: strings.TrimSuffix(container, "/"),
+ key: strings.TrimPrefix(key, "/"),
+ }
+}
+
+// Base returns the base name (last element).
+func (p *AzureBlobPath) Base() string {
+ return path.Base(p.key)
+}
+
+// PreferredHash returns the hash of the file contents, with the preferred hash algorithm.
+func (p *AzureBlobPath) PreferredHash() (*hashing.Hash, error) {
+ return p.Hash(hashing.HashAlgorithmMD5)
+}
+
+// Hash gets the hash, or nil if the hash cannot be (easily) computed.
+func (p *AzureBlobPath) Hash(a hashing.HashAlgorithm) (*hashing.Hash, error) {
+ if a != hashing.HashAlgorithmMD5 {
+ return nil, nil
+ }
+
+ if p.md5Hash == "" {
+ return nil, nil
+ }
+
+ md5Bytes, err := base64.StdEncoding.DecodeString(p.md5Hash)
+ if err != nil {
+ return nil, fmt.Errorf("not valid MD5 sum: %q", p.md5Hash)
+ }
+
+ return &hashing.Hash{Algorithm: hashing.HashAlgorithmMD5, HashValue: md5Bytes}, nil
+}
+
+// Path returns a string representing the full path.
+func (p *AzureBlobPath) Path() string {
+ return fmt.Sprintf("azureblob://%s/%s", p.container, p.key)
+}
+
+// Join returns a new path that joins the current path and given relative paths.
+func (p *AzureBlobPath) Join(relativePath ...string) Path {
+ args := []string{p.key}
+ args = append(args, relativePath...)
+ joined := path.Join(args...)
+ return &AzureBlobPath{
+ client: p.client,
+ container: p.container,
+ key: joined,
+ }
+}
+
+// ReadFile returns the content of the blob.
+func (p *AzureBlobPath) ReadFile() ([]byte, error) {
+ var b bytes.Buffer
+ _, err := p.WriteTo(&b)
+ if err != nil {
+ return nil, err
+ }
+ return b.Bytes(), nil
+}
+
+// WriteTo writes the content of the blob to the writer.
+func (p *AzureBlobPath) WriteTo(w io.Writer) (n int64, err error) {
+ cURL, err := p.client.newContainerURL(p.container)
+ if err != nil {
+ return 0, err
+ }
+ resp, err := cURL.NewBlockBlobURL(p.key).Download(
+ context.TODO(),
+ 0, /* offset */
+ azblob.CountToEnd,
+ azblob.BlobAccessConditions{},
+ false /* rangeGetContentMD5 */)
+ if err != nil {
+ serr, ok := err.(azblob.StorageError)
+ if ok && serr.ServiceCode() == azblob.ServiceCodeBlobNotFound {
+ return 0, os.ErrNotExist
+ }
+ return 0, err
+ }
+ return io.Copy(w, resp.Body(azblob.RetryReaderOptions{MaxRetryRequests: 10}))
+}
+
+// createFileLockAzureBLob prevents concurrent creates on the same
+// file while maintaining atomicity of writes.
+//
+// This takes the same approach as S3Path.
+var createFileLockAzureBlob sync.Mutex
+
+// CreateFile writes the file contents only if the file does not already exist.
+func (p *AzureBlobPath) CreateFile(data io.ReadSeeker, acl ACL) error {
+ createFileLockAzureBlob.Lock()
+ defer createFileLockAzureBlob.Unlock()
+
+ // Check if the blob exists.
+ _, err := p.ReadFile()
+ if err == nil {
+ return os.ErrExist
+ }
+ if !os.IsNotExist(err) {
+ return err
+ }
+ return p.WriteFile(data, acl)
+}
+
+// WriteFile writes the blob to the reader.
+//
+// TODO(kenji): Support ACL.
+func (p *AzureBlobPath) WriteFile(data io.ReadSeeker, acl ACL) error {
+ md5Hash, err := hashing.HashAlgorithmMD5.Hash(data)
+ if err != nil {
+ return err
+ }
+ if _, err := data.Seek(0, 0); err != nil {
+ return fmt.Errorf("error seeking to start of data stream: %v", err)
+ }
+
+ cURL, err := p.client.newContainerURL(p.container)
+ if err != nil {
+ return err
+ }
+ // Use block blob. Other options are page blobs (optimized for
+ // random read/write) and append blob (optimized for append).
+ _, err = cURL.NewBlockBlobURL(p.key).Upload(
+ context.TODO(),
+ data,
+ azblob.BlobHTTPHeaders{
+ ContentType: "application/octet-stream",
+ ContentMD5: md5Hash.HashValue,
+ },
+ azblob.Metadata{},
+ azblob.BlobAccessConditions{},
+ )
+ return err
+}
+
+// Remove deletes the blob.
+func (p *AzureBlobPath) Remove() error {
+ cURL, err := p.client.newContainerURL(p.container)
+ if err != nil {
+ return err
+ }
+ // Delete the blob, but keep its snapshot.
+ _, err = cURL.NewBlockBlobURL(p.key).Delete(context.TODO(), azblob.DeleteSnapshotsOptionNone, azblob.BlobAccessConditions{})
+ return err
+}
+
+func (p *AzureBlobPath) RemoveAllVersions() error {
+ cURL, err := p.client.newContainerURL(p.container)
+ if err != nil {
+ return err
+ }
+ // Delete the blob and its snapshot.
+ _, err = cURL.NewBlockBlobURL(p.key).Delete(context.TODO(), azblob.DeleteSnapshotsOptionInclude, azblob.BlobAccessConditions{})
+ return err
+}
+
+// ReadDir lists the blobs under the current Path.
+func (p *AzureBlobPath) ReadDir() ([]Path, error) {
+ var paths []Path
+ cURL, err := p.client.newContainerURL(p.container)
+ if err != nil {
+ return nil, err
+ }
+
+ prefix := p.key
+ if !strings.HasSuffix(prefix, "/") {
+ prefix += "/"
+ }
+
+ ctx := context.TODO()
+ for m := (azblob.Marker{}); m.NotDone(); {
+ // List all blobs that have the same prefix (without
+ // recursion). By specifying "/", the request will
+ // group blobs with their names up to the appearance of "/".
+ //
+ // Suppose that we have the following blobs:
+ //
+ // - cluster/cluster.spec
+ // - cluster/config
+ // - cluster/instancegroup/master-eastus-1
+ //
+ // When the prefix is set to "cluster/", the request
+ // returns "cluster/cluster.spec" and "cluster/config" in BlobItems
+ // and returns "cluster/instancegroup/" in BlobPrefixes.
+ resp, err := cURL.ListBlobsHierarchySegment(
+ ctx,
+ m,
+ "/", /* delimiter */
+ azblob.ListBlobsSegmentOptions{Prefix: prefix})
+ if err != nil {
+ return nil, nil
+ }
+ for _, item := range resp.Segment.BlobItems {
+ paths = append(paths, &AzureBlobPath{
+ client: p.client,
+ container: p.container,
+ key: item.Name,
+ md5Hash: string(item.Properties.ContentMD5),
+ })
+ }
+ for _, prefix := range resp.Segment.BlobPrefixes {
+ paths = append(paths, &AzureBlobPath{
+ client: p.client,
+ container: p.container,
+ key: prefix.Name,
+ })
+ }
+
+ m = resp.NextMarker
+
+ }
+ return paths, nil
+}
+
+// ReadTree lists all blobs (recursively) in the subtree rooted at the current Path.
+func (p *AzureBlobPath) ReadTree() ([]Path, error) {
+ var paths []Path
+ cURL, err := p.client.newContainerURL(p.container)
+ if err != nil {
+ return nil, err
+ }
+ ctx := context.TODO()
+ for m := (azblob.Marker{}); m.NotDone(); {
+ resp, err := cURL.ListBlobsFlatSegment(ctx, m, azblob.ListBlobsSegmentOptions{Prefix: p.key})
+ if err != nil {
+ return nil, nil
+ }
+ for _, item := range resp.Segment.BlobItems {
+ paths = append(paths, &AzureBlobPath{
+ client: p.client,
+ container: p.container,
+ key: item.Name,
+ md5Hash: string(item.Properties.ContentMD5),
+ })
+ }
+ m = resp.NextMarker
+
+ }
+ return paths, nil
+}
diff --git a/vendor/k8s.io/kops/util/pkg/vfs/azureclient.go b/vendor/k8s.io/kops/util/pkg/vfs/azureclient.go
new file mode 100644
index 00000000..fa5a1cbd
--- /dev/null
+++ b/vendor/k8s.io/kops/util/pkg/vfs/azureclient.go
@@ -0,0 +1,120 @@
+/*
+Copyright 2020 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package vfs
+
+import (
+ "encoding/json"
+ "fmt"
+ "io/ioutil"
+ "net/http"
+ "net/url"
+ "os"
+
+ "github.com/Azure/azure-pipeline-go/pipeline"
+ "github.com/Azure/azure-storage-blob-go/azblob"
+ "golang.org/x/oauth2"
+ "k8s.io/klog/v2"
+)
+
+const (
+ storageResourceID = "https://storage.azure.com/"
+)
+
+type azureClient struct {
+ p pipeline.Pipeline
+ accountName string
+}
+
+func (c *azureClient) newContainerURL(containerName string) (*azblob.ContainerURL, error) {
+ u, err := url.Parse(fmt.Sprintf("https://%s.blob.core.windows.net/%s", c.accountName, containerName))
+ if err != nil {
+ return nil, err
+ }
+ // Create a ContainerURL object that wraps the container URL and a request
+ // pipeline to make requests.
+ cURL := azblob.NewContainerURL(*u, c.p)
+ return &cURL, nil
+}
+
+func newAzureClient() (*azureClient, error) {
+ accountName := os.Getenv("AZURE_STORAGE_ACCOUNT")
+ if accountName == "" {
+ return nil, fmt.Errorf("AZURE_STORAGE_ACCOUNT must be set")
+ }
+ credential, err := newAzureCredential(accountName)
+ if err != nil {
+ return nil, err
+ }
+ return &azureClient{
+ p: azblob.NewPipeline(credential, azblob.PipelineOptions{}),
+ accountName: accountName,
+ }, nil
+}
+
+// newAzureCredential returns a Azure credential. When env var
+// AZURE_STORAGE_KEY is set, obtain a credential from the env
+// var. When the env var is not set, obtain a credential from Instance
+// Metadata Service.
+//
+// Please note that Instance Metadata Service is available only within a VM
+// running in Azure (and when necessary role is attached to the VM).
+func newAzureCredential(accountName string) (azblob.Credential, error) {
+ accountKey := os.Getenv("AZURE_STORAGE_KEY")
+ if accountKey != "" {
+ klog.V(2).Infof("Creating a shared key credential")
+ return azblob.NewSharedKeyCredential(accountName, accountKey)
+ }
+
+ klog.V(2).Infof("Creating a token credential from Instance Metadata Service.")
+ token, err := getAccessTokenFromInstanceMetadataService()
+ if err != nil {
+ return nil, err
+ }
+ return azblob.NewTokenCredential(token, nil), nil
+}
+
+// getAccessTokenFromInstanceMetadataService obtains the access token from Instance Metadata Service.
+func getAccessTokenFromInstanceMetadataService() (string, error) {
+ client := &http.Client{}
+ req, err := http.NewRequest("GET", "http://169.254.169.254/metadata/identity/oauth2/token", nil)
+ if err != nil {
+ return "", fmt.Errorf("error creating a new request: %s", err)
+ }
+ req.Header.Add("Metadata", "True")
+
+ q := req.URL.Query()
+ q.Add("resource", storageResourceID)
+ q.Add("api-version", "2020-06-01")
+ req.URL.RawQuery = q.Encode()
+
+ resp, err := client.Do(req)
+ if err != nil {
+ return "", fmt.Errorf("error sending request to the metadata server: %s", err)
+ }
+
+ defer resp.Body.Close()
+ body, err := ioutil.ReadAll(resp.Body)
+ if err != nil {
+ return "", fmt.Errorf("error reading a response from the metadata server: %s", err)
+ }
+
+ token := &oauth2.Token{}
+ if err := json.Unmarshal(body, token); err != nil {
+ return "", fmt.Errorf("error unmarsharlling token: %s", err)
+ }
+ return token.AccessToken, nil
+}
diff --git a/vendor/k8s.io/kops/util/pkg/vfs/context.go b/vendor/k8s.io/kops/util/pkg/vfs/context.go
index 62b1addc..c1ea50b6 100644
--- a/vendor/k8s.io/kops/util/pkg/vfs/context.go
+++ b/vendor/k8s.io/kops/util/pkg/vfs/context.go
@@ -55,6 +55,7 @@ type VFSContext struct {
ossClient *oss.Client
vaultClient *vault.Client
+ azureClient *azureClient
}
var Context = VFSContext{
@@ -180,6 +181,10 @@ func (c *VFSContext) BuildVfsPath(p string) (Path, error) {
return c.buildVaultPath(p)
}
+ if strings.HasPrefix(p, "azureblob://") {
+ return c.buildAzureBlobPath(p)
+ }
+
return nil, fmt.Errorf("unknown / unhandled path type: %q", p)
}
@@ -486,3 +491,42 @@ func (c *VFSContext) buildVaultPath(p string) (*VaultPath, error) {
return newVaultPath(c.vaultClient, scheme, u.Path)
}
+
+func (c *VFSContext) buildAzureBlobPath(p string) (*AzureBlobPath, error) {
+ u, err := url.Parse(p)
+ if err != nil {
+ return nil, fmt.Errorf("failed to parse %q: %s", p, err)
+ }
+
+ if u.Scheme != "azureblob" {
+ return nil, fmt.Errorf("invalid Azure Blob scheme: %q", p)
+ }
+
+ container := strings.TrimSuffix(u.Host, "/")
+ if container == "" {
+ return nil, fmt.Errorf("no container specified: %q", p)
+ }
+
+ client, err := c.getAzureBlobClient()
+ if err != nil {
+ return nil, err
+ }
+
+ return NewAzureBlobPath(client, container, u.Path), nil
+}
+
+func (c *VFSContext) getAzureBlobClient() (*azureClient, error) {
+ c.mutex.Lock()
+ defer c.mutex.Unlock()
+
+ if c.azureClient != nil {
+ return c.azureClient, nil
+ }
+
+ client, err := newAzureClient()
+ if err != nil {
+ return nil, err
+ }
+ c.azureClient = client
+ return client, nil
+}
diff --git a/vendor/k8s.io/kops/util/pkg/vfs/vfs.go b/vendor/k8s.io/kops/util/pkg/vfs/vfs.go
index b160d378..abb157af 100644
--- a/vendor/k8s.io/kops/util/pkg/vfs/vfs.go
+++ b/vendor/k8s.io/kops/util/pkg/vfs/vfs.go
@@ -105,7 +105,7 @@ func IsClusterReadable(p Path) bool {
}
switch p.(type) {
- case *S3Path, *GSPath, *SwiftPath, *OSSPath, *FSPath, *VaultPath:
+ case *S3Path, *GSPath, *SwiftPath, *OSSPath, *FSPath, *VaultPath, *AzureBlobPath:
return true
case *KubernetesPath:
diff --git a/vendor/k8s.io/utils/mount/OWNERS b/vendor/k8s.io/utils/mount/OWNERS
index 5fa5cc24..aacc6685 100644
--- a/vendor/k8s.io/utils/mount/OWNERS
+++ b/vendor/k8s.io/utils/mount/OWNERS
@@ -8,6 +8,7 @@ reviewers:
- andyzhangx
- gnufied
approvers:
+ - andyzhangx
- jingxu97
- saad-ali
- jsafrane
diff --git a/vendor/k8s.io/utils/mount/mount_windows.go b/vendor/k8s.io/utils/mount/mount_windows.go
index 0534649c..4ec70fbd 100644
--- a/vendor/k8s.io/utils/mount/mount_windows.go
+++ b/vendor/k8s.io/utils/mount/mount_windows.go
@@ -29,6 +29,10 @@ import (
"k8s.io/utils/keymutex"
)
+const (
+ accessDenied string = "access is denied"
+)
+
// Mounter provides the default implementation of mount.Interface
// for the windows platform. This implementation assumes that the
// kubelet is running in the host's root mount namespace.
@@ -84,9 +88,8 @@ func (mounter *Mounter) MountSensitive(source string, target string, fstype stri
allOptions = append(allOptions, options...)
allOptions = append(allOptions, sensitiveOptions...)
if len(allOptions) < 2 {
- klog.Warningf("mount options(%q) command number(%d) less than 2, source:%q, target:%q, skip mounting",
+ return fmt.Errorf("mount options(%q) should have at least 2 options, current number:%d, source:%q, target:%q",
sanitizedOptionsForLogging, len(allOptions), source, target)
- return nil
}
// currently only cifs mount is supported
@@ -98,17 +101,27 @@ func (mounter *Mounter) MountSensitive(source string, target string, fstype stri
getSMBMountMutex.LockKey(source)
defer getSMBMountMutex.UnlockKey(source)
- if output, err := newSMBMapping(allOptions[0], allOptions[1], source); err != nil {
+ username := allOptions[0]
+ password := allOptions[1]
+ if output, err := newSMBMapping(username, password, source); err != nil {
+ klog.Warningf("SMB Mapping(%s) returned with error(%v), output(%s)", source, err, string(output))
if isSMBMappingExist(source) {
- klog.V(2).Infof("SMB Mapping(%s) already exists, now begin to remove and remount", source)
- if output, err := removeSMBMapping(source); err != nil {
- return fmt.Errorf("Remove-SmbGlobalMapping failed: %v, output: %q", err, output)
- }
- if output, err := newSMBMapping(allOptions[0], allOptions[1], source); err != nil {
- return fmt.Errorf("New-SmbGlobalMapping remount failed: %v, output: %q", err, output)
+ valid, err := isValidPath(source)
+ if !valid {
+ if err == nil || isAccessDeniedError(err) {
+ klog.V(2).Infof("SMB Mapping(%s) already exists while it's not valid, return error: %v, now begin to remove and remount", source, err)
+ if output, err = removeSMBMapping(source); err != nil {
+ return fmt.Errorf("Remove-SmbGlobalMapping failed: %v, output: %q", err, output)
+ }
+ if output, err := newSMBMapping(username, password, source); err != nil {
+ return fmt.Errorf("New-SmbGlobalMapping(%s) failed: %v, output: %q", source, err, output)
+ }
+ }
+ } else {
+ klog.V(2).Infof("SMB Mapping(%s) already exists and is still valid, skip error(%v)", source, err)
}
} else {
- return fmt.Errorf("New-SmbGlobalMapping failed: %v, output: %q", err, output)
+ return fmt.Errorf("New-SmbGlobalMapping(%s) failed: %v, output: %q", source, err, output)
}
}
}
@@ -153,6 +166,23 @@ func isSMBMappingExist(remotepath string) bool {
return err == nil
}
+// check whether remotepath is valid
+// return (true, nil) if remotepath is valid
+func isValidPath(remotepath string) (bool, error) {
+ cmd := exec.Command("powershell", "/c", `Test-Path $Env:remoteapth`)
+ cmd.Env = append(os.Environ(), fmt.Sprintf("remoteapth=%s", remotepath))
+ output, err := cmd.CombinedOutput()
+ if err != nil {
+ return false, fmt.Errorf("returned output: %s, error: %v", string(output), err)
+ }
+
+ return strings.HasPrefix(strings.ToLower(string(output)), "true"), nil
+}
+
+func isAccessDeniedError(err error) bool {
+ return err != nil && strings.Contains(strings.ToLower(err.Error()), accessDenied)
+}
+
// remove SMB mapping
func removeSMBMapping(remotepath string) (string, error) {
cmd := exec.Command("powershell", "/c", `Remove-SmbGlobalMapping -RemotePath $Env:smbremotepath -Force`)
diff --git a/vendor/modules.txt b/vendor/modules.txt
index b30cc9a1..173652c3 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -1,5 +1,9 @@
-# cloud.google.com/go v0.51.0
+# cloud.google.com/go v0.54.0
cloud.google.com/go/compute/metadata
+# github.com/Azure/azure-pipeline-go v0.2.3
+github.com/Azure/azure-pipeline-go/pipeline
+# github.com/Azure/azure-storage-blob-go v0.10.0
+github.com/Azure/azure-storage-blob-go/azblob
# github.com/BurntSushi/toml v0.3.1
github.com/BurntSushi/toml
# github.com/aliyun/alibaba-cloud-sdk-go v1.61.264
@@ -14,7 +18,7 @@ github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests
github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses
github.com/aliyun/alibaba-cloud-sdk-go/sdk/utils
github.com/aliyun/alibaba-cloud-sdk-go/services/ecs
-# github.com/aws/aws-sdk-go v1.35.10
+# github.com/aws/aws-sdk-go v1.35.24
github.com/aws/aws-sdk-go/aws
github.com/aws/aws-sdk-go/aws/arn
github.com/aws/aws-sdk-go/aws/awserr
@@ -74,17 +78,17 @@ github.com/denverdino/aliyungo/common
github.com/denverdino/aliyungo/metadata
github.com/denverdino/aliyungo/oss
github.com/denverdino/aliyungo/util
-# github.com/digitalocean/godo v1.19.0
+# github.com/digitalocean/godo v1.54.0
github.com/digitalocean/godo
# github.com/go-ini/ini v1.51.0
github.com/go-ini/ini
-# github.com/go-logr/logr v0.2.1-0.20200730175230-ee2de8da5be6
+# github.com/go-logr/logr v0.3.0
github.com/go-logr/logr
# github.com/gogo/protobuf v1.3.1
github.com/gogo/protobuf/gogoproto
github.com/gogo/protobuf/proto
github.com/gogo/protobuf/protoc-gen-gogo/descriptor
-# github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7
+# github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e
github.com/golang/groupcache/lru
# github.com/golang/protobuf v1.4.2
github.com/golang/protobuf/jsonpb
@@ -97,7 +101,7 @@ github.com/golang/protobuf/ptypes/timestamp
github.com/golang/snappy
# github.com/google/go-querystring v1.0.0
github.com/google/go-querystring/query
-# github.com/google/uuid v1.1.1
+# github.com/google/uuid v1.1.2
github.com/google/uuid
# github.com/googleapis/gax-go/v2 v2.0.5
github.com/googleapis/gax-go/v2
@@ -155,6 +159,8 @@ github.com/jmespath/go-jmespath
github.com/json-iterator/go
# github.com/kr/fs v0.1.0
github.com/kr/fs
+# github.com/mattn/go-ieproxy v0.0.1
+github.com/mattn/go-ieproxy
# github.com/mitchellh/go-homedir v1.1.0
github.com/mitchellh/go-homedir
# github.com/mitchellh/mapstructure v1.1.2
@@ -195,7 +201,7 @@ go.etcd.io/etcd/raft/quorum
go.etcd.io/etcd/raft/raftpb
go.etcd.io/etcd/raft/tracker
go.etcd.io/etcd/version
-# go.opencensus.io v0.22.2
+# go.opencensus.io v0.22.3
go.opencensus.io
go.opencensus.io/internal
go.opencensus.io/internal/tagencoding
@@ -223,7 +229,7 @@ go.uber.org/zap/internal/bufferpool
go.uber.org/zap/internal/color
go.uber.org/zap/internal/exit
go.uber.org/zap/zapcore
-# golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9
+# golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0
golang.org/x/crypto/blowfish
golang.org/x/crypto/chacha20
golang.org/x/crypto/curve25519
@@ -236,10 +242,11 @@ golang.org/x/crypto/ssh
golang.org/x/crypto/ssh/internal/bcrypt_pbkdf
# golang.org/x/mod v0.3.0
golang.org/x/mod/semver
-# golang.org/x/net v0.0.0-20200707034311-ab3426394381
+# golang.org/x/net v0.0.0-20201110031124-69a78807bb2b
golang.org/x/net/context
golang.org/x/net/context/ctxhttp
golang.org/x/net/http/httpguts
+golang.org/x/net/http/httpproxy
golang.org/x/net/http2
golang.org/x/net/http2/hpack
golang.org/x/net/idna
@@ -251,18 +258,20 @@ golang.org/x/oauth2/google
golang.org/x/oauth2/internal
golang.org/x/oauth2/jws
golang.org/x/oauth2/jwt
-# golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4
+# golang.org/x/sys v0.0.0-20201126233918-771906719818
golang.org/x/sys/cpu
golang.org/x/sys/internal/unsafeheader
golang.org/x/sys/unix
-# golang.org/x/text v0.3.3
+golang.org/x/sys/windows
+golang.org/x/sys/windows/registry
+# golang.org/x/text v0.3.4
golang.org/x/text/secure/bidirule
golang.org/x/text/transform
golang.org/x/text/unicode/bidi
golang.org/x/text/unicode/norm
# golang.org/x/time v0.0.0-20191024005414-555d28b269f0
golang.org/x/time/rate
-# golang.org/x/tools v0.0.0-20200626171337-aa94e735be7f
+# golang.org/x/tools v0.0.0-20201125231158-b5590deeca9b
golang.org/x/tools/go/analysis
golang.org/x/tools/go/analysis/passes/inspect
golang.org/x/tools/go/ast/astutil
@@ -282,9 +291,10 @@ golang.org/x/tools/internal/event/core
golang.org/x/tools/internal/event/keys
golang.org/x/tools/internal/event/label
golang.org/x/tools/internal/gocommand
+golang.org/x/tools/internal/lsp/fuzzy
golang.org/x/tools/internal/packagesinternal
golang.org/x/tools/internal/typesinternal
-# golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543
+# golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1
golang.org/x/xerrors
golang.org/x/xerrors/internal
# google.golang.org/api v0.22.0
@@ -400,9 +410,9 @@ gopkg.in/square/go-jose.v2/json
gopkg.in/square/go-jose.v2/jwt
# gopkg.in/warnings.v0 v0.1.2
gopkg.in/warnings.v0
-# gopkg.in/yaml.v2 v2.3.0
+# gopkg.in/yaml.v2 v2.4.0
gopkg.in/yaml.v2
-# honnef.co/go/tools v0.0.1-2020.1.4
+# honnef.co/go/tools v0.0.1-2020.1.6
honnef.co/go/tools/arg
honnef.co/go/tools/cmd/staticcheck
honnef.co/go/tools/code
@@ -432,7 +442,7 @@ honnef.co/go/tools/staticcheck
honnef.co/go/tools/stylecheck
honnef.co/go/tools/unused
honnef.co/go/tools/version
-# k8s.io/apimachinery v0.19.0 => k8s.io/apimachinery v0.19.5-rc.0
+# k8s.io/apimachinery v0.20.0-beta.2 => k8s.io/apimachinery v0.19.5-rc.0
k8s.io/apimachinery/pkg/util/clock
k8s.io/apimachinery/pkg/util/runtime
k8s.io/apimachinery/pkg/util/wait
@@ -440,15 +450,13 @@ k8s.io/apimachinery/pkg/util/wait
k8s.io/client-go/util/cert
k8s.io/client-go/util/homedir
k8s.io/client-go/util/keyutil
-# k8s.io/klog v1.0.0
-k8s.io/klog
-# k8s.io/klog/v2 v2.3.0
+# k8s.io/klog/v2 v2.4.0
k8s.io/klog/v2
-# k8s.io/kops v0.0.0-00010101000000-000000000000 => k8s.io/kops v1.19.0-beta.1
+# k8s.io/kops v0.0.0-00010101000000-000000000000 => k8s.io/kops v1.19.0-alpha.5.0.20201129060248-dc1c2210cf77
k8s.io/kops/pkg/try
k8s.io/kops/util/pkg/hashing
k8s.io/kops/util/pkg/vfs
-# k8s.io/utils v0.0.0-20200729134348-d5654de09c73
+# k8s.io/utils v0.0.0-20201110183641-67b214c5f920
k8s.io/utils/exec
k8s.io/utils/io
k8s.io/utils/keymutex