From 1aba36f016d67ca086d19aaa157c0aa98c426ce0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 17 Feb 2024 16:39:31 -0800 Subject: [PATCH 01/47] Bump golang.org/x/crypto from 0.7.0 to 0.17.0 (#402) Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.7.0 to 0.17.0. - [Commits](https://github.com/golang/crypto/compare/v0.7.0...v0.17.0) --- updated-dependencies: - dependency-name: golang.org/x/crypto dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 10 +-- go.sum | 257 ++++----------------------------------------------------- 2 files changed, 19 insertions(+), 248 deletions(-) diff --git a/go.mod b/go.mod index 888f10ec..ac0f403a 100644 --- a/go.mod +++ b/go.mod @@ -4,20 +4,18 @@ go 1.12 require ( github.com/cespare/xxhash/v2 v2.2.0 // indirect - github.com/go-kit/kit v0.10.0 // indirect github.com/golang/protobuf v1.5.3 // indirect github.com/hdm/jarm-go v0.0.7 github.com/prometheus/client_golang v1.14.0 github.com/prometheus/common v0.42.0 // indirect github.com/prometheus/procfs v0.9.0 // indirect github.com/sirupsen/logrus v1.9.0 - github.com/zmap/rc2 v0.0.0-20190804163417-abaa70531248 // indirect github.com/zmap/zcrypto v0.0.0-20230310154051-c8b263fd8300 github.com/zmap/zflags v1.4.0-beta.1.0.20200204220219-9d95409821b6 - golang.org/x/crypto v0.7.0 - golang.org/x/net v0.8.0 - golang.org/x/sys v0.6.0 - golang.org/x/text v0.8.0 + golang.org/x/crypto v0.17.0 + golang.org/x/net v0.10.0 + golang.org/x/sys v0.15.0 + golang.org/x/text v0.14.0 google.golang.org/protobuf v1.30.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 diff --git a/go.sum b/go.sum index 4f6dbdb2..91047293 100644 --- a/go.sum +++ b/go.sum @@ -34,14 +34,7 @@ cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9 dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= -github.com/RumbleDiscovery/jarm-go v0.0.6 h1:n3JEmOhPyfhmu1aeDEK/10Y2F+GMUYrtGFZmp4Yj0s4= -github.com/RumbleDiscovery/jarm-go v0.0.6/go.mod h1:dXV7z5vBXQI0cNaHXwzGtq2PJ2LgM3XgcFiX32FU3bg= github.com/RumbleDiscovery/rumble-tools v0.0.0-20201105153123-f2adbb3244d2/go.mod h1:jD2+mU+E2SZUuAOHZvZj4xP4frlOo+N/YrXDvASFhkE= -github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= -github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= -github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= -github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= github.com/alecthomas/kingpin/v2 v2.3.1/go.mod h1:oYL5vtsvEHZGHxU7DMp32Dvx+qL+ptGn6lWaot2vCNE= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= @@ -49,24 +42,11 @@ github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRF github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= -github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= -github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= -github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 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/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= -github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= @@ -74,41 +54,20 @@ github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XL github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= -github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= 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/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= -github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= -github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= -github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= -github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= -github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= github.com/go-kit/log v0.2.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= @@ -116,15 +75,10 @@ github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9 github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= -github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= -github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -150,11 +104,9 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= @@ -165,9 +117,9 @@ github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= @@ -182,90 +134,36 @@ github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= -github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= -github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= -github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hdm/jarm-go v0.0.7 h1:Eq0geenHrBSYuKrdVhrBdMMzOmA+CAMLzN2WrF3eL6A= github.com/hdm/jarm-go v0.0.7/go.mod h1:kinGoS0+Sdn1Rr54OtanET5E5n7AlD6T6CrJAKDjJSQ= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= -github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= -github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= -github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= -github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -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-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.35/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= -github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= -github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= @@ -275,132 +173,64 @@ github.com/mreiferson/go-httpclient v0.0.0-20160630210159-31f0106b4474/go.mod h1 github.com/mreiferson/go-httpclient v0.0.0-20201222173833-5e475fde3a4d/go.mod h1:OQA4XLvDbMgS8P0CevmM4m9Q3Jq4phKUzcocxuGJ5m8= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= -github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= -github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= -github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= -github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= -github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= -github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= -github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= -github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= -github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= -github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= -github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= -github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= -github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= -github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= -github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.10.0 h1:/o0BDeWzLWXNZ+4q5gXltUvaMpJqckTa+jTNoB+z4cg= -github.com/prometheus/client_golang v1.10.0/go.mod h1:WJM3cc3yu7XKBKa/I8WeZm+V3eltZnBwfENSU7mdogU= github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= github.com/prometheus/client_golang v1.14.0 h1:nJdhIvne2eSX/XRAFV9PcvFFRbrjbcTUj0VP62TMhnw= github.com/prometheus/client_golang v1.14.0/go.mod h1:8vpkKitgIVNcqrRBWh1C4TIUQgYNtG/XQE4E/Zae36Y= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4= github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= -github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.18.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.20.0 h1:pfeDeUdQcIxOMutNjCejsEFp7qeP+/iltHSSmLpE+hU= -github.com/prometheus/common v0.20.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= github.com/prometheus/common v0.37.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= github.com/prometheus/common v0.42.0 h1:EKsfXEYo4JpWMHH5cg+KOUWeuJSov1Id8zGR8eeI1YM= github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.6.0 h1:mxy4L2jP6qMonqmq+aTtOx1ifVWUgG/TAmntgbh3xv4= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= github.com/prometheus/procfs v0.9.0 h1:wzCHvIvM5SxWqYvwgVL7yJY8Lz3PKn49KQtpgMYJfhI= github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY= -github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -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= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.3.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE= -github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= -github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= -github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/weppos/publicsuffix-go v0.12.0/go.mod h1:z3LCPQ38eedDQSwmsSRW4Y7t2L8Ln16JPQ02lHAdn5k= github.com/weppos/publicsuffix-go v0.13.0/go.mod h1:z3LCPQ38eedDQSwmsSRW4Y7t2L8Ln16JPQ02lHAdn5k= -github.com/weppos/publicsuffix-go v0.13.1-0.20210331065111-e81257c67567 h1:FLYs2zckqHm2ZGYVgDZlrTG8HjJuNDddIRy0jKIzU1E= -github.com/weppos/publicsuffix-go v0.13.1-0.20210331065111-e81257c67567/go.mod h1:HYux0V0Zi04bHNwOHy4cXJVz/TQjYonnF6aoYhj+3QE= github.com/weppos/publicsuffix-go v0.30.0 h1:QHPZ2GRu/YE7cvejH9iyavPOkVCB4dNxp2ZvtT+vQLY= github.com/weppos/publicsuffix-go v0.30.0/go.mod h1:kBi8zwYnR0zrbm8RcuN1o9Fzgpnnn+btVN8uWPMyXAY= github.com/weppos/publicsuffix-go/publicsuffix/generator v0.0.0-20220927085643-dc0d00c92642/go.mod h1:GHfoeIdZLdZmLjMlzBftbTDntahTttUMWjxZwQJhULE= github.com/xhit/go-str2duration v1.2.0/go.mod h1:3cPSlfZlUHVlneIVfePFWcJZsuwf+P1v2SRTV4cUmp4= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -412,45 +242,29 @@ github.com/zmap/zcertificate v0.0.0-20180516150559-0e3d58b1bac4/go.mod h1:5iU54t github.com/zmap/zcertificate v0.0.1/go.mod h1:q0dlN54Jm4NVSSuzisusQY0hqDWvu92C+TWveAxiVWk= github.com/zmap/zcrypto v0.0.0-20201128221613-3719af1573cf/go.mod h1:aPM7r+JOkfL+9qSB4KbYjtoEzJqUK50EXkkJabeNJDQ= github.com/zmap/zcrypto v0.0.0-20201211161100-e54a5822fb7e/go.mod h1:aPM7r+JOkfL+9qSB4KbYjtoEzJqUK50EXkkJabeNJDQ= -github.com/zmap/zcrypto v0.0.0-20210331113710-23c79953ef34 h1:UPOTdCVa20EU0wZmm3uy/nVfiNinshKrOnras2qTtjo= -github.com/zmap/zcrypto v0.0.0-20210331113710-23c79953ef34/go.mod h1:J/LL3Pv9cqgWsRZ5xsZSxj5O4nVKL63ASHm4k6KTc/Y= github.com/zmap/zcrypto v0.0.0-20230310154051-c8b263fd8300 h1:DZH5n7L3L8RxKdSyJHZt7WePgwdhHnPhQFdQSJaHF+o= github.com/zmap/zcrypto v0.0.0-20230310154051-c8b263fd8300/go.mod h1:mOd4yUMgn2fe2nV9KXsa9AyQBFZGzygVPovsZR+Rl5w= github.com/zmap/zflags v1.4.0-beta.1.0.20200204220219-9d95409821b6 h1:XYA+NN2AS4mRmIDVu2nCtrjU17zKlRihO3MnlcmueUw= github.com/zmap/zflags v1.4.0-beta.1.0.20200204220219-9d95409821b6/go.mod h1:HXDUD+uue8yeLHr0eXx1lvY6CvMiHbTKw5nGmA9OUoo= github.com/zmap/zlint/v3 v3.0.0/go.mod h1:paGwFySdHIBEMJ61YjoqT4h7Ge+fdYG4sUQhnTb1lJ8= -go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= -go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= -go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= -go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= -go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= -go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201124201722-c8d3bf9c5392/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20201208171446-5f87f3452ae9/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.1.0 h1:MDRAIl0xIo9Io2xV565hzXHw3zVseKrJKodhohM5CjU= -golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= -golang.org/x/crypto v0.7.0 h1:AvwMYaRytfdeVt3u6mLaxYtErKYjxA2OXjJ1HHq6t3A= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= +golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= +golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -485,13 +299,8 @@ golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91 golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -502,7 +311,6 @@ golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-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= @@ -526,12 +334,11 @@ golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.1.0 h1:hZ/3BUoy5aId7sCpA/Tc5lt8DkFgdVS2onTpJsZ/fl0= -golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -552,14 +359,9 @@ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/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= -golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -569,12 +371,10 @@ golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -596,7 +396,6 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201126233918-771906719818/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210309074719-68d13333faf2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -605,18 +404,19 @@ golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.1.0 h1:kunALQeHf1/185U1i0GOB/fy1IPRDDpuoOOqRReG57U= -golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -625,24 +425,20 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.4.0 h1:BrVqGRd7+k1DiOgtnFvAkoQEWQvBc25ouMJM6429SFg= -golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= @@ -652,8 +448,6 @@ golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-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= @@ -662,7 +456,6 @@ golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= @@ -685,10 +478,8 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= @@ -706,7 +497,6 @@ google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0M google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= @@ -718,7 +508,6 @@ google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRn google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= @@ -743,15 +532,10 @@ google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7Fc google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= @@ -771,7 +555,6 @@ google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpAD google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= @@ -780,20 +563,12 @@ google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqw gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 h1:VpOs+IwYnYBaFnrNAeB8UUWtL3vEUnzSCL1nVjPhqrw= gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -802,8 +577,8 @@ 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-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -814,5 +589,3 @@ honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9 rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= 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/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= -sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= From c974873ea1e5bc307ce59a75bcfa56b04a488a26 Mon Sep 17 00:00:00 2001 From: Ameng <62785738+jiaocoll@users.noreply.github.com> Date: Sun, 18 Feb 2024 08:40:53 +0800 Subject: [PATCH 02/47] Add body support for invisible characters after encryption (#393) --- modules/http/scanner.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/modules/http/scanner.go b/modules/http/scanner.go index 8a9f12a8..ed579884 100644 --- a/modules/http/scanner.go +++ b/modules/http/scanner.go @@ -70,7 +70,8 @@ type Flags struct { CustomHeadersValues string `long:"custom-headers-values" description:"CSV of custom HTTP header values to send to server. Should match order of custom-headers-names."` CustomHeadersDelimiter string `long:"custom-headers-delimiter" description:"Delimiter for customer header name/value CSVs"` // Set HTTP Request body - RequestBody string `long:"request-body" description:"HTTP request body to send to server"` + RequestBody string `long:"request-body" description:"HTTP request body to send to server"` + RequestBodyHex string `long:"request-body-hex" description:"HTTP request body to send to server"` OverrideSH bool `long:"override-sig-hash" description:"Override the default SignatureAndHashes TLS option with more expansive default"` @@ -489,6 +490,9 @@ func (scan *scan) Grab() *zgrab2.ScanError { ) if len(scan.scanner.config.RequestBody) > 0 { request, err = http.NewRequest(scan.scanner.config.Method, scan.url, strings.NewReader(scan.scanner.config.RequestBody)) + } else if len(scan.scanner.config.RequestBodyHex) > 0 { + reqbody, _ := hex.DecodeString(scan.scanner.config.RequestBodyHex) + request, err = http.NewRequest(scan.scanner.config.Method, scan.url, bytes.NewReader(reqbody)) } else { request, err = http.NewRequest(scan.scanner.config.Method, scan.url, nil) } From 6c4cec8049813f2b0ad577119b8cf030183eb5ba Mon Sep 17 00:00:00 2001 From: Duane Waddle <19356196+duckfez@users.noreply.github.com> Date: Sat, 17 Feb 2024 18:41:17 -0600 Subject: [PATCH 03/47] Fixes various problems (mostly syntax) in tests (#391) * process_test swapped from golang encoding/asn1 to zcrypto * ssh/kex_test needed Config argument for kex.Client / kex.Server * ssh/keys_test needed the built-in dsaPublicKey * fox.go was throwing a `go vet` warning during tests * redis/types_test fakeIO needed additional methods to meet interface signature --- lib/output/test/process_test.go | 2 +- lib/ssh/kex_test.go | 4 +-- lib/ssh/keys_test.go | 3 +-- modules/fox/fox.go | 4 +-- modules/redis/types_test.go | 47 +++++++++++++++++++++++++++++---- 5 files changed, 48 insertions(+), 12 deletions(-) diff --git a/lib/output/test/process_test.go b/lib/output/test/process_test.go index 26492187..745fa54b 100644 --- a/lib/output/test/process_test.go +++ b/lib/output/test/process_test.go @@ -8,7 +8,6 @@ import ( "testing" "crypto/rsa" - "encoding/asn1" "encoding/base64" "encoding/hex" "math/big" @@ -21,6 +20,7 @@ import ( "os/exec" "github.com/sirupsen/logrus" + "github.com/zmap/zcrypto/encoding/asn1" jsonKeys "github.com/zmap/zcrypto/json" "github.com/zmap/zcrypto/tls" "github.com/zmap/zcrypto/x509" diff --git a/lib/ssh/kex_test.go b/lib/ssh/kex_test.go index 12ca0acd..df15aad3 100644 --- a/lib/ssh/kex_test.go +++ b/lib/ssh/kex_test.go @@ -25,12 +25,12 @@ func TestKexes(t *testing.T) { c := make(chan kexResultErr, 1) var magics handshakeMagics go func() { - r, e := kex.Client(a, rand.Reader, &magics) + r, e := kex.Client(a, rand.Reader, &magics, nil) a.Close() c <- kexResultErr{r, e} }() go func() { - r, e := kex.Server(b, rand.Reader, &magics, testSigners["ecdsa"]) + r, e := kex.Server(b, rand.Reader, &magics, testSigners["ecdsa"], nil) b.Close() s <- kexResultErr{r, e} }() diff --git a/lib/ssh/keys_test.go b/lib/ssh/keys_test.go index e9a55d79..7b1202fb 100644 --- a/lib/ssh/keys_test.go +++ b/lib/ssh/keys_test.go @@ -6,7 +6,6 @@ package ssh import ( "bytes" - "crypto/dsa" "crypto/ecdsa" "crypto/elliptic" "crypto/rand" @@ -26,7 +25,7 @@ func rawKey(pub PublicKey) interface{} { case *rsaPublicKey: return (*rsa.PublicKey)(k) case *dsaPublicKey: - return (*dsa.PublicKey)(k) + return (*dsaPublicKey)(k) case *ecdsaPublicKey: return (*ecdsa.PublicKey)(k) case ed25519PublicKey: diff --git a/modules/fox/fox.go b/modules/fox/fox.go index a60a4ee4..d80bfa1b 100644 --- a/modules/fox/fox.go +++ b/modules/fox/fox.go @@ -3,10 +3,10 @@ package fox import ( "encoding/hex" "errors" + "io" "net" "strconv" "strings" - "io" "github.com/zmap/zgrab2" ) @@ -63,7 +63,7 @@ func GetFoxBanner(logStruct *FoxLog, connection net.Conn) error { } responseString := string(data) - output := strings.Split(responseString, string(0x0a)) + output := strings.Split(responseString, "\x0a") if strings.HasPrefix(responseString, RESPONSE_PREFIX) { logStruct.IsFox = true diff --git a/modules/redis/types_test.go b/modules/redis/types_test.go index 53abe002..fcd4db69 100644 --- a/modules/redis/types_test.go +++ b/modules/redis/types_test.go @@ -3,9 +3,11 @@ package redis import ( "bytes" "fmt" + "net" "reflect" "strings" "testing" + "time" ) // fakeIO is a simple fake Reader/Writer. Read pulls data from the output @@ -44,6 +46,41 @@ func (fakeio *fakeIO) Provide(buf []byte) { }() } +func (fakeio *fakeIO) Close() error { + return nil +} + +func (fakeio *fakeIO) LocalAddr() net.Addr { + return fakeAddr{} +} + +func (fakeio *fakeIO) RemoteAddr() net.Addr { + return fakeAddr{} +} + +func (fakeio *fakeIO) SetDeadline(t time.Time) error { + return nil +} + +func (fakeio *fakeIO) SetReadDeadline(t time.Time) error { + return nil +} + +func (fakeio *fakeIO) SetWriteDeadline(t time.Time) error { + return nil +} + +// A fake net.Addr +type fakeAddr struct{} + +func (f fakeAddr) Network() string { + return "tcp" +} + +func (f fakeAddr) String() string { + return "127.0.0.1" +} + var bigSimpleString = strings.Repeat("simple,", 1024*1024) var bigBulkString = "--- BEGIN BULK STRING ---\r\n" + bigSimpleString + "\r\n--- END BULK STRING---\r\n" @@ -78,29 +115,29 @@ var integers = map[int64]string{ // redisErrors maps error strings to their encoding var redisErrors = map[string]string{ - "": "-\r\n", + "": "-\r\n", "ERR something went wrong": "-ERR something went wrong\r\n", "singleword": "-singleword\r\n", } // redisErrors maps error strings to their prefixes var redisErrorPrefixes = map[string]string{ - "": "", + "": "", "ERR something went wrong": "ERR", "singleword": "singleword", } // redisErrorMessages maps error strings to their "messages" var redisErrorMessages = map[string]string{ - "": "", + "": "", "ERR something went wrong": "something went wrong", "singleword": "singleword", } // redisArrays maps encoded array values to the corresponding array (Note: reverse key/value order from other maps) var redisArrays = map[string]RedisArray{ - "*0\r\n": RedisArray{}, - "*1\r\n+\r\n": RedisArray{SimpleString("")}, + "*0\r\n": RedisArray{}, + "*1\r\n+\r\n": RedisArray{SimpleString("")}, "*2\r\n*1\r\n*0\r\n*1\r\n$5\r\n12345\r\n": RedisArray{RedisArray{RedisArray{}}, RedisArray{BulkString("12345")}}, "*5\r\n" + "+simpleString\r\n" + From 2858073cc40394dce6666250a885767a4cd370c5 Mon Sep 17 00:00:00 2001 From: shin1127 <56531152+shin1127@users.noreply.github.com> Date: Sun, 18 Feb 2024 09:41:34 +0900 Subject: [PATCH 04/47] fix typo in mssql scanner (#371) fix typo in mssql scanner ## How to Test No test, documentation change only ## Notes & Caveats N/A ## Issue Tracking N/A --- modules/mssql/scanner.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/mssql/scanner.go b/modules/mssql/scanner.go index 708fa96c..2fbd9f7c 100644 --- a/modules/mssql/scanner.go +++ b/modules/mssql/scanner.go @@ -19,7 +19,7 @@ import ( ) // ScanResults contains detailed information about each step of the -// MySQL handshake, and can be encoded to JSON. +// MSSQL handshake, and can be encoded to JSON. type ScanResults struct { // Version is the version returned by the server in the PRELOGIN response. // Its format is "MAJOR.MINOR.BUILD_NUMBER". From ec3a1929935dc818075dc99ce3035b04ce22e4ee Mon Sep 17 00:00:00 2001 From: CLO <58094513+crazylazyowl@users.noreply.github.com> Date: Sun, 18 Feb 2024 04:42:29 +0400 Subject: [PATCH 05/47] New functionality for zgrab2-banner: md5, sha1, sha256, base64 (#385) * refactor a little * add base64 * add md5,sha1,sha25 * fix typo * add data size check * check empty regexp * refactor a little --- modules/banner/scanner.go | 125 ++++++++++++++++++++++++-------------- 1 file changed, 79 insertions(+), 46 deletions(-) diff --git a/modules/banner/scanner.go b/modules/banner/scanner.go index c658620c..51e035e3 100644 --- a/modules/banner/scanner.go +++ b/modules/banner/scanner.go @@ -4,6 +4,11 @@ package banner import ( + "crypto/md5" + "crypto/sha1" + "crypto/sha256" + "encoding/base64" + "encoding/hex" "errors" "fmt" "io" @@ -12,7 +17,6 @@ import ( "net" "regexp" "strconv" - "encoding/hex" "github.com/zmap/zgrab2" ) @@ -20,12 +24,16 @@ import ( // Flags give the command-line flags for the banner module. type Flags struct { zgrab2.BaseFlags - Probe string `long:"probe" default:"\\n" description:"Probe to send to the server. Use triple slashes to escape, for example \\\\\\n is literal \\n. Mutually exclusive with --probe-file" ` - ProbeFile string `long:"probe-file" description:"Read probe from file as byte array (hex). Mutually exclusive with --probe"` + Probe string `long:"probe" default:"\\n" description:"Probe to send to the server. Use triple slashes to escape, for example \\\\\\n is literal \\n. Mutually exclusive with --probe-file."` + ProbeFile string `long:"probe-file" description:"Read probe from file as byte array (hex). Mutually exclusive with --probe."` Pattern string `long:"pattern" description:"Pattern to match, must be valid regexp."` - UseTLS bool `long:"tls" description:"Sends probe with TLS connection. Loads TLS module command options. "` + UseTLS bool `long:"tls" description:"Sends probe with TLS connection. Loads TLS module command options."` MaxTries int `long:"max-tries" default:"1" description:"Number of tries for timeouts and connection errors before giving up. Includes making TLS connection if enabled."` - Hex bool `long:"hex" description:"Store banner value in hex. "` + Hex bool `long:"hex" description:"Store banner value in hex. Mutually exclusive with --base64."` + Base64 bool `long:"base64" description:"Store banner value in base64. Mutually exclusive with --hex."` + MD5 bool `long:"md5" description:"Calculate MD5 hash of banner value."` + SHA1 bool `long:"sha1" description:"Calculate SHA1 hash of banner value."` + SHA256 bool `long:"sha256" description:"Calculate SHA256 hash of banner value."` zgrab2.TLSFlags } @@ -44,12 +52,17 @@ type Scanner struct { type Results struct { Banner string `json:"banner,omitempty"` Length int `json:"length,omitempty"` + MD5 string `json:"md5,omitempty"` + SHA1 string `json:"sha1,omitempty"` + SHA256 string `json:"sha25,omitempty"` } +var NoMatchError = errors.New("pattern did not match") + // RegisterModule is called by modules/banner.go to register the scanner. func RegisterModule() { - var module Module - _, err := zgrab2.AddCommand("banner", "Banner", module.Description(), 80, &module) + var m Module + _, err := zgrab2.AddCommand("banner", "Banner", m.Description(), 80, &m) if err != nil { log.Fatal(err) } @@ -61,22 +74,22 @@ func (m *Module) NewFlags() interface{} { } // GetName returns the Scanner name defined in the Flags. -func (scanner *Scanner) GetName() string { - return scanner.config.Name +func (s *Scanner) GetName() string { + return s.config.Name } // GetTrigger returns the Trigger defined in the Flags. -func (scanner *Scanner) GetTrigger() string { - return scanner.config.Trigger +func (s *Scanner) GetTrigger() string { + return s.config.Trigger } // Protocol returns the protocol identifier of the scan. -func (scanner *Scanner) Protocol() string { +func (s *Scanner) Protocol() string { return "banner" } // InitPerSender initializes the scanner for a given sender. -func (scanner *Scanner) InitPerSender(senderID int) error { +func (s *Scanner) InitPerSender(senderID int) error { return nil } @@ -95,7 +108,7 @@ func (f *Flags) Validate(args []string) error { } // Description returns an overview of this module. -func (module *Module) Description() string { +func (m *Module) Description() string { return "Fetch a raw banner by sending a static probe and checking the result against a regular expression" } @@ -105,46 +118,44 @@ func (f *Flags) Help() string { } // Init initializes the Scanner with the command-line flags. -func (scanner *Scanner) Init(flags zgrab2.ScanFlags) error { +func (s *Scanner) Init(flags zgrab2.ScanFlags) error { var err error f, _ := flags.(*Flags) - scanner.config = f - scanner.regex = regexp.MustCompile(scanner.config.Pattern) + s.config = f + if s.config.Pattern != "" { + s.regex = regexp.MustCompile(s.config.Pattern) + } if len(f.ProbeFile) != 0 { - scanner.probe, err = ioutil.ReadFile(f.ProbeFile) + s.probe, err = ioutil.ReadFile(f.ProbeFile) if err != nil { log.Fatal("Failed to open probe file") return zgrab2.ErrInvalidArguments } } else { - strProbe, err := strconv.Unquote(fmt.Sprintf(`"%s"`, scanner.config.Probe)) + strProbe, err := strconv.Unquote(fmt.Sprintf(`"%s"`, s.config.Probe)) if err != nil { panic("Probe error") } - scanner.probe = []byte(strProbe) + s.probe = []byte(strProbe) } - return nil } -var NoMatchError = errors.New("pattern did not match") - -func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, interface{}, error) { - try := 0 +func (s *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, interface{}, error) { var ( conn net.Conn tlsConn *zgrab2.TLSConnection err error - readerr error + readErr error ) - for try < scanner.config.MaxTries { - try++ - conn, err = target.Open(&scanner.config.BaseFlags) + + for try := 0; try < s.config.MaxTries; try++ { + conn, err = target.Open(&s.config.BaseFlags) if err != nil { continue } - if scanner.config.UseTLS { - tlsConn, err = scanner.config.TLSFlags.GetTLSConnection(conn) + if s.config.UseTLS { + tlsConn, err = s.config.TLSFlags.GetTLSConnection(conn) if err != nil { continue } @@ -153,7 +164,6 @@ func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, inter } conn = tlsConn } - break } if err != nil { @@ -161,16 +171,15 @@ func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, inter } defer conn.Close() - var ret []byte - try = 0 - for try < scanner.config.MaxTries { - try++ - _, err = conn.Write(scanner.probe) - ret, readerr = zgrab2.ReadAvailable(conn) + var data []byte + + for try := 0; try < s.config.MaxTries; try++ { + _, err = conn.Write(s.probe) + data, readErr = zgrab2.ReadAvailable(conn) if err != nil { continue } - if readerr != io.EOF && readerr != nil { + if readErr != io.EOF && readErr != nil { continue } break @@ -178,19 +187,43 @@ func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, inter if err != nil { return zgrab2.TryGetScanStatus(err), nil, err } - if readerr != io.EOF && readerr != nil { - return zgrab2.TryGetScanStatus(readerr), nil, readerr + if readErr != io.EOF && readErr != nil { + return zgrab2.TryGetScanStatus(readErr), nil, readErr } + var results Results - if scanner.config.Hex { - results = Results{Banner: hex.EncodeToString(ret), Length: len(ret)} + + if s.config.Hex { + results.Banner = hex.EncodeToString(data) + } else if s.config.Base64 { + results.Banner = base64.StdEncoding.EncodeToString(data) } else { - results = Results{Banner: string(ret), Length: len(ret)} + results.Banner = string(data) + } + results.Length = len(data) + + if len(data) > 0 { + if s.config.MD5 { + digest := md5.Sum(data) + results.MD5 = hex.EncodeToString(digest[:]) + } + if s.config.SHA1 { + digest := sha1.Sum(data) + results.SHA1 = hex.EncodeToString(digest[:]) + } + if s.config.SHA256 { + digest := sha256.Sum256(data) + results.SHA256 = hex.EncodeToString(digest[:]) + } } - if scanner.regex.Match(ret) { + + if s.regex == nil { return zgrab2.SCAN_SUCCESS, &results, nil } - return zgrab2.SCAN_PROTOCOL_ERROR, &results, NoMatchError + if s.regex.Match(data) { + return zgrab2.SCAN_SUCCESS, &results, nil + } + return zgrab2.SCAN_PROTOCOL_ERROR, &results, NoMatchError } From 4a5e937b140771d2656360375a946d7572d9347d Mon Sep 17 00:00:00 2001 From: Sean Smith Date: Sat, 17 Feb 2024 19:44:51 -0500 Subject: [PATCH 06/47] Add tls output to banner when we have a tls connection (#404) Co-authored-by: Zakir Durumeric --- modules/banner/scanner.go | 12 ++++++++---- zgrab2_schemas/zgrab2/banner.py | 3 ++- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/modules/banner/scanner.go b/modules/banner/scanner.go index 51e035e3..616d1732 100644 --- a/modules/banner/scanner.go +++ b/modules/banner/scanner.go @@ -50,8 +50,9 @@ type Scanner struct { // ScanResults instances are returned by the module's Scan function. type Results struct { - Banner string `json:"banner,omitempty"` - Length int `json:"length,omitempty"` + Banner string `json:"banner,omitempty"` + Length int `json:"length,omitempty"` + TLSLog *zgrab2.TLSLog `json:"tls,omitempty"` MD5 string `json:"md5,omitempty"` SHA1 string `json:"sha1,omitempty"` SHA256 string `json:"sha25,omitempty"` @@ -166,6 +167,8 @@ func (s *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, interface{} } break } + + if err != nil { return zgrab2.TryGetScanStatus(err), nil, err } @@ -216,11 +219,12 @@ func (s *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, interface{} results.SHA256 = hex.EncodeToString(digest[:]) } } - + if tlsConn != nil { + results.TLSLog = tlsConn.GetLog() + } if s.regex == nil { return zgrab2.SCAN_SUCCESS, &results, nil } - if s.regex.Match(data) { return zgrab2.SCAN_SUCCESS, &results, nil } diff --git a/zgrab2_schemas/zgrab2/banner.py b/zgrab2_schemas/zgrab2/banner.py index 7014e622..46220187 100644 --- a/zgrab2_schemas/zgrab2/banner.py +++ b/zgrab2_schemas/zgrab2/banner.py @@ -11,7 +11,8 @@ banner_scan_response = SubRecord({ "result": SubRecord({ "banner": String(), - "length": Unsigned32BitInteger() + "length": Unsigned32BitInteger(), + "tls": zgrab2.tls_log, }) }, extends=zgrab2.base_scan_response) From 413c2ce0151a1bb64a4b2c14bb05200e9841301c Mon Sep 17 00:00:00 2001 From: Sean Smith Date: Sat, 17 Feb 2024 19:45:32 -0500 Subject: [PATCH 07/47] Permissive TLS parsing (#400) * Add permissive parsing TLS option This is driven by #378, https://github.com/zmap/zcrypto/issues/364 and https://github.com/zmap/zgrab2/pull/334 This allows a number of scans to actually succeed, rather than fail out when parsing the certificate Example without permissive parsing: ``` echo FAILING_IP | ./zgrab2 http -p 443 --use-https INFO[0000] started grab at 2023-09-21T21:25:29-05:00 {"ip":"FAILING_IP","data":{"http":{"status":"unknown-error","protocol":"http","result":{},"timestamp":"2023-09-21T21:25:29-05:00","error":"tls: failed to parse certificate from server: asn1: structure error: explicitly tagged member didn't match"}}} INFO[0001] finished grab at 2023-09-21T21:25:29-05:00 {"statuses":{"http":{"successes":0,"failures":1}},"start":"2023-09-21T21:25:29-05:00","end":"2023-09-21T21:25:29-05:00","duration":"987.606886ms"} ``` With Permissive parsing: ``` echo FAILING_IP | ./zgrab2 http -p 443 --use-https --permissive-parsing INFO[0000] started grab at 2023-09-21T21:25:34-05:00 {"ip":"FAILING_UP","data":{"http":{"status":"application-error","protocol":"http","result":{"response":{"status_line":"302 Found","status_code":302,"protocol":{"name":"HTTP/1.1","major":1,"minor":1},"headers":{"content_length":["0"], ... all the HTTP and TLS handshake log data ``` * Make permissive parsing the default/no option --- tls.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tls.go b/tls.go index 1b056121..fbaf8d6d 100644 --- a/tls.go +++ b/tls.go @@ -12,8 +12,10 @@ import ( "time" log "github.com/sirupsen/logrus" + "github.com/zmap/zcrypto/encoding/asn1" "github.com/zmap/zcrypto/tls" "github.com/zmap/zcrypto/x509" + "github.com/zmap/zcrypto/x509/pkix" ) // Shared code for TLS scans. @@ -65,7 +67,7 @@ type TLSFlags struct { // TODO: format? ClientRandom string `long:"client-random" description:"Set an explicit Client Random (base64 encoded)"` // TODO: format? - ClientHello string `long:"client-hello" description:"Set an explicit ClientHello (base64 encoded)"` + ClientHello string `long:"client-hello" description:"Set an explicit ClientHello (base64 encoded)"` } func getCSV(arg string) []string { @@ -149,6 +151,10 @@ func (t *TLSFlags) GetTLSConfigForTarget(target *ScanTarget) (*tls.Config, error log.Fatalf("Could not read certificates from PEM file. Invalid PEM?") } } + + asn1.AllowPermissiveParsing = true + pkix.LegacyNameString = true + if t.NextProtos != "" { // TODO: Different format? ret.NextProtos = getCSV(t.NextProtos) From 736391909fdd2a417855af7ca17d8e32af32e18d Mon Sep 17 00:00:00 2001 From: Yellow Camper Date: Sat, 17 Feb 2024 19:46:32 -0500 Subject: [PATCH 08/47] Deal with non-RFC compliant servers (#375) There are hundreds of thousands of servers on the internet where the "INTENT" is to be an HTTP service, but in reality they do not properly conform to the HTTP RFC. In many cases, these servers will send back a simple: HTTP/1.1 404 Not Found With no `Connection: close` header, and terminates the established connection. While it's understood these are not RFC compliant, I would still like to see the servers that are intending to be HTTP servers. --- lib/http/client.go | 8 +++++--- lib/http/transport.go | 5 ++++- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/lib/http/client.go b/lib/http/client.go index 029b797f..b21f346b 100644 --- a/lib/http/client.go +++ b/lib/http/client.go @@ -831,9 +831,11 @@ func (b *cancelTimerBody) Read(p []byte) (n int, err error) { } func (b *cancelTimerBody) Close() error { - err := b.rc.Close() - b.stop() - return err + defer b.stop() + if b.rc != nil { + return b.rc.Close() + } + return nil } func shouldCopyHeaderOnRedirect(headerKey string, initial, dest *url.URL) bool { diff --git a/lib/http/transport.go b/lib/http/transport.go index 019f86dd..c34d5679 100644 --- a/lib/http/transport.go +++ b/lib/http/transport.go @@ -1503,7 +1503,7 @@ func (pc *persistConn) readLoop() { closeErr = err } - if err != nil { + if err != nil && (!pc.sawEOF || resp == nil) { if pc.readLimit <= 0 { err = fmt.Errorf("net/http: server response headers exceeded %d bytes; aborted", pc.maxHeaderResponseSize()) } @@ -1657,6 +1657,9 @@ func (pc *persistConn) readResponse(rc requestAndChan, trace *httptrace.ClientTr } resp, err = ReadResponse(pc.br, rc.req) if err != nil { + if err == io.ErrUnexpectedEOF { + pc.sawEOF = true + } return } if rc.continueCh != nil { From 7c933df01f2feea7108a712db1cfba5f9da1817a Mon Sep 17 00:00:00 2001 From: "Anthr@X" <4828355+AnthraX1@users.noreply.github.com> Date: Sun, 18 Feb 2024 11:47:16 +1100 Subject: [PATCH 09/47] Add port number to CSV input and output (#397) * Add port to csv input and output JSON. * fix null pointer deref --------- Co-authored-by: AnthraX --- input.go | 41 ++++++++++++++++++++++++++++++++--------- input_test.go | 34 +++++++++++++++++++++++++++++----- processing.go | 7 ++++++- 3 files changed, 67 insertions(+), 15 deletions(-) diff --git a/input.go b/input.go index 88305602..d3640004 100644 --- a/input.go +++ b/input.go @@ -5,29 +5,31 @@ import ( "fmt" "io" "net" + "strconv" "strings" log "github.com/sirupsen/logrus" ) // ParseCSVTarget takes a record from a CSV-format input file and -// returns the specified ipnet, domain, and tag, or an error. +// returns the specified ipnet, domain, tag and port or an error. // -// ZGrab2 input files have three fields: -// IP, DOMAIN, TAG +// ZGrab2 input files have four fields: +// +// IP, DOMAIN, TAG, PORT // // Each line specifies a target to scan by its IP address, domain -// name, or both, as well as an optional tag used to determine which +// name or both, as well as an optional tag used to determine which // scanners will be invoked. // +// Port number has been added to the end of the line for compatibility reasons. // A CIDR block may be provided in the IP field, in which case the // framework expands the record into targets for every address in the // block. // // Trailing empty fields may be omitted. // Comment lines begin with #, and empty lines are ignored. -// -func ParseCSVTarget(fields []string) (ipnet *net.IPNet, domain string, tag string, err error) { +func ParseCSVTarget(fields []string) (ipnet *net.IPNet, domain string, tag string, port string, err error) { for i := range fields { fields[i] = strings.TrimSpace(fields[i]) } @@ -47,7 +49,11 @@ func ParseCSVTarget(fields []string) (ipnet *net.IPNet, domain string, tag strin if len(fields) > 2 { tag = fields[2] } + // Use string for port to allow empty port if len(fields) > 3 { + port = fields[3] + } + if len(fields) > 4 { err = fmt.Errorf("too many fields: %q", fields) return } @@ -102,24 +108,41 @@ func GetTargetsCSV(source io.Reader, ch chan<- ScanTarget) error { if len(fields) == 0 { continue } - ipnet, domain, tag, err := ParseCSVTarget(fields) + ipnet, domain, tag, port, err := ParseCSVTarget(fields) if err != nil { log.Errorf("parse error, skipping: %v", err) continue } var ip net.IP + var port_uint uint + if port != "" { + port_int, err := strconv.Atoi(port) + port_uint = uint(port_int) + if err != nil { + log.Errorf("parse error, skipping: %v", err) + continue + } + } if ipnet != nil { if ipnet.Mask != nil { // expand CIDR block into one target for each IP for ip = ipnet.IP.Mask(ipnet.Mask); ipnet.Contains(ip); incrementIP(ip) { - ch <- ScanTarget{IP: duplicateIP(ip), Domain: domain, Tag: tag} + if port == "" { + ch <- ScanTarget{IP: duplicateIP(ip), Domain: domain, Tag: tag} + } else { + ch <- ScanTarget{IP: duplicateIP(ip), Domain: domain, Tag: tag, Port: &port_uint} + } } continue } else { ip = ipnet.IP } } - ch <- ScanTarget{IP: ip, Domain: domain, Tag: tag} + if port == "" { + ch <- ScanTarget{IP: ip, Domain: domain, Tag: tag} + } else { + ch <- ScanTarget{IP: ip, Domain: domain, Tag: tag, Port: &port_uint} + } } return nil } diff --git a/input_test.go b/input_test.go index 892cef16..b9d9d9a5 100644 --- a/input_test.go +++ b/input_test.go @@ -39,8 +39,27 @@ func TestParseCSVTarget(t *testing.T) { ipnet *net.IPNet domain string tag string + port string success bool }{ + // IP DOMAIN TAG PORT + { + fields: []string{"10.0.0.1", "example.com", "tag", "443"}, + ipnet: parseIP("10.0.0.1"), + domain: "example.com", + tag: "tag", + port: "443", + success: true, + }, + // IP DOMAIN TAG PORT + { + fields: []string{"10.0.0.1", "example.com", "tag"}, + ipnet: parseIP("10.0.0.1"), + domain: "example.com", + tag: "tag", + port: "", + success: true, + }, // IP DOMAIN TAG { fields: []string{"10.0.0.1", "example.com", "tag"}, @@ -129,14 +148,14 @@ func TestParseCSVTarget(t *testing.T) { } for _, test := range tests { - ipnet, domain, tag, err := ParseCSVTarget(test.fields) + ipnet, domain, tag, port, err := ParseCSVTarget(test.fields) if (err == nil) != test.success { t.Errorf("wrong error status (got err=%v, success should be %v): %q", err, test.success, test.fields) return } if err == nil { - if ipnetString(ipnet) != ipnetString(test.ipnet) || domain != test.domain || tag != test.tag { - t.Errorf("wrong result (got %v,%v,%v; expected %v,%v,%v): %q", ipnetString(ipnet), domain, tag, ipnetString(test.ipnet), test.domain, test.tag, test.fields) + if ipnetString(ipnet) != ipnetString(test.ipnet) || domain != test.domain || tag != test.tag || port != test.port { + t.Errorf("wrong result (got %v,%v,%v,%v ; expected %v,%v,%v,%v): %q", ipnetString(ipnet), domain, tag, port, ipnetString(test.ipnet), test.domain, test.tag, test.port, test.fields) return } } @@ -150,8 +169,11 @@ func TestGetTargetsCSV(t *testing.T) { 10.0.0.1 ,example.com example.com -2.2.2.2/30,, tag` - +2.2.2.2/30,, tag +10.0.0.1,example.com,tag,443 +10.0.0.1,,,443 +` + port := uint(443) expected := []ScanTarget{ ScanTarget{IP: net.ParseIP("10.0.0.1"), Domain: "example.com", Tag: "tag"}, ScanTarget{IP: net.ParseIP("10.0.0.1"), Domain: "example.com"}, @@ -162,6 +184,8 @@ example.com ScanTarget{IP: net.ParseIP("2.2.2.1"), Tag: "tag"}, ScanTarget{IP: net.ParseIP("2.2.2.2"), Tag: "tag"}, ScanTarget{IP: net.ParseIP("2.2.2.3"), Tag: "tag"}, + ScanTarget{IP: net.ParseIP("10.0.0.1"), Domain: "example.com", Tag: "tag", Port: &port}, + ScanTarget{IP: net.ParseIP("10.0.0.1"), Port: &port}, } ch := make(chan ScanTarget, 0) diff --git a/processing.go b/processing.go index 3bade603..bcde63f0 100644 --- a/processing.go +++ b/processing.go @@ -13,6 +13,7 @@ import ( // Grab contains all scan responses for a single host type Grab struct { IP string `json:"ip,omitempty"` + Port uint `json:"port,omitempty"` Domain string `json:"domain,omitempty"` Data map[string]ScanResponse `json:"data,omitempty"` } @@ -117,12 +118,16 @@ func (target *ScanTarget) OpenUDP(flags *BaseFlags, udp *UDPFlags) (net.Conn, er // scan responses. func BuildGrabFromInputResponse(t *ScanTarget, responses map[string]ScanResponse) *Grab { var ipstr string - + var port uint if t.IP != nil { ipstr = t.IP.String() } + if t.Port != nil { + port = *t.Port + } return &Grab{ IP: ipstr, + Port: port, Domain: t.Domain, Data: responses, } From 4e4ace85c38e89277f899a8bc8cc1eea58da2360 Mon Sep 17 00:00:00 2001 From: Landon Rice <129002663+landxnsec@users.noreply.github.com> Date: Sat, 17 Feb 2024 17:47:32 -0700 Subject: [PATCH 10/47] Add Install Instructions for Go v17+ (#382) * Update README.md * Update README.md --- README.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/README.md b/README.md index 0bdf440b..587725ae 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,19 @@ ZGrab 2.0 contains a new, modular ZGrab framework, which fully supersedes https: ## Building +For Go 1.17 and later you must build from source: + +``` +$ git clone https://github.com/zmap/zgrab2.git +$ cd zgrab2 +$ go build +$ make +$ ./zgrab2 +``` + + +For Go 1.16 and below you can install via go get: + You will need to have a valid `$GOPATH` set up, for more information about `$GOPATH`, see https://golang.org/doc/code.html. Once you have a working `$GOPATH`, run: From 1e97dd8654c55cdc16dc80b793197845b7a54b97 Mon Sep 17 00:00:00 2001 From: Jeff Cody Date: Sat, 17 Feb 2024 19:50:59 -0500 Subject: [PATCH 11/47] http: allow raw header capture (#347) (#349) The golang textproto library does a few things when parsing the HTTP headers: * consume some whitespace characters (e.g. \r\n) * canonicalizes the header keys (e.g. "content-type" => "Content-Type") * moves the headers into a map This all makes sense when parsing HTTP, but for a scanner some may want to have the exact headers, to match on order, non-canonical keys, etc. This adds that option, if '--raw-headers' is specified during an HTTP scan. This is accomplished by implementing a tee reader on the pconn interface, that tees before the bufio reader is put in place. The tee copy can be disabled once the headers have been read, so as to not waste memory while consuming the HTTP body. While denoted as "raw headers", this will also capture the raw status line as well. (cherry picked from commit 83e55e051a6d94bc42ca0bd5378bcef3c1d65a2d) Signed-off-by: Jeff Cody --- lib/http/response.go | 23 ++++++++++++++ lib/http/transport.go | 68 +++++++++++++++++++++++++++++++++++------ modules/http/scanner.go | 4 +++ 3 files changed, 86 insertions(+), 9 deletions(-) diff --git a/lib/http/response.go b/lib/http/response.go index a90a5751..076ca189 100644 --- a/lib/http/response.go +++ b/lib/http/response.go @@ -45,6 +45,12 @@ type Response struct { // Keys in the map are canonicalized (see CanonicalHeaderKey). Header Header `json:"headers,omitempty"` + // The raw bytes of the MIME headers, as read from the underlying + // reader. This allows for post-processing to be done on an exact + // copy of the headers. The headers will not be canonicalized nor + // re-ordered or converted to a map. + HeadersRaw []byte `json:"headers_raw,omitempty"` + // Body represents the response body. // // The http Client and Transport guarantee that Body is always @@ -158,11 +164,23 @@ func (r *Response) Location() (*url.URL, error) { // After that call, clients can inspect resp.Trailer to find key/value // pairs included in the response trailer. func ReadResponse(r *bufio.Reader, req *Request) (*Response, error) { + return readResponse(&TeeConn{br: r}, req) +} +func ReadResponseTee(tc *TeeConn, req *Request) (*Response, error) { + return readResponse(tc, req) +} +func readResponse(tc *TeeConn, req *Request) (*Response, error) { + r := tc.BufioReader() tp := textproto.NewReader(r) resp := &Response{ Request: req, } + // To extract the raw response through headers, we want to find the offsets + // for where we are at in the io.TeeReader compared to the bufio.Reader + // both at the start of the response parsing, and at the end. + hdrStart := tc.ReadPos() + // Parse the first line of the response. line, err := tp.ReadLine() if err != nil { @@ -202,6 +220,11 @@ func ReadResponse(r *bufio.Reader, req *Request) (*Response, error) { } return resp, err } + // No need to continue tee reads into the tee buffer, go ahead and + // disable it + tc.Disable() + hdrEnd := tc.ReadPos() + resp.HeadersRaw = tc.Bytes(hdrStart, hdrEnd) resp.Header = Header(mimeHeader) fixPragmaCacheControl(resp.Header) diff --git a/lib/http/transport.go b/lib/http/transport.go index c34d5679..d9288e6e 100644 --- a/lib/http/transport.go +++ b/lib/http/transport.go @@ -11,6 +11,7 @@ package http import ( "bufio" + "bytes" "compress/gzip" "container/list" "context" @@ -198,6 +199,10 @@ type Transport struct { h2transport *http2Transport // non-nil if http2 wired up // TODO: tunable on max per-host TCP dials in flight (Issue 13957) + + // Enable raw read buffering and raw header extraction + // zgrab2-specific + RawHeaderBuffer bool } // onceSetNextProtoDefaults initializes TLSNextProto. @@ -1027,6 +1032,8 @@ func (t *Transport) dialConn(ctx context.Context, cm connectMethod) (*persistCon pconn.conn = conn } + pconn.tee = &TeeConn{} + // Proxy setup. switch { case cm.proxyURL == nil: @@ -1058,8 +1065,10 @@ func (t *Transport) dialConn(ctx context.Context, cm connectMethod) (*persistCon // Read response. // Okay to use and discard buffered reader here, because // TLS server will not speak until spoken to. - br := bufio.NewReader(conn) - resp, err := ReadResponse(br, connectReq) + tee := TeeConn{ + br: bufio.NewReader(conn), + } + resp, err := ReadResponseTee(&tee, connectReq) if err != nil { conn.Close() return nil, err @@ -1123,13 +1132,49 @@ func (t *Transport) dialConn(ctx context.Context, cm connectMethod) (*persistCon } } - pconn.br = bufio.NewReader(pconn) + pconn.tee.br = bufio.NewReader(pconn) + pconn.tee.enabled = t.RawHeaderBuffer pconn.bw = bufio.NewWriter(persistConnWriter{pconn}) go pconn.readLoop() go pconn.writeLoop() return pconn, nil } +// The underlying br Reader is bufio, so it will perform read-ahead. +// The underlying tb is a bytes buffer, that acts as a tee, receiving +// the raw bytes for reads against the io.Reader backing br. +type TeeConn struct { + enabled bool // tee writes to tb are enabled + tb bytes.Buffer // buffer that tr tees into + br *bufio.Reader // from conn +} + +// To get the current position in tb as seen by the buffered io reader, +// we need to subtract out the buffered portion of the bufio reader. +func (t *TeeConn) ReadPos() int { + l := t.tb.Len() + if l == 0 { + return 0 + } + return l - t.br.Buffered() +} + +func (t *TeeConn) Bytes(s, e int) []byte { + if s >= t.tb.Len() { + return nil + } + return t.tb.Bytes()[s:e] +} + +func (t *TeeConn) BufioReader() *bufio.Reader { + return t.br +} + +// Stops the tee writes to t.tb +func (t *TeeConn) Disable() { + t.enabled = false +} + // persistConnWriter is the io.Writer written to by pc.bw. // It accumulates the number of bytes written to the underlying conn, // so the retry logic can determine whether any bytes made it across @@ -1277,7 +1322,7 @@ type persistConn struct { cacheKey connectMethodKey conn net.Conn tlsState *tls.ConnectionState - br *bufio.Reader // from conn + tee *TeeConn // from conn, includes a raw buffer and tee bw *bufio.Writer // to conn nwrite int64 // bytes written reqch chan requestAndChan // written by roundTrip; read by readLoop @@ -1329,6 +1374,11 @@ func (pc *persistConn) Read(p []byte) (n int, err error) { pc.sawEOF = true } pc.readLimit -= int64(n) + if pc.tee.enabled && n > 0 { + if n, err := pc.tee.tb.Write(p[:n]); err != nil { + return n, err + } + } return } @@ -1482,7 +1532,7 @@ func (pc *persistConn) readLoop() { alive := true for alive { pc.readLimit = pc.maxHeaderResponseSize() - _, err := pc.br.Peek(1) + _, err := pc.tee.br.Peek(1) pc.mu.Lock() if pc.numExpectedResponses == 0 { @@ -1636,7 +1686,7 @@ func (pc *persistConn) readLoopPeekFailLocked(peekErr error) { if pc.closed != nil { return } - if n := pc.br.Buffered(); n > 0 { + if n := pc.tee.br.Buffered(); n > 0 { } if peekErr == io.EOF { // common case. @@ -1651,11 +1701,11 @@ func (pc *persistConn) readLoopPeekFailLocked(peekErr error) { // trace is optional. func (pc *persistConn) readResponse(rc requestAndChan, trace *httptrace.ClientTrace) (resp *Response, err error) { if trace != nil && trace.GotFirstResponseByte != nil { - if peek, err := pc.br.Peek(1); err == nil && len(peek) == 1 { + if peek, err := pc.tee.br.Peek(1); err == nil && len(peek) == 1 { trace.GotFirstResponseByte() } } - resp, err = ReadResponse(pc.br, rc.req) + resp, err = ReadResponseTee(pc.tee, rc.req) if err != nil { if err == io.ErrUnexpectedEOF { pc.sawEOF = true @@ -1674,7 +1724,7 @@ func (pc *persistConn) readResponse(rc requestAndChan, trace *httptrace.ClientTr } if resp.StatusCode == 100 { pc.readLimit = pc.maxHeaderResponseSize() // reset the limit - resp, err = ReadResponse(pc.br, rc.req) + resp, err = ReadResponseTee(pc.tee, rc.req) if err != nil { return } diff --git a/modules/http/scanner.go b/modules/http/scanner.go index ed579884..a124b306 100644 --- a/modules/http/scanner.go +++ b/modules/http/scanner.go @@ -81,6 +81,9 @@ type Flags struct { // WithBodyLength enables adding the body_size field to the Response WithBodyLength bool `long:"with-body-size" description:"Enable the body_size attribute, for how many bytes actually read"` + + // Extract the raw header as it is on the wire + RawHeaders bool `long:"raw-headers" description:"Extract raw response up through headers"` } // A Results object is returned by the HTTP module's Scanner.Scan() @@ -454,6 +457,7 @@ func (scanner *Scanner) newHTTPScan(t *zgrab2.ScanTarget, useHTTPS bool) *scan { DisableKeepAlives: false, DisableCompression: false, MaxIdleConnsPerHost: scanner.config.MaxRedirects, + RawHeaderBuffer: scanner.config.RawHeaders, }, client: http.MakeNewClient(), globalDeadline: time.Now().Add(scanner.config.Timeout), From 5bcb0f2766cd696d235aee72c5059d2b762e2f62 Mon Sep 17 00:00:00 2001 From: Sean Smith Date: Sun, 18 Feb 2024 00:32:15 -0600 Subject: [PATCH 12/47] Add test steps to build --- .github/workflows/build.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index de72f088..2c7b7595 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -17,3 +17,7 @@ jobs: run: | go get -t ./... make + + - name: Test + run: | + make test From e012d588573d1e8e888b71609e15b2761758e233 Mon Sep 17 00:00:00 2001 From: Sean Smith Date: Sun, 18 Feb 2024 22:09:11 -0600 Subject: [PATCH 13/47] Add HaSSH to ssh output --- lib/ssh/messages.go | 16 ++++++++++++++++ lib/ssh/messages_test.go | 22 ++++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/lib/ssh/messages.go b/lib/ssh/messages.go index a3267448..b72e0af8 100644 --- a/lib/ssh/messages.go +++ b/lib/ssh/messages.go @@ -6,7 +6,9 @@ package ssh import ( "bytes" + "crypto/md5" "encoding/binary" + "encoding/hex" "encoding/json" "errors" "fmt" @@ -84,6 +86,7 @@ type JsonKexInitMsg struct { LanguagesServerClient []string `json:"server_to_client_languages,omitempty"` FirstKexFollows bool `json:"first_kex_follows"` Reserved uint32 `json:"reserved"` + ServerHaSSH string `json:"serverHaSSH"` } func (kex *KexInitMsg) MarshalJSON() ([]byte, error) { @@ -101,10 +104,23 @@ func (kex *KexInitMsg) MarshalJSON() ([]byte, error) { LanguagesServerClient: kex.LanguagesServerClient, FirstKexFollows: kex.FirstKexFollows, Reserved: kex.Reserved, + ServerHaSSH: kex.GenerateServerHaSSH(), } return json.Marshal(temp) } +func (kex *KexInitMsg) GenerateServerHaSSH() string { + input := strings.Join( + []string { + strings.Join(kex.KexAlgos, ","), + strings.Join(kex.CiphersServerClient, ","), + strings.Join(kex.MACsServerClient, ","), + strings.Join(kex.CompressionServerClient, ","), + }, ";") + md5 := md5.Sum([]byte(input)) + return hex.EncodeToString(md5[:]) +} + // See RFC 4253, section 8. // Diffie-Helman diff --git a/lib/ssh/messages_test.go b/lib/ssh/messages_test.go index ae7a7347..92a2f790 100644 --- a/lib/ssh/messages_test.go +++ b/lib/ssh/messages_test.go @@ -206,6 +206,28 @@ func TestMarshalMultiTag(t *testing.T) { } } +funcTestHaSSH(t *testing.T) { + ki := &KexInitMsg{} + randomBytes(ki.Cookie[:]"," rand) + ki.KexAlgos = []string {"curve25519-sha256@libssh.org","diffie-hellman-group-exchange-sha256","ecdh-sha2-nistp521","ecdh-sha2-nistp384","ecdh-sha2-nistp256","diffie-hellman-group-exchange-sha1","diffie-hellman-group1-sha1","diffie-hellman-group14-sha1","diffie-hellman-group14-sha256","diffie-hellman-group15-sha512","diffie-hellman-group16-sha512","diffie-hellman-group17-sha512","diffie-hellman-group18-sha512","diffie-hellman-group14-sha256@ssh.com","diffie-hellman-group15-sha256","diffie-hellman-group15-sha256@ssh.com","diffie-hellman-group15-sha384@ssh.com","diffie-hellman-group16-sha256","diffie-hellman-group16-sha384@ssh.com","diffie-hellman-group16-sha512@ssh.com","diffie-hellman-group18-sha512@ssh.com") + ki.ServerHostKeyAlgos = randomNameList(rand) + ki.CiphersClientServer = randomNameList(rand) + ki.CiphersServerClient = []string {"aes128-cbc","aes128-ctr","aes192-cbc","aes192-ctr","aes256-cbc","aes256-ctr","blowfish-cbc","blowfish-ctr","cast128-cbc","cast128-ctr","idea-cbc","idea-ctr","serpent128-cbc","serpent128-ctr","serpent192-cbc","serpent192-ctr","serpent256-cbc","serpent256-ctr","3des-cbc","3des-ctr","twofish128-cbc","twofish128-ctr","twofish192-cbc","twofish192-ctr","twofish256-cbc","twofish256-ctr","twofish-cbc","arcfour","arcfour128","arcfour256"} + ki.MACsClientServer = randomNameList(rand) + ki.MACsServerClient = []string {"hmac-sha1","hmac-sha1-96","hmac-md5","hmac-md5-96","hmac-sha2-256","hmac-sha2-512"} + ki.CompressionClientServer = randomNameList(rand) + ki.CompressionServerClient = []string {"zlib@openssh.com","zlib","none"} + ki.LanguagesClientServer = randomNameList(rand) + ki.LanguagesServerClient = randomNameList(rand) + ki.FirstKexFollows = true + + hassh := ki.GenerateHaSSH() + expected := "8a8ae540028bf433cd68356c1b9e8d5b" + if hassh != expected { + t.Errorf("Unexpected hash. Wanted %s, got %s", expected, hassh) + } +} + func randomBytes(out []byte, rand *rand.Rand) { for i := 0; i < len(out); i++ { out[i] = byte(rand.Int31()) From 3772f18c84aa7b2414b62602b472fd1269e985af Mon Sep 17 00:00:00 2001 From: Raymond Nook <59678453+developStorm@users.noreply.github.com> Date: Thu, 11 Apr 2024 15:48:20 -0700 Subject: [PATCH 14/47] docs: add module help usage to README --- README.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 587725ae..cd349449 100644 --- a/README.md +++ b/README.md @@ -39,10 +39,18 @@ $ make ZGrab2 supports modules. For example, to run the ssh module use -``` +```bash ./zgrab2 ssh ``` +To retrieve detailed command-line usage and options for a specific module, append -h to the command: + +```bash +./zgrab2 [module] -h +``` + +This will display the module-specific options, as well as the application-wide options, including usage examples, available flags, and descriptions for each option. + Module specific options must be included after the module. Application specific options can be specified at any time. ## Input Format From 1fc756c414a2684f2beed8d1a20aa69c3eb67084 Mon Sep 17 00:00:00 2001 From: devStorm <59678453+developStorm@users.noreply.github.com> Date: Thu, 11 Apr 2024 15:56:03 -0700 Subject: [PATCH 15/47] refactor: improve and align ftp tls error msg --- modules/ftp/scanner.go | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/modules/ftp/scanner.go b/modules/ftp/scanner.go index 4ff3ce8b..eff27fb5 100644 --- a/modules/ftp/scanner.go +++ b/modules/ftp/scanner.go @@ -216,14 +216,14 @@ func (ftp *Connection) GetFTPSCertificates() error { ftpsReady, err := ftp.SetupFTPS() if err != nil { - return err + return fmt.Errorf("error setting up FTPS: %w", err) } if !ftpsReady { return nil } var conn *zgrab2.TLSConnection if conn, err = ftp.config.TLSFlags.GetTLSConnection(ftp.conn); err != nil { - return err + return fmt.Errorf("error setting up TLS connection: %w", err) } ftp.results.TLSLog = conn.GetLog() @@ -232,20 +232,20 @@ func (ftp *Connection) GetFTPSCertificates() error { // AUTH TLS succeeds, but the handshake fails, dumping // "error:1408A0C1:SSL routines:ssl3_get_client_hello:no shared cipher" // to the socket. - return err + return fmt.Errorf("TLS handshake failed: %w", err) } ftp.conn = conn return nil } // Scan performs the configured scan on the FTP server, as follows: -// * Read the banner into results.Banner (if it is not a 2XX response, bail) -// * If the FTPAuthTLS flag is not set, finish. -// * Send the AUTH TLS command to the server. If the response is not 2XX, then -// send the AUTH SSL command. If the response is not 2XX, then finish. -// * Perform ths TLS handshake / any configured TLS scans, populating -// results.TLSLog. -// * Return SCAN_SUCCESS, &results, nil +// - Read the banner into results.Banner (if it is not a 2XX response, bail) +// - If the FTPAuthTLS flag is not set, finish. +// - Send the AUTH TLS command to the server. If the response is not 2XX, then +// send the AUTH SSL command. If the response is not 2XX, then finish. +// - Perform ths TLS handshake / any configured TLS scans, populating +// results.TLSLog. +// - Return SCAN_SUCCESS, &results, nil func (s *Scanner) Scan(t zgrab2.ScanTarget) (status zgrab2.ScanStatus, result interface{}, thrown error) { var err error conn, err := t.Open(&s.config.BaseFlags) @@ -279,7 +279,7 @@ func (s *Scanner) Scan(t zgrab2.ScanTarget) (status zgrab2.ScanStatus, result in } if s.config.FTPAuthTLS && is200Banner { if err := ftp.GetFTPSCertificates(); err != nil { - return zgrab2.SCAN_APPLICATION_ERROR, &ftp.results, err + return zgrab2.TryGetScanStatus(err), &ftp.results, err } } return zgrab2.SCAN_SUCCESS, &ftp.results, nil From dd248a5efabd9eaf3e93fc1030938f3adddcf7d6 Mon Sep 17 00:00:00 2001 From: L4puta <80864264+L4puta@users.noreply.github.com> Date: Fri, 12 Apr 2024 22:37:58 +0900 Subject: [PATCH 16/47] Update config.go fix /metrics 404 error --- config.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config.go b/config.go index ce398423..8b22ba24 100644 --- a/config.go +++ b/config.go @@ -102,7 +102,7 @@ func validateFrameworkConfiguration() { //validate/start prometheus if config.Prometheus != "" { go func() { - http.Handle("metrics", promhttp.Handler()) + http.Handle("/metrics", promhttp.Handler()) if err := http.ListenAndServe(config.Prometheus, nil); err != nil { log.Fatalf("could not run prometheus server: %s", err.Error()) } From 96751902c1ffbaddf6a29f1e561542cef4c13652 Mon Sep 17 00:00:00 2001 From: Raymond Nook <59678453+developStorm@users.noreply.github.com> Date: Fri, 12 Apr 2024 10:53:15 -0700 Subject: [PATCH 17/47] patch: markdown syntax --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cd349449..bf568c63 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ ZGrab2 supports modules. For example, to run the ssh module use ./zgrab2 ssh ``` -To retrieve detailed command-line usage and options for a specific module, append -h to the command: +To retrieve detailed command-line usage and options for a specific module, append `-h` to the command: ```bash ./zgrab2 [module] -h From ab5b8b1baf3fbb3e43f69acbf69d9eeca7c53566 Mon Sep 17 00:00:00 2001 From: devStorm <59678453+developStorm@users.noreply.github.com> Date: Fri, 12 Apr 2024 11:04:46 -0700 Subject: [PATCH 18/47] refactor: wrap all err in ftp Scan() --- modules/ftp/scanner.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/ftp/scanner.go b/modules/ftp/scanner.go index eff27fb5..ce41611b 100644 --- a/modules/ftp/scanner.go +++ b/modules/ftp/scanner.go @@ -250,7 +250,7 @@ func (s *Scanner) Scan(t zgrab2.ScanTarget) (status zgrab2.ScanStatus, result in var err error conn, err := t.Open(&s.config.BaseFlags) if err != nil { - return zgrab2.TryGetScanStatus(err), nil, err + return zgrab2.TryGetScanStatus(err), nil, fmt.Errorf("error opening connection: %w", err) } cn := conn defer func() { @@ -261,13 +261,13 @@ func (s *Scanner) Scan(t zgrab2.ScanTarget) (status zgrab2.ScanStatus, result in if s.config.ImplicitTLS { tlsConn, err := s.config.TLSFlags.GetTLSConnection(conn) if err != nil { - return zgrab2.TryGetScanStatus(err), nil, err + return zgrab2.TryGetScanStatus(err), nil, fmt.Errorf("error setting up TLS connection: %w", err) } results.ImplicitTLS = true results.TLSLog = tlsConn.GetLog() err = tlsConn.Handshake() if err != nil { - return zgrab2.TryGetScanStatus(err), nil, err + return zgrab2.TryGetScanStatus(err), nil, fmt.Errorf("TLS handshake failed: %w", err) } cn = tlsConn } @@ -275,11 +275,11 @@ func (s *Scanner) Scan(t zgrab2.ScanTarget) (status zgrab2.ScanStatus, result in ftp := Connection{conn: cn, config: s.config, results: results} is200Banner, err := ftp.GetFTPBanner() if err != nil { - return zgrab2.TryGetScanStatus(err), &ftp.results, err + return zgrab2.TryGetScanStatus(err), &ftp.results, fmt.Errorf("error reading FTP banner: %w", err) } if s.config.FTPAuthTLS && is200Banner { if err := ftp.GetFTPSCertificates(); err != nil { - return zgrab2.TryGetScanStatus(err), &ftp.results, err + return zgrab2.TryGetScanStatus(err), &ftp.results, fmt.Errorf("error getting FTPS certificates: %w", err) } } return zgrab2.SCAN_SUCCESS, &ftp.results, nil From 8fcd2916d6084253a091813cabdfdd33d6319e66 Mon Sep 17 00:00:00 2001 From: devStorm <59678453+developStorm@users.noreply.github.com> Date: Tue, 16 Apr 2024 19:52:36 -0700 Subject: [PATCH 19/47] feat: add support for custom DNS server resolves #419 --- config.go | 9 +++++++++ conn.go | 10 ++++++++++ utility.go | 33 +++++++++++++++++++++++++++++---- 3 files changed, 48 insertions(+), 4 deletions(-) diff --git a/config.go b/config.go index 8b22ba24..8441b69c 100644 --- a/config.go +++ b/config.go @@ -24,6 +24,7 @@ type Config struct { ConnectionsPerHost int `long:"connections-per-host" default:"1" description:"Number of times to connect to each host (results in more output)"` ReadLimitPerHost int `long:"read-limit-per-host" default:"96" description:"Maximum total kilobytes to read for a single host (default 96kb)"` Prometheus string `long:"prometheus" description:"Address to use for Prometheus server (e.g. localhost:8080). If empty, Prometheus is disabled."` + CustomDNS string `long:"dns" description:"Address of a custom DNS server for lookups. Default port is 53."` Multiple MultipleCommand `command:"multiple" description:"Multiple module actions"` inputFile *os.File outputFile *os.File @@ -128,6 +129,14 @@ func validateFrameworkConfiguration() { if config.ReadLimitPerHost > 0 { DefaultBytesReadLimit = config.ReadLimitPerHost * 1024 } + + // Validate custom DNS + if config.CustomDNS != "" { + var err error + if config.CustomDNS, err = AddDefaultPortToDNSServerName(config.CustomDNS); err != nil { + log.Fatalf("invalid DNS server address: %s", err) + } + } } // GetMetaFile returns the file to which metadata should be output diff --git a/conn.go b/conn.go index ef701c81..e4dc43e2 100644 --- a/conn.go +++ b/conn.go @@ -341,6 +341,16 @@ func (d *Dialer) SetDefaults() *Dialer { KeepAlive: d.Timeout, DualStack: true, } + + // Use custom DNS as default if set + if config.CustomDNS != "" { + d.Dialer.Resolver = &net.Resolver{ + PreferGo: true, + Dial: func(ctx context.Context, network, address string) (net.Conn, error) { + return net.Dial(network, config.CustomDNS) + }, + } + } } return d } diff --git a/utility.go b/utility.go index c2d88a7f..4e3203ea 100644 --- a/utility.go +++ b/utility.go @@ -2,6 +2,7 @@ package zgrab2 import ( "errors" + "fmt" "net" "regexp" "strconv" @@ -9,9 +10,10 @@ import ( "time" - "github.com/zmap/zflags" - "github.com/sirupsen/logrus" "runtime/debug" + + "github.com/sirupsen/logrus" + flags "github.com/zmap/zflags" ) var parser *flags.Parser @@ -214,8 +216,9 @@ func IsTimeoutError(err error) bool { // doing anything. Otherwise, it logs the stacktrace, the panic error, and the provided message // before re-raising the original panic. // Example: -// defer zgrab2.LogPanic("Error decoding body '%x'", body) -func LogPanic(format string, args...interface{}) { +// +// defer zgrab2.LogPanic("Error decoding body '%x'", body) +func LogPanic(format string, args ...interface{}) { err := recover() if err == nil { return @@ -224,3 +227,25 @@ func LogPanic(format string, args...interface{}) { logrus.Errorf(format, args...) panic(err) } + +func AddDefaultPortToDNSServerName(inAddr string) (string, error) { + // Try to split host and port to see if the port is already specified. + host, port, err := net.SplitHostPort(inAddr) + if err != nil { + // might mean there's no port specified + host = inAddr + } + + // Validate the host part as an IP address. + ip := net.ParseIP(host) + if ip == nil { + return "", fmt.Errorf("invalid IP address") + } + + // If the original input does not have a port, specify port 53 + if port == "" { + port = "53" + } + + return net.JoinHostPort(ip.String(), port), nil +} From 11b4e0d9dd64727fceda9ac9490e2b9565cccfd8 Mon Sep 17 00:00:00 2001 From: devStorm <59678453+developStorm@users.noreply.github.com> Date: Tue, 16 Apr 2024 22:51:39 -0700 Subject: [PATCH 20/47] fix: parser of s7 ModuleIdentificationRequest resolves #212 --- modules/siemens/s7.go | 84 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 71 insertions(+), 13 deletions(-) diff --git a/modules/siemens/s7.go b/modules/siemens/s7.go index d1ebb689..3d7438d3 100644 --- a/modules/siemens/s7.go +++ b/modules/siemens/s7.go @@ -3,11 +3,18 @@ package siemens import ( "bytes" "encoding/binary" + "fmt" "net" "github.com/zmap/zgrab2" ) +const ( + S7_MODULE_ID_MODULE_INDEX = 0x1 + S7_MODULE_ID_HARDWARE_INDEX = 0x6 + S7_MODULE_ID_FIRMWARE_INDEX = 0x7 +) + // ReconnectFunction is used to re-connect to the target to re-try the scan with a different TSAP destination. type ReconnectFunction func() (net.Conn, error) @@ -59,7 +66,7 @@ func GetS7Banner(logStruct *S7Log, connection net.Conn, reconnect ReconnectFunct if err != nil { return err } - parseModuleIdentificatioNRequest(logStruct, &moduleIdentificationResponse) + parseModuleIdentificationRequest(logStruct, &moduleIdentificationResponse) // Make Component Identification request componentIdentificationResponse, err := readRequest(connection, S7_SZL_COMPONENT_IDENTIFICATION) @@ -257,23 +264,74 @@ func parseComponentIdentificationResponse(logStruct *S7Log, s7Packet *S7Packet) return nil } -func parseModuleIdentificatioNRequest(logStruct *S7Log, s7Packet *S7Packet) error { +// moduleIDData represents the data structure of the system status list. +// See https://cache.industry.siemens.com/dl/files/574/1214574/att_44504/v1/SFC_e.pdf +// 33.5 SSL-ID W#16#xy11 - Module Identification +type moduleIDData struct { + Index uint16 // Index of an identification data record + MIFB string // 20 bytes string + BGTyp uint16 // Reserved, 1 word + Ausbg1 uint16 // Version of the module, 1 word + Ausbg2 uint16 // Remaining numbers of the version ID, 1 word +} + +// parseModuleIDDataRecord parses a byte slice into a DataRecord. +func parseModuleIDDataRecord(data []byte) (*moduleIDData, error) { + if len(data) < 28 { + return nil, fmt.Errorf("data slice too short to contain a valid DataRecord") + } + + return &moduleIDData{ + Index: binary.BigEndian.Uint16(data[:2]), + MIFB: string(data[2:22]), + BGTyp: binary.BigEndian.Uint16(data[22:24]), + Ausbg1: binary.BigEndian.Uint16(data[24:26]), + Ausbg2: binary.BigEndian.Uint16(data[26:28]), + }, nil +} + +// Constructs the version number from a moduleIDData record. +func getVersionNumber(record *moduleIDData) string { + return fmt.Sprintf("V%d.%d", record.Ausbg1&0xFF, record.Ausbg2) +} + +func parseModuleIdentificationRequest(logStruct *S7Log, s7Packet *S7Packet) error { if len(s7Packet.Data) < S7_DATA_BYTE_OFFSET { return errS7PacketTooShort } - fields := bytes.FieldsFunc(s7Packet.Data[S7_DATA_BYTE_OFFSET:], func(c rune) bool { - return int(c) == 0 - }) + // Skip the first 4 bytes (return code, transport size, length) + // And the next 4 bytes (SSLID, INDEX) + buffer := bytes.NewBuffer(s7Packet.Data[8:]) - for i := len(fields) - 1; i >= 0; i-- { - switch i { - case 0: - logStruct.ModuleId = string(fields[i][1:]) // exclude index byte - case 5: - logStruct.Hardware = string(fields[i][1:]) - case 6: - logStruct.Firmware = string(fields[i][1:]) + // Parse LENTHDR and N_DR from the header + var recordLen, numRecords uint16 + if err := binary.Read(buffer, binary.BigEndian, &recordLen); err != nil { + return fmt.Errorf("failed reading record length: %v", err) + } + if err := binary.Read(buffer, binary.BigEndian, &numRecords); err != nil { + return fmt.Errorf("failed reading number of records: %v", err) + } + + // Check if the data record length and number of data records are valid + if recordLen != 28 || numRecords*28 > uint16(buffer.Len()) { + return fmt.Errorf("invalid data record length or number of data records") + } + + // Now parse the data records, considering each one is 28 bytes long after the header + for i := 0; i < int(numRecords); i++ { + record, err := parseModuleIDDataRecord(buffer.Next(28)) + if err != nil { + return fmt.Errorf("failed parsing data record %d: %v", i, err) + } + + switch { + case record.Index == S7_MODULE_ID_MODULE_INDEX: + logStruct.ModuleId = record.MIFB + case record.Index == S7_MODULE_ID_HARDWARE_INDEX: + logStruct.Hardware = getVersionNumber(record) + case record.Index == S7_MODULE_ID_FIRMWARE_INDEX: + logStruct.Firmware = getVersionNumber(record) } } From cb5f2b898abbe23f0da4267817e3740165807ade Mon Sep 17 00:00:00 2001 From: devStorm <59678453+developStorm@users.noreply.github.com> Date: Tue, 16 Apr 2024 23:04:57 -0700 Subject: [PATCH 21/47] refactor: get rid of buffer since it takes ownership of underlying buf. --- modules/siemens/s7.go | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/modules/siemens/s7.go b/modules/siemens/s7.go index 3d7438d3..6aa964b4 100644 --- a/modules/siemens/s7.go +++ b/modules/siemens/s7.go @@ -302,25 +302,23 @@ func parseModuleIdentificationRequest(logStruct *S7Log, s7Packet *S7Packet) erro // Skip the first 4 bytes (return code, transport size, length) // And the next 4 bytes (SSLID, INDEX) - buffer := bytes.NewBuffer(s7Packet.Data[8:]) + offset := 8 // Parse LENTHDR and N_DR from the header - var recordLen, numRecords uint16 - if err := binary.Read(buffer, binary.BigEndian, &recordLen); err != nil { - return fmt.Errorf("failed reading record length: %v", err) - } - if err := binary.Read(buffer, binary.BigEndian, &numRecords); err != nil { - return fmt.Errorf("failed reading number of records: %v", err) - } + recordLen := int(binary.BigEndian.Uint16(s7Packet.Data[offset : offset+2])) + offset += 2 + + numRecords := int(binary.BigEndian.Uint16(s7Packet.Data[offset : offset+2])) + offset += 2 // Check if the data record length and number of data records are valid - if recordLen != 28 || numRecords*28 > uint16(buffer.Len()) { + if recordLen != 28 || numRecords*recordLen > len(s7Packet.Data)-offset { return fmt.Errorf("invalid data record length or number of data records") } // Now parse the data records, considering each one is 28 bytes long after the header for i := 0; i < int(numRecords); i++ { - record, err := parseModuleIDDataRecord(buffer.Next(28)) + record, err := parseModuleIDDataRecord(s7Packet.Data[offset : offset+recordLen]) if err != nil { return fmt.Errorf("failed parsing data record %d: %v", i, err) } @@ -333,6 +331,8 @@ func parseModuleIdentificationRequest(logStruct *S7Log, s7Packet *S7Packet) erro case record.Index == S7_MODULE_ID_FIRMWARE_INDEX: logStruct.Firmware = getVersionNumber(record) } + + offset += recordLen } return nil From 5dc0e1c12edc6ea7fbec2dda9f7c320762e893d1 Mon Sep 17 00:00:00 2001 From: Raymond Nook <59678453+developStorm@users.noreply.github.com> Date: Wed, 17 Apr 2024 15:47:14 -0700 Subject: [PATCH 22/47] Apply suggestions from code review Co-authored-by: Phillip Stephens --- utility.go | 1 - 1 file changed, 1 deletion(-) diff --git a/utility.go b/utility.go index 4e3203ea..38371149 100644 --- a/utility.go +++ b/utility.go @@ -216,7 +216,6 @@ func IsTimeoutError(err error) bool { // doing anything. Otherwise, it logs the stacktrace, the panic error, and the provided message // before re-raising the original panic. // Example: -// // defer zgrab2.LogPanic("Error decoding body '%x'", body) func LogPanic(format string, args ...interface{}) { err := recover() From 966401688de5deb0bd8148203e65a34e0bcaabf0 Mon Sep 17 00:00:00 2001 From: Raymond Nook <59678453+developStorm@users.noreply.github.com> Date: Wed, 17 Apr 2024 15:47:44 -0700 Subject: [PATCH 23/47] Apply suggestions from code review Co-authored-by: Phillip Stephens --- utility.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/utility.go b/utility.go index 38371149..16129bf1 100644 --- a/utility.go +++ b/utility.go @@ -227,6 +227,7 @@ func LogPanic(format string, args ...interface{}) { panic(err) } +// addDefaultPortToDNSServerName validates that the input DNS server address is correct and appends the default DNS port 53 if no port is specified func AddDefaultPortToDNSServerName(inAddr string) (string, error) { // Try to split host and port to see if the port is already specified. host, port, err := net.SplitHostPort(inAddr) @@ -241,9 +242,9 @@ func AddDefaultPortToDNSServerName(inAddr string) (string, error) { return "", fmt.Errorf("invalid IP address") } - // If the original input does not have a port, specify port 53 + // If the original input does not have a port, specify port 53 as the default if port == "" { - port = "53" + port = defaultDNSPort } return net.JoinHostPort(ip.String(), port), nil From c827062f9da6c8ec28c3495ea41ac13eb295b005 Mon Sep 17 00:00:00 2001 From: Raymond Nook <59678453+developStorm@users.noreply.github.com> Date: Wed, 17 Apr 2024 15:47:52 -0700 Subject: [PATCH 24/47] Update utility.go Co-authored-by: Phillip Stephens --- utility.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utility.go b/utility.go index 16129bf1..60ebf929 100644 --- a/utility.go +++ b/utility.go @@ -228,7 +228,7 @@ func LogPanic(format string, args ...interface{}) { } // addDefaultPortToDNSServerName validates that the input DNS server address is correct and appends the default DNS port 53 if no port is specified -func AddDefaultPortToDNSServerName(inAddr string) (string, error) { +func addDefaultPortToDNSServerName(inAddr string) (string, error) { // Try to split host and port to see if the port is already specified. host, port, err := net.SplitHostPort(inAddr) if err != nil { From 6c1f48c4f1bb29eb4a23e751673818a93a82a66d Mon Sep 17 00:00:00 2001 From: Raymond Nook <59678453+developStorm@users.noreply.github.com> Date: Wed, 17 Apr 2024 15:49:42 -0700 Subject: [PATCH 25/47] Update utility.go --- utility.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/utility.go b/utility.go index 60ebf929..07d94012 100644 --- a/utility.go +++ b/utility.go @@ -18,6 +18,8 @@ import ( var parser *flags.Parser +const defaultDNSPort = 53 + func init() { parser = flags.NewParser(&config, flags.Default) } From 42946b8790af97e7ce95bc6389dde1d3771128cc Mon Sep 17 00:00:00 2001 From: Raymond Nook <59678453+developStorm@users.noreply.github.com> Date: Wed, 17 Apr 2024 15:53:01 -0700 Subject: [PATCH 26/47] Update modules/siemens/s7.go Co-authored-by: Phillip Stephens --- modules/siemens/s7.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/siemens/s7.go b/modules/siemens/s7.go index 6aa964b4..b17f2859 100644 --- a/modules/siemens/s7.go +++ b/modules/siemens/s7.go @@ -323,12 +323,12 @@ func parseModuleIdentificationRequest(logStruct *S7Log, s7Packet *S7Packet) erro return fmt.Errorf("failed parsing data record %d: %v", i, err) } - switch { - case record.Index == S7_MODULE_ID_MODULE_INDEX: + switch record.Index { + case S7_MODULE_ID_MODULE_INDEX: logStruct.ModuleId = record.MIFB - case record.Index == S7_MODULE_ID_HARDWARE_INDEX: + case S7_MODULE_ID_HARDWARE_INDEX: logStruct.Hardware = getVersionNumber(record) - case record.Index == S7_MODULE_ID_FIRMWARE_INDEX: + case S7_MODULE_ID_FIRMWARE_INDEX: logStruct.Firmware = getVersionNumber(record) } From 882b2e1e3649dba95c6679e9e409607209fa5c26 Mon Sep 17 00:00:00 2001 From: Raymond Nook <59678453+developStorm@users.noreply.github.com> Date: Wed, 17 Apr 2024 15:54:09 -0700 Subject: [PATCH 27/47] Update modules/siemens/s7.go Co-authored-by: Phillip Stephens --- modules/siemens/s7.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/siemens/s7.go b/modules/siemens/s7.go index b17f2859..2e8a4948 100644 --- a/modules/siemens/s7.go +++ b/modules/siemens/s7.go @@ -292,7 +292,8 @@ func parseModuleIDDataRecord(data []byte) (*moduleIDData, error) { // Constructs the version number from a moduleIDData record. func getVersionNumber(record *moduleIDData) string { - return fmt.Sprintf("V%d.%d", record.Ausbg1&0xFF, record.Ausbg2) + lastByteAusbg1 := record.Ausbg1 & 0xFF + return fmt.Sprintf("V%d.%d", lastByteAusbg1, record.Ausbg2) } func parseModuleIdentificationRequest(logStruct *S7Log, s7Packet *S7Packet) error { From da470e7064ffd462891823d8532ef542919fc346 Mon Sep 17 00:00:00 2001 From: devStorm <59678453+developStorm@users.noreply.github.com> Date: Wed, 17 Apr 2024 16:00:23 -0700 Subject: [PATCH 28/47] refactor: removes number literals --- modules/siemens/s7.go | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/modules/siemens/s7.go b/modules/siemens/s7.go index 2e8a4948..d0b8b011 100644 --- a/modules/siemens/s7.go +++ b/modules/siemens/s7.go @@ -9,12 +9,15 @@ import ( "github.com/zmap/zgrab2" ) +const s7ModuleIdRecordSize = 28 const ( - S7_MODULE_ID_MODULE_INDEX = 0x1 - S7_MODULE_ID_HARDWARE_INDEX = 0x6 - S7_MODULE_ID_FIRMWARE_INDEX = 0x7 + s7ModuleIdModuleIndex = 0x1 + s7ModuleIdHardwareIndex = 0x6 + s7ModuleIdFirmwareIndex = 0x7 ) +const uint16Size = 2 + // ReconnectFunction is used to re-connect to the target to re-try the scan with a different TSAP destination. type ReconnectFunction func() (net.Conn, error) @@ -292,7 +295,7 @@ func parseModuleIDDataRecord(data []byte) (*moduleIDData, error) { // Constructs the version number from a moduleIDData record. func getVersionNumber(record *moduleIDData) string { - lastByteAusbg1 := record.Ausbg1 & 0xFF + lastByteAusbg1 := record.Ausbg1 & 0xFF return fmt.Sprintf("V%d.%d", lastByteAusbg1, record.Ausbg2) } @@ -307,13 +310,13 @@ func parseModuleIdentificationRequest(logStruct *S7Log, s7Packet *S7Packet) erro // Parse LENTHDR and N_DR from the header recordLen := int(binary.BigEndian.Uint16(s7Packet.Data[offset : offset+2])) - offset += 2 + offset += uint16Size numRecords := int(binary.BigEndian.Uint16(s7Packet.Data[offset : offset+2])) - offset += 2 + offset += uint16Size // Check if the data record length and number of data records are valid - if recordLen != 28 || numRecords*recordLen > len(s7Packet.Data)-offset { + if recordLen != s7ModuleIdRecordSize || numRecords*recordLen > len(s7Packet.Data)-offset { return fmt.Errorf("invalid data record length or number of data records") } @@ -325,11 +328,11 @@ func parseModuleIdentificationRequest(logStruct *S7Log, s7Packet *S7Packet) erro } switch record.Index { - case S7_MODULE_ID_MODULE_INDEX: + case s7ModuleIdModuleIndex: logStruct.ModuleId = record.MIFB - case S7_MODULE_ID_HARDWARE_INDEX: + case s7ModuleIdHardwareIndex: logStruct.Hardware = getVersionNumber(record) - case S7_MODULE_ID_FIRMWARE_INDEX: + case s7ModuleIdFirmwareIndex: logStruct.Firmware = getVersionNumber(record) } From 2a66ce18b35fe5899e57cb23f140b2d8cbe5a4d6 Mon Sep 17 00:00:00 2001 From: devStorm <59678453+developStorm@users.noreply.github.com> Date: Wed, 17 Apr 2024 16:14:50 -0700 Subject: [PATCH 29/47] fix: compilation issue --- config.go | 2 +- utility.go | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/config.go b/config.go index 8441b69c..f59bb3f8 100644 --- a/config.go +++ b/config.go @@ -133,7 +133,7 @@ func validateFrameworkConfiguration() { // Validate custom DNS if config.CustomDNS != "" { var err error - if config.CustomDNS, err = AddDefaultPortToDNSServerName(config.CustomDNS); err != nil { + if config.CustomDNS, err = addDefaultPortToDNSServerName(config.CustomDNS); err != nil { log.Fatalf("invalid DNS server address: %s", err) } } diff --git a/utility.go b/utility.go index 07d94012..4d500858 100644 --- a/utility.go +++ b/utility.go @@ -18,7 +18,7 @@ import ( var parser *flags.Parser -const defaultDNSPort = 53 +const defaultDNSPort = "53" func init() { parser = flags.NewParser(&config, flags.Default) @@ -218,6 +218,7 @@ func IsTimeoutError(err error) bool { // doing anything. Otherwise, it logs the stacktrace, the panic error, and the provided message // before re-raising the original panic. // Example: +// // defer zgrab2.LogPanic("Error decoding body '%x'", body) func LogPanic(format string, args ...interface{}) { err := recover() From a1571dcacd0d238f4884dbc227b025760f9fe0c4 Mon Sep 17 00:00:00 2001 From: devStorm <59678453+developStorm@users.noreply.github.com> Date: Tue, 23 Apr 2024 21:43:31 -0700 Subject: [PATCH 30/47] patch: getVersionNumber function to construct version number with major, minor, and patch from each individual bytes in Ausbg fields --- modules/siemens/s7.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/modules/siemens/s7.go b/modules/siemens/s7.go index d0b8b011..a08194c4 100644 --- a/modules/siemens/s7.go +++ b/modules/siemens/s7.go @@ -295,8 +295,13 @@ func parseModuleIDDataRecord(data []byte) (*moduleIDData, error) { // Constructs the version number from a moduleIDData record. func getVersionNumber(record *moduleIDData) string { - lastByteAusbg1 := record.Ausbg1 & 0xFF - return fmt.Sprintf("V%d.%d", lastByteAusbg1, record.Ausbg2) + // The major, minor, and patch versions are stored in the lower 8 bits of Ausbg1, + // the upper 8 bits of Ausbg2, and the lower 8 bits of Ausbg2, respectively. + major := record.Ausbg1 & 0xFF + minor := record.Ausbg2 >> 8 + patch := record.Ausbg2 & 0xFF + + return fmt.Sprintf("%d.%d.%d", major, minor, patch) } func parseModuleIdentificationRequest(logStruct *S7Log, s7Packet *S7Packet) error { From e6c519f00446899c6372565d49f626ba816e5363 Mon Sep 17 00:00:00 2001 From: Sven Strittmatter Date: Mon, 20 May 2024 01:47:48 +0200 Subject: [PATCH 31/47] Fix build instructions (#383) * Removes leading $ from command line examples If you use the copy & paste feature from GH's rendered README.md this $ sign is also copied and needs to be removed when pasted into a shell. Removing the $ makes it possible to paste the command w/o manual edit. Signed-off-by: Sven Strittmatter * Adds style name to fenced code to improve Markdown rendering Signed-off-by: Sven Strittmatter * Updates the build instruction due to error The documented way to build seems to be outdated: ``` go get github.com/zmap/zgrab2 go: go.mod file not found in current directory or any parent directory. 'go get' is no longer supported outside a module. To build and install a command, use 'go install' with a version, like 'go install example.com/cmd@latest' For more information, see https://golang.org/doc/go-get-install-deprecation or run 'go help get' or 'go help install'. ``` What works for me: Clone the repo and simply run `make` inside the repo to build the binary. Signed-off-by: Sven Strittmatter * Update README.md --------- Signed-off-by: Sven Strittmatter Co-authored-by: Raymond Nook <59678453+developStorm@users.noreply.github.com> --- README.md | 50 +++++++++++++++++++++++++------------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index bf568c63..049eb759 100644 --- a/README.md +++ b/README.md @@ -5,16 +5,16 @@ ZGrab is a fast, modular application-layer network scanner designed for completi ZGrab 2.0 contains a new, modular ZGrab framework, which fully supersedes https://github.com/zmap/zgrab. + ## Building For Go 1.17 and later you must build from source: -``` -$ git clone https://github.com/zmap/zgrab2.git -$ cd zgrab2 -$ go build -$ make -$ ./zgrab2 +```shell +git clone https://github.com/zmap/zgrab2.git +cd zgrab2 +make +./zgrab2 ``` @@ -24,22 +24,22 @@ You will need to have a valid `$GOPATH` set up, for more information about `$GOP Once you have a working `$GOPATH`, run: -``` -$ go get github.com/zmap/zgrab2 +```shell +go get github.com/zmap/zgrab2 ``` This will install zgrab under `$GOPATH/src/github.com/zmap/zgrab2` -``` -$ cd $GOPATH/src/github.com/zmap/zgrab2 -$ make +```shell +cd $GOPATH/src/github.com/zmap/zgrab2 +make ``` ## Single Module Usage ZGrab2 supports modules. For example, to run the ssh module use -```bash +```shell ./zgrab2 ssh ``` @@ -57,7 +57,7 @@ Module specific options must be included after the module. Application specific Targets are specified with input files or from `stdin`, in CSV format. Each input line has three fields: -``` +```text IP, DOMAIN, TAG ``` @@ -71,7 +71,7 @@ Unused fields can be blank, and trailing unused fields can be omitted entirely. These are examples of valid input lines: -``` +```text 10.0.0.1 domain.com 10.0.0.1, domain.com @@ -87,7 +87,7 @@ domain.com To run a scan with multiple modules, a `.ini` file must be used with the `multiple` module. Below is an example `.ini` file with the corresponding zgrab2 command. ***multiple.ini*** -``` +```ini [Application Options] output-file="output.txt" input-file="input.txt" @@ -102,21 +102,21 @@ endpoint="/" [ssh] port=22 ``` -``` +```shell ./zgrab2 multiple -c multiple.ini ``` `Application Options` must be the initial section name. Other section names should correspond exactly to the relevant zgrab2 module name. The default name for each module is the command name. If the same module is to be used multiple times then `name` must be specified and unique. Multiple module support is particularly powerful when combined with input tags and the `--trigger` scanner argument. For example, this input contains targets with two different tags: -``` +```text 141.212.113.199, , tagA 216.239.38.21, censys.io, tagB ``` Invoking zgrab2 with the following `multiple` configuration will perform an SSH grab on the first target above and an HTTP grab on the second target: -``` +```ini [ssh] trigger="tagA" name="ssh22" @@ -134,7 +134,7 @@ Add module to modules/ that satisfies the following interfaces: `Scanner`, `Scan The flags struct must embed zgrab2.BaseFlags. In the modules `init()` function the following must be included. -``` +```go func init() { var newModule NewModule _, err := zgrab2.AddCommand("module", "short description", "long description of module", portNumber, &newModule) @@ -160,16 +160,16 @@ The only hard requirement is that the `test.sh` script drops its output in `$ZGR To run integration tests, you must have [Docker](https://www.docker.com/) installed. Then, you can follow the following steps to run integration tests: -``` -$ go get github.com/jmespath/jp && go build github.com/jmespath/jp -$ pip install --user zschema -$ make integration-test +```shell +go get github.com/jmespath/jp && go build github.com/jmespath/jp +pip install --user zschema +make integration-test ``` Running the integration tests will generate quite a bit of debug output. To ensure that tests completed successfully, you can check for a successful exit code after the tests complete: -``` -$ echo $? +```shell +echo $? 0 ``` From 8513c35a2b8b1bc7775abda35c963f98485eb4cd Mon Sep 17 00:00:00 2001 From: Raymond Nook <59678453+developStorm@users.noreply.github.com> Date: Tue, 21 May 2024 15:39:34 -0700 Subject: [PATCH 32/47] Build: Multi-platform Docker Builds and Integration Test (#428) * build: publish docker image to ghcr * build: test cache * build: build standard zgrab image as runner * build: Integration Test use more reliable way to determine project root * build: zgrab should not be built in host * build: attach a tty * build: fix "the input device is not a TTY" * test: remove auto env setup * build: setup python2 * chore: comments * style: format python files with black * fix(test): mongodb schema * fix: pop3 banner checker according to rfc1939, merely +OK is a valid response in the AUTHORIZATION state * build: remove the naive build CI * docs: fix path and instructions in integrated test documents * build: docker image only on main branch push or tagging * build: add linter workflow for Python and Go * patch: template py file validity * build: only run linter on active PRs or main branch * patch: condense case --- .dockerignore | 5 +- .github/dependabot.yml | 18 + .github/workflows/build.yml | 19 - .github/workflows/docker-publish.yml | 153 + .github/workflows/integration-test.yml | 37 + .github/workflows/linter.yml | 28 + Makefile | 10 +- README.md | 10 +- docker-runner/Dockerfile | 25 - docker-runner/Makefile | 13 +- docker-runner/docker-run.sh | 2 +- docker-runner/runner-base.Dockerfile | 11 - integration_tests/.template/schema.py | 14 +- integration_tests/.template/test.sh | 2 +- integration_tests/ftp/test.sh | 4 +- integration_tests/http/setup.sh | 2 +- integration_tests/http/test.sh | 4 +- integration_tests/ipp/test.sh | 8 +- integration_tests/mongodb/test.sh | 2 +- integration_tests/mssql/setup.sh | 4 +- integration_tests/mssql/test.sh | 2 +- integration_tests/mysql/test.sh | 2 +- integration_tests/ntp/test.sh | 2 +- integration_tests/pop3/test.sh | 2 +- integration_tests/postgres/setup.sh | 2 +- integration_tests/postgres/test.sh | 4 +- integration_tests/redis/test.sh | 2 +- integration_tests/setup.sh | 2 +- integration_tests/smtp/test.sh | 2 +- integration_tests/ssh/test.sh | 2 +- integration_tests/telnet/test.sh | 2 +- integration_tests/test.sh | 18 +- modules/pop3/scanner.go | 40 +- setup.py | 25 +- zgrab2_schemas/README.md | 10 +- zgrab2_schemas/zgrab2/bacnet.py | 33 +- zgrab2_schemas/zgrab2/banner.py | 19 +- zgrab2_schemas/zgrab2/dnp3.py | 17 +- zgrab2_schemas/zgrab2/fox.py | 55 +- zgrab2_schemas/zgrab2/ftp.py | 21 +- zgrab2_schemas/zgrab2/http.py | 150 +- zgrab2_schemas/zgrab2/imap.py | 23 +- zgrab2_schemas/zgrab2/ipp.py | 269 +- zgrab2_schemas/zgrab2/modbus.py | 92 +- zgrab2_schemas/zgrab2/mongodb.py | 87 +- zgrab2_schemas/zgrab2/mssql.py | 80 +- zgrab2_schemas/zgrab2/mysql.py | 209 +- zgrab2_schemas/zgrab2/mysql_errors.py | 6996 ++++++++++++------------ zgrab2_schemas/zgrab2/ntp.py | 111 +- zgrab2_schemas/zgrab2/oracle.py | 116 +- zgrab2_schemas/zgrab2/pop3.py | 27 +- zgrab2_schemas/zgrab2/postgres.py | 108 +- zgrab2_schemas/zgrab2/redis.py | 139 +- zgrab2_schemas/zgrab2/siemens.py | 47 +- zgrab2_schemas/zgrab2/smb.py | 132 +- zgrab2_schemas/zgrab2/smtp.py | 27 +- zgrab2_schemas/zgrab2/ssh.py | 360 +- zgrab2_schemas/zgrab2/telnet.py | 33 +- zgrab2_schemas/zgrab2/tests.py | 13 +- zgrab2_schemas/zgrab2/zgrab2.py | 71 +- 60 files changed, 5186 insertions(+), 4537 deletions(-) create mode 100644 .github/dependabot.yml delete mode 100644 .github/workflows/build.yml create mode 100644 .github/workflows/docker-publish.yml create mode 100644 .github/workflows/integration-test.yml create mode 100644 .github/workflows/linter.yml delete mode 100644 docker-runner/Dockerfile delete mode 100644 docker-runner/runner-base.Dockerfile diff --git a/.dockerignore b/.dockerignore index c9c56767..9561e7d4 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,2 +1,5 @@ Dockerfile - +.github +integration_tests +zgrab2_schemas +*.md diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..aee6e903 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,18 @@ +version: 2 +updates: + - package-ecosystem: gomod + directory: / + schedule: + interval: weekly + - package-ecosystem: github-actions + directory: "/" + schedule: + interval: weekly + - package-ecosystem: docker + directory: "/" + schedule: + interval: weekly + - package-ecosystem: docker + directory: "/docker-runner" + schedule: + interval: weekly diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index de72f088..00000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: ZGrab2 build action -on: [push, pull_request] -jobs: - build: - name: Build - runs-on: ubuntu-latest - steps: - - name: Set up Go - uses: actions/setup-go@v2 - with: - go-version: 1.18 - - - name: Check out source - uses: actions/checkout@v2 - - - name: Build - run: | - go get -t ./... - make diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml new file mode 100644 index 00000000..fd4b66aa --- /dev/null +++ b/.github/workflows/docker-publish.yml @@ -0,0 +1,153 @@ +# See also: +# https://docs.docker.com/build/ci/github-actions/multi-platform/ +# https://docs.github.com/en/actions/publishing-packages/publishing-docker-images + +name: Publish Docker image + +on: + push: + branches: + - master + tags: + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + build: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + id-token: write + attestations: write + strategy: + fail-fast: true + matrix: + platform: + - linux/amd64 + - linux/arm/v6 + - linux/arm/v7 + - linux/arm64 + steps: + - name: Prepare + run: | + platform=${{ matrix.platform }} + echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV + + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + + - name: Log in to the Container registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - uses: docker/setup-qemu-action@v3 + - uses: docker/setup-buildx-action@v3 + - name: Build and push by digest + id: build + uses: docker/build-push-action@v5 + with: + context: . + cache-from: type=gha + cache-to: type=gha,mode=max + platforms: ${{ matrix.platform }} + labels: ${{ steps.meta.outputs.labels }} + outputs: type=image,name=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }},push-by-digest=true,name-canonical=true,push=true + + - name: Generate artifact attestation + uses: actions/attest-build-provenance@v1 + with: + subject-name: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME}} + subject-digest: ${{ steps.build.outputs.digest }} + push-to-registry: true + + - name: Export digest + run: | + mkdir -p /tmp/digests + digest="${{ steps.build.outputs.digest }}" + touch "/tmp/digests/${digest#sha256:}" + + - name: Upload digest + uses: actions/upload-artifact@v4 + with: + name: digests-${{ env.PLATFORM_PAIR }} + path: /tmp/digests/* + if-no-files-found: error + retention-days: 1 + + publish: + needs: + - build + runs-on: ubuntu-latest + # Sets the permissions granted to the `GITHUB_TOKEN` for the actions in this job. + permissions: + contents: read + packages: write + id-token: write + attestations: write + steps: + - name: Download digests + uses: actions/download-artifact@v4 + with: + path: /tmp/digests + pattern: digests-* + merge-multiple: true + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + tags: | + type=raw,value=latest,enable={{is_default_branch}} + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + type=semver,pattern={{major}} + type=ref,event=tag + type=ref,event=branch + + - name: Log in to the Container registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Create manifest list and push + id: push + working-directory: /tmp/digests + run: | + docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \ + $(printf '${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}@sha256:%s ' *) + + - name: Inspect image + id: inspect + run: | + docker buildx imagetools inspect ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.meta.outputs.version }} + IMAGE_DIGEST=$(docker buildx imagetools inspect --format "{{json .Manifest}}" ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.meta.outputs.version }} | jq -r '.digest') + echo "IMAGE_DIGEST=$IMAGE_DIGEST" >> $GITHUB_OUTPUT + + - name: Generate artifact attestation + uses: actions/attest-build-provenance@v1 + with: + subject-name: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME}} + subject-digest: ${{ steps.inspect.outputs.IMAGE_DIGEST }} + push-to-registry: true diff --git a/.github/workflows/integration-test.yml b/.github/workflows/integration-test.yml new file mode 100644 index 00000000..c4060256 --- /dev/null +++ b/.github/workflows/integration-test.yml @@ -0,0 +1,37 @@ +name: Integration Test +on: + push: + branches: + - master + pull_request: + +jobs: + test: + name: Test + runs-on: ubuntu-latest + steps: + - name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: 1.18 + + - name: Check out source + uses: actions/checkout@v4 + + - name: Install dependencies + run: | + set -e + sudo wget https://github.com/jmespath/jp/releases/download/0.2.1/jp-linux-amd64 -O /usr/local/bin/jp + sudo chmod +x /usr/local/bin/jp + # Install Python 2.7 + sudo apt update + sudo apt install -y python2 + curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py + sudo python2 get-pip.py + # Install Python dependencies + pip2 install --user zschema + pip2 install --user -r requirements.txt + + - name: Run tests + run: | + make integration-test \ No newline at end of file diff --git a/.github/workflows/linter.yml b/.github/workflows/linter.yml new file mode 100644 index 00000000..3f6e3958 --- /dev/null +++ b/.github/workflows/linter.yml @@ -0,0 +1,28 @@ +name: Lint + +on: + push: + branches: + - master + pull_request: + + +jobs: + py-black: + name: Python Formatter + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: psf/black@stable + go-fmt: + name: Go Formatter + runs-on: ubuntu-latest + if: false # Pending activation + steps: + - uses: actions/checkout@v4 + - name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: 1.18 + - name: Run go fmt + run: go fmt ./... \ No newline at end of file diff --git a/Makefile b/Makefile index 4a65dbbd..ee55fe5b 100644 --- a/Makefile +++ b/Makefile @@ -9,7 +9,7 @@ TEST_MODULES ?= all: zgrab2 -.PHONY: all clean integration-test integration-test-clean docker-runner container-clean gofmt test +.PHONY: all clean integration-test integration-test-clean docker-runner gofmt test # Test currently only runs on the modules folder because some of the # third-party libraries in lib (e.g. http) are failing. @@ -25,7 +25,7 @@ zgrab2: $(GO_FILES) rm -f zgrab2 ln -s cmd/zgrab2/zgrab2$(EXECUTABLE_EXTENSION) zgrab2 -docker-runner: zgrab2 +docker-runner: clean make -C docker-runner integration-test: docker-runner @@ -37,12 +37,6 @@ integration-test-clean: ./integration_tests/cleanup.sh make -C docker-runner clean -# This is the target for re-building from source in the container -container-clean: - rm -f zgrab2 - cd cmd/zgrab2 && go build -v -a . && cd ../.. - ln -s cmd/zgrab2/zgrab2$(EXECUTABLE_EXTENSION) zgrab2 - clean: cd cmd/zgrab2 && go clean rm -f zgrab2 diff --git a/README.md b/README.md index 049eb759..3f53a534 100644 --- a/README.md +++ b/README.md @@ -146,7 +146,7 @@ func init() { ### Output schema -To add a schema for the new module, add a module under schemas, and update [`schemas/__init__.py`](schemas/__init__.py) to ensure that it is loaded. +To add a schema for the new module, add a module under schemas, and update [`zgrab2_schemas/zgrab2/__init__.py`](zgrab2_schemas/zgrab2/__init__.py) to ensure that it is loaded. See [zgrab2_schemas/README.md](zgrab2_schemas/README.md) for details. @@ -158,11 +158,13 @@ The only hard requirement is that the `test.sh` script drops its output in `$ZGR #### How to Run Integration Tests -To run integration tests, you must have [Docker](https://www.docker.com/) installed. Then, you can follow the following steps to run integration tests: +To run integration tests, you must have [Docker](https://www.docker.com/) and **Python 2** on host installed. Then, you can follow the following steps to run integration tests: ```shell go get github.com/jmespath/jp && go build github.com/jmespath/jp -pip install --user zschema +# or, sudo wget https://github.com/jmespath/jp/releases/download/0.2.1/jp-linux-amd64 -O /usr/local/bin/jp && sudo chmod +x /usr/local/bin/jp +pip2 install --user zschema +pip2 install --user -r requirements.txt make integration-test ``` @@ -173,5 +175,7 @@ echo $? 0 ``` +Refer to our [Github Actions workflow](.github/workflows/integration-test.yml) for an example of how to prepare environment for integration tests. + ## License ZGrab2.0 is licensed under Apache 2.0 and ISC. For more information, see the LICENSE file. diff --git a/docker-runner/Dockerfile b/docker-runner/Dockerfile deleted file mode 100644 index 9f845343..00000000 --- a/docker-runner/Dockerfile +++ /dev/null @@ -1,25 +0,0 @@ -FROM zgrab2_runner_base:latest - -WORKDIR /go/src/github.com/zmap - -# Grab the currently-active version of the source -ADD . zgrab2 - -# This would instead grab it from the source repo -# RUN go-wrapper download github.com/zmap/zgrab2 - -WORKDIR /go/src/github.com/zmap/zgrab2 - -RUN go get -f -u -v . -RUN go get -f -u -v -t . -RUN go get -f -u -v $(find ./modules -type d) -RUN go get -f -u -v -t $(find ./modules -type d) - -# This should already be executable, but just in case... -RUN chmod a+x ./docker-runner/entrypoint.sh - -# Build on the container -RUN make container-clean - -CMD [] -ENTRYPOINT ["/go/src/github.com/zmap/zgrab2/docker-runner/entrypoint.sh"] diff --git a/docker-runner/Makefile b/docker-runner/Makefile index d6647135..139eddbc 100644 --- a/docker-runner/Makefile +++ b/docker-runner/Makefile @@ -4,26 +4,23 @@ else EXECUTABLE_EXTENSION := endif -all: docker-runner.id +PROJ_ROOT := $(shell git rev-parse --show-toplevel) + +all: docker-runner.id service-base-image.id .PHONY: clean clean-all base-apt-update service-base-image.id: service-base.Dockerfile docker build -t zgrab2_service_base:latest -f service-base.Dockerfile -q . > service-base-image.id || (rm -f service-base-image.id && exit 1) -runner-base-image.id: runner-base.Dockerfile - docker build -t zgrab2_runner_base:latest -f runner-base.Dockerfile -q . > runner-base-image.id || (rm -f runner-base-image.id && exit 1) - base-apt-update: IMAGE_ID=zgrab2_service_base:latest ./base-apt-update.sh - IMAGE_ID=zgrab2_runner_base:latest ./base-apt-update.sh -docker-runner.id: Dockerfile ../cmd/zgrab2/zgrab2$(EXECUTABLE_EXTENSION) runner-base-image.id service-base-image.id - docker build -t zgrab2_runner:latest -f Dockerfile -q .. > docker-runner.id || (rm -f docker-runner.id && exit 1) +docker-runner.id: $(PROJ_ROOT)/Dockerfile + docker build -t zgrab2_runner:latest -f $(PROJ_ROOT)/Dockerfile -q $(PROJ_ROOT) > docker-runner.id || (rm -f docker-runner.id && exit 1) clean: if [ -f docker-runner.id ]; then docker rmi -f $$(cat docker-runner.id) && rm -f docker-runner.id; fi clean-all: clean if [ -f service-base-image.id ]; then docker rmi -f $$(cat service-base-image.id) && rm -f service-base-image.id; fi - if [ -f runner-base-image.id ]; then docker rmi -f $$(cat runner-base-image.id) && rm -f runner-base-image.id; fi diff --git a/docker-runner/docker-run.sh b/docker-runner/docker-run.sh index 074a8107..a13ed284 100755 --- a/docker-runner/docker-run.sh +++ b/docker-runner/docker-run.sh @@ -7,4 +7,4 @@ : "${CONTAINER_NAME:?}" set -e -docker run --rm --link $CONTAINER_NAME:target -e ZGRAB_TARGET=target zgrab2_runner $@ +echo 'target' | docker run --rm -i --link $CONTAINER_NAME:target zgrab2_runner $@ diff --git a/docker-runner/runner-base.Dockerfile b/docker-runner/runner-base.Dockerfile deleted file mode 100644 index de71ca2e..00000000 --- a/docker-runner/runner-base.Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -FROM golang:1.9 -# Base image that already has the pre-requisites downloaded. - -WORKDIR /go/src/github.com/zmap - -RUN go-wrapper download github.com/zmap/zgrab2 - -WORKDIR /go/src/github.com/zmap/zgrab2 - -RUN go get -v ./... -RUN go get -v -t ./... diff --git a/integration_tests/.template/schema.py b/integration_tests/.template/schema.py index 80d8bbd9..402effd8 100644 --- a/integration_tests/.template/schema.py +++ b/integration_tests/.template/schema.py @@ -7,12 +7,12 @@ import zcrypto_schemas.zcrypto as zcrypto import zgrab2 -#{MODULE_NAME}_scan_response = SubRecord({ - "result": SubRecord({ - # TODO FIXME IMPLEMENT SCHEMA - }) -}, extends=zgrab2.base_scan_response) +# {MODULE_NAME}_scan_response = SubRecord({ +# "result": SubRecord({ +# # TODO FIXME IMPLEMENT SCHEMA +# }) +# }, extends=zgrab2.base_scan_response) -zschema.registry.register_schema("zgrab2-#{MODULE_NAME}", #{MODULE_NAME}_scan_response) +# zschema.registry.register_schema("zgrab2-#{MODULE_NAME}", #{MODULE_NAME}_scan_response) -zgrab2.register_scan_response_type("#{MODULE_NAME}", #{MODULE_NAME}_scan_response) +# zgrab2.register_scan_response_type("#{MODULE_NAME}", #{MODULE_NAME}_scan_response) diff --git a/integration_tests/.template/test.sh b/integration_tests/.template/test.sh index 650cea14..749de495 100755 --- a/integration_tests/.template/test.sh +++ b/integration_tests/.template/test.sh @@ -2,7 +2,7 @@ set -e MODULE_DIR=$(dirname $0) -ZGRAB_ROOT=$MODULE_DIR/../.. +ZGRAB_ROOT=$(git rev-parse --show-toplevel) ZGRAB_OUTPUT=$ZGRAB_ROOT/zgrab-output mkdir -p $ZGRAB_OUTPUT/#{MODULE_NAME} diff --git a/integration_tests/ftp/test.sh b/integration_tests/ftp/test.sh index 2810bef3..8eb4268b 100755 --- a/integration_tests/ftp/test.sh +++ b/integration_tests/ftp/test.sh @@ -3,7 +3,7 @@ set -e MODULE_DIR=$(dirname $0) TEST_ROOT=$MODULE_DIR/.. -ZGRAB_ROOT=$MODULE_DIR/../.. +ZGRAB_ROOT=$(git rev-parse --show-toplevel) ZGRAB_OUTPUT=$ZGRAB_ROOT/zgrab-output CONTAINER_NAME="zgrab_ftp" @@ -22,7 +22,7 @@ echo "ftp/test: Testing FTP on $CONTAINER_NAME..." CONTAINER_NAME=$CONTAINER_NAME $ZGRAB_ROOT/docker-runner/docker-run.sh ftp > $OUTPUT_DIR/default.json echo "ftp/test: BEGIN vsftpd logs from $CONTAINER_NAME [{(" -docker exec -t $CONTAINER_NAME cat //var/log/vsftpd.log +docker exec $CONTAINER_NAME cat //var/log/vsftpd.log echo ")}] END vsftpd logs from $CONTAINER_NAME" echo "ftp/test: BEGIN docker logs from $CONTAINER_NAME [{(" diff --git a/integration_tests/http/setup.sh b/integration_tests/http/setup.sh index a69c90cb..9408b4d8 100755 --- a/integration_tests/http/setup.sh +++ b/integration_tests/http/setup.sh @@ -20,7 +20,7 @@ fi echo -n "http/setup: Waiting on $CONTAINER_NAME to start..." -while ! docker exec -t $CONTAINER_NAME cat //var/log/lighttpd/error.log | grep -q "server started"; do +while ! docker exec $CONTAINER_NAME cat //var/log/lighttpd/error.log | grep -q "server started"; do echo -n "." done diff --git a/integration_tests/http/test.sh b/integration_tests/http/test.sh index 4604b01b..9225a151 100755 --- a/integration_tests/http/test.sh +++ b/integration_tests/http/test.sh @@ -3,7 +3,7 @@ set -e MODULE_DIR=$(dirname $0) TEST_ROOT=$MODULE_DIR/.. -ZGRAB_ROOT=$MODULE_DIR/../.. +ZGRAB_ROOT=$(git rev-parse --show-toplevel) ZGRAB_OUTPUT=$ZGRAB_ROOT/zgrab-output OUTPUT_ROOT=$ZGRAB_OUTPUT/http @@ -29,5 +29,5 @@ docker logs --tail all $CONTAINER_NAME echo ")}] END docker logs from $CONTAINER_NAME" echo "http/test: BEGIN https logs from $CONTAINER_NAME [{(" -docker exec -it $CONTAINER_NAME cat //var/log/lighttpd/error.log +docker exec $CONTAINER_NAME cat //var/log/lighttpd/error.log echo ")}] END docker logs from $CONTAINER_NAME" diff --git a/integration_tests/ipp/test.sh b/integration_tests/ipp/test.sh index 5eca45aa..823381e3 100755 --- a/integration_tests/ipp/test.sh +++ b/integration_tests/ipp/test.sh @@ -2,7 +2,7 @@ set -e MODULE_DIR=$(dirname $0) -ZGRAB_ROOT=$MODULE_DIR/../.. +ZGRAB_ROOT=$(git rev-parse --show-toplevel) ZGRAB_OUTPUT=$ZGRAB_ROOT/zgrab-output OUTPUT_ROOT=$ZGRAB_OUTPUT/ipp @@ -82,14 +82,14 @@ for version in $versions; do # TODO: If there are any other relevant log files, dump those to stdout here. # FIXME: Only dump these 3 logs if they exist #echo "ipp/test: BEGIN cups logs from $CONTAINER_NAME [{(" - #docker exec -t $CONTAINER_NAME cat //var/log/cups/access_log + #docker exec $CONTAINER_NAME cat //var/log/cups/access_log #echo ")}] END cups logs from $CONTAINER_NAME" #echo "ipp/test: BEGIN cups logs from $CONTAINER_NAME [{(" - #docker exec -t $CONTAINER_NAME cat //var/log/cups/error_log + #docker exec $CONTAINER_NAME cat //var/log/cups/error_log #echo ")}] END cups logs from $CONTAINER_NAME" #echo "ipp/test: BEGIN cups logs from $CONTAINER_NAME [{(" - #docker exec -t $CONTAINER_NAME cat //var/log/cups/page_log + #docker exec $CONTAINER_NAME cat //var/log/cups/page_log #echo ")}] END cups logs from $CONTAINER_NAME" done diff --git a/integration_tests/mongodb/test.sh b/integration_tests/mongodb/test.sh index 4552ef55..e784357e 100755 --- a/integration_tests/mongodb/test.sh +++ b/integration_tests/mongodb/test.sh @@ -5,7 +5,7 @@ set -e versions="3.2.20 3.6.6 4.0.1 4.1.2" MODULE_DIR=$(dirname $0) -ZGRAB_ROOT=$MODULE_DIR/../.. +ZGRAB_ROOT=$(git rev-parse --show-toplevel) ZGRAB_OUTPUT=$ZGRAB_ROOT/zgrab-output mkdir -p $ZGRAB_OUTPUT/mongodb diff --git a/integration_tests/mssql/setup.sh b/integration_tests/mssql/setup.sh index 584f4e0d..a4b7a0c8 100755 --- a/integration_tests/mssql/setup.sh +++ b/integration_tests/mssql/setup.sh @@ -2,8 +2,8 @@ echo "mssql/setup: Tests setup for mssql" -CONTAINER_IMAGE="microsoft/mssql-server-linux" -CONTAINER_VERSION="2017-CU3" +CONTAINER_IMAGE="mcr.microsoft.com/mssql/server" +CONTAINER_VERSION="2017-latest" CONTAINER_NAME="zgrab_mssql-2017-linux" # Supported MSSQL_PRODUCT_ID values are Developer, Express, Standard, Enterprise, EnterpriseCore diff --git a/integration_tests/mssql/test.sh b/integration_tests/mssql/test.sh index 521910fa..8571dfaf 100755 --- a/integration_tests/mssql/test.sh +++ b/integration_tests/mssql/test.sh @@ -3,7 +3,7 @@ set -e MODULE_DIR=$(dirname $0) TEST_ROOT=$MODULE_DIR/.. -ZGRAB_ROOT=$MODULE_DIR/../.. +ZGRAB_ROOT=$(git rev-parse --show-toplevel) ZGRAB_OUTPUT=$ZGRAB_ROOT/zgrab-output CONTAINER_NAME="zgrab_mssql-2017-linux" diff --git a/integration_tests/mysql/test.sh b/integration_tests/mysql/test.sh index fe62f468..ecc0ff58 100755 --- a/integration_tests/mysql/test.sh +++ b/integration_tests/mysql/test.sh @@ -9,7 +9,7 @@ versions="5.5 5.6 5.7 8.0" MODULE_DIR=$(dirname $0) TEST_ROOT=$MODULE_DIR/.. -ZGRAB_ROOT=$MODULE_DIR/../.. +ZGRAB_ROOT=$(git rev-parse --show-toplevel) ZGRAB_OUTPUT=$ZGRAB_ROOT/zgrab-output status=0 diff --git a/integration_tests/ntp/test.sh b/integration_tests/ntp/test.sh index bfc1343e..a0c8c635 100755 --- a/integration_tests/ntp/test.sh +++ b/integration_tests/ntp/test.sh @@ -3,7 +3,7 @@ set -e MODULE_DIR=$(dirname $0) TEST_ROOT=$MODULE_DIR/.. -ZGRAB_ROOT=$MODULE_DIR/../.. +ZGRAB_ROOT=$(git rev-parse --show-toplevel) ZGRAB_OUTPUT=$ZGRAB_ROOT/zgrab-output OUTPUT_ROOT=$ZGRAB_OUTPUT/ntp diff --git a/integration_tests/pop3/test.sh b/integration_tests/pop3/test.sh index b28129d0..56ba5f32 100755 --- a/integration_tests/pop3/test.sh +++ b/integration_tests/pop3/test.sh @@ -2,7 +2,7 @@ set -e MODULE_DIR=$(dirname $0) -ZGRAB_ROOT=$MODULE_DIR/../.. +ZGRAB_ROOT=$(git rev-parse --show-toplevel) ZGRAB_OUTPUT=$ZGRAB_ROOT/zgrab-output mkdir -p $ZGRAB_OUTPUT/pop3 diff --git a/integration_tests/postgres/setup.sh b/integration_tests/postgres/setup.sh index 454414b5..7d21f44b 100755 --- a/integration_tests/postgres/setup.sh +++ b/integration_tests/postgres/setup.sh @@ -46,7 +46,7 @@ function waitFor() { fi sleep 1 done - while ! (docker exec -t $CONTAINER_NAME cat //var/lib/postgresql/data/pg_log/postgres.log | grep -q "STARTED; state"); do + while ! (docker exec $CONTAINER_NAME cat //var/lib/postgresql/data/pg_log/postgres.log | grep -q "STARTED; state"); do echo -n "." sleep 1 done diff --git a/integration_tests/postgres/test.sh b/integration_tests/postgres/test.sh index dedb4031..102a5667 100755 --- a/integration_tests/postgres/test.sh +++ b/integration_tests/postgres/test.sh @@ -5,7 +5,7 @@ set -e versions="9.3 9.4 9.5 9.6 10.1" types="ssl nossl" -ZGRAB_ROOT=$(dirname $0)/../.. +ZGRAB_ROOT=$(git rev-parse --show-toplevel) ZGRAB_OUTPUT=$ZGRAB_ROOT/zgrab-output mkdir -p $ZGRAB_OUTPUT/postgres @@ -20,7 +20,7 @@ function doTest() { echo ")}] END DOCKER LOGS FROM $CONTAINER_NAME" echo "BEGIN POSTGRES LOGS FROM $CONTAINER_NAME [{(" # TODO: The "//var/lib" is a work-around for MinGW - docker exec -t $CONTAINER_NAME cat //var/lib/postgresql/data/pg_log/postgres.log + docker exec $CONTAINER_NAME cat //var/lib/postgresql/data/pg_log/postgres.log echo ")}] END POSTGRES LOGS FROM $CONTAINER_NAME" } diff --git a/integration_tests/redis/test.sh b/integration_tests/redis/test.sh index 555575a3..18d41b52 100755 --- a/integration_tests/redis/test.sh +++ b/integration_tests/redis/test.sh @@ -2,7 +2,7 @@ set -e MODULE_DIR=$(dirname $0) -ZGRAB_ROOT=$MODULE_DIR/../.. +ZGRAB_ROOT=$(git rev-parse --show-toplevel) ZGRAB_OUTPUT=$ZGRAB_ROOT/zgrab-output # FIXME: Find a way to mount host to container and have it pass CircleCI tests. diff --git a/integration_tests/setup.sh b/integration_tests/setup.sh index e4be6954..8c140227 100755 --- a/integration_tests/setup.sh +++ b/integration_tests/setup.sh @@ -12,7 +12,7 @@ set -e # Run from root of project TEST_DIR=$(dirname "$0") -ZGRAB_ROOT="$TEST_DIR/.." +ZGRAB_ROOT=$(git rev-parse --show-toplevel) cd "$ZGRAB_ROOT" echo "Setting up integration tests..." diff --git a/integration_tests/smtp/test.sh b/integration_tests/smtp/test.sh index ad08cad8..37dde58e 100755 --- a/integration_tests/smtp/test.sh +++ b/integration_tests/smtp/test.sh @@ -2,7 +2,7 @@ set -e MODULE_DIR=$(dirname $0) -ZGRAB_ROOT=$MODULE_DIR/../.. +ZGRAB_ROOT=$(git rev-parse --show-toplevel) ZGRAB_OUTPUT=$ZGRAB_ROOT/zgrab-output mkdir -p $ZGRAB_OUTPUT/smtp diff --git a/integration_tests/ssh/test.sh b/integration_tests/ssh/test.sh index a974df0e..97abf3e6 100755 --- a/integration_tests/ssh/test.sh +++ b/integration_tests/ssh/test.sh @@ -3,7 +3,7 @@ set -e MODULE_DIR=$(dirname $0) TEST_ROOT=$MODULE_DIR/.. -ZGRAB_ROOT=$MODULE_DIR/../.. +ZGRAB_ROOT=$(git rev-parse --show-toplevel) ZGRAB_OUTPUT=$ZGRAB_ROOT/zgrab-output CONTAINER_NAME="zgrab_ssh" diff --git a/integration_tests/telnet/test.sh b/integration_tests/telnet/test.sh index 153807d2..75c03267 100755 --- a/integration_tests/telnet/test.sh +++ b/integration_tests/telnet/test.sh @@ -2,7 +2,7 @@ set -e MODULE_DIR=$(dirname $0) -ZGRAB_ROOT=$MODULE_DIR/../.. +ZGRAB_ROOT=$(git rev-parse --show-toplevel) ZGRAB_OUTPUT=$ZGRAB_ROOT/zgrab-output mkdir -p $ZGRAB_OUTPUT/telnet diff --git a/integration_tests/test.sh b/integration_tests/test.sh index 2fdea2a9..85591023 100755 --- a/integration_tests/test.sh +++ b/integration_tests/test.sh @@ -28,9 +28,7 @@ set -o pipefail # # Run from root of project -TEST_DIR=$(dirname "$0") -ZGRAB_ROOT="$TEST_DIR/.." -INTEGRATION_TEST_VENV=".integration_tests.venv" +ZGRAB_ROOT=$(git rev-parse --show-toplevel) cd "$ZGRAB_ROOT" @@ -39,8 +37,8 @@ ZGRAB_OUTPUT="zgrab-output" mkdir -p $ZGRAB_OUTPUT if ! which jp; then - go get github.com/jmespath/jp && go build github.com/jmespath/jp - export PATH=$PATH:$GOPATH/bin + echo "Please install jp" + exit 1 fi pushd integration_tests @@ -74,21 +72,13 @@ status=0 failures="" echo "Doing schema validation..." -if ! [ -f "${INTEGRATION_TEST_VENV}/bin/python" ]; then - virtualenv "${INTEGRATION_TEST_VENV}" - "${INTEGRATION_TEST_VENV}/bin/pip" install zschema - "${INTEGRATION_TEST_VENV}/bin/pip" install -r requirements.txt -fi - -. "${INTEGRATION_TEST_VENV}/bin/activate" - for protocol in $(ls $ZGRAB_OUTPUT); do for outfile in $(ls $ZGRAB_OUTPUT/$protocol); do target="$ZGRAB_OUTPUT/$protocol/$outfile" echo "Validating $target [{(" cat $target echo ")}]:" - if ! python -m zschema validate zgrab2 $target --path . --module zgrab2_schemas.zgrab2 ; then + if ! python2 -m zschema validate zgrab2 $target --path . --module zgrab2_schemas.zgrab2 ; then echo "Schema validation failed for $protocol/$outfile" err="schema failure@$protocol/$outfile" if [[ $status -eq 0 ]]; then diff --git a/modules/pop3/scanner.go b/modules/pop3/scanner.go index a85d2d83..47d5387b 100644 --- a/modules/pop3/scanner.go +++ b/modules/pop3/scanner.go @@ -27,7 +27,6 @@ package pop3 import ( "fmt" - "errors" "strings" log "github.com/sirupsen/logrus" @@ -170,14 +169,15 @@ func VerifyPOP3Contents(banner string) zgrab2.ScanStatus { case strings.HasPrefix(banner, "-ERR "): return zgrab2.SCAN_APPLICATION_ERROR case strings.HasPrefix(banner, "+OK "), - strings.Contains(banner, "POP3"), - // These are rare for POP3 if they happen at all, - // But it won't hurt to check just in case as a backup - strings.Contains(lowerBanner, "blacklist"), - strings.Contains(lowerBanner, "abuse"), - strings.Contains(lowerBanner, "rbl"), - strings.Contains(lowerBanner, "spamhaus"), - strings.Contains(lowerBanner, "relay"): + banner == "+OK\r\n", + strings.Contains(banner, "POP3"), + // These are rare for POP3 if they happen at all, + // But it won't hurt to check just in case as a backup + strings.Contains(lowerBanner, "blacklist"), + strings.Contains(lowerBanner, "abuse"), + strings.Contains(lowerBanner, "rbl"), + strings.Contains(lowerBanner, "spamhaus"), + strings.Contains(lowerBanner, "relay"): return zgrab2.SCAN_SUCCESS default: return zgrab2.SCAN_PROTOCOL_ERROR @@ -185,16 +185,16 @@ func VerifyPOP3Contents(banner string) zgrab2.ScanStatus { } // Scan performs the POP3 scan. -// 1. Open a TCP connection to the target port (default 110). -// 2. If --pop3s is set, perform a TLS handshake using the command-line -// flags. -// 3. Read the banner. -// 4. If --send-help is sent, send HELP, read the result. -// 5. If --send-noop is sent, send NOOP, read the result. -// 6. If --starttls is sent, send STLS, read the result, negotiate a -// TLS connection using the command-line flags. -// 7. If --send-quit is sent, send QUIT and read the result. -// 8. Close the connection. +// 1. Open a TCP connection to the target port (default 110). +// 2. If --pop3s is set, perform a TLS handshake using the command-line +// flags. +// 3. Read the banner. +// 4. If --send-help is sent, send HELP, read the result. +// 5. If --send-noop is sent, send NOOP, read the result. +// 6. If --starttls is sent, send STLS, read the result, negotiate a +// TLS connection using the command-line flags. +// 7. If --send-quit is sent, send QUIT and read the result. +// 8. Close the connection. func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, interface{}, error) { c, err := target.Open(&scanner.config.BaseFlags) if err != nil { @@ -222,7 +222,7 @@ func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, inter // OR save it to return later sr := VerifyPOP3Contents(banner) if sr == zgrab2.SCAN_PROTOCOL_ERROR { - return sr, nil, errors.New("Invalid response for POP3") + return sr, nil, fmt.Errorf("Invalid POP3 banner: %s", banner) } result.Banner = banner if scanner.config.SendHELP { diff --git a/setup.py b/setup.py index 578560c3..04816d90 100644 --- a/setup.py +++ b/setup.py @@ -4,18 +4,15 @@ here = os.path.abspath(os.path.dirname(__file__)) setup( - name="zgrab2_schemas", - version="0.0.1", - description="ZSchema definitions for zgrab2's JSON output.", - classifiers=[ - "Programming Language :: Python", - "Natural Language :: English" - ], - author="ZMap Team", - author_email="team@zmap.io", - url="https://github.com/zmap/zgrab2", - keywords="zmap censys zgrab2 internet-wide scanning", - packages=find_packages(), - include_package_data=True, - zip_safe=False + name="zgrab2_schemas", + version="0.0.1", + description="ZSchema definitions for zgrab2's JSON output.", + classifiers=["Programming Language :: Python", "Natural Language :: English"], + author="ZMap Team", + author_email="team@zmap.io", + url="https://github.com/zmap/zgrab2", + keywords="zmap censys zgrab2 internet-wide scanning", + packages=find_packages(), + include_package_data=True, + zip_safe=False, ) diff --git a/zgrab2_schemas/README.md b/zgrab2_schemas/README.md index ebb10c3d..e047b2fa 100644 --- a/zgrab2_schemas/README.md +++ b/zgrab2_schemas/README.md @@ -3,7 +3,7 @@ ZGrab 2.0 schemas for zschema ## Validating -[integration_tests.sh](../integration_tests.sh) automatically validates +[integration_tests](../integration_tests) automatically validates output from the integration tests; to manually validate a zgrab2 result, you can follow these steps: @@ -11,11 +11,11 @@ you can follow these steps: 1. Run the zschema validator: 1. Run the zschema module's main function 2. Pass it the `validate` command - 3. Give the path to the zgrab2 schema [`schemas/__init__.py:zgrab2`](schemas/__init.py__) + 3. Give the path to the zgrab2 schema [`zgrab2/__init__.py:zgrab2`](zgrab2/__init__.py) 4. Pass in the zgrab2 JSON file to validate * ``` echo 127.0.0.1 | ./cmd/zgrab2/zgrab2 mysql > output.json - PYTHONPATH=/path/to/zschema python -m zschema validate schemas/__init__.py:zgrab2 output.json + PYTHONPATH=/path/to/zschema python2 -m zschema validate zgrab2 output.json --path . --module zgrab2_schemas.zgrab2 ``` ## Adding new module schemas @@ -35,11 +35,11 @@ unfortunately, this means that multiple scans on a single host, or scans using custom identifiers, will not validate). Your module should include a `SubRecord` that extends from `zgrab2.base_scan_response`, -specifically, overridding the `result` field. See [schemas/mysql.py](schemas/mysql.py) +specifically, overridding the `result` field. See [zgrab2/mysql.py](zgrab2/mysql.py) for an example. ### Register the module -In [`schemas/__init__.py`](schemas/__init__.py), add an import for your +In [`zgrab2/__init__.py`](zgrab2/__init__.py), add an import for your module (e.g. `import my_protocol`). This will ensure that the module code is executed and that the response type is registered with the zgrab2 module. diff --git a/zgrab2_schemas/zgrab2/bacnet.py b/zgrab2_schemas/zgrab2/bacnet.py index 79aa012d..4dbc1c9d 100644 --- a/zgrab2_schemas/zgrab2/bacnet.py +++ b/zgrab2_schemas/zgrab2/bacnet.py @@ -7,20 +7,25 @@ import zcrypto_schemas from . import zgrab2 -bacnet_scan_response = SubRecord({ - "result": SubRecord({ - "is_bacnet": Boolean(), - "instance_number": Unsigned32BitInteger(), - "vendor_id": Unsigned16BitInteger(), - "vendor_name": String(), - "firmware_revision": String(), - "application_software_revision": String(), - "object_name": String(), - "model_name": String(), - "description": String(), - "location": String(), - }) -}, extends=zgrab2.base_scan_response) +bacnet_scan_response = SubRecord( + { + "result": SubRecord( + { + "is_bacnet": Boolean(), + "instance_number": Unsigned32BitInteger(), + "vendor_id": Unsigned16BitInteger(), + "vendor_name": String(), + "firmware_revision": String(), + "application_software_revision": String(), + "object_name": String(), + "model_name": String(), + "description": String(), + "location": String(), + } + ) + }, + extends=zgrab2.base_scan_response, +) zschema.registry.register_schema("zgrab2-bacnet", bacnet_scan_response) diff --git a/zgrab2_schemas/zgrab2/banner.py b/zgrab2_schemas/zgrab2/banner.py index 46220187..5092a17e 100644 --- a/zgrab2_schemas/zgrab2/banner.py +++ b/zgrab2_schemas/zgrab2/banner.py @@ -8,13 +8,18 @@ from . import zgrab2 # modules/banner/scanner.go - Results -banner_scan_response = SubRecord({ - "result": SubRecord({ - "banner": String(), - "length": Unsigned32BitInteger(), - "tls": zgrab2.tls_log, - }) -}, extends=zgrab2.base_scan_response) +banner_scan_response = SubRecord( + { + "result": SubRecord( + { + "banner": String(), + "length": Unsigned32BitInteger(), + "tls": zgrab2.tls_log, + } + ) + }, + extends=zgrab2.base_scan_response, +) zschema.registry.register_schema("zgrab2-banner", banner_scan_response) diff --git a/zgrab2_schemas/zgrab2/dnp3.py b/zgrab2_schemas/zgrab2/dnp3.py index 382bb82b..7ea85dd9 100644 --- a/zgrab2_schemas/zgrab2/dnp3.py +++ b/zgrab2_schemas/zgrab2/dnp3.py @@ -7,12 +7,17 @@ import zcrypto_schemas.zcrypto as zcrypto from . import zgrab2 -dnp3_scan_response = SubRecord({ - "result": SubRecord({ - "is_dnp3": Boolean(), - "raw_response": Binary(), - }) -}, extends=zgrab2.base_scan_response) +dnp3_scan_response = SubRecord( + { + "result": SubRecord( + { + "is_dnp3": Boolean(), + "raw_response": Binary(), + } + ) + }, + extends=zgrab2.base_scan_response, +) zschema.registry.register_schema("zgrab2-dnp3", dnp3_scan_response) diff --git a/zgrab2_schemas/zgrab2/fox.py b/zgrab2_schemas/zgrab2/fox.py index 7370f5ae..212ecd85 100644 --- a/zgrab2_schemas/zgrab2/fox.py +++ b/zgrab2_schemas/zgrab2/fox.py @@ -7,30 +7,35 @@ import zcrypto_schemas.zcrypto as zcrypto from . import zgrab2 -fox_scan_response = SubRecord({ - 'result': SubRecord({ - 'is_fox': Boolean(), - 'version': String(), - 'id': Unsigned32BitInteger(), - 'hostname': String(), - 'host_address': String(), - 'app_name': String(), - 'app_version': String(), - 'vm_name': String(), - 'vm_version': String(), - 'os_name': String(), - 'os_version': String(), - 'station_name': String(), - 'language': String(), - 'time_zone': String(), - 'host_id': String(), - 'vm_uuid': String(), - 'brand_id': String(), - 'sys_info': String(), - 'agent_auth_type': String(), - }) -}, extends=zgrab2.base_scan_response) +fox_scan_response = SubRecord( + { + "result": SubRecord( + { + "is_fox": Boolean(), + "version": String(), + "id": Unsigned32BitInteger(), + "hostname": String(), + "host_address": String(), + "app_name": String(), + "app_version": String(), + "vm_name": String(), + "vm_version": String(), + "os_name": String(), + "os_version": String(), + "station_name": String(), + "language": String(), + "time_zone": String(), + "host_id": String(), + "vm_uuid": String(), + "brand_id": String(), + "sys_info": String(), + "agent_auth_type": String(), + } + ) + }, + extends=zgrab2.base_scan_response, +) -zschema.registry.register_schema('zgrab2-fox', fox_scan_response) +zschema.registry.register_schema("zgrab2-fox", fox_scan_response) -zgrab2.register_scan_response_type('fox', fox_scan_response) +zgrab2.register_scan_response_type("fox", fox_scan_response) diff --git a/zgrab2_schemas/zgrab2/ftp.py b/zgrab2_schemas/zgrab2/ftp.py index 80d96b81..1152d64d 100644 --- a/zgrab2_schemas/zgrab2/ftp.py +++ b/zgrab2_schemas/zgrab2/ftp.py @@ -8,14 +8,19 @@ from . import zgrab2 # modules/ftp.go - FTPScanResults -ftp_scan_response = SubRecord({ - "result": SubRecord({ - "tls": zgrab2.tls_log, - "banner": String(), - "auth_tls": String(), - "auth_ssl": String(), - }) -}, extends=zgrab2.base_scan_response) +ftp_scan_response = SubRecord( + { + "result": SubRecord( + { + "tls": zgrab2.tls_log, + "banner": String(), + "auth_tls": String(), + "auth_ssl": String(), + } + ) + }, + extends=zgrab2.base_scan_response, +) zschema.registry.register_schema("zgrab2-ftp", ftp_scan_response) diff --git a/zgrab2_schemas/zgrab2/http.py b/zgrab2_schemas/zgrab2/http.py index ffff1f89..add8c465 100644 --- a/zgrab2_schemas/zgrab2/http.py +++ b/zgrab2_schemas/zgrab2/http.py @@ -81,14 +81,10 @@ "x_xss_protection", ] -http_unknown_headers = ListOf(SubRecord({ - "key": String(), - "value": ListOf(String()) -})) +http_unknown_headers = ListOf(SubRecord({"key": String(), "value": ListOf(String())})) _http_headers = dict( - (header_name, ListOf(String())) - for header_name in http_known_headers + (header_name, ListOf(String())) for header_name in http_known_headers ) _http_headers["unknown"] = http_unknown_headers @@ -99,81 +95,93 @@ http_form_values = SubRecord({}) # TODO FIXME: unconstrained dict # lib/http/request.go: URLWrapper -http_url_wrapper = SubRecord({ - "scheme": String(), - "opaque": String(), - "host": String(), - "path": String(), - "raw_path": String(), - "raw_query": String(), - "fragment": String() -}) +http_url_wrapper = SubRecord( + { + "scheme": String(), + "opaque": String(), + "host": String(), + "path": String(), + "raw_path": String(), + "raw_query": String(), + "fragment": String(), + } +) # modules/http.go: HTTPRequest -http_request = SubRecord({ - "method": String(), - "endpoint": String(), - "user_agent": String(), - "body": String() -}) +http_request = SubRecord( + {"method": String(), "endpoint": String(), "user_agent": String(), "body": String()} +) # modules/http.go: HTTPResponse -http_response = SubRecord({ - "version_major": Signed32BitInteger(), - "version_minor": Signed32BitInteger(), - "status_code": Signed32BitInteger(), - "status_line": String(), - "headers": http_headers, - "body": String(), - "body_sha256": String() -}) +http_response = SubRecord( + { + "version_major": Signed32BitInteger(), + "version_minor": Signed32BitInteger(), + "status_code": Signed32BitInteger(), + "status_line": String(), + "headers": http_headers, + "body": String(), + "body_sha256": String(), + } +) # lib/http/request.go: http.Request -http_request_full = SubRecord({ - "url": http_url_wrapper, - "method": String(), - "headers": http_headers, - "body": String(), - "content_length": Signed64BitInteger(), - "transfer_encoding": ListOf(String()), - "close": Boolean(), - "host": String(), - "form": http_form_values, - "post_form": http_form_values, - "multipart_form": http_form_values, - "trailers": http_headers, - # The new field tls_log contains the zgrab2 TLS logs. - "tls_log": zgrab2.tls_log -}) +http_request_full = SubRecord( + { + "url": http_url_wrapper, + "method": String(), + "headers": http_headers, + "body": String(), + "content_length": Signed64BitInteger(), + "transfer_encoding": ListOf(String()), + "close": Boolean(), + "host": String(), + "form": http_form_values, + "post_form": http_form_values, + "multipart_form": http_form_values, + "trailers": http_headers, + # The new field tls_log contains the zgrab2 TLS logs. + "tls_log": zgrab2.tls_log, + } +) # lib/http/response.go: http.Response -http_response_full = SubRecord({ - "status_line": String(), - "status_code": Unsigned32BitInteger(), - # lib/http/protocol.go: http.Protocol - "protocol": SubRecord({ - "name": String(), - "major": Unsigned32BitInteger(), - "minor": Unsigned32BitInteger(), - }), - "headers": http_headers, - "body": String(), - "body_sha256": Binary(), - "content_length": Signed64BitInteger(), - "transfer_encoding": ListOf(String()), - "trailers": http_headers, - "request": http_request_full -}) +http_response_full = SubRecord( + { + "status_line": String(), + "status_code": Unsigned32BitInteger(), + # lib/http/protocol.go: http.Protocol + "protocol": SubRecord( + { + "name": String(), + "major": Unsigned32BitInteger(), + "minor": Unsigned32BitInteger(), + } + ), + "headers": http_headers, + "body": String(), + "body_sha256": Binary(), + "content_length": Signed64BitInteger(), + "transfer_encoding": ListOf(String()), + "trailers": http_headers, + "request": http_request_full, + } +) # modules/http.go: HTTPResults -http_scan_response = SubRecord({ - "result": SubRecord({ - "connect_request": http_request, - "connect_response": http_response, - "response": http_response_full, - "redirect_response_chain": ListOf(http_response_full), - }) -}, extends=zgrab2.base_scan_response) +http_scan_response = SubRecord( + { + "result": SubRecord( + { + "connect_request": http_request, + "connect_response": http_response, + "response": http_response_full, + "redirect_response_chain": ListOf(http_response_full), + } + ) + }, + extends=zgrab2.base_scan_response, +) zschema.registry.register_schema("zgrab2-http", http_scan_response) diff --git a/zgrab2_schemas/zgrab2/imap.py b/zgrab2_schemas/zgrab2/imap.py index 42299b58..2625b9c5 100644 --- a/zgrab2_schemas/zgrab2/imap.py +++ b/zgrab2_schemas/zgrab2/imap.py @@ -7,14 +7,21 @@ import zcrypto_schemas.zcrypto as zcrypto from . import zgrab2 -imap_scan_response = SubRecord({ - "result": SubRecord({ - "banner": String(doc="The IMAP banner."), - "starttls": String(doc="The server's response to the STARTTLS command."), - "close": String(doc="The server's response to the CLOSE command."), - "tls": zgrab2.tls_log, - }) -}, extends=zgrab2.base_scan_response) +imap_scan_response = SubRecord( + { + "result": SubRecord( + { + "banner": String(doc="The IMAP banner."), + "starttls": String( + doc="The server's response to the STARTTLS command." + ), + "close": String(doc="The server's response to the CLOSE command."), + "tls": zgrab2.tls_log, + } + ) + }, + extends=zgrab2.base_scan_response, +) zschema.registry.register_schema("zgrab2-imap", imap_scan_response) diff --git a/zgrab2_schemas/zgrab2/ipp.py b/zgrab2_schemas/zgrab2/ipp.py index 4cafed3c..ff1fd2fc 100644 --- a/zgrab2_schemas/zgrab2/ipp.py +++ b/zgrab2_schemas/zgrab2/ipp.py @@ -63,14 +63,10 @@ "x_forwarded_for", ] -http_unknown_headers = ListOf(SubRecord({ - "key": String(), - "value": ListOf(String()) -})) +http_unknown_headers = ListOf(SubRecord({"key": String(), "value": ListOf(String())})) _http_headers = dict( - (header_name, ListOf(String())) - for header_name in http_known_headers + (header_name, ListOf(String())) for header_name in http_known_headers ) _http_headers["unknown"] = http_unknown_headers @@ -81,71 +77,78 @@ http_form_values = SubRecord({}) # TODO FIXME: unconstrained dict # lib/http/request.go: URLWrapper -http_url_wrapper = SubRecord({ - "scheme": String(), - "opaque": String(), - "host": String(), - "path": String(), - "raw_path": String(), - "raw_query": String(), - "fragment": String() -}) +http_url_wrapper = SubRecord( + { + "scheme": String(), + "opaque": String(), + "host": String(), + "path": String(), + "raw_path": String(), + "raw_query": String(), + "fragment": String(), + } +) # modules/http.go: HTTPRequest -http_request = SubRecord({ - "method": String(), - "endpoint": String(), - "user_agent": String(), - "body": String() -}) +http_request = SubRecord( + {"method": String(), "endpoint": String(), "user_agent": String(), "body": String()} +) # modules/http.go: HTTPResponse -http_response = SubRecord({ - "version_major": Signed32BitInteger(), - "version_minor": Signed32BitInteger(), - "status_code": Signed32BitInteger(), - "status_line": String(), - "headers": http_headers, - "body": String(), - "body_sha256": String() -}) +http_response = SubRecord( + { + "version_major": Signed32BitInteger(), + "version_minor": Signed32BitInteger(), + "status_code": Signed32BitInteger(), + "status_line": String(), + "headers": http_headers, + "body": String(), + "body_sha256": String(), + } +) # lib/http/request.go: http.Request -http_request_full = SubRecord({ - "url": http_url_wrapper, - "method": String(), - "headers": http_headers, - "body": String(), - "content_length": Signed64BitInteger(), - "transfer_encoding": ListOf(String()), - "close": Boolean(), - "host": String(), - "form": http_form_values, - "post_form": http_form_values, - "multipart_form": http_form_values, - "trailers": http_headers, - # The new field tls_log contains the zgrab2 TLS logs. - "tls_log": zgrab2.tls_log -}) +http_request_full = SubRecord( + { + "url": http_url_wrapper, + "method": String(), + "headers": http_headers, + "body": String(), + "content_length": Signed64BitInteger(), + "transfer_encoding": ListOf(String()), + "close": Boolean(), + "host": String(), + "form": http_form_values, + "post_form": http_form_values, + "multipart_form": http_form_values, + "trailers": http_headers, + # The new field tls_log contains the zgrab2 TLS logs. + "tls_log": zgrab2.tls_log, + } +) # lib/http/response.go: http.Response -http_response_full = SubRecord({ - "status_line": String(), - "status_code": Unsigned32BitInteger(), - # lib/http/protocol.go: http.Protocol - "protocol": SubRecord({ - "name": String(), - "major": Unsigned32BitInteger(), - "minor": Unsigned32BitInteger(), - }), - "headers": http_headers, - "body": String(), - "body_sha256": Binary(), - "content_length": Signed64BitInteger(), - "transfer_encoding": ListOf(String()), - "trailers": http_headers, - "request": http_request_full -}) +http_response_full = SubRecord( + { + "status_line": String(), + "status_code": Unsigned32BitInteger(), + # lib/http/protocol.go: http.Protocol + "protocol": SubRecord( + { + "name": String(), + "major": Unsigned32BitInteger(), + "minor": Unsigned32BitInteger(), + } + ), + "headers": http_headers, + "body": String(), + "body_sha256": Binary(), + "content_length": Signed64BitInteger(), + "transfer_encoding": ListOf(String()), + "trailers": http_headers, + "request": http_request_full, + } +) # TODO: Determine whether value-tag types with same underlying form should have a different name in this mapping # TODO: Add method to decode these values appropriately. Encoding of different tag's attribute values specified @@ -153,56 +156,96 @@ # "value-tag" values which specify the interpretation of an attribute's value: # From RFC 8010 Section 3.5.2 (https://tools.ietf.org/html/rfc8010#section-3.5.2) # Note: value-tag values are camelCase because the names are specified that way in RFC -ipp_attribute_value = SubRecord({ - "raw": IndexedBinary(), - "integer": Signed32BitInteger(), - "boolean": Boolean(), - "enum": String(), - "octetString": IndexedBinary(), - "dateTime": DateTime(), - # TODO: Determine appropriate type for resolution - "resolution": IndexedBinary(), - # TODO: Determine appropriate type for range of Integers (probably {min, max} pair) - "rangeOfInteger": IndexedBinary(), - # TODO: Determine appropriate type for beginning of attribute collection - "bagCollection": IndexedBinary(), - "textWithLanguage": String(), - "nameWithLanguage": String(), - # TODO: Determine appropriate type for end of attribute collection - "endCollection": IndexedBinary(), - "textWithoutLanguage": String(), - "nameWithoutLanguage": String(), - "keyword": String(), - "uri": String(), - "uriScheme": String(), - "charset": String(), - "naturalLanguage": String(), - "mimeMediaType": String(), - "memberAttrName": String(), -}) - -ipp_attribute = SubRecord({ - "name": String(), - "values": ListOf(ipp_attribute_value), - "tag": Unsigned8BitInteger(), -}) - -ipp_scan_response = SubRecord({ - "result": SubRecord({ - "version_major": Signed8BitInteger(doc="Major component of IPP version listed in the Server header of a response to an IPP get-printer-attributes request."), - "version_minor": Signed8BitInteger(doc="Minor component of IPP version listed in the Server header of a response to an IPP get-printer-attributes request."), - "version_string": String(doc="The specific IPP version returned in response to an IPP get-printer-attributes request. Always in the form 'IPP/x.y'", examples=["IPP/1.0", "IPP/2.1"]), - "cups_version": String(doc="The CUPS version, if any, specified in the Server header of an IPP get-attributes response.", examples=["CUPS/1.7", "CUPS/2.2"]), - "attributes": ListOf(ipp_attribute, doc="All IPP attributes included in any contentful responses obtained. Each has a name, list of values (potentially only one), and a tag denoting how the value should be interpreted."), - "attr_cups_version": String(doc="The CUPS version, if any, specified in the list of attributes returned in a get-printer-attributes response or CUPS-get-printers response. Generally in the form 'x.y.z'.", examples=["1.7.5", "2.2.7"]), - "attr_ipp_versions": ListOf(String(), doc="Each IPP version, if any, specified in the list of attributes returned in a get-printer-attributes response or CUPS-get-printers response. Always in the form 'x.y'.", examples=["1.0", "1.1", "2.0", "2.1"]), - "attr_printer_uris": ListOf(String(), doc="Each printer URI, if any, specified in the list of attributes returned in a get-printer-attributes response or CUPS-get-printers response. Uses ipp(s) or http(s) scheme, followed by a hostname or IP, and then the path to a particular printer.", examples=["ipp://201.6.251.191:631/printers/Etiqueta", "http://163.212.253.14/ipp", "ipp://BRNB8763F84DD6A.local./ipp/port1"]), - "response": http_response_full, - "cups_response": http_response_full, - "tls": zgrab2.tls_log, - "redirect_response_chain": ListOf(http_response_full, doc="Each response returned while following a series of redirects."), - }) -}, extends=zgrab2.base_scan_response) +ipp_attribute_value = SubRecord( + { + "raw": IndexedBinary(), + "integer": Signed32BitInteger(), + "boolean": Boolean(), + "enum": String(), + "octetString": IndexedBinary(), + "dateTime": DateTime(), + # TODO: Determine appropriate type for resolution + "resolution": IndexedBinary(), + # TODO: Determine appropriate type for range of Integers (probably {min, max} pair) + "rangeOfInteger": IndexedBinary(), + # TODO: Determine appropriate type for beginning of attribute collection + "bagCollection": IndexedBinary(), + "textWithLanguage": String(), + "nameWithLanguage": String(), + # TODO: Determine appropriate type for end of attribute collection + "endCollection": IndexedBinary(), + "textWithoutLanguage": String(), + "nameWithoutLanguage": String(), + "keyword": String(), + "uri": String(), + "uriScheme": String(), + "charset": String(), + "naturalLanguage": String(), + "mimeMediaType": String(), + "memberAttrName": String(), + } +) + +ipp_attribute = SubRecord( + { + "name": String(), + "values": ListOf(ipp_attribute_value), + "tag": Unsigned8BitInteger(), + } +) + +ipp_scan_response = SubRecord( + { + "result": SubRecord( + { + "version_major": Signed8BitInteger( + doc="Major component of IPP version listed in the Server header of a response to an IPP get-printer-attributes request." + ), + "version_minor": Signed8BitInteger( + doc="Minor component of IPP version listed in the Server header of a response to an IPP get-printer-attributes request." + ), + "version_string": String( + doc="The specific IPP version returned in response to an IPP get-printer-attributes request. Always in the form 'IPP/x.y'", + examples=["IPP/1.0", "IPP/2.1"], + ), + "cups_version": String( + doc="The CUPS version, if any, specified in the Server header of an IPP get-attributes response.", + examples=["CUPS/1.7", "CUPS/2.2"], + ), + "attributes": ListOf( + ipp_attribute, + doc="All IPP attributes included in any contentful responses obtained. Each has a name, list of values (potentially only one), and a tag denoting how the value should be interpreted.", + ), + "attr_cups_version": String( + doc="The CUPS version, if any, specified in the list of attributes returned in a get-printer-attributes response or CUPS-get-printers response. Generally in the form 'x.y.z'.", + examples=["1.7.5", "2.2.7"], + ), + "attr_ipp_versions": ListOf( + String(), + doc="Each IPP version, if any, specified in the list of attributes returned in a get-printer-attributes response or CUPS-get-printers response. Always in the form 'x.y'.", + examples=["1.0", "1.1", "2.0", "2.1"], + ), + "attr_printer_uris": ListOf( + String(), + doc="Each printer URI, if any, specified in the list of attributes returned in a get-printer-attributes response or CUPS-get-printers response. Uses ipp(s) or http(s) scheme, followed by a hostname or IP, and then the path to a particular printer.", + examples=[ + "ipp://201.6.251.191:631/printers/Etiqueta", + "http://163.212.253.14/ipp", + "ipp://BRNB8763F84DD6A.local./ipp/port1", + ], + ), + "response": http_response_full, + "cups_response": http_response_full, + "tls": zgrab2.tls_log, + "redirect_response_chain": ListOf( + http_response_full, + doc="Each response returned while following a series of redirects.", + ), + } + ) + }, + extends=zgrab2.base_scan_response, +) zschema.registry.register_schema("zgrab2-ipp", ipp_scan_response) diff --git a/zgrab2_schemas/zgrab2/modbus.py b/zgrab2_schemas/zgrab2/modbus.py index 7bb97846..2660fdb3 100644 --- a/zgrab2_schemas/zgrab2/modbus.py +++ b/zgrab2_schemas/zgrab2/modbus.py @@ -8,47 +8,57 @@ from . import zgrab2 mei_object_names = [ - 'vendor', - 'product_code', - 'revision', - 'vendor_url', - 'product_name', - 'model_name', - 'user_application_name', + "vendor", + "product_code", + "revision", + "vendor_url", + "product_name", + "model_name", + "user_application_name", ] # IDs without an explicit name are encoded as oid_(decimal id). -mei_object_set = SubRecord({ - i < len(mei_object_names) and mei_object_names[i] - or 'oid_' + str(i): String() - for i in range(0, 256) -}) - -mei_response = SubRecord({ - 'conformity_level': Unsigned8BitInteger(), - 'more_follows': Boolean(), - 'next_object_id': Unsigned8BitInteger(), - 'object_count': Unsigned8BitInteger(), - 'objects': mei_object_set, -}) - -exception_response = SubRecord({ - 'exception_function': Unsigned8BitInteger(), - 'exception_type': Unsigned8BitInteger(), -}) - -modbus_scan_response = SubRecord({ - 'result': SubRecord({ - 'length': Unsigned16BitInteger(), - 'unit_id': Unsigned8BitInteger(), - 'function_code': Unsigned8BitInteger(), - 'raw_response': Binary(), - 'mei_response': mei_response, - 'exception_response': exception_response, - 'raw': Binary(), - }) -}, extends=zgrab2.base_scan_response) - -zschema.registry.register_schema('zgrab2-modbus', modbus_scan_response) - -zgrab2.register_scan_response_type('modbus', modbus_scan_response) +mei_object_set = SubRecord( + { + i < len(mei_object_names) and mei_object_names[i] or "oid_" + str(i): String() + for i in range(0, 256) + } +) + +mei_response = SubRecord( + { + "conformity_level": Unsigned8BitInteger(), + "more_follows": Boolean(), + "next_object_id": Unsigned8BitInteger(), + "object_count": Unsigned8BitInteger(), + "objects": mei_object_set, + } +) + +exception_response = SubRecord( + { + "exception_function": Unsigned8BitInteger(), + "exception_type": Unsigned8BitInteger(), + } +) + +modbus_scan_response = SubRecord( + { + "result": SubRecord( + { + "length": Unsigned16BitInteger(), + "unit_id": Unsigned8BitInteger(), + "function_code": Unsigned8BitInteger(), + "raw_response": Binary(), + "mei_response": mei_response, + "exception_response": exception_response, + "raw": Binary(), + } + ) + }, + extends=zgrab2.base_scan_response, +) + +zschema.registry.register_schema("zgrab2-modbus", modbus_scan_response) + +zgrab2.register_scan_response_type("modbus", modbus_scan_response) diff --git a/zgrab2_schemas/zgrab2/mongodb.py b/zgrab2_schemas/zgrab2/mongodb.py index c11a4fe3..4a9df10e 100644 --- a/zgrab2_schemas/zgrab2/mongodb.py +++ b/zgrab2_schemas/zgrab2/mongodb.py @@ -7,32 +7,67 @@ import zcrypto_schemas.zcrypto as zcrypto from . import zgrab2 -mongodb_scan_response = SubRecord({ - "result": SubRecord({ - "build_info": SubRecord({ - "version": String(doc="Version of mongodb server"), - "git_version": String(doc="Git Version of mongodb server"), - "max_wire_version": Signed32BitInteger(), - "build_environment": SubRecord({ - "dist_mod": String(), - "dist_arch": String(), - "cc": String(), - "cc_flags": String(), - "cxx": String(), - "cxx_flags": String(), - "link_flags": String(), - "target_arch": String(), - "target_os": String()})}), - "is_master": SubRecord({ - "is_master": Boolean(), - "max_wire_version": Signed32BitInteger(), - "min_wire_version": Signed32BitInteger(), - "max_bson_object_size": Signed32BitInteger(), - "max_write_batch_size": Signed32BitInteger(), - "logical_session_timeout_minutes": Signed32BitInteger(), - "max_message_size_bytes": Signed32BitInteger(), - "read_only": Boolean()})}) -}, extends=zgrab2.base_scan_response) +mongodb_scan_response = SubRecord( + { + "result": SubRecord( + { + "build_info": SubRecord( + { + "version": String(doc="Version of mongodb server"), + "git_version": String(doc="Git Version of mongodb server"), + "max_wire_version": Signed32BitInteger(), + "sys_info": String(), + "allocator": String(), + "bits": Unsigned32BitInteger(), + "max_bson_object_size": Unsigned32BitInteger(), + "javascript_engine": String(), + "storage_engines": ListOf(String()), + "build_environment": SubRecord( + { + "dist_mod": String(), + "dist_arch": String(), + "cc": String(), + "cc_flags": String(), + "cxx": String(), + "cxx_flags": String(), + "link_flags": String(), + "target_arch": String(), + "target_os": String(), + } + ), + } + ), + "database_info": SubRecord( + { + "databases": ListOf( + SubRecord( + { + "name": String(), + "size_on_disk": Signed32BitInteger(), + "empty": Boolean(), + } + ) + ), + "total_size": Signed32BitInteger(), + } + ), + "is_master": SubRecord( + { + "is_master": Boolean(), + "max_wire_version": Signed32BitInteger(), + "min_wire_version": Signed32BitInteger(), + "max_bson_object_size": Signed32BitInteger(), + "max_write_batch_size": Signed32BitInteger(), + "logical_session_timeout_minutes": Signed32BitInteger(), + "max_message_size_bytes": Signed32BitInteger(), + "read_only": Boolean(), + } + ), + } + ) + }, + extends=zgrab2.base_scan_response, +) zschema.registry.register_schema("zgrab2-mongodb", mongodb_scan_response) diff --git a/zgrab2_schemas/zgrab2/mssql.py b/zgrab2_schemas/zgrab2/mssql.py index 7355ee20..93cc4ec5 100644 --- a/zgrab2_schemas/zgrab2/mssql.py +++ b/zgrab2_schemas/zgrab2/mssql.py @@ -8,43 +8,57 @@ from . import zgrab2 ENCRYPT_MODES = [ - "ENCRYPT_OFF", - "ENCRYPT_ON", - "ENCRYPT_NOT_SUP", - "ENCRYPT_REQ", - "UNKNOWN" + "ENCRYPT_OFF", + "ENCRYPT_ON", + "ENCRYPT_NOT_SUP", + "ENCRYPT_REQ", + "UNKNOWN", ] -unknown_prelogin_option = SubRecord({ - "token": Unsigned8BitInteger(), - "value": Binary(), -}) +unknown_prelogin_option = SubRecord( + { + "token": Unsigned8BitInteger(), + "value": Binary(), + } +) -prelogin_options = SubRecord({ - "version": SubRecord({ - "major": Unsigned8BitInteger(), - "minor": Unsigned8BitInteger(), - "build_number": Unsigned16BitInteger(), - }), - "encrypt_mode": Enum(values=ENCRYPT_MODES), - "instance": WhitespaceAnalyzedString(), - "thread_id": Unsigned32BitInteger(), - "mars": Unsigned8BitInteger(), - "trace_id": Binary(), - "fed_auth_required": Unsigned8BitInteger(), - "nonce": Binary(), - "unknown": ListOf(unknown_prelogin_option), -}) +prelogin_options = SubRecord( + { + "version": SubRecord( + { + "major": Unsigned8BitInteger(), + "minor": Unsigned8BitInteger(), + "build_number": Unsigned16BitInteger(), + } + ), + "encrypt_mode": Enum(values=ENCRYPT_MODES), + "instance": WhitespaceAnalyzedString(), + "thread_id": Unsigned32BitInteger(), + "mars": Unsigned8BitInteger(), + "trace_id": Binary(), + "fed_auth_required": Unsigned8BitInteger(), + "nonce": Binary(), + "unknown": ListOf(unknown_prelogin_option), + } +) -mssql_scan_response = SubRecord({ - "result": SubRecord({ - "version": WhitespaceAnalyzedString(), - "instance_name": WhitespaceAnalyzedString(), - "prelogin_options": prelogin_options, - "encrypt_mode": Enum(values=ENCRYPT_MODES, doc="The negotiated ENCRYPT_MODE with the server."), - "tls": zgrab2.tls_log, - }) -}, extends=zgrab2.base_scan_response) +mssql_scan_response = SubRecord( + { + "result": SubRecord( + { + "version": WhitespaceAnalyzedString(), + "instance_name": WhitespaceAnalyzedString(), + "prelogin_options": prelogin_options, + "encrypt_mode": Enum( + values=ENCRYPT_MODES, + doc="The negotiated ENCRYPT_MODE with the server.", + ), + "tls": zgrab2.tls_log, + } + ) + }, + extends=zgrab2.base_scan_response, +) zschema.registry.register_schema("zgrab2-mssql", mssql_scan_response) diff --git a/zgrab2_schemas/zgrab2/mysql.py b/zgrab2_schemas/zgrab2/mysql.py index d9d92994..450d3a51 100644 --- a/zgrab2_schemas/zgrab2/mysql.py +++ b/zgrab2_schemas/zgrab2/mysql.py @@ -8,73 +8,116 @@ from . import zgrab2 # zgrab2/lib/mysql/mysql.go: GetServerStatusFlags() -mysql_server_status_flags = zgrab2.FlagsSet([ - "SERVER_STATUS_IN_TRANS", - "SERVER_STATUS_AUTOCOMMIT", - "SERVER_MORE_RESULTS_EXISTS", - "SERVER_QUERY_NO_GOOD_INDEX_USED", - "SERVER_QUERY_NO_INDEX_USED", - "SERVER_STATUS_CURSOR_EXISTS", - "SERVER_STATUS_LAST_ROW_SENT", - "SERVER_STATUS_DB_DROPPED", - "SERVER_STATUS_NO_BACKSLASH_ESCAPES", - "SERVER_STATUS_METADATA_CHANGED", - "SERVER_QUERY_WAS_SLOW", - "SERVER_PS_OUT_PARAMS", - "SERVER_STATUS_IN_TRANS_READONLY", - "SERVER_SESSION_STATE_CHANGED", -], doc="The set of status flags the server returned in the initial HandshakePacket. Each entry corresponds to a bit being set in the flags; key names correspond to the #defines in the MySQL docs.") +mysql_server_status_flags = zgrab2.FlagsSet( + [ + "SERVER_STATUS_IN_TRANS", + "SERVER_STATUS_AUTOCOMMIT", + "SERVER_MORE_RESULTS_EXISTS", + "SERVER_QUERY_NO_GOOD_INDEX_USED", + "SERVER_QUERY_NO_INDEX_USED", + "SERVER_STATUS_CURSOR_EXISTS", + "SERVER_STATUS_LAST_ROW_SENT", + "SERVER_STATUS_DB_DROPPED", + "SERVER_STATUS_NO_BACKSLASH_ESCAPES", + "SERVER_STATUS_METADATA_CHANGED", + "SERVER_QUERY_WAS_SLOW", + "SERVER_PS_OUT_PARAMS", + "SERVER_STATUS_IN_TRANS_READONLY", + "SERVER_SESSION_STATE_CHANGED", + ], + doc="The set of status flags the server returned in the initial HandshakePacket. Each entry corresponds to a bit being set in the flags; key names correspond to the #defines in the MySQL docs.", +) # zgrab2/lib/mysql/mysql.go: GetClientCapabilityFlags() -mysql_capability_flags = zgrab2.FlagsSet([ - "CLIENT_LONG_PASSWORD", - "CLIENT_FOUND_ROWS", - "CLIENT_LONG_FLAG", - "CLIENT_CONNECT_WITH_DB", - "CLIENT_NO_SCHEMA", - "CLIENT_COMPRESS", - "CLIENT_ODBC", - "CLIENT_LOCAL_FILES", - "CLIENT_IGNORE_SPACE", - "CLIENT_PROTOCOL_41", - "CLIENT_INTERACTIVE", - "CLIENT_SSL", - "CLIENT_IGNORE_SIGPIPE", - "CLIENT_TRANSACTIONS", - "CLIENT_RESERVED", - "CLIENT_SECURE_CONNECTION", - "CLIENT_MULTI_STATEMENTS", - "CLIENT_MULTI_RESULTS", - "CLIENT_PS_MULTI_RESULTS", - "CLIENT_PLUGIN_AUTH", - "CLIENT_CONNECT_ATTRS", - "CLIENT_PLUGIN_AUTH_LEN_ENC_CLIENT_DATA", - "CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS", - "CLIENT_SESSION_TRACK", - "CLIENT_DEPRECATED_EOF", -], doc="The set of capability flags the server returned in the initial HandshakePacket. Each entry corresponds to a bit being set in the flags; key names correspond to the #defines in the MySQL docs.") +mysql_capability_flags = zgrab2.FlagsSet( + [ + "CLIENT_LONG_PASSWORD", + "CLIENT_FOUND_ROWS", + "CLIENT_LONG_FLAG", + "CLIENT_CONNECT_WITH_DB", + "CLIENT_NO_SCHEMA", + "CLIENT_COMPRESS", + "CLIENT_ODBC", + "CLIENT_LOCAL_FILES", + "CLIENT_IGNORE_SPACE", + "CLIENT_PROTOCOL_41", + "CLIENT_INTERACTIVE", + "CLIENT_SSL", + "CLIENT_IGNORE_SIGPIPE", + "CLIENT_TRANSACTIONS", + "CLIENT_RESERVED", + "CLIENT_SECURE_CONNECTION", + "CLIENT_MULTI_STATEMENTS", + "CLIENT_MULTI_RESULTS", + "CLIENT_PS_MULTI_RESULTS", + "CLIENT_PLUGIN_AUTH", + "CLIENT_CONNECT_ATTRS", + "CLIENT_PLUGIN_AUTH_LEN_ENC_CLIENT_DATA", + "CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS", + "CLIENT_SESSION_TRACK", + "CLIENT_DEPRECATED_EOF", + ], + doc="The set of capability flags the server returned in the initial HandshakePacket. Each entry corresponds to a bit being set in the flags; key names correspond to the #defines in the MySQL docs.", +) # zgrab2/modules/mysql.go: MySQLScanResults -mysql_scan_response = SubRecord({ - "result": SubRecord({ - "protocol_version": Unsigned8BitInteger(doc="8-bit unsigned integer representing the server's protocol version sent in the initial HandshakePacket from the server.", examples=["10"]), - "server_version": WhitespaceAnalyzedString(doc="The specific server version returned in the initial HandshakePacket. Often in the form x.y.z, but not always.", examples=["5.5.58", "5.6.38", "5.7.20", "8.0.3-rc-log"]), - "connection_id": zgrab2.DebugOnly(Unsigned32BitInteger(doc="The server's internal identifier for this client's connection, sent in the initial HandshakePacket.")), - "auth_plugin_data": zgrab2.DebugOnly(Binary(doc="Optional plugin-specific data, whose meaning depends on the value of auth_plugin_name. Returned in the initial HandshakePacket.")), - "capability_flags": mysql_capability_flags, - "character_set": zgrab2.DebugOnly(Unsigned8BitInteger(doc="The identifier for the character set the server is using. Returned in the initial HandshakePacket.")), - "status_flags": mysql_server_status_flags, - "auth_plugin_name": zgrab2.DebugOnly(WhitespaceAnalyzedString(doc="The name of the authentication plugin, returned in the initial HandshakePacket.")), - "error_code": Signed32BitInteger(doc="Only set if there is an error returned by the server, for example if the scanner is not on the allowed hosts list."), - # error_ids could be an Enum(values=mysql_errors.mysql_error_code_to_id), but that would be brittle to changes. - "error_id": WhitespaceAnalyzedString(doc="The friendly name for the error code as defined at https://dev.mysql.com/doc/refman/8.0/en/error-messages-server.html, or UNKNOWN."), - "error_message": WhitespaceAnalyzedString(doc="Optional string describing the error. Only set if there is an error."), - "raw_packets": ListOf(Binary(), doc="The base64 encoding of all packets sent and received during the scan."), - "tls": zgrab2.tls_log, - }) -}, extends=zgrab2.base_scan_response) +mysql_scan_response = SubRecord( + { + "result": SubRecord( + { + "protocol_version": Unsigned8BitInteger( + doc="8-bit unsigned integer representing the server's protocol version sent in the initial HandshakePacket from the server.", + examples=["10"], + ), + "server_version": WhitespaceAnalyzedString( + doc="The specific server version returned in the initial HandshakePacket. Often in the form x.y.z, but not always.", + examples=["5.5.58", "5.6.38", "5.7.20", "8.0.3-rc-log"], + ), + "connection_id": zgrab2.DebugOnly( + Unsigned32BitInteger( + doc="The server's internal identifier for this client's connection, sent in the initial HandshakePacket." + ) + ), + "auth_plugin_data": zgrab2.DebugOnly( + Binary( + doc="Optional plugin-specific data, whose meaning depends on the value of auth_plugin_name. Returned in the initial HandshakePacket." + ) + ), + "capability_flags": mysql_capability_flags, + "character_set": zgrab2.DebugOnly( + Unsigned8BitInteger( + doc="The identifier for the character set the server is using. Returned in the initial HandshakePacket." + ) + ), + "status_flags": mysql_server_status_flags, + "auth_plugin_name": zgrab2.DebugOnly( + WhitespaceAnalyzedString( + doc="The name of the authentication plugin, returned in the initial HandshakePacket." + ) + ), + "error_code": Signed32BitInteger( + doc="Only set if there is an error returned by the server, for example if the scanner is not on the allowed hosts list." + ), + # error_ids could be an Enum(values=mysql_errors.mysql_error_code_to_id), but that would be brittle to changes. + "error_id": WhitespaceAnalyzedString( + doc="The friendly name for the error code as defined at https://dev.mysql.com/doc/refman/8.0/en/error-messages-server.html, or UNKNOWN." + ), + "error_message": WhitespaceAnalyzedString( + doc="Optional string describing the error. Only set if there is an error." + ), + "raw_packets": ListOf( + Binary(), + doc="The base64 encoding of all packets sent and received during the scan.", + ), + "tls": zgrab2.tls_log, + } + ) + }, + extends=zgrab2.base_scan_response, +) -def generate_mysql_errors(root='.'): + +def generate_mysql_errors(root="."): """ Fetch the error code -> error #define mappings from dev.mysql.com and write the mappings out to the generated source files: @@ -82,15 +125,18 @@ def generate_mysql_errors(root='.'): """ from requests import get import re - li_pat = re.compile(']*>(.*?)', re.DOTALL) + + li_pat = re.compile("]*>(.*?)", re.DOTALL) urls = [ - 'https://dev.mysql.com/doc/refman/5.5/en/error-messages-server.html', - 'https://dev.mysql.com/doc/refman/5.6/en/error-messages-server.html', - 'https://dev.mysql.com/doc/refman/5.7/en/error-messages-server.html', - 'https://dev.mysql.com/doc/refman/8.0/en/error-messages-server.html' + "https://dev.mysql.com/doc/refman/5.5/en/error-messages-server.html", + "https://dev.mysql.com/doc/refman/5.6/en/error-messages-server.html", + "https://dev.mysql.com/doc/refman/5.7/en/error-messages-server.html", + "https://dev.mysql.com/doc/refman/8.0/en/error-messages-server.html", ] code_pat = re.compile('Error: ([0-9]+)') - id_pat = re.compile('SQLSTATE: .*?[\r\n ]*\\(]+>(.*?)') + id_pat = re.compile( + 'SQLSTATE: .*?[\r\n ]*\\(]+>(.*?)' + ) codes = {} for url in urls: html = get(url).content @@ -104,33 +150,36 @@ def generate_mysql_errors(root='.'): codes[code] = id import os.path from datetime import datetime + timestamp = datetime.now().strftime("%Y/%m/%d %H:%M:%S") with open(os.path.join(root, "zgrab2_schemas/zgrab2/mysql_errors.py"), "w") as fp: - fp.write('# Auto-generated at %s using data aggregated from:\n' % timestamp) + fp.write("# Auto-generated at %s using data aggregated from:\n" % timestamp) for url in urls: - fp.write('# %s\n' % url) + fp.write("# %s\n" % url) - fp.write('mysql_error_code_to_id = {\n') + fp.write("mysql_error_code_to_id = {\n") for code in sorted(codes): id = codes[code] fp.write(' 0x%04x: "%s",\n' % (code, id)) - fp.write('}\n') + fp.write("}\n") with open(os.path.join(root, "lib/mysql/errors.go"), "w") as fp: - fp.write('package mysql\n\n') - fp.write('// Auto-generated at %s using data aggregated from:\n' % timestamp) + fp.write("package mysql\n\n") + fp.write("// Auto-generated at %s using data aggregated from:\n" % timestamp) for url in urls: - fp.write('// %s\n' % url) + fp.write("// %s\n" % url) - fp.write('\n') - fp.write('// ErrorCodes maps the 16-bit error codes to the "ErrorID"s defined in the docs.\n') - fp.write('var ErrorCodes = map[uint16]string {\n') + fp.write("\n") + fp.write( + '// ErrorCodes maps the 16-bit error codes to the "ErrorID"s defined in the docs.\n' + ) + fp.write("var ErrorCodes = map[uint16]string {\n") for code in sorted(codes): id = codes[code] fp.write(' 0x%04x: "%s",\n' % (code, id)) - fp.write('}\n') + fp.write("}\n") zschema.registry.register_schema("zgrab2-mysql", mysql_scan_response) -zgrab2.register_scan_response_type('mysql', mysql_scan_response) +zgrab2.register_scan_response_type("mysql", mysql_scan_response) diff --git a/zgrab2_schemas/zgrab2/mysql_errors.py b/zgrab2_schemas/zgrab2/mysql_errors.py index f7713f0e..485fea51 100644 --- a/zgrab2_schemas/zgrab2/mysql_errors.py +++ b/zgrab2_schemas/zgrab2/mysql_errors.py @@ -4,30 +4,30 @@ # https://dev.mysql.com/doc/refman/5.7/en/error-messages-server.html # https://dev.mysql.com/doc/refman/8.0/en/error-messages-server.html mysql_error_code_to_id = { - 0x03e8: "ER_HASHCHK", - 0x03e9: "ER_NISAMCHK", - 0x03ea: "ER_NO", - 0x03eb: "ER_YES", - 0x03ec: "ER_CANT_CREATE_FILE", - 0x03ed: "ER_CANT_CREATE_TABLE", - 0x03ee: "ER_CANT_CREATE_DB", - 0x03ef: "ER_DB_CREATE_EXISTS", - 0x03f0: "ER_DB_DROP_EXISTS", - 0x03f1: "ER_DB_DROP_DELETE", - 0x03f2: "ER_DB_DROP_RMDIR", - 0x03f3: "ER_CANT_DELETE_FILE", - 0x03f4: "ER_CANT_FIND_SYSTEM_REC", - 0x03f5: "ER_CANT_GET_STAT", - 0x03f6: "ER_CANT_GET_WD", - 0x03f7: "ER_CANT_LOCK", - 0x03f8: "ER_CANT_OPEN_FILE", - 0x03f9: "ER_FILE_NOT_FOUND", - 0x03fa: "ER_CANT_READ_DIR", - 0x03fb: "ER_CANT_SET_WD", - 0x03fc: "ER_CHECKREAD", - 0x03fd: "ER_DISK_FULL", - 0x03fe: "ER_DUP_KEY", - 0x03ff: "ER_ERROR_ON_CLOSE", + 0x03E8: "ER_HASHCHK", + 0x03E9: "ER_NISAMCHK", + 0x03EA: "ER_NO", + 0x03EB: "ER_YES", + 0x03EC: "ER_CANT_CREATE_FILE", + 0x03ED: "ER_CANT_CREATE_TABLE", + 0x03EE: "ER_CANT_CREATE_DB", + 0x03EF: "ER_DB_CREATE_EXISTS", + 0x03F0: "ER_DB_DROP_EXISTS", + 0x03F1: "ER_DB_DROP_DELETE", + 0x03F2: "ER_DB_DROP_RMDIR", + 0x03F3: "ER_CANT_DELETE_FILE", + 0x03F4: "ER_CANT_FIND_SYSTEM_REC", + 0x03F5: "ER_CANT_GET_STAT", + 0x03F6: "ER_CANT_GET_WD", + 0x03F7: "ER_CANT_LOCK", + 0x03F8: "ER_CANT_OPEN_FILE", + 0x03F9: "ER_FILE_NOT_FOUND", + 0x03FA: "ER_CANT_READ_DIR", + 0x03FB: "ER_CANT_SET_WD", + 0x03FC: "ER_CHECKREAD", + 0x03FD: "ER_DISK_FULL", + 0x03FE: "ER_DUP_KEY", + 0x03FF: "ER_ERROR_ON_CLOSE", 0x0400: "ER_ERROR_ON_READ", 0x0401: "ER_ERROR_ON_RENAME", 0x0402: "ER_ERROR_ON_WRITE", @@ -38,12 +38,12 @@ 0x0407: "ER_ILLEGAL_HA", 0x0408: "ER_KEY_NOT_FOUND", 0x0409: "ER_NOT_FORM_FILE", - 0x040a: "ER_NOT_KEYFILE", - 0x040b: "ER_OLD_KEYFILE", - 0x040c: "ER_OPEN_AS_READONLY", - 0x040d: "ER_OUTOFMEMORY", - 0x040e: "ER_OUT_OF_SORTMEMORY", - 0x040f: "ER_UNEXPECTED_EOF", + 0x040A: "ER_NOT_KEYFILE", + 0x040B: "ER_OLD_KEYFILE", + 0x040C: "ER_OPEN_AS_READONLY", + 0x040D: "ER_OUTOFMEMORY", + 0x040E: "ER_OUT_OF_SORTMEMORY", + 0x040F: "ER_UNEXPECTED_EOF", 0x0410: "ER_CON_COUNT_ERROR", 0x0411: "ER_OUT_OF_RESOURCES", 0x0412: "ER_BAD_HOST_ERROR", @@ -54,12 +54,12 @@ 0x0417: "ER_UNKNOWN_COM_ERROR", 0x0418: "ER_BAD_NULL_ERROR", 0x0419: "ER_BAD_DB_ERROR", - 0x041a: "ER_TABLE_EXISTS_ERROR", - 0x041b: "ER_BAD_TABLE_ERROR", - 0x041c: "ER_NON_UNIQ_ERROR", - 0x041d: "ER_SERVER_SHUTDOWN", - 0x041e: "ER_BAD_FIELD_ERROR", - 0x041f: "ER_WRONG_FIELD_WITH_GROUP", + 0x041A: "ER_TABLE_EXISTS_ERROR", + 0x041B: "ER_BAD_TABLE_ERROR", + 0x041C: "ER_NON_UNIQ_ERROR", + 0x041D: "ER_SERVER_SHUTDOWN", + 0x041E: "ER_BAD_FIELD_ERROR", + 0x041F: "ER_WRONG_FIELD_WITH_GROUP", 0x0420: "ER_WRONG_GROUP_FIELD", 0x0421: "ER_WRONG_SUM_SELECT", 0x0422: "ER_WRONG_VALUE_COUNT", @@ -70,12 +70,12 @@ 0x0427: "ER_WRONG_FIELD_SPEC", 0x0428: "ER_PARSE_ERROR", 0x0429: "ER_EMPTY_QUERY", - 0x042a: "ER_NONUNIQ_TABLE", - 0x042b: "ER_INVALID_DEFAULT", - 0x042c: "ER_MULTIPLE_PRI_KEY", - 0x042d: "ER_TOO_MANY_KEYS", - 0x042e: "ER_TOO_MANY_KEY_PARTS", - 0x042f: "ER_TOO_LONG_KEY", + 0x042A: "ER_NONUNIQ_TABLE", + 0x042B: "ER_INVALID_DEFAULT", + 0x042C: "ER_MULTIPLE_PRI_KEY", + 0x042D: "ER_TOO_MANY_KEYS", + 0x042E: "ER_TOO_MANY_KEY_PARTS", + 0x042F: "ER_TOO_LONG_KEY", 0x0430: "ER_KEY_COLUMN_DOES_NOT_EXITS", 0x0431: "ER_BLOB_USED_AS_KEY", 0x0432: "ER_TOO_BIG_FIELDLENGTH", @@ -86,12 +86,12 @@ 0x0437: "ER_SHUTDOWN_COMPLETE", 0x0438: "ER_FORCING_CLOSE", 0x0439: "ER_IPSOCK_ERROR", - 0x043a: "ER_NO_SUCH_INDEX", - 0x043b: "ER_WRONG_FIELD_TERMINATORS", - 0x043c: "ER_BLOBS_AND_NO_TERMINATED", - 0x043d: "ER_TEXTFILE_NOT_READABLE", - 0x043e: "ER_FILE_EXISTS_ERROR", - 0x043f: "ER_LOAD_INFO", + 0x043A: "ER_NO_SUCH_INDEX", + 0x043B: "ER_WRONG_FIELD_TERMINATORS", + 0x043C: "ER_BLOBS_AND_NO_TERMINATED", + 0x043D: "ER_TEXTFILE_NOT_READABLE", + 0x043E: "ER_FILE_EXISTS_ERROR", + 0x043F: "ER_LOAD_INFO", 0x0440: "ER_ALTER_INFO", 0x0441: "ER_WRONG_SUB_KEY", 0x0442: "ER_CANT_REMOVE_ALL_FIELDS", @@ -102,12 +102,12 @@ 0x0447: "ER_KILL_DENIED_ERROR", 0x0448: "ER_NO_TABLES_USED", 0x0449: "ER_TOO_BIG_SET", - 0x044a: "ER_NO_UNIQUE_LOGFILE", - 0x044b: "ER_TABLE_NOT_LOCKED_FOR_WRITE", - 0x044c: "ER_TABLE_NOT_LOCKED", - 0x044d: "ER_BLOB_CANT_HAVE_DEFAULT", - 0x044e: "ER_WRONG_DB_NAME", - 0x044f: "ER_WRONG_TABLE_NAME", + 0x044A: "ER_NO_UNIQUE_LOGFILE", + 0x044B: "ER_TABLE_NOT_LOCKED_FOR_WRITE", + 0x044C: "ER_TABLE_NOT_LOCKED", + 0x044D: "ER_BLOB_CANT_HAVE_DEFAULT", + 0x044E: "ER_WRONG_DB_NAME", + 0x044F: "ER_WRONG_TABLE_NAME", 0x0450: "ER_TOO_BIG_SELECT", 0x0451: "ER_UNKNOWN_ERROR", 0x0452: "ER_UNKNOWN_PROCEDURE", @@ -118,12 +118,12 @@ 0x0457: "ER_INVALID_GROUP_FUNC_USE", 0x0458: "ER_UNSUPPORTED_EXTENSION", 0x0459: "ER_TABLE_MUST_HAVE_COLUMNS", - 0x045a: "ER_RECORD_FILE_FULL", - 0x045b: "ER_UNKNOWN_CHARACTER_SET", - 0x045c: "ER_TOO_MANY_TABLES", - 0x045d: "ER_TOO_MANY_FIELDS", - 0x045e: "ER_TOO_BIG_ROWSIZE", - 0x045f: "ER_STACK_OVERRUN", + 0x045A: "ER_RECORD_FILE_FULL", + 0x045B: "ER_UNKNOWN_CHARACTER_SET", + 0x045C: "ER_TOO_MANY_TABLES", + 0x045D: "ER_TOO_MANY_FIELDS", + 0x045E: "ER_TOO_BIG_ROWSIZE", + 0x045F: "ER_STACK_OVERRUN", 0x0460: "ER_WRONG_OUTER_JOIN_UNUSED", 0x0461: "ER_NULL_COLUMN_IN_INDEX", 0x0462: "ER_CANT_FIND_UDF", @@ -134,12 +134,12 @@ 0x0467: "ER_CANT_FIND_DL_ENTRY", 0x0468: "ER_FUNCTION_NOT_DEFINED", 0x0469: "ER_HOST_IS_BLOCKED", - 0x046a: "ER_HOST_NOT_PRIVILEGED", - 0x046b: "ER_PASSWORD_ANONYMOUS_USER", - 0x046c: "ER_PASSWORD_NOT_ALLOWED", - 0x046d: "ER_PASSWORD_NO_MATCH", - 0x046e: "ER_UPDATE_INFO", - 0x046f: "ER_CANT_CREATE_THREAD", + 0x046A: "ER_HOST_NOT_PRIVILEGED", + 0x046B: "ER_PASSWORD_ANONYMOUS_USER", + 0x046C: "ER_PASSWORD_NOT_ALLOWED", + 0x046D: "ER_PASSWORD_NO_MATCH", + 0x046E: "ER_UPDATE_INFO", + 0x046F: "ER_CANT_CREATE_THREAD", 0x0470: "ER_WRONG_VALUE_COUNT_ON_ROW", 0x0471: "ER_CANT_REOPEN_TABLE", 0x0472: "ER_INVALID_USE_OF_NULL", @@ -150,12 +150,12 @@ 0x0477: "ER_COLUMNACCESS_DENIED_ERROR", 0x0478: "ER_ILLEGAL_GRANT_FOR_TABLE", 0x0479: "ER_GRANT_WRONG_HOST_OR_USER", - 0x047a: "ER_NO_SUCH_TABLE", - 0x047b: "ER_NONEXISTING_TABLE_GRANT", - 0x047c: "ER_NOT_ALLOWED_COMMAND", - 0x047d: "ER_SYNTAX_ERROR", - 0x047e: "ER_UNUSED1", - 0x047f: "ER_UNUSED2", + 0x047A: "ER_NO_SUCH_TABLE", + 0x047B: "ER_NONEXISTING_TABLE_GRANT", + 0x047C: "ER_NOT_ALLOWED_COMMAND", + 0x047D: "ER_SYNTAX_ERROR", + 0x047E: "ER_UNUSED1", + 0x047F: "ER_UNUSED2", 0x0480: "ER_ABORTING_CONNECTION", 0x0481: "ER_NET_PACKET_TOO_LARGE", 0x0482: "ER_NET_READ_ERROR_FROM_PIPE", @@ -166,12 +166,12 @@ 0x0487: "ER_NET_READ_INTERRUPTED", 0x0488: "ER_NET_ERROR_ON_WRITE", 0x0489: "ER_NET_WRITE_INTERRUPTED", - 0x048a: "ER_TOO_LONG_STRING", - 0x048b: "ER_TABLE_CANT_HANDLE_BLOB", - 0x048c: "ER_TABLE_CANT_HANDLE_AUTO_INCREMENT", - 0x048d: "ER_UNUSED3", - 0x048e: "ER_WRONG_COLUMN_NAME", - 0x048f: "ER_WRONG_KEY_COLUMN", + 0x048A: "ER_TOO_LONG_STRING", + 0x048B: "ER_TABLE_CANT_HANDLE_BLOB", + 0x048C: "ER_TABLE_CANT_HANDLE_AUTO_INCREMENT", + 0x048D: "ER_UNUSED3", + 0x048E: "ER_WRONG_COLUMN_NAME", + 0x048F: "ER_WRONG_KEY_COLUMN", 0x0490: "ER_WRONG_MRG_TABLE", 0x0491: "ER_DUP_UNIQUE", 0x0492: "ER_BLOB_KEY_WITHOUT_LENGTH", @@ -182,108 +182,108 @@ 0x0497: "ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE", 0x0498: "ER_KEY_DOES_NOT_EXITS", 0x0499: "ER_CHECK_NO_SUCH_TABLE", - 0x049a: "ER_CHECK_NOT_IMPLEMENTED", - 0x049b: "ER_CANT_DO_THIS_DURING_AN_TRANSACTION", - 0x049c: "ER_ERROR_DURING_COMMIT", - 0x049d: "ER_ERROR_DURING_ROLLBACK", - 0x049e: "ER_ERROR_DURING_FLUSH_LOGS", - 0x049f: "ER_ERROR_DURING_CHECKPOINT", - 0x04a0: "ER_NEW_ABORTING_CONNECTION", - 0x04a1: "ER_DUMP_NOT_IMPLEMENTED", - 0x04a2: "ER_FLUSH_MASTER_BINLOG_CLOSED", - 0x04a3: "ER_INDEX_REBUILD", - 0x04a4: "ER_MASTER", - 0x04a5: "ER_MASTER_NET_READ", - 0x04a6: "ER_MASTER_NET_WRITE", - 0x04a7: "ER_FT_MATCHING_KEY_NOT_FOUND", - 0x04a8: "ER_LOCK_OR_ACTIVE_TRANSACTION", - 0x04a9: "ER_UNKNOWN_SYSTEM_VARIABLE", - 0x04aa: "ER_CRASHED_ON_USAGE", - 0x04ab: "ER_CRASHED_ON_REPAIR", - 0x04ac: "ER_WARNING_NOT_COMPLETE_ROLLBACK", - 0x04ad: "ER_TRANS_CACHE_FULL", - 0x04ae: "ER_SLAVE_MUST_STOP", - 0x04af: "ER_SLAVE_NOT_RUNNING", - 0x04b0: "ER_BAD_SLAVE", - 0x04b1: "ER_MASTER_INFO", - 0x04b2: "ER_SLAVE_THREAD", - 0x04b3: "ER_TOO_MANY_USER_CONNECTIONS", - 0x04b4: "ER_SET_CONSTANTS_ONLY", - 0x04b5: "ER_LOCK_WAIT_TIMEOUT", - 0x04b6: "ER_LOCK_TABLE_FULL", - 0x04b7: "ER_READ_ONLY_TRANSACTION", - 0x04b8: "ER_DROP_DB_WITH_READ_LOCK", - 0x04b9: "ER_CREATE_DB_WITH_READ_LOCK", - 0x04ba: "ER_WRONG_ARGUMENTS", - 0x04bb: "ER_NO_PERMISSION_TO_CREATE_USER", - 0x04bc: "ER_UNION_TABLES_IN_DIFFERENT_DIR", - 0x04bd: "ER_LOCK_DEADLOCK", - 0x04be: "ER_TABLE_CANT_HANDLE_FT", - 0x04bf: "ER_CANNOT_ADD_FOREIGN", - 0x04c0: "ER_NO_REFERENCED_ROW", - 0x04c1: "ER_ROW_IS_REFERENCED", - 0x04c2: "ER_CONNECT_TO_MASTER", - 0x04c3: "ER_QUERY_ON_MASTER", - 0x04c4: "ER_ERROR_WHEN_EXECUTING_COMMAND", - 0x04c5: "ER_WRONG_USAGE", - 0x04c6: "ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT", - 0x04c7: "ER_CANT_UPDATE_WITH_READLOCK", - 0x04c8: "ER_MIXING_NOT_ALLOWED", - 0x04c9: "ER_DUP_ARGUMENT", - 0x04ca: "ER_USER_LIMIT_REACHED", - 0x04cb: "ER_SPECIFIC_ACCESS_DENIED_ERROR", - 0x04cc: "ER_LOCAL_VARIABLE", - 0x04cd: "ER_GLOBAL_VARIABLE", - 0x04ce: "ER_NO_DEFAULT", - 0x04cf: "ER_WRONG_VALUE_FOR_VAR", - 0x04d0: "ER_WRONG_TYPE_FOR_VAR", - 0x04d1: "ER_VAR_CANT_BE_READ", - 0x04d2: "ER_CANT_USE_OPTION_HERE", - 0x04d3: "ER_NOT_SUPPORTED_YET", - 0x04d4: "ER_MASTER_FATAL_ERROR_READING_BINLOG", - 0x04d5: "ER_SLAVE_IGNORED_TABLE", - 0x04d6: "ER_INCORRECT_GLOBAL_LOCAL_VAR", - 0x04d7: "ER_WRONG_FK_DEF", - 0x04d8: "ER_KEY_REF_DO_NOT_MATCH_TABLE_REF", - 0x04d9: "ER_OPERAND_COLUMNS", - 0x04da: "ER_SUBQUERY_NO_1_ROW", - 0x04db: "ER_UNKNOWN_STMT_HANDLER", - 0x04dc: "ER_CORRUPT_HELP_DB", - 0x04dd: "ER_CYCLIC_REFERENCE", - 0x04de: "ER_AUTO_CONVERT", - 0x04df: "ER_ILLEGAL_REFERENCE", - 0x04e0: "ER_DERIVED_MUST_HAVE_ALIAS", - 0x04e1: "ER_SELECT_REDUCED", - 0x04e2: "ER_TABLENAME_NOT_ALLOWED_HERE", - 0x04e3: "ER_NOT_SUPPORTED_AUTH_MODE", - 0x04e4: "ER_SPATIAL_CANT_HAVE_NULL", - 0x04e5: "ER_COLLATION_CHARSET_MISMATCH", - 0x04e6: "ER_SLAVE_WAS_RUNNING", - 0x04e7: "ER_SLAVE_WAS_NOT_RUNNING", - 0x04e8: "ER_TOO_BIG_FOR_UNCOMPRESS", - 0x04e9: "ER_ZLIB_Z_MEM_ERROR", - 0x04ea: "ER_ZLIB_Z_BUF_ERROR", - 0x04eb: "ER_ZLIB_Z_DATA_ERROR", - 0x04ec: "ER_CUT_VALUE_GROUP_CONCAT", - 0x04ed: "ER_WARN_TOO_FEW_RECORDS", - 0x04ee: "ER_WARN_TOO_MANY_RECORDS", - 0x04ef: "ER_WARN_NULL_TO_NOTNULL", - 0x04f0: "ER_WARN_DATA_OUT_OF_RANGE", - 0x04f1: "WARN_DATA_TRUNCATED", - 0x04f2: "ER_WARN_USING_OTHER_HANDLER", - 0x04f3: "ER_CANT_AGGREGATE_2COLLATIONS", - 0x04f4: "ER_DROP_USER", - 0x04f5: "ER_REVOKE_GRANTS", - 0x04f6: "ER_CANT_AGGREGATE_3COLLATIONS", - 0x04f7: "ER_CANT_AGGREGATE_NCOLLATIONS", - 0x04f8: "ER_VARIABLE_IS_NOT_STRUCT", - 0x04f9: "ER_UNKNOWN_COLLATION", - 0x04fa: "ER_SLAVE_IGNORED_SSL_PARAMS", - 0x04fb: "ER_SERVER_IS_IN_SECURE_AUTH_MODE", - 0x04fc: "ER_WARN_FIELD_RESOLVED", - 0x04fd: "ER_BAD_SLAVE_UNTIL_COND", - 0x04fe: "ER_MISSING_SKIP_SLAVE", - 0x04ff: "ER_UNTIL_COND_IGNORED", + 0x049A: "ER_CHECK_NOT_IMPLEMENTED", + 0x049B: "ER_CANT_DO_THIS_DURING_AN_TRANSACTION", + 0x049C: "ER_ERROR_DURING_COMMIT", + 0x049D: "ER_ERROR_DURING_ROLLBACK", + 0x049E: "ER_ERROR_DURING_FLUSH_LOGS", + 0x049F: "ER_ERROR_DURING_CHECKPOINT", + 0x04A0: "ER_NEW_ABORTING_CONNECTION", + 0x04A1: "ER_DUMP_NOT_IMPLEMENTED", + 0x04A2: "ER_FLUSH_MASTER_BINLOG_CLOSED", + 0x04A3: "ER_INDEX_REBUILD", + 0x04A4: "ER_MASTER", + 0x04A5: "ER_MASTER_NET_READ", + 0x04A6: "ER_MASTER_NET_WRITE", + 0x04A7: "ER_FT_MATCHING_KEY_NOT_FOUND", + 0x04A8: "ER_LOCK_OR_ACTIVE_TRANSACTION", + 0x04A9: "ER_UNKNOWN_SYSTEM_VARIABLE", + 0x04AA: "ER_CRASHED_ON_USAGE", + 0x04AB: "ER_CRASHED_ON_REPAIR", + 0x04AC: "ER_WARNING_NOT_COMPLETE_ROLLBACK", + 0x04AD: "ER_TRANS_CACHE_FULL", + 0x04AE: "ER_SLAVE_MUST_STOP", + 0x04AF: "ER_SLAVE_NOT_RUNNING", + 0x04B0: "ER_BAD_SLAVE", + 0x04B1: "ER_MASTER_INFO", + 0x04B2: "ER_SLAVE_THREAD", + 0x04B3: "ER_TOO_MANY_USER_CONNECTIONS", + 0x04B4: "ER_SET_CONSTANTS_ONLY", + 0x04B5: "ER_LOCK_WAIT_TIMEOUT", + 0x04B6: "ER_LOCK_TABLE_FULL", + 0x04B7: "ER_READ_ONLY_TRANSACTION", + 0x04B8: "ER_DROP_DB_WITH_READ_LOCK", + 0x04B9: "ER_CREATE_DB_WITH_READ_LOCK", + 0x04BA: "ER_WRONG_ARGUMENTS", + 0x04BB: "ER_NO_PERMISSION_TO_CREATE_USER", + 0x04BC: "ER_UNION_TABLES_IN_DIFFERENT_DIR", + 0x04BD: "ER_LOCK_DEADLOCK", + 0x04BE: "ER_TABLE_CANT_HANDLE_FT", + 0x04BF: "ER_CANNOT_ADD_FOREIGN", + 0x04C0: "ER_NO_REFERENCED_ROW", + 0x04C1: "ER_ROW_IS_REFERENCED", + 0x04C2: "ER_CONNECT_TO_MASTER", + 0x04C3: "ER_QUERY_ON_MASTER", + 0x04C4: "ER_ERROR_WHEN_EXECUTING_COMMAND", + 0x04C5: "ER_WRONG_USAGE", + 0x04C6: "ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT", + 0x04C7: "ER_CANT_UPDATE_WITH_READLOCK", + 0x04C8: "ER_MIXING_NOT_ALLOWED", + 0x04C9: "ER_DUP_ARGUMENT", + 0x04CA: "ER_USER_LIMIT_REACHED", + 0x04CB: "ER_SPECIFIC_ACCESS_DENIED_ERROR", + 0x04CC: "ER_LOCAL_VARIABLE", + 0x04CD: "ER_GLOBAL_VARIABLE", + 0x04CE: "ER_NO_DEFAULT", + 0x04CF: "ER_WRONG_VALUE_FOR_VAR", + 0x04D0: "ER_WRONG_TYPE_FOR_VAR", + 0x04D1: "ER_VAR_CANT_BE_READ", + 0x04D2: "ER_CANT_USE_OPTION_HERE", + 0x04D3: "ER_NOT_SUPPORTED_YET", + 0x04D4: "ER_MASTER_FATAL_ERROR_READING_BINLOG", + 0x04D5: "ER_SLAVE_IGNORED_TABLE", + 0x04D6: "ER_INCORRECT_GLOBAL_LOCAL_VAR", + 0x04D7: "ER_WRONG_FK_DEF", + 0x04D8: "ER_KEY_REF_DO_NOT_MATCH_TABLE_REF", + 0x04D9: "ER_OPERAND_COLUMNS", + 0x04DA: "ER_SUBQUERY_NO_1_ROW", + 0x04DB: "ER_UNKNOWN_STMT_HANDLER", + 0x04DC: "ER_CORRUPT_HELP_DB", + 0x04DD: "ER_CYCLIC_REFERENCE", + 0x04DE: "ER_AUTO_CONVERT", + 0x04DF: "ER_ILLEGAL_REFERENCE", + 0x04E0: "ER_DERIVED_MUST_HAVE_ALIAS", + 0x04E1: "ER_SELECT_REDUCED", + 0x04E2: "ER_TABLENAME_NOT_ALLOWED_HERE", + 0x04E3: "ER_NOT_SUPPORTED_AUTH_MODE", + 0x04E4: "ER_SPATIAL_CANT_HAVE_NULL", + 0x04E5: "ER_COLLATION_CHARSET_MISMATCH", + 0x04E6: "ER_SLAVE_WAS_RUNNING", + 0x04E7: "ER_SLAVE_WAS_NOT_RUNNING", + 0x04E8: "ER_TOO_BIG_FOR_UNCOMPRESS", + 0x04E9: "ER_ZLIB_Z_MEM_ERROR", + 0x04EA: "ER_ZLIB_Z_BUF_ERROR", + 0x04EB: "ER_ZLIB_Z_DATA_ERROR", + 0x04EC: "ER_CUT_VALUE_GROUP_CONCAT", + 0x04ED: "ER_WARN_TOO_FEW_RECORDS", + 0x04EE: "ER_WARN_TOO_MANY_RECORDS", + 0x04EF: "ER_WARN_NULL_TO_NOTNULL", + 0x04F0: "ER_WARN_DATA_OUT_OF_RANGE", + 0x04F1: "WARN_DATA_TRUNCATED", + 0x04F2: "ER_WARN_USING_OTHER_HANDLER", + 0x04F3: "ER_CANT_AGGREGATE_2COLLATIONS", + 0x04F4: "ER_DROP_USER", + 0x04F5: "ER_REVOKE_GRANTS", + 0x04F6: "ER_CANT_AGGREGATE_3COLLATIONS", + 0x04F7: "ER_CANT_AGGREGATE_NCOLLATIONS", + 0x04F8: "ER_VARIABLE_IS_NOT_STRUCT", + 0x04F9: "ER_UNKNOWN_COLLATION", + 0x04FA: "ER_SLAVE_IGNORED_SSL_PARAMS", + 0x04FB: "ER_SERVER_IS_IN_SECURE_AUTH_MODE", + 0x04FC: "ER_WARN_FIELD_RESOLVED", + 0x04FD: "ER_BAD_SLAVE_UNTIL_COND", + 0x04FE: "ER_MISSING_SKIP_SLAVE", + 0x04FF: "ER_UNTIL_COND_IGNORED", 0x0500: "ER_WRONG_NAME_FOR_INDEX", 0x0501: "ER_WRONG_NAME_FOR_CATALOG", 0x0502: "ER_WARN_QC_RESIZE", @@ -294,12 +294,12 @@ 0x0507: "ER_WARN_DEPRECATED_SYNTAX", 0x0508: "ER_NON_UPDATABLE_TABLE", 0x0509: "ER_FEATURE_DISABLED", - 0x050a: "ER_OPTION_PREVENTS_STATEMENT", - 0x050b: "ER_DUPLICATED_VALUE_IN_TYPE", - 0x050c: "ER_TRUNCATED_WRONG_VALUE", - 0x050d: "ER_TOO_MUCH_AUTO_TIMESTAMP_COLS", - 0x050e: "ER_INVALID_ON_UPDATE", - 0x050f: "ER_UNSUPPORTED_PS", + 0x050A: "ER_OPTION_PREVENTS_STATEMENT", + 0x050B: "ER_DUPLICATED_VALUE_IN_TYPE", + 0x050C: "ER_TRUNCATED_WRONG_VALUE", + 0x050D: "ER_TOO_MUCH_AUTO_TIMESTAMP_COLS", + 0x050E: "ER_INVALID_ON_UPDATE", + 0x050F: "ER_UNSUPPORTED_PS", 0x0510: "ER_GET_ERRMSG", 0x0511: "ER_GET_TEMPORARY_ERRMSG", 0x0512: "ER_UNKNOWN_TIME_ZONE", @@ -310,12 +310,12 @@ 0x0517: "ER_SP_NO_RECURSIVE_CREATE", 0x0518: "ER_SP_ALREADY_EXISTS", 0x0519: "ER_SP_DOES_NOT_EXIST", - 0x051a: "ER_SP_DROP_FAILED", - 0x051b: "ER_SP_STORE_FAILED", - 0x051c: "ER_SP_LILABEL_MISMATCH", - 0x051d: "ER_SP_LABEL_REDEFINE", - 0x051e: "ER_SP_LABEL_MISMATCH", - 0x051f: "ER_SP_UNINIT_VAR", + 0x051A: "ER_SP_DROP_FAILED", + 0x051B: "ER_SP_STORE_FAILED", + 0x051C: "ER_SP_LILABEL_MISMATCH", + 0x051D: "ER_SP_LABEL_REDEFINE", + 0x051E: "ER_SP_LABEL_MISMATCH", + 0x051F: "ER_SP_UNINIT_VAR", 0x0520: "ER_SP_BADSELECT", 0x0521: "ER_SP_BADRETURN", 0x0522: "ER_SP_BADSTATEMENT", @@ -326,12 +326,12 @@ 0x0527: "ER_SP_COND_MISMATCH", 0x0528: "ER_SP_NORETURN", 0x0529: "ER_SP_NORETURNEND", - 0x052a: "ER_SP_BAD_CURSOR_QUERY", - 0x052b: "ER_SP_BAD_CURSOR_SELECT", - 0x052c: "ER_SP_CURSOR_MISMATCH", - 0x052d: "ER_SP_CURSOR_ALREADY_OPEN", - 0x052e: "ER_SP_CURSOR_NOT_OPEN", - 0x052f: "ER_SP_UNDECLARED_VAR", + 0x052A: "ER_SP_BAD_CURSOR_QUERY", + 0x052B: "ER_SP_BAD_CURSOR_SELECT", + 0x052C: "ER_SP_CURSOR_MISMATCH", + 0x052D: "ER_SP_CURSOR_ALREADY_OPEN", + 0x052E: "ER_SP_CURSOR_NOT_OPEN", + 0x052F: "ER_SP_UNDECLARED_VAR", 0x0530: "ER_SP_WRONG_NO_OF_FETCH_ARGS", 0x0531: "ER_SP_FETCH_NO_DATA", 0x0532: "ER_SP_DUP_PARAM", @@ -342,12 +342,12 @@ 0x0537: "ER_SP_SUBSELECT_NYI", 0x0538: "ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG", 0x0539: "ER_SP_VARCOND_AFTER_CURSHNDLR", - 0x053a: "ER_SP_CURSOR_AFTER_HANDLER", - 0x053b: "ER_SP_CASE_NOT_FOUND", - 0x053c: "ER_FPARSER_TOO_BIG_FILE", - 0x053d: "ER_FPARSER_BAD_HEADER", - 0x053e: "ER_FPARSER_EOF_IN_COMMENT", - 0x053f: "ER_FPARSER_ERROR_IN_PARAMETER", + 0x053A: "ER_SP_CURSOR_AFTER_HANDLER", + 0x053B: "ER_SP_CASE_NOT_FOUND", + 0x053C: "ER_FPARSER_TOO_BIG_FILE", + 0x053D: "ER_FPARSER_BAD_HEADER", + 0x053E: "ER_FPARSER_EOF_IN_COMMENT", + 0x053F: "ER_FPARSER_ERROR_IN_PARAMETER", 0x0540: "ER_FPARSER_EOF_IN_UNKNOWN_PARAMETER", 0x0541: "ER_VIEW_NO_EXPLAIN", 0x0542: "ER_FRM_UNKNOWN_TYPE", @@ -358,12 +358,12 @@ 0x0547: "ER_VIEW_SELECT_VARIABLE", 0x0548: "ER_VIEW_SELECT_TMPTABLE", 0x0549: "ER_VIEW_WRONG_LIST", - 0x054a: "ER_WARN_VIEW_MERGE", - 0x054b: "ER_WARN_VIEW_WITHOUT_KEY", - 0x054c: "ER_VIEW_INVALID", - 0x054d: "ER_SP_NO_DROP_SP", - 0x054e: "ER_SP_GOTO_IN_HNDLR", - 0x054f: "ER_TRG_ALREADY_EXISTS", + 0x054A: "ER_WARN_VIEW_MERGE", + 0x054B: "ER_WARN_VIEW_WITHOUT_KEY", + 0x054C: "ER_VIEW_INVALID", + 0x054D: "ER_SP_NO_DROP_SP", + 0x054E: "ER_SP_GOTO_IN_HNDLR", + 0x054F: "ER_TRG_ALREADY_EXISTS", 0x0550: "ER_TRG_DOES_NOT_EXIST", 0x0551: "ER_TRG_ON_VIEW_OR_TEMP_TABLE", 0x0552: "ER_TRG_CANT_CHANGE_ROW", @@ -374,12 +374,12 @@ 0x0557: "ER_ILLEGAL_VALUE_FOR_TYPE", 0x0558: "ER_VIEW_NONUPD_CHECK", 0x0559: "ER_VIEW_CHECK_FAILED", - 0x055a: "ER_PROCACCESS_DENIED_ERROR", - 0x055b: "ER_RELAY_LOG_FAIL", - 0x055c: "ER_PASSWD_LENGTH", - 0x055d: "ER_UNKNOWN_TARGET_BINLOG", - 0x055e: "ER_IO_ERR_LOG_INDEX_READ", - 0x055f: "ER_BINLOG_PURGE_PROHIBITED", + 0x055A: "ER_PROCACCESS_DENIED_ERROR", + 0x055B: "ER_RELAY_LOG_FAIL", + 0x055C: "ER_PASSWD_LENGTH", + 0x055D: "ER_UNKNOWN_TARGET_BINLOG", + 0x055E: "ER_IO_ERR_LOG_INDEX_READ", + 0x055F: "ER_BINLOG_PURGE_PROHIBITED", 0x0560: "ER_FSEEK_FAIL", 0x0561: "ER_BINLOG_PURGE_FATAL_ERR", 0x0562: "ER_LOG_IN_USE", @@ -390,12 +390,12 @@ 0x0567: "ER_WSAS_FAILED", 0x0568: "ER_DIFF_GROUPS_PROC", 0x0569: "ER_NO_GROUP_FOR_PROC", - 0x056a: "ER_ORDER_WITH_PROC", - 0x056b: "ER_LOGGING_PROHIBIT_CHANGING_OF", - 0x056c: "ER_NO_FILE_MAPPING", - 0x056d: "ER_WRONG_MAGIC", - 0x056e: "ER_PS_MANY_PARAM", - 0x056f: "ER_KEY_PART_0", + 0x056A: "ER_ORDER_WITH_PROC", + 0x056B: "ER_LOGGING_PROHIBIT_CHANGING_OF", + 0x056C: "ER_NO_FILE_MAPPING", + 0x056D: "ER_WRONG_MAGIC", + 0x056E: "ER_PS_MANY_PARAM", + 0x056F: "ER_KEY_PART_0", 0x0570: "ER_VIEW_CHECKSUM", 0x0571: "ER_VIEW_MULTIUPDATE", 0x0572: "ER_VIEW_NO_INSERT_FIELD_LIST", @@ -406,12 +406,12 @@ 0x0577: "ER_XAER_RMFAIL", 0x0578: "ER_XAER_OUTSIDE", 0x0579: "ER_XAER_RMERR", - 0x057a: "ER_XA_RBROLLBACK", - 0x057b: "ER_NONEXISTING_PROC_GRANT", - 0x057c: "ER_PROC_AUTO_GRANT_FAIL", - 0x057d: "ER_PROC_AUTO_REVOKE_FAIL", - 0x057e: "ER_DATA_TOO_LONG", - 0x057f: "ER_SP_BAD_SQLSTATE", + 0x057A: "ER_XA_RBROLLBACK", + 0x057B: "ER_NONEXISTING_PROC_GRANT", + 0x057C: "ER_PROC_AUTO_GRANT_FAIL", + 0x057D: "ER_PROC_AUTO_REVOKE_FAIL", + 0x057E: "ER_DATA_TOO_LONG", + 0x057F: "ER_SP_BAD_SQLSTATE", 0x0580: "ER_STARTUP", 0x0581: "ER_LOAD_FROM_FIXED_SIZE_ROWS_TO_VAR", 0x0582: "ER_CANT_CREATE_USER_WITH_GRANT", @@ -422,12 +422,12 @@ 0x0587: "ER_SP_NO_RETSET", 0x0588: "ER_CANT_CREATE_GEOMETRY_OBJECT", 0x0589: "ER_FAILED_ROUTINE_BREAK_BINLOG", - 0x058a: "ER_BINLOG_UNSAFE_ROUTINE", - 0x058b: "ER_BINLOG_CREATE_ROUTINE_NEED_SUPER", - 0x058c: "ER_EXEC_STMT_WITH_OPEN_CURSOR", - 0x058d: "ER_STMT_HAS_NO_OPEN_CURSOR", - 0x058e: "ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG", - 0x058f: "ER_NO_DEFAULT_FOR_VIEW_FIELD", + 0x058A: "ER_BINLOG_UNSAFE_ROUTINE", + 0x058B: "ER_BINLOG_CREATE_ROUTINE_NEED_SUPER", + 0x058C: "ER_EXEC_STMT_WITH_OPEN_CURSOR", + 0x058D: "ER_STMT_HAS_NO_OPEN_CURSOR", + 0x058E: "ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG", + 0x058F: "ER_NO_DEFAULT_FOR_VIEW_FIELD", 0x0590: "ER_SP_NO_RECURSION", 0x0591: "ER_TOO_BIG_SCALE", 0x0592: "ER_TOO_BIG_PRECISION", @@ -438,108 +438,108 @@ 0x0597: "ER_FOREIGN_DATA_SOURCE_DOESNT_EXIST", 0x0598: "ER_FOREIGN_DATA_STRING_INVALID_CANT_CREATE", 0x0599: "ER_FOREIGN_DATA_STRING_INVALID", - 0x059a: "ER_CANT_CREATE_FEDERATED_TABLE", - 0x059b: "ER_TRG_IN_WRONG_SCHEMA", - 0x059c: "ER_STACK_OVERRUN_NEED_MORE", - 0x059d: "ER_TOO_LONG_BODY", - 0x059e: "ER_WARN_CANT_DROP_DEFAULT_KEYCACHE", - 0x059f: "ER_TOO_BIG_DISPLAYWIDTH", - 0x05a0: "ER_XAER_DUPID", - 0x05a1: "ER_DATETIME_FUNCTION_OVERFLOW", - 0x05a2: "ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG", - 0x05a3: "ER_VIEW_PREVENT_UPDATE", - 0x05a4: "ER_PS_NO_RECURSION", - 0x05a5: "ER_SP_CANT_SET_AUTOCOMMIT", - 0x05a6: "ER_MALFORMED_DEFINER", - 0x05a7: "ER_VIEW_FRM_NO_USER", - 0x05a8: "ER_VIEW_OTHER_USER", - 0x05a9: "ER_NO_SUCH_USER", - 0x05aa: "ER_FORBID_SCHEMA_CHANGE", - 0x05ab: "ER_ROW_IS_REFERENCED_2", - 0x05ac: "ER_NO_REFERENCED_ROW_2", - 0x05ad: "ER_SP_BAD_VAR_SHADOW", - 0x05ae: "ER_TRG_NO_DEFINER", - 0x05af: "ER_OLD_FILE_FORMAT", - 0x05b0: "ER_SP_RECURSION_LIMIT", - 0x05b1: "ER_SP_PROC_TABLE_CORRUPT", - 0x05b2: "ER_SP_WRONG_NAME", - 0x05b3: "ER_TABLE_NEEDS_UPGRADE", - 0x05b4: "ER_SP_NO_AGGREGATE", - 0x05b5: "ER_MAX_PREPARED_STMT_COUNT_REACHED", - 0x05b6: "ER_VIEW_RECURSIVE", - 0x05b7: "ER_NON_GROUPING_FIELD_USED", - 0x05b8: "ER_TABLE_CANT_HANDLE_SPKEYS", - 0x05b9: "ER_NO_TRIGGERS_ON_SYSTEM_SCHEMA", - 0x05ba: "ER_REMOVED_SPACES", - 0x05bb: "ER_AUTOINC_READ_FAILED", - 0x05bc: "ER_USERNAME", - 0x05bd: "ER_HOSTNAME", - 0x05be: "ER_WRONG_STRING_LENGTH", - 0x05bf: "ER_NON_INSERTABLE_TABLE", - 0x05c0: "ER_ADMIN_WRONG_MRG_TABLE", - 0x05c1: "ER_TOO_HIGH_LEVEL_OF_NESTING_FOR_SELECT", - 0x05c2: "ER_NAME_BECOMES_EMPTY", - 0x05c3: "ER_AMBIGUOUS_FIELD_TERM", - 0x05c4: "ER_FOREIGN_SERVER_EXISTS", - 0x05c5: "ER_FOREIGN_SERVER_DOESNT_EXIST", - 0x05c6: "ER_ILLEGAL_HA_CREATE_OPTION", - 0x05c7: "ER_PARTITION_REQUIRES_VALUES_ERROR", - 0x05c8: "ER_PARTITION_WRONG_VALUES_ERROR", - 0x05c9: "ER_PARTITION_MAXVALUE_ERROR", - 0x05ca: "ER_PARTITION_SUBPARTITION_ERROR", - 0x05cb: "ER_PARTITION_SUBPART_MIX_ERROR", - 0x05cc: "ER_PARTITION_WRONG_NO_PART_ERROR", - 0x05cd: "ER_PARTITION_WRONG_NO_SUBPART_ERROR", - 0x05ce: "ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR", - 0x05cf: "ER_NO_CONST_EXPR_IN_RANGE_OR_LIST_ERROR", - 0x05d0: "ER_FIELD_NOT_FOUND_PART_ERROR", - 0x05d1: "ER_LIST_OF_FIELDS_ONLY_IN_HASH_ERROR", - 0x05d2: "ER_INCONSISTENT_PARTITION_INFO_ERROR", - 0x05d3: "ER_PARTITION_FUNC_NOT_ALLOWED_ERROR", - 0x05d4: "ER_PARTITIONS_MUST_BE_DEFINED_ERROR", - 0x05d5: "ER_RANGE_NOT_INCREASING_ERROR", - 0x05d6: "ER_INCONSISTENT_TYPE_OF_FUNCTIONS_ERROR", - 0x05d7: "ER_MULTIPLE_DEF_CONST_IN_LIST_PART_ERROR", - 0x05d8: "ER_PARTITION_ENTRY_ERROR", - 0x05d9: "ER_MIX_HANDLER_ERROR", - 0x05da: "ER_PARTITION_NOT_DEFINED_ERROR", - 0x05db: "ER_TOO_MANY_PARTITIONS_ERROR", - 0x05dc: "ER_SUBPARTITION_ERROR", - 0x05dd: "ER_CANT_CREATE_HANDLER_FILE", - 0x05de: "ER_BLOB_FIELD_IN_PART_FUNC_ERROR", - 0x05df: "ER_UNIQUE_KEY_NEED_ALL_FIELDS_IN_PF", - 0x05e0: "ER_NO_PARTS_ERROR", - 0x05e1: "ER_PARTITION_MGMT_ON_NONPARTITIONED", - 0x05e2: "ER_FOREIGN_KEY_ON_PARTITIONED", - 0x05e3: "ER_DROP_PARTITION_NON_EXISTENT", - 0x05e4: "ER_DROP_LAST_PARTITION", - 0x05e5: "ER_COALESCE_ONLY_ON_HASH_PARTITION", - 0x05e6: "ER_REORG_HASH_ONLY_ON_SAME_NO", - 0x05e7: "ER_REORG_NO_PARAM_ERROR", - 0x05e8: "ER_ONLY_ON_RANGE_LIST_PARTITION", - 0x05e9: "ER_ADD_PARTITION_SUBPART_ERROR", - 0x05ea: "ER_ADD_PARTITION_NO_NEW_PARTITION", - 0x05eb: "ER_COALESCE_PARTITION_NO_PARTITION", - 0x05ec: "ER_REORG_PARTITION_NOT_EXIST", - 0x05ed: "ER_SAME_NAME_PARTITION", - 0x05ee: "ER_NO_BINLOG_ERROR", - 0x05ef: "ER_CONSECUTIVE_REORG_PARTITIONS", - 0x05f0: "ER_REORG_OUTSIDE_RANGE", - 0x05f1: "ER_PARTITION_FUNCTION_FAILURE", - 0x05f2: "ER_PART_STATE_ERROR", - 0x05f3: "ER_LIMITED_PART_RANGE", - 0x05f4: "ER_PLUGIN_IS_NOT_LOADED", - 0x05f5: "ER_WRONG_VALUE", - 0x05f6: "ER_NO_PARTITION_FOR_GIVEN_VALUE", - 0x05f7: "ER_FILEGROUP_OPTION_ONLY_ONCE", - 0x05f8: "ER_CREATE_FILEGROUP_FAILED", - 0x05f9: "ER_DROP_FILEGROUP_FAILED", - 0x05fa: "ER_TABLESPACE_AUTO_EXTEND_ERROR", - 0x05fb: "ER_WRONG_SIZE_NUMBER", - 0x05fc: "ER_SIZE_OVERFLOW_ERROR", - 0x05fd: "ER_ALTER_FILEGROUP_FAILED", - 0x05fe: "ER_BINLOG_ROW_LOGGING_FAILED", - 0x05ff: "ER_BINLOG_ROW_WRONG_TABLE_DEF", + 0x059A: "ER_CANT_CREATE_FEDERATED_TABLE", + 0x059B: "ER_TRG_IN_WRONG_SCHEMA", + 0x059C: "ER_STACK_OVERRUN_NEED_MORE", + 0x059D: "ER_TOO_LONG_BODY", + 0x059E: "ER_WARN_CANT_DROP_DEFAULT_KEYCACHE", + 0x059F: "ER_TOO_BIG_DISPLAYWIDTH", + 0x05A0: "ER_XAER_DUPID", + 0x05A1: "ER_DATETIME_FUNCTION_OVERFLOW", + 0x05A2: "ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG", + 0x05A3: "ER_VIEW_PREVENT_UPDATE", + 0x05A4: "ER_PS_NO_RECURSION", + 0x05A5: "ER_SP_CANT_SET_AUTOCOMMIT", + 0x05A6: "ER_MALFORMED_DEFINER", + 0x05A7: "ER_VIEW_FRM_NO_USER", + 0x05A8: "ER_VIEW_OTHER_USER", + 0x05A9: "ER_NO_SUCH_USER", + 0x05AA: "ER_FORBID_SCHEMA_CHANGE", + 0x05AB: "ER_ROW_IS_REFERENCED_2", + 0x05AC: "ER_NO_REFERENCED_ROW_2", + 0x05AD: "ER_SP_BAD_VAR_SHADOW", + 0x05AE: "ER_TRG_NO_DEFINER", + 0x05AF: "ER_OLD_FILE_FORMAT", + 0x05B0: "ER_SP_RECURSION_LIMIT", + 0x05B1: "ER_SP_PROC_TABLE_CORRUPT", + 0x05B2: "ER_SP_WRONG_NAME", + 0x05B3: "ER_TABLE_NEEDS_UPGRADE", + 0x05B4: "ER_SP_NO_AGGREGATE", + 0x05B5: "ER_MAX_PREPARED_STMT_COUNT_REACHED", + 0x05B6: "ER_VIEW_RECURSIVE", + 0x05B7: "ER_NON_GROUPING_FIELD_USED", + 0x05B8: "ER_TABLE_CANT_HANDLE_SPKEYS", + 0x05B9: "ER_NO_TRIGGERS_ON_SYSTEM_SCHEMA", + 0x05BA: "ER_REMOVED_SPACES", + 0x05BB: "ER_AUTOINC_READ_FAILED", + 0x05BC: "ER_USERNAME", + 0x05BD: "ER_HOSTNAME", + 0x05BE: "ER_WRONG_STRING_LENGTH", + 0x05BF: "ER_NON_INSERTABLE_TABLE", + 0x05C0: "ER_ADMIN_WRONG_MRG_TABLE", + 0x05C1: "ER_TOO_HIGH_LEVEL_OF_NESTING_FOR_SELECT", + 0x05C2: "ER_NAME_BECOMES_EMPTY", + 0x05C3: "ER_AMBIGUOUS_FIELD_TERM", + 0x05C4: "ER_FOREIGN_SERVER_EXISTS", + 0x05C5: "ER_FOREIGN_SERVER_DOESNT_EXIST", + 0x05C6: "ER_ILLEGAL_HA_CREATE_OPTION", + 0x05C7: "ER_PARTITION_REQUIRES_VALUES_ERROR", + 0x05C8: "ER_PARTITION_WRONG_VALUES_ERROR", + 0x05C9: "ER_PARTITION_MAXVALUE_ERROR", + 0x05CA: "ER_PARTITION_SUBPARTITION_ERROR", + 0x05CB: "ER_PARTITION_SUBPART_MIX_ERROR", + 0x05CC: "ER_PARTITION_WRONG_NO_PART_ERROR", + 0x05CD: "ER_PARTITION_WRONG_NO_SUBPART_ERROR", + 0x05CE: "ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR", + 0x05CF: "ER_NO_CONST_EXPR_IN_RANGE_OR_LIST_ERROR", + 0x05D0: "ER_FIELD_NOT_FOUND_PART_ERROR", + 0x05D1: "ER_LIST_OF_FIELDS_ONLY_IN_HASH_ERROR", + 0x05D2: "ER_INCONSISTENT_PARTITION_INFO_ERROR", + 0x05D3: "ER_PARTITION_FUNC_NOT_ALLOWED_ERROR", + 0x05D4: "ER_PARTITIONS_MUST_BE_DEFINED_ERROR", + 0x05D5: "ER_RANGE_NOT_INCREASING_ERROR", + 0x05D6: "ER_INCONSISTENT_TYPE_OF_FUNCTIONS_ERROR", + 0x05D7: "ER_MULTIPLE_DEF_CONST_IN_LIST_PART_ERROR", + 0x05D8: "ER_PARTITION_ENTRY_ERROR", + 0x05D9: "ER_MIX_HANDLER_ERROR", + 0x05DA: "ER_PARTITION_NOT_DEFINED_ERROR", + 0x05DB: "ER_TOO_MANY_PARTITIONS_ERROR", + 0x05DC: "ER_SUBPARTITION_ERROR", + 0x05DD: "ER_CANT_CREATE_HANDLER_FILE", + 0x05DE: "ER_BLOB_FIELD_IN_PART_FUNC_ERROR", + 0x05DF: "ER_UNIQUE_KEY_NEED_ALL_FIELDS_IN_PF", + 0x05E0: "ER_NO_PARTS_ERROR", + 0x05E1: "ER_PARTITION_MGMT_ON_NONPARTITIONED", + 0x05E2: "ER_FOREIGN_KEY_ON_PARTITIONED", + 0x05E3: "ER_DROP_PARTITION_NON_EXISTENT", + 0x05E4: "ER_DROP_LAST_PARTITION", + 0x05E5: "ER_COALESCE_ONLY_ON_HASH_PARTITION", + 0x05E6: "ER_REORG_HASH_ONLY_ON_SAME_NO", + 0x05E7: "ER_REORG_NO_PARAM_ERROR", + 0x05E8: "ER_ONLY_ON_RANGE_LIST_PARTITION", + 0x05E9: "ER_ADD_PARTITION_SUBPART_ERROR", + 0x05EA: "ER_ADD_PARTITION_NO_NEW_PARTITION", + 0x05EB: "ER_COALESCE_PARTITION_NO_PARTITION", + 0x05EC: "ER_REORG_PARTITION_NOT_EXIST", + 0x05ED: "ER_SAME_NAME_PARTITION", + 0x05EE: "ER_NO_BINLOG_ERROR", + 0x05EF: "ER_CONSECUTIVE_REORG_PARTITIONS", + 0x05F0: "ER_REORG_OUTSIDE_RANGE", + 0x05F1: "ER_PARTITION_FUNCTION_FAILURE", + 0x05F2: "ER_PART_STATE_ERROR", + 0x05F3: "ER_LIMITED_PART_RANGE", + 0x05F4: "ER_PLUGIN_IS_NOT_LOADED", + 0x05F5: "ER_WRONG_VALUE", + 0x05F6: "ER_NO_PARTITION_FOR_GIVEN_VALUE", + 0x05F7: "ER_FILEGROUP_OPTION_ONLY_ONCE", + 0x05F8: "ER_CREATE_FILEGROUP_FAILED", + 0x05F9: "ER_DROP_FILEGROUP_FAILED", + 0x05FA: "ER_TABLESPACE_AUTO_EXTEND_ERROR", + 0x05FB: "ER_WRONG_SIZE_NUMBER", + 0x05FC: "ER_SIZE_OVERFLOW_ERROR", + 0x05FD: "ER_ALTER_FILEGROUP_FAILED", + 0x05FE: "ER_BINLOG_ROW_LOGGING_FAILED", + 0x05FF: "ER_BINLOG_ROW_WRONG_TABLE_DEF", 0x0600: "ER_BINLOG_ROW_RBR_TO_SBR", 0x0601: "ER_EVENT_ALREADY_EXISTS", 0x0602: "ER_EVENT_STORE_FAILED", @@ -550,12 +550,12 @@ 0x0607: "ER_EVENT_ENDS_BEFORE_STARTS", 0x0608: "ER_EVENT_EXEC_TIME_IN_THE_PAST", 0x0609: "ER_EVENT_OPEN_TABLE_FAILED", - 0x060a: "ER_EVENT_NEITHER_M_EXPR_NOR_M_AT", - 0x060b: "ER_OBSOLETE_COL_COUNT_DOESNT_MATCH_CORRUPTED", - 0x060c: "ER_OBSOLETE_CANNOT_LOAD_FROM_TABLE", - 0x060d: "ER_EVENT_CANNOT_DELETE", - 0x060e: "ER_EVENT_COMPILE_ERROR", - 0x060f: "ER_EVENT_SAME_NAME", + 0x060A: "ER_EVENT_NEITHER_M_EXPR_NOR_M_AT", + 0x060B: "ER_OBSOLETE_COL_COUNT_DOESNT_MATCH_CORRUPTED", + 0x060C: "ER_OBSOLETE_CANNOT_LOAD_FROM_TABLE", + 0x060D: "ER_EVENT_CANNOT_DELETE", + 0x060E: "ER_EVENT_COMPILE_ERROR", + 0x060F: "ER_EVENT_SAME_NAME", 0x0610: "ER_EVENT_DATA_TOO_LONG", 0x0611: "ER_DROP_INDEX_FK", 0x0612: "ER_WARN_DEPRECATED_SYNTAX_WITH_VER", @@ -566,12 +566,12 @@ 0x0617: "ER_TEMP_TABLE_PREVENTS_SWITCH_OUT_OF_RBR", 0x0618: "ER_STORED_FUNCTION_PREVENTS_SWITCH_BINLOG_FORMAT", 0x0619: "ER_NDB_CANT_SWITCH_BINLOG_FORMAT", - 0x061a: "ER_PARTITION_NO_TEMPORARY", - 0x061b: "ER_PARTITION_CONST_DOMAIN_ERROR", - 0x061c: "ER_PARTITION_FUNCTION_IS_NOT_ALLOWED", - 0x061d: "ER_DDL_LOG_ERROR", - 0x061e: "ER_NULL_IN_VALUES_LESS_THAN", - 0x061f: "ER_WRONG_PARTITION_NAME", + 0x061A: "ER_PARTITION_NO_TEMPORARY", + 0x061B: "ER_PARTITION_CONST_DOMAIN_ERROR", + 0x061C: "ER_PARTITION_FUNCTION_IS_NOT_ALLOWED", + 0x061D: "ER_DDL_LOG_ERROR", + 0x061E: "ER_NULL_IN_VALUES_LESS_THAN", + 0x061F: "ER_WRONG_PARTITION_NAME", 0x0620: "ER_CANT_CHANGE_TX_CHARACTERISTICS", 0x0621: "ER_DUP_ENTRY_AUTOINCREMENT_CASE", 0x0622: "ER_EVENT_MODIFY_QUEUE_ERROR", @@ -582,12 +582,12 @@ 0x0627: "ER_BASE64_DECODE_ERROR", 0x0628: "ER_EVENT_RECURSION_FORBIDDEN", 0x0629: "ER_EVENTS_DB_ERROR", - 0x062a: "ER_ONLY_INTEGERS_ALLOWED", - 0x062b: "ER_UNSUPORTED_LOG_ENGINE", - 0x062c: "ER_BAD_LOG_STATEMENT", - 0x062d: "ER_CANT_RENAME_LOG_TABLE", - 0x062e: "ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT", - 0x062f: "ER_WRONG_PARAMETERS_TO_NATIVE_FCT", + 0x062A: "ER_ONLY_INTEGERS_ALLOWED", + 0x062B: "ER_UNSUPORTED_LOG_ENGINE", + 0x062C: "ER_BAD_LOG_STATEMENT", + 0x062D: "ER_CANT_RENAME_LOG_TABLE", + 0x062E: "ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT", + 0x062F: "ER_WRONG_PARAMETERS_TO_NATIVE_FCT", 0x0630: "ER_WRONG_PARAMETERS_TO_STORED_FCT", 0x0631: "ER_NATIVE_FCT_NAME_COLLISION", 0x0632: "ER_DUP_ENTRY_WITH_KEY_NAME", @@ -598,12 +598,12 @@ 0x0637: "ER_NO_PARTITION_FOR_GIVEN_VALUE_SILENT", 0x0638: "ER_BINLOG_UNSAFE_STATEMENT", 0x0639: "ER_BINLOG_FATAL_ERROR", - 0x063a: "ER_SLAVE_RELAY_LOG_READ_FAILURE", - 0x063b: "ER_SLAVE_RELAY_LOG_WRITE_FAILURE", - 0x063c: "ER_SLAVE_CREATE_EVENT_FAILURE", - 0x063d: "ER_SLAVE_MASTER_COM_FAILURE", - 0x063e: "ER_BINLOG_LOGGING_IMPOSSIBLE", - 0x063f: "ER_VIEW_NO_CREATION_CTX", + 0x063A: "ER_SLAVE_RELAY_LOG_READ_FAILURE", + 0x063B: "ER_SLAVE_RELAY_LOG_WRITE_FAILURE", + 0x063C: "ER_SLAVE_CREATE_EVENT_FAILURE", + 0x063D: "ER_SLAVE_MASTER_COM_FAILURE", + 0x063E: "ER_BINLOG_LOGGING_IMPOSSIBLE", + 0x063F: "ER_VIEW_NO_CREATION_CTX", 0x0640: "ER_VIEW_INVALID_CREATION_CTX", 0x0641: "ER_SR_INVALID_CREATION_CTX", 0x0642: "ER_TRG_CORRUPTED_FILE", @@ -614,12 +614,12 @@ 0x0647: "ER_CANT_CREATE_SROUTINE", 0x0648: "ER_NEVER_USED", 0x0649: "ER_NO_FORMAT_DESCRIPTION_EVENT_BEFORE_BINLOG_STATEMENT", - 0x064a: "ER_SLAVE_CORRUPT_EVENT", - 0x064b: "ER_LOAD_DATA_INVALID_COLUMN_UNUSED", - 0x064c: "ER_LOG_PURGE_NO_FILE", - 0x064d: "ER_XA_RBTIMEOUT", - 0x064e: "ER_XA_RBDEADLOCK", - 0x064f: "ER_NEED_REPREPARE", + 0x064A: "ER_SLAVE_CORRUPT_EVENT", + 0x064B: "ER_LOAD_DATA_INVALID_COLUMN_UNUSED", + 0x064C: "ER_LOG_PURGE_NO_FILE", + 0x064D: "ER_XA_RBTIMEOUT", + 0x064E: "ER_XA_RBDEADLOCK", + 0x064F: "ER_NEED_REPREPARE", 0x0650: "ER_DELAYED_NOT_SUPPORTED", 0x0651: "WARN_NO_MASTER_INFO", 0x0652: "WARN_OPTION_IGNORED", @@ -630,12 +630,12 @@ 0x0657: "ER_SLAVE_HEARTBEAT_FAILURE", 0x0658: "ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE", 0x0659: "ER_NDB_REPLICATION_SCHEMA_ERROR", - 0x065a: "ER_CONFLICT_FN_PARSE_ERROR", - 0x065b: "ER_EXCEPTIONS_WRITE_ERROR", - 0x065c: "ER_TOO_LONG_TABLE_COMMENT", - 0x065d: "ER_TOO_LONG_FIELD_COMMENT", - 0x065e: "ER_FUNC_INEXISTENT_NAME_COLLISION", - 0x065f: "ER_DATABASE_NAME", + 0x065A: "ER_CONFLICT_FN_PARSE_ERROR", + 0x065B: "ER_EXCEPTIONS_WRITE_ERROR", + 0x065C: "ER_TOO_LONG_TABLE_COMMENT", + 0x065D: "ER_TOO_LONG_FIELD_COMMENT", + 0x065E: "ER_FUNC_INEXISTENT_NAME_COLLISION", + 0x065F: "ER_DATABASE_NAME", 0x0660: "ER_TABLE_NAME", 0x0661: "ER_PARTITION_NAME", 0x0662: "ER_SUBPARTITION_NAME", @@ -646,12 +646,12 @@ 0x0667: "ER_DEBUG_SYNC_TIMEOUT", 0x0668: "ER_DEBUG_SYNC_HIT_LIMIT", 0x0669: "ER_DUP_SIGNAL_SET", - 0x066a: "ER_SIGNAL_WARN", - 0x066b: "ER_SIGNAL_NOT_FOUND", - 0x066c: "ER_SIGNAL_EXCEPTION", - 0x066d: "ER_RESIGNAL_WITHOUT_ACTIVE_HANDLER", - 0x066e: "ER_SIGNAL_BAD_CONDITION_TYPE", - 0x066f: "WARN_COND_ITEM_TRUNCATED", + 0x066A: "ER_SIGNAL_WARN", + 0x066B: "ER_SIGNAL_NOT_FOUND", + 0x066C: "ER_SIGNAL_EXCEPTION", + 0x066D: "ER_RESIGNAL_WITHOUT_ACTIVE_HANDLER", + 0x066E: "ER_SIGNAL_BAD_CONDITION_TYPE", + 0x066F: "WARN_COND_ITEM_TRUNCATED", 0x0670: "ER_COND_ITEM_TOO_LONG", 0x0671: "ER_UNKNOWN_LOCALE", 0x0672: "ER_SLAVE_IGNORE_SERVER_IDS", @@ -662,12 +662,12 @@ 0x0677: "ER_TOO_MANY_PARTITION_FUNC_FIELDS_ERROR", 0x0678: "ER_MAXVALUE_IN_VALUES_IN", 0x0679: "ER_TOO_MANY_VALUES_ERROR", - 0x067a: "ER_ROW_SINGLE_PARTITION_FIELD_ERROR", - 0x067b: "ER_FIELD_TYPE_NOT_ALLOWED_AS_PARTITION_FIELD", - 0x067c: "ER_PARTITION_FIELDS_TOO_LONG", - 0x067d: "ER_BINLOG_ROW_ENGINE_AND_STMT_ENGINE", - 0x067e: "ER_BINLOG_ROW_MODE_AND_STMT_ENGINE", - 0x067f: "ER_BINLOG_UNSAFE_AND_STMT_ENGINE", + 0x067A: "ER_ROW_SINGLE_PARTITION_FIELD_ERROR", + 0x067B: "ER_FIELD_TYPE_NOT_ALLOWED_AS_PARTITION_FIELD", + 0x067C: "ER_PARTITION_FIELDS_TOO_LONG", + 0x067D: "ER_BINLOG_ROW_ENGINE_AND_STMT_ENGINE", + 0x067E: "ER_BINLOG_ROW_MODE_AND_STMT_ENGINE", + 0x067F: "ER_BINLOG_UNSAFE_AND_STMT_ENGINE", 0x0680: "ER_BINLOG_ROW_INJECTION_AND_STMT_ENGINE", 0x0681: "ER_BINLOG_STMT_MODE_AND_ROW_ENGINE", 0x0682: "ER_BINLOG_ROW_INJECTION_AND_STMT_MODE", @@ -678,12 +678,12 @@ 0x0687: "ER_BINLOG_UNSAFE_AUTOINC_COLUMNS", 0x0688: "ER_BINLOG_UNSAFE_UDF", 0x0689: "ER_BINLOG_UNSAFE_SYSTEM_VARIABLE", - 0x068a: "ER_BINLOG_UNSAFE_SYSTEM_FUNCTION", - 0x068b: "ER_BINLOG_UNSAFE_NONTRANS_AFTER_TRANS", - 0x068c: "ER_MESSAGE_AND_STATEMENT", - 0x068d: "ER_SLAVE_CONVERSION_FAILED", - 0x068e: "ER_SLAVE_CANT_CREATE_CONVERSION", - 0x068f: "ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_FORMAT", + 0x068A: "ER_BINLOG_UNSAFE_SYSTEM_FUNCTION", + 0x068B: "ER_BINLOG_UNSAFE_NONTRANS_AFTER_TRANS", + 0x068C: "ER_MESSAGE_AND_STATEMENT", + 0x068D: "ER_SLAVE_CONVERSION_FAILED", + 0x068E: "ER_SLAVE_CANT_CREATE_CONVERSION", + 0x068F: "ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_FORMAT", 0x0690: "ER_PATH_LENGTH", 0x0691: "ER_WARN_DEPRECATED_SYNTAX_NO_REPLACEMENT", 0x0692: "ER_WRONG_NATIVE_TABLE_STRUCTURE", @@ -694,108 +694,108 @@ 0x0697: "ER_SPATIAL_MUST_HAVE_GEOM_COL", 0x0698: "ER_TOO_LONG_INDEX_COMMENT", 0x0699: "ER_LOCK_ABORTED", - 0x069a: "ER_DATA_OUT_OF_RANGE", - 0x069b: "ER_WRONG_SPVAR_TYPE_IN_LIMIT", - 0x069c: "ER_BINLOG_UNSAFE_MULTIPLE_ENGINES_AND_SELF_LOGGING_ENGINE", - 0x069d: "ER_BINLOG_UNSAFE_MIXED_STATEMENT", - 0x069e: "ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_SQL_LOG_BIN", - 0x069f: "ER_STORED_FUNCTION_PREVENTS_SWITCH_SQL_LOG_BIN", - 0x06a0: "ER_FAILED_READ_FROM_PAR_FILE", - 0x06a1: "ER_VALUES_IS_NOT_INT_TYPE_ERROR", - 0x06a2: "ER_ACCESS_DENIED_NO_PASSWORD_ERROR", - 0x06a3: "ER_SET_PASSWORD_AUTH_PLUGIN", - 0x06a4: "ER_GRANT_PLUGIN_USER_EXISTS", - 0x06a5: "ER_TRUNCATE_ILLEGAL_FK", - 0x06a6: "ER_PLUGIN_IS_PERMANENT", - 0x06a7: "ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MIN", - 0x06a8: "ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MAX", - 0x06a9: "ER_STMT_CACHE_FULL", - 0x06aa: "ER_MULTI_UPDATE_KEY_CONFLICT", - 0x06ab: "ER_TABLE_NEEDS_REBUILD", - 0x06ac: "WARN_OPTION_BELOW_LIMIT", - 0x06ad: "ER_INDEX_COLUMN_TOO_LONG", - 0x06ae: "ER_ERROR_IN_TRIGGER_BODY", - 0x06af: "ER_ERROR_IN_UNKNOWN_TRIGGER_BODY", - 0x06b0: "ER_INDEX_CORRUPT", - 0x06b1: "ER_UNDO_RECORD_TOO_BIG", - 0x06b2: "ER_BINLOG_UNSAFE_INSERT_IGNORE_SELECT", - 0x06b3: "ER_BINLOG_UNSAFE_INSERT_SELECT_UPDATE", - 0x06b4: "ER_BINLOG_UNSAFE_REPLACE_SELECT", - 0x06b5: "ER_BINLOG_UNSAFE_CREATE_IGNORE_SELECT", - 0x06b6: "ER_BINLOG_UNSAFE_CREATE_REPLACE_SELECT", - 0x06b7: "ER_BINLOG_UNSAFE_UPDATE_IGNORE", - 0x06b8: "ER_PLUGIN_NO_UNINSTALL", - 0x06b9: "ER_PLUGIN_NO_INSTALL", - 0x06ba: "ER_BINLOG_UNSAFE_WRITE_AUTOINC_SELECT", - 0x06bb: "ER_BINLOG_UNSAFE_CREATE_SELECT_AUTOINC", - 0x06bc: "ER_BINLOG_UNSAFE_INSERT_TWO_KEYS", - 0x06bd: "ER_TABLE_IN_FK_CHECK", - 0x06be: "ER_UNSUPPORTED_ENGINE", - 0x06bf: "ER_BINLOG_UNSAFE_AUTOINC_NOT_FIRST", - 0x06c0: "ER_CANNOT_LOAD_FROM_TABLE_V2", - 0x06c1: "ER_MASTER_DELAY_VALUE_OUT_OF_RANGE", - 0x06c2: "ER_ONLY_FD_AND_RBR_EVENTS_ALLOWED_IN_BINLOG_STATEMENT", - 0x06c3: "ER_PARTITION_EXCHANGE_DIFFERENT_OPTION", - 0x06c4: "ER_PARTITION_EXCHANGE_PART_TABLE", - 0x06c5: "ER_PARTITION_EXCHANGE_TEMP_TABLE", - 0x06c6: "ER_PARTITION_INSTEAD_OF_SUBPARTITION", - 0x06c7: "ER_UNKNOWN_PARTITION", - 0x06c8: "ER_TABLES_DIFFERENT_METADATA", - 0x06c9: "ER_ROW_DOES_NOT_MATCH_PARTITION", - 0x06ca: "ER_BINLOG_CACHE_SIZE_GREATER_THAN_MAX", - 0x06cb: "ER_WARN_INDEX_NOT_APPLICABLE", - 0x06cc: "ER_PARTITION_EXCHANGE_FOREIGN_KEY", - 0x06cd: "ER_NO_SUCH_KEY_VALUE", - 0x06ce: "ER_RPL_INFO_DATA_TOO_LONG", - 0x06cf: "ER_NETWORK_READ_EVENT_CHECKSUM_FAILURE", - 0x06d0: "ER_BINLOG_READ_EVENT_CHECKSUM_FAILURE", - 0x06d1: "ER_BINLOG_STMT_CACHE_SIZE_GREATER_THAN_MAX", - 0x06d2: "ER_CANT_UPDATE_TABLE_IN_CREATE_TABLE_SELECT", - 0x06d3: "ER_PARTITION_CLAUSE_ON_NONPARTITIONED", - 0x06d4: "ER_ROW_DOES_NOT_MATCH_GIVEN_PARTITION_SET", - 0x06d5: "ER_NO_SUCH_PARTITION__UNUSED", - 0x06d6: "ER_CHANGE_RPL_INFO_REPOSITORY_FAILURE", - 0x06d7: "ER_WARNING_NOT_COMPLETE_ROLLBACK_WITH_CREATED_TEMP_TABLE", - 0x06d8: "ER_WARNING_NOT_COMPLETE_ROLLBACK_WITH_DROPPED_TEMP_TABLE", - 0x06d9: "ER_MTS_FEATURE_IS_NOT_SUPPORTED", - 0x06da: "ER_MTS_UPDATED_DBS_GREATER_MAX", - 0x06db: "ER_MTS_CANT_PARALLEL", - 0x06dc: "ER_MTS_INCONSISTENT_DATA", - 0x06dd: "ER_FULLTEXT_NOT_SUPPORTED_WITH_PARTITIONING", - 0x06de: "ER_DA_INVALID_CONDITION_NUMBER", - 0x06df: "ER_INSECURE_PLAIN_TEXT", - 0x06e0: "ER_INSECURE_CHANGE_MASTER", - 0x06e1: "ER_FOREIGN_DUPLICATE_KEY_WITH_CHILD_INFO", - 0x06e2: "ER_FOREIGN_DUPLICATE_KEY_WITHOUT_CHILD_INFO", - 0x06e3: "ER_SQLTHREAD_WITH_SECURE_SLAVE", - 0x06e4: "ER_TABLE_HAS_NO_FT", - 0x06e5: "ER_VARIABLE_NOT_SETTABLE_IN_SF_OR_TRIGGER", - 0x06e6: "ER_VARIABLE_NOT_SETTABLE_IN_TRANSACTION", - 0x06e7: "ER_GTID_NEXT_IS_NOT_IN_GTID_NEXT_LIST", - 0x06e8: "ER_CANT_CHANGE_GTID_NEXT_IN_TRANSACTION", - 0x06e9: "ER_SET_STATEMENT_CANNOT_INVOKE_FUNCTION", - 0x06ea: "ER_GTID_NEXT_CANT_BE_AUTOMATIC_IF_GTID_NEXT_LIST_IS_NON_NULL", - 0x06eb: "ER_SKIPPING_LOGGED_TRANSACTION", - 0x06ec: "ER_MALFORMED_GTID_SET_SPECIFICATION", - 0x06ed: "ER_MALFORMED_GTID_SET_ENCODING", - 0x06ee: "ER_MALFORMED_GTID_SPECIFICATION", - 0x06ef: "ER_GNO_EXHAUSTED", - 0x06f0: "ER_BAD_SLAVE_AUTO_POSITION", - 0x06f1: "ER_AUTO_POSITION_REQUIRES_GTID_MODE_NOT_OFF", - 0x06f2: "ER_CANT_DO_IMPLICIT_COMMIT_IN_TRX_WHEN_GTID_NEXT_IS_SET", - 0x06f3: "ER_GTID_MODE_ON_REQUIRES_ENFORCE_GTID_CONSISTENCY_ON", - 0x06f4: "ER_GTID_MODE_REQUIRES_BINLOG", - 0x06f5: "ER_CANT_SET_GTID_NEXT_TO_GTID_WHEN_GTID_MODE_IS_OFF", - 0x06f6: "ER_CANT_SET_GTID_NEXT_TO_ANONYMOUS_WHEN_GTID_MODE_IS_ON", - 0x06f7: "ER_CANT_SET_GTID_NEXT_LIST_TO_NON_NULL_WHEN_GTID_MODE_IS_OFF", - 0x06f8: "ER_FOUND_GTID_EVENT_WHEN_GTID_MODE_IS_OFF__UNUSED", - 0x06f9: "ER_GTID_UNSAFE_NON_TRANSACTIONAL_TABLE", - 0x06fa: "ER_GTID_UNSAFE_CREATE_SELECT", - 0x06fb: "ER_GTID_UNSAFE_CREATE_DROP_TEMPORARY_TABLE_IN_TRANSACTION", - 0x06fc: "ER_GTID_MODE_CAN_ONLY_CHANGE_ONE_STEP_AT_A_TIME", - 0x06fd: "ER_MASTER_HAS_PURGED_REQUIRED_GTIDS", - 0x06fe: "ER_CANT_SET_GTID_NEXT_WHEN_OWNING_GTID", - 0x06ff: "ER_UNKNOWN_EXPLAIN_FORMAT", + 0x069A: "ER_DATA_OUT_OF_RANGE", + 0x069B: "ER_WRONG_SPVAR_TYPE_IN_LIMIT", + 0x069C: "ER_BINLOG_UNSAFE_MULTIPLE_ENGINES_AND_SELF_LOGGING_ENGINE", + 0x069D: "ER_BINLOG_UNSAFE_MIXED_STATEMENT", + 0x069E: "ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_SQL_LOG_BIN", + 0x069F: "ER_STORED_FUNCTION_PREVENTS_SWITCH_SQL_LOG_BIN", + 0x06A0: "ER_FAILED_READ_FROM_PAR_FILE", + 0x06A1: "ER_VALUES_IS_NOT_INT_TYPE_ERROR", + 0x06A2: "ER_ACCESS_DENIED_NO_PASSWORD_ERROR", + 0x06A3: "ER_SET_PASSWORD_AUTH_PLUGIN", + 0x06A4: "ER_GRANT_PLUGIN_USER_EXISTS", + 0x06A5: "ER_TRUNCATE_ILLEGAL_FK", + 0x06A6: "ER_PLUGIN_IS_PERMANENT", + 0x06A7: "ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MIN", + 0x06A8: "ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MAX", + 0x06A9: "ER_STMT_CACHE_FULL", + 0x06AA: "ER_MULTI_UPDATE_KEY_CONFLICT", + 0x06AB: "ER_TABLE_NEEDS_REBUILD", + 0x06AC: "WARN_OPTION_BELOW_LIMIT", + 0x06AD: "ER_INDEX_COLUMN_TOO_LONG", + 0x06AE: "ER_ERROR_IN_TRIGGER_BODY", + 0x06AF: "ER_ERROR_IN_UNKNOWN_TRIGGER_BODY", + 0x06B0: "ER_INDEX_CORRUPT", + 0x06B1: "ER_UNDO_RECORD_TOO_BIG", + 0x06B2: "ER_BINLOG_UNSAFE_INSERT_IGNORE_SELECT", + 0x06B3: "ER_BINLOG_UNSAFE_INSERT_SELECT_UPDATE", + 0x06B4: "ER_BINLOG_UNSAFE_REPLACE_SELECT", + 0x06B5: "ER_BINLOG_UNSAFE_CREATE_IGNORE_SELECT", + 0x06B6: "ER_BINLOG_UNSAFE_CREATE_REPLACE_SELECT", + 0x06B7: "ER_BINLOG_UNSAFE_UPDATE_IGNORE", + 0x06B8: "ER_PLUGIN_NO_UNINSTALL", + 0x06B9: "ER_PLUGIN_NO_INSTALL", + 0x06BA: "ER_BINLOG_UNSAFE_WRITE_AUTOINC_SELECT", + 0x06BB: "ER_BINLOG_UNSAFE_CREATE_SELECT_AUTOINC", + 0x06BC: "ER_BINLOG_UNSAFE_INSERT_TWO_KEYS", + 0x06BD: "ER_TABLE_IN_FK_CHECK", + 0x06BE: "ER_UNSUPPORTED_ENGINE", + 0x06BF: "ER_BINLOG_UNSAFE_AUTOINC_NOT_FIRST", + 0x06C0: "ER_CANNOT_LOAD_FROM_TABLE_V2", + 0x06C1: "ER_MASTER_DELAY_VALUE_OUT_OF_RANGE", + 0x06C2: "ER_ONLY_FD_AND_RBR_EVENTS_ALLOWED_IN_BINLOG_STATEMENT", + 0x06C3: "ER_PARTITION_EXCHANGE_DIFFERENT_OPTION", + 0x06C4: "ER_PARTITION_EXCHANGE_PART_TABLE", + 0x06C5: "ER_PARTITION_EXCHANGE_TEMP_TABLE", + 0x06C6: "ER_PARTITION_INSTEAD_OF_SUBPARTITION", + 0x06C7: "ER_UNKNOWN_PARTITION", + 0x06C8: "ER_TABLES_DIFFERENT_METADATA", + 0x06C9: "ER_ROW_DOES_NOT_MATCH_PARTITION", + 0x06CA: "ER_BINLOG_CACHE_SIZE_GREATER_THAN_MAX", + 0x06CB: "ER_WARN_INDEX_NOT_APPLICABLE", + 0x06CC: "ER_PARTITION_EXCHANGE_FOREIGN_KEY", + 0x06CD: "ER_NO_SUCH_KEY_VALUE", + 0x06CE: "ER_RPL_INFO_DATA_TOO_LONG", + 0x06CF: "ER_NETWORK_READ_EVENT_CHECKSUM_FAILURE", + 0x06D0: "ER_BINLOG_READ_EVENT_CHECKSUM_FAILURE", + 0x06D1: "ER_BINLOG_STMT_CACHE_SIZE_GREATER_THAN_MAX", + 0x06D2: "ER_CANT_UPDATE_TABLE_IN_CREATE_TABLE_SELECT", + 0x06D3: "ER_PARTITION_CLAUSE_ON_NONPARTITIONED", + 0x06D4: "ER_ROW_DOES_NOT_MATCH_GIVEN_PARTITION_SET", + 0x06D5: "ER_NO_SUCH_PARTITION__UNUSED", + 0x06D6: "ER_CHANGE_RPL_INFO_REPOSITORY_FAILURE", + 0x06D7: "ER_WARNING_NOT_COMPLETE_ROLLBACK_WITH_CREATED_TEMP_TABLE", + 0x06D8: "ER_WARNING_NOT_COMPLETE_ROLLBACK_WITH_DROPPED_TEMP_TABLE", + 0x06D9: "ER_MTS_FEATURE_IS_NOT_SUPPORTED", + 0x06DA: "ER_MTS_UPDATED_DBS_GREATER_MAX", + 0x06DB: "ER_MTS_CANT_PARALLEL", + 0x06DC: "ER_MTS_INCONSISTENT_DATA", + 0x06DD: "ER_FULLTEXT_NOT_SUPPORTED_WITH_PARTITIONING", + 0x06DE: "ER_DA_INVALID_CONDITION_NUMBER", + 0x06DF: "ER_INSECURE_PLAIN_TEXT", + 0x06E0: "ER_INSECURE_CHANGE_MASTER", + 0x06E1: "ER_FOREIGN_DUPLICATE_KEY_WITH_CHILD_INFO", + 0x06E2: "ER_FOREIGN_DUPLICATE_KEY_WITHOUT_CHILD_INFO", + 0x06E3: "ER_SQLTHREAD_WITH_SECURE_SLAVE", + 0x06E4: "ER_TABLE_HAS_NO_FT", + 0x06E5: "ER_VARIABLE_NOT_SETTABLE_IN_SF_OR_TRIGGER", + 0x06E6: "ER_VARIABLE_NOT_SETTABLE_IN_TRANSACTION", + 0x06E7: "ER_GTID_NEXT_IS_NOT_IN_GTID_NEXT_LIST", + 0x06E8: "ER_CANT_CHANGE_GTID_NEXT_IN_TRANSACTION", + 0x06E9: "ER_SET_STATEMENT_CANNOT_INVOKE_FUNCTION", + 0x06EA: "ER_GTID_NEXT_CANT_BE_AUTOMATIC_IF_GTID_NEXT_LIST_IS_NON_NULL", + 0x06EB: "ER_SKIPPING_LOGGED_TRANSACTION", + 0x06EC: "ER_MALFORMED_GTID_SET_SPECIFICATION", + 0x06ED: "ER_MALFORMED_GTID_SET_ENCODING", + 0x06EE: "ER_MALFORMED_GTID_SPECIFICATION", + 0x06EF: "ER_GNO_EXHAUSTED", + 0x06F0: "ER_BAD_SLAVE_AUTO_POSITION", + 0x06F1: "ER_AUTO_POSITION_REQUIRES_GTID_MODE_NOT_OFF", + 0x06F2: "ER_CANT_DO_IMPLICIT_COMMIT_IN_TRX_WHEN_GTID_NEXT_IS_SET", + 0x06F3: "ER_GTID_MODE_ON_REQUIRES_ENFORCE_GTID_CONSISTENCY_ON", + 0x06F4: "ER_GTID_MODE_REQUIRES_BINLOG", + 0x06F5: "ER_CANT_SET_GTID_NEXT_TO_GTID_WHEN_GTID_MODE_IS_OFF", + 0x06F6: "ER_CANT_SET_GTID_NEXT_TO_ANONYMOUS_WHEN_GTID_MODE_IS_ON", + 0x06F7: "ER_CANT_SET_GTID_NEXT_LIST_TO_NON_NULL_WHEN_GTID_MODE_IS_OFF", + 0x06F8: "ER_FOUND_GTID_EVENT_WHEN_GTID_MODE_IS_OFF__UNUSED", + 0x06F9: "ER_GTID_UNSAFE_NON_TRANSACTIONAL_TABLE", + 0x06FA: "ER_GTID_UNSAFE_CREATE_SELECT", + 0x06FB: "ER_GTID_UNSAFE_CREATE_DROP_TEMPORARY_TABLE_IN_TRANSACTION", + 0x06FC: "ER_GTID_MODE_CAN_ONLY_CHANGE_ONE_STEP_AT_A_TIME", + 0x06FD: "ER_MASTER_HAS_PURGED_REQUIRED_GTIDS", + 0x06FE: "ER_CANT_SET_GTID_NEXT_WHEN_OWNING_GTID", + 0x06FF: "ER_UNKNOWN_EXPLAIN_FORMAT", 0x0700: "ER_CANT_EXECUTE_IN_READ_ONLY_TRANSACTION", 0x0701: "ER_TOO_LONG_TABLE_PARTITION_COMMENT", 0x0702: "ER_SLAVE_CONFIGURATION", @@ -806,12 +806,12 @@ 0x0707: "ER_INNODB_ONLINE_LOG_TOO_BIG", 0x0708: "ER_UNKNOWN_ALTER_ALGORITHM", 0x0709: "ER_UNKNOWN_ALTER_LOCK", - 0x070a: "ER_MTS_CHANGE_MASTER_CANT_RUN_WITH_GAPS", - 0x070b: "ER_MTS_RECOVERY_FAILURE", - 0x070c: "ER_MTS_RESET_WORKERS", - 0x070d: "ER_COL_COUNT_DOESNT_MATCH_CORRUPTED_V2", - 0x070e: "ER_SLAVE_SILENT_RETRY_TRANSACTION", - 0x070f: "ER_DISCARD_FK_CHECKS_RUNNING", + 0x070A: "ER_MTS_CHANGE_MASTER_CANT_RUN_WITH_GAPS", + 0x070B: "ER_MTS_RECOVERY_FAILURE", + 0x070C: "ER_MTS_RESET_WORKERS", + 0x070D: "ER_COL_COUNT_DOESNT_MATCH_CORRUPTED_V2", + 0x070E: "ER_SLAVE_SILENT_RETRY_TRANSACTION", + 0x070F: "ER_DISCARD_FK_CHECKS_RUNNING", 0x0710: "ER_TABLE_SCHEMA_MISMATCH", 0x0711: "ER_TABLE_IN_SYSTEM_TABLESPACE", 0x0712: "ER_IO_READ_ERROR", @@ -822,12 +822,12 @@ 0x0717: "ER_INTERNAL_ERROR", 0x0718: "ER_INNODB_IMPORT_ERROR", 0x0719: "ER_INNODB_INDEX_CORRUPT", - 0x071a: "ER_INVALID_YEAR_COLUMN_LENGTH", - 0x071b: "ER_NOT_VALID_PASSWORD", - 0x071c: "ER_MUST_CHANGE_PASSWORD", - 0x071d: "ER_FK_NO_INDEX_CHILD", - 0x071e: "ER_FK_NO_INDEX_PARENT", - 0x071f: "ER_FK_FAIL_ADD_SYSTEM", + 0x071A: "ER_INVALID_YEAR_COLUMN_LENGTH", + 0x071B: "ER_NOT_VALID_PASSWORD", + 0x071C: "ER_MUST_CHANGE_PASSWORD", + 0x071D: "ER_FK_NO_INDEX_CHILD", + 0x071E: "ER_FK_NO_INDEX_PARENT", + 0x071F: "ER_FK_FAIL_ADD_SYSTEM", 0x0720: "ER_FK_CANNOT_OPEN_PARENT", 0x0721: "ER_FK_INCORRECT_OPTION", 0x0722: "ER_FK_DUP_NAME", @@ -838,12 +838,12 @@ 0x0727: "ER_DUP_INDEX", 0x0728: "ER_FK_COLUMN_CANNOT_CHANGE", 0x0729: "ER_FK_COLUMN_CANNOT_CHANGE_CHILD", - 0x072a: "ER_UNUSED5", - 0x072b: "ER_MALFORMED_PACKET", - 0x072c: "ER_READ_ONLY_MODE", - 0x072d: "ER_GTID_NEXT_TYPE_UNDEFINED_GTID", - 0x072e: "ER_VARIABLE_NOT_SETTABLE_IN_SP", - 0x072f: "ER_CANT_SET_GTID_PURGED_WHEN_GTID_MODE_IS_OFF", + 0x072A: "ER_UNUSED5", + 0x072B: "ER_MALFORMED_PACKET", + 0x072C: "ER_READ_ONLY_MODE", + 0x072D: "ER_GTID_NEXT_TYPE_UNDEFINED_GTID", + 0x072E: "ER_VARIABLE_NOT_SETTABLE_IN_SP", + 0x072F: "ER_CANT_SET_GTID_PURGED_WHEN_GTID_MODE_IS_OFF", 0x0730: "ER_CANT_SET_GTID_PURGED_WHEN_GTID_EXECUTED_IS_NOT_EMPTY", 0x0731: "ER_CANT_SET_GTID_PURGED_WHEN_OWNED_GTIDS_IS_NOT_EMPTY", 0x0732: "ER_GTID_PURGED_WAS_CHANGED", @@ -854,12 +854,12 @@ 0x0737: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_COPY", 0x0738: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_PARTITION", 0x0739: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_FK_RENAME", - 0x073a: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_COLUMN_TYPE", - 0x073b: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_FK_CHECK", - 0x073c: "ER_UNUSED6", - 0x073d: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_NOPK", - 0x073e: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_AUTOINC", - 0x073f: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_HIDDEN_FTS", + 0x073A: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_COLUMN_TYPE", + 0x073B: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_FK_CHECK", + 0x073C: "ER_UNUSED6", + 0x073D: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_NOPK", + 0x073E: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_AUTOINC", + 0x073F: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_HIDDEN_FTS", 0x0740: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_CHANGE_FTS", 0x0741: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_FTS", 0x0742: "ER_SQL_SLAVE_SKIP_COUNTER_NOT_SETTABLE_IN_GTID_MODE", @@ -870,12 +870,12 @@ 0x0747: "ER_ROW_IN_WRONG_PARTITION", 0x0748: "ER_MTS_EVENT_BIGGER_PENDING_JOBS_SIZE_MAX", 0x0749: "ER_INNODB_NO_FT_USES_PARSER", - 0x074a: "ER_BINLOG_LOGICAL_CORRUPTION", - 0x074b: "ER_WARN_PURGE_LOG_IN_USE", - 0x074c: "ER_WARN_PURGE_LOG_IS_ACTIVE", - 0x074d: "ER_AUTO_INCREMENT_CONFLICT", - 0x074e: "WARN_ON_BLOCKHOLE_IN_RBR", - 0x074f: "ER_SLAVE_MI_INIT_REPOSITORY", + 0x074A: "ER_BINLOG_LOGICAL_CORRUPTION", + 0x074B: "ER_WARN_PURGE_LOG_IN_USE", + 0x074C: "ER_WARN_PURGE_LOG_IS_ACTIVE", + 0x074D: "ER_AUTO_INCREMENT_CONFLICT", + 0x074E: "WARN_ON_BLOCKHOLE_IN_RBR", + 0x074F: "ER_SLAVE_MI_INIT_REPOSITORY", 0x0750: "ER_SLAVE_RLI_INIT_REPOSITORY", 0x0751: "ER_ACCESS_DENIED_CHANGE_USER_ERROR", 0x0752: "ER_INNODB_READ_ONLY", @@ -886,477 +886,477 @@ 0x0757: "ER_INNODB_FT_AUX_NOT_HEX_ID", 0x0758: "ER_OLD_TEMPORALS_UPGRADED", 0x0759: "ER_INNODB_FORCED_RECOVERY", - 0x075a: "ER_AES_INVALID_IV", - 0x075b: "ER_PLUGIN_CANNOT_BE_UNINSTALLED", - 0x075c: "ER_GTID_UNSAFE_BINLOG_SPLITTABLE_STATEMENT_AND_ASSIGNED_GTID", - 0x075d: "ER_SLAVE_HAS_MORE_GTIDS_THAN_MASTER", - 0x075e: "ER_MISSING_KEY", + 0x075A: "ER_AES_INVALID_IV", + 0x075B: "ER_PLUGIN_CANNOT_BE_UNINSTALLED", + 0x075C: "ER_GTID_UNSAFE_BINLOG_SPLITTABLE_STATEMENT_AND_ASSIGNED_GTID", + 0x075D: "ER_SLAVE_HAS_MORE_GTIDS_THAN_MASTER", + 0x075E: "ER_MISSING_KEY", 0x0772: "ER_SLAVE_IO_THREAD_MUST_STOP", - 0x0bb8: "ER_FILE_CORRUPT", - 0x0bb9: "ER_ERROR_ON_MASTER", - 0x0bba: "ER_INCONSISTENT_ERROR", - 0x0bbb: "ER_STORAGE_ENGINE_NOT_LOADED", - 0x0bbc: "ER_GET_STACKED_DA_WITHOUT_ACTIVE_HANDLER", - 0x0bbd: "ER_WARN_LEGACY_SYNTAX_CONVERTED", - 0x0bbe: "ER_BINLOG_UNSAFE_FULLTEXT_PLUGIN", - 0x0bbf: "ER_CANNOT_DISCARD_TEMPORARY_TABLE", - 0x0bc0: "ER_FK_DEPTH_EXCEEDED", - 0x0bc1: "ER_COL_COUNT_DOESNT_MATCH_PLEASE_UPDATE_V2", - 0x0bc2: "ER_WARN_TRIGGER_DOESNT_HAVE_CREATED", - 0x0bc3: "ER_REFERENCED_TRG_DOES_NOT_EXIST", - 0x0bc4: "ER_EXPLAIN_NOT_SUPPORTED", - 0x0bc5: "ER_INVALID_FIELD_SIZE", - 0x0bc6: "ER_MISSING_HA_CREATE_OPTION", - 0x0bc7: "ER_ENGINE_OUT_OF_MEMORY", - 0x0bc8: "ER_PASSWORD_EXPIRE_ANONYMOUS_USER", - 0x0bc9: "ER_SLAVE_SQL_THREAD_MUST_STOP", - 0x0bca: "ER_NO_FT_MATERIALIZED_SUBQUERY", - 0x0bcb: "ER_INNODB_UNDO_LOG_FULL", - 0x0bcc: "ER_INVALID_ARGUMENT_FOR_LOGARITHM", - 0x0bcd: "ER_SLAVE_CHANNEL_IO_THREAD_MUST_STOP", - 0x0bce: "ER_WARN_OPEN_TEMP_TABLES_MUST_BE_ZERO", - 0x0bcf: "ER_WARN_ONLY_MASTER_LOG_FILE_NO_POS", - 0x0bd0: "ER_QUERY_TIMEOUT", - 0x0bd1: "ER_NON_RO_SELECT_DISABLE_TIMER", - 0x0bd2: "ER_DUP_LIST_ENTRY", - 0x0bd3: "ER_SQL_MODE_NO_EFFECT", - 0x0bd4: "ER_AGGREGATE_ORDER_FOR_UNION", - 0x0bd5: "ER_AGGREGATE_ORDER_NON_AGG_QUERY", - 0x0bd6: "ER_SLAVE_WORKER_STOPPED_PREVIOUS_THD_ERROR", - 0x0bd7: "ER_DONT_SUPPORT_SLAVE_PRESERVE_COMMIT_ORDER", - 0x0bd8: "ER_SERVER_OFFLINE_MODE", - 0x0bd9: "ER_GIS_DIFFERENT_SRIDS", - 0x0bda: "ER_GIS_UNSUPPORTED_ARGUMENT", - 0x0bdb: "ER_GIS_UNKNOWN_ERROR", - 0x0bdc: "ER_GIS_UNKNOWN_EXCEPTION", - 0x0bdd: "ER_GIS_INVALID_DATA", - 0x0bde: "ER_BOOST_GEOMETRY_EMPTY_INPUT_EXCEPTION", - 0x0bdf: "ER_BOOST_GEOMETRY_CENTROID_EXCEPTION", - 0x0be0: "ER_BOOST_GEOMETRY_OVERLAY_INVALID_INPUT_EXCEPTION", - 0x0be1: "ER_BOOST_GEOMETRY_TURN_INFO_EXCEPTION", - 0x0be2: "ER_BOOST_GEOMETRY_SELF_INTERSECTION_POINT_EXCEPTION", - 0x0be3: "ER_BOOST_GEOMETRY_UNKNOWN_EXCEPTION", - 0x0be4: "ER_STD_BAD_ALLOC_ERROR", - 0x0be5: "ER_STD_DOMAIN_ERROR", - 0x0be6: "ER_STD_LENGTH_ERROR", - 0x0be7: "ER_STD_INVALID_ARGUMENT", - 0x0be8: "ER_STD_OUT_OF_RANGE_ERROR", - 0x0be9: "ER_STD_OVERFLOW_ERROR", - 0x0bea: "ER_STD_RANGE_ERROR", - 0x0beb: "ER_STD_UNDERFLOW_ERROR", - 0x0bec: "ER_STD_LOGIC_ERROR", - 0x0bed: "ER_STD_RUNTIME_ERROR", - 0x0bee: "ER_STD_UNKNOWN_EXCEPTION", - 0x0bef: "ER_GIS_DATA_WRONG_ENDIANESS", - 0x0bf0: "ER_CHANGE_MASTER_PASSWORD_LENGTH", - 0x0bf1: "ER_USER_LOCK_WRONG_NAME", - 0x0bf2: "ER_USER_LOCK_DEADLOCK", - 0x0bf3: "ER_REPLACE_INACCESSIBLE_ROWS", - 0x0bf4: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_GIS", - 0x0bf5: "ER_ILLEGAL_USER_VAR", - 0x0bf6: "ER_GTID_MODE_OFF", - 0x0bf7: "ER_UNSUPPORTED_BY_REPLICATION_THREAD", - 0x0bf8: "ER_INCORRECT_TYPE", - 0x0bf9: "ER_FIELD_IN_ORDER_NOT_SELECT", - 0x0bfa: "ER_AGGREGATE_IN_ORDER_NOT_SELECT", - 0x0bfb: "ER_INVALID_RPL_WILD_TABLE_FILTER_PATTERN", - 0x0bfc: "ER_NET_OK_PACKET_TOO_LARGE", - 0x0bfd: "ER_INVALID_JSON_DATA", - 0x0bfe: "ER_INVALID_GEOJSON_MISSING_MEMBER", - 0x0bff: "ER_INVALID_GEOJSON_WRONG_TYPE", - 0x0c00: "ER_INVALID_GEOJSON_UNSPECIFIED", - 0x0c01: "ER_DIMENSION_UNSUPPORTED", - 0x0c02: "ER_SLAVE_CHANNEL_DOES_NOT_EXIST", - 0x0c03: "ER_SLAVE_MULTIPLE_CHANNELS_HOST_PORT", - 0x0c04: "ER_SLAVE_CHANNEL_NAME_INVALID_OR_TOO_LONG", - 0x0c05: "ER_SLAVE_NEW_CHANNEL_WRONG_REPOSITORY", - 0x0c06: "ER_SLAVE_CHANNEL_DELETE", - 0x0c07: "ER_SLAVE_MULTIPLE_CHANNELS_CMD", - 0x0c08: "ER_SLAVE_MAX_CHANNELS_EXCEEDED", - 0x0c09: "ER_SLAVE_CHANNEL_MUST_STOP", - 0x0c0a: "ER_SLAVE_CHANNEL_NOT_RUNNING", - 0x0c0b: "ER_SLAVE_CHANNEL_WAS_RUNNING", - 0x0c0c: "ER_SLAVE_CHANNEL_WAS_NOT_RUNNING", - 0x0c0d: "ER_SLAVE_CHANNEL_SQL_THREAD_MUST_STOP", - 0x0c0e: "ER_SLAVE_CHANNEL_SQL_SKIP_COUNTER", - 0x0c0f: "ER_WRONG_FIELD_WITH_GROUP_V2", - 0x0c10: "ER_MIX_OF_GROUP_FUNC_AND_FIELDS_V2", - 0x0c11: "ER_WARN_DEPRECATED_SYSVAR_UPDATE", - 0x0c12: "ER_WARN_DEPRECATED_SQLMODE", - 0x0c13: "ER_CANNOT_LOG_PARTIAL_DROP_DATABASE_WITH_GTID", - 0x0c14: "ER_GROUP_REPLICATION_CONFIGURATION", - 0x0c15: "ER_GROUP_REPLICATION_RUNNING", - 0x0c16: "ER_GROUP_REPLICATION_APPLIER_INIT_ERROR", - 0x0c17: "ER_GROUP_REPLICATION_STOP_APPLIER_THREAD_TIMEOUT", - 0x0c18: "ER_GROUP_REPLICATION_COMMUNICATION_LAYER_SESSION_ERROR", - 0x0c19: "ER_GROUP_REPLICATION_COMMUNICATION_LAYER_JOIN_ERROR", - 0x0c1a: "ER_BEFORE_DML_VALIDATION_ERROR", - 0x0c1b: "ER_PREVENTS_VARIABLE_WITHOUT_RBR", - 0x0c1c: "ER_RUN_HOOK_ERROR", - 0x0c1d: "ER_TRANSACTION_ROLLBACK_DURING_COMMIT", - 0x0c1e: "ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED", - 0x0c1f: "ER_UNSUPPORTED_ALTER_INPLACE_ON_VIRTUAL_COLUMN", - 0x0c20: "ER_WRONG_FK_OPTION_FOR_GENERATED_COLUMN", - 0x0c21: "ER_NON_DEFAULT_VALUE_FOR_GENERATED_COLUMN", - 0x0c22: "ER_UNSUPPORTED_ACTION_ON_GENERATED_COLUMN", - 0x0c23: "ER_GENERATED_COLUMN_NON_PRIOR", - 0x0c24: "ER_DEPENDENT_BY_GENERATED_COLUMN", - 0x0c25: "ER_GENERATED_COLUMN_REF_AUTO_INC", - 0x0c26: "ER_FEATURE_NOT_AVAILABLE", - 0x0c27: "ER_CANT_SET_GTID_MODE", - 0x0c28: "ER_CANT_USE_AUTO_POSITION_WITH_GTID_MODE_OFF", - 0x0c29: "ER_CANT_REPLICATE_ANONYMOUS_WITH_AUTO_POSITION", - 0x0c2a: "ER_CANT_REPLICATE_ANONYMOUS_WITH_GTID_MODE_ON", - 0x0c2b: "ER_CANT_REPLICATE_GTID_WITH_GTID_MODE_OFF", - 0x0c2c: "ER_CANT_ENFORCE_GTID_CONSISTENCY_WITH_ONGOING_GTID_VIOLATING_TX", - 0x0c2d: "ER_ENFORCE_GTID_CONSISTENCY_WARN_WITH_ONGOING_GTID_VIOLATING_TX", - 0x0c2e: "ER_ACCOUNT_HAS_BEEN_LOCKED", - 0x0c2f: "ER_WRONG_TABLESPACE_NAME", - 0x0c30: "ER_TABLESPACE_IS_NOT_EMPTY", - 0x0c31: "ER_WRONG_FILE_NAME", - 0x0c32: "ER_BOOST_GEOMETRY_INCONSISTENT_TURNS_EXCEPTION", - 0x0c33: "ER_WARN_OPTIMIZER_HINT_SYNTAX_ERROR", - 0x0c34: "ER_WARN_BAD_MAX_EXECUTION_TIME", - 0x0c35: "ER_WARN_UNSUPPORTED_MAX_EXECUTION_TIME", - 0x0c36: "ER_WARN_CONFLICTING_HINT", - 0x0c37: "ER_WARN_UNKNOWN_QB_NAME", - 0x0c38: "ER_UNRESOLVED_HINT_NAME", - 0x0c39: "ER_WARN_ON_MODIFYING_GTID_EXECUTED_TABLE", - 0x0c3a: "ER_PLUGGABLE_PROTOCOL_COMMAND_NOT_SUPPORTED", - 0x0c3b: "ER_LOCKING_SERVICE_WRONG_NAME", - 0x0c3c: "ER_LOCKING_SERVICE_DEADLOCK", - 0x0c3d: "ER_LOCKING_SERVICE_TIMEOUT", - 0x0c3e: "ER_GIS_MAX_POINTS_IN_GEOMETRY_OVERFLOWED", - 0x0c3f: "ER_SQL_MODE_MERGED", - 0x0c40: "ER_VTOKEN_PLUGIN_TOKEN_MISMATCH", - 0x0c41: "ER_VTOKEN_PLUGIN_TOKEN_NOT_FOUND", - 0x0c42: "ER_CANT_SET_VARIABLE_WHEN_OWNING_GTID", - 0x0c43: "ER_SLAVE_CHANNEL_OPERATION_NOT_ALLOWED", - 0x0c44: "ER_INVALID_JSON_TEXT", - 0x0c45: "ER_INVALID_JSON_TEXT_IN_PARAM", - 0x0c46: "ER_INVALID_JSON_BINARY_DATA", - 0x0c47: "ER_INVALID_JSON_PATH", - 0x0c48: "ER_INVALID_JSON_CHARSET", - 0x0c49: "ER_INVALID_JSON_CHARSET_IN_FUNCTION", - 0x0c4a: "ER_INVALID_TYPE_FOR_JSON", - 0x0c4b: "ER_INVALID_CAST_TO_JSON", - 0x0c4c: "ER_INVALID_JSON_PATH_CHARSET", - 0x0c4d: "ER_INVALID_JSON_PATH_WILDCARD", - 0x0c4e: "ER_JSON_VALUE_TOO_BIG", - 0x0c4f: "ER_JSON_KEY_TOO_BIG", - 0x0c50: "ER_JSON_USED_AS_KEY", - 0x0c51: "ER_JSON_VACUOUS_PATH", - 0x0c52: "ER_JSON_BAD_ONE_OR_ALL_ARG", - 0x0c53: "ER_NUMERIC_JSON_VALUE_OUT_OF_RANGE", - 0x0c54: "ER_INVALID_JSON_VALUE_FOR_CAST", - 0x0c55: "ER_JSON_DOCUMENT_TOO_DEEP", - 0x0c56: "ER_JSON_DOCUMENT_NULL_KEY", - 0x0c57: "ER_SECURE_TRANSPORT_REQUIRED", - 0x0c58: "ER_NO_SECURE_TRANSPORTS_CONFIGURED", - 0x0c59: "ER_DISABLED_STORAGE_ENGINE", - 0x0c5a: "ER_USER_DOES_NOT_EXIST", - 0x0c5b: "ER_USER_ALREADY_EXISTS", - 0x0c5c: "ER_AUDIT_API_ABORT", - 0x0c5d: "ER_INVALID_JSON_PATH_ARRAY_CELL", - 0x0c5e: "ER_BUFPOOL_RESIZE_INPROGRESS", - 0x0c5f: "ER_FEATURE_DISABLED_SEE_DOC", - 0x0c60: "ER_SERVER_ISNT_AVAILABLE", - 0x0c61: "ER_SESSION_WAS_KILLED", - 0x0c62: "ER_CAPACITY_EXCEEDED", - 0x0c63: "ER_CAPACITY_EXCEEDED_IN_RANGE_OPTIMIZER", - 0x0c64: "ER_TABLE_NEEDS_UPG_PART", - 0x0c65: "ER_CANT_WAIT_FOR_EXECUTED_GTID_SET_WHILE_OWNING_A_GTID", - 0x0c66: "ER_CANNOT_ADD_FOREIGN_BASE_COL_VIRTUAL", - 0x0c67: "ER_CANNOT_CREATE_VIRTUAL_INDEX_CONSTRAINT", - 0x0c68: "ER_ERROR_ON_MODIFYING_GTID_EXECUTED_TABLE", - 0x0c69: "ER_LOCK_REFUSED_BY_ENGINE", - 0x0c6a: "ER_UNSUPPORTED_ALTER_ONLINE_ON_VIRTUAL_COLUMN", - 0x0c6b: "ER_MASTER_KEY_ROTATION_NOT_SUPPORTED_BY_SE", - 0x0c6c: "ER_MASTER_KEY_ROTATION_ERROR_BY_SE", - 0x0c6d: "ER_MASTER_KEY_ROTATION_BINLOG_FAILED", - 0x0c6e: "ER_MASTER_KEY_ROTATION_SE_UNAVAILABLE", - 0x0c6f: "ER_TABLESPACE_CANNOT_ENCRYPT", - 0x0c70: "ER_INVALID_ENCRYPTION_OPTION", - 0x0c71: "ER_CANNOT_FIND_KEY_IN_KEYRING", - 0x0c72: "ER_CAPACITY_EXCEEDED_IN_PARSER", - 0x0c73: "ER_UNSUPPORTED_ALTER_ENCRYPTION_INPLACE", - 0x0c74: "ER_KEYRING_UDF_KEYRING_SERVICE_ERROR", - 0x0c75: "ER_USER_COLUMN_OLD_LENGTH", - 0x0c76: "ER_CANT_RESET_MASTER", - 0x0c77: "ER_GROUP_REPLICATION_MAX_GROUP_SIZE", - 0x0c78: "ER_CANNOT_ADD_FOREIGN_BASE_COL_STORED", - 0x0c79: "ER_TABLE_REFERENCED", - 0x0c7a: "ER_PARTITION_ENGINE_DEPRECATED_FOR_TABLE", - 0x0c7b: "ER_WARN_USING_GEOMFROMWKB_TO_SET_SRID_ZERO", - 0x0c7c: "ER_WARN_USING_GEOMFROMWKB_TO_SET_SRID", - 0x0c7d: "ER_XA_RETRY", - 0x0c7e: "ER_KEYRING_AWS_UDF_AWS_KMS_ERROR", - 0x0c7f: "ER_BINLOG_UNSAFE_XA", - 0x0c80: "ER_UDF_ERROR", - 0x0c81: "ER_KEYRING_MIGRATION_FAILURE", - 0x0c82: "ER_KEYRING_ACCESS_DENIED_ERROR", - 0x0c83: "ER_KEYRING_MIGRATION_STATUS", - 0x0c84: "ER_PLUGIN_FAILED_TO_OPEN_TABLES", - 0x0c85: "ER_PLUGIN_FAILED_TO_OPEN_TABLE", - 0x0c86: "ER_AUDIT_LOG_NO_KEYRING_PLUGIN_INSTALLED", - 0x0c87: "ER_AUDIT_LOG_ENCRYPTION_PASSWORD_HAS_NOT_BEEN_SET", - 0x0c88: "ER_AUDIT_LOG_COULD_NOT_CREATE_AES_KEY", - 0x0c89: "ER_AUDIT_LOG_ENCRYPTION_PASSWORD_CANNOT_BE_FETCHED", - 0x0c8a: "ER_AUDIT_LOG_JSON_FILTERING_NOT_ENABLED", - 0x0c8b: "ER_AUDIT_LOG_UDF_INSUFFICIENT_PRIVILEGE", - 0x0c8c: "ER_AUDIT_LOG_SUPER_PRIVILEGE_REQUIRED", - 0x0c8d: "ER_COULD_NOT_REINITIALIZE_AUDIT_LOG_FILTERS", - 0x0c8e: "ER_AUDIT_LOG_UDF_INVALID_ARGUMENT_TYPE", - 0x0c8f: "ER_AUDIT_LOG_UDF_INVALID_ARGUMENT_COUNT", - 0x0c90: "ER_AUDIT_LOG_HAS_NOT_BEEN_INSTALLED", - 0x0c91: "ER_AUDIT_LOG_UDF_READ_INVALID_MAX_ARRAY_LENGTH_ARG_TYPE", - 0x0c92: "ER_AUDIT_LOG_UDF_READ_INVALID_MAX_ARRAY_LENGTH_ARG_VALUE", - 0x0c93: "ER_AUDIT_LOG_JSON_FILTER_PARSING_ERROR", - 0x0c94: "ER_AUDIT_LOG_JSON_FILTER_NAME_CANNOT_BE_EMPTY", - 0x0c95: "ER_AUDIT_LOG_JSON_USER_NAME_CANNOT_BE_EMPTY", - 0x0c96: "ER_AUDIT_LOG_JSON_FILTER_DOES_NOT_EXISTS", - 0x0c97: "ER_AUDIT_LOG_USER_FIRST_CHARACTER_MUST_BE_ALPHANUMERIC", - 0x0c98: "ER_AUDIT_LOG_USER_NAME_INVALID_CHARACTER", - 0x0c99: "ER_AUDIT_LOG_HOST_NAME_INVALID_CHARACTER", - 0x0c9a: "WARN_DEPRECATED_MAXDB_SQL_MODE_FOR_TIMESTAMP", - 0x0c9b: "ER_XA_REPLICATION_FILTERS", - 0x0dac: "ER_UNSUPPORT_COMPRESSED_TEMPORARY_TABLE", - 0x0dad: "ER_ACL_OPERATION_FAILED", - 0x0dae: "ER_UNSUPPORTED_INDEX_ALGORITHM", - 0x0daf: "ER_NO_SUCH_DB", - 0x0db0: "ER_TOO_BIG_ENUM", - 0x0db1: "ER_TOO_LONG_SET_ENUM_VALUE", - 0x0db2: "ER_INVALID_DD_OBJECT", - 0x0db3: "ER_UPDATING_DD_TABLE", - 0x0db4: "ER_INVALID_DD_OBJECT_ID", - 0x0db5: "ER_INVALID_DD_OBJECT_NAME", - 0x0db6: "ER_TABLESPACE_MISSING_WITH_NAME", - 0x0db7: "ER_TOO_LONG_ROUTINE_COMMENT", - 0x0db8: "ER_SP_LOAD_FAILED", - 0x0db9: "ER_INVALID_BITWISE_OPERANDS_SIZE", - 0x0dba: "ER_INVALID_BITWISE_AGGREGATE_OPERANDS_SIZE", - 0x0dbb: "ER_WARN_UNSUPPORTED_HINT", - 0x0dbc: "ER_UNEXPECTED_GEOMETRY_TYPE", - 0x0dbd: "ER_SRS_PARSE_ERROR", - 0x0dbe: "ER_SRS_PROJ_PARAMETER_MISSING", - 0x0dbf: "ER_WARN_SRS_NOT_FOUND", - 0x0dc0: "ER_SRS_NOT_CARTESIAN", - 0x0dc1: "ER_SRS_NOT_CARTESIAN_UNDEFINED", - 0x0dc2: "ER_PK_INDEX_CANT_BE_INVISIBLE", - 0x0dc3: "ER_UNKNOWN_AUTHID", - 0x0dc4: "ER_FAILED_ROLE_GRANT", - 0x0dc5: "ER_OPEN_ROLE_TABLES", - 0x0dc6: "ER_FAILED_DEFAULT_ROLES", - 0x0dc7: "ER_COMPONENTS_NO_SCHEME", - 0x0dc8: "ER_COMPONENTS_NO_SCHEME_SERVICE", - 0x0dc9: "ER_COMPONENTS_CANT_LOAD", - 0x0dca: "ER_ROLE_NOT_GRANTED", - 0x0dcb: "ER_FAILED_REVOKE_ROLE", - 0x0dcc: "ER_RENAME_ROLE", - 0x0dcd: "ER_COMPONENTS_CANT_ACQUIRE_SERVICE_IMPLEMENTATION", - 0x0dce: "ER_COMPONENTS_CANT_SATISFY_DEPENDENCY", - 0x0dcf: "ER_COMPONENTS_LOAD_CANT_REGISTER_SERVICE_IMPLEMENTATION", - 0x0dd0: "ER_COMPONENTS_LOAD_CANT_INITIALIZE", - 0x0dd1: "ER_COMPONENTS_UNLOAD_NOT_LOADED", - 0x0dd2: "ER_COMPONENTS_UNLOAD_CANT_DEINITIALIZE", - 0x0dd3: "ER_COMPONENTS_CANT_RELEASE_SERVICE", - 0x0dd4: "ER_COMPONENTS_UNLOAD_CANT_UNREGISTER_SERVICE", - 0x0dd5: "ER_COMPONENTS_CANT_UNLOAD", - 0x0dd6: "ER_WARN_UNLOAD_THE_NOT_PERSISTED", - 0x0dd7: "ER_COMPONENT_TABLE_INCORRECT", - 0x0dd8: "ER_COMPONENT_MANIPULATE_ROW_FAILED", - 0x0dd9: "ER_COMPONENTS_UNLOAD_DUPLICATE_IN_GROUP", - 0x0dda: "ER_CANT_SET_GTID_PURGED_DUE_SETS_CONSTRAINTS", - 0x0ddb: "ER_CANNOT_LOCK_USER_MANAGEMENT_CACHES", - 0x0ddc: "ER_SRS_NOT_FOUND", - 0x0ddd: "ER_VARIABLE_NOT_PERSISTED", - 0x0dde: "ER_IS_QUERY_INVALID_CLAUSE", - 0x0ddf: "ER_UNABLE_TO_STORE_STATISTICS", - 0x0de0: "ER_NO_SYSTEM_SCHEMA_ACCESS", - 0x0de1: "ER_NO_SYSTEM_TABLESPACE_ACCESS", - 0x0de2: "ER_NO_SYSTEM_TABLE_ACCESS", - 0x0de3: "ER_NO_SYSTEM_TABLE_ACCESS_FOR_DICTIONARY_TABLE", - 0x0de4: "ER_NO_SYSTEM_TABLE_ACCESS_FOR_SYSTEM_TABLE", - 0x0de5: "ER_NO_SYSTEM_TABLE_ACCESS_FOR_TABLE", - 0x0de6: "ER_INVALID_OPTION_KEY", - 0x0de7: "ER_INVALID_OPTION_VALUE", - 0x0de8: "ER_INVALID_OPTION_KEY_VALUE_PAIR", - 0x0de9: "ER_INVALID_OPTION_START_CHARACTER", - 0x0dea: "ER_INVALID_OPTION_END_CHARACTER", - 0x0deb: "ER_INVALID_OPTION_CHARACTERS", - 0x0dec: "ER_DUPLICATE_OPTION_KEY", - 0x0ded: "ER_WARN_SRS_NOT_FOUND_AXIS_ORDER", - 0x0dee: "ER_NO_ACCESS_TO_NATIVE_FCT", - 0x0def: "ER_RESET_MASTER_TO_VALUE_OUT_OF_RANGE", - 0x0df0: "ER_UNRESOLVED_TABLE_LOCK", - 0x0df1: "ER_DUPLICATE_TABLE_LOCK", - 0x0df2: "ER_BINLOG_UNSAFE_SKIP_LOCKED", - 0x0df3: "ER_BINLOG_UNSAFE_NOWAIT", - 0x0df4: "ER_LOCK_NOWAIT", - 0x0df5: "ER_CTE_RECURSIVE_REQUIRES_UNION", - 0x0df6: "ER_CTE_RECURSIVE_REQUIRES_NONRECURSIVE_FIRST", - 0x0df7: "ER_CTE_RECURSIVE_FORBIDS_AGGREGATION", - 0x0df8: "ER_CTE_RECURSIVE_FORBIDDEN_JOIN_ORDER", - 0x0df9: "ER_CTE_RECURSIVE_REQUIRES_SINGLE_REFERENCE", - 0x0dfa: "ER_SWITCH_TMP_ENGINE", - 0x0dfb: "ER_WINDOW_NO_SUCH_WINDOW", - 0x0dfc: "ER_WINDOW_CIRCULARITY_IN_WINDOW_GRAPH", - 0x0dfd: "ER_WINDOW_NO_CHILD_PARTITIONING", - 0x0dfe: "ER_WINDOW_NO_INHERIT_FRAME", - 0x0dff: "ER_WINDOW_NO_REDEFINE_ORDER_BY", - 0x0e00: "ER_WINDOW_FRAME_START_ILLEGAL", - 0x0e01: "ER_WINDOW_FRAME_END_ILLEGAL", - 0x0e02: "ER_WINDOW_FRAME_ILLEGAL", - 0x0e03: "ER_WINDOW_RANGE_FRAME_ORDER_TYPE", - 0x0e04: "ER_WINDOW_RANGE_FRAME_TEMPORAL_TYPE", - 0x0e05: "ER_WINDOW_RANGE_FRAME_NUMERIC_TYPE", - 0x0e06: "ER_WINDOW_RANGE_BOUND_NOT_CONSTANT", - 0x0e07: "ER_WINDOW_DUPLICATE_NAME", - 0x0e08: "ER_WINDOW_ILLEGAL_ORDER_BY", - 0x0e09: "ER_WINDOW_INVALID_WINDOW_FUNC_USE", - 0x0e0a: "ER_WINDOW_INVALID_WINDOW_FUNC_ALIAS_USE", - 0x0e0b: "ER_WINDOW_NESTED_WINDOW_FUNC_USE_IN_WINDOW_SPEC", - 0x0e0c: "ER_WINDOW_ROWS_INTERVAL_USE", - 0x0e0d: "ER_WINDOW_NO_GROUP_ORDER", - 0x0e0e: "ER_WINDOW_EXPLAIN_JSON", - 0x0e0f: "ER_WINDOW_FUNCTION_IGNORES_FRAME", - 0x0e10: "ER_WL9236_NOW_UNUSED", - 0x0e11: "ER_INVALID_NO_OF_ARGS", - 0x0e12: "ER_FIELD_IN_GROUPING_NOT_GROUP_BY", - 0x0e13: "ER_TOO_LONG_TABLESPACE_COMMENT", - 0x0e14: "ER_ENGINE_CANT_DROP_TABLE", - 0x0e15: "ER_ENGINE_CANT_DROP_MISSING_TABLE", - 0x0e16: "ER_TABLESPACE_DUP_FILENAME", - 0x0e17: "ER_DB_DROP_RMDIR2", - 0x0e18: "ER_IMP_NO_FILES_MATCHED", - 0x0e19: "ER_IMP_SCHEMA_DOES_NOT_EXIST", - 0x0e1a: "ER_IMP_TABLE_ALREADY_EXISTS", - 0x0e1b: "ER_IMP_INCOMPATIBLE_MYSQLD_VERSION", - 0x0e1c: "ER_IMP_INCOMPATIBLE_DD_VERSION", - 0x0e1d: "ER_IMP_INCOMPATIBLE_SDI_VERSION", - 0x0e1e: "ER_WARN_INVALID_HINT", - 0x0e1f: "ER_VAR_DOES_NOT_EXIST", - 0x0e20: "ER_LONGITUDE_OUT_OF_RANGE", - 0x0e21: "ER_LATITUDE_OUT_OF_RANGE", - 0x0e22: "ER_NOT_IMPLEMENTED_FOR_GEOGRAPHIC_SRS", - 0x0e23: "ER_ILLEGAL_PRIVILEGE_LEVEL", - 0x0e24: "ER_NO_SYSTEM_VIEW_ACCESS", - 0x0e25: "ER_COMPONENT_FILTER_FLABBERGASTED", - 0x0e26: "ER_PART_EXPR_TOO_LONG", - 0x0e27: "ER_UDF_DROP_DYNAMICALLY_REGISTERED", - 0x0e28: "ER_UNABLE_TO_STORE_COLUMN_STATISTICS", - 0x0e29: "ER_UNABLE_TO_UPDATE_COLUMN_STATISTICS", - 0x0e2a: "ER_UNABLE_TO_DROP_COLUMN_STATISTICS", - 0x0e2b: "ER_UNABLE_TO_BUILD_HISTOGRAM", - 0x0e2c: "ER_MANDATORY_ROLE", - 0x0e2d: "ER_MISSING_TABLESPACE_FILE", - 0x0e2e: "ER_PERSIST_ONLY_ACCESS_DENIED_ERROR", - 0x0e2f: "ER_CMD_NEED_SUPER", - 0x0e30: "ER_PATH_IN_DATADIR", - 0x0e31: "ER_DDL_IN_PROGRESS", - 0x0e32: "ER_TOO_MANY_CONCURRENT_CLONES", - 0x0e33: "ER_APPLIER_LOG_EVENT_VALIDATION_ERROR", - 0x0e34: "ER_CTE_MAX_RECURSION_DEPTH", - 0x0e35: "ER_NOT_HINT_UPDATABLE_VARIABLE", - 0x0e36: "ER_CREDENTIALS_CONTRADICT_TO_HISTORY", - 0x0e37: "ER_WARNING_PASSWORD_HISTORY_CLAUSES_VOID", - 0x0e38: "ER_CLIENT_DOES_NOT_SUPPORT", - 0x0e39: "ER_I_S_SKIPPED_TABLESPACE", - 0x0e3a: "ER_TABLESPACE_ENGINE_MISMATCH", - 0x0e3b: "ER_WRONG_SRID_FOR_COLUMN", - 0x0e3c: "ER_CANNOT_ALTER_SRID_DUE_TO_INDEX", - 0x0e3d: "ER_WARN_BINLOG_PARTIAL_UPDATES_DISABLED", - 0x0e3e: "ER_WARN_BINLOG_V1_ROW_EVENTS_DISABLED", - 0x0e3f: "ER_WARN_BINLOG_PARTIAL_UPDATES_SUGGESTS_PARTIAL_IMAGES", - 0x0e40: "ER_COULD_NOT_APPLY_JSON_DIFF", - 0x0e41: "ER_CORRUPTED_JSON_DIFF", - 0x0e42: "ER_RESOURCE_GROUP_EXISTS", - 0x0e43: "ER_RESOURCE_GROUP_NOT_EXISTS", - 0x0e44: "ER_INVALID_VCPU_ID", - 0x0e45: "ER_INVALID_VCPU_RANGE", - 0x0e46: "ER_INVALID_THREAD_PRIORITY", - 0x0e47: "ER_DISALLOWED_OPERATION", - 0x0e48: "ER_RESOURCE_GROUP_BUSY", - 0x0e49: "ER_RESOURCE_GROUP_DISABLED", - 0x0e4a: "ER_FEATURE_UNSUPPORTED", - 0x0e4b: "ER_ATTRIBUTE_IGNORED", - 0x0e4c: "ER_INVALID_THREAD_ID", - 0x0e4d: "ER_RESOURCE_GROUP_BIND_FAILED", - 0x0e4e: "ER_INVALID_USE_OF_FORCE_OPTION", - 0x0e4f: "ER_GROUP_REPLICATION_COMMAND_FAILURE", - 0x0e50: "ER_SDI_OPERATION_FAILED", - 0x0e51: "ER_MISSING_JSON_TABLE_VALUE", - 0x0e52: "ER_WRONG_JSON_TABLE_VALUE", - 0x0e53: "ER_TF_MUST_HAVE_ALIAS", - 0x0e54: "ER_TF_FORBIDDEN_JOIN_TYPE", - 0x0e55: "ER_JT_VALUE_OUT_OF_RANGE", - 0x0e56: "ER_JT_MAX_NESTED_PATH", - 0x0e57: "ER_PASSWORD_EXPIRATION_NOT_SUPPORTED_BY_AUTH_METHOD", - 0x0e58: "ER_INVALID_GEOJSON_CRS_NOT_TOP_LEVEL", - 0x0e59: "ER_BAD_NULL_ERROR_NOT_IGNORED", - 0x0e5a: "WARN_USELESS_SPATIAL_INDEX", - 0x0e5b: "ER_DISK_FULL_NOWAIT", - 0x0e5c: "ER_PARSE_ERROR_IN_DIGEST_FN", - 0x0e5d: "ER_UNDISCLOSED_PARSE_ERROR_IN_DIGEST_FN", - 0x0e5e: "ER_SCHEMA_DIR_EXISTS", - 0x0e5f: "ER_SCHEMA_DIR_MISSING", - 0x0e60: "ER_SCHEMA_DIR_CREATE_FAILED", - 0x0e61: "ER_SCHEMA_DIR_UNKNOWN", - 0x0e62: "ER_ONLY_IMPLEMENTED_FOR_SRID_0_AND_4326", - 0x0e63: "ER_BINLOG_EXPIRE_LOG_DAYS_AND_SECS_USED_TOGETHER", - 0x0e64: "ER_REGEXP_BUFFER_OVERFLOW", - 0x0e65: "ER_REGEXP_ILLEGAL_ARGUMENT", - 0x0e66: "ER_REGEXP_INDEX_OUTOFBOUNDS_ERROR", - 0x0e67: "ER_REGEXP_INTERNAL_ERROR", - 0x0e68: "ER_REGEXP_RULE_SYNTAX", - 0x0e69: "ER_REGEXP_BAD_ESCAPE_SEQUENCE", - 0x0e6a: "ER_REGEXP_UNIMPLEMENTED", - 0x0e6b: "ER_REGEXP_MISMATCHED_PAREN", - 0x0e6c: "ER_REGEXP_BAD_INTERVAL", - 0x0e6d: "ER_REGEXP_MAX_LT_MIN", - 0x0e6e: "ER_REGEXP_INVALID_BACK_REF", - 0x0e6f: "ER_REGEXP_LOOK_BEHIND_LIMIT", - 0x0e70: "ER_REGEXP_MISSING_CLOSE_BRACKET", - 0x0e71: "ER_REGEXP_INVALID_RANGE", - 0x0e72: "ER_REGEXP_STACK_OVERFLOW", - 0x0e73: "ER_REGEXP_TIME_OUT", - 0x0e74: "ER_REGEXP_PATTERN_TOO_BIG", - 0x0e75: "ER_CANT_SET_ERROR_LOG_SERVICE", - 0x0e76: "ER_EMPTY_PIPELINE_FOR_ERROR_LOG_SERVICE", - 0x0e77: "ER_COMPONENT_FILTER_DIAGNOSTICS", - 0x0e78: "ER_NOT_IMPLEMENTED_FOR_CARTESIAN_SRS", - 0x0e79: "ER_NOT_IMPLEMENTED_FOR_PROJECTED_SRS", - 0x0e7a: "ER_NONPOSITIVE_RADIUS", - 0x0e7b: "ER_RESTART_SERVER_FAILED", - 0x0e7c: "ER_SRS_MISSING_MANDATORY_ATTRIBUTE", - 0x0e7d: "ER_SRS_MULTIPLE_ATTRIBUTE_DEFINITIONS", - 0x0e7e: "ER_SRS_NAME_CANT_BE_EMPTY_OR_WHITESPACE", - 0x0e7f: "ER_SRS_ORGANIZATION_CANT_BE_EMPTY_OR_WHITESPACE", - 0x0e80: "ER_SRS_ID_ALREADY_EXISTS", - 0x0e81: "ER_WARN_SRS_ID_ALREADY_EXISTS", - 0x0e82: "ER_CANT_MODIFY_SRID_0", - 0x0e83: "ER_WARN_RESERVED_SRID_RANGE", - 0x0e84: "ER_CANT_MODIFY_SRS_USED_BY_COLUMN", - 0x0e85: "ER_SRS_INVALID_CHARACTER_IN_ATTRIBUTE", - 0x0e86: "ER_SRS_ATTRIBUTE_STRING_TOO_LONG", - 0x0e87: "ER_DEPRECATED_UTF8_ALIAS", - 0x0e88: "ER_DEPRECATED_NATIONAL", - 0x0e89: "ER_INVALID_DEFAULT_UTF8MB4_COLLATION", - 0x0e8a: "ER_UNABLE_TO_COLLECT_LOG_STATUS", - 0x0e8b: "ER_RESERVED_TABLESPACE_NAME", - 0x0e8c: "ER_UNABLE_TO_SET_OPTION", - 0x0e8d: "ER_SLAVE_POSSIBLY_DIVERGED_AFTER_DDL", - 0x0e8e: "ER_SRS_NOT_GEOGRAPHIC", - 0x0e8f: "ER_POLYGON_TOO_LARGE", - 0x0e90: "ER_SPATIAL_UNIQUE_INDEX", - 0x0e91: "ER_INDEX_TYPE_NOT_SUPPORTED_FOR_SPATIAL_INDEX", - 0x0e92: "ER_FK_CANNOT_DROP_PARENT", - 0x0e93: "ER_GEOMETRY_PARAM_LONGITUDE_OUT_OF_RANGE", - 0x0e94: "ER_GEOMETRY_PARAM_LATITUDE_OUT_OF_RANGE", - 0x0e95: "ER_FK_CANNOT_USE_VIRTUAL_COLUMN", - 0x0e96: "ER_FK_NO_COLUMN_PARENT", - 0x0f61: "ER_AUTHCACHE_ROLE_TABLES_DODGY", - 0x11e0: "ER_DISK_FULL", + 0x0BB8: "ER_FILE_CORRUPT", + 0x0BB9: "ER_ERROR_ON_MASTER", + 0x0BBA: "ER_INCONSISTENT_ERROR", + 0x0BBB: "ER_STORAGE_ENGINE_NOT_LOADED", + 0x0BBC: "ER_GET_STACKED_DA_WITHOUT_ACTIVE_HANDLER", + 0x0BBD: "ER_WARN_LEGACY_SYNTAX_CONVERTED", + 0x0BBE: "ER_BINLOG_UNSAFE_FULLTEXT_PLUGIN", + 0x0BBF: "ER_CANNOT_DISCARD_TEMPORARY_TABLE", + 0x0BC0: "ER_FK_DEPTH_EXCEEDED", + 0x0BC1: "ER_COL_COUNT_DOESNT_MATCH_PLEASE_UPDATE_V2", + 0x0BC2: "ER_WARN_TRIGGER_DOESNT_HAVE_CREATED", + 0x0BC3: "ER_REFERENCED_TRG_DOES_NOT_EXIST", + 0x0BC4: "ER_EXPLAIN_NOT_SUPPORTED", + 0x0BC5: "ER_INVALID_FIELD_SIZE", + 0x0BC6: "ER_MISSING_HA_CREATE_OPTION", + 0x0BC7: "ER_ENGINE_OUT_OF_MEMORY", + 0x0BC8: "ER_PASSWORD_EXPIRE_ANONYMOUS_USER", + 0x0BC9: "ER_SLAVE_SQL_THREAD_MUST_STOP", + 0x0BCA: "ER_NO_FT_MATERIALIZED_SUBQUERY", + 0x0BCB: "ER_INNODB_UNDO_LOG_FULL", + 0x0BCC: "ER_INVALID_ARGUMENT_FOR_LOGARITHM", + 0x0BCD: "ER_SLAVE_CHANNEL_IO_THREAD_MUST_STOP", + 0x0BCE: "ER_WARN_OPEN_TEMP_TABLES_MUST_BE_ZERO", + 0x0BCF: "ER_WARN_ONLY_MASTER_LOG_FILE_NO_POS", + 0x0BD0: "ER_QUERY_TIMEOUT", + 0x0BD1: "ER_NON_RO_SELECT_DISABLE_TIMER", + 0x0BD2: "ER_DUP_LIST_ENTRY", + 0x0BD3: "ER_SQL_MODE_NO_EFFECT", + 0x0BD4: "ER_AGGREGATE_ORDER_FOR_UNION", + 0x0BD5: "ER_AGGREGATE_ORDER_NON_AGG_QUERY", + 0x0BD6: "ER_SLAVE_WORKER_STOPPED_PREVIOUS_THD_ERROR", + 0x0BD7: "ER_DONT_SUPPORT_SLAVE_PRESERVE_COMMIT_ORDER", + 0x0BD8: "ER_SERVER_OFFLINE_MODE", + 0x0BD9: "ER_GIS_DIFFERENT_SRIDS", + 0x0BDA: "ER_GIS_UNSUPPORTED_ARGUMENT", + 0x0BDB: "ER_GIS_UNKNOWN_ERROR", + 0x0BDC: "ER_GIS_UNKNOWN_EXCEPTION", + 0x0BDD: "ER_GIS_INVALID_DATA", + 0x0BDE: "ER_BOOST_GEOMETRY_EMPTY_INPUT_EXCEPTION", + 0x0BDF: "ER_BOOST_GEOMETRY_CENTROID_EXCEPTION", + 0x0BE0: "ER_BOOST_GEOMETRY_OVERLAY_INVALID_INPUT_EXCEPTION", + 0x0BE1: "ER_BOOST_GEOMETRY_TURN_INFO_EXCEPTION", + 0x0BE2: "ER_BOOST_GEOMETRY_SELF_INTERSECTION_POINT_EXCEPTION", + 0x0BE3: "ER_BOOST_GEOMETRY_UNKNOWN_EXCEPTION", + 0x0BE4: "ER_STD_BAD_ALLOC_ERROR", + 0x0BE5: "ER_STD_DOMAIN_ERROR", + 0x0BE6: "ER_STD_LENGTH_ERROR", + 0x0BE7: "ER_STD_INVALID_ARGUMENT", + 0x0BE8: "ER_STD_OUT_OF_RANGE_ERROR", + 0x0BE9: "ER_STD_OVERFLOW_ERROR", + 0x0BEA: "ER_STD_RANGE_ERROR", + 0x0BEB: "ER_STD_UNDERFLOW_ERROR", + 0x0BEC: "ER_STD_LOGIC_ERROR", + 0x0BED: "ER_STD_RUNTIME_ERROR", + 0x0BEE: "ER_STD_UNKNOWN_EXCEPTION", + 0x0BEF: "ER_GIS_DATA_WRONG_ENDIANESS", + 0x0BF0: "ER_CHANGE_MASTER_PASSWORD_LENGTH", + 0x0BF1: "ER_USER_LOCK_WRONG_NAME", + 0x0BF2: "ER_USER_LOCK_DEADLOCK", + 0x0BF3: "ER_REPLACE_INACCESSIBLE_ROWS", + 0x0BF4: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_GIS", + 0x0BF5: "ER_ILLEGAL_USER_VAR", + 0x0BF6: "ER_GTID_MODE_OFF", + 0x0BF7: "ER_UNSUPPORTED_BY_REPLICATION_THREAD", + 0x0BF8: "ER_INCORRECT_TYPE", + 0x0BF9: "ER_FIELD_IN_ORDER_NOT_SELECT", + 0x0BFA: "ER_AGGREGATE_IN_ORDER_NOT_SELECT", + 0x0BFB: "ER_INVALID_RPL_WILD_TABLE_FILTER_PATTERN", + 0x0BFC: "ER_NET_OK_PACKET_TOO_LARGE", + 0x0BFD: "ER_INVALID_JSON_DATA", + 0x0BFE: "ER_INVALID_GEOJSON_MISSING_MEMBER", + 0x0BFF: "ER_INVALID_GEOJSON_WRONG_TYPE", + 0x0C00: "ER_INVALID_GEOJSON_UNSPECIFIED", + 0x0C01: "ER_DIMENSION_UNSUPPORTED", + 0x0C02: "ER_SLAVE_CHANNEL_DOES_NOT_EXIST", + 0x0C03: "ER_SLAVE_MULTIPLE_CHANNELS_HOST_PORT", + 0x0C04: "ER_SLAVE_CHANNEL_NAME_INVALID_OR_TOO_LONG", + 0x0C05: "ER_SLAVE_NEW_CHANNEL_WRONG_REPOSITORY", + 0x0C06: "ER_SLAVE_CHANNEL_DELETE", + 0x0C07: "ER_SLAVE_MULTIPLE_CHANNELS_CMD", + 0x0C08: "ER_SLAVE_MAX_CHANNELS_EXCEEDED", + 0x0C09: "ER_SLAVE_CHANNEL_MUST_STOP", + 0x0C0A: "ER_SLAVE_CHANNEL_NOT_RUNNING", + 0x0C0B: "ER_SLAVE_CHANNEL_WAS_RUNNING", + 0x0C0C: "ER_SLAVE_CHANNEL_WAS_NOT_RUNNING", + 0x0C0D: "ER_SLAVE_CHANNEL_SQL_THREAD_MUST_STOP", + 0x0C0E: "ER_SLAVE_CHANNEL_SQL_SKIP_COUNTER", + 0x0C0F: "ER_WRONG_FIELD_WITH_GROUP_V2", + 0x0C10: "ER_MIX_OF_GROUP_FUNC_AND_FIELDS_V2", + 0x0C11: "ER_WARN_DEPRECATED_SYSVAR_UPDATE", + 0x0C12: "ER_WARN_DEPRECATED_SQLMODE", + 0x0C13: "ER_CANNOT_LOG_PARTIAL_DROP_DATABASE_WITH_GTID", + 0x0C14: "ER_GROUP_REPLICATION_CONFIGURATION", + 0x0C15: "ER_GROUP_REPLICATION_RUNNING", + 0x0C16: "ER_GROUP_REPLICATION_APPLIER_INIT_ERROR", + 0x0C17: "ER_GROUP_REPLICATION_STOP_APPLIER_THREAD_TIMEOUT", + 0x0C18: "ER_GROUP_REPLICATION_COMMUNICATION_LAYER_SESSION_ERROR", + 0x0C19: "ER_GROUP_REPLICATION_COMMUNICATION_LAYER_JOIN_ERROR", + 0x0C1A: "ER_BEFORE_DML_VALIDATION_ERROR", + 0x0C1B: "ER_PREVENTS_VARIABLE_WITHOUT_RBR", + 0x0C1C: "ER_RUN_HOOK_ERROR", + 0x0C1D: "ER_TRANSACTION_ROLLBACK_DURING_COMMIT", + 0x0C1E: "ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED", + 0x0C1F: "ER_UNSUPPORTED_ALTER_INPLACE_ON_VIRTUAL_COLUMN", + 0x0C20: "ER_WRONG_FK_OPTION_FOR_GENERATED_COLUMN", + 0x0C21: "ER_NON_DEFAULT_VALUE_FOR_GENERATED_COLUMN", + 0x0C22: "ER_UNSUPPORTED_ACTION_ON_GENERATED_COLUMN", + 0x0C23: "ER_GENERATED_COLUMN_NON_PRIOR", + 0x0C24: "ER_DEPENDENT_BY_GENERATED_COLUMN", + 0x0C25: "ER_GENERATED_COLUMN_REF_AUTO_INC", + 0x0C26: "ER_FEATURE_NOT_AVAILABLE", + 0x0C27: "ER_CANT_SET_GTID_MODE", + 0x0C28: "ER_CANT_USE_AUTO_POSITION_WITH_GTID_MODE_OFF", + 0x0C29: "ER_CANT_REPLICATE_ANONYMOUS_WITH_AUTO_POSITION", + 0x0C2A: "ER_CANT_REPLICATE_ANONYMOUS_WITH_GTID_MODE_ON", + 0x0C2B: "ER_CANT_REPLICATE_GTID_WITH_GTID_MODE_OFF", + 0x0C2C: "ER_CANT_ENFORCE_GTID_CONSISTENCY_WITH_ONGOING_GTID_VIOLATING_TX", + 0x0C2D: "ER_ENFORCE_GTID_CONSISTENCY_WARN_WITH_ONGOING_GTID_VIOLATING_TX", + 0x0C2E: "ER_ACCOUNT_HAS_BEEN_LOCKED", + 0x0C2F: "ER_WRONG_TABLESPACE_NAME", + 0x0C30: "ER_TABLESPACE_IS_NOT_EMPTY", + 0x0C31: "ER_WRONG_FILE_NAME", + 0x0C32: "ER_BOOST_GEOMETRY_INCONSISTENT_TURNS_EXCEPTION", + 0x0C33: "ER_WARN_OPTIMIZER_HINT_SYNTAX_ERROR", + 0x0C34: "ER_WARN_BAD_MAX_EXECUTION_TIME", + 0x0C35: "ER_WARN_UNSUPPORTED_MAX_EXECUTION_TIME", + 0x0C36: "ER_WARN_CONFLICTING_HINT", + 0x0C37: "ER_WARN_UNKNOWN_QB_NAME", + 0x0C38: "ER_UNRESOLVED_HINT_NAME", + 0x0C39: "ER_WARN_ON_MODIFYING_GTID_EXECUTED_TABLE", + 0x0C3A: "ER_PLUGGABLE_PROTOCOL_COMMAND_NOT_SUPPORTED", + 0x0C3B: "ER_LOCKING_SERVICE_WRONG_NAME", + 0x0C3C: "ER_LOCKING_SERVICE_DEADLOCK", + 0x0C3D: "ER_LOCKING_SERVICE_TIMEOUT", + 0x0C3E: "ER_GIS_MAX_POINTS_IN_GEOMETRY_OVERFLOWED", + 0x0C3F: "ER_SQL_MODE_MERGED", + 0x0C40: "ER_VTOKEN_PLUGIN_TOKEN_MISMATCH", + 0x0C41: "ER_VTOKEN_PLUGIN_TOKEN_NOT_FOUND", + 0x0C42: "ER_CANT_SET_VARIABLE_WHEN_OWNING_GTID", + 0x0C43: "ER_SLAVE_CHANNEL_OPERATION_NOT_ALLOWED", + 0x0C44: "ER_INVALID_JSON_TEXT", + 0x0C45: "ER_INVALID_JSON_TEXT_IN_PARAM", + 0x0C46: "ER_INVALID_JSON_BINARY_DATA", + 0x0C47: "ER_INVALID_JSON_PATH", + 0x0C48: "ER_INVALID_JSON_CHARSET", + 0x0C49: "ER_INVALID_JSON_CHARSET_IN_FUNCTION", + 0x0C4A: "ER_INVALID_TYPE_FOR_JSON", + 0x0C4B: "ER_INVALID_CAST_TO_JSON", + 0x0C4C: "ER_INVALID_JSON_PATH_CHARSET", + 0x0C4D: "ER_INVALID_JSON_PATH_WILDCARD", + 0x0C4E: "ER_JSON_VALUE_TOO_BIG", + 0x0C4F: "ER_JSON_KEY_TOO_BIG", + 0x0C50: "ER_JSON_USED_AS_KEY", + 0x0C51: "ER_JSON_VACUOUS_PATH", + 0x0C52: "ER_JSON_BAD_ONE_OR_ALL_ARG", + 0x0C53: "ER_NUMERIC_JSON_VALUE_OUT_OF_RANGE", + 0x0C54: "ER_INVALID_JSON_VALUE_FOR_CAST", + 0x0C55: "ER_JSON_DOCUMENT_TOO_DEEP", + 0x0C56: "ER_JSON_DOCUMENT_NULL_KEY", + 0x0C57: "ER_SECURE_TRANSPORT_REQUIRED", + 0x0C58: "ER_NO_SECURE_TRANSPORTS_CONFIGURED", + 0x0C59: "ER_DISABLED_STORAGE_ENGINE", + 0x0C5A: "ER_USER_DOES_NOT_EXIST", + 0x0C5B: "ER_USER_ALREADY_EXISTS", + 0x0C5C: "ER_AUDIT_API_ABORT", + 0x0C5D: "ER_INVALID_JSON_PATH_ARRAY_CELL", + 0x0C5E: "ER_BUFPOOL_RESIZE_INPROGRESS", + 0x0C5F: "ER_FEATURE_DISABLED_SEE_DOC", + 0x0C60: "ER_SERVER_ISNT_AVAILABLE", + 0x0C61: "ER_SESSION_WAS_KILLED", + 0x0C62: "ER_CAPACITY_EXCEEDED", + 0x0C63: "ER_CAPACITY_EXCEEDED_IN_RANGE_OPTIMIZER", + 0x0C64: "ER_TABLE_NEEDS_UPG_PART", + 0x0C65: "ER_CANT_WAIT_FOR_EXECUTED_GTID_SET_WHILE_OWNING_A_GTID", + 0x0C66: "ER_CANNOT_ADD_FOREIGN_BASE_COL_VIRTUAL", + 0x0C67: "ER_CANNOT_CREATE_VIRTUAL_INDEX_CONSTRAINT", + 0x0C68: "ER_ERROR_ON_MODIFYING_GTID_EXECUTED_TABLE", + 0x0C69: "ER_LOCK_REFUSED_BY_ENGINE", + 0x0C6A: "ER_UNSUPPORTED_ALTER_ONLINE_ON_VIRTUAL_COLUMN", + 0x0C6B: "ER_MASTER_KEY_ROTATION_NOT_SUPPORTED_BY_SE", + 0x0C6C: "ER_MASTER_KEY_ROTATION_ERROR_BY_SE", + 0x0C6D: "ER_MASTER_KEY_ROTATION_BINLOG_FAILED", + 0x0C6E: "ER_MASTER_KEY_ROTATION_SE_UNAVAILABLE", + 0x0C6F: "ER_TABLESPACE_CANNOT_ENCRYPT", + 0x0C70: "ER_INVALID_ENCRYPTION_OPTION", + 0x0C71: "ER_CANNOT_FIND_KEY_IN_KEYRING", + 0x0C72: "ER_CAPACITY_EXCEEDED_IN_PARSER", + 0x0C73: "ER_UNSUPPORTED_ALTER_ENCRYPTION_INPLACE", + 0x0C74: "ER_KEYRING_UDF_KEYRING_SERVICE_ERROR", + 0x0C75: "ER_USER_COLUMN_OLD_LENGTH", + 0x0C76: "ER_CANT_RESET_MASTER", + 0x0C77: "ER_GROUP_REPLICATION_MAX_GROUP_SIZE", + 0x0C78: "ER_CANNOT_ADD_FOREIGN_BASE_COL_STORED", + 0x0C79: "ER_TABLE_REFERENCED", + 0x0C7A: "ER_PARTITION_ENGINE_DEPRECATED_FOR_TABLE", + 0x0C7B: "ER_WARN_USING_GEOMFROMWKB_TO_SET_SRID_ZERO", + 0x0C7C: "ER_WARN_USING_GEOMFROMWKB_TO_SET_SRID", + 0x0C7D: "ER_XA_RETRY", + 0x0C7E: "ER_KEYRING_AWS_UDF_AWS_KMS_ERROR", + 0x0C7F: "ER_BINLOG_UNSAFE_XA", + 0x0C80: "ER_UDF_ERROR", + 0x0C81: "ER_KEYRING_MIGRATION_FAILURE", + 0x0C82: "ER_KEYRING_ACCESS_DENIED_ERROR", + 0x0C83: "ER_KEYRING_MIGRATION_STATUS", + 0x0C84: "ER_PLUGIN_FAILED_TO_OPEN_TABLES", + 0x0C85: "ER_PLUGIN_FAILED_TO_OPEN_TABLE", + 0x0C86: "ER_AUDIT_LOG_NO_KEYRING_PLUGIN_INSTALLED", + 0x0C87: "ER_AUDIT_LOG_ENCRYPTION_PASSWORD_HAS_NOT_BEEN_SET", + 0x0C88: "ER_AUDIT_LOG_COULD_NOT_CREATE_AES_KEY", + 0x0C89: "ER_AUDIT_LOG_ENCRYPTION_PASSWORD_CANNOT_BE_FETCHED", + 0x0C8A: "ER_AUDIT_LOG_JSON_FILTERING_NOT_ENABLED", + 0x0C8B: "ER_AUDIT_LOG_UDF_INSUFFICIENT_PRIVILEGE", + 0x0C8C: "ER_AUDIT_LOG_SUPER_PRIVILEGE_REQUIRED", + 0x0C8D: "ER_COULD_NOT_REINITIALIZE_AUDIT_LOG_FILTERS", + 0x0C8E: "ER_AUDIT_LOG_UDF_INVALID_ARGUMENT_TYPE", + 0x0C8F: "ER_AUDIT_LOG_UDF_INVALID_ARGUMENT_COUNT", + 0x0C90: "ER_AUDIT_LOG_HAS_NOT_BEEN_INSTALLED", + 0x0C91: "ER_AUDIT_LOG_UDF_READ_INVALID_MAX_ARRAY_LENGTH_ARG_TYPE", + 0x0C92: "ER_AUDIT_LOG_UDF_READ_INVALID_MAX_ARRAY_LENGTH_ARG_VALUE", + 0x0C93: "ER_AUDIT_LOG_JSON_FILTER_PARSING_ERROR", + 0x0C94: "ER_AUDIT_LOG_JSON_FILTER_NAME_CANNOT_BE_EMPTY", + 0x0C95: "ER_AUDIT_LOG_JSON_USER_NAME_CANNOT_BE_EMPTY", + 0x0C96: "ER_AUDIT_LOG_JSON_FILTER_DOES_NOT_EXISTS", + 0x0C97: "ER_AUDIT_LOG_USER_FIRST_CHARACTER_MUST_BE_ALPHANUMERIC", + 0x0C98: "ER_AUDIT_LOG_USER_NAME_INVALID_CHARACTER", + 0x0C99: "ER_AUDIT_LOG_HOST_NAME_INVALID_CHARACTER", + 0x0C9A: "WARN_DEPRECATED_MAXDB_SQL_MODE_FOR_TIMESTAMP", + 0x0C9B: "ER_XA_REPLICATION_FILTERS", + 0x0DAC: "ER_UNSUPPORT_COMPRESSED_TEMPORARY_TABLE", + 0x0DAD: "ER_ACL_OPERATION_FAILED", + 0x0DAE: "ER_UNSUPPORTED_INDEX_ALGORITHM", + 0x0DAF: "ER_NO_SUCH_DB", + 0x0DB0: "ER_TOO_BIG_ENUM", + 0x0DB1: "ER_TOO_LONG_SET_ENUM_VALUE", + 0x0DB2: "ER_INVALID_DD_OBJECT", + 0x0DB3: "ER_UPDATING_DD_TABLE", + 0x0DB4: "ER_INVALID_DD_OBJECT_ID", + 0x0DB5: "ER_INVALID_DD_OBJECT_NAME", + 0x0DB6: "ER_TABLESPACE_MISSING_WITH_NAME", + 0x0DB7: "ER_TOO_LONG_ROUTINE_COMMENT", + 0x0DB8: "ER_SP_LOAD_FAILED", + 0x0DB9: "ER_INVALID_BITWISE_OPERANDS_SIZE", + 0x0DBA: "ER_INVALID_BITWISE_AGGREGATE_OPERANDS_SIZE", + 0x0DBB: "ER_WARN_UNSUPPORTED_HINT", + 0x0DBC: "ER_UNEXPECTED_GEOMETRY_TYPE", + 0x0DBD: "ER_SRS_PARSE_ERROR", + 0x0DBE: "ER_SRS_PROJ_PARAMETER_MISSING", + 0x0DBF: "ER_WARN_SRS_NOT_FOUND", + 0x0DC0: "ER_SRS_NOT_CARTESIAN", + 0x0DC1: "ER_SRS_NOT_CARTESIAN_UNDEFINED", + 0x0DC2: "ER_PK_INDEX_CANT_BE_INVISIBLE", + 0x0DC3: "ER_UNKNOWN_AUTHID", + 0x0DC4: "ER_FAILED_ROLE_GRANT", + 0x0DC5: "ER_OPEN_ROLE_TABLES", + 0x0DC6: "ER_FAILED_DEFAULT_ROLES", + 0x0DC7: "ER_COMPONENTS_NO_SCHEME", + 0x0DC8: "ER_COMPONENTS_NO_SCHEME_SERVICE", + 0x0DC9: "ER_COMPONENTS_CANT_LOAD", + 0x0DCA: "ER_ROLE_NOT_GRANTED", + 0x0DCB: "ER_FAILED_REVOKE_ROLE", + 0x0DCC: "ER_RENAME_ROLE", + 0x0DCD: "ER_COMPONENTS_CANT_ACQUIRE_SERVICE_IMPLEMENTATION", + 0x0DCE: "ER_COMPONENTS_CANT_SATISFY_DEPENDENCY", + 0x0DCF: "ER_COMPONENTS_LOAD_CANT_REGISTER_SERVICE_IMPLEMENTATION", + 0x0DD0: "ER_COMPONENTS_LOAD_CANT_INITIALIZE", + 0x0DD1: "ER_COMPONENTS_UNLOAD_NOT_LOADED", + 0x0DD2: "ER_COMPONENTS_UNLOAD_CANT_DEINITIALIZE", + 0x0DD3: "ER_COMPONENTS_CANT_RELEASE_SERVICE", + 0x0DD4: "ER_COMPONENTS_UNLOAD_CANT_UNREGISTER_SERVICE", + 0x0DD5: "ER_COMPONENTS_CANT_UNLOAD", + 0x0DD6: "ER_WARN_UNLOAD_THE_NOT_PERSISTED", + 0x0DD7: "ER_COMPONENT_TABLE_INCORRECT", + 0x0DD8: "ER_COMPONENT_MANIPULATE_ROW_FAILED", + 0x0DD9: "ER_COMPONENTS_UNLOAD_DUPLICATE_IN_GROUP", + 0x0DDA: "ER_CANT_SET_GTID_PURGED_DUE_SETS_CONSTRAINTS", + 0x0DDB: "ER_CANNOT_LOCK_USER_MANAGEMENT_CACHES", + 0x0DDC: "ER_SRS_NOT_FOUND", + 0x0DDD: "ER_VARIABLE_NOT_PERSISTED", + 0x0DDE: "ER_IS_QUERY_INVALID_CLAUSE", + 0x0DDF: "ER_UNABLE_TO_STORE_STATISTICS", + 0x0DE0: "ER_NO_SYSTEM_SCHEMA_ACCESS", + 0x0DE1: "ER_NO_SYSTEM_TABLESPACE_ACCESS", + 0x0DE2: "ER_NO_SYSTEM_TABLE_ACCESS", + 0x0DE3: "ER_NO_SYSTEM_TABLE_ACCESS_FOR_DICTIONARY_TABLE", + 0x0DE4: "ER_NO_SYSTEM_TABLE_ACCESS_FOR_SYSTEM_TABLE", + 0x0DE5: "ER_NO_SYSTEM_TABLE_ACCESS_FOR_TABLE", + 0x0DE6: "ER_INVALID_OPTION_KEY", + 0x0DE7: "ER_INVALID_OPTION_VALUE", + 0x0DE8: "ER_INVALID_OPTION_KEY_VALUE_PAIR", + 0x0DE9: "ER_INVALID_OPTION_START_CHARACTER", + 0x0DEA: "ER_INVALID_OPTION_END_CHARACTER", + 0x0DEB: "ER_INVALID_OPTION_CHARACTERS", + 0x0DEC: "ER_DUPLICATE_OPTION_KEY", + 0x0DED: "ER_WARN_SRS_NOT_FOUND_AXIS_ORDER", + 0x0DEE: "ER_NO_ACCESS_TO_NATIVE_FCT", + 0x0DEF: "ER_RESET_MASTER_TO_VALUE_OUT_OF_RANGE", + 0x0DF0: "ER_UNRESOLVED_TABLE_LOCK", + 0x0DF1: "ER_DUPLICATE_TABLE_LOCK", + 0x0DF2: "ER_BINLOG_UNSAFE_SKIP_LOCKED", + 0x0DF3: "ER_BINLOG_UNSAFE_NOWAIT", + 0x0DF4: "ER_LOCK_NOWAIT", + 0x0DF5: "ER_CTE_RECURSIVE_REQUIRES_UNION", + 0x0DF6: "ER_CTE_RECURSIVE_REQUIRES_NONRECURSIVE_FIRST", + 0x0DF7: "ER_CTE_RECURSIVE_FORBIDS_AGGREGATION", + 0x0DF8: "ER_CTE_RECURSIVE_FORBIDDEN_JOIN_ORDER", + 0x0DF9: "ER_CTE_RECURSIVE_REQUIRES_SINGLE_REFERENCE", + 0x0DFA: "ER_SWITCH_TMP_ENGINE", + 0x0DFB: "ER_WINDOW_NO_SUCH_WINDOW", + 0x0DFC: "ER_WINDOW_CIRCULARITY_IN_WINDOW_GRAPH", + 0x0DFD: "ER_WINDOW_NO_CHILD_PARTITIONING", + 0x0DFE: "ER_WINDOW_NO_INHERIT_FRAME", + 0x0DFF: "ER_WINDOW_NO_REDEFINE_ORDER_BY", + 0x0E00: "ER_WINDOW_FRAME_START_ILLEGAL", + 0x0E01: "ER_WINDOW_FRAME_END_ILLEGAL", + 0x0E02: "ER_WINDOW_FRAME_ILLEGAL", + 0x0E03: "ER_WINDOW_RANGE_FRAME_ORDER_TYPE", + 0x0E04: "ER_WINDOW_RANGE_FRAME_TEMPORAL_TYPE", + 0x0E05: "ER_WINDOW_RANGE_FRAME_NUMERIC_TYPE", + 0x0E06: "ER_WINDOW_RANGE_BOUND_NOT_CONSTANT", + 0x0E07: "ER_WINDOW_DUPLICATE_NAME", + 0x0E08: "ER_WINDOW_ILLEGAL_ORDER_BY", + 0x0E09: "ER_WINDOW_INVALID_WINDOW_FUNC_USE", + 0x0E0A: "ER_WINDOW_INVALID_WINDOW_FUNC_ALIAS_USE", + 0x0E0B: "ER_WINDOW_NESTED_WINDOW_FUNC_USE_IN_WINDOW_SPEC", + 0x0E0C: "ER_WINDOW_ROWS_INTERVAL_USE", + 0x0E0D: "ER_WINDOW_NO_GROUP_ORDER", + 0x0E0E: "ER_WINDOW_EXPLAIN_JSON", + 0x0E0F: "ER_WINDOW_FUNCTION_IGNORES_FRAME", + 0x0E10: "ER_WL9236_NOW_UNUSED", + 0x0E11: "ER_INVALID_NO_OF_ARGS", + 0x0E12: "ER_FIELD_IN_GROUPING_NOT_GROUP_BY", + 0x0E13: "ER_TOO_LONG_TABLESPACE_COMMENT", + 0x0E14: "ER_ENGINE_CANT_DROP_TABLE", + 0x0E15: "ER_ENGINE_CANT_DROP_MISSING_TABLE", + 0x0E16: "ER_TABLESPACE_DUP_FILENAME", + 0x0E17: "ER_DB_DROP_RMDIR2", + 0x0E18: "ER_IMP_NO_FILES_MATCHED", + 0x0E19: "ER_IMP_SCHEMA_DOES_NOT_EXIST", + 0x0E1A: "ER_IMP_TABLE_ALREADY_EXISTS", + 0x0E1B: "ER_IMP_INCOMPATIBLE_MYSQLD_VERSION", + 0x0E1C: "ER_IMP_INCOMPATIBLE_DD_VERSION", + 0x0E1D: "ER_IMP_INCOMPATIBLE_SDI_VERSION", + 0x0E1E: "ER_WARN_INVALID_HINT", + 0x0E1F: "ER_VAR_DOES_NOT_EXIST", + 0x0E20: "ER_LONGITUDE_OUT_OF_RANGE", + 0x0E21: "ER_LATITUDE_OUT_OF_RANGE", + 0x0E22: "ER_NOT_IMPLEMENTED_FOR_GEOGRAPHIC_SRS", + 0x0E23: "ER_ILLEGAL_PRIVILEGE_LEVEL", + 0x0E24: "ER_NO_SYSTEM_VIEW_ACCESS", + 0x0E25: "ER_COMPONENT_FILTER_FLABBERGASTED", + 0x0E26: "ER_PART_EXPR_TOO_LONG", + 0x0E27: "ER_UDF_DROP_DYNAMICALLY_REGISTERED", + 0x0E28: "ER_UNABLE_TO_STORE_COLUMN_STATISTICS", + 0x0E29: "ER_UNABLE_TO_UPDATE_COLUMN_STATISTICS", + 0x0E2A: "ER_UNABLE_TO_DROP_COLUMN_STATISTICS", + 0x0E2B: "ER_UNABLE_TO_BUILD_HISTOGRAM", + 0x0E2C: "ER_MANDATORY_ROLE", + 0x0E2D: "ER_MISSING_TABLESPACE_FILE", + 0x0E2E: "ER_PERSIST_ONLY_ACCESS_DENIED_ERROR", + 0x0E2F: "ER_CMD_NEED_SUPER", + 0x0E30: "ER_PATH_IN_DATADIR", + 0x0E31: "ER_DDL_IN_PROGRESS", + 0x0E32: "ER_TOO_MANY_CONCURRENT_CLONES", + 0x0E33: "ER_APPLIER_LOG_EVENT_VALIDATION_ERROR", + 0x0E34: "ER_CTE_MAX_RECURSION_DEPTH", + 0x0E35: "ER_NOT_HINT_UPDATABLE_VARIABLE", + 0x0E36: "ER_CREDENTIALS_CONTRADICT_TO_HISTORY", + 0x0E37: "ER_WARNING_PASSWORD_HISTORY_CLAUSES_VOID", + 0x0E38: "ER_CLIENT_DOES_NOT_SUPPORT", + 0x0E39: "ER_I_S_SKIPPED_TABLESPACE", + 0x0E3A: "ER_TABLESPACE_ENGINE_MISMATCH", + 0x0E3B: "ER_WRONG_SRID_FOR_COLUMN", + 0x0E3C: "ER_CANNOT_ALTER_SRID_DUE_TO_INDEX", + 0x0E3D: "ER_WARN_BINLOG_PARTIAL_UPDATES_DISABLED", + 0x0E3E: "ER_WARN_BINLOG_V1_ROW_EVENTS_DISABLED", + 0x0E3F: "ER_WARN_BINLOG_PARTIAL_UPDATES_SUGGESTS_PARTIAL_IMAGES", + 0x0E40: "ER_COULD_NOT_APPLY_JSON_DIFF", + 0x0E41: "ER_CORRUPTED_JSON_DIFF", + 0x0E42: "ER_RESOURCE_GROUP_EXISTS", + 0x0E43: "ER_RESOURCE_GROUP_NOT_EXISTS", + 0x0E44: "ER_INVALID_VCPU_ID", + 0x0E45: "ER_INVALID_VCPU_RANGE", + 0x0E46: "ER_INVALID_THREAD_PRIORITY", + 0x0E47: "ER_DISALLOWED_OPERATION", + 0x0E48: "ER_RESOURCE_GROUP_BUSY", + 0x0E49: "ER_RESOURCE_GROUP_DISABLED", + 0x0E4A: "ER_FEATURE_UNSUPPORTED", + 0x0E4B: "ER_ATTRIBUTE_IGNORED", + 0x0E4C: "ER_INVALID_THREAD_ID", + 0x0E4D: "ER_RESOURCE_GROUP_BIND_FAILED", + 0x0E4E: "ER_INVALID_USE_OF_FORCE_OPTION", + 0x0E4F: "ER_GROUP_REPLICATION_COMMAND_FAILURE", + 0x0E50: "ER_SDI_OPERATION_FAILED", + 0x0E51: "ER_MISSING_JSON_TABLE_VALUE", + 0x0E52: "ER_WRONG_JSON_TABLE_VALUE", + 0x0E53: "ER_TF_MUST_HAVE_ALIAS", + 0x0E54: "ER_TF_FORBIDDEN_JOIN_TYPE", + 0x0E55: "ER_JT_VALUE_OUT_OF_RANGE", + 0x0E56: "ER_JT_MAX_NESTED_PATH", + 0x0E57: "ER_PASSWORD_EXPIRATION_NOT_SUPPORTED_BY_AUTH_METHOD", + 0x0E58: "ER_INVALID_GEOJSON_CRS_NOT_TOP_LEVEL", + 0x0E59: "ER_BAD_NULL_ERROR_NOT_IGNORED", + 0x0E5A: "WARN_USELESS_SPATIAL_INDEX", + 0x0E5B: "ER_DISK_FULL_NOWAIT", + 0x0E5C: "ER_PARSE_ERROR_IN_DIGEST_FN", + 0x0E5D: "ER_UNDISCLOSED_PARSE_ERROR_IN_DIGEST_FN", + 0x0E5E: "ER_SCHEMA_DIR_EXISTS", + 0x0E5F: "ER_SCHEMA_DIR_MISSING", + 0x0E60: "ER_SCHEMA_DIR_CREATE_FAILED", + 0x0E61: "ER_SCHEMA_DIR_UNKNOWN", + 0x0E62: "ER_ONLY_IMPLEMENTED_FOR_SRID_0_AND_4326", + 0x0E63: "ER_BINLOG_EXPIRE_LOG_DAYS_AND_SECS_USED_TOGETHER", + 0x0E64: "ER_REGEXP_BUFFER_OVERFLOW", + 0x0E65: "ER_REGEXP_ILLEGAL_ARGUMENT", + 0x0E66: "ER_REGEXP_INDEX_OUTOFBOUNDS_ERROR", + 0x0E67: "ER_REGEXP_INTERNAL_ERROR", + 0x0E68: "ER_REGEXP_RULE_SYNTAX", + 0x0E69: "ER_REGEXP_BAD_ESCAPE_SEQUENCE", + 0x0E6A: "ER_REGEXP_UNIMPLEMENTED", + 0x0E6B: "ER_REGEXP_MISMATCHED_PAREN", + 0x0E6C: "ER_REGEXP_BAD_INTERVAL", + 0x0E6D: "ER_REGEXP_MAX_LT_MIN", + 0x0E6E: "ER_REGEXP_INVALID_BACK_REF", + 0x0E6F: "ER_REGEXP_LOOK_BEHIND_LIMIT", + 0x0E70: "ER_REGEXP_MISSING_CLOSE_BRACKET", + 0x0E71: "ER_REGEXP_INVALID_RANGE", + 0x0E72: "ER_REGEXP_STACK_OVERFLOW", + 0x0E73: "ER_REGEXP_TIME_OUT", + 0x0E74: "ER_REGEXP_PATTERN_TOO_BIG", + 0x0E75: "ER_CANT_SET_ERROR_LOG_SERVICE", + 0x0E76: "ER_EMPTY_PIPELINE_FOR_ERROR_LOG_SERVICE", + 0x0E77: "ER_COMPONENT_FILTER_DIAGNOSTICS", + 0x0E78: "ER_NOT_IMPLEMENTED_FOR_CARTESIAN_SRS", + 0x0E79: "ER_NOT_IMPLEMENTED_FOR_PROJECTED_SRS", + 0x0E7A: "ER_NONPOSITIVE_RADIUS", + 0x0E7B: "ER_RESTART_SERVER_FAILED", + 0x0E7C: "ER_SRS_MISSING_MANDATORY_ATTRIBUTE", + 0x0E7D: "ER_SRS_MULTIPLE_ATTRIBUTE_DEFINITIONS", + 0x0E7E: "ER_SRS_NAME_CANT_BE_EMPTY_OR_WHITESPACE", + 0x0E7F: "ER_SRS_ORGANIZATION_CANT_BE_EMPTY_OR_WHITESPACE", + 0x0E80: "ER_SRS_ID_ALREADY_EXISTS", + 0x0E81: "ER_WARN_SRS_ID_ALREADY_EXISTS", + 0x0E82: "ER_CANT_MODIFY_SRID_0", + 0x0E83: "ER_WARN_RESERVED_SRID_RANGE", + 0x0E84: "ER_CANT_MODIFY_SRS_USED_BY_COLUMN", + 0x0E85: "ER_SRS_INVALID_CHARACTER_IN_ATTRIBUTE", + 0x0E86: "ER_SRS_ATTRIBUTE_STRING_TOO_LONG", + 0x0E87: "ER_DEPRECATED_UTF8_ALIAS", + 0x0E88: "ER_DEPRECATED_NATIONAL", + 0x0E89: "ER_INVALID_DEFAULT_UTF8MB4_COLLATION", + 0x0E8A: "ER_UNABLE_TO_COLLECT_LOG_STATUS", + 0x0E8B: "ER_RESERVED_TABLESPACE_NAME", + 0x0E8C: "ER_UNABLE_TO_SET_OPTION", + 0x0E8D: "ER_SLAVE_POSSIBLY_DIVERGED_AFTER_DDL", + 0x0E8E: "ER_SRS_NOT_GEOGRAPHIC", + 0x0E8F: "ER_POLYGON_TOO_LARGE", + 0x0E90: "ER_SPATIAL_UNIQUE_INDEX", + 0x0E91: "ER_INDEX_TYPE_NOT_SUPPORTED_FOR_SPATIAL_INDEX", + 0x0E92: "ER_FK_CANNOT_DROP_PARENT", + 0x0E93: "ER_GEOMETRY_PARAM_LONGITUDE_OUT_OF_RANGE", + 0x0E94: "ER_GEOMETRY_PARAM_LATITUDE_OUT_OF_RANGE", + 0x0E95: "ER_FK_CANNOT_USE_VIRTUAL_COLUMN", + 0x0E96: "ER_FK_NO_COLUMN_PARENT", + 0x0F61: "ER_AUTHCACHE_ROLE_TABLES_DODGY", + 0x11E0: "ER_DISK_FULL", 0x2710: "ER_PARSER_TRACE", 0x2711: "ER_BOOTSTRAP_CANT_THREAD", 0x2712: "ER_TRIGGER_INVALID_VALUE", @@ -1367,12 +1367,12 @@ 0x2717: "ER_DD_VERSION_INSTALLED", 0x2718: "ER_DD_VERSION_UNSUPPORTED", 0x2719: "ER_LOG_SYSLOG_FACILITY_FAIL", - 0x271a: "ER_LOG_SYSLOG_CANNOT_OPEN", - 0x271b: "ER_LOG_SLOW_CANNOT_OPEN", - 0x271c: "ER_LOG_GENERAL_CANNOT_OPEN", - 0x271d: "ER_LOG_CANNOT_WRITE", - 0x271e: "ER_RPL_ZOMBIE_ENCOUNTERED", - 0x271f: "ER_RPL_GTID_TABLE_CANNOT_OPEN", + 0x271A: "ER_LOG_SYSLOG_CANNOT_OPEN", + 0x271B: "ER_LOG_SLOW_CANNOT_OPEN", + 0x271C: "ER_LOG_GENERAL_CANNOT_OPEN", + 0x271D: "ER_LOG_CANNOT_WRITE", + 0x271E: "ER_RPL_ZOMBIE_ENCOUNTERED", + 0x271F: "ER_RPL_GTID_TABLE_CANNOT_OPEN", 0x2720: "ER_SYSTEM_SCHEMA_NOT_FOUND", 0x2721: "ER_DD_INIT_UPGRADE_FAILED", 0x2722: "ER_VIEW_UNKNOWN_CHARSET_OR_COLLATION", @@ -1383,12 +1383,12 @@ 0x2727: "ER_DD_VIEW_CANT_CREATE", 0x2728: "ER_DD_METADATA_NOT_FOUND", 0x2729: "ER_DD_CACHE_NOT_EMPTY_AT_SHUTDOWN", - 0x272a: "ER_DD_OBJECT_REMAINS", - 0x272b: "ER_DD_OBJECT_REMAINS_IN_RELEASER", - 0x272c: "ER_DD_OBJECT_RELEASER_REMAINS", - 0x272d: "ER_DD_CANT_GET_OBJECT_KEY", - 0x272e: "ER_DD_CANT_CREATE_OBJECT_KEY", - 0x272f: "ER_CANT_CREATE_HANDLE_MGR_THREAD", + 0x272A: "ER_DD_OBJECT_REMAINS", + 0x272B: "ER_DD_OBJECT_REMAINS_IN_RELEASER", + 0x272C: "ER_DD_OBJECT_RELEASER_REMAINS", + 0x272D: "ER_DD_CANT_GET_OBJECT_KEY", + 0x272E: "ER_DD_CANT_CREATE_OBJECT_KEY", + 0x272F: "ER_CANT_CREATE_HANDLE_MGR_THREAD", 0x2730: "ER_RPL_REPO_HAS_GAPS", 0x2731: "ER_INVALID_VALUE_FOR_ENFORCE_GTID_CONSISTENCY", 0x2732: "ER_CHANGED_ENFORCE_GTID_CONSISTENCY", @@ -1399,12 +1399,12 @@ 0x2737: "ER_DEBUG_SYNC_THREAD_MAX", 0x2738: "ER_DEBUG_SYNC_OOM", 0x2739: "ER_CANT_INIT_TC_LOG", - 0x273a: "ER_EVENT_CANT_INIT_QUEUE", - 0x273b: "ER_EVENT_PURGING_QUEUE", - 0x273c: "ER_EVENT_LAST_EXECUTION", - 0x273d: "ER_EVENT_MESSAGE_STACK", - 0x273e: "ER_EVENT_EXECUTION_FAILED", - 0x273f: "ER_CANT_INIT_SCHEDULER_THREAD", + 0x273A: "ER_EVENT_CANT_INIT_QUEUE", + 0x273B: "ER_EVENT_PURGING_QUEUE", + 0x273C: "ER_EVENT_LAST_EXECUTION", + 0x273D: "ER_EVENT_MESSAGE_STACK", + 0x273E: "ER_EVENT_EXECUTION_FAILED", + 0x273F: "ER_CANT_INIT_SCHEDULER_THREAD", 0x2740: "ER_SCHEDULER_STOPPED", 0x2741: "ER_CANT_CREATE_SCHEDULER_THREAD", 0x2742: "ER_SCHEDULER_WAITING", @@ -1415,12 +1415,12 @@ 0x2747: "ER_UNABLE_TO_RESOLVE_IP", 0x2748: "ER_UNABLE_TO_RESOLVE_HOSTNAME", 0x2749: "ER_HOSTNAME_RESEMBLES_IPV4", - 0x274a: "ER_HOSTNAME_DOESNT_RESOLVE_TO", - 0x274b: "ER_ADDRESSES_FOR_HOSTNAME_HEADER", - 0x274c: "ER_ADDRESSES_FOR_HOSTNAME_LIST_ITEM", - 0x274d: "ER_TRG_WITHOUT_DEFINER", - 0x274e: "ER_TRG_NO_CLIENT_CHARSET", - 0x274f: "ER_PARSING_VIEW", + 0x274A: "ER_HOSTNAME_DOESNT_RESOLVE_TO", + 0x274B: "ER_ADDRESSES_FOR_HOSTNAME_HEADER", + 0x274C: "ER_ADDRESSES_FOR_HOSTNAME_LIST_ITEM", + 0x274D: "ER_TRG_WITHOUT_DEFINER", + 0x274E: "ER_TRG_NO_CLIENT_CHARSET", + 0x274F: "ER_PARSING_VIEW", 0x2750: "ER_COMPONENTS_INFRASTRUCTURE_BOOTSTRAP", 0x2751: "ER_COMPONENTS_INFRASTRUCTURE_SHUTDOWN", 0x2752: "ER_COMPONENTS_PERSIST_LOADER_BOOTSTRAP", @@ -1431,12 +1431,12 @@ 0x2757: "ER_UUID_SALT", 0x2758: "ER_UUID_IS", 0x2759: "ER_UUID_INVALID", - 0x275a: "ER_UUID_SCRUB", - 0x275b: "ER_CREATING_NEW_UUID", - 0x275c: "ER_CANT_CREATE_UUID", - 0x275d: "ER_UNKNOWN_UNSUPPORTED_STORAGE_ENGINE", - 0x275e: "ER_SECURE_AUTH_VALUE_UNSUPPORTED", - 0x275f: "ER_INVALID_INSTRUMENT", + 0x275A: "ER_UUID_SCRUB", + 0x275B: "ER_CREATING_NEW_UUID", + 0x275C: "ER_CANT_CREATE_UUID", + 0x275D: "ER_UNKNOWN_UNSUPPORTED_STORAGE_ENGINE", + 0x275E: "ER_SECURE_AUTH_VALUE_UNSUPPORTED", + 0x275F: "ER_INVALID_INSTRUMENT", 0x2760: "ER_INNODB_MANDATORY", 0x2762: "ER_OLD_PASSWORDS_NO_MIDDLE_GROUND", 0x2763: "ER_VERBOSE_REQUIRES_HELP", @@ -1446,12 +1446,12 @@ 0x2767: "ER_FT_BOOL_SYNTAX_INVALID", 0x2768: "ER_CREDENTIALLESS_AUTO_USER_BAD", 0x2769: "ER_CONNECTION_HANDLING_OOM", - 0x276a: "ER_THREAD_HANDLING_OOM", - 0x276b: "ER_CANT_CREATE_TEST_FILE", - 0x276c: "ER_CANT_CREATE_PID_FILE", - 0x276d: "ER_CANT_REMOVE_PID_FILE", - 0x276e: "ER_CANT_CREATE_SHUTDOWN_THREAD", - 0x276f: "ER_SEC_FILE_PRIV_CANT_ACCESS_DIR", + 0x276A: "ER_THREAD_HANDLING_OOM", + 0x276B: "ER_CANT_CREATE_TEST_FILE", + 0x276C: "ER_CANT_CREATE_PID_FILE", + 0x276D: "ER_CANT_REMOVE_PID_FILE", + 0x276E: "ER_CANT_CREATE_SHUTDOWN_THREAD", + 0x276F: "ER_SEC_FILE_PRIV_CANT_ACCESS_DIR", 0x2770: "ER_SEC_FILE_PRIV_IGNORED", 0x2771: "ER_SEC_FILE_PRIV_EMPTY", 0x2772: "ER_SEC_FILE_PRIV_NULL", @@ -1462,12 +1462,12 @@ 0x2777: "ER_CANT_CREATE_NAMED_PIPES_THREAD", 0x2778: "ER_CANT_CREATE_TCPIP_THREAD", 0x2779: "ER_CANT_CREATE_SHM_THREAD", - 0x277a: "ER_CANT_CREATE_INTERRUPT_THREAD", - 0x277b: "ER_WRITABLE_CONFIG_REMOVED", - 0x277c: "ER_CORE_VALUES", - 0x277d: "ER_WRONG_DATETIME_SPEC", - 0x277e: "ER_RPL_BINLOG_FILTERS_OOM", - 0x277f: "ER_KEYCACHE_OOM", + 0x277A: "ER_CANT_CREATE_INTERRUPT_THREAD", + 0x277B: "ER_WRITABLE_CONFIG_REMOVED", + 0x277C: "ER_CORE_VALUES", + 0x277D: "ER_WRONG_DATETIME_SPEC", + 0x277E: "ER_RPL_BINLOG_FILTERS_OOM", + 0x277F: "ER_KEYCACHE_OOM", 0x2780: "ER_CONFIRMING_THE_FUTURE", 0x2781: "ER_BACK_IN_TIME", 0x2782: "ER_FUTURE_DATE", @@ -1478,12 +1478,12 @@ 0x2787: "ER_ABORTING", 0x2788: "ER_BINLOG_END", 0x2789: "ER_CALL_ME_LOCALHOST", - 0x278a: "ER_USER_REQUIRES_ROOT", - 0x278b: "ER_REALLY_RUN_AS_ROOT", - 0x278c: "ER_USER_WHAT_USER", - 0x278d: "ER_TRANSPORTS_WHAT_TRANSPORTS", - 0x278e: "ER_FAIL_SETGID", - 0x278f: "ER_FAIL_SETUID", + 0x278A: "ER_USER_REQUIRES_ROOT", + 0x278B: "ER_REALLY_RUN_AS_ROOT", + 0x278C: "ER_USER_WHAT_USER", + 0x278D: "ER_TRANSPORTS_WHAT_TRANSPORTS", + 0x278E: "ER_FAIL_SETGID", + 0x278F: "ER_FAIL_SETUID", 0x2790: "ER_FAIL_SETREGID", 0x2791: "ER_FAIL_SETREUID", 0x2792: "ER_FAIL_CHROOT", @@ -1494,108 +1494,108 @@ 0x2797: "ER_FAILED_TO_LOCK_MEM", 0x2798: "ER_MYINIT_FAILED", 0x2799: "ER_BEG_INITFILE", - 0x279a: "ER_END_INITFILE", - 0x279b: "ER_CHANGED_MAX_OPEN_FILES", - 0x279c: "ER_CANT_INCREASE_MAX_OPEN_FILES", - 0x279d: "ER_CHANGED_MAX_CONNECTIONS", - 0x279e: "ER_CHANGED_TABLE_OPEN_CACHE", - 0x279f: "ER_THE_USER_ABIDES", - 0x27a0: "ER_RPL_CANT_ADD_DO_TABLE", - 0x27a1: "ER_RPL_CANT_ADD_IGNORE_TABLE", - 0x27a2: "ER_TRACK_VARIABLES_BOGUS", - 0x27a3: "ER_EXCESS_ARGUMENTS", - 0x27a4: "ER_VERBOSE_HINT", - 0x27a5: "ER_CANT_READ_ERRMSGS", - 0x27a6: "ER_CANT_INIT_DBS", - 0x27a7: "ER_LOG_OUTPUT_CONTRADICTORY", - 0x27a8: "ER_NO_CSV_NO_LOG_TABLES", - 0x27a9: "ER_RPL_REWRITEDB_MISSING_ARROW", - 0x27aa: "ER_RPL_REWRITEDB_EMPTY_FROM", - 0x27ab: "ER_RPL_REWRITEDB_EMPTY_TO", - 0x27ac: "ER_LOG_FILES_GIVEN_LOG_OUTPUT_IS_TABLE", - 0x27ad: "ER_LOG_FILE_INVALID", - 0x27ae: "ER_LOWER_CASE_TABLE_NAMES_CS_DD_ON_CI_FS_UNSUPPORTED", - 0x27af: "ER_LOWER_CASE_TABLE_NAMES_USING_2", - 0x27b0: "ER_LOWER_CASE_TABLE_NAMES_USING_0", - 0x27b1: "ER_NEED_LOG_BIN", - 0x27b2: "ER_NEED_FILE_INSTEAD_OF_DIR", - 0x27b3: "ER_LOG_BIN_BETTER_WITH_NAME", - 0x27b4: "ER_BINLOG_NEEDS_SERVERID", - 0x27b5: "ER_RPL_CANT_MAKE_PATHS", - 0x27b6: "ER_CANT_INITIALIZE_GTID", - 0x27b7: "ER_CANT_INITIALIZE_EARLY_PLUGINS", - 0x27b8: "ER_CANT_INITIALIZE_BUILTIN_PLUGINS", - 0x27b9: "ER_CANT_INITIALIZE_DYNAMIC_PLUGINS", - 0x27ba: "ER_PERFSCHEMA_INIT_FAILED", - 0x27bb: "ER_STACKSIZE_UNEXPECTED", - 0x27bc: "ER_CANT_SET_DATADIR", - 0x27bd: "ER_CANT_STAT_DATADIR", - 0x27be: "ER_CANT_CHOWN_DATADIR", - 0x27bf: "ER_CANT_SET_UP_PERSISTED_VALUES", - 0x27c0: "ER_CANT_SAVE_GTIDS", - 0x27c1: "ER_AUTH_CANT_SET_DEFAULT_PLUGIN", - 0x27c2: "ER_CANT_JOIN_SHUTDOWN_THREAD", - 0x27c3: "ER_CANT_HASH_DO_AND_IGNORE_RULES", - 0x27c4: "ER_CANT_OPEN_CA", - 0x27c5: "ER_CANT_ACCESS_CAPATH", - 0x27c6: "ER_SSL_TRYING_DATADIR_DEFAULTS", - 0x27c7: "ER_AUTO_OPTIONS_FAILED", - 0x27c8: "ER_CANT_INIT_TIMER", - 0x27c9: "ER_SERVERID_TOO_LARGE", - 0x27ca: "ER_DEFAULT_SE_UNAVAILABLE", - 0x27cb: "ER_CANT_OPEN_ERROR_LOG", - 0x27cc: "ER_INVALID_ERROR_LOG_NAME", - 0x27cd: "ER_RPL_INFINITY_DENIED", - 0x27ce: "ER_RPL_INFINITY_IGNORED", - 0x27cf: "ER_NDB_TABLES_NOT_READY", - 0x27d0: "ER_TABLE_CHECK_INTACT", - 0x27d1: "ER_DD_TABLESPACE_NOT_FOUND", - 0x27d2: "ER_DD_TRG_CONNECTION_COLLATION_MISSING", - 0x27d3: "ER_DD_TRG_DB_COLLATION_MISSING", - 0x27d4: "ER_DD_TRG_DEFINER_OOM", - 0x27d5: "ER_DD_TRG_FILE_UNREADABLE", - 0x27d6: "ER_TRG_CANT_PARSE", - 0x27d7: "ER_DD_TRG_CANT_ADD", - 0x27d8: "ER_DD_CANT_RESOLVE_VIEW", - 0x27d9: "ER_DD_VIEW_WITHOUT_DEFINER", - 0x27da: "ER_PLUGIN_INIT_FAILED", - 0x27db: "ER_RPL_TRX_DELEGATES_INIT_FAILED", - 0x27dc: "ER_RPL_BINLOG_STORAGE_DELEGATES_INIT_FAILED", - 0x27dd: "ER_RPL_BINLOG_TRANSMIT_DELEGATES_INIT_FAILED", - 0x27de: "ER_RPL_BINLOG_RELAY_DELEGATES_INIT_FAILED", - 0x27df: "ER_RPL_PLUGIN_FUNCTION_FAILED", - 0x27e0: "ER_SQL_HA_READ_FAILED", - 0x27e1: "ER_SR_BOGUS_VALUE", - 0x27e2: "ER_SR_INVALID_CONTEXT", - 0x27e3: "ER_READING_TABLE_FAILED", - 0x27e4: "ER_DES_FILE_WRONG_KEY", - 0x27e5: "ER_CANT_SET_PERSISTED", - 0x27e6: "ER_JSON_PARSE_ERROR", - 0x27e7: "ER_CONFIG_OPTION_WITHOUT_GROUP", - 0x27e8: "ER_VALGRIND_DO_QUICK_LEAK_CHECK", - 0x27e9: "ER_VALGRIND_COUNT_LEAKS", - 0x27ea: "ER_LOAD_DATA_INFILE_FAILED_IN_UNEXPECTED_WAY", - 0x27eb: "ER_UNKNOWN_ERROR_NUMBER", - 0x27ec: "ER_UDF_CANT_ALLOC_FOR_STRUCTURES", - 0x27ed: "ER_UDF_CANT_ALLOC_FOR_FUNCTION", - 0x27ee: "ER_UDF_INVALID_ROW_IN_FUNCTION_TABLE", - 0x27ef: "ER_UDF_CANT_OPEN_FUNCTION_TABLE", - 0x27f0: "ER_XA_RECOVER_FOUND_TRX_IN_SE", - 0x27f1: "ER_XA_RECOVER_FOUND_XA_TRX", - 0x27f2: "ER_XA_IGNORING_XID", - 0x27f3: "ER_XA_COMMITTING_XID", - 0x27f4: "ER_XA_ROLLING_BACK_XID", - 0x27f5: "ER_XA_STARTING_RECOVERY", - 0x27f6: "ER_XA_NO_MULTI_2PC_HEURISTIC_RECOVER", - 0x27f7: "ER_XA_RECOVER_EXPLANATION", - 0x27f8: "ER_XA_RECOVERY_DONE", - 0x27f9: "ER_TRX_GTID_COLLECT_REJECT", - 0x27fa: "ER_SQL_AUTHOR_DEFAULT_ROLES_FAIL", - 0x27fb: "ER_SQL_USER_TABLE_CREATE_WARNING", - 0x27fc: "ER_SQL_USER_TABLE_ALTER_WARNING", - 0x27fd: "ER_ROW_IN_WRONG_PARTITION_PLEASE_REPAIR", - 0x27fe: "ER_MYISAM_CRASHED_ERROR_IN_THREAD", - 0x27ff: "ER_MYISAM_CRASHED_ERROR_IN", + 0x279A: "ER_END_INITFILE", + 0x279B: "ER_CHANGED_MAX_OPEN_FILES", + 0x279C: "ER_CANT_INCREASE_MAX_OPEN_FILES", + 0x279D: "ER_CHANGED_MAX_CONNECTIONS", + 0x279E: "ER_CHANGED_TABLE_OPEN_CACHE", + 0x279F: "ER_THE_USER_ABIDES", + 0x27A0: "ER_RPL_CANT_ADD_DO_TABLE", + 0x27A1: "ER_RPL_CANT_ADD_IGNORE_TABLE", + 0x27A2: "ER_TRACK_VARIABLES_BOGUS", + 0x27A3: "ER_EXCESS_ARGUMENTS", + 0x27A4: "ER_VERBOSE_HINT", + 0x27A5: "ER_CANT_READ_ERRMSGS", + 0x27A6: "ER_CANT_INIT_DBS", + 0x27A7: "ER_LOG_OUTPUT_CONTRADICTORY", + 0x27A8: "ER_NO_CSV_NO_LOG_TABLES", + 0x27A9: "ER_RPL_REWRITEDB_MISSING_ARROW", + 0x27AA: "ER_RPL_REWRITEDB_EMPTY_FROM", + 0x27AB: "ER_RPL_REWRITEDB_EMPTY_TO", + 0x27AC: "ER_LOG_FILES_GIVEN_LOG_OUTPUT_IS_TABLE", + 0x27AD: "ER_LOG_FILE_INVALID", + 0x27AE: "ER_LOWER_CASE_TABLE_NAMES_CS_DD_ON_CI_FS_UNSUPPORTED", + 0x27AF: "ER_LOWER_CASE_TABLE_NAMES_USING_2", + 0x27B0: "ER_LOWER_CASE_TABLE_NAMES_USING_0", + 0x27B1: "ER_NEED_LOG_BIN", + 0x27B2: "ER_NEED_FILE_INSTEAD_OF_DIR", + 0x27B3: "ER_LOG_BIN_BETTER_WITH_NAME", + 0x27B4: "ER_BINLOG_NEEDS_SERVERID", + 0x27B5: "ER_RPL_CANT_MAKE_PATHS", + 0x27B6: "ER_CANT_INITIALIZE_GTID", + 0x27B7: "ER_CANT_INITIALIZE_EARLY_PLUGINS", + 0x27B8: "ER_CANT_INITIALIZE_BUILTIN_PLUGINS", + 0x27B9: "ER_CANT_INITIALIZE_DYNAMIC_PLUGINS", + 0x27BA: "ER_PERFSCHEMA_INIT_FAILED", + 0x27BB: "ER_STACKSIZE_UNEXPECTED", + 0x27BC: "ER_CANT_SET_DATADIR", + 0x27BD: "ER_CANT_STAT_DATADIR", + 0x27BE: "ER_CANT_CHOWN_DATADIR", + 0x27BF: "ER_CANT_SET_UP_PERSISTED_VALUES", + 0x27C0: "ER_CANT_SAVE_GTIDS", + 0x27C1: "ER_AUTH_CANT_SET_DEFAULT_PLUGIN", + 0x27C2: "ER_CANT_JOIN_SHUTDOWN_THREAD", + 0x27C3: "ER_CANT_HASH_DO_AND_IGNORE_RULES", + 0x27C4: "ER_CANT_OPEN_CA", + 0x27C5: "ER_CANT_ACCESS_CAPATH", + 0x27C6: "ER_SSL_TRYING_DATADIR_DEFAULTS", + 0x27C7: "ER_AUTO_OPTIONS_FAILED", + 0x27C8: "ER_CANT_INIT_TIMER", + 0x27C9: "ER_SERVERID_TOO_LARGE", + 0x27CA: "ER_DEFAULT_SE_UNAVAILABLE", + 0x27CB: "ER_CANT_OPEN_ERROR_LOG", + 0x27CC: "ER_INVALID_ERROR_LOG_NAME", + 0x27CD: "ER_RPL_INFINITY_DENIED", + 0x27CE: "ER_RPL_INFINITY_IGNORED", + 0x27CF: "ER_NDB_TABLES_NOT_READY", + 0x27D0: "ER_TABLE_CHECK_INTACT", + 0x27D1: "ER_DD_TABLESPACE_NOT_FOUND", + 0x27D2: "ER_DD_TRG_CONNECTION_COLLATION_MISSING", + 0x27D3: "ER_DD_TRG_DB_COLLATION_MISSING", + 0x27D4: "ER_DD_TRG_DEFINER_OOM", + 0x27D5: "ER_DD_TRG_FILE_UNREADABLE", + 0x27D6: "ER_TRG_CANT_PARSE", + 0x27D7: "ER_DD_TRG_CANT_ADD", + 0x27D8: "ER_DD_CANT_RESOLVE_VIEW", + 0x27D9: "ER_DD_VIEW_WITHOUT_DEFINER", + 0x27DA: "ER_PLUGIN_INIT_FAILED", + 0x27DB: "ER_RPL_TRX_DELEGATES_INIT_FAILED", + 0x27DC: "ER_RPL_BINLOG_STORAGE_DELEGATES_INIT_FAILED", + 0x27DD: "ER_RPL_BINLOG_TRANSMIT_DELEGATES_INIT_FAILED", + 0x27DE: "ER_RPL_BINLOG_RELAY_DELEGATES_INIT_FAILED", + 0x27DF: "ER_RPL_PLUGIN_FUNCTION_FAILED", + 0x27E0: "ER_SQL_HA_READ_FAILED", + 0x27E1: "ER_SR_BOGUS_VALUE", + 0x27E2: "ER_SR_INVALID_CONTEXT", + 0x27E3: "ER_READING_TABLE_FAILED", + 0x27E4: "ER_DES_FILE_WRONG_KEY", + 0x27E5: "ER_CANT_SET_PERSISTED", + 0x27E6: "ER_JSON_PARSE_ERROR", + 0x27E7: "ER_CONFIG_OPTION_WITHOUT_GROUP", + 0x27E8: "ER_VALGRIND_DO_QUICK_LEAK_CHECK", + 0x27E9: "ER_VALGRIND_COUNT_LEAKS", + 0x27EA: "ER_LOAD_DATA_INFILE_FAILED_IN_UNEXPECTED_WAY", + 0x27EB: "ER_UNKNOWN_ERROR_NUMBER", + 0x27EC: "ER_UDF_CANT_ALLOC_FOR_STRUCTURES", + 0x27ED: "ER_UDF_CANT_ALLOC_FOR_FUNCTION", + 0x27EE: "ER_UDF_INVALID_ROW_IN_FUNCTION_TABLE", + 0x27EF: "ER_UDF_CANT_OPEN_FUNCTION_TABLE", + 0x27F0: "ER_XA_RECOVER_FOUND_TRX_IN_SE", + 0x27F1: "ER_XA_RECOVER_FOUND_XA_TRX", + 0x27F2: "ER_XA_IGNORING_XID", + 0x27F3: "ER_XA_COMMITTING_XID", + 0x27F4: "ER_XA_ROLLING_BACK_XID", + 0x27F5: "ER_XA_STARTING_RECOVERY", + 0x27F6: "ER_XA_NO_MULTI_2PC_HEURISTIC_RECOVER", + 0x27F7: "ER_XA_RECOVER_EXPLANATION", + 0x27F8: "ER_XA_RECOVERY_DONE", + 0x27F9: "ER_TRX_GTID_COLLECT_REJECT", + 0x27FA: "ER_SQL_AUTHOR_DEFAULT_ROLES_FAIL", + 0x27FB: "ER_SQL_USER_TABLE_CREATE_WARNING", + 0x27FC: "ER_SQL_USER_TABLE_ALTER_WARNING", + 0x27FD: "ER_ROW_IN_WRONG_PARTITION_PLEASE_REPAIR", + 0x27FE: "ER_MYISAM_CRASHED_ERROR_IN_THREAD", + 0x27FF: "ER_MYISAM_CRASHED_ERROR_IN", 0x2800: "ER_TOO_MANY_STORAGE_ENGINES", 0x2801: "ER_SE_TYPECODE_CONFLICT", 0x2802: "ER_TRX_WRITE_SET_OOM", @@ -1606,12 +1606,12 @@ 0x2807: "ER_CONN_PIP_CANT_CREATE_EVENT", 0x2808: "ER_CONN_PIP_CANT_CREATE_PIPE", 0x2809: "ER_CONN_PER_THREAD_NO_THREAD", - 0x280a: "ER_CONN_TCP_NO_SOCKET", - 0x280b: "ER_CONN_TCP_CREATED", - 0x280c: "ER_CONN_TCP_ADDRESS", - 0x280d: "ER_CONN_TCP_IPV6_AVAILABLE", - 0x280e: "ER_CONN_TCP_IPV6_UNAVAILABLE", - 0x280f: "ER_CONN_TCP_ERROR_WITH_STRERROR", + 0x280A: "ER_CONN_TCP_NO_SOCKET", + 0x280B: "ER_CONN_TCP_CREATED", + 0x280C: "ER_CONN_TCP_ADDRESS", + 0x280D: "ER_CONN_TCP_IPV6_AVAILABLE", + 0x280E: "ER_CONN_TCP_IPV6_UNAVAILABLE", + 0x280F: "ER_CONN_TCP_ERROR_WITH_STRERROR", 0x2810: "ER_CONN_TCP_CANT_RESOLVE_HOSTNAME", 0x2811: "ER_CONN_TCP_IS_THERE_ANOTHER_USING_PORT", 0x2812: "ER_CONN_UNIX_IS_THERE_ANOTHER_USING_SOCKET", @@ -1622,12 +1622,12 @@ 0x2817: "ER_CONN_TCP_IP_NOT_LOGGED", 0x2818: "ER_CONN_TCP_RESOLVE_INFO", 0x2819: "ER_CONN_TCP_START_FAIL", - 0x281a: "ER_CONN_TCP_LISTEN_FAIL", - 0x281b: "ER_CONN_UNIX_PATH_TOO_LONG", - 0x281c: "ER_CONN_UNIX_LOCK_FILE_FAIL", - 0x281d: "ER_CONN_UNIX_NO_FD", - 0x281e: "ER_CONN_UNIX_NO_BIND_NO_START", - 0x281f: "ER_CONN_UNIX_LISTEN_FAILED", + 0x281A: "ER_CONN_TCP_LISTEN_FAIL", + 0x281B: "ER_CONN_UNIX_PATH_TOO_LONG", + 0x281C: "ER_CONN_UNIX_LOCK_FILE_FAIL", + 0x281D: "ER_CONN_UNIX_NO_FD", + 0x281E: "ER_CONN_UNIX_NO_BIND_NO_START", + 0x281F: "ER_CONN_UNIX_LISTEN_FAILED", 0x2820: "ER_CONN_UNIX_LOCK_FILE_GIVING_UP", 0x2821: "ER_CONN_UNIX_LOCK_FILE_CANT_CREATE", 0x2822: "ER_CONN_UNIX_LOCK_FILE_CANT_OPEN", @@ -1638,12 +1638,12 @@ 0x2827: "ER_CONN_UNIX_LOCK_FILE_CANT_DELETE", 0x2828: "ER_CONN_UNIX_LOCK_FILE_CANT_SYNC", 0x2829: "ER_CONN_UNIX_LOCK_FILE_CANT_CLOSE", - 0x282a: "ER_CONN_SOCKET_SELECT_FAILED", - 0x282b: "ER_CONN_SOCKET_ACCEPT_FAILED", - 0x282c: "ER_AUTH_RSA_CANT_FIND", - 0x282d: "ER_AUTH_RSA_CANT_PARSE", - 0x282e: "ER_AUTH_RSA_CANT_READ", - 0x282f: "ER_AUTH_RSA_FILES_NOT_FOUND", + 0x282A: "ER_CONN_SOCKET_SELECT_FAILED", + 0x282B: "ER_CONN_SOCKET_ACCEPT_FAILED", + 0x282C: "ER_AUTH_RSA_CANT_FIND", + 0x282D: "ER_AUTH_RSA_CANT_PARSE", + 0x282E: "ER_AUTH_RSA_CANT_READ", + 0x282F: "ER_AUTH_RSA_FILES_NOT_FOUND", 0x2830: "ER_CONN_ATTR_TRUNCATED", 0x2831: "ER_X509_CIPHERS_MISMATCH", 0x2832: "ER_X509_ISSUER_MISMATCH", @@ -1654,12 +1654,12 @@ 0x2837: "ER_X509_CANT_CHMOD_KEY", 0x2838: "ER_X509_CANT_READ_CA_KEY", 0x2839: "ER_X509_CANT_READ_CA_CERT", - 0x283a: "ER_X509_CANT_CREATE_CERT", - 0x283b: "ER_X509_CANT_WRITE_CERT", - 0x283c: "ER_AUTH_CANT_CREATE_RSA_PAIR", - 0x283d: "ER_AUTH_CANT_WRITE_PRIVKEY", - 0x283e: "ER_AUTH_CANT_WRITE_PUBKEY", - 0x283f: "ER_AUTH_SSL_CONF_PREVENTS_CERT_GENERATION", + 0x283A: "ER_X509_CANT_CREATE_CERT", + 0x283B: "ER_X509_CANT_WRITE_CERT", + 0x283C: "ER_AUTH_CANT_CREATE_RSA_PAIR", + 0x283D: "ER_AUTH_CANT_WRITE_PRIVKEY", + 0x283E: "ER_AUTH_CANT_WRITE_PUBKEY", + 0x283F: "ER_AUTH_SSL_CONF_PREVENTS_CERT_GENERATION", 0x2840: "ER_AUTH_USING_EXISTING_CERTS", 0x2841: "ER_AUTH_CERTS_SAVED_TO_DATADIR", 0x2842: "ER_AUTH_CERT_GENERATION_DISABLED", @@ -1670,11 +1670,11 @@ 0x2847: "ER_AUTHCACHE_PROXIES_PRIV_SKIPPED_NEEDS_RESOLVE", 0x2848: "ER_AUTHCACHE_PLUGIN_MISSING", 0x2849: "ER_AUTHCACHE_PLUGIN_CONFIG", - 0x284b: "ER_AUTHCACHE_USER_SKIPPED_NEEDS_RESOLVE", - 0x284c: "ER_AUTHCACHE_USER_TABLE_DODGY", - 0x284d: "ER_AUTHCACHE_USER_IGNORED_DEPRECATED_PASSWORD", - 0x284e: "ER_AUTHCACHE_USER_IGNORED_NEEDS_PLUGIN", - 0x284f: "ER_AUTHCACHE_USER_IGNORED_INVALID_PASSWORD", + 0x284B: "ER_AUTHCACHE_USER_SKIPPED_NEEDS_RESOLVE", + 0x284C: "ER_AUTHCACHE_USER_TABLE_DODGY", + 0x284D: "ER_AUTHCACHE_USER_IGNORED_DEPRECATED_PASSWORD", + 0x284E: "ER_AUTHCACHE_USER_IGNORED_NEEDS_PLUGIN", + 0x284F: "ER_AUTHCACHE_USER_IGNORED_INVALID_PASSWORD", 0x2850: "ER_AUTHCACHE_EXPIRED_PASSWORD_UNSUPPORTED", 0x2851: "ER_NO_SUPER_WITHOUT_USER_PLUGIN", 0x2852: "ER_AUTHCACHE_DB_IGNORED_EMPTY_NAME", @@ -1685,12 +1685,12 @@ 0x2857: "ER_AUTHCACHE_CANT_INIT_GRANT_SUBSYSTEM", 0x2858: "ER_AUTHCACHE_PROCS_PRIV_SKIPPED_NEEDS_RESOLVE", 0x2859: "ER_AUTHCACHE_PROCS_PRIV_ENTRY_IGNORED_BAD_ROUTINE_TYPE", - 0x285a: "ER_AUTHCACHE_TABLES_PRIV_SKIPPED_NEEDS_RESOLVE", - 0x285b: "ER_USER_NOT_IN_EXTRA_USERS_BINLOG_POSSIBLY_INCOMPLETE", - 0x285c: "ER_DD_SCHEMA_NOT_FOUND", - 0x285d: "ER_DD_TABLE_NOT_FOUND", - 0x285e: "ER_DD_SE_INIT_FAILED", - 0x285f: "ER_DD_ABORTING_PARTIAL_UPGRADE", + 0x285A: "ER_AUTHCACHE_TABLES_PRIV_SKIPPED_NEEDS_RESOLVE", + 0x285B: "ER_USER_NOT_IN_EXTRA_USERS_BINLOG_POSSIBLY_INCOMPLETE", + 0x285C: "ER_DD_SCHEMA_NOT_FOUND", + 0x285D: "ER_DD_TABLE_NOT_FOUND", + 0x285E: "ER_DD_SE_INIT_FAILED", + 0x285F: "ER_DD_ABORTING_PARTIAL_UPGRADE", 0x2860: "ER_DD_FRM_EXISTS_FOR_TABLE", 0x2861: "ER_DD_CREATED_FOR_UPGRADE", 0x2862: "ER_ERRMSG_CANT_FIND_FILE", @@ -1701,12 +1701,12 @@ 0x2867: "ER_TABLE_INCOMPATIBLE_DECIMAL_FIELD", 0x2868: "ER_TABLE_INCOMPATIBLE_YEAR_FIELD", 0x2869: "ER_INVALID_CHARSET_AND_DEFAULT_IS_MB", - 0x286a: "ER_TABLE_WRONG_KEY_DEFINITION", - 0x286b: "ER_CANT_OPEN_FRM_FILE", - 0x286c: "ER_CANT_READ_FRM_FILE", - 0x286d: "ER_TABLE_CREATED_WITH_DIFFERENT_VERSION", - 0x286e: "ER_VIEW_UNPARSABLE", - 0x286f: "ER_FILE_TYPE_UNKNOWN", + 0x286A: "ER_TABLE_WRONG_KEY_DEFINITION", + 0x286B: "ER_CANT_OPEN_FRM_FILE", + 0x286C: "ER_CANT_READ_FRM_FILE", + 0x286D: "ER_TABLE_CREATED_WITH_DIFFERENT_VERSION", + 0x286E: "ER_VIEW_UNPARSABLE", + 0x286F: "ER_FILE_TYPE_UNKNOWN", 0x2870: "ER_INVALID_INFO_IN_FRM", 0x2871: "ER_CANT_OPEN_AND_LOCK_PRIVILEGE_TABLES", 0x2872: "ER_AUDIT_PLUGIN_DOES_NOT_SUPPORT_AUDIT_AUTH_EVENTS", @@ -1717,12 +1717,12 @@ 0x2877: "ER_TZ_TOO_MANY_LEAPS_IN_LEAP_SECOND_TABLE", 0x2878: "ER_TZ_ERROR_LOADING_LEAP_SECOND_TABLE", 0x2879: "ER_TZ_UNKNOWN_OR_ILLEGAL_DEFAULT_TIME_ZONE", - 0x287a: "ER_TZ_CANT_FIND_DESCRIPTION_FOR_TIME_ZONE", - 0x287b: "ER_TZ_CANT_FIND_DESCRIPTION_FOR_TIME_ZONE_ID", - 0x287c: "ER_TZ_TRANSITION_TYPE_TABLE_TYPE_TOO_LARGE", - 0x287d: "ER_TZ_TRANSITION_TYPE_TABLE_ABBREVIATIONS_EXCEED_SPACE", - 0x287e: "ER_TZ_TRANSITION_TYPE_TABLE_LOAD_ERROR", - 0x287f: "ER_TZ_TRANSITION_TABLE_TOO_MANY_TRANSITIONS", + 0x287A: "ER_TZ_CANT_FIND_DESCRIPTION_FOR_TIME_ZONE", + 0x287B: "ER_TZ_CANT_FIND_DESCRIPTION_FOR_TIME_ZONE_ID", + 0x287C: "ER_TZ_TRANSITION_TYPE_TABLE_TYPE_TOO_LARGE", + 0x287D: "ER_TZ_TRANSITION_TYPE_TABLE_ABBREVIATIONS_EXCEED_SPACE", + 0x287E: "ER_TZ_TRANSITION_TYPE_TABLE_LOAD_ERROR", + 0x287F: "ER_TZ_TRANSITION_TABLE_TOO_MANY_TRANSITIONS", 0x2880: "ER_TZ_TRANSITION_TABLE_BAD_TRANSITION_TYPE", 0x2881: "ER_TZ_TRANSITION_TABLE_LOAD_ERROR", 0x2882: "ER_TZ_NO_TRANSITION_TYPES_IN_TIME_ZONE", @@ -1733,12 +1733,12 @@ 0x2887: "ER_SLAVE_SQL_THREAD_STOPPED_UNTIL_CONDITION_BAD", 0x2888: "ER_SLAVE_SQL_THREAD_STOPPED_UNTIL_POSITION_REACHED", 0x2889: "ER_SLAVE_SQL_THREAD_STOPPED_BEFORE_GTIDS_ALREADY_APPLIED", - 0x288a: "ER_SLAVE_SQL_THREAD_STOPPED_BEFORE_GTIDS_REACHED", - 0x288b: "ER_SLAVE_SQL_THREAD_STOPPED_AFTER_GTIDS_REACHED", - 0x288c: "ER_SLAVE_SQL_THREAD_STOPPED_GAP_TRX_PROCESSED", - 0x288d: "ER_GROUP_REPLICATION_PLUGIN_NOT_INSTALLED", - 0x288e: "ER_GTID_ALREADY_ADDED_BY_USER", - 0x288f: "ER_FAILED_TO_DELETE_FROM_GTID_EXECUTED_TABLE", + 0x288A: "ER_SLAVE_SQL_THREAD_STOPPED_BEFORE_GTIDS_REACHED", + 0x288B: "ER_SLAVE_SQL_THREAD_STOPPED_AFTER_GTIDS_REACHED", + 0x288C: "ER_SLAVE_SQL_THREAD_STOPPED_GAP_TRX_PROCESSED", + 0x288D: "ER_GROUP_REPLICATION_PLUGIN_NOT_INSTALLED", + 0x288E: "ER_GTID_ALREADY_ADDED_BY_USER", + 0x288F: "ER_FAILED_TO_DELETE_FROM_GTID_EXECUTED_TABLE", 0x2890: "ER_FAILED_TO_COMPRESS_GTID_EXECUTED_TABLE", 0x2891: "ER_FAILED_TO_COMPRESS_GTID_EXECUTED_TABLE_OOM", 0x2892: "ER_FAILED_TO_INIT_THREAD_ATTR_FOR_GTID_TABLE_COMPRESSION", @@ -1749,108 +1749,108 @@ 0x2897: "ER_NPIPE_PIPE_ALREADY_IN_USE", 0x2898: "ER_NDB_SLAVE_SAW_EPOCH_LOWER_THAN_PREVIOUS_ON_START", 0x2899: "ER_NDB_SLAVE_SAW_EPOCH_LOWER_THAN_PREVIOUS", - 0x289a: "ER_NDB_SLAVE_SAW_ALREADY_COMMITTED_EPOCH", - 0x289b: "ER_NDB_SLAVE_PREVIOUS_EPOCH_NOT_COMMITTED", - 0x289c: "ER_NDB_SLAVE_MISSING_DATA_FOR_TIMESTAMP_COLUMN", - 0x289d: "ER_NDB_SLAVE_LOGGING_EXCEPTIONS_TO", - 0x289e: "ER_NDB_SLAVE_LOW_EPOCH_RESOLUTION", - 0x289f: "ER_NDB_INFO_FOUND_UNEXPECTED_FIELD_TYPE", - 0x28a0: "ER_NDB_INFO_FAILED_TO_CREATE_NDBINFO", - 0x28a1: "ER_NDB_INFO_FAILED_TO_INIT_NDBINFO", - 0x28a2: "ER_NDB_CLUSTER_WRONG_NUMBER_OF_FUNCTION_ARGUMENTS", - 0x28a3: "ER_NDB_CLUSTER_SCHEMA_INFO", - 0x28a4: "ER_NDB_CLUSTER_GENERIC_MESSAGE", - 0x28a5: "ER_RPL_CANT_OPEN_INFO_TABLE", - 0x28a6: "ER_RPL_CANT_SCAN_INFO_TABLE", - 0x28a7: "ER_RPL_CORRUPTED_INFO_TABLE", - 0x28a8: "ER_RPL_CORRUPTED_KEYS_IN_INFO_TABLE", - 0x28a9: "ER_RPL_WORKER_ID_IS", - 0x28aa: "ER_RPL_INCONSISTENT_TIMESTAMPS_IN_TRX", - 0x28ab: "ER_RPL_INCONSISTENT_SEQUENCE_NO_IN_TRX", - 0x28ac: "ER_RPL_CHANNELS_REQUIRE_TABLES_AS_INFO_REPOSITORIES", - 0x28ad: "ER_RPL_CHANNELS_REQUIRE_NON_ZERO_SERVER_ID", - 0x28ae: "ER_RPL_REPO_SHOULD_BE_TABLE", - 0x28af: "ER_RPL_ERROR_CREATING_MASTER_INFO", - 0x28b0: "ER_RPL_ERROR_CHANGING_MASTER_INFO_REPO_TYPE", - 0x28b1: "ER_RPL_CHANGING_RELAY_LOG_INFO_REPO_TYPE_FAILED_DUE_TO_GAPS", - 0x28b2: "ER_RPL_ERROR_CREATING_RELAY_LOG_INFO", - 0x28b3: "ER_RPL_ERROR_CHANGING_RELAY_LOG_INFO_REPO_TYPE", - 0x28b4: "ER_RPL_FAILED_TO_DELETE_FROM_SLAVE_WORKERS_INFO_REPOSITORY", - 0x28b5: "ER_RPL_FAILED_TO_RESET_STATE_IN_SLAVE_INFO_REPOSITORY", - 0x28b6: "ER_RPL_ERROR_CHECKING_REPOSITORY", - 0x28b7: "ER_RPL_SLAVE_GENERIC_MESSAGE", - 0x28b8: "ER_RPL_SLAVE_COULD_NOT_CREATE_CHANNEL_LIST", - 0x28b9: "ER_RPL_MULTISOURCE_REQUIRES_TABLE_TYPE_REPOSITORIES", - 0x28ba: "ER_RPL_SLAVE_FAILED_TO_INIT_A_MASTER_INFO_STRUCTURE", - 0x28bb: "ER_RPL_SLAVE_FAILED_TO_INIT_MASTER_INFO_STRUCTURE", - 0x28bc: "ER_RPL_SLAVE_FAILED_TO_CREATE_CHANNEL_FROM_MASTER_INFO", - 0x28bd: "ER_RPL_FAILED_TO_CREATE_NEW_INFO_FILE", - 0x28be: "ER_RPL_FAILED_TO_CREATE_CACHE_FOR_INFO_FILE", - 0x28bf: "ER_RPL_FAILED_TO_OPEN_INFO_FILE", - 0x28c0: "ER_RPL_GTID_MEMORY_FINALLY_AVAILABLE", - 0x28c1: "ER_SERVER_COST_UNKNOWN_COST_CONSTANT", - 0x28c2: "ER_SERVER_COST_INVALID_COST_CONSTANT", - 0x28c3: "ER_ENGINE_COST_UNKNOWN_COST_CONSTANT", - 0x28c4: "ER_ENGINE_COST_UNKNOWN_STORAGE_ENGINE", - 0x28c5: "ER_ENGINE_COST_INVALID_DEVICE_TYPE_FOR_SE", - 0x28c6: "ER_ENGINE_COST_INVALID_CONST_CONSTANT_FOR_SE_AND_DEVICE", - 0x28c7: "ER_SERVER_COST_FAILED_TO_READ", - 0x28c8: "ER_ENGINE_COST_FAILED_TO_READ", - 0x28c9: "ER_FAILED_TO_OPEN_COST_CONSTANT_TABLES", - 0x28ca: "ER_RPL_UNSUPPORTED_UNIGNORABLE_EVENT_IN_STREAM", - 0x28cb: "ER_RPL_GTID_LOG_EVENT_IN_STREAM", - 0x28cc: "ER_RPL_UNEXPECTED_BEGIN_IN_STREAM", - 0x28cd: "ER_RPL_UNEXPECTED_COMMIT_ROLLBACK_OR_XID_LOG_EVENT_IN_STREAM", - 0x28ce: "ER_RPL_UNEXPECTED_XA_ROLLBACK_IN_STREAM", - 0x28cf: "ER_EVENT_EXECUTION_FAILED_CANT_AUTHENTICATE_USER", - 0x28d0: "ER_EVENT_EXECUTION_FAILED_USER_LOST_EVEN_PRIVILEGE", - 0x28d1: "ER_EVENT_ERROR_DURING_COMPILATION", - 0x28d2: "ER_EVENT_DROPPING", - 0x28d3: "ER_NDB_SCHEMA_GENERIC_MESSAGE", - 0x28d4: "ER_RPL_INCOMPATIBLE_DECIMAL_IN_RBR", - 0x28d5: "ER_INIT_ROOT_WITHOUT_PASSWORD", - 0x28d6: "ER_INIT_GENERATING_TEMP_PASSWORD_FOR_ROOT", - 0x28d7: "ER_INIT_CANT_OPEN_BOOTSTRAP_FILE", - 0x28d8: "ER_INIT_BOOTSTRAP_COMPLETE", - 0x28d9: "ER_INIT_DATADIR_NOT_EMPTY_WONT_INITIALIZE", - 0x28da: "ER_INIT_DATADIR_EXISTS_WONT_INITIALIZE", - 0x28db: "ER_INIT_DATADIR_EXISTS_AND_PATH_TOO_LONG_WONT_INITIALIZE", - 0x28dc: "ER_INIT_DATADIR_EXISTS_AND_NOT_WRITABLE_WONT_INITIALIZE", - 0x28dd: "ER_INIT_CREATING_DD", - 0x28de: "ER_RPL_BINLOG_STARTING_DUMP", - 0x28df: "ER_RPL_BINLOG_MASTER_SENDS_HEARTBEAT", - 0x28e0: "ER_RPL_BINLOG_SKIPPING_REMAINING_HEARTBEAT_INFO", - 0x28e1: "ER_RPL_BINLOG_MASTER_USES_CHECKSUM_AND_SLAVE_CANT", - 0x28e2: "ER_NDB_QUERY_FAILED", - 0x28e3: "ER_KILLING_THREAD", - 0x28e4: "ER_DETACHING_SESSION_LEFT_BY_PLUGIN", - 0x28e5: "ER_CANT_DETACH_SESSION_LEFT_BY_PLUGIN", - 0x28e6: "ER_DETACHED_SESSIONS_LEFT_BY_PLUGIN", - 0x28e7: "ER_FAILED_TO_DECREMENT_NUMBER_OF_THREADS", - 0x28e8: "ER_PLUGIN_DID_NOT_DEINITIALIZE_THREADS", - 0x28e9: "ER_KILLED_THREADS_OF_PLUGIN", - 0x28ea: "ER_NDB_SLAVE_MAX_REPLICATED_EPOCH_UNKNOWN", - 0x28eb: "ER_NDB_SLAVE_MAX_REPLICATED_EPOCH_SET_TO", - 0x28ec: "ER_NDB_NODE_ID_AND_MANAGEMENT_SERVER_INFO", - 0x28ed: "ER_NDB_DISCONNECT_INFO", - 0x28ee: "ER_NDB_COLUMN_DEFAULTS_DIFFER", - 0x28ef: "ER_NDB_COLUMN_SHOULD_NOT_HAVE_NATIVE_DEFAULT", - 0x28f0: "ER_NDB_FIELD_INFO", - 0x28f1: "ER_NDB_COLUMN_INFO", - 0x28f2: "ER_NDB_OOM_IN_FIX_UNIQUE_INDEX_ATTR_ORDER", - 0x28f3: "ER_NDB_SLAVE_MALFORMED_EVENT_RECEIVED_ON_TABLE", - 0x28f4: "ER_NDB_SLAVE_CONFLICT_FUNCTION_REQUIRES_ROLE", - 0x28f5: "ER_NDB_SLAVE_CONFLICT_DETECTION_REQUIRES_TRANSACTION_IDS", - 0x28f6: "ER_NDB_SLAVE_BINLOG_MISSING_INFO_FOR_CONFLICT_DETECTION", - 0x28f7: "ER_NDB_ERROR_IN_READAUTOINCREMENTVALUE", - 0x28f8: "ER_NDB_FOUND_UNCOMMITTED_AUTOCOMMIT", - 0x28f9: "ER_NDB_SLAVE_TOO_MANY_RETRIES", - 0x28fa: "ER_NDB_SLAVE_ERROR_IN_UPDATE_CREATE_INFO", - 0x28fb: "ER_NDB_SLAVE_CANT_ALLOCATE_TABLE_SHARE", - 0x28fc: "ER_NDB_BINLOG_ERROR_INFO_FROM_DA", - 0x28fd: "ER_NDB_BINLOG_CREATE_TABLE_EVENT", - 0x28fe: "ER_NDB_BINLOG_FAILED_CREATE_TABLE_EVENT_OPERATIONS", - 0x28ff: "ER_NDB_BINLOG_RENAME_EVENT", + 0x289A: "ER_NDB_SLAVE_SAW_ALREADY_COMMITTED_EPOCH", + 0x289B: "ER_NDB_SLAVE_PREVIOUS_EPOCH_NOT_COMMITTED", + 0x289C: "ER_NDB_SLAVE_MISSING_DATA_FOR_TIMESTAMP_COLUMN", + 0x289D: "ER_NDB_SLAVE_LOGGING_EXCEPTIONS_TO", + 0x289E: "ER_NDB_SLAVE_LOW_EPOCH_RESOLUTION", + 0x289F: "ER_NDB_INFO_FOUND_UNEXPECTED_FIELD_TYPE", + 0x28A0: "ER_NDB_INFO_FAILED_TO_CREATE_NDBINFO", + 0x28A1: "ER_NDB_INFO_FAILED_TO_INIT_NDBINFO", + 0x28A2: "ER_NDB_CLUSTER_WRONG_NUMBER_OF_FUNCTION_ARGUMENTS", + 0x28A3: "ER_NDB_CLUSTER_SCHEMA_INFO", + 0x28A4: "ER_NDB_CLUSTER_GENERIC_MESSAGE", + 0x28A5: "ER_RPL_CANT_OPEN_INFO_TABLE", + 0x28A6: "ER_RPL_CANT_SCAN_INFO_TABLE", + 0x28A7: "ER_RPL_CORRUPTED_INFO_TABLE", + 0x28A8: "ER_RPL_CORRUPTED_KEYS_IN_INFO_TABLE", + 0x28A9: "ER_RPL_WORKER_ID_IS", + 0x28AA: "ER_RPL_INCONSISTENT_TIMESTAMPS_IN_TRX", + 0x28AB: "ER_RPL_INCONSISTENT_SEQUENCE_NO_IN_TRX", + 0x28AC: "ER_RPL_CHANNELS_REQUIRE_TABLES_AS_INFO_REPOSITORIES", + 0x28AD: "ER_RPL_CHANNELS_REQUIRE_NON_ZERO_SERVER_ID", + 0x28AE: "ER_RPL_REPO_SHOULD_BE_TABLE", + 0x28AF: "ER_RPL_ERROR_CREATING_MASTER_INFO", + 0x28B0: "ER_RPL_ERROR_CHANGING_MASTER_INFO_REPO_TYPE", + 0x28B1: "ER_RPL_CHANGING_RELAY_LOG_INFO_REPO_TYPE_FAILED_DUE_TO_GAPS", + 0x28B2: "ER_RPL_ERROR_CREATING_RELAY_LOG_INFO", + 0x28B3: "ER_RPL_ERROR_CHANGING_RELAY_LOG_INFO_REPO_TYPE", + 0x28B4: "ER_RPL_FAILED_TO_DELETE_FROM_SLAVE_WORKERS_INFO_REPOSITORY", + 0x28B5: "ER_RPL_FAILED_TO_RESET_STATE_IN_SLAVE_INFO_REPOSITORY", + 0x28B6: "ER_RPL_ERROR_CHECKING_REPOSITORY", + 0x28B7: "ER_RPL_SLAVE_GENERIC_MESSAGE", + 0x28B8: "ER_RPL_SLAVE_COULD_NOT_CREATE_CHANNEL_LIST", + 0x28B9: "ER_RPL_MULTISOURCE_REQUIRES_TABLE_TYPE_REPOSITORIES", + 0x28BA: "ER_RPL_SLAVE_FAILED_TO_INIT_A_MASTER_INFO_STRUCTURE", + 0x28BB: "ER_RPL_SLAVE_FAILED_TO_INIT_MASTER_INFO_STRUCTURE", + 0x28BC: "ER_RPL_SLAVE_FAILED_TO_CREATE_CHANNEL_FROM_MASTER_INFO", + 0x28BD: "ER_RPL_FAILED_TO_CREATE_NEW_INFO_FILE", + 0x28BE: "ER_RPL_FAILED_TO_CREATE_CACHE_FOR_INFO_FILE", + 0x28BF: "ER_RPL_FAILED_TO_OPEN_INFO_FILE", + 0x28C0: "ER_RPL_GTID_MEMORY_FINALLY_AVAILABLE", + 0x28C1: "ER_SERVER_COST_UNKNOWN_COST_CONSTANT", + 0x28C2: "ER_SERVER_COST_INVALID_COST_CONSTANT", + 0x28C3: "ER_ENGINE_COST_UNKNOWN_COST_CONSTANT", + 0x28C4: "ER_ENGINE_COST_UNKNOWN_STORAGE_ENGINE", + 0x28C5: "ER_ENGINE_COST_INVALID_DEVICE_TYPE_FOR_SE", + 0x28C6: "ER_ENGINE_COST_INVALID_CONST_CONSTANT_FOR_SE_AND_DEVICE", + 0x28C7: "ER_SERVER_COST_FAILED_TO_READ", + 0x28C8: "ER_ENGINE_COST_FAILED_TO_READ", + 0x28C9: "ER_FAILED_TO_OPEN_COST_CONSTANT_TABLES", + 0x28CA: "ER_RPL_UNSUPPORTED_UNIGNORABLE_EVENT_IN_STREAM", + 0x28CB: "ER_RPL_GTID_LOG_EVENT_IN_STREAM", + 0x28CC: "ER_RPL_UNEXPECTED_BEGIN_IN_STREAM", + 0x28CD: "ER_RPL_UNEXPECTED_COMMIT_ROLLBACK_OR_XID_LOG_EVENT_IN_STREAM", + 0x28CE: "ER_RPL_UNEXPECTED_XA_ROLLBACK_IN_STREAM", + 0x28CF: "ER_EVENT_EXECUTION_FAILED_CANT_AUTHENTICATE_USER", + 0x28D0: "ER_EVENT_EXECUTION_FAILED_USER_LOST_EVEN_PRIVILEGE", + 0x28D1: "ER_EVENT_ERROR_DURING_COMPILATION", + 0x28D2: "ER_EVENT_DROPPING", + 0x28D3: "ER_NDB_SCHEMA_GENERIC_MESSAGE", + 0x28D4: "ER_RPL_INCOMPATIBLE_DECIMAL_IN_RBR", + 0x28D5: "ER_INIT_ROOT_WITHOUT_PASSWORD", + 0x28D6: "ER_INIT_GENERATING_TEMP_PASSWORD_FOR_ROOT", + 0x28D7: "ER_INIT_CANT_OPEN_BOOTSTRAP_FILE", + 0x28D8: "ER_INIT_BOOTSTRAP_COMPLETE", + 0x28D9: "ER_INIT_DATADIR_NOT_EMPTY_WONT_INITIALIZE", + 0x28DA: "ER_INIT_DATADIR_EXISTS_WONT_INITIALIZE", + 0x28DB: "ER_INIT_DATADIR_EXISTS_AND_PATH_TOO_LONG_WONT_INITIALIZE", + 0x28DC: "ER_INIT_DATADIR_EXISTS_AND_NOT_WRITABLE_WONT_INITIALIZE", + 0x28DD: "ER_INIT_CREATING_DD", + 0x28DE: "ER_RPL_BINLOG_STARTING_DUMP", + 0x28DF: "ER_RPL_BINLOG_MASTER_SENDS_HEARTBEAT", + 0x28E0: "ER_RPL_BINLOG_SKIPPING_REMAINING_HEARTBEAT_INFO", + 0x28E1: "ER_RPL_BINLOG_MASTER_USES_CHECKSUM_AND_SLAVE_CANT", + 0x28E2: "ER_NDB_QUERY_FAILED", + 0x28E3: "ER_KILLING_THREAD", + 0x28E4: "ER_DETACHING_SESSION_LEFT_BY_PLUGIN", + 0x28E5: "ER_CANT_DETACH_SESSION_LEFT_BY_PLUGIN", + 0x28E6: "ER_DETACHED_SESSIONS_LEFT_BY_PLUGIN", + 0x28E7: "ER_FAILED_TO_DECREMENT_NUMBER_OF_THREADS", + 0x28E8: "ER_PLUGIN_DID_NOT_DEINITIALIZE_THREADS", + 0x28E9: "ER_KILLED_THREADS_OF_PLUGIN", + 0x28EA: "ER_NDB_SLAVE_MAX_REPLICATED_EPOCH_UNKNOWN", + 0x28EB: "ER_NDB_SLAVE_MAX_REPLICATED_EPOCH_SET_TO", + 0x28EC: "ER_NDB_NODE_ID_AND_MANAGEMENT_SERVER_INFO", + 0x28ED: "ER_NDB_DISCONNECT_INFO", + 0x28EE: "ER_NDB_COLUMN_DEFAULTS_DIFFER", + 0x28EF: "ER_NDB_COLUMN_SHOULD_NOT_HAVE_NATIVE_DEFAULT", + 0x28F0: "ER_NDB_FIELD_INFO", + 0x28F1: "ER_NDB_COLUMN_INFO", + 0x28F2: "ER_NDB_OOM_IN_FIX_UNIQUE_INDEX_ATTR_ORDER", + 0x28F3: "ER_NDB_SLAVE_MALFORMED_EVENT_RECEIVED_ON_TABLE", + 0x28F4: "ER_NDB_SLAVE_CONFLICT_FUNCTION_REQUIRES_ROLE", + 0x28F5: "ER_NDB_SLAVE_CONFLICT_DETECTION_REQUIRES_TRANSACTION_IDS", + 0x28F6: "ER_NDB_SLAVE_BINLOG_MISSING_INFO_FOR_CONFLICT_DETECTION", + 0x28F7: "ER_NDB_ERROR_IN_READAUTOINCREMENTVALUE", + 0x28F8: "ER_NDB_FOUND_UNCOMMITTED_AUTOCOMMIT", + 0x28F9: "ER_NDB_SLAVE_TOO_MANY_RETRIES", + 0x28FA: "ER_NDB_SLAVE_ERROR_IN_UPDATE_CREATE_INFO", + 0x28FB: "ER_NDB_SLAVE_CANT_ALLOCATE_TABLE_SHARE", + 0x28FC: "ER_NDB_BINLOG_ERROR_INFO_FROM_DA", + 0x28FD: "ER_NDB_BINLOG_CREATE_TABLE_EVENT", + 0x28FE: "ER_NDB_BINLOG_FAILED_CREATE_TABLE_EVENT_OPERATIONS", + 0x28FF: "ER_NDB_BINLOG_RENAME_EVENT", 0x2900: "ER_NDB_BINLOG_FAILED_CREATE_EVENT_OPERATIONS_DURING_RENAME", 0x2901: "ER_NDB_UNEXPECTED_RENAME_TYPE", 0x2902: "ER_NDB_ERROR_IN_GET_AUTO_INCREMENT", @@ -1861,12 +1861,12 @@ 0x2907: "ER_NDB_TRAILING_SHARE_RELEASED_BY_CLOSE_CACHED_TABLES", 0x2908: "ER_NDB_SHARE_ALREADY_EXISTS", 0x2909: "ER_NDB_HANDLE_TRAILING_SHARE_INFO", - 0x290a: "ER_NDB_CLUSTER_GET_SHARE_INFO", - 0x290b: "ER_NDB_CLUSTER_REAL_FREE_SHARE_INFO", - 0x290c: "ER_NDB_CLUSTER_REAL_FREE_SHARE_DROP_FAILED", - 0x290d: "ER_NDB_CLUSTER_FREE_SHARE_INFO", - 0x290e: "ER_NDB_CLUSTER_MARK_SHARE_DROPPED_INFO", - 0x290f: "ER_NDB_CLUSTER_MARK_SHARE_DROPPED_DESTROYING_SHARE", + 0x290A: "ER_NDB_CLUSTER_GET_SHARE_INFO", + 0x290B: "ER_NDB_CLUSTER_REAL_FREE_SHARE_INFO", + 0x290C: "ER_NDB_CLUSTER_REAL_FREE_SHARE_DROP_FAILED", + 0x290D: "ER_NDB_CLUSTER_FREE_SHARE_INFO", + 0x290E: "ER_NDB_CLUSTER_MARK_SHARE_DROPPED_INFO", + 0x290F: "ER_NDB_CLUSTER_MARK_SHARE_DROPPED_DESTROYING_SHARE", 0x2910: "ER_NDB_CLUSTER_OOM_THD_NDB", 0x2911: "ER_NDB_BINLOG_NDB_TABLES_INITIALLY_READ_ONLY", 0x2912: "ER_NDB_UTIL_THREAD_OOM", @@ -1877,12 +1877,12 @@ 0x2917: "ER_DBUG_CHECK_SHARES_DROPPED", 0x2918: "ER_INVALID_OR_OLD_TABLE_OR_DB_NAME", 0x2919: "ER_TC_RECOVERING_AFTER_CRASH_USING", - 0x291a: "ER_TC_CANT_AUTO_RECOVER_WITH_TC_HEURISTIC_RECOVER", - 0x291b: "ER_TC_BAD_MAGIC_IN_TC_LOG", - 0x291c: "ER_TC_NEED_N_SE_SUPPORTING_2PC_FOR_RECOVERY", - 0x291d: "ER_TC_RECOVERY_FAILED_THESE_ARE_YOUR_OPTIONS", - 0x291e: "ER_TC_HEURISTIC_RECOVERY_MODE", - 0x291f: "ER_TC_HEURISTIC_RECOVERY_FAILED", + 0x291A: "ER_TC_CANT_AUTO_RECOVER_WITH_TC_HEURISTIC_RECOVER", + 0x291B: "ER_TC_BAD_MAGIC_IN_TC_LOG", + 0x291C: "ER_TC_NEED_N_SE_SUPPORTING_2PC_FOR_RECOVERY", + 0x291D: "ER_TC_RECOVERY_FAILED_THESE_ARE_YOUR_OPTIONS", + 0x291E: "ER_TC_HEURISTIC_RECOVERY_MODE", + 0x291F: "ER_TC_HEURISTIC_RECOVERY_FAILED", 0x2920: "ER_TC_RESTART_WITHOUT_TC_HEURISTIC_RECOVER", 0x2921: "ER_RPL_SLAVE_FAILED_TO_CREATE_OR_RECOVER_INFO_REPOSITORIES", 0x2922: "ER_RPL_SLAVE_AUTO_POSITION_IS_1_AND_GTID_MODE_IS_OFF", @@ -1893,12 +1893,12 @@ 0x2927: "ER_RPL_RECOVERY_ERROR_FREEING_IO_CACHE", 0x2928: "ER_RPL_RECOVERY_SKIPPED_GROUP_REPLICATION_CHANNEL", 0x2929: "ER_RPL_RECOVERY_ERROR", - 0x292a: "ER_RPL_RECOVERY_IO_ERROR_READING_RELAY_LOG_INDEX", - 0x292b: "ER_RPL_RECOVERY_FILE_MASTER_POS_INFO", - 0x292c: "ER_RPL_RECOVERY_REPLICATE_SAME_SERVER_ID_REQUIRES_POSITION", - 0x292d: "ER_RPL_MTS_RECOVERY_STARTING_COORDINATOR", - 0x292e: "ER_RPL_MTS_RECOVERY_FAILED_TO_START_COORDINATOR", - 0x292f: "ER_RPL_MTS_AUTOMATIC_RECOVERY_FAILED", + 0x292A: "ER_RPL_RECOVERY_IO_ERROR_READING_RELAY_LOG_INDEX", + 0x292B: "ER_RPL_RECOVERY_FILE_MASTER_POS_INFO", + 0x292C: "ER_RPL_RECOVERY_REPLICATE_SAME_SERVER_ID_REQUIRES_POSITION", + 0x292D: "ER_RPL_MTS_RECOVERY_STARTING_COORDINATOR", + 0x292E: "ER_RPL_MTS_RECOVERY_FAILED_TO_START_COORDINATOR", + 0x292F: "ER_RPL_MTS_AUTOMATIC_RECOVERY_FAILED", 0x2930: "ER_RPL_MTS_RECOVERY_CANT_OPEN_RELAY_LOG", 0x2931: "ER_RPL_MTS_RECOVERY_SUCCESSFUL", 0x2932: "ER_RPL_SERVER_ID_MISSING", @@ -1909,12 +1909,12 @@ 0x2937: "ER_RPL_SLAVE_SECONDS_BEHIND_MASTER_DUBIOUS", 0x2938: "ER_RPL_SLAVE_CANT_FLUSH_MASTER_INFO_FILE", 0x2939: "ER_RPL_SLAVE_REPORT_HOST_TOO_LONG", - 0x293a: "ER_RPL_SLAVE_REPORT_USER_TOO_LONG", - 0x293b: "ER_RPL_SLAVE_REPORT_PASSWORD_TOO_LONG", - 0x293c: "ER_RPL_SLAVE_ERROR_RETRYING", - 0x293d: "ER_RPL_SLAVE_ERROR_READING_FROM_SERVER", - 0x293e: "ER_RPL_SLAVE_DUMP_THREAD_KILLED_BY_MASTER", - 0x293f: "ER_RPL_MTS_STATISTICS", + 0x293A: "ER_RPL_SLAVE_REPORT_USER_TOO_LONG", + 0x293B: "ER_RPL_SLAVE_REPORT_PASSWORD_TOO_LONG", + 0x293C: "ER_RPL_SLAVE_ERROR_RETRYING", + 0x293D: "ER_RPL_SLAVE_ERROR_READING_FROM_SERVER", + 0x293E: "ER_RPL_SLAVE_DUMP_THREAD_KILLED_BY_MASTER", + 0x293F: "ER_RPL_MTS_STATISTICS", 0x2940: "ER_RPL_MTS_RECOVERY_COMPLETE", 0x2941: "ER_RPL_SLAVE_CANT_INIT_RELAY_LOG_POSITION", 0x2942: "ER_RPL_SLAVE_CONNECTED_TO_MASTER_REPLICATION_STARTED", @@ -1925,12 +1925,12 @@ 0x2947: "ER_RPL_LOG_ENTRY_EXCEEDS_SLAVE_MAX_ALLOWED_PACKET", 0x2948: "ER_RPL_SLAVE_STOPPING_AS_MASTER_OOM", 0x2949: "ER_RPL_SLAVE_IO_THREAD_ABORTED_WAITING_FOR_RELAY_LOG_SPACE", - 0x294a: "ER_RPL_SLAVE_IO_THREAD_EXITING", - 0x294b: "ER_RPL_SLAVE_CANT_INITIALIZE_SLAVE_WORKER", - 0x294c: "ER_RPL_MTS_GROUP_RECOVERY_RELAY_LOG_INFO_FOR_WORKER", - 0x294d: "ER_RPL_ERROR_LOOKING_FOR_LOG", - 0x294e: "ER_RPL_MTS_GROUP_RECOVERY_RELAY_LOG_INFO", - 0x294f: "ER_RPL_CANT_FIND_FOLLOWUP_FILE", + 0x294A: "ER_RPL_SLAVE_IO_THREAD_EXITING", + 0x294B: "ER_RPL_SLAVE_CANT_INITIALIZE_SLAVE_WORKER", + 0x294C: "ER_RPL_MTS_GROUP_RECOVERY_RELAY_LOG_INFO_FOR_WORKER", + 0x294D: "ER_RPL_ERROR_LOOKING_FOR_LOG", + 0x294E: "ER_RPL_MTS_GROUP_RECOVERY_RELAY_LOG_INFO", + 0x294F: "ER_RPL_CANT_FIND_FOLLOWUP_FILE", 0x2950: "ER_RPL_MTS_CHECKPOINT_PERIOD_DIFFERS_FROM_CNT", 0x2951: "ER_RPL_SLAVE_WORKER_THREAD_CREATION_FAILED", 0x2952: "ER_RPL_SLAVE_WORKER_THREAD_CREATION_FAILED_WITH_ERRNO", @@ -1941,12 +1941,12 @@ 0x2957: "ER_RPL_SLAVE_ADDITIONAL_ERROR_INFO_FROM_DA", 0x2958: "ER_RPL_SLAVE_ERROR_INFO_FROM_DA", 0x2959: "ER_RPL_SLAVE_ERROR_LOADING_USER_DEFINED_LIBRARY", - 0x295a: "ER_RPL_SLAVE_ERROR_RUNNING_QUERY", - 0x295b: "ER_RPL_SLAVE_SQL_THREAD_EXITING", - 0x295c: "ER_RPL_SLAVE_READ_INVALID_EVENT_FROM_MASTER", - 0x295d: "ER_RPL_SLAVE_QUEUE_EVENT_FAILED_INVALID_CONFIGURATION", - 0x295e: "ER_RPL_SLAVE_IO_THREAD_DETECTED_UNEXPECTED_EVENT_SEQUENCE", - 0x295f: "ER_RPL_SLAVE_CANT_USE_CHARSET", + 0x295A: "ER_RPL_SLAVE_ERROR_RUNNING_QUERY", + 0x295B: "ER_RPL_SLAVE_SQL_THREAD_EXITING", + 0x295C: "ER_RPL_SLAVE_READ_INVALID_EVENT_FROM_MASTER", + 0x295D: "ER_RPL_SLAVE_QUEUE_EVENT_FAILED_INVALID_CONFIGURATION", + 0x295E: "ER_RPL_SLAVE_IO_THREAD_DETECTED_UNEXPECTED_EVENT_SEQUENCE", + 0x295F: "ER_RPL_SLAVE_CANT_USE_CHARSET", 0x2960: "ER_RPL_SLAVE_CONNECTED_TO_MASTER_REPLICATION_RESUMED", 0x2961: "ER_RPL_SLAVE_NEXT_LOG_IS_ACTIVE", 0x2962: "ER_RPL_SLAVE_NEXT_LOG_IS_INACTIVE", @@ -1957,12 +1957,12 @@ 0x2967: "ER_RPL_FAILED_TO_STAT_LOG_IN_INDEX", 0x2968: "ER_RPL_LOG_NOT_FOUND_WHILE_COUNTING_RELAY_LOG_SPACE", 0x2969: "ER_SLAVE_CANT_USE_TEMPDIR", - 0x296a: "ER_RPL_RELAY_LOG_NEEDS_FILE_NOT_DIRECTORY", - 0x296b: "ER_RPL_RELAY_LOG_INDEX_NEEDS_FILE_NOT_DIRECTORY", - 0x296c: "ER_RPL_PLEASE_USE_OPTION_RELAY_LOG", - 0x296d: "ER_RPL_OPEN_INDEX_FILE_FAILED", - 0x296e: "ER_RPL_CANT_INITIALIZE_GTID_SETS_IN_RLI_INIT_INFO", - 0x296f: "ER_RPL_CANT_OPEN_LOG_IN_RLI_INIT_INFO", + 0x296A: "ER_RPL_RELAY_LOG_NEEDS_FILE_NOT_DIRECTORY", + 0x296B: "ER_RPL_RELAY_LOG_INDEX_NEEDS_FILE_NOT_DIRECTORY", + 0x296C: "ER_RPL_PLEASE_USE_OPTION_RELAY_LOG", + 0x296D: "ER_RPL_OPEN_INDEX_FILE_FAILED", + 0x296E: "ER_RPL_CANT_INITIALIZE_GTID_SETS_IN_RLI_INIT_INFO", + 0x296F: "ER_RPL_CANT_OPEN_LOG_IN_RLI_INIT_INFO", 0x2970: "ER_RPL_ERROR_WRITING_RELAY_LOG_CONFIGURATION", 0x2971: "ER_NDB_OOM_GET_NDB_BLOBS_VALUE", 0x2972: "ER_NDB_THREAD_TIMED_OUT", @@ -1973,12 +1973,12 @@ 0x2977: "ER_NDB_DISCOVERED_MISSING_DB", 0x2978: "ER_NDB_DISCOVERED_REMAINING_DB", 0x2979: "ER_NDB_CLUSTER_FIND_ALL_DBS_RETRY", - 0x297a: "ER_NDB_CLUSTER_FIND_ALL_DBS_FAIL", - 0x297b: "ER_NDB_SKIPPING_SETUP_TABLE", - 0x297c: "ER_NDB_FAILED_TO_SET_UP_TABLE", - 0x297d: "ER_NDB_MISSING_FRM_DISCOVERING", - 0x297e: "ER_NDB_MISMATCH_IN_FRM_DISCOVERING", - 0x297f: "ER_NDB_BINLOG_CLEANING_UP_SETUP_LEFTOVERS", + 0x297A: "ER_NDB_CLUSTER_FIND_ALL_DBS_FAIL", + 0x297B: "ER_NDB_SKIPPING_SETUP_TABLE", + 0x297C: "ER_NDB_FAILED_TO_SET_UP_TABLE", + 0x297D: "ER_NDB_MISSING_FRM_DISCOVERING", + 0x297E: "ER_NDB_MISMATCH_IN_FRM_DISCOVERING", + 0x297F: "ER_NDB_BINLOG_CLEANING_UP_SETUP_LEFTOVERS", 0x2980: "ER_NDB_WAITING_INFO", 0x2981: "ER_NDB_WAITING_INFO_WITH_MAP", 0x2982: "ER_NDB_TIMEOUT_WHILE_DISTRIBUTING", @@ -1989,12 +1989,12 @@ 0x2987: "ER_NDB_SCHEMA_DISTRIBUTION_REPORTS_SUBSCRIBE", 0x2988: "ER_NDB_SCHEMA_DISTRIBUTION_REPORTS_UNSUBSCRIBE", 0x2989: "ER_NDB_BINLOG_CANT_DISCOVER_TABLE_FROM_SCHEMA_EVENT", - 0x298a: "ER_NDB_BINLOG_SIGNALLING_UNKNOWN_VALUE", - 0x298b: "ER_NDB_BINLOG_REPLY_TO", - 0x298c: "ER_NDB_BINLOG_CANT_RELEASE_SLOCK", - 0x298d: "ER_NDB_CANT_FIND_TABLE", - 0x298e: "ER_NDB_DISCARDING_EVENT_NO_OBJ", - 0x298f: "ER_NDB_DISCARDING_EVENT_ID_VERSION_MISMATCH", + 0x298A: "ER_NDB_BINLOG_SIGNALLING_UNKNOWN_VALUE", + 0x298B: "ER_NDB_BINLOG_REPLY_TO", + 0x298C: "ER_NDB_BINLOG_CANT_RELEASE_SLOCK", + 0x298D: "ER_NDB_CANT_FIND_TABLE", + 0x298E: "ER_NDB_DISCARDING_EVENT_NO_OBJ", + 0x298F: "ER_NDB_DISCARDING_EVENT_ID_VERSION_MISMATCH", 0x2990: "ER_NDB_CLEAR_SLOCK_INFO", 0x2991: "ER_NDB_BINLOG_SKIPPING_LOCAL_TABLE", 0x2992: "ER_NDB_BINLOG_ONLINE_ALTER_RENAME", @@ -2005,1637 +2005,1637 @@ 0x2997: "ER_NDB_BINLOG_SKIPPING_DROP_OF_DB_CONTAINING_LOCAL_TABLES", 0x2998: "ER_NDB_BINLOG_GOT_DIST_PRIV_EVENT_FLUSHING_PRIVILEGES", 0x2999: "ER_NDB_BINLOG_GOT_SCHEMA_EVENT", - 0x299a: "ER_NDB_BINLOG_SKIPPING_OLD_SCHEMA_OPERATION", - 0x299b: "ER_NDB_CLUSTER_FAILURE", - 0x299c: "ER_NDB_TABLES_INITIALLY_READ_ONLY_ON_RECONNECT", - 0x299d: "ER_NDB_IGNORING_UNKNOWN_EVENT", - 0x299e: "ER_NDB_BINLOG_OPENING_INDEX", - 0x299f: "ER_NDB_BINLOG_CANT_LOCK_NDB_BINLOG_INDEX", - 0x29a0: "ER_NDB_BINLOG_INJECTING_RANDOM_WRITE_FAILURE", - 0x29a1: "ER_NDB_BINLOG_CANT_WRITE_TO_NDB_BINLOG_INDEX", - 0x29a2: "ER_NDB_BINLOG_WRITING_TO_NDB_BINLOG_INDEX", - 0x29a3: "ER_NDB_BINLOG_CANT_COMMIT_TO_NDB_BINLOG_INDEX", - 0x29a4: "ER_NDB_BINLOG_WRITE_TO_NDB_BINLOG_INDEX_FAILED_AFTER_KILL", - 0x29a5: "ER_NDB_BINLOG_USING_SERVER_ID_0_SLAVES_WILL_NOT", - 0x29a6: "ER_NDB_SERVER_ID_RESERVED_OR_TOO_LARGE", - 0x29a7: "ER_NDB_BINLOG_NDB_LOG_TRANSACTION_ID_REQUIRES_V2_ROW_EVENTS", - 0x29a8: "ER_NDB_BINLOG_NDB_LOG_APPLY_STATUS_FORCING_FULL_USE_WRITE", - 0x29a9: "ER_NDB_BINLOG_GENERIC_MESSAGE", - 0x29aa: "ER_NDB_CONFLICT_GENERIC_MESSAGE", - 0x29ab: "ER_NDB_TRANS_DEPENDENCY_TRACKER_ERROR", - 0x29ac: "ER_NDB_CONFLICT_FN_PARSE_ERROR", - 0x29ad: "ER_NDB_CONFLICT_FN_SETUP_ERROR", - 0x29ae: "ER_NDB_BINLOG_FAILED_TO_GET_TABLE", - 0x29af: "ER_NDB_BINLOG_NOT_LOGGING", - 0x29b0: "ER_NDB_BINLOG_CREATE_TABLE_EVENT_FAILED", - 0x29b1: "ER_NDB_BINLOG_CREATE_TABLE_EVENT_INFO", - 0x29b2: "ER_NDB_BINLOG_DISCOVER_TABLE_EVENT_INFO", - 0x29b3: "ER_NDB_BINLOG_BLOB_REQUIRES_PK", - 0x29b4: "ER_NDB_BINLOG_CANT_CREATE_EVENT_IN_DB", - 0x29b5: "ER_NDB_BINLOG_CANT_CREATE_EVENT_IN_DB_AND_CANT_DROP", - 0x29b6: "ER_NDB_BINLOG_CANT_CREATE_EVENT_IN_DB_DROPPED", - 0x29b7: "ER_NDB_BINLOG_DISCOVER_REUSING_OLD_EVENT_OPS", - 0x29b8: "ER_NDB_BINLOG_CREATING_NDBEVENTOPERATION_FAILED", - 0x29b9: "ER_NDB_BINLOG_CANT_CREATE_BLOB", - 0x29ba: "ER_NDB_BINLOG_NDBEVENT_EXECUTE_FAILED", - 0x29bb: "ER_NDB_CREATE_EVENT_OPS_LOGGING_INFO", - 0x29bc: "ER_NDB_BINLOG_CANT_DROP_EVENT_FROM_DB", - 0x29bd: "ER_NDB_TIMED_OUT_IN_DROP_TABLE", - 0x29be: "ER_NDB_BINLOG_UNHANDLED_ERROR_FOR_TABLE", - 0x29bf: "ER_NDB_BINLOG_CLUSTER_FAILURE", - 0x29c0: "ER_NDB_BINLOG_UNKNOWN_NON_DATA_EVENT", - 0x29c1: "ER_NDB_BINLOG_INJECTOR_DISCARDING_ROW_EVENT_METADATA", - 0x29c2: "ER_NDB_REMAINING_OPEN_TABLES", - 0x29c3: "ER_NDB_REMAINING_OPEN_TABLE_INFO", - 0x29c4: "ER_NDB_COULD_NOT_GET_APPLY_STATUS_SHARE", - 0x29c5: "ER_NDB_BINLOG_SERVER_SHUTDOWN_DURING_NDB_CLUSTER_START", - 0x29c6: "ER_NDB_BINLOG_CLUSTER_RESTARTED_RESET_MASTER_SUGGESTED", - 0x29c7: "ER_NDB_BINLOG_CLUSTER_HAS_RECONNECTED", - 0x29c8: "ER_NDB_BINLOG_STARTING_LOG_AT_EPOCH", - 0x29c9: "ER_NDB_BINLOG_NDB_TABLES_WRITABLE", - 0x29ca: "ER_NDB_BINLOG_SHUTDOWN_DETECTED", - 0x29cb: "ER_NDB_BINLOG_LOST_SCHEMA_CONNECTION_WAITING", - 0x29cc: "ER_NDB_BINLOG_LOST_SCHEMA_CONNECTION_CONTINUING", - 0x29cd: "ER_NDB_BINLOG_ERROR_HANDLING_SCHEMA_EVENT", - 0x29ce: "ER_NDB_BINLOG_CANT_INJECT_APPLY_STATUS_WRITE_ROW", - 0x29cf: "ER_NDB_BINLOG_ERROR_DURING_GCI_ROLLBACK", - 0x29d0: "ER_NDB_BINLOG_ERROR_DURING_GCI_COMMIT", - 0x29d1: "ER_NDB_BINLOG_LATEST_TRX_IN_EPOCH_NOT_IN_BINLOG", - 0x29d2: "ER_NDB_BINLOG_RELEASING_EXTRA_SHARE_REFERENCES", - 0x29d3: "ER_NDB_BINLOG_REMAINING_OPEN_TABLES", - 0x29d4: "ER_NDB_BINLOG_REMAINING_OPEN_TABLE_INFO", - 0x29d5: "ER_TREE_CORRUPT_PARENT_SHOULD_POINT_AT_PARENT", - 0x29d6: "ER_TREE_CORRUPT_ROOT_SHOULD_BE_BLACK", - 0x29d7: "ER_TREE_CORRUPT_2_CONSECUTIVE_REDS", - 0x29d8: "ER_TREE_CORRUPT_RIGHT_IS_LEFT", - 0x29d9: "ER_TREE_CORRUPT_INCORRECT_BLACK_COUNT", - 0x29da: "ER_WRONG_COUNT_FOR_ORIGIN", - 0x29db: "ER_WRONG_COUNT_FOR_KEY", - 0x29dc: "ER_WRONG_COUNT_OF_ELEMENTS", - 0x29dd: "ER_RPL_ERROR_READING_SLAVE_WORKER_CONFIGURATION", - 0x29de: "ER_RPL_ERROR_WRITING_SLAVE_WORKER_CONFIGURATION", - 0x29df: "ER_RPL_FAILED_TO_OPEN_RELAY_LOG", - 0x29e0: "ER_RPL_WORKER_CANT_READ_RELAY_LOG", - 0x29e1: "ER_RPL_WORKER_CANT_FIND_NEXT_RELAY_LOG", - 0x29e2: "ER_RPL_MTS_SLAVE_COORDINATOR_HAS_WAITED", - 0x29e3: "ER_BINLOG_FAILED_TO_WRITE_DROP_FOR_TEMP_TABLES", - 0x29e4: "ER_BINLOG_OOM_WRITING_DELETE_WHILE_OPENING_HEAP_TABLE", - 0x29e5: "ER_FAILED_TO_REPAIR_TABLE", - 0x29e6: "ER_FAILED_TO_REMOVE_TEMP_TABLE", - 0x29e7: "ER_SYSTEM_TABLE_NOT_TRANSACTIONAL", - 0x29e8: "ER_RPL_ERROR_WRITING_MASTER_CONFIGURATION", - 0x29e9: "ER_RPL_ERROR_READING_MASTER_CONFIGURATION", - 0x29ea: "ER_RPL_SSL_INFO_IN_MASTER_INFO_IGNORED", - 0x29eb: "ER_PLUGIN_FAILED_DEINITIALIZATION", - 0x29ec: "ER_PLUGIN_HAS_NONZERO_REFCOUNT_AFTER_DEINITIALIZATION", - 0x29ed: "ER_PLUGIN_SHUTTING_DOWN_PLUGIN", - 0x29ee: "ER_PLUGIN_REGISTRATION_FAILED", - 0x29ef: "ER_PLUGIN_CANT_OPEN_PLUGIN_TABLE", - 0x29f0: "ER_PLUGIN_CANT_LOAD", - 0x29f1: "ER_PLUGIN_LOAD_PARAMETER_TOO_LONG", - 0x29f2: "ER_PLUGIN_FORCING_SHUTDOWN", - 0x29f3: "ER_PLUGIN_HAS_NONZERO_REFCOUNT_AFTER_SHUTDOWN", - 0x29f4: "ER_PLUGIN_UNKNOWN_VARIABLE_TYPE", - 0x29f5: "ER_PLUGIN_VARIABLE_SET_READ_ONLY", - 0x29f6: "ER_PLUGIN_VARIABLE_MISSING_NAME", - 0x29f7: "ER_PLUGIN_VARIABLE_NOT_ALLOCATED_THREAD_LOCAL", - 0x29f8: "ER_PLUGIN_OOM", - 0x29f9: "ER_PLUGIN_BAD_OPTIONS", - 0x29fa: "ER_PLUGIN_PARSING_OPTIONS_FAILED", - 0x29fb: "ER_PLUGIN_DISABLED", - 0x29fc: "ER_PLUGIN_HAS_CONFLICTING_SYSTEM_VARIABLES", - 0x29fd: "ER_PLUGIN_CANT_SET_PERSISTENT_OPTIONS", - 0x29fe: "ER_MY_NET_WRITE_FAILED_FALLING_BACK_ON_STDERR", - 0x29ff: "ER_RETRYING_REPAIR_WITHOUT_QUICK", - 0x2a00: "ER_RETRYING_REPAIR_WITH_KEYCACHE", - 0x2a01: "ER_FOUND_ROWS_WHILE_REPAIRING", - 0x2a02: "ER_ERROR_DURING_OPTIMIZE_TABLE", - 0x2a03: "ER_ERROR_ENABLING_KEYS", - 0x2a04: "ER_CHECKING_TABLE", - 0x2a05: "ER_RECOVERING_TABLE", - 0x2a06: "ER_CANT_CREATE_TABLE_SHARE_FROM_FRM", - 0x2a07: "ER_CANT_LOCK_TABLE", - 0x2a08: "ER_CANT_ALLOC_TABLE_OBJECT", - 0x2a09: "ER_CANT_CREATE_HANDLER_OBJECT_FOR_TABLE", - 0x2a0a: "ER_CANT_SET_HANDLER_REFERENCE_FOR_TABLE", - 0x2a0b: "ER_CANT_LOCK_TABLESPACE", - 0x2a0c: "ER_CANT_UPGRADE_GENERATED_COLUMNS_TO_DD", - 0x2a0d: "ER_DD_ERROR_CREATING_ENTRY", - 0x2a0e: "ER_DD_CANT_FETCH_TABLE_DATA", - 0x2a0f: "ER_DD_CANT_FIX_SE_DATA", - 0x2a10: "ER_DD_CANT_CREATE_SP", - 0x2a11: "ER_CANT_OPEN_DB_OPT_USING_DEFAULT_CHARSET", - 0x2a12: "ER_CANT_CREATE_CACHE_FOR_DB_OPT", - 0x2a13: "ER_CANT_IDENTIFY_CHARSET_USING_DEFAULT", - 0x2a14: "ER_DB_OPT_NOT_FOUND_USING_DEFAULT_CHARSET", - 0x2a15: "ER_EVENT_CANT_GET_TIMEZONE_FROM_FIELD", - 0x2a16: "ER_EVENT_CANT_FIND_TIMEZONE", - 0x2a17: "ER_EVENT_CANT_GET_CHARSET", - 0x2a18: "ER_EVENT_CANT_GET_COLLATION", - 0x2a19: "ER_EVENT_CANT_OPEN_TABLE_MYSQL_EVENT", - 0x2a1a: "ER_CANT_PARSE_STORED_ROUTINE_BODY", - 0x2a1b: "ER_CANT_OPEN_TABLE_MYSQL_PROC", - 0x2a1c: "ER_CANT_READ_TABLE_MYSQL_PROC", - 0x2a1d: "ER_FILE_EXISTS_DURING_UPGRADE", - 0x2a1e: "ER_CANT_OPEN_DATADIR_AFTER_UPGRADE_FAILURE", - 0x2a1f: "ER_CANT_SET_PATH_FOR", - 0x2a20: "ER_CANT_OPEN_DIR", - 0x2a21: "ER_NDB_EMPTY_NODEID_IN_NDB_CLUSTER_CONNECTION_POOL_NODEIDS", - 0x2a22: "ER_NDB_CANT_PARSE_NDB_CLUSTER_CONNECTION_POOL_NODEIDS", - 0x2a23: "ER_NDB_INVALID_NODEID_IN_NDB_CLUSTER_CONNECTION_POOL_NODEIDS", - 0x2a24: "ER_NDB_DUPLICATE_NODEID_IN_NDB_CLUSTER_CONNECTION_POOL_NODEIDS", - 0x2a25: "ER_NDB_POOL_SIZE_MUST_MATCH_NDB_CLUSTER_CONNECTION_POOL_NODEIDS", - 0x2a26: "ER_NDB_NODEID_NOT_FIRST_IN_NDB_CLUSTER_CONNECTION_POOL_NODEIDS", - 0x2a27: "ER_NDB_USING_NODEID", - 0x2a28: "ER_NDB_CANT_ALLOC_GLOBAL_NDB_CLUSTER_CONNECTION", - 0x2a29: "ER_NDB_CANT_ALLOC_GLOBAL_NDB_OBJECT", - 0x2a2a: "ER_NDB_USING_NODEID_LIST", - 0x2a2b: "ER_NDB_CANT_ALLOC_NDB_CLUSTER_CONNECTION", - 0x2a2c: "ER_NDB_STARTING_CONNECT_THREAD", - 0x2a2d: "ER_NDB_NODE_INFO", - 0x2a2e: "ER_NDB_CANT_START_CONNECT_THREAD", - 0x2a2f: "ER_NDB_GENERIC_ERROR", - 0x2a30: "ER_NDB_CPU_MASK_TOO_SHORT", - 0x2a31: "ER_EVENT_ERROR_CREATING_QUERY_TO_WRITE_TO_BINLOG", - 0x2a32: "ER_EVENT_SCHEDULER_ERROR_LOADING_FROM_DB", - 0x2a33: "ER_EVENT_SCHEDULER_ERROR_GETTING_EVENT_OBJECT", - 0x2a34: "ER_EVENT_SCHEDULER_GOT_BAD_DATA_FROM_TABLE", - 0x2a35: "ER_EVENT_CANT_GET_LOCK_FOR_DROPPING_EVENT", - 0x2a36: "ER_EVENT_UNABLE_TO_DROP_EVENT", - 0x2a37: "ER_BINLOG_ATTACHING_THREAD_MEMORY_FINALLY_AVAILABLE", - 0x2a38: "ER_BINLOG_CANT_RESIZE_CACHE", - 0x2a39: "ER_BINLOG_FILE_BEING_READ_NOT_PURGED", - 0x2a3a: "ER_BINLOG_IO_ERROR_READING_HEADER", - 0x2a3b: "ER_BINLOG_CANT_OPEN_LOG", - 0x2a3c: "ER_BINLOG_CANT_CREATE_CACHE_FOR_LOG", - 0x2a3d: "ER_BINLOG_FILE_EXTENSION_NUMBER_EXHAUSTED", - 0x2a3e: "ER_BINLOG_FILE_NAME_TOO_LONG", - 0x2a3f: "ER_BINLOG_FILE_EXTENSION_NUMBER_RUNNING_LOW", - 0x2a40: "ER_BINLOG_CANT_OPEN_FOR_LOGGING", - 0x2a41: "ER_BINLOG_FAILED_TO_SYNC_INDEX_FILE", - 0x2a42: "ER_BINLOG_ERROR_READING_GTIDS_FROM_RELAY_LOG", - 0x2a43: "ER_BINLOG_EVENTS_READ_FROM_RELAY_LOG_INFO", - 0x2a44: "ER_BINLOG_ERROR_READING_GTIDS_FROM_BINARY_LOG", - 0x2a45: "ER_BINLOG_EVENTS_READ_FROM_BINLOG_INFO", - 0x2a46: "ER_BINLOG_CANT_GENERATE_NEW_FILE_NAME", - 0x2a47: "ER_BINLOG_FAILED_TO_SYNC_INDEX_FILE_IN_OPEN", - 0x2a48: "ER_BINLOG_CANT_USE_FOR_LOGGING", - 0x2a49: "ER_BINLOG_FAILED_TO_CLOSE_INDEX_FILE_WHILE_REBUILDING", - 0x2a4a: "ER_BINLOG_FAILED_TO_DELETE_INDEX_FILE_WHILE_REBUILDING", - 0x2a4b: "ER_BINLOG_FAILED_TO_RENAME_INDEX_FILE_WHILE_REBUILDING", - 0x2a4c: "ER_BINLOG_FAILED_TO_OPEN_INDEX_FILE_AFTER_REBUILDING", - 0x2a4d: "ER_BINLOG_CANT_APPEND_LOG_TO_TMP_INDEX", - 0x2a4e: "ER_BINLOG_CANT_LOCATE_OLD_BINLOG_OR_RELAY_LOG_FILES", - 0x2a4f: "ER_BINLOG_CANT_DELETE_FILE", - 0x2a50: "ER_BINLOG_CANT_SET_TMP_INDEX_NAME", - 0x2a51: "ER_BINLOG_FAILED_TO_OPEN_TEMPORARY_INDEX_FILE", - 0x2a52: "ER_BINLOG_ERROR_GETTING_NEXT_LOG_FROM_INDEX", - 0x2a53: "ER_BINLOG_CANT_OPEN_TMP_INDEX", - 0x2a54: "ER_BINLOG_CANT_COPY_INDEX_TO_TMP", - 0x2a55: "ER_BINLOG_CANT_CLOSE_TMP_INDEX", - 0x2a56: "ER_BINLOG_CANT_MOVE_TMP_TO_INDEX", - 0x2a57: "ER_BINLOG_PURGE_LOGS_CALLED_WITH_FILE_NOT_IN_INDEX", - 0x2a58: "ER_BINLOG_PURGE_LOGS_CANT_SYNC_INDEX_FILE", - 0x2a59: "ER_BINLOG_PURGE_LOGS_CANT_COPY_TO_REGISTER_FILE", - 0x2a5a: "ER_BINLOG_PURGE_LOGS_CANT_FLUSH_REGISTER_FILE", - 0x2a5b: "ER_BINLOG_PURGE_LOGS_CANT_UPDATE_INDEX_FILE", - 0x2a5c: "ER_BINLOG_PURGE_LOGS_FAILED_TO_PURGE_LOG", - 0x2a5d: "ER_BINLOG_FAILED_TO_SET_PURGE_INDEX_FILE_NAME", - 0x2a5e: "ER_BINLOG_FAILED_TO_OPEN_REGISTER_FILE", - 0x2a5f: "ER_BINLOG_FAILED_TO_REINIT_REGISTER_FILE", - 0x2a60: "ER_BINLOG_FAILED_TO_READ_REGISTER_FILE", - 0x2a61: "ER_CANT_STAT_FILE", - 0x2a62: "ER_BINLOG_CANT_DELETE_LOG_FILE_DOES_INDEX_MATCH_FILES", - 0x2a63: "ER_BINLOG_CANT_DELETE_FILE_AND_READ_BINLOG_INDEX", - 0x2a64: "ER_BINLOG_FAILED_TO_DELETE_LOG_FILE", - 0x2a65: "ER_BINLOG_LOGGING_INCIDENT_TO_STOP_SLAVES", - 0x2a66: "ER_BINLOG_CANT_FIND_LOG_IN_INDEX", - 0x2a67: "ER_BINLOG_RECOVERING_AFTER_CRASH_USING", - 0x2a68: "ER_BINLOG_CANT_OPEN_CRASHED_BINLOG", - 0x2a69: "ER_BINLOG_CANT_TRIM_CRASHED_BINLOG", - 0x2a6a: "ER_BINLOG_CRASHED_BINLOG_TRIMMED", - 0x2a6b: "ER_BINLOG_CANT_CLEAR_IN_USE_FLAG_FOR_CRASHED_BINLOG", - 0x2a6c: "ER_BINLOG_FAILED_TO_RUN_AFTER_SYNC_HOOK", - 0x2a6d: "ER_TURNING_LOGGING_OFF_FOR_THE_DURATION", - 0x2a6e: "ER_BINLOG_FAILED_TO_RUN_AFTER_FLUSH_HOOK", - 0x2a6f: "ER_BINLOG_CRASH_RECOVERY_FAILED", - 0x2a70: "ER_BINLOG_WARNING_SUPPRESSED", - 0x2a71: "ER_NDB_LOG_ENTRY", - 0x2a72: "ER_NDB_LOG_ENTRY_WITH_PREFIX", - 0x2a73: "ER_NDB_BINLOG_CANT_CREATE_PURGE_THD", - 0x2a74: "ER_INNODB_UNKNOWN_COLLATION", - 0x2a75: "ER_INNODB_INVALID_LOG_GROUP_HOME_DIR", - 0x2a76: "ER_INNODB_INVALID_INNODB_UNDO_DIRECTORY", - 0x2a77: "ER_INNODB_ILLEGAL_COLON_IN_POOL", - 0x2a78: "ER_INNODB_INVALID_PAGE_SIZE", - 0x2a79: "ER_INNODB_DIRTY_WATER_MARK_NOT_LOW", - 0x2a7a: "ER_INNODB_IO_CAPACITY_EXCEEDS_MAX", - 0x2a7b: "ER_INNODB_FILES_SAME", - 0x2a7c: "ER_INNODB_UNREGISTERED_TRX_ACTIVE", - 0x2a7d: "ER_INNODB_CLOSING_CONNECTION_ROLLS_BACK", - 0x2a7e: "ER_INNODB_TRX_XLATION_TABLE_OOM", - 0x2a7f: "ER_INNODB_CANT_FIND_INDEX_IN_INNODB_DD", - 0x2a80: "ER_INNODB_INDEX_COLUMN_INFO_UNLIKE_MYSQLS", - 0x2a81: "ER_INNODB_CANT_OPEN_TABLE", - 0x2a82: "ER_INNODB_CANT_BUILD_INDEX_XLATION_TABLE_FOR", - 0x2a83: "ER_INNODB_PK_NOT_IN_MYSQL", - 0x2a84: "ER_INNODB_PK_ONLY_IN_MYSQL", - 0x2a85: "ER_INNODB_CLUSTERED_INDEX_PRIVATE", - 0x2a86: "ER_INNODB_PARTITION_TABLE_LOWERCASED", - 0x2a87: "ER_ERRMSG_REPLACEMENT_DODGY", - 0x2a88: "ER_ERRMSG_REPLACEMENTS_FAILED", - 0x2a89: "ER_NPIPE_CANT_CREATE", - 0x2a8a: "ER_PARTITION_MOVE_CREATED_DUPLICATE_ROW_PLEASE_FIX", - 0x2a8b: "ER_AUDIT_CANT_ABORT_COMMAND", - 0x2a8c: "ER_AUDIT_CANT_ABORT_EVENT", - 0x2a8d: "ER_AUDIT_WARNING", - 0x2a8e: "ER_NDB_NUMBER_OF_CHANNELS", - 0x2a8f: "ER_NDB_SLAVE_PARALLEL_WORKERS", - 0x2a90: "ER_NDB_DISTRIBUTING_ERR", - 0x2a91: "ER_RPL_SLAVE_INSECURE_CHANGE_MASTER", - 0x2a92: "ER_RPL_SLAVE_FLUSH_RELAY_LOGS_NOT_ALLOWED", - 0x2a93: "ER_RPL_SLAVE_INCORRECT_CHANNEL", - 0x2a94: "ER_FAILED_TO_FIND_DL_ENTRY", - 0x2a95: "ER_FAILED_TO_OPEN_SHARED_LIBRARY", - 0x2a96: "ER_THREAD_PRIORITY_IGNORED", - 0x2a97: "ER_BINLOG_CACHE_SIZE_TOO_LARGE", - 0x2a98: "ER_BINLOG_STMT_CACHE_SIZE_TOO_LARGE", - 0x2a99: "ER_FAILED_TO_GENERATE_UNIQUE_LOGFILE", - 0x2a9a: "ER_FAILED_TO_READ_FILE", - 0x2a9b: "ER_FAILED_TO_WRITE_TO_FILE", - 0x2a9c: "ER_BINLOG_UNSAFE_MESSAGE_AND_STATEMENT", - 0x2a9d: "ER_FORCE_CLOSE_THREAD", - 0x2a9e: "ER_SERVER_SHUTDOWN_COMPLETE", - 0x2a9f: "ER_RPL_CANT_HAVE_SAME_BASENAME", - 0x2aa0: "ER_RPL_GTID_MODE_REQUIRES_ENFORCE_GTID_CONSISTENCY_ON", - 0x2aa1: "ER_WARN_NO_SERVERID_SPECIFIED", - 0x2aa2: "ER_ABORTING_USER_CONNECTION", - 0x2aa3: "ER_SQL_MODE_MERGED_WITH_STRICT_MODE", - 0x2aa4: "ER_GTID_PURGED_WAS_UPDATED", - 0x2aa5: "ER_GTID_EXECUTED_WAS_UPDATED", - 0x2aa6: "ER_DEPRECATE_MSG_WITH_REPLACEMENT", - 0x2aa7: "ER_TRG_CREATION_CTX_NOT_SET", - 0x2aa8: "ER_FILE_HAS_OLD_FORMAT", - 0x2aa9: "ER_VIEW_CREATION_CTX_NOT_SET", - 0x2aaa: "ER_TABLE_NAME_CAUSES_TOO_LONG_PATH", - 0x2aab: "ER_TABLE_UPGRADE_REQUIRED", - 0x2aac: "ER_GET_ERRNO_FROM_STORAGE_ENGINE", - 0x2aad: "ER_ACCESS_DENIED_ERROR_WITHOUT_PASSWORD", - 0x2aae: "ER_ACCESS_DENIED_ERROR_WITH_PASSWORD", - 0x2aaf: "ER_ACCESS_DENIED_FOR_USER_ACCOUNT_LOCKED", - 0x2ab0: "ER_MUST_CHANGE_EXPIRED_PASSWORD", - 0x2ab1: "ER_SYSTEM_TABLES_NOT_SUPPORTED_BY_STORAGE_ENGINE", - 0x2ab2: "ER_FILESORT_TERMINATED", - 0x2ab3: "ER_SERVER_STARTUP_MSG", - 0x2ab4: "ER_FAILED_TO_FIND_LOCALE_NAME", - 0x2ab5: "ER_FAILED_TO_FIND_COLLATION_NAME", - 0x2ab6: "ER_SERVER_OUT_OF_RESOURCES", - 0x2ab7: "ER_SERVER_OUTOFMEMORY", - 0x2ab8: "ER_INVALID_COLLATION_FOR_CHARSET", - 0x2ab9: "ER_CANT_START_ERROR_LOG_SERVICE", - 0x2aba: "ER_CREATING_NEW_UUID_FIRST_START", - 0x2abb: "ER_FAILED_TO_GET_ABSOLUTE_PATH", - 0x2abc: "ER_PERFSCHEMA_COMPONENTS_INFRASTRUCTURE_BOOTSTRAP", - 0x2abd: "ER_PERFSCHEMA_COMPONENTS_INFRASTRUCTURE_SHUTDOWN", - 0x2abe: "ER_DUP_FD_OPEN_FAILED", - 0x2abf: "ER_SYSTEM_VIEW_INIT_FAILED", - 0x2ac0: "ER_RESOURCE_GROUP_POST_INIT_FAILED", - 0x2ac1: "ER_RESOURCE_GROUP_SUBSYSTEM_INIT_FAILED", - 0x2ac2: "ER_FAILED_START_MYSQLD_DAEMON", - 0x2ac3: "ER_CANNOT_CHANGE_TO_ROOT_DIR", - 0x2ac4: "ER_PERSISTENT_PRIVILEGES_BOOTSTRAP", - 0x2ac5: "ER_BASEDIR_SET_TO", - 0x2ac6: "ER_RPL_FILTER_ADD_WILD_DO_TABLE_FAILED", - 0x2ac7: "ER_RPL_FILTER_ADD_WILD_IGNORE_TABLE_FAILED", - 0x2ac8: "ER_PRIVILEGE_SYSTEM_INIT_FAILED", - 0x2ac9: "ER_CANNOT_SET_LOG_ERROR_SERVICES", - 0x2aca: "ER_PERFSCHEMA_TABLES_INIT_FAILED", - 0x2acb: "ER_TX_EXTRACTION_ALGORITHM_FOR_BINLOG_TX_DEPEDENCY_TRACKING", - 0x2acc: "ER_INVALID_REPLICATION_TIMESTAMPS", - 0x2acd: "ER_RPL_TIMESTAMPS_RETURNED_TO_NORMAL", - 0x2ace: "ER_BINLOG_FILE_OPEN_FAILED", - 0x2acf: "ER_BINLOG_EVENT_WRITE_TO_STMT_CACHE_FAILED", - 0x2ad0: "ER_SLAVE_RELAY_LOG_TRUNCATE_INFO", - 0x2ad1: "ER_SLAVE_RELAY_LOG_PURGE_FAILED", - 0x2ad2: "ER_RPL_SLAVE_FILTER_CREATE_FAILED", - 0x2ad3: "ER_RPL_SLAVE_GLOBAL_FILTERS_COPY_FAILED", - 0x2ad4: "ER_RPL_SLAVE_RESET_FILTER_OPTIONS", - 0x2ad5: "ER_MISSING_GRANT_SYSTEM_TABLE", - 0x2ad6: "ER_MISSING_ACL_SYSTEM_TABLE", - 0x2ad7: "ER_ANONYMOUS_AUTH_ID_NOT_ALLOWED_IN_MANDATORY_ROLES", - 0x2ad8: "ER_UNKNOWN_AUTH_ID_IN_MANDATORY_ROLE", - 0x2ad9: "ER_WRITE_ROW_TO_PARTITION_FAILED", - 0x2ada: "ER_RESOURCE_GROUP_METADATA_UPDATE_SKIPPED", - 0x2adb: "ER_FAILED_TO_PERSIST_RESOURCE_GROUP_METADATA", - 0x2adc: "ER_FAILED_TO_DESERIALIZE_RESOURCE_GROUP", - 0x2add: "ER_FAILED_TO_UPDATE_RESOURCE_GROUP", - 0x2ade: "ER_RESOURCE_GROUP_VALIDATION_FAILED", - 0x2adf: "ER_FAILED_TO_ALLOCATE_MEMORY_FOR_RESOURCE_GROUP", - 0x2ae0: "ER_FAILED_TO_ALLOCATE_MEMORY_FOR_RESOURCE_GROUP_HASH", - 0x2ae1: "ER_FAILED_TO_ADD_RESOURCE_GROUP_TO_MAP", - 0x2ae2: "ER_RESOURCE_GROUP_IS_DISABLED", - 0x2ae3: "ER_FAILED_TO_APPLY_RESOURCE_GROUP_CONTROLLER", - 0x2ae4: "ER_FAILED_TO_ACQUIRE_LOCK_ON_RESOURCE_GROUP", - 0x2ae5: "ER_PFS_NOTIFICATION_FUNCTION_REGISTER_FAILED", - 0x2ae6: "ER_RES_GRP_SET_THR_AFFINITY_FAILED", - 0x2ae7: "ER_RES_GRP_SET_THR_AFFINITY_TO_CPUS_FAILED", - 0x2ae8: "ER_RES_GRP_THD_UNBIND_FROM_CPU_FAILED", - 0x2ae9: "ER_RES_GRP_SET_THREAD_PRIORITY_FAILED", - 0x2aea: "ER_RES_GRP_FAILED_TO_DETERMINE_NICE_CAPABILITY", - 0x2aeb: "ER_RES_GRP_FAILED_TO_GET_THREAD_HANDLE", - 0x2aec: "ER_RES_GRP_GET_THREAD_PRIO_NOT_SUPPORTED", - 0x2aed: "ER_RES_GRP_FAILED_DETERMINE_CPU_COUNT", - 0x2aee: "ER_RES_GRP_FEATURE_NOT_AVAILABLE", - 0x2aef: "ER_RES_GRP_INVALID_THREAD_PRIORITY", - 0x2af0: "ER_RES_GRP_SOLARIS_PROCESSOR_BIND_TO_CPUID_FAILED", - 0x2af1: "ER_RES_GRP_SOLARIS_PROCESSOR_BIND_TO_THREAD_FAILED", - 0x2af2: "ER_RES_GRP_SOLARIS_PROCESSOR_AFFINITY_FAILED", - 0x2af3: "ER_DD_UPGRADE_RENAME_IDX_STATS_FILE_FAILED", - 0x2af4: "ER_DD_UPGRADE_DD_OPEN_FAILED", - 0x2af5: "ER_DD_UPGRADE_FAILED_TO_FETCH_TABLESPACES", - 0x2af6: "ER_DD_UPGRADE_FAILED_TO_ACQUIRE_TABLESPACE", - 0x2af7: "ER_DD_UPGRADE_FAILED_TO_RESOLVE_TABLESPACE_ENGINE", - 0x2af8: "ER_FAILED_TO_CREATE_SDI_FOR_TABLESPACE", - 0x2af9: "ER_FAILED_TO_STORE_SDI_FOR_TABLESPACE", - 0x2afa: "ER_DD_UPGRADE_FAILED_TO_FETCH_TABLES", - 0x2afb: "ER_DD_UPGRADE_DD_POPULATED", - 0x2afc: "ER_DD_UPGRADE_INFO_FILE_OPEN_FAILED", - 0x2afd: "ER_DD_UPGRADE_INFO_FILE_CLOSE_FAILED", - 0x2afe: "ER_DD_UPGRADE_TABLESPACE_MIGRATION_FAILED", - 0x2aff: "ER_DD_UPGRADE_FAILED_TO_CREATE_TABLE_STATS", - 0x2b00: "ER_DD_UPGRADE_TABLE_STATS_MIGRATE_COMPLETED", - 0x2b01: "ER_DD_UPGRADE_FAILED_TO_CREATE_INDEX_STATS", - 0x2b02: "ER_DD_UPGRADE_INDEX_STATS_MIGRATE_COMPLETED", - 0x2b03: "ER_DD_UPGRADE_FAILED_FIND_VALID_DATA_DIR", - 0x2b04: "ER_DD_UPGRADE_START", - 0x2b05: "ER_DD_UPGRADE_FAILED_INIT_DD_SE", - 0x2b06: "ER_DD_UPGRADE_FOUND_PARTIALLY_UPGRADED_DD_ABORT", - 0x2b07: "ER_DD_UPGRADE_FOUND_PARTIALLY_UPGRADED_DD_CONTINUE", - 0x2b08: "ER_DD_UPGRADE_SE_LOGS_FAILED", - 0x2b09: "ER_DD_UPGRADE_SDI_INFO_UPDATE_FAILED", - 0x2b0a: "ER_SKIP_UPDATING_METADATA_IN_SE_RO_MODE", - 0x2b0b: "ER_CREATED_SYSTEM_WITH_VERSION", - 0x2b0c: "ER_UNKNOWN_ERROR_DETECTED_IN_SE", - 0x2b0d: "ER_READ_LOG_EVENT_FAILED", - 0x2b0e: "ER_ROW_DATA_TOO_BIG_TO_WRITE_IN_BINLOG", - 0x2b0f: "ER_FAILED_TO_CONSTRUCT_DROP_EVENT_QUERY", - 0x2b10: "ER_FAILED_TO_BINLOG_DROP_EVENT", - 0x2b11: "ER_FAILED_TO_START_SLAVE_THREAD", - 0x2b12: "ER_RPL_IO_THREAD_KILLED", - 0x2b13: "ER_SLAVE_RECONNECT_FAILED", - 0x2b14: "ER_SLAVE_KILLED_AFTER_RECONNECT", - 0x2b15: "ER_SLAVE_NOT_STARTED_ON_SOME_CHANNELS", - 0x2b16: "ER_FAILED_TO_ADD_RPL_FILTER", - 0x2b17: "ER_PER_CHANNEL_RPL_FILTER_CONF_FOR_GRP_RPL", - 0x2b18: "ER_RPL_FILTERS_NOT_ATTACHED_TO_CHANNEL", - 0x2b19: "ER_FAILED_TO_BUILD_DO_AND_IGNORE_TABLE_HASHES", - 0x2b1a: "ER_CLONE_PLUGIN_NOT_LOADED", - 0x2b1b: "ER_CLONE_HANDLER_EXISTS", - 0x2b1c: "ER_FAILED_TO_CREATE_CLONE_HANDLER", - 0x2b1d: "ER_CYCLE_TIMER_IS_NOT_AVAILABLE", - 0x2b1e: "ER_NANOSECOND_TIMER_IS_NOT_AVAILABLE", - 0x2b1f: "ER_MICROSECOND_TIMER_IS_NOT_AVAILABLE", - 0x2b20: "ER_PFS_MALLOC_ARRAY_OVERFLOW", - 0x2b21: "ER_PFS_MALLOC_ARRAY_OOM", - 0x2b22: "ER_INNODB_FAILED_TO_FIND_IDX_WITH_KEY_NO", - 0x2b23: "ER_INNODB_FAILED_TO_FIND_IDX", - 0x2b24: "ER_INNODB_FAILED_TO_FIND_IDX_FROM_DICT_CACHE", - 0x2b25: "ER_INNODB_ACTIVE_INDEX_CHANGE_FAILED", - 0x2b26: "ER_INNODB_DIFF_IN_REF_LEN", - 0x2b27: "ER_WRONG_TYPE_FOR_COLUMN_PREFIX_IDX_FLD", - 0x2b28: "ER_INNODB_CANNOT_CREATE_TABLE", - 0x2b29: "ER_INNODB_INTERNAL_INDEX", - 0x2b2a: "ER_INNODB_IDX_CNT_MORE_THAN_DEFINED_IN_MYSQL", - 0x2b2b: "ER_INNODB_IDX_CNT_FEWER_THAN_DEFINED_IN_MYSQL", - 0x2b2c: "ER_INNODB_IDX_COLUMN_CNT_DIFF", - 0x2b2d: "ER_INNODB_USE_MONITOR_GROUP_NAME", - 0x2b2e: "ER_INNODB_MONITOR_DEFAULT_VALUE_NOT_DEFINED", - 0x2b2f: "ER_INNODB_MONITOR_IS_ENABLED", - 0x2b30: "ER_INNODB_INVALID_MONITOR_COUNTER_NAME", - 0x2b31: "ER_WIN_LOAD_LIBRARY_FAILED", - 0x2b32: "ER_PARTITION_HANDLER_ADMIN_MSG", - 0x2b33: "ER_RPL_RLI_INIT_INFO_MSG", - 0x2b34: "ER_DD_UPGRADE_TABLE_INTACT_ERROR", - 0x2b35: "ER_SERVER_INIT_COMPILED_IN_COMMANDS", - 0x2b36: "ER_MYISAM_CHECK_METHOD_ERROR", - 0x2b37: "ER_MYISAM_CRASHED_ERROR", - 0x2b38: "ER_WAITPID_FAILED", - 0x2b39: "ER_FAILED_TO_FIND_MYSQLD_STATUS", - 0x2b3a: "ER_INNODB_ERROR_LOGGER_MSG", - 0x2b3b: "ER_INNODB_ERROR_LOGGER_FATAL_MSG", - 0x2b3c: "ER_DEPRECATED_SYNTAX_WITH_REPLACEMENT", - 0x2b3d: "ER_DEPRECATED_SYNTAX_NO_REPLACEMENT", - 0x2b3e: "ER_DEPRECATE_MSG_NO_REPLACEMENT", - 0x2b3f: "ER_LOG_PRINTF_MSG", - 0x2b40: "ER_BINLOG_LOGGING_NOT_POSSIBLE", - 0x2b41: "ER_FAILED_TO_SET_PERSISTED_OPTIONS", - 0x2b42: "ER_COMPONENTS_FAILED_TO_ACQUIRE_SERVICE_IMPLEMENTATION", - 0x2b43: "ER_RES_GRP_INVALID_VCPU_RANGE", - 0x2b44: "ER_RES_GRP_INVALID_VCPU_ID", - 0x2b45: "ER_ERROR_DURING_FLUSH_LOG_COMMIT_PHASE", - 0x2b46: "ER_DROP_DATABASE_FAILED_RMDIR_MANUALLY", - 0x2b47: "ER_EXPIRE_LOGS_DAYS_IGNORED", - 0x2b48: "ER_BINLOG_MALFORMED_OR_OLD_RELAY_LOG", - 0x2b49: "ER_DD_UPGRADE_VIEW_COLUMN_NAME_TOO_LONG", - 0x2b4a: "ER_TABLE_NEEDS_DUMP_UPGRADE", - 0x2b4b: "ER_DD_UPGRADE_FAILED_TO_UPDATE_VER_NO_IN_TABLESPACE", - 0x2b4c: "ER_KEYRING_MIGRATION_FAILED", - 0x2b4d: "ER_KEYRING_MIGRATION_SUCCESSFUL", - 0x2b4e: "ER_RESTART_RECEIVED_INFO", - 0x2b4f: "ER_LCTN_CHANGED", - 0x2b50: "ER_DD_INITIALIZE", - 0x2b51: "ER_DD_RESTART", - 0x2b52: "ER_DD_UPGRADE", - 0x2b53: "ER_DD_UPGRADE_OFF", - 0x2b54: "ER_DD_UPGRADE_VERSION_NOT_SUPPORTED", - 0x2b55: "ER_DD_UPGRADE_SCHEMA_UNAVAILABLE", - 0x2b56: "ER_DD_MINOR_DOWNGRADE", - 0x2b57: "ER_DD_MINOR_DOWNGRADE_VERSION_NOT_SUPPORTED", - 0x2b58: "ER_DD_NO_VERSION_FOUND", - 0x2b59: "ER_THREAD_POOL_NOT_SUPPORTED_ON_PLATFORM", - 0x2b5a: "ER_THREAD_POOL_SIZE_TOO_LOW", - 0x2b5b: "ER_THREAD_POOL_SIZE_TOO_HIGH", - 0x2b5c: "ER_THREAD_POOL_ALGORITHM_INVALID", - 0x2b5d: "ER_THREAD_POOL_INVALID_STALL_LIMIT", - 0x2b5e: "ER_THREAD_POOL_INVALID_PRIO_KICKUP_TIMER", - 0x2b5f: "ER_THREAD_POOL_MAX_UNUSED_THREADS_INVALID", - 0x2b60: "ER_THREAD_POOL_CON_HANDLER_INIT_FAILED", - 0x2b61: "ER_THREAD_POOL_INIT_FAILED", - 0x2b62: "ER_THREAD_POOL_PLUGIN_STARTED", - 0x2b63: "ER_THREAD_POOL_CANNOT_SET_THREAD_SPECIFIC_DATA", - 0x2b64: "ER_THREAD_POOL_FAILED_TO_CREATE_CONNECT_HANDLER_THD", - 0x2b65: "ER_THREAD_POOL_FAILED_TO_CREATE_THD_AND_AUTH_CONN", - 0x2b66: "ER_THREAD_POOL_FAILED_PROCESS_CONNECT_EVENT", - 0x2b67: "ER_THREAD_POOL_FAILED_TO_CREATE_POOL", - 0x2b68: "ER_THREAD_POOL_RATE_LIMITED_ERROR_MSGS", - 0x2b69: "ER_TRHEAD_POOL_LOW_LEVEL_INIT_FAILED", - 0x2b6a: "ER_THREAD_POOL_LOW_LEVEL_REARM_FAILED", - 0x2b6b: "ER_THREAD_POOL_BUFFER_TOO_SMALL", - 0x2b6c: "ER_MECAB_NOT_SUPPORTED", - 0x2b6d: "ER_MECAB_NOT_VERIFIED", - 0x2b6e: "ER_MECAB_CREATING_MODEL", - 0x2b6f: "ER_MECAB_FAILED_TO_CREATE_MODEL", - 0x2b70: "ER_MECAB_FAILED_TO_CREATE_TRIGGER", - 0x2b71: "ER_MECAB_UNSUPPORTED_CHARSET", - 0x2b72: "ER_MECAB_CHARSET_LOADED", - 0x2b73: "ER_MECAB_PARSE_FAILED", - 0x2b74: "ER_MECAB_OOM_WHILE_PARSING_TEXT", - 0x2b75: "ER_MECAB_CREATE_LATTICE_FAILED", - 0x2b76: "ER_SEMISYNC_TRACE_ENTER_FUNC", - 0x2b77: "ER_SEMISYNC_TRACE_EXIT_WITH_INT_EXIT_CODE", - 0x2b78: "ER_SEMISYNC_TRACE_EXIT_WITH_BOOL_EXIT_CODE", - 0x2b79: "ER_SEMISYNC_TRACE_EXIT", - 0x2b7a: "ER_SEMISYNC_RPL_INIT_FOR_TRX", - 0x2b7b: "ER_SEMISYNC_FAILED_TO_ALLOCATE_TRX_NODE", - 0x2b7c: "ER_SEMISYNC_BINLOG_WRITE_OUT_OF_ORDER", - 0x2b7d: "ER_SEMISYNC_INSERT_LOG_INFO_IN_ENTRY", - 0x2b7e: "ER_SEMISYNC_PROBE_LOG_INFO_IN_ENTRY", - 0x2b7f: "ER_SEMISYNC_CLEARED_ALL_ACTIVE_TRANSACTION_NODES", - 0x2b80: "ER_SEMISYNC_CLEARED_ACTIVE_TRANSACTION_TILL_POS", - 0x2b81: "ER_SEMISYNC_REPLY_MAGIC_NO_ERROR", - 0x2b82: "ER_SEMISYNC_REPLY_PKT_LENGTH_TOO_SMALL", - 0x2b83: "ER_SEMISYNC_REPLY_BINLOG_FILE_TOO_LARGE", - 0x2b84: "ER_SEMISYNC_SERVER_REPLY", - 0x2b85: "ER_SEMISYNC_FUNCTION_CALLED_TWICE", - 0x2b86: "ER_SEMISYNC_RPL_ENABLED_ON_MASTER", - 0x2b87: "ER_SEMISYNC_MASTER_OOM", - 0x2b88: "ER_SEMISYNC_DISABLED_ON_MASTER", - 0x2b89: "ER_SEMISYNC_FORCED_SHUTDOWN", - 0x2b8a: "ER_SEMISYNC_MASTER_GOT_REPLY_AT_POS", - 0x2b8b: "ER_SEMISYNC_MASTER_SIGNAL_ALL_WAITING_THREADS", - 0x2b8c: "ER_SEMISYNC_MASTER_TRX_WAIT_POS", - 0x2b8d: "ER_SEMISYNC_BINLOG_REPLY_IS_AHEAD", - 0x2b8e: "ER_SEMISYNC_MOVE_BACK_WAIT_POS", - 0x2b8f: "ER_SEMISYNC_INIT_WAIT_POS", - 0x2b90: "ER_SEMISYNC_WAIT_TIME_FOR_BINLOG_SENT", - 0x2b91: "ER_SEMISYNC_WAIT_FOR_BINLOG_TIMEDOUT", - 0x2b92: "ER_SEMISYNC_WAIT_TIME_ASSESSMENT_FOR_COMMIT_TRX_FAILED", - 0x2b93: "ER_SEMISYNC_RPL_SWITCHED_OFF", - 0x2b94: "ER_SEMISYNC_RPL_SWITCHED_ON", - 0x2b95: "ER_SEMISYNC_NO_SPACE_IN_THE_PKT", - 0x2b96: "ER_SEMISYNC_SYNC_HEADER_UPDATE_INFO", - 0x2b97: "ER_SEMISYNC_FAILED_TO_INSERT_TRX_NODE", - 0x2b98: "ER_SEMISYNC_TRX_SKIPPED_AT_POS", - 0x2b99: "ER_SEMISYNC_MASTER_FAILED_ON_NET_FLUSH", - 0x2b9a: "ER_SEMISYNC_RECEIVED_ACK_IS_SMALLER", - 0x2b9b: "ER_SEMISYNC_ADD_ACK_TO_SLOT", - 0x2b9c: "ER_SEMISYNC_UPDATE_EXISTING_SLAVE_ACK", - 0x2b9d: "ER_SEMISYNC_FAILED_TO_START_ACK_RECEIVER_THD", - 0x2b9e: "ER_SEMISYNC_STARTING_ACK_RECEIVER_THD", - 0x2b9f: "ER_SEMISYNC_FAILED_TO_WAIT_ON_DUMP_SOCKET", - 0x2ba0: "ER_SEMISYNC_STOPPING_ACK_RECEIVER_THREAD", - 0x2ba1: "ER_SEMISYNC_FAILED_REGISTER_SLAVE_TO_RECEIVER", - 0x2ba2: "ER_SEMISYNC_START_BINLOG_DUMP_TO_SLAVE", - 0x2ba3: "ER_SEMISYNC_STOP_BINLOG_DUMP_TO_SLAVE", - 0x2ba4: "ER_SEMISYNC_UNREGISTER_TRX_OBSERVER_FAILED", - 0x2ba5: "ER_SEMISYNC_UNREGISTER_BINLOG_STORAGE_OBSERVER_FAILED", - 0x2ba6: "ER_SEMISYNC_UNREGISTER_BINLOG_TRANSMIT_OBSERVER_FAILED", - 0x2ba7: "ER_SEMISYNC_UNREGISTERED_REPLICATOR", - 0x2ba8: "ER_SEMISYNC_SOCKET_FD_TOO_LARGE", - 0x2ba9: "ER_SEMISYNC_SLAVE_REPLY", - 0x2baa: "ER_SEMISYNC_MISSING_MAGIC_NO_FOR_SEMISYNC_PKT", - 0x2bab: "ER_SEMISYNC_SLAVE_START", - 0x2bac: "ER_SEMISYNC_SLAVE_REPLY_WITH_BINLOG_INFO", - 0x2bad: "ER_SEMISYNC_SLAVE_NET_FLUSH_REPLY_FAILED", - 0x2bae: "ER_SEMISYNC_SLAVE_SEND_REPLY_FAILED", - 0x2baf: "ER_SEMISYNC_EXECUTION_FAILED_ON_MASTER", - 0x2bb0: "ER_SEMISYNC_NOT_SUPPORTED_BY_MASTER", - 0x2bb1: "ER_SEMISYNC_SLAVE_SET_FAILED", - 0x2bb2: "ER_SEMISYNC_FAILED_TO_STOP_ACK_RECEIVER_THD", - 0x2bb3: "ER_FIREWALL_FAILED_TO_READ_FIREWALL_TABLES", - 0x2bb4: "ER_FIREWALL_FAILED_TO_REG_DYNAMIC_PRIVILEGES", - 0x2bb5: "ER_FIREWALL_RECORDING_STMT_WAS_TRUNCATED", - 0x2bb6: "ER_FIREWALL_RECORDING_STMT_WITHOUT_TEXT", - 0x2bb7: "ER_FIREWALL_SUSPICIOUS_STMT", - 0x2bb8: "ER_FIREWALL_ACCESS_DENIED", - 0x2bb9: "ER_FIREWALL_SKIPPED_UNKNOWN_USER_MODE", - 0x2bba: "ER_FIREWALL_RELOADING_CACHE", - 0x2bbb: "ER_FIREWALL_RESET_FOR_USER", - 0x2bbc: "ER_FIREWALL_STATUS_FLUSHED", - 0x2bbd: "ER_KEYRING_LOGGER_ERROR_MSG", - 0x2bbe: "ER_AUDIT_LOG_FILTER_IS_NOT_INSTALLED", - 0x2bbf: "ER_AUDIT_LOG_SWITCHING_TO_INCLUDE_LIST", - 0x2bc0: "ER_AUDIT_LOG_CANNOT_SET_LOG_POLICY_WITH_OTHER_POLICIES", - 0x2bc1: "ER_AUDIT_LOG_ONLY_INCLUDE_LIST_USED", - 0x2bc2: "ER_AUDIT_LOG_INDEX_MAP_CANNOT_ACCESS_DIR", - 0x2bc3: "ER_AUDIT_LOG_WRITER_RENAME_FILE_FAILED", - 0x2bc4: "ER_AUDIT_LOG_WRITER_DEST_FILE_ALREADY_EXISTS", - 0x2bc5: "ER_AUDIT_LOG_WRITER_RENAME_FILE_FAILED_REMOVE_FILE_MANUALLY", - 0x2bc6: "ER_AUDIT_LOG_WRITER_INCOMPLETE_FILE_RENAMED", - 0x2bc7: "ER_AUDIT_LOG_WRITER_FAILED_TO_WRITE_TO_FILE", - 0x2bc8: "ER_AUDIT_LOG_EC_WRITER_FAILED_TO_INIT_ENCRYPTION", - 0x2bc9: "ER_AUDIT_LOG_EC_WRITER_FAILED_TO_INIT_COMPRESSION", - 0x2bca: "ER_AUDIT_LOG_EC_WRITER_FAILED_TO_CREATE_FILE", - 0x2bcb: "ER_AUDIT_LOG_RENAME_LOG_FILE_BEFORE_FLUSH", - 0x2bcc: "ER_AUDIT_LOG_FILTER_RESULT_MSG", - 0x2bcd: "ER_AUDIT_LOG_JSON_READER_FAILED_TO_PARSE", - 0x2bce: "ER_AUDIT_LOG_JSON_READER_BUF_TOO_SMALL", - 0x2bcf: "ER_AUDIT_LOG_JSON_READER_FAILED_TO_OPEN_FILE", - 0x2bd0: "ER_AUDIT_LOG_JSON_READER_FILE_PARSING_ERROR", - 0x2bd1: "ER_AUDIT_LOG_FILTER_INVALID_COLUMN_COUNT", - 0x2bd2: "ER_AUDIT_LOG_FILTER_INVALID_COLUMN_DEFINITION", - 0x2bd3: "ER_AUDIT_LOG_FILTER_FAILED_TO_STORE_TABLE_FLDS", - 0x2bd4: "ER_AUDIT_LOG_FILTER_FAILED_TO_UPDATE_TABLE", - 0x2bd5: "ER_AUDIT_LOG_FILTER_FAILED_TO_INSERT_INTO_TABLE", - 0x2bd6: "ER_AUDIT_LOG_FILTER_FAILED_TO_DELETE_FROM_TABLE", - 0x2bd7: "ER_AUDIT_LOG_FILTER_FAILED_TO_INIT_TABLE_FOR_READ", - 0x2bd8: "ER_AUDIT_LOG_FILTER_FAILED_TO_READ_TABLE", - 0x2bd9: "ER_AUDIT_LOG_FILTER_FAILED_TO_CLOSE_TABLE_AFTER_READING", - 0x2bda: "ER_AUDIT_LOG_FILTER_USER_AND_HOST_CANNOT_BE_EMPTY", - 0x2bdb: "ER_AUDIT_LOG_FILTER_FLD_FILTERNAME_CANNOT_BE_EMPTY", - 0x2bdc: "ER_VALIDATE_PWD_DICT_FILE_NOT_SPECIFIED", - 0x2bdd: "ER_VALIDATE_PWD_DICT_FILE_NOT_LOADED", - 0x2bde: "ER_VALIDATE_PWD_DICT_FILE_TOO_BIG", - 0x2bdf: "ER_VALIDATE_PWD_FAILED_TO_READ_DICT_FILE", - 0x2be0: "ER_VALIDATE_PWD_FAILED_TO_GET_FLD_FROM_SECURITY_CTX", - 0x2be1: "ER_VALIDATE_PWD_FAILED_TO_GET_SECURITY_CTX", - 0x2be2: "ER_VALIDATE_PWD_LENGTH_CHANGED", - 0x2be3: "ER_REWRITER_QUERY_ERROR_MSG", - 0x2be4: "ER_REWRITER_QUERY_FAILED", - 0x2be5: "ER_XPLUGIN_STARTUP_FAILED", - 0x2be6: "ER_XPLUGIN_SERVER_EXITING", - 0x2be7: "ER_XPLUGIN_SERVER_EXITED", - 0x2be8: "ER_XPLUGIN_USING_SSL_CONF_FROM_SERVER", - 0x2be9: "ER_XPLUGIN_USING_SSL_CONF_FROM_MYSQLX", - 0x2bea: "ER_XPLUGIN_FAILED_TO_USE_SSL_CONF", - 0x2beb: "ER_XPLUGIN_USING_SSL_FOR_TLS_CONNECTION", - 0x2bec: "ER_XPLUGIN_REFERENCE_TO_SECURE_CONN_WITH_XPLUGIN", - 0x2bed: "ER_XPLUGIN_ERROR_MSG", - 0x2bee: "ER_SHA_PWD_FAILED_TO_PARSE_AUTH_STRING", - 0x2bef: "ER_SHA_PWD_FAILED_TO_GENERATE_MULTI_ROUND_HASH", - 0x2bf0: "ER_SHA_PWD_AUTH_REQUIRES_RSA_OR_SSL", - 0x2bf1: "ER_SHA_PWD_RSA_KEY_TOO_LONG", - 0x2bf2: "ER_PLUGIN_COMMON_FAILED_TO_OPEN_FILTER_TABLES", - 0x2bf3: "ER_PLUGIN_COMMON_FAILED_TO_OPEN_TABLE", - 0x2bf4: "ER_AUTH_LDAP_ERROR_LOGGER_ERROR_MSG", - 0x2bf5: "ER_CONN_CONTROL_ERROR_MSG", - 0x2bf6: "ER_GRP_RPL_ERROR_MSG", - 0x2bf7: "ER_SHA_PWD_SALT_FOR_USER_CORRUPT", - 0x2bf8: "ER_SYS_VAR_COMPONENT_OOM", - 0x2bf9: "ER_SYS_VAR_COMPONENT_VARIABLE_SET_READ_ONLY", - 0x2bfa: "ER_SYS_VAR_COMPONENT_UNKNOWN_VARIABLE_TYPE", - 0x2bfb: "ER_SYS_VAR_COMPONENT_FAILED_TO_PARSE_VARIABLE_OPTIONS", - 0x2bfc: "ER_SYS_VAR_COMPONENT_FAILED_TO_MAKE_VARIABLE_PERSISTENT", - 0x2bfd: "ER_COMPONENT_FILTER_CONFUSED", - 0x2bfe: "ER_STOP_SLAVE_IO_THREAD_DISK_SPACE", - 0x2bff: "ER_LOG_FILE_CANNOT_OPEN", - 0x2c04: "ER_PERSIST_OPTION_STATUS", - 0x2c05: "ER_NOT_IMPLEMENTED_GET_TABLESPACE_STATISTICS", - 0x2c08: "ER_SSL_FIPS_MODE_ERROR", - 0x2c09: "ER_CONN_INIT_CONNECT_IGNORED", - 0x2c0a: "ER_UNSUPPORTED_SQL_MODE", - 0x2c0b: "ER_REWRITER_OOM", - 0x2c0c: "ER_REWRITER_TABLE_MALFORMED_ERROR", - 0x2c0d: "ER_REWRITER_LOAD_FAILED", - 0x2c0e: "ER_REWRITER_READ_FAILED", - 0x2c0f: "ER_CONN_CONTROL_EVENT_COORDINATOR_INIT_FAILED", - 0x2c10: "ER_CONN_CONTROL_STAT_CONN_DELAY_TRIGGERED_UPDATE_FAILED", - 0x2c11: "ER_CONN_CONTROL_STAT_CONN_DELAY_TRIGGERED_RESET_FAILED", - 0x2c12: "ER_CONN_CONTROL_INVALID_CONN_DELAY_TYPE", - 0x2c13: "ER_CONN_CONTROL_DELAY_ACTION_INIT_FAILED", - 0x2c14: "ER_CONN_CONTROL_FAILED_TO_SET_CONN_DELAY", - 0x2c15: "ER_CONN_CONTROL_FAILED_TO_UPDATE_CONN_DELAY_HASH", - 0x2c16: "ER_XPLUGIN_FORCE_STOP_CLIENT", - 0x2c17: "ER_XPLUGIN_MAX_AUTH_ATTEMPTS_REACHED", - 0x2c18: "ER_XPLUGIN_BUFFER_PAGE_ALLOC_FAILED", - 0x2c19: "ER_XPLUGIN_DETECTED_HANGING_CLIENTS", - 0x2c1a: "ER_XPLUGIN_FAILED_TO_ACCEPT_CLIENT", - 0x2c1b: "ER_XPLUGIN_FAILED_TO_SCHEDULE_CLIENT", - 0x2c1c: "ER_XPLUGIN_FAILED_TO_PREPARE_IO_INTERFACES", - 0x2c1d: "ER_XPLUGIN_SRV_SESSION_INIT_THREAD_FAILED", - 0x2c1e: "ER_XPLUGIN_UNABLE_TO_USE_USER_SESSION_ACCOUNT", - 0x2c1f: "ER_XPLUGIN_REFERENCE_TO_USER_ACCOUNT_DOC_SECTION", - 0x2c20: "ER_XPLUGIN_UNEXPECTED_EXCEPTION_DISPATCHING_CMD", - 0x2c21: "ER_XPLUGIN_EXCEPTION_IN_TASK_SCHEDULER", - 0x2c22: "ER_XPLUGIN_TASK_SCHEDULING_FAILED", - 0x2c23: "ER_XPLUGIN_EXCEPTION_IN_EVENT_LOOP", - 0x2c24: "ER_XPLUGIN_LISTENER_SETUP_FAILED", - 0x2c25: "ER_XPLUING_NET_STARTUP_FAILED", - 0x2c26: "ER_XPLUGIN_FAILED_AT_SSL_CONF", - 0x2c27: "ER_XPLUGIN_CLIENT_SSL_HANDSHAKE_FAILED", - 0x2c28: "ER_XPLUGIN_SSL_HANDSHAKE_WITH_SERVER_FAILED", - 0x2c29: "ER_XPLUGIN_FAILED_TO_CREATE_SESSION_FOR_CONN", - 0x2c2a: "ER_XPLUGIN_FAILED_TO_INITIALIZE_SESSION", - 0x2c2b: "ER_XPLUGIN_MESSAGE_TOO_LONG", - 0x2c2c: "ER_XPLUGIN_UNINITIALIZED_MESSAGE", - 0x2c2d: "ER_XPLUGIN_FAILED_TO_SET_MIN_NUMBER_OF_WORKERS", - 0x2c2e: "ER_XPLUGIN_UNABLE_TO_ACCEPT_CONNECTION", - 0x2c2f: "ER_XPLUGIN_ALL_IO_INTERFACES_DISABLED", - 0x2c30: "ER_XPLUGIN_INVALID_MSG_DURING_CLIENT_INIT", - 0x2c31: "ER_XPLUGIN_CLOSING_CLIENTS_ON_SHUTDOWN", - 0x2c32: "ER_XPLUGIN_ERROR_READING_SOCKET", - 0x2c33: "ER_XPLUGIN_PEER_DISCONNECTED_WHILE_READING_MSG_BODY", - 0x2c34: "ER_XPLUGIN_READ_FAILED_CLOSING_CONNECTION", - 0x2c35: "ER_XPLUGIN_INVALID_AUTH_METHOD", - 0x2c36: "ER_XPLUGIN_UNEXPECTED_MSG_DURING_AUTHENTICATION", - 0x2c37: "ER_XPLUGIN_ERROR_WRITING_TO_CLIENT", - 0x2c38: "ER_XPLUGIN_SCHEDULER_STARTED", - 0x2c39: "ER_XPLUGIN_SCHEDULER_STOPPED", - 0x2c3a: "ER_XPLUGIN_LISTENER_SYS_VARIABLE_ERROR", - 0x2c3b: "ER_XPLUGIN_LISTENER_STATUS_MSG", - 0x2c3c: "ER_XPLUGIN_RETRYING_BIND_ON_PORT", - 0x2c3d: "ER_XPLUGIN_SHUTDOWN_TRIGGERED", - 0x2c3e: "ER_XPLUGIN_USER_ACCOUNT_WITH_ALL_PERMISSIONS", - 0x2c3f: "ER_XPLUGIN_EXISTING_USER_ACCOUNT_WITH_INCOMPLETE_GRANTS", - 0x2c40: "ER_XPLUGIN_SERVER_STARTS_HANDLING_CONNECTIONS", - 0x2c41: "ER_XPLUGIN_SERVER_STOPPED_HANDLING_CONNECTIONS", - 0x2c42: "ER_XPLUGIN_FAILED_TO_INTERRUPT_SESSION", - 0x2c43: "ER_XPLUGIN_CLIENT_RELEASE_TRIGGERED", - 0x2c44: "ER_XPLUGIN_IPv6_AVAILABLE", - 0x2c45: "ER_XPLUGIN_UNIX_SOCKET_NOT_CONFIGURED", - 0x2c46: "ER_XPLUGIN_CLIENT_KILL_MSG", - 0x2c47: "ER_XPLUGIN_FAILED_TO_GET_SECURITY_CTX", - 0x2c48: "ER_XPLUGIN_FAILED_TO_SWITCH_SECURITY_CTX_TO_ROOT", - 0x2c49: "ER_XPLUGIN_FAILED_TO_CLOSE_SQL_SESSION", - 0x2c4a: "ER_XPLUGIN_FAILED_TO_EXECUTE_ADMIN_CMD", - 0x2c4b: "ER_XPLUGIN_EMPTY_ADMIN_CMD", - 0x2c4c: "ER_XPLUGIN_FAILED_TO_GET_SYS_VAR", - 0x2c4d: "ER_XPLUGIN_FAILED_TO_GET_CREATION_STMT", - 0x2c4e: "ER_XPLUGIN_FAILED_TO_GET_ENGINE_INFO", - 0x2c4f: "ER_XPLUGIN_FAIL_TO_GET_RESULT_DATA", - 0x2c50: "ER_XPLUGIN_CAPABILITY_EXPIRED_PASSWORD", - 0x2c51: "ER_XPLUGIN_FAILED_TO_SET_SO_REUSEADDR_FLAG", - 0x2c52: "ER_XPLUGIN_FAILED_TO_OPEN_INTERNAL_SESSION", - 0x2c53: "ER_XPLUGIN_FAILED_TO_SWITCH_CONTEXT", - 0x2c54: "ER_XPLUGIN_FAILED_TO_UNREGISTER_UDF", - 0x2c55: "ER_XPLUGIN_GET_PEER_ADDRESS_FAILED", - 0x2c56: "ER_XPLUGIN_CAPABILITY_CLIENT_INTERACTIVE_FAILED", - 0x2c57: "ER_XPLUGIN_FAILED_TO_RESET_IPV6_V6ONLY_FLAG", - 0x2c58: "ER_KEYRING_INVALID_KEY_TYPE", - 0x2c59: "ER_KEYRING_INVALID_KEY_LENGTH", - 0x2c5a: "ER_KEYRING_FAILED_TO_CREATE_KEYRING_DIR", - 0x2c5b: "ER_KEYRING_FILE_INIT_FAILED", - 0x2c5c: "ER_KEYRING_INTERNAL_EXCEPTION_FAILED_FILE_INIT", - 0x2c5d: "ER_KEYRING_FAILED_TO_GENERATE_KEY", - 0x2c5e: "ER_KEYRING_CHECK_KEY_FAILED_DUE_TO_INVALID_KEY", - 0x2c5f: "ER_KEYRING_CHECK_KEY_FAILED_DUE_TO_EMPTY_KEY_ID", - 0x2c60: "ER_KEYRING_OPERATION_FAILED_DUE_TO_INTERNAL_ERROR", - 0x2c61: "ER_KEYRING_INCORRECT_FILE", - 0x2c62: "ER_KEYRING_FOUND_MALFORMED_BACKUP_FILE", - 0x2c63: "ER_KEYRING_FAILED_TO_RESTORE_FROM_BACKUP_FILE", - 0x2c64: "ER_KEYRING_FAILED_TO_FLUSH_KEYRING_TO_FILE", - 0x2c65: "ER_KEYRING_FAILED_TO_GET_FILE_STAT", - 0x2c66: "ER_KEYRING_FAILED_TO_REMOVE_FILE", - 0x2c67: "ER_KEYRING_FAILED_TO_TRUNCATE_FILE", - 0x2c68: "ER_KEYRING_UNKNOWN_ERROR", - 0x2c69: "ER_KEYRING_FAILED_TO_SET_KEYRING_FILE_DATA", - 0x2c6a: "ER_KEYRING_FILE_IO_ERROR", - 0x2c6b: "ER_KEYRING_FAILED_TO_LOAD_KEYRING_CONTENT", - 0x2c6c: "ER_KEYRING_FAILED_TO_FLUSH_KEYS_TO_KEYRING", - 0x2c6d: "ER_KEYRING_FAILED_TO_FLUSH_KEYS_TO_KEYRING_BACKUP", - 0x2c6e: "ER_KEYRING_KEY_FETCH_FAILED_DUE_TO_EMPTY_KEY_ID", - 0x2c6f: "ER_KEYRING_FAILED_TO_REMOVE_KEY_DUE_TO_EMPTY_ID", - 0x2c70: "ER_KEYRING_OKV_INCORRECT_KEY_VAULT_CONFIGURED", - 0x2c71: "ER_KEYRING_OKV_INIT_FAILED_DUE_TO_INCORRECT_CONF", - 0x2c72: "ER_KEYRING_OKV_INIT_FAILED_DUE_TO_INTERNAL_ERROR", - 0x2c73: "ER_KEYRING_OKV_INVALID_KEY_TYPE", - 0x2c74: "ER_KEYRING_OKV_INVALID_KEY_LENGTH_FOR_CIPHER", - 0x2c75: "ER_KEYRING_OKV_FAILED_TO_GENERATE_KEY_DUE_TO_INTERNAL_ERROR", - 0x2c76: "ER_KEYRING_OKV_FAILED_TO_FIND_SERVER_ENTRY", - 0x2c77: "ER_KEYRING_OKV_FAILED_TO_FIND_STANDBY_SERVER_ENTRY", - 0x2c78: "ER_KEYRING_OKV_FAILED_TO_PARSE_CONF_FILE", - 0x2c79: "ER_KEYRING_OKV_FAILED_TO_LOAD_KEY_UID", - 0x2c7a: "ER_KEYRING_OKV_FAILED_TO_INIT_SSL_LAYER", - 0x2c7b: "ER_KEYRING_OKV_FAILED_TO_INIT_CLIENT", - 0x2c7c: "ER_KEYRING_OKV_CONNECTION_TO_SERVER_FAILED", - 0x2c7d: "ER_KEYRING_OKV_FAILED_TO_REMOVE_KEY", - 0x2c7e: "ER_KEYRING_OKV_FAILED_TO_ADD_ATTRIBUTE", - 0x2c7f: "ER_KEYRING_OKV_FAILED_TO_GENERATE_KEY", - 0x2c80: "ER_KEYRING_OKV_FAILED_TO_STORE_KEY", - 0x2c81: "ER_KEYRING_OKV_FAILED_TO_ACTIVATE_KEYS", - 0x2c82: "ER_KEYRING_OKV_FAILED_TO_FETCH_KEY", - 0x2c83: "ER_KEYRING_OKV_FAILED_TO_STORE_OR_GENERATE_KEY", - 0x2c84: "ER_KEYRING_OKV_FAILED_TO_RETRIEVE_KEY_SIGNATURE", - 0x2c85: "ER_KEYRING_OKV_FAILED_TO_RETRIEVE_KEY", - 0x2c86: "ER_KEYRING_OKV_FAILED_TO_LOAD_SSL_TRUST_STORE", - 0x2c87: "ER_KEYRING_OKV_FAILED_TO_SET_CERTIFICATE_FILE", - 0x2c88: "ER_KEYRING_OKV_FAILED_TO_SET_KEY_FILE", - 0x2c89: "ER_KEYRING_OKV_KEY_MISMATCH", - 0x2c8a: "ER_KEYRING_ENCRYPTED_FILE_INCORRECT_KEYRING_FILE", - 0x2c8b: "ER_KEYRING_ENCRYPTED_FILE_DECRYPTION_FAILED", - 0x2c8c: "ER_KEYRING_ENCRYPTED_FILE_FOUND_MALFORMED_BACKUP_FILE", - 0x2c8d: "ER_KEYRING_ENCRYPTED_FILE_FAILED_TO_RESTORE_KEYRING", - 0x2c8e: "ER_KEYRING_ENCRYPTED_FILE_FAILED_TO_FLUSH_KEYRING", - 0x2c8f: "ER_KEYRING_ENCRYPTED_FILE_ENCRYPTION_FAILED", - 0x2c90: "ER_KEYRING_ENCRYPTED_FILE_INVALID_KEYRING_DIR", - 0x2c91: "ER_KEYRING_ENCRYPTED_FILE_FAILED_TO_CREATE_KEYRING_DIR", - 0x2c92: "ER_KEYRING_ENCRYPTED_FILE_PASSWORD_IS_INVALID", - 0x2c93: "ER_KEYRING_ENCRYPTED_FILE_PASSWORD_IS_TOO_LONG", - 0x2c94: "ER_KEYRING_ENCRYPTED_FILE_INIT_FAILURE", - 0x2c95: "ER_KEYRING_ENCRYPTED_FILE_INIT_FAILED_DUE_TO_INTERNAL_ERROR", - 0x2c96: "ER_KEYRING_ENCRYPTED_FILE_GEN_KEY_FAILED_DUE_TO_INTERNAL_ERROR", - 0x2c97: "ER_KEYRING_AWS_FAILED_TO_SET_CMK_ID", - 0x2c98: "ER_KEYRING_AWS_FAILED_TO_SET_REGION", - 0x2c99: "ER_KEYRING_AWS_FAILED_TO_OPEN_CONF_FILE", - 0x2c9a: "ER_KEYRING_AWS_FAILED_TO_ACCESS_KEY_ID_FROM_CONF_FILE", - 0x2c9b: "ER_KEYRING_AWS_FAILED_TO_ACCESS_KEY_FROM_CONF_FILE", - 0x2c9c: "ER_KEYRING_AWS_INVALID_CONF_FILE_PATH", - 0x2c9d: "ER_KEYRING_AWS_INVALID_DATA_FILE_PATH", - 0x2c9e: "ER_KEYRING_AWS_FAILED_TO_ACCESS_OR_CREATE_KEYRING_DIR", - 0x2c9f: "ER_KEYRING_AWS_FAILED_TO_ACCESS_OR_CREATE_KEYRING_DATA_FILE", - 0x2ca0: "ER_KEYRING_AWS_FAILED_TO_INIT_DUE_TO_INTERNAL_ERROR", - 0x2ca1: "ER_KEYRING_AWS_FAILED_TO_ACCESS_DATA_FILE", - 0x2ca2: "ER_KEYRING_AWS_CMK_ID_NOT_SET", - 0x2ca3: "ER_KEYRING_AWS_FAILED_TO_GET_KMS_CREDENTIAL_FROM_CONF_FILE", - 0x2ca4: "ER_KEYRING_AWS_INIT_FAILURE", - 0x2ca5: "ER_KEYRING_AWS_FAILED_TO_INIT_DUE_TO_PLUGIN_INTERNAL_ERROR", - 0x2ca6: "ER_KEYRING_AWS_INVALID_KEY_LENGTH_FOR_CIPHER", - 0x2ca7: "ER_KEYRING_AWS_FAILED_TO_GENERATE_KEY_DUE_TO_INTERNAL_ERROR", - 0x2ca8: "ER_KEYRING_AWS_INCORRECT_FILE", - 0x2ca9: "ER_KEYRING_AWS_FOUND_MALFORMED_BACKUP_FILE", - 0x2caa: "ER_KEYRING_AWS_FAILED_TO_RESTORE_FROM_BACKUP_FILE", - 0x2cab: "ER_KEYRING_AWS_FAILED_TO_FLUSH_KEYRING_TO_FILE", - 0x2cac: "ER_KEYRING_AWS_INCORRECT_REGION", - 0x2cad: "ER_KEYRING_AWS_FAILED_TO_CONNECT_KMS", - 0x2cae: "ER_KEYRING_AWS_FAILED_TO_GENERATE_NEW_KEY", - 0x2caf: "ER_KEYRING_AWS_FAILED_TO_ENCRYPT_KEY", - 0x2cb0: "ER_KEYRING_AWS_FAILED_TO_RE_ENCRYPT_KEY", - 0x2cb1: "ER_KEYRING_AWS_FAILED_TO_DECRYPT_KEY", - 0x2cb2: "ER_KEYRING_AWS_FAILED_TO_ROTATE_CMK", - 0x2cb3: "ER_GRP_RPL_GTID_ALREADY_USED", - 0x2cb4: "ER_GRP_RPL_APPLIER_THD_KILLED", - 0x2cb5: "ER_GRP_RPL_EVENT_HANDLING_ERROR", - 0x2cb6: "ER_GRP_RPL_ERROR_GTID_EXECUTION_INFO", - 0x2cb7: "ER_GRP_RPL_CERTIFICATE_SIZE_ERROR", - 0x2cb8: "ER_GRP_RPL_CREATE_APPLIER_CACHE_ERROR", - 0x2cb9: "ER_GRP_RPL_UNBLOCK_WAITING_THD", - 0x2cba: "ER_GRP_RPL_APPLIER_PIPELINE_NOT_DISPOSED", - 0x2cbb: "ER_GRP_RPL_APPLIER_THD_EXECUTION_ABORTED", - 0x2cbc: "ER_GRP_RPL_APPLIER_EXECUTION_FATAL_ERROR", - 0x2cbd: "ER_GRP_RPL_ERROR_STOPPING_CHANNELS", - 0x2cbe: "ER_GRP_RPL_ERROR_SENDING_SINGLE_PRIMARY_MSSG", - 0x2cbf: "ER_GRP_RPL_UPDATE_TRANS_SNAPSHOT_VER_ERROR", - 0x2cc0: "ER_GRP_RPL_SIDNO_FETCH_ERROR", - 0x2cc1: "ER_GRP_RPL_BROADCAST_COMMIT_TRANS_MSSG_FAILED", - 0x2cc2: "ER_GRP_RPL_GROUP_NAME_PARSE_ERROR", - 0x2cc3: "ER_GRP_RPL_ADD_GRPSID_TO_GRPGTIDSID_MAP_ERROR", - 0x2cc4: "ER_GRP_RPL_UPDATE_GRPGTID_EXECUTED_ERROR", - 0x2cc5: "ER_GRP_RPL_DONOR_TRANS_INFO_ERROR", - 0x2cc6: "ER_GRP_RPL_SERVER_CONN_ERROR", - 0x2cc7: "ER_GRP_RPL_ERROR_FETCHING_GTID_EXECUTED_SET", - 0x2cc8: "ER_GRP_RPL_ADD_GTID_TO_GRPGTID_EXECUTED_ERROR", - 0x2cc9: "ER_GRP_RPL_ERROR_FETCHING_GTID_SET", - 0x2cca: "ER_GRP_RPL_ADD_RETRIEVED_SET_TO_GRP_GTID_EXECUTED_ERROR", - 0x2ccb: "ER_GRP_RPL_CERTIFICATION_INITIALIZATION_FAILURE", - 0x2ccc: "ER_GRP_RPL_UPDATE_LAST_CONFLICT_FREE_TRANS_ERROR", - 0x2ccd: "ER_GRP_RPL_UPDATE_TRANS_SNAPSHOT_REF_VER_ERROR", - 0x2cce: "ER_GRP_RPL_FETCH_TRANS_SIDNO_ERROR", - 0x2ccf: "ER_GRP_RPL_ERROR_VERIFYING_SIDNO", - 0x2cd0: "ER_GRP_RPL_CANT_GENERATE_GTID", - 0x2cd1: "ER_GRP_RPL_INVALID_GTID_SET", - 0x2cd2: "ER_GRP_RPL_UPDATE_GTID_SET_ERROR", - 0x2cd3: "ER_GRP_RPL_RECEIVED_SET_MISSING_GTIDS", - 0x2cd4: "ER_GRP_RPL_SKIP_COMPUTATION_TRANS_COMMITTED", - 0x2cd5: "ER_GRP_RPL_NULL_PACKET", - 0x2cd6: "ER_GRP_RPL_CANT_READ_GTID", - 0x2cd7: "ER_GRP_RPL_PROCESS_GTID_SET_ERROR", - 0x2cd8: "ER_GRP_RPL_PROCESS_INTERSECTION_GTID_SET_ERROR", - 0x2cd9: "ER_GRP_RPL_SET_STABLE_TRANS_ERROR", - 0x2cda: "ER_GRP_RPL_CANT_READ_GRP_GTID_EXTRACTED", - 0x2cdb: "ER_GRP_RPL_CANT_READ_WRITE_SET_ITEM", - 0x2cdc: "ER_GRP_RPL_INIT_CERTIFICATION_INFO_FAILURE", - 0x2cdd: "ER_GRP_RPL_CONFLICT_DETECTION_DISABLED", - 0x2cde: "ER_GRP_RPL_MSG_DISCARDED", - 0x2cdf: "ER_GRP_RPL_MISSING_GRP_RPL_APPLIER", - 0x2ce0: "ER_GRP_RPL_CERTIFIER_MSSG_PROCESS_ERROR", - 0x2ce1: "ER_GRP_RPL_SRV_NOT_ONLINE", - 0x2ce2: "ER_GRP_RPL_SRV_ONLINE", - 0x2ce3: "ER_GRP_RPL_DISABLE_SRV_READ_MODE_RESTRICTED", - 0x2ce4: "ER_GRP_RPL_MEM_ONLINE", - 0x2ce5: "ER_GRP_RPL_MEM_UNREACHABLE", - 0x2ce6: "ER_GRP_RPL_MEM_REACHABLE", - 0x2ce7: "ER_GRP_RPL_SRV_BLOCKED", - 0x2ce8: "ER_GRP_RPL_SRV_BLOCKED_FOR_SECS", - 0x2ce9: "ER_GRP_RPL_CHANGE_GRP_MEM_NOT_PROCESSED", - 0x2cea: "ER_GRP_RPL_MEMBER_CONTACT_RESTORED", - 0x2ceb: "ER_GRP_RPL_MEMBER_REMOVED", - 0x2cec: "ER_GRP_RPL_PRIMARY_MEMBER_LEFT_GRP", - 0x2ced: "ER_GRP_RPL_MEMBER_ADDED", - 0x2cee: "ER_GRP_RPL_MEMBER_EXIT_PLUGIN_ERROR", - 0x2cef: "ER_GRP_RPL_MEMBER_CHANGE", - 0x2cf0: "ER_GRP_RPL_MEMBER_LEFT_GRP", - 0x2cf1: "ER_GRP_RPL_MEMBER_EXPELLED", - 0x2cf2: "ER_GRP_RPL_SESSION_OPEN_FAILED", - 0x2cf3: "ER_GRP_RPL_NEW_PRIMARY_ELECTED", - 0x2cf4: "ER_GRP_RPL_DISABLE_READ_ONLY_FAILED", - 0x2cf5: "ER_GRP_RPL_ENABLE_READ_ONLY_FAILED", - 0x2cf6: "ER_GRP_RPL_SRV_PRIMARY_MEM", - 0x2cf7: "ER_GRP_RPL_SRV_SECONDARY_MEM", - 0x2cf8: "ER_GRP_RPL_NO_SUITABLE_PRIMARY_MEM", - 0x2cf9: "ER_GRP_RPL_SUPER_READ_ONLY_ACTIVATE_ERROR", - 0x2cfa: "ER_GRP_RPL_EXCEEDS_AUTO_INC_VALUE", - 0x2cfb: "ER_GRP_RPL_DATA_NOT_PROVIDED_BY_MEM", - 0x2cfc: "ER_GRP_RPL_MEMBER_ALREADY_EXISTS", - 0x2cfd: "ER_GRP_RPL_GRP_CHANGE_INFO_EXTRACT_ERROR", - 0x2cfe: "ER_GRP_RPL_GTID_EXECUTED_EXTRACT_ERROR", - 0x2cff: "ER_GRP_RPL_GTID_SET_EXTRACT_ERROR", - 0x2d00: "ER_GRP_RPL_START_FAILED", - 0x2d01: "ER_GRP_RPL_MEMBER_VER_INCOMPATIBLE", - 0x2d02: "ER_GRP_RPL_TRANS_NOT_PRESENT_IN_GRP", - 0x2d03: "ER_GRP_RPL_TRANS_GREATER_THAN_GRP", - 0x2d04: "ER_GRP_RPL_MEMBER_VERSION_LOWER_THAN_GRP", - 0x2d05: "ER_GRP_RPL_LOCAL_GTID_SETS_PROCESS_ERROR", - 0x2d06: "ER_GRP_RPL_MEMBER_TRANS_GREATER_THAN_GRP", - 0x2d07: "ER_GRP_RPL_BLOCK_SIZE_DIFF_FROM_GRP", - 0x2d08: "ER_GRP_RPL_TRANS_WRITE_SET_EXTRACT_DIFF_FROM_GRP", - 0x2d09: "ER_GRP_RPL_MEMBER_CFG_INCOMPATIBLE_WITH_GRP_CFG", - 0x2d0a: "ER_GRP_RPL_MEMBER_STOP_RPL_CHANNELS_ERROR", - 0x2d0b: "ER_GRP_RPL_PURGE_APPLIER_LOGS", - 0x2d0c: "ER_GRP_RPL_RESET_APPLIER_MODULE_LOGS_ERROR", - 0x2d0d: "ER_GRP_RPL_APPLIER_THD_SETUP_ERROR", - 0x2d0e: "ER_GRP_RPL_APPLIER_THD_START_ERROR", - 0x2d0f: "ER_GRP_RPL_APPLIER_THD_STOP_ERROR", - 0x2d10: "ER_GRP_RPL_FETCH_TRANS_DATA_FAILED", - 0x2d11: "ER_GRP_RPL_SLAVE_IO_THD_PRIMARY_UNKNOWN", - 0x2d12: "ER_GRP_RPL_SALVE_IO_THD_ON_SECONDARY_MEMBER", - 0x2d13: "ER_GRP_RPL_SLAVE_SQL_THD_PRIMARY_UNKNOWN", - 0x2d14: "ER_GRP_RPL_SLAVE_SQL_THD_ON_SECONDARY_MEMBER", - 0x2d15: "ER_GRP_RPL_NEEDS_INNODB_TABLE", - 0x2d16: "ER_GRP_RPL_PRIMARY_KEY_NOT_DEFINED", - 0x2d17: "ER_GRP_RPL_FK_WITH_CASCADE_UNSUPPORTED", - 0x2d18: "ER_GRP_RPL_AUTO_INC_RESET", - 0x2d19: "ER_GRP_RPL_AUTO_INC_OFFSET_RESET", - 0x2d1a: "ER_GRP_RPL_AUTO_INC_SET", - 0x2d1b: "ER_GRP_RPL_AUTO_INC_OFFSET_SET", - 0x2d1c: "ER_GRP_RPL_FETCH_TRANS_CONTEXT_FAILED", - 0x2d1d: "ER_GRP_RPL_FETCH_FORMAT_DESC_LOG_EVENT_FAILED", - 0x2d1e: "ER_GRP_RPL_FETCH_TRANS_CONTEXT_LOG_EVENT_FAILED", - 0x2d1f: "ER_GRP_RPL_FETCH_SNAPSHOT_VERSION_FAILED", - 0x2d20: "ER_GRP_RPL_FETCH_GTID_LOG_EVENT_FAILED", - 0x2d21: "ER_GRP_RPL_UPDATE_SERV_CERTIFICATE_FAILED", - 0x2d22: "ER_GRP_RPL_ADD_GTID_INFO_WITH_LOCAL_GTID_FAILED", - 0x2d23: "ER_GRP_RPL_ADD_GTID_INFO_WITHOUT_LOCAL_GTID_FAILED", - 0x2d24: "ER_GRP_RPL_NOTIFY_CERTIFICATION_OUTCOME_FAILED", - 0x2d25: "ER_GRP_RPL_ADD_GTID_INFO_WITH_REMOTE_GTID_FAILED", - 0x2d26: "ER_GRP_RPL_ADD_GTID_INFO_WITHOUT_REMOTE_GTID_FAILED", - 0x2d27: "ER_GRP_RPL_FETCH_VIEW_CHANGE_LOG_EVENT_FAILED", - 0x2d28: "ER_GRP_RPL_CONTACT_WITH_SRV_FAILED", - 0x2d29: "ER_GRP_RPL_SRV_WAIT_TIME_OUT", - 0x2d2a: "ER_GRP_RPL_FETCH_LOG_EVENT_FAILED", - 0x2d2b: "ER_GRP_RPL_START_GRP_RPL_FAILED", - 0x2d2c: "ER_GRP_RPL_CONN_INTERNAL_PLUGIN_FAIL", - 0x2d2d: "ER_GRP_RPL_SUPER_READ_ON", - 0x2d2e: "ER_GRP_RPL_SUPER_READ_OFF", - 0x2d2f: "ER_GRP_RPL_KILLED_SESSION_ID", - 0x2d30: "ER_GRP_RPL_KILLED_FAILED_ID", - 0x2d31: "ER_GRP_RPL_INTERNAL_QUERY", - 0x2d32: "ER_GRP_RPL_COPY_FROM_EMPTY_STRING", - 0x2d33: "ER_GRP_RPL_QUERY_FAIL", - 0x2d34: "ER_GRP_RPL_CREATE_SESSION_UNABLE", - 0x2d35: "ER_GRP_RPL_MEMBER_NOT_FOUND", - 0x2d36: "ER_GRP_RPL_MAXIMUM_CONNECTION_RETRIES_REACHED", - 0x2d37: "ER_GRP_RPL_ALL_DONORS_LEFT_ABORT_RECOVERY", - 0x2d38: "ER_GRP_RPL_ESTABLISH_RECOVERY_WITH_DONOR", - 0x2d39: "ER_GRP_RPL_ESTABLISH_RECOVERY_WITH_ANOTHER_DONOR", - 0x2d3a: "ER_GRP_RPL_NO_VALID_DONOR", - 0x2d3b: "ER_GRP_RPL_CONFIG_RECOVERY", - 0x2d3c: "ER_GRP_RPL_ESTABLISHING_CONN_GRP_REC_DONOR", - 0x2d3d: "ER_GRP_RPL_CREATE_GRP_RPL_REC_CHANNEL", - 0x2d3e: "ER_GRP_RPL_DONOR_SERVER_CONN", - 0x2d3f: "ER_GRP_RPL_CHECK_STATUS_TABLE", - 0x2d40: "ER_GRP_RPL_STARTING_GRP_REC", - 0x2d41: "ER_GRP_RPL_DONOR_CONN_TERMINATION", - 0x2d42: "ER_GRP_RPL_STOPPING_GRP_REC", - 0x2d43: "ER_GRP_RPL_PURGE_REC", - 0x2d44: "ER_GRP_RPL_UNABLE_TO_KILL_CONN_REC_DONOR_APPLIER", - 0x2d45: "ER_GRP_RPL_UNABLE_TO_KILL_CONN_REC_DONOR_FAILOVER", - 0x2d46: "ER_GRP_RPL_FAILED_TO_NOTIFY_GRP_MEMBERSHIP_EVENT", - 0x2d47: "ER_GRP_RPL_FAILED_TO_BROADCAST_GRP_MEMBERSHIP_NOTIFICATION", - 0x2d48: "ER_GRP_RPL_FAILED_TO_BROADCAST_MEMBER_STATUS_NOTIFICATION", - 0x2d49: "ER_GRP_RPL_OOM_FAILED_TO_GENERATE_IDENTIFICATION_HASH", - 0x2d4a: "ER_GRP_RPL_WRITE_IDENT_HASH_BASE64_ENCODING_FAILED", - 0x2d4b: "ER_GRP_RPL_INVALID_BINLOG_FORMAT", - 0x2d4c: "ER_GRP_RPL_BINLOG_CHECKSUM_SET", - 0x2d4d: "ER_GRP_RPL_TRANS_WRITE_SET_EXTRACTION_NOT_SET", - 0x2d4e: "ER_GRP_RPL_UNSUPPORTED_TRANS_ISOLATION", - 0x2d4f: "ER_GRP_RPL_CANNOT_EXECUTE_TRANS_WHILE_STOPPING", - 0x2d50: "ER_GRP_RPL_CANNOT_EXECUTE_TRANS_WHILE_RECOVERING", - 0x2d51: "ER_GRP_RPL_CANNOT_EXECUTE_TRANS_IN_ERROR_STATE", - 0x2d52: "ER_GRP_RPL_CANNOT_EXECUTE_TRANS_IN_OFFLINE_MODE", - 0x2d53: "ER_GRP_RPL_MULTIPLE_CACHE_TYPE_NOT_SUPPORTED_FOR_SESSION", - 0x2d54: "ER_GRP_RPL_FAILED_TO_REINIT_BINLOG_CACHE_FOR_READ", - 0x2d55: "ER_GRP_RPL_FAILED_TO_CREATE_TRANS_CONTEXT", - 0x2d56: "ER_GRP_RPL_FAILED_TO_EXTRACT_TRANS_WRITE_SET", - 0x2d57: "ER_GRP_RPL_FAILED_TO_GATHER_TRANS_WRITE_SET", - 0x2d58: "ER_GRP_RPL_TRANS_SIZE_EXCEEDS_LIMIT", - 0x2d59: "ER_GRP_RPL_REINIT_OF_INTERNAL_CACHE_FOR_READ_FAILED", - 0x2d5a: "ER_GRP_RPL_APPENDING_DATA_TO_INTERNAL_CACHE_FAILED", - 0x2d5b: "ER_GRP_RPL_WRITE_TO_BINLOG_CACHE_FAILED", - 0x2d5c: "ER_GRP_RPL_FAILED_TO_REGISTER_TRANS_OUTCOME_NOTIFICTION", - 0x2d5d: "ER_GRP_RPL_MSG_TOO_LONG_BROADCASTING_TRANS_FAILED", - 0x2d5e: "ER_GRP_RPL_BROADCASTING_TRANS_TO_GRP_FAILED", - 0x2d5f: "ER_GRP_RPL_ERROR_WHILE_WAITING_FOR_CONFLICT_DETECTION", - 0x2d60: "ER_GRP_RPL_REINIT_OF_INTERNAL_CACHE_FOR_WRITE_FAILED", - 0x2d61: "ER_GRP_RPL_FAILED_TO_CREATE_COMMIT_CACHE", - 0x2d62: "ER_GRP_RPL_REINIT_OF_COMMIT_CACHE_FOR_WRITE_FAILED", - 0x2d63: "ER_GRP_RPL_PREV_REC_SESSION_RUNNING", - 0x2d64: "ER_GRP_RPL_FATAL_REC_PROCESS", - 0x2d65: "ER_GRP_RPL_WHILE_STOPPING_REP_CHANNEL", - 0x2d66: "ER_GRP_RPL_UNABLE_TO_EVALUATE_APPLIER_STATUS", - 0x2d67: "ER_GRP_RPL_ONLY_ONE_SERVER_ALIVE", - 0x2d68: "ER_GRP_RPL_CERTIFICATION_REC_PROCESS", - 0x2d69: "ER_GRP_RPL_UNABLE_TO_ENSURE_EXECUTION_REC", - 0x2d6a: "ER_GRP_RPL_WHILE_SENDING_MSG_REC", - 0x2d6b: "ER_GRP_RPL_READ_UNABLE_FOR_SUPER_READ_ONLY", - 0x2d6c: "ER_GRP_RPL_READ_UNABLE_FOR_READ_ONLY_SUPER_READ_ONLY", - 0x2d6d: "ER_GRP_RPL_UNABLE_TO_RESET_SERVER_READ_MODE", - 0x2d6e: "ER_GRP_RPL_UNABLE_TO_CERTIFY_PLUGIN_TRANS", - 0x2d6f: "ER_GRP_RPL_UNBLOCK_CERTIFIED_TRANS", - 0x2d70: "ER_GRP_RPL_SERVER_WORKING_AS_SECONDARY", - 0x2d71: "ER_GRP_RPL_FAILED_TO_START_WITH_INVALID_SERVER_ID", - 0x2d72: "ER_GRP_RPL_FORCE_MEMBERS_MUST_BE_EMPTY", - 0x2d73: "ER_GRP_RPL_PLUGIN_STRUCT_INIT_NOT_POSSIBLE_ON_SERVER_START", - 0x2d74: "ER_GRP_RPL_FAILED_TO_ENABLE_SUPER_READ_ONLY_MODE", - 0x2d75: "ER_GRP_RPL_FAILED_TO_INIT_COMMUNICATION_ENGINE", - 0x2d76: "ER_GRP_RPL_FAILED_TO_START_ON_SECONDARY_WITH_ASYNC_CHANNELS", - 0x2d77: "ER_GRP_RPL_FAILED_TO_START_COMMUNICATION_ENGINE", - 0x2d78: "ER_GRP_RPL_TIMEOUT_ON_VIEW_AFTER_JOINING_GRP", - 0x2d79: "ER_GRP_RPL_FAILED_TO_CALL_GRP_COMMUNICATION_INTERFACE", - 0x2d7a: "ER_GRP_RPL_MEMBER_SERVER_UUID_IS_INCOMPATIBLE_WITH_GRP", - 0x2d7b: "ER_GRP_RPL_MEMBER_CONF_INFO", - 0x2d7c: "ER_GRP_RPL_FAILED_TO_CONFIRM_IF_SERVER_LEFT_GRP", - 0x2d7d: "ER_GRP_RPL_SERVER_IS_ALREADY_LEAVING", - 0x2d7e: "ER_GRP_RPL_SERVER_ALREADY_LEFT", - 0x2d7f: "ER_GRP_RPL_WAITING_FOR_VIEW_UPDATE", - 0x2d80: "ER_GRP_RPL_TIMEOUT_RECEIVING_VIEW_CHANGE_ON_SHUTDOWN", - 0x2d81: "ER_GRP_RPL_REQUESTING_NON_MEMBER_SERVER_TO_LEAVE", - 0x2d82: "ER_GRP_RPL_IS_STOPPING", - 0x2d83: "ER_GRP_RPL_IS_STOPPED", - 0x2d84: "ER_GRP_RPL_FAILED_TO_ENABLE_READ_ONLY_MODE_ON_SHUTDOWN", - 0x2d85: "ER_GRP_RPL_RECOVERY_MODULE_TERMINATION_TIMED_OUT_ON_SHUTDOWN", - 0x2d86: "ER_GRP_RPL_APPLIER_TERMINATION_TIMED_OUT_ON_SHUTDOWN", - 0x2d87: "ER_GRP_RPL_FAILED_TO_SHUTDOWN_REGISTRY_MODULE", - 0x2d88: "ER_GRP_RPL_FAILED_TO_INIT_HANDLER", - 0x2d89: "ER_GRP_RPL_FAILED_TO_REGISTER_SERVER_STATE_OBSERVER", - 0x2d8a: "ER_GRP_RPL_FAILED_TO_REGISTER_TRANS_STATE_OBSERVER", - 0x2d8b: "ER_GRP_RPL_FAILED_TO_REGISTER_BINLOG_STATE_OBSERVER", - 0x2d8c: "ER_GRP_RPL_FAILED_TO_START_ON_BOOT", - 0x2d8d: "ER_GRP_RPL_FAILED_TO_STOP_ON_PLUGIN_UNINSTALL", - 0x2d8e: "ER_GRP_RPL_FAILED_TO_UNREGISTER_SERVER_STATE_OBSERVER", - 0x2d8f: "ER_GRP_RPL_FAILED_TO_UNREGISTER_TRANS_STATE_OBSERVER", - 0x2d90: "ER_GRP_RPL_FAILED_TO_UNREGISTER_BINLOG_STATE_OBSERVER", - 0x2d91: "ER_GRP_RPL_ALL_OBSERVERS_UNREGISTERED", - 0x2d92: "ER_GRP_RPL_FAILED_TO_PARSE_THE_GRP_NAME", - 0x2d93: "ER_GRP_RPL_FAILED_TO_GENERATE_SIDNO_FOR_GRP", - 0x2d94: "ER_GRP_RPL_APPLIER_NOT_STARTED_DUE_TO_RUNNING_PREV_SHUTDOWN", - 0x2d95: "ER_GRP_RPL_FAILED_TO_INIT_APPLIER_MODULE", - 0x2d96: "ER_GRP_RPL_APPLIER_INITIALIZED", - 0x2d97: "ER_GRP_RPL_COMMUNICATION_SSL_CONF_INFO", - 0x2d98: "ER_GRP_RPL_ABORTS_AS_SSL_NOT_SUPPORTED_BY_MYSQLD", - 0x2d99: "ER_GRP_RPL_SSL_DISABLED", - 0x2d9a: "ER_GRP_RPL_UNABLE_TO_INIT_COMMUNICATION_ENGINE", - 0x2d9b: "ER_GRP_RPL_BINLOG_DISABLED", - 0x2d9c: "ER_GRP_RPL_GTID_MODE_OFF", - 0x2d9d: "ER_GRP_RPL_LOG_SLAVE_UPDATES_NOT_SET", - 0x2d9e: "ER_GRP_RPL_INVALID_TRANS_WRITE_SET_EXTRACTION_VALUE", - 0x2d9f: "ER_GRP_RPL_RELAY_LOG_INFO_REPO_MUST_BE_TABLE", - 0x2da0: "ER_GRP_RPL_MASTER_INFO_REPO_MUST_BE_TABLE", - 0x2da1: "ER_GRP_RPL_INCORRECT_TYPE_SET_FOR_PARALLEL_APPLIER", - 0x2da2: "ER_GRP_RPL_SLAVE_PRESERVE_COMMIT_ORDER_NOT_SET", - 0x2da3: "ER_GRP_RPL_SINGLE_PRIM_MODE_NOT_ALLOWED_WITH_UPDATE_EVERYWHERE", - 0x2da4: "ER_GRP_RPL_MODULE_TERMINATE_ERROR", - 0x2da5: "ER_GRP_RPL_GRP_NAME_OPTION_MANDATORY", - 0x2da6: "ER_GRP_RPL_GRP_NAME_IS_TOO_LONG", - 0x2da7: "ER_GRP_RPL_GRP_NAME_IS_NOT_VALID_UUID", - 0x2da8: "ER_GRP_RPL_FLOW_CTRL_MIN_QUOTA_GREATER_THAN_MAX_QUOTA", - 0x2da9: "ER_GRP_RPL_FLOW_CTRL_MIN_RECOVERY_QUOTA_GREATER_THAN_MAX_QUOTA", - 0x2daa: "ER_GRP_RPL_FLOW_CTRL_MAX_QUOTA_SMALLER_THAN_MIN_QUOTAS", - 0x2dab: "ER_GRP_RPL_INVALID_SSL_RECOVERY_STRING", - 0x2dac: "ER_GRP_RPL_SUPPORTS_ONLY_ONE_FORCE_MEMBERS_SET", - 0x2dad: "ER_GRP_RPL_FORCE_MEMBERS_SET_UPDATE_NOT_ALLOWED", - 0x2dae: "ER_GRP_RPL_GRP_COMMUNICATION_INIT_WITH_CONF", - 0x2daf: "ER_GRP_RPL_UNKNOWN_GRP_RPL_APPLIER_PIPELINE_REQUESTED", - 0x2db0: "ER_GRP_RPL_FAILED_TO_BOOTSTRAP_EVENT_HANDLING_INFRASTRUCTURE", - 0x2db1: "ER_GRP_RPL_APPLIER_HANDLER_NOT_INITIALIZED", - 0x2db2: "ER_GRP_RPL_APPLIER_HANDLER_IS_IN_USE", - 0x2db3: "ER_GRP_RPL_APPLIER_HANDLER_ROLE_IS_IN_USE", - 0x2db4: "ER_GRP_RPL_FAILED_TO_INIT_APPLIER_HANDLER", - 0x2db5: "ER_GRP_RPL_SQL_SERVICE_FAILED_TO_INIT_SESSION_THREAD", - 0x2db6: "ER_GRP_RPL_SQL_SERVICE_COMM_SESSION_NOT_INITIALIZED", - 0x2db7: "ER_GRP_RPL_SQL_SERVICE_SERVER_SESSION_KILLED", - 0x2db8: "ER_GRP_RPL_SQL_SERVICE_FAILED_TO_RUN_SQL_QUERY", - 0x2db9: "ER_GRP_RPL_SQL_SERVICE_SERVER_INTERNAL_FAILURE", - 0x2dba: "ER_GRP_RPL_SQL_SERVICE_RETRIES_EXCEEDED_ON_SESSION_STATE", - 0x2dbb: "ER_GRP_RPL_SQL_SERVICE_FAILED_TO_FETCH_SECURITY_CTX", - 0x2dbc: "ER_GRP_RPL_SQL_SERVICE_SERVER_ACCESS_DENIED_FOR_USER", - 0x2dbd: "ER_GRP_RPL_SQL_SERVICE_MAX_CONN_ERROR_FROM_SERVER", - 0x2dbe: "ER_GRP_RPL_SQL_SERVICE_SERVER_ERROR_ON_CONN", - 0x2dbf: "ER_GRP_RPL_UNREACHABLE_MAJORITY_TIMEOUT_FOR_MEMBER", - 0x2dc0: "ER_GRP_RPL_SERVER_SET_TO_READ_ONLY_DUE_TO_ERRORS", - 0x2dc1: "ER_GRP_RPL_GMS_LISTENER_FAILED_TO_LOG_NOTIFICATION", - 0x2dc2: "ER_GRP_RPL_GRP_COMMUNICATION_ENG_INIT_FAILED", - 0x2dc3: "ER_GRP_RPL_SET_GRP_COMMUNICATION_ENG_LOGGER_FAILED", - 0x2dc4: "ER_GRP_RPL_DEBUG_OPTIONS", - 0x2dc5: "ER_GRP_RPL_INVALID_DEBUG_OPTIONS", - 0x2dc6: "ER_GRP_RPL_EXIT_GRP_GCS_ERROR", - 0x2dc7: "ER_GRP_RPL_GRP_MEMBER_OFFLINE", - 0x2dc8: "ER_GRP_RPL_GCS_INTERFACE_ERROR", - 0x2dc9: "ER_GRP_RPL_FORCE_MEMBER_VALUE_SET_ERROR", - 0x2dca: "ER_GRP_RPL_FORCE_MEMBER_VALUE_SET", - 0x2dcb: "ER_GRP_RPL_FORCE_MEMBER_VALUE_TIME_OUT", - 0x2dcc: "ER_GRP_RPL_BROADCAST_COMMIT_MSSG_TOO_BIG", - 0x2dcd: "ER_GRP_RPL_SEND_STATS_ERROR", - 0x2dce: "ER_GRP_RPL_MEMBER_STATS_INFO", - 0x2dcf: "ER_GRP_RPL_FLOW_CONTROL_STATS", - 0x2dd0: "ER_GRP_RPL_UNABLE_TO_CONVERT_PACKET_TO_EVENT", - 0x2dd1: "ER_GRP_RPL_PIPELINE_CREATE_FAILED", - 0x2dd2: "ER_GRP_RPL_PIPELINE_REINIT_FAILED_WRITE", - 0x2dd3: "ER_GRP_RPL_UNABLE_TO_CONVERT_EVENT_TO_PACKET", - 0x2dd4: "ER_GRP_RPL_PIPELINE_FLUSH_FAIL", - 0x2dd5: "ER_GRP_RPL_PIPELINE_REINIT_FAILED_READ", - 0x2dd6: "ER_GRP_RPL_STOP_REP_CHANNEL", - 0x2dd7: "ER_GRP_RPL_GCS_GR_ERROR_MSG", - 0x2dd8: "ER_GRP_RPL_SLAVE_IO_THREAD_UNBLOCKED", - 0x2dd9: "ER_GRP_RPL_SLAVE_IO_THREAD_ERROR_OUT", - 0x2dda: "ER_GRP_RPL_SLAVE_APPLIER_THREAD_UNBLOCKED", - 0x2ddb: "ER_GRP_RPL_SLAVE_APPLIER_THREAD_ERROR_OUT", - 0x2ddc: "ER_LDAP_AUTH_FAILED_TO_CREATE_OR_GET_CONNECTION", - 0x2ddd: "ER_LDAP_AUTH_DEINIT_FAILED", - 0x2dde: "ER_LDAP_AUTH_SKIPPING_USER_GROUP_SEARCH", - 0x2ddf: "ER_LDAP_AUTH_POOL_DISABLE_MAX_SIZE_ZERO", - 0x2de0: "ER_LDAP_AUTH_FAILED_TO_CREATE_LDAP_OBJECT_CREATOR", - 0x2de1: "ER_LDAP_AUTH_FAILED_TO_CREATE_LDAP_OBJECT", - 0x2de2: "ER_LDAP_AUTH_TLS_CONF", - 0x2de3: "ER_LDAP_AUTH_TLS_CONNECTION", - 0x2de4: "ER_LDAP_AUTH_CONN_POOL_NOT_CREATED", - 0x2de5: "ER_LDAP_AUTH_CONN_POOL_INITIALIZING", - 0x2de6: "ER_LDAP_AUTH_CONN_POOL_DEINITIALIZING", - 0x2de7: "ER_LDAP_AUTH_ZERO_MAX_POOL_SIZE_UNCHANGED", - 0x2de8: "ER_LDAP_AUTH_POOL_REINITIALIZING", - 0x2de9: "ER_LDAP_AUTH_FAILED_TO_WRITE_PACKET", - 0x2dea: "ER_LDAP_AUTH_SETTING_USERNAME", - 0x2deb: "ER_LDAP_AUTH_USER_AUTH_DATA", - 0x2dec: "ER_LDAP_AUTH_INFO_FOR_USER", - 0x2ded: "ER_LDAP_AUTH_USER_GROUP_SEARCH_INFO", - 0x2dee: "ER_LDAP_AUTH_GRP_SEARCH_SPECIAL_HDL", - 0x2def: "ER_LDAP_AUTH_GRP_IS_FULL_DN", - 0x2df0: "ER_LDAP_AUTH_USER_NOT_FOUND_IN_ANY_GRP", - 0x2df1: "ER_LDAP_AUTH_USER_FOUND_IN_MANY_GRPS", - 0x2df2: "ER_LDAP_AUTH_USER_HAS_MULTIPLE_GRP_NAMES", - 0x2df3: "ER_LDAP_AUTH_SEARCHED_USER_GRP_NAME", - 0x2df4: "ER_LDAP_AUTH_OBJECT_CREATE_TIMESTAMP", - 0x2df5: "ER_LDAP_AUTH_CERTIFICATE_NAME", - 0x2df6: "ER_LDAP_AUTH_FAILED_TO_POOL_DEINIT", - 0x2df7: "ER_LDAP_AUTH_FAILED_TO_INITIALIZE_POOL_IN_RECONSTRUCTING", - 0x2df8: "ER_LDAP_AUTH_FAILED_TO_INITIALIZE_POOL_IN_INIT_STATE", - 0x2df9: "ER_LDAP_AUTH_FAILED_TO_INITIALIZE_POOL_IN_DEINIT_STATE", - 0x2dfa: "ER_LDAP_AUTH_FAILED_TO_DEINITIALIZE_POOL_IN_RECONSTRUCT_STATE", - 0x2dfb: "ER_LDAP_AUTH_FAILED_TO_DEINITIALIZE_NOT_READY_POOL", - 0x2dfc: "ER_LDAP_AUTH_FAILED_TO_GET_CONNECTION_AS_PLUGIN_NOT_READY", - 0x2dfd: "ER_LDAP_AUTH_CONNECTION_POOL_INIT_FAILED", - 0x2dfe: "ER_LDAP_AUTH_MAX_ALLOWED_CONNECTION_LIMIT_HIT", - 0x2dff: "ER_LDAP_AUTH_MAX_POOL_SIZE_SET_FAILED", - 0x2e00: "ER_LDAP_AUTH_PLUGIN_FAILED_TO_READ_PACKET", - 0x2e01: "ER_LDAP_AUTH_CREATING_LDAP_CONNECTION", - 0x2e02: "ER_LDAP_AUTH_GETTING_CONNECTION_FROM_POOL", - 0x2e03: "ER_LDAP_AUTH_RETURNING_CONNECTION_TO_POOL", - 0x2e04: "ER_LDAP_AUTH_SEARCH_USER_GROUP_ATTR_NOT_FOUND", - 0x2e05: "ER_LDAP_AUTH_LDAP_INFO_NULL", - 0x2e06: "ER_LDAP_AUTH_FREEING_CONNECTION", - 0x2e07: "ER_LDAP_AUTH_CONNECTION_PUSHED_TO_POOL", - 0x2e08: "ER_LDAP_AUTH_CONNECTION_CREATOR_ENTER", - 0x2e09: "ER_LDAP_AUTH_STARTING_TLS", - 0x2e0a: "ER_LDAP_AUTH_CONNECTION_GET_LDAP_INFO_NULL", - 0x2e0b: "ER_LDAP_AUTH_DELETING_CONNECTION_KEY", - 0x2e0c: "ER_LDAP_AUTH_POOLED_CONNECTION_KEY", - 0x2e0d: "ER_LDAP_AUTH_CREATE_CONNECTION_KEY", - 0x2e0e: "ER_LDAP_AUTH_COMMUNICATION_HOST_INFO", - 0x2e0f: "ER_LDAP_AUTH_METHOD_TO_CLIENT", - 0x2e10: "ER_LDAP_AUTH_SASL_REQUEST_FROM_CLIENT", - 0x2e11: "ER_LDAP_AUTH_SASL_PROCESS_SASL", - 0x2e12: "ER_LDAP_AUTH_SASL_BIND_SUCCESS_INFO", - 0x2e13: "ER_LDAP_AUTH_STARTED_FOR_USER", - 0x2e14: "ER_LDAP_AUTH_DISTINGUISHED_NAME", - 0x2e15: "ER_LDAP_AUTH_INIT_FAILED", - 0x2e16: "ER_LDAP_AUTH_OR_GROUP_RETRIEVAL_FAILED", - 0x2e17: "ER_LDAP_AUTH_USER_GROUP_SEARCH_FAILED", - 0x2e18: "ER_LDAP_AUTH_USER_BIND_FAILED", - 0x2e19: "ER_LDAP_AUTH_POOL_GET_FAILED_TO_CREATE_CONNECTION", - 0x2e1a: "ER_LDAP_AUTH_FAILED_TO_CREATE_LDAP_CONNECTION", - 0x2e1b: "ER_LDAP_AUTH_FAILED_TO_ESTABLISH_TLS_CONNECTION", - 0x2e1c: "ER_LDAP_AUTH_FAILED_TO_SEARCH_DN", - 0x2e1d: "ER_LDAP_AUTH_CONNECTION_POOL_REINIT_ENTER", - 0x2e1e: "ER_SYSTEMD_NOTIFY_PATH_TOO_LONG", - 0x2e1f: "ER_SYSTEMD_NOTIFY_CONNECT_FAILED", - 0x2e20: "ER_SYSTEMD_NOTIFY_WRITE_FAILED", - 0x2e21: "ER_FOUND_MISSING_GTIDS", - 0x2e22: "ER_PID_FILE_PRIV_DIRECTORY_INSECURE", - 0x2e23: "ER_CANT_CHECK_PID_PATH", - 0x2e24: "ER_VALIDATE_PWD_STATUS_VAR_REGISTRATION_FAILED", - 0x2e25: "ER_VALIDATE_PWD_STATUS_VAR_UNREGISTRATION_FAILED", - 0x2e26: "ER_VALIDATE_PWD_DICT_FILE_OPEN_FAILED", - 0x2e27: "ER_VALIDATE_PWD_COULD_BE_NULL", - 0x2e28: "ER_VALIDATE_PWD_STRING_CONV_TO_LOWERCASE_FAILED", - 0x2e29: "ER_VALIDATE_PWD_STRING_CONV_TO_BUFFER_FAILED", - 0x2e2a: "ER_VALIDATE_PWD_STRING_HANDLER_MEM_ALLOCATION_FAILED", - 0x2e2b: "ER_VALIDATE_PWD_STRONG_POLICY_DICT_FILE_UNSPECIFIED", - 0x2e2c: "ER_VALIDATE_PWD_CONVERT_TO_BUFFER_FAILED", - 0x2e2d: "ER_VALIDATE_PWD_VARIABLE_REGISTRATION_FAILED", - 0x2e2e: "ER_VALIDATE_PWD_VARIABLE_UNREGISTRATION_FAILED", - 0x2e2f: "ER_KEYRING_MIGRATION_EXTRA_OPTIONS", - 0x2e31: "ER_IB_MSG_0", - 0x2e32: "ER_IB_MSG_1", - 0x2e33: "ER_IB_MSG_2", - 0x2e34: "ER_IB_MSG_3", - 0x2e35: "ER_IB_MSG_4", - 0x2e36: "ER_IB_MSG_5", - 0x2e37: "ER_IB_MSG_6", - 0x2e38: "ER_IB_MSG_7", - 0x2e39: "ER_IB_MSG_8", - 0x2e3a: "ER_IB_MSG_9", - 0x2e3b: "ER_IB_MSG_10", - 0x2e3c: "ER_IB_MSG_11", - 0x2e3d: "ER_IB_MSG_12", - 0x2e3e: "ER_IB_MSG_13", - 0x2e3f: "ER_IB_MSG_14", - 0x2e40: "ER_IB_MSG_15", - 0x2e41: "ER_IB_MSG_16", - 0x2e42: "ER_IB_MSG_17", - 0x2e43: "ER_IB_MSG_18", - 0x2e44: "ER_IB_MSG_19", - 0x2e45: "ER_IB_MSG_20", - 0x2e46: "ER_IB_MSG_21", - 0x2e47: "ER_IB_MSG_22", - 0x2e48: "ER_IB_MSG_23", - 0x2e49: "ER_IB_MSG_24", - 0x2e4a: "ER_IB_MSG_25", - 0x2e4b: "ER_IB_MSG_26", - 0x2e4c: "ER_IB_MSG_27", - 0x2e4d: "ER_IB_MSG_28", - 0x2e4e: "ER_IB_MSG_29", - 0x2e4f: "ER_IB_MSG_30", - 0x2e50: "ER_IB_MSG_31", - 0x2e51: "ER_IB_MSG_32", - 0x2e52: "ER_IB_MSG_33", - 0x2e53: "ER_IB_MSG_34", - 0x2e54: "ER_IB_MSG_35", - 0x2e55: "ER_IB_MSG_36", - 0x2e56: "ER_IB_MSG_37", - 0x2e57: "ER_IB_MSG_38", - 0x2e58: "ER_IB_MSG_39", - 0x2e59: "ER_IB_MSG_40", - 0x2e5a: "ER_IB_MSG_41", - 0x2e5b: "ER_IB_MSG_42", - 0x2e5c: "ER_IB_MSG_43", - 0x2e5d: "ER_IB_MSG_44", - 0x2e5e: "ER_IB_MSG_45", - 0x2e5f: "ER_IB_MSG_46", - 0x2e60: "ER_IB_MSG_47", - 0x2e61: "ER_IB_MSG_48", - 0x2e62: "ER_IB_MSG_49", - 0x2e63: "ER_IB_MSG_50", - 0x2e64: "ER_IB_MSG_51", - 0x2e65: "ER_IB_MSG_52", - 0x2e66: "ER_IB_MSG_53", - 0x2e67: "ER_IB_MSG_54", - 0x2e68: "ER_IB_MSG_55", - 0x2e69: "ER_IB_MSG_56", - 0x2e6a: "ER_IB_MSG_57", - 0x2e6b: "ER_IB_MSG_58", - 0x2e6c: "ER_IB_MSG_59", - 0x2e6d: "ER_IB_MSG_60", - 0x2e6e: "ER_IB_MSG_61", - 0x2e6f: "ER_IB_MSG_62", - 0x2e70: "ER_IB_MSG_63", - 0x2e71: "ER_IB_MSG_64", - 0x2e72: "ER_IB_MSG_65", - 0x2e73: "ER_IB_MSG_66", - 0x2e74: "ER_IB_MSG_67", - 0x2e75: "ER_IB_MSG_68", - 0x2e76: "ER_IB_MSG_69", - 0x2e77: "ER_IB_MSG_70", - 0x2e78: "ER_IB_MSG_71", - 0x2e79: "ER_IB_MSG_72", - 0x2e7a: "ER_IB_MSG_73", - 0x2e7b: "ER_IB_MSG_74", - 0x2e7c: "ER_IB_MSG_75", - 0x2e7d: "ER_IB_MSG_76", - 0x2e7e: "ER_IB_MSG_77", - 0x2e7f: "ER_IB_MSG_78", - 0x2e80: "ER_IB_MSG_79", - 0x2e81: "ER_IB_MSG_80", - 0x2e82: "ER_IB_MSG_81", - 0x2e83: "ER_IB_MSG_82", - 0x2e84: "ER_IB_MSG_83", - 0x2e85: "ER_IB_MSG_84", - 0x2e86: "ER_IB_MSG_85", - 0x2e87: "ER_IB_MSG_86", - 0x2e88: "ER_IB_MSG_87", - 0x2e89: "ER_IB_MSG_88", - 0x2e8a: "ER_IB_MSG_89", - 0x2e8b: "ER_IB_MSG_90", - 0x2e8c: "ER_IB_MSG_91", - 0x2e8d: "ER_IB_MSG_92", - 0x2e8e: "ER_IB_MSG_93", - 0x2e8f: "ER_IB_MSG_94", - 0x2e90: "ER_IB_MSG_95", - 0x2e91: "ER_IB_MSG_96", - 0x2e92: "ER_IB_MSG_97", - 0x2e93: "ER_IB_MSG_98", - 0x2e94: "ER_IB_MSG_99", - 0x2e95: "ER_IB_MSG_100", - 0x2e96: "ER_IB_MSG_101", - 0x2e97: "ER_IB_MSG_102", - 0x2e98: "ER_IB_MSG_103", - 0x2e99: "ER_IB_MSG_104", - 0x2e9a: "ER_IB_MSG_105", - 0x2e9b: "ER_IB_MSG_106", - 0x2e9c: "ER_IB_MSG_107", - 0x2e9d: "ER_IB_MSG_108", - 0x2e9e: "ER_IB_MSG_109", - 0x2e9f: "ER_IB_MSG_110", - 0x2ea0: "ER_IB_MSG_111", - 0x2ea1: "ER_IB_MSG_112", - 0x2ea2: "ER_IB_MSG_113", - 0x2ea3: "ER_IB_MSG_114", - 0x2ea4: "ER_IB_MSG_115", - 0x2ea5: "ER_IB_MSG_116", - 0x2ea6: "ER_IB_MSG_117", - 0x2ea7: "ER_IB_MSG_118", - 0x2ea8: "ER_IB_MSG_119", - 0x2ea9: "ER_IB_MSG_120", - 0x2eaa: "ER_IB_MSG_121", - 0x2eab: "ER_IB_MSG_122", - 0x2eac: "ER_IB_MSG_123", - 0x2ead: "ER_IB_MSG_124", - 0x2eae: "ER_IB_MSG_125", - 0x2eaf: "ER_IB_MSG_126", - 0x2eb0: "ER_IB_MSG_127", - 0x2eb1: "ER_IB_MSG_128", - 0x2eb2: "ER_IB_MSG_129", - 0x2eb3: "ER_IB_MSG_130", - 0x2eb4: "ER_IB_MSG_131", - 0x2eb5: "ER_IB_MSG_132", - 0x2eb6: "ER_IB_MSG_133", - 0x2eb7: "ER_IB_MSG_134", - 0x2eb8: "ER_IB_MSG_135", - 0x2eb9: "ER_IB_MSG_136", - 0x2eba: "ER_IB_MSG_137", - 0x2ebb: "ER_IB_MSG_138", - 0x2ebc: "ER_IB_MSG_139", - 0x2ebd: "ER_IB_MSG_140", - 0x2ebe: "ER_IB_MSG_141", - 0x2ebf: "ER_IB_MSG_142", - 0x2ec0: "ER_IB_MSG_143", - 0x2ec1: "ER_IB_MSG_144", - 0x2ec2: "ER_IB_MSG_145", - 0x2ec3: "ER_IB_MSG_146", - 0x2ec4: "ER_IB_MSG_147", - 0x2ec5: "ER_IB_MSG_148", - 0x2ec6: "ER_IB_MSG_149", - 0x2ec7: "ER_IB_MSG_150", - 0x2ec8: "ER_IB_MSG_151", - 0x2ec9: "ER_IB_MSG_152", - 0x2eca: "ER_IB_MSG_153", - 0x2ecb: "ER_IB_MSG_154", - 0x2ecc: "ER_IB_MSG_155", - 0x2ecd: "ER_IB_MSG_156", - 0x2ece: "ER_IB_MSG_157", - 0x2ecf: "ER_IB_MSG_158", - 0x2ed0: "ER_IB_MSG_159", - 0x2ed1: "ER_IB_MSG_160", - 0x2ed2: "ER_IB_MSG_161", - 0x2ed3: "ER_IB_MSG_162", - 0x2ed4: "ER_IB_MSG_163", - 0x2ed5: "ER_IB_MSG_164", - 0x2ed6: "ER_IB_MSG_165", - 0x2ed7: "ER_IB_MSG_166", - 0x2ed8: "ER_IB_MSG_167", - 0x2ed9: "ER_IB_MSG_168", - 0x2eda: "ER_IB_MSG_169", - 0x2edb: "ER_IB_MSG_170", - 0x2edc: "ER_IB_MSG_171", - 0x2edd: "ER_IB_MSG_172", - 0x2ede: "ER_IB_MSG_173", - 0x2edf: "ER_IB_MSG_174", - 0x2ee0: "ER_IB_MSG_175", - 0x2ee1: "ER_IB_MSG_176", - 0x2ee2: "ER_IB_MSG_177", - 0x2ee3: "ER_IB_MSG_178", - 0x2ee4: "ER_IB_MSG_179", - 0x2ee5: "ER_IB_MSG_180", - 0x2ee6: "ER_IB_MSG_181", - 0x2ee7: "ER_IB_MSG_182", - 0x2ee8: "ER_IB_MSG_183", - 0x2ee9: "ER_IB_MSG_184", - 0x2eea: "ER_IB_MSG_185", - 0x2eeb: "ER_IB_MSG_186", - 0x2eec: "ER_IB_MSG_187", - 0x2eed: "ER_IB_MSG_188", - 0x2eee: "ER_IB_MSG_189", - 0x2eef: "ER_IB_MSG_190", - 0x2ef0: "ER_IB_MSG_191", - 0x2ef1: "ER_IB_MSG_192", - 0x2ef2: "ER_IB_MSG_193", - 0x2ef3: "ER_IB_MSG_194", - 0x2ef4: "ER_IB_MSG_195", - 0x2ef5: "ER_IB_MSG_196", - 0x2ef6: "ER_IB_MSG_197", - 0x2ef7: "ER_IB_MSG_198", - 0x2ef8: "ER_IB_MSG_199", - 0x2ef9: "ER_IB_MSG_200", - 0x2efa: "ER_IB_MSG_201", - 0x2efb: "ER_IB_MSG_202", - 0x2efc: "ER_IB_MSG_203", - 0x2efd: "ER_IB_MSG_204", - 0x2efe: "ER_IB_MSG_205", - 0x2eff: "ER_IB_MSG_206", - 0x2f00: "ER_IB_MSG_207", - 0x2f01: "ER_IB_MSG_208", - 0x2f02: "ER_IB_MSG_209", - 0x2f03: "ER_IB_MSG_210", - 0x2f04: "ER_IB_MSG_211", - 0x2f05: "ER_IB_MSG_212", - 0x2f06: "ER_IB_MSG_213", - 0x2f07: "ER_IB_MSG_214", - 0x2f08: "ER_IB_MSG_215", - 0x2f09: "ER_IB_MSG_216", - 0x2f0a: "ER_IB_MSG_217", - 0x2f0b: "ER_IB_MSG_218", - 0x2f0c: "ER_IB_MSG_219", - 0x2f0d: "ER_IB_MSG_220", - 0x2f0e: "ER_IB_MSG_221", - 0x2f0f: "ER_IB_MSG_222", - 0x2f10: "ER_IB_MSG_223", - 0x2f11: "ER_IB_MSG_224", - 0x2f12: "ER_IB_MSG_225", - 0x2f13: "ER_IB_MSG_226", - 0x2f14: "ER_IB_MSG_227", - 0x2f15: "ER_IB_MSG_228", - 0x2f16: "ER_IB_MSG_229", - 0x2f17: "ER_IB_MSG_230", - 0x2f18: "ER_IB_MSG_231", - 0x2f19: "ER_IB_MSG_232", - 0x2f1a: "ER_IB_MSG_233", - 0x2f1b: "ER_IB_MSG_234", - 0x2f1c: "ER_IB_MSG_235", - 0x2f1d: "ER_IB_MSG_236", - 0x2f1e: "ER_IB_MSG_237", - 0x2f1f: "ER_IB_MSG_238", - 0x2f20: "ER_IB_MSG_239", - 0x2f21: "ER_IB_MSG_240", - 0x2f22: "ER_IB_MSG_241", - 0x2f23: "ER_IB_MSG_242", - 0x2f24: "ER_IB_MSG_243", - 0x2f25: "ER_IB_MSG_244", - 0x2f26: "ER_IB_MSG_245", - 0x2f27: "ER_IB_MSG_246", - 0x2f28: "ER_IB_MSG_247", - 0x2f29: "ER_IB_MSG_248", - 0x2f2a: "ER_IB_MSG_249", - 0x2f2b: "ER_IB_MSG_250", - 0x2f2c: "ER_IB_MSG_251", - 0x2f2d: "ER_IB_MSG_252", - 0x2f2e: "ER_IB_MSG_253", - 0x2f2f: "ER_IB_MSG_254", - 0x2f30: "ER_IB_MSG_255", - 0x2f31: "ER_IB_MSG_256", - 0x2f32: "ER_IB_MSG_257", - 0x2f33: "ER_IB_MSG_258", - 0x2f34: "ER_IB_MSG_259", - 0x2f35: "ER_IB_MSG_260", - 0x2f36: "ER_IB_MSG_261", - 0x2f37: "ER_IB_MSG_262", - 0x2f38: "ER_IB_MSG_263", - 0x2f39: "ER_IB_MSG_264", - 0x2f3a: "ER_IB_MSG_265", - 0x2f3b: "ER_IB_MSG_266", - 0x2f3c: "ER_IB_MSG_267", - 0x2f3d: "ER_IB_MSG_268", - 0x2f3e: "ER_IB_MSG_269", - 0x2f3f: "ER_IB_MSG_270", - 0x2f40: "ER_IB_MSG_271", - 0x2f41: "ER_IB_MSG_272", - 0x2f42: "ER_IB_MSG_273", - 0x2f43: "ER_IB_MSG_274", - 0x2f44: "ER_IB_MSG_275", - 0x2f45: "ER_IB_MSG_276", - 0x2f46: "ER_IB_MSG_277", - 0x2f47: "ER_IB_MSG_278", - 0x2f48: "ER_IB_MSG_279", - 0x2f49: "ER_IB_MSG_280", - 0x2f4a: "ER_IB_MSG_281", - 0x2f4b: "ER_IB_MSG_282", - 0x2f4c: "ER_IB_MSG_283", - 0x2f4d: "ER_IB_MSG_284", - 0x2f4e: "ER_IB_MSG_285", - 0x2f4f: "ER_IB_MSG_286", - 0x2f50: "ER_IB_MSG_287", - 0x2f51: "ER_IB_MSG_288", - 0x2f52: "ER_IB_MSG_289", - 0x2f53: "ER_IB_MSG_290", - 0x2f54: "ER_IB_MSG_291", - 0x2f55: "ER_IB_MSG_292", - 0x2f56: "ER_IB_MSG_293", - 0x2f57: "ER_IB_MSG_294", - 0x2f58: "ER_IB_MSG_295", - 0x2f59: "ER_IB_MSG_296", - 0x2f5a: "ER_IB_MSG_297", - 0x2f5b: "ER_IB_MSG_298", - 0x2f5c: "ER_IB_MSG_299", - 0x2f5d: "ER_IB_MSG_300", - 0x2f5e: "ER_IB_MSG_301", - 0x2f5f: "ER_IB_MSG_302", - 0x2f60: "ER_IB_MSG_303", - 0x2f61: "ER_IB_MSG_304", - 0x2f62: "ER_IB_MSG_305", - 0x2f63: "ER_IB_MSG_306", - 0x2f64: "ER_IB_MSG_307", - 0x2f65: "ER_IB_MSG_308", - 0x2f66: "ER_IB_MSG_309", - 0x2f67: "ER_IB_MSG_310", - 0x2f68: "ER_IB_MSG_311", - 0x2f69: "ER_IB_MSG_312", - 0x2f6a: "ER_IB_MSG_313", - 0x2f6b: "ER_IB_MSG_314", - 0x2f6c: "ER_IB_MSG_315", - 0x2f6d: "ER_IB_MSG_316", - 0x2f6e: "ER_IB_MSG_317", - 0x2f6f: "ER_IB_MSG_318", - 0x2f70: "ER_IB_MSG_319", - 0x2f71: "ER_IB_MSG_320", - 0x2f72: "ER_IB_MSG_321", - 0x2f73: "ER_IB_MSG_322", - 0x2f74: "ER_IB_MSG_323", - 0x2f75: "ER_IB_MSG_324", - 0x2f76: "ER_IB_MSG_325", - 0x2f77: "ER_IB_MSG_326", - 0x2f78: "ER_IB_MSG_327", - 0x2f79: "ER_IB_MSG_328", - 0x2f7a: "ER_IB_MSG_329", - 0x2f7b: "ER_IB_MSG_330", - 0x2f7c: "ER_IB_MSG_331", - 0x2f7d: "ER_IB_MSG_332", - 0x2f7e: "ER_IB_MSG_333", - 0x2f7f: "ER_IB_MSG_334", - 0x2f80: "ER_IB_MSG_335", - 0x2f81: "ER_IB_MSG_336", - 0x2f82: "ER_IB_MSG_337", - 0x2f83: "ER_IB_MSG_338", - 0x2f84: "ER_IB_MSG_339", - 0x2f85: "ER_IB_MSG_340", - 0x2f86: "ER_IB_MSG_341", - 0x2f87: "ER_IB_MSG_342", - 0x2f88: "ER_IB_MSG_343", - 0x2f89: "ER_IB_MSG_344", - 0x2f8a: "ER_IB_MSG_345", - 0x2f8b: "ER_IB_MSG_346", - 0x2f8c: "ER_IB_MSG_347", - 0x2f8d: "ER_IB_MSG_348", - 0x2f8e: "ER_IB_MSG_349", - 0x2f8f: "ER_IB_MSG_350", - 0x2f90: "ER_IB_MSG_351", - 0x2f91: "ER_IB_MSG_352", - 0x2f92: "ER_IB_MSG_353", - 0x2f93: "ER_IB_MSG_354", - 0x2f94: "ER_IB_MSG_355", - 0x2f95: "ER_IB_MSG_356", - 0x2f96: "ER_IB_MSG_357", - 0x2f97: "ER_IB_MSG_358", - 0x2f98: "ER_IB_MSG_359", - 0x2f99: "ER_IB_MSG_360", - 0x2f9a: "ER_IB_MSG_361", - 0x2f9b: "ER_IB_MSG_362", - 0x2f9c: "ER_IB_MSG_363", - 0x2f9d: "ER_IB_MSG_364", - 0x2f9e: "ER_IB_MSG_365", - 0x2f9f: "ER_IB_MSG_366", - 0x2fa0: "ER_IB_MSG_367", - 0x2fa1: "ER_IB_MSG_368", - 0x2fa2: "ER_IB_MSG_369", - 0x2fa3: "ER_IB_MSG_370", - 0x2fa4: "ER_IB_MSG_371", - 0x2fa5: "ER_IB_MSG_372", - 0x2fa6: "ER_IB_MSG_373", - 0x2fa7: "ER_IB_MSG_374", - 0x2fa8: "ER_IB_MSG_375", - 0x2fa9: "ER_IB_MSG_376", - 0x2faa: "ER_IB_MSG_377", - 0x2fab: "ER_IB_MSG_378", - 0x2fac: "ER_IB_MSG_379", - 0x2fad: "ER_IB_MSG_380", - 0x2fae: "ER_IB_MSG_381", - 0x2faf: "ER_IB_MSG_382", - 0x2fb0: "ER_IB_MSG_383", - 0x2fb1: "ER_IB_MSG_384", - 0x2fb2: "ER_IB_MSG_385", - 0x2fb3: "ER_IB_MSG_386", - 0x2fb4: "ER_IB_MSG_387", - 0x2fb5: "ER_IB_MSG_388", - 0x2fb6: "ER_IB_MSG_389", - 0x2fb7: "ER_IB_MSG_390", - 0x2fb8: "ER_IB_MSG_391", - 0x2fb9: "ER_IB_MSG_392", - 0x2fba: "ER_IB_MSG_393", - 0x2fbb: "ER_IB_MSG_394", - 0x2fbc: "ER_IB_MSG_395", - 0x2fbd: "ER_IB_MSG_396", - 0x2fbe: "ER_IB_MSG_397", - 0x2fbf: "ER_IB_MSG_398", - 0x2fc0: "ER_IB_MSG_399", - 0x2fc1: "ER_IB_MSG_400", - 0x2fc2: "ER_IB_MSG_401", - 0x2fc3: "ER_IB_MSG_402", - 0x2fc4: "ER_IB_MSG_403", - 0x2fc5: "ER_IB_MSG_404", - 0x2fc6: "ER_IB_MSG_405", - 0x2fc7: "ER_IB_MSG_406", - 0x2fc8: "ER_IB_MSG_407", - 0x2fc9: "ER_IB_MSG_408", - 0x2fca: "ER_IB_MSG_409", - 0x2fcb: "ER_IB_MSG_410", - 0x2fcc: "ER_IB_MSG_411", - 0x2fcd: "ER_IB_MSG_412", - 0x2fce: "ER_IB_MSG_413", - 0x2fcf: "ER_IB_MSG_414", - 0x2fd0: "ER_IB_MSG_415", - 0x2fd1: "ER_IB_MSG_416", - 0x2fd2: "ER_IB_MSG_417", - 0x2fd3: "ER_IB_MSG_418", - 0x2fd4: "ER_IB_MSG_419", - 0x2fd5: "ER_IB_MSG_420", - 0x2fd6: "ER_IB_MSG_421", - 0x2fd7: "ER_IB_MSG_422", - 0x2fd8: "ER_IB_MSG_423", - 0x2fd9: "ER_IB_MSG_424", - 0x2fda: "ER_IB_MSG_425", - 0x2fdb: "ER_IB_MSG_426", - 0x2fdc: "ER_IB_MSG_427", - 0x2fdd: "ER_IB_MSG_428", - 0x2fde: "ER_IB_MSG_429", - 0x2fdf: "ER_IB_MSG_430", - 0x2fe0: "ER_IB_MSG_431", - 0x2fe1: "ER_IB_MSG_432", - 0x2fe2: "ER_IB_MSG_433", - 0x2fe3: "ER_IB_MSG_434", - 0x2fe4: "ER_IB_MSG_435", - 0x2fe5: "ER_IB_MSG_436", - 0x2fe6: "ER_IB_MSG_437", - 0x2fe7: "ER_IB_MSG_438", - 0x2fe8: "ER_IB_MSG_439", - 0x2fe9: "ER_IB_MSG_440", - 0x2fea: "ER_IB_MSG_441", - 0x2feb: "ER_IB_MSG_442", - 0x2fec: "ER_IB_MSG_443", - 0x2fed: "ER_IB_MSG_444", - 0x2fee: "ER_IB_MSG_445", - 0x2fef: "ER_IB_MSG_446", - 0x2ff0: "ER_IB_MSG_447", - 0x2ff1: "ER_IB_MSG_448", - 0x2ff2: "ER_IB_MSG_449", - 0x2ff3: "ER_IB_MSG_450", - 0x2ff4: "ER_IB_MSG_451", - 0x2ff5: "ER_IB_MSG_452", - 0x2ff6: "ER_IB_MSG_453", - 0x2ff7: "ER_IB_MSG_454", - 0x2ff8: "ER_IB_MSG_455", - 0x2ff9: "ER_IB_MSG_456", - 0x2ffa: "ER_IB_MSG_457", - 0x2ffb: "ER_IB_MSG_458", - 0x2ffc: "ER_IB_MSG_459", - 0x2ffd: "ER_IB_MSG_460", - 0x2ffe: "ER_IB_MSG_461", - 0x2fff: "ER_IB_MSG_462", + 0x299A: "ER_NDB_BINLOG_SKIPPING_OLD_SCHEMA_OPERATION", + 0x299B: "ER_NDB_CLUSTER_FAILURE", + 0x299C: "ER_NDB_TABLES_INITIALLY_READ_ONLY_ON_RECONNECT", + 0x299D: "ER_NDB_IGNORING_UNKNOWN_EVENT", + 0x299E: "ER_NDB_BINLOG_OPENING_INDEX", + 0x299F: "ER_NDB_BINLOG_CANT_LOCK_NDB_BINLOG_INDEX", + 0x29A0: "ER_NDB_BINLOG_INJECTING_RANDOM_WRITE_FAILURE", + 0x29A1: "ER_NDB_BINLOG_CANT_WRITE_TO_NDB_BINLOG_INDEX", + 0x29A2: "ER_NDB_BINLOG_WRITING_TO_NDB_BINLOG_INDEX", + 0x29A3: "ER_NDB_BINLOG_CANT_COMMIT_TO_NDB_BINLOG_INDEX", + 0x29A4: "ER_NDB_BINLOG_WRITE_TO_NDB_BINLOG_INDEX_FAILED_AFTER_KILL", + 0x29A5: "ER_NDB_BINLOG_USING_SERVER_ID_0_SLAVES_WILL_NOT", + 0x29A6: "ER_NDB_SERVER_ID_RESERVED_OR_TOO_LARGE", + 0x29A7: "ER_NDB_BINLOG_NDB_LOG_TRANSACTION_ID_REQUIRES_V2_ROW_EVENTS", + 0x29A8: "ER_NDB_BINLOG_NDB_LOG_APPLY_STATUS_FORCING_FULL_USE_WRITE", + 0x29A9: "ER_NDB_BINLOG_GENERIC_MESSAGE", + 0x29AA: "ER_NDB_CONFLICT_GENERIC_MESSAGE", + 0x29AB: "ER_NDB_TRANS_DEPENDENCY_TRACKER_ERROR", + 0x29AC: "ER_NDB_CONFLICT_FN_PARSE_ERROR", + 0x29AD: "ER_NDB_CONFLICT_FN_SETUP_ERROR", + 0x29AE: "ER_NDB_BINLOG_FAILED_TO_GET_TABLE", + 0x29AF: "ER_NDB_BINLOG_NOT_LOGGING", + 0x29B0: "ER_NDB_BINLOG_CREATE_TABLE_EVENT_FAILED", + 0x29B1: "ER_NDB_BINLOG_CREATE_TABLE_EVENT_INFO", + 0x29B2: "ER_NDB_BINLOG_DISCOVER_TABLE_EVENT_INFO", + 0x29B3: "ER_NDB_BINLOG_BLOB_REQUIRES_PK", + 0x29B4: "ER_NDB_BINLOG_CANT_CREATE_EVENT_IN_DB", + 0x29B5: "ER_NDB_BINLOG_CANT_CREATE_EVENT_IN_DB_AND_CANT_DROP", + 0x29B6: "ER_NDB_BINLOG_CANT_CREATE_EVENT_IN_DB_DROPPED", + 0x29B7: "ER_NDB_BINLOG_DISCOVER_REUSING_OLD_EVENT_OPS", + 0x29B8: "ER_NDB_BINLOG_CREATING_NDBEVENTOPERATION_FAILED", + 0x29B9: "ER_NDB_BINLOG_CANT_CREATE_BLOB", + 0x29BA: "ER_NDB_BINLOG_NDBEVENT_EXECUTE_FAILED", + 0x29BB: "ER_NDB_CREATE_EVENT_OPS_LOGGING_INFO", + 0x29BC: "ER_NDB_BINLOG_CANT_DROP_EVENT_FROM_DB", + 0x29BD: "ER_NDB_TIMED_OUT_IN_DROP_TABLE", + 0x29BE: "ER_NDB_BINLOG_UNHANDLED_ERROR_FOR_TABLE", + 0x29BF: "ER_NDB_BINLOG_CLUSTER_FAILURE", + 0x29C0: "ER_NDB_BINLOG_UNKNOWN_NON_DATA_EVENT", + 0x29C1: "ER_NDB_BINLOG_INJECTOR_DISCARDING_ROW_EVENT_METADATA", + 0x29C2: "ER_NDB_REMAINING_OPEN_TABLES", + 0x29C3: "ER_NDB_REMAINING_OPEN_TABLE_INFO", + 0x29C4: "ER_NDB_COULD_NOT_GET_APPLY_STATUS_SHARE", + 0x29C5: "ER_NDB_BINLOG_SERVER_SHUTDOWN_DURING_NDB_CLUSTER_START", + 0x29C6: "ER_NDB_BINLOG_CLUSTER_RESTARTED_RESET_MASTER_SUGGESTED", + 0x29C7: "ER_NDB_BINLOG_CLUSTER_HAS_RECONNECTED", + 0x29C8: "ER_NDB_BINLOG_STARTING_LOG_AT_EPOCH", + 0x29C9: "ER_NDB_BINLOG_NDB_TABLES_WRITABLE", + 0x29CA: "ER_NDB_BINLOG_SHUTDOWN_DETECTED", + 0x29CB: "ER_NDB_BINLOG_LOST_SCHEMA_CONNECTION_WAITING", + 0x29CC: "ER_NDB_BINLOG_LOST_SCHEMA_CONNECTION_CONTINUING", + 0x29CD: "ER_NDB_BINLOG_ERROR_HANDLING_SCHEMA_EVENT", + 0x29CE: "ER_NDB_BINLOG_CANT_INJECT_APPLY_STATUS_WRITE_ROW", + 0x29CF: "ER_NDB_BINLOG_ERROR_DURING_GCI_ROLLBACK", + 0x29D0: "ER_NDB_BINLOG_ERROR_DURING_GCI_COMMIT", + 0x29D1: "ER_NDB_BINLOG_LATEST_TRX_IN_EPOCH_NOT_IN_BINLOG", + 0x29D2: "ER_NDB_BINLOG_RELEASING_EXTRA_SHARE_REFERENCES", + 0x29D3: "ER_NDB_BINLOG_REMAINING_OPEN_TABLES", + 0x29D4: "ER_NDB_BINLOG_REMAINING_OPEN_TABLE_INFO", + 0x29D5: "ER_TREE_CORRUPT_PARENT_SHOULD_POINT_AT_PARENT", + 0x29D6: "ER_TREE_CORRUPT_ROOT_SHOULD_BE_BLACK", + 0x29D7: "ER_TREE_CORRUPT_2_CONSECUTIVE_REDS", + 0x29D8: "ER_TREE_CORRUPT_RIGHT_IS_LEFT", + 0x29D9: "ER_TREE_CORRUPT_INCORRECT_BLACK_COUNT", + 0x29DA: "ER_WRONG_COUNT_FOR_ORIGIN", + 0x29DB: "ER_WRONG_COUNT_FOR_KEY", + 0x29DC: "ER_WRONG_COUNT_OF_ELEMENTS", + 0x29DD: "ER_RPL_ERROR_READING_SLAVE_WORKER_CONFIGURATION", + 0x29DE: "ER_RPL_ERROR_WRITING_SLAVE_WORKER_CONFIGURATION", + 0x29DF: "ER_RPL_FAILED_TO_OPEN_RELAY_LOG", + 0x29E0: "ER_RPL_WORKER_CANT_READ_RELAY_LOG", + 0x29E1: "ER_RPL_WORKER_CANT_FIND_NEXT_RELAY_LOG", + 0x29E2: "ER_RPL_MTS_SLAVE_COORDINATOR_HAS_WAITED", + 0x29E3: "ER_BINLOG_FAILED_TO_WRITE_DROP_FOR_TEMP_TABLES", + 0x29E4: "ER_BINLOG_OOM_WRITING_DELETE_WHILE_OPENING_HEAP_TABLE", + 0x29E5: "ER_FAILED_TO_REPAIR_TABLE", + 0x29E6: "ER_FAILED_TO_REMOVE_TEMP_TABLE", + 0x29E7: "ER_SYSTEM_TABLE_NOT_TRANSACTIONAL", + 0x29E8: "ER_RPL_ERROR_WRITING_MASTER_CONFIGURATION", + 0x29E9: "ER_RPL_ERROR_READING_MASTER_CONFIGURATION", + 0x29EA: "ER_RPL_SSL_INFO_IN_MASTER_INFO_IGNORED", + 0x29EB: "ER_PLUGIN_FAILED_DEINITIALIZATION", + 0x29EC: "ER_PLUGIN_HAS_NONZERO_REFCOUNT_AFTER_DEINITIALIZATION", + 0x29ED: "ER_PLUGIN_SHUTTING_DOWN_PLUGIN", + 0x29EE: "ER_PLUGIN_REGISTRATION_FAILED", + 0x29EF: "ER_PLUGIN_CANT_OPEN_PLUGIN_TABLE", + 0x29F0: "ER_PLUGIN_CANT_LOAD", + 0x29F1: "ER_PLUGIN_LOAD_PARAMETER_TOO_LONG", + 0x29F2: "ER_PLUGIN_FORCING_SHUTDOWN", + 0x29F3: "ER_PLUGIN_HAS_NONZERO_REFCOUNT_AFTER_SHUTDOWN", + 0x29F4: "ER_PLUGIN_UNKNOWN_VARIABLE_TYPE", + 0x29F5: "ER_PLUGIN_VARIABLE_SET_READ_ONLY", + 0x29F6: "ER_PLUGIN_VARIABLE_MISSING_NAME", + 0x29F7: "ER_PLUGIN_VARIABLE_NOT_ALLOCATED_THREAD_LOCAL", + 0x29F8: "ER_PLUGIN_OOM", + 0x29F9: "ER_PLUGIN_BAD_OPTIONS", + 0x29FA: "ER_PLUGIN_PARSING_OPTIONS_FAILED", + 0x29FB: "ER_PLUGIN_DISABLED", + 0x29FC: "ER_PLUGIN_HAS_CONFLICTING_SYSTEM_VARIABLES", + 0x29FD: "ER_PLUGIN_CANT_SET_PERSISTENT_OPTIONS", + 0x29FE: "ER_MY_NET_WRITE_FAILED_FALLING_BACK_ON_STDERR", + 0x29FF: "ER_RETRYING_REPAIR_WITHOUT_QUICK", + 0x2A00: "ER_RETRYING_REPAIR_WITH_KEYCACHE", + 0x2A01: "ER_FOUND_ROWS_WHILE_REPAIRING", + 0x2A02: "ER_ERROR_DURING_OPTIMIZE_TABLE", + 0x2A03: "ER_ERROR_ENABLING_KEYS", + 0x2A04: "ER_CHECKING_TABLE", + 0x2A05: "ER_RECOVERING_TABLE", + 0x2A06: "ER_CANT_CREATE_TABLE_SHARE_FROM_FRM", + 0x2A07: "ER_CANT_LOCK_TABLE", + 0x2A08: "ER_CANT_ALLOC_TABLE_OBJECT", + 0x2A09: "ER_CANT_CREATE_HANDLER_OBJECT_FOR_TABLE", + 0x2A0A: "ER_CANT_SET_HANDLER_REFERENCE_FOR_TABLE", + 0x2A0B: "ER_CANT_LOCK_TABLESPACE", + 0x2A0C: "ER_CANT_UPGRADE_GENERATED_COLUMNS_TO_DD", + 0x2A0D: "ER_DD_ERROR_CREATING_ENTRY", + 0x2A0E: "ER_DD_CANT_FETCH_TABLE_DATA", + 0x2A0F: "ER_DD_CANT_FIX_SE_DATA", + 0x2A10: "ER_DD_CANT_CREATE_SP", + 0x2A11: "ER_CANT_OPEN_DB_OPT_USING_DEFAULT_CHARSET", + 0x2A12: "ER_CANT_CREATE_CACHE_FOR_DB_OPT", + 0x2A13: "ER_CANT_IDENTIFY_CHARSET_USING_DEFAULT", + 0x2A14: "ER_DB_OPT_NOT_FOUND_USING_DEFAULT_CHARSET", + 0x2A15: "ER_EVENT_CANT_GET_TIMEZONE_FROM_FIELD", + 0x2A16: "ER_EVENT_CANT_FIND_TIMEZONE", + 0x2A17: "ER_EVENT_CANT_GET_CHARSET", + 0x2A18: "ER_EVENT_CANT_GET_COLLATION", + 0x2A19: "ER_EVENT_CANT_OPEN_TABLE_MYSQL_EVENT", + 0x2A1A: "ER_CANT_PARSE_STORED_ROUTINE_BODY", + 0x2A1B: "ER_CANT_OPEN_TABLE_MYSQL_PROC", + 0x2A1C: "ER_CANT_READ_TABLE_MYSQL_PROC", + 0x2A1D: "ER_FILE_EXISTS_DURING_UPGRADE", + 0x2A1E: "ER_CANT_OPEN_DATADIR_AFTER_UPGRADE_FAILURE", + 0x2A1F: "ER_CANT_SET_PATH_FOR", + 0x2A20: "ER_CANT_OPEN_DIR", + 0x2A21: "ER_NDB_EMPTY_NODEID_IN_NDB_CLUSTER_CONNECTION_POOL_NODEIDS", + 0x2A22: "ER_NDB_CANT_PARSE_NDB_CLUSTER_CONNECTION_POOL_NODEIDS", + 0x2A23: "ER_NDB_INVALID_NODEID_IN_NDB_CLUSTER_CONNECTION_POOL_NODEIDS", + 0x2A24: "ER_NDB_DUPLICATE_NODEID_IN_NDB_CLUSTER_CONNECTION_POOL_NODEIDS", + 0x2A25: "ER_NDB_POOL_SIZE_MUST_MATCH_NDB_CLUSTER_CONNECTION_POOL_NODEIDS", + 0x2A26: "ER_NDB_NODEID_NOT_FIRST_IN_NDB_CLUSTER_CONNECTION_POOL_NODEIDS", + 0x2A27: "ER_NDB_USING_NODEID", + 0x2A28: "ER_NDB_CANT_ALLOC_GLOBAL_NDB_CLUSTER_CONNECTION", + 0x2A29: "ER_NDB_CANT_ALLOC_GLOBAL_NDB_OBJECT", + 0x2A2A: "ER_NDB_USING_NODEID_LIST", + 0x2A2B: "ER_NDB_CANT_ALLOC_NDB_CLUSTER_CONNECTION", + 0x2A2C: "ER_NDB_STARTING_CONNECT_THREAD", + 0x2A2D: "ER_NDB_NODE_INFO", + 0x2A2E: "ER_NDB_CANT_START_CONNECT_THREAD", + 0x2A2F: "ER_NDB_GENERIC_ERROR", + 0x2A30: "ER_NDB_CPU_MASK_TOO_SHORT", + 0x2A31: "ER_EVENT_ERROR_CREATING_QUERY_TO_WRITE_TO_BINLOG", + 0x2A32: "ER_EVENT_SCHEDULER_ERROR_LOADING_FROM_DB", + 0x2A33: "ER_EVENT_SCHEDULER_ERROR_GETTING_EVENT_OBJECT", + 0x2A34: "ER_EVENT_SCHEDULER_GOT_BAD_DATA_FROM_TABLE", + 0x2A35: "ER_EVENT_CANT_GET_LOCK_FOR_DROPPING_EVENT", + 0x2A36: "ER_EVENT_UNABLE_TO_DROP_EVENT", + 0x2A37: "ER_BINLOG_ATTACHING_THREAD_MEMORY_FINALLY_AVAILABLE", + 0x2A38: "ER_BINLOG_CANT_RESIZE_CACHE", + 0x2A39: "ER_BINLOG_FILE_BEING_READ_NOT_PURGED", + 0x2A3A: "ER_BINLOG_IO_ERROR_READING_HEADER", + 0x2A3B: "ER_BINLOG_CANT_OPEN_LOG", + 0x2A3C: "ER_BINLOG_CANT_CREATE_CACHE_FOR_LOG", + 0x2A3D: "ER_BINLOG_FILE_EXTENSION_NUMBER_EXHAUSTED", + 0x2A3E: "ER_BINLOG_FILE_NAME_TOO_LONG", + 0x2A3F: "ER_BINLOG_FILE_EXTENSION_NUMBER_RUNNING_LOW", + 0x2A40: "ER_BINLOG_CANT_OPEN_FOR_LOGGING", + 0x2A41: "ER_BINLOG_FAILED_TO_SYNC_INDEX_FILE", + 0x2A42: "ER_BINLOG_ERROR_READING_GTIDS_FROM_RELAY_LOG", + 0x2A43: "ER_BINLOG_EVENTS_READ_FROM_RELAY_LOG_INFO", + 0x2A44: "ER_BINLOG_ERROR_READING_GTIDS_FROM_BINARY_LOG", + 0x2A45: "ER_BINLOG_EVENTS_READ_FROM_BINLOG_INFO", + 0x2A46: "ER_BINLOG_CANT_GENERATE_NEW_FILE_NAME", + 0x2A47: "ER_BINLOG_FAILED_TO_SYNC_INDEX_FILE_IN_OPEN", + 0x2A48: "ER_BINLOG_CANT_USE_FOR_LOGGING", + 0x2A49: "ER_BINLOG_FAILED_TO_CLOSE_INDEX_FILE_WHILE_REBUILDING", + 0x2A4A: "ER_BINLOG_FAILED_TO_DELETE_INDEX_FILE_WHILE_REBUILDING", + 0x2A4B: "ER_BINLOG_FAILED_TO_RENAME_INDEX_FILE_WHILE_REBUILDING", + 0x2A4C: "ER_BINLOG_FAILED_TO_OPEN_INDEX_FILE_AFTER_REBUILDING", + 0x2A4D: "ER_BINLOG_CANT_APPEND_LOG_TO_TMP_INDEX", + 0x2A4E: "ER_BINLOG_CANT_LOCATE_OLD_BINLOG_OR_RELAY_LOG_FILES", + 0x2A4F: "ER_BINLOG_CANT_DELETE_FILE", + 0x2A50: "ER_BINLOG_CANT_SET_TMP_INDEX_NAME", + 0x2A51: "ER_BINLOG_FAILED_TO_OPEN_TEMPORARY_INDEX_FILE", + 0x2A52: "ER_BINLOG_ERROR_GETTING_NEXT_LOG_FROM_INDEX", + 0x2A53: "ER_BINLOG_CANT_OPEN_TMP_INDEX", + 0x2A54: "ER_BINLOG_CANT_COPY_INDEX_TO_TMP", + 0x2A55: "ER_BINLOG_CANT_CLOSE_TMP_INDEX", + 0x2A56: "ER_BINLOG_CANT_MOVE_TMP_TO_INDEX", + 0x2A57: "ER_BINLOG_PURGE_LOGS_CALLED_WITH_FILE_NOT_IN_INDEX", + 0x2A58: "ER_BINLOG_PURGE_LOGS_CANT_SYNC_INDEX_FILE", + 0x2A59: "ER_BINLOG_PURGE_LOGS_CANT_COPY_TO_REGISTER_FILE", + 0x2A5A: "ER_BINLOG_PURGE_LOGS_CANT_FLUSH_REGISTER_FILE", + 0x2A5B: "ER_BINLOG_PURGE_LOGS_CANT_UPDATE_INDEX_FILE", + 0x2A5C: "ER_BINLOG_PURGE_LOGS_FAILED_TO_PURGE_LOG", + 0x2A5D: "ER_BINLOG_FAILED_TO_SET_PURGE_INDEX_FILE_NAME", + 0x2A5E: "ER_BINLOG_FAILED_TO_OPEN_REGISTER_FILE", + 0x2A5F: "ER_BINLOG_FAILED_TO_REINIT_REGISTER_FILE", + 0x2A60: "ER_BINLOG_FAILED_TO_READ_REGISTER_FILE", + 0x2A61: "ER_CANT_STAT_FILE", + 0x2A62: "ER_BINLOG_CANT_DELETE_LOG_FILE_DOES_INDEX_MATCH_FILES", + 0x2A63: "ER_BINLOG_CANT_DELETE_FILE_AND_READ_BINLOG_INDEX", + 0x2A64: "ER_BINLOG_FAILED_TO_DELETE_LOG_FILE", + 0x2A65: "ER_BINLOG_LOGGING_INCIDENT_TO_STOP_SLAVES", + 0x2A66: "ER_BINLOG_CANT_FIND_LOG_IN_INDEX", + 0x2A67: "ER_BINLOG_RECOVERING_AFTER_CRASH_USING", + 0x2A68: "ER_BINLOG_CANT_OPEN_CRASHED_BINLOG", + 0x2A69: "ER_BINLOG_CANT_TRIM_CRASHED_BINLOG", + 0x2A6A: "ER_BINLOG_CRASHED_BINLOG_TRIMMED", + 0x2A6B: "ER_BINLOG_CANT_CLEAR_IN_USE_FLAG_FOR_CRASHED_BINLOG", + 0x2A6C: "ER_BINLOG_FAILED_TO_RUN_AFTER_SYNC_HOOK", + 0x2A6D: "ER_TURNING_LOGGING_OFF_FOR_THE_DURATION", + 0x2A6E: "ER_BINLOG_FAILED_TO_RUN_AFTER_FLUSH_HOOK", + 0x2A6F: "ER_BINLOG_CRASH_RECOVERY_FAILED", + 0x2A70: "ER_BINLOG_WARNING_SUPPRESSED", + 0x2A71: "ER_NDB_LOG_ENTRY", + 0x2A72: "ER_NDB_LOG_ENTRY_WITH_PREFIX", + 0x2A73: "ER_NDB_BINLOG_CANT_CREATE_PURGE_THD", + 0x2A74: "ER_INNODB_UNKNOWN_COLLATION", + 0x2A75: "ER_INNODB_INVALID_LOG_GROUP_HOME_DIR", + 0x2A76: "ER_INNODB_INVALID_INNODB_UNDO_DIRECTORY", + 0x2A77: "ER_INNODB_ILLEGAL_COLON_IN_POOL", + 0x2A78: "ER_INNODB_INVALID_PAGE_SIZE", + 0x2A79: "ER_INNODB_DIRTY_WATER_MARK_NOT_LOW", + 0x2A7A: "ER_INNODB_IO_CAPACITY_EXCEEDS_MAX", + 0x2A7B: "ER_INNODB_FILES_SAME", + 0x2A7C: "ER_INNODB_UNREGISTERED_TRX_ACTIVE", + 0x2A7D: "ER_INNODB_CLOSING_CONNECTION_ROLLS_BACK", + 0x2A7E: "ER_INNODB_TRX_XLATION_TABLE_OOM", + 0x2A7F: "ER_INNODB_CANT_FIND_INDEX_IN_INNODB_DD", + 0x2A80: "ER_INNODB_INDEX_COLUMN_INFO_UNLIKE_MYSQLS", + 0x2A81: "ER_INNODB_CANT_OPEN_TABLE", + 0x2A82: "ER_INNODB_CANT_BUILD_INDEX_XLATION_TABLE_FOR", + 0x2A83: "ER_INNODB_PK_NOT_IN_MYSQL", + 0x2A84: "ER_INNODB_PK_ONLY_IN_MYSQL", + 0x2A85: "ER_INNODB_CLUSTERED_INDEX_PRIVATE", + 0x2A86: "ER_INNODB_PARTITION_TABLE_LOWERCASED", + 0x2A87: "ER_ERRMSG_REPLACEMENT_DODGY", + 0x2A88: "ER_ERRMSG_REPLACEMENTS_FAILED", + 0x2A89: "ER_NPIPE_CANT_CREATE", + 0x2A8A: "ER_PARTITION_MOVE_CREATED_DUPLICATE_ROW_PLEASE_FIX", + 0x2A8B: "ER_AUDIT_CANT_ABORT_COMMAND", + 0x2A8C: "ER_AUDIT_CANT_ABORT_EVENT", + 0x2A8D: "ER_AUDIT_WARNING", + 0x2A8E: "ER_NDB_NUMBER_OF_CHANNELS", + 0x2A8F: "ER_NDB_SLAVE_PARALLEL_WORKERS", + 0x2A90: "ER_NDB_DISTRIBUTING_ERR", + 0x2A91: "ER_RPL_SLAVE_INSECURE_CHANGE_MASTER", + 0x2A92: "ER_RPL_SLAVE_FLUSH_RELAY_LOGS_NOT_ALLOWED", + 0x2A93: "ER_RPL_SLAVE_INCORRECT_CHANNEL", + 0x2A94: "ER_FAILED_TO_FIND_DL_ENTRY", + 0x2A95: "ER_FAILED_TO_OPEN_SHARED_LIBRARY", + 0x2A96: "ER_THREAD_PRIORITY_IGNORED", + 0x2A97: "ER_BINLOG_CACHE_SIZE_TOO_LARGE", + 0x2A98: "ER_BINLOG_STMT_CACHE_SIZE_TOO_LARGE", + 0x2A99: "ER_FAILED_TO_GENERATE_UNIQUE_LOGFILE", + 0x2A9A: "ER_FAILED_TO_READ_FILE", + 0x2A9B: "ER_FAILED_TO_WRITE_TO_FILE", + 0x2A9C: "ER_BINLOG_UNSAFE_MESSAGE_AND_STATEMENT", + 0x2A9D: "ER_FORCE_CLOSE_THREAD", + 0x2A9E: "ER_SERVER_SHUTDOWN_COMPLETE", + 0x2A9F: "ER_RPL_CANT_HAVE_SAME_BASENAME", + 0x2AA0: "ER_RPL_GTID_MODE_REQUIRES_ENFORCE_GTID_CONSISTENCY_ON", + 0x2AA1: "ER_WARN_NO_SERVERID_SPECIFIED", + 0x2AA2: "ER_ABORTING_USER_CONNECTION", + 0x2AA3: "ER_SQL_MODE_MERGED_WITH_STRICT_MODE", + 0x2AA4: "ER_GTID_PURGED_WAS_UPDATED", + 0x2AA5: "ER_GTID_EXECUTED_WAS_UPDATED", + 0x2AA6: "ER_DEPRECATE_MSG_WITH_REPLACEMENT", + 0x2AA7: "ER_TRG_CREATION_CTX_NOT_SET", + 0x2AA8: "ER_FILE_HAS_OLD_FORMAT", + 0x2AA9: "ER_VIEW_CREATION_CTX_NOT_SET", + 0x2AAA: "ER_TABLE_NAME_CAUSES_TOO_LONG_PATH", + 0x2AAB: "ER_TABLE_UPGRADE_REQUIRED", + 0x2AAC: "ER_GET_ERRNO_FROM_STORAGE_ENGINE", + 0x2AAD: "ER_ACCESS_DENIED_ERROR_WITHOUT_PASSWORD", + 0x2AAE: "ER_ACCESS_DENIED_ERROR_WITH_PASSWORD", + 0x2AAF: "ER_ACCESS_DENIED_FOR_USER_ACCOUNT_LOCKED", + 0x2AB0: "ER_MUST_CHANGE_EXPIRED_PASSWORD", + 0x2AB1: "ER_SYSTEM_TABLES_NOT_SUPPORTED_BY_STORAGE_ENGINE", + 0x2AB2: "ER_FILESORT_TERMINATED", + 0x2AB3: "ER_SERVER_STARTUP_MSG", + 0x2AB4: "ER_FAILED_TO_FIND_LOCALE_NAME", + 0x2AB5: "ER_FAILED_TO_FIND_COLLATION_NAME", + 0x2AB6: "ER_SERVER_OUT_OF_RESOURCES", + 0x2AB7: "ER_SERVER_OUTOFMEMORY", + 0x2AB8: "ER_INVALID_COLLATION_FOR_CHARSET", + 0x2AB9: "ER_CANT_START_ERROR_LOG_SERVICE", + 0x2ABA: "ER_CREATING_NEW_UUID_FIRST_START", + 0x2ABB: "ER_FAILED_TO_GET_ABSOLUTE_PATH", + 0x2ABC: "ER_PERFSCHEMA_COMPONENTS_INFRASTRUCTURE_BOOTSTRAP", + 0x2ABD: "ER_PERFSCHEMA_COMPONENTS_INFRASTRUCTURE_SHUTDOWN", + 0x2ABE: "ER_DUP_FD_OPEN_FAILED", + 0x2ABF: "ER_SYSTEM_VIEW_INIT_FAILED", + 0x2AC0: "ER_RESOURCE_GROUP_POST_INIT_FAILED", + 0x2AC1: "ER_RESOURCE_GROUP_SUBSYSTEM_INIT_FAILED", + 0x2AC2: "ER_FAILED_START_MYSQLD_DAEMON", + 0x2AC3: "ER_CANNOT_CHANGE_TO_ROOT_DIR", + 0x2AC4: "ER_PERSISTENT_PRIVILEGES_BOOTSTRAP", + 0x2AC5: "ER_BASEDIR_SET_TO", + 0x2AC6: "ER_RPL_FILTER_ADD_WILD_DO_TABLE_FAILED", + 0x2AC7: "ER_RPL_FILTER_ADD_WILD_IGNORE_TABLE_FAILED", + 0x2AC8: "ER_PRIVILEGE_SYSTEM_INIT_FAILED", + 0x2AC9: "ER_CANNOT_SET_LOG_ERROR_SERVICES", + 0x2ACA: "ER_PERFSCHEMA_TABLES_INIT_FAILED", + 0x2ACB: "ER_TX_EXTRACTION_ALGORITHM_FOR_BINLOG_TX_DEPEDENCY_TRACKING", + 0x2ACC: "ER_INVALID_REPLICATION_TIMESTAMPS", + 0x2ACD: "ER_RPL_TIMESTAMPS_RETURNED_TO_NORMAL", + 0x2ACE: "ER_BINLOG_FILE_OPEN_FAILED", + 0x2ACF: "ER_BINLOG_EVENT_WRITE_TO_STMT_CACHE_FAILED", + 0x2AD0: "ER_SLAVE_RELAY_LOG_TRUNCATE_INFO", + 0x2AD1: "ER_SLAVE_RELAY_LOG_PURGE_FAILED", + 0x2AD2: "ER_RPL_SLAVE_FILTER_CREATE_FAILED", + 0x2AD3: "ER_RPL_SLAVE_GLOBAL_FILTERS_COPY_FAILED", + 0x2AD4: "ER_RPL_SLAVE_RESET_FILTER_OPTIONS", + 0x2AD5: "ER_MISSING_GRANT_SYSTEM_TABLE", + 0x2AD6: "ER_MISSING_ACL_SYSTEM_TABLE", + 0x2AD7: "ER_ANONYMOUS_AUTH_ID_NOT_ALLOWED_IN_MANDATORY_ROLES", + 0x2AD8: "ER_UNKNOWN_AUTH_ID_IN_MANDATORY_ROLE", + 0x2AD9: "ER_WRITE_ROW_TO_PARTITION_FAILED", + 0x2ADA: "ER_RESOURCE_GROUP_METADATA_UPDATE_SKIPPED", + 0x2ADB: "ER_FAILED_TO_PERSIST_RESOURCE_GROUP_METADATA", + 0x2ADC: "ER_FAILED_TO_DESERIALIZE_RESOURCE_GROUP", + 0x2ADD: "ER_FAILED_TO_UPDATE_RESOURCE_GROUP", + 0x2ADE: "ER_RESOURCE_GROUP_VALIDATION_FAILED", + 0x2ADF: "ER_FAILED_TO_ALLOCATE_MEMORY_FOR_RESOURCE_GROUP", + 0x2AE0: "ER_FAILED_TO_ALLOCATE_MEMORY_FOR_RESOURCE_GROUP_HASH", + 0x2AE1: "ER_FAILED_TO_ADD_RESOURCE_GROUP_TO_MAP", + 0x2AE2: "ER_RESOURCE_GROUP_IS_DISABLED", + 0x2AE3: "ER_FAILED_TO_APPLY_RESOURCE_GROUP_CONTROLLER", + 0x2AE4: "ER_FAILED_TO_ACQUIRE_LOCK_ON_RESOURCE_GROUP", + 0x2AE5: "ER_PFS_NOTIFICATION_FUNCTION_REGISTER_FAILED", + 0x2AE6: "ER_RES_GRP_SET_THR_AFFINITY_FAILED", + 0x2AE7: "ER_RES_GRP_SET_THR_AFFINITY_TO_CPUS_FAILED", + 0x2AE8: "ER_RES_GRP_THD_UNBIND_FROM_CPU_FAILED", + 0x2AE9: "ER_RES_GRP_SET_THREAD_PRIORITY_FAILED", + 0x2AEA: "ER_RES_GRP_FAILED_TO_DETERMINE_NICE_CAPABILITY", + 0x2AEB: "ER_RES_GRP_FAILED_TO_GET_THREAD_HANDLE", + 0x2AEC: "ER_RES_GRP_GET_THREAD_PRIO_NOT_SUPPORTED", + 0x2AED: "ER_RES_GRP_FAILED_DETERMINE_CPU_COUNT", + 0x2AEE: "ER_RES_GRP_FEATURE_NOT_AVAILABLE", + 0x2AEF: "ER_RES_GRP_INVALID_THREAD_PRIORITY", + 0x2AF0: "ER_RES_GRP_SOLARIS_PROCESSOR_BIND_TO_CPUID_FAILED", + 0x2AF1: "ER_RES_GRP_SOLARIS_PROCESSOR_BIND_TO_THREAD_FAILED", + 0x2AF2: "ER_RES_GRP_SOLARIS_PROCESSOR_AFFINITY_FAILED", + 0x2AF3: "ER_DD_UPGRADE_RENAME_IDX_STATS_FILE_FAILED", + 0x2AF4: "ER_DD_UPGRADE_DD_OPEN_FAILED", + 0x2AF5: "ER_DD_UPGRADE_FAILED_TO_FETCH_TABLESPACES", + 0x2AF6: "ER_DD_UPGRADE_FAILED_TO_ACQUIRE_TABLESPACE", + 0x2AF7: "ER_DD_UPGRADE_FAILED_TO_RESOLVE_TABLESPACE_ENGINE", + 0x2AF8: "ER_FAILED_TO_CREATE_SDI_FOR_TABLESPACE", + 0x2AF9: "ER_FAILED_TO_STORE_SDI_FOR_TABLESPACE", + 0x2AFA: "ER_DD_UPGRADE_FAILED_TO_FETCH_TABLES", + 0x2AFB: "ER_DD_UPGRADE_DD_POPULATED", + 0x2AFC: "ER_DD_UPGRADE_INFO_FILE_OPEN_FAILED", + 0x2AFD: "ER_DD_UPGRADE_INFO_FILE_CLOSE_FAILED", + 0x2AFE: "ER_DD_UPGRADE_TABLESPACE_MIGRATION_FAILED", + 0x2AFF: "ER_DD_UPGRADE_FAILED_TO_CREATE_TABLE_STATS", + 0x2B00: "ER_DD_UPGRADE_TABLE_STATS_MIGRATE_COMPLETED", + 0x2B01: "ER_DD_UPGRADE_FAILED_TO_CREATE_INDEX_STATS", + 0x2B02: "ER_DD_UPGRADE_INDEX_STATS_MIGRATE_COMPLETED", + 0x2B03: "ER_DD_UPGRADE_FAILED_FIND_VALID_DATA_DIR", + 0x2B04: "ER_DD_UPGRADE_START", + 0x2B05: "ER_DD_UPGRADE_FAILED_INIT_DD_SE", + 0x2B06: "ER_DD_UPGRADE_FOUND_PARTIALLY_UPGRADED_DD_ABORT", + 0x2B07: "ER_DD_UPGRADE_FOUND_PARTIALLY_UPGRADED_DD_CONTINUE", + 0x2B08: "ER_DD_UPGRADE_SE_LOGS_FAILED", + 0x2B09: "ER_DD_UPGRADE_SDI_INFO_UPDATE_FAILED", + 0x2B0A: "ER_SKIP_UPDATING_METADATA_IN_SE_RO_MODE", + 0x2B0B: "ER_CREATED_SYSTEM_WITH_VERSION", + 0x2B0C: "ER_UNKNOWN_ERROR_DETECTED_IN_SE", + 0x2B0D: "ER_READ_LOG_EVENT_FAILED", + 0x2B0E: "ER_ROW_DATA_TOO_BIG_TO_WRITE_IN_BINLOG", + 0x2B0F: "ER_FAILED_TO_CONSTRUCT_DROP_EVENT_QUERY", + 0x2B10: "ER_FAILED_TO_BINLOG_DROP_EVENT", + 0x2B11: "ER_FAILED_TO_START_SLAVE_THREAD", + 0x2B12: "ER_RPL_IO_THREAD_KILLED", + 0x2B13: "ER_SLAVE_RECONNECT_FAILED", + 0x2B14: "ER_SLAVE_KILLED_AFTER_RECONNECT", + 0x2B15: "ER_SLAVE_NOT_STARTED_ON_SOME_CHANNELS", + 0x2B16: "ER_FAILED_TO_ADD_RPL_FILTER", + 0x2B17: "ER_PER_CHANNEL_RPL_FILTER_CONF_FOR_GRP_RPL", + 0x2B18: "ER_RPL_FILTERS_NOT_ATTACHED_TO_CHANNEL", + 0x2B19: "ER_FAILED_TO_BUILD_DO_AND_IGNORE_TABLE_HASHES", + 0x2B1A: "ER_CLONE_PLUGIN_NOT_LOADED", + 0x2B1B: "ER_CLONE_HANDLER_EXISTS", + 0x2B1C: "ER_FAILED_TO_CREATE_CLONE_HANDLER", + 0x2B1D: "ER_CYCLE_TIMER_IS_NOT_AVAILABLE", + 0x2B1E: "ER_NANOSECOND_TIMER_IS_NOT_AVAILABLE", + 0x2B1F: "ER_MICROSECOND_TIMER_IS_NOT_AVAILABLE", + 0x2B20: "ER_PFS_MALLOC_ARRAY_OVERFLOW", + 0x2B21: "ER_PFS_MALLOC_ARRAY_OOM", + 0x2B22: "ER_INNODB_FAILED_TO_FIND_IDX_WITH_KEY_NO", + 0x2B23: "ER_INNODB_FAILED_TO_FIND_IDX", + 0x2B24: "ER_INNODB_FAILED_TO_FIND_IDX_FROM_DICT_CACHE", + 0x2B25: "ER_INNODB_ACTIVE_INDEX_CHANGE_FAILED", + 0x2B26: "ER_INNODB_DIFF_IN_REF_LEN", + 0x2B27: "ER_WRONG_TYPE_FOR_COLUMN_PREFIX_IDX_FLD", + 0x2B28: "ER_INNODB_CANNOT_CREATE_TABLE", + 0x2B29: "ER_INNODB_INTERNAL_INDEX", + 0x2B2A: "ER_INNODB_IDX_CNT_MORE_THAN_DEFINED_IN_MYSQL", + 0x2B2B: "ER_INNODB_IDX_CNT_FEWER_THAN_DEFINED_IN_MYSQL", + 0x2B2C: "ER_INNODB_IDX_COLUMN_CNT_DIFF", + 0x2B2D: "ER_INNODB_USE_MONITOR_GROUP_NAME", + 0x2B2E: "ER_INNODB_MONITOR_DEFAULT_VALUE_NOT_DEFINED", + 0x2B2F: "ER_INNODB_MONITOR_IS_ENABLED", + 0x2B30: "ER_INNODB_INVALID_MONITOR_COUNTER_NAME", + 0x2B31: "ER_WIN_LOAD_LIBRARY_FAILED", + 0x2B32: "ER_PARTITION_HANDLER_ADMIN_MSG", + 0x2B33: "ER_RPL_RLI_INIT_INFO_MSG", + 0x2B34: "ER_DD_UPGRADE_TABLE_INTACT_ERROR", + 0x2B35: "ER_SERVER_INIT_COMPILED_IN_COMMANDS", + 0x2B36: "ER_MYISAM_CHECK_METHOD_ERROR", + 0x2B37: "ER_MYISAM_CRASHED_ERROR", + 0x2B38: "ER_WAITPID_FAILED", + 0x2B39: "ER_FAILED_TO_FIND_MYSQLD_STATUS", + 0x2B3A: "ER_INNODB_ERROR_LOGGER_MSG", + 0x2B3B: "ER_INNODB_ERROR_LOGGER_FATAL_MSG", + 0x2B3C: "ER_DEPRECATED_SYNTAX_WITH_REPLACEMENT", + 0x2B3D: "ER_DEPRECATED_SYNTAX_NO_REPLACEMENT", + 0x2B3E: "ER_DEPRECATE_MSG_NO_REPLACEMENT", + 0x2B3F: "ER_LOG_PRINTF_MSG", + 0x2B40: "ER_BINLOG_LOGGING_NOT_POSSIBLE", + 0x2B41: "ER_FAILED_TO_SET_PERSISTED_OPTIONS", + 0x2B42: "ER_COMPONENTS_FAILED_TO_ACQUIRE_SERVICE_IMPLEMENTATION", + 0x2B43: "ER_RES_GRP_INVALID_VCPU_RANGE", + 0x2B44: "ER_RES_GRP_INVALID_VCPU_ID", + 0x2B45: "ER_ERROR_DURING_FLUSH_LOG_COMMIT_PHASE", + 0x2B46: "ER_DROP_DATABASE_FAILED_RMDIR_MANUALLY", + 0x2B47: "ER_EXPIRE_LOGS_DAYS_IGNORED", + 0x2B48: "ER_BINLOG_MALFORMED_OR_OLD_RELAY_LOG", + 0x2B49: "ER_DD_UPGRADE_VIEW_COLUMN_NAME_TOO_LONG", + 0x2B4A: "ER_TABLE_NEEDS_DUMP_UPGRADE", + 0x2B4B: "ER_DD_UPGRADE_FAILED_TO_UPDATE_VER_NO_IN_TABLESPACE", + 0x2B4C: "ER_KEYRING_MIGRATION_FAILED", + 0x2B4D: "ER_KEYRING_MIGRATION_SUCCESSFUL", + 0x2B4E: "ER_RESTART_RECEIVED_INFO", + 0x2B4F: "ER_LCTN_CHANGED", + 0x2B50: "ER_DD_INITIALIZE", + 0x2B51: "ER_DD_RESTART", + 0x2B52: "ER_DD_UPGRADE", + 0x2B53: "ER_DD_UPGRADE_OFF", + 0x2B54: "ER_DD_UPGRADE_VERSION_NOT_SUPPORTED", + 0x2B55: "ER_DD_UPGRADE_SCHEMA_UNAVAILABLE", + 0x2B56: "ER_DD_MINOR_DOWNGRADE", + 0x2B57: "ER_DD_MINOR_DOWNGRADE_VERSION_NOT_SUPPORTED", + 0x2B58: "ER_DD_NO_VERSION_FOUND", + 0x2B59: "ER_THREAD_POOL_NOT_SUPPORTED_ON_PLATFORM", + 0x2B5A: "ER_THREAD_POOL_SIZE_TOO_LOW", + 0x2B5B: "ER_THREAD_POOL_SIZE_TOO_HIGH", + 0x2B5C: "ER_THREAD_POOL_ALGORITHM_INVALID", + 0x2B5D: "ER_THREAD_POOL_INVALID_STALL_LIMIT", + 0x2B5E: "ER_THREAD_POOL_INVALID_PRIO_KICKUP_TIMER", + 0x2B5F: "ER_THREAD_POOL_MAX_UNUSED_THREADS_INVALID", + 0x2B60: "ER_THREAD_POOL_CON_HANDLER_INIT_FAILED", + 0x2B61: "ER_THREAD_POOL_INIT_FAILED", + 0x2B62: "ER_THREAD_POOL_PLUGIN_STARTED", + 0x2B63: "ER_THREAD_POOL_CANNOT_SET_THREAD_SPECIFIC_DATA", + 0x2B64: "ER_THREAD_POOL_FAILED_TO_CREATE_CONNECT_HANDLER_THD", + 0x2B65: "ER_THREAD_POOL_FAILED_TO_CREATE_THD_AND_AUTH_CONN", + 0x2B66: "ER_THREAD_POOL_FAILED_PROCESS_CONNECT_EVENT", + 0x2B67: "ER_THREAD_POOL_FAILED_TO_CREATE_POOL", + 0x2B68: "ER_THREAD_POOL_RATE_LIMITED_ERROR_MSGS", + 0x2B69: "ER_TRHEAD_POOL_LOW_LEVEL_INIT_FAILED", + 0x2B6A: "ER_THREAD_POOL_LOW_LEVEL_REARM_FAILED", + 0x2B6B: "ER_THREAD_POOL_BUFFER_TOO_SMALL", + 0x2B6C: "ER_MECAB_NOT_SUPPORTED", + 0x2B6D: "ER_MECAB_NOT_VERIFIED", + 0x2B6E: "ER_MECAB_CREATING_MODEL", + 0x2B6F: "ER_MECAB_FAILED_TO_CREATE_MODEL", + 0x2B70: "ER_MECAB_FAILED_TO_CREATE_TRIGGER", + 0x2B71: "ER_MECAB_UNSUPPORTED_CHARSET", + 0x2B72: "ER_MECAB_CHARSET_LOADED", + 0x2B73: "ER_MECAB_PARSE_FAILED", + 0x2B74: "ER_MECAB_OOM_WHILE_PARSING_TEXT", + 0x2B75: "ER_MECAB_CREATE_LATTICE_FAILED", + 0x2B76: "ER_SEMISYNC_TRACE_ENTER_FUNC", + 0x2B77: "ER_SEMISYNC_TRACE_EXIT_WITH_INT_EXIT_CODE", + 0x2B78: "ER_SEMISYNC_TRACE_EXIT_WITH_BOOL_EXIT_CODE", + 0x2B79: "ER_SEMISYNC_TRACE_EXIT", + 0x2B7A: "ER_SEMISYNC_RPL_INIT_FOR_TRX", + 0x2B7B: "ER_SEMISYNC_FAILED_TO_ALLOCATE_TRX_NODE", + 0x2B7C: "ER_SEMISYNC_BINLOG_WRITE_OUT_OF_ORDER", + 0x2B7D: "ER_SEMISYNC_INSERT_LOG_INFO_IN_ENTRY", + 0x2B7E: "ER_SEMISYNC_PROBE_LOG_INFO_IN_ENTRY", + 0x2B7F: "ER_SEMISYNC_CLEARED_ALL_ACTIVE_TRANSACTION_NODES", + 0x2B80: "ER_SEMISYNC_CLEARED_ACTIVE_TRANSACTION_TILL_POS", + 0x2B81: "ER_SEMISYNC_REPLY_MAGIC_NO_ERROR", + 0x2B82: "ER_SEMISYNC_REPLY_PKT_LENGTH_TOO_SMALL", + 0x2B83: "ER_SEMISYNC_REPLY_BINLOG_FILE_TOO_LARGE", + 0x2B84: "ER_SEMISYNC_SERVER_REPLY", + 0x2B85: "ER_SEMISYNC_FUNCTION_CALLED_TWICE", + 0x2B86: "ER_SEMISYNC_RPL_ENABLED_ON_MASTER", + 0x2B87: "ER_SEMISYNC_MASTER_OOM", + 0x2B88: "ER_SEMISYNC_DISABLED_ON_MASTER", + 0x2B89: "ER_SEMISYNC_FORCED_SHUTDOWN", + 0x2B8A: "ER_SEMISYNC_MASTER_GOT_REPLY_AT_POS", + 0x2B8B: "ER_SEMISYNC_MASTER_SIGNAL_ALL_WAITING_THREADS", + 0x2B8C: "ER_SEMISYNC_MASTER_TRX_WAIT_POS", + 0x2B8D: "ER_SEMISYNC_BINLOG_REPLY_IS_AHEAD", + 0x2B8E: "ER_SEMISYNC_MOVE_BACK_WAIT_POS", + 0x2B8F: "ER_SEMISYNC_INIT_WAIT_POS", + 0x2B90: "ER_SEMISYNC_WAIT_TIME_FOR_BINLOG_SENT", + 0x2B91: "ER_SEMISYNC_WAIT_FOR_BINLOG_TIMEDOUT", + 0x2B92: "ER_SEMISYNC_WAIT_TIME_ASSESSMENT_FOR_COMMIT_TRX_FAILED", + 0x2B93: "ER_SEMISYNC_RPL_SWITCHED_OFF", + 0x2B94: "ER_SEMISYNC_RPL_SWITCHED_ON", + 0x2B95: "ER_SEMISYNC_NO_SPACE_IN_THE_PKT", + 0x2B96: "ER_SEMISYNC_SYNC_HEADER_UPDATE_INFO", + 0x2B97: "ER_SEMISYNC_FAILED_TO_INSERT_TRX_NODE", + 0x2B98: "ER_SEMISYNC_TRX_SKIPPED_AT_POS", + 0x2B99: "ER_SEMISYNC_MASTER_FAILED_ON_NET_FLUSH", + 0x2B9A: "ER_SEMISYNC_RECEIVED_ACK_IS_SMALLER", + 0x2B9B: "ER_SEMISYNC_ADD_ACK_TO_SLOT", + 0x2B9C: "ER_SEMISYNC_UPDATE_EXISTING_SLAVE_ACK", + 0x2B9D: "ER_SEMISYNC_FAILED_TO_START_ACK_RECEIVER_THD", + 0x2B9E: "ER_SEMISYNC_STARTING_ACK_RECEIVER_THD", + 0x2B9F: "ER_SEMISYNC_FAILED_TO_WAIT_ON_DUMP_SOCKET", + 0x2BA0: "ER_SEMISYNC_STOPPING_ACK_RECEIVER_THREAD", + 0x2BA1: "ER_SEMISYNC_FAILED_REGISTER_SLAVE_TO_RECEIVER", + 0x2BA2: "ER_SEMISYNC_START_BINLOG_DUMP_TO_SLAVE", + 0x2BA3: "ER_SEMISYNC_STOP_BINLOG_DUMP_TO_SLAVE", + 0x2BA4: "ER_SEMISYNC_UNREGISTER_TRX_OBSERVER_FAILED", + 0x2BA5: "ER_SEMISYNC_UNREGISTER_BINLOG_STORAGE_OBSERVER_FAILED", + 0x2BA6: "ER_SEMISYNC_UNREGISTER_BINLOG_TRANSMIT_OBSERVER_FAILED", + 0x2BA7: "ER_SEMISYNC_UNREGISTERED_REPLICATOR", + 0x2BA8: "ER_SEMISYNC_SOCKET_FD_TOO_LARGE", + 0x2BA9: "ER_SEMISYNC_SLAVE_REPLY", + 0x2BAA: "ER_SEMISYNC_MISSING_MAGIC_NO_FOR_SEMISYNC_PKT", + 0x2BAB: "ER_SEMISYNC_SLAVE_START", + 0x2BAC: "ER_SEMISYNC_SLAVE_REPLY_WITH_BINLOG_INFO", + 0x2BAD: "ER_SEMISYNC_SLAVE_NET_FLUSH_REPLY_FAILED", + 0x2BAE: "ER_SEMISYNC_SLAVE_SEND_REPLY_FAILED", + 0x2BAF: "ER_SEMISYNC_EXECUTION_FAILED_ON_MASTER", + 0x2BB0: "ER_SEMISYNC_NOT_SUPPORTED_BY_MASTER", + 0x2BB1: "ER_SEMISYNC_SLAVE_SET_FAILED", + 0x2BB2: "ER_SEMISYNC_FAILED_TO_STOP_ACK_RECEIVER_THD", + 0x2BB3: "ER_FIREWALL_FAILED_TO_READ_FIREWALL_TABLES", + 0x2BB4: "ER_FIREWALL_FAILED_TO_REG_DYNAMIC_PRIVILEGES", + 0x2BB5: "ER_FIREWALL_RECORDING_STMT_WAS_TRUNCATED", + 0x2BB6: "ER_FIREWALL_RECORDING_STMT_WITHOUT_TEXT", + 0x2BB7: "ER_FIREWALL_SUSPICIOUS_STMT", + 0x2BB8: "ER_FIREWALL_ACCESS_DENIED", + 0x2BB9: "ER_FIREWALL_SKIPPED_UNKNOWN_USER_MODE", + 0x2BBA: "ER_FIREWALL_RELOADING_CACHE", + 0x2BBB: "ER_FIREWALL_RESET_FOR_USER", + 0x2BBC: "ER_FIREWALL_STATUS_FLUSHED", + 0x2BBD: "ER_KEYRING_LOGGER_ERROR_MSG", + 0x2BBE: "ER_AUDIT_LOG_FILTER_IS_NOT_INSTALLED", + 0x2BBF: "ER_AUDIT_LOG_SWITCHING_TO_INCLUDE_LIST", + 0x2BC0: "ER_AUDIT_LOG_CANNOT_SET_LOG_POLICY_WITH_OTHER_POLICIES", + 0x2BC1: "ER_AUDIT_LOG_ONLY_INCLUDE_LIST_USED", + 0x2BC2: "ER_AUDIT_LOG_INDEX_MAP_CANNOT_ACCESS_DIR", + 0x2BC3: "ER_AUDIT_LOG_WRITER_RENAME_FILE_FAILED", + 0x2BC4: "ER_AUDIT_LOG_WRITER_DEST_FILE_ALREADY_EXISTS", + 0x2BC5: "ER_AUDIT_LOG_WRITER_RENAME_FILE_FAILED_REMOVE_FILE_MANUALLY", + 0x2BC6: "ER_AUDIT_LOG_WRITER_INCOMPLETE_FILE_RENAMED", + 0x2BC7: "ER_AUDIT_LOG_WRITER_FAILED_TO_WRITE_TO_FILE", + 0x2BC8: "ER_AUDIT_LOG_EC_WRITER_FAILED_TO_INIT_ENCRYPTION", + 0x2BC9: "ER_AUDIT_LOG_EC_WRITER_FAILED_TO_INIT_COMPRESSION", + 0x2BCA: "ER_AUDIT_LOG_EC_WRITER_FAILED_TO_CREATE_FILE", + 0x2BCB: "ER_AUDIT_LOG_RENAME_LOG_FILE_BEFORE_FLUSH", + 0x2BCC: "ER_AUDIT_LOG_FILTER_RESULT_MSG", + 0x2BCD: "ER_AUDIT_LOG_JSON_READER_FAILED_TO_PARSE", + 0x2BCE: "ER_AUDIT_LOG_JSON_READER_BUF_TOO_SMALL", + 0x2BCF: "ER_AUDIT_LOG_JSON_READER_FAILED_TO_OPEN_FILE", + 0x2BD0: "ER_AUDIT_LOG_JSON_READER_FILE_PARSING_ERROR", + 0x2BD1: "ER_AUDIT_LOG_FILTER_INVALID_COLUMN_COUNT", + 0x2BD2: "ER_AUDIT_LOG_FILTER_INVALID_COLUMN_DEFINITION", + 0x2BD3: "ER_AUDIT_LOG_FILTER_FAILED_TO_STORE_TABLE_FLDS", + 0x2BD4: "ER_AUDIT_LOG_FILTER_FAILED_TO_UPDATE_TABLE", + 0x2BD5: "ER_AUDIT_LOG_FILTER_FAILED_TO_INSERT_INTO_TABLE", + 0x2BD6: "ER_AUDIT_LOG_FILTER_FAILED_TO_DELETE_FROM_TABLE", + 0x2BD7: "ER_AUDIT_LOG_FILTER_FAILED_TO_INIT_TABLE_FOR_READ", + 0x2BD8: "ER_AUDIT_LOG_FILTER_FAILED_TO_READ_TABLE", + 0x2BD9: "ER_AUDIT_LOG_FILTER_FAILED_TO_CLOSE_TABLE_AFTER_READING", + 0x2BDA: "ER_AUDIT_LOG_FILTER_USER_AND_HOST_CANNOT_BE_EMPTY", + 0x2BDB: "ER_AUDIT_LOG_FILTER_FLD_FILTERNAME_CANNOT_BE_EMPTY", + 0x2BDC: "ER_VALIDATE_PWD_DICT_FILE_NOT_SPECIFIED", + 0x2BDD: "ER_VALIDATE_PWD_DICT_FILE_NOT_LOADED", + 0x2BDE: "ER_VALIDATE_PWD_DICT_FILE_TOO_BIG", + 0x2BDF: "ER_VALIDATE_PWD_FAILED_TO_READ_DICT_FILE", + 0x2BE0: "ER_VALIDATE_PWD_FAILED_TO_GET_FLD_FROM_SECURITY_CTX", + 0x2BE1: "ER_VALIDATE_PWD_FAILED_TO_GET_SECURITY_CTX", + 0x2BE2: "ER_VALIDATE_PWD_LENGTH_CHANGED", + 0x2BE3: "ER_REWRITER_QUERY_ERROR_MSG", + 0x2BE4: "ER_REWRITER_QUERY_FAILED", + 0x2BE5: "ER_XPLUGIN_STARTUP_FAILED", + 0x2BE6: "ER_XPLUGIN_SERVER_EXITING", + 0x2BE7: "ER_XPLUGIN_SERVER_EXITED", + 0x2BE8: "ER_XPLUGIN_USING_SSL_CONF_FROM_SERVER", + 0x2BE9: "ER_XPLUGIN_USING_SSL_CONF_FROM_MYSQLX", + 0x2BEA: "ER_XPLUGIN_FAILED_TO_USE_SSL_CONF", + 0x2BEB: "ER_XPLUGIN_USING_SSL_FOR_TLS_CONNECTION", + 0x2BEC: "ER_XPLUGIN_REFERENCE_TO_SECURE_CONN_WITH_XPLUGIN", + 0x2BED: "ER_XPLUGIN_ERROR_MSG", + 0x2BEE: "ER_SHA_PWD_FAILED_TO_PARSE_AUTH_STRING", + 0x2BEF: "ER_SHA_PWD_FAILED_TO_GENERATE_MULTI_ROUND_HASH", + 0x2BF0: "ER_SHA_PWD_AUTH_REQUIRES_RSA_OR_SSL", + 0x2BF1: "ER_SHA_PWD_RSA_KEY_TOO_LONG", + 0x2BF2: "ER_PLUGIN_COMMON_FAILED_TO_OPEN_FILTER_TABLES", + 0x2BF3: "ER_PLUGIN_COMMON_FAILED_TO_OPEN_TABLE", + 0x2BF4: "ER_AUTH_LDAP_ERROR_LOGGER_ERROR_MSG", + 0x2BF5: "ER_CONN_CONTROL_ERROR_MSG", + 0x2BF6: "ER_GRP_RPL_ERROR_MSG", + 0x2BF7: "ER_SHA_PWD_SALT_FOR_USER_CORRUPT", + 0x2BF8: "ER_SYS_VAR_COMPONENT_OOM", + 0x2BF9: "ER_SYS_VAR_COMPONENT_VARIABLE_SET_READ_ONLY", + 0x2BFA: "ER_SYS_VAR_COMPONENT_UNKNOWN_VARIABLE_TYPE", + 0x2BFB: "ER_SYS_VAR_COMPONENT_FAILED_TO_PARSE_VARIABLE_OPTIONS", + 0x2BFC: "ER_SYS_VAR_COMPONENT_FAILED_TO_MAKE_VARIABLE_PERSISTENT", + 0x2BFD: "ER_COMPONENT_FILTER_CONFUSED", + 0x2BFE: "ER_STOP_SLAVE_IO_THREAD_DISK_SPACE", + 0x2BFF: "ER_LOG_FILE_CANNOT_OPEN", + 0x2C04: "ER_PERSIST_OPTION_STATUS", + 0x2C05: "ER_NOT_IMPLEMENTED_GET_TABLESPACE_STATISTICS", + 0x2C08: "ER_SSL_FIPS_MODE_ERROR", + 0x2C09: "ER_CONN_INIT_CONNECT_IGNORED", + 0x2C0A: "ER_UNSUPPORTED_SQL_MODE", + 0x2C0B: "ER_REWRITER_OOM", + 0x2C0C: "ER_REWRITER_TABLE_MALFORMED_ERROR", + 0x2C0D: "ER_REWRITER_LOAD_FAILED", + 0x2C0E: "ER_REWRITER_READ_FAILED", + 0x2C0F: "ER_CONN_CONTROL_EVENT_COORDINATOR_INIT_FAILED", + 0x2C10: "ER_CONN_CONTROL_STAT_CONN_DELAY_TRIGGERED_UPDATE_FAILED", + 0x2C11: "ER_CONN_CONTROL_STAT_CONN_DELAY_TRIGGERED_RESET_FAILED", + 0x2C12: "ER_CONN_CONTROL_INVALID_CONN_DELAY_TYPE", + 0x2C13: "ER_CONN_CONTROL_DELAY_ACTION_INIT_FAILED", + 0x2C14: "ER_CONN_CONTROL_FAILED_TO_SET_CONN_DELAY", + 0x2C15: "ER_CONN_CONTROL_FAILED_TO_UPDATE_CONN_DELAY_HASH", + 0x2C16: "ER_XPLUGIN_FORCE_STOP_CLIENT", + 0x2C17: "ER_XPLUGIN_MAX_AUTH_ATTEMPTS_REACHED", + 0x2C18: "ER_XPLUGIN_BUFFER_PAGE_ALLOC_FAILED", + 0x2C19: "ER_XPLUGIN_DETECTED_HANGING_CLIENTS", + 0x2C1A: "ER_XPLUGIN_FAILED_TO_ACCEPT_CLIENT", + 0x2C1B: "ER_XPLUGIN_FAILED_TO_SCHEDULE_CLIENT", + 0x2C1C: "ER_XPLUGIN_FAILED_TO_PREPARE_IO_INTERFACES", + 0x2C1D: "ER_XPLUGIN_SRV_SESSION_INIT_THREAD_FAILED", + 0x2C1E: "ER_XPLUGIN_UNABLE_TO_USE_USER_SESSION_ACCOUNT", + 0x2C1F: "ER_XPLUGIN_REFERENCE_TO_USER_ACCOUNT_DOC_SECTION", + 0x2C20: "ER_XPLUGIN_UNEXPECTED_EXCEPTION_DISPATCHING_CMD", + 0x2C21: "ER_XPLUGIN_EXCEPTION_IN_TASK_SCHEDULER", + 0x2C22: "ER_XPLUGIN_TASK_SCHEDULING_FAILED", + 0x2C23: "ER_XPLUGIN_EXCEPTION_IN_EVENT_LOOP", + 0x2C24: "ER_XPLUGIN_LISTENER_SETUP_FAILED", + 0x2C25: "ER_XPLUING_NET_STARTUP_FAILED", + 0x2C26: "ER_XPLUGIN_FAILED_AT_SSL_CONF", + 0x2C27: "ER_XPLUGIN_CLIENT_SSL_HANDSHAKE_FAILED", + 0x2C28: "ER_XPLUGIN_SSL_HANDSHAKE_WITH_SERVER_FAILED", + 0x2C29: "ER_XPLUGIN_FAILED_TO_CREATE_SESSION_FOR_CONN", + 0x2C2A: "ER_XPLUGIN_FAILED_TO_INITIALIZE_SESSION", + 0x2C2B: "ER_XPLUGIN_MESSAGE_TOO_LONG", + 0x2C2C: "ER_XPLUGIN_UNINITIALIZED_MESSAGE", + 0x2C2D: "ER_XPLUGIN_FAILED_TO_SET_MIN_NUMBER_OF_WORKERS", + 0x2C2E: "ER_XPLUGIN_UNABLE_TO_ACCEPT_CONNECTION", + 0x2C2F: "ER_XPLUGIN_ALL_IO_INTERFACES_DISABLED", + 0x2C30: "ER_XPLUGIN_INVALID_MSG_DURING_CLIENT_INIT", + 0x2C31: "ER_XPLUGIN_CLOSING_CLIENTS_ON_SHUTDOWN", + 0x2C32: "ER_XPLUGIN_ERROR_READING_SOCKET", + 0x2C33: "ER_XPLUGIN_PEER_DISCONNECTED_WHILE_READING_MSG_BODY", + 0x2C34: "ER_XPLUGIN_READ_FAILED_CLOSING_CONNECTION", + 0x2C35: "ER_XPLUGIN_INVALID_AUTH_METHOD", + 0x2C36: "ER_XPLUGIN_UNEXPECTED_MSG_DURING_AUTHENTICATION", + 0x2C37: "ER_XPLUGIN_ERROR_WRITING_TO_CLIENT", + 0x2C38: "ER_XPLUGIN_SCHEDULER_STARTED", + 0x2C39: "ER_XPLUGIN_SCHEDULER_STOPPED", + 0x2C3A: "ER_XPLUGIN_LISTENER_SYS_VARIABLE_ERROR", + 0x2C3B: "ER_XPLUGIN_LISTENER_STATUS_MSG", + 0x2C3C: "ER_XPLUGIN_RETRYING_BIND_ON_PORT", + 0x2C3D: "ER_XPLUGIN_SHUTDOWN_TRIGGERED", + 0x2C3E: "ER_XPLUGIN_USER_ACCOUNT_WITH_ALL_PERMISSIONS", + 0x2C3F: "ER_XPLUGIN_EXISTING_USER_ACCOUNT_WITH_INCOMPLETE_GRANTS", + 0x2C40: "ER_XPLUGIN_SERVER_STARTS_HANDLING_CONNECTIONS", + 0x2C41: "ER_XPLUGIN_SERVER_STOPPED_HANDLING_CONNECTIONS", + 0x2C42: "ER_XPLUGIN_FAILED_TO_INTERRUPT_SESSION", + 0x2C43: "ER_XPLUGIN_CLIENT_RELEASE_TRIGGERED", + 0x2C44: "ER_XPLUGIN_IPv6_AVAILABLE", + 0x2C45: "ER_XPLUGIN_UNIX_SOCKET_NOT_CONFIGURED", + 0x2C46: "ER_XPLUGIN_CLIENT_KILL_MSG", + 0x2C47: "ER_XPLUGIN_FAILED_TO_GET_SECURITY_CTX", + 0x2C48: "ER_XPLUGIN_FAILED_TO_SWITCH_SECURITY_CTX_TO_ROOT", + 0x2C49: "ER_XPLUGIN_FAILED_TO_CLOSE_SQL_SESSION", + 0x2C4A: "ER_XPLUGIN_FAILED_TO_EXECUTE_ADMIN_CMD", + 0x2C4B: "ER_XPLUGIN_EMPTY_ADMIN_CMD", + 0x2C4C: "ER_XPLUGIN_FAILED_TO_GET_SYS_VAR", + 0x2C4D: "ER_XPLUGIN_FAILED_TO_GET_CREATION_STMT", + 0x2C4E: "ER_XPLUGIN_FAILED_TO_GET_ENGINE_INFO", + 0x2C4F: "ER_XPLUGIN_FAIL_TO_GET_RESULT_DATA", + 0x2C50: "ER_XPLUGIN_CAPABILITY_EXPIRED_PASSWORD", + 0x2C51: "ER_XPLUGIN_FAILED_TO_SET_SO_REUSEADDR_FLAG", + 0x2C52: "ER_XPLUGIN_FAILED_TO_OPEN_INTERNAL_SESSION", + 0x2C53: "ER_XPLUGIN_FAILED_TO_SWITCH_CONTEXT", + 0x2C54: "ER_XPLUGIN_FAILED_TO_UNREGISTER_UDF", + 0x2C55: "ER_XPLUGIN_GET_PEER_ADDRESS_FAILED", + 0x2C56: "ER_XPLUGIN_CAPABILITY_CLIENT_INTERACTIVE_FAILED", + 0x2C57: "ER_XPLUGIN_FAILED_TO_RESET_IPV6_V6ONLY_FLAG", + 0x2C58: "ER_KEYRING_INVALID_KEY_TYPE", + 0x2C59: "ER_KEYRING_INVALID_KEY_LENGTH", + 0x2C5A: "ER_KEYRING_FAILED_TO_CREATE_KEYRING_DIR", + 0x2C5B: "ER_KEYRING_FILE_INIT_FAILED", + 0x2C5C: "ER_KEYRING_INTERNAL_EXCEPTION_FAILED_FILE_INIT", + 0x2C5D: "ER_KEYRING_FAILED_TO_GENERATE_KEY", + 0x2C5E: "ER_KEYRING_CHECK_KEY_FAILED_DUE_TO_INVALID_KEY", + 0x2C5F: "ER_KEYRING_CHECK_KEY_FAILED_DUE_TO_EMPTY_KEY_ID", + 0x2C60: "ER_KEYRING_OPERATION_FAILED_DUE_TO_INTERNAL_ERROR", + 0x2C61: "ER_KEYRING_INCORRECT_FILE", + 0x2C62: "ER_KEYRING_FOUND_MALFORMED_BACKUP_FILE", + 0x2C63: "ER_KEYRING_FAILED_TO_RESTORE_FROM_BACKUP_FILE", + 0x2C64: "ER_KEYRING_FAILED_TO_FLUSH_KEYRING_TO_FILE", + 0x2C65: "ER_KEYRING_FAILED_TO_GET_FILE_STAT", + 0x2C66: "ER_KEYRING_FAILED_TO_REMOVE_FILE", + 0x2C67: "ER_KEYRING_FAILED_TO_TRUNCATE_FILE", + 0x2C68: "ER_KEYRING_UNKNOWN_ERROR", + 0x2C69: "ER_KEYRING_FAILED_TO_SET_KEYRING_FILE_DATA", + 0x2C6A: "ER_KEYRING_FILE_IO_ERROR", + 0x2C6B: "ER_KEYRING_FAILED_TO_LOAD_KEYRING_CONTENT", + 0x2C6C: "ER_KEYRING_FAILED_TO_FLUSH_KEYS_TO_KEYRING", + 0x2C6D: "ER_KEYRING_FAILED_TO_FLUSH_KEYS_TO_KEYRING_BACKUP", + 0x2C6E: "ER_KEYRING_KEY_FETCH_FAILED_DUE_TO_EMPTY_KEY_ID", + 0x2C6F: "ER_KEYRING_FAILED_TO_REMOVE_KEY_DUE_TO_EMPTY_ID", + 0x2C70: "ER_KEYRING_OKV_INCORRECT_KEY_VAULT_CONFIGURED", + 0x2C71: "ER_KEYRING_OKV_INIT_FAILED_DUE_TO_INCORRECT_CONF", + 0x2C72: "ER_KEYRING_OKV_INIT_FAILED_DUE_TO_INTERNAL_ERROR", + 0x2C73: "ER_KEYRING_OKV_INVALID_KEY_TYPE", + 0x2C74: "ER_KEYRING_OKV_INVALID_KEY_LENGTH_FOR_CIPHER", + 0x2C75: "ER_KEYRING_OKV_FAILED_TO_GENERATE_KEY_DUE_TO_INTERNAL_ERROR", + 0x2C76: "ER_KEYRING_OKV_FAILED_TO_FIND_SERVER_ENTRY", + 0x2C77: "ER_KEYRING_OKV_FAILED_TO_FIND_STANDBY_SERVER_ENTRY", + 0x2C78: "ER_KEYRING_OKV_FAILED_TO_PARSE_CONF_FILE", + 0x2C79: "ER_KEYRING_OKV_FAILED_TO_LOAD_KEY_UID", + 0x2C7A: "ER_KEYRING_OKV_FAILED_TO_INIT_SSL_LAYER", + 0x2C7B: "ER_KEYRING_OKV_FAILED_TO_INIT_CLIENT", + 0x2C7C: "ER_KEYRING_OKV_CONNECTION_TO_SERVER_FAILED", + 0x2C7D: "ER_KEYRING_OKV_FAILED_TO_REMOVE_KEY", + 0x2C7E: "ER_KEYRING_OKV_FAILED_TO_ADD_ATTRIBUTE", + 0x2C7F: "ER_KEYRING_OKV_FAILED_TO_GENERATE_KEY", + 0x2C80: "ER_KEYRING_OKV_FAILED_TO_STORE_KEY", + 0x2C81: "ER_KEYRING_OKV_FAILED_TO_ACTIVATE_KEYS", + 0x2C82: "ER_KEYRING_OKV_FAILED_TO_FETCH_KEY", + 0x2C83: "ER_KEYRING_OKV_FAILED_TO_STORE_OR_GENERATE_KEY", + 0x2C84: "ER_KEYRING_OKV_FAILED_TO_RETRIEVE_KEY_SIGNATURE", + 0x2C85: "ER_KEYRING_OKV_FAILED_TO_RETRIEVE_KEY", + 0x2C86: "ER_KEYRING_OKV_FAILED_TO_LOAD_SSL_TRUST_STORE", + 0x2C87: "ER_KEYRING_OKV_FAILED_TO_SET_CERTIFICATE_FILE", + 0x2C88: "ER_KEYRING_OKV_FAILED_TO_SET_KEY_FILE", + 0x2C89: "ER_KEYRING_OKV_KEY_MISMATCH", + 0x2C8A: "ER_KEYRING_ENCRYPTED_FILE_INCORRECT_KEYRING_FILE", + 0x2C8B: "ER_KEYRING_ENCRYPTED_FILE_DECRYPTION_FAILED", + 0x2C8C: "ER_KEYRING_ENCRYPTED_FILE_FOUND_MALFORMED_BACKUP_FILE", + 0x2C8D: "ER_KEYRING_ENCRYPTED_FILE_FAILED_TO_RESTORE_KEYRING", + 0x2C8E: "ER_KEYRING_ENCRYPTED_FILE_FAILED_TO_FLUSH_KEYRING", + 0x2C8F: "ER_KEYRING_ENCRYPTED_FILE_ENCRYPTION_FAILED", + 0x2C90: "ER_KEYRING_ENCRYPTED_FILE_INVALID_KEYRING_DIR", + 0x2C91: "ER_KEYRING_ENCRYPTED_FILE_FAILED_TO_CREATE_KEYRING_DIR", + 0x2C92: "ER_KEYRING_ENCRYPTED_FILE_PASSWORD_IS_INVALID", + 0x2C93: "ER_KEYRING_ENCRYPTED_FILE_PASSWORD_IS_TOO_LONG", + 0x2C94: "ER_KEYRING_ENCRYPTED_FILE_INIT_FAILURE", + 0x2C95: "ER_KEYRING_ENCRYPTED_FILE_INIT_FAILED_DUE_TO_INTERNAL_ERROR", + 0x2C96: "ER_KEYRING_ENCRYPTED_FILE_GEN_KEY_FAILED_DUE_TO_INTERNAL_ERROR", + 0x2C97: "ER_KEYRING_AWS_FAILED_TO_SET_CMK_ID", + 0x2C98: "ER_KEYRING_AWS_FAILED_TO_SET_REGION", + 0x2C99: "ER_KEYRING_AWS_FAILED_TO_OPEN_CONF_FILE", + 0x2C9A: "ER_KEYRING_AWS_FAILED_TO_ACCESS_KEY_ID_FROM_CONF_FILE", + 0x2C9B: "ER_KEYRING_AWS_FAILED_TO_ACCESS_KEY_FROM_CONF_FILE", + 0x2C9C: "ER_KEYRING_AWS_INVALID_CONF_FILE_PATH", + 0x2C9D: "ER_KEYRING_AWS_INVALID_DATA_FILE_PATH", + 0x2C9E: "ER_KEYRING_AWS_FAILED_TO_ACCESS_OR_CREATE_KEYRING_DIR", + 0x2C9F: "ER_KEYRING_AWS_FAILED_TO_ACCESS_OR_CREATE_KEYRING_DATA_FILE", + 0x2CA0: "ER_KEYRING_AWS_FAILED_TO_INIT_DUE_TO_INTERNAL_ERROR", + 0x2CA1: "ER_KEYRING_AWS_FAILED_TO_ACCESS_DATA_FILE", + 0x2CA2: "ER_KEYRING_AWS_CMK_ID_NOT_SET", + 0x2CA3: "ER_KEYRING_AWS_FAILED_TO_GET_KMS_CREDENTIAL_FROM_CONF_FILE", + 0x2CA4: "ER_KEYRING_AWS_INIT_FAILURE", + 0x2CA5: "ER_KEYRING_AWS_FAILED_TO_INIT_DUE_TO_PLUGIN_INTERNAL_ERROR", + 0x2CA6: "ER_KEYRING_AWS_INVALID_KEY_LENGTH_FOR_CIPHER", + 0x2CA7: "ER_KEYRING_AWS_FAILED_TO_GENERATE_KEY_DUE_TO_INTERNAL_ERROR", + 0x2CA8: "ER_KEYRING_AWS_INCORRECT_FILE", + 0x2CA9: "ER_KEYRING_AWS_FOUND_MALFORMED_BACKUP_FILE", + 0x2CAA: "ER_KEYRING_AWS_FAILED_TO_RESTORE_FROM_BACKUP_FILE", + 0x2CAB: "ER_KEYRING_AWS_FAILED_TO_FLUSH_KEYRING_TO_FILE", + 0x2CAC: "ER_KEYRING_AWS_INCORRECT_REGION", + 0x2CAD: "ER_KEYRING_AWS_FAILED_TO_CONNECT_KMS", + 0x2CAE: "ER_KEYRING_AWS_FAILED_TO_GENERATE_NEW_KEY", + 0x2CAF: "ER_KEYRING_AWS_FAILED_TO_ENCRYPT_KEY", + 0x2CB0: "ER_KEYRING_AWS_FAILED_TO_RE_ENCRYPT_KEY", + 0x2CB1: "ER_KEYRING_AWS_FAILED_TO_DECRYPT_KEY", + 0x2CB2: "ER_KEYRING_AWS_FAILED_TO_ROTATE_CMK", + 0x2CB3: "ER_GRP_RPL_GTID_ALREADY_USED", + 0x2CB4: "ER_GRP_RPL_APPLIER_THD_KILLED", + 0x2CB5: "ER_GRP_RPL_EVENT_HANDLING_ERROR", + 0x2CB6: "ER_GRP_RPL_ERROR_GTID_EXECUTION_INFO", + 0x2CB7: "ER_GRP_RPL_CERTIFICATE_SIZE_ERROR", + 0x2CB8: "ER_GRP_RPL_CREATE_APPLIER_CACHE_ERROR", + 0x2CB9: "ER_GRP_RPL_UNBLOCK_WAITING_THD", + 0x2CBA: "ER_GRP_RPL_APPLIER_PIPELINE_NOT_DISPOSED", + 0x2CBB: "ER_GRP_RPL_APPLIER_THD_EXECUTION_ABORTED", + 0x2CBC: "ER_GRP_RPL_APPLIER_EXECUTION_FATAL_ERROR", + 0x2CBD: "ER_GRP_RPL_ERROR_STOPPING_CHANNELS", + 0x2CBE: "ER_GRP_RPL_ERROR_SENDING_SINGLE_PRIMARY_MSSG", + 0x2CBF: "ER_GRP_RPL_UPDATE_TRANS_SNAPSHOT_VER_ERROR", + 0x2CC0: "ER_GRP_RPL_SIDNO_FETCH_ERROR", + 0x2CC1: "ER_GRP_RPL_BROADCAST_COMMIT_TRANS_MSSG_FAILED", + 0x2CC2: "ER_GRP_RPL_GROUP_NAME_PARSE_ERROR", + 0x2CC3: "ER_GRP_RPL_ADD_GRPSID_TO_GRPGTIDSID_MAP_ERROR", + 0x2CC4: "ER_GRP_RPL_UPDATE_GRPGTID_EXECUTED_ERROR", + 0x2CC5: "ER_GRP_RPL_DONOR_TRANS_INFO_ERROR", + 0x2CC6: "ER_GRP_RPL_SERVER_CONN_ERROR", + 0x2CC7: "ER_GRP_RPL_ERROR_FETCHING_GTID_EXECUTED_SET", + 0x2CC8: "ER_GRP_RPL_ADD_GTID_TO_GRPGTID_EXECUTED_ERROR", + 0x2CC9: "ER_GRP_RPL_ERROR_FETCHING_GTID_SET", + 0x2CCA: "ER_GRP_RPL_ADD_RETRIEVED_SET_TO_GRP_GTID_EXECUTED_ERROR", + 0x2CCB: "ER_GRP_RPL_CERTIFICATION_INITIALIZATION_FAILURE", + 0x2CCC: "ER_GRP_RPL_UPDATE_LAST_CONFLICT_FREE_TRANS_ERROR", + 0x2CCD: "ER_GRP_RPL_UPDATE_TRANS_SNAPSHOT_REF_VER_ERROR", + 0x2CCE: "ER_GRP_RPL_FETCH_TRANS_SIDNO_ERROR", + 0x2CCF: "ER_GRP_RPL_ERROR_VERIFYING_SIDNO", + 0x2CD0: "ER_GRP_RPL_CANT_GENERATE_GTID", + 0x2CD1: "ER_GRP_RPL_INVALID_GTID_SET", + 0x2CD2: "ER_GRP_RPL_UPDATE_GTID_SET_ERROR", + 0x2CD3: "ER_GRP_RPL_RECEIVED_SET_MISSING_GTIDS", + 0x2CD4: "ER_GRP_RPL_SKIP_COMPUTATION_TRANS_COMMITTED", + 0x2CD5: "ER_GRP_RPL_NULL_PACKET", + 0x2CD6: "ER_GRP_RPL_CANT_READ_GTID", + 0x2CD7: "ER_GRP_RPL_PROCESS_GTID_SET_ERROR", + 0x2CD8: "ER_GRP_RPL_PROCESS_INTERSECTION_GTID_SET_ERROR", + 0x2CD9: "ER_GRP_RPL_SET_STABLE_TRANS_ERROR", + 0x2CDA: "ER_GRP_RPL_CANT_READ_GRP_GTID_EXTRACTED", + 0x2CDB: "ER_GRP_RPL_CANT_READ_WRITE_SET_ITEM", + 0x2CDC: "ER_GRP_RPL_INIT_CERTIFICATION_INFO_FAILURE", + 0x2CDD: "ER_GRP_RPL_CONFLICT_DETECTION_DISABLED", + 0x2CDE: "ER_GRP_RPL_MSG_DISCARDED", + 0x2CDF: "ER_GRP_RPL_MISSING_GRP_RPL_APPLIER", + 0x2CE0: "ER_GRP_RPL_CERTIFIER_MSSG_PROCESS_ERROR", + 0x2CE1: "ER_GRP_RPL_SRV_NOT_ONLINE", + 0x2CE2: "ER_GRP_RPL_SRV_ONLINE", + 0x2CE3: "ER_GRP_RPL_DISABLE_SRV_READ_MODE_RESTRICTED", + 0x2CE4: "ER_GRP_RPL_MEM_ONLINE", + 0x2CE5: "ER_GRP_RPL_MEM_UNREACHABLE", + 0x2CE6: "ER_GRP_RPL_MEM_REACHABLE", + 0x2CE7: "ER_GRP_RPL_SRV_BLOCKED", + 0x2CE8: "ER_GRP_RPL_SRV_BLOCKED_FOR_SECS", + 0x2CE9: "ER_GRP_RPL_CHANGE_GRP_MEM_NOT_PROCESSED", + 0x2CEA: "ER_GRP_RPL_MEMBER_CONTACT_RESTORED", + 0x2CEB: "ER_GRP_RPL_MEMBER_REMOVED", + 0x2CEC: "ER_GRP_RPL_PRIMARY_MEMBER_LEFT_GRP", + 0x2CED: "ER_GRP_RPL_MEMBER_ADDED", + 0x2CEE: "ER_GRP_RPL_MEMBER_EXIT_PLUGIN_ERROR", + 0x2CEF: "ER_GRP_RPL_MEMBER_CHANGE", + 0x2CF0: "ER_GRP_RPL_MEMBER_LEFT_GRP", + 0x2CF1: "ER_GRP_RPL_MEMBER_EXPELLED", + 0x2CF2: "ER_GRP_RPL_SESSION_OPEN_FAILED", + 0x2CF3: "ER_GRP_RPL_NEW_PRIMARY_ELECTED", + 0x2CF4: "ER_GRP_RPL_DISABLE_READ_ONLY_FAILED", + 0x2CF5: "ER_GRP_RPL_ENABLE_READ_ONLY_FAILED", + 0x2CF6: "ER_GRP_RPL_SRV_PRIMARY_MEM", + 0x2CF7: "ER_GRP_RPL_SRV_SECONDARY_MEM", + 0x2CF8: "ER_GRP_RPL_NO_SUITABLE_PRIMARY_MEM", + 0x2CF9: "ER_GRP_RPL_SUPER_READ_ONLY_ACTIVATE_ERROR", + 0x2CFA: "ER_GRP_RPL_EXCEEDS_AUTO_INC_VALUE", + 0x2CFB: "ER_GRP_RPL_DATA_NOT_PROVIDED_BY_MEM", + 0x2CFC: "ER_GRP_RPL_MEMBER_ALREADY_EXISTS", + 0x2CFD: "ER_GRP_RPL_GRP_CHANGE_INFO_EXTRACT_ERROR", + 0x2CFE: "ER_GRP_RPL_GTID_EXECUTED_EXTRACT_ERROR", + 0x2CFF: "ER_GRP_RPL_GTID_SET_EXTRACT_ERROR", + 0x2D00: "ER_GRP_RPL_START_FAILED", + 0x2D01: "ER_GRP_RPL_MEMBER_VER_INCOMPATIBLE", + 0x2D02: "ER_GRP_RPL_TRANS_NOT_PRESENT_IN_GRP", + 0x2D03: "ER_GRP_RPL_TRANS_GREATER_THAN_GRP", + 0x2D04: "ER_GRP_RPL_MEMBER_VERSION_LOWER_THAN_GRP", + 0x2D05: "ER_GRP_RPL_LOCAL_GTID_SETS_PROCESS_ERROR", + 0x2D06: "ER_GRP_RPL_MEMBER_TRANS_GREATER_THAN_GRP", + 0x2D07: "ER_GRP_RPL_BLOCK_SIZE_DIFF_FROM_GRP", + 0x2D08: "ER_GRP_RPL_TRANS_WRITE_SET_EXTRACT_DIFF_FROM_GRP", + 0x2D09: "ER_GRP_RPL_MEMBER_CFG_INCOMPATIBLE_WITH_GRP_CFG", + 0x2D0A: "ER_GRP_RPL_MEMBER_STOP_RPL_CHANNELS_ERROR", + 0x2D0B: "ER_GRP_RPL_PURGE_APPLIER_LOGS", + 0x2D0C: "ER_GRP_RPL_RESET_APPLIER_MODULE_LOGS_ERROR", + 0x2D0D: "ER_GRP_RPL_APPLIER_THD_SETUP_ERROR", + 0x2D0E: "ER_GRP_RPL_APPLIER_THD_START_ERROR", + 0x2D0F: "ER_GRP_RPL_APPLIER_THD_STOP_ERROR", + 0x2D10: "ER_GRP_RPL_FETCH_TRANS_DATA_FAILED", + 0x2D11: "ER_GRP_RPL_SLAVE_IO_THD_PRIMARY_UNKNOWN", + 0x2D12: "ER_GRP_RPL_SALVE_IO_THD_ON_SECONDARY_MEMBER", + 0x2D13: "ER_GRP_RPL_SLAVE_SQL_THD_PRIMARY_UNKNOWN", + 0x2D14: "ER_GRP_RPL_SLAVE_SQL_THD_ON_SECONDARY_MEMBER", + 0x2D15: "ER_GRP_RPL_NEEDS_INNODB_TABLE", + 0x2D16: "ER_GRP_RPL_PRIMARY_KEY_NOT_DEFINED", + 0x2D17: "ER_GRP_RPL_FK_WITH_CASCADE_UNSUPPORTED", + 0x2D18: "ER_GRP_RPL_AUTO_INC_RESET", + 0x2D19: "ER_GRP_RPL_AUTO_INC_OFFSET_RESET", + 0x2D1A: "ER_GRP_RPL_AUTO_INC_SET", + 0x2D1B: "ER_GRP_RPL_AUTO_INC_OFFSET_SET", + 0x2D1C: "ER_GRP_RPL_FETCH_TRANS_CONTEXT_FAILED", + 0x2D1D: "ER_GRP_RPL_FETCH_FORMAT_DESC_LOG_EVENT_FAILED", + 0x2D1E: "ER_GRP_RPL_FETCH_TRANS_CONTEXT_LOG_EVENT_FAILED", + 0x2D1F: "ER_GRP_RPL_FETCH_SNAPSHOT_VERSION_FAILED", + 0x2D20: "ER_GRP_RPL_FETCH_GTID_LOG_EVENT_FAILED", + 0x2D21: "ER_GRP_RPL_UPDATE_SERV_CERTIFICATE_FAILED", + 0x2D22: "ER_GRP_RPL_ADD_GTID_INFO_WITH_LOCAL_GTID_FAILED", + 0x2D23: "ER_GRP_RPL_ADD_GTID_INFO_WITHOUT_LOCAL_GTID_FAILED", + 0x2D24: "ER_GRP_RPL_NOTIFY_CERTIFICATION_OUTCOME_FAILED", + 0x2D25: "ER_GRP_RPL_ADD_GTID_INFO_WITH_REMOTE_GTID_FAILED", + 0x2D26: "ER_GRP_RPL_ADD_GTID_INFO_WITHOUT_REMOTE_GTID_FAILED", + 0x2D27: "ER_GRP_RPL_FETCH_VIEW_CHANGE_LOG_EVENT_FAILED", + 0x2D28: "ER_GRP_RPL_CONTACT_WITH_SRV_FAILED", + 0x2D29: "ER_GRP_RPL_SRV_WAIT_TIME_OUT", + 0x2D2A: "ER_GRP_RPL_FETCH_LOG_EVENT_FAILED", + 0x2D2B: "ER_GRP_RPL_START_GRP_RPL_FAILED", + 0x2D2C: "ER_GRP_RPL_CONN_INTERNAL_PLUGIN_FAIL", + 0x2D2D: "ER_GRP_RPL_SUPER_READ_ON", + 0x2D2E: "ER_GRP_RPL_SUPER_READ_OFF", + 0x2D2F: "ER_GRP_RPL_KILLED_SESSION_ID", + 0x2D30: "ER_GRP_RPL_KILLED_FAILED_ID", + 0x2D31: "ER_GRP_RPL_INTERNAL_QUERY", + 0x2D32: "ER_GRP_RPL_COPY_FROM_EMPTY_STRING", + 0x2D33: "ER_GRP_RPL_QUERY_FAIL", + 0x2D34: "ER_GRP_RPL_CREATE_SESSION_UNABLE", + 0x2D35: "ER_GRP_RPL_MEMBER_NOT_FOUND", + 0x2D36: "ER_GRP_RPL_MAXIMUM_CONNECTION_RETRIES_REACHED", + 0x2D37: "ER_GRP_RPL_ALL_DONORS_LEFT_ABORT_RECOVERY", + 0x2D38: "ER_GRP_RPL_ESTABLISH_RECOVERY_WITH_DONOR", + 0x2D39: "ER_GRP_RPL_ESTABLISH_RECOVERY_WITH_ANOTHER_DONOR", + 0x2D3A: "ER_GRP_RPL_NO_VALID_DONOR", + 0x2D3B: "ER_GRP_RPL_CONFIG_RECOVERY", + 0x2D3C: "ER_GRP_RPL_ESTABLISHING_CONN_GRP_REC_DONOR", + 0x2D3D: "ER_GRP_RPL_CREATE_GRP_RPL_REC_CHANNEL", + 0x2D3E: "ER_GRP_RPL_DONOR_SERVER_CONN", + 0x2D3F: "ER_GRP_RPL_CHECK_STATUS_TABLE", + 0x2D40: "ER_GRP_RPL_STARTING_GRP_REC", + 0x2D41: "ER_GRP_RPL_DONOR_CONN_TERMINATION", + 0x2D42: "ER_GRP_RPL_STOPPING_GRP_REC", + 0x2D43: "ER_GRP_RPL_PURGE_REC", + 0x2D44: "ER_GRP_RPL_UNABLE_TO_KILL_CONN_REC_DONOR_APPLIER", + 0x2D45: "ER_GRP_RPL_UNABLE_TO_KILL_CONN_REC_DONOR_FAILOVER", + 0x2D46: "ER_GRP_RPL_FAILED_TO_NOTIFY_GRP_MEMBERSHIP_EVENT", + 0x2D47: "ER_GRP_RPL_FAILED_TO_BROADCAST_GRP_MEMBERSHIP_NOTIFICATION", + 0x2D48: "ER_GRP_RPL_FAILED_TO_BROADCAST_MEMBER_STATUS_NOTIFICATION", + 0x2D49: "ER_GRP_RPL_OOM_FAILED_TO_GENERATE_IDENTIFICATION_HASH", + 0x2D4A: "ER_GRP_RPL_WRITE_IDENT_HASH_BASE64_ENCODING_FAILED", + 0x2D4B: "ER_GRP_RPL_INVALID_BINLOG_FORMAT", + 0x2D4C: "ER_GRP_RPL_BINLOG_CHECKSUM_SET", + 0x2D4D: "ER_GRP_RPL_TRANS_WRITE_SET_EXTRACTION_NOT_SET", + 0x2D4E: "ER_GRP_RPL_UNSUPPORTED_TRANS_ISOLATION", + 0x2D4F: "ER_GRP_RPL_CANNOT_EXECUTE_TRANS_WHILE_STOPPING", + 0x2D50: "ER_GRP_RPL_CANNOT_EXECUTE_TRANS_WHILE_RECOVERING", + 0x2D51: "ER_GRP_RPL_CANNOT_EXECUTE_TRANS_IN_ERROR_STATE", + 0x2D52: "ER_GRP_RPL_CANNOT_EXECUTE_TRANS_IN_OFFLINE_MODE", + 0x2D53: "ER_GRP_RPL_MULTIPLE_CACHE_TYPE_NOT_SUPPORTED_FOR_SESSION", + 0x2D54: "ER_GRP_RPL_FAILED_TO_REINIT_BINLOG_CACHE_FOR_READ", + 0x2D55: "ER_GRP_RPL_FAILED_TO_CREATE_TRANS_CONTEXT", + 0x2D56: "ER_GRP_RPL_FAILED_TO_EXTRACT_TRANS_WRITE_SET", + 0x2D57: "ER_GRP_RPL_FAILED_TO_GATHER_TRANS_WRITE_SET", + 0x2D58: "ER_GRP_RPL_TRANS_SIZE_EXCEEDS_LIMIT", + 0x2D59: "ER_GRP_RPL_REINIT_OF_INTERNAL_CACHE_FOR_READ_FAILED", + 0x2D5A: "ER_GRP_RPL_APPENDING_DATA_TO_INTERNAL_CACHE_FAILED", + 0x2D5B: "ER_GRP_RPL_WRITE_TO_BINLOG_CACHE_FAILED", + 0x2D5C: "ER_GRP_RPL_FAILED_TO_REGISTER_TRANS_OUTCOME_NOTIFICTION", + 0x2D5D: "ER_GRP_RPL_MSG_TOO_LONG_BROADCASTING_TRANS_FAILED", + 0x2D5E: "ER_GRP_RPL_BROADCASTING_TRANS_TO_GRP_FAILED", + 0x2D5F: "ER_GRP_RPL_ERROR_WHILE_WAITING_FOR_CONFLICT_DETECTION", + 0x2D60: "ER_GRP_RPL_REINIT_OF_INTERNAL_CACHE_FOR_WRITE_FAILED", + 0x2D61: "ER_GRP_RPL_FAILED_TO_CREATE_COMMIT_CACHE", + 0x2D62: "ER_GRP_RPL_REINIT_OF_COMMIT_CACHE_FOR_WRITE_FAILED", + 0x2D63: "ER_GRP_RPL_PREV_REC_SESSION_RUNNING", + 0x2D64: "ER_GRP_RPL_FATAL_REC_PROCESS", + 0x2D65: "ER_GRP_RPL_WHILE_STOPPING_REP_CHANNEL", + 0x2D66: "ER_GRP_RPL_UNABLE_TO_EVALUATE_APPLIER_STATUS", + 0x2D67: "ER_GRP_RPL_ONLY_ONE_SERVER_ALIVE", + 0x2D68: "ER_GRP_RPL_CERTIFICATION_REC_PROCESS", + 0x2D69: "ER_GRP_RPL_UNABLE_TO_ENSURE_EXECUTION_REC", + 0x2D6A: "ER_GRP_RPL_WHILE_SENDING_MSG_REC", + 0x2D6B: "ER_GRP_RPL_READ_UNABLE_FOR_SUPER_READ_ONLY", + 0x2D6C: "ER_GRP_RPL_READ_UNABLE_FOR_READ_ONLY_SUPER_READ_ONLY", + 0x2D6D: "ER_GRP_RPL_UNABLE_TO_RESET_SERVER_READ_MODE", + 0x2D6E: "ER_GRP_RPL_UNABLE_TO_CERTIFY_PLUGIN_TRANS", + 0x2D6F: "ER_GRP_RPL_UNBLOCK_CERTIFIED_TRANS", + 0x2D70: "ER_GRP_RPL_SERVER_WORKING_AS_SECONDARY", + 0x2D71: "ER_GRP_RPL_FAILED_TO_START_WITH_INVALID_SERVER_ID", + 0x2D72: "ER_GRP_RPL_FORCE_MEMBERS_MUST_BE_EMPTY", + 0x2D73: "ER_GRP_RPL_PLUGIN_STRUCT_INIT_NOT_POSSIBLE_ON_SERVER_START", + 0x2D74: "ER_GRP_RPL_FAILED_TO_ENABLE_SUPER_READ_ONLY_MODE", + 0x2D75: "ER_GRP_RPL_FAILED_TO_INIT_COMMUNICATION_ENGINE", + 0x2D76: "ER_GRP_RPL_FAILED_TO_START_ON_SECONDARY_WITH_ASYNC_CHANNELS", + 0x2D77: "ER_GRP_RPL_FAILED_TO_START_COMMUNICATION_ENGINE", + 0x2D78: "ER_GRP_RPL_TIMEOUT_ON_VIEW_AFTER_JOINING_GRP", + 0x2D79: "ER_GRP_RPL_FAILED_TO_CALL_GRP_COMMUNICATION_INTERFACE", + 0x2D7A: "ER_GRP_RPL_MEMBER_SERVER_UUID_IS_INCOMPATIBLE_WITH_GRP", + 0x2D7B: "ER_GRP_RPL_MEMBER_CONF_INFO", + 0x2D7C: "ER_GRP_RPL_FAILED_TO_CONFIRM_IF_SERVER_LEFT_GRP", + 0x2D7D: "ER_GRP_RPL_SERVER_IS_ALREADY_LEAVING", + 0x2D7E: "ER_GRP_RPL_SERVER_ALREADY_LEFT", + 0x2D7F: "ER_GRP_RPL_WAITING_FOR_VIEW_UPDATE", + 0x2D80: "ER_GRP_RPL_TIMEOUT_RECEIVING_VIEW_CHANGE_ON_SHUTDOWN", + 0x2D81: "ER_GRP_RPL_REQUESTING_NON_MEMBER_SERVER_TO_LEAVE", + 0x2D82: "ER_GRP_RPL_IS_STOPPING", + 0x2D83: "ER_GRP_RPL_IS_STOPPED", + 0x2D84: "ER_GRP_RPL_FAILED_TO_ENABLE_READ_ONLY_MODE_ON_SHUTDOWN", + 0x2D85: "ER_GRP_RPL_RECOVERY_MODULE_TERMINATION_TIMED_OUT_ON_SHUTDOWN", + 0x2D86: "ER_GRP_RPL_APPLIER_TERMINATION_TIMED_OUT_ON_SHUTDOWN", + 0x2D87: "ER_GRP_RPL_FAILED_TO_SHUTDOWN_REGISTRY_MODULE", + 0x2D88: "ER_GRP_RPL_FAILED_TO_INIT_HANDLER", + 0x2D89: "ER_GRP_RPL_FAILED_TO_REGISTER_SERVER_STATE_OBSERVER", + 0x2D8A: "ER_GRP_RPL_FAILED_TO_REGISTER_TRANS_STATE_OBSERVER", + 0x2D8B: "ER_GRP_RPL_FAILED_TO_REGISTER_BINLOG_STATE_OBSERVER", + 0x2D8C: "ER_GRP_RPL_FAILED_TO_START_ON_BOOT", + 0x2D8D: "ER_GRP_RPL_FAILED_TO_STOP_ON_PLUGIN_UNINSTALL", + 0x2D8E: "ER_GRP_RPL_FAILED_TO_UNREGISTER_SERVER_STATE_OBSERVER", + 0x2D8F: "ER_GRP_RPL_FAILED_TO_UNREGISTER_TRANS_STATE_OBSERVER", + 0x2D90: "ER_GRP_RPL_FAILED_TO_UNREGISTER_BINLOG_STATE_OBSERVER", + 0x2D91: "ER_GRP_RPL_ALL_OBSERVERS_UNREGISTERED", + 0x2D92: "ER_GRP_RPL_FAILED_TO_PARSE_THE_GRP_NAME", + 0x2D93: "ER_GRP_RPL_FAILED_TO_GENERATE_SIDNO_FOR_GRP", + 0x2D94: "ER_GRP_RPL_APPLIER_NOT_STARTED_DUE_TO_RUNNING_PREV_SHUTDOWN", + 0x2D95: "ER_GRP_RPL_FAILED_TO_INIT_APPLIER_MODULE", + 0x2D96: "ER_GRP_RPL_APPLIER_INITIALIZED", + 0x2D97: "ER_GRP_RPL_COMMUNICATION_SSL_CONF_INFO", + 0x2D98: "ER_GRP_RPL_ABORTS_AS_SSL_NOT_SUPPORTED_BY_MYSQLD", + 0x2D99: "ER_GRP_RPL_SSL_DISABLED", + 0x2D9A: "ER_GRP_RPL_UNABLE_TO_INIT_COMMUNICATION_ENGINE", + 0x2D9B: "ER_GRP_RPL_BINLOG_DISABLED", + 0x2D9C: "ER_GRP_RPL_GTID_MODE_OFF", + 0x2D9D: "ER_GRP_RPL_LOG_SLAVE_UPDATES_NOT_SET", + 0x2D9E: "ER_GRP_RPL_INVALID_TRANS_WRITE_SET_EXTRACTION_VALUE", + 0x2D9F: "ER_GRP_RPL_RELAY_LOG_INFO_REPO_MUST_BE_TABLE", + 0x2DA0: "ER_GRP_RPL_MASTER_INFO_REPO_MUST_BE_TABLE", + 0x2DA1: "ER_GRP_RPL_INCORRECT_TYPE_SET_FOR_PARALLEL_APPLIER", + 0x2DA2: "ER_GRP_RPL_SLAVE_PRESERVE_COMMIT_ORDER_NOT_SET", + 0x2DA3: "ER_GRP_RPL_SINGLE_PRIM_MODE_NOT_ALLOWED_WITH_UPDATE_EVERYWHERE", + 0x2DA4: "ER_GRP_RPL_MODULE_TERMINATE_ERROR", + 0x2DA5: "ER_GRP_RPL_GRP_NAME_OPTION_MANDATORY", + 0x2DA6: "ER_GRP_RPL_GRP_NAME_IS_TOO_LONG", + 0x2DA7: "ER_GRP_RPL_GRP_NAME_IS_NOT_VALID_UUID", + 0x2DA8: "ER_GRP_RPL_FLOW_CTRL_MIN_QUOTA_GREATER_THAN_MAX_QUOTA", + 0x2DA9: "ER_GRP_RPL_FLOW_CTRL_MIN_RECOVERY_QUOTA_GREATER_THAN_MAX_QUOTA", + 0x2DAA: "ER_GRP_RPL_FLOW_CTRL_MAX_QUOTA_SMALLER_THAN_MIN_QUOTAS", + 0x2DAB: "ER_GRP_RPL_INVALID_SSL_RECOVERY_STRING", + 0x2DAC: "ER_GRP_RPL_SUPPORTS_ONLY_ONE_FORCE_MEMBERS_SET", + 0x2DAD: "ER_GRP_RPL_FORCE_MEMBERS_SET_UPDATE_NOT_ALLOWED", + 0x2DAE: "ER_GRP_RPL_GRP_COMMUNICATION_INIT_WITH_CONF", + 0x2DAF: "ER_GRP_RPL_UNKNOWN_GRP_RPL_APPLIER_PIPELINE_REQUESTED", + 0x2DB0: "ER_GRP_RPL_FAILED_TO_BOOTSTRAP_EVENT_HANDLING_INFRASTRUCTURE", + 0x2DB1: "ER_GRP_RPL_APPLIER_HANDLER_NOT_INITIALIZED", + 0x2DB2: "ER_GRP_RPL_APPLIER_HANDLER_IS_IN_USE", + 0x2DB3: "ER_GRP_RPL_APPLIER_HANDLER_ROLE_IS_IN_USE", + 0x2DB4: "ER_GRP_RPL_FAILED_TO_INIT_APPLIER_HANDLER", + 0x2DB5: "ER_GRP_RPL_SQL_SERVICE_FAILED_TO_INIT_SESSION_THREAD", + 0x2DB6: "ER_GRP_RPL_SQL_SERVICE_COMM_SESSION_NOT_INITIALIZED", + 0x2DB7: "ER_GRP_RPL_SQL_SERVICE_SERVER_SESSION_KILLED", + 0x2DB8: "ER_GRP_RPL_SQL_SERVICE_FAILED_TO_RUN_SQL_QUERY", + 0x2DB9: "ER_GRP_RPL_SQL_SERVICE_SERVER_INTERNAL_FAILURE", + 0x2DBA: "ER_GRP_RPL_SQL_SERVICE_RETRIES_EXCEEDED_ON_SESSION_STATE", + 0x2DBB: "ER_GRP_RPL_SQL_SERVICE_FAILED_TO_FETCH_SECURITY_CTX", + 0x2DBC: "ER_GRP_RPL_SQL_SERVICE_SERVER_ACCESS_DENIED_FOR_USER", + 0x2DBD: "ER_GRP_RPL_SQL_SERVICE_MAX_CONN_ERROR_FROM_SERVER", + 0x2DBE: "ER_GRP_RPL_SQL_SERVICE_SERVER_ERROR_ON_CONN", + 0x2DBF: "ER_GRP_RPL_UNREACHABLE_MAJORITY_TIMEOUT_FOR_MEMBER", + 0x2DC0: "ER_GRP_RPL_SERVER_SET_TO_READ_ONLY_DUE_TO_ERRORS", + 0x2DC1: "ER_GRP_RPL_GMS_LISTENER_FAILED_TO_LOG_NOTIFICATION", + 0x2DC2: "ER_GRP_RPL_GRP_COMMUNICATION_ENG_INIT_FAILED", + 0x2DC3: "ER_GRP_RPL_SET_GRP_COMMUNICATION_ENG_LOGGER_FAILED", + 0x2DC4: "ER_GRP_RPL_DEBUG_OPTIONS", + 0x2DC5: "ER_GRP_RPL_INVALID_DEBUG_OPTIONS", + 0x2DC6: "ER_GRP_RPL_EXIT_GRP_GCS_ERROR", + 0x2DC7: "ER_GRP_RPL_GRP_MEMBER_OFFLINE", + 0x2DC8: "ER_GRP_RPL_GCS_INTERFACE_ERROR", + 0x2DC9: "ER_GRP_RPL_FORCE_MEMBER_VALUE_SET_ERROR", + 0x2DCA: "ER_GRP_RPL_FORCE_MEMBER_VALUE_SET", + 0x2DCB: "ER_GRP_RPL_FORCE_MEMBER_VALUE_TIME_OUT", + 0x2DCC: "ER_GRP_RPL_BROADCAST_COMMIT_MSSG_TOO_BIG", + 0x2DCD: "ER_GRP_RPL_SEND_STATS_ERROR", + 0x2DCE: "ER_GRP_RPL_MEMBER_STATS_INFO", + 0x2DCF: "ER_GRP_RPL_FLOW_CONTROL_STATS", + 0x2DD0: "ER_GRP_RPL_UNABLE_TO_CONVERT_PACKET_TO_EVENT", + 0x2DD1: "ER_GRP_RPL_PIPELINE_CREATE_FAILED", + 0x2DD2: "ER_GRP_RPL_PIPELINE_REINIT_FAILED_WRITE", + 0x2DD3: "ER_GRP_RPL_UNABLE_TO_CONVERT_EVENT_TO_PACKET", + 0x2DD4: "ER_GRP_RPL_PIPELINE_FLUSH_FAIL", + 0x2DD5: "ER_GRP_RPL_PIPELINE_REINIT_FAILED_READ", + 0x2DD6: "ER_GRP_RPL_STOP_REP_CHANNEL", + 0x2DD7: "ER_GRP_RPL_GCS_GR_ERROR_MSG", + 0x2DD8: "ER_GRP_RPL_SLAVE_IO_THREAD_UNBLOCKED", + 0x2DD9: "ER_GRP_RPL_SLAVE_IO_THREAD_ERROR_OUT", + 0x2DDA: "ER_GRP_RPL_SLAVE_APPLIER_THREAD_UNBLOCKED", + 0x2DDB: "ER_GRP_RPL_SLAVE_APPLIER_THREAD_ERROR_OUT", + 0x2DDC: "ER_LDAP_AUTH_FAILED_TO_CREATE_OR_GET_CONNECTION", + 0x2DDD: "ER_LDAP_AUTH_DEINIT_FAILED", + 0x2DDE: "ER_LDAP_AUTH_SKIPPING_USER_GROUP_SEARCH", + 0x2DDF: "ER_LDAP_AUTH_POOL_DISABLE_MAX_SIZE_ZERO", + 0x2DE0: "ER_LDAP_AUTH_FAILED_TO_CREATE_LDAP_OBJECT_CREATOR", + 0x2DE1: "ER_LDAP_AUTH_FAILED_TO_CREATE_LDAP_OBJECT", + 0x2DE2: "ER_LDAP_AUTH_TLS_CONF", + 0x2DE3: "ER_LDAP_AUTH_TLS_CONNECTION", + 0x2DE4: "ER_LDAP_AUTH_CONN_POOL_NOT_CREATED", + 0x2DE5: "ER_LDAP_AUTH_CONN_POOL_INITIALIZING", + 0x2DE6: "ER_LDAP_AUTH_CONN_POOL_DEINITIALIZING", + 0x2DE7: "ER_LDAP_AUTH_ZERO_MAX_POOL_SIZE_UNCHANGED", + 0x2DE8: "ER_LDAP_AUTH_POOL_REINITIALIZING", + 0x2DE9: "ER_LDAP_AUTH_FAILED_TO_WRITE_PACKET", + 0x2DEA: "ER_LDAP_AUTH_SETTING_USERNAME", + 0x2DEB: "ER_LDAP_AUTH_USER_AUTH_DATA", + 0x2DEC: "ER_LDAP_AUTH_INFO_FOR_USER", + 0x2DED: "ER_LDAP_AUTH_USER_GROUP_SEARCH_INFO", + 0x2DEE: "ER_LDAP_AUTH_GRP_SEARCH_SPECIAL_HDL", + 0x2DEF: "ER_LDAP_AUTH_GRP_IS_FULL_DN", + 0x2DF0: "ER_LDAP_AUTH_USER_NOT_FOUND_IN_ANY_GRP", + 0x2DF1: "ER_LDAP_AUTH_USER_FOUND_IN_MANY_GRPS", + 0x2DF2: "ER_LDAP_AUTH_USER_HAS_MULTIPLE_GRP_NAMES", + 0x2DF3: "ER_LDAP_AUTH_SEARCHED_USER_GRP_NAME", + 0x2DF4: "ER_LDAP_AUTH_OBJECT_CREATE_TIMESTAMP", + 0x2DF5: "ER_LDAP_AUTH_CERTIFICATE_NAME", + 0x2DF6: "ER_LDAP_AUTH_FAILED_TO_POOL_DEINIT", + 0x2DF7: "ER_LDAP_AUTH_FAILED_TO_INITIALIZE_POOL_IN_RECONSTRUCTING", + 0x2DF8: "ER_LDAP_AUTH_FAILED_TO_INITIALIZE_POOL_IN_INIT_STATE", + 0x2DF9: "ER_LDAP_AUTH_FAILED_TO_INITIALIZE_POOL_IN_DEINIT_STATE", + 0x2DFA: "ER_LDAP_AUTH_FAILED_TO_DEINITIALIZE_POOL_IN_RECONSTRUCT_STATE", + 0x2DFB: "ER_LDAP_AUTH_FAILED_TO_DEINITIALIZE_NOT_READY_POOL", + 0x2DFC: "ER_LDAP_AUTH_FAILED_TO_GET_CONNECTION_AS_PLUGIN_NOT_READY", + 0x2DFD: "ER_LDAP_AUTH_CONNECTION_POOL_INIT_FAILED", + 0x2DFE: "ER_LDAP_AUTH_MAX_ALLOWED_CONNECTION_LIMIT_HIT", + 0x2DFF: "ER_LDAP_AUTH_MAX_POOL_SIZE_SET_FAILED", + 0x2E00: "ER_LDAP_AUTH_PLUGIN_FAILED_TO_READ_PACKET", + 0x2E01: "ER_LDAP_AUTH_CREATING_LDAP_CONNECTION", + 0x2E02: "ER_LDAP_AUTH_GETTING_CONNECTION_FROM_POOL", + 0x2E03: "ER_LDAP_AUTH_RETURNING_CONNECTION_TO_POOL", + 0x2E04: "ER_LDAP_AUTH_SEARCH_USER_GROUP_ATTR_NOT_FOUND", + 0x2E05: "ER_LDAP_AUTH_LDAP_INFO_NULL", + 0x2E06: "ER_LDAP_AUTH_FREEING_CONNECTION", + 0x2E07: "ER_LDAP_AUTH_CONNECTION_PUSHED_TO_POOL", + 0x2E08: "ER_LDAP_AUTH_CONNECTION_CREATOR_ENTER", + 0x2E09: "ER_LDAP_AUTH_STARTING_TLS", + 0x2E0A: "ER_LDAP_AUTH_CONNECTION_GET_LDAP_INFO_NULL", + 0x2E0B: "ER_LDAP_AUTH_DELETING_CONNECTION_KEY", + 0x2E0C: "ER_LDAP_AUTH_POOLED_CONNECTION_KEY", + 0x2E0D: "ER_LDAP_AUTH_CREATE_CONNECTION_KEY", + 0x2E0E: "ER_LDAP_AUTH_COMMUNICATION_HOST_INFO", + 0x2E0F: "ER_LDAP_AUTH_METHOD_TO_CLIENT", + 0x2E10: "ER_LDAP_AUTH_SASL_REQUEST_FROM_CLIENT", + 0x2E11: "ER_LDAP_AUTH_SASL_PROCESS_SASL", + 0x2E12: "ER_LDAP_AUTH_SASL_BIND_SUCCESS_INFO", + 0x2E13: "ER_LDAP_AUTH_STARTED_FOR_USER", + 0x2E14: "ER_LDAP_AUTH_DISTINGUISHED_NAME", + 0x2E15: "ER_LDAP_AUTH_INIT_FAILED", + 0x2E16: "ER_LDAP_AUTH_OR_GROUP_RETRIEVAL_FAILED", + 0x2E17: "ER_LDAP_AUTH_USER_GROUP_SEARCH_FAILED", + 0x2E18: "ER_LDAP_AUTH_USER_BIND_FAILED", + 0x2E19: "ER_LDAP_AUTH_POOL_GET_FAILED_TO_CREATE_CONNECTION", + 0x2E1A: "ER_LDAP_AUTH_FAILED_TO_CREATE_LDAP_CONNECTION", + 0x2E1B: "ER_LDAP_AUTH_FAILED_TO_ESTABLISH_TLS_CONNECTION", + 0x2E1C: "ER_LDAP_AUTH_FAILED_TO_SEARCH_DN", + 0x2E1D: "ER_LDAP_AUTH_CONNECTION_POOL_REINIT_ENTER", + 0x2E1E: "ER_SYSTEMD_NOTIFY_PATH_TOO_LONG", + 0x2E1F: "ER_SYSTEMD_NOTIFY_CONNECT_FAILED", + 0x2E20: "ER_SYSTEMD_NOTIFY_WRITE_FAILED", + 0x2E21: "ER_FOUND_MISSING_GTIDS", + 0x2E22: "ER_PID_FILE_PRIV_DIRECTORY_INSECURE", + 0x2E23: "ER_CANT_CHECK_PID_PATH", + 0x2E24: "ER_VALIDATE_PWD_STATUS_VAR_REGISTRATION_FAILED", + 0x2E25: "ER_VALIDATE_PWD_STATUS_VAR_UNREGISTRATION_FAILED", + 0x2E26: "ER_VALIDATE_PWD_DICT_FILE_OPEN_FAILED", + 0x2E27: "ER_VALIDATE_PWD_COULD_BE_NULL", + 0x2E28: "ER_VALIDATE_PWD_STRING_CONV_TO_LOWERCASE_FAILED", + 0x2E29: "ER_VALIDATE_PWD_STRING_CONV_TO_BUFFER_FAILED", + 0x2E2A: "ER_VALIDATE_PWD_STRING_HANDLER_MEM_ALLOCATION_FAILED", + 0x2E2B: "ER_VALIDATE_PWD_STRONG_POLICY_DICT_FILE_UNSPECIFIED", + 0x2E2C: "ER_VALIDATE_PWD_CONVERT_TO_BUFFER_FAILED", + 0x2E2D: "ER_VALIDATE_PWD_VARIABLE_REGISTRATION_FAILED", + 0x2E2E: "ER_VALIDATE_PWD_VARIABLE_UNREGISTRATION_FAILED", + 0x2E2F: "ER_KEYRING_MIGRATION_EXTRA_OPTIONS", + 0x2E31: "ER_IB_MSG_0", + 0x2E32: "ER_IB_MSG_1", + 0x2E33: "ER_IB_MSG_2", + 0x2E34: "ER_IB_MSG_3", + 0x2E35: "ER_IB_MSG_4", + 0x2E36: "ER_IB_MSG_5", + 0x2E37: "ER_IB_MSG_6", + 0x2E38: "ER_IB_MSG_7", + 0x2E39: "ER_IB_MSG_8", + 0x2E3A: "ER_IB_MSG_9", + 0x2E3B: "ER_IB_MSG_10", + 0x2E3C: "ER_IB_MSG_11", + 0x2E3D: "ER_IB_MSG_12", + 0x2E3E: "ER_IB_MSG_13", + 0x2E3F: "ER_IB_MSG_14", + 0x2E40: "ER_IB_MSG_15", + 0x2E41: "ER_IB_MSG_16", + 0x2E42: "ER_IB_MSG_17", + 0x2E43: "ER_IB_MSG_18", + 0x2E44: "ER_IB_MSG_19", + 0x2E45: "ER_IB_MSG_20", + 0x2E46: "ER_IB_MSG_21", + 0x2E47: "ER_IB_MSG_22", + 0x2E48: "ER_IB_MSG_23", + 0x2E49: "ER_IB_MSG_24", + 0x2E4A: "ER_IB_MSG_25", + 0x2E4B: "ER_IB_MSG_26", + 0x2E4C: "ER_IB_MSG_27", + 0x2E4D: "ER_IB_MSG_28", + 0x2E4E: "ER_IB_MSG_29", + 0x2E4F: "ER_IB_MSG_30", + 0x2E50: "ER_IB_MSG_31", + 0x2E51: "ER_IB_MSG_32", + 0x2E52: "ER_IB_MSG_33", + 0x2E53: "ER_IB_MSG_34", + 0x2E54: "ER_IB_MSG_35", + 0x2E55: "ER_IB_MSG_36", + 0x2E56: "ER_IB_MSG_37", + 0x2E57: "ER_IB_MSG_38", + 0x2E58: "ER_IB_MSG_39", + 0x2E59: "ER_IB_MSG_40", + 0x2E5A: "ER_IB_MSG_41", + 0x2E5B: "ER_IB_MSG_42", + 0x2E5C: "ER_IB_MSG_43", + 0x2E5D: "ER_IB_MSG_44", + 0x2E5E: "ER_IB_MSG_45", + 0x2E5F: "ER_IB_MSG_46", + 0x2E60: "ER_IB_MSG_47", + 0x2E61: "ER_IB_MSG_48", + 0x2E62: "ER_IB_MSG_49", + 0x2E63: "ER_IB_MSG_50", + 0x2E64: "ER_IB_MSG_51", + 0x2E65: "ER_IB_MSG_52", + 0x2E66: "ER_IB_MSG_53", + 0x2E67: "ER_IB_MSG_54", + 0x2E68: "ER_IB_MSG_55", + 0x2E69: "ER_IB_MSG_56", + 0x2E6A: "ER_IB_MSG_57", + 0x2E6B: "ER_IB_MSG_58", + 0x2E6C: "ER_IB_MSG_59", + 0x2E6D: "ER_IB_MSG_60", + 0x2E6E: "ER_IB_MSG_61", + 0x2E6F: "ER_IB_MSG_62", + 0x2E70: "ER_IB_MSG_63", + 0x2E71: "ER_IB_MSG_64", + 0x2E72: "ER_IB_MSG_65", + 0x2E73: "ER_IB_MSG_66", + 0x2E74: "ER_IB_MSG_67", + 0x2E75: "ER_IB_MSG_68", + 0x2E76: "ER_IB_MSG_69", + 0x2E77: "ER_IB_MSG_70", + 0x2E78: "ER_IB_MSG_71", + 0x2E79: "ER_IB_MSG_72", + 0x2E7A: "ER_IB_MSG_73", + 0x2E7B: "ER_IB_MSG_74", + 0x2E7C: "ER_IB_MSG_75", + 0x2E7D: "ER_IB_MSG_76", + 0x2E7E: "ER_IB_MSG_77", + 0x2E7F: "ER_IB_MSG_78", + 0x2E80: "ER_IB_MSG_79", + 0x2E81: "ER_IB_MSG_80", + 0x2E82: "ER_IB_MSG_81", + 0x2E83: "ER_IB_MSG_82", + 0x2E84: "ER_IB_MSG_83", + 0x2E85: "ER_IB_MSG_84", + 0x2E86: "ER_IB_MSG_85", + 0x2E87: "ER_IB_MSG_86", + 0x2E88: "ER_IB_MSG_87", + 0x2E89: "ER_IB_MSG_88", + 0x2E8A: "ER_IB_MSG_89", + 0x2E8B: "ER_IB_MSG_90", + 0x2E8C: "ER_IB_MSG_91", + 0x2E8D: "ER_IB_MSG_92", + 0x2E8E: "ER_IB_MSG_93", + 0x2E8F: "ER_IB_MSG_94", + 0x2E90: "ER_IB_MSG_95", + 0x2E91: "ER_IB_MSG_96", + 0x2E92: "ER_IB_MSG_97", + 0x2E93: "ER_IB_MSG_98", + 0x2E94: "ER_IB_MSG_99", + 0x2E95: "ER_IB_MSG_100", + 0x2E96: "ER_IB_MSG_101", + 0x2E97: "ER_IB_MSG_102", + 0x2E98: "ER_IB_MSG_103", + 0x2E99: "ER_IB_MSG_104", + 0x2E9A: "ER_IB_MSG_105", + 0x2E9B: "ER_IB_MSG_106", + 0x2E9C: "ER_IB_MSG_107", + 0x2E9D: "ER_IB_MSG_108", + 0x2E9E: "ER_IB_MSG_109", + 0x2E9F: "ER_IB_MSG_110", + 0x2EA0: "ER_IB_MSG_111", + 0x2EA1: "ER_IB_MSG_112", + 0x2EA2: "ER_IB_MSG_113", + 0x2EA3: "ER_IB_MSG_114", + 0x2EA4: "ER_IB_MSG_115", + 0x2EA5: "ER_IB_MSG_116", + 0x2EA6: "ER_IB_MSG_117", + 0x2EA7: "ER_IB_MSG_118", + 0x2EA8: "ER_IB_MSG_119", + 0x2EA9: "ER_IB_MSG_120", + 0x2EAA: "ER_IB_MSG_121", + 0x2EAB: "ER_IB_MSG_122", + 0x2EAC: "ER_IB_MSG_123", + 0x2EAD: "ER_IB_MSG_124", + 0x2EAE: "ER_IB_MSG_125", + 0x2EAF: "ER_IB_MSG_126", + 0x2EB0: "ER_IB_MSG_127", + 0x2EB1: "ER_IB_MSG_128", + 0x2EB2: "ER_IB_MSG_129", + 0x2EB3: "ER_IB_MSG_130", + 0x2EB4: "ER_IB_MSG_131", + 0x2EB5: "ER_IB_MSG_132", + 0x2EB6: "ER_IB_MSG_133", + 0x2EB7: "ER_IB_MSG_134", + 0x2EB8: "ER_IB_MSG_135", + 0x2EB9: "ER_IB_MSG_136", + 0x2EBA: "ER_IB_MSG_137", + 0x2EBB: "ER_IB_MSG_138", + 0x2EBC: "ER_IB_MSG_139", + 0x2EBD: "ER_IB_MSG_140", + 0x2EBE: "ER_IB_MSG_141", + 0x2EBF: "ER_IB_MSG_142", + 0x2EC0: "ER_IB_MSG_143", + 0x2EC1: "ER_IB_MSG_144", + 0x2EC2: "ER_IB_MSG_145", + 0x2EC3: "ER_IB_MSG_146", + 0x2EC4: "ER_IB_MSG_147", + 0x2EC5: "ER_IB_MSG_148", + 0x2EC6: "ER_IB_MSG_149", + 0x2EC7: "ER_IB_MSG_150", + 0x2EC8: "ER_IB_MSG_151", + 0x2EC9: "ER_IB_MSG_152", + 0x2ECA: "ER_IB_MSG_153", + 0x2ECB: "ER_IB_MSG_154", + 0x2ECC: "ER_IB_MSG_155", + 0x2ECD: "ER_IB_MSG_156", + 0x2ECE: "ER_IB_MSG_157", + 0x2ECF: "ER_IB_MSG_158", + 0x2ED0: "ER_IB_MSG_159", + 0x2ED1: "ER_IB_MSG_160", + 0x2ED2: "ER_IB_MSG_161", + 0x2ED3: "ER_IB_MSG_162", + 0x2ED4: "ER_IB_MSG_163", + 0x2ED5: "ER_IB_MSG_164", + 0x2ED6: "ER_IB_MSG_165", + 0x2ED7: "ER_IB_MSG_166", + 0x2ED8: "ER_IB_MSG_167", + 0x2ED9: "ER_IB_MSG_168", + 0x2EDA: "ER_IB_MSG_169", + 0x2EDB: "ER_IB_MSG_170", + 0x2EDC: "ER_IB_MSG_171", + 0x2EDD: "ER_IB_MSG_172", + 0x2EDE: "ER_IB_MSG_173", + 0x2EDF: "ER_IB_MSG_174", + 0x2EE0: "ER_IB_MSG_175", + 0x2EE1: "ER_IB_MSG_176", + 0x2EE2: "ER_IB_MSG_177", + 0x2EE3: "ER_IB_MSG_178", + 0x2EE4: "ER_IB_MSG_179", + 0x2EE5: "ER_IB_MSG_180", + 0x2EE6: "ER_IB_MSG_181", + 0x2EE7: "ER_IB_MSG_182", + 0x2EE8: "ER_IB_MSG_183", + 0x2EE9: "ER_IB_MSG_184", + 0x2EEA: "ER_IB_MSG_185", + 0x2EEB: "ER_IB_MSG_186", + 0x2EEC: "ER_IB_MSG_187", + 0x2EED: "ER_IB_MSG_188", + 0x2EEE: "ER_IB_MSG_189", + 0x2EEF: "ER_IB_MSG_190", + 0x2EF0: "ER_IB_MSG_191", + 0x2EF1: "ER_IB_MSG_192", + 0x2EF2: "ER_IB_MSG_193", + 0x2EF3: "ER_IB_MSG_194", + 0x2EF4: "ER_IB_MSG_195", + 0x2EF5: "ER_IB_MSG_196", + 0x2EF6: "ER_IB_MSG_197", + 0x2EF7: "ER_IB_MSG_198", + 0x2EF8: "ER_IB_MSG_199", + 0x2EF9: "ER_IB_MSG_200", + 0x2EFA: "ER_IB_MSG_201", + 0x2EFB: "ER_IB_MSG_202", + 0x2EFC: "ER_IB_MSG_203", + 0x2EFD: "ER_IB_MSG_204", + 0x2EFE: "ER_IB_MSG_205", + 0x2EFF: "ER_IB_MSG_206", + 0x2F00: "ER_IB_MSG_207", + 0x2F01: "ER_IB_MSG_208", + 0x2F02: "ER_IB_MSG_209", + 0x2F03: "ER_IB_MSG_210", + 0x2F04: "ER_IB_MSG_211", + 0x2F05: "ER_IB_MSG_212", + 0x2F06: "ER_IB_MSG_213", + 0x2F07: "ER_IB_MSG_214", + 0x2F08: "ER_IB_MSG_215", + 0x2F09: "ER_IB_MSG_216", + 0x2F0A: "ER_IB_MSG_217", + 0x2F0B: "ER_IB_MSG_218", + 0x2F0C: "ER_IB_MSG_219", + 0x2F0D: "ER_IB_MSG_220", + 0x2F0E: "ER_IB_MSG_221", + 0x2F0F: "ER_IB_MSG_222", + 0x2F10: "ER_IB_MSG_223", + 0x2F11: "ER_IB_MSG_224", + 0x2F12: "ER_IB_MSG_225", + 0x2F13: "ER_IB_MSG_226", + 0x2F14: "ER_IB_MSG_227", + 0x2F15: "ER_IB_MSG_228", + 0x2F16: "ER_IB_MSG_229", + 0x2F17: "ER_IB_MSG_230", + 0x2F18: "ER_IB_MSG_231", + 0x2F19: "ER_IB_MSG_232", + 0x2F1A: "ER_IB_MSG_233", + 0x2F1B: "ER_IB_MSG_234", + 0x2F1C: "ER_IB_MSG_235", + 0x2F1D: "ER_IB_MSG_236", + 0x2F1E: "ER_IB_MSG_237", + 0x2F1F: "ER_IB_MSG_238", + 0x2F20: "ER_IB_MSG_239", + 0x2F21: "ER_IB_MSG_240", + 0x2F22: "ER_IB_MSG_241", + 0x2F23: "ER_IB_MSG_242", + 0x2F24: "ER_IB_MSG_243", + 0x2F25: "ER_IB_MSG_244", + 0x2F26: "ER_IB_MSG_245", + 0x2F27: "ER_IB_MSG_246", + 0x2F28: "ER_IB_MSG_247", + 0x2F29: "ER_IB_MSG_248", + 0x2F2A: "ER_IB_MSG_249", + 0x2F2B: "ER_IB_MSG_250", + 0x2F2C: "ER_IB_MSG_251", + 0x2F2D: "ER_IB_MSG_252", + 0x2F2E: "ER_IB_MSG_253", + 0x2F2F: "ER_IB_MSG_254", + 0x2F30: "ER_IB_MSG_255", + 0x2F31: "ER_IB_MSG_256", + 0x2F32: "ER_IB_MSG_257", + 0x2F33: "ER_IB_MSG_258", + 0x2F34: "ER_IB_MSG_259", + 0x2F35: "ER_IB_MSG_260", + 0x2F36: "ER_IB_MSG_261", + 0x2F37: "ER_IB_MSG_262", + 0x2F38: "ER_IB_MSG_263", + 0x2F39: "ER_IB_MSG_264", + 0x2F3A: "ER_IB_MSG_265", + 0x2F3B: "ER_IB_MSG_266", + 0x2F3C: "ER_IB_MSG_267", + 0x2F3D: "ER_IB_MSG_268", + 0x2F3E: "ER_IB_MSG_269", + 0x2F3F: "ER_IB_MSG_270", + 0x2F40: "ER_IB_MSG_271", + 0x2F41: "ER_IB_MSG_272", + 0x2F42: "ER_IB_MSG_273", + 0x2F43: "ER_IB_MSG_274", + 0x2F44: "ER_IB_MSG_275", + 0x2F45: "ER_IB_MSG_276", + 0x2F46: "ER_IB_MSG_277", + 0x2F47: "ER_IB_MSG_278", + 0x2F48: "ER_IB_MSG_279", + 0x2F49: "ER_IB_MSG_280", + 0x2F4A: "ER_IB_MSG_281", + 0x2F4B: "ER_IB_MSG_282", + 0x2F4C: "ER_IB_MSG_283", + 0x2F4D: "ER_IB_MSG_284", + 0x2F4E: "ER_IB_MSG_285", + 0x2F4F: "ER_IB_MSG_286", + 0x2F50: "ER_IB_MSG_287", + 0x2F51: "ER_IB_MSG_288", + 0x2F52: "ER_IB_MSG_289", + 0x2F53: "ER_IB_MSG_290", + 0x2F54: "ER_IB_MSG_291", + 0x2F55: "ER_IB_MSG_292", + 0x2F56: "ER_IB_MSG_293", + 0x2F57: "ER_IB_MSG_294", + 0x2F58: "ER_IB_MSG_295", + 0x2F59: "ER_IB_MSG_296", + 0x2F5A: "ER_IB_MSG_297", + 0x2F5B: "ER_IB_MSG_298", + 0x2F5C: "ER_IB_MSG_299", + 0x2F5D: "ER_IB_MSG_300", + 0x2F5E: "ER_IB_MSG_301", + 0x2F5F: "ER_IB_MSG_302", + 0x2F60: "ER_IB_MSG_303", + 0x2F61: "ER_IB_MSG_304", + 0x2F62: "ER_IB_MSG_305", + 0x2F63: "ER_IB_MSG_306", + 0x2F64: "ER_IB_MSG_307", + 0x2F65: "ER_IB_MSG_308", + 0x2F66: "ER_IB_MSG_309", + 0x2F67: "ER_IB_MSG_310", + 0x2F68: "ER_IB_MSG_311", + 0x2F69: "ER_IB_MSG_312", + 0x2F6A: "ER_IB_MSG_313", + 0x2F6B: "ER_IB_MSG_314", + 0x2F6C: "ER_IB_MSG_315", + 0x2F6D: "ER_IB_MSG_316", + 0x2F6E: "ER_IB_MSG_317", + 0x2F6F: "ER_IB_MSG_318", + 0x2F70: "ER_IB_MSG_319", + 0x2F71: "ER_IB_MSG_320", + 0x2F72: "ER_IB_MSG_321", + 0x2F73: "ER_IB_MSG_322", + 0x2F74: "ER_IB_MSG_323", + 0x2F75: "ER_IB_MSG_324", + 0x2F76: "ER_IB_MSG_325", + 0x2F77: "ER_IB_MSG_326", + 0x2F78: "ER_IB_MSG_327", + 0x2F79: "ER_IB_MSG_328", + 0x2F7A: "ER_IB_MSG_329", + 0x2F7B: "ER_IB_MSG_330", + 0x2F7C: "ER_IB_MSG_331", + 0x2F7D: "ER_IB_MSG_332", + 0x2F7E: "ER_IB_MSG_333", + 0x2F7F: "ER_IB_MSG_334", + 0x2F80: "ER_IB_MSG_335", + 0x2F81: "ER_IB_MSG_336", + 0x2F82: "ER_IB_MSG_337", + 0x2F83: "ER_IB_MSG_338", + 0x2F84: "ER_IB_MSG_339", + 0x2F85: "ER_IB_MSG_340", + 0x2F86: "ER_IB_MSG_341", + 0x2F87: "ER_IB_MSG_342", + 0x2F88: "ER_IB_MSG_343", + 0x2F89: "ER_IB_MSG_344", + 0x2F8A: "ER_IB_MSG_345", + 0x2F8B: "ER_IB_MSG_346", + 0x2F8C: "ER_IB_MSG_347", + 0x2F8D: "ER_IB_MSG_348", + 0x2F8E: "ER_IB_MSG_349", + 0x2F8F: "ER_IB_MSG_350", + 0x2F90: "ER_IB_MSG_351", + 0x2F91: "ER_IB_MSG_352", + 0x2F92: "ER_IB_MSG_353", + 0x2F93: "ER_IB_MSG_354", + 0x2F94: "ER_IB_MSG_355", + 0x2F95: "ER_IB_MSG_356", + 0x2F96: "ER_IB_MSG_357", + 0x2F97: "ER_IB_MSG_358", + 0x2F98: "ER_IB_MSG_359", + 0x2F99: "ER_IB_MSG_360", + 0x2F9A: "ER_IB_MSG_361", + 0x2F9B: "ER_IB_MSG_362", + 0x2F9C: "ER_IB_MSG_363", + 0x2F9D: "ER_IB_MSG_364", + 0x2F9E: "ER_IB_MSG_365", + 0x2F9F: "ER_IB_MSG_366", + 0x2FA0: "ER_IB_MSG_367", + 0x2FA1: "ER_IB_MSG_368", + 0x2FA2: "ER_IB_MSG_369", + 0x2FA3: "ER_IB_MSG_370", + 0x2FA4: "ER_IB_MSG_371", + 0x2FA5: "ER_IB_MSG_372", + 0x2FA6: "ER_IB_MSG_373", + 0x2FA7: "ER_IB_MSG_374", + 0x2FA8: "ER_IB_MSG_375", + 0x2FA9: "ER_IB_MSG_376", + 0x2FAA: "ER_IB_MSG_377", + 0x2FAB: "ER_IB_MSG_378", + 0x2FAC: "ER_IB_MSG_379", + 0x2FAD: "ER_IB_MSG_380", + 0x2FAE: "ER_IB_MSG_381", + 0x2FAF: "ER_IB_MSG_382", + 0x2FB0: "ER_IB_MSG_383", + 0x2FB1: "ER_IB_MSG_384", + 0x2FB2: "ER_IB_MSG_385", + 0x2FB3: "ER_IB_MSG_386", + 0x2FB4: "ER_IB_MSG_387", + 0x2FB5: "ER_IB_MSG_388", + 0x2FB6: "ER_IB_MSG_389", + 0x2FB7: "ER_IB_MSG_390", + 0x2FB8: "ER_IB_MSG_391", + 0x2FB9: "ER_IB_MSG_392", + 0x2FBA: "ER_IB_MSG_393", + 0x2FBB: "ER_IB_MSG_394", + 0x2FBC: "ER_IB_MSG_395", + 0x2FBD: "ER_IB_MSG_396", + 0x2FBE: "ER_IB_MSG_397", + 0x2FBF: "ER_IB_MSG_398", + 0x2FC0: "ER_IB_MSG_399", + 0x2FC1: "ER_IB_MSG_400", + 0x2FC2: "ER_IB_MSG_401", + 0x2FC3: "ER_IB_MSG_402", + 0x2FC4: "ER_IB_MSG_403", + 0x2FC5: "ER_IB_MSG_404", + 0x2FC6: "ER_IB_MSG_405", + 0x2FC7: "ER_IB_MSG_406", + 0x2FC8: "ER_IB_MSG_407", + 0x2FC9: "ER_IB_MSG_408", + 0x2FCA: "ER_IB_MSG_409", + 0x2FCB: "ER_IB_MSG_410", + 0x2FCC: "ER_IB_MSG_411", + 0x2FCD: "ER_IB_MSG_412", + 0x2FCE: "ER_IB_MSG_413", + 0x2FCF: "ER_IB_MSG_414", + 0x2FD0: "ER_IB_MSG_415", + 0x2FD1: "ER_IB_MSG_416", + 0x2FD2: "ER_IB_MSG_417", + 0x2FD3: "ER_IB_MSG_418", + 0x2FD4: "ER_IB_MSG_419", + 0x2FD5: "ER_IB_MSG_420", + 0x2FD6: "ER_IB_MSG_421", + 0x2FD7: "ER_IB_MSG_422", + 0x2FD8: "ER_IB_MSG_423", + 0x2FD9: "ER_IB_MSG_424", + 0x2FDA: "ER_IB_MSG_425", + 0x2FDB: "ER_IB_MSG_426", + 0x2FDC: "ER_IB_MSG_427", + 0x2FDD: "ER_IB_MSG_428", + 0x2FDE: "ER_IB_MSG_429", + 0x2FDF: "ER_IB_MSG_430", + 0x2FE0: "ER_IB_MSG_431", + 0x2FE1: "ER_IB_MSG_432", + 0x2FE2: "ER_IB_MSG_433", + 0x2FE3: "ER_IB_MSG_434", + 0x2FE4: "ER_IB_MSG_435", + 0x2FE5: "ER_IB_MSG_436", + 0x2FE6: "ER_IB_MSG_437", + 0x2FE7: "ER_IB_MSG_438", + 0x2FE8: "ER_IB_MSG_439", + 0x2FE9: "ER_IB_MSG_440", + 0x2FEA: "ER_IB_MSG_441", + 0x2FEB: "ER_IB_MSG_442", + 0x2FEC: "ER_IB_MSG_443", + 0x2FED: "ER_IB_MSG_444", + 0x2FEE: "ER_IB_MSG_445", + 0x2FEF: "ER_IB_MSG_446", + 0x2FF0: "ER_IB_MSG_447", + 0x2FF1: "ER_IB_MSG_448", + 0x2FF2: "ER_IB_MSG_449", + 0x2FF3: "ER_IB_MSG_450", + 0x2FF4: "ER_IB_MSG_451", + 0x2FF5: "ER_IB_MSG_452", + 0x2FF6: "ER_IB_MSG_453", + 0x2FF7: "ER_IB_MSG_454", + 0x2FF8: "ER_IB_MSG_455", + 0x2FF9: "ER_IB_MSG_456", + 0x2FFA: "ER_IB_MSG_457", + 0x2FFB: "ER_IB_MSG_458", + 0x2FFC: "ER_IB_MSG_459", + 0x2FFD: "ER_IB_MSG_460", + 0x2FFE: "ER_IB_MSG_461", + 0x2FFF: "ER_IB_MSG_462", 0x3000: "ER_IB_MSG_463", 0x3001: "ER_IB_MSG_464", 0x3002: "ER_IB_MSG_465", @@ -3646,12 +3646,12 @@ 0x3007: "ER_IB_MSG_470", 0x3008: "ER_IB_MSG_471", 0x3009: "ER_IB_MSG_472", - 0x300a: "ER_IB_MSG_473", - 0x300b: "ER_IB_MSG_474", - 0x300c: "ER_IB_MSG_475", - 0x300d: "ER_IB_MSG_476", - 0x300e: "ER_IB_MSG_477", - 0x300f: "ER_IB_MSG_478", + 0x300A: "ER_IB_MSG_473", + 0x300B: "ER_IB_MSG_474", + 0x300C: "ER_IB_MSG_475", + 0x300D: "ER_IB_MSG_476", + 0x300E: "ER_IB_MSG_477", + 0x300F: "ER_IB_MSG_478", 0x3010: "ER_IB_MSG_479", 0x3011: "ER_IB_MSG_480", 0x3012: "ER_IB_MSG_481", @@ -3662,12 +3662,12 @@ 0x3017: "ER_IB_MSG_486", 0x3018: "ER_IB_MSG_487", 0x3019: "ER_IB_MSG_488", - 0x301a: "ER_IB_MSG_489", - 0x301b: "ER_IB_MSG_490", - 0x301c: "ER_IB_MSG_491", - 0x301d: "ER_IB_MSG_492", - 0x301e: "ER_IB_MSG_493", - 0x301f: "ER_IB_MSG_494", + 0x301A: "ER_IB_MSG_489", + 0x301B: "ER_IB_MSG_490", + 0x301C: "ER_IB_MSG_491", + 0x301D: "ER_IB_MSG_492", + 0x301E: "ER_IB_MSG_493", + 0x301F: "ER_IB_MSG_494", 0x3020: "ER_IB_MSG_495", 0x3021: "ER_IB_MSG_496", 0x3022: "ER_IB_MSG_497", @@ -3678,12 +3678,12 @@ 0x3027: "ER_IB_MSG_502", 0x3028: "ER_IB_MSG_503", 0x3029: "ER_IB_MSG_504", - 0x302a: "ER_IB_MSG_505", - 0x302b: "ER_IB_MSG_506", - 0x302c: "ER_IB_MSG_507", - 0x302d: "ER_IB_MSG_508", - 0x302e: "ER_IB_MSG_509", - 0x302f: "ER_IB_MSG_510", + 0x302A: "ER_IB_MSG_505", + 0x302B: "ER_IB_MSG_506", + 0x302C: "ER_IB_MSG_507", + 0x302D: "ER_IB_MSG_508", + 0x302E: "ER_IB_MSG_509", + 0x302F: "ER_IB_MSG_510", 0x3030: "ER_IB_MSG_511", 0x3031: "ER_IB_MSG_512", 0x3032: "ER_IB_MSG_513", @@ -3694,12 +3694,12 @@ 0x3037: "ER_IB_MSG_518", 0x3038: "ER_IB_MSG_519", 0x3039: "ER_IB_MSG_520", - 0x303a: "ER_IB_MSG_521", - 0x303b: "ER_IB_MSG_522", - 0x303c: "ER_IB_MSG_523", - 0x303d: "ER_IB_MSG_524", - 0x303e: "ER_IB_MSG_525", - 0x303f: "ER_IB_MSG_526", + 0x303A: "ER_IB_MSG_521", + 0x303B: "ER_IB_MSG_522", + 0x303C: "ER_IB_MSG_523", + 0x303D: "ER_IB_MSG_524", + 0x303E: "ER_IB_MSG_525", + 0x303F: "ER_IB_MSG_526", 0x3040: "ER_IB_MSG_527", 0x3041: "ER_IB_MSG_528", 0x3042: "ER_IB_MSG_529", @@ -3710,12 +3710,12 @@ 0x3047: "ER_IB_MSG_534", 0x3048: "ER_IB_MSG_535", 0x3049: "ER_IB_MSG_536", - 0x304a: "ER_IB_MSG_537", - 0x304b: "ER_IB_MSG_538", - 0x304c: "ER_IB_MSG_539", - 0x304d: "ER_IB_MSG_540", - 0x304e: "ER_IB_MSG_541", - 0x304f: "ER_IB_MSG_542", + 0x304A: "ER_IB_MSG_537", + 0x304B: "ER_IB_MSG_538", + 0x304C: "ER_IB_MSG_539", + 0x304D: "ER_IB_MSG_540", + 0x304E: "ER_IB_MSG_541", + 0x304F: "ER_IB_MSG_542", 0x3050: "ER_IB_MSG_543", 0x3051: "ER_IB_MSG_544", 0x3052: "ER_IB_MSG_545", @@ -3726,12 +3726,12 @@ 0x3057: "ER_IB_MSG_550", 0x3058: "ER_IB_MSG_551", 0x3059: "ER_IB_MSG_552", - 0x305a: "ER_IB_MSG_553", - 0x305b: "ER_IB_MSG_554", - 0x305c: "ER_IB_MSG_555", - 0x305d: "ER_IB_MSG_556", - 0x305e: "ER_IB_MSG_557", - 0x305f: "ER_IB_MSG_558", + 0x305A: "ER_IB_MSG_553", + 0x305B: "ER_IB_MSG_554", + 0x305C: "ER_IB_MSG_555", + 0x305D: "ER_IB_MSG_556", + 0x305E: "ER_IB_MSG_557", + 0x305F: "ER_IB_MSG_558", 0x3060: "ER_IB_MSG_559", 0x3061: "ER_IB_MSG_560", 0x3062: "ER_IB_MSG_561", @@ -3742,12 +3742,12 @@ 0x3067: "ER_IB_MSG_566", 0x3068: "ER_IB_MSG_567", 0x3069: "ER_IB_MSG_568", - 0x306a: "ER_IB_MSG_569", - 0x306b: "ER_IB_MSG_570", - 0x306c: "ER_IB_MSG_571", - 0x306d: "ER_IB_MSG_572", - 0x306e: "ER_IB_MSG_573", - 0x306f: "ER_IB_MSG_574", + 0x306A: "ER_IB_MSG_569", + 0x306B: "ER_IB_MSG_570", + 0x306C: "ER_IB_MSG_571", + 0x306D: "ER_IB_MSG_572", + 0x306E: "ER_IB_MSG_573", + 0x306F: "ER_IB_MSG_574", 0x3070: "ER_IB_MSG_575", 0x3071: "ER_IB_MSG_576", 0x3072: "ER_IB_MSG_577", @@ -3758,12 +3758,12 @@ 0x3077: "ER_IB_MSG_582", 0x3078: "ER_IB_MSG_583", 0x3079: "ER_IB_MSG_584", - 0x307a: "ER_IB_MSG_585", - 0x307b: "ER_IB_MSG_586", - 0x307c: "ER_IB_MSG_587", - 0x307d: "ER_IB_MSG_588", - 0x307e: "ER_IB_MSG_589", - 0x307f: "ER_IB_MSG_590", + 0x307A: "ER_IB_MSG_585", + 0x307B: "ER_IB_MSG_586", + 0x307C: "ER_IB_MSG_587", + 0x307D: "ER_IB_MSG_588", + 0x307E: "ER_IB_MSG_589", + 0x307F: "ER_IB_MSG_590", 0x3080: "ER_IB_MSG_591", 0x3081: "ER_IB_MSG_592", 0x3082: "ER_IB_MSG_593", @@ -3774,12 +3774,12 @@ 0x3087: "ER_IB_MSG_598", 0x3088: "ER_IB_MSG_599", 0x3089: "ER_IB_MSG_600", - 0x308a: "ER_IB_MSG_601", - 0x308b: "ER_IB_MSG_602", - 0x308c: "ER_IB_MSG_603", - 0x308d: "ER_IB_MSG_604", - 0x308e: "ER_IB_MSG_605", - 0x308f: "ER_IB_MSG_606", + 0x308A: "ER_IB_MSG_601", + 0x308B: "ER_IB_MSG_602", + 0x308C: "ER_IB_MSG_603", + 0x308D: "ER_IB_MSG_604", + 0x308E: "ER_IB_MSG_605", + 0x308F: "ER_IB_MSG_606", 0x3090: "ER_IB_MSG_607", 0x3091: "ER_IB_MSG_608", 0x3092: "ER_IB_MSG_609", @@ -3790,108 +3790,108 @@ 0x3097: "ER_IB_MSG_614", 0x3098: "ER_IB_MSG_615", 0x3099: "ER_IB_MSG_616", - 0x309a: "ER_IB_MSG_617", - 0x309b: "ER_IB_MSG_618", - 0x309c: "ER_IB_MSG_619", - 0x309d: "ER_IB_MSG_620", - 0x309e: "ER_IB_MSG_621", - 0x309f: "ER_IB_MSG_622", - 0x30a0: "ER_IB_MSG_623", - 0x30a1: "ER_IB_MSG_624", - 0x30a2: "ER_IB_MSG_625", - 0x30a3: "ER_IB_MSG_626", - 0x30a4: "ER_IB_MSG_627", - 0x30a5: "ER_IB_MSG_628", - 0x30a6: "ER_IB_MSG_629", - 0x30a7: "ER_IB_MSG_630", - 0x30a8: "ER_IB_MSG_631", - 0x30a9: "ER_IB_MSG_632", - 0x30aa: "ER_IB_MSG_633", - 0x30ab: "ER_IB_MSG_634", - 0x30ac: "ER_IB_MSG_635", - 0x30ad: "ER_IB_MSG_636", - 0x30ae: "ER_IB_MSG_637", - 0x30af: "ER_IB_MSG_638", - 0x30b0: "ER_IB_MSG_639", - 0x30b1: "ER_IB_MSG_640", - 0x30b2: "ER_IB_MSG_641", - 0x30b3: "ER_IB_MSG_642", - 0x30b4: "ER_IB_MSG_643", - 0x30b5: "ER_IB_MSG_644", - 0x30b6: "ER_IB_MSG_645", - 0x30b7: "ER_IB_MSG_646", - 0x30b8: "ER_IB_MSG_647", - 0x30b9: "ER_IB_MSG_648", - 0x30ba: "ER_IB_MSG_649", - 0x30bb: "ER_IB_MSG_650", - 0x30bc: "ER_IB_MSG_651", - 0x30bd: "ER_IB_MSG_652", - 0x30be: "ER_IB_MSG_653", - 0x30bf: "ER_IB_MSG_654", - 0x30c0: "ER_IB_MSG_655", - 0x30c1: "ER_IB_MSG_656", - 0x30c2: "ER_IB_MSG_657", - 0x30c3: "ER_IB_MSG_658", - 0x30c4: "ER_IB_MSG_659", - 0x30c5: "ER_IB_MSG_660", - 0x30c6: "ER_IB_MSG_661", - 0x30c7: "ER_IB_MSG_662", - 0x30c8: "ER_IB_MSG_663", - 0x30c9: "ER_IB_MSG_664", - 0x30ca: "ER_IB_MSG_665", - 0x30cb: "ER_IB_MSG_666", - 0x30cc: "ER_IB_MSG_667", - 0x30cd: "ER_IB_MSG_668", - 0x30ce: "ER_IB_MSG_669", - 0x30cf: "ER_IB_MSG_670", - 0x30d0: "ER_IB_MSG_671", - 0x30d1: "ER_IB_MSG_672", - 0x30d2: "ER_IB_MSG_673", - 0x30d3: "ER_IB_MSG_674", - 0x30d4: "ER_IB_MSG_675", - 0x30d5: "ER_IB_MSG_676", - 0x30d6: "ER_IB_MSG_677", - 0x30d7: "ER_IB_MSG_678", - 0x30d8: "ER_IB_MSG_679", - 0x30d9: "ER_IB_MSG_680", - 0x30da: "ER_IB_MSG_681", - 0x30db: "ER_IB_MSG_682", - 0x30dc: "ER_IB_MSG_683", - 0x30dd: "ER_IB_MSG_684", - 0x30de: "ER_IB_MSG_685", - 0x30df: "ER_IB_MSG_686", - 0x30e0: "ER_IB_MSG_687", - 0x30e1: "ER_IB_MSG_688", - 0x30e2: "ER_IB_MSG_689", - 0x30e3: "ER_IB_MSG_690", - 0x30e4: "ER_IB_MSG_691", - 0x30e5: "ER_IB_MSG_692", - 0x30e6: "ER_IB_MSG_693", - 0x30e7: "ER_IB_MSG_694", - 0x30e8: "ER_IB_MSG_695", - 0x30e9: "ER_IB_MSG_696", - 0x30ea: "ER_IB_MSG_697", - 0x30eb: "ER_IB_MSG_698", - 0x30ec: "ER_IB_MSG_699", - 0x30ed: "ER_IB_MSG_700", - 0x30ee: "ER_IB_MSG_701", - 0x30ef: "ER_IB_MSG_702", - 0x30f0: "ER_IB_MSG_703", - 0x30f1: "ER_IB_MSG_704", - 0x30f2: "ER_IB_MSG_705", - 0x30f3: "ER_IB_MSG_706", - 0x30f4: "ER_IB_MSG_707", - 0x30f5: "ER_IB_MSG_708", - 0x30f6: "ER_IB_MSG_709", - 0x30f7: "ER_IB_MSG_710", - 0x30f8: "ER_IB_MSG_711", - 0x30f9: "ER_IB_MSG_712", - 0x30fa: "ER_IB_MSG_713", - 0x30fb: "ER_IB_MSG_714", - 0x30fc: "ER_IB_MSG_715", - 0x30fd: "ER_IB_MSG_716", - 0x30fe: "ER_IB_MSG_717", - 0x30ff: "ER_IB_MSG_718", + 0x309A: "ER_IB_MSG_617", + 0x309B: "ER_IB_MSG_618", + 0x309C: "ER_IB_MSG_619", + 0x309D: "ER_IB_MSG_620", + 0x309E: "ER_IB_MSG_621", + 0x309F: "ER_IB_MSG_622", + 0x30A0: "ER_IB_MSG_623", + 0x30A1: "ER_IB_MSG_624", + 0x30A2: "ER_IB_MSG_625", + 0x30A3: "ER_IB_MSG_626", + 0x30A4: "ER_IB_MSG_627", + 0x30A5: "ER_IB_MSG_628", + 0x30A6: "ER_IB_MSG_629", + 0x30A7: "ER_IB_MSG_630", + 0x30A8: "ER_IB_MSG_631", + 0x30A9: "ER_IB_MSG_632", + 0x30AA: "ER_IB_MSG_633", + 0x30AB: "ER_IB_MSG_634", + 0x30AC: "ER_IB_MSG_635", + 0x30AD: "ER_IB_MSG_636", + 0x30AE: "ER_IB_MSG_637", + 0x30AF: "ER_IB_MSG_638", + 0x30B0: "ER_IB_MSG_639", + 0x30B1: "ER_IB_MSG_640", + 0x30B2: "ER_IB_MSG_641", + 0x30B3: "ER_IB_MSG_642", + 0x30B4: "ER_IB_MSG_643", + 0x30B5: "ER_IB_MSG_644", + 0x30B6: "ER_IB_MSG_645", + 0x30B7: "ER_IB_MSG_646", + 0x30B8: "ER_IB_MSG_647", + 0x30B9: "ER_IB_MSG_648", + 0x30BA: "ER_IB_MSG_649", + 0x30BB: "ER_IB_MSG_650", + 0x30BC: "ER_IB_MSG_651", + 0x30BD: "ER_IB_MSG_652", + 0x30BE: "ER_IB_MSG_653", + 0x30BF: "ER_IB_MSG_654", + 0x30C0: "ER_IB_MSG_655", + 0x30C1: "ER_IB_MSG_656", + 0x30C2: "ER_IB_MSG_657", + 0x30C3: "ER_IB_MSG_658", + 0x30C4: "ER_IB_MSG_659", + 0x30C5: "ER_IB_MSG_660", + 0x30C6: "ER_IB_MSG_661", + 0x30C7: "ER_IB_MSG_662", + 0x30C8: "ER_IB_MSG_663", + 0x30C9: "ER_IB_MSG_664", + 0x30CA: "ER_IB_MSG_665", + 0x30CB: "ER_IB_MSG_666", + 0x30CC: "ER_IB_MSG_667", + 0x30CD: "ER_IB_MSG_668", + 0x30CE: "ER_IB_MSG_669", + 0x30CF: "ER_IB_MSG_670", + 0x30D0: "ER_IB_MSG_671", + 0x30D1: "ER_IB_MSG_672", + 0x30D2: "ER_IB_MSG_673", + 0x30D3: "ER_IB_MSG_674", + 0x30D4: "ER_IB_MSG_675", + 0x30D5: "ER_IB_MSG_676", + 0x30D6: "ER_IB_MSG_677", + 0x30D7: "ER_IB_MSG_678", + 0x30D8: "ER_IB_MSG_679", + 0x30D9: "ER_IB_MSG_680", + 0x30DA: "ER_IB_MSG_681", + 0x30DB: "ER_IB_MSG_682", + 0x30DC: "ER_IB_MSG_683", + 0x30DD: "ER_IB_MSG_684", + 0x30DE: "ER_IB_MSG_685", + 0x30DF: "ER_IB_MSG_686", + 0x30E0: "ER_IB_MSG_687", + 0x30E1: "ER_IB_MSG_688", + 0x30E2: "ER_IB_MSG_689", + 0x30E3: "ER_IB_MSG_690", + 0x30E4: "ER_IB_MSG_691", + 0x30E5: "ER_IB_MSG_692", + 0x30E6: "ER_IB_MSG_693", + 0x30E7: "ER_IB_MSG_694", + 0x30E8: "ER_IB_MSG_695", + 0x30E9: "ER_IB_MSG_696", + 0x30EA: "ER_IB_MSG_697", + 0x30EB: "ER_IB_MSG_698", + 0x30EC: "ER_IB_MSG_699", + 0x30ED: "ER_IB_MSG_700", + 0x30EE: "ER_IB_MSG_701", + 0x30EF: "ER_IB_MSG_702", + 0x30F0: "ER_IB_MSG_703", + 0x30F1: "ER_IB_MSG_704", + 0x30F2: "ER_IB_MSG_705", + 0x30F3: "ER_IB_MSG_706", + 0x30F4: "ER_IB_MSG_707", + 0x30F5: "ER_IB_MSG_708", + 0x30F6: "ER_IB_MSG_709", + 0x30F7: "ER_IB_MSG_710", + 0x30F8: "ER_IB_MSG_711", + 0x30F9: "ER_IB_MSG_712", + 0x30FA: "ER_IB_MSG_713", + 0x30FB: "ER_IB_MSG_714", + 0x30FC: "ER_IB_MSG_715", + 0x30FD: "ER_IB_MSG_716", + 0x30FE: "ER_IB_MSG_717", + 0x30FF: "ER_IB_MSG_718", 0x3100: "ER_IB_MSG_719", 0x3101: "ER_IB_MSG_720", 0x3102: "ER_IB_MSG_721", @@ -3902,12 +3902,12 @@ 0x3107: "ER_IB_MSG_726", 0x3108: "ER_IB_MSG_727", 0x3109: "ER_IB_MSG_728", - 0x310a: "ER_IB_MSG_729", - 0x310b: "ER_IB_MSG_730", - 0x310c: "ER_IB_MSG_731", - 0x310d: "ER_IB_MSG_732", - 0x310e: "ER_IB_MSG_733", - 0x310f: "ER_IB_MSG_734", + 0x310A: "ER_IB_MSG_729", + 0x310B: "ER_IB_MSG_730", + 0x310C: "ER_IB_MSG_731", + 0x310D: "ER_IB_MSG_732", + 0x310E: "ER_IB_MSG_733", + 0x310F: "ER_IB_MSG_734", 0x3110: "ER_IB_MSG_735", 0x3111: "ER_IB_MSG_736", 0x3112: "ER_IB_MSG_737", @@ -3918,12 +3918,12 @@ 0x3117: "ER_IB_MSG_742", 0x3118: "ER_IB_MSG_743", 0x3119: "ER_IB_MSG_744", - 0x311a: "ER_IB_MSG_745", - 0x311b: "ER_IB_MSG_746", - 0x311c: "ER_IB_MSG_747", - 0x311d: "ER_IB_MSG_748", - 0x311e: "ER_IB_MSG_749", - 0x311f: "ER_IB_MSG_750", + 0x311A: "ER_IB_MSG_745", + 0x311B: "ER_IB_MSG_746", + 0x311C: "ER_IB_MSG_747", + 0x311D: "ER_IB_MSG_748", + 0x311E: "ER_IB_MSG_749", + 0x311F: "ER_IB_MSG_750", 0x3120: "ER_IB_MSG_751", 0x3121: "ER_IB_MSG_752", 0x3122: "ER_IB_MSG_753", @@ -3934,12 +3934,12 @@ 0x3127: "ER_IB_MSG_758", 0x3128: "ER_IB_MSG_759", 0x3129: "ER_IB_MSG_760", - 0x312a: "ER_IB_MSG_761", - 0x312b: "ER_IB_MSG_762", - 0x312c: "ER_IB_MSG_763", - 0x312d: "ER_IB_MSG_764", - 0x312e: "ER_IB_MSG_765", - 0x312f: "ER_IB_MSG_766", + 0x312A: "ER_IB_MSG_761", + 0x312B: "ER_IB_MSG_762", + 0x312C: "ER_IB_MSG_763", + 0x312D: "ER_IB_MSG_764", + 0x312E: "ER_IB_MSG_765", + 0x312F: "ER_IB_MSG_766", 0x3130: "ER_IB_MSG_767", 0x3131: "ER_IB_MSG_768", 0x3132: "ER_IB_MSG_769", @@ -3950,12 +3950,12 @@ 0x3137: "ER_IB_MSG_774", 0x3138: "ER_IB_MSG_775", 0x3139: "ER_IB_MSG_776", - 0x313a: "ER_IB_MSG_777", - 0x313b: "ER_IB_MSG_778", - 0x313c: "ER_IB_MSG_779", - 0x313d: "ER_IB_MSG_780", - 0x313e: "ER_IB_MSG_781", - 0x313f: "ER_IB_MSG_782", + 0x313A: "ER_IB_MSG_777", + 0x313B: "ER_IB_MSG_778", + 0x313C: "ER_IB_MSG_779", + 0x313D: "ER_IB_MSG_780", + 0x313E: "ER_IB_MSG_781", + 0x313F: "ER_IB_MSG_782", 0x3140: "ER_IB_MSG_783", 0x3141: "ER_IB_MSG_784", 0x3142: "ER_IB_MSG_785", @@ -3966,12 +3966,12 @@ 0x3147: "ER_IB_MSG_790", 0x3148: "ER_IB_MSG_791", 0x3149: "ER_IB_MSG_792", - 0x314a: "ER_IB_MSG_793", - 0x314b: "ER_IB_MSG_794", - 0x314c: "ER_IB_MSG_795", - 0x314d: "ER_IB_MSG_796", - 0x314e: "ER_IB_MSG_797", - 0x314f: "ER_IB_MSG_798", + 0x314A: "ER_IB_MSG_793", + 0x314B: "ER_IB_MSG_794", + 0x314C: "ER_IB_MSG_795", + 0x314D: "ER_IB_MSG_796", + 0x314E: "ER_IB_MSG_797", + 0x314F: "ER_IB_MSG_798", 0x3150: "ER_IB_MSG_799", 0x3151: "ER_IB_MSG_800", 0x3152: "ER_IB_MSG_801", @@ -3982,12 +3982,12 @@ 0x3157: "ER_IB_MSG_806", 0x3158: "ER_IB_MSG_807", 0x3159: "ER_IB_MSG_808", - 0x315a: "ER_IB_MSG_809", - 0x315b: "ER_IB_MSG_810", - 0x315c: "ER_IB_MSG_811", - 0x315d: "ER_IB_MSG_812", - 0x315e: "ER_IB_MSG_813", - 0x315f: "ER_IB_MSG_814", + 0x315A: "ER_IB_MSG_809", + 0x315B: "ER_IB_MSG_810", + 0x315C: "ER_IB_MSG_811", + 0x315D: "ER_IB_MSG_812", + 0x315E: "ER_IB_MSG_813", + 0x315F: "ER_IB_MSG_814", 0x3160: "ER_IB_MSG_815", 0x3161: "ER_IB_MSG_816", 0x3162: "ER_IB_MSG_817", @@ -3998,12 +3998,12 @@ 0x3167: "ER_IB_MSG_822", 0x3168: "ER_IB_MSG_823", 0x3169: "ER_IB_MSG_824", - 0x316a: "ER_IB_MSG_825", - 0x316b: "ER_IB_MSG_826", - 0x316c: "ER_IB_MSG_827", - 0x316d: "ER_IB_MSG_828", - 0x316e: "ER_IB_MSG_829", - 0x316f: "ER_IB_MSG_830", + 0x316A: "ER_IB_MSG_825", + 0x316B: "ER_IB_MSG_826", + 0x316C: "ER_IB_MSG_827", + 0x316D: "ER_IB_MSG_828", + 0x316E: "ER_IB_MSG_829", + 0x316F: "ER_IB_MSG_830", 0x3170: "ER_IB_MSG_831", 0x3171: "ER_IB_MSG_832", 0x3172: "ER_IB_MSG_833", @@ -4014,12 +4014,12 @@ 0x3177: "ER_IB_MSG_838", 0x3178: "ER_IB_MSG_839", 0x3179: "ER_IB_MSG_840", - 0x317a: "ER_IB_MSG_841", - 0x317b: "ER_IB_MSG_842", - 0x317c: "ER_IB_MSG_843", - 0x317d: "ER_IB_MSG_844", - 0x317e: "ER_IB_MSG_845", - 0x317f: "ER_IB_MSG_846", + 0x317A: "ER_IB_MSG_841", + 0x317B: "ER_IB_MSG_842", + 0x317C: "ER_IB_MSG_843", + 0x317D: "ER_IB_MSG_844", + 0x317E: "ER_IB_MSG_845", + 0x317F: "ER_IB_MSG_846", 0x3180: "ER_IB_MSG_847", 0x3181: "ER_IB_MSG_848", 0x3182: "ER_IB_MSG_849", @@ -4030,12 +4030,12 @@ 0x3187: "ER_IB_MSG_854", 0x3188: "ER_IB_MSG_855", 0x3189: "ER_IB_MSG_856", - 0x318a: "ER_IB_MSG_857", - 0x318b: "ER_IB_MSG_858", - 0x318c: "ER_IB_MSG_859", - 0x318d: "ER_IB_MSG_860", - 0x318e: "ER_IB_MSG_861", - 0x318f: "ER_IB_MSG_862", + 0x318A: "ER_IB_MSG_857", + 0x318B: "ER_IB_MSG_858", + 0x318C: "ER_IB_MSG_859", + 0x318D: "ER_IB_MSG_860", + 0x318E: "ER_IB_MSG_861", + 0x318F: "ER_IB_MSG_862", 0x3190: "ER_IB_MSG_863", 0x3191: "ER_IB_MSG_864", 0x3192: "ER_IB_MSG_865", @@ -4046,108 +4046,108 @@ 0x3197: "ER_IB_MSG_870", 0x3198: "ER_IB_MSG_871", 0x3199: "ER_IB_MSG_872", - 0x319a: "ER_IB_MSG_873", - 0x319b: "ER_IB_MSG_874", - 0x319c: "ER_IB_MSG_875", - 0x319d: "ER_IB_MSG_876", - 0x319e: "ER_IB_MSG_877", - 0x319f: "ER_IB_MSG_878", - 0x31a0: "ER_IB_MSG_879", - 0x31a1: "ER_IB_MSG_880", - 0x31a2: "ER_IB_MSG_881", - 0x31a3: "ER_IB_MSG_882", - 0x31a4: "ER_IB_MSG_883", - 0x31a5: "ER_IB_MSG_884", - 0x31a6: "ER_IB_MSG_885", - 0x31a7: "ER_IB_MSG_886", - 0x31a8: "ER_IB_MSG_887", - 0x31a9: "ER_IB_MSG_888", - 0x31aa: "ER_IB_MSG_889", - 0x31ab: "ER_IB_MSG_890", - 0x31ac: "ER_IB_MSG_891", - 0x31ad: "ER_IB_MSG_892", - 0x31ae: "ER_IB_MSG_893", - 0x31af: "ER_IB_MSG_894", - 0x31b0: "ER_IB_MSG_895", - 0x31b1: "ER_IB_MSG_896", - 0x31b2: "ER_IB_MSG_897", - 0x31b3: "ER_IB_MSG_898", - 0x31b4: "ER_IB_MSG_899", - 0x31b5: "ER_IB_MSG_900", - 0x31b6: "ER_IB_MSG_901", - 0x31b7: "ER_IB_MSG_902", - 0x31b8: "ER_IB_MSG_903", - 0x31b9: "ER_IB_MSG_904", - 0x31ba: "ER_IB_MSG_905", - 0x31bb: "ER_IB_MSG_906", - 0x31bc: "ER_IB_MSG_907", - 0x31bd: "ER_IB_MSG_908", - 0x31be: "ER_IB_MSG_909", - 0x31bf: "ER_IB_MSG_910", - 0x31c0: "ER_IB_MSG_911", - 0x31c1: "ER_IB_MSG_912", - 0x31c2: "ER_IB_MSG_913", - 0x31c3: "ER_IB_MSG_914", - 0x31c4: "ER_IB_MSG_915", - 0x31c5: "ER_IB_MSG_916", - 0x31c6: "ER_IB_MSG_917", - 0x31c7: "ER_IB_MSG_918", - 0x31c8: "ER_IB_MSG_919", - 0x31c9: "ER_IB_MSG_920", - 0x31ca: "ER_IB_MSG_921", - 0x31cb: "ER_IB_MSG_922", - 0x31cc: "ER_IB_MSG_923", - 0x31cd: "ER_IB_MSG_924", - 0x31ce: "ER_IB_MSG_925", - 0x31cf: "ER_IB_MSG_926", - 0x31d0: "ER_IB_MSG_927", - 0x31d1: "ER_IB_MSG_928", - 0x31d2: "ER_IB_MSG_929", - 0x31d3: "ER_IB_MSG_930", - 0x31d4: "ER_IB_MSG_931", - 0x31d5: "ER_IB_MSG_932", - 0x31d6: "ER_IB_MSG_933", - 0x31d7: "ER_IB_MSG_934", - 0x31d8: "ER_IB_MSG_935", - 0x31d9: "ER_IB_MSG_936", - 0x31da: "ER_IB_MSG_937", - 0x31db: "ER_IB_MSG_938", - 0x31dc: "ER_IB_MSG_939", - 0x31dd: "ER_IB_MSG_940", - 0x31de: "ER_IB_MSG_941", - 0x31df: "ER_IB_MSG_942", - 0x31e0: "ER_IB_MSG_943", - 0x31e1: "ER_IB_MSG_944", - 0x31e2: "ER_IB_MSG_945", - 0x31e3: "ER_IB_MSG_946", - 0x31e4: "ER_IB_MSG_947", - 0x31e5: "ER_IB_MSG_948", - 0x31e6: "ER_IB_MSG_949", - 0x31e7: "ER_IB_MSG_950", - 0x31e8: "ER_IB_MSG_951", - 0x31e9: "ER_IB_MSG_952", - 0x31ea: "ER_IB_MSG_953", - 0x31eb: "ER_IB_MSG_954", - 0x31ec: "ER_IB_MSG_955", - 0x31ed: "ER_IB_MSG_956", - 0x31ee: "ER_IB_MSG_957", - 0x31ef: "ER_IB_MSG_958", - 0x31f0: "ER_IB_MSG_959", - 0x31f1: "ER_IB_MSG_960", - 0x31f2: "ER_IB_MSG_961", - 0x31f3: "ER_IB_MSG_962", - 0x31f4: "ER_IB_MSG_963", - 0x31f5: "ER_IB_MSG_964", - 0x31f6: "ER_IB_MSG_965", - 0x31f7: "ER_IB_MSG_966", - 0x31f8: "ER_IB_MSG_967", - 0x31f9: "ER_IB_MSG_968", - 0x31fa: "ER_IB_MSG_969", - 0x31fb: "ER_IB_MSG_970", - 0x31fc: "ER_IB_MSG_971", - 0x31fd: "ER_IB_MSG_972", - 0x31fe: "ER_IB_MSG_973", - 0x31ff: "ER_IB_MSG_974", + 0x319A: "ER_IB_MSG_873", + 0x319B: "ER_IB_MSG_874", + 0x319C: "ER_IB_MSG_875", + 0x319D: "ER_IB_MSG_876", + 0x319E: "ER_IB_MSG_877", + 0x319F: "ER_IB_MSG_878", + 0x31A0: "ER_IB_MSG_879", + 0x31A1: "ER_IB_MSG_880", + 0x31A2: "ER_IB_MSG_881", + 0x31A3: "ER_IB_MSG_882", + 0x31A4: "ER_IB_MSG_883", + 0x31A5: "ER_IB_MSG_884", + 0x31A6: "ER_IB_MSG_885", + 0x31A7: "ER_IB_MSG_886", + 0x31A8: "ER_IB_MSG_887", + 0x31A9: "ER_IB_MSG_888", + 0x31AA: "ER_IB_MSG_889", + 0x31AB: "ER_IB_MSG_890", + 0x31AC: "ER_IB_MSG_891", + 0x31AD: "ER_IB_MSG_892", + 0x31AE: "ER_IB_MSG_893", + 0x31AF: "ER_IB_MSG_894", + 0x31B0: "ER_IB_MSG_895", + 0x31B1: "ER_IB_MSG_896", + 0x31B2: "ER_IB_MSG_897", + 0x31B3: "ER_IB_MSG_898", + 0x31B4: "ER_IB_MSG_899", + 0x31B5: "ER_IB_MSG_900", + 0x31B6: "ER_IB_MSG_901", + 0x31B7: "ER_IB_MSG_902", + 0x31B8: "ER_IB_MSG_903", + 0x31B9: "ER_IB_MSG_904", + 0x31BA: "ER_IB_MSG_905", + 0x31BB: "ER_IB_MSG_906", + 0x31BC: "ER_IB_MSG_907", + 0x31BD: "ER_IB_MSG_908", + 0x31BE: "ER_IB_MSG_909", + 0x31BF: "ER_IB_MSG_910", + 0x31C0: "ER_IB_MSG_911", + 0x31C1: "ER_IB_MSG_912", + 0x31C2: "ER_IB_MSG_913", + 0x31C3: "ER_IB_MSG_914", + 0x31C4: "ER_IB_MSG_915", + 0x31C5: "ER_IB_MSG_916", + 0x31C6: "ER_IB_MSG_917", + 0x31C7: "ER_IB_MSG_918", + 0x31C8: "ER_IB_MSG_919", + 0x31C9: "ER_IB_MSG_920", + 0x31CA: "ER_IB_MSG_921", + 0x31CB: "ER_IB_MSG_922", + 0x31CC: "ER_IB_MSG_923", + 0x31CD: "ER_IB_MSG_924", + 0x31CE: "ER_IB_MSG_925", + 0x31CF: "ER_IB_MSG_926", + 0x31D0: "ER_IB_MSG_927", + 0x31D1: "ER_IB_MSG_928", + 0x31D2: "ER_IB_MSG_929", + 0x31D3: "ER_IB_MSG_930", + 0x31D4: "ER_IB_MSG_931", + 0x31D5: "ER_IB_MSG_932", + 0x31D6: "ER_IB_MSG_933", + 0x31D7: "ER_IB_MSG_934", + 0x31D8: "ER_IB_MSG_935", + 0x31D9: "ER_IB_MSG_936", + 0x31DA: "ER_IB_MSG_937", + 0x31DB: "ER_IB_MSG_938", + 0x31DC: "ER_IB_MSG_939", + 0x31DD: "ER_IB_MSG_940", + 0x31DE: "ER_IB_MSG_941", + 0x31DF: "ER_IB_MSG_942", + 0x31E0: "ER_IB_MSG_943", + 0x31E1: "ER_IB_MSG_944", + 0x31E2: "ER_IB_MSG_945", + 0x31E3: "ER_IB_MSG_946", + 0x31E4: "ER_IB_MSG_947", + 0x31E5: "ER_IB_MSG_948", + 0x31E6: "ER_IB_MSG_949", + 0x31E7: "ER_IB_MSG_950", + 0x31E8: "ER_IB_MSG_951", + 0x31E9: "ER_IB_MSG_952", + 0x31EA: "ER_IB_MSG_953", + 0x31EB: "ER_IB_MSG_954", + 0x31EC: "ER_IB_MSG_955", + 0x31ED: "ER_IB_MSG_956", + 0x31EE: "ER_IB_MSG_957", + 0x31EF: "ER_IB_MSG_958", + 0x31F0: "ER_IB_MSG_959", + 0x31F1: "ER_IB_MSG_960", + 0x31F2: "ER_IB_MSG_961", + 0x31F3: "ER_IB_MSG_962", + 0x31F4: "ER_IB_MSG_963", + 0x31F5: "ER_IB_MSG_964", + 0x31F6: "ER_IB_MSG_965", + 0x31F7: "ER_IB_MSG_966", + 0x31F8: "ER_IB_MSG_967", + 0x31F9: "ER_IB_MSG_968", + 0x31FA: "ER_IB_MSG_969", + 0x31FB: "ER_IB_MSG_970", + 0x31FC: "ER_IB_MSG_971", + 0x31FD: "ER_IB_MSG_972", + 0x31FE: "ER_IB_MSG_973", + 0x31FF: "ER_IB_MSG_974", 0x3200: "ER_IB_MSG_975", 0x3201: "ER_IB_MSG_976", 0x3202: "ER_IB_MSG_977", @@ -4158,12 +4158,12 @@ 0x3207: "ER_IB_MSG_982", 0x3208: "ER_IB_MSG_983", 0x3209: "ER_IB_MSG_984", - 0x320a: "ER_IB_MSG_985", - 0x320b: "ER_IB_MSG_986", - 0x320c: "ER_IB_MSG_987", - 0x320d: "ER_IB_MSG_988", - 0x320e: "ER_IB_MSG_989", - 0x320f: "ER_IB_MSG_990", + 0x320A: "ER_IB_MSG_985", + 0x320B: "ER_IB_MSG_986", + 0x320C: "ER_IB_MSG_987", + 0x320D: "ER_IB_MSG_988", + 0x320E: "ER_IB_MSG_989", + 0x320F: "ER_IB_MSG_990", 0x3210: "ER_IB_MSG_991", 0x3211: "ER_IB_MSG_992", 0x3212: "ER_IB_MSG_993", @@ -4174,12 +4174,12 @@ 0x3217: "ER_IB_MSG_998", 0x3218: "ER_IB_MSG_999", 0x3219: "ER_IB_MSG_1000", - 0x321a: "ER_IB_MSG_1001", - 0x321b: "ER_IB_MSG_1002", - 0x321c: "ER_IB_MSG_1003", - 0x321d: "ER_IB_MSG_1004", - 0x321e: "ER_IB_MSG_1005", - 0x321f: "ER_IB_MSG_1006", + 0x321A: "ER_IB_MSG_1001", + 0x321B: "ER_IB_MSG_1002", + 0x321C: "ER_IB_MSG_1003", + 0x321D: "ER_IB_MSG_1004", + 0x321E: "ER_IB_MSG_1005", + 0x321F: "ER_IB_MSG_1006", 0x3220: "ER_IB_MSG_1007", 0x3221: "ER_IB_MSG_1008", 0x3222: "ER_IB_MSG_1009", @@ -4190,12 +4190,12 @@ 0x3227: "ER_IB_MSG_1014", 0x3228: "ER_IB_MSG_1015", 0x3229: "ER_IB_MSG_1016", - 0x322a: "ER_IB_MSG_1017", - 0x322b: "ER_IB_MSG_1018", - 0x322c: "ER_IB_MSG_1019", - 0x322d: "ER_IB_MSG_1020", - 0x322e: "ER_IB_MSG_1021", - 0x322f: "ER_IB_MSG_1022", + 0x322A: "ER_IB_MSG_1017", + 0x322B: "ER_IB_MSG_1018", + 0x322C: "ER_IB_MSG_1019", + 0x322D: "ER_IB_MSG_1020", + 0x322E: "ER_IB_MSG_1021", + 0x322F: "ER_IB_MSG_1022", 0x3230: "ER_IB_MSG_1023", 0x3231: "ER_IB_MSG_1024", 0x3232: "ER_IB_MSG_1025", @@ -4206,12 +4206,12 @@ 0x3237: "ER_IB_MSG_1030", 0x3238: "ER_IB_MSG_1031", 0x3239: "ER_IB_MSG_1032", - 0x323a: "ER_IB_MSG_1033", - 0x323b: "ER_IB_MSG_1034", - 0x323c: "ER_IB_MSG_1035", - 0x323d: "ER_IB_MSG_1036", - 0x323e: "ER_IB_MSG_1037", - 0x323f: "ER_IB_MSG_1038", + 0x323A: "ER_IB_MSG_1033", + 0x323B: "ER_IB_MSG_1034", + 0x323C: "ER_IB_MSG_1035", + 0x323D: "ER_IB_MSG_1036", + 0x323E: "ER_IB_MSG_1037", + 0x323F: "ER_IB_MSG_1038", 0x3240: "ER_IB_MSG_1039", 0x3241: "ER_IB_MSG_1040", 0x3242: "ER_IB_MSG_1041", @@ -4222,12 +4222,12 @@ 0x3247: "ER_IB_MSG_1046", 0x3248: "ER_IB_MSG_1047", 0x3249: "ER_IB_MSG_1048", - 0x324a: "ER_IB_MSG_1049", - 0x324b: "ER_IB_MSG_1050", - 0x324c: "ER_IB_MSG_1051", - 0x324d: "ER_IB_MSG_1052", - 0x324e: "ER_IB_MSG_1053", - 0x324f: "ER_IB_MSG_1054", + 0x324A: "ER_IB_MSG_1049", + 0x324B: "ER_IB_MSG_1050", + 0x324C: "ER_IB_MSG_1051", + 0x324D: "ER_IB_MSG_1052", + 0x324E: "ER_IB_MSG_1053", + 0x324F: "ER_IB_MSG_1054", 0x3250: "ER_IB_MSG_1055", 0x3251: "ER_IB_MSG_1056", 0x3252: "ER_IB_MSG_1057", @@ -4238,12 +4238,12 @@ 0x3257: "ER_IB_MSG_1062", 0x3258: "ER_IB_MSG_1063", 0x3259: "ER_IB_MSG_1064", - 0x325a: "ER_IB_MSG_1065", - 0x325b: "ER_IB_MSG_1066", - 0x325c: "ER_IB_MSG_1067", - 0x325d: "ER_IB_MSG_1068", - 0x325e: "ER_IB_MSG_1069", - 0x325f: "ER_IB_MSG_1070", + 0x325A: "ER_IB_MSG_1065", + 0x325B: "ER_IB_MSG_1066", + 0x325C: "ER_IB_MSG_1067", + 0x325D: "ER_IB_MSG_1068", + 0x325E: "ER_IB_MSG_1069", + 0x325F: "ER_IB_MSG_1070", 0x3260: "ER_IB_MSG_1071", 0x3261: "ER_IB_MSG_1072", 0x3262: "ER_IB_MSG_1073", @@ -4254,12 +4254,12 @@ 0x3267: "ER_IB_MSG_1078", 0x3268: "ER_IB_MSG_1079", 0x3269: "ER_IB_MSG_1080", - 0x326a: "ER_IB_MSG_1081", - 0x326b: "ER_IB_MSG_1082", - 0x326c: "ER_IB_MSG_1083", - 0x326d: "ER_IB_MSG_1084", - 0x326e: "ER_IB_MSG_1085", - 0x326f: "ER_IB_MSG_1086", + 0x326A: "ER_IB_MSG_1081", + 0x326B: "ER_IB_MSG_1082", + 0x326C: "ER_IB_MSG_1083", + 0x326D: "ER_IB_MSG_1084", + 0x326E: "ER_IB_MSG_1085", + 0x326F: "ER_IB_MSG_1086", 0x3270: "ER_IB_MSG_1087", 0x3271: "ER_IB_MSG_1088", 0x3272: "ER_IB_MSG_1089", @@ -4270,12 +4270,12 @@ 0x3277: "ER_IB_MSG_1094", 0x3278: "ER_IB_MSG_1095", 0x3279: "ER_IB_MSG_1096", - 0x327a: "ER_IB_MSG_1097", - 0x327b: "ER_IB_MSG_1098", - 0x327c: "ER_IB_MSG_1099", - 0x327d: "ER_IB_MSG_1100", - 0x327e: "ER_IB_MSG_1101", - 0x327f: "ER_IB_MSG_1102", + 0x327A: "ER_IB_MSG_1097", + 0x327B: "ER_IB_MSG_1098", + 0x327C: "ER_IB_MSG_1099", + 0x327D: "ER_IB_MSG_1100", + 0x327E: "ER_IB_MSG_1101", + 0x327F: "ER_IB_MSG_1102", 0x3280: "ER_IB_MSG_1103", 0x3281: "ER_IB_MSG_1104", 0x3282: "ER_IB_MSG_1105", @@ -4286,12 +4286,12 @@ 0x3287: "ER_IB_MSG_1110", 0x3288: "ER_IB_MSG_1111", 0x3289: "ER_IB_MSG_1112", - 0x328a: "ER_IB_MSG_1113", - 0x328b: "ER_IB_MSG_1114", - 0x328c: "ER_IB_MSG_1115", - 0x328d: "ER_IB_MSG_1116", - 0x328e: "ER_IB_MSG_1117", - 0x328f: "ER_IB_MSG_1118", + 0x328A: "ER_IB_MSG_1113", + 0x328B: "ER_IB_MSG_1114", + 0x328C: "ER_IB_MSG_1115", + 0x328D: "ER_IB_MSG_1116", + 0x328E: "ER_IB_MSG_1117", + 0x328F: "ER_IB_MSG_1118", 0x3290: "ER_IB_MSG_1119", 0x3291: "ER_IB_MSG_1120", 0x3292: "ER_IB_MSG_1121", @@ -4302,108 +4302,108 @@ 0x3297: "ER_IB_MSG_1126", 0x3298: "ER_IB_MSG_1127", 0x3299: "ER_IB_MSG_1128", - 0x329a: "ER_IB_MSG_1129", - 0x329b: "ER_IB_MSG_1130", - 0x329c: "ER_IB_MSG_1131", - 0x329d: "ER_IB_MSG_1132", - 0x329e: "ER_IB_MSG_1133", - 0x329f: "ER_IB_MSG_1134", - 0x32a0: "ER_IB_MSG_1135", - 0x32a1: "ER_IB_MSG_1136", - 0x32a2: "ER_IB_MSG_1137", - 0x32a3: "ER_IB_MSG_1138", - 0x32a4: "ER_IB_MSG_1139", - 0x32a5: "ER_IB_MSG_1140", - 0x32a6: "ER_IB_MSG_1141", - 0x32a7: "ER_IB_MSG_1142", - 0x32a8: "ER_IB_MSG_1143", - 0x32a9: "ER_IB_MSG_1144", - 0x32aa: "ER_IB_MSG_1145", - 0x32ab: "ER_IB_MSG_1146", - 0x32ac: "ER_IB_MSG_1147", - 0x32ad: "ER_IB_MSG_1148", - 0x32ae: "ER_IB_MSG_1149", - 0x32af: "ER_IB_MSG_1150", - 0x32b0: "ER_IB_MSG_1151", - 0x32b1: "ER_IB_MSG_1152", - 0x32b2: "ER_IB_MSG_1153", - 0x32b3: "ER_IB_MSG_1154", - 0x32b4: "ER_IB_MSG_1155", - 0x32b5: "ER_IB_MSG_1156", - 0x32b6: "ER_IB_MSG_1157", - 0x32b7: "ER_IB_MSG_1158", - 0x32b8: "ER_IB_MSG_1159", - 0x32b9: "ER_IB_MSG_1160", - 0x32ba: "ER_IB_MSG_1161", - 0x32bb: "ER_IB_MSG_1162", - 0x32bc: "ER_IB_MSG_1163", - 0x32bd: "ER_IB_MSG_1164", - 0x32be: "ER_IB_MSG_1165", - 0x32bf: "ER_IB_MSG_1166", - 0x32c0: "ER_IB_MSG_1167", - 0x32c1: "ER_IB_MSG_1168", - 0x32c2: "ER_IB_MSG_1169", - 0x32c3: "ER_IB_MSG_1170", - 0x32c4: "ER_IB_MSG_1171", - 0x32c5: "ER_IB_MSG_1172", - 0x32c6: "ER_IB_MSG_1173", - 0x32c7: "ER_IB_MSG_1174", - 0x32c8: "ER_IB_MSG_1175", - 0x32c9: "ER_IB_MSG_1176", - 0x32ca: "ER_IB_MSG_1177", - 0x32cb: "ER_IB_MSG_1178", - 0x32cc: "ER_IB_MSG_1179", - 0x32cd: "ER_IB_MSG_1180", - 0x32ce: "ER_IB_MSG_1181", - 0x32cf: "ER_IB_MSG_1182", - 0x32d0: "ER_IB_MSG_1183", - 0x32d1: "ER_IB_MSG_1184", - 0x32d2: "ER_IB_MSG_1185", - 0x32d3: "ER_IB_MSG_1186", - 0x32d4: "ER_IB_MSG_1187", - 0x32d5: "ER_IB_MSG_1188", - 0x32d6: "ER_IB_MSG_1189", - 0x32d7: "ER_IB_MSG_1190", - 0x32d8: "ER_IB_MSG_1191", - 0x32d9: "ER_IB_MSG_1192", - 0x32da: "ER_IB_MSG_1193", - 0x32db: "ER_IB_MSG_1194", - 0x32dc: "ER_IB_MSG_1195", - 0x32dd: "ER_IB_MSG_1196", - 0x32de: "ER_IB_MSG_1197", - 0x32df: "ER_IB_MSG_1198", - 0x32e0: "ER_IB_MSG_1199", - 0x32e1: "ER_IB_MSG_1200", - 0x32e2: "ER_IB_MSG_1201", - 0x32e3: "ER_IB_MSG_1202", - 0x32e4: "ER_IB_MSG_1203", - 0x32e5: "ER_IB_MSG_1204", - 0x32e6: "ER_IB_MSG_1205", - 0x32e7: "ER_IB_MSG_1206", - 0x32e8: "ER_IB_MSG_1207", - 0x32e9: "ER_IB_MSG_1208", - 0x32ea: "ER_IB_MSG_1209", - 0x32eb: "ER_IB_MSG_1210", - 0x32ec: "ER_IB_MSG_1211", - 0x32ed: "ER_IB_MSG_1212", - 0x32ee: "ER_IB_MSG_1213", - 0x32ef: "ER_IB_MSG_1214", - 0x32f0: "ER_IB_MSG_1215", - 0x32f1: "ER_IB_MSG_1216", - 0x32f2: "ER_IB_MSG_1217", - 0x32f3: "ER_IB_MSG_1218", - 0x32f4: "ER_IB_MSG_1219", - 0x32f5: "ER_IB_MSG_1220", - 0x32f6: "ER_IB_MSG_1221", - 0x32f7: "ER_IB_MSG_1222", - 0x32f8: "ER_IB_MSG_1223", - 0x32f9: "ER_IB_MSG_1224", - 0x32fa: "ER_IB_MSG_1225", - 0x32fb: "ER_IB_MSG_1226", - 0x32fc: "ER_IB_MSG_1227", - 0x32fd: "ER_IB_MSG_1228", - 0x32fe: "ER_IB_MSG_1229", - 0x32ff: "ER_IB_MSG_1230", + 0x329A: "ER_IB_MSG_1129", + 0x329B: "ER_IB_MSG_1130", + 0x329C: "ER_IB_MSG_1131", + 0x329D: "ER_IB_MSG_1132", + 0x329E: "ER_IB_MSG_1133", + 0x329F: "ER_IB_MSG_1134", + 0x32A0: "ER_IB_MSG_1135", + 0x32A1: "ER_IB_MSG_1136", + 0x32A2: "ER_IB_MSG_1137", + 0x32A3: "ER_IB_MSG_1138", + 0x32A4: "ER_IB_MSG_1139", + 0x32A5: "ER_IB_MSG_1140", + 0x32A6: "ER_IB_MSG_1141", + 0x32A7: "ER_IB_MSG_1142", + 0x32A8: "ER_IB_MSG_1143", + 0x32A9: "ER_IB_MSG_1144", + 0x32AA: "ER_IB_MSG_1145", + 0x32AB: "ER_IB_MSG_1146", + 0x32AC: "ER_IB_MSG_1147", + 0x32AD: "ER_IB_MSG_1148", + 0x32AE: "ER_IB_MSG_1149", + 0x32AF: "ER_IB_MSG_1150", + 0x32B0: "ER_IB_MSG_1151", + 0x32B1: "ER_IB_MSG_1152", + 0x32B2: "ER_IB_MSG_1153", + 0x32B3: "ER_IB_MSG_1154", + 0x32B4: "ER_IB_MSG_1155", + 0x32B5: "ER_IB_MSG_1156", + 0x32B6: "ER_IB_MSG_1157", + 0x32B7: "ER_IB_MSG_1158", + 0x32B8: "ER_IB_MSG_1159", + 0x32B9: "ER_IB_MSG_1160", + 0x32BA: "ER_IB_MSG_1161", + 0x32BB: "ER_IB_MSG_1162", + 0x32BC: "ER_IB_MSG_1163", + 0x32BD: "ER_IB_MSG_1164", + 0x32BE: "ER_IB_MSG_1165", + 0x32BF: "ER_IB_MSG_1166", + 0x32C0: "ER_IB_MSG_1167", + 0x32C1: "ER_IB_MSG_1168", + 0x32C2: "ER_IB_MSG_1169", + 0x32C3: "ER_IB_MSG_1170", + 0x32C4: "ER_IB_MSG_1171", + 0x32C5: "ER_IB_MSG_1172", + 0x32C6: "ER_IB_MSG_1173", + 0x32C7: "ER_IB_MSG_1174", + 0x32C8: "ER_IB_MSG_1175", + 0x32C9: "ER_IB_MSG_1176", + 0x32CA: "ER_IB_MSG_1177", + 0x32CB: "ER_IB_MSG_1178", + 0x32CC: "ER_IB_MSG_1179", + 0x32CD: "ER_IB_MSG_1180", + 0x32CE: "ER_IB_MSG_1181", + 0x32CF: "ER_IB_MSG_1182", + 0x32D0: "ER_IB_MSG_1183", + 0x32D1: "ER_IB_MSG_1184", + 0x32D2: "ER_IB_MSG_1185", + 0x32D3: "ER_IB_MSG_1186", + 0x32D4: "ER_IB_MSG_1187", + 0x32D5: "ER_IB_MSG_1188", + 0x32D6: "ER_IB_MSG_1189", + 0x32D7: "ER_IB_MSG_1190", + 0x32D8: "ER_IB_MSG_1191", + 0x32D9: "ER_IB_MSG_1192", + 0x32DA: "ER_IB_MSG_1193", + 0x32DB: "ER_IB_MSG_1194", + 0x32DC: "ER_IB_MSG_1195", + 0x32DD: "ER_IB_MSG_1196", + 0x32DE: "ER_IB_MSG_1197", + 0x32DF: "ER_IB_MSG_1198", + 0x32E0: "ER_IB_MSG_1199", + 0x32E1: "ER_IB_MSG_1200", + 0x32E2: "ER_IB_MSG_1201", + 0x32E3: "ER_IB_MSG_1202", + 0x32E4: "ER_IB_MSG_1203", + 0x32E5: "ER_IB_MSG_1204", + 0x32E6: "ER_IB_MSG_1205", + 0x32E7: "ER_IB_MSG_1206", + 0x32E8: "ER_IB_MSG_1207", + 0x32E9: "ER_IB_MSG_1208", + 0x32EA: "ER_IB_MSG_1209", + 0x32EB: "ER_IB_MSG_1210", + 0x32EC: "ER_IB_MSG_1211", + 0x32ED: "ER_IB_MSG_1212", + 0x32EE: "ER_IB_MSG_1213", + 0x32EF: "ER_IB_MSG_1214", + 0x32F0: "ER_IB_MSG_1215", + 0x32F1: "ER_IB_MSG_1216", + 0x32F2: "ER_IB_MSG_1217", + 0x32F3: "ER_IB_MSG_1218", + 0x32F4: "ER_IB_MSG_1219", + 0x32F5: "ER_IB_MSG_1220", + 0x32F6: "ER_IB_MSG_1221", + 0x32F7: "ER_IB_MSG_1222", + 0x32F8: "ER_IB_MSG_1223", + 0x32F9: "ER_IB_MSG_1224", + 0x32FA: "ER_IB_MSG_1225", + 0x32FB: "ER_IB_MSG_1226", + 0x32FC: "ER_IB_MSG_1227", + 0x32FD: "ER_IB_MSG_1228", + 0x32FE: "ER_IB_MSG_1229", + 0x32FF: "ER_IB_MSG_1230", 0x3300: "ER_IB_MSG_1231", 0x3301: "ER_IB_MSG_1232", 0x3302: "ER_IB_MSG_1233", @@ -4414,12 +4414,12 @@ 0x3307: "ER_IB_MSG_1238", 0x3308: "ER_IB_MSG_1239", 0x3309: "ER_IB_MSG_1240", - 0x330a: "ER_IB_MSG_1241", - 0x330b: "ER_IB_MSG_1242", - 0x330c: "ER_IB_MSG_1243", - 0x330d: "ER_IB_MSG_1244", - 0x330e: "ER_IB_MSG_1245", - 0x330f: "ER_IB_MSG_1246", + 0x330A: "ER_IB_MSG_1241", + 0x330B: "ER_IB_MSG_1242", + 0x330C: "ER_IB_MSG_1243", + 0x330D: "ER_IB_MSG_1244", + 0x330E: "ER_IB_MSG_1245", + 0x330F: "ER_IB_MSG_1246", 0x3310: "ER_IB_MSG_1247", 0x3311: "ER_IB_MSG_1248", 0x3312: "ER_IB_MSG_1249", @@ -4430,12 +4430,12 @@ 0x3317: "ER_IB_MSG_1254", 0x3318: "ER_IB_MSG_1255", 0x3319: "ER_IB_MSG_1256", - 0x331a: "ER_IB_MSG_1257", - 0x331b: "ER_IB_MSG_1258", - 0x331c: "ER_IB_MSG_1259", - 0x331d: "ER_IB_MSG_1260", - 0x331e: "ER_IB_MSG_1261", - 0x331f: "ER_IB_MSG_1262", + 0x331A: "ER_IB_MSG_1257", + 0x331B: "ER_IB_MSG_1258", + 0x331C: "ER_IB_MSG_1259", + 0x331D: "ER_IB_MSG_1260", + 0x331E: "ER_IB_MSG_1261", + 0x331F: "ER_IB_MSG_1262", 0x3320: "ER_IB_MSG_1263", 0x3321: "ER_IB_MSG_1264", 0x3322: "ER_IB_MSG_1265", @@ -4446,12 +4446,12 @@ 0x3327: "ER_IB_MSG_1270", 0x3328: "ER_RPL_SLAVE_SQL_THREAD_STOP_CMD_EXEC_TIMEOUT", 0x3329: "ER_RPL_SLAVE_IO_THREAD_STOP_CMD_EXEC_TIMEOUT", - 0x332a: "ER_RPL_GTID_UNSAFE_STMT_ON_NON_TRANS_TABLE", - 0x332b: "ER_RPL_GTID_UNSAFE_STMT_CREATE_SELECT", - 0x332c: "ER_RPL_GTID_UNSAFE_STMT_ON_TEMPORARY_TABLE", - 0x332d: "ER_BINLOG_ROW_VALUE_OPTION_IGNORED", - 0x332e: "ER_BINLOG_USE_V1_ROW_EVENTS_IGNORED", - 0x332f: "ER_BINLOG_ROW_VALUE_OPTION_USED_ONLY_FOR_AFTER_IMAGES", + 0x332A: "ER_RPL_GTID_UNSAFE_STMT_ON_NON_TRANS_TABLE", + 0x332B: "ER_RPL_GTID_UNSAFE_STMT_CREATE_SELECT", + 0x332C: "ER_RPL_GTID_UNSAFE_STMT_ON_TEMPORARY_TABLE", + 0x332D: "ER_BINLOG_ROW_VALUE_OPTION_IGNORED", + 0x332E: "ER_BINLOG_USE_V1_ROW_EVENTS_IGNORED", + 0x332F: "ER_BINLOG_ROW_VALUE_OPTION_USED_ONLY_FOR_AFTER_IMAGES", 0x3330: "ER_CONNECTION_ABORTED", 0x3331: "ER_NORMAL_SERVER_SHUTDOWN", 0x3332: "ER_KEYRING_MIGRATE_FAILED", @@ -4462,12 +4462,12 @@ 0x3337: "ER_COMPONENT_FILTER_WRONG_VALUE", 0x3338: "ER_XPLUGIN_FAILED_TO_STOP_SERVICES", 0x3339: "ER_INCONSISTENT_ERROR", - 0x333a: "ER_SERVER_MASTER_FATAL_ERROR_READING_BINLOG", - 0x333b: "ER_NETWORK_READ_EVENT_CHECKSUM_FAILURE", - 0x333c: "ER_SLAVE_CREATE_EVENT_FAILURE", - 0x333d: "ER_SLAVE_FATAL_ERROR", - 0x333e: "ER_SLAVE_HEARTBEAT_FAILURE", - 0x333f: "ER_SLAVE_INCIDENT", + 0x333A: "ER_SERVER_MASTER_FATAL_ERROR_READING_BINLOG", + 0x333B: "ER_NETWORK_READ_EVENT_CHECKSUM_FAILURE", + 0x333C: "ER_SLAVE_CREATE_EVENT_FAILURE", + 0x333D: "ER_SLAVE_FATAL_ERROR", + 0x333E: "ER_SLAVE_HEARTBEAT_FAILURE", + 0x333F: "ER_SLAVE_INCIDENT", 0x3340: "ER_SLAVE_MASTER_COM_FAILURE", 0x3341: "ER_SLAVE_RELAY_LOG_READ_FAILURE", 0x3342: "ER_SLAVE_RELAY_LOG_WRITE_FAILURE", @@ -4478,12 +4478,12 @@ 0x3347: "ER_SERVER_UNKNOWN_ERROR", 0x3348: "ER_SERVER_UNKNOWN_SYSTEM_VARIABLE", 0x3349: "ER_SERVER_NO_SESSION_TO_SEND_TO", - 0x334a: "ER_SERVER_NEW_ABORTING_CONNECTION", - 0x334b: "ER_SERVER_OUT_OF_SORTMEMORY", - 0x334c: "ER_SERVER_RECORD_FILE_FULL", - 0x334d: "ER_SERVER_DISK_FULL_NOWAIT", - 0x334e: "ER_SERVER_HANDLER_ERROR", - 0x334f: "ER_SERVER_NOT_FORM_FILE", + 0x334A: "ER_SERVER_NEW_ABORTING_CONNECTION", + 0x334B: "ER_SERVER_OUT_OF_SORTMEMORY", + 0x334C: "ER_SERVER_RECORD_FILE_FULL", + 0x334D: "ER_SERVER_DISK_FULL_NOWAIT", + 0x334E: "ER_SERVER_HANDLER_ERROR", + 0x334F: "ER_SERVER_NOT_FORM_FILE", 0x3350: "ER_SERVER_CANT_OPEN_FILE", 0x3351: "ER_SERVER_FILE_NOT_FOUND", 0x3352: "ER_SERVER_FILE_USED", @@ -4494,12 +4494,12 @@ 0x3357: "ER_SERVER_COL_COUNT_DOESNT_MATCH_CORRUPTED_V2", 0x3358: "ER_SERVER_ACL_TABLE_ERROR", 0x3359: "ER_SERVER_SLAVE_INIT_QUERY_FAILED", - 0x335a: "ER_SERVER_SLAVE_CONVERSION_FAILED", - 0x335b: "ER_SERVER_SLAVE_IGNORED_TABLE", - 0x335c: "ER_CANT_REPLICATE_ANONYMOUS_WITH_AUTO_POSITION", - 0x335d: "ER_CANT_REPLICATE_ANONYMOUS_WITH_GTID_MODE_ON", - 0x335e: "ER_CANT_REPLICATE_GTID_WITH_GTID_MODE_OFF", - 0x335f: "ER_SERVER_TEST_MESSAGE", + 0x335A: "ER_SERVER_SLAVE_CONVERSION_FAILED", + 0x335B: "ER_SERVER_SLAVE_IGNORED_TABLE", + 0x335C: "ER_CANT_REPLICATE_ANONYMOUS_WITH_AUTO_POSITION", + 0x335D: "ER_CANT_REPLICATE_ANONYMOUS_WITH_GTID_MODE_ON", + 0x335E: "ER_CANT_REPLICATE_GTID_WITH_GTID_MODE_OFF", + 0x335F: "ER_SERVER_TEST_MESSAGE", 0x3360: "ER_AUDIT_LOG_JSON_FILTER_PARSING_ERROR", 0x3361: "ER_AUDIT_LOG_JSON_FILTERING_NOT_ENABLED", 0x3362: "ER_PLUGIN_FAILED_TO_OPEN_TABLES", @@ -4510,12 +4510,12 @@ 0x3367: "ER_AUDIT_LOG_NO_KEYRING_PLUGIN_INSTALLED", 0x3368: "ER_AUDIT_LOG_HOST_NAME_INVALID_CHARACTER", 0x3369: "ER_AUDIT_LOG_ENCRYPTION_PASSWORD_HAS_NOT_BEEN_SET", - 0x336a: "ER_AUDIT_LOG_COULD_NOT_CREATE_AES_KEY", - 0x336b: "ER_AUDIT_LOG_ENCRYPTION_PASSWORD_CANNOT_BE_FETCHED", - 0x336c: "ER_COULD_NOT_REINITIALIZE_AUDIT_LOG_FILTERS", - 0x336d: "ER_AUDIT_LOG_JSON_USER_NAME_CANNOT_BE_EMPTY", - 0x336e: "ER_AUDIT_LOG_USER_FIRST_CHARACTER_MUST_BE_ALPHANUMERIC", - 0x336f: "ER_AUDIT_LOG_JSON_FILTER_DOES_NOT_EXIST", + 0x336A: "ER_AUDIT_LOG_COULD_NOT_CREATE_AES_KEY", + 0x336B: "ER_AUDIT_LOG_ENCRYPTION_PASSWORD_CANNOT_BE_FETCHED", + 0x336C: "ER_COULD_NOT_REINITIALIZE_AUDIT_LOG_FILTERS", + 0x336D: "ER_AUDIT_LOG_JSON_USER_NAME_CANNOT_BE_EMPTY", + 0x336E: "ER_AUDIT_LOG_USER_FIRST_CHARACTER_MUST_BE_ALPHANUMERIC", + 0x336F: "ER_AUDIT_LOG_JSON_FILTER_DOES_NOT_EXIST", 0x3370: "ER_IB_MSG_1271", 0x3371: "ER_STARTING_INIT", 0x3372: "ER_ENDING_INIT", @@ -4526,12 +4526,12 @@ 0x3377: "ER_XA_REPLICATION_FILTERS", 0x3378: "ER_UPDATE_GTID_PURGED_WITH_GR", 0x3379: "ER_AUDIT_LOG_TABLE_DEFINITION_NOT_UPDATED", - 0x337a: "ER_NO_PATH_FOR_SHARED_LIBRARY", - 0x337b: "ER_UDF_ALREADY_EXISTS", - 0x337c: "ER_SET_EVENT_FAILED", - 0x337d: "ER_FAILED_TO_ALLOCATE_SSL_BIO", - 0x337e: "ER_IB_MSG_1273", - 0x337f: "ER_PID_FILEPATH_LOCATIONS_INACCESSIBLE", + 0x337A: "ER_NO_PATH_FOR_SHARED_LIBRARY", + 0x337B: "ER_UDF_ALREADY_EXISTS", + 0x337C: "ER_SET_EVENT_FAILED", + 0x337D: "ER_FAILED_TO_ALLOCATE_SSL_BIO", + 0x337E: "ER_IB_MSG_1273", + 0x337F: "ER_PID_FILEPATH_LOCATIONS_INACCESSIBLE", 0x3380: "ER_UNKNOWN_VARIABLE_IN_PERSISTED_CONFIG_FILE", 0x3381: "ER_FAILED_TO_HANDLE_DEFAULTS_FILE", 0x3382: "ER_DUPLICATE_SYS_VAR", diff --git a/zgrab2_schemas/zgrab2/ntp.py b/zgrab2_schemas/zgrab2/ntp.py index 95a62146..54c604fd 100644 --- a/zgrab2_schemas/zgrab2/ntp.py +++ b/zgrab2_schemas/zgrab2/ntp.py @@ -7,56 +7,69 @@ import zcrypto_schemas.zcrypto as zcrypto from . import zgrab2 -ntp_short = SubRecord({ - "seconds": Unsigned16BitInteger(), - "fraction": Unsigned16BitInteger(), -}) - -ntp_long = SubRecord({ - "seconds": Unsigned32BitInteger(), - "fraction": Unsigned32BitInteger(), -}) - -ntp_header = SubRecord({ - "leap_indicator": Unsigned8BitInteger(), - "version": Unsigned8BitInteger(), - "mode": Unsigned8BitInteger(), - "stratum": Unsigned8BitInteger(), - "poll": Signed8BitInteger(), - "precision": Signed8BitInteger(), - "root_delay": ntp_short, - "root_dispersion": ntp_short, - "reference_id": Binary(), - "reference_timestamp": ntp_long, - "origin_timestamp": ntp_long, - "receive_timestamp": ntp_long, - "transmit_timestamp": ntp_long, -}) - -mode7_header = SubRecord({ - "is_response": Boolean(), - "has_more": Boolean(), - "version": Unsigned8BitInteger(), - "mode": Unsigned8BitInteger(), - "is_authenticated": Boolean(), - "sequence_number": Unsigned8BitInteger(), - "implementation_number": String(), - "request_code": String(), - "error": String(), - "num_items": Unsigned16BitInteger(), - "mbz": Unsigned8BitInteger(), - "item_size": Unsigned16BitInteger(), -}) - -ntp_scan_response = SubRecord({ - "result": SubRecord({ +ntp_short = SubRecord( + { + "seconds": Unsigned16BitInteger(), + "fraction": Unsigned16BitInteger(), + } +) + +ntp_long = SubRecord( + { + "seconds": Unsigned32BitInteger(), + "fraction": Unsigned32BitInteger(), + } +) + +ntp_header = SubRecord( + { + "leap_indicator": Unsigned8BitInteger(), "version": Unsigned8BitInteger(), - "time": String(), - "time_response": ntp_header, - "monlist_response": Binary(), - "monlist_header": mode7_header, - }) -}, extends=zgrab2.base_scan_response) + "mode": Unsigned8BitInteger(), + "stratum": Unsigned8BitInteger(), + "poll": Signed8BitInteger(), + "precision": Signed8BitInteger(), + "root_delay": ntp_short, + "root_dispersion": ntp_short, + "reference_id": Binary(), + "reference_timestamp": ntp_long, + "origin_timestamp": ntp_long, + "receive_timestamp": ntp_long, + "transmit_timestamp": ntp_long, + } +) + +mode7_header = SubRecord( + { + "is_response": Boolean(), + "has_more": Boolean(), + "version": Unsigned8BitInteger(), + "mode": Unsigned8BitInteger(), + "is_authenticated": Boolean(), + "sequence_number": Unsigned8BitInteger(), + "implementation_number": String(), + "request_code": String(), + "error": String(), + "num_items": Unsigned16BitInteger(), + "mbz": Unsigned8BitInteger(), + "item_size": Unsigned16BitInteger(), + } +) + +ntp_scan_response = SubRecord( + { + "result": SubRecord( + { + "version": Unsigned8BitInteger(), + "time": String(), + "time_response": ntp_header, + "monlist_response": Binary(), + "monlist_header": mode7_header, + } + ) + }, + extends=zgrab2.base_scan_response, +) zschema.registry.register_schema("zgrab2-ntp", ntp_scan_response) diff --git a/zgrab2_schemas/zgrab2/oracle.py b/zgrab2_schemas/zgrab2/oracle.py index d0661c2e..200c636a 100644 --- a/zgrab2_schemas/zgrab2/oracle.py +++ b/zgrab2_schemas/zgrab2/oracle.py @@ -45,38 +45,92 @@ "Supervisor", ] -descriptor_entry = SubRecord({ - "key": WhitespaceAnalyzedString(doc="The dot-separated path to the descriptor", examples=["DESCRIPTION.ERR", "DESCRIPTION.CONNECT_DATA.CID.PROGRAM"]), - "value": WhitespaceAnalyzedString(doc="The descriptor value."), -}) +descriptor_entry = SubRecord( + { + "key": WhitespaceAnalyzedString( + doc="The dot-separated path to the descriptor", + examples=["DESCRIPTION.ERR", "DESCRIPTION.CONNECT_DATA.CID.PROGRAM"], + ), + "value": WhitespaceAnalyzedString(doc="The descriptor value."), + } +) -oracle_scan_response = SubRecord({ - "result": SubRecord({ - "handshake": SubRecord({ - "accept_version": Unsigned16BitInteger(doc="The protocol version number from the Accept packet."), - "global_service_options": FlagsSet(global_service_options, doc="Set of flags that the server returns in the Accept packet."), - "connect_flags0": FlagsSet(connect_flags, doc="The first set of ConnectFlags returned in the Accept packet."), - "connect_flags1": FlagsSet(connect_flags, doc="The second set of ConnectFlags returned in the Accept packet."), - "did_resend": Boolean(doc="True if the server sent a Resend packet request in response to the client's first Connect packet."), - "redirect_target_raw": WhitespaceAnalyzedString(doc="The connect descriptor returned by the server in the Redirect packet, if one is sent. Otherwise, omitted.", examples=[ - "(DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=theServiceName)(CID=(PROGRAM=zgrab2)(HOST=targethost)(USER=targetuser)))(ADDRESS=(PROTOCOL=TCP)(HOST=1.2.3.4)(PORT=1521)))" - ]), - "redirect_target": ListOf(descriptor_entry, doc="The parsed connect descriptor returned by the server in the redirect packet, if one is sent. Otherwise, omitted. The parsed descriptor is a list of objects with key and value, where the keys strings like 'DESCRIPTION.CONNECT_DATA.SERVICE_NAME'."), - "refuse_error_raw": WhitespaceAnalyzedString(doc="The data from the Refuse packet returned by the server; it is empty if the server does not return a Refuse packet.", examples=[ - "(DESCRIPTION=(ERR=1153)(VSNNUM=186647040)(ERROR_STACK=(ERROR=(CODE=1153)(EMFI=4)(ARGS='()'))(ERROR=(CODE=303)(EMFI=1))))" - ]), - "refuse_error": ListOf(descriptor_entry, doc="The parsed descriptor returned by the server in the Refuse packet; it is empty if the server does not return a Refuse packet. The keys are strings like 'DESCRIPTION.ERROR_STACK.ERROR.CODE'."), - "refuse_version": WhitespaceAnalyzedString(doc="The parsed DESCRIPTION.VSNNUM field from the RefuseError descriptor returned by the server in the Refuse packet, in dotted-decimal format.", examples=["11.2.0.2.0"]), - "refuse_reason_app": WhitespaceAnalyzedString(doc="The 'AppReason' returned by the server in the RefusePacket, as an 8-bit unsigned hex string. Omitted if the server did not send a Refuse packet.", examples=["0x22", "0x04"]), - "refuse_reason_sys": WhitespaceAnalyzedString(doc="The 'SysReason' returned by the server in the RefusePacket, as an 8-bit unsigned hex string. Omitted if the server did not send a Refuse packet.", examples=["0x00", "0x04"]), - "nsn_version": WhitespaceAnalyzedString(doc="The ReleaseVersion string (in dotted-decimal format) in the root of the Native Service Negotiation packet.", examples=["11.2.0.2.0"]), - "nsn_service_versions": SubRecord({ - service: WhitespaceAnalyzedString() for service in nsn_services - }, doc="A map from the native Service Negotation service names to the ReleaseVersion (in dotted-decimal format) in that service packet."), - }, doc="The log of the Oracle / TDS handshake process."), - "tls": zgrab2.tls_log, - }) -}, extends=zgrab2.base_scan_response) +oracle_scan_response = SubRecord( + { + "result": SubRecord( + { + "handshake": SubRecord( + { + "accept_version": Unsigned16BitInteger( + doc="The protocol version number from the Accept packet." + ), + "global_service_options": FlagsSet( + global_service_options, + doc="Set of flags that the server returns in the Accept packet.", + ), + "connect_flags0": FlagsSet( + connect_flags, + doc="The first set of ConnectFlags returned in the Accept packet.", + ), + "connect_flags1": FlagsSet( + connect_flags, + doc="The second set of ConnectFlags returned in the Accept packet.", + ), + "did_resend": Boolean( + doc="True if the server sent a Resend packet request in response to the client's first Connect packet." + ), + "redirect_target_raw": WhitespaceAnalyzedString( + doc="The connect descriptor returned by the server in the Redirect packet, if one is sent. Otherwise, omitted.", + examples=[ + "(DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=theServiceName)(CID=(PROGRAM=zgrab2)(HOST=targethost)(USER=targetuser)))(ADDRESS=(PROTOCOL=TCP)(HOST=1.2.3.4)(PORT=1521)))" + ], + ), + "redirect_target": ListOf( + descriptor_entry, + doc="The parsed connect descriptor returned by the server in the redirect packet, if one is sent. Otherwise, omitted. The parsed descriptor is a list of objects with key and value, where the keys strings like 'DESCRIPTION.CONNECT_DATA.SERVICE_NAME'.", + ), + "refuse_error_raw": WhitespaceAnalyzedString( + doc="The data from the Refuse packet returned by the server; it is empty if the server does not return a Refuse packet.", + examples=[ + "(DESCRIPTION=(ERR=1153)(VSNNUM=186647040)(ERROR_STACK=(ERROR=(CODE=1153)(EMFI=4)(ARGS='()'))(ERROR=(CODE=303)(EMFI=1))))" + ], + ), + "refuse_error": ListOf( + descriptor_entry, + doc="The parsed descriptor returned by the server in the Refuse packet; it is empty if the server does not return a Refuse packet. The keys are strings like 'DESCRIPTION.ERROR_STACK.ERROR.CODE'.", + ), + "refuse_version": WhitespaceAnalyzedString( + doc="The parsed DESCRIPTION.VSNNUM field from the RefuseError descriptor returned by the server in the Refuse packet, in dotted-decimal format.", + examples=["11.2.0.2.0"], + ), + "refuse_reason_app": WhitespaceAnalyzedString( + doc="The 'AppReason' returned by the server in the RefusePacket, as an 8-bit unsigned hex string. Omitted if the server did not send a Refuse packet.", + examples=["0x22", "0x04"], + ), + "refuse_reason_sys": WhitespaceAnalyzedString( + doc="The 'SysReason' returned by the server in the RefusePacket, as an 8-bit unsigned hex string. Omitted if the server did not send a Refuse packet.", + examples=["0x00", "0x04"], + ), + "nsn_version": WhitespaceAnalyzedString( + doc="The ReleaseVersion string (in dotted-decimal format) in the root of the Native Service Negotiation packet.", + examples=["11.2.0.2.0"], + ), + "nsn_service_versions": SubRecord( + { + service: WhitespaceAnalyzedString() + for service in nsn_services + }, + doc="A map from the native Service Negotation service names to the ReleaseVersion (in dotted-decimal format) in that service packet.", + ), + }, + doc="The log of the Oracle / TDS handshake process.", + ), + "tls": zgrab2.tls_log, + } + ) + }, + extends=zgrab2.base_scan_response, +) zschema.registry.register_schema("zgrab2-oracle", oracle_scan_response) diff --git a/zgrab2_schemas/zgrab2/pop3.py b/zgrab2_schemas/zgrab2/pop3.py index a6567c0d..a5f35088 100644 --- a/zgrab2_schemas/zgrab2/pop3.py +++ b/zgrab2_schemas/zgrab2/pop3.py @@ -7,16 +7,23 @@ import zcrypto_schemas.zcrypto as zcrypto from . import zgrab2 -pop3_scan_response = SubRecord({ - "result": SubRecord({ - "banner": String(doc="The POP3 banner."), - "noop": String(doc="The server's response to the NOOP command."), - "help": String(doc="The server's response to the HELP command."), - "starttls": String(doc="The server's response to the STARTTLS command."), - "quit": String(doc="The server's response to the QUIT command."), - "tls": zgrab2.tls_log, - }) -}, extends=zgrab2.base_scan_response) +pop3_scan_response = SubRecord( + { + "result": SubRecord( + { + "banner": String(doc="The POP3 banner."), + "noop": String(doc="The server's response to the NOOP command."), + "help": String(doc="The server's response to the HELP command."), + "starttls": String( + doc="The server's response to the STARTTLS command." + ), + "quit": String(doc="The server's response to the QUIT command."), + "tls": zgrab2.tls_log, + } + ) + }, + extends=zgrab2.base_scan_response, +) zschema.registry.register_schema("zgrab2-pop3", pop3_scan_response) diff --git a/zgrab2_schemas/zgrab2/postgres.py b/zgrab2_schemas/zgrab2/postgres.py index b53fccd4..f964f22b 100644 --- a/zgrab2_schemas/zgrab2/postgres.py +++ b/zgrab2_schemas/zgrab2/postgres.py @@ -13,60 +13,80 @@ # These are defined in detail at # https://www.postgresql.org/docs/10/static/protocol-error-fields.html -postgres_error = SubRecord({ - "severity": WhitespaceAnalyzedString(), - "severity_v": WhitespaceAnalyzedString(), - "code": WhitespaceAnalyzedString(), - "message": WhitespaceAnalyzedString(), - "detail": WhitespaceAnalyzedString(), - "hint": WhitespaceAnalyzedString(), - "position": WhitespaceAnalyzedString(), - "internal_position": WhitespaceAnalyzedString(), - "internal_query": WhitespaceAnalyzedString(), - "where": WhitespaceAnalyzedString(), - "schema": WhitespaceAnalyzedString(), - "table": WhitespaceAnalyzedString(), - "data": WhitespaceAnalyzedString(), - "constraint": WhitespaceAnalyzedString(), - "file": WhitespaceAnalyzedString(), - "line": WhitespaceAnalyzedString(), - "routine": WhitespaceAnalyzedString(), - "_unknown_error_tag": WhitespaceAnalyzedString(), -}) +postgres_error = SubRecord( + { + "severity": WhitespaceAnalyzedString(), + "severity_v": WhitespaceAnalyzedString(), + "code": WhitespaceAnalyzedString(), + "message": WhitespaceAnalyzedString(), + "detail": WhitespaceAnalyzedString(), + "hint": WhitespaceAnalyzedString(), + "position": WhitespaceAnalyzedString(), + "internal_position": WhitespaceAnalyzedString(), + "internal_query": WhitespaceAnalyzedString(), + "where": WhitespaceAnalyzedString(), + "schema": WhitespaceAnalyzedString(), + "table": WhitespaceAnalyzedString(), + "data": WhitespaceAnalyzedString(), + "constraint": WhitespaceAnalyzedString(), + "file": WhitespaceAnalyzedString(), + "line": WhitespaceAnalyzedString(), + "routine": WhitespaceAnalyzedString(), + "_unknown_error_tag": WhitespaceAnalyzedString(), + } +) # modules/postgres/scanner.go - decodeAuthMode() AUTH_MODES = [ - "kerberos_v5", "password_cleartext", "password_md5", "scm_credentials", - "gss", "sspi", "sasl", "ok", "gss-continue", "sasl-continue", "sasl-final" + "kerberos_v5", + "password_cleartext", + "password_md5", + "scm_credentials", + "gss", + "sspi", + "sasl", + "ok", + "gss-continue", + "sasl-continue", + "sasl-final", ] # modules/postgres/scanner.go: AuthenticationMode -postgres_auth_mode = SubRecord({ - "mode": Enum(values=AUTH_MODES, required=False), # this gets lifted - "Payload": Binary(), -}) +postgres_auth_mode = SubRecord( + { + "mode": Enum(values=AUTH_MODES, required=False), # this gets lifted + "Payload": Binary(), + } +) # modules/postgres/scanner.go: BackendKeyData -postgres_key_data = SubRecord({ - "process_id": Unsigned32BitInteger(), - "secret_key": Unsigned32BitInteger(), -}) +postgres_key_data = SubRecord( + { + "process_id": Unsigned32BitInteger(), + "secret_key": Unsigned32BitInteger(), + } +) # modules/postgres/scanner.go: PostgresResults -postgres_scan_response = SubRecord({ - "result": SubRecord({ - "tls": zgrab2.tls_log, - "supported_versions": WhitespaceAnalyzedString(), - "protocol_error": postgres_error, - "startup_error": postgres_error, - "is_ssl": Boolean(), - "authentication_mode": postgres_auth_mode, - # TODO FIXME: This is currendly an unconstrained map[string]string - "server_parameters": WhitespaceAnalyzedString(), - "backend_key_data": postgres_key_data, - "transaction_status": WhitespaceAnalyzedString(), - }) -}, extends=zgrab2.base_scan_response) +postgres_scan_response = SubRecord( + { + "result": SubRecord( + { + "tls": zgrab2.tls_log, + "supported_versions": WhitespaceAnalyzedString(), + "protocol_error": postgres_error, + "startup_error": postgres_error, + "is_ssl": Boolean(), + "authentication_mode": postgres_auth_mode, + # TODO FIXME: This is currendly an unconstrained map[string]string + "server_parameters": WhitespaceAnalyzedString(), + "backend_key_data": postgres_key_data, + "transaction_status": WhitespaceAnalyzedString(), + } + ) + }, + extends=zgrab2.base_scan_response, +) zschema.registry.register_schema("zgrab2-postgres", postgres_scan_response) diff --git a/zgrab2_schemas/zgrab2/redis.py b/zgrab2_schemas/zgrab2/redis.py index a909a65e..e53f3d73 100644 --- a/zgrab2_schemas/zgrab2/redis.py +++ b/zgrab2_schemas/zgrab2/redis.py @@ -7,45 +7,106 @@ import zcrypto_schemas.zcrypto as zcrypto from . import zgrab2 -redis_scan_response = SubRecord({ - "result": SubRecord({ - "commands": ListOf(String(), doc="The list of commands actually sent to the server, serialized in inline format, like 'PING' or 'AUTH somePassword'."), - "raw_command_output": ListOf(Binary(), doc="The raw output returned by the server for each command sent; the indices match those of commands."), - "ping_response": String(doc="The response from the PING command; should either be \"PONG\" or an authentication error.", examples=[ - "PONG", - "(Error: NOAUTH Authentication required.)", - ]), - "info_response": String(doc="The response from the INFO command. Should be a series of key:value pairs separated by CRLFs.", examples=[ - "# Server\r\nredis_version:4.0.7\r\nkey2:value2\r\n", - "(Error: NOAUTH Authentication required.)", - ]), - "auth_response": String(doc="The response from the AUTH command, if sent."), - "nonexistent_response": String(doc="The response from the NONEXISTENT command.", examples=[ - "(Error: ERR unknown command 'NONEXISTENT')", - ]), - "quit_response": String(doc="The response to the QUIT command.", examples=["OK"]), - "version": String(doc="The version string, read from the the info_response (if available)."), - "major": Unsigned32BitInteger(doc="Major is the version's major number."), - "minor": Unsigned32BitInteger(doc="Minor is the version's minor number."), - "patchlevel": Unsigned32BitInteger(doc="Patchlevel is the version's patchlevel number."), - "os": String(doc="The OS the Redis server is running, read from the the info_response (if available)."), - "mode": String(doc="The mode the Redis server is running (standalone or cluster), read from the the info_response (if available)."), - "git_sha1": String(doc="The Sha-1 Git commit hash the Redis server used."), - "build_id": String(doc="The Build ID of the Redis server."), - "arch_bits": String(doc="The architecture bits (32 or 64) the Redis server used to build."), - "gcc_version": String(doc="The version of the GCC compiler used to compile the Redis server."), - "mem_allocator": String(doc="The memory allocator."), - "uptime_in_seconds": Unsigned32BitInteger(doc="The number of seconds since Redis server start."), - "used_memory": Unsigned32BitInteger(doc="The total number of bytes allocated by Redis using its allocator."), - "total_connections_received": Unsigned32BitInteger(doc="The total number of connections accepted by the server."), - "total_commands_processed": Unsigned32BitInteger(doc="The total number of commands processed by the server."), - "custom_responses": ListOf(SubRecord({ - "command": String(doc="The command portion of the command sent."), - "arguments": String(doc="The arguments portion of the command sent."), - "response": String(doc="The response from the sent command and arguments."), - }), doc="The responses from the user-passed custom commands."), - }) -}, extends=zgrab2.base_scan_response) +redis_scan_response = SubRecord( + { + "result": SubRecord( + { + "commands": ListOf( + String(), + doc="The list of commands actually sent to the server, serialized in inline format, like 'PING' or 'AUTH somePassword'.", + ), + "raw_command_output": ListOf( + Binary(), + doc="The raw output returned by the server for each command sent; the indices match those of commands.", + ), + "ping_response": String( + doc='The response from the PING command; should either be "PONG" or an authentication error.', + examples=[ + "PONG", + "(Error: NOAUTH Authentication required.)", + ], + ), + "info_response": String( + doc="The response from the INFO command. Should be a series of key:value pairs separated by CRLFs.", + examples=[ + "# Server\r\nredis_version:4.0.7\r\nkey2:value2\r\n", + "(Error: NOAUTH Authentication required.)", + ], + ), + "auth_response": String( + doc="The response from the AUTH command, if sent." + ), + "nonexistent_response": String( + doc="The response from the NONEXISTENT command.", + examples=[ + "(Error: ERR unknown command 'NONEXISTENT')", + ], + ), + "quit_response": String( + doc="The response to the QUIT command.", examples=["OK"] + ), + "version": String( + doc="The version string, read from the the info_response (if available)." + ), + "major": Unsigned32BitInteger( + doc="Major is the version's major number." + ), + "minor": Unsigned32BitInteger( + doc="Minor is the version's minor number." + ), + "patchlevel": Unsigned32BitInteger( + doc="Patchlevel is the version's patchlevel number." + ), + "os": String( + doc="The OS the Redis server is running, read from the the info_response (if available)." + ), + "mode": String( + doc="The mode the Redis server is running (standalone or cluster), read from the the info_response (if available)." + ), + "git_sha1": String( + doc="The Sha-1 Git commit hash the Redis server used." + ), + "build_id": String(doc="The Build ID of the Redis server."), + "arch_bits": String( + doc="The architecture bits (32 or 64) the Redis server used to build." + ), + "gcc_version": String( + doc="The version of the GCC compiler used to compile the Redis server." + ), + "mem_allocator": String(doc="The memory allocator."), + "uptime_in_seconds": Unsigned32BitInteger( + doc="The number of seconds since Redis server start." + ), + "used_memory": Unsigned32BitInteger( + doc="The total number of bytes allocated by Redis using its allocator." + ), + "total_connections_received": Unsigned32BitInteger( + doc="The total number of connections accepted by the server." + ), + "total_commands_processed": Unsigned32BitInteger( + doc="The total number of commands processed by the server." + ), + "custom_responses": ListOf( + SubRecord( + { + "command": String( + doc="The command portion of the command sent." + ), + "arguments": String( + doc="The arguments portion of the command sent." + ), + "response": String( + doc="The response from the sent command and arguments." + ), + } + ), + doc="The responses from the user-passed custom commands.", + ), + } + ) + }, + extends=zgrab2.base_scan_response, +) zschema.registry.register_schema("zgrab2-redis", redis_scan_response) diff --git a/zgrab2_schemas/zgrab2/siemens.py b/zgrab2_schemas/zgrab2/siemens.py index 1e1ce3fd..526dc9c0 100644 --- a/zgrab2_schemas/zgrab2/siemens.py +++ b/zgrab2_schemas/zgrab2/siemens.py @@ -7,26 +7,31 @@ import zcrypto_schemas.zcrypto as zcrypto from . import zgrab2 -siemens_scan_response = SubRecord({ - 'result': SubRecord({ - 'is_s7': Boolean(), - 'system': String(), - 'module': String(), - 'plant_id': String(), - 'copyright': String(), - 'serial_number': String(), - 'module_type': String(), - 'reserved_for_os': String(), - 'memory_serial_number': String(), - 'cpu_profile': String(), - 'oem_id': String(), - 'location': String(), - 'module_id': String(), - 'hardware': String(), - 'firmware': String(), - }) -}, extends=zgrab2.base_scan_response) +siemens_scan_response = SubRecord( + { + "result": SubRecord( + { + "is_s7": Boolean(), + "system": String(), + "module": String(), + "plant_id": String(), + "copyright": String(), + "serial_number": String(), + "module_type": String(), + "reserved_for_os": String(), + "memory_serial_number": String(), + "cpu_profile": String(), + "oem_id": String(), + "location": String(), + "module_id": String(), + "hardware": String(), + "firmware": String(), + } + ) + }, + extends=zgrab2.base_scan_response, +) -zschema.registry.register_schema('zgrab2-siemens', siemens_scan_response) +zschema.registry.register_schema("zgrab2-siemens", siemens_scan_response) -zgrab2.register_scan_response_type('siemens', siemens_scan_response) +zgrab2.register_scan_response_type("siemens", siemens_scan_response) diff --git a/zgrab2_schemas/zgrab2/smb.py b/zgrab2_schemas/zgrab2/smb.py index f1ac8c58..1798bbf2 100644 --- a/zgrab2_schemas/zgrab2/smb.py +++ b/zgrab2_schemas/zgrab2/smb.py @@ -8,68 +8,100 @@ from . import zgrab2 header_log = { - 'protocol_id': Binary(), - 'status': Unsigned32BitInteger(), - 'command': Unsigned16BitInteger(), - 'credits': Unsigned16BitInteger(), - 'flags': Unsigned32BitInteger(), + "protocol_id": Binary(), + "status": Unsigned32BitInteger(), + "command": Unsigned16BitInteger(), + "credits": Unsigned16BitInteger(), + "flags": Unsigned32BitInteger(), } # Return a (shallow) copy of base, with the fields of new merged atop it def extended(base, new): - copy = { - k: v for k, v in base.items() - } + copy = {k: v for k, v in base.items()} for k, v in new.items(): copy[k] = v return copy -negotiate_log = SubRecord(extended(header_log, { - 'security_mode': Unsigned16BitInteger(), - 'dialect_revision': Unsigned16BitInteger(), - 'server_guid': Binary(), - 'capabilities': Unsigned32BitInteger(), - 'system_time': Unsigned32BitInteger(), - 'server_start_time': Unsigned32BitInteger(), - 'authentication_types': ListOf(String()), -})) +negotiate_log = SubRecord( + extended( + header_log, + { + "security_mode": Unsigned16BitInteger(), + "dialect_revision": Unsigned16BitInteger(), + "server_guid": Binary(), + "capabilities": Unsigned32BitInteger(), + "system_time": Unsigned32BitInteger(), + "server_start_time": Unsigned32BitInteger(), + "authentication_types": ListOf(String()), + }, + ) +) -session_setup_log = SubRecord(extended(header_log, { - 'setup_flags': Unsigned16BitInteger(), - 'target_name': String(), - 'negotiate_flags': Unsigned32BitInteger(), -})) +session_setup_log = SubRecord( + extended( + header_log, + { + "setup_flags": Unsigned16BitInteger(), + "target_name": String(), + "negotiate_flags": Unsigned32BitInteger(), + }, + ) +) -smb_scan_response = SubRecord({ - 'result': SubRecord({ - 'smbv1_support': Boolean(), - "smb_version": SubRecord({ - "major": Unsigned8BitInteger(doc="Major version"), - "minor": Unsigned8BitInteger(doc="Minor version"), - "revision": Unsigned8BitInteger(doc="Protocol Revision"), - "version_string": String(doc="Full SMB Version String"), - }), - "native_os": String(doc="Operating system claimed by server"), - "ntlm": String(doc="Native LAN Manager"), - "group_name": String(doc="Group name"), - "smb_capabilities": SubRecord({ - "smb_dfs_support": Boolean(doc="Server supports Distributed File System"), - "smb_leasing_support": Boolean(doc="Server supports Leasing"), - "smb_multicredit_support": Boolean(doc="Server supports multi-credit operations"), - "smb_multchan_support": Boolean(doc="Server supports multiple channels per session"), - "smb_persistent_handle_support": Boolean(doc="Server supports persistent handles"), - "smb_directory_leasing_support": Boolean(doc="Server supports directory leasing"), - "smb_encryption_support": Boolean(doc="Server supports encryption"), - }, doc="Capabilities flags for the connection. See [MS-SMB2] Sect. 2.2.4."), - 'negotiation_log': negotiate_log, - 'has_ntlm': Boolean(doc="Server supports the NTLM authentication method"), - 'session_setup_log': session_setup_log, - }) -}, extends=zgrab2.base_scan_response) +smb_scan_response = SubRecord( + { + "result": SubRecord( + { + "smbv1_support": Boolean(), + "smb_version": SubRecord( + { + "major": Unsigned8BitInteger(doc="Major version"), + "minor": Unsigned8BitInteger(doc="Minor version"), + "revision": Unsigned8BitInteger(doc="Protocol Revision"), + "version_string": String(doc="Full SMB Version String"), + } + ), + "native_os": String(doc="Operating system claimed by server"), + "ntlm": String(doc="Native LAN Manager"), + "group_name": String(doc="Group name"), + "smb_capabilities": SubRecord( + { + "smb_dfs_support": Boolean( + doc="Server supports Distributed File System" + ), + "smb_leasing_support": Boolean(doc="Server supports Leasing"), + "smb_multicredit_support": Boolean( + doc="Server supports multi-credit operations" + ), + "smb_multchan_support": Boolean( + doc="Server supports multiple channels per session" + ), + "smb_persistent_handle_support": Boolean( + doc="Server supports persistent handles" + ), + "smb_directory_leasing_support": Boolean( + doc="Server supports directory leasing" + ), + "smb_encryption_support": Boolean( + doc="Server supports encryption" + ), + }, + doc="Capabilities flags for the connection. See [MS-SMB2] Sect. 2.2.4.", + ), + "negotiation_log": negotiate_log, + "has_ntlm": Boolean( + doc="Server supports the NTLM authentication method" + ), + "session_setup_log": session_setup_log, + } + ) + }, + extends=zgrab2.base_scan_response, +) -zschema.registry.register_schema('zgrab2-smb', smb_scan_response) +zschema.registry.register_schema("zgrab2-smb", smb_scan_response) -zgrab2.register_scan_response_type('smb', smb_scan_response) +zgrab2.register_scan_response_type("smb", smb_scan_response) diff --git a/zgrab2_schemas/zgrab2/smtp.py b/zgrab2_schemas/zgrab2/smtp.py index 46f46eef..5399b0f0 100644 --- a/zgrab2_schemas/zgrab2/smtp.py +++ b/zgrab2_schemas/zgrab2/smtp.py @@ -7,17 +7,22 @@ import zcrypto_schemas.zcrypto as zcrypto from . import zgrab2 -smtp_scan_response = SubRecord({ - "result": SubRecord({ - "banner": String(), - "ehlo": String(), - "helo": String(), - "help": String(), - "starttls": String(), - "quit": String(), - "tls": zgrab2.tls_log, - }) -}, extends=zgrab2.base_scan_response) +smtp_scan_response = SubRecord( + { + "result": SubRecord( + { + "banner": String(), + "ehlo": String(), + "helo": String(), + "help": String(), + "starttls": String(), + "quit": String(), + "tls": zgrab2.tls_log, + } + ) + }, + extends=zgrab2.base_scan_response, +) zschema.registry.register_schema("zgrab2-smtp", smtp_scan_response) diff --git a/zgrab2_schemas/zgrab2/ssh.py b/zgrab2_schemas/zgrab2/ssh.py index f9a216fd..13c0d05c 100644 --- a/zgrab2_schemas/zgrab2/ssh.py +++ b/zgrab2_schemas/zgrab2/ssh.py @@ -25,7 +25,7 @@ "curve25519-sha256@libssh.org", "diffie-hellman-group-exchange-sha1", "diffie-hellman-group-exchange-sha256", - ] + ], ) KexAlgorithms = ListOf.with_args(KexAlgorithm()) @@ -47,169 +47,232 @@ "ecdsa-sha2-nistp384", "ecdsa-sha2-nistp521", "ssh-ed25519", - ] + ], ) KeyAlgorithms = ListOf.with_args(KeyAlgorithm()) # From lib/ssh/common.go -- allSupportedCiphers CipherAlgorithm = String.with_args( - doc="An ssh cipher algorithm identifier, named according to section 6 of https://www.ietf.org/rfc/rfc4251.txt; see https://www.iana.org/assignments/ssh-parameters/ssh-parameters.xhtml#ssh-parameters-16 for standard values.", + doc="An ssh cipher algorithm identifier, named according to section 6 of https://www.ietf.org/rfc/rfc4251.txt; see https://www.iana.org/assignments/ssh-parameters/ssh-parameters.xhtml#ssh-parameters-16 for standard values.", examples=[ - "aes128-ctr", "aes192-ctr", "aes256-ctr", "aes128-gcm@openssh.com", - "aes128-cbc", "3des-cbc", "arcfour256", "arcfour128", "arcfour", - ] + "aes128-ctr", + "aes192-ctr", + "aes256-ctr", + "aes128-gcm@openssh.com", + "aes128-cbc", + "3des-cbc", + "arcfour256", + "arcfour128", + "arcfour", + ], ) CipherAlgorithms = ListOf.with_args(CipherAlgorithm()) -# From lib/ssh/common.go -- supportedMACs. +# From lib/ssh/common.go -- supportedMACs. MACAlgorithm = String.with_args( doc="An ssh MAC algorithm identifier, named according to section 6 of https://www.ietf.org/rfc/rfc4251.txt; see https://www.iana.org/assignments/ssh-parameters/ssh-parameters.xhtml#ssh-parameters-18 for standard values.", - examples=["hmac-sha2-256", "hmac-sha1", "hmac-sha1-96"] + examples=["hmac-sha2-256", "hmac-sha1", "hmac-sha1-96"], ) MACAlgorithms = ListOf.with_args(MACAlgorithm()) # From lib/ssh/common.go -- supportedCompressions CompressionAlgorithm = String.with_args( doc="An ssh compression algorithm identifier, named according to section 6 of https://www.ietf.org/rfc/rfc4251.txt; see https://www.iana.org/assignments/ssh-parameters/ssh-parameters.xhtml#ssh-parameters-20 for standard values.", - examples=["none", "zlib"] + examples=["none", "zlib"], ) CompressionAlgorithms = ListOf.with_args(CompressionAlgorithm()) -LanguageTag = String.with_args(doc="A language tag, as defined in https://www.ietf.org/rfc/rfc3066.txt.") -LanguageTags = ListOf.with_args(LanguageTag(), doc="A name-list of language tags in order of preference.") +LanguageTag = String.with_args( + doc="A language tag, as defined in https://www.ietf.org/rfc/rfc3066.txt." +) +LanguageTags = ListOf.with_args( + LanguageTag(), doc="A name-list of language tags in order of preference." +) # zgrab2/lib/ssh/messages.go: (Json)kexInitMsg -KexInitMessage = SubRecordType({ - "cookie": Binary(), - "kex_algorithms": KexAlgorithms(doc="Key exchange algorithms used in the handshake."), - "host_key_algorithms": KeyAlgorithms(doc="Asymmetric key algorithms for the host key supported by the client."), - "client_to_server_ciphers": CipherAlgorithms(), - "server_to_client_ciphers": CipherAlgorithms(), - "client_to_server_macs": MACAlgorithms(), - "server_to_client_macs": MACAlgorithms(), - "client_to_server_compression": CompressionAlgorithms(), - "server_to_client_compression": CompressionAlgorithms(), - "client_to_server_languages": LanguageTags(), - "server_to_client_languages": LanguageTags(), - "first_kex_follows": Boolean(), - "reserved": Unsigned32BitInteger(), -}) +KexInitMessage = SubRecordType( + { + "cookie": Binary(), + "kex_algorithms": KexAlgorithms( + doc="Key exchange algorithms used in the handshake." + ), + "host_key_algorithms": KeyAlgorithms( + doc="Asymmetric key algorithms for the host key supported by the client." + ), + "client_to_server_ciphers": CipherAlgorithms(), + "server_to_client_ciphers": CipherAlgorithms(), + "client_to_server_macs": MACAlgorithms(), + "server_to_client_macs": MACAlgorithms(), + "client_to_server_compression": CompressionAlgorithms(), + "server_to_client_compression": CompressionAlgorithms(), + "client_to_server_languages": LanguageTags(), + "server_to_client_languages": LanguageTags(), + "first_kex_follows": Boolean(), + "reserved": Unsigned32BitInteger(), + "serverHaSSH": String(), + } +) # zgrab2/lib/ssh/log.go: EndpointId -EndpointID = SubRecordType({ - "raw": String(), - "version": String(), - "software": String(), - "comment": String(), -}) +EndpointID = SubRecordType( + { + "raw": String(), + "version": String(), + "software": String(), + "comment": String(), + } +) # This could be merged into a single class with e.g. an analyzed param, # but it's probably clearer to just duplicate it. -AnalyzedEndpointID = SubRecordType({ - "raw": AnalyzedString(), - "version": String(), - "software": AnalyzedString(), - "comment": AnalyzedString(), -}) +AnalyzedEndpointID = SubRecordType( + { + "raw": AnalyzedString(), + "version": String(), + "software": AnalyzedString(), + "comment": AnalyzedString(), + } +) # zgrab2/lib/ssh/kex.go: kexResult -KexResult = SubRecordType({ - "H": Binary(), - "K": Binary(), - "session_id": Binary() -}) +KexResult = SubRecordType({"H": Binary(), "K": Binary(), "session_id": Binary()}) # zgrab2/lib/ssh/keys.go: ed25519PublicKey -ED25519PublicKey = SubRecordType({ - "public_bytes": Binary(), -}) +ED25519PublicKey = SubRecordType( + { + "public_bytes": Binary(), + } +) # zgrab2/lib/ssh/kex.go: curve25519sha256JsonLogParameters (via curve25519sha256) -Curve25519SHA256Params = SubRecordType({ - "client_public": Binary(required=False), - "client_private": Binary(required=False), - "server_public": Binary(required=False), -}) +Curve25519SHA256Params = SubRecordType( + { + "client_public": Binary(required=False), + "client_private": Binary(required=False), + "server_public": Binary(required=False), + } +) # zgrab2/lib/ssh/certs.go: JsonSignature -Signature = SubRecordType({ - "parsed": SubRecord({ - "algorithm": KeyAlgorithm(), - "value": Binary(), - }), - "raw": Binary(), - "h": Binary(), -}) +Signature = SubRecordType( + { + "parsed": SubRecord( + { + "algorithm": KeyAlgorithm(), + "value": Binary(), + } + ), + "raw": Binary(), + "h": Binary(), + } +) # lib/ssh/kex.go: PublicKeyJsonLog, sans the certkey_public_key (since that would create a loop) -SSHPublicKey = SubRecordType({ - "raw": Binary(), - "fingerprint_sha256": String(), - # TODO: Enum? Obviously must serialize to one of rsa/dsa/ecdsa/ed25519_public_key... - "algorithm": String(), - # For compatiblity with ztag - "key_algorithm":String(), - "rsa_public_key": zcrypto.RSAPublicKey(), - "dsa_public_key": zcrypto.DSAPublicKey(), - "ecdsa_public_key": zcrypto.ECDSAPublicKey(), - "ed25519_public_key": ED25519PublicKey(), -}) +SSHPublicKey = SubRecordType( + { + "raw": Binary(), + "fingerprint_sha256": String(), + # TODO: Enum? Obviously must serialize to one of rsa/dsa/ecdsa/ed25519_public_key... + "algorithm": String(), + # For compatiblity with ztag + "key_algorithm": String(), + "rsa_public_key": zcrypto.RSAPublicKey(), + "dsa_public_key": zcrypto.DSAPublicKey(), + "ecdsa_public_key": zcrypto.ECDSAPublicKey(), + "ed25519_public_key": ED25519PublicKey(), + } +) # lib/ssh/certs.go: JsonCertType -CertType = SubRecordType({ - "id": Unsigned32BitInteger(doc="The numerical certificate type value. 1 identifies user certificates, 2 identifies host certificates."), - "name": Enum(values=["USER", "HOST", "unknown"], doc="The human-readable name for the certificate type."), -}) +CertType = SubRecordType( + { + "id": Unsigned32BitInteger( + doc="The numerical certificate type value. 1 identifies user certificates, 2 identifies host certificates." + ), + "name": Enum( + values=["USER", "HOST", "unknown"], + doc="The human-readable name for the certificate type.", + ), + } +) # lib/ssh/certs.go: JsonCertificate -SSHPublicKeyCert = SubRecord.with_args({ - # TODO: Use / include our cert type here, or maybe somewhere else in the response? - "certkey_public_key": SubRecord({ - "nonce": Binary(), - # Note that this is not recursive, since SSHPublicKey() does not include certkey_public_key. - "key": SSHPublicKey(), - "serial": String(doc="The certificate serial number, encoded as a base-10 string."), - "cert_type": CertType(), - "key_id": String(doc="A free-form text field filled in by the CA at the time of signing, intended to identify the principal in log messages."), - "valid_principals": ListOf(String(), doc="Names for which this certificate is valid; hostnames for cert_type=HOST certificates and usernames for cert_type=USER certificates."), - "validity": SubRecord({ - "valid_after": DateTime(doc="Timestamp of when certificate is first valid. Timezone is UTC."), - "valid_before": DateTime(doc="Timestamp of when certificate expires. Timezone is UTC."), - "length": Signed64BitInteger(), - }), - "reserved": Binary(), - "signature_key": SSHPublicKey(), - "signature": Signature(), - "parse_error": String(), - "extensions": SubRecord({ - "known": SubRecord({ - "permit_X11_forwarding": String(), - "permit_agent_forwarding": String(), - "permit_port_forwarding": String(), - "permit_pty": String(), - "permit_user_rc": String(), - }), - "unknown": ListOf(String()), - }), - "critical_options": SubRecord({ - "known": SubRecord({ - "force_command": String(), - "source_address": String(), - }), - "unknown": ListOf(String()), - }) - }) -}, extends=SSHPublicKey()) +SSHPublicKeyCert = SubRecord.with_args( + { + # TODO: Use / include our cert type here, or maybe somewhere else in the response? + "certkey_public_key": SubRecord( + { + "nonce": Binary(), + # Note that this is not recursive, since SSHPublicKey() does not include certkey_public_key. + "key": SSHPublicKey(), + "serial": String( + doc="The certificate serial number, encoded as a base-10 string." + ), + "cert_type": CertType(), + "key_id": String( + doc="A free-form text field filled in by the CA at the time of signing, intended to identify the principal in log messages." + ), + "valid_principals": ListOf( + String(), + doc="Names for which this certificate is valid; hostnames for cert_type=HOST certificates and usernames for cert_type=USER certificates.", + ), + "validity": SubRecord( + { + "valid_after": DateTime( + doc="Timestamp of when certificate is first valid. Timezone is UTC." + ), + "valid_before": DateTime( + doc="Timestamp of when certificate expires. Timezone is UTC." + ), + "length": Signed64BitInteger(), + } + ), + "reserved": Binary(), + "signature_key": SSHPublicKey(), + "signature": Signature(), + "parse_error": String(), + "extensions": SubRecord( + { + "known": SubRecord( + { + "permit_X11_forwarding": String(), + "permit_agent_forwarding": String(), + "permit_port_forwarding": String(), + "permit_pty": String(), + "permit_user_rc": String(), + } + ), + "unknown": ListOf(String()), + } + ), + "critical_options": SubRecord( + { + "known": SubRecord( + { + "force_command": String(), + "source_address": String(), + } + ), + "unknown": ListOf(String()), + } + ), + } + ) + }, + extends=SSHPublicKey(), +) # zgrab2/lib/ssh/common.go: directionAlgorithms -DirectionAlgorithms = SubRecordType({ - "cipher": CipherAlgorithm(), - "mac": MACAlgorithm(), - "compression": CompressionAlgorithm(), -}) +DirectionAlgorithms = SubRecordType( + { + "cipher": CipherAlgorithm(), + "mac": MACAlgorithm(), + "compression": CompressionAlgorithm(), + } +) # zgrab2/lib/ssh/kex.go: interface kexAlgorithm # Searching usages of kexAlgorithm turns up: @@ -217,37 +280,46 @@ # - ecdh: ecdh_params, server_signature, server_host_key # - curve25519sha256: curve25519_sha256_params, server_signature, server_host_key # - dhGEXSHA: dh_params, server_signature, server_host_key -KeyExchange = SubRecordType({ - "curve25519_sha256_params": Curve25519SHA256Params(), - "ecdh_params": zcrypto.ECDHParams(), - "dh_params": zcrypto.DHParams(), - "server_signature": Signature(), - "server_host_key": SSHPublicKeyCert(), -}) +KeyExchange = SubRecordType( + { + "curve25519_sha256_params": Curve25519SHA256Params(), + "ecdh_params": zcrypto.ECDHParams(), + "dh_params": zcrypto.DHParams(), + "server_signature": Signature(), + "server_host_key": SSHPublicKeyCert(), + } +) # zgrab2/lib/ssh/common.go: algorithms (aux in MarshalJSON) -AlgorithmSelection = SubRecordType({ - "dh_kex_algorithm": KexAlgorithm(), - "host_key_algorithm": KeyAlgorithm(), - "client_to_server_alg_group": DirectionAlgorithms(), - "server_to_client_alg_group": DirectionAlgorithms(), -}) +AlgorithmSelection = SubRecordType( + { + "dh_kex_algorithm": KexAlgorithm(), + "host_key_algorithm": KeyAlgorithm(), + "client_to_server_alg_group": DirectionAlgorithms(), + "server_to_client_alg_group": DirectionAlgorithms(), + } +) # zgrab2/lib/ssh/log.go: HandshakeLog # TODO: Can ssh re-use any of the generic TLS model? -ssh_scan_response = SubRecord({ - "result": SubRecord({ - "banner": WhitespaceAnalyzedString(), - "server_id": AnalyzedEndpointID(), - "client_id": EndpointID(), - "server_key_exchange": KexInitMessage(), - "client_key_exchange": KexInitMessage(), - "algorithm_selection": AlgorithmSelection(), - "key_exchange": KeyExchange(), - "userauth": ListOf(String()), - "crypto": KexResult(), - }) -}, extends=zgrab2.base_scan_response) +ssh_scan_response = SubRecord( + { + "result": SubRecord( + { + "banner": WhitespaceAnalyzedString(), + "server_id": AnalyzedEndpointID(), + "client_id": EndpointID(), + "server_key_exchange": KexInitMessage(), + "client_key_exchange": KexInitMessage(), + "algorithm_selection": AlgorithmSelection(), + "key_exchange": KeyExchange(), + "userauth": ListOf(String()), + "crypto": KexResult(), + } + ) + }, + extends=zgrab2.base_scan_response, +) zschema.registry.register_schema("zgrab2-ssh", ssh_scan_response) zgrab2.register_scan_response_type("ssh", ssh_scan_response) diff --git a/zgrab2_schemas/zgrab2/telnet.py b/zgrab2_schemas/zgrab2/telnet.py index 74fa1951..235ebe43 100644 --- a/zgrab2_schemas/zgrab2/telnet.py +++ b/zgrab2_schemas/zgrab2/telnet.py @@ -7,20 +7,27 @@ import zcrypto_schemas.zcrypto as zcrypto from . import zgrab2 -telnet_option = SubRecord({ - "name": String(), - "value": Unsigned16BitInteger(), -}) +telnet_option = SubRecord( + { + "name": String(), + "value": Unsigned16BitInteger(), + } +) -telnet_scan_response = SubRecord({ - "result": SubRecord({ - "banner": String(), - "will": ListOf(telnet_option), - "do": ListOf(telnet_option), - "wont": ListOf(telnet_option), - "dont": ListOf(telnet_option), - }) -}, extends=zgrab2.base_scan_response) +telnet_scan_response = SubRecord( + { + "result": SubRecord( + { + "banner": String(), + "will": ListOf(telnet_option), + "do": ListOf(telnet_option), + "wont": ListOf(telnet_option), + "dont": ListOf(telnet_option), + } + ) + }, + extends=zgrab2.base_scan_response, +) zschema.registry.register_schema("zgrab2-telnet", telnet_scan_response) diff --git a/zgrab2_schemas/zgrab2/tests.py b/zgrab2_schemas/zgrab2/tests.py index bb511763..d49bc4f3 100644 --- a/zgrab2_schemas/zgrab2/tests.py +++ b/zgrab2_schemas/zgrab2/tests.py @@ -17,21 +17,24 @@ import zschema import zschema.registry + def get_data_dir(): - return os.path.join(os.path.dirname(os.path.abspath(__file__)), 'testdata') + return os.path.join(os.path.dirname(os.path.abspath(__file__)), "testdata") + def get_data_file(file): return os.path.join(get_data_dir(), file) + def get_data_files(): dir = get_data_dir() files = os.listdir(dir) - return [ - file for file in files if file.endswith(".json") - ] + return [file for file in files if file.endswith(".json")] + def get_schemas(): - return [ item for item in zgrab2.scan_response_types ] + return [item for item in zgrab2.scan_response_types] + class SchemaTests(unittest.TestCase): diff --git a/zgrab2_schemas/zgrab2/zgrab2.py b/zgrab2_schemas/zgrab2/zgrab2.py index 7e62954f..b5746ea0 100644 --- a/zgrab2_schemas/zgrab2/zgrab2.py +++ b/zgrab2_schemas/zgrab2/zgrab2.py @@ -22,46 +22,59 @@ def DebugOnly(childType): # Get a dict of all keys, mapping key -> true def FlagsSet(keys, **kwargs): - return SubRecord({ - key: Boolean() for key in keys - }, **kwargs) + return SubRecord({key: Boolean() for key in keys}, **kwargs) # zgrab2/processing.go: Grab -grab_result = Record({ - # TODO: ip may be required; see https://github.com/zmap/zgrab2/issues/104 - "ip": IPv4Address(required=False, doc="The IP address of the target."), - "domain": String(required=False, doc="The domain name of the target, if available."), - "data": SubRecord(scan_response_types, doc="The scan data for this host."), -}) +grab_result = Record( + { + # TODO: ip may be required; see https://github.com/zmap/zgrab2/issues/104 + "ip": IPv4Address(required=False, doc="The IP address of the target."), + "domain": String( + required=False, doc="The domain name of the target, if available." + ), + "data": SubRecord(scan_response_types, doc="The scan data for this host."), + } +) # zgrab2/module.go: const SCAN_* STATUS_VALUES = [ - "success", - "connection-refused", - "connection-timeout", - "connection-closed", - "io-timeout", - "protocol-error", - "application-error", - "unknown-error", + "success", + "connection-refused", + "connection-timeout", + "connection-closed", + "io-timeout", + "protocol-error", + "application-error", + "unknown-error", ] # zgrab2/module.go: ScanResponse -base_scan_response = SubRecord({ - "status": Enum(values=STATUS_VALUES, doc="The status of the request."), - "protocol": String(doc="The identifier of the protocol being scanned."), - "timestamp": DateTime(doc="The time the scan was started."), - "result": SubRecord({}, required=False), # This is overridden by the protocols' implementations - "error": String(required=False, doc="If the status was not success, error may contain information about the failure.") - # TODO: error_component? domain? -}) +base_scan_response = SubRecord( + { + "status": Enum(values=STATUS_VALUES, doc="The status of the request."), + "protocol": String(doc="The identifier of the protocol being scanned."), + "timestamp": DateTime(doc="The time the scan was started."), + "result": SubRecord( + {}, required=False + ), # This is overridden by the protocols' implementations + "error": String( + required=False, + doc="If the status was not success, error may contain information about the failure.", + ), + # TODO: error_component? domain? + } +) # zgrab2/tls.go: TLSLog -tls_log = SubRecord({ - "handshake_log": zcrypto.TLSHandshake(doc="The TLS handshake log."), - "heartbleed_log": zcrypto.HeartbleedLog(doc="The heartbleed scan log, if heartbleed scanning was enabled; otherwise, absent.") -}) +tls_log = SubRecord( + { + "handshake_log": zcrypto.TLSHandshake(doc="The TLS handshake log."), + "heartbleed_log": zcrypto.HeartbleedLog( + doc="The heartbleed scan log, if heartbleed scanning was enabled; otherwise, absent." + ), + } +) # Register a schema type for responses with the given name. From 23d0141434bc11895f8c2a60079763508fa676d4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 21 May 2024 22:39:56 +0000 Subject: [PATCH 33/47] --- updated-dependencies: - dependency-name: actions/setup-go dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/integration-test.yml | 2 +- .github/workflows/linter.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/integration-test.yml b/.github/workflows/integration-test.yml index c4060256..d43d7503 100644 --- a/.github/workflows/integration-test.yml +++ b/.github/workflows/integration-test.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Set up Go - uses: actions/setup-go@v2 + uses: actions/setup-go@v5 with: go-version: 1.18 diff --git a/.github/workflows/linter.yml b/.github/workflows/linter.yml index 3f6e3958..0ca5ce6a 100644 --- a/.github/workflows/linter.yml +++ b/.github/workflows/linter.yml @@ -21,7 +21,7 @@ jobs: steps: - uses: actions/checkout@v4 - name: Set up Go - uses: actions/setup-go@v2 + uses: actions/setup-go@v5 with: go-version: 1.18 - name: Run go fmt From 03b3ec5f35487190b5e9fd5ce8e139ccb698008d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 21 May 2024 22:40:30 +0000 Subject: [PATCH 34/47] --- updated-dependencies: - dependency-name: golang.org/x/sys dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- go.mod | 2 +- go.sum | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index ac0f403a..7cbc6cae 100644 --- a/go.mod +++ b/go.mod @@ -14,7 +14,7 @@ require ( github.com/zmap/zflags v1.4.0-beta.1.0.20200204220219-9d95409821b6 golang.org/x/crypto v0.17.0 golang.org/x/net v0.10.0 - golang.org/x/sys v0.15.0 + golang.org/x/sys v0.20.0 golang.org/x/text v0.14.0 google.golang.org/protobuf v1.30.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c diff --git a/go.sum b/go.sum index 91047293..5b2ea179 100644 --- a/go.sum +++ b/go.sum @@ -408,8 +408,9 @@ golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= From bbadc3055ed92873db1464c0e4d31ace0619b0a8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 21 May 2024 18:41:26 -0700 Subject: [PATCH 35/47] Bump alpine from 3.16 to 3.19 updated-dependencies: - dependency-name: alpine dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index d398e866..223c6ab4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -15,7 +15,7 @@ COPY . . RUN make all ## Runtime image ## -FROM alpine:3.16 as run +FROM alpine:3.19 as run COPY --from=build /usr/src/zgrab2/cmd/zgrab2/zgrab2 /usr/bin/zgrab2 From 50a122591af5905fe1d75335dc4225a5cf3001cf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 May 2024 01:49:54 +0000 Subject: [PATCH 36/47] --- (#435) --- go.mod | 6 +++--- go.sum | 17 +++++++++++------ 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index 7cbc6cae..a34603f9 100644 --- a/go.mod +++ b/go.mod @@ -12,10 +12,10 @@ require ( github.com/sirupsen/logrus v1.9.0 github.com/zmap/zcrypto v0.0.0-20230310154051-c8b263fd8300 github.com/zmap/zflags v1.4.0-beta.1.0.20200204220219-9d95409821b6 - golang.org/x/crypto v0.17.0 - golang.org/x/net v0.10.0 + golang.org/x/crypto v0.23.0 + golang.org/x/net v0.25.0 golang.org/x/sys v0.20.0 - golang.org/x/text v0.14.0 + golang.org/x/text v0.15.0 google.golang.org/protobuf v1.30.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 diff --git a/go.sum b/go.sum index 5b2ea179..50550654 100644 --- a/go.sum +++ b/go.sum @@ -263,8 +263,9 @@ golang.org/x/crypto v0.0.0-20201124201722-c8d3bf9c5392/go.mod h1:jdWPYTVW3xRLrWP golang.org/x/crypto v0.0.0-20201208171446-5f87f3452ae9/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= -golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -337,8 +338,10 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -408,7 +411,7 @@ golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= @@ -417,7 +420,8 @@ golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuX golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= -golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -429,8 +433,9 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= From 990c9c36e43b0739e2951255568cf165825b4fa8 Mon Sep 17 00:00:00 2001 From: Sean Smith Date: Tue, 21 May 2024 22:58:46 -0400 Subject: [PATCH 37/47] Fix tests and boundary condition (#410) Fix two failing tests Write a bunch more tests to expand coverage and check for errors Fix a bug where we can have no response and trigger a success --- lib/http/transport.go | 2 +- modules/http/http_readlimit_test.go | 208 +++++++++++++++++++--------- 2 files changed, 146 insertions(+), 64 deletions(-) diff --git a/lib/http/transport.go b/lib/http/transport.go index d9288e6e..f8cfdf54 100644 --- a/lib/http/transport.go +++ b/lib/http/transport.go @@ -1553,7 +1553,7 @@ func (pc *persistConn) readLoop() { closeErr = err } - if err != nil && (!pc.sawEOF || resp == nil) { + if err != nil && (!pc.sawEOF || resp == nil || resp.Status == "") { if pc.readLimit <= 0 { err = fmt.Errorf("net/http: server response headers exceeded %d bytes; aborted", pc.maxHeaderResponseSize()) } diff --git a/modules/http/http_readlimit_test.go b/modules/http/http_readlimit_test.go index 7ed76caf..90eaaeaf 100644 --- a/modules/http/http_readlimit_test.go +++ b/modules/http/http_readlimit_test.go @@ -13,6 +13,7 @@ import ( "github.com/zmap/zcrypto/tls" "github.com/zmap/zgrab2" + "github.com/zmap/zgrab2/lib/http" ) // BEGIN Taken from handshake_server_test.go -- certs for TLS server @@ -107,7 +108,13 @@ func (cfg *readLimitTestConfig) runFakeHTTPServer(t *testing.T) { } head := "HTTP/1.0 200 OK\r\nBogus-Header: X" + if cfg.customHeader != nil { + head = *cfg.customHeader + } headSuffix := fmt.Sprintf("\r\nContent-Length: %d\r\n\r\n", cfg.bodySize) + if cfg.customSuffix != nil { + headSuffix = *cfg.customSuffix + } size := cfg.headerSize - len(head) - len(headSuffix) if size < 0 { t.Fatalf("Header size %d too small: must be at least %d bytes", cfg.headerSize, len(head)+len(headSuffix)) @@ -191,6 +198,11 @@ type readLimitTestConfig struct { // If set, the error returned by the scan must contain this. expectedError string + + // If set, return a custom header + customHeader *string + + customSuffix *string } const ( @@ -198,6 +210,8 @@ const ( readLimitTestConfigHTTPSBasePort = 0x7bbc ) +func adr(s string) *string {return &s} + var readLimitTestConfigs = map[string]*readLimitTestConfig{ // The socket truncates the connection while reading the body. To the client it looks as if the // server closed the connection prior to sending Content-Length bytes; the result is success, @@ -219,84 +233,140 @@ var readLimitTestConfigs = map[string]*readLimitTestConfig{ // and the truncated body. // maxReadSize > headerSize + bodySize > bodySize > maxBodySize "truncate_body": { - tls: false, - port: readLimitTestConfigHTTPBasePort + 1, - maxBodySize: 2048, - maxReadSize: 8192, - headerSize: 64, - bodySize: 4096, + tls: false, + port: readLimitTestConfigHTTPBasePort + 1, + maxBodySize: 2048, + maxReadSize: 8192, + headerSize: 64, + bodySize: 4096, expectedStatus: zgrab2.SCAN_SUCCESS, }, "tls_truncate_body": { - tls: true, - port: readLimitTestConfigHTTPSBasePort + 1, - maxBodySize: 2048, - maxReadSize: 8192, - headerSize: 64, - bodySize: 4096, + tls: true, + port: readLimitTestConfigHTTPSBasePort + 1, + maxBodySize: 2048, + maxReadSize: 8192, + headerSize: 64, + bodySize: 4096, expectedStatus: zgrab2.SCAN_SUCCESS, }, - // The socket truncates the connection while reading the headers. The result isn't a valid HTTP - // response, so the library returns an unexpected EOF error. + // The socket truncates the connection while reading the headers. The result isn't a completely valid HTTP + // response, but we capture the output regardless // headerSize > maxReadSize "truncate_read_header": { - tls: false, - port: readLimitTestConfigHTTPBasePort + 2, - maxBodySize: 1024, - maxReadSize: 2048, - headerSize: 3072, - bodySize: 8, - expectedError: "unexpected EOF", - expectedStatus: zgrab2.SCAN_UNKNOWN_ERROR, + tls: false, + port: readLimitTestConfigHTTPBasePort + 2, + maxBodySize: 1024, + maxReadSize: 2048, + headerSize: 3072, + bodySize: 0, + expectedStatus: zgrab2.SCAN_SUCCESS, }, "tls_truncate_read_header": { - tls: true, - port: readLimitTestConfigHTTPSBasePort + 2, - maxBodySize: 1024, - maxReadSize: 2048, - headerSize: 3072, - bodySize: 8, - expectedError: "unexpected EOF", + tls: true, + port: readLimitTestConfigHTTPSBasePort + 2, + maxBodySize: 1024, + maxReadSize: 2048, + headerSize: 3072, + bodySize: 0, + expectedStatus: zgrab2.SCAN_SUCCESS, + }, + + // The socket truncates the connection while reading the status code. The result isn't a valid HTTP + // response + // headerSize > maxReadSize + "invalid_status_code": { + tls: false, + port: readLimitTestConfigHTTPBasePort + 2, + maxBodySize: 8192, + maxReadSize: 8192, + headerSize: 1024, + bodySize: 1024, + customHeader: adr("HTTP/1.0 200"), + expectedError: "malformed HTTP status code", + expectedStatus: zgrab2.SCAN_UNKNOWN_ERROR, + }, + "tls_invalid_status_code": { + tls: true, + port: readLimitTestConfigHTTPSBasePort + 2, + maxBodySize: 8192, + maxReadSize: 8192, + headerSize: 1024, + bodySize: 1024, + customHeader: adr("HTTP/1.0 200"), + expectedError: "malformed HTTP status code", + expectedStatus: zgrab2.SCAN_UNKNOWN_ERROR, + }, + + "invalid_no_status": { + tls: false, + port: readLimitTestConfigHTTPBasePort + 2, + maxBodySize: 8192, + maxReadSize: 8192, + headerSize: 1024, + bodySize: 1024, + customHeader: adr(""), + customSuffix: adr(""), + expectedError: "malformed HTTP response", + expectedStatus: zgrab2.SCAN_UNKNOWN_ERROR, + }, + + "invalid_response": { + tls: false, + port: readLimitTestConfigHTTPBasePort + 2, + maxBodySize: 8192, + maxReadSize: 8192, + headerSize: 1024, + bodySize: 1024, + customHeader: adr(""), + expectedError: "malformed HTTP response", + expectedStatus: zgrab2.SCAN_UNKNOWN_ERROR, + }, + + "invalid_low_read_limit": { + tls: false, + port: readLimitTestConfigHTTPBasePort + 2, + maxBodySize: 8192, + maxReadSize: 1, + headerSize: 1024, + bodySize: 1024, + expectedError: "malformed HTTP response", expectedStatus: zgrab2.SCAN_UNKNOWN_ERROR, }, // Happy case. None of the limits are hit. // maxReadSize >= maxBodySize > bodySize + headerSize "happy_case": { - tls: false, - port: readLimitTestConfigHTTPBasePort + 3, - maxBodySize: 8192, - maxReadSize: 8192, - headerSize: 1024, - bodySize: 1024, + tls: false, + port: readLimitTestConfigHTTPBasePort + 3, + maxBodySize: 8192, + maxReadSize: 8192, + headerSize: 1024, + bodySize: 1024, expectedStatus: zgrab2.SCAN_SUCCESS, }, "tls_happy_case": { - tls: true, - port: readLimitTestConfigHTTPSBasePort + 3, - maxBodySize: 8192, - maxReadSize: 8192, - headerSize: 1024, - bodySize: 1024, + tls: true, + port: readLimitTestConfigHTTPSBasePort + 3, + maxBodySize: 8192, + maxReadSize: 8192, + headerSize: 1024, + bodySize: 1024, expectedStatus: zgrab2.SCAN_SUCCESS, }, } // Try to get the HTTP body from a result; otherwise return the empty string. -func getBody(result interface{}) string { +func getResponse(result interface{}) *http.Response { if result == nil { - return "" + return nil } httpResult, ok := result.(*Results) if !ok { - return "" - } - response := httpResult.Response - if response == nil { - return "" + return nil } - return response.BodyText + return httpResult.Response } // Run a single test with the given configuration. @@ -307,31 +377,43 @@ func (cfg *readLimitTestConfig) runTest(t *testing.T, testName string) { IP: net.ParseIP("127.0.0.1"), } status, ret, err := scanner.Scan(target) + response := getResponse(ret) if status != cfg.expectedStatus { - t.Errorf("Wrong status: expected %s, got %s", cfg.expectedStatus, status) + t.Errorf("Wrong status: expected %s, got %s with %+v", cfg.expectedStatus, status, response) } if err != nil { if !strings.Contains(err.Error(), cfg.expectedError) { - t.Errorf("Wrong error: expected %s, got %s", err.Error(), cfg.expectedError) + t.Errorf("Wrong error: expected %s, got %s", cfg.expectedError, err.Error()) } } else if len(cfg.expectedError) > 0 { t.Errorf("Expected error '%s' but got none", cfg.expectedError) } if cfg.expectedStatus == zgrab2.SCAN_SUCCESS { - body := getBody(ret) - if body == "" { - t.Errorf("Expected success, but got no body") - } else { - if len(body) > cfg.maxBodySize || len(body) > cfg.maxReadSize { - t.Errorf("Body exceeds max size: len(body)=%d; maxBodySize=%d, maxReadSize=%d", len(body), cfg.maxBodySize, cfg.maxReadSize) - } - if !cfg.tls { - if len(body)+cfg.headerSize > cfg.maxReadSize { - t.Errorf("Body and header exceed max read size: len(body)=%d, headerSize=%d, maxReadSize=%d", len(body), cfg.headerSize, cfg.maxReadSize) - } - } + if response == nil { + t.Errorf("Expected response, but got none") + } + + statusCode := response.Status + if statusCode != "200 OK" { + t.Errorf("Expected status %s, but got %s", "200 OK", statusCode) + } + + body := response.BodyText + if body == "" { + if cfg.bodySize != 0 { + t.Errorf("Expected success, but got no body") + } + } else { + if len(body) > cfg.maxBodySize || len(body) > cfg.maxReadSize { + t.Errorf("Body exceeds max size: len(body)=%d; maxBodySize=%d, maxReadSize=%d", len(body), cfg.maxBodySize, cfg.maxReadSize) + } + if !cfg.tls { + if len(body)+cfg.headerSize > cfg.maxReadSize { + t.Errorf("Body and header exceed max read size: len(body)=%d, headerSize=%d, maxReadSize=%d", len(body), cfg.headerSize, cfg.maxReadSize) + } } + } } } From 6106c1ad2186502a73e5b4e9acae5ffb03cf546d Mon Sep 17 00:00:00 2001 From: guoguangwu Date: Wed, 22 May 2024 14:04:04 +0800 Subject: [PATCH 38/47] fix: close CPU profile Signed-off-by: guoguangwu --- bin/bin.go | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/bin/bin.go b/bin/bin.go index dc490461..50f7a055 100644 --- a/bin/bin.go +++ b/bin/bin.go @@ -61,7 +61,7 @@ func dumpHeapProfile() { // If CPU profiling is enabled (ZGRAB2_CPUPROFILE is not empty), start tracking // CPU profiling in the configured file. Caller is responsible for invoking // stopCPUProfile() when finished. -func startCPUProfile() { +func startCPUProfile() *os.File { if file := getCPUProfileFile(); file != "" { now := time.Now() fullFile := getFormattedFile(file, now) @@ -72,15 +72,21 @@ func startCPUProfile() { if err := pprof.StartCPUProfile(f); err != nil { log.Fatal("could not start CPU profile: ", err) } + return f } + + return nil } // If CPU profiling is enabled (ZGRAB2_CPUPROFILE is not empty), stop profiling // CPU usage. -func stopCPUProfile() { +func stopCPUProfile(f *os.File) { if getCPUProfileFile() != "" { pprof.StopCPUProfile() } + if f != nil { + f.Close() + } } // ZGrab2Main should be called by func main() in a binary. The caller is @@ -88,8 +94,8 @@ func stopCPUProfile() { // include custom sets of scan modules by creating new main packages with custom // sets of ZGrab modules imported with side-effects. func ZGrab2Main() { - startCPUProfile() - defer stopCPUProfile() + f := startCPUProfile() + defer stopCPUProfile(f) defer dumpHeapProfile() _, moduleType, flag, err := zgrab2.ParseCommandLine(os.Args[1:]) From ab1db71e5aa3b09c717de5a0cbbdddc973cb6df3 Mon Sep 17 00:00:00 2001 From: Sean Smith Date: Wed, 22 May 2024 15:54:23 -0400 Subject: [PATCH 39/47] Add TLS support for fox (#403) * Add TLS support for fox module * Add TLS to the schema --------- Co-authored-by: Raymond Nook <59678453+developStorm@users.noreply.github.com> --- modules/fox/log.go | 6 ++++++ modules/fox/scanner.go | 29 ++++++++++++++++++++++++++++- zgrab2_schemas/zgrab2/fox.py | 1 + 3 files changed, 35 insertions(+), 1 deletion(-) diff --git a/modules/fox/log.go b/modules/fox/log.go index 3b8c860c..d715d0ba 100644 --- a/modules/fox/log.go +++ b/modules/fox/log.go @@ -1,5 +1,9 @@ package fox +import ( + "github.com/zmap/zgrab2" +) + // FoxLog is the struct returned to the caller. type FoxLog struct { // IsFox should always be true (otherwise, the result should have been nil). @@ -58,4 +62,6 @@ type FoxLog struct { // AuthAgentType corresponds to the "authAgentTypeSpecs" field. AuthAgentType string `json:"auth_agent_type,omitempty"` + + TLSLog *zgrab2.TLSLog `json:"tls,omitempty"` } diff --git a/modules/fox/scanner.go b/modules/fox/scanner.go index a2ac69cb..a2abf241 100644 --- a/modules/fox/scanner.go +++ b/modules/fox/scanner.go @@ -9,6 +9,7 @@ import ( "errors" log "github.com/sirupsen/logrus" "github.com/zmap/zgrab2" + "net" ) // Flags holds the command-line configuration for the fox scan module. @@ -17,6 +18,8 @@ type Flags struct { zgrab2.BaseFlags Verbose bool `long:"verbose" description:"More verbose logging, include debug fields in the scan results"` + UseTLS bool `long:"use-tls" description:"Sends probe with a TLS connection. Loads TLS module command options."` + zgrab2.TLSFlags } // Module implements the zgrab2.Module interface. @@ -98,12 +101,36 @@ func (scanner *Scanner) Protocol() string { // 4. If the response has the Fox response prefix, mark the scan as having detected the service. // 5. Attempt to read any / all of the data fields from the Log struct func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, interface{}, error) { - conn, err := target.Open(&scanner.config.BaseFlags) + + var ( + conn net.Conn + tlsConn *zgrab2.TLSConnection + err error + ) + + conn, err = target.Open(&scanner.config.BaseFlags) + if scanner.config.UseTLS { + tlsConn, err = scanner.config.TLSFlags.GetTLSConnection(conn) + if err != nil { + return zgrab2.TryGetScanStatus(err), nil, err + } + if err := tlsConn.Handshake(); err != nil { + return zgrab2.TryGetScanStatus(err), nil, err + } + conn = tlsConn + } else { + conn, err = target.Open(&scanner.config.BaseFlags) + } + if err != nil { return zgrab2.TryGetScanStatus(err), nil, err } + defer conn.Close() result := new(FoxLog) + if tlsConn != nil { + result.TLSLog = tlsConn.GetLog() + } err = GetFoxBanner(result, conn) if !result.IsFox { diff --git a/zgrab2_schemas/zgrab2/fox.py b/zgrab2_schemas/zgrab2/fox.py index 212ecd85..fcf0ee0e 100644 --- a/zgrab2_schemas/zgrab2/fox.py +++ b/zgrab2_schemas/zgrab2/fox.py @@ -30,6 +30,7 @@ "brand_id": String(), "sys_info": String(), "agent_auth_type": String(), + "tls": zgrab2.tls_log, } ) }, From 6993f20b8988eff6f752702bee780bc3793d6c4f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 May 2024 15:56:24 -0700 Subject: [PATCH 40/47] build: bump golang from 1.18.3-alpine3.16 to 1.20.4-alpine3.16 (#433) updated-dependencies: - dependency-name: golang dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 223c6ab4..d5150101 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ ## Build image ## -FROM golang:1.18.3-alpine3.16 as build +FROM golang:1.20.4-alpine3.16 as build # System dependencies RUN apk add --no-cache make From 1202cef0bdb030271b31bfaed02b7a4127feb917 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 May 2024 09:56:40 +0000 Subject: [PATCH 41/47] build: bump alpine from 3.19 to 3.20 Bumps alpine from 3.19 to 3.20. --- updated-dependencies: - dependency-name: alpine dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index d5150101..ac9c7225 100644 --- a/Dockerfile +++ b/Dockerfile @@ -15,7 +15,7 @@ COPY . . RUN make all ## Runtime image ## -FROM alpine:3.19 as run +FROM alpine:3.20 as run COPY --from=build /usr/src/zgrab2/cmd/zgrab2/zgrab2 /usr/bin/zgrab2 From 0ad07a915e7ec79638bcd3510e4033f47fdd985f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Jun 2024 03:00:47 +0000 Subject: [PATCH 42/47] Bump google.golang.org/protobuf from 1.30.0 to 1.33.0 (#414) --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index a34603f9..5c1e5265 100644 --- a/go.mod +++ b/go.mod @@ -16,7 +16,7 @@ require ( golang.org/x/net v0.25.0 golang.org/x/sys v0.20.0 golang.org/x/text v0.15.0 - google.golang.org/protobuf v1.30.0 // indirect + google.golang.org/protobuf v1.33.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 gopkg.in/yaml.v2 v2.4.0 diff --git a/go.sum b/go.sum index 50550654..8236b487 100644 --- a/go.sum +++ b/go.sum @@ -564,8 +564,8 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0 google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= -google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From 245907df1f0f3fab94b6a8d97bb218fdae0cf313 Mon Sep 17 00:00:00 2001 From: Raymond Nook <59678453+developStorm@users.noreply.github.com> Date: Wed, 5 Jun 2024 14:05:54 -0700 Subject: [PATCH 43/47] New Protocol: AMQP 0.9.1 (#426) --- go.mod | 1 + go.sum | 3 + integration_tests/amqp091/cleanup.sh | 15 ++ integration_tests/amqp091/setup.sh | 37 ++++ integration_tests/amqp091/test.sh | 60 +++++++ modules/amqp.go | 7 + modules/amqp091/scanner.go | 257 +++++++++++++++++++++++++++ output.json | 1 + zgrab2_schemas/zgrab2/__init__.py | 1 + zgrab2_schemas/zgrab2/amqp091.py | 50 ++++++ 10 files changed, 432 insertions(+) create mode 100755 integration_tests/amqp091/cleanup.sh create mode 100755 integration_tests/amqp091/setup.sh create mode 100755 integration_tests/amqp091/test.sh create mode 100644 modules/amqp.go create mode 100644 modules/amqp091/scanner.go create mode 100644 output.json create mode 100644 zgrab2_schemas/zgrab2/amqp091.py diff --git a/go.mod b/go.mod index 5c1e5265..20b8d4fe 100644 --- a/go.mod +++ b/go.mod @@ -9,6 +9,7 @@ require ( github.com/prometheus/client_golang v1.14.0 github.com/prometheus/common v0.42.0 // indirect github.com/prometheus/procfs v0.9.0 // indirect + github.com/rabbitmq/amqp091-go v1.9.0 github.com/sirupsen/logrus v1.9.0 github.com/zmap/zcrypto v0.0.0-20230310154051-c8b263fd8300 github.com/zmap/zflags v1.4.0-beta.1.0.20200204220219-9d95409821b6 diff --git a/go.sum b/go.sum index 8236b487..a8fb2e2f 100644 --- a/go.sum +++ b/go.sum @@ -207,6 +207,8 @@ github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1 github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= github.com/prometheus/procfs v0.9.0 h1:wzCHvIvM5SxWqYvwgVL7yJY8Lz3PKn49KQtpgMYJfhI= github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY= +github.com/rabbitmq/amqp091-go v1.9.0 h1:qrQtyzB4H8BQgEuJwhmVQqVHB9O4+MNDJCCAcpc3Aoo= +github.com/rabbitmq/amqp091-go v1.9.0/go.mod h1:+jPrT9iY2eLjRaMSRHUhc3z14E/l85kv/f+6luSD3pc= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.3.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= @@ -252,6 +254,7 @@ go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= diff --git a/integration_tests/amqp091/cleanup.sh b/integration_tests/amqp091/cleanup.sh new file mode 100755 index 00000000..a80456c1 --- /dev/null +++ b/integration_tests/amqp091/cleanup.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +# Keep cleaning up even if something fails +set +e + +# Stop all MySQL containers. + +VERSIONS="3.12.14 3.13.2" + +for version in $MYSQL_VERSIONS; do + CONTAINER_NAME="zgrab_amqp091-$version" + echo "amqp091/cleanup: Stopping $CONTAINER_NAME..." + docker stop $CONTAINER_NAME + echo "amqp091/cleanup: ...stopped." +done diff --git a/integration_tests/amqp091/setup.sh b/integration_tests/amqp091/setup.sh new file mode 100755 index 00000000..ddf52e9c --- /dev/null +++ b/integration_tests/amqp091/setup.sh @@ -0,0 +1,37 @@ +#!/bin/bash -e + +VERSIONS="3.12.14 3.13.2" + +function launch() { + VERSION=$1 + CONTAINER_NAME="zgrab_amqp091-$VERSION" + if docker ps --filter "name=$CONTAINER_NAME" | grep -q $CONTAINER_NAME; then + echo "amqp091/setup: Container $CONTAINER_NAME already running -- skipping launch..." + return + fi + docker run -td --rm --name $CONTAINER_NAME rabbitmq:$VERSION +} + +function waitFor() { + VERSION=$1 + CONTAINER_NAME=zgrab_amqp091-$VERSION + echo "amqp091/setup: Waiting for $CONTAINER_NAME to become ready..." + while ! (docker logs --tail all $CONTAINER_NAME | grep -q "started TCP listener on"); do + echo -n "." + sleep 1 + done + for i in $(seq 1 5); do + echo -n "*" + sleep 1 + done + echo "...ok." +} + +echo "amqp091/setup: Launching docker containers..." +for version in $VERSIONS; do + launch $version +done + +for version in $VERSIONS; do + waitFor $version +done diff --git a/integration_tests/amqp091/test.sh b/integration_tests/amqp091/test.sh new file mode 100755 index 00000000..65cdfa2a --- /dev/null +++ b/integration_tests/amqp091/test.sh @@ -0,0 +1,60 @@ +#!/usr/bin/env bash +set -e + +VERSIONS="3.12.14 3.13.2" + +# Run the AMQP-specific integration tests: +# 1. Run zgrab2 on the container +# 2. Check that data.amqp091.result.server_properties.version matches $MQ_VERSION + +ZGRAB_ROOT=$(git rev-parse --show-toplevel) +ZGRAB_OUTPUT=$ZGRAB_ROOT/zgrab-output + +status=0 + +function doTest() { + MQ_VERSION=$1 + + SUFFIX="" + AUTH_ARGS="" + if [[ -n "$2" ]]; then + AUTH_ARGS=$2 + SUFFIX="-auth" + fi + CONTAINER_NAME="zgrab_amqp091-${MQ_VERSION}" + OUTPUT_FILE="$ZGRAB_OUTPUT/amqp091/${MQ_VERSION}${SUFFIX}.json" + echo "amqp091/test: Testing RabbitMQ Version ${MQ_VERSION}${SUFFIX}..." + CONTAINER_NAME=$CONTAINER_NAME $ZGRAB_ROOT/docker-runner/docker-run.sh amqp091 $AUTH_ARGS --timeout 10s >$OUTPUT_FILE + SERVER_VERSION=$(jp -u data.amqp091.result.server_properties.version <$OUTPUT_FILE) + if [[ "$SERVER_VERSION" == "$MQ_VERSION" ]]; then + echo "amqp091/test: Server version matches expected version: $SERVER_VERSION == $MQ_VERSION" + else + echo "amqp091/test: Server version mismatch: Got $SERVER_VERSION, expected $MQ_VERSION. Full output: [[" + cat $OUTPUT_FILE + echo "]]" + status=1 + fi + + if [[ -n "$AUTH_ARGS" ]]; then + AUTH_SUCCESS=$(jp -u data.amqp091.result.auth_success <$OUTPUT_FILE) + if [[ "$AUTH_SUCCESS" == "true" ]]; then + echo "amqp091/test: Auth test successful" + else + echo "amqp091/test: Auth test failed" + status=1 + fi + fi + + echo "amqp091/test: BEGIN docker+amqp091 logs from $CONTAINER_NAME [{(" + docker logs --tail all $CONTAINER_NAME + echo ")}] END docker+amqp091 logs from $CONTAINER_NAME" +} + +mkdir -p $ZGRAB_OUTPUT/amqp091 + +for version in $VERSIONS; do + doTest $version + doTest $version "--auth-user guest --auth-pass guest" +done + +exit $status diff --git a/modules/amqp.go b/modules/amqp.go new file mode 100644 index 00000000..48144f69 --- /dev/null +++ b/modules/amqp.go @@ -0,0 +1,7 @@ +package modules + +import "github.com/zmap/zgrab2/modules/amqp091" + +func init() { + amqp091.RegisterModule() +} diff --git a/modules/amqp091/scanner.go b/modules/amqp091/scanner.go new file mode 100644 index 00000000..ce436f9c --- /dev/null +++ b/modules/amqp091/scanner.go @@ -0,0 +1,257 @@ +package amqp091 + +import ( + "fmt" + + "encoding/json" + + amqpLib "github.com/rabbitmq/amqp091-go" + log "github.com/sirupsen/logrus" + "github.com/zmap/zgrab2" +) + +// Flags holds the command-line configuration for the smb scan module. +// Populated by the framework. +type Flags struct { + zgrab2.BaseFlags + + Vhost string `long:"vhost" description:"The vhost to connect to" default:"/"` + AuthUser string `long:"auth-user" description:"Username to use for authentication. Must be used with --auth-pass. No auth is attempted if not provided."` + AuthPass string `long:"auth-pass" description:"Password to use for authentication. Must be used with --auth-user. No auth is attempted if not provided."` + + UseTLS bool `long:"use-tls" description:"Use TLS to connect to the server. Note that AMQPS uses a different default port (5671) than AMQP (5672) and you will need to specify that port manually with -p."` + zgrab2.TLSFlags +} + +// Module implements the zgrab2.Module interface. +type Module struct { +} + +// Scanner implements the zgrab2.Scanner interface. +type Scanner struct { + config *Flags +} + +type connectionTune struct { + ChannelMax int `json:"channel_max"` + FrameMax int `json:"frame_max"` + Heartbeat int `json:"heartbeat"` +} + +// https://www.rabbitmq.com/amqp-0-9-1-reference#connection.start.server-properties +type knownServerProperties struct { + Product string `json:"product"` + Version string `json:"version"` + Platform string `json:"platform"` + Copyright string `json:"copyright"` + Information string `json:"information"` + UnknownProps string `json:"unknown_props"` +} + +// copy known properties, and store unknown properties in serialized json string +// if known properties are not found, set fields to empty strings +func (p *knownServerProperties) populate(props amqpLib.Table) { + if product, ok := props["product"].(string); ok { + p.Product = product + delete(props, "product") + } + if version, ok := props["version"].(string); ok { + p.Version = version + delete(props, "version") + } + if platform, ok := props["platform"].(string); ok { + p.Platform = platform + delete(props, "platform") + } + if copyright, ok := props["copyright"].(string); ok { + p.Copyright = copyright + delete(props, "copyright") + } + if information, ok := props["information"].(string); ok { + p.Information = information + delete(props, "information") + } + + if unknownProps, err := json.Marshal(props); err == nil { + p.UnknownProps = string(unknownProps) + } +} + +type Result struct { + Failure string `json:"failure"` + + VersionMajor int `json:"version_major"` + VersionMinor int `json:"version_minor"` + ServerProperties knownServerProperties `json:"server_properties"` + Locales []string `json:"locales"` + + AuthSuccess bool `json:"auth_success"` + + Tune *connectionTune `json:"tune,omitempty"` + + TLSLog *zgrab2.TLSLog `json:"tls,omitempty"` +} + +// RegisterModule registers the zgrab2 module. +func RegisterModule() { + var module Module + _, err := zgrab2.AddCommand("amqp091", "amqp091", module.Description(), 5672, &module) + if err != nil { + log.Fatal(err) + } +} + +// NewFlags returns a default Flags object. +func (module *Module) NewFlags() interface{} { + return new(Flags) +} + +// NewScanner returns a new Scanner instance. +func (module *Module) NewScanner() zgrab2.Scanner { + return new(Scanner) +} + +// Description returns an overview of this module. +func (module *Module) Description() string { + return "Probe for Advanced Message Queuing Protocol 0.9.1 servers" +} + +// Validate checks that the flags are valid. +// On success, returns nil. +// On failure, returns an error instance describing the error. +func (flags *Flags) Validate(args []string) error { + if flags.AuthUser != "" && flags.AuthPass == "" { + return fmt.Errorf("must provide --auth-pass if --auth-user is set") + } + if flags.AuthPass != "" && flags.AuthUser == "" { + return fmt.Errorf("must provide --auth-user if --auth-pass is set") + } + return nil +} + +// Help returns the module's help string. +func (flags *Flags) Help() string { + return "" +} + +// Init initializes the Scanner. +func (scanner *Scanner) Init(flags zgrab2.ScanFlags) error { + f, ok := flags.(*Flags) + if !ok { + return fmt.Errorf("failed to cast flags to AMQP flags") + } + + scanner.config = f + return nil +} + +// InitPerSender initializes the scanner for a given sender. +func (scanner *Scanner) InitPerSender(senderID int) error { + return nil +} + +// GetName returns the Scanner name defined in the Flags. +func (scanner *Scanner) GetName() string { + return scanner.config.Name +} + +// GetTrigger returns the Trigger defined in the Flags. +func (scanner *Scanner) GetTrigger() string { + return scanner.config.Trigger +} + +// Protocol returns the protocol identifier of the scan. +func (scanner *Scanner) Protocol() string { + return "amqp091" +} + +func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, interface{}, error) { + conn, err := target.Open(&scanner.config.BaseFlags) + if err != nil { + return zgrab2.TryGetScanStatus(err), nil, err + } + + // Setup result and connection cleanup + result := &Result{ + AuthSuccess: false, + } + var tlsConn *zgrab2.TLSConnection + defer func() { + conn.Close() + + if tlsConn != nil { + result.TLSLog = tlsConn.GetLog() + } + }() + + // If we're using TLS, wrap the connection + if scanner.config.UseTLS { + tlsConn, err = scanner.config.TLSFlags.GetTLSConnection(conn) + if err != nil { + return zgrab2.TryGetScanStatus(err), nil, err + } + + if err := tlsConn.Handshake(); err != nil { + return zgrab2.TryGetScanStatus(err), nil, err + } + + conn = tlsConn + } + + // Prepare AMQP connection config + config := amqpLib.Config{ + Vhost: scanner.config.Vhost, + ChannelMax: 0, + FrameSize: 0, + Heartbeat: 0, + } + + // If we have auth credentials, set up PLAIN SASL + if scanner.config.AuthUser != "" && scanner.config.AuthPass != "" { + config.SASL = []amqpLib.Authentication{ + &amqpLib.PlainAuth{ + Username: scanner.config.AuthUser, + Password: scanner.config.AuthPass, + }, + } + } + + // Open the AMQP connection + amqpConn, err := amqpLib.Open(conn, config) + if err != nil { + result.Failure = err.Error() + } + defer amqpConn.Close() + + // If there's an error and we haven't even received START frame from the server, consider it a failure + if err != nil && len(amqpConn.Locales) == 0 { + status := zgrab2.TryGetScanStatus(err) + if status == zgrab2.SCAN_UNKNOWN_ERROR { + // Consider this a protocol error if it's not any of the known network errors + status = zgrab2.SCAN_PROTOCOL_ERROR + } + + return status, nil, err + } + // If amqpConn.Locales has sth, we are (almost) sure that we are talking to an AMQP 091 server, + // therefore the scan is considered successful from this point on. + + // Following is basic server information that can be gathered without authentication + result.VersionMajor = amqpConn.Major + result.VersionMinor = amqpConn.Minor + result.Locales = amqpConn.Locales + result.ServerProperties.populate(amqpConn.Properties) + + // Heuristic to see if we're authenticated. + // These values are expected to be non-zero if and only if a tune is received and we're authenticated. + if err != amqpLib.ErrSASL && err != amqpLib.ErrCredentials && amqpConn.Config.ChannelMax > 0 { + result.AuthSuccess = true + result.Tune = &connectionTune{ + ChannelMax: amqpConn.Config.ChannelMax, + FrameMax: amqpConn.Config.FrameSize, + Heartbeat: int(amqpConn.Config.Heartbeat.Seconds()), + } + } + + return zgrab2.SCAN_SUCCESS, result, nil +} diff --git a/output.json b/output.json new file mode 100644 index 00000000..a2108239 --- /dev/null +++ b/output.json @@ -0,0 +1 @@ +{"ip":"165.227.114.176","data":{"amqp091":{"status":"success","protocol":"amqp091","result":{"failure":"Exception (403) Reason: \"SASL could not negotiate a shared mechanism\"","version_major":0,"version_minor":9,"server_properties":{"product":"RabbitMQ","version":"3.8.16","platform":"Erlang/OTP 24.0.2","copyright":"Copyright (c) 2007-2021 VMware, Inc. or its affiliates.","information":"Licensed under the MPL 2.0. Website: https://rabbitmq.com","unknown_props":"{\"capabilities\":{\"authentication_failure_close\":true,\"basic.nack\":true,\"connection.blocked\":true,\"consumer_cancel_notify\":true,\"consumer_priorities\":true,\"direct_reply_to\":true,\"exchange_exchange_bindings\":true,\"per_consumer_qos\":true,\"publisher_confirms\":true},\"cluster_name\":\"speedy-red-elephant\"}"},"locales":["en_US"],"auth_success":false,"tls":{"handshake_log":{"server_hello":{"version":{"name":"TLSv1.2","value":771},"random":"ZkReGV9XxyHJdhvR5YvbXWoxZaqOD+F7RE9XTkdSRAE=","session_id":"ienBC9iUZ0TDvYsQK4E3wAhhGPds9QyKfK2+8ZHH10E=","cipher_suite":{"hex":"0xC02F","name":"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256","value":49199},"compression_method":0,"ocsp_stapling":false,"ticket":false,"secure_renegotiation":true,"heartbeat":false,"extended_master_secret":false},"server_certificates":{"certificate":{"raw":"MIIFDzCCA/egAwIBAgISBAameeroCAfXEX+P6HjPx4o3MA0GCSqGSIb3DQEBCwUAMDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJSMzAeFw0yNDA0MTkwOTA0MTNaFw0yNDA3MTgwOTA0MTJaMB8xHTAbBgNVBAMMFCoucm1xMi5jbG91ZGFtcXAuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvzm4SlktbWfAFiUh5x1gHz0ZwocaIrcWlsRNk5iYP33NvQmFNAwv5kGq//BDU62IIEaRvKlXOMvn+1e62TSwQ65RUYpZRlHAOJ64+64adfiGUrIvif2i0VaK5kQrbsPzlm50GNKU3AJtD30bQZnAsrguudGWp8XrHz7smc/+oSiP2TfU0pWyZh94mtx18xMRRBGRCkSY3GiMWHO0zRUVpH0Rdh0U40SdMfqUCOaIo8hEM6q1qmECvm4hAtlqKpW3bvDKFQytb/jqgWomuqQ4TyLL/4In7Ecac01bxrMpUglM18mSNdXfRdrzWMKRb7i8sTsRX9MxhmHJNErDpT5nEwIDAQABo4ICMDCCAiwwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBTM/XXvsow84DPre+rCCefZyorEODAfBgNVHSMEGDAWgBQULrMXt1hWy65QCUDmH6+dixTCxjBVBggrBgEFBQcBAQRJMEcwIQYIKwYBBQUHMAGGFWh0dHA6Ly9yMy5vLmxlbmNyLm9yZzAiBggrBgEFBQcwAoYWaHR0cDovL3IzLmkubGVuY3Iub3JnLzA4BgNVHREEMTAvghcqLmluLnJtcTIuY2xvdWRhbXFwLmNvbYIUKi5ybXEyLmNsb3VkYW1xcC5jb20wEwYDVR0gBAwwCjAIBgZngQwBAgEwggEFBgorBgEEAdZ5AgQCBIH2BIHzAPEAdwBIsONr2qZHNA/lagL6nTDrHFIBy1bdLIHZu7+rOdiEcwAAAY710E/6AAAEAwBIMEYCIQCU6Hlu2rXR9kA1JVGA/tT6h9cs10zJ5jKmpQkDd/NakQIhAK3MKAvRLe+C1qmS9E/BJV1wcsV2VDhXSFzKTQx7VpafAHYAGZgQcQnw1lIuMIDSnj9ku4NuKMz5D1KO7t/OSj8WtMoAAAGO9dBQdgAABAMARzBFAiEAvjIwxkWSNlmj3V5vz5RC9gNeryKRVMSANdcRu4bml7ACIDqzkLl38EdQKxqY1sNLEo9GCpoKoQwxJ/PUo1avmj2lMA0GCSqGSIb3DQEBCwUAA4IBAQB/WnVLyFClipmQTP/5cnkwx5vPK2ijc745zNX16CCdoOEnUKOsQkOKhv/7v4/Hl61BIj/sDb+jlxlbN07Uzbsd54fha/KPcwSnVEgOwuPVA4ruYPRhfPrU4zSCeMp0i0LdbsFMVNRaXIfsQvWGRhlEmmL3i8FTDUV4cWQRvK6U80sCwxyWhkKckvT2qOnjjL2iL16zEJkhIfQ68rFr0lUrpb7Jh6hWonUHQxA4j6/jM0Ath+haBudjH4HqcR/gsAXK5sw7n9vVcFPv74dO0xqJN7q6Erouzht4tfvZxfkVItVzo30SQ7FzGBYCwUT839mhPElCRVTbdp6gvJw6K8sk","parsed":{"version":3,"serial_number":"350712122808254062432312023692293498702391","signature_algorithm":{"name":"SHA256-RSA","oid":"1.2.840.113549.1.1.11"},"issuer":{"common_name":["R3"],"country":["US"],"organization":["Let's Encrypt"]},"issuer_dn":"C=US, O=Let's Encrypt, CN=R3","validity":{"start":"2024-04-19T09:04:13Z","end":"2024-07-18T09:04:12Z","length":7775999},"subject":{"common_name":["*.rmq2.cloudamqp.com"]},"subject_dn":"CN=*.rmq2.cloudamqp.com","subject_key_info":{"key_algorithm":{"name":"RSA"},"rsa_public_key":{"exponent":65537,"modulus":"vzm4SlktbWfAFiUh5x1gHz0ZwocaIrcWlsRNk5iYP33NvQmFNAwv5kGq//BDU62IIEaRvKlXOMvn+1e62TSwQ65RUYpZRlHAOJ64+64adfiGUrIvif2i0VaK5kQrbsPzlm50GNKU3AJtD30bQZnAsrguudGWp8XrHz7smc/+oSiP2TfU0pWyZh94mtx18xMRRBGRCkSY3GiMWHO0zRUVpH0Rdh0U40SdMfqUCOaIo8hEM6q1qmECvm4hAtlqKpW3bvDKFQytb/jqgWomuqQ4TyLL/4In7Ecac01bxrMpUglM18mSNdXfRdrzWMKRb7i8sTsRX9MxhmHJNErDpT5nEw==","length":2048},"fingerprint_sha256":"760c92c9f2b79f1eb9ae2dcf33a08699de785fd394ba9177ed3cb5f962a81ce9"},"extensions":{"key_usage":{"digital_signature":true,"key_encipherment":true,"value":5},"basic_constraints":{"is_ca":false},"subject_alt_name":{"dns_names":["*.in.rmq2.cloudamqp.com","*.rmq2.cloudamqp.com"]},"authority_key_id":"142eb317b75856cbae500940e61faf9d8b14c2c6","subject_key_id":"ccfd75efb28c3ce033eb7beac209e7d9ca8ac438","extended_key_usage":{"server_auth":true,"client_auth":true},"certificate_policies":[{"id":"2.23.140.1.2.1"}],"authority_info_access":{"ocsp_urls":["http://r3.o.lencr.org"],"issuer_urls":["http://r3.i.lencr.org/"]},"signed_certificate_timestamps":[{"version":0,"log_id":"SLDja9qmRzQP5WoC+p0w6xxSActW3SyB2bu/qznYhHM=","timestamp":1713521053,"signature":"BAMASDBGAiEAlOh5btq10fZANSVRgP7U+ofXLNdMyeYypqUJA3fzWpECIQCtzCgL0S3vgtapkvRPwSVdcHLFdlQ4V0hcyk0Me1aWnw=="},{"version":0,"log_id":"GZgQcQnw1lIuMIDSnj9ku4NuKMz5D1KO7t/OSj8WtMo=","timestamp":1713521053,"signature":"BAMARzBFAiEAvjIwxkWSNlmj3V5vz5RC9gNeryKRVMSANdcRu4bml7ACIDqzkLl38EdQKxqY1sNLEo9GCpoKoQwxJ/PUo1avmj2l"}]},"signature":{"signature_algorithm":{"name":"SHA256-RSA","oid":"1.2.840.113549.1.1.11"},"value":"f1p1S8hQpYqZkEz/+XJ5MMebzytoo3O+OczV9eggnaDhJ1CjrEJDiob/+7+Px5etQSI/7A2/o5cZWzdO1M27HeeH4Wvyj3MEp1RIDsLj1QOK7mD0YXz61OM0gnjKdItC3W7BTFTUWlyH7EL1hkYZRJpi94vBUw1FeHFkEbyulPNLAsMcloZCnJL09qjp44y9oi9esxCZISH0OvKxa9JVK6W+yYeoVqJ1B0MQOI+v4zNALYfoWgbnYx+B6nEf4LAFyubMO5/b1XBT7++HTtMaiTe6uhK6Ls4beLX72cX5FSLVc6N9EkOxcxgWAsFE/N/ZoTxJQkVU23aeoLycOivLJA==","valid":false,"self_signed":false},"fingerprint_md5":"50d77a385bb3556dd99074550ea0f664","fingerprint_sha1":"8e85228d704ac0972817d43f5f0f22264e2e7654","fingerprint_sha256":"eda0b0b8a9c28fbbeac1781eb1a8fa49df8480befefa1654cfcebcd7cf3d0891","tbs_noct_fingerprint":"da8a7597d6f3e3ad6a584804f7146a9e38cbd4189035612946b0b2bafe2ce192","spki_subject_fingerprint":"9a3ae45305db9efc51adaddf15ed499f9ef338706c9f9c3d84be359c1ede3305","tbs_fingerprint":"766514440cf4512aeaf14e153dd4acf143f1cf5fa5a7f36a9c02e6c7ba9a85fb","validation_level":"DV","names":["*.in.rmq2.cloudamqp.com","*.rmq2.cloudamqp.com"],"redacted":false}},"chain":[{"raw":"MIIFFjCCAv6gAwIBAgIRAJErCErPDBinU/bWLiWnX1owDQYJKoZIhvcNAQELBQAwTzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2VhcmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjAwOTA0MDAwMDAwWhcNMjUwOTE1MTYwMDAwWjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3MgRW5jcnlwdDELMAkGA1UEAxMCUjMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC7AhUozPaglNMPEuyNVZLD+ILxmaZ6QoinXSaqtSu5xUyxr45r+XXIo9cPR5QUVTVXjJ6oojkZ9YI8QqlObvU7wy7bjcCwXPNZOOftz2nwWgsbvsCUJCWH+jdxsxPnHKzhm+/b5DtFUkWWqcFTzjTIUu61ru2P3mBw4qVUq7ZtDpelQDRrK9O8ZutmNHz6a4uPVymZ+DAXXbpyb/uBxa3Shlg9F8fnCbvxK/eG3MHacV3URuPMrSXBiLxgZ3Vms/EY96Jc5lP/Ooi2R6X/ExjqmAl3P51T+c8B5fWmcBcUr2Ok/5mzk53cU6cG/kiFHaFpriV1uxPMUgP17VGhi9sVAgMBAAGjggEIMIIBBDAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFBQusxe3WFbLrlAJQOYfr52LFMLGMB8GA1UdIwQYMBaAFHm0WeZ7tuXkAXOACIjIGlj26ZtuMDIGCCsGAQUFBwEBBCYwJDAiBggrBgEFBQcwAoYWaHR0cDovL3gxLmkubGVuY3Iub3JnLzAnBgNVHR8EIDAeMBygGqAYhhZodHRwOi8veDEuYy5sZW5jci5vcmcvMCIGA1UdIAQbMBkwCAYGZ4EMAQIBMA0GCysGAQQBgt8TAQEBMA0GCSqGSIb3DQEBCwUAA4ICAQCFyk5HPqP3hUSFvNVneLKYY611TR6WPTNlclQtgaDqw+34IL9fzLdwALduO/ZelN7kIJ+m74uyA+eitRY8kc607TkC53wlikfmZW4/RvTZ8M6UK+5UzhK8jCdLuMGYL6KvzXGRSgi3yLgjewQtCPkIVz6D2QQzCkcheAmCJ8MqyJu5zlzyZMjAvnnAT45tRAxekrsu94sQ4egdRCnbWSDtY7kh+BImlJNXoB1lBMEKIq4QDUOXoRgffuDghje1WrG9ML+Hbisq/yFOGwXD9RiX8F6sw6W4avAuvDszue5L3sz85K+EC4Y/wFVDNvZo4TYXao6Z0f+lQKc0t8DQYzk1OXVu8rp2yJMC6alLbBfODALZvYH7n7do1AZls4I9d1P4jnkDrQoxB3UqQ9hVl3LEKQ73xF1OyK5GhDDX8oVfGKF5u+decIsH4YaTw7mP3GFxJSqv3+0lUFJoi5Lc5da149p90IdshCExroL1+7mryIkXPeFM5TgO9r0rvZaBFOvV2z0gp35Z0+L4WPlbuEjN/lxPFin+HlUjr8gRsI3qfJOQFy/9rKIJR0Y/8Omwt/8oTWgy1mdeHmmjk7j1nYsvC9JSQ6ZvMldlTTKB3zhThV1+XWYp6rjd5JW1zbVWEkLNxE7GJThEUG3szgBVGP7pSWTUTsqXnLRbwHOoq7hHwg==","parsed":{"version":3,"serial_number":"192961496339968674994309121183282847578","signature_algorithm":{"name":"SHA256-RSA","oid":"1.2.840.113549.1.1.11"},"issuer":{"common_name":["ISRG Root X1"],"country":["US"],"organization":["Internet Security Research Group"]},"issuer_dn":"C=US, O=Internet Security Research Group, CN=ISRG Root X1","validity":{"start":"2020-09-04T00:00:00Z","end":"2025-09-15T16:00:00Z","length":158774400},"subject":{"common_name":["R3"],"country":["US"],"organization":["Let's Encrypt"]},"subject_dn":"C=US, O=Let's Encrypt, CN=R3","subject_key_info":{"key_algorithm":{"name":"RSA"},"rsa_public_key":{"exponent":65537,"modulus":"uwIVKMz2oJTTDxLsjVWSw/iC8ZmmekKIp10mqrUrucVMsa+Oa/l1yKPXD0eUFFU1V4yeqKI5GfWCPEKpTm71O8Mu243AsFzzWTjn7c9p8FoLG77AlCQlh/o3cbMT5xys4Zvv2+Q7RVJFlqnBU840yFLuta7tj95gcOKlVKu2bQ6XpUA0ayvTvGbrZjR8+muLj1cpmfgwF126cm/7gcWt0oZYPRfH5wm78Sv3htzB2nFd1EbjzK0lwYi8YGd1ZrPxGPeiXOZT/zqItkel/xMY6pgJdz+dU/nPAeX1pnAXFK9jpP+Zs5Od3FOnBv5IhR2haa4ldbsTzFID9e1RoYvbFQ==","length":2048},"fingerprint_sha256":"8d02536c887482bc34ff54e41d2ba659bf85b341a0a20afadb5813dcfbcf286d"},"extensions":{"key_usage":{"digital_signature":true,"certificate_sign":true,"crl_sign":true,"value":97},"basic_constraints":{"is_ca":true,"max_path_len":0},"crl_distribution_points":["http://x1.c.lencr.org/"],"authority_key_id":"79b459e67bb6e5e40173800888c81a58f6e99b6e","subject_key_id":"142eb317b75856cbae500940e61faf9d8b14c2c6","extended_key_usage":{"server_auth":true,"client_auth":true},"certificate_policies":[{"id":"2.23.140.1.2.1"},{"id":"1.3.6.1.4.1.44947.1.1.1"}],"authority_info_access":{"issuer_urls":["http://x1.i.lencr.org/"]}},"signature":{"signature_algorithm":{"name":"SHA256-RSA","oid":"1.2.840.113549.1.1.11"},"value":"hcpORz6j94VEhbzVZ3iymGOtdU0elj0zZXJULYGg6sPt+CC/X8y3cAC3bjv2XpTe5CCfpu+LsgPnorUWPJHOtO05Aud8JYpH5mVuP0b02fDOlCvuVM4SvIwnS7jBmC+ir81xkUoIt8i4I3sELQj5CFc+g9kEMwpHIXgJgifDKsibuc5c8mTIwL55wE+ObUQMXpK7LveLEOHoHUQp21kg7WO5IfgSJpSTV6AdZQTBCiKuEA1Dl6EYH37g4IY3tVqxvTC/h24rKv8hThsFw/UYl/BerMOluGrwLrw7M7nuS97M/OSvhAuGP8BVQzb2aOE2F2qOmdH/pUCnNLfA0GM5NTl1bvK6dsiTAumpS2wXzgwC2b2B+5+3aNQGZbOCPXdT+I55A60KMQd1KkPYVZdyxCkO98RdTsiuRoQw1/KFXxihebvnXnCLB+GGk8O5j9xhcSUqr9/tJVBSaIuS3OXWtePafdCHbIQhMa6C9fu5q8iJFz3hTOU4Dva9K72WgRTr1ds9IKd+WdPi+Fj5W7hIzf5cTxYp/h5VI6/IEbCN6nyTkBcv/ayiCUdGP/DpsLf/KE1oMtZnXh5po5O49Z2LLwvSUkOmbzJXZU0ygd84U4Vdfl1mKeq43eSVtc21VhJCzcROxiU4RFBt7M4AVRj+6Ulk1E7Kl5y0W8BzqKu4R8I=","valid":false,"self_signed":false},"fingerprint_md5":"e829e65d7c4307d6fbc13c179e037a36","fingerprint_sha1":"a053375bfe84e8b748782c7cee15827a6af5a405","fingerprint_sha256":"67add1166b020ae61b8f5fc96813c04c2aa589960796865572a3c7e737613dfd","tbs_noct_fingerprint":"444ebd67bb83f8807b3921e938ac9178b882bd50aadb11231f044cf5f08df7ce","spki_subject_fingerprint":"390bc358202771a65e7be7a87924d7f2a079de04feb5ffd4163fae4fbf9b11e9","tbs_fingerprint":"444ebd67bb83f8807b3921e938ac9178b882bd50aadb11231f044cf5f08df7ce","validation_level":"DV","redacted":false}}],"validation":{"browser_trusted":false,"browser_error":"x509: failed to load system roots and no roots provided"}},"server_key_exchange":{"ecdh_params":{"curve_id":{"name":"secp256r1","id":23},"server_public":{"x":{"value":"nfV5Z/BX7NG6WAK+7CohY1MI1m76yGrhm3/omzRkRJc=","length":256},"y":{"value":"thOt8w1Yaw5zhmo9+NS8PgjHdlMMPn8Zl1aLvwC7z50=","length":256}}},"digest":"zsHfGj/e8lFwyqqn61neIIhm25oyABuTofdOq4bdi8s=","signature":{"raw":"E+2Fz4oduylrlhqaLHqImJ5IuJ3/RQwyENA9q+o6U9VQsfXvbRw/4ndY5zfyypoFjzOoGRc0Dhx8nz8T4zqui0SPgChSTzCStt1KIfvaVIHWntVa5uWODCjgorji9b4XCrh4hszutMzeV8NXlMMIerTiluTEAiYlsACgArPG0YFoyBLb6ohDTKGeaEq296DxRCaJI1jNfRwbY9z+EBmlfaekjPucPcjnzlEAhMsPlrzEzHPEg8XkGBPGYcadHSbl/9CqOMGws7acR1JTyJAtyKVaJkauZorzsGSN5ZW2lEF/2eqTBal0431dNygx4nuoz1CpqGfAamQbqnLAbTPDZQ==","type":"rsa","valid":true,"signature_and_hash_type":{"signature_algorithm":"rsa","hash_algorithm":"sha256"},"tls_version":{"name":"TLSv1.2","value":771}}},"client_key_exchange":{"ecdh_params":{"curve_id":{"name":"secp256r1","id":23},"client_public":{"x":{"value":"FphxrWdXsuFxMSAu4nK1QkL5gmakbxp3ZFoVgoDKiyk=","length":256},"y":{"value":"n4YXrWbOELzor2eB9sddXjeRmzF8t1++mYnI9yWIe0k=","length":256}},"client_private":{"value":"aD2Kcjp9xdUNcx+j5N7NXxlvxBKFj1vAVc3pnXt7B04=","length":32}}},"client_finished":{"verify_data":"ZwBhDZRd2iJW/Dmf"},"server_finished":{"verify_data":"CIXmEd1/E8gMxmNi"},"key_material":{"master_secret":{"value":"+ZA70wONtgCIJMTd+oATK8EkbqXZLeEV0kv0iGMKmmM6R9BgQlFoYlr6LDTKdG0w","length":48},"pre_master_secret":{"value":"sxkQa0ePkbyP4un9hzAF+jJuLP4XExZq3QC5HjeIQek=","length":32}}}}},"timestamp":"2024-05-15T00:02:49-07:00"}}} diff --git a/zgrab2_schemas/zgrab2/__init__.py b/zgrab2_schemas/zgrab2/__init__.py index 5d510400..5ca9ed17 100644 --- a/zgrab2_schemas/zgrab2/__init__.py +++ b/zgrab2_schemas/zgrab2/__init__.py @@ -21,3 +21,4 @@ from . import telnet from . import ipp from . import banner +from . import amqp091 diff --git a/zgrab2_schemas/zgrab2/amqp091.py b/zgrab2_schemas/zgrab2/amqp091.py new file mode 100644 index 00000000..842e301b --- /dev/null +++ b/zgrab2_schemas/zgrab2/amqp091.py @@ -0,0 +1,50 @@ +# zschema sub-schema for zgrab2's AMQP091 module +# Registers zgrab2-amqp091 globally, and amqp091 with the main zgrab2 schema. +from zschema.leaves import * +from zschema.compounds import * +import zschema.registry + +from . import zgrab2 + +# Schema for connectionTune struct +connection_tune = SubRecord( + { + "channel_max": Unsigned32BitInteger(), + "frame_max": Unsigned32BitInteger(), + "heartbeat": Unsigned32BitInteger(), + } +) + +# Schema for knownServerProperties struct +known_server_properties = SubRecord( + { + "product": String(), + "version": String(), + "platform": String(), + "copyright": String(), + "information": String(), + "unknown_props": String(), + } +) + +# Schema for Result struct +result_schema = SubRecord( + { + "result": SubRecord( + { + "failure": String(), + "version_major": Unsigned32BitInteger(), + "version_minor": Unsigned32BitInteger(), + "server_properties": known_server_properties, + "locales": ListOf(String()), + "auth_success": Boolean(), + "tune": connection_tune, + "tls": zgrab2.tls_log, + } + ) + }, + extends=zgrab2.base_scan_response, +) + +zschema.registry.register_schema("zgrab2-amqp091", result_schema) +zgrab2.register_scan_response_type("amqp091", result_schema) From 74377cf4ea903618fe7830abc6e0352eef3d6a8e Mon Sep 17 00:00:00 2001 From: phillip-stephens Date: Wed, 5 Jun 2024 17:02:24 -0700 Subject: [PATCH 44/47] fixed typo in cleanup script --- integration_tests/amqp091/cleanup.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/integration_tests/amqp091/cleanup.sh b/integration_tests/amqp091/cleanup.sh index a80456c1..4b1ae12b 100755 --- a/integration_tests/amqp091/cleanup.sh +++ b/integration_tests/amqp091/cleanup.sh @@ -3,11 +3,11 @@ # Keep cleaning up even if something fails set +e -# Stop all MySQL containers. +# Stop all AMQP containers. VERSIONS="3.12.14 3.13.2" -for version in $MYSQL_VERSIONS; do +for version in $VERSIONS; do CONTAINER_NAME="zgrab_amqp091-$version" echo "amqp091/cleanup: Stopping $CONTAINER_NAME..." docker stop $CONTAINER_NAME From ed586764a356465a57dbddf429385b7170bc7c87 Mon Sep 17 00:00:00 2001 From: phillip-stephens Date: Thu, 6 Jun 2024 10:13:49 -0700 Subject: [PATCH 45/47] fix formatting --- lib/ssh/messages_test.go | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/lib/ssh/messages_test.go b/lib/ssh/messages_test.go index 92a2f790..985b146b 100644 --- a/lib/ssh/messages_test.go +++ b/lib/ssh/messages_test.go @@ -206,25 +206,26 @@ func TestMarshalMultiTag(t *testing.T) { } } -funcTestHaSSH(t *testing.T) { +func TestHaSSH(t *testing.T) { ki := &KexInitMsg{} - randomBytes(ki.Cookie[:]"," rand) - ki.KexAlgos = []string {"curve25519-sha256@libssh.org","diffie-hellman-group-exchange-sha256","ecdh-sha2-nistp521","ecdh-sha2-nistp384","ecdh-sha2-nistp256","diffie-hellman-group-exchange-sha1","diffie-hellman-group1-sha1","diffie-hellman-group14-sha1","diffie-hellman-group14-sha256","diffie-hellman-group15-sha512","diffie-hellman-group16-sha512","diffie-hellman-group17-sha512","diffie-hellman-group18-sha512","diffie-hellman-group14-sha256@ssh.com","diffie-hellman-group15-sha256","diffie-hellman-group15-sha256@ssh.com","diffie-hellman-group15-sha384@ssh.com","diffie-hellman-group16-sha256","diffie-hellman-group16-sha384@ssh.com","diffie-hellman-group16-sha512@ssh.com","diffie-hellman-group18-sha512@ssh.com") - ki.ServerHostKeyAlgos = randomNameList(rand) - ki.CiphersClientServer = randomNameList(rand) - ki.CiphersServerClient = []string {"aes128-cbc","aes128-ctr","aes192-cbc","aes192-ctr","aes256-cbc","aes256-ctr","blowfish-cbc","blowfish-ctr","cast128-cbc","cast128-ctr","idea-cbc","idea-ctr","serpent128-cbc","serpent128-ctr","serpent192-cbc","serpent192-ctr","serpent256-cbc","serpent256-ctr","3des-cbc","3des-ctr","twofish128-cbc","twofish128-ctr","twofish192-cbc","twofish192-ctr","twofish256-cbc","twofish256-ctr","twofish-cbc","arcfour","arcfour128","arcfour256"} - ki.MACsClientServer = randomNameList(rand) - ki.MACsServerClient = []string {"hmac-sha1","hmac-sha1-96","hmac-md5","hmac-md5-96","hmac-sha2-256","hmac-sha2-512"} - ki.CompressionClientServer = randomNameList(rand) - ki.CompressionServerClient = []string {"zlib@openssh.com","zlib","none"} - ki.LanguagesClientServer = randomNameList(rand) - ki.LanguagesServerClient = randomNameList(rand) + randSource := rand.New(rand.NewSource(0)) + randomBytes(ki.Cookie[:], randSource) + ki.KexAlgos = []string{"curve25519-sha256@libssh.org", "diffie-hellman-group-exchange-sha256", "ecdh-sha2-nistp521", "ecdh-sha2-nistp384", "ecdh-sha2-nistp256", "diffie-hellman-group-exchange-sha1", "diffie-hellman-group1-sha1", "diffie-hellman-group14-sha1", "diffie-hellman-group14-sha256", "diffie-hellman-group15-sha512", "diffie-hellman-group16-sha512", "diffie-hellman-group17-sha512", "diffie-hellman-group18-sha512", "diffie-hellman-group14-sha256@ssh.com", "diffie-hellman-group15-sha256", "diffie-hellman-group15-sha256@ssh.com", "diffie-hellman-group15-sha384@ssh.com", "diffie-hellman-group16-sha256", "diffie-hellman-group16-sha384@ssh.com", "diffie-hellman-group16-sha512@ssh.com", "diffie-hellman-group18-sha512@ssh.com"} + ki.ServerHostKeyAlgos = randomNameList(randSource) + ki.CiphersClientServer = randomNameList(randSource) + ki.CiphersServerClient = []string{"aes128-cbc", "aes128-ctr", "aes192-cbc", "aes192-ctr", "aes256-cbc", "aes256-ctr", "blowfish-cbc", "blowfish-ctr", "cast128-cbc", "cast128-ctr", "idea-cbc", "idea-ctr", "serpent128-cbc", "serpent128-ctr", "serpent192-cbc", "serpent192-ctr", "serpent256-cbc", "serpent256-ctr", "3des-cbc", "3des-ctr", "twofish128-cbc", "twofish128-ctr", "twofish192-cbc", "twofish192-ctr", "twofish256-cbc", "twofish256-ctr", "twofish-cbc", "arcfour", "arcfour128", "arcfour256"} + ki.MACsClientServer = randomNameList(randSource) + ki.MACsServerClient = []string{"hmac-sha1", "hmac-sha1-96", "hmac-md5", "hmac-md5-96", "hmac-sha2-256", "hmac-sha2-512"} + ki.CompressionClientServer = randomNameList(randSource) + ki.CompressionServerClient = []string{"zlib@openssh.com", "zlib", "none"} + ki.LanguagesClientServer = randomNameList(randSource) + ki.LanguagesServerClient = randomNameList(randSource) ki.FirstKexFollows = true - hassh := ki.GenerateHaSSH() + hassh := ki.GenerateServerHaSSH() expected := "8a8ae540028bf433cd68356c1b9e8d5b" if hassh != expected { - t.Errorf("Unexpected hash. Wanted %s, got %s", expected, hassh) + t.Errorf("Unexpected hash. Wanted %s, got %s", expected, hassh) } } From eb19f31fa933aa82d91a8a9e96ff4970eaec7fd9 Mon Sep 17 00:00:00 2001 From: Raymond Nook <59678453+developStorm@users.noreply.github.com> Date: Thu, 6 Jun 2024 10:22:02 -0700 Subject: [PATCH 46/47] docs: docker usage (#438) --- README.md | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 3f53a534..298d1706 100644 --- a/README.md +++ b/README.md @@ -5,8 +5,25 @@ ZGrab is a fast, modular application-layer network scanner designed for completi ZGrab 2.0 contains a new, modular ZGrab framework, which fully supersedes https://github.com/zmap/zgrab. +## Installation -## Building +### With Docker + +You can run ZGrab 2.0 with our official Docker image. For example, to scan a single website using the HTTP module, you can use: + +```shell +echo 'example.com' | docker run --rm -i ghcr.io/zmap/zgrab2 http +``` + +For more complex scanning scenarios, such as using multiple modules or custom configurations, you can create a configuration file and pass it to the container: + +```shell +docker run --rm -i -v /path/to/your/config.ini:/config.ini ghcr.io/zmap/zgrab2 multiple -c /config.ini +``` + +Replace `/path/to/your/config.ini` with the path to your configuration file on the host machine. See [Multiple Module Usage](#multiple-module-usage) for more details on configurations. + +### Building from Source For Go 1.17 and later you must build from source: From dad2032c29193740cb913cba609aad46e1ee7574 Mon Sep 17 00:00:00 2001 From: RicYaben Date: Sat, 8 Jun 2024 15:31:23 +0100 Subject: [PATCH 47/47] simple refactor --- modules/amqp/scanner.go | 206 ++++++++++++++++++++++++++++++++++++++++ modules/http/scanner.go | 17 ++-- 2 files changed, 216 insertions(+), 7 deletions(-) create mode 100644 modules/amqp/scanner.go diff --git a/modules/amqp/scanner.go b/modules/amqp/scanner.go new file mode 100644 index 00000000..77ccf6fe --- /dev/null +++ b/modules/amqp/scanner.go @@ -0,0 +1,206 @@ +package amqp + +import ( + "bufio" + "bytes" + "fmt" + "log" + "net" + "net/url" + + "github.com/zmap/zgrab2" +) + +type Flags struct { + zgrab2.BaseFlags + + Method string `long:"method" default:"M-SEARCH" description:"Request method. Either M-SEARCH or NOTIFY"` + Product string `long:"product" default:"zgrab/0.x" description:"Set a custom value as the product scanning"` +} + +// Module implements the zgrab2.Module interface. +type Module struct { +} + +// Scanner implements the zgrab2.Scanner interface. +type Scanner struct { + config *Flags +} + +type Results struct { + Response *Response `json:"response,omitempty"` +} + +type Request struct { + Length int // Length of the packet + Doff int // DOFF - data offset + SASL interface{} // Type of the content, always SASL + Channel int // Channel to use, ignored otherwise + Method string // Method to authenticate + Arguments map[string]string // Additional arguments included in the packet. Ignored if not known +} + +type Client struct { + Connection net.Conn + Url *url.URL + Properties map[string]string + Auth struct { + Username string + Password string + Certificate string + } +} + +func (client *Client) Do(req *Request) (*Response, error) { + conn := client.Connection + + // Send the request + reqBytes, err := req.Encode() + if err != nil { + return nil, err + } + + if _, err := conn.Write(reqBytes); err != nil { + return nil, err + } + + buf := make([]byte, 256*1024) + n, err := conn.Read(buf) + if err != nil { + return nil, zgrab2.NewScanError(zgrab2.SCAN_UNKNOWN_ERROR, err) + } + + respBuf := bufio.NewReader(bytes.NewBuffer(buf[:n])) + // Parse the response here and return the response... This should follow the + // schema of the protocol, as first opening the connection, checking for + // security policies, authenticating, and joining the broker to retrieve some + // info. + return nil, nil +} + +type scan struct { + scanner *Scanner + target *zgrab2.ScanTarget + results Results + client *Client +} + +// RegisterModule registers the zgrab2 module. +func RegisterModule() { + var module Module + _, err := zgrab2.AddCommand("amqp", "amqp", module.Description(), 5672, &module) + if err != nil { + log.Fatal(err) + } +} + +// NewFlags returns a default Flags object. +func (module *Module) NewFlags() interface{} { + return new(Flags) +} + +// NewScanner returns a new Scanner instance. +func (module *Module) NewScanner() zgrab2.Scanner { + return new(Scanner) +} + +// Description returns text uses in the help for this module. +func (module *Module) Description() string { + return ` + This is an AMQP standard request that test whether the server accepts + unauthenticated connections and encryption. The body of the AMQP + banner contains sever identifiers such as product version, name, + and platform in use. + + The probe covers AMQP 0.9.1, which is completely different from + 1.0. Since AMQP requires authentication by default, we will use + a self-signed certificate or empty credentials. + ` +} + +// Validate checks that the flags are valid. +// On success, returns nil. +// On failure, returns an error instance describing the error. +func (flags *Flags) Validate(args []string) error { + return nil +} + +// Help returns the module's help string. +func (flags *Flags) Help() string { + return "" +} + +// Init initializes the Scanner. +func (scanner *Scanner) Init(flags zgrab2.ScanFlags) error { + f, _ := flags.(*Flags) + scanner.config = f + + return nil +} + +// InitPerSender initializes the scanner for a given sender. +func (scanner *Scanner) InitPerSender(senderID int) error { + return nil +} + +// GetName returns the Scanner name defined in the Flags. +func (scanner *Scanner) GetName() string { + return scanner.config.Name +} + +// GetTrigger returns the Trigger defined in the Flags. +func (scanner *Scanner) GetTrigger() string { + return scanner.config.Trigger +} + +// Protocol returns the protocol identifier of the scan. +func (scanner *Scanner) Protocol() string { + return "amqp" +} + +func (scanner *Scanner) newAMQPScan(target *zgrab2.ScanTarget, conn net.Conn) *scan { + + port := uint16(scanner.config.BaseFlags.Port) + if target.Port != nil { + port = uint16(*target.Port) + } + + host := target.Domain + if len(host) == 0 { + host = target.IP.String() + } + + return &scan{ + scanner: scanner, + target: target, + client: &Client{ + Connection: conn, + Url: &url.URL{ + Scheme: "amqp", + Host: fmt.Sprintf("%s:%d", host, port), + }, + }, + } +} + +func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, interface{}, error) { + conn, err := target.Open(&scanner.config.BaseFlags) + if err != nil { + return zgrab2.TryGetScanStatus(err), nil, err + } + + port := uint16(scanner.config.BaseFlags.Port) + if target.Port != nil { + port = uint16(*target.Port) + } + + host := target.Domain + if len(host) == 0 { + host = target.IP.String() + } + + ret := &Results{} + handler := scanner.newAMQPRequest(host, port) + + return zgrab2.SCAN_SUCCESS, ret, nil +} diff --git a/modules/http/scanner.go b/modules/http/scanner.go index 8a9f12a8..4f701929 100644 --- a/modules/http/scanner.go +++ b/modules/http/scanner.go @@ -196,12 +196,12 @@ func (scanner *Scanner) Init(flags zgrab2.ScanFlags) error { // The case of header names is normalized to title case later by HTTP library // explicitly ToLower() to catch duplicates more easily hName := strings.ToLower(headerNames[i]) - switch { - case hName == "host": + switch hName { + case "host": log.Panicf("Attempt to set immutable header 'Host', specify this in targets file") - case hName == "user-agent": + case "user-agent": log.Panicf("Attempt to set special header 'User-Agent', use --user-agent instead") - case hName == "content-length": + case "content-length": log.Panicf("Attempt to set immutable header 'Content-Length'") } // Disallow duplicate headers @@ -213,17 +213,20 @@ func (scanner *Scanner) Init(flags zgrab2.ScanFlags) error { } } - if fl.ComputeDecodedBodyHashAlgorithm == "sha1" { + switch fl.ComputeDecodedBodyHashAlgorithm { + case "sha1": scanner.decodedHashFn = func(body []byte) string { rawHash := sha1.Sum(body) return fmt.Sprintf("sha1:%s", hex.EncodeToString(rawHash[:])) } - } else if fl.ComputeDecodedBodyHashAlgorithm == "sha256" { + + case "sha256": scanner.decodedHashFn = func(body []byte) string { rawHash := sha256.Sum256(body) return fmt.Sprintf("sha256:%s", hex.EncodeToString(rawHash[:])) } - } else if fl.ComputeDecodedBodyHashAlgorithm != "" { + + case "": log.Panicf("Invalid ComputeDecodedBodyHashAlgorithm choice made it through zflags: %s", scanner.config.ComputeDecodedBodyHashAlgorithm) }