Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
curl: update to 8.2.1
Baptiste Daroussin committed 2 years ago
commit f2c0aef3526961e8bcf6fe589a04280354586a4f
parent 204423d
800 files changed +20721 -17023
modified external/curl/CHANGES
@@ -6,9240 +6,9009 @@

                                  Changelog

-
Version 8.1.2 (30 May 2023)
+
Version 8.2.1 (26 Jul 2023)

-
Daniel Stenberg (30 May 2023)
+
Daniel Stenberg (26 Jul 2023)

- RELEASE-NOTES: synced

-
  8.1.2 release
+
  curl 8.2.1 release

-
- THANKS: contributors from 8.1.2
+
- THANKS: add contributors from 8.2.1

-
- lib1560: verify more scheme guessing
+
- docs: provide more see also for cipher options

-
  - on 2nd level domains
-
  - on names without dots
+
  More cross references. Hide nroff errors.

-
  As mentioned in #11161, "imap.com" will be guessed IMAP
+
  Closes #11513

-
  Closes #11219
+
- docs: mark two TLS options for TLS, not SSL

-
- page-header: minor wording polish in the URL segment
+
  Closes #11514

-
  Closes #11217
+
Brad Harder (25 Jul 2023)

-
- page-header: mention curl version and how to figure out current release
+
- curl_multi_wait.3: fix arg quoting to doc macro .BR

-
  Closes #11216
+
  Closes #11511
+

+
Daniel Stenberg (24 Jul 2023)

- RELEASE-NOTES: synced

-
- configure: without pkg-config and no custom path, use -lnghttp2
+
Viktor Szakats (24 Jul 2023)

-
  Reported-by: correctmost on github
-
  Fixes #11186
-
  Closes #11210
+
- cmake: update ngtcp2 detection

-
Stefan Eissing (28 May 2023)
+
  Replace `OpenSSL` with `quictls` to follow the same change
+
  in the v0.17.0 ngtcp2 release.

-
- curl: cache the --trace-time value for a second
+
  Follow-up to e0093b4b732f6495b0fb1cd6747cbfedcdcf63ed

-
  - caches HH:MM:SS computed and reuses it for logging during
-
    the same second.
-
  - common function for plain log line start formatting
+
  Closes #11508

-
  Closes #11211
+
Stefan Eissing (24 Jul 2023)

-
Kev Jackson (28 May 2023)
+
- http: VLH, very large header test and fixes

-
- libcurl.m4: remove trailing 'dnl' that causes this to break autoconf
+
  - adding tests using very large passwords in auth
+
  - fixes general http sending to treat h3 like h2, and
+
    not like http1.1
+
  - eliminate H2_HEADER max definitions and use the commmon
+
    DYN_HTTP_REQUEST everywhere, different limits do not help
+
  - fix http2 handling of requests denied by nghttp2 on send
+
    to immediately report the refused stream

-
  Closes #11212
+
  Closes #11509

-
Stefan Eissing (26 May 2023)
+
Andrei Rybak (23 Jul 2023)

-
- http3: send EOF indicator early as possible
+
- CONTRIBUTE: drop mention of copyright year ranges

-
  - ngtcp2 and quiche implementations relied on the DONE_SEND event
-
    to forward the EOF for uploads to the libraries. This often
-
    result in a last 0 length EOF data. Tracking the amount of
-
    data left to upload allows EOF indication earlier.
-
  - refs #11205 where CloudFlare DoH servers did not like to
-
    receive the initial upload DATA without EOF and returned
-
    a 400 Bad Request
+
  Year ranges in copyrights were dropped in commits [1] and [2].
+
  Verification of year ranges in copyrights was dropped from script
+
  'scripts/copyright.pl' in commit [3].  However, the corresponding
+
  passages in file 'docs/CONTRIBUTE.md' weren't updated.

-
  Reported-by: Sergey Fionov
-
  Fixes #11205
-
  Closes #11207
+
  Drop mentions of copyright year ranges from 'docs/CONTRIBUTE.md'.

-
Daniel Stenberg (26 May 2023)
+
  [1] 2bc1d775f (copyright: update all copyright lines and remove year
+
      ranges, 2023-01-02)
+
  [2] c46761bd8 (tests/http: remove year ranges from copyrights,
+
      2023-03-14)
+
  [3] 0e293bacb (copyright.pl: cease doing year verifications, 2023-01-28)

-
- scripts/contri*sh: no longer grep -v ' '
+
  Closes #11504

-
  Originally these scripts filtered out names that have no space so that
-
  they better avoid nick names not intended for credits. Such names are
-
  not too commonly used, plus we now give credit even to those.
+
- CONTRIBUTE: fix syntax in commit message description

-
  Additionally: non-latin names, like Asian, don't have spaces at all so
-
  they were also filtered out and had to be manually added which made it
-
  an error-prone operation where Asian names eventually easily fell off by
-
  mistake.
+
  File 'docs/CONTRIBUTE.md' includes a description of how one should write
+
  commit messages in the curl project.  Different possible parts of the
+
  message are enclosed in square brackets.  One exception is the section
+
  describing how the curl project doesn't use "Signed-off-by" commit
+
  trailers [1], which is enclosed in an opening curly brace paired with a
+
  closing square bracket.

-
  Closes #11206
+
  Fix the enclosing square brackets in description of "Signed-off-by"
+
  trailers in commit messages in file 'docs/CONTRIBUTE.md'.

-
- cf-socket: restore Curl_sock_assign_addr()
+
  [1] See description of option '--signoff' in Git documentation:
+
      https://git-scm.com/docs/git-commit

-
  Regression since it was not private. Also used by msh3.c
+
  Closes #11504

-
  Follow-up to 8e85764b7bd7f05f5
-
  Reported-by: Gisle Vanem
-
  Fixes #11202
-
  Closes #11204
+
Daniel Stenberg (23 Jul 2023)

-
- RELEASE-NOTES: synced
+
- src/mkhelp: strip off escape sequences

-
  Taken down to 8.1.2 now for pending patch release
+
  At some point the nroff command stopped stripping off escape sequences,
+
  so then this script needs to do the job instead.

-
- libssh: when keyboard-interactive auth fails, try password
+
  Reported-by: VictorVG on github
+
  Fixes #11501
+
  Closes #11503

-
  The state machine had a mistake in that it would not carry on to that
-
  next step.
+
- KNOWN_BUGS: building for old macOS fails with gcc

-
  This also adds a verbose output what methods that are available from the
-
  server and renames the macros that change to the next auth methods to
-
  try.
+
  Closes #11441

-
  Reported-by: 左潇峰
-
  Fixes #11196
-
  Closes #11197
+
Jacob Hoffman-Andrews (22 Jul 2023)

-
Emanuele Torre (25 May 2023)
+
- rustls: update rustls-ffi 0.10.0

-
- configure: fix build with arbitrary CC and LD_LIBRARY_PATH
+
  This brings in version 0.21.0 of the upstream rustls implementation,
+
  which notable includes support for IP address certificates.

-
  Since ./configure and processes that inherit its environment variables
-
  are the only callers of the run-compiler script, we can just save the
-
  current value of the LD_LIBRARY_PATH and CC variables to another pair of
-
  environment variables, and make run-compiler a static script that
-
  simply restores CC and LD_LIBRARY_PATH to the saved value, and before
-
  running the compiler.
+
  Closes #10865

-
  This avoids having to inject the values of the variables in the script,
-
  possibly causing problems if they contains spaces, quotes, and other
-
  special characters.
+
Brad Harder (22 Jul 2023)

-
  Also add exports in the script just in case LD_LIBRARY_PATH and CC are
-
  not already in the environment.
+
- websocket: rename arguments/variables to match docs

-
  follow-up from 471dab2
+
  Pedantry/semantic-alignment between functions, docs, comments with
+
  respect to websocket protocol code; No functional change intended.

-
  Closes #11182
+
  * "totalsize", "framesize" becomes "fragsize" (we deal in frame fragments).

-
Daniel Stenberg (25 May 2023)
+
  * "sendflags" becomes "flags"

-
- urlapi: remove superfluous host name check
+
  * use canonical CURL *handle

-
  ... as it is checked later more proper.
+
  Closes #11493

-
  Closes #11195
+
Jan Macku (21 Jul 2023)

-
Stefan Eissing (25 May 2023)
+
- bug_report: use issue forms instead of markdown template

-
- http2: fix EOF handling on uploads with auth negotiation
+
  Issue forms allow you to define web-like input forms using YAML
+
  syntax. It allows you to guide the reporter to get the required
+
  information.

-
  - doing a POST with `--digest` does an override on the initial request
-
    with `Content-Length: 0`, but the http2 filter was unaware of that
-
    and expected the originally request body. It did therefore not
-
    send a final DATA frame with EOF flag to the server.
-
  - The fix overrides any initial notion of post size when the `done_send`
-
    event is triggered by the transfer loop, leading to the EOF that
-
    is necessary.
-
  - refs #11194. The fault did not happen in testing, as Apache httpd
-
    never tries to read the request body of the initial request,
-
    sends the 401 reply and closes the stream. The server used in the
-
    reported issue however tried to read the EOF and timed out on the
-
    request.
+
  Signed-off-by: Jan Macku <jamacku@redhat.com>
+
  Closes #11474

-
  Reported-by: Aleksander Mazur
-
  Fixes #11194
-
  Cloes #11200
+
Daniel Stenberg (21 Jul 2023)

-
Daniel Stenberg (23 May 2023)
+
- TODO: Obey Retry-After in redirects
+

+
  (remove "Set custom client ip when using haproxy protocol" which was
+
  shipped in 8.2.0)
+

+
  Mentioned-by: Yair Lenga
+
  Closes #11447

- RELEASE-NOTES: synced

-
  bump to 8.2.0
+
Oliver Roberts (21 Jul 2023)

-
- lib: remove unused functions, make single-use static
+
- amissl: fix AmiSSL v5 detection

-
  Closes #11174
+
  Due to changes in the AmiSSL SDK, the detection needed adjusting.

-
- scripts/singleuse.pl: add more API calls
+
  Closes #11477

-
Christian Hesse (23 May 2023)
+
Alois Klink (21 Jul 2023)

-
- configure: quote the assignments for run-compiler
+
- unittest/makefile: remove unneeded unit1621_LDADD

-
  Building for multilib failed, as the compiler command contains an
-
  extra argument. That needs quoting.
+
  The `unit1621_LDADD` variable has the exact same value as the `LDADD`
+
  flag in `Makefile.am`, except without `@LDFLAGS@ @LIBCURL_LIBS@`.

-
  Regression from b78ca50cb3dda361f9c1
+
  This was originally added by [98e6629][], but I can't see any reason
+
  why it exists, so we should remove it to clean things up.

-
  Fixes #11179
-
  Closes #11180
+
  [98e6629]: https://github.com/curl/curl/commit/98e6629154044e4ab1ee7cff8351c7
+
  ebcb131e88

-
Daniel Stenberg (23 May 2023)
+
  Closes #11494

-
- misc: fix spelling mistakes
+
- unittest/makefile: remove unneeded unit1394_LDADD

-
  Reported-by: musvaage on github
-
  Fixes #11171
-
  Closes #11172
+
  These custom `unit1394_LDADD` and similar automake overrides are no
+
  longer neded. They were originally added by added by [8dac7be][] for
+
  metalink support, but are no longer after [265b14d][] removed metalink.

-
Version 8.1.1 (23 May 2023)
+
  [8dac7be]: https://github.com/curl/curl/commit/8dac7be438512a8725d3c71e9139bd
+
  fdcac1ed8c
+
  [265b14d]: https://github.com/curl/curl/commit/265b14d6b37c4298bd5556fabcbc37
+
  d36f911693

-
Daniel Stenberg (23 May 2023)
+
  Closes #11494

-
- RELEASE-NOTES: synced
+
- cmake: add `libcurlu`/`libcurltool` for unit tests

-
  curl 8.1.1
+
  Add a `libcurlu`/`libcurltool` static library that is compiled only for
+
  unit tests. We use `EXCLUDE_FROM_ALL` to make sure that they're not
+
  built by default, they're only built if unit tests are built.

-
- THANKS: contributors from the 8.1.1 release
+
  These libraries allow us to compile every unit test with CMake.

-
Dan Fandrich (22 May 2023)
+
  Closes #11446

-
- docs: fix fuzzing documentation link
+
Daniel Stenberg (21 Jul 2023)

-
  Follow-up to 4c712a1b
+
- test979: test -u with redirect to (the same) absolute host

-
- CI: add an Alpine build with MUSL
+
  Verifies #11492

-
  MUSL is another libc implementation which has its own unique issues
-
  worth testing.
+
- transfer: do not clear the credentials on redirect to absolute URL

-
  Ref: #11140
-
  Closes #11178
+
  Makes test 979 work. Regression shipped in 8.2.0 from commit
+
  dd4d1a26959f63a2c

-
- runtests: add a missing \n at the end of a log message
+
  Fixes #11486
+
  Reported-by: Cloudogu Siebels
+
  Closes #11492

-
correctmost on github (22 May 2023)
+
Jon Rumsey (20 Jul 2023)

-
- SECURITY-PROCESS.md: link security advisory doc and fix typo
+
- os400: correct EXPECTED_STRING_LASTZEROTERMINATED

-
  Closes #11177
+
  Correct EXPECTED_STRING_LASTZEROTERMINATED to account for
+
  CURLOPT_HAPROXY_CLIENT_IP which requires EBCDIC to ASCII conversion when
+
  passed into curl_easy_setopt().

-
Daniel Stenberg (22 May 2023)
+
  Closes #11476

-
- TODO: build curl with Windows Unicode support
+
Oliver Roberts (20 Jul 2023)

-
  Closes #7229
+
- amissl: add missing signal.h include

-
- KNOWN_BUGS: hyper memory-leaks
+
  In some environments, signal.h is already included, but not in others
+
  which cause compilation to fail, so explictly include it.

-
  Closes #10803
+
  Closes #11478

-
Stefan Eissing (22 May 2023)
+
- amigaos: fix sys/mbuf.h m_len macro clash

-
- http/2: unstick uploads
+
  The updated Curl_http_req_make and Curl_http_req_make2 functions spawned
+
  a parameter called m_len. The AmigaOS networking headers, derived from
+
  NetBSD, contain "#define m_len m_hdr.mh_len" which clashes with
+
  this. Since we do not actually use mbuf, force the include file to be
+
  ignored, removing the clash.

-
  - refs #11157 and #11175 where uploads get stuck or lead to RST streams
-
  - fixes our h2 send behaviour to continue sending in the nghttp2 session
-
    as long as it wants to. This will empty our send buffer as long as
-
    the remote stream/connection window allows.
-
  - in case the window is exhausted, the data remaining in the send buffer
-
    will wait for a WINDOW_UPDATE from the server. Which is a socket event
-
    that engages our transfer loop again
-
  - the problem in the issue was that we did not exhaust the window, but
-
    left data in the sendbuffer and no further socket events did happen.
-
    The server was just waiting for us to send more.
-
  - relatedly, there was an issue fixed that closing a stream with KEEP_HOLD
-
    set kept the transfer from shutting down - as it should have - leading
-
    to a timeout.
+
  Closes #11479

-
  Closes #11176
+
Daniel Stenberg (20 Jul 2023)

-
Daniel Stenberg (21 May 2023)
+
- socks: print ipv6 address within brackets

-
- workflows/macos: add a job using gcc + debug + secure transport
+
  Fixes #11483
+
  Closes #11484

-
Jay Satiro (21 May 2023)
+
Christian Schmitz (20 Jul 2023)

-
- lib: fix conversion warnings with gcc on macOS
+
- libcurl-errors.3: add CURLUE_OK

-
Daniel Stenberg (21 May 2023)
+
  Closes #11488

-
- sectransp.c: make the code c89 compatible
+
Oliver Roberts (20 Jul 2023)

-
  Follow-up to dd2bb485521c2ec713001b3a
+
- cfilters: rename close/connect functions to avoid clashes

-
  Reported-by: FeignClaims on github
-
  Fixes #11155
-
  Closes #11159
+
  Rename `close` and `connect` in `struct Curl_cftype` for
+
  consistency and to avoid clashes with macros of the same name
+
  (the standard AmigaOS networking connect() function is implemented
+
  via a macro).

-
Emanuele Torre (21 May 2023)
+
  Closes #11491

-
- Revert "urlapi: respect CURLU_ALLOW_SPACE and CURLU_NO_AUTHORITY for redirect
-
  s"
+
Stefan Eissing (20 Jul 2023)

-
  This reverts commit df6c2f7b544f1f35f2a3e0be11f345affeb6fe9c.
-
  (It only keep the test case that checks redirection to an absolute URL
-
  without hostname and CURLU_NO_AUTHORITY).
+
- http2: fix regression on upload EOF handling

-
  I originally wanted to make CURLU_ALLOW_SPACE accept spaces in the
-
  hostname only because I thought
-
  curl_url_set(CURLUPART_URL, CURLU_ALLOW_SPACE) was already accepting
-
  them, and they were only not being accepted in the hostname when
-
  curl_url_set(CURLUPART_URL) was used for a redirection.
+
  - a regression introduced by c9ec85121110d7cbbbed2990024222c8f5b8afe5
+
    where optimization of small POST bodies leads to a new code path
+
    for such uploads that did not trigger the "done sending" event
+
  - add triggering this event for early "upload_done" situations

-
  That is not actually the case, urlapi never accepted hostnames with
-
  spaces, and a hostname with a space in it never makes sense.
-
  I probably misread the output of my original test when I they were
-
  normally accepted when using CURLU_ALLOW_SPACE, and not redirecting.
+
  Fixes #11485
+
  Closes #11487
+
  Reported-by: Aleksander Mazur

-
  Some other URL parsers seems to allow space in the host part of the URL,
-
  e.g. both python3's urllib.parse module, and Chromium's javascript URL
-
  object allow spaces (chromium percent escapes the spaces with %20),
-
  (they also both ignore TABs, and other whitespace characters), but those
-
  URLs with spaces in the hostname are useless, neither python3's requests
-
  module nor Chromium's window.location can actually use them.
+
Daniel Stenberg (19 Jul 2023)

-
  There is no reason to add support for URLs with spaces in the host,
-
  since it was not a inconsistency bug; let's revert that patch before it
-
  makes it into release. Sorry about that.
+
- configure: check for nghttp2_session_get_stream_local_window_size

-
  I also reverted the extra check for CURLU_NO_AUTHORITY since that does
-
  not seem to be necessary, CURLU_NO_AUTHORITY already worked for
-
  redirects.
+
  The http2 code uses it now. Introduced in nghttp2 1.15.0 (Sep 2016)

-
  Closes #11169
+
  Fixes #11470
+
  Reported-by: Paul Howarth
+
  Closes #11473

-
Dan Fandrich (20 May 2023)
+
Stefan Eissing (19 Jul 2023)

-
- runtests: use the correct fd after select
+
- quiche: fix segfault and other things

-
  The code was using the wrong fd when determining which runner was ready
-
  with a response.
+
  - refs #11449 where a segfault is reported when IP Eyeballing did
+
    not immediately connect but made several attempts
+
  - The transfer initiating the eyeballing was initialized  too early,
+
    leadding to references to the filter instance that was then
+
    replaced in the subsequent eyeball attempts. That led to a use
+
    after free in the buffer handling for the transfer
+
  - transfers are initiated now more lazy (like in the ngtcp2 filter),
+
    when the stream is actually opened
+
  - suppress reporting on quiche event errors for "other" transfers
+
    than the current one to not fail a transfer due to faults in
+
    another one.
+
  - revert recent return value handling for quiche_h3_recv_body()
+
    to not indicate an error but an EAGAIN situation. We wish quiche
+
    would document what functions return.

-
  Ref: #10818
-
  Closes #11160
+
  Fixes #11449
+
  Closes #11469
+
  Reported-by: ウさん

-
- test425: fix the log directory for the upload
+
Daniel Stenberg (19 Jul 2023)

-
  This must be %LOGDIR to let it work with parallel tests.
+
- hostip: return IPv6 first for localhost resolves

-
  Ref: #10969
+
  Fixes #11465
+
  Reported-by: Chilledheart on github
+
  Closes #11466

-
- runtests: handle interrupted reads from IPC pipes
+
Harry Sintonen (19 Jul 2023)

-
  These can be interrupted by signals, especially SIGINT to shut down, and
-
  must be restarted so the IPC call arrives correctly. If the read just
-
  returns an error instead, the IPC calling state will go out of sync and
-
  a proper shutdown won't happen.
+
- tool: fix tool_seek_cb build when SIZEOF_CURL_OFF_T > SIZEOF_OFF_T

-
  Ref: #10818
+
  - a variable was renamed, and some use of it wasn't. this fixes the
+
    build.

-
Stefan Eissing (20 May 2023)
+
  Closes #11468

-
- http2: upload improvements
+
Stefan Eissing (19 Jul 2023)

-
  Make send buffer smaller to have progress and "upload done" reporting
-
  closer to reality. Fix handling of send "drain" condition to no longer
-
  trigger once the transfer loop reports it is done sending. Also do not
-
  trigger the send "drain" on RST streams.
+
- quiche: fix lookup of transfer at multi

-
  Background:
-
  - a upload stall was reported in #11157 that timed out
-
  - test_07_33a reproduces a problem with such a stall if the
-
    server 404s the request and RSTs the stream.
-
  - test_07_33b verifies a successful PUT, using the parameters
-
    from #11157 and checks success
+
  - refs #11449 where weirdness in quiche multi connection tranfers was
+
    observed
+
  - fixes lookup of transfer for a quiche event to take the connection
+
    into account
+
  - formerly, a transfer with the same stream_id, but on another connection
+
    could be found

-
  Ref: #11157
-
  Closes #11165
+
  Closes #11462

-
- http2: increase stream window size to 10 MB
+
Daniel Stenberg (19 Jul 2023)

-
  Reported-by: pandada8 on github
+
- RELEASE-NOTES: synced

-
  Fixes #11162
-
  Closes #11167
+
  bump to 8.2.1

-
Daniel Stenberg (20 May 2023)
+
John Haugabook (19 Jul 2023)

-
- lib: rename struct 'http_req' to 'httpreq'
+
- ciphers.d: put URL in first column

-
  Because FreeBSD 14 kidnapped the name.
-
  Ref: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=271526
+
  This makes the URL turn into a link properly when "webified".

-
  Fixes #11163
-
  Closes #11164
+
  Fixes https://github.com/curl/curl-www/issues/270
+
  Closes #11464

-
Viktor Szakats (20 May 2023)
+
Version 8.2.0 (19 Jul 2023)

-
- cmake: avoid `list(PREPEND)` for compatibility
+
Daniel Stenberg (19 Jul 2023)

-
  `list(PREPEND)` requires CMake v3.15, our minimum is v3.7.
+
- RELEASE-NOTES: synced

-
  Ref: https://cmake.org/cmake/help/latest/command/list.html#prepend
+
  8.2.0 release

-
  Regression from 1e3319a167d2f32d295603167486e9e88af9bb4e
+
- THANKS-filter: strip out "GitHub"

-
  Reported-by: Keitagit-kun on Github
-
  Fixes #11141
-
  Closes #11144
+
- THANKS: add contributors from 8.2.0

-
Daniel Stenberg (19 May 2023)
+
- RELEASE-PROCEDURE.md: adjust the release dates

-
- RELEASE-NOTES: synced
+
Stefan Eissing (17 Jul 2023)

-
Stefan Eissing (19 May 2023)
+
- quiche: fix defects found in latest coverity report

-
- ngtcp2: proper handling of uint64_t when adjusting send buffer
+
  Closes #11455

-
  Fixes #11149
-
  Closes #11153
+
Daniel Stenberg (17 Jul 2023)

-
- ngtcp2: fix compiler warning about possible null-deref
+
- quiche: avoid NULL deref in debug logging

-
  - compiler analyzer did not include the call context for this
-
    static function where the condition had already been checked.
-
  - eleminating the problem by making stream a call parameter
+
  Coverity reported "Dereference after null check"

-
  Fixes #11147
-
  Closes #11151
+
  If stream is NULL and the function exits, the logging must not deref it.

-
Emanuele Torre (19 May 2023)
+
  Closes #11454

-
- docs: document that curl_url_cleanup(NULL) is a safe no-op
+
Stefan Eissing (17 Jul 2023)

-
  This has always been the case, but it was not documented.
+
- http2: treat initial SETTINGS as a WINDOW_UPDATE

-
  The paragraph was copied verbatim from curl_easy_cleanup.3
+
  - refs #11426 where spurious stalls on large POST requests
+
    are reported
+
  - the issue seems to involve the following
+
    * first stream on connection adds up to 64KB of POST
+
      data, which is the max default HTTP/2 stream window size
+
      transfer is set to HOLD
+
    * initial SETTINGS from server arrive, enlarging the stream
+
      window. But no WINDOW_UPDATE is received.
+
    * curl stalls
+
  - the fix un-HOLDs a stream on receiving SETTINGS, not
+
    relying on a WINDOW_UPDATE from lazy servers

-
  Closes #11150
+
  Closes #11450

-
Antoine Pitrou (19 May 2023)
+
Daniel Stenberg (17 Jul 2023)

-
- select: avoid returning an error on EINTR from select() or poll()
+
- ngtcp2: assigning timeout, but value is overwritten before used

-
  This was already done for the poll() and select() calls
-
  made directly from Curl_poll(), but was missed in
-
  Curl_wait_ms(), which is called when there are no fds
-
  to wait on.
+
  Reported by Coverity

-
  Fixes #11135
-
  Closes #11143
+
  Closes #11453

-
Daniel Stenberg (19 May 2023)
+
- krb5: add typecast to please Coverity

-
- vquic.c: make recvfrom_packets static, avoid compiler warning
+
Derzsi Dániel (16 Jul 2023)

-
  warning: no previous prototype for 'recvfrom_packets'
+
- wolfssl: support setting CA certificates as blob

-
  Reported-by: Keitagit-kun on github
-
  Fixes #11146
-
  Closes #11148
+
  Closes #11445

-
- urlapi: allow numerical parts in the host name
+
- wolfssl: detect when TLS 1.2 support is not built into wolfssl

-
  It can only be an IPv4 address if all parts are all digits and no more than
-
  four parts, otherwise it is a host name. Even slightly wrong IPv4 will now be
-
  passed through as a host name.
+
  Closes #11444

-
  Regression from 17a15d88467 shipped in 8.1.0
+
Graham Campbell (15 Jul 2023)

-
  Extended test 1560 accordingly.
+
- CI: bump nghttp2 from 1.55.0 to 1.55.1

-
  Reported-by: Pavel Kalyugin
-
  Fixes #11129
-
  Closes #11131
+
  Closes #11442

-
Emilio Cobos Álvarez (19 May 2023)
+
Daniel Stenberg (15 Jul 2023)

-
- http2: double http request parser max line length
+
- curl: return error when asked to use an unsupported HTTP version

-
  This works around #11138, by doubling the limit, and should be a
-
  relatively safe fix.
+
  When one of the following options are used but the libcurl in use does
+
  not support it:

-
  Ideally the buffer would grow as needed and there would be no need for a
-
  limit? But that might be follow-up material.
+
  --http2
+
  --http2-prior-knowledge
+
  --proxy-http2

-
  Fixes #11138
-
  Closes #11139
+
  Closes #11440

-
Emanuele Torre (18 May 2023)
+
Chris Paulson-Ellis (14 Jul 2023)

-
- configure: fix --help alignment
+
- cf-socket: don't bypass fclosesocket callback if cancelled before connect

-
  AC_ARG_ENABLE seems to only trim off whitespace from the start and end
-
  of its help-string argument, while prepending two spaces of indentation
-
  to all lines.
+
  After upgrading to 8.1.2 from 7.84.0, I found that sockets were being
+
  closed without calling the fclosesocket callback if a request was
+
  cancelled after the associated socket was created, but before the socket
+
  was connected. This lead to an imbalance of fopensocket & fclosesocket
+
  callbacks, causing problems with a custom event loop integration using
+
  the multi-API.

-
  This means that the two spaces of indentation between the --enable-rtsp
-
  and the --disable-rtsp line were not removed causing ./configure --help
-
  to print:
+
  This was caused by cf_socket_close() calling sclose() directly instead
+
  of calling socket_close() if the socket was not active. For regular TCP
+
  client connections, the socket is activated by cf_socket_active(), which
+
  is only called when the socket completes the connect.

-
    Optional Features:
-
      [...]
-
      --enable-rtsp           Enable RTSP support
-
        --disable-rtsp          Disable RTSP support
+
  As far as I can tell, this issue has existed since 7.88.0. That is,
+
  since the code in question was introduced by:
+
      commit 71b7e0161032927cdfb4e75ea40f65b8898b3956
+
      Author: Stefan Eissing <stefan@eissing.org>
+
      Date:   Fri Dec 30 09:14:55 2022 +0100

-
  I removed the indentation to fix the issue, now it prints:
+
          lib: connect/h2/h3 refactor

-
    Optional Features:
-
      [...]
-
      --enable-rtsp           Enable RTSP support
-
      --disable-rtsp          Disable RTSP support
+
  Closes #11439

-
  The --enable-hsts and --disable-hsts lines had the same problems, and
-
  have been fixed too.
+
Daniel Stenberg (13 Jul 2023)

-
  Closes #11142
+
- tool_parsecfg: accept line lengths up to 10M

-
Deal(一线灵) (18 May 2023)
+
  Bumped from 100K set in 47dd957daff9

-
- cmake: repair cross compiling
+
  Reported-by: Antoine du Hamel
+
  Fixes #11431
+
  Closes #11435

-
  It cannot *run* code for testing purposes when cross-compiling.
+
Stefan Eissing (13 Jul 2023)

-
  Closes #11130
+
- CI: brew fix for openssl in default path

-
Daniel Stenberg (18 May 2023)
+
  If brew install/update links openssl into /usr/local, it will be found
+
  before anything we add with `-isystem path` to CPP/LDLFAGS.  Get rid of
+
  that by unlinking the keg.

-
- configure: generate a script to run the compiler
+
  Fixes #11413
+
  Closes #11436

-
  in the CURL_RUN_IFELSE macro, with LD_LIBRARY_PATH set to the value of
-
  the configure invoke, and not the value that might be used later,
-
  intended for the execution of the output the compiler ouputs.
+
Daniel Stenberg (13 Jul 2023)

-
  For example when the compiler uses the same library (like libz) that
-
  configure checks for.
+
- RELEASE-NOTES: synced

-
  Reported-by: Jonas Bülow
-
  Fixes #11114
-
  Closes #11120
+
Ondřej Koláček (13 Jul 2023)

-
Stefan Eissing (18 May 2023)
+
- sectransp: fix EOF handling

-
- cf-socket: completely remove the disabled USE_RECV_BEFORE_SEND_WORKAROUND
+
  Regression since the large refactor from 2022

-
  Closes #11118
+
  Closes #11427

-
Emanuele Torre (18 May 2023)
+
Daniel Stenberg (13 Jul 2023)

-
- urlapi: respect CURLU_ALLOW_SPACE and CURLU_NO_AUTHORITY for redirects
+
- checksrc: quote the file name to work with "funny" letters

-
  curl_url_set(uh, CURLUPART_URL, redirurl, flags)  was not respecing
-
  CURLU_ALLOW_SPACE and CURLU_NO_AUTHORITY in the host part of redirurl
-
  when redirecting to an absolute URL.
+
  Closes #11437

-
  Closes #11136
+
Karthikdasari0423 (13 Jul 2023)

-
Colin Cross (18 May 2023)
+
- HTTP3.md: ngtcp2 updated to v0.17.0 and nghttp3 to v0.13.0

-
- hostip: move easy_lock.h include above curl_memory.h
+
  Follow-up to e0093b4b732f6

-
  Similar to #9561, move easy_lock.h above curl_memory.h to fix building
-
  against musl libc.
+
  Closes #11433

-
  Closes #11140
+
Daniel Stenberg (13 Jul 2023)

-
Hind Montassif (18 May 2023)
+
- CURLOPT_MIMEPOST.3: clarify what setting to NULL means

-
- curl_easy_getinfo: clarify on return data types
+
  Follow-up to e08382a208d4e480

-
  Closes #11126
+
  Closes #11430

-
Emanuele Torre (18 May 2023)
+
Tatsuhiro Tsujikawa (12 Jul 2023)

-
- checksrc: disallow spaces before labels
+
- ngtcp2: build with 0.17.0 and nghttp3 0.13.0

-
  Out of 415 labels throughout the code base, 86 of those labels were
-
  not at the start of the line. Which means labels always at the start of
-
  the line is the favoured style overall with 329 instances.
+
  - ngtcp2_crypto_openssl was renamed to ngtcp2_crypto_quictls.

-
  Out of the 86 labels not at the start of the line:
-
  * 75 were indented with the same indentation level of the following line
-
  * 8 were indented with exactly one space
-
  * 2 were indented with one fewer indentation level then the following
-
    line
-
  * 1 was indented with the indentation level of the following line minus
-
    three space (probably unintentional)
+
  Closes #11428

-
  Co-Authored-By: Viktor Szakats
+
- CI: Bump ngtcp2, nghttp3, and nghttp2

-
  Closes #11134
+
  Closes #11428

-
Daniel Stenberg (18 May 2023)
+
James Fuller (11 Jul 2023)

-
- cookie: update the comment on cookie length and size limits
+
- example/maxconnects: set maxconnect example

-
  To refer to the proper cookie RFC and the upcoming RFC refresh.
+
  Closes #11343

-
  Closes #11127
+
Pontakorn Prasertsuk (11 Jul 2023)

-
- url: provide better error message when URLs fail to parse
+
- http2: send HEADER & DATA together if possible

-
  By providing the URL API error message into the error message.
+
  Closes #11420

-
  Ref: #11129
-
  Closes #11137
+
Daniel Stenberg (11 Jul 2023)

-
- RELEASE-NOTES: synced
+
- CI: use wolfSSL 5.6.3 in builds

-
  bumped to 8.1.1
+
  No using master anymore

-
Jon Rumsey (18 May 2023)
+
  Closes #11424

-
- os400: update chkstrings.c
+
SaltyMilk (11 Jul 2023)

-
  Compensate changes for recent changes to urldata.h to reclassify
-
  STRING_AWS_SIGV4.
+
- fopen: optimize

-
  Fixes #11132
-
  Closes #11133
+
  Closes #11419

-
Version 8.1.0 (17 May 2023)
+
Daniel Stenberg (11 Jul 2023)

-
Daniel Stenberg (17 May 2023)
+
- cmake: make use of snprintf

-
- RELEASE-NOTES: synced
+
  Follow-up to 935b1bd4544a23a91d68

-
- THANKS: contributors from the 8.1.0 release
+
  Closes #11423

-
- hostip: include easy_lock.h before using GLOBAL_INIT_IS_THREADSAFE
+
Stefan Eissing (11 Jul 2023)

-
  Since that header file is the only place that define can be defined.
+
- macOS: fix taget detection

-
  Reported-by: Marc Deslauriers
+
  - TARGET_OS_OSX is not always defined on macOS
+
  - this leads to missing symbol Curl_macos_init()
+
  - TargetConditionals.h seems to define these only when
+
    dynamic targets are enabled (somewhere?)
+
  - this PR fixes that on my macOS 13.4.1
+
  - I have no clue why CI builds worked without it

-
  Follow-up to 13718030ad4b3209
+
  Follow-up to c7308592fb8ba213fc2c1
+
  Closes #11417

-
  Closes #11121
+
Stan Hu (9 Jul 2023)

-
Thomas Taylor (16 May 2023)
+
- hostip.c: Move macOS-specific calls into global init call

-
- aws-sigv4.d: fix region identifier in example
+
  https://github.com/curl/curl/pull/7121 introduced a macOS system call
+
  to `SCDynamicStoreCopyProxies`, which is invoked every time an IP
+
  address needs to be resolved.

-
  Closes #11117
+
  However, this system call is not thread-safe, and macOS will kill the
+
  process if the system call is run first in a fork. To make it possible
+
  for the parent process to call this once and prevent the crash, only
+
  invoke this system call in the global initialization routine.

-
Philip Heiduck (15 May 2023)
+
  In addition, this change is beneficial because it:

-
- mlc_config.json: remove this linkcheck CI job config file
+
  1. Avoids extra macOS system calls for every IP lookup.
+
  2. Consolidates macOS-specific initialization in a separate file.

-
  Closes #11113
+
  Fixes #11252
+
  Closes #11254

-
Daniel Silverstone (15 May 2023)
+
Daniel Stenberg (9 Jul 2023)

-
- ssh: Add support for libssh2 read timeout
+
- docs: use a space after RFC when spelling out RFC numbers

-
  Hook the new (1.11.0 or newer) libssh2 support for setting a read timeout
-
  into the SERVER_RESPONSE_TIMEOUT option.  With this done, clients can use
-
  the standard curl response timeout setting to also control the time that
-
  libssh2 will wait for packets from a slow server.  This is necessary to
-
  enable use of very slow SFTP servers.
+
  Closes #11382

-
  Signed-off-by: Daniel Silverstone <daniel.silverstone@codethink.co.uk>
+
Margu (9 Jul 2023)

-
  Closes #10965
+
- imap-append.c: update to make it more likely to work

-
Osama Albahrani (14 May 2023)
+
  Fixes #10300
+
  Closes #11397

-
- GIT-INFO: add --with-openssl
+
Emanuele Torre (9 Jul 2023)

-
  Closes #11110
+
- tool_writeout_json: fix encoding of control characters

-
Daniel Stenberg (13 May 2023)
+
  Control characters without a special escape sequence e.g. %00 or %06
+
  were being encoded as "u0006" instead of "\u0006".

-
- RELEASE-NOTES: synced
+
  Ref: https://github.com/curl/trurl/pull/214#discussion_r1257487858
+
  Closes #11414

-
Marcel Raad (13 May 2023)
+
Stefan Eissing (9 Jul 2023)

-
- md(4|5): don't use deprecated iOS functions
+
- http3/ngtcp2: upload EAGAIN handling

-
  They are marked as deprecated in iOS 13.0, which might result in
-
  warnings-as-errors.
+
  - refs #11389 where IDLE timeouts on upload are reported
+
  - reword ngtcp2 expiry handling to apply to both send+recv
+
    calls into the filter
+
  - EAGAIN uploads similar to the recent changes in HTTP/2, e.g.
+
    report success only when send data was ACKed.
+
  - HOLD sending of EAGAINed uploads to avoid cpu busy loops
+
  - rename internal function for consistency with HTTP/2
+
    implementation

-
  Also, use `*_MIN_REQUIRED` instead of `*_MIN_ALLOWED`, which seems to
-
  be what's currently used.
+
  Fixes #11389
+
  Closes #11390

-
  Bug: https://github.com/curl/curl/issues/11098
-
  Closes https://github.com/curl/curl/pull/11102
+
Brian Nixon (9 Jul 2023)

-
- md4: only build when used
+
- tool_easysrc.h: correct `easysrc_perform` for `CURL_DISABLE_LIBCURL_OPTION`

-
  Its only usage in curl_ntlm_core.c is guarded by `USE_CURL_NTLM_CORE`,
-
  so let's use this here too.
+
  Closes #11398

-
  Ref: https://github.com/curl/curl/issues/11098
-
  Closes https://github.com/curl/curl/pull/11102
+
Daniel Stenberg (9 Jul 2023)

-
Vítor Galvão (12 May 2023)
+
- RELEASE-NOTES: synced

-
- write-out.d: Use response_code in example
+
- transfer: clear credentials when redirecting to absolute URL

-
  Closes #11107
+
  Make sure the user and password for the second request is taken from the
+
  redirected-to URL.

-
Shohei Maeda (12 May 2023)
+
  Add test case 899 to verify.

-
- url: fix null dispname for --connect-to option
+
  Reported-by: James Lucas
+
  Fixes #11410
+
  Closes #11412

-
  Closes #11106
+
Stefan Eissing (8 Jul 2023)

-
Daniel Stenberg (12 May 2023)
+
- hyper: fix EOF handling on input

-
- test2306: verify getting a second response with folded headers
+
  We ran out of disc space due to an infinite loop with debug logging

-
  Reproduces the isue #11101 and verifies the fix.
+
  Fixes #11377
+
  Closes #11385
+
  Reported-by: Dan Fandrich

-
  Verifies a17b2a503f
+
- http2: raise header limitations above and beyond

-
- headers: clear (possibly) lingering pointer in init
+
  - not quite to infinity
+
  - rewrote the implementation of our internal HTTP/1.x request
+
    parsing to work with very large lines using dynbufs.
+
  - new default limit is `DYN_HTTP_REQUEST`, aka 1MB, which
+
    is also the limit of curl's general HTTP request processing.

-
  The "prevhead" pointer is used for the headers storage but was not
-
  cleared correctly in init, which made it possible to act up when a
-
  handle is reused.
+
  Fixes #11405
+
  Closes #11407

-
  Reported-by: Steve Herrell
-
  Fixes #11101
-
  Closes #11103
+
Juan Cruz Viotti (8 Jul 2023)

-
- RELEASE-NOTES: synced
+
- curl_easy_nextheader.3: add missing open parenthesis examples

-
- ngtcp2: use 0.15.0
+
  Closes #11409
+
  Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>

-
  - nghttp3 0.11.0
-
  - nghttp2 1.53.0
+
Dan Fandrich (7 Jul 2023)

-
  Adapt to new API calls
+
- CI: enable verbose test output on pytest

-
  Closes #11031
+
  This shows individual pass/fail status on tests and makes this output
+
  consistent with other jobs' pytest invocations.

-
Jay Satiro (10 May 2023)
+
Stefan Eissing (28 Jun 2023)

-
- openssl: fix indent
+
- http2: fix crash in handling stream weights

-
Daniel Stenberg (10 May 2023)
+
  - Delay the priority handling until the stream has been opened.

-
- CURLOPT_DNS_CACHE_TIMEOUT.3: fix spelling
+
  - Add test2404 to reproduce and verify.

-
  Follow-up to 9ed7d56e044f5aa1b29
+
  Weights may change "on the run", which is why there are checks in
+
  general egress handling. These must not trigger when the stream has not
+
  been opened yet.

-
  Closes #11096
+
  Reported-by: jbgoog@users.noreply.github.com

-
- hostip: use time_t for storing oldest DNS entry
+
  Fixes https://github.com/curl/curl/issues/11379
+
  Closes https://github.com/curl/curl/pull/11384

-
  Theoretically, the oldest time could overflow an int. In practice that
-
  won't happen, but let's do this to please analyzers.
+
- tests/http: Add mod_h2 directive `H2ProxyRequests`

-
  Follow-up to 9ed7d56e044f5aa1b2928ccde6245d0
+
  master of mod_h2 now requires H2ProxyRequests directives for forward
+
  proxying with HTTP/2 to work.

-
  Pointed out by Coverity.
-
  Closes #11094
+
  Ref: https://github.com/icing/mod_h2/commit/3897a7086

-
- http: free the url before storing a new copy
+
  Closes https://github.com/curl/curl/pull/11392

-
  To avoid a memory-leak.
+
Dan Fandrich (28 Jun 2023)

-
  Reported-by: Hiroki Kurosawa
+
- CI: make Appveyor job names unique

-
  Closes #11093
+
  Two otherwise identical mingw-w64 jobs now have their differing compiler
+
  versions mentioned in their names.

-
- compressed.d: clarify the words on "not notifying headers"
+
Sheshadri.V (25 Jun 2023)

-
  Reported-by: Dylan Anthony
-
  Fixes #11091
-
  Closes #11092
+
- curl.h: include <sys/select.h> for vxworks

-
- libssh2: free fingerprint better
+
  Closes #11356

-
  Reported-by: Wei Chong Tan
-
  Closes #11088
+
Dan Fandrich (24 Jun 2023)

-
- CURLOPT_IPRESOLVE.3: clarify that this for host names, not IP addresses
+
- CI: enable parallel make in more builds

-
  Reported-by: Harry Sintonen
-
  Closes #11087
+
  Most CI services provide at least two cores, so enable parallel make
+
  jobs to take advantage of that for builds. Some dependencies aren't safe
+
  to build in parallel so leave those as-is.  Also, rename a few
+
  workflows to eliminate duplicate names and provide a better idea what
+
  they're about.

-
- hostip: enforce a maximum DNS cache size independent of timeout value
+
- CI: don't install impacket if tests are not run

-
  To reduce the damage an application can cause if using -1 or other
-
  ridiculous timeout values and letting the cache live long times.
+
  It just wastes time and bandwidth and isn't even used.

-
  The maximum number of entries in the DNS cache is now totally
-
  arbitrarily and hard-coded set to 29999.
+
divinity76 (24 Jun 2023)

-
  Closes #11084
+
- configure: the --without forms of the options are also gone

-
- hostip: store dns timeout as 'int'
+
  --without-darwin-ssl and --without-metalink

-
  ... because it set and held as an 'int' elsewhere and can never be
-
  larger.
+
  Closes #11378

-
- RELEASE-NOTES: synced
+
Daniel Stenberg (23 Jun 2023)

-
- tool_operate: refuse (--data or --form) and --continue-at combo
+
- configure: add check for ldap_init_fd

-
  libcurl assumes that a --continue-at resumption is done to continue an
-
  upload using the read callback and neither --data nor --form use
-
  that and thus won't do what the user wants. Whatever the user wants
-
  with this strange combination.
+
  ... as otherwise the configure script will say it is OpenLDAP in the
+
  summary, but not set the USE_OPENLDAP define, therefor not using the
+
  intended OpenLDAP code paths.

-
  Add test 426 to verify.
+
  Regression since 4d7385446 (7.85.0)
+
  Fixes #11372
+
  Closes #11374
+
  Reported-by: vlkl-sap on github

-
  Reported-by: Smackd0wn on github
-
  Fixes #11081
-
  Closes #11083
+
Michał Petryka (23 Jun 2023)

-
- transfer: refuse POSTFIELDS + RESUME_FROM combo
+
- cmake: stop CMake from quietly ignoring missing Brotli

-
  The code assumes that such a resume is wanting to continue an upload
-
  using the read callback, and since POSTFIELDS is done without callback
-
  libcurl will just misbehave.
+
  The CMake project was set to `QUIET` for Brotli instead of
+
  `REQUIRED`. This makes builds unexpectedly ignore missing Brotli even
+
  when `CURL_BROTLI` is enabled.

-
  This combo will make the transfer fail with CURLE_BAD_FUNCTION_ARGUMENT
-
  with an explanation in the error message.
+
  Closes #11376

-
  Reported-by: Smackd0wn on github
-
  Fixes #11081
-
  Closes #11083
+
Emanuele Torre (22 Jun 2023)

-
- ipv4.d/ipv6.d: they are "mutex", not "boolean"
+
- docs: add more .IP after .RE to fix indentation of generate paragraphs

-
  ... which for example means they do not have --no-* versions.
+
  follow-up from 099f41e097c030077b8ec078f2c2d4038d31353b

-
  Reported-by: Harry Sintonen
-
  Fixes #11085
-
  Closes #11086
+
  I just thought of checking all the other files with .RE, and I found 6
+
  other files that were missing .IP at the end.

-
- docs/SECURITY-ADVISORY.md: how to write a curl security advisory
+
  Closes #11375

-
  Closes #11080
+
Stefan Eissing (22 Jun 2023)

-
nobedee on github (5 May 2023)
+
- http2: h2 and h2-PROXY connection alive check fixes

-
- MANUAL.md: add dict example for looking up a single definition
+
  - fix HTTP/2 check to not declare a connection dead when
+
    the read attempt results in EAGAIN
+
  - add H2-PROXY alive check as for HTTP/2 that was missing
+
    and is needed
+
  - add attach/detach around Curl_conn_is_alive() and remove
+
    these in filter methods
+
  - add checks for number of connections used in some test_10
+
    proxy tunneling tests

-
  Closes #11077
+
  Closes #11368

-
Dan Fandrich (5 May 2023)
+
- http2: error stream resets with code CURLE_HTTP2_STREAM

-
- runtests: fix -c option when run with valgrind
+
  - refs #11357, where it was reported that HTTP/1.1 downgrades
+
    no longer works
+
  - fixed with suggested change
+
  - added test_05_03 and a new handler in the curltest module
+
    to reproduce that downgrades work

-
  The curl binary argument wasn't being quoted properly. This seems to
-
  have broken at some point after quoting was added in commit 606b29fe.
+
  Fixes #11357
+
  Closes #11362
+
  Reported-by: Jay Satiro

-
  Reported-by: Daniel Stenberg
-
  Ref: #11073
-
  Fixes #11074
-
  Closes #11076
+
Daniel Stenberg (22 Jun 2023)

-
- runtests: support creating more than one runner process
+
- connect-timeout.d: mention that the DNS lookup is included

-
  The controller currently only creates and uses one, but more are now
-
  possible.
+
  Closes #11370

-
  Ref: #10818
+
Emanuele Torre (22 Jun 2023)

-
- runtests: spawn a new process for the test runner
+
- quote.d: fix indentation of generated paragraphs

-
  When the -j option is given, a new process is spawned in which the test
-
  programs are run and from which test servers are started. Only one
-
  process can be started at once, but this is sufficient to test that the
-
  infrastructure can isolate those functions in a new task. There should
-
  be no visible difference between the two modes at the moment.
+
  quote.d was missing a .IP at the end which caused the paragraphs
+
  generated for See-also, Multi, and Example to not be indented correctly.

-
  Ref: #10818
-
  Closes #11064
+
  I also remove a redundant "This option can be used multiple times.", and
+
  replaced .IP "item" with .TP .B "item" to make more clear which lines
+
  are part of the list of commands and which aren't.

-
- runtests: turn singletest() into a state machine
+
  Closes #11371

-
  This allows it to run in a non-blocking manner.
+
Paul Wise (22 Jun 2023)

-
  Ref: #10818
+
- checksrc: modernise perl file open

-
- runtests: change runner interface to be asynchronous
+
  Use regular variables and separate file open modes from filenames.

-
  Program arguments are marshalled and then written to the end of a pipe
-
  which is later read from and the arguments unmarshalled before the
-
  desired function is called normally.  The function return values are
-
  then marshalled and written into another pipe when is later read from
-
  and unmarshalled before being returned to the caller.
+
  Suggested by perlcritic

-
  The implementation is currently blocking but can be made non-blocking
-
  without any changes to the API.  This allows calling multiple runners
-
  without blocking in the future.
+
  Copied from https://github.com/curl/trurl/commit/f2784a9240f47ee28a845

-
  Ref: #10818
+
  Closes #11358

-
- runtests: call citest_finishtest in singletest
+
Dan Fandrich (21 Jun 2023)

-
  This is where citest_starttest is called.
+
- runtests: work around a perl without SIGUSR1

-
  Ref: #10818
+
  At least msys2 perl v5.32.1 doesn't seem to define this signal. Since
+
  this signal is only used for debugging, just ignore if setting it fails.

-
- runtests: add a runner initialization function
+
  Reported-by: Marcel Raad
+
  Fixes #11350
+
  Closes #11366

-
  This sets up the runner environment to start running tests.
+
- runtests: include missing valgrind package

-
  Ref: #10818
+
  use valgrind was missing which caused torture tests with valgrind
+
  enabled to fail.

-
- runtests: remove directory from server filename variables
+
  Reported-by: Daniel Stenberg
+
  Fixes #11364
+
  Closes #11365

-
  There will soon be multiple log directories so the paths will no longer
-
  be static in runtests.pl. Also, get rid of $SERVER2IN which was not
-
  used.
+
- runtests: use more consistent failure lines

-
  Ref: #10818
+
  After a test failure log a consistent log message to make it easier to
+
  parse the log file.  Also, log a consistent message with "ignored" for
+
  failures that cause the test to be not considered at all. These should
+
  perhaps be counted in the skipped category, but this commit does not
+
  change that behaviour.

-
- runtests: reduce package exports after refactoring
+
- runtests: consistently write the test check summary block

-
  Some recent refactoring made these export no longer necessary. Also,
-
  stop displaying the Unix socket paths at startup since there will soon
-
  be many of them and they're not that interesting.
+
  The memory check character was erroneously omitted if the memory
+
  checking file was not available for some reason, making the block of
+
  characters an inconsistent length.

-
  Ref: #10818
+
- test2600: fix the description

-
- runtests: use a function to obtain $LOGDIR for a test
+
  It looks like it was cut-and-pasted.

-
  This will no longer be static soon.
+
  Closes #11354

-
  Ref: #10818
+
Daniel Stenberg (21 Jun 2023)

-
Jay Satiro (5 May 2023)
+
- TODO: "Support HTTP/2 for HTTP(S) proxies" *done*

-
- tool_cb_hdr: Fix 'Location:' formatting for early VTE terminals
+
humbleacolyte (21 Jun 2023)

-
  - Disable hyperlink formatting for the 'Location:' header value in VTE
-
    0.48.1 and earlier, since it is buggy in some of those versions.
+
- cf-socket: move ctx declaration under HAVE_GETPEERNAME

-
  Prior to this change those terminals may show the location header value
-
  as gibberish or show it twice.
+
  Closes #11352

-
  Ref: https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda#backw
-
  ard-compatibility
+
Daniel Stenberg (20 Jun 2023)

-
  Fixes https://github.com/curl/curl/issues/10428
-
  Closes https://github.com/curl/curl/pull/11071
+
- RELEASE-NOTES: synced

-
François Michel (3 May 2023)
+
- example/connect-to: show CURLOPT_CONNECT_TO

-
- quiche: disable pacing while pacing is not actually performed
+
  Closes #11340

-
  Closes #11068
+
Stefan Eissing (20 Jun 2023)

-
Daniel Stenberg (2 May 2023)
+
- hyper: unslow

-
- easy_cleanup: require a "good" handle to act
+
  - refs #11203 where hyper was reported as being slow
+
  - fixes hyper_executor_poll to loop until it is out of
+
    tasks as advised by @seanmonstar in https://github.com/hyperium/hyper/issue
+
  s/3237
+
  - added a fix in hyper io handling for detecting EAGAIN
+
  - added some debug logs to see IO results
+
  - pytest http/1.1 test cases pass
+
  - pytest h2 test cases fail on connection reuse. HTTP/2
+
    connection reuse does not seem to work. Hyper submits
+
    a request on a reused connection, curl's IO works and
+
    thereafter hyper declares `Hyper: [1] operation was canceled: connection cl
+
  osed`
+
    on stderr without any error being logged before.

-
  By insisting that the passed in handle is "good" (the magic number is
-
  intact), this can limit the potential damage if a bad pointer is passed
-
  in. Like when this function is called twice on the same handle pointer.
+
  Fixes #11203
+
  Reported-by: Gisle Vanem
+
  Advised-by: Sean McArthur
+
  Closes #11344

-
  Ref: #10964
-
  Closes #11061
+
- HTTP/2: upload handling fixes

-
Andreas Falkenhahn (1 May 2023)
+
  - fixes #11242 where 100% CPU on uploads was reported
+
  - fixes possible stalls on last part of a request body when
+
    that information could not be fully send on the connection
+
    due to an EAGAIN
+
  - applies the same EGAIN handling to HTTP/2 proxying

-
- amiga: Fix CA certificate paths for AmiSSL and MorphOS
+
  Reported-by: Sergey Alirzaev
+
  Fixed #11242
+
  Closes #11342

-
  AmiSSL stores certificates in `AmiSSL:Certs` and MorphOS stores them in
-
  `MOSSYS:Data/SSL/curl-ca-bundle.crt`.
+
Daniel Stenberg (20 Jun 2023)

-
  Closes https://github.com/curl/curl/pull/11059
+
- example/opensslthreadlock: remove

-
Daniel Stenberg (30 Apr 2023)
+
  This shows how to setup OpenSSL mutex callbacks, but this is not
+
  necessary since OpenSSL 1.1.0 - meaning that no currently supported
+
  OpenSSL version requires this anymore

-
- http2: (void)-mark when we explicitly ignore the return code
+
  Closes #11341

-
  When h2_progress_egress() is called. Pointed out by Coverity.
+
Dan Fandrich (19 Jun 2023)

-
  Closes #11057
+
- libtest: display the times after a test timeout error

-
- checksrc: find bad indentation in conditions without open brace
+
  This is to help with test failure debugging.

-
  If the previous line starts with if/while/for AND ends with a closed
-
  parenthesis and there's an equal number of open and closed parentheses
-
  on that line, verify that this line is indented $indent more steps, if
-
  not a cpp line.
+
  Ref: #11328
+
  Closes #11329

-
  Also adjust the fall-out from this fix.
+
- test2600: bump a test timeout

-
  Closes #11054
+
  Case 1 failed at least once on GHA by going 30 msec too long.

-
Diogo Teles Sant'Anna (28 Apr 2023)
+
  Ref: #11328

-
- CI: Set minimal permissions on workflow ngtcp2-quictls.yml
+
- runtests: better detect and handle pipe errors in the controller

-
  Signed-off-by: Diogo Teles Sant'Anna <diogoteles@google.com>
+
  Errors reading and writing to the pipes are now better detected and
+
  propagated up to the main test loop so it can be cleanly shut down. Such
+
  errors are usually due to a runner dying so it doesn't make much sense
+
  to try to continue the test run.

-
  Closes #11055
+
- runtests: cleanly abort the runner if the controller dies

-
Dan Fandrich (28 Apr 2023)
+
  If the controller dies unexpectedly, have the runner stop its servers
+
  and exit cleanly. Otherwise, the orphaned servers will stay running in
+
  the background.

-
- CI: use another glob syntax for matching files on Appveyor
+
- runtests: improve error logging

-
  The previous globbing syntax was not matching files recursively in
-
  directories, so try appending a /* to more closely match the examples at
-
  https://www.appveyor.com/docs/how-to/filtering-commits/
+
  Give more information about test harness error conditions to help figure
+
  out what might be wrong. Print some internal test state when SIGUSR1 is
+
  sent to runtests.pl.

-
Daniel Stenberg (28 Apr 2023)
+
  Ref: #11328

-
- multi: add multi-ignore logic to multi_socket_action
+
- runtests: better handle ^C during slow tests

-
  The multi-ignore logic that was previously applied to
-
  curl_multi_perform() (#10750) is here applied to the loop within
-
  curl_multi_socket_action() to make it use the same optimization: most
-
  handles have the same signal-ignore option state so this drastically
-
  reduces the number of ignore/unignore calls per libcurl function invoke.
+
  Since the SIGINT handler now just sets a flag that must be checked in the
+
  main controller loop, make sure that runs periodically.  Rather than
+
  blocking on a response from a test runner near the end of the test run,
+
  add a short timeout to allow it.

-
  Follow-up to bc90308328afb8
+
- runtests: rename server command file

-
  Closes #11045
+
  The name ftpserver.cmd was historical and has been used for more than
+
  ftp for many years now. Rename it to plain server.cmd to reduce
+
  confusion.

-
Stefan Eissing (28 Apr 2023)
+
- tests: improve reliability of TFTP tests

-
- http2: do flow window accounting for cancelled streams
+
  Stop checking the timeout used by the client under test (for most
+
  tests). The timeout will change if the TFTP test server is slow (such as
+
  happens on an overprovisioned CI server) because the client will retry
+
  and reduce its timeout, and the actual value is not important for most
+
  tests.

-
  - nghttp2 does not free connection level window flow for
-
    aborted streams
-
  - when closing transfers, make sure that any buffered
-
    response data is "given back" to the flow control window
-
  - add tests test_02_22 and test_02_23 to reproduce
+
  test285 is changed a different way, by increasing the connect timeout.
+
  This improves test coverage by allowing the changed timeout value to be
+
  checked, but improves reliability with a carefully-chosen timeout that
+
  not only allows twice the time to respond as before, but also allows
+
  several retries before the client will change its timeout value.

-
  Closes #11052
+
  Ref: #11328

-
- pingpong: fix compiler warning "assigning an enum to unsigned char"
+
Daniel Stenberg (19 Jun 2023)

-
  Closes #11050
+
- cf-socket: skip getpeername()/getsockname for TFTP

-
Daniel Stenberg (28 Apr 2023)
+
  Since the socket is not connected then the call fails. When the call
+
  fails, failf() is called to write an error message that is then
+
  surviving and is returned when the *real* error occurs later. The
+
  earlier, incorrect, error therefore hides the actual error message.

-
- configure: fix detection of apxs (for httpd)
+
  This could be seen in stderr for test 1007

-
  The condition check was turned the wrong way around!
+
  Test 1007 has now been extended to verify the stderr message.

-
  Closes #11051
+
  Closes #11332

-
Viktor Szakats (28 Apr 2023)
+
- example/crawler: make it use a few more options

-
- ci: `-Wno-vla` no longer necessary
+
  For show, but reasonable

-
  We handle this issue in the source now.
+
- libcurl-ws.3: mention raw mode

-
  Follow-up to b725fe1944b45406676ea3aff333ae3085a848d9
+
  Closes #11339

-
  Reviewed-by: Marcel Raad
-
  Reviewed-by: Daniel Stenberg
-
  Closes #11048
+
- example/default-scheme: set the default scheme for schemeless URLs

-
Marcel Raad (28 Apr 2023)
+
  Closes #11338

-
- tests/http: make curl_setup.h the first include
+
- example/hsts-preload: show one way to HSTS preload

-
  This is required for the macros there to take effect for system
-
  libraries. Specifically, including the system libraries first led to
-
  warnings about `_FILE_OFFSET_BITS` being redefined in curl_config.h on
-
  the Solaris autobuilds for ws-data.c and ws-pingpong.c.
-
  Also make the curl includes come first for the other source files here
-
  for consistency.
+
  Closes #11337

-
  Closes https://github.com/curl/curl/pull/11046
+
- examples/http-options: show how to send "OPTIONS *"

-
Emanuele Torre (27 Apr 2023)
+
  With CURLOPT_REQUEST_TARGET.

-
- checksrc: check for spaces before the colon of switch labels
+
  Also add use of CURLOPT_QUICK_EXIT to show.

-
  Closes #11047
+
  Closes #11333

-
Daniel Stenberg (27 Apr 2023)
+
- examples: make use of CURLOPT_(REDIR_|)PROTOCOLS_STR

-
- RELEASE-NOTES: synced
+
  To show how to use them

-
- libssh: tell it to use SFTP non-blocking
+
  Closes #11334

-
  Reported-by: Andreas Huebner
-
  Fixes #11020
-
  Closes #11039
+
- examples/smtp-mime: use CURLOPT_MAIL_RCPT_ALLOWFAILS

-
Stefan Eissing (27 Apr 2023)
+
  For show

-
- http2: enlarge the connection window
+
  Closes #11335

-
  - fixes stalled connections
+
- http: rectify the outgoing Cookie: header field size check

-
  - Make the connection window large enough, so that there is
-
    some room left should 99/100 streams be PAUSED by the application
+
  Previously it would count the size of the entire outgoing request and
+
  not just the size of only the Cookie: header field - which was the
+
  intention.

-
  Reported-by: Paweł Wegner
-
  Fixes #10988
-
  Closes #11043
+
  This could make the check be off by several hundred bytes in some cases.

-
Daniel Stenberg (27 Apr 2023)
+
  Closes #11331

-
- checksrc: fix SPACEBEFOREPAREN for conditions starting with "*"
+
Jay Satiro (17 Jun 2023)

-
  The open paren check wants to warn for spaces before open parenthesis
-
  for if/while/for but also for any function call. In order to avoid
-
  catching function pointer declarations, the logic allows a space if the
-
  first character after the open parenthesis is an asterisk.
+
- lib: fix some format specifiers

-
  I also spotted what we did not include "switch" in the check but we should.
+
  - Use CURL_FORMAT_CURL_OFF_T where %zd was erroneously used for some
+
    curl_off_t variables.

-
  This check is a little lame, but we reduce this problem by not allowing
-
  that space for if/while/for/switch.
+
  - Use %zu where %zd was erroneously used for some size_t variables.

-
  Reported-by: Emanuele Torre
-
  Closes #11044
+
  Prior to this change some of the Windows CI tests were failing because
+
  in Windows 32-bit targets have a 32-bit size_t and a 64-bit curl_off_t.
+
  When %zd was used for some curl_off_t variables then only the lower
+
  32-bits was read and the upper 32-bits would be read for part or all of
+
  the next specifier.

-
- docs: minor polish
+
  Fixes https://github.com/curl/curl/issues/11327
+
  Closes https://github.com/curl/curl/pull/11321

-
  - "an HTTP*" (not "a")
-
  - remove a few contractions
-
  - remove a spurious "a"
-
  - reduce use of "I" in texts
+
Marcel Raad (16 Jun 2023)

-
  Closes #11040
+
- test427: add `cookies` feature and keyword

-
- ws: fix CONT opcode check
+
  This test doesn't work with `--disable-cookies`.

-
  Detected by Coverity. Follow-up to 930c00c259
+
  Closes https://github.com/curl/curl/pull/11320

-
  Closes #11037
+
Chris Talbot (15 Jun 2023)

-
Dan Fandrich (27 Apr 2023)
+
- imap: Provide method to disable SASL if it is advertised

-
- CI: switch the awslc builds to build out-of-tree
+
  - Implement AUTH=+LOGIN for CURLOPT_LOGIN_OPTIONS to prefer plaintext
+
    LOGIN over SASL auth.

-
  This is a common configuration that should be tested to avoid
-
  regressions. The awsls cmake build was already out-of-tree so the
-
  automake build now joins it.
+
  Prior to this change there was no method to be able to fall back to
+
  LOGIN if an IMAP server advertises SASL capabilities. However, this may
+
  be desirable for e.g. a misconfigured server.

-
  Ref: #11006
+
  Per: https://www.ietf.org/rfc/rfc5092.html#section-3.2

-
- tests/http: fix out-of-tree builds
+
  ";AUTH=<enc-auth-type>" looks to be the correct way to specify what
+
  authenication method to use, regardless of SASL or not.

-
  Add both lib/ directories (src & build) to the search path so
-
  curl_setup.h and its dependencies can be found.
+
  Closes https://github.com/curl/curl/pull/10041

-
  Followup-to acd82c8b
+
Daniel Stenberg (15 Jun 2023)

-
  Ref: #11006
-
  Closes #11036
+
- RELEASE-NOTES: synced

-
Daniel Stenberg (27 Apr 2023)
+
- examples/multi-debugcallback.c: avoid the bool typedef

-
- urlapi: make internal function start with Curl_
+
  Apparently this cannot be done in c23

-
  Curl_url_set_authority() it is.
+
  Reported-by: Cristian Rodríguez
+
  Fixes #11299
+
  Closes #11319

-
  Follow-up to acd82c8bfd
+
- docs/libcurl/libcurl.3: cleanups and improvements

-
  Closes #11035
+
  Closes #11317

-
YX Hao (26 Apr 2023)
+
- libcurl-ws.3: fix typo

-
- cf-socket: turn off IPV6_V6ONLY on Windows if it is supported
+
- curl_ws_*.3: enhance

-
  IPV6_V6ONLY refs:
-
  https://en.wikipedia.org/wiki/IPv6#IPv4-mapped_IPv6_addresses
-
  https://github.com/golang/go/blob/master/src/net/ipsock_posix.go
-
  https://en.wikipedia.org/wiki/Unix-like
-
  https://learn.microsoft.com/en-us/windows/win32/winsock/ipproto-ipv6-socket-o
-
  ptions
+
  - all: SEE ALSO the libcurl-ws man page
+
  - send: add example and return value information
+
  - meta: mention that the returned data is read-only

-
  default value refs:
-
  https://datatracker.ietf.org/doc/html/rfc3493#section-5.3
-
  https://www.kernel.org/doc/html/latest/networking/ip-sysctl.html#proc-sys-net
-
  -ipv6-variables
+
  Closes #11318

-
  Closes #10975
+
- docs/libcurl/libcurl-ws.3: see also CURLOPT_WS_OPTIONS

-
Daniel Stenberg (26 Apr 2023)
+
- docs/libcurl/libcurl-ws.3: minor polish

-
- urldata: shrink *select_bits int => unsigned char
+
- libcurl-ws.3. WebSocket API overview

-
  - dselect_bits
-
  - cselect_bits
+
  Closes #11314

-
  ... are using less than 8 bits. Changed types and moved them towards
-
  the end of the structs to fit better.
+
- libcurl-url.3: also mention CURLUPART_ZONEID

-
  Closes #11025
+
  ... and sort the two part-using lists alphabetically

-
Stefan Eissing (26 Apr 2023)
+
Marcel Raad (14 Jun 2023)

-
- tests/http: more tests with specific clients
+
- fopen: fix conversion warning on 32-bit Android

-
  - Makefile support for building test specific clients in tests/http/clients
-
  - auto-make of clients when invoking pytest
-
  - added test_09_02 for server PUSH_PROMISEs using clients/h2-serverpush
-
  - added test_02_21 for lib based downloads and pausing/unpausing transfers
+
  When building for 32-bit ARM or x86 Android, `st_mode` is defined as
+
  `unsigned int` instead of `mode_t`, resulting in a
+
  -Wimplicit-int-conversion clang warning because `mode_t` is
+
  `unsigned short`. Add a cast to silence the warning.

-
  curl url parser:
-
  - added internal method `curl_url_set_authority()` for setting the
-
    authority part of a url (used for PUSH_PROMISE)
+
  Ref: https://android.googlesource.com/platform/bionic/+/refs/tags/ndk-r25c/li
+
  bc/include/sys/stat.h#86
+
  Closes https://github.com/curl/curl/pull/11313

-
  http2:
-
  - made logging of PUSH_PROMISE handling nicer
+
- http2: fix variable type

-
  Placing python test requirements in requirements.txt files
-
  - separate files to base test suite and http tests since use
-
    and module lists differ
-
  - using the files in the gh workflows
+
  `max_recv_speed` is `curl_off_t`, so using `size_t` might result in
+
  -Wconversion GCC warnings for 32-bit `size_t`. Visible in the NetBSD
+
  ARM autobuilds.

-
  websocket test cases, fixes for we and bufq
-
  - bufq: account for spare chunks in space calculation
-
  - bufq: reset chunks that are skipped empty
-
  - ws: correctly encode frames with 126 bytes payload
-
  - ws: update frame meta information on first call of collect
-
    callback that fills user buffer
-
  - test client ws-data: some test/reporting improvements
+
  Closes https://github.com/curl/curl/pull/11312

-
  Closes #11006
+
Daniel Stenberg (13 Jun 2023)

-
Jay Satiro (26 Apr 2023)
+
- vtls: fix potentially uninitialized local variable warnings

-
- libssh2: fix crash in keyboard callback
+
  Follow-up from a4a5e438ae533c

-
  - Always set the libssh2 'abstract' user-pointer to the libcurl easy
-
    handle associated with the ssh session, so it is always passed to the
-
    ssh keyboard callback.
+
  Closes #11310

-
  Prior to this change and since 8b5f100 (precedes curl 8.0.0), if libcurl
-
  was built without CURL_DEBUG then it could crash during the ssh auth
-
  phase due to a null dereference in the ssh keyboard callback.
+
- timeval: use CLOCK_MONOTONIC_RAW if available

-
  Reported-by: Andreas Falkenhahn
+
  Reported-by: Harry Sintonen
+
  Ref: #11288
+
  Closes #11291

-
  Fixes https://github.com/curl/curl/pull/11024
-
  Closes https://github.com/curl/curl/pull/11026
+
Stefan Eissing (12 Jun 2023)

-
Daniel Stenberg (26 Apr 2023)
+
- tool: add curl command line option `--trace-ids`

-
- docs: clarify that more backends have HTTPS proxy support
+
  - added and documented --trace-ids to prepend (after the timestamp)
+
    the transfer and connection identifiers to each verbose log line
+
  - format is [n-m] with `n` being the transfer id and `m` being the
+
    connection id. In case there is not valid connection id, print 'x'.
+
  - Log calls with a handle that has no transfer id yet, are written
+
    without any ids.

-
  Closes #11033
+
  Closes #11185

-
- KNOWN_BUGS: remove two not-bugs
+
- lib: add CURLINFO_CONN_ID and CURLINFO_XFER_ID

-
  - 11.7 signal-based resolver timeouts
+
  - add an `id` long to Curl_easy, -1 on init
+
  - once added to a multi (or its own multi), it gets
+
    a non-negative number assigned by the connection cache
+
  - `id` is unique among all transfers using the same
+
    cache until reaching LONG_MAX where it will wrap
+
    around. So, not unique eternally.
+
  - CURLINFO_CONN_ID returns the connection id attached to
+
    data or, if none present, data->state.lastconnect_id
+
  - variables and type declared in tool for write out

-
  Not considered a bug anymore but just implementation details. People
-
  should avoid using timeouts with the synchronous name resolver.
+
  Closes #11185

-
  - 11.16 libcurl uses renames instead of locking for atomic operations
+
Daniel Stenberg (12 Jun 2023)

-
  Not a bug, just a description of how it works
+
- CURLOPT_INFILESIZE.3: mention -1 triggers chunked

-
  Closes #11032
+
  Ref: #11300
+
  Closes #11304

-
Harry Sintonen (26 Apr 2023)
+
Philip Heiduck (12 Jun 2023)

-
- hostip: add locks around use of global buffer for alarm()
+
- CI: openssl-3.0.9+quic

-
  When building with the sync name resolver and timeout ability we now
-
  require thread-safety to be present to enable it.
+
  Closes #11296

-
  Closes #11030
+
Karthikdasari0423 (12 Jun 2023)

-
Daniel Stenberg (26 Apr 2023)
+
- HTTP3.md: update openssl version

-
- curl_path: bring back support for SFTP path ending in /~
+
  Closes #11297

-
  libcurl used to do a directory listing for this case (even though the
-
  documentation says a URL needs to end in a slash for this), but
-
  4e2b52b5f7a3 modified the behavior.
+
Daniel Stenberg (12 Jun 2023)

-
  This change brings back a directory listing for SFTP paths that are
-
  specified exactly as /~ in the URL.
+
- vtls: avoid memory leak if sha256 call fails

-
  Reported-by: Pavel Mayorov
-
  Fixes #11001
-
  Closes #11023
+
  ... in the pinned public key handling function.

-
Emanuele Torre (26 Apr 2023)
+
  Reported-by: lizhuang0630 on github
+
  Fixes #11306
+
  Closes #11307

-
- docs/libcurl/curl_*escape.3: rename "url" argument to "input"/"string"
+
- examples/ipv6: disable on win32

-
  Also reword the DESCRIPTION section to mention "input"/"string" argument
-
  in bold.
+
  I can't make if_nametoindex() work there

-
  Closes #11027
+
  Follow-up to c23dc42f3997acf23

-
- docs/libcurl: minor cleanups
+
  Closes #11305

-
  I was reading curl_unescape(3) and I noticed that there was an extra
-
  space after the open parenthesis in the SYNOPSIS; I removed the extra
-
  space.
+
- tool_operate: allow cookie lines up to 8200 bytes

-
  I also ran a few  grep -r  commands to find and remove extra spaces
-
  after '(' in other files, and to find and replace uses of `T*' instead
-
  of `T *'. Some of the instances of `T*` where unnecessary casts that I
-
  removed.
+
  Since this option might set multiple cookies in the same line, it does
+
  not make total sense to cap this at 4096 bytes, which is the limit for a
+
  single cookie name or value.

-
  I also fixed a comment that was misaligned in CURLMOPT_SOCKETFUNCTION.3.
+
  Closes #11303

-
  And I fixed some formatting inconsistencies: in curl_unescape(3), all
-
  function parameter were mentioned with bold text except length, that was
-
  mentioned as 'length'; and, in curl_easy_unescape(3), all parameters
-
  were mentioned in bold text except url that was italicised. Now they are
-
  all mentioned in bold.
-
  Documentation is not very consistent in how function parameter are
-
  formatted: many pages italicise them, and others display them in bold
-
  text; but I think it makes sense to at least be consistent with
-
  formatting within the same page.
+
- test427: verify sending more cookies than fit in a 8190 bytes line

-
  Closes #11027
+
  curl will then only populate the header with cookies that fit, dropping
+
  ones that otherwise would have been sent

-
Daniel Stenberg (26 Apr 2023)
+
  Ref: https://curl.se/mail/lib-2023-06/0020.html

-
- man pages: simplify the .TH sections
+
  Closes #11303

-
  - remove the version numbers
-
  - simplify the texts
+
- testutil: allow multiple %-operators on the same line

-
  The date and version number will be put there for releases when maketgz
-
  runs the updatemanpages.pl script.
+
  Closes #11303

-
  Closes #11029
+
Oleg Jukovec (12 Jun 2023)

-
- hostcheck: fix host name wildcard checking
+
- docs: update CURLOPT_UPLOAD.3

-
  The leftmost "label" of the host name can now only match against single
-
  '*'. Like the browsers have worked for a long time.
+
  The behavior of CURLOPT_UPLOAD differs from what is described in the
+
  documentation. The option automatically adds the 'Transfer-Encoding:
+
  chunked' header if the upload size is unknown.

-
  - extended unit test 1397 for this
-
  - move some SOURCE variables from unit/Makefile.am to unit/Makefile.inc
+
  Closes #11300

-
  Reported-by: Hiroki Kurosawa
-
  Closes #11018
+
Daniel Stenberg (12 Jun 2023)

-
Dan Fandrich (25 Apr 2023)
+
- RELEASE-NOTES: synced

-
- smbserver: remove temporary files before exit
+
- CURLOPT_AWS_SIGV4.3: remove unused variable from example

-
  Each execution of test 1451 would leave a file in /tmp before. Since
-
  Windows can't delete a file while it's open, all the temporary file
-
  names are stored and deleted on exit.
+
  Closes #11302

-
  Closes #10990
+
- examples/https.c: use CURLOPT_CA_CACHE_TIMEOUT

-
Stefan Eissing (25 Apr 2023)
+
  for demonstration purposes

-
- Websocket en-/decoding
+
  Closes #11290

-
  - state is fully kept at connection, since curl_ws_send() and
-
    curl_ws_rec() have lifetime beyond usual transfers
-
  - no more limit on frame sizes
+
- example/ipv6: feature CURLOPT_ADDRESS_SCOPE in use

-
  Reported-by: simplerobot on github
-
  Fixes #10962
-
  Closes #10999
+
  Closes #11282

-
Patrick Monnerat (25 Apr 2023)
+
Karthikdasari0423 (10 Jun 2023)

-
- urldata: copy CURLOPT_AWS_SIGV4 value on handle duplication
+
- docs: Update HTTP3.md for newer ngtcp2 and nghttp3

-
  Prior to this change STRING_AWS_SIGV4 (CURLOPT_AWS_SIGV4) was wrongly
-
  marked as binary data that could not be duplicated.
+
  Follow-up to fb9b9b58

-
  Without this fix, this option's value is not copied upon calling
-
  curl_easy_duphandle().
+
  Ref: #11184
+
  Closes #11295

-
  Closes https://github.com/curl/curl/pull/11021
+
Dan Fandrich (10 Jun 2023)

-
Stefan Eissing (25 Apr 2023)
+
- docs: update the supported ngtcp2 and nghttp3 versions

-
- http3: expire unpaused transfers in all HTTP/3 backends
+
  Follow-up to cae9d10b

-
  Closes #11005
+
  Ref: #11184
+
  Closes #11294

-
- http2: always EXPIRE_RUN_NOW unpaused http/2 transfers
+
- tests: fix error messages & handling around sockets

-
  - just increasing the http/2 flow window does not necessarily
-
    make a server send new data. It may already have exhausted
-
    the window before
+
  The wrong error code was checked on Windows on UNIX socket failures,
+
  which could have caused all UNIX sockets to be reported as having
+
  errored and the tests therefore skipped. Also, a useless error message
+
  was displayed on socket errors in many test servers on Windows because
+
  strerror() doesn't work on WinSock error codes; perror() is overridden
+
  there to work on all errors and is used instead.

-
  Closes #11005
+
  Ref #11258
+
  Closes #11265

-
- http2: pass `stream` to http2_handle_stream_close to avoid NULL checks
+
Daniel Stenberg (9 Jun 2023)

-
  Closes #11005
+
- CURLOPT_SSH_PRIVATE_KEYFILE.3: expand on the file search

-
- h2/h3: replace `state.drain` counter with `state.dselect_bits`
+
  Reported-by: atjg on github
+
  Ref: #11287
+
  Closes #11289

-
  - `drain` was used by http/2 and http/3 implementations to indicate
-
    that the transfer requires send/recv independant from its socket
-
    poll state. Intended as a counter, it was used as bool flag only.
-
  - a similar mechanism exists on `connectdata->cselect_bits` where
-
    specific protocols can indicate something similar, only for the
-
    whole connection.
-
  - `cselect_bits` are cleard in transfer.c on use and, importantly,
-
    also set when the transfer loop expended its `maxloops` tries.
-
    `drain` was not cleared by transfer and the http2/3 implementations
-
    had to take care of that.
-
  - `dselect_bits` is cleared *and* set by the transfer loop. http2/3
-
    does no longer clear it, only set when new events happen.
+
Stefan Eissing (9 Jun 2023)

-
  This change unifies the handling of socket poll overrides, extending
-
  `cselect_bits` by a easy handle specific value and a common treatment in
-
  transfers.
+
- ngtcp2: use ever increasing timestamp in io

-
  Closes #11005
+
  - ngtcp2 v0.16.0 asserts that timestamps passed to its function
+
    will only ever increase.
+
  - Use a context shared between ingress/egress operations that
+
    uses a shared timestamp, regularly updated during calls.

-
Daniel Stenberg (25 Apr 2023)
+
  Closes #11288

-
- socketpair: verify with a random value
+
Daniel Stenberg (9 Jun 2023)

-
  ... instead of using the curl time struct, since it would use a few
-
  uninitialized bytes and the sanitizers would complain. This is a neater
-
  approach I think.
+
- GHA: use nghttp2 1.54.0 for the ngtcp2 jobs

-
  Reported-by: Boris Kuschel
-
  Fixes #10993
-
  Closes #11015
+
Philip Heiduck (9 Jun 2023)

-
Stefan Eissing (25 Apr 2023)
+
- GHA: ngtcp2: use 0.16.0 and nghttp3 0.12.0

-
- HTTP3: document the ngtcp2/nghttp3 versions to use for building curl
+
Daniel Stenberg (9 Jun 2023)

-
  - refs #11011 to clarify this for people building curl themselves
+
- ngtcp2: build with 0.16.0 and nghttp3 0.12.0

-
  Closes #11019
+
  - moved to qlog_write
+
  - crypto => encryption
+
  - CRYPTO => ENCRYPTION
+
  - removed "_is_"
+
  - ngtcp2_conn_shutdown_stream_read and
+
    ngtcp2_conn_shutdown_stream_write got flag arguments
+
  - the nghttp3_callbacks struct got a recv_settings callback

-
Daniel Stenberg (25 Apr 2023)
+
  Closes #11184

-
- lib: unify the upload/method handling
+
- example/http2-download: set CURLOPT_BUFFERSIZE

-
  By making sure we set state.upload based on the set.method value and not
-
  independently as set.upload, we reduce confusion and mixup risks, both
-
  internally and externally.
+
  Primarily because no other example sets it, and remove the disabling of
+
  the certificate check because we should not recommend that.

-
  Closes #11017
+
  Closes #11284

-
- RELEASE-NOTES: synced
+
- example/crawler: also set CURLOPT_AUTOREFERER

-
Dan Fandrich (24 Apr 2023)
+
  Could make sense, and it was not used in any example before.

-
- CI: don't run CI jobs if only another CI was changed
+
  Closes #11283

-
  A few paths were missed in the last commit, as well as a job added since
-
  then.
+
Wyatt OʼDay (9 Jun 2023)

-
  Followup-to 395b9175
+
- tls13-ciphers.d: include Schannel

-
- CI: adjust labeler match patterns
+
  Closes #11271

-
- runtests: support buffering log messages in runner & servers
+
Daniel Stenberg (9 Jun 2023)

-
  Log messages generated with logmsg can now be buffered and returned from
-
  the runner as a return value.  This will be needed with parallel testing
-
  to allow all messages for one test to be displayed together instead of
-
  interspersed with messages of multiple tests. Buffering can be disabled
-
  by setting a logging callback function with setlogfunc, which is
-
  currently being done to preserve existing logging behaviour for now.
+
- curl_pushheader_byname/bynum.3: document in their own man pages

-
  Some additional output is generated in verbose and debugprotocol modes,
-
  which don't always use logmsg. These modes also impact some servers
-
  which generate extra messages. No attempt is made to buffer everything
-
  if these modes are enabled.
+
  These two functions were added in 7.44.0 when CURLMOPT_PUSHFUNCTION was
+
  introduced but always lived a life in the shadows, embedded in the
+
  CURLMOPT_PUSHFUNCTION man page. Until now.

-
  Ref: #10818
-
  Closes #11016
+
  It makes better sense and gives more visibility to document them in
+
  their own stand-alone man pages.

-
- runtests: more consistently use logmsg in server control code
+
  Closes #11286

-
  Also, display an error when sshversioninfo returns one.
+
- curl_mprintf.3: minor fix of the example

-
  Ref: #10818
+
- curl_url_set: enforce the max string length check for all parts

-
- runtests: create runner functions for clearlocks and stopservers
+
  Update the docs and test 1559 accordingly

-
  runtests.pl now uses runner for all server actions beyond the initial
-
  variable configuration.
+
  Closes #11273

-
  Ref: #10818
+
- examples/ftpuploadresume.c: add use of CURLOPT_ACCEPTTIMEOUT_MS

-
- runtests: tightened servers package exports
+
  For show

-
  The defaults are intended for runtests.pl, whereas runner.pm needs to
-
  explicitly specify them.
+
  Closes #11277

-
- runtests: display logs on server failure in singletest()
+
- examples/unixsocket.c: example using CURLOPT_UNIX_SOCKET_PATH

-
  This is closer to the place where logs are displayed on test failure.
-
  Also, only display these logs if -p is given, which is the same flag
-
  that controls display of test failure logs. Some server log files
-
  need to be deleted later so that they stay around long enough to be
-
  displayed on failure.
+
  and alternatively CURLOPT_ABSTRACT_UNIX_SOCKET

-
  Ref: #10818
+
  Closes #11276

-
- runtests: turn a print into a logmsg
+
Anssi Kolehmainen (8 Jun 2023)

-
  Also enable another couple of useful messages in verbose mode.
+
- docs: fix missing parameter names in examples

-
  Ref: #10818
+
  Closes #11278

-
Daniel Stenberg (24 Apr 2023)
+
Daniel Stenberg (8 Jun 2023)

-
- http: store the password in the correct variable
+
- urlapi: have *set(PATH) prepend a slash if one is missing

-
  Typo from fc2f1e547a4a, detected by Coverity (because there's dead code
-
  due to this).
+
  Previously the code would just do that for the path when extracting the
+
  full URL, which made a subsequent curl_url_get() of the path to
+
  (unexpectedly) still return it without the leading path.

-
  Closes #11002
+
  Amend lib1560 to verify this. Clarify the curl_url_set() docs about it.

-
Stefan Eissing (24 Apr 2023)
+
  Bug: https://curl.se/mail/lib-2023-06/0015.html
+
  Closes #11272
+
  Reported-by: Pedro Henrique

-
- HTTP3/quiche: terminate h1 response header when no body is sent
+
Dan Fandrich (7 Jun 2023)

-
  - fixes a failure in test2501 where a response without body was missing
-
    the final empty line
+
- runtests; give each server a unique log lock file

-
  Closes #11003
+
  Logs are written by several servers and all of them must be finished
+
  writing before the test results can be determined. This means each
+
  server must have its own lock file rather than sharing a single one,
+
  which is how it was done up to now. Previously, the first server to
+
  complete a test would clear the lock before the other server was done,
+
  which caused flaky tests.

-
Dan Fandrich (22 Apr 2023)
+
  Lock files are now all found in their own directory, so counting locks
+
  equals counting the files in that directory.  The result is that the
+
  proxy logs are now reliably written which actually changes the expected
+
  output for two tests.

-
- runtests: move showdiff into runtests.pl
+
  Fixes #11231
+
  Closes #11259

-
  It's not used anywhere else.
+
- runtests: make test file directories in log/N

-
- devtest: add a new script for testing the test harness
+
  Test files in subdirectories were not created after parallel test log
+
  directories were moved down a level due to a now-bad comparison.

-
  This is currently useful for starting a test server on its own without
-
  an associated test, which can be used for interactive curl testing or
-
  for validating parts of the test harness itself. More commands can be
-
  added to perform additional functions in the future.
+
  Follow-up to 92d7dd39

-
  Ref: #10818
-
  Closes #11008
+
  Ref #11264
+
  Closes #11267

-
- runtests: refactor the main test loop into two
+
Daniel Stenberg (7 Jun 2023)

-
  The test loop now has an initial loop that first runs through all
-
  possible tests to build a set of those to attempt on this run based on
-
  features and keywords and only then goes through that new list to run
-
  them.  This actually makes it three loops through all tests cases, as
-
  there is an existing loop that gathers possible test numbers from the
-
  test files on disk.
+
- ws: make the curl_ws_meta() return pointer a const

-
  This has two minor effects on the output: all the tests that will be
-
  skipped are displayed at the start (instead of being interspersed with
-
  other tests) and the -l option no longer shows a count of tests at the
-
  end or a (misleading) statement that tests have run successfully. The
-
  skipped tests are also omitted from the test results sent to AppVeyor
-
  and Azure in CI builds.
+
  The returned info is read-only for the user.

-
  Another effect is a reduction in the amount of work considered part of
-
  the "Test definition reading and preparation time" reported with -r
-
  making those figures slightly lower than before.
+
  Closes #11261

-
  Ref: #10818
+
- RELEASE-NOTES: synced

-
- runtests: track only the current test timings in runner.pm
+
- runtests: move parallel log dirs from logN to log/N

-
  This avoids passing these data through through global variables, which
-
  soon won't be possible.
+
  Having several hundreds of them in there gets annoying.

-
  Ref: #10818
+
  Closes #11264

-
- runtests: skip test preprocessing when doing -l
+
Dan Fandrich (7 Jun 2023)

-
  This speeds up the output tremendously by avoiding unnecessary work.
+
- test447: move the test file into %LOGDIR

-
- runtests: simplify value returned regarding use of valgrind
+
Viktor Szakats (7 Jun 2023)

-
  As a side effect this will now also show in verbose mode that valgrind
-
  is being skipped on tests that explicitly disable it, such as 600.
+
- cmake: add support for "unity" builds

-
  Ref: #10818
+
  Aka "jumbo" or "amalgamation" builds. It means to compile all sources
+
  per target as a single C source. This is experimental.

-
- runtests: fix quoting in Appveyor and Azure test integration
+
  You can enable it by passing `-DCMAKE_UNITY_BUILD=ON` to cmake.
+
  It requires CMake 3.16 or newer.

-
  Test 1442's name was not quoted correctly so wasn't registered in
-
  Appveyor and it had the wrong name in Azure. The JSON string quotes were
-
  also invalid, even though both servers happened to accept it regardless.
+
  It makes builds (much) faster, allows for better optimizations and tends
+
  to promote less ambiguous code.

-
  Closes #11010
+
  Also add a new AppVeyor CI job and convert an existing one to use
+
  "unity" mode (one MSVC, one MinGW), and enable it for one macOS CI job.

-
Daniel Stenberg (19 Apr 2023)
+
  Fix related issues:
+
  - add missing include guard to `easy_lock.h`.
+
  - rename static variables and functions (and a macro) with names reused
+
    across sources, or shadowed by local variables.
+
  - add an `#undef` after use.
+
  - add a missing `#undef` before use.
+
  - move internal definitions from `ftp.h` to `ftp.c`.
+
  - `curl_memory.h` fixes to make it work when included repeatedly.
+
  - stop building/linking curlx bits twice for a static-mode curl tool.
+
    These caused doubly defined symbols in unity builds.
+
  - silence missing extern declarations compiler warning for ` _CRT_glob`.
+
  - fix extern declarations for `tool_freq` and `tool_isVistaOrGreater`.
+
  - fix colliding static symbols in debug mode: `debugtime()` and
+
    `statename`.
+
  - rename `ssl_backend_data` structure to unique names for each
+
    TLS-backend, along with the `ssl_connect_data` struct member
+
    referencing them. This required adding casts for each access.
+
  - add workaround for missing `[P]UNICODE_STRING` types in certain Windows
+
    builds when compiling `lib/ldap.c`. To support "unity" builds, we had
+
    to enable `SCHANNEL_USE_BLACKLISTS` for Schannel (a Windows
+
    `schannel.h` option) _globally_. This caused an indirect inclusion of
+
    Windows `schannel.h` from `ldap.c` via `winldap.h` to have it enabled
+
    as well. This requires `[P]UNICODE_STRING` types, which is apperantly
+
    not defined automatically (as seen with both MSVS and mingw-w64).
+
    This patch includes `<subauth.h>` to fix it.
+
    Ref: https://github.com/curl/curl/runs/13987772013
+
    Ref: https://dev.azure.com/daniel0244/curl/_build/results?buildId=15827&vie
+
  w=logs&jobId=2c9f582d-e278-56b6-4354-f38a4d851906&j=2c9f582d-e278-56b6-4354-f
+
  38a4d851906&t=90509b00-34fa-5a81-35d7-5ed9569d331c
+
  - tweak unity builds to compile `lib/memdebug.c` separately in memory
+
    trace builds to avoid PP confusion.
+
  - force-disable unity for test programs.
+
  - do not compile and link libcurl sources to libtests _twice_ when libcurl
+
    is built in static mode.

-
- RELEASE-NOTES: synced
+
  KNOWN ISSUES:
+
  - running tests with unity builds may fail in cases.
+
  - some build configurations/env may not compile in unity mode. E.g.:
+
    https://ci.appveyor.com/project/curlorg/curl/builds/47230972/job/51wfesgnfu
+
  auwl8q#L250

-
Dan Fandrich (18 Apr 2023)
+
  Ref: https://github.com/libssh2/libssh2/issues/1034
+
  Ref: https://cmake.org/cmake/help/latest/prop_tgt/UNITY_BUILD.html
+
  Ref: https://en.wikipedia.org/wiki/Unity_build

-
- runtests: spread out the port numbers used by servers
+
  Closes #11095

-
  The server ports are chosen randomly for each server, but the random
-
  ranges chosen were inconsistently-sized and overlapping. Now, they are
-
  spread out more so at least the first random port chosen for each server
-
  is guaranteed to not also be chosen by another server. The starting port
-
  numbers are also raised to put them in the Ephemeral Port range—not the
-
  range defined by RFC 6335 but the one used by Linux, which starts lower
-
  and gives us more room to work with.
+
Daniel Stenberg (7 Jun 2023)

-
  Reported-by: Daniel Stenberg
+
- examples/websocket.c: websocket example using CONNECT_ONLY

-
- runtests: fix problems on <killserver> failure
+
  Closes #11262

-
  The verify time must be set in this case, like all cases. An error
-
  message needs to be displayed as well.
+
- websocket-cb: example doing WebSocket download using callback

-
- runtests: fix perl warning when <tool> is wrong
+
  Very basic

-
- runtests: don't try to stop stunnel before trying again
+
  Closes #11260

-
  Calling stopserver() before retrying stunnel due to an error would stop
-
  the dependent server (such as HTTP) meaning stunnel would have nothing
-
  to talk to when it came up. Don't try to force a stop when it didn't
-
  actually start.  Also, don't mark the server as bad for future use when
-
  it starts up on a retry.
+
- test/.gitignore: ignore log*

-
  Reported-by: eaglegai at github
-
  Tested-by: eaglegai at github
-
  Fixes #10976
+
Dan Fandrich (5 Jun 2023)

-
- runtests: don't accidentally randomly choose the same port
+
- runtests: document the -j parallel testing option

-
  If a server couldn't be started on a port, a new one is randomly chosen
-
  and the server is tried again. Avoid accidentally using a
-
  randomly-chosen 0 port offset by adding 1 to the random number.
+
  Reported-by: Daniel Stenberg
+
  Ref: #10818
+
  Closes #11255

-
  Found-by: Daniel Stenberg
+
- runtests: create multiple test runners when requested

-
- runtests: don't attempt to use a port we know is in use
+
  Parallel testing is enabled by using a nonzero value for the -j option
+
  to runtests.pl. Performant values seem to be about 7*num CPU cores, or
+
  1.3*num CPU cores if Valgrind is in use.

-
  This reduces the startup time when there is a known conflict on the
-
  random port chosen for a server.  This was already done for stunnel, but
-
  now it's done for all servers.
+
  Flaky tests due to improper log locking (bug #11231) are exacerbated
+
  while parallel testing, so it is not enabled by default yet.

-
- http-server: fix server name in a log message
+
  Fixes #10818
+
  Closes #11246

-
  This changed when the file was renamed in commit cbf57176
+
- runtests: handle repeating tests in multiprocess mode

-
- runtests: refactor into more packages
-

-
  testutil.pm now contains a few miscellaneous functions that are used in
-
  several places but have no better place to live.  subvariables moves to
-
  servers.pm since most variables that it substitutes relate to servers,
-
  so this is the most appropriate place. Rename a few functions for better
-
  naming consistency.
+
  Such as what happens with the --repeat option.  Some functions are
+
  changed to pass the runner ID instead of relying on the non-unique test
+
  number.

  Ref: #10818
-
  Closes #10995
-

-
- runtests: call timestampskippedevents() in singletest

-
  ..rather than by the runner
+
- runtests: buffer logmsg while running singletest()

-
- runtests: assume a newer Valgrind by default
+
  This allows all messages relating to a single test case to be displayed
+
  together at the end of the test.

-
  The tests for an older Valgrind version should probably just be deleted,
-
  given that they're testing for an 18-year-old version.
+
  Ref: #10818

-
- runtests: refactor test runner code into runner.pm
+
- runtests: call initserverconfig() in the runner

-
  This is code that is directly responsible for running a single test.
-
  This will eventually run in a separate process as part of the parallel
-
  testing project.
+
  This must be done so variables pick up the runner's unique $LOGDIR.

  Ref: #10818

-
- runtests: skip unneeded work if test won't be running
+
- runtests: use a per-runner random seed

-
  This speeds up tests by avoiding unnecessary processing.
+
  Each runner needs a unique random seed to reduce the chance of port
+
  number collisions. The new scheme uses a consistent per-runner source of
+
  randomness which results in deterministic behaviour, as it did before.

  Ref: #10818

-
- runtests: factor out singletest_postcheck
+
- runtests: complete main test loop refactor for multiple runners

-
  This will eventually need to be part of the test runner.
+
  The main test loop is now able to handle multiple runners, or no
+
  additional runner processes at all. At most one process is still
+
  created, however.

  Ref: #10818

-
- test303: kill server after test
+
- runtests: prepare main test loop for multiple runners

-
  Otherwise, an HTTP test closely following this one with a tight time
-
  constraint (e.g. 672) could fail because the test server stays sitting
-
  with the wait command for a while.
+
  Some variables are expanded to arrays and hashes so that multiple
+
  runners can be used for running tests.

-
Patrick Monnerat (18 Apr 2023)
+
  Ref: #10818

-
- OS400: provide ILE/RPG usage examples
+
Stefan Eissing (5 Jun 2023)

-
  Closes https://github.com/curl/curl/pull/10994
+
- bufq: make write/pass methods more robust

-
- OS400: improve vararg emulation
+
  - related to #11242 where curl enters busy loop when
+
    sending http2 data to the server

-
  - Use V7R4 RPG procedure overloading to improve vararg emulation.
+
  Closes #11247

-
  From OS400 V7R4 and above, ILE/RPG implements a limited procedure
-
  overloading feature that can be used to improve curl's typed
-
  implementation of varargs procedures. This commit applies it to
-
  curl_easy_setopt(), curl_multi_setopt(), curl_share_setopt() and
-
  curl_easy_getinfo().
+
Boris Verkhovskiy (5 Jun 2023)

-
  Closes https://github.com/curl/curl/pull/10994
+
- tool_getparam: fix comment

-
- OS400: fix and complete ILE/RPG binding
+
  Closes #11253

-
  - Fix wrong definitions of CURL_ZERO_TERNINATED, curl_mime_data() and
-
    curl_mime_data_ccsid().
+
Raito Bezarius (5 Jun 2023)

-
  - Add recent definitions, in particular blob, header API and WebSockets
-
    API.
+
- haproxy: add --haproxy-clientip flag to spoof client IPs

-
  - Support for CURLVERSION_ELEVENTH.
+
  CURLOPT_HAPROXY_CLIENT_IP in the library

-
  - New functions for EBCDIC support.
+
  Closes #10779

-
  Reflect these changes in README.OS400.
+
Daniel Stenberg (5 Jun 2023)

-
  Closes https://github.com/curl/curl/pull/10994
+
- curl: add --ca-native and --proxy-ca-native

-
- OS400: implement EBCDIC support for recent features
+
  These are two boolean options to ask curl to use the native OS's CA
+
  store when verifying TLS servers. For peers and for proxies
+
  respectively.

-
  - Support CURLVERSION_ELEVENTH.
+
  They currently only have an effect for curl on Windows when built to use
+
  OpenSSL for TLS.

-
  - New function curl_url_strerror_ccsid().
+
  Closes #11049

-
  - curl_easy_setopt_ccsid() supports blobs and 3 recent string options.
+
Viktor Szakats (5 Jun 2023)

-
  - New function curl_easy_header_ccsid().
+
- build: drop unused/redundant `HAVE_WINLDAP_H`

-
  - New generic latin1<-->ccsid conversion functions curl_from_ccsid() and
-
    curl_to_ccsid() for user convenience.
+
  Sources did not use it. Autotools used it when checking for the
+
  `winldap` library, which is redundant.

-
  - README.OS400 updated accordingly.
+
  With CMake, detection was broken:
+
  ```
+
  Run Build Command(s):/usr/local/Cellar/cmake/3.26.3/bin/cmake -E env VERBOSE=
+
  1 /usr/bin/make -f Makefile cmTC_2d8fe/fast && /Library/Developer/CommandLine
+
  Tools/usr/bin/make  -f CMakeFiles/cmTC_2d8fe.dir/build.make CMakeFiles/cmTC_2
+
  d8fe.dir/build
+
  Building C object CMakeFiles/cmTC_2d8fe.dir/HAVE_WINLDAP_H.c.obj
+
  /usr/local/opt/llvm/bin/clang --target=x86_64-w64-mingw32 --sysroot=/usr/loca
+
  l/opt/mingw-w64/toolchain-x86_64 -D_WINSOCKAPI_="" -I/my/quictls/x64-ucrt/usr
+
  /include -I/my/zlib/x64-ucrt/usr/include -I/my/brotli/x64-ucrt/usr/include -W
+
  no-unused-command-line-argument   -D_UCRT -DCURL_HIDDEN_SYMBOLS -DHAVE_SSL_SE
+
  T0_WBIO -DHAS_ALPN -DNGHTTP2_STATICLIB -DNGHTTP3_STATICLIB -DNGTCP2_STATICLIB
+
   -DUSE_MANUAL=1  -fuse-ld=lld -Wl,-s -static-libgcc  -lucrt  -Wextra -Wall -p
+
  edantic -Wbad-function-cast -Wconversion -Winline -Wmissing-declarations -Wmi
+
  ssing-prototypes -Wnested-externs -Wno-long-long -Wno-multichar -Wpointer-ari
+
  th -Wshadow -Wsign-compare -Wundef -Wunused -Wwrite-strings -Wcast-align -Wde
+
  claration-after-statement -Wempty-body -Wendif-labels -Wfloat-equal -Wignored
+
  -qualifiers -Wno-format-nonliteral -Wno-sign-conversion -Wno-system-headers -
+
  Wstrict-prototypes -Wtype-limits -Wvla -Wshift-sign-overflow -Wshorten-64-to-
+
  32 -Wdouble-promotion -Wenum-conversion -Wunused-const-variable -Wcomma -Wmis
+
  sing-variable-declarations -Wassign-enum -Wextra-semi-stmt  -MD -MT CMakeFile
+
  s/cmTC_2d8fe.dir/HAVE_WINLDAP_H.c.obj -MF CMakeFiles/cmTC_2d8fe.dir/HAVE_WINL
+
  DAP_H.c.obj.d -o CMakeFiles/cmTC_2d8fe.dir/HAVE_WINLDAP_H.c.obj -c /my/curl/b
+
  ld-cmake-llvm-x64-shared/CMakeFiles/CMakeScratch/TryCompile-3JP6dR/HAVE_WINLD
+
  AP_H.c
+
  In file included from /my/curl/bld-cmake-llvm-x64-shared/CMakeFiles/CMakeScra
+
  tch/TryCompile-3JP6dR/HAVE_WINLDAP_H.c:2:
+
  In file included from /usr/local/opt/mingw-w64/toolchain-x86_64/x86_64-w64-mi
+
  ngw32/include/winldap.h:17:
+
  In file included from /usr/local/opt/mingw-w64/toolchain-x86_64/x86_64-w64-mi
+
  ngw32/include/schnlsp.h:9:
+
  In file included from /usr/local/opt/mingw-w64/toolchain-x86_64/x86_64-w64-mi
+
  ngw32/include/schannel.h:10:
+
  /usr/local/opt/mingw-w64/toolchain-x86_64/x86_64-w64-mingw32/include/wincrypt
+
  .h:5041:254: error: unknown type name 'PSYSTEMTIME'
+
    WINIMPM PCCERT_CONTEXT WINAPI CertCreateSelfSignCertificate (HCRYPTPROV_OR_
+
  NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey, PCERT_NAME_BLOB pSubjectIssuerBlob, 
+
  DWORD dwFlags, PCRYPT_KEY_PROV_INFO pKeyProvInfo, PCRYPT_ALGORITHM_IDENTIFIER
+
   pSignatureAlgorithm, PSYSTEMTIME pStartTime, PSYSTEMTIME pEndTime, PCERT_EXT
+
  ENSIONS pExtensions);
+
                                                                               
+
                                                                               
+
                                                                               
+
                        ^
+
  /usr/local/opt/mingw-w64/toolchain-x86_64/x86_64-w64-mingw32/include/wincrypt
+
  .h:5041:278: error: unknown type name 'PSYSTEMTIME'
+
    WINIMPM PCCERT_CONTEXT WINAPI CertCreateSelfSignCertificate (HCRYPTPROV_OR_
+
  NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey, PCERT_NAME_BLOB pSubjectIssuerBlob, 
+
  DWORD dwFlags, PCRYPT_KEY_PROV_INFO pKeyProvInfo, PCRYPT_ALGORITHM_IDENTIFIER
+
   pSignatureAlgorithm, PSYSTEMTIME pStartTime, PSYSTEMTIME pEndTime, PCERT_EXT
+
  ENSIONS pExtensions);
+
                                                                               
+
                                                                               
+
                                                                               
+
                                                ^
+
  2 errors generated.
+
  make[1]: *** [CMakeFiles/cmTC_2d8fe.dir/HAVE_WINLDAP_H.c.obj] Error 1
+
  make: *** [cmTC_2d8fe/fast] Error 2
+
  exitCode: 2
+
  ```

-
  - Removed a leftover QsoSSL support identifier.
+
  Cherry-picked from #11095 88e4a21ff70ccef391cf99c8165281ff81374503
+
  Reviewed-by: Daniel Stenberg
+
  Closes #11245

-
  Closes https://github.com/curl/curl/pull/10994
+
Daniel Stenberg (5 Jun 2023)

-
- OS400: rework build scripts
+
- urlapi: scheme starts with alpha

-
  - Rename shell function "system" to "CLcommand" to avoid confusion with
-
    built-in command.
+
  Add multiple tests to lib1560 to verify

-
  - Reformat scripts. Fix some indentations. Avoid lines > 80 characters
-
    where possible.
+
  Fixes #11249
+
  Reported-by: ad0p on github
+
  Closes #11250

-
  - Support ASCII runtime development files in a user-defined directory
-
    path.
+
- RELEASE-NOTES: synced

-
  - FIX SONAME detection.
+
- CURLOPT_MAIL_RCPT_ALLOWFAILS: replace CURLOPT_MAIL_RCPT_ALLLOWFAILS

-
  - Drop form API test program compilation (does not exist anymore).
+
  Deprecate the name using three Ls and prefer the name with two.

-
  Closes https://github.com/curl/curl/pull/10994
+
  Replaces #10047
+
  Closes #11218

-
Sevan Janiyan (18 Apr 2023)
+
- tests/servers: generate temp names in /tmp for unix domain sockets

-
- tests/sshserver.pl: Define AddressFamily earlier
+
  ... instead of putting them in the regular pid directories because
+
  systems generally have strict length requirements for the path name to
+
  be shorter than 107 bytes and we easily hit that boundary otherwise.

-
  As the comment states "Address family must be specified before ListenAddress"
-
  , otherwise the tests fail to run
-
  `"failed starting SSH server" 52 times (582, 583, 600, 601, 602, 603, 604, 60
-
  5, 606 and 43 more)`
+
  The new concept generates two random names: one for the socks daemon and
+
  one for http.

-
  Closes #10983
+
  Reported-by: Andy Fiddaman
+
  Fixes #11152
+
  Closes #11166

-
Stefan Eissing (18 Apr 2023)
+
Stefan Eissing (2 Jun 2023)

-
- quiche: Enable IDLE egress handling
+
- http2: better support for --limit-rate

-
  Follow-up to 544abeea which added the handling but wrongly left it
-
  commented out.
+
  - leave transfer loop when --limit-rate is in effect and has
+
    been received
+
  - adjust stream window size to --limit-rate plus some slack
+
    to make the server observe the pacing we want
+
  - add test case to confirm behaviour

-
  Closes https://github.com/curl/curl/pull/11000
+
  Closes #11115

-
Daniel Stenberg (18 Apr 2023)
+
- curl_log: evaluate log statement only when transfer is verbose

-
- docs/examples/protofeats.c: Outputs all protocols and features
+
  Closes #11238

-
  Showing off one way to get to char pointer arrays of info returned by
-
  curl_version_info()
+
Daniel Stenberg (2 Jun 2023)

-
  Closes #10991
+
- libssh2: provide error message when setting host key type fails

-
- tests/keywords.pl: remove
+
  Ref: https://curl.se/mail/archive-2023-06/0001.html

-
  This script does not work since the introduction of the test
-
  preprocessing. If we need this functionality, it probably needs to be
-
  moved into the runtests tool or similar.
+
  Closes #11240

-
  Reported-by: Dan Fandrich
-
  Fixes #10895
-
  Closes #10987
+
Igor Todorovski (2 Jun 2023)

-
Stefan Eissing (17 Apr 2023)
+
- system.h: remove __IBMC__/__IBMCPP__ guards and apply to all z/OS compiles

-
- http2: support HTTP/2 to forward proxies, non-tunneling
+
  Closes #11241

-
  - with `--proxy-http2` allow h2 ALPN negotiation to
-
    forward proxies
-
  - applies to http: requests against a https: proxy only,
-
    as https: requests will auto-tunnel
-
  - adding a HTTP/1 request parser in http1.c
-
  - removed h2h3.c
-
  - using new request parser in nghttp2 and all h3 backends
-
  - adding test 2603 for request parser
-
  - adding h2 proxy test cases to test_10_*
+
Daniel Stenberg (2 Jun 2023)

-
  scorecard.py: request scoring accidentally always run curl
-
  with '-v'. Removed that, expect double numbers.
+
- docs/SECURITY-PROCESS.md: link to example of previous critical flaw

-
  labeller: added http1.* and h2-proxy sources to detection
+
Mark Seuffert (2 Jun 2023)

-
  Closes #10967
+
- README.md: updated link to opencollective

-
Daniel Stenberg (17 Apr 2023)
+
  Closes #11232

-
- curl_easy_unescape.3: rename the argument
+
Daniel Stenberg (1 Jun 2023)

-
  and highlight it appropriately in the text.
+
- libssh2: use custom memory functions

-
  Closes #10979
+
  Because of how libssh2_userauth_keyboard_interactive_ex() works: the
+
  libcurl callback allocates memory that is later free()d by libssh2, we
+
  must set the custom memory functions.

-
Viktor Szakats (17 Apr 2023)
+
  Reverts 8b5f100db388ee60118c08aa28

-
- autotools: sync up clang picky warnings with cmake
+
  Ref: https://github.com/libssh2/libssh2/issues/1078
+
  Closes #11235

-
  Bringing missing options over from CMake.
+
- test447: test PUTting a file that grows

-
  Move around existing `-Wno-pointer-bool-conversion` option to come
-
  _after_ `-Wconversion`.
+
  ... and have curl trim the end when it reaches the expected total amount
+
  of bytes instead of over-sending.

-
  Reviewed-by: Marcel Raad
-
  Closes #10974
+
  Reported-by: JustAnotherArchivist on github
+
  Closes #11223

-
Daniel Stenberg (17 Apr 2023)
+
- curl: count uploaded data to stop at the originally given size

-
- tests/libtest/lib1900.c: remove
+
  Closes #11223
+
  Fixes #11222
+
  Reported-by: JustAnotherArchivist on github

-
  This file was left behind when the rest of the test was previously removed.
+
- tool: remove exclamation marks from error/warning messages

-
  Follow-up to e50a877df74f
+
- tool: use errorf() for error output

-
- src/tool_operhlp.c: fix value stored to 'uerr' is never read
+
  Convert a number of fprintf() calls.

-
  Ref: https://github.com/curl/curl/pull/10974#issuecomment-1510461343
-
  Reported-by: Viktor Szakats
-
  Closes #10982
+
- tool: remove newlines from all helpf/notef/warnf/errorf calls

-
Viktor Szakats (16 Apr 2023)
+
  Make voutf() always add one.

-
- cmake: speed up and extend picky clang/gcc options
+
  Closes #11226

-
  Extend existing picky compiler options with ones missing compared to
-
  autotools builds. Also sync options between clang and gcc.
+
- tests/servers.pm: pick unused port number with a server socket

-
  Redesign the way we enable these options to avoid the slow option
-
  detection almost completely.
+
  This change replaces the previous method of picking a port number at
+
  random to try to start servers on, then retrying up to ten times with
+
  new random numbers each time, with a function that creates a server
+
  socket on port zero, thereby getting a suitable random port set by the
+
  kernel. That server socket is then closed and that port number is used
+
  to setup the actual test server on.

-
  This reduces the number of detections from 35 to zero for clang and
-
  3 for gcc, even after adding a bunch of new options.
+
  There is a risk that *another* server can be started on the machine in
+
  the time gap, but the server verification feature will detect that.

-
  clang 3.0 (2011-11-29) and gcc 2.95 (1999-07-31) now required.
+
  Closes #11220

-
  Also show enabled picky options.
+
- RELEASE-NOTES: synced

-
  Ref: https://github.com/libssh2/libssh2/pull/952
+
  bump to 8.2.0

-
  Reviewed-by: Daniel Stenberg
-
  Closes #10973
+
Alejandro R. Sedeño (31 May 2023)

-
Andreas Falkenhahn (16 Apr 2023)
+
- configure: fix run-compiler for old /bin/sh

-
- nbtlm: use semicolons instead of commas for (void) args
+
  If you try to assign and export on the same line on some older /bin/sh
+
  implementations, it complains:

-
  Closes #10978
+
  ```
+
  $ export "NAME=value"
+
  NAME=value: is not an identifier
+
  ```

-
Daniel Stenberg (15 Apr 2023)
+
  This commit rewrites run-compiler's assignments and exports to work with
+
  old /bin/sh, splitting assignment and export into two separate
+
  statements, and only quote the value. So now we have:

-
- multi: free up more data earleier in DONE
+
  ```
+
  NAME="value"
+
  export NAME
+
  ```

-
  Before checking for more users of the connection and possibly bailing
-
  out.
+
  While we're here, make the same change to the two supporting
+
  assign+export lines preceeding the script to be consistent with how
+
  exports work throughout the rest of configure.ac.

-
  Fixes #10971
-
  Reported-by: Paweł Wegner
-
  Closes #10972
+
  Closes #11228

-
- RELEASE-NOTES: synced
+
Philip Heiduck (31 May 2023)

-
- curl: do NOT append file name to path for upload when there's a query
+
- circleci: install impacket & wolfssl 5.6.0

-
  Added test 425 to verify.
+
  Closes #11221

-
  Reported-by: Dirk Rosenkranz
-
  Bug: https://curl.se/mail/archive-2023-04/0008.html
-
  Closes #10969
+
Daniel Stenberg (31 May 2023)

-
- libcurl-thread.3: improved name resolver wording
+
- tool_urlglob: use curl_off_t instead of longs

-
  And make better .SH sections
+
  To handle more globs better (especially on Windows)

-
  Closes #10966
+
  Closes #11224

-
Colman Mbuya (14 Apr 2023)
+
Dan Fandrich (30 May 2023)

-
- CURLOPT_PROXY_SSL_VERIFYPEER.3: fix minor grammar mistake
+
- scripts: Fix GHA matrix job detection in cijobs.pl

-
  Closes #10968
+
  The parsing is pretty brittle and it broke detecting some jobs at some
+
  point. Also, detect if Windows is used in GHA.

-
Daniel Stenberg (14 Apr 2023)
+
- runtests: abort test run after failure without -a

-
- curl: add --proxy-http2
+
  This was broken in a recent refactor and test runs would not stop.

-
  For trying HTTP/2 with an HTTPS proxy.
+
  Follow-up to d4a1b5b6

-
  Closes #10926
+
  Reported-by: Daniel Stenberg
+
  Fixes #11225
+
  Closes #11227

-
- KNOWN_BUGS: remove fixed or outdated issues, move non-bugs
+
Version 8.1.2 (30 May 2023)

-
  - remove h3 issues believed to be fixed
+
Daniel Stenberg (30 May 2023)

-
  - make the flaky CI issue be generic and not Windows specific
+
- RELEASE-NOTES: synced

-
  - "TLS session cache does not work with TFO" now documented
+
  8.1.2 release

-
    This is now a documented restriction and not a bug. TFO in general is
-
    rarely used and has other problems, making it a low-priotity thing to
-
    work on.
+
- THANKS: contributors from 8.1.2

-
  - remove "Renegotiate from server may cause hang for OpenSSL backend"
+
- lib1560: verify more scheme guessing

-
    This is an OpenSSL issue, not a curl one. Even if it taints curl.
+
  - on 2nd level domains
+
  - on names without dots

-
  - rm "make distclean loops forever"
+
  As mentioned in #11161, "imap.com" will be guessed IMAP

-
  - rm "configure finding libs in wrong directory"
+
  Closes #11219

-
    Added a section to docs/INSTALL.md about it.
+
- page-header: minor wording polish in the URL segment

-
  - "A shared connection cache is not thread-safe"
+
  Closes #11217

-
    Moved over to TODO and expanded for other sharing improvements we
-
    could do
+
- page-header: mention curl version and how to figure out current release

-
  - rm "CURLOPT_OPENSOCKETPAIRFUNCTION is missing"
+
  Closes #11216

-
  - rm "Blocking socket operations in non-blocking API"
+
- RELEASE-NOTES: synced

-
    Already listed as a TODO
+
- configure: without pkg-config and no custom path, use -lnghttp2

-
  - rm "curl compiled on OSX 10.13 failed to run on OSX 10.10"
+
  Reported-by: correctmost on github
+
  Fixes #11186
+
  Closes #11210

-
    Water under the bridge. No one cares about this anymore.
+
Stefan Eissing (28 May 2023)

-
  - rm "build on Linux links libcurl to libdl"
+
- curl: cache the --trace-time value for a second

-
    Verified to not be true (anymore).
+
  - caches HH:MM:SS computed and reuses it for logging during
+
    the same second.
+
  - common function for plain log line start formatting

-
  - rm "libpsl is not supported"
+
  Closes #11211

-
    The cmake build supports it since cafb356e19cda22
+
Kev Jackson (28 May 2023)

-
  Closes #10963
+
- libcurl.m4: remove trailing 'dnl' that causes this to break autoconf

-
- url: fix PVS nits
+
  Closes #11212

-
  - expression 'hostptr' is always true
-
  - a part of conditional expression is always true: proxypasswd
-
  - expression 'proxyuser' is always true
-
  - avoid multiple Curl_now() calls in allocate_conn
+
Stefan Eissing (26 May 2023)

-
  Ref: #10929
-
  Closes #10959
+
- http3: send EOF indicator early as possible

-
- bufq: simplify since expression is always true
+
  - ngtcp2 and quiche implementations relied on the DONE_SEND event
+
    to forward the EOF for uploads to the libraries. This often
+
    result in a last 0 length EOF data. Tracking the amount of
+
    data left to upload allows EOF indication earlier.
+
  - refs #11205 where CloudFlare DoH servers did not like to
+
    receive the initial upload DATA without EOF and returned
+
    a 400 Bad Request

-
  The check for 'len' is already done so it will remain true until
-
  updated. Pointed out by PVS.
+
  Reported-by: Sergey Fionov
+
  Fixes #11205
+
  Closes #11207

-
  Ref: #10929
-
  Closes #10958
+
Daniel Stenberg (26 May 2023)

-
- hash: fix assigning same value
+
- scripts/contri*sh: no longer grep -v ' '

-
  Pointed out by PVS
+
  Originally these scripts filtered out names that have no space so that
+
  they better avoid nick names not intended for credits. Such names are
+
  not too commonly used, plus we now give credit even to those.

-
  Ref: #10929
-
  Closes #10956
+
  Additionally: non-latin names, like Asian, don't have spaces at all so
+
  they were also filtered out and had to be manually added which made it
+
  an error-prone operation where Asian names eventually easily fell off by
+
  mistake.

-
- cookie: address PVS nits
+
  Closes #11206

-
  - avoid assigning the same value again
-
  - remove superfluous check of co->domain
-
  - reduce variable scope for namep/valuep
+
- cf-socket: restore Curl_sock_assign_addr()

-
  Ref: #10929
-
  Closes #10954
+
  Regression since it was not private. Also used by msh3.c

-
Stefan Eissing (14 Apr 2023)
+
  Follow-up to 8e85764b7bd7f05f5
+
  Reported-by: Gisle Vanem
+
  Fixes #11202
+
  Closes #11204

-
- cf-socket: Disable socket receive buffer by default
+
- RELEASE-NOTES: synced

-
  - Disable socket receive buffer unless USE_RECV_BEFORE_SEND_WORKAROUND
-
    is in place.
+
  Taken down to 8.1.2 now for pending patch release

-
  While we would like to use the receive buffer, we have stalls in
-
  parallel transfers where not all buffered data is consumed and no socket
-
  events happen.
+
- libssh: when keyboard-interactive auth fails, try password

-
  Note USE_RECV_BEFORE_SEND_WORKAROUND is a Windows sockets workaround
-
  that has been disabled by default since b4b6e4f1, due to other bugs.
+
  The state machine had a mistake in that it would not carry on to that
+
  next step.

-
  Closes https://github.com/curl/curl/pull/10961
+
  This also adds a verbose output what methods that are available from the
+
  server and renames the macros that change to the next auth methods to
+
  try.

-
- cf-h2-proxy: fix processing ingress to stop too early
+
  Reported-by: 左潇峰
+
  Fixes #11196
+
  Closes #11197

-
  - progress ingress stopped too early, causing data
-
    from the underlying filters to not be processed and
-
    report that no tunnel data was available
-
  - this lead to "hangers" where no socket activity was
-
    seen but data rested in buffers
+
Emanuele Torre (25 May 2023)

-
  Closes #10952
+
- configure: fix build with arbitrary CC and LD_LIBRARY_PATH

-
- http3: check stream_ctx more thoroughly in all backends
+
  Since ./configure and processes that inherit its environment variables
+
  are the only callers of the run-compiler script, we can just save the
+
  current value of the LD_LIBRARY_PATH and CC variables to another pair of
+
  environment variables, and make run-compiler a static script that
+
  simply restores CC and LD_LIBRARY_PATH to the saved value, and before
+
  running the compiler.

-
  - callbacks and filter methods might be invoked at unexpected
-
    times, e.g. when the transfer's stream_ctx has not been initialized
-
    yet or, more likely, has already been taken down.
-
  - check for existance of stream_ctx in such places and return
-
    an error or silently succeed the call.
+
  This avoids having to inject the values of the variables in the script,
+
  possibly causing problems if they contains spaces, quotes, and other
+
  special characters.

-
  Closes #10951
+
  Also add exports in the script just in case LD_LIBRARY_PATH and CC are
+
  not already in the environment.

-
Daniel Stenberg (13 Apr 2023)
+
  follow-up from 471dab2

-
- ftp: fix 'portsock' variable was assigned the same value
+
  Closes #11182

-
  Pointed out by PVS
+
Daniel Stenberg (25 May 2023)

-
  Ref: #10929
-
  Closes #10955
+
- urlapi: remove superfluous host name check

-
- ftp: remove dead code
+
  ... as it is checked later more proper.

-
  This condition can never be true here since it is handled already 28
-
  lines above.
+
  Closes #11195

-
  Pointed out by PVS.
+
Stefan Eissing (25 May 2023)

-
  Ref: #10929
-
  Closes #10957
+
- http2: fix EOF handling on uploads with auth negotiation

-
- cf-h1-proxy: skip an extra NULL assign
+
  - doing a POST with `--digest` does an override on the initial request
+
    with `Content-Length: 0`, but the http2 filter was unaware of that
+
    and expected the originally request body. It did therefore not
+
    send a final DATA frame with EOF flag to the server.
+
  - The fix overrides any initial notion of post size when the `done_send`
+
    event is triggered by the transfer loop, leading to the EOF that
+
    is necessary.
+
  - refs #11194. The fault did not happen in testing, as Apache httpd
+
    never tries to read the request body of the initial request,
+
    sends the 401 reply and closes the stream. The server used in the
+
    reported issue however tried to read the EOF and timed out on the
+
    request.

-
  and use Curl_safefree() once to save another NULL assign. Found by PVS.
+
  Reported-by: Aleksander Mazur
+
  Fixes #11194
+
  Cloes #11200

-
  Ref. #10929
-
  Closes #10953
+
Daniel Stenberg (23 May 2023)

-
Philip Heiduck (13 Apr 2023)
+
- RELEASE-NOTES: synced

-
- GHA: suppress git clone output
+
  bump to 8.2.0

-
  Follow-up: https://github.com/curl/curl/commit/8203aa6ed405ec832d2c62f18dfda2
-
  93f89a23f9
+
- lib: remove unused functions, make single-use static

-
  Closes #10949
+
  Closes #11174

-
Stefan Eissing (13 Apr 2023)
+
- scripts/singleuse.pl: add more API calls

-
- cf-socket: remove dead code discovered by PVS
+
Christian Hesse (23 May 2023)

-
  Closes #10960
+
- configure: quote the assignments for run-compiler

-
Daniel Stenberg (13 Apr 2023)
+
  Building for multilib failed, as the compiler command contains an
+
  extra argument. That needs quoting.

-
- http: skip a double NULL assign
+
  Regression from b78ca50cb3dda361f9c1

-
  and also use a local variable to shorten the long names and increase
-
  readability in the function. Pointed out by PVS.
+
  Fixes #11179
+
  Closes #11180

-
  Ref: #10929
-
  Closes #10950
+
Daniel Stenberg (23 May 2023)

-
- mime: skip NULL assigns after Curl_safefree()
+
- misc: fix spelling mistakes

-
  Pointed out by PVS.
+
  Reported-by: musvaage on github
+
  Fixes #11171
+
  Closes #11172

-
  Ref: #10929
-
  Closes #10947
+
Version 8.1.1 (23 May 2023)

-
- rtsp: skip NULL assigns after Curl_safefree()
+
Daniel Stenberg (23 May 2023)

-
  ... since this is a macro that assigns NULL itself. Pointed out by PVS.
+
- RELEASE-NOTES: synced

-
  Ref: #10929
-
  Closes #10946
+
  curl 8.1.1

-
- smb: remove double assign
+
- THANKS: contributors from the 8.1.1 release

-
  The same value is assigned the same value already a few lines above.
-
  Pointed out by PVS.
+
Dan Fandrich (22 May 2023)

-
  Ref: #10929
-
  Closes #10945
+
- docs: fix fuzzing documentation link

-
- transfer: skip extra assign
+
  Follow-up to 4c712a1b

-
  The 'result' variable already contains CURLE_OK at this point, no use in
-
  setting it again. Pointed out by PVS.
+
- CI: add an Alpine build with MUSL

-
  Ref: #10929
-
  Closes #10944
+
  MUSL is another libc implementation which has its own unique issues
+
  worth testing.

-
- urlapi: skip a pointless assign
+
  Ref: #11140
+
  Closes #11178

-
  It stores a null byte after already having confirmed there is a null
-
  byte there. Detected by PVS.
+
- runtests: add a missing \n at the end of a log message

-
  Ref: #10929
-
  Closes #10943
+
correctmost on github (22 May 2023)

-
Philip Heiduck (13 Apr 2023)
+
- SECURITY-PROCESS.md: link security advisory doc and fix typo

-
- GHA: suppress git clone output
+
  Closes #11177

-
  Closes #10939
+
Daniel Stenberg (22 May 2023)

-
Stefan Eissing (13 Apr 2023)
+
- TODO: build curl with Windows Unicode support

-
- tests: make test_12_01 a bit more forgiving on connection counts
+
  Closes #7229

-
- cf-socket: add socket recv buffering for most tcp cases
+
- KNOWN_BUGS: hyper memory-leaks

-
  - use bufq as recv buffer, also for Windows pre-receive handling
-
  - catch small reads followed by larger ones in a single socket
-
    call. A common pattern on TLS connections.
+
  Closes #10803

-
  Closes #10787
+
Stefan Eissing (22 May 2023)

-
Daniel Stenberg (13 Apr 2023)
+
- http/2: unstick uploads

-
- urlapi: cleanups
+
  - refs #11157 and #11175 where uploads get stuck or lead to RST streams
+
  - fixes our h2 send behaviour to continue sending in the nghttp2 session
+
    as long as it wants to. This will empty our send buffer as long as
+
    the remote stream/connection window allows.
+
  - in case the window is exhausted, the data remaining in the send buffer
+
    will wait for a WINDOW_UPDATE from the server. Which is a socket event
+
    that engages our transfer loop again
+
  - the problem in the issue was that we did not exhaust the window, but
+
    left data in the sendbuffer and no further socket events did happen.
+
    The server was just waiting for us to send more.
+
  - relatedly, there was an issue fixed that closing a stream with KEEP_HOLD
+
    set kept the transfer from shutting down - as it should have - leading
+
    to a timeout.

-
  - move host checks together
-
  - simplify the scheme parser loop and the end of host name parser
-
  - avoid itermediate buffer storing in multiple places
-
  - reduce scope for several variables
-
  - skip the Curl_dyn_tail() call for speed
-
  - detect IPv6 earlier and skip extra checks for such hosts
-
  - normalize directly in dynbuf instead of itermediate buffer
-
  - split out the IPv6 parser into its own funciton
-
  - call the IPv6 parser directly for ipv6 addresses
-
  - remove (unused) special treatment of % in host names
-
  - junkscan() once in the beginning instead of scattered
-
  - make junkscan return error code
-
  - remove unused query management from dedotdotify()
-
  - make Curl_parse_login_details use memchr
-
  - more use of memchr() instead of strchr() and less strlen() calls
-
  - make junkscan check and return the URL length
+
  Closes #11176

-
  An optimized build runs one of my benchmark URL parsing programs ~41%
-
  faster using this branch. (compared against the shipped 7.88.1 library
-
  in Debian)
+
Daniel Stenberg (21 May 2023)

-
  Closes #10935
+
- workflows/macos: add a job using gcc + debug + secure transport

-
Josh McCullough (13 Apr 2023)
+
Jay Satiro (21 May 2023)

-
- http2: fix typo in infof() call
+
- lib: fix conversion warnings with gcc on macOS

-
  Closes #10940
+
Daniel Stenberg (21 May 2023)

-
Daniel Stenberg (12 Apr 2023)
+
- sectransp.c: make the code c89 compatible

-
- noproxy: pointer to local array 'hostip' is stored outside scope
+
  Follow-up to dd2bb485521c2ec713001b3a

-
  Ref: #10929
-
  Closes #10933
+
  Reported-by: FeignClaims on github
+
  Fixes #11155
+
  Closes #11159

-
Stefan Eissing (12 Apr 2023)
+
Emanuele Torre (21 May 2023)

-
- connect: fix https connection setup to treat ssl_mode correctly
+
- Revert "urlapi: respect CURLU_ALLOW_SPACE and CURLU_NO_AUTHORITY for redirect
+
  s"

-
  - for HTTPS protocol, a disabled ssl should never be acceptables.
-

-
  Closes #10934
-

-
Douglas R. Reno (12 Apr 2023)
-

-
- CMakeLists.txt: fix typo for Haiku detection
-

-
  Closes #10937
+
  This reverts commit df6c2f7b544f1f35f2a3e0be11f345affeb6fe9c.
+
  (It only keep the test case that checks redirection to an absolute URL
+
  without hostname and CURLU_NO_AUTHORITY).

-
Dan Fandrich (11 Apr 2023)
+
  I originally wanted to make CURLU_ALLOW_SPACE accept spaces in the
+
  hostname only because I thought
+
  curl_url_set(CURLUPART_URL, CURLU_ALLOW_SPACE) was already accepting
+
  them, and they were only not being accepted in the hostname when
+
  curl_url_set(CURLUPART_URL) was used for a redirection.

-
- pathhelp: use the cached $use_cygpath when available
+
  That is not actually the case, urlapi never accepted hostnames with
+
  spaces, and a hostname with a space in it never makes sense.
+
  I probably misread the output of my original test when I they were
+
  normally accepted when using CURLU_ALLOW_SPACE, and not redirecting.

-
- runtests: eliminate unneeded variable
+
  Some other URL parsers seems to allow space in the host part of the URL,
+
  e.g. both python3's urllib.parse module, and Chromium's javascript URL
+
  object allow spaces (chromium percent escapes the spaces with %20),
+
  (they also both ignore TABs, and other whitespace characters), but those
+
  URLs with spaces in the hostname are useless, neither python3's requests
+
  module nor Chromium's window.location can actually use them.

-
- runtests: make the # of server start attempts a constant
+
  There is no reason to add support for URLs with spaces in the host,
+
  since it was not a inconsistency bug; let's revert that patch before it
+
  makes it into release. Sorry about that.

-
- runtests: on startup failure call displaylogs only in serverfortest
+
  I also reverted the extra check for CURLU_NO_AUTHORITY since that does
+
  not seem to be necessary, CURLU_NO_AUTHORITY already worked for
+
  redirects.

-
  This reduces the number of calls spread throughout the code.
+
  Closes #11169

-
  Ref: #10818
-
  Closes #10919
+
Dan Fandrich (20 May 2023)

-
- runtests: return an error code with startservers()
+
- runtests: use the correct fd after select

-
  The code indicates the kind of failure encountered in starting a server,
-
  which can be used by the caller to tailor the user experience.
+
  The code was using the wrong fd when determining which runner was ready
+
  with a response.

  Ref: #10818
+
  Closes #11160

-
- runtests: abort early if runpingpongserver is given a bad server type
+
- test425: fix the log directory for the upload

-
- runtests: don't use the SMB server verification time as reference
+
  This must be %LOGDIR to let it work with parallel tests.

-
  %FTPTIME2 and %FTPTIME3 should be set by the FTP server only, for
-
  consistency.
+
  Ref: #10969

-
- tests: factor out the test server management code
+
- runtests: handle interrupted reads from IPC pipes

-
  This now lives in servers.pm with some configuration variables moved to
-
  globalconfig.pm
+
  These can be interrupted by signals, especially SIGINT to shut down, and
+
  must be restarted so the IPC call arrives correctly. If the read just
+
  returns an error instead, the IPC calling state will go out of sync and
+
  a proper shutdown won't happen.

  Ref: #10818

-
- runtests: remove an inappropriate use of runclientoutput
+
Stefan Eissing (20 May 2023)

-
  This function is intended for running client code, not servers.
+
- http2: upload improvements

-
- runtests: only add $LIBDIR to the path for checktestcmd
+
  Make send buffer smaller to have progress and "upload done" reporting
+
  closer to reality. Fix handling of send "drain" condition to no longer
+
  trigger once the transfer loop reports it is done sending. Also do not
+
  trigger the send "drain" on RST streams.

-
  Since checkcmd is for finding servers, there will never be anything in
-
  this directory of interest to them.
+
  Background:
+
  - a upload stall was reported in #11157 that timed out
+
  - test_07_33a reproduces a problem with such a stall if the
+
    server 404s the request and RSTs the stream.
+
  - test_07_33b verifies a successful PUT, using the parameters
+
    from #11157 and checks success

-
  Ref: #10818
+
  Ref: #11157
+
  Closes #11165

-
- tests: log sshserver.pl messages to a file
+
- http2: increase stream window size to 10 MB

-
  The logmsg messages were thrown away before, so they are now available
-
  for debugging.
+
  Reported-by: pandada8 on github

-
- runtests: also show DISABLED tests with -l
+
  Fixes #11162
+
  Closes #11167

-
  Other reasons for skipping tests are ignored for -l, so being explicitly
-
  disabled should be too.
+
Daniel Stenberg (20 May 2023)

-
- runtests: move the UNIX sockets into $PIDDIR
+
- lib: rename struct 'http_req' to 'httpreq'

-
  These were missed when the other server files were moved there.
+
  Because FreeBSD 14 kidnapped the name.
+
  Ref: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=271526

-
  Follow-up to 70d2fca2
+
  Fixes #11163
+
  Closes #11164

-
  Ref: #10818
+
Viktor Szakats (20 May 2023)

-
- tests: tighten up perl exports
+
- cmake: avoid `list(PREPEND)` for compatibility

-
  This reduces namespace pollution a little.
+
  `list(PREPEND)` requires CMake v3.15, our minimum is v3.7.

-
  Ref: #10818
+
  Ref: https://cmake.org/cmake/help/latest/command/list.html#prepend

-
- tests: turn perl modules into full packages
+
  Regression from 1e3319a167d2f32d295603167486e9e88af9bb4e

-
  This helps enforce more modularization and encapsulation. Enable and fix
-
  warnings on a few packages.  Also, rename ftp.pm to processhelp.pm since
-
  there's really nothing ftp-specific in it.
+
  Reported-by: Keitagit-kun on Github
+
  Fixes #11141
+
  Closes #11144

-
  Ref: #10818
+
Daniel Stenberg (19 May 2023)

-
Daniel Stenberg (11 Apr 2023)
+
- RELEASE-NOTES: synced

-
- multi: remove a few superfluous assigns
+
Stefan Eissing (19 May 2023)

-
  PVS found these "The 'rc' variable was assigned the same value." cases.
+
- ngtcp2: proper handling of uint64_t when adjusting send buffer

-
  Ref: #10929
-
  Closes #10932
+
  Fixes #11149
+
  Closes #11153

-
- schannel: add clarifying comment
+
- ngtcp2: fix compiler warning about possible null-deref

-
  Explaining how the PVS warning in #10929 is wrong: Dereferencing of the
-
  null pointer 'backend->cred' might take place.
+
  - compiler analyzer did not include the call context for this
+
    static function where the condition had already been checked.
+
  - eleminating the problem by making stream a call parameter

-
  Closes #10931
+
  Fixes #11147
+
  Closes #11151

-
- cookie: clarify that init with data set to NULL reads no file
+
Emanuele Torre (19 May 2023)

-
  ... and make Curl_cookie_add() require 'data' being set proper with an
-
  assert.
+
- docs: document that curl_url_cleanup(NULL) is a safe no-op

-
  The function has not worked with a NULL data for quite some time so this
-
  just corrects the code and comment.
+
  This has always been the case, but it was not documented.

-
  This is a different take than the proposed fixed in #10927
+
  The paragraph was copied verbatim from curl_easy_cleanup.3

-
  Reported-by: Kvarec Lezki
-
  Ref: #10929
-
  Closes #10930
+
  Closes #11150

-
Kvarec Lezki (11 Apr 2023)
+
Antoine Pitrou (19 May 2023)

-
- vtls: remove int typecast for sizeof()
+
- select: avoid returning an error on EINTR from select() or poll()

-
  V220 Suspicious sequence of types castings: memsize -> 32-bit integer ->
-
  memsize. The value being cast: 'sizeof
-
  (buf->data)'. curl\lib\vtls\vtls.c 2025
+
  This was already done for the poll() and select() calls
+
  made directly from Curl_poll(), but was missed in
+
  Curl_wait_ms(), which is called when there are no fds
+
  to wait on.

-
  https://pvs-studio.com/en/docs/warnings/v220/
+
  Fixes #11135
+
  Closes #11143

-
  Closes #10928
+
Daniel Stenberg (19 May 2023)

-
Stefan Eissing (11 Apr 2023)
+
- vquic.c: make recvfrom_packets static, avoid compiler warning

-
- http2: fix copynpaste error reported by coverity
+
  warning: no previous prototype for 'recvfrom_packets'

-
  - move all code handling HTTP/2 frames for a particular
-
    stream into a separate function to keep from confusing
-
    the call `data` with the stream `data`.
+
  Reported-by: Keitagit-kun on github
+
  Fixes #11146
+
  Closes #11148

-
  Closes #10924
+
- urlapi: allow numerical parts in the host name

-
Dan Fandrich (11 Apr 2023)
+
  It can only be an IPv4 address if all parts are all digits and no more than
+
  four parts, otherwise it is a host name. Even slightly wrong IPv4 will now be
+
  passed through as a host name.

-
- tests: log a too-long Unix socket path in sws and socksd
+
  Regression from 17a15d88467 shipped in 8.1.0

-
  Ref: #10919
+
  Extended test 1560 accordingly.

-
Daniel Stenberg (11 Apr 2023)
+
  Reported-by: Pavel Kalyugin
+
  Fixes #11129
+
  Closes #11131

-
- gen.pl: error on duplicated See-Also fields
+
Emilio Cobos Álvarez (19 May 2023)

-
  Updated http2.d accordingly.
+
- http2: double http request parser max line length

-
  Closes #10925
+
  This works around #11138, by doubling the limit, and should be a
+
  relatively safe fix.

-
- http2: avoid possible null pointer dereference
+
  Ideally the buffer would grow as needed and there would be no need for a
+
  limit? But that might be follow-up material.

-
  Reported-by: Dan Fandrich
-
  Fixes #10920
-
  Closes #10923
+
  Fixes #11138
+
  Closes #11139

-
- lib1560: verify that more bad host names are rejected
+
Emanuele Torre (18 May 2023)

-
  when setting the hostname component of a URL
+
- configure: fix --help alignment

-
  Closes #10922
+
  AC_ARG_ENABLE seems to only trim off whitespace from the start and end
+
  of its help-string argument, while prepending two spaces of indentation
+
  to all lines.

-
- curl_url_set.3: mention that users can set content rather freely
+
  This means that the two spaces of indentation between the --enable-rtsp
+
  and the --disable-rtsp line were not removed causing ./configure --help
+
  to print:

-
  ... which then might render bad URLs if you extract a URL later.
+
    Optional Features:
+
      [...]
+
      --enable-rtsp           Enable RTSP support
+
        --disable-rtsp          Disable RTSP support

-
  Closes #10921
+
  I removed the indentation to fix the issue, now it prints:

-
Dan Fandrich (10 Apr 2023)
+
    Optional Features:
+
      [...]
+
      --enable-rtsp           Enable RTSP support
+
      --disable-rtsp          Disable RTSP support

-
- CI: retry failed downloads of aws-lc
+
  The --enable-hsts and --disable-hsts lines had the same problems, and
+
  have been fixed too.

-
  Don't fail the build in case of a temporary server problem.
+
  Closes #11142

-
- test1169: fix so it works properly everywhere
+
Deal(一线灵) (18 May 2023)

-
  - Use an absolute path for the -L option since the module isn't in the
-
    perl path
-
  - Create the needed test file in a <file> section; <precheck> isn't
-
    intended for this
-
  - Fix the test number in the file name, which was wrong
+
- cmake: repair cross compiling

-
  Follow-up to f754990a
+
  It cannot *run* code for testing purposes when cross-compiling.

-
  Ref: #10818
-
  Fixes #10889
-
  Closes #10917
+
  Closes #11130

-
- tests: stop using strndup(), which isn't portable
+
Daniel Stenberg (18 May 2023)

-
  It's not available on Solaris 10, for example. Since this is just test
-
  code that doesn't need to use an optimized system version, replace it
-
  with the implementation copied from tool_cb_hdr.c.
+
- configure: generate a script to run the compiler

-
- runtests: fix an incorrect comment about the ld_preload feature
+
  in the CURL_RUN_IFELSE macro, with LD_LIBRARY_PATH set to the value of
+
  the configure invoke, and not the value that might be used later,
+
  intended for the execution of the output the compiler ouputs.

-
  Follow-up to 1f631864
+
  For example when the compiler uses the same library (like libz) that
+
  configure checks for.

-
  Ref: #10818
+
  Reported-by: Jonas Bülow
+
  Fixes #11114
+
  Closes #11120

-
Daniel Stenberg (9 Apr 2023)
+
Stefan Eissing (18 May 2023)

-
- urlapi: prevent setting invalid schemes with *url_set()
+
- cf-socket: completely remove the disabled USE_RECV_BEFORE_SEND_WORKAROUND

-
  A typical mistake would be to try to set "https://" - including the
-
  separator - this is now rejected as that would then lead to
-
  url_get(... URL...) would get an invalid URL extracted.
+
  Closes #11118

-
  Extended test 1560 to verify.
+
Emanuele Torre (18 May 2023)

-
  Closes #10911
+
- urlapi: respect CURLU_ALLOW_SPACE and CURLU_NO_AUTHORITY for redirects

-
Biswapriyo Nath (9 Apr 2023)
+
  curl_url_set(uh, CURLUPART_URL, redirurl, flags)  was not respecing
+
  CURLU_ALLOW_SPACE and CURLU_NO_AUTHORITY in the host part of redirurl
+
  when redirecting to an absolute URL.

-
- http2: remove unused Curl_http2_strerror function declaration
+
  Closes #11136

-
  Curl_http2_strerror was renamed to http2_strerror in
-
  05b100aee247bb9bec8e9a1b0 and then http2_strerror was removed in
-
  5808a0d0f5ea0399d4a2a2
+
Colin Cross (18 May 2023)

-
  This also fixes the following compiler error
+
- hostip: move easy_lock.h include above curl_memory.h

-
  lib/http2.h:41:33: error: unknown type name 'uint32_t'
-
  lib/http2.h:1:1: note: 'uint32_t' is defined in header '<stdint.h>'
+
  Similar to #9561, move easy_lock.h above curl_memory.h to fix building
+
  against musl libc.

-
  Closes #10912
+
  Closes #11140

-
Daniel Stenberg (8 Apr 2023)
+
Hind Montassif (18 May 2023)

-
- RELEASE-NOTES: synced
+
- curl_easy_getinfo: clarify on return data types

-
SuperIlu on github (8 Apr 2023)
+
  Closes #11126

-
- config-dos.h: fix SIZEOF_CURL_OFF_T for MS-DOS/DJGPP
+
Emanuele Torre (18 May 2023)

-
  Fixes #10905
-
  Closes #10910
+
- checksrc: disallow spaces before labels

-
Daniel Stenberg (8 Apr 2023)
+
  Out of 415 labels throughout the code base, 86 of those labels were
+
  not at the start of the line. Which means labels always at the start of
+
  the line is the favoured style overall with 329 instances.

-
- lib: remove CURLX_NO_MEMORY_CALLBACKS
+
  Out of the 86 labels not at the start of the line:
+
  * 75 were indented with the same indentation level of the following line
+
  * 8 were indented with exactly one space
+
  * 2 were indented with one fewer indentation level then the following
+
    line
+
  * 1 was indented with the indentation level of the following line minus
+
    three space (probably unintentional)

-
  The only user of this define was 'chkdecimalpoint' - a special purpose
-
  test tool that was built but not used anymore (since 17c18fbc3 - Apr
-
  2020).
+
  Co-Authored-By: Viktor Szakats

-
  Closes #10908
+
  Closes #11134

-
- CURLPROXY_HTTPS2: for HTTPS proxy that may speak HTTP/2
+
Daniel Stenberg (18 May 2023)

-
  Setting this proxy type allows curl to negotiate and use HTTP/2 with
-
  HTTPS proxies.
+
- cookie: update the comment on cookie length and size limits

-
  Closes #10900
+
  To refer to the proper cookie RFC and the upcoming RFC refresh.

-
Ali Khodkar (8 Apr 2023)
+
  Closes #11127

-
- write-out.d: add missing periods
+
- url: provide better error message when URLs fail to parse

-
  Closes #10897
+
  By providing the URL API error message into the error message.

-
Daniel Stenberg (7 Apr 2023)
+
  Ref: #11129
+
  Closes #11137

-
- http2: remove check for !data after it was already dereferenced
+
- RELEASE-NOTES: synced

-
  Pointed out by Coverity
+
  bumped to 8.1.1

-
  Closes #10906
+
Jon Rumsey (18 May 2023)

-
- http_proxy: provide missing arg to infof() call
+
- os400: update chkstrings.c

-
  Pointed out by Coverity
+
  Compensate changes for recent changes to urldata.h to reclassify
+
  STRING_AWS_SIGV4.

-
  Closes #10904
+
  Fixes #11132
+
  Closes #11133

-
- content_encoding: only do tranfer-encoding compression if asked to
+
Version 8.1.0 (17 May 2023)

-
  To reduce surprises. Update test 387 and 418 accordingly.
+
Daniel Stenberg (17 May 2023)

-
  Closes #10899
+
- RELEASE-NOTES: synced

-
- sws: comparison of unsigned expression < 0 is always false
+
- THANKS: contributors from the 8.1.0 release

-
  Follow-up to 356dd0b73a75ed6d5
+
- hostip: include easy_lock.h before using GLOBAL_INIT_IS_THREADSAFE

-
  Closes #10903
+
  Since that header file is the only place that define can be defined.

-
- lib/cmake: add HAVE_WRITABLE_ARGV check
+
  Reported-by: Marc Deslauriers

-
  Assisted-by: Jakub Zakrzewski
-
  Closes #10896
+
  Follow-up to 13718030ad4b3209

-
- configure: don't set HAVE_WRITABLE_ARGV on Windows
+
  Closes #11121

-
  Ref: #10888
-
  Closes #10896
+
Thomas Taylor (16 May 2023)

-
- vtls: fix build error when proxy-disabled
+
- aws-sigv4.d: fix region identifier in example

-
  Closes #10901
+
  Closes #11117

-
Stefan Eissing (6 Apr 2023)
+
Philip Heiduck (15 May 2023)

-
- tests: increase sws timeout for more robust testing
+
- mlc_config.json: remove this linkcheck CI job config file

-
  - for https CONNECT forwarding, this was fixed at 5 seconds
-
    which led to spurious CI test failures
-
  - add --keepalive parameter to sws to control this
-
  - let httpserver use 30 seconds
+
  Closes #11113

-
  Closes #10898
+
Daniel Silverstone (15 May 2023)

-
- http2: move HTTP/2 stream vars into local context
+
- ssh: Add support for libssh2 read timeout

-
  - remove NGHTTP2 members of `struct HTTP`
-
  - add `void *h2_ctx` to `struct HTTP`
-
  - add `void *h3_ctx` to `struct HTTP`
-
  - separate h2/h3 pointers are needed for eyeballing
-
  - manage local stream_ctx in http implementations
+
  Hook the new (1.11.0 or newer) libssh2 support for setting a read timeout
+
  into the SERVER_RESPONSE_TIMEOUT option.  With this done, clients can use
+
  the standard curl response timeout setting to also control the time that
+
  libssh2 will wait for packets from a slow server.  This is necessary to
+
  enable use of very slow SFTP servers.

-
  Closes #10877
+
  Signed-off-by: Daniel Silverstone <daniel.silverstone@codethink.co.uk>

-
- proxy: http2 proxy tunnel implementation
+
  Closes #10965

-
  - currently only on debug build and when env variable
-
    CURL_PROXY_TUNNEL_H2 is present.
-
  - will ALPN negotiate with the proxy server and switch
-
    tunnel filter based on the protocol negotiated.
-
  - http/1.1 tunnel code moved into cf-h1-proxy.[ch]
-
  - http/2 tunnel code implemented in cf-h2-proxy.[ch]
-
  - tunnel start and ALPN set remains in http_proxy.c
-
  - moving all haproxy related code into cf-haproxy.[ch]
+
Osama Albahrani (14 May 2023)

-
  VTLS changes
-
  - SSL filters rely solely on the "alpn" specification they
-
    are created with and no longer check conn->bits.tls_enable_alpn.
-
  - checks on which ALPN specification to use (or none at all) are
-
    done in vtls.c when creating the filter.
+
- GIT-INFO: add --with-openssl

-
  Testing
-
  - added a nghttpx forward proxy to the pytest setup that
-
    speaks HTTP/2 and forwards all requests to the Apache httpd
-
    forward proxy server.
-
  - extending test coverage in test_10 cases
-
  - adding proxy tests for direct/tunnel h1/h2 use of basic auth.
-
  - adding test for http/1.1 and h2 proxy tunneling to pytest
+
  Closes #11110

-
  Closes #10780
+
Daniel Stenberg (13 May 2023)

-
- vtls and h2 improvements
+
- RELEASE-NOTES: synced

-
  - eliminate receive loop in vtls to fill buffer. This may
-
    lead to partial reads of data which is counter productive
-
  - let http2 instead loop smarter to process pending network
-
    data without transfer switches
+
Marcel Raad (13 May 2023)

-
  scorecard improvements
-
  - do not start caddy when only httpd is requested
-
  - allow curl -v to stderr file on --curl-verbose
+
- md(4|5): don't use deprecated iOS functions

-
  Closes #10891
+
  They are marked as deprecated in iOS 13.0, which might result in
+
  warnings-as-errors.

-
Daniel Stenberg (6 Apr 2023)
+
  Also, use `*_MIN_REQUIRED` instead of `*_MIN_ALLOWED`, which seems to
+
  be what's currently used.

-
- tests: 1078 1288 1297 use valid IPv4 addresses
+
  Bug: https://github.com/curl/curl/issues/11098
+
  Closes https://github.com/curl/curl/pull/11102

-
  With the enhanced URL parser, these tests failed because of their bad
-
  IPv4 use.
+
- md4: only build when used

-
- urlapi: detect and error on illegal IPv4 addresses
+
  Its only usage in curl_ntlm_core.c is guarded by `USE_CURL_NTLM_CORE`,
+
  so let's use this here too.

-
  Using bad numbers in an IPv4 numerical address now returns
-
  CURLUE_BAD_HOSTNAME.
+
  Ref: https://github.com/curl/curl/issues/11098
+
  Closes https://github.com/curl/curl/pull/11102

-
  I noticed while working on trurl and it was originally reported here:
-
  https://github.com/curl/trurl/issues/78
+
Vítor Galvão (12 May 2023)

-
  Updated test 1560 accordingly.
+
- write-out.d: Use response_code in example

-
  Closes #10894
+
  Closes #11107

-
- RELEASE-NOTES: synced
+
Shohei Maeda (12 May 2023)

-
- urlapi: URL encoding for the URL missed the fragment
+
- url: fix null dispname for --connect-to option

-
  Meaning that it would wrongly still store the fragment using spaces
-
  instead of %20 if allowing space while also asking for URL encoding.
+
  Closes #11106

-
  Discovered when playing with trurl.
+
Daniel Stenberg (12 May 2023)

-
  Added test to lib1560 to verify the fix.
+
- test2306: verify getting a second response with folded headers

-
  Closes #10887
+
  Reproduces the isue #11101 and verifies the fix.

-
- rtsp: convert mallocs to dynbuf for RTP buffering
+
  Verifies a17b2a503f

-
  Closes #10786
+
- headers: clear (possibly) lingering pointer in init

-
- tool_writeout: add URL component variables
+
  The "prevhead" pointer is used for the headers storage but was not
+
  cleared correctly in init, which made it possible to act up when a
+
  handle is reused.

-
  Output specific components from the used URL. The following variables
-
  are added for this purpose:
+
  Reported-by: Steve Herrell
+
  Fixes #11101
+
  Closes #11103

-
    url.scheme, url.user, url.password, url.options, url.host, url.port,
-
    url.path, url.query, url.fragment, url.zoneid
+
- RELEASE-NOTES: synced

-
  Add the following for outputting parts of the "effective URL":
+
- ngtcp2: use 0.15.0

-
   urle.scheme, urle.user, urle.password, urle.options, urle.host, urle.port,
-
   urle.path, urle.query, urle.fragment, urle.zoneid
+
  - nghttp3 0.11.0
+
  - nghttp2 1.53.0

-
  Added test 423 and 424 to verify.
+
  Adapt to new API calls

-
  Closes #10853
-

-
Stefan Eissing (4 Apr 2023)
+
  Closes #11031

-
- tests/http: improved httpd detection
+
Jay Satiro (10 May 2023)

-
  - better error messages when not found/complete
-
  - handling of `--without-test-httpd`
+
- openssl: fix indent

-
  Reported-by: kwind on github
-
  Fixes #10879
-
  Closes #10883
+
Daniel Stenberg (10 May 2023)

-
Daniel Stenberg (4 Apr 2023)
+
- CURLOPT_DNS_CACHE_TIMEOUT.3: fix spelling

-
- configure: make quiche require quiche_conn_send_ack_eliciting
+
  Follow-up to 9ed7d56e044f5aa1b29

-
  curl now requires quiche version >= 1.17.1 to be used and this function
-
  was added in this version and makes a convenient check.
+
  Closes #11096

-
  This requirement is because this is the lowest quiche version that
-
  supports peer-initiated key updates correctly.
+
- hostip: use time_t for storing oldest DNS entry

-
  Closes #10886
+
  Theoretically, the oldest time could overflow an int. In practice that
+
  won't happen, but let's do this to please analyzers.

-
Dan Fandrich (1 Apr 2023)
+
  Follow-up to 9ed7d56e044f5aa1b2928ccde6245d0

-
- unit tests: use the unit test infrastructure better
+
  Pointed out by Coverity.
+
  Closes #11094

-
  Allow UNITTEST_STOP to return the error code, use the fail & abort
-
  macros to indicate test failure and return success instead of fail if
-
  the unit test can't test anything because of missing features at
-
  compile-time.  A couple of tests could never fail because they were
-
  overriding the failure return code.
+
- http: free the url before storing a new copy

-
- runtests: strip EOL on precheck output on Windows, too
+
  To avoid a memory-leak.

-
  Precheck failures would show on two lines in the test summary output
-
  otherwise.
+
  Reported-by: Hiroki Kurosawa

-
- tests: move server config files under the pid dir
+
  Closes #11093

-
  These files are generated by the test servers and must therefore be
-
  found in the log directory to make them available to only those servers
-
  once multiple test runners are executing in parallel. They must also not
-
  be deleted with the log files, so they are stored in the pidfile
-
  directory.
+
- compressed.d: clarify the words on "not notifying headers"

-
  Ref: #10818
-
  Closes #10875
+
  Reported-by: Dylan Anthony
+
  Fixes #11091
+
  Closes #11092

-
- runtests: use the ssh key filenames from the sshhelp package
+
- libssh2: free fingerprint better

-
- tests: move pidfiles and portfiles under the log directory
+
  Reported-by: Wei Chong Tan
+
  Closes #11088

-
  This is to segregate all files written by a test process into a single
-
  root to allow for future parallel testing.
+
- CURLOPT_IPRESOLVE.3: clarify that this for host names, not IP addresses

-
  Ref: #10818
-
  Closes #10874
+
  Reported-by: Harry Sintonen
+
  Closes #11087

-
- runtests: minor code cleanups
+
- hostip: enforce a maximum DNS cache size independent of timeout value

-
- runtests: call processexists() and pidfromfile()
+
  To reduce the damage an application can cause if using -1 or other
+
  ridiculous timeout values and letting the cache live long times.

-
  rather than duplicating the logic in several places.
+
  The maximum number of entries in the DNS cache is now totally
+
  arbitrarily and hard-coded set to 29999.

-
Viktor Szakats (31 Mar 2023)
+
  Closes #11084

-
- cmake: do not add zlib headers for openssl
+
- hostip: store dns timeout as 'int'

-
  Logic copied earlier from wolfSSL. wolfSSL requires zlib headers for its
-
  public headers. OpenSSL does not, so stop adding zlib headers for it.
+
  ... because it set and held as an 'int' elsewhere and can never be
+
  larger.

-
  Follow-up to 1e3319a167d2f32d295603167486e9e88af9bb4e
+
- RELEASE-NOTES: synced

-
  Closes #10878
+
- tool_operate: refuse (--data or --form) and --continue-at combo

-
Stefan Eissing (31 Mar 2023)
+
  libcurl assumes that a --continue-at resumption is done to continue an
+
  upload using the read callback and neither --data nor --form use
+
  that and thus won't do what the user wants. Whatever the user wants
+
  with this strange combination.

-
- rustls: fix error in recv handling
+
  Add test 426 to verify.

-
  - when rustls is told to recieve more TLS data and its internal
-
    plaintext buffers are full, it returns an IOERROR
-
  - avoid receiving TLS data while plaintext is not read empty
+
  Reported-by: Smackd0wn on github
+
  Fixes #11081
+
  Closes #11083

-
  pytest:
-
  - increase curl run timeout when invoking pytest with higher verbosity
+
- transfer: refuse POSTFIELDS + RESUME_FROM combo

-
  Closes #10876
+
  The code assumes that such a resume is wanting to continue an upload
+
  using the read callback, and since POSTFIELDS is done without callback
+
  libcurl will just misbehave.

-
- http3: improvements across backends
+
  This combo will make the transfer fail with CURLE_BAD_FUNCTION_ARGUMENT
+
  with an explanation in the error message.

-
  - ngtcp2: using bufq for recv stream data
-
  - internal stream_ctx instead of `struct HTTP` members
-
    for quiche, ngtcp2 and msh3
-
  - no more QUIC related members in `struct HTTP`
-
  - experimental use of recvmmsg(), disabled by default
-
    - testing on my old debian box shows no throughput improvements.
-
    - leaving it in, but disabled, for future revisit
-
  - vquic: common UDP receive code for ngtcp2 and quiche
-
  - vquic: common UDP send code for ngtcp2 and quiche
-
  - added pytest skips for known msh3 failures
-
  - fix unit2601 to survive torture testing
-
  - quiche: using latest `master` from quiche and enabling large download
-
    tests, now that key change is supported
-
  - fixing test_07_21 where retry handling of starting a stream
-
    was faulty
-
  - msh3: use bufq for recv buffering headers and data
-
  - msh3: replace fprintf debug logging with LOG_CF where possible
-
  - msh3: force QUIC expire timers on recv/send to have more than
-
    1 request per second served
+
  Reported-by: Smackd0wn on github
+
  Fixes #11081
+
  Closes #11083

-
  Closes #10772
+
- ipv4.d/ipv6.d: they are "mutex", not "boolean"

-
Dan Fandrich (30 Mar 2023)
+
  ... which for example means they do not have --no-* versions.

-
- test1471/2: add http as a required feature
+
  Reported-by: Harry Sintonen
+
  Fixes #11085
+
  Closes #11086

-
  curl bails out early with a different error message if http support is
-
  compiled out.
+
- docs/SECURITY-ADVISORY.md: how to write a curl security advisory

-
  Ref: #10705
+
  Closes #11080

-
- tests: limit return code of unit tests and lib tests
+
nobedee on github (5 May 2023)

-
  Values greater than 125 have special meanings, so cap it there.  Unit
-
  tests and lib tests use the number of failures as the return code, so a
-
  large number of failures (such as test 2601 as a torture test) can
-
  exceed this causing the test to be erroneously reported as having
-
  failed.
+
- MANUAL.md: add dict example for looking up a single definition

-
  Ref: #10720
+
  Closes #11077

-
- test1960: point to the correct path for the precheck tool
+
Dan Fandrich (5 May 2023)

-
  Otherwise, it might find the binary in .libs which can cause it to use
-
  the system libcurl which can fail. This error is only visible by
-
  noticing that the test is skipped.
+
- runtests: fix -c option when run with valgrind

-
  Follow-up to e4dfe6fc
+
  The curl binary argument wasn't being quoted properly. This seems to
+
  have broken at some point after quoting was added in commit 606b29fe.

-
  Ref: #10651
+
  Reported-by: Daniel Stenberg
+
  Ref: #11073
+
  Fixes #11074
+
  Closes #11076

-
- tests: use the proper %LOGDIR path on two tests
+
- runtests: support creating more than one runner process

-
  Follow-up to e7a021e1
+
  The controller currently only creates and uses one, but more are now
+
  possible.

  Ref: #10818

-
Daniel Stenberg (30 Mar 2023)
-

-
- rtsp: fix Value stored to 'skip_size' is never read
-

-
  Pointed out by scan-build
+
- runtests: spawn a new process for the test runner

-
  Follow-up to 6c6306f3008f2c9b20a64
+
  When the -j option is given, a new process is spawned in which the test
+
  programs are run and from which test servers are started. Only one
+
  process can be started at once, but this is sufficient to test that the
+
  infrastructure can isolate those functions in a new task. There should
+
  be no visible difference between the two modes at the moment.

-
  Closes #10872
+
  Ref: #10818
+
  Closes #11064

-
Stefan Eissing (30 Mar 2023)
+
- runtests: turn singletest() into a state machine

-
- tests/http: relax connection check in test_07_02
+
  This allows it to run in a non-blocking manner.

-
  Only 1 connection will be used when curl is slow, happens when
-
  address-sanitized in CI, for example
+
  Ref: #10818

-
  Closes #10865
+
- runtests: change runner interface to be asynchronous

-
- http2: flow control and buffer improvements
+
  Program arguments are marshalled and then written to the end of a pipe
+
  which is later read from and the arguments unmarshalled before the
+
  desired function is called normally.  The function return values are
+
  then marshalled and written into another pipe when is later read from
+
  and unmarshalled before being returned to the caller.

-
  - use bufq for send/receive of network data
-
  - usd bufq for send/receive of stream data
-
  - use HTTP/2 flow control with no-auto updates to control the
-
    amount of data we are buffering for a stream
-
    HTTP/2 stream window set to 128K after local tests, defined
-
    code constant for now
-
  - elminiating PAUSEing nghttp2 processing when receiving data
-
    since a stream can now take in all DATA nghttp2 forwards
+
  The implementation is currently blocking but can be made non-blocking
+
  without any changes to the API.  This allows calling multiple runners
+
  without blocking in the future.

-
  Improved scorecard and adjuste http2 stream window sizes
-
  - scorecard improved output formatting and options default
-
  - scorecard now also benchmarks small requests / second
+
  Ref: #10818

-
  Closes #10771
+
- runtests: call citest_finishtest in singletest

-
Dan Fandrich (30 Mar 2023)
+
  This is where citest_starttest is called.

-
- runtests: show error message if file can't be written
+
  Ref: #10818

-
- tests: fix remaining servers to run with a dynamic log directory
+
- runtests: add a runner initialization function

-
  This final commit in the series is sufficient to allow the tests succeed
-
  if $LOGDIR is changed in runtests.pl.
+
  This sets up the runner environment to start running tests.

  Ref: #10818
-
  Closes #10866
-

-
- tests: fix fake_ntlm to run with a dynamic log directory

-
  Ref: #10818
+
- runtests: remove directory from server filename variables

-
- tests: fix http servers to run with a dynamic log directory
+
  There will soon be multiple log directories so the paths will no longer
+
  be static in runtests.pl. Also, get rid of $SERVER2IN which was not
+
  used.

  Ref: #10818

-
- tests: fix ftpserver to run with a dynamic log directory
-

-
  Ref: #10818
+
- runtests: reduce package exports after refactoring

-
- tests: fix C servers to run with a dynamic log directory
+
  Some recent refactoring made these export no longer necessary. Also,
+
  stop displaying the Unix socket paths at startup since there will soon
+
  be many of them and they're not that interesting.

  Ref: #10818

-
- tests: fix lib tests to run with a dynamic log directory
-

-
  Ref: #10818
+
- runtests: use a function to obtain $LOGDIR for a test

-
- tests: fix unit tests to run with a dynamic log directory
+
  This will no longer be static soon.

  Ref: #10818

-
- tests: use %LOGDIR to refer to the log directory
+
Jay Satiro (5 May 2023)

-
  This will allow it be set dynamically.
+
- tool_cb_hdr: Fix 'Location:' formatting for early VTE terminals

-
  Ref: #10818
+
  - Disable hyperlink formatting for the 'Location:' header value in VTE
+
    0.48.1 and earlier, since it is buggy in some of those versions.

-
- runtests: track verification time even if no files to compare
+
  Prior to this change those terminals may show the location header value
+
  as gibberish or show it twice.

-
- getpart: better handle case of file not found
+
  Ref: https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda#backw
+
  ard-compatibility

-
- testcurl: bump version date
+
  Fixes https://github.com/curl/curl/issues/10428
+
  Closes https://github.com/curl/curl/pull/11071

-
  It hadn't been updated in 9 years; it's time.
+
François Michel (3 May 2023)

-
- tests: switch to 3-argument open in test suite
+
- quiche: disable pacing while pacing is not actually performed

-
  The perl 2-argument open has been considered not-quite-deprecated since
-
  the 3-argument form was introduced almost a quarter century ago.
+
  Closes #11068

-
- tests: silence some Perl::Critic warnings in test suite
+
Daniel Stenberg (2 May 2023)

-
  Not all warnings are fixed; many are as much stylistic suggestions than
-
  anything and IMHO don't do much to actually improve the code.
+
- easy_cleanup: require a "good" handle to act

-
  Ref: #10818
-
  Closes #10861
+
  By insisting that the passed in handle is "good" (the magic number is
+
  intact), this can limit the potential damage if a bad pointer is passed
+
  in. Like when this function is called twice on the same handle pointer.

-
- docs: bump the minimum perl version to 5.6
+
  Ref: #10964
+
  Closes #11061

-
  It's actually been this way since at least 2012 (when a 3-argument open
-
  was added to runtests.pl). Given the lack of complaints in the interim,
-
  it's safe to call this 23 year old perl version the minimum.
+
Andreas Falkenhahn (1 May 2023)

-
- runtests: memoize the getpart* subroutines to speed up access
+
- amiga: Fix CA certificate paths for AmiSSL and MorphOS

-
  The refactored code calls these functions with the same arguments more
-
  often, so this prevents redundant test case file parsing.
+
  AmiSSL stores certificates in `AmiSSL:Certs` and MorphOS stores them in
+
  `MOSSYS:Data/SSL/curl-ca-bundle.crt`.

-
  Approved-by: Daniel Stenberg
-
  Ref: #10818
-
  Closes #10833
+
  Closes https://github.com/curl/curl/pull/11059

-
- runtests: remove duplicated feature variables
+
Daniel Stenberg (30 Apr 2023)

-
  Use the feature map stored in the hash table instead. Most of the
-
  variables were only used only once, to set the value in the hash table.
+
- http2: (void)-mark when we explicitly ignore the return code

-
  Ref: #10818
+
  When h2_progress_egress() is called. Pointed out by Coverity.

-
- runtests: also ignore test file problems when ignoring results
+
  Closes #11057

-
  This simplifies error handling in the test verification code and makes
-
  it more consistent.
+
- checksrc: find bad indentation in conditions without open brace

-
  Ref: #10818
+
  If the previous line starts with if/while/for AND ends with a closed
+
  parenthesis and there's an equal number of open and closed parentheses
+
  on that line, verify that this line is indented $indent more steps, if
+
  not a cpp line.

-
- runtests: more refactoring for clarity
+
  Also adjust the fall-out from this fix.

-
  Ref: #10818
+
  Closes #11054

-
- runtests: don't start servers if -l is given
+
Diogo Teles Sant'Anna (28 Apr 2023)

-
- runtests: fix typos
+
- CI: Set minimal permissions on workflow ngtcp2-quictls.yml

-
- runtests: refactor singletest() into separate functions
+
  Signed-off-by: Diogo Teles Sant'Anna <diogoteles@google.com>

-
  This takes it from a 1200 line behemoth into something more manageable.
-
  The content and order of the functions is taken almost directly from
-
  singletest() so the diff sans whitespace is quite short.
+
  Closes #11055

-
  Ref: #10818
+
Dan Fandrich (28 Apr 2023)

-
- runtests: refactor singletest() into distinct sections
+
- CI: use another glob syntax for matching files on Appveyor

-
  Namely:
-
  - Verify that this test case should be run
-
  - Start the servers needed to run this test case
-
  - Check that test environment is fine to run this test case
-
  - Prepare the test environment to run this test case
-
  - Run the test command
-
  - Clean up after test command
-
  - Verify test succeeded
+
  The previous globbing syntax was not matching files recursively in
+
  directories, so try appending a /* to more closely match the examples at
+
  https://www.appveyor.com/docs/how-to/filtering-commits/

-
  Ref: #10818
+
Daniel Stenberg (28 Apr 2023)

-
- runtests: stop copying a few arrays where not needed
+
- multi: add multi-ignore logic to multi_socket_action

-
  Unlike some other languages that just copy a pointer, perl copies the
-
  entire array contents which takes time for a large array.
+
  The multi-ignore logic that was previously applied to
+
  curl_multi_perform() (#10750) is here applied to the loop within
+
  curl_multi_socket_action() to make it use the same optimization: most
+
  handles have the same signal-ignore option state so this drastically
+
  reduces the number of ignore/unignore calls per libcurl function invoke.

-
  Ref: #10818
+
  Follow-up to bc90308328afb8

-
- runtests: reduce redundant calls to getpart/getpartattr
+
  Closes #11045

-
  These functions scan through the entire test file every time to find the
-
  right section, so they can be slow for large test files.
+
Stefan Eissing (28 Apr 2023)

-
  Ref: #10818
+
- http2: do flow window accounting for cancelled streams

-
- tests: document that the unittest keyword is special
+
  - nghttp2 does not free connection level window flow for
+
    aborted streams
+
  - when closing transfers, make sure that any buffered
+
    response data is "given back" to the flow control window
+
  - add tests test_02_22 and test_02_23 to reproduce

-
  Also, add other features that were missing.
+
  Closes #11052

-
Stefan Eissing (30 Mar 2023)
+
- pingpong: fix compiler warning "assigning an enum to unsigned char"

-
- docs: add documentation for bufq
+
  Closes #11050

-
  Closes #10869
+
Daniel Stenberg (28 Apr 2023)

-
Daniel Stenberg (30 Mar 2023)
+
- configure: fix detection of apxs (for httpd)

-
- RELEASE-NOTES: synced
+
  The condition check was turned the wrong way around!

-
Matt Jolly (30 Mar 2023)
+
  Closes #11051

-
- hostip: refuse to resolve the .onion TLD
+
Viktor Szakats (28 Apr 2023)

-
  RFC 7686 states that:
+
- ci: `-Wno-vla` no longer necessary

-
  > Applications that do not implement the Tor
-
  > protocol SHOULD generate an error upon the use of .onion and
-
  > SHOULD NOT perform a DNS lookup.
+
  We handle this issue in the source now.

-
  Let's do that.
+
  Follow-up to b725fe1944b45406676ea3aff333ae3085a848d9

-
  https://www.rfc-editor.org/rfc/rfc7686#section-2
+
  Reviewed-by: Marcel Raad
+
  Reviewed-by: Daniel Stenberg
+
  Closes #11048

-
  Add test 1471 and 1472 to verify
+
Marcel Raad (28 Apr 2023)

-
  Fixes #543
-
  Closes #10705
+
- tests/http: make curl_setup.h the first include

-
Philip Heiduck (30 Mar 2023)
+
  This is required for the macros there to take effect for system
+
  libraries. Specifically, including the system libraries first led to
+
  warnings about `_FILE_OFFSET_BITS` being redefined in curl_config.h on
+
  the Solaris autobuilds for ws-data.c and ws-pingpong.c.
+
  Also make the curl includes come first for the other source files here
+
  for consistency.

-
- GHA: update ngtcp2-*.yml to v0.10.0
+
  Closes https://github.com/curl/curl/pull/11046

-
  Closes #10612
+
Emanuele Torre (27 Apr 2023)

-
Stefan Eissing (30 Mar 2023)
+
- checksrc: check for spaces before the colon of switch labels

-
- tests/http: fix log formatting on wrong exit code
+
  Closes #11047

-
  Closes #10868
+
Daniel Stenberg (27 Apr 2023)

-
Daniel Stenberg (30 Mar 2023)
+
- RELEASE-NOTES: synced

-
- spellcheck.words: unify the AWS-LC spelling
+
- libssh: tell it to use SFTP non-blocking

-
  Follow-up to 34ef4fab22d93
+
  Reported-by: Andreas Huebner
+
  Fixes #11020
+
  Closes #11039

-
  Closes #10867
+
Stefan Eissing (27 Apr 2023)

-
Jim King (30 Mar 2023)
+
- http2: enlarge the connection window

-
- openssl: interop with AWS-LC
+
  - fixes stalled connections

-
  * Configure changes to detect AWS-LC
-
  * CMakeLists.txt changes to detect AWS-LC
-
  * Compile-time branches needed to support AWS-LC
-
  * Correctly set OSSL_VERSION and report AWS-LC release number
-
  * GitHub Actions script to build with autoconf and cmake against AWS-LC
+
  - Make the connection window large enough, so that there is
+
    some room left should 99/100 streams be PAUSED by the application

-
  AWS-LC is a BoringSSL/OpenSSL derivative
-
  For more information see https://github.com/awslabs/aws-lc/
+
  Reported-by: Paweł Wegner
+
  Fixes #10988
+
  Closes #11043

-
  Closes #10320
+
Daniel Stenberg (27 Apr 2023)

-
Viktor Szakats (30 Mar 2023)
+
- checksrc: fix SPACEBEFOREPAREN for conditions starting with "*"

-
- cmake: picky-linker fixes for openssl, ZLIB, H3 and more
+
  The open paren check wants to warn for spaces before open parenthesis
+
  for if/while/for but also for any function call. In order to avoid
+
  catching function pointer declarations, the logic allows a space if the
+
  first character after the open parenthesis is an asterisk.

-
  - fix HTTP/3 support detection with OpenSSL/quictls built with ZLIB.
-
    (Requires curl be built with ZLIB option also.)
+
  I also spotted what we did not include "switch" in the check but we should.

-
  - fix HTTP/3 support detection with OpenSSL/quictls/LibreSSL and `ld`
-
    linker on Windows.
+
  This check is a little lame, but we reduce this problem by not allowing
+
  that space for if/while/for/switch.

-
  - fix HTTP/3 support detection with wolfSSL to automatically add
-
    `ws2_32` to the lib list on Windows. For all linkers.
+
  Reported-by: Emanuele Torre
+
  Closes #11044

-
  - reposition ZLIB (and other compression) detection _after_ TLS
-
    detection, but before calling HTTP/3-support detection via
-
    `CheckQuicSupportInOpenSSL`.
+
- docs: minor polish

-
    May be a regression from ebef55a61df0094b9790710a42f63c48e7de3c13
-
    May fix #10832 (Reported-by: Micah Snyder)
+
  - "an HTTP*" (not "a")
+
  - remove a few contractions
+
  - remove a spurious "a"
+
  - reduce use of "I" in texts

-
    This also seems to fix an odd case, where OpenSSL/quictls is correctly
-
    detected, but its header path is not set while compiling, breaking
-
    build at `src/curl_ntlm_core.c`. Reason for this remains undiscovered.
+
  Closes #11040

-
  - satisfy "picky" linkers such as `ld` with MinGW, that are highly
-
    sensitive to lib order, by also adding brotli to the beginning of the
-
    lib list.
+
- ws: fix CONT opcode check

-
  - satisfy "picky" linkers by adding certain Windows systems libs to
-
    the lib list for OpenSSL/LibreSSL. (Might need additional ones for
-
    other forks, such as `pthread` for BoringSSL.)
+
  Detected by Coverity. Follow-up to 930c00c259

-
  Note: It'd make sense to _always_ add `ws2_32`, `crypt32` (except
-
  Windows App targets perhaps?), `bcrypt` (except old-mingw!) on Windows
-
  at this point. They are almost always required, and if some aren't,
-
  they are ignored by the linker with no effect on final binaries.
+
  Closes #11037

-
  Closes #10857
+
Dan Fandrich (27 Apr 2023)

-
Stefan Eissing (30 Mar 2023)
+
- CI: switch the awslc builds to build out-of-tree

-
- vlts: use full buffer size when receiving data if possible
+
  This is a common configuration that should be tested to avoid
+
  regressions. The awsls cmake build was already out-of-tree so the
+
  automake build now joins it.

-
  SSL backends like OpenSSL/wolfSSL and other return the content of one
-
  TLS record on read, but usually there are more available.
+
  Ref: #11006

-
  Change the vtls cfilter recv() function to fill the given buffer until a
-
  read would block.
+
- tests/http: fix out-of-tree builds

-
  Closes #10736
+
  Add both lib/ directories (src & build) to the search path so
+
  curl_setup.h and its dependencies can be found.

-
dengjfzh on github (30 Mar 2023)
+
  Followup-to acd82c8b

-
- rtsp: skip malformed RTSP interleaved frame data
+
  Ref: #11006
+
  Closes #11036

-
  Some IP cameras send malformed RTSP interleaved frames sometimes, which
-
  can cause curl_easy_perform return 1 (CURLE_UNSUPPORTED_PROTOCOL).  This
-
  change attempts to skip clearly incorrect RTSP interleaving frame data.
+
Daniel Stenberg (27 Apr 2023)

-
  Closes #10808
+
- urlapi: make internal function start with Curl_

-
Stefan Eissing (30 Mar 2023)
+
  Curl_url_set_authority() it is.

-
- lib: add `bufq` and `dynhds`
+
  Follow-up to acd82c8bfd

-
  Adding `bufq`:
-
  - at init() time configured to hold up to `n` chunks of `m` bytes each.
-
  - various methods for reading from and writing to it.
-
  - `peek` support to get access to buffered data without copy
-
  - `pass` support to allow buffer flushing on write if it becomes full
-
  - use case: IO buffers for dynamic reads and writes that do not blow up
-
  - distinct from `dynbuf` in that:
-
    - it maintains a read position
-
    - writes on a full bufq return CURLE_AGAIN instead of nuking itself
-
  - Init options:
-
    - SOFT_LIMIT: allow writes into a full bufq
-
    - NO_SPARES: free empty chunks right away
-
  - a `bufc_pool` that can keep a number of spare chunks to
-
    be shared between different `bufq` instances
+
  Closes #11035

-
  Adding `dynhds`:
-
  - a straightforward list of name+value pairs as used for HTTP headers
-
  - headers can be appended dynamically
-
  - headers can be removed again
-
  - headers can be replaced
-
  - headers can be looked up
-
  - http/1.1 formatting into a `dynbuf`
-
  - configured at init() with limits on header counts and total string
-
    sizes
-
  - use case: pass a HTTP request or response around without being version
-
    specific
-
  - express a HTTP request without a curl easy handle (used in h2 proxy
-
    tunnels)
-
  - future extension possibilities:
-
    - conversions of `dynhds` to nghttp2/nghttp3 name+value arrays
+
YX Hao (26 Apr 2023)

-
  Closes #10720
+
- cf-socket: turn off IPV6_V6ONLY on Windows if it is supported

-
- pytest: improvements for suitable curl and error output
+
  IPV6_V6ONLY refs:
+
  https://en.wikipedia.org/wiki/IPv6#IPv4-mapped_IPv6_addresses
+
  https://github.com/golang/go/blob/master/src/net/ipsock_posix.go
+
  https://en.wikipedia.org/wiki/Unix-like
+
  https://learn.microsoft.com/en-us/windows/win32/winsock/ipproto-ipv6-socket-o
+
  ptions

-
  - will check built curl for http and https support and
-
    skip all tests if not there
-
  - will dump stdout/stderr/trace output on errored responses
+
  default value refs:
+
  https://datatracker.ietf.org/doc/html/rfc3493#section-5.3
+
  https://www.kernel.org/doc/html/latest/networking/ip-sysctl.html#proc-sys-net
+
  -ipv6-variables

-
  Closes #10829
+
  Closes #10975

-
Daniel Stenberg (29 Mar 2023)
+
Daniel Stenberg (26 Apr 2023)

-
- lib: use correct printf flags for sockets and timediffs
+
- urldata: shrink *select_bits int => unsigned char

-
  Introduces CURL_FORMAT_SOCKET_T for outputting socket numbers.
+
  - dselect_bits
+
  - cselect_bits

-
  Fixes #10737
-
  Reported-by: Gisle Vanem
-
  Closes #10855
+
  ... are using less than 8 bits. Changed types and moved them towards
+
  the end of the structs to fit better.

-
- telnet: make MSVC ignore warning for assignment within conditional
+
  Closes #11025

-
  Follow-up to d92a5007b60e0af7d
+
Stefan Eissing (26 Apr 2023)

-
  Closes #10859
+
- tests/http: more tests with specific clients

-
- ws: handle reads before EAGAIN better
+
  - Makefile support for building test specific clients in tests/http/clients
+
  - auto-make of clients when invoking pytest
+
  - added test_09_02 for server PUSH_PROMISEs using clients/h2-serverpush
+
  - added test_02_21 for lib based downloads and pausing/unpausing transfers

-
  Reported-by: simplerobot on github
-
  Fixes #10831
-
  Closes #10856
+
  curl url parser:
+
  - added internal method `curl_url_set_authority()` for setting the
+
    authority part of a url (used for PUSH_PROMISE)

-
- test1592: add flaky keyword
+
  http2:
+
  - made logging of PUSH_PROMISE handling nicer

-
  Closes #10860
+
  Placing python test requirements in requirements.txt files
+
  - separate files to base test suite and http tests since use
+
    and module lists differ
+
  - using the files in the gh workflows

-
Frank Gevaerts (28 Mar 2023)
+
  websocket test cases, fixes for we and bufq
+
  - bufq: account for spare chunks in space calculation
+
  - bufq: reset chunks that are skipped empty
+
  - ws: correctly encode frames with 126 bytes payload
+
  - ws: update frame meta information on first call of collect
+
    callback that fills user buffer
+
  - test client ws-data: some test/reporting improvements

-
- lib/sha256.c: typo fix in comment (duplicated "is available")
+
  Closes #11006

-
  Closes #10851
+
Jay Satiro (26 Apr 2023)

-
Arne Soete (28 Mar 2023)
+
- libssh2: fix crash in keyboard callback

-
- tests: update tests/httpd references to tests/http
+
  - Always set the libssh2 'abstract' user-pointer to the libcurl easy
+
    handle associated with the ssh session, so it is always passed to the
+
    ssh keyboard callback.

-
  tests/httpd was renamed to tests/http in #10654. This patch updates some
-
  references in the README
+
  Prior to this change and since 8b5f100 (precedes curl 8.0.0), if libcurl
+
  was built without CURL_DEBUG then it could crash during the ssh auth
+
  phase due to a null dereference in the ssh keyboard callback.

-
  Closes #10854
+
  Reported-by: Andreas Falkenhahn

-
Kamil Dudka (28 Mar 2023)
+
  Fixes https://github.com/curl/curl/pull/11024
+
  Closes https://github.com/curl/curl/pull/11026

-
- telnet: simplify the implementation of str_is_nonascii()
+
Daniel Stenberg (26 Apr 2023)

-
  There is no need to traverse the string twice.
+
- docs: clarify that more backends have HTTPS proxy support

-
  Closes #10852
+
  Closes #11033

-
Frank Gevaerts (28 Mar 2023)
+
- KNOWN_BUGS: remove two not-bugs

-
- curl_easy_getinfo.3: typo fix (duplicated "from the")
+
  - 11.7 signal-based resolver timeouts

-
  Closes #10850
+
  Not considered a bug anymore but just implementation details. People
+
  should avoid using timeouts with the synchronous name resolver.

-
Philip Heiduck (28 Mar 2023)
+
  - 11.16 libcurl uses renames instead of locking for atomic operations

-
- wolfssl.yml: bump to version 5.6.0
+
  Not a bug, just a description of how it works

-
  Closes #10843
+
  Closes #11032

-
Daniel Stenberg (28 Mar 2023)
+
Harry Sintonen (26 Apr 2023)

-
- RELEASE-NOTES: synced
+
- hostip: add locks around use of global buffer for alarm()

-
Ronan Pigott (28 Mar 2023)
+
  When building with the sync name resolver and timeout ability we now
+
  require thread-safety to be present to enable it.

-
- docs/cmdline-opts: document the dotless config path
+
  Closes #11030

-
  The real xdg config path is $XDG_CONFIG_HOME/curlrc, without the dot.
-
  The dotless name seems preferable, so let's match the documentation to
-
  the behavior.
+
Daniel Stenberg (26 Apr 2023)

-
  Closes #10849
+
- curl_path: bring back support for SFTP path ending in /~

-
Daniel Stenberg (28 Mar 2023)
+
  libcurl used to do a directory listing for this case (even though the
+
  documentation says a URL needs to end in a slash for this), but
+
  4e2b52b5f7a3 modified the behavior.

-
- HTTP-COOKIES.md: mention the #HttpOnly_ prefix
+
  This change brings back a directory listing for SFTP paths that are
+
  specified exactly as /~ in the URL.

-
  Fixes #10847
-
  Reported-by: Harry Sintonen
-
  Closes #10848
+
  Reported-by: Pavel Mayorov
+
  Fixes #11001
+
  Closes #11023

-
- dynbuf: never allocate larger than "toobig"
+
Emanuele Torre (26 Apr 2023)

-
  As dynbufs always have a fixed maximum size which they are not allowed
-
  to grow larger than, making sure that it never allocates a larger buffer
-
  makes sure the buffer does not allocate memory that will never be used.
+
- docs/libcurl/curl_*escape.3: rename "url" argument to "input"/"string"

-
  Closes #10845
+
  Also reword the DESCRIPTION section to mention "input"/"string" argument
+
  in bold.

-
- ftplistparser: replace realloc with dynbuf
+
  Closes #11027

-
  Closes #10844
+
- docs/libcurl: minor cleanups

-
- ftplistparser: use ISDIGIT()
+
  I was reading curl_unescape(3) and I noticed that there was an extra
+
  space after the open parenthesis in the SYNOPSIS; I removed the extra
+
  space.

-
  Closes #10844
+
  I also ran a few  grep -r  commands to find and remove extra spaces
+
  after '(' in other files, and to find and replace uses of `T*' instead
+
  of `T *'. Some of the instances of `T*` where unnecessary casts that I
+
  removed.

-
- ftplistparser: move out private data from public struct
+
  I also fixed a comment that was misaligned in CURLMOPT_SOCKETFUNCTION.3.

-
  The public 'curl_fileinfo' struct contained three fields that are for
-
  internal purposes only. This change makes them unused in the public
-
  struct.
+
  And I fixed some formatting inconsistencies: in curl_unescape(3), all
+
  function parameter were mentioned with bold text except length, that was
+
  mentioned as 'length'; and, in curl_easy_unescape(3), all parameters
+
  were mentioned in bold text except url that was italicised. Now they are
+
  all mentioned in bold.
+
  Documentation is not very consistent in how function parameter are
+
  formatted: many pages italicise them, and others display them in bold
+
  text; but I think it makes sense to at least be consistent with
+
  formatting within the same page.

-
  The new private struct fields are also renamed to make this separation
-
  more obvious internally.
+
  Closes #11027

-
  Closes #10844
+
Daniel Stenberg (26 Apr 2023)

-
- openssl: fix indents - white space edits only
+
- man pages: simplify the .TH sections

-
  Closes #10840
+
  - remove the version numbers
+
  - simplify the texts

-
- url: remove call to Curl_llist_destroy in Curl_close
+
  The date and version number will be put there for releases when maketgz
+
  runs the updatemanpages.pl script.

-
  A list that is created with a NULL "destructor" does not need to be
-
  destroyed. Not calling it is faster than calling it.
+
  Closes #11029

-
  Closes #10846
+
- hostcheck: fix host name wildcard checking

-
- multi: remove PENDING + MSGSENT handles from the main linked list
+
  The leftmost "label" of the host name can now only match against single
+
  '*'. Like the browsers have worked for a long time.

-
  As they are not driving transfers or any socket activity, the main loop
-
  does not need to iterate over these handles. A performance improvement.
+
  - extended unit test 1397 for this
+
  - move some SOURCE variables from unit/Makefile.am to unit/Makefile.inc

-
  They are instead only held in their own separate lists.
+
  Reported-by: Hiroki Kurosawa
+
  Closes #11018

-
  'data->multi' is kept a pointer to the multi handle as long as the easy
-
  handle is actually part of it even when the handle is moved to the
-
  pending/msgsent lists. It needs to know which multi handle it belongs
-
  to, if for example curl_easy_cleanup() is called before the handle is
-
  removed from the multi handle.
+
Dan Fandrich (25 Apr 2023)

-
  Alll 'data->multi' pointers of handles still part of the multi handle
-
  gets cleared by curl_multi_cleanup() which "orphans" all previously
-
  attached easy handles.
+
- smbserver: remove temporary files before exit

-
  This is take 2. The first version was reverted for the 8.0.1 release.
+
  Each execution of test 1451 would leave a file in /tmp before. Since
+
  Windows can't delete a file while it's open, all the temporary file
+
  names are stored and deleted on exit.

-
  Assisted-by: Stefan Eissing
-
  Closes #10801
+
  Closes #10990

-
Stefan Eissing (26 Mar 2023)
+
Stefan Eissing (25 Apr 2023)

-
- tests/http: add timeout to running curl in test cases
+
- Websocket en-/decoding

-
  - we had a CI case once where `curl` seemingly did not
-
    return and it was hard to guess what happened.
-
  - make curl execution in test cases time out after 60 seconds
+
  - state is fully kept at connection, since curl_ws_send() and
+
    curl_ws_rec() have lifetime beyond usual transfers
+
  - no more limit on frame sizes

-
  Closes #10783
+
  Reported-by: simplerobot on github
+
  Fixes #10962
+
  Closes #10999

-
Daniel Stenberg (26 Mar 2023)
+
Patrick Monnerat (25 Apr 2023)

-
- RELEASE-PROCEDURE: update to new schedule
+
- urldata: copy CURLOPT_AWS_SIGV4 value on handle duplication

-
  Ref: https://curl.se/mail/lib-2023-03/0062.html
+
  Prior to this change STRING_AWS_SIGV4 (CURLOPT_AWS_SIGV4) was wrongly
+
  marked as binary data that could not be duplicated.

-
  Assisted-by: Andy Alt
-
  Assisted-by: Dan Frandrich
+
  Without this fix, this option's value is not copied upon calling
+
  curl_easy_duphandle().

-
  Closes #10827
+
  Closes https://github.com/curl/curl/pull/11021

-
Patrick Monnerat (26 Mar 2023)
+
Stefan Eissing (25 Apr 2023)

-
- doc: curl_mime_init() strong easy handle binding has been relaxed in 7.87.0
+
- http3: expire unpaused transfers in all HTTP/3 backends

-
  Reported-by: Chloe Kudryavtsev
-
  Fixes #10834
-
  Closes #10835
+
  Closes #11005

-
Jay Satiro (25 Mar 2023)
+
- http2: always EXPIRE_RUN_NOW unpaused http/2 transfers

-
- CURLOPT_WRITEFUNCTION.3: fix typo
+
  - just increasing the http/2 flow window does not necessarily
+
    make a server send new data. It may already have exhausted
+
    the window before

-
  Reported-by: Osaila@users.noreply.github.com
+
  Closes #11005

-
  Fixes https://github.com/curl/curl/issues/10839
+
- http2: pass `stream` to http2_handle_stream_close to avoid NULL checks

-
Dan Fandrich (24 Mar 2023)
+
  Closes #11005

-
- CI: skip some more builds when possible
+
- h2/h3: replace `state.drain` counter with `state.dselect_bits`

-
  When a commit only contains tests, documentation, or cmake files, skip
-
  those builds that aren't affected by those.
+
  - `drain` was used by http/2 and http/3 implementations to indicate
+
    that the transfer requires send/recv independant from its socket
+
    poll state. Intended as a counter, it was used as bool flag only.
+
  - a similar mechanism exists on `connectdata->cselect_bits` where
+
    specific protocols can indicate something similar, only for the
+
    whole connection.
+
  - `cselect_bits` are cleard in transfer.c on use and, importantly,
+
    also set when the transfer loop expended its `maxloops` tries.
+
    `drain` was not cleared by transfer and the http2/3 implementations
+
    had to take care of that.
+
  - `dselect_bits` is cleared *and* set by the transfer loop. http2/3
+
    does no longer clear it, only set when new events happen.

-
  The file filters available on the CI services don't seem to allow
-
  skipping individual jobs, only the entire workflow, so we can't get any
-
  more fine-grained than this.
+
  This change unifies the handling of socket poll overrides, extending
+
  `cselect_bits` by a easy handle specific value and a common treatment in
+
  transfers.

-
- CI: add and adjust labeler match patterns
+
  Closes #11005

-
  Allow cmdline tool alongside other labels.
+
Daniel Stenberg (25 Apr 2023)

-
Kai Pastor (25 Mar 2023)
+
- socketpair: verify with a random value

-
- CMake: make config version 8 compatible with 7
+
  ... instead of using the curl time struct, since it would use a few
+
  uninitialized bytes and the sanitizers would complain. This is a neater
+
  approach I think.

-
  Reviewed-by: Jakub Zakrzewski
-
  Closes #10819
+
  Reported-by: Boris Kuschel
+
  Fixes #10993
+
  Closes #11015

-
Daniel Stenberg (24 Mar 2023)
+
Stefan Eissing (25 Apr 2023)

-
- RELEASE-NOTES: synced
+
- HTTP3: document the ngtcp2/nghttp3 versions to use for building curl

-
  Bumped version-in-progress to 8.1.0
+
  - refs #11011 to clarify this for people building curl themselves

-
- GHA: add a memory-sanitizer job
+
  Closes #11019

-
  Closes #10815
+
Daniel Stenberg (25 Apr 2023)

-
Dan Fandrich (23 Mar 2023)
+
- lib: unify the upload/method handling

-
- CI: fix brew retries on GHA
+
  By making sure we set state.upload based on the set.method value and not
+
  independently as set.upload, we reduce confusion and mixup risks, both
+
  internally and externally.

-
  The fix in the previous commit was complete for Cirrus but accidentally
-
  left off a part for GHA.
+
  Closes #11017

-
  Follow-up to c2b7249d
+
- RELEASE-NOTES: synced

-
- CI: skip Azure for more commits which change only GHA
+
Dan Fandrich (24 Apr 2023)

-
Daniel Stenberg (23 Mar 2023)
+
- CI: don't run CI jobs if only another CI was changed

-
- cmake: set SONAME for SunOS too
+
  A few paths were missed in the last commit, as well as a job added since
+
  then.

-
  Provided-by: Brian Lund
+
  Followup-to 395b9175

-
  Closes #10816
+
- CI: adjust labeler match patterns

-
Stefan Eissing (23 Mar 2023)
+
- runtests: support buffering log messages in runner & servers

-
- ngtcp2: adjust config and code checks for ngtcp2 without nghttp3
+
  Log messages generated with logmsg can now be buffered and returned from
+
  the runner as a return value.  This will be needed with parallel testing
+
  to allow all messages for one test to be displayed together instead of
+
  interspersed with messages of multiple tests. Buffering can be disabled
+
  by setting a logging callback function with setlogfunc, which is
+
  currently being done to preserve existing logging behaviour for now.

-
  - make configure show on HTTP3 feature that both ngtcp2 and nghttp3
-
    are in play
-
  - define ENABLE_QUIC only when USE_NGTCP2 and USE_NGHTTP3 are defined
-
  - add USE_NGHTTP3 in the ngtcp2 implementation
+
  Some additional output is generated in verbose and debugprotocol modes,
+
  which don't always use logmsg. These modes also impact some servers
+
  which generate extra messages. No attempt is made to buffer everything
+
  if these modes are enabled.

-
  Fixes #10793
-
  Closes #10821
+
  Ref: #10818
+
  Closes #11016

-
Daniel Stenberg (23 Mar 2023)
+
- runtests: more consistently use logmsg in server control code

-
- data.d: emphasize no conversion
+
  Also, display an error when sshversioninfo returns one.

-
  When asking curl to send a POST, curl does not encode or change the data.
+
  Ref: #10818

-
  Ref: #10820
-
  Closes #10823
+
- runtests: create runner functions for clearlocks and stopservers

-
- server/getpart: clear the buffer before load
+
  runtests.pl now uses runner for all server actions beyond the initial
+
  variable configuration.

-
  Fixes msan warnings:
+
  Ref: #10818

-
  ==54195==WARNING: MemorySanitizer: use-of-uninitialized-value
-
      #0 0x55ece35e57cb in line_length /home/runner/work/curl/curl/tests/server
-
  /getpart.c:111:25
-
      #1 0x55ece35e3b83 in readline /home/runner/work/curl/curl/tests/server/ge
-
  tpart.c:164:24
-
      #2 0x55ece35e0269 in getpart /home/runner/work/curl/curl/tests/server/get
-
  part.c:347:18
-
      #3 0x55ece36180b6 in parse_servercmd /home/runner/work/curl/curl/tests/se
-
  rver/sws.c:283:13
+
- runtests: tightened servers package exports

-
  Closes #10822
+
  The defaults are intended for runtests.pl, whereas runner.pm needs to
+
  explicitly specify them.

-
- ntlm: clear lm and nt response buffers before use
+
- runtests: display logs on server failure in singletest()

-
  To avoid the risk of MemorySanitizer: use-of-uninitialized-value
+
  This is closer to the place where logs are displayed on test failure.
+
  Also, only display these logs if -p is given, which is the same flag
+
  that controls display of test failure logs. Some server log files
+
  need to be deleted later so that they stay around long enough to be
+
  displayed on failure.

-
  Closes #10814
+
  Ref: #10818

-
- digest: clear target buffer
+
- runtests: turn a print into a logmsg

-
  Closes #10814
+
  Also enable another couple of useful messages in verbose mode.

-
Douglas R. Reno (22 Mar 2023)
+
  Ref: #10818

-
- cmake: bring in the network library on Haiku.
+
Daniel Stenberg (24 Apr 2023)

-
  When cross-compiling for Haiku, the networking library needs to be
-
  brought in. Without this, an unknown type of "Error" is reported in
-
  lib/curl_setup_once.h.
+
- http: store the password in the correct variable

-
  This is also needed when using CMake natively on Haiku to build libcurl.
+
  Typo from fc2f1e547a4a, detected by Coverity (because there's dead code
+
  due to this).

-
  Fixes #10296
-
  Closes #10792
+
  Closes #11002

-
Daniel Stenberg (22 Mar 2023)
+
Stefan Eissing (24 Apr 2023)

-
- runtests: die if curl version can be found
+
- HTTP3/quiche: terminate h1 response header when no body is sent

-
  Closes #10813
+
  - fixes a failure in test2501 where a response without body was missing
+
    the final empty line

-
Stefan Eissing (22 Mar 2023)
+
  Closes #11003

-
- multi: add handle asserts in DEBUG builds
+
Dan Fandrich (22 Apr 2023)

-
  For GOOD_EASY_HANDLE and GOOD_MULTI_HANDLE checks
+
- runtests: move showdiff into runtests.pl

-
  - allow NULL pointers to "just" return an error as before
-
  - fail hard on nun-NULL pointers that no longer show the MAGICs
+
  It's not used anywhere else.

-
  Closes #10812
+
- devtest: add a new script for testing the test harness

-
Jon Rumsey (22 Mar 2023)
+
  This is currently useful for starting a test server on its own without
+
  an associated test, which can be used for interactive curl testing or
+
  for validating parts of the test harness itself. More commands can be
+
  added to perform additional functions in the future.

-
- gskit: various compile errors in OS400
+
  Ref: #10818
+
  Closes #11008

-
  Various compile failures in gskit.c;
+
- runtests: refactor the main test loop into two

-
  - pipe_ssloverssl() needs Curl_easy data parameter for
-
    Curl_conn_cf_get_socket(cf, data)
-
  - key_passwd is in ssl_config, not conn_config
-
  - close_on() has 2 parameters, not 4
-
  - getsockopt() needs to call Curl_conn_cf_get_socket(), not
-
    cxn->sock[FIRSTSOCKET]
+
  The test loop now has an initial loop that first runs through all
+
  possible tests to build a set of those to attempt on this run based on
+
  features and keywords and only then goes through that new list to run
+
  them.  This actually makes it three loops through all tests cases, as
+
  there is an existing loop that gathers possible test numbers from the
+
  test files on disk.

-
  Fixes #10799
-
  Closes #10800
+
  This has two minor effects on the output: all the tests that will be
+
  skipped are displayed at the start (instead of being interspersed with
+
  other tests) and the -l option no longer shows a count of tests at the
+
  end or a (misleading) statement that tests have run successfully. The
+
  skipped tests are also omitted from the test results sent to AppVeyor
+
  and Azure in CI builds.

-
Daniel Stenberg (22 Mar 2023)
+
  Another effect is a reduction in the amount of work considered part of
+
  the "Test definition reading and preparation time" reported with -r
+
  making those figures slightly lower than before.

-
- tool_operate: pass a long as CURLOPT_HEADEROPT argument
+
  Ref: #10818

-
  Closes #10798
+
- runtests: track only the current test timings in runner.pm

-
- GHA: run all linux test jobs with valgrind
+
  This avoids passing these data through through global variables, which
+
  soon won't be possible.

-
  Closes #10798
+
  Ref: #10818

-
- GHA-linux: add an address-sanitizer build
+
- runtests: skip test preprocessing when doing -l

-
  Closes #10810
+
  This speeds up the output tremendously by avoiding unnecessary work.

-
Version 8.0.1 (20 Mar 2023)
+
- runtests: simplify value returned regarding use of valgrind

-
Daniel Stenberg (20 Mar 2023)
+
  As a side effect this will now also show in verbose mode that valgrind
+
  is being skipped on tests that explicitly disable it, such as 600.

-
- RELEASE-NOTES: synced
+
  Ref: #10818

-
  curl 8.0.1
+
- runtests: fix quoting in Appveyor and Azure test integration

-
- Revert "multi: remove PENDING + MSGSENT handles from the main linked list"
+
  Test 1442's name was not quoted correctly so wasn't registered in
+
  Appveyor and it had the wrong name in Azure. The JSON string quotes were
+
  also invalid, even though both servers happened to accept it regardless.

-
  This reverts commit f6d6f3ce01e377932f1ce7c24ee34d45a36950b8.
+
  Closes #11010

-
  The commits caused issues in the 8.0.0 release. Needs a retake.
+
Daniel Stenberg (19 Apr 2023)

-
  Reported-by: Kamil Dudka
-
  Closes #10795
+
- RELEASE-NOTES: synced

-
- include/curl/curlver.h: bump to 8.0.1
+
Dan Fandrich (18 Apr 2023)

-
Version 8.0.0 (20 Mar 2023)
+
- runtests: spread out the port numbers used by servers

-
Daniel Stenberg (20 Mar 2023)
+
  The server ports are chosen randomly for each server, but the random
+
  ranges chosen were inconsistently-sized and overlapping. Now, they are
+
  spread out more so at least the first random port chosen for each server
+
  is guaranteed to not also be chosen by another server. The starting port
+
  numbers are also raised to put them in the Ephemeral Port range—not the
+
  range defined by RFC 6335 but the one used by Linux, which starts lower
+
  and gives us more room to work with.

-
- RELEASE-NOTES: synced
+
  Reported-by: Daniel Stenberg

-
  The curl 8.0.0 release
+
- runtests: fix problems on <killserver> failure

-
- THANKS: from the 8.0.0 release
+
  The verify time must be set in this case, like all cases. An error
+
  message needs to be displayed as well.

-
- scripts/delta: fix "ambiguous argument" when used in branches
+
- runtests: fix perl warning when <tool> is wrong

-
- SECURITY-PROCESS.md: Busy-loops are not security problems
+
- runtests: don't try to stop stunnel before trying again

-
  Closes #10790
+
  Calling stopserver() before retrying stunnel due to an error would stop
+
  the dependent server (such as HTTP) meaning stunnel would have nothing
+
  to talk to when it came up. Don't try to force a stop when it didn't
+
  actually start.  Also, don't mark the server as bad for future use when
+
  it starts up on a retry.

-
Stefan Eissing (17 Mar 2023)
+
  Reported-by: eaglegai at github
+
  Tested-by: eaglegai at github
+
  Fixes #10976

-
- tests/http: do not save files for downloads in scorecard testing
+
- runtests: don't accidentally randomly choose the same port

-
  Closes #10788
+
  If a server couldn't be started on a port, a new one is randomly chosen
+
  and the server is tried again. Avoid accidentally using a
+
  randomly-chosen 0 port offset by adding 1 to the random number.

-
Daniel Stenberg (17 Mar 2023)
+
  Found-by: Daniel Stenberg

-
- cf-socket: use port 80 when resolving name for local bind
+
- runtests: don't attempt to use a port we know is in use

-
  It turns out c-ares returns an error when asked to resolve a host name with
-
  ares_getaddrinfo using port number 0.
+
  This reduces the startup time when there is a known conflict on the
+
  random port chosen for a server.  This was already done for stunnel, but
+
  now it's done for all servers.

-
  Reported as a c-ares bug here: https://github.com/c-ares/c-ares/issues/517
+
- http-server: fix server name in a log message

-
  The work-around is to simply use port 80 instead, as the number typically doe
-
  s
-
  not make a difference and a non-zero number works for c-ares.
+
  This changed when the file was renamed in commit cbf57176

-
  Fixes #10759
-
  Reported-by: Matt Jolly
-
  Closes #10789
+
- runtests: refactor into more packages

-
- curl.h: require gcc 12.1 for the deprecation magic
+
  testutil.pm now contains a few miscellaneous functions that are used in
+
  several places but have no better place to live.  subvariables moves to
+
  servers.pm since most variables that it substitutes relate to servers,
+
  so this is the most appropriate place. Rename a few functions for better
+
  naming consistency.

-
  Reported-by: kchow-FTNT on github
-
  Fixes #10726
-
  Closes #10784
+
  Ref: #10818
+
  Closes #10995

-
- Revert "rtsp: use dynbuf instead of custom reallocs"
+
- runtests: call timestampskippedevents() in singletest

-
  This reverts commit 1b9ea3239d22147e00d8 because of OSS-fuzz reports.
-
  I'll do another take after the pending release.
+
  ..rather than by the runner

-
  Closes #10785
+
- runtests: assume a newer Valgrind by default

-
- test422: verify --next used without a prior URL
+
  The tests for an older Valgrind version should probably just be deleted,
+
  given that they're testing for an 18-year-old version.

-
  Closes #10782
+
- runtests: refactor test runner code into runner.pm

-
- tool_getparam: error if --next is used without a prior URL
+
  This is code that is directly responsible for running a single test.
+
  This will eventually run in a separate process as part of the parallel
+
  testing project.

-
  Reported-by: 積丹尼 Dan Jacobson
-
  Ref: https://github.com/curl/curl/pull/10769#discussion_r1137895629
+
  Ref: #10818

-
  Closes #10782
+
- runtests: skip unneeded work if test won't be running

-
- libssh: use dynbuf instead of realloc
+
  This speeds up tests by avoiding unnecessary processing.

-
  When building lines to show for SFTP directory listings.
+
  Ref: #10818

-
  Closes #10778
+
- runtests: factor out singletest_postcheck

-
- lib2305: deal with CURLE_AGAIN
+
  This will eventually need to be part of the test runner.

-
  The test does a slightly ugly busy-loop for this case but should be
-
  managable due to it likely being a very short moment.
+
  Ref: #10818

-
  Mention CURLE_AGAIN in curl_ws_recv.3
+
- test303: kill server after test

-
  Fixes #10760
-
  Reported-by: Jay Satiro
-
  Closes #10781
+
  Otherwise, an HTTP test closely following this one with a tight time
+
  constraint (e.g. 672) could fail because the test server stays sitting
+
  with the wait command for a while.

-
- rtsp: use dynbuf instead of custom reallocs
+
Patrick Monnerat (18 Apr 2023)

-
  For the RTP buffering.
+
- OS400: provide ILE/RPG usage examples

-
  Closes #10776
+
  Closes https://github.com/curl/curl/pull/10994

-
- libssh2: remove unused variable from libssh2's struct
+
- OS400: improve vararg emulation

-
  Closes #10777
+
  - Use V7R4 RPG procedure overloading to improve vararg emulation.

-
- RELEASE-NOTES: synced
+
  From OS400 V7R4 and above, ILE/RPG implements a limited procedure
+
  overloading feature that can be used to improve curl's typed
+
  implementation of varargs procedures. This commit applies it to
+
  curl_easy_setopt(), curl_multi_setopt(), curl_share_setopt() and
+
  curl_easy_getinfo().

-
- multi: remove PENDING + MSGSENT handles from the main linked list
+
  Closes https://github.com/curl/curl/pull/10994

-
  As they are not driving transfers or any socket activity, the main loop
-
  does not need to iterate over these handles. A performance improvement.
+
- OS400: fix and complete ILE/RPG binding

-
  They are instead only held in their own separate lists.
+
  - Fix wrong definitions of CURL_ZERO_TERNINATED, curl_mime_data() and
+
    curl_mime_data_ccsid().

-
  Assisted-by: Stefan Eissing
-
  Ref: #10743
-
  Closes #10762
+
  - Add recent definitions, in particular blob, header API and WebSockets
+
    API.

-
- multi: turn link/unlinking easy handles into dedicated functions
+
  - Support for CURLVERSION_ELEVENTH.

-
- http_aws_sigv4: fix scan-build "value stored to 'ret' is never read"
+
  - New functions for EBCDIC support.

-
  Follow-up to 495d09810aa9a
+
  Reflect these changes in README.OS400.

-
  Closes #10766
+
  Closes https://github.com/curl/curl/pull/10994

-
- lib: skip Curl_llist_destroy calls
+
- OS400: implement EBCDIC support for recent features

-
  Linked lists themselves do not carry any allocations, so for the lists
-
  that do not have have a set destructor we can just skip the
-
  Curl_llist_destroy() call and save CPU time.
+
  - Support CURLVERSION_ELEVENTH.

-
  Closes #10764
+
  - New function curl_url_strerror_ccsid().

-
- lib643: LIB644 is never defined, this is dead code
+
  - curl_easy_setopt_ccsid() supports blobs and 3 recent string options.

-
  Closes #10765
+
  - New function curl_easy_header_ccsid().

-
- libtest/Makefile.inc: remove superfluous variables
+
  - New generic latin1<-->ccsid conversion functions curl_from_ccsid() and
+
    curl_to_ccsid() for user convenience.

-
  Rely on the defaults when possible.
+
  - README.OS400 updated accordingly.

-
  Closes #10765
+
  - Removed a leftover QsoSSL support identifier.

-
- tests/http: remove year ranges from copyrights
+
  Closes https://github.com/curl/curl/pull/10994

-
  Closes #10763
+
- OS400: rework build scripts

-
Casey Bodley (14 Mar 2023)
+
  - Rename shell function "system" to "CLcommand" to avoid confusion with
+
    built-in command.

-
- aws_sigv4: fall back to UNSIGNED-PAYLOAD for sign_as_s3
+
  - Reformat scripts. Fix some indentations. Avoid lines > 80 characters
+
    where possible.

-
  all s3 requests default to UNSIGNED-PAYLOAD and add the required
-
  x-amz-content-sha256 header. this allows CURLAUTH_AWS_SIGV4 to correctly
-
  sign s3 requests to amazon with no additional configuration
+
  - Support ASCII runtime development files in a user-defined directory
+
    path.

-
  Signed-off-by: Casey Bodley <cbodley@redhat.com>
+
  - FIX SONAME detection.

-
  Closes #9995
+
  - Drop form API test program compilation (does not exist anymore).

-
Viktor Szakats (14 Mar 2023)
+
  Closes https://github.com/curl/curl/pull/10994

-
- wolfssl: add quic/ngtcp2 detection in cmake, and fix builds
+
Sevan Janiyan (18 Apr 2023)

-
  - add QUIC/ngtcp2 detection in CMake with wolfSSL.
+
- tests/sshserver.pl: Define AddressFamily earlier

-
    Because wolfSSL uses zlib if available, move compression detection
-
    before TLS detection. (OpenSSL might also need this in the future.)
+
  As the comment states "Address family must be specified before ListenAddress"
+
  , otherwise the tests fail to run
+
  `"failed starting SSH server" 52 times (582, 583, 600, 601, 602, 603, 604, 60
+
  5, 606 and 43 more)`

-
  - wolfSSL 5.5.0 started using C99 types in its `quic.h` header, but it
-
    doesn't #include the necessary C99 header itself, breaking builds
-
    (unless another dependency pulled it by chance.) Add local workaround
-
    for it. For this to work with all build tools, we had to fix our
-
    header detection first. Ref: #10745
+
  Closes #10983

-
    Ref: https://github.com/curl/curl-for-win/commit/6ad5f6ecc15620c15625fc4434
-
  76b3a1ecef4f3f
+
Stefan Eissing (18 Apr 2023)

-
  Closes #10739
+
- quiche: Enable IDLE egress handling

-
Stefan Eissing (14 Mar 2023)
+
  Follow-up to 544abeea which added the handling but wrongly left it
+
  commented out.

-
- secure-transport: fix recv return code handling
+
  Closes https://github.com/curl/curl/pull/11000

-
  Return code handling of recv calls were not always correct when an error
-
  occured or the connection was closed.
+
Daniel Stenberg (18 Apr 2023)

-
  Closes #10717
+
- docs/examples/protofeats.c: Outputs all protocols and features

-
- http2: Use KEEP_SEND_HOLD for flow control in HTTP/2
+
  Showing off one way to get to char pointer arrays of info returned by
+
  curl_version_info()

-
  - use the defined, but so far not used, KEEP_SEND_HOLD bit for flow
-
    control based suspend of sending in transfers.
+
  Closes #10991

-
  Prior to this change KEEP_SEND_PAUSE bit was used instead, but that can
-
  interfere with pausing streams from the user side via curl_easy_pause.
+
- tests/keywords.pl: remove

-
  Fixes https://github.com/curl/curl/issues/10751
-
  Closes https://github.com/curl/curl/pull/10753
+
  This script does not work since the introduction of the test
+
  preprocessing. If we need this functionality, it probably needs to be
+
  moved into the runtests tool or similar.

-
Dan Fandrich (13 Mar 2023)
+
  Reported-by: Dan Fandrich
+
  Fixes #10895
+
  Closes #10987

-
- tests: fix control code that hid some text in runtests.1
+
Stefan Eissing (17 Apr 2023)

-
- tests: sync option lists in runtests.pl & its man page
+
- http2: support HTTP/2 to forward proxies, non-tunneling

-
Daniel Stenberg (13 Mar 2023)
+
  - with `--proxy-http2` allow h2 ALPN negotiation to
+
    forward proxies
+
  - applies to http: requests against a https: proxy only,
+
    as https: requests will auto-tunnel
+
  - adding a HTTP/1 request parser in http1.c
+
  - removed h2h3.c
+
  - using new request parser in nghttp2 and all h3 backends
+
  - adding test 2603 for request parser
+
  - adding h2 proxy test cases to test_10_*

-
- multi: make multi_perform ignore/unignore signals less often
+
  scorecard.py: request scoring accidentally always run curl
+
  with '-v'. Removed that, expect double numbers.

-
  For improved performance
+
  labeller: added http1.* and h2-proxy sources to detection

-
  Reported-by: Jerome St-Louis
-
  Ref: #10743
-
  Closes #10750
+
  Closes #10967

-
Viktor Szakats (13 Mar 2023)
+
Daniel Stenberg (17 Apr 2023)

-
- cmake: delete unused HAVE__STRTOI64
+
- curl_easy_unescape.3: rename the argument

-
  Also delete obsolete surrounding comments.
+
  and highlight it appropriately in the text.

-
  Reviewed-by: Daniel Stenberg
-
  Closes #10756
+
  Closes #10979

-
- CI: fix copyright header
+
Viktor Szakats (17 Apr 2023)

-
  Follow-up to 395b9175b7422d699fa93643973295c106cdf147
+
- autotools: sync up clang picky warnings with cmake

-
Daniel Stenberg (13 Mar 2023)
+
  Bringing missing options over from CMake.

-
- RELEASE-PROCEDURE.md: update coming release dates
+
  Move around existing `-Wno-pointer-bool-conversion` option to come
+
  _after_ `-Wconversion`.

-
Stefan Eissing (13 Mar 2023)
+
  Reviewed-by: Marcel Raad
+
  Closes #10974

-
- tests/http: add pytest to GHA and improve tests
+
Daniel Stenberg (17 Apr 2023)

-
  - added to: ngtcp2-quictls, ngtcp2-gnutls and the linux varians
-
    quiche, bearssl, libressl, mbedtls, openssl3, rustls
-
  - added disabled in ngtcp2-wolfssl due to weird SSL_connect() errors
-
    not reproducable locally
+
- tests/libtest/lib1900.c: remove

-
  Improvements on pytest:
+
  This file was left behind when the rest of the test was previously removed.

-
  -  handling of systems with nghttpx in $PATH
-
     - configure will seach $PATH got nghttpx used in pytest
-
     - pytest fixes for managing nghttpx without h3 support
-
     - ngtcp2-wolfssl: use a fully enabled wolfssl build
+
  Follow-up to e50a877df74f

-
  - lower parallel count for http/1.1 tests, since we do not
-
     want to test excessive connections.
-
  - check built curl for HTTPS-proxy support in proxy tests
-
  - bearssl does not like one of our critical cert extensions, making
-
    it non-critical now
-
  - bearssl is too slow for test_12, skipping
-
  - making sure we do h3 tests only when curl and server support is there
+
- src/tool_operhlp.c: fix value stored to 'uerr' is never read

-
  Closes #10699
+
  Ref: https://github.com/curl/curl/pull/10974#issuecomment-1510461343
+
  Reported-by: Viktor Szakats
+
  Closes #10982

-
Marcel Raad (13 Mar 2023)
+
Viktor Szakats (16 Apr 2023)

-
- tool_operate: silence unused parameter warning
+
- cmake: speed up and extend picky clang/gcc options

-
  `global` is only used in the `my_setopt` macro version without
-
  `CURL_DISABLE_LIBCURL_OPTION` since commit 4774decf10a.
+
  Extend existing picky compiler options with ones missing compared to
+
  autotools builds. Also sync options between clang and gcc.

-
  Closes https://github.com/curl/curl/pull/10752
+
  Redesign the way we enable these options to avoid the slow option
+
  detection almost completely.

-
Viktor Szakats (13 Mar 2023)
+
  This reduces the number of detections from 35 to zero for clang and
+
  3 for gcc, even after adding a bunch of new options.

-
- build: fix stdint/inttypes detection with non-autotools
+
  clang 3.0 (2011-11-29) and gcc 2.95 (1999-07-31) now required.

-
  Fix `stdint.h` and `inttypes.h` detection with non-autotools builds on
-
  Windows. (autotools already auto-detected them accurately.)
+
  Also show enabled picky options.

-
  `lib/config-win32.h` builds (e.g. `Makefile.mk`):
-
  - set `HAVE_STDINT_H` where supported.
-
  - set `HAVE_INTTYPES_H` for MinGW.
+
  Ref: https://github.com/libssh2/libssh2/pull/952

-
  CMake:
-
  - auto-detect them on Windows. (They were both force-disabled.)
-
  - delete unused `CURL_PULL_STDINT_H`.
-
  - delete unused `CURL_PULL_INTTYPES_H`.
-
  - stop detecting `HAVE_STDINT_H` twice.
-
    Present since the initial CMake commit: 4c5307b45655ba75ab066564afdc0c111a8
-
  b9291
+
  Reviewed-by: Daniel Stenberg
+
  Closes #10973

-
  curl doesn't use these C99 headers, we need them now to workaround
-
  broken wolfSSL builds. Ref: #10739
+
Andreas Falkenhahn (16 Apr 2023)

-
  Once that clears up, we can delete these detections and macros (unless
-
  we want to keep them for future us.)
+
- nbtlm: use semicolons instead of commas for (void) args

-
  Reviewed-by: Daniel Stenberg
-
  Closes #10745
+
  Closes #10978

-
Daniel Stenberg (13 Mar 2023)
+
Daniel Stenberg (15 Apr 2023)

-
- RELEASE-NOTES: synced
+
- multi: free up more data earleier in DONE

-
- ftp: add more conditions for connection reuse
+
  Before checking for more users of the connection and possibly bailing
+
  out.

-
  Reported-by: Harry Sintonen
-
  Closes #10730
+
  Fixes #10971
+
  Reported-by: Paweł Wegner
+
  Closes #10972

-
Dan Fandrich (12 Mar 2023)
+
- RELEASE-NOTES: synced

-
- tests: make first.c the same for both lib tests and unit tests
+
- curl: do NOT append file name to path for upload when there's a query

-
  The only difference used to be global variable used in unittest tests.
-
  After cb7ed5a removed individual flag overrides for the unittests, first.c
-
  was no longer recompiled for unit tests to include the flag, so whether it
-
  worked or gave a link error depended on whether it was compiled in
-
  libtest or unittest first. This way also speeds up the build by
-
  eliminating 40 identical compile invocations.
+
  Added test 425 to verify.

-
  Fixes #10749
+
  Reported-by: Dirk Rosenkranz
+
  Bug: https://curl.se/mail/archive-2023-04/0008.html
+
  Closes #10969

-
- tests: use AM_CPPFILES to modify flags in unit tests
+
- libcurl-thread.3: improved name resolver wording

-
  Using CPPFLAGS sometimes caused odd compile issues when building tests
-
  with parallel make and AM_CPPFILES is the right flag, anyway.
+
  And make better .SH sections

-
  Follow-up to cb7ed5a
+
  Closes #10966

-
  Ref #10749
+
Colman Mbuya (14 Apr 2023)

-
Viktor Szakats (13 Mar 2023)
+
- CURLOPT_PROXY_SSL_VERIFYPEER.3: fix minor grammar mistake

-
- Makefile.mk: fix -g option in debug mode [ci skip]
+
  Closes #10968

-
  Add it to `CFLAGS` (was: `LDFLAGS`).
+
Daniel Stenberg (14 Apr 2023)

-
  Closes #10747
+
- curl: add --proxy-http2

-
Jay Satiro (12 Mar 2023)
+
  For trying HTTP/2 with an HTTPS proxy.

-
- tool: improve --stderr handling
+
  Closes #10926

-
  - freopen stderr with the user-specified file (--stderr file) instead of
-
    using a separate 'errors' stream.
+
- KNOWN_BUGS: remove fixed or outdated issues, move non-bugs

-
  - In tool_setup.h override stdio.h's stderr macro as global variable
-
    tool_stderr.
+
  - remove h3 issues believed to be fixed

-
  Both freopen and overriding the stderr macro are necessary because if
-
  the user-specified filename is "-" then stdout is assigned to
-
  tool_stderr and no freopen takes place. See the PR for more information.
+
  - make the flaky CI issue be generic and not Windows specific

-
  Ref: https://github.com/curl/curl/issues/10491
+
  - "TLS session cache does not work with TFO" now documented

-
  Closes https://github.com/curl/curl/pull/10673
+
    This is now a documented restriction and not a bug. TFO in general is
+
    rarely used and has other problems, making it a low-priotity thing to
+
    work on.

-
Dan Fandrich (11 Mar 2023)
+
  - remove "Renegotiate from server may cause hang for OpenSSL backend"

-
- CI: don't run CI jobs if only another CI was changed
+
    This is an OpenSSL issue, not a curl one. Even if it taints curl.

-
  Also skip builds on non-Windows platforms when only Windows build files
-
  have changed.
+
  - rm "make distclean loops forever"

-
  This should reduce the number of useless builds and the associated
-
  waiting time and chance of spurious failures, freeing resources for
-
  new PRs.
+
  - rm "configure finding libs in wrong directory"

-
  Closes #10742
+
    Added a section to docs/INSTALL.md about it.

-
- http: don't send 100-continue for short PUT requests
+
  - "A shared connection cache is not thread-safe"

-
  This is already how curl is documented to behave in Everything curl, but
-
  in actuality only short POSTs skip this. This should knock 30 seconds
-
  off a full run of the test suite since the 100-continue timeout will no
-
  longer be hit.
+
    Moved over to TODO and expanded for other sharing improvements we
+
    could do

-
  Closes #10740
+
  - rm "CURLOPT_OPENSOCKETPAIRFUNCTION is missing"

-
- tests: add DELAY keyword to more tests using waits
+
  - rm "Blocking socket operations in non-blocking API"

-
- tests: hack to build most unit tests under cmake
+
    Already listed as a TODO

-
  These are only built when a libcurl static library is available, since
-
  we're not building a special libcurlu library yet and these tests rely
-
  on private symbols that aren't available in the shared library. A few
-
  unit tests do require libcurlu, so those are not built.
+
  - rm "curl compiled on OSX 10.13 failed to run on OSX 10.10"

-
  Closes #10722
+
    Water under the bridge. No one cares about this anymore.

-
- tests: fix MSVC unreachable code warnings in unit tests
+
  - rm "build on Linux links libcurl to libdl"

-
  Switch unit1654 to use the proper test macros as well.
+
    Verified to not be true (anymore).

-
- tests: make CPPFLAGS common to all unit tests
+
  - rm "libpsl is not supported"

-
  There's no need to specify them individually.
+
    The cmake build supports it since cafb356e19cda22

-
- tests: keep cmake unit tests names in sync
+
  Closes #10963

-
  Put only the test names into Makefile.inc so they can be used by both
-
  cmake and automake. This will prevent the list of tests from becoming
-
  out of date when they are also built under cmake.
+
- url: fix PVS nits

-
Viktor Szakats (11 Mar 2023)
+
  - expression 'hostptr' is always true
+
  - a part of conditional expression is always true: proxypasswd
+
  - expression 'proxyuser' is always true
+
  - avoid multiple Curl_now() calls in allocate_conn

-
- src: silence wmain() warning for all build methods
+
  Ref: #10929
+
  Closes #10959

-
  llvm/clang and gcc doesn't recognize the wmain() function in Unicode
-
  Windows builds:
+
- bufq: simplify since expression is always true

-
  llvm/clang:
-
  ```
-
  ../../src/tool_main.c:239:5: warning: no previous prototype for function 'wma
-
  in' [-Wmissing-prototypes]
-
  int wmain(int argc, wchar_t *argv[])
-
      ^
-
  1 warning generated.
-
  ```
+
  The check for 'len' is already done so it will remain true until
+
  updated. Pointed out by PVS.

-
  gcc:
-
  ```
-
  ../../src/tool_main.c:239:5: warning: no previous prototype for 'wmain' [-Wmi
-
  ssing-prototypes]
-
    239 | int wmain(int argc, wchar_t *argv[])
-
        |     ^~~~~
-
  ```
+
  Ref: #10929
+
  Closes #10958

-
  Before this patch, we already silenced it with CMake. This patch moves
-
  the silencing to the source, so that it applies to all build tools.
+
- hash: fix assigning same value

-
  Bug: https://github.com/curl/curl/issues/7229#issuecomment-1464806651
+
  Pointed out by PVS

-
  Reviewed-by: Marcel Raad
-
  Closes #10744
+
  Ref: #10929
+
  Closes #10956

-
Dan Fandrich (10 Mar 2023)
+
- cookie: address PVS nits

-
- CI: fix retrying on brew failures
+
  - avoid assigning the same value again
+
  - remove superfluous check of co->domain
+
  - reduce variable scope for namep/valuep

-
  The previous attempt didn't consider that the shell would exit
-
  immediately after the false statement in the retry case.
+
  Ref: #10929
+
  Closes #10954

-
  Follow-up to dc141a37
+
Stefan Eissing (14 Apr 2023)

-
Stefan Eissing (10 Mar 2023)
+
- cf-socket: Disable socket receive buffer by default

-
- http2: fix error handling during parallel operations
+
  - Disable socket receive buffer unless USE_RECV_BEFORE_SEND_WORKAROUND
+
    is in place.

-
  RST and connection close were not handled correctly during parallel
-
  transfers, leading to aborted response bodies being reported complete.
+
  While we would like to use the receive buffer, we have stalls in
+
  parallel transfers where not all buffered data is consumed and no socket
+
  events happen.

-
  Closes #10715
+
  Note USE_RECV_BEFORE_SEND_WORKAROUND is a Windows sockets workaround
+
  that has been disabled by default since b4b6e4f1, due to other bugs.

-
Daniel Stenberg (10 Mar 2023)
+
  Closes https://github.com/curl/curl/pull/10961

-
- url: only reuse connections with same GSS delegation
+
- cf-h2-proxy: fix processing ingress to stop too early

-
  Reported-by: Harry Sintonen
-
  Closes #10731
+
  - progress ingress stopped too early, causing data
+
    from the underlying filters to not be processed and
+
    report that no tunnel data was available
+
  - this lead to "hangers" where no socket activity was
+
    seen but data rested in buffers

-
Viktor Szakats (10 Mar 2023)
+
  Closes #10952

-
- lib: silence clang/gcc -Wvla warnings in brotli headers
+
- http3: check stream_ctx more thoroughly in all backends

-
  brotli v1.0.0 throughout current latest v1.0.9 and latest master [1]
-
  trigger this warning.
+
  - callbacks and filter methods might be invoked at unexpected
+
    times, e.g. when the transfer's stream_ctx has not been initialized
+
    yet or, more likely, has already been taken down.
+
  - check for existance of stream_ctx in such places and return
+
    an error or silently succeed the call.

-
  It happened with CMake and GNU Make. autotools builds avoid it with
-
  the `convert -I options to -isystem` macro.
+
  Closes #10951

-
  llvm/clang:
-
  ```
-
  In file included from ./curl/lib/content_encoding.c:36:
-
  ./brotli/x64-ucrt/usr/include/brotli/decode.h:204:34: warning: variable lengt
-
  h array used [-Wvla]
-
      const uint8_t encoded_buffer[BROTLI_ARRAY_PARAM(encoded_size)],
-
                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
  ./brotli/x64-ucrt/usr/include/brotli/port.h:253:34: note: expanded from macro
-
   'BROTLI_ARRAY_PARAM'
-
                                   ^~~~~~
-
  In file included from ./curl/lib/content_encoding.c:36:
-
  ./brotli/x64-ucrt/usr/include/brotli/decode.h:206:48: warning: variable lengt
-
  h array used [-Wvla]
-
      uint8_t decoded_buffer[BROTLI_ARRAY_PARAM(*decoded_size)]);
-
                             ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
-
  ./brotli/x64-ucrt/usr/include/brotli/port.h:253:35: note: expanded from macro
-
   'BROTLI_ARRAY_PARAM'
-
                                   ~^~~~~
-
  ```
+
Daniel Stenberg (13 Apr 2023)

-
  gcc:
-
  ```
-
  In file included from ./curl/lib/content_encoding.c:36:
-
  ./brotli/x64-ucrt/usr/include/brotli/decode.h:204:5: warning: ISO C90 forbids
-
   variable length array 'encoded_buffer' [-Wvla]
-
    204 |     const uint8_t encoded_buffer[BROTLI_ARRAY_PARAM(encoded_size)],
-
        |     ^~~~~
-
  ./brotli/x64-ucrt/usr/include/brotli/decode.h:206:5: warning: ISO C90 forbids
-
   variable length array 'decoded_buffer' [-Wvla]
-
    206 |     uint8_t decoded_buffer[BROTLI_ARRAY_PARAM(*decoded_size)]);
-
        |     ^~~~~~~
-
  ```
+
- ftp: fix 'portsock' variable was assigned the same value

-
  [1] https://github.com/google/brotli/commit/ed1995b6bda19244070ab5d331111f16f
-
  67c8054
+
  Pointed out by PVS

-
  Reviewed-by: Daniel Stenberg
-
  Reviewed-by: Marcel Raad
-
  Closes #10738
+
  Ref: #10929
+
  Closes #10955

-
Daniel Stenberg (10 Mar 2023)
+
- ftp: remove dead code

-
- curl_path: create the new path with dynbuf
+
  This condition can never be true here since it is handled already 28
+
  lines above.

-
  Closes #10729
+
  Pointed out by PVS.

-
- url: remove dummy protocol handler
+
  Ref: #10929
+
  Closes #10957

-
  Just two added checks were needed saves a whole handler struct.
+
- cf-h1-proxy: skip an extra NULL assign

-
  Closes #10727
+
  and use Curl_safefree() once to save another NULL assign. Found by PVS.

-
Dan Fandrich (10 Mar 2023)
+
  Ref. #10929
+
  Closes #10953

-
- CI: retry a failed brew update too, not just brew install
+
Philip Heiduck (13 Apr 2023)

-
  Also, make sure an eventual failure ends up returning a failure code so
-
  the job stops.
+
- GHA: suppress git clone output

-
Daniel Stenberg (10 Mar 2023)
+
  Follow-up: https://github.com/curl/curl/commit/8203aa6ed405ec832d2c62f18dfda2
+
  93f89a23f9

-
- url: fix the SSH connection reuse check
+
  Closes #10949

-
  Reported-by: Harry Sintonen
-
  Closes #10735
+
Stefan Eissing (13 Apr 2023)

-
- CURLOPT_PROXY.3: curl+NSS does not handle HTTPS over unix domain socket
+
- cf-socket: remove dead code discovered by PVS

-
  It results in error "NSS error -5985 (PR_ADDRESS_NOT_SUPPORTED_ERROR)"
+
  Closes #10960

-
  Disabled test 1470 for NSS builds and documented the restriction.
+
Daniel Stenberg (13 Apr 2023)

-
  Reported-by: Dan Fandrich
-
  Fixes #10723
-
  Closes #10734
+
- http: skip a double NULL assign

-
- CURLSHOPT_SHARE.3: HSTS sharing is not thread-safe
+
  and also use a local variable to shorten the long names and increase
+
  readability in the function. Pointed out by PVS.

-
  Reported-by: Hiroki Kurosawa
-
  Closes #10732
+
  Ref: #10929
+
  Closes #10950

-
- telnet: only accept option arguments in ascii
+
- mime: skip NULL assigns after Curl_safefree()

-
  To avoid embedded telnet negotiation commands etc.
+
  Pointed out by PVS.

-
  Reported-by: Harry Sintonen
-
  Closes #10728
+
  Ref: #10929
+
  Closes #10947

-
- test1903: test use of COOKIEFILE - reset - COOKIEFILE
+
- rtsp: skip NULL assigns after Curl_safefree()

-
  This also tests for the memory leak bug fixed by parent commit b559ef6f.
+
  ... since this is a macro that assigns NULL itself. Pointed out by PVS.

-
  Ref: #10694
+
  Ref: #10929
+
  Closes #10946

-
  Closes https://github.com/curl/curl/pull/10712
+
- smb: remove double assign

-
Jay Satiro (10 Mar 2023)
+
  The same value is assigned the same value already a few lines above.
+
  Pointed out by PVS.

-
- url: fix cookielist memleak when curl_easy_reset
+
  Ref: #10929
+
  Closes #10945

-
  - Free set.cookelist in Curl_freeset instead of Curl_close.
+
- transfer: skip extra assign

-
  Prior to this change the cookielist linked list wasn't freed by
-
  curl_easy_reset which calls Curl_freeset to free all set.
+
  The 'result' variable already contains CURLE_OK at this point, no use in
+
  setting it again. Pointed out by PVS.

-
  Bug: https://github.com/curl/curl/issues/10694#issuecomment-1458619157
-
  Reported-by: Sergey Ryabinin
+
  Ref: #10929
+
  Closes #10944

-
  Closes https://github.com/curl/curl/pull/10709
+
- urlapi: skip a pointless assign

-
Dan Fandrich (10 Mar 2023)
+
  It stores a null byte after already having confirmed there is a null
+
  byte there. Detected by PVS.

-
- tests: fix some keywords and unused sections
+
  Ref: #10929
+
  Closes #10943

-
- tests: fix test1301 to call the right binary
+
Philip Heiduck (13 Apr 2023)

-
  It was refactored in commit 480ac6e5 but this step was missed.
+
- GHA: suppress git clone output

-
- tests: add timeout, SLOWDOWN and DELAY keywords to tests
+
  Closes #10939

-
  These are tests that are testing timing and end up being quite slow.
+
Stefan Eissing (13 Apr 2023)

-
Daniel Stenberg (10 Mar 2023)
+
- tests: make test_12_01 a bit more forgiving on connection counts

-
- RELEASE-NOTES: synced
+
- cf-socket: add socket recv buffering for most tcp cases

-
Stefan Eissing (10 Mar 2023)
+
  - use bufq as recv buffer, also for Windows pre-receive handling
+
  - catch small reads followed by larger ones in a single socket
+
    call. A common pattern on TLS connections.

-
- wolfSSL: ressurect the BIO `io_result`
+
  Closes #10787

-
  In pytest'ing the situation occored that wolfSSL reported an
-
  IO error when the underlying BIO operation was returning an
-
  CURLE_AGAIN condition.
+
Daniel Stenberg (13 Apr 2023)

-
  Readding the `io_result` filter context member to detect such
-
  situations.
+
- urlapi: cleanups

-
  Also, making sure that the returned CURLcode is initialized
-
  on all recv operations outcome.
+
  - move host checks together
+
  - simplify the scheme parser loop and the end of host name parser
+
  - avoid itermediate buffer storing in multiple places
+
  - reduce scope for several variables
+
  - skip the Curl_dyn_tail() call for speed
+
  - detect IPv6 earlier and skip extra checks for such hosts
+
  - normalize directly in dynbuf instead of itermediate buffer
+
  - split out the IPv6 parser into its own funciton
+
  - call the IPv6 parser directly for ipv6 addresses
+
  - remove (unused) special treatment of % in host names
+
  - junkscan() once in the beginning instead of scattered
+
  - make junkscan return error code
+
  - remove unused query management from dedotdotify()
+
  - make Curl_parse_login_details use memchr
+
  - more use of memchr() instead of strchr() and less strlen() calls
+
  - make junkscan check and return the URL length

-
  Closes #10716
+
  An optimized build runs one of my benchmark URL parsing programs ~41%
+
  faster using this branch. (compared against the shipped 7.88.1 library
+
  in Debian)

-
- gssapi: align global `gss_OID_desc` vars to silence ld warnings on macOS vent
-
  ura
+
  Closes #10935

-
  Refs #9975 which first reported this.
+
Josh McCullough (13 Apr 2023)

-
  Closes #10718
+
- http2: fix typo in infof() call

-
Daniel Stenberg (10 Mar 2023)
+
  Closes #10940

-
- libssh2: only set the memory callbacks when debugging
+
Daniel Stenberg (12 Apr 2023)

-
  This makes us debug libssh2 less and libcurl more when for example
-
  running torture tests that otherwise will spend a lot of time in libssh2
-
  functions.
+
- noproxy: pointer to local array 'hostip' is stored outside scope

-
  We leave libssh2 to test libssh2.
+
  Ref: #10929
+
  Closes #10933

-
  Closes #10721
+
Stefan Eissing (12 Apr 2023)

-
- docs/SECURITY-PROCESS.md: updates
+
- connect: fix https connection setup to treat ssl_mode correctly

-
  - allow Low+Medium issues to be managed through plain PRs
-
  - update the bug-bounty part to reflect current reality
+
  - for HTTPS protocol, a disabled ssl should never be acceptables.

-
  Closes #10719
+
  Closes #10934

-
Dan Fandrich (9 Mar 2023)
+
Douglas R. Reno (12 Apr 2023)

-
- tests: fix tag markup issues in some tests
+
- CMakeLists.txt: fix typo for Haiku detection

-
Marcel Raad (9 Mar 2023)
+
  Closes #10937

-
- tests: add `cookies` features
+
Dan Fandrich (11 Apr 2023)

-
  These tests don't work with `--disable-cookies`.
+
- pathhelp: use the cached $use_cygpath when available

-
  Closes https://github.com/curl/curl/pull/10713
+
- runtests: eliminate unneeded variable

-
- test420: add cookies keyword
+
- runtests: make the # of server start attempts a constant

-
  It fails with `--disable-cookies`.
+
- runtests: on startup failure call displaylogs only in serverfortest

-
  Closes https://github.com/curl/curl/pull/10713
+
  This reduces the number of calls spread throughout the code.

-
Dan Fandrich (8 Mar 2023)
+
  Ref: #10818
+
  Closes #10919

-
- CI: Add more labeler match patterns
+
- runtests: return an error code with startservers()

-
  Also, add the  CI, tests or libcurl API tags in conjunction with any
-
  others that might also apply.
+
  The code indicates the kind of failure encountered in starting a server,
+
  which can be used by the caller to tailor the user experience.

-
Andy Alt (9 Mar 2023)
+
  Ref: #10818

-
- GHA: minor improvements to spellcheck
+
- runtests: abort early if runpingpongserver is given a bad server type

-
  Closes #10640
+
- runtests: don't use the SMB server verification time as reference

-
Daniel Stenberg (9 Mar 2023)
+
  %FTPTIME2 and %FTPTIME3 should be set by the FTP server only, for
+
  consistency.

-
- test1671: fix after fix
+
- tests: factor out the test server management code

-
- test421: -w %{header_json} test with multiple same header names
+
  This now lives in servers.pm with some configuration variables moved to
+
  globalconfig.pm

-
  To reproduce the issue in #10704
+
  Ref: #10818

-
- tool_writeout_json. fix the output for duplicate header names
+
- runtests: remove an inappropriate use of runclientoutput

-
  Header entries with index != 0 are handled at the index 0 level so they
-
  should then be skipped when iterated over.
+
  This function is intended for running client code, not servers.

-
  Reported-by: Boris Okunskiy
-
  Fixes #10704
-
  Closes #10707
+
- runtests: only add $LIBDIR to the path for checktestcmd

-
- headers: make curl_easy_header and nextheader return different buffers
+
  Since checkcmd is for finding servers, there will never be anything in
+
  this directory of interest to them.

-
  By letting curl_easy_header() and curl_easy_nextheader() store the
-
  header data in their own struct storage when they return a pointer to
-
  it, it makes it possible for applications to use them both in a loop.
-
  Like the curl tool does.
+
  Ref: #10818

-
  Reported-by: Boris Okunskiy
-
  Fixes #10704
-
  Closes #10707
+
- tests: log sshserver.pl messages to a file

-
rcombs (8 Mar 2023)
+
  The logmsg messages were thrown away before, so they are now available
+
  for debugging.

-
- urlapi: take const args in _dup and _get functions
+
- runtests: also show DISABLED tests with -l

-
  Closes #10708
+
  Other reasons for skipping tests are ignored for -l, so being explicitly
+
  disabled should be too.

-
- urlapi: avoid mutating internals in getter routine
+
- runtests: move the UNIX sockets into $PIDDIR

-
  This was not intended.
+
  These were missed when the other server files were moved there.

-
  Closes #10708
+
  Follow-up to 70d2fca2

-
Daniel Stenberg (8 Mar 2023)
+
  Ref: #10818

-
- urlapi: '%' is illegal in host names
+
- tests: tighten up perl exports

-
  Update test 1560 to verify
+
  This reduces namespace pollution a little.

-
  Ref: #10708
-
  Closes #10711
+
  Ref: #10818

-
- ftp: make the 'ftpauth' a more normal 'char *'-array
+
- tests: turn perl modules into full packages

-
  Closes #10703
+
  This helps enforce more modularization and encapsulation. Enable and fix
+
  warnings on a few packages.  Also, rename ftp.pm to processhelp.pm since
+
  there's really nothing ftp-specific in it.

-
Evgeny Grin (Karlson2k) (8 Mar 2023)
+
  Ref: #10818

-
- doc: fix compiler warning in libcurl.m4
+
Daniel Stenberg (11 Apr 2023)

-
  Current test for curl_free() may produce warnings with strict compiler
-
  flags or even with default compiler flags with upcoming versions.
-
  These warning could turned into errors by -Werror or similar flags.
-
  Such warnings/errors are avoided by this patch.
+
- multi: remove a few superfluous assigns

-
  Closes #10710
+
  PVS found these "The 'rc' variable was assigned the same value." cases.

-
Viktor Szakats (8 Mar 2023)
+
  Ref: #10929
+
  Closes #10932

-
- misc: fix typos
+
- schannel: add clarifying comment

-
  Closes #10706
+
  Explaining how the PVS warning in #10929 is wrong: Dereferencing of the
+
  null pointer 'backend->cred' might take place.

-
Stefan Eissing (7 Mar 2023)
+
  Closes #10931

-
- ftp: active mode with SSL, add the damn filter
+
- cookie: clarify that init with data set to NULL reads no file

-
  - since 7.87.0 we lost adding the SSL filter for an active
-
    FTP connection that uses SSL. This leads to hangers and timeouts
-
    as reported in #10666.
+
  ... and make Curl_cookie_add() require 'data' being set proper with an
+
  assert.

-
  Reported-by: SandakovMM on github
-
  Fixes #10666
-
  Closes #10669
+
  The function has not worked with a NULL data for quite some time so this
+
  just corrects the code and comment.

-
Daniel Stenberg (7 Mar 2023)
+
  This is a different take than the proposed fixed in #10927

-
- docs: extend the URL API descriptions
+
  Reported-by: Kvarec Lezki
+
  Ref: #10929
+
  Closes #10930

-
  Closes #10701
+
Kvarec Lezki (11 Apr 2023)

-
Stefan Eissing (7 Mar 2023)
+
- vtls: remove int typecast for sizeof()

-
- url: fix logic in connection reuse to deny reuse on "unclean" connections
+
  V220 Suspicious sequence of types castings: memsize -> 32-bit integer ->
+
  memsize. The value being cast: 'sizeof
+
  (buf->data)'. curl\lib\vtls\vtls.c 2025

-
  - add parameter to `conn_is_alive()` cfilter method that returns
-
    if there is input data waiting on the connection
-
  - refrain from re-using connnection from the cache that have
-
    input pending
-
  - adapt http/2 and http/3 alive checks to digest pending input
-
    to check the connection state
-
  - remove check_cxn method from openssl as that was just doing
-
    what the socket filter now does.
-
  - add tests for connection reuse with special server configs
+
  https://pvs-studio.com/en/docs/warnings/v220/

-
  Closes #10690
+
  Closes #10928

-
Daniel Stenberg (6 Mar 2023)
+
Stefan Eissing (11 Apr 2023)

-
- x509asn1: use plain %x, not %lx, when the arg is an int
+
- http2: fix copynpaste error reported by coverity

-
  Pointed out by Coverity.
+
  - move all code handling HTTP/2 frames for a particular
+
    stream into a separate function to keep from confusing
+
    the call `data` with the stream `data`.

-
  Closes #10689
+
  Closes #10924

-
Stefan Eissing (6 Mar 2023)
+
Dan Fandrich (11 Apr 2023)

-
- http2: fix handling of RST and GOAWAY to recognize partial transfers
+
- tests: log a too-long Unix socket path in sws and socksd

-
  - a reset transfer (HTTP/2 RST) did not always lead to the proper
-
    error message on receiving its response, leading to wrong reports
-
    of a successful transfer
-
  - test_05_02 was able to trigger this condition with increased transfer
-
    count. The simulated response errors did not carry a 'Content-Length'
-
    so only proper RST handling could detect the abort
-
  - When doing such transfers in parallel, a connection could enter the
-
    state where
-
    a) it had been closed (GOAWAY received)
-
    b) the RST had not been "seen" for the transfer yet
-
    or c) the GOAWAY announced an error and the last successful
-
    stream id was not checked against ongoing transfers
+
  Ref: #10919

-
  Closes #10693
+
Daniel Stenberg (11 Apr 2023)

-
- tests: use dynamic ports numbers in pytest suite
+
- gen.pl: error on duplicated See-Also fields

-
  - necessary ports are bound at start of test suite and then
-
    given to server fixtures for use.
-
  - this make parallel use of pytest (in separate directories),
-
    practically safe for use as OS tend to not reuse such port numbers
-
    for a while
+
  Updated http2.d accordingly.

-
  Closes #10692
+
  Closes #10925

-
- connect: fix time_connect and time_appconnect timer statistics
+
- http2: avoid possible null pointer dereference

-
  - time_connect was not updated when the overall connection failed,
-
    e.g. when SSL verification was unsuccessful, refs #10670
-
  - rework gather those values to interrogate involved filters,
-
    also from all eyeballing attempts, to report the maximum of
-
    those values.
-
  - added 3 test cases in test_06 to check reported values on
-
    successful, partially failed and totally failed connections.
+
  Reported-by: Dan Fandrich
+
  Fixes #10920
+
  Closes #10923

-
  Reported-by: Master Inspire
-
  Fixes #10670
-
  Closes #10671
+
- lib1560: verify that more bad host names are rejected

-
Daniel Stenberg (6 Mar 2023)
+
  when setting the hostname component of a URL

-
- test1905: update output cookie order
+
  Closes #10922

-
  After the #10685 update
+
- curl_url_set.3: mention that users can set content rather freely

-
- test420: verify expiring cookies
+
  ... which then might render bad URLs if you extract a URL later.

-
  Cookies that are loaded fine from a jar but then are expired in headers.
+
  Closes #10921

-
- cookie: don't load cookies again when flushing
+
Dan Fandrich (10 Apr 2023)

-
  Reported-by: Sergio Mijatovic
-
  Fixes #10677
-
  Closes #10685
+
- CI: retry failed downloads of aws-lc

-
- RELEASE-NOTES: synced
+
  Don't fail the build in case of a temporary server problem.

-
Andy Alt (6 Mar 2023)
+
- test1169: fix so it works properly everywhere

-
- docs: note '--data-urlencode' option
+
  - Use an absolute path for the -L option since the module isn't in the
+
    perl path
+
  - Create the needed test file in a <file> section; <precheck> isn't
+
    intended for this
+
  - Fix the test number in the file name, which was wrong

-
  Closes #10687
+
  Follow-up to f754990a

-
Daniel Stenberg (6 Mar 2023)
+
  Ref: #10818
+
  Fixes #10889
+
  Closes #10917

-
- DEPRECATE: the original legacy mingw version 1
+
- tests: stop using strndup(), which isn't portable

-
  Remove completely in September 2023
+
  It's not available on Solaris 10, for example. Since this is just test
+
  code that doesn't need to use an optimized system version, replace it
+
  with the implementation copied from tool_cb_hdr.c.

-
  Closes #10667
+
- runtests: fix an incorrect comment about the ld_preload feature

-
Harry Sintonen (6 Mar 2023)
+
  Follow-up to 1f631864

-
- rand: use arc4random as fallback when available
+
  Ref: #10818

-
  Normally curl uses cryptographically strong random provided by the
-
  selected SSL backend. If compiled without SSL support, a naive built-in
-
  function was used instead.
+
Daniel Stenberg (9 Apr 2023)

-
  Generally this was okay, but it will result in some downsides for non-
-
  SSL builds, such as predictable temporary file names.
+
- urlapi: prevent setting invalid schemes with *url_set()

-
  This change ensures that arc4random will be used instead, if available.
+
  A typical mistake would be to try to set "https://" - including the
+
  separator - this is now rejected as that would then lead to
+
  url_get(... URL...) would get an invalid URL extracted.

-
  Closes #10672
+
  Extended test 1560 to verify.

-
Grisha Levit (6 Mar 2023)
+
  Closes #10911

-
- tool: dump headers even if file is write-only
+
Biswapriyo Nath (9 Apr 2023)

-
  The fixes in #10079 brought a (seemingly unrelated) change of open mode
-
  from `wb`/`ab` to `wb+`/`ab+` for the headerfile. This makes it no
-
  longer possible to write the header file to e.g. a pipe, like:
+
- http2: remove unused Curl_http2_strerror function declaration

-
      curl -D >(grep ...) file:///dev/null
+
  Curl_http2_strerror was renamed to http2_strerror in
+
  05b100aee247bb9bec8e9a1b0 and then http2_strerror was removed in
+
  5808a0d0f5ea0399d4a2a2

-
  Which presently results in `Warning: Failed to open /dev/fd/63`
+
  This also fixes the following compiler error

-
  See #10079
-
  Closes #10675
+
  lib/http2.h:41:33: error: unknown type name 'uint32_t'
+
  lib/http2.h:1:1: note: 'uint32_t' is defined in header '<stdint.h>'

-
Jay Satiro (6 Mar 2023)
+
  Closes #10912

-
- tests: fix gnutls-serv check
+
Daniel Stenberg (8 Apr 2023)

-
  - If gnutls-serv doesn't exist then don't try to execute it.
+
- RELEASE-NOTES: synced

-
  Follow-up to 2fdc1d81.
+
SuperIlu on github (8 Apr 2023)

-
  Closes https://github.com/curl/curl/pull/10688
+
- config-dos.h: fix SIZEOF_CURL_OFF_T for MS-DOS/DJGPP

-
Daniel Stenberg (6 Mar 2023)
+
  Fixes #10905
+
  Closes #10910

-
- lib1560: fix enumerated type mixed with another type
+
Daniel Stenberg (8 Apr 2023)

-
  Follow-up to c84c0f9aa3bb006
+
- lib: remove CURLX_NO_MEMORY_CALLBACKS

-
  Closes #10684
+
  The only user of this define was 'chkdecimalpoint' - a special purpose
+
  test tool that was built but not used anymore (since 17c18fbc3 - Apr
+
  2020).

-
Viktor Szakats (5 Mar 2023)
+
  Closes #10908

-
- cmake: fix enabling LDAPS on Windows
+
- CURLPROXY_HTTPS2: for HTTPS proxy that may speak HTTP/2

-
  Before this patch, enabling LDAPS required a manual C flag:
-
  https://github.com/curl/curl-for-win/blob/c1cfc31cfc04f24f7a4f946564d6f0e1b4d
-
  7dd36/curl-cmake.sh#L105
+
  Setting this proxy type allows curl to negotiate and use HTTP/2 with
+
  HTTPS proxies.

-
  Fix this and enable LDAPS automatically when using `wldap32` (and
-
  when not explicitly disabled). This matches autotools and `Makefile.mk`
-
  behavior. Also remove issue from KNOWN_BUGS.
+
  Closes #10900

-
  Add workaround for MSVS 2010 warning triggered by LDAPS now enabled
-
  in more CI tests:
-
  `ldap.c(360): warning C4306: 'type cast' : conversion from 'int' to 'void *' 
-
  of greater size`
-
  Ref: https://ci.appveyor.com/project/curlorg/curl/builds/46408284/job/v8mwl9y
-
  fbmoeqwlr#L312
+
Ali Khodkar (8 Apr 2023)

-
  Reported-by: JackBoosY on github
-
  Reviewed-by: Jay Satiro
-
  Reviewed-by: Marcel Raad
-
  Fixes #6284
-
  Closes #10674
+
- write-out.d: add missing periods

-
- Makefile.mk: delete redundant `HAVE_LDAP_SSL` macro [ci skip]
+
  Closes #10897

-
  Since abebb2b8939c6b3e0f951eb2d9ec3729b569aa2c, we set this macro for
-
  all Windows `wldap32` builds using `Makefile.mk`.
+
Daniel Stenberg (7 Apr 2023)

-
  For OpenLDAP builds this macro is not enough to enable LDAPS, and
-
  OpenLDAP is not an option in `Makefile.mk`. For Novell LDAP it might
-
  have helped, but it's also not an option anymore in `Makefile.mk`.
+
- http2: remove check for !data after it was already dereferenced

-
  The future for LDAPS is that we should enable it by default without
-
  extra build knobs.
+
  Pointed out by Coverity

-
  Reviewed-by: Marcel Raad
-
  Closes #10681
+
  Closes #10906

-
- cmake: skip CA-path/bundle auto-detection in cross-builds
+
- http_proxy: provide missing arg to infof() call

-
  Also remove issue from KNOWN_BUGS.
+
  Pointed out by Coverity

-
  Reported-by: Cristian Morales Vega
-
  Reviewed-by: Marcel Raad
-
  Fixes #6178
-
  Closes #10676
+
  Closes #10904

-
Daniel Stenberg (3 Mar 2023)
+
- content_encoding: only do tranfer-encoding compression if asked to

-
- schannel: loop over the algos to pick the selected one
+
  To reduce surprises. Update test 387 and 418 accordingly.

-
  Avoid using the funny macro and the extra buffer copy.
+
  Closes #10899

-
  Closes #10647
+
- sws: comparison of unsigned expression < 0 is always false

-
- wildcard: remove files and move functions into ftplistparser.c
+
  Follow-up to 356dd0b73a75ed6d5

-
- ftp: allocate the wildcard struct on demand
+
  Closes #10903

-
  The feature is rarely used so this frees up data for the vast majority
-
  of easy handles that don't use it.
+
- lib/cmake: add HAVE_WRITABLE_ARGV check

-
  Rename "protdata" to "ftpwc" since it is always an FTP wildcard struct
-
  pointer. Made the state struct field an unsigned char to save space.
+
  Assisted-by: Jakub Zakrzewski
+
  Closes #10896

-
  Closes #10639
+
- configure: don't set HAVE_WRITABLE_ARGV on Windows

-
- lib1560: test parsing URLs with ridiculously large fields
+
  Ref: #10888
+
  Closes #10896

-
  In the order of 120K.
+
- vtls: fix build error when proxy-disabled

-
  Closes #10665
+
  Closes #10901

-
Brad Spencer (3 Mar 2023)
+
Stefan Eissing (6 Apr 2023)

-
- urlapi: parse IPv6 literals without ENABLE_IPV6
+
- tests: increase sws timeout for more robust testing

-
  This makes the URL parser API stable and working the same way
-
  independently of libcurl supporting IPv6 transfers or not.
+
  - for https CONNECT forwarding, this was fixed at 5 seconds
+
    which led to spurious CI test failures
+
  - add --keepalive parameter to sws to control this
+
  - let httpserver use 30 seconds

-
  Closes #10660
+
  Closes #10898

-
Jan Engelhardt (3 Mar 2023)
+
- http2: move HTTP/2 stream vars into local context

-
- build: drop the use of XC_AMEND_DISTCLEAN
+
  - remove NGHTTP2 members of `struct HTTP`
+
  - add `void *h2_ctx` to `struct HTTP`
+
  - add `void *h3_ctx` to `struct HTTP`
+
  - separate h2/h3 pointers are needed for eyeballing
+
  - manage local stream_ctx in http implementations

-
  Because automake used to delete depdirs at once (.deps) and there was an issu
-
  e
-
  with portability, curl's XC_AMEND_DISTCLEAN greps the Makefiles in an attempt
-
  to build a list of all depfiles and delete them individually instead.
+
  Closes #10877

-
  Since commit 08849db866b44510f6b8fd49e313c91a43a3dfd3, automake switched from
-
  deleting directories to individual files. curl's custom logic now finds a lot
-
  more results with the grep (the filtering of these results isn't great), whic
-
  h
-
  causes a massive bloating of the Makefile in the order of O(n^2).
+
- proxy: http2 proxy tunnel implementation

-
  Also remove now-unused XC_AMEND_DISTCLEAN macro group
+
  - currently only on debug build and when env variable
+
    CURL_PROXY_TUNNEL_H2 is present.
+
  - will ALPN negotiate with the proxy server and switch
+
    tunnel filter based on the protocol negotiated.
+
  - http/1.1 tunnel code moved into cf-h1-proxy.[ch]
+
  - http/2 tunnel code implemented in cf-h2-proxy.[ch]
+
  - tunnel start and ALPN set remains in http_proxy.c
+
  - moving all haproxy related code into cf-haproxy.[ch]

-
  References: https://github.com/curl/curl/issues/9843
-
  References: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=59288
+
  VTLS changes
+
  - SSL filters rely solely on the "alpn" specification they
+
    are created with and no longer check conn->bits.tls_enable_alpn.
+
  - checks on which ALPN specification to use (or none at all) are
+
    done in vtls.c when creating the filter.

-
  Reported-by: Ilmari Lauhakangas
-
  Fixes #9843
-
  Closes #10661
+
  Testing
+
  - added a nghttpx forward proxy to the pytest setup that
+
    speaks HTTP/2 and forwards all requests to the Apache httpd
+
    forward proxy server.
+
  - extending test coverage in test_10 cases
+
  - adding proxy tests for direct/tunnel h1/h2 use of basic auth.
+
  - adding test for http/1.1 and h2 proxy tunneling to pytest

-
Balakrishnan Balasubramanian (3 Mar 2023)
+
  Closes #10780

-
- test1470: test socks proxy using unix sockets and connect to https
+
- vtls and h2 improvements

-
  Similar to test1468 except using https instead of http
+
  - eliminate receive loop in vtls to fill buffer. This may
+
    lead to partial reads of data which is counter productive
+
  - let http2 instead loop smarter to process pending network
+
    data without transfer switches

-
  Closes #10662
+
  scorecard improvements
+
  - do not start caddy when only httpd is requested
+
  - allow curl -v to stderr file on --curl-verbose

-
Daniel Stenberg (3 Mar 2023)
+
  Closes #10891

-
- test1960: verify CURL_SOCKOPT_ALREADY_CONNECTED
+
Daniel Stenberg (6 Apr 2023)

-
  When returned from the CURLOPT_SOCKOPTFUNCTION, like when we have a
-
  custom socket connected in the app, passed in to libcurl.
+
- tests: 1078 1288 1297 use valid IPv4 addresses

-
  Verifies the fix in #10648
+
  With the enhanced URL parser, these tests failed because of their bad
+
  IPv4 use.

-
  Closes #10651
+
- urlapi: detect and error on illegal IPv4 addresses

-
Stefan Eissing (2 Mar 2023)
+
  Using bad numbers in an IPv4 numerical address now returns
+
  CURLUE_BAD_HOSTNAME.

-
- tests: rename tests/tests-httpd to tests/http
+
  I noticed while working on trurl and it was originally reported here:
+
  https://github.com/curl/trurl/issues/78

-
   - httpd is only one server we test with
-
   - the suite coveres the HTTP protocol in general where
-
     the default test cases need a more beefy environment
+
  Updated test 1560 accordingly.

-
  Closes #10654
+
  Closes #10894

-
- socket: detect "dead" connections better, e.g. not fit for reuse
+
- RELEASE-NOTES: synced

-
  - refs #10646 where reuse was attempted on closed connections in the
-
    cache, leading to an exhaustion of retries on a transfer
-
  - the mistake was that poll events like POLLHUP, POLLERR, etc
-
    were regarded as "not dead".
-
  - change cf-socket filter check to regard such events as inidication
-
    of corpsiness.
-
  - vtls filter checks: fixed interpretation of backend check result
-
    when inconclusive to interrogate status further down the filter
-
    chain.
+
- urlapi: URL encoding for the URL missed the fragment

-
  Reported-by: SendSonS on github
-
  Fixes #10646
-
  Closes #10652
+
  Meaning that it would wrongly still store the fragment using spaces
+
  instead of %20 if allowing space while also asking for URL encoding.

-
- lib: give source files cf-http.* better fitting names
+
  Discovered when playing with trurl.

-
  Closes #10656
+
  Added test to lib1560 to verify the fix.

-
- http2: fix code indent
+
  Closes #10887

-
  Closes https://github.com/curl/curl/pull/10655
+
- rtsp: convert mallocs to dynbuf for RTP buffering

-
Shankar Jadhavar (1 Mar 2023)
+
  Closes #10786

-
- cf-socket: if socket is already connected, return CURLE_OK
+
- tool_writeout: add URL component variables

-
  In 7.87.0, if callback method for CURLOPT_SOCKOPTFUNCTION returns
-
  CURL_SOCKOPT_ALREADY_CONNECTED then curl library used to return
-
  CURLE_OK.  n 7.88.0, now even if callback returns
-
  CURL_SOCKOPT_ALREADY_CONNECTED, curl library still tries to connect to
-
  socket by invoking method do_connect().
+
  Output specific components from the used URL. The following variables
+
  are added for this purpose:

-
  This is regression caused by commit
-
  https://github.com/curl/curl/commit/71b7e0161032927cdfb
+
    url.scheme, url.user, url.password, url.options, url.host, url.port,
+
    url.path, url.query, url.fragment, url.zoneid

-
  Fix: Check if we are already connected and return CURLE_OK.
+
  Add the following for outputting parts of the "effective URL":

-
  Fixes #10626
-
  Closes #10648
+
   urle.scheme, urle.user, urle.password, urle.options, urle.host, urle.port,
+
   urle.path, urle.query, urle.fragment, urle.zoneid

-
Jay Satiro (1 Mar 2023)
+
  Added test 423 and 424 to verify.

-
- DYNBUF.md: note Curl_dyn_add* calls Curl_dyn_free on failure
+
  Closes #10853

-
  This is the existing behavior and it has been widely assumed in the
-
  codebase.
+
Stefan Eissing (4 Apr 2023)

-
  Closes https://github.com/curl/curl/pull/10645
+
- tests/http: improved httpd detection

-
Stefan Eissing (1 Mar 2023)
+
  - better error messages when not found/complete
+
  - handling of `--without-test-httpd`

-
- http2: fix upload busy loop
+
  Reported-by: kwind on github
+
  Fixes #10879
+
  Closes #10883

-
  - Set KEEP_SEND_PAUSE when exhausting remote HTTP/2 window size of a
-
    stream.
+
Daniel Stenberg (4 Apr 2023)

-
  - Clear KEEP_SEND_PAUSE when receiving HTTP/2 window updates on a paused
-
    stream.
+
- configure: make quiche require quiche_conn_send_ack_eliciting

-
  - Also fix http2 send compiler warnings reported in #10449.
+
  curl now requires quiche version >= 1.17.1 to be used and this function
+
  was added in this version and makes a convenient check.

-
  Prior to this change, starting in 71b7e016 which precedes 7.88.0,
-
  libcurl may eat CPU during HTTP/2 upload.
+
  This requirement is because this is the lowest quiche version that
+
  supports peer-initiated key updates correctly.

-
  Reported-by: Jay Satiro
+
  Closes #10886

-
  Fixes https://github.com/curl/curl/issues/10449
-
  Fixes https://github.com/curl/curl/issues/10618
-
  Closes https://github.com/curl/curl/pull/10627
+
Dan Fandrich (1 Apr 2023)

-
Daniel Stenberg (1 Mar 2023)
+
- unit tests: use the unit test infrastructure better

-
- sectransp: make read_cert() use a dynbuf when loading
+
  Allow UNITTEST_STOP to return the error code, use the fail & abort
+
  macros to indicate test failure and return success instead of fail if
+
  the unit test can't test anything because of missing features at
+
  compile-time.  A couple of tests could never fail because they were
+
  overriding the failure return code.

-
  Closes #10632
+
- runtests: strip EOL on precheck output on Windows, too

-
Jay Satiro (1 Mar 2023)
+
  Precheck failures would show on two lines in the test summary output
+
  otherwise.

-
- transfer: limit Windows SO_SNDBUF updates to once a second
+
- tests: move server config files under the pid dir

-
  - Change readwrite_upload() to call win_update_buffer_size() no more
-
    than once a second to update SO_SNDBUF (send buffer limit).
+
  These files are generated by the test servers and must therefore be
+
  found in the log directory to make them available to only those servers
+
  once multiple test runners are executing in parallel. They must also not
+
  be deleted with the log files, so they are stored in the pidfile
+
  directory.

-
  Prior to this change during an upload readwrite_upload() could call
-
  win_update_buffer_size() anywhere from hundreds of times per second to
-
  an extreme test case of 100k per second (which is likely due to a bug,
-
  see #10618). In the latter case WPA profiler showed
-
  win_update_buffer_size was the highest capture count in
-
  readwrite_upload. In any case the calls were excessive and unnecessary.
+
  Ref: #10818
+
  Closes #10875

-
  Ref: https://github.com/curl/curl/pull/2762
+
- runtests: use the ssh key filenames from the sshhelp package

-
  Closes https://github.com/curl/curl/pull/10611
+
- tests: move pidfiles and portfiles under the log directory

-
Daniel Stenberg (28 Feb 2023)
+
  This is to segregate all files written by a test process into a single
+
  root to allow for future parallel testing.

-
- RELEASE-NOTES: synced
+
  Ref: #10818
+
  Closes #10874

-
Stefan Eissing (28 Feb 2023)
+
- runtests: minor code cleanups

-
- http2: fix for http2-prior-knowledge when reusing connections
+
- runtests: call processexists() and pidfromfile()

-
  - refs #10634 where errors in the HTTP/2 framing layer are observed.
-
  - the bug was that on connection reuse, the code attempted to switch
-
    in yet another layer of HTTP/2 handling instead of detecting that
-
    this was already in place.
-
  - added pytest testcase reproducing the issue.
+
  rather than duplicating the logic in several places.

-
  Reported-by: rwmjones on github
-
  Fixes #10634
-
  Closes #10643
+
Viktor Szakats (31 Mar 2023)

-
- cf-socket: fix handling of remote addr for accepted tcp sockets
+
- cmake: do not add zlib headers for openssl

-
  - do not try to determine the remote address of a listen socket. There
-
    is none.
-
  - Update remote address of an accepted socket by getpeername() if
-
    available.
+
  Logic copied earlier from wolfSSL. wolfSSL requires zlib headers for its
+
  public headers. OpenSSL does not, so stop adding zlib headers for it.

-
  Reported-by: Harry Sintonen
-
  Fixes #10622
-
  Closes #10642
+
  Follow-up to 1e3319a167d2f32d295603167486e9e88af9bb4e

-
- http: fix unix domain socket use in https connects
+
  Closes #10878

-
  - when h2/h3 eyeballing was involved, unix domain socket
-
    configurations were not honoured
-
  - configuring --unix-socket will disable HTTP/3 as candidate for eyeballing
-
  - combinatino of --unix-socket and --http3-only will fail during initialisati
-
  on
-
  - adding pytest test_11 to reproduce
+
Stefan Eissing (31 Mar 2023)

-
  Reported-by: Jelle van der Waa
-
  Fixes #10633
-
  Closes #10641
+
- rustls: fix error in recv handling

-
Daniel Stenberg (28 Feb 2023)
+
  - when rustls is told to recieve more TLS data and its internal
+
    plaintext buffers are full, it returns an IOERROR
+
  - avoid receiving TLS data while plaintext is not read empty

-
- setopt: move the CURLOPT_CHUNK_DATA pointer to the set struct
+
  pytest:
+
  - increase curl run timeout when invoking pytest with higher verbosity

-
  To make duphandle work etc
+
  Closes #10876

-
  Closes #10635
+
- http3: improvements across backends

-
Viktor Szakats (28 Feb 2023)
+
  - ngtcp2: using bufq for recv stream data
+
  - internal stream_ctx instead of `struct HTTP` members
+
    for quiche, ngtcp2 and msh3
+
  - no more QUIC related members in `struct HTTP`
+
  - experimental use of recvmmsg(), disabled by default
+
    - testing on my old debian box shows no throughput improvements.
+
    - leaving it in, but disabled, for future revisit
+
  - vquic: common UDP receive code for ngtcp2 and quiche
+
  - vquic: common UDP send code for ngtcp2 and quiche
+
  - added pytest skips for known msh3 failures
+
  - fix unit2601 to survive torture testing
+
  - quiche: using latest `master` from quiche and enabling large download
+
    tests, now that key change is supported
+
  - fixing test_07_21 where retry handling of starting a stream
+
    was faulty
+
  - msh3: use bufq for recv buffering headers and data
+
  - msh3: replace fprintf debug logging with LOG_CF where possible
+
  - msh3: force QUIC expire timers on recv/send to have more than
+
    1 request per second served

-
- quic/schannel: fix compiler warnings
+
  Closes #10772

-
  Fixes #10603
-
  Closes #10616
+
Dan Fandrich (30 Mar 2023)

-
Daniel Stenberg (28 Feb 2023)
+
- test1471/2: add http as a required feature

-
- page-footer: add explanation for three missing exit codes
+
  curl bails out early with a different error message if http support is
+
  compiled out.

-
  Added in 7.73.0, 7.77.0 and 7.84.0
+
  Ref: #10705

-
  Closes #10630
+
- tests: limit return code of unit tests and lib tests

-
積丹尼 Dan Jacobson (28 Feb 2023)
+
  Values greater than 125 have special meanings, so cap it there.  Unit
+
  tests and lib tests use the number of failures as the return code, so a
+
  large number of failures (such as test 2601 as a torture test) can
+
  exceed this causing the test to be erroneously reported as having
+
  failed.

-
- rate.c: single URLs make no sense in --rate example
+
  Ref: #10720

-
  Here somehow you need to put more than one URL in these examples, else
-
  they will make no sense, as --rate only affects the second and beyond
-
  URLs. The first URL will always finish the same time no matter what
-
  --rate is given.
+
- test1960: point to the correct path for the precheck tool

-
  Closes #10638
+
  Otherwise, it might find the binary in .libs which can cause it to use
+
  the system libcurl which can fail. This error is only visible by
+
  noticing that the test is skipped.

-
Daniel Stenberg (28 Feb 2023)
+
  Follow-up to e4dfe6fc

-
- libcurl-errors.3: add the CURLHcode errors from curl_easy_header.3
+
  Ref: #10651

-
  Closes #10629
+
- tests: use the proper %LOGDIR path on two tests

-
- mqtt: on send error, return error
+
  Follow-up to e7a021e1

-
  Reported-by: Maciej Domanski
+
  Ref: #10818

-
  Closes #10623
+
Daniel Stenberg (30 Mar 2023)

-
- ws: keep the socket non-blocking
+
- rtsp: fix Value stored to 'skip_size' is never read

-
  Reported-by: marski on github
-
  Fixes #10615
-
  Closes #10625
+
  Pointed out by scan-build

-
- hostip: avoid sscanf and extra buffer copies
+
  Follow-up to 6c6306f3008f2c9b20a64

-
  Also made create_hostcache_id() return the id length.
+
  Closes #10872

-
  Closes #10601
+
Stefan Eissing (30 Mar 2023)

-
- PARALLEL-TRANSFERS.md: not "early days" for this anymore
+
- tests/http: relax connection check in test_07_02

-
  Refresh the language as the support is now over three years old
+
  Only 1 connection will be used when curl is slow, happens when
+
  address-sanitized in CI, for example

-
  Closes #10624
+
  Closes #10865

-
- easy: remove infof() debug leftover from curl_easy_recv
+
- http2: flow control and buffer improvements

-
  It said "reached [path]/easy.c:1231"
+
  - use bufq for send/receive of network data
+
  - usd bufq for send/receive of stream data
+
  - use HTTP/2 flow control with no-auto updates to control the
+
    amount of data we are buffering for a stream
+
    HTTP/2 stream window set to 128K after local tests, defined
+
    code constant for now
+
  - elminiating PAUSEing nghttp2 processing when receiving data
+
    since a stream can now take in all DATA nghttp2 forwards

-
  Closes #10628
+
  Improved scorecard and adjuste http2 stream window sizes
+
  - scorecard improved output formatting and options default
+
  - scorecard now also benchmarks small requests / second

-
- idn: return error if the conversion ends up with a blank host
+
  Closes #10771

-
  Some IDN sequences are converted into "" (nothing), which can make this
-
  function end up with a zero length host name and we cannot consider that
-
  a valid host to continue with.
+
Dan Fandrich (30 Mar 2023)

-
  Reported-by: Maciej Domanski
-
  Closes #10617
+
- runtests: show error message if file can't be written

-
- examples/http3.c: use CURL_HTTP_VERSION_3
+
- tests: fix remaining servers to run with a dynamic log directory

-
  and update the comment
+
  This final commit in the series is sufficient to allow the tests succeed
+
  if $LOGDIR is changed in runtests.pl.

-
  Closes #10619
+
  Ref: #10818
+
  Closes #10866

-
- x509asn1.c: use correct format specifier for infof() call
+
- tests: fix fake_ntlm to run with a dynamic log directory

-
  Detected by Coverity
-

-
  Closes #10614
+
  Ref: #10818

-
- Revert "GHA: add Microsoft C++ Code Analysis"
+
- tests: fix http servers to run with a dynamic log directory

-
  This reverts commit e0db842b2a082dffad4a9fbe31321e9a75c74041.
+
  Ref: #10818

-
  This tool seems very restricted in how often it might be used by a
-
  project and thus very quickly start to report fails simply because it
-
  refuses to run when "there are more runs than allowed".
+
- tests: fix ftpserver to run with a dynamic log directory

-
  Closes #10613
+
  Ref: #10818

-
Patrick Monnerat (25 Feb 2023)
+
- tests: fix C servers to run with a dynamic log directory

-
- tests: test secure mail protocols with explicit SSL requests
+
  Ref: #10818

-
  New tests 987, 988 and 989, disabled for rustls (hanging).
+
- tests: fix lib tests to run with a dynamic log directory

-
  Closes #10077
+
  Ref: #10818

-
- tests: support for imaps/pop3s/smtps protocols
+
- tests: fix unit tests to run with a dynamic log directory

-
  Closes #10077
+
  Ref: #10818

-
- runtests: use a hash table for server port numbers
+
- tests: use %LOGDIR to refer to the log directory

-
  Closes #10077
+
  This will allow it be set dynamically.

-
Andy Alt (25 Feb 2023)
+
  Ref: #10818

-
- INTERNALS.md: grammar
+
- runtests: track verification time even if no files to compare

-
  Closes #10607
+
- getpart: better handle case of file not found

-
Daniel Stenberg (25 Feb 2023)
+
- testcurl: bump version date

-
- RELEASE-NOTES: synced
+
  It hadn't been updated in 9 years; it's time.

-
Philip Heiduck (25 Feb 2023)
+
- tests: switch to 3-argument open in test suite

-
- .cirrus.yml: Bump to FreeBSD 13.2
+
  The perl 2-argument open has been considered not-quite-deprecated since
+
  the 3-argument form was introduced almost a quarter century ago.

-
  Closes #10270
+
- tests: silence some Perl::Critic warnings in test suite

-
- ngtcp2-gnutls.yml: bump to gnutls 3.8.0
+
  Not all warnings are fixed; many are as much stylistic suggestions than
+
  anything and IMHO don't do much to actually improve the code.

-
  Closes #10507
+
  Ref: #10818
+
  Closes #10861

-
- CI: update ngtcp2 and nghttp2 for pytest
+
- docs: bump the minimum perl version to 5.6

-
  Follow-up: https://github.com/curl/curl/commit/5c9ee8cef4b351a085b440f8178500
-
  124647f8e6
+
  It's actually been this way since at least 2012 (when a 3-argument open
+
  was added to runtests.pl). Given the lack of complaints in the interim,
+
  it's safe to call this 23 year old perl version the minimum.

-
  Closes #10508
+
- runtests: memoize the getpart* subroutines to speed up access

-
Andy Alt (25 Feb 2023)
+
  The refactored code calls these functions with the same arguments more
+
  often, so this prevents redundant test case file parsing.

-
- GHA: use same flags for Slackbuild as Slack package
+
  Approved-by: Daniel Stenberg
+
  Ref: #10818
+
  Closes #10833

-
  Closes #10526
+
- runtests: remove duplicated feature variables

-
Daniel Stenberg (24 Feb 2023)
+
  Use the feature map stored in the hash table instead. Most of the
+
  variables were only used only once, to set the value in the hash table.

-
- rtsp: avoid sscanf for parsing
+
  Ref: #10818

-
  Closes #10605
+
- runtests: also ignore test file problems when ignoring results

-
- http_proxy: parse the status line without sscanf
+
  This simplifies error handling in the test verification code and makes
+
  it more consistent.

-
  Closes #10602
+
  Ref: #10818

-
- telnet: error correctly for WS set to "x[num]"
+
- runtests: more refactoring for clarity

-
  Follow-up to e4f93be9d587
-
  Reported-by: Harry Sintonen
-
  Closes #10606
+
  Ref: #10818

-
- krb5: avoid sscanf for parsing
+
- runtests: don't start servers if -l is given

-
  Closes #10599
+
- runtests: fix typos

-
- misc: remove support for curl_off_t < 8 bytes
+
- runtests: refactor singletest() into separate functions

-
  Closes #10597
+
  This takes it from a 1200 line behemoth into something more manageable.
+
  The content and order of the functions is taken almost directly from
+
  singletest() so the diff sans whitespace is quite short.

-
- telnet: parse NEW_ENVIRON without sscanf
+
  Ref: #10818

-
  Closes #10596
+
- runtests: refactor singletest() into distinct sections

-
- telnet: parse the WS= argument without sscanf
+
  Namely:
+
  - Verify that this test case should be run
+
  - Start the servers needed to run this test case
+
  - Check that test environment is fine to run this test case
+
  - Prepare the test environment to run this test case
+
  - Run the test command
+
  - Clean up after test command
+
  - Verify test succeeded

-
  Closes #10596
+
  Ref: #10818

-
- telnet: parse telnet options without sscanf
+
- runtests: stop copying a few arrays where not needed

-
  Closes #10596
+
  Unlike some other languages that just copy a pointer, perl copies the
+
  entire array contents which takes time for a large array.

-
- ftp: replace sscanf for MDTM 213 response parsing
+
  Ref: #10818

-
  Closes #10590
+
- runtests: reduce redundant calls to getpart/getpartattr

-
- ftp: replace sscanf for PASV parsing
+
  These functions scan through the entire test file every time to find the
+
  right section, so they can be slow for large test files.

-
  Closes #10590
+
  Ref: #10818

-
- ftp: make the EPSV response parser not use sscanf
+
- tests: document that the unittest keyword is special

-
  Closes #10590
+
  Also, add other features that were missing.

-
Stefan Eissing (24 Feb 2023)
+
Stefan Eissing (30 Mar 2023)

-
- ngtcp2: fix unwanted close of file descriptor 0
+
- docs: add documentation for bufq

-
  ... causing macOS to hand out 0 as next socket handle and failing on
-
  further operations.
+
  Closes #10869

-
  Reported-by: Sergey Fionov
-
  Fixes #10593
-
  Closes #10595
+
Daniel Stenberg (30 Mar 2023)

-
Daniel Stenberg (23 Feb 2023)
+
- RELEASE-NOTES: synced

-
- select: stop treating POLLRDBAND as an error
+
Matt Jolly (30 Mar 2023)

-
  POLLRDBAND does not seem to be an general error and on Windows the value
-
  for POLLIN is 768 and the value for POLLRDBAND is 512.
+
- hostip: refuse to resolve the .onion TLD

-
  Fixes #10501
-
  Reported-by: opensslonzos-github on github
-
  Closes #10592
+
  RFC 7686 states that:

-
- test978: mark file as text mode
+
  > Applications that do not implement the Tor
+
  > protocol SHOULD generate an error upon the use of .onion and
+
  > SHOULD NOT perform a DNS lookup.

-
  Follow-up to 4ea5702980cb
+
  Let's do that.

-
  To fix test failures on Windows
+
  https://www.rfc-editor.org/rfc/rfc7686#section-2

-
  Closes #10594
+
  Add test 1471 and 1472 to verify

-
- http: rewrite the status line parser without sscanf
+
  Fixes #543
+
  Closes #10705

-
  Closes #10585
+
Philip Heiduck (30 Mar 2023)

-
- test978: verify that --stderr works for -w's stderr as well
+
- GHA: update ngtcp2-*.yml to v0.10.0

-
Jay Satiro (23 Feb 2023)
+
  Closes #10612

-
- curl: make -w's %{stderr} use the file set with --stderr
+
Stefan Eissing (30 Mar 2023)

-
  Reported-by: u20221022 on github
-
  Fixes #10491
-
  Closes #10569
+
- tests/http: fix log formatting on wrong exit code

-
- winbuild: fix makefile clean
+
  Closes #10868

-
  - Fix and move 'clean' code that removes the output and obj directories
-
    trees from MakefileBuild.vc to Makefile.vc.
+
Daniel Stenberg (30 Mar 2023)

-
  Prior to this change the 'clean' code did not work right because the
-
  variables containing the directory names were not fully initialized and
-
  the rmdir syntax was sometimes incorrect (typos). DIRDIST for example
-
  was set to ..\builds\ and not ..\builds\$(CONFIG_NAME_LIB)\ so it would
-
  remove the former and not the latter. If WITH_PREFIX was set then that
-
  directory was removed instead.
+
- spellcheck.words: unify the AWS-LC spelling

-
  Also, DIRDIST (the output directory) even if initialized should not be
-
  removed by MakefileBuild.vc because by that time it could be set to a
-
  user directory that may contain other files if WITH_PREFIX is set (eg we
-
  don't want rmdir /s /q C:\usr\local). Therefore we remove from
-
  Makefile.vc before any of that happens. I added a comment in both
-
  makefiles explaining this.
+
  Follow-up to 34ef4fab22d93

-
  Closes https://github.com/curl/curl/pull/10576
+
  Closes #10867

-
- sectransp: fix compiler warning c89 mixed code/declaration
+
Jim King (30 Mar 2023)

-
  Since cbf57176 the Cirrus CI 'macOS arm64 SecureTransport http2' has
-
  been failing due to c89 warnings mixed code/declaration. That commit is
-
  not the cause so I assume something has changed in the CI outside of our
-
  configuration. Anyway, we don't mix code/declaration so this is the fix
-
  for that.
+
- openssl: interop with AWS-LC

-
  Closes https://github.com/curl/curl/pull/10574
+
  * Configure changes to detect AWS-LC
+
  * CMakeLists.txt changes to detect AWS-LC
+
  * Compile-time branches needed to support AWS-LC
+
  * Correctly set OSSL_VERSION and report AWS-LC release number
+
  * GitHub Actions script to build with autoconf and cmake against AWS-LC

-
Philipp Engel (22 Feb 2023)
+
  AWS-LC is a BoringSSL/OpenSSL derivative
+
  For more information see https://github.com/awslabs/aws-lc/

-
- BINDINGS: add Fortran binding
+
  Closes #10320

-
  Closes #10589
+
Viktor Szakats (30 Mar 2023)

-
Stefan Eissing (22 Feb 2023)
+
- cmake: picky-linker fixes for openssl, ZLIB, H3 and more

-
- test2600: detect when ALARM_TIMEOUT is in use and adjust
+
  - fix HTTP/3 support detection with OpenSSL/quictls built with ZLIB.
+
    (Requires curl be built with ZLIB option also.)

-
  - use higher timeout values > 1s
-
  - skip duration checks
+
  - fix HTTP/3 support detection with OpenSSL/quictls/LibreSSL and `ld`
+
    linker on Windows.

-
  Assisted-by: Marcel Raad
-
  Closes #10513
+
  - fix HTTP/3 support detection with wolfSSL to automatically add
+
    `ws2_32` to the lib list on Windows. For all linkers.

-
Daniel Stenberg (22 Feb 2023)
+
  - reposition ZLIB (and other compression) detection _after_ TLS
+
    detection, but before calling HTTP/3-support detection via
+
    `CheckQuicSupportInOpenSSL`.

-
- RELEASE-NOTES: synced
+
    May be a regression from ebef55a61df0094b9790710a42f63c48e7de3c13
+
    May fix #10832 (Reported-by: Micah Snyder)

-
- test686: verify return code for no URL after --next
+
    This also seems to fix an odd case, where OpenSSL/quictls is correctly
+
    detected, but its header path is not set while compiling, breaking
+
    build at `src/curl_ntlm_core.c`. Reason for this remains undiscovered.

-
- tool_operate: propagate error codes for missing URL after --next
+
  - satisfy "picky" linkers such as `ld` with MinGW, that are highly
+
    sensitive to lib order, by also adding brotli to the beginning of the
+
    lib list.

-
  Fixes #10558
-
  Reported-by: u20221022 on github
-
  Closes #10580
+
  - satisfy "picky" linkers by adding certain Windows systems libs to
+
    the lib list for OpenSSL/LibreSSL. (Might need additional ones for
+
    other forks, such as `pthread` for BoringSSL.)

-
- test1278: verify that an extra --no-remote-name cause no warning
+
  Note: It'd make sense to _always_ add `ws2_32`, `crypt32` (except
+
  Windows App targets perhaps?), `bcrypt` (except old-mingw!) on Windows
+
  at this point. They are almost always required, and if some aren't,
+
  they are ignored by the linker with no effect on final binaries.

-
- tool_getparam: don't add a new node for just --no-remote-name
+
  Closes #10857

-
  Unless --remote-name-all is used.
+
Stefan Eissing (30 Mar 2023)

-
  Fixes #10564
-
  Reported-by: u20221022 on github
-
  Closes #10582
+
- vlts: use full buffer size when receiving data if possible

-
- gen.pl: add '%GLOBALS' as a variable for mainpage
+
  SSL backends like OpenSSL/wolfSSL and other return the content of one
+
  TLS record on read, but usually there are more available.

-
  And use it in page-header to list all global command line options.
+
  Change the vtls cfilter recv() function to fill the given buffer until a
+
  read would block.

-
- docs/cmdline-opts: mark all global options
+
  Closes #10736

-
  gen.pl now outputs a generic explanations for them for each option
+
dengjfzh on github (30 Mar 2023)

-
  Fixes #10566
-
  Reported-by: u20221022 on github
-
  Closes #10584
+
- rtsp: skip malformed RTSP interleaved frame data

-
- GHA: add Microsoft C++ Code Analysis
+
  Some IP cameras send malformed RTSP interleaved frames sometimes, which
+
  can cause curl_easy_perform return 1 (CURLE_UNSUPPORTED_PROTOCOL).  This
+
  change attempts to skip clearly incorrect RTSP interleaving frame data.

-
  Closes #10583
+
  Closes #10808

-
- tool_progress: shut off progress meter for --silent in parallel
+
Stefan Eissing (30 Mar 2023)

-
  Reported-by: finkjsc on github
-
  Fixes #10573
-
  Closes #10579
+
- lib: add `bufq` and `dynhds`

-
- lib1560: add a test using %25 in the userinfo in a URL
+
  Adding `bufq`:
+
  - at init() time configured to hold up to `n` chunks of `m` bytes each.
+
  - various methods for reading from and writing to it.
+
  - `peek` support to get access to buffered data without copy
+
  - `pass` support to allow buffer flushing on write if it becomes full
+
  - use case: IO buffers for dynamic reads and writes that do not blow up
+
  - distinct from `dynbuf` in that:
+
    - it maintains a read position
+
    - writes on a full bufq return CURLE_AGAIN instead of nuking itself
+
  - Init options:
+
    - SOFT_LIMIT: allow writes into a full bufq
+
    - NO_SPARES: free empty chunks right away
+
  - a `bufc_pool` that can keep a number of spare chunks to
+
    be shared between different `bufq` instances

-
  Closes #10578
+
  Adding `dynhds`:
+
  - a straightforward list of name+value pairs as used for HTTP headers
+
  - headers can be appended dynamically
+
  - headers can be removed again
+
  - headers can be replaced
+
  - headers can be looked up
+
  - http/1.1 formatting into a `dynbuf`
+
  - configured at init() with limits on header counts and total string
+
    sizes
+
  - use case: pass a HTTP request or response around without being version
+
    specific
+
  - express a HTTP request without a curl easy handle (used in h2 proxy
+
    tunnels)
+
  - future extension possibilities:
+
    - conversions of `dynhds` to nghttp2/nghttp3 name+value arrays

-
Stefan Eissing (21 Feb 2023)
+
  Closes #10720

-
- CURLOPT_PIPEWAIT: allow waited reuse also for subsequent connections
+
- pytest: improvements for suitable curl and error output

-
  As tested in test_02_07, when firing off 200 urls with --parallel, 199
-
  wait for the first connection to be established. if that is multiuse,
-
  urls are added up to its capacity.
+
  - will check built curl for http and https support and
+
    skip all tests if not there
+
  - will dump stdout/stderr/trace output on errored responses

-
  The first url over capacity opens another connection. But subsequent
-
  urls found the same situation and open a connection too. They should
-
  have waited for the second connection to actually connect and make its
-
  capacity known.
+
  Closes #10829

-
  This change fixes that by
+
Daniel Stenberg (29 Mar 2023)

-
  - setting `connkeep()` early in the HTTP setup handler. as otherwise
-
    a new connection is marked as closeit by default and not considered
-
    for multiuse at all
-
  - checking the "connected" status for a candidate always and continuing
-
    to PIPEWAIT if no alternative is found.
+
- lib: use correct printf flags for sockets and timediffs

-
  pytest:
-
  - removed "skip" from test_02_07
-
  - added test_02_07b to check that http/1.1 continues to work as before
+
  Introduces CURL_FORMAT_SOCKET_T for outputting socket numbers.

-
  Closes #10456
+
  Fixes #10737
+
  Reported-by: Gisle Vanem
+
  Closes #10855

-
Daniel Stenberg (21 Feb 2023)
+
- telnet: make MSVC ignore warning for assignment within conditional

-
- test419: verify --dump-header to file that cannot be created
+
  Follow-up to d92a5007b60e0af7d

-
  Closes #10571
+
  Closes #10859

-
- tool_operate: avoid fclose(NULL) on bad header dump file
+
- ws: handle reads before EAGAIN better

-
  Fixes #10570
-
  Reported-by: Jérémy Rabasco
-
  Closes #10571
+
  Reported-by: simplerobot on github
+
  Fixes #10831
+
  Closes #10856

-
- RELEASE-NOTES: synced
+
- test1592: add flaky keyword

-
  Starting the journey towards 8.0.0
+
  Closes #10860

-
- cookie: parse without sscanf()
+
Frank Gevaerts (28 Mar 2023)

-
  Saves us from using 2*4096 bytes buffers on stack, the extra copies and
-
  more.
+
- lib/sha256.c: typo fix in comment (duplicated "is available")

-
  Closes #10550
+
  Closes #10851

-
- lib517: verify time stamps without leading zeroes plus some more
+
Arne Soete (28 Mar 2023)

-
- parsedate: replace sscanf( for time stamp parsing
+
- tests: update tests/httpd references to tests/http

-
  Closes #10547
+
  tests/httpd was renamed to tests/http in #10654. This patch updates some
+
  references in the README

-
- parsedate: parse strings without using sscanf()
+
  Closes #10854

-
  - sscanf is slow and complex, avoid it
-
  - give up already if the string is 12 bytes or longer as no valid string
-
    can be that long
-
  - this can now be done without copy
+
Kamil Dudka (28 Mar 2023)

-
  Closes #10547
+
- telnet: simplify the implementation of str_is_nonascii()

-
Matt Jolly (20 Feb 2023)
+
  There is no need to traverse the string twice.

-
- tests: HTTP server fixups
+
  Closes #10852

-
  - httpserver.pl -> http-server.pl for consistency
-
  - add http3-server.pl to EXTRA_DIST; alphabetise for maintainability
-
  - nghttpx proxy invocation scripts should not use getcwd
+
Frank Gevaerts (28 Mar 2023)

-
  Closes #10568
+
- curl_easy_getinfo.3: typo fix (duplicated "from the")

-
Version 7.88.1 (20 Feb 2023)
+
  Closes #10850

-
Daniel Stenberg (20 Feb 2023)
+
Philip Heiduck (28 Mar 2023)

-
- RELEASE-NOTES: synced
+
- wolfssl.yml: bump to version 5.6.0

-
  7.88.1 release
+
  Closes #10843

-
- THANKS: add contributors from 7.88.1
+
Daniel Stenberg (28 Mar 2023)

-
- socketpair: allow EWOULDBLOCK when reading the pair check bytes
+
- RELEASE-NOTES: synced

-
  Reported-by: Gunamoi Software
-
  Co-authored-by: Jay Satiro
-
  Fixes #10561
-
  Closes #10562
+
Ronan Pigott (28 Mar 2023)

-
Jay Satiro (18 Feb 2023)
+
- docs/cmdline-opts: document the dotless config path

-
- tool_operate: fix scanbuild compiler warning
+
  The real xdg config path is $XDG_CONFIG_HOME/curlrc, without the dot.
+
  The dotless name seems preferable, so let's match the documentation to
+
  the behavior.

-
  Prior to this change Azure CI scanbuild warned of a potential NULL
-
  pointer string passed to strtol when CURLDEBUG enabled, even though the
-
  way the code was written it wouldn't have happened.
+
  Closes #10849

-
  Bug: https://github.com/curl/curl/commit/5479d991#r101159711
-
  Reported-by: Marcel Raad
+
Daniel Stenberg (28 Mar 2023)

-
  Closes https://github.com/curl/curl/pull/10559
+
- HTTP-COOKIES.md: mention the #HttpOnly_ prefix

-
- curl_setup: Suppress OpenSSL 3 deprecation warnings
+
  Fixes #10847
+
  Reported-by: Harry Sintonen
+
  Closes #10848

-
  - Define OPENSSL_SUPPRESS_DEPRECATED.
+
- dynbuf: never allocate larger than "toobig"

-
  OpenSSL 3 has deprecated some of the functions libcurl uses such as
-
  those with DES, MD5 and ENGINE prefix. We don't have replacements for
-
  those functions so the warnings were disabled in autotools and cmake
-
  builds, but still showed in other builds.
+
  As dynbufs always have a fixed maximum size which they are not allowed
+
  to grow larger than, making sure that it never allocates a larger buffer
+
  makes sure the buffer does not allocate memory that will never be used.

-
  Closes https://github.com/curl/curl/pull/10543
+
  Closes #10845

-
- build-openssl.bat: keep OpenSSL 3 engine binaries
+
- ftplistparser: replace realloc with dynbuf

-
  Prior to this change copying the OpenSSL 3 engine binaries failed
-
  because 'engines-1_1' (OpenSSL 1.1.x folder name) was erroneously used
-
  instead of 'engines-3'. The OpenSSL 3 builds would complete successfully
-
  but without the engine binaries.
+
  Closes #10844

-
  Closes https://github.com/curl/curl/pull/10542
+
- ftplistparser: use ISDIGIT()

-
ALittleDruid (18 Feb 2023)
+
  Closes #10844

-
- cmake: fix Windows check for CryptAcquireContext
+
- ftplistparser: move out private data from public struct

-
  Check for CryptAcquireContext in windows.h and wincrypt.h only, since
-
  otherwise this check may fail due to third party headers not found.
+
  The public 'curl_fileinfo' struct contained three fields that are for
+
  internal purposes only. This change makes them unused in the public
+
  struct.

-
  Closes https://github.com/curl/curl/pull/10353
+
  The new private struct fields are also renamed to make this separation
+
  more obvious internally.

-
Daniel Stenberg (19 Feb 2023)
+
  Closes #10844

-
- remote-header-name.d: mention that filename* is not supported
+
- openssl: fix indents - white space edits only

-
  and that you can use --clobber to allow overwriting.
+
  Closes #10840

-
  Ref: #10533
-
  Closes #10555
+
- url: remove call to Curl_llist_destroy in Curl_close

-
  Co-authored-by: Jay Satiro <raysatiro@yahoo.com>
+
  A list that is created with a NULL "destructor" does not need to be
+
  destroyed. Not calling it is faster than calling it.

-
Pierrick Charron (18 Feb 2023)
+
  Closes #10846

-
- CURLOPT_WS_OPTIONS.3: fix the availability version
+
- multi: remove PENDING + MSGSENT handles from the main linked list

-
  Closes #10557
+
  As they are not driving transfers or any socket activity, the main loop
+
  does not need to iterate over these handles. A performance improvement.

-
Jacob Hoffman-Andrews (18 Feb 2023)
+
  They are instead only held in their own separate lists.

-
- GHA: update rustls dependency to 0.9.2
+
  'data->multi' is kept a pointer to the multi handle as long as the easy
+
  handle is actually part of it even when the handle is moved to the
+
  pending/msgsent lists. It needs to know which multi handle it belongs
+
  to, if for example curl_easy_cleanup() is called before the handle is
+
  removed from the multi handle.

-
  This allows re-enabling test 312 for the rustls backend.
+
  Alll 'data->multi' pointers of handles still part of the multi handle
+
  gets cleared by curl_multi_cleanup() which "orphans" all previously
+
  attached easy handles.

-
  Closes #10553
+
  This is take 2. The first version was reverted for the 8.0.1 release.

-
Philip Heiduck (18 Feb 2023)
+
  Assisted-by: Stefan Eissing
+
  Closes #10801

-
- HTTP3.md: update git branches
-

-
  Closes #10554
+
Stefan Eissing (26 Mar 2023)

-
Stefan Eissing (17 Feb 2023)
+
- tests/http: add timeout to running curl in test cases

-
- urldata: remove `now` from struct SingleRequest - not needed
+
  - we had a CI case once where `curl` seemingly did not
+
    return and it was hard to guess what happened.
+
  - make curl execution in test cases time out after 60 seconds

-
  Closes #10549
+
  Closes #10783

-
Daniel Stenberg (17 Feb 2023)
+
Daniel Stenberg (26 Mar 2023)

-
- lib1560: add IPv6 canonicalization tests
+
- RELEASE-PROCEDURE: update to new schedule

-
  Closes #10552
+
  Ref: https://curl.se/mail/lib-2023-03/0062.html

-
- RELEASE-NOTES: synced
+
  Assisted-by: Andy Alt
+
  Assisted-by: Dan Frandrich

-
- urlapi: do the port number extraction without using sscanf()
+
  Closes #10827

-
  - sscanf() is rather complex and slow, strchr() much simpler
+
Patrick Monnerat (26 Mar 2023)

-
  - the port number function does not need to fully verify the IPv6 address
-
    anyway as it is done later in the hostname_check() function and doing
-
    it twice is unnecessary.
+
- doc: curl_mime_init() strong easy handle binding has been relaxed in 7.87.0

-
  Closes #10541
+
  Reported-by: Chloe Kudryavtsev
+
  Fixes #10834
+
  Closes #10835

-
Stefan Eissing (17 Feb 2023)
+
Jay Satiro (25 Mar 2023)

-
- setopt: allow HTTP3 when HTTP2 is not defined
+
- CURLOPT_WRITEFUNCTION.3: fix typo

-
  Reported-by: Karthikdasari0423 on github
-
  Fixes #10538
-
  Closes #10544
+
  Reported-by: Osaila@users.noreply.github.com

-
Jon Rumsey (17 Feb 2023)
+
  Fixes https://github.com/curl/curl/issues/10839

-
- os400: correct Curl_os400_sendto()
+
Dan Fandrich (24 Mar 2023)

-
  Add const qualifier to 5th argument of Curl_os400_sendto()
+
- CI: skip some more builds when possible

-
  Make OS400 wrapper for sendto match the normal prototype of sendto()
-
  with a const qualifier.
+
  When a commit only contains tests, documentation, or cmake files, skip
+
  those builds that aren't affected by those.

-
  Fixes #10539
-
  Closes #10548
+
  The file filters available on the CI services don't seem to allow
+
  skipping individual jobs, only the entire workflow, so we can't get any
+
  more fine-grained than this.

-
Stefan Eissing (17 Feb 2023)
+
- CI: add and adjust labeler match patterns

-
- tests-httpd: add proxy tests
+
  Allow cmdline tool alongside other labels.

-
  for direct and tunneling checks on http: and https:
+
Kai Pastor (25 Mar 2023)

-
  Closes #10519
+
- CMake: make config version 8 compatible with 7

-
Daniel Stenberg (17 Feb 2023)
+
  Reviewed-by: Jakub Zakrzewski
+
  Closes #10819

-
- curl: make --silent work stand-alone
+
Daniel Stenberg (24 Mar 2023)

-
  - renamed the struct field to 'silent' to match the cmdline option
-
  - make --show-error toggle independently of --silent
-
  - make --silent independent of ->noprogress as well
+
- RELEASE-NOTES: synced

-
  By doing this, the three options --silent, --no-progress-meter and
-
  --show-error should work independently of each other and also work with
-
  and without '--no-' prefix as documented.
+
  Bumped version-in-progress to 8.1.0

-
  Reported-by: u20221022 on github
-
  Fixes #10535
-
  Closes #10536
+
- GHA: add a memory-sanitizer job

-
- socks: allow using DoH to resolve host names
+
  Closes #10815

-
  For SOCKS modes where a local host resolve is done.
+
Dan Fandrich (23 Mar 2023)

-
  It was previously disabled in 12d655d4561, but a few local tests seem to
-
  indicate that it works fine. Works now because of the SOCKS refactor of
-
  4a4b63daaa01ef59 that made it non-blocking.
+
- CI: fix brew retries on GHA

-
  Reported-by: roughtex on github
-
  Fixes #10537
-
  Closes #10540
+
  The fix in the previous commit was complete for Cirrus but accidentally
+
  left off a part for GHA.

-
Stefan Eissing (17 Feb 2023)
+
  Follow-up to c2b7249d

-
- test: add test for HTTP/2 corruption as reported in #10525
+
- CI: skip Azure for more commits which change only GHA

-
  - adding test_02_20 for reproducing the situation
-
  - using recently released mod_h2 Apache module
-
  - skipping test if an older version is installed
-
  - adding installation of current mod_h2 to github pytest workflow
+
Daniel Stenberg (23 Mar 2023)

-
  This reproduces the error reliable (for me) on the lib/http2.c version
-
  of curl 7.88.0. And passes with the recent curl master.
+
- cmake: set SONAME for SunOS too

-
  Closes #10534
+
  Provided-by: Brian Lund

-
Daniel Stenberg (16 Feb 2023)
+
  Closes #10816

-
- tool_operate: allow debug builds to set buffersize
+
Stefan Eissing (23 Mar 2023)

-
  Using the CURL_BUFFERSIZE environment variable.
+
- ngtcp2: adjust config and code checks for ngtcp2 without nghttp3

-
  Closes #10532
+
  - make configure show on HTTP3 feature that both ngtcp2 and nghttp3
+
    are in play
+
  - define ENABLE_QUIC only when USE_NGTCP2 and USE_NGHTTP3 are defined
+
  - add USE_NGHTTP3 in the ngtcp2 implementation

-
Stefan Eissing (16 Feb 2023)
+
  Fixes #10793
+
  Closes #10821

-
- connnect: fix timeout handling to use full duration
+
Daniel Stenberg (23 Mar 2023)

-
  - connect timeout was used at half the configured value, if the
-
    destination had 1 ip version 4 and other version 6 addresses
-
    (or the other way around)
-
  - extended test2600 to reproduce these cases
+
- data.d: emphasize no conversion

-
  Reported-by: Michael Kaufmann
-
  Fixes #10514
-
  Closes #10517
+
  When asking curl to send a POST, curl does not encode or change the data.

-
Daniel Stenberg (16 Feb 2023)
+
  Ref: #10820
+
  Closes #10823

-
- tool_getparam: make --get a true boolean
+
- server/getpart: clear the buffer before load

-
  To match how it is documented in the man page.
+
  Fixes msan warnings:

-
  Fixes #10527
-
  Reported-by: u20221022 on github
-
  Closes #10531
+
  ==54195==WARNING: MemorySanitizer: use-of-uninitialized-value
+
      #0 0x55ece35e57cb in line_length /home/runner/work/curl/curl/tests/server
+
  /getpart.c:111:25
+
      #1 0x55ece35e3b83 in readline /home/runner/work/curl/curl/tests/server/ge
+
  tpart.c:164:24
+
      #2 0x55ece35e0269 in getpart /home/runner/work/curl/curl/tests/server/get
+
  part.c:347:18
+
      #3 0x55ece36180b6 in parse_servercmd /home/runner/work/curl/curl/tests/se
+
  rver/sws.c:283:13

-
Harry Sintonen (16 Feb 2023)
+
  Closes #10822

-
- http:: include stdint.h more readily
+
- ntlm: clear lm and nt response buffers before use

-
  Closes #10516
+
  To avoid the risk of MemorySanitizer: use-of-uninitialized-value

-
Stefan Eissing (16 Feb 2023)
+
  Closes #10814

-
- tests: make the telnet server shut down a socket gracefully
+
- digest: clear target buffer

-
  - test 1452 failed occasionally with ECONNRESET errnos in curl when the
-
    server closed the connection in an unclean state.
+
  Closes #10814

-
  Closes #10509
+
Douglas R. Reno (22 Mar 2023)

-
Harry Sintonen (16 Feb 2023)
+
- cmake: bring in the network library on Haiku.

-
- http2: set drain on stream end
+
  When cross-compiling for Haiku, the networking library needs to be
+
  brought in. Without this, an unknown type of "Error" is reported in
+
  lib/curl_setup_once.h.

-
  Ensure that on_frame_recv() stream end will trigger a read if there is
-
  pending data. Without this it could happen that the pending data is
-
  never consumed.
+
  This is also needed when using CMake natively on Haiku to build libcurl.

-
  This combined with https://github.com/curl/curl/pull/10529 should fix
-
  https://github.com/curl/curl/issues/10525
+
  Fixes #10296
+
  Closes #10792

-
  Ref: https://github.com/curl/curl/issues/10525
-
  Closes #10530
+
Daniel Stenberg (22 Mar 2023)

-
Stefan Eissing (16 Feb 2023)
+
- runtests: die if curl version can be found

-
- http2: buffer/pausedata and output flush fix.
+
  Closes #10813

-
   * do not process pending input data when copying pausedata to the
-
     caller
-
   * return CURLE_AGAIN if the output buffer could not be completely
-
     written out.
+
Stefan Eissing (22 Mar 2023)

-
  Ref: #10525
-
  Closes #10529
+
- multi: add handle asserts in DEBUG builds

-
Marcel Raad (16 Feb 2023)
+
  For GOOD_EASY_HANDLE and GOOD_MULTI_HANDLE checks

-
- krb5: silence cast-align warning
+
  - allow NULL pointers to "just" return an error as before
+
  - fail hard on nun-NULL pointers that no longer show the MAGICs

-
  Add an intermediate cast to `void *`, as done everywhere else when
-
  casting from `sockaddr *` to `sockaddr_in *`.
+
  Closes #10812

-
  Closes https://github.com/curl/curl/pull/10528
+
Jon Rumsey (22 Mar 2023)

-
Daniel Stenberg (15 Feb 2023)
+
- gskit: various compile errors in OS400

-
- RELEASE-NOTES: synced
+
  Various compile failures in gskit.c;

-
  bumped to 7.88.1
+
  - pipe_ssloverssl() needs Curl_easy data parameter for
+
    Curl_conn_cf_get_socket(cf, data)
+
  - key_passwd is in ssl_config, not conn_config
+
  - close_on() has 2 parameters, not 4
+
  - getsockopt() needs to call Curl_conn_cf_get_socket(), not
+
    cxn->sock[FIRSTSOCKET]

-
- tests: make sure gnuserv-tls has SRP support before using it
+
  Fixes #10799
+
  Closes #10800

-
  Reported-by: fundawang on github
-
  Fixes #10522
-
  Closes #10524
+
Daniel Stenberg (22 Mar 2023)

-
- runtests: fix "uninitialized value $port"
+
- tool_operate: pass a long as CURLOPT_HEADEROPT argument

-
  by using a more appropriate variable
+
  Closes #10798

-
  Reported-by: fundawang on github
-
  Fixes #10518
-
  Closes #10520
+
- GHA: run all linux test jobs with valgrind

-
Version 7.88.0 (15 Feb 2023)
+
  Closes #10798

-
Daniel Stenberg (15 Feb 2023)
+
- GHA-linux: add an address-sanitizer build

-
- RELEASE-NOTES: synced
+
  Closes #10810

-
  7.88.0 release
+
Version 8.0.1 (20 Mar 2023)

-
- THANKS: added contributors from 7.88.0
+
Daniel Stenberg (20 Mar 2023)

-
- openssl: rename 'errcode_t' to 'sslerr_t'
+
- RELEASE-NOTES: synced

-
  Turns out "/usr/include/et/com_err.h" typedefs this type (without proper
-
  variable scoping).
+
  curl 8.0.1

-
  comerr is the "common error description library" that apparently might be use
-
  d
-
  by krb5 code, which then makes this header get used in a curl build.
+
- Revert "multi: remove PENDING + MSGSENT handles from the main linked list"

-
  Reported-by: Bruno Henrique Batista Cruz da Silva
-
  Fixed #10502
-
  Closes #10500
+
  This reverts commit f6d6f3ce01e377932f1ce7c24ee34d45a36950b8.

-
Dan Fandrich (13 Feb 2023)
+
  The commits caused issues in the 8.0.0 release. Needs a retake.

-
- CONTRIBUTE: More formally specify the commit description
+
  Reported-by: Kamil Dudka
+
  Closes #10795

-
  This codifies what people have actually used in git commits over the
-
  past 6 years. I've left off some lesser-used headers that appear to
-
  duplicate others and tried to describe a consistent use for several
-
  others that were used more arbitrarily.
+
- include/curl/curlver.h: bump to 8.0.1

-
  This makes it easier for new committers to find out the kinds of things
-
  we want to acknowledge, makes it easier to perform statistical analysis
-
  on commits, and opens the possibility of performing lint checks on
-
  descriptions before submission.
+
Version 8.0.0 (20 Mar 2023)

-
  Reviewed-by: Daniel Stenberg
-
  Reviewed-by: Jay Satiro
+
Daniel Stenberg (20 Mar 2023)

-
  Closes #10478
+
- RELEASE-NOTES: synced

-
Stefan Eissing (13 Feb 2023)
+
  The curl 8.0.0 release

-
- openssl: test and fix for forward proxy handling (non-tunneling).
+
- THANKS: from the 8.0.0 release

-
  - adding pytest test_10 cases for proxy httpd setup tests
-
  - fixing openssl bug in https: proxy hostname verification that
-
    used the hostname of the request and not the proxy name.
+
- scripts/delta: fix "ambiguous argument" when used in branches

-
  Closes #10498
+
- SECURITY-PROCESS.md: Busy-loops are not security problems

-
Daniel Stenberg (13 Feb 2023)
+
  Closes #10790

-
- cmdline-opts/Makefile: on error, do not leave a partial
+
Stefan Eissing (17 Mar 2023)

-
  And support 'make V=1' to show the full command line
+
- tests/http: do not save files for downloads in scorecard testing

-
  Closes #10497
+
  Closes #10788

-
- curl.1: make help, version and manual sections "custom"
+
Daniel Stenberg (17 Mar 2023)

-
  Instead of using "multi: boolean", as these are slightly special as in
-
  they do are not enable/disable ones.
+
- cf-socket: use port 80 when resolving name for local bind

-
  Fixes #10490
-
  Reported-by: u20221022 on github
-
  Closes #10497
+
  It turns out c-ares returns an error when asked to resolve a host name with
+
  ares_getaddrinfo using port number 0.

-
Stefan Eissing (13 Feb 2023)
+
  Reported as a c-ares bug here: https://github.com/c-ares/c-ares/issues/517

-
- tests: add tests for HTTP/2 and HTTP/3 to verify the header API
+
  The work-around is to simply use port 80 instead, as the number typically doe
+
  s
+
  not make a difference and a non-zero number works for c-ares.

-
  Test 2403 and 2503 check "header_json" output and therefore use of
-
  header-api
+
  Fixes #10759
+
  Reported-by: Matt Jolly
+
  Closes #10789

-
  Closes #10495
+
- curl.h: require gcc 12.1 for the deprecation magic

-
Philip Heiduck (13 Feb 2023)
+
  Reported-by: kchow-FTNT on github
+
  Fixes #10726
+
  Closes #10784

-
- CI: update wolfssl / wolfssh to 5.5.4 / 1.4.12
+
- Revert "rtsp: use dynbuf instead of custom reallocs"

-
  Closes #10493
+
  This reverts commit 1b9ea3239d22147e00d8 because of OSS-fuzz reports.
+
  I'll do another take after the pending release.

-
Daniel Stenberg (13 Feb 2023)
+
  Closes #10785

-
- KNOW_BUGS: cleanups with some changed to TODOs
+
- test422: verify --next used without a prior URL

-
  - remove "Excessive HTTP/2 packets with TCP_NODELAY"
+
  Closes #10782

-
    This is not a bug. Rather room for improvement.
+
- tool_getparam: error if --next is used without a prior URL

-
  I believe these have been fixed:
+
  Reported-by: 積丹尼 Dan Jacobson
+
  Ref: https://github.com/curl/curl/pull/10769#discussion_r1137895629

-
  - 17.4 Connection failures with parallel HTTP/2
-
  - 17.5 HTTP/2 connections through HTTPS proxy frequently stall
+
  Closes #10782

-
  - remove "FTPS needs session reuse"
+
- libssh: use dynbuf instead of realloc

-
  That is still true, but curl should also do session reuse now.
+
  When building lines to show for SFTP directory listings.

-
  - remove "ASCII FTP"
+
  Closes #10778

-
  It is documented behavior, and not single user has asked for extended
-
  functionality here the last decade or so.
+
- lib2305: deal with CURLE_AGAIN

-
  - remove "Passive transfer tries only one IP address"
+
  The test does a slightly ugly busy-loop for this case but should be
+
  managable due to it likely being a very short moment.

-
  add as a TODO
+
  Mention CURLE_AGAIN in curl_ws_recv.3

-
  - remove "DoH leaks memory after followlocation"
+
  Fixes #10760
+
  Reported-by: Jay Satiro
+
  Closes #10781

-
  With a recipe on how to reproduce, this is pointless to keep around
+
- rtsp: use dynbuf instead of custom reallocs

-
  - remove "DoH does not inherit all transfer options"
+
  For the RTP buffering.

-
  add it as a TODO
+
  Closes #10776

-
  Closes #10487
+
- libssh2: remove unused variable from libssh2's struct

-
Tatsuhiro Tsujikawa (13 Feb 2023)
+
  Closes #10777

-
- GHA: bump ngtcp2 workflow dependencies
+
- RELEASE-NOTES: synced

-
  Closes #10494
+
- multi: remove PENDING + MSGSENT handles from the main linked list

-
Patrick Monnerat (13 Feb 2023)
+
  As they are not driving transfers or any socket activity, the main loop
+
  does not need to iterate over these handles. A performance improvement.

-
- content_encoding: do not reset stage counter for each header
+
  They are instead only held in their own separate lists.

-
  Test 418 verifies
+
  Assisted-by: Stefan Eissing
+
  Ref: #10743
+
  Closes #10762

-
  Closes #10492
+
- multi: turn link/unlinking easy handles into dedicated functions

-
Daniel Stenberg (13 Feb 2023)
+
- http_aws_sigv4: fix scan-build "value stored to 'ret' is never read"

-
- RELEASE-NOTES: synced
+
  Follow-up to 495d09810aa9a

-
Jay Satiro (13 Feb 2023)
+
  Closes #10766

-
- multi: stop sending empty HTTP/3 UDP datagrams on Windows
+
- lib: skip Curl_llist_destroy calls

-
  - Limit the 0-sized send procedure that is used to reset a SOCKET's
-
    FD_WRITE to TCP sockets only.
+
  Linked lists themselves do not carry any allocations, so for the lists
+
  that do not have have a set destructor we can just skip the
+
  Curl_llist_destroy() call and save CPU time.

-
  Prior to this change the reset was used on UDP sockets as well, but
-
  unlike TCP sockets a 0-sized send actually sends out a datagram.
+
  Closes #10764

-
  Assisted-by: Marc Hörsken
+
- lib643: LIB644 is never defined, this is dead code

-
  Ref: https://github.com/curl/curl/pull/9203
+
  Closes #10765

-
  Fixes https://github.com/curl/curl/issues/9086
-
  Closes https://github.com/curl/curl/pull/10430
+
- libtest/Makefile.inc: remove superfluous variables

-
Viktor Szakats (12 Feb 2023)
+
  Rely on the defaults when possible.

-
- h3: silence compiler warnings
+
  Closes #10765

-
  Reviewed-by: Daniel Stenberg
-
  Fixes #10485
-
  Closes #10486
+
- tests/http: remove year ranges from copyrights

-
Daniel Stenberg (12 Feb 2023)
+
  Closes #10763

-
- smb: return error on upload without size
+
Casey Bodley (14 Mar 2023)

-
  The protocol needs to know the size ahead of time, this is now a known
-
  restriction and not a bug.
+
- aws_sigv4: fall back to UNSIGNED-PAYLOAD for sign_as_s3

-
  Also output a clearer error if the URL path does not contain proper
-
  share.
+
  all s3 requests default to UNSIGNED-PAYLOAD and add the required
+
  x-amz-content-sha256 header. this allows CURLAUTH_AWS_SIGV4 to correctly
+
  sign s3 requests to amazon with no additional configuration

-
  Ref: #7896
-
  Closes #10484
+
  Signed-off-by: Casey Bodley <cbodley@redhat.com>

-
Viktor Szakats (12 Feb 2023)
+
  Closes #9995

-
- windows: always use curl's basename() implementation
+
Viktor Szakats (14 Mar 2023)

-
  The `basename()` [1][2] implementation provided by mingw-w64 [3] makes
-
  assumptions about input encoding and may break with non-ASCII strings.
+
- wolfssl: add quic/ngtcp2 detection in cmake, and fix builds

-
  `basename()` was auto-detected with CMake, autotools and since
-
  68fa9bf3f5d7b4fcbb57619f70cb4aabb79a51f6 (2022-10-13), also in
-
  `Makefile.mk` after syncing its behaviour with the mainline build
-
  methods. A similar patch for curl-for-win broke official Windows
-
  builds earlier, in release 7.83.1_4 (2022-06-15).
+
  - add QUIC/ngtcp2 detection in CMake with wolfSSL.

-
  This patch forces all Windows builds to use curl's internal
-
  `basename()` implementation to avoid such problems.
+
    Because wolfSSL uses zlib if available, move compression detection
+
    before TLS detection. (OpenSSL might also need this in the future.)

-
  [1]: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/basename.html
-
  [2]: https://www.man7.org/linux/man-pages/man3/basename.3.html
-
  [3]: https://sourceforge.net/p/mingw-w64/mingw-w64/ci/master/tree/mingw-w64-c
-
  rt/misc/basename.c
+
  - wolfSSL 5.5.0 started using C99 types in its `quic.h` header, but it
+
    doesn't #include the necessary C99 header itself, breaking builds
+
    (unless another dependency pulled it by chance.) Add local workaround
+
    for it. For this to work with all build tools, we had to fix our
+
    header detection first. Ref: #10745

-
  Reported-by: UnicornZhang on Github
-
  Assisted-by: Cherish98 on Github
-
  Reviewed-by: Daniel Stenberg
+
    Ref: https://github.com/curl/curl-for-win/commit/6ad5f6ecc15620c15625fc4434
+
  76b3a1ecef4f3f

-
  Fixes #10261
-
  Closes #10475
+
  Closes #10739

-
Philip Heiduck (12 Feb 2023)
+
Stefan Eissing (14 Mar 2023)

-
- Linux CI: Bump rustls-ffi to v0.9.1
+
- secure-transport: fix recv return code handling

-
  Closes #10476
+
  Return code handling of recv calls were not always correct when an error
+
  occured or the connection was closed.

-
Daniel Stenberg (12 Feb 2023)
+
  Closes #10717

-
- libtest: build lib2305 with multibyte as well
+
- http2: Use KEEP_SEND_HOLD for flow control in HTTP/2

-
  Fixes a build regression.
+
  - use the defined, but so far not used, KEEP_SEND_HOLD bit for flow
+
    control based suspend of sending in transfers.

-
  Follow-up to 5a9a04d5567
-
  Reported-by: Viktor Szakats
-
  Ref: https://github.com/curl/curl/pull/10475#issuecomment-1426831800
+
  Prior to this change KEEP_SEND_PAUSE bit was used instead, but that can
+
  interfere with pausing streams from the user side via curl_easy_pause.

-
  Closes #10477
+
  Fixes https://github.com/curl/curl/issues/10751
+
  Closes https://github.com/curl/curl/pull/10753

-
Dmitry Atamanov (12 Feb 2023)
+
Dan Fandrich (13 Mar 2023)

-
- cmake: fix dev warning due to mismatched arg
+
- tests: fix control code that hid some text in runtests.1

-
  The package name passed to find_package_handle_standard_args (BROTLI)
-
  does not match the name of the calling package (Brotli). This can lead
-
  to problems in calling code that expects find_package result variables
-
  (e.g., _FOUND) to follow a certain pattern.
+
- tests: sync option lists in runtests.pl & its man page

-
  Closes https://github.com/curl/curl/pull/10471
+
Daniel Stenberg (13 Mar 2023)

-
James Keast (11 Feb 2023)
+
- multi: make multi_perform ignore/unignore signals less often

-
- setopt: Address undefined behaviour by checking for null
+
  For improved performance

-
  This addresses undefined behaviour found using clang's UBsan:
+
  Reported-by: Jerome St-Louis
+
  Ref: #10743
+
  Closes #10750

-
  curl/lib/setopt.c:177:14: runtime error: applying non-zero offset 1 to null p
-
  ointer
-
  SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior curl/lib/setopt.c:177
-
  :14 in
+
Viktor Szakats (13 Mar 2023)

-
  Closes #10472
+
- cmake: delete unused HAVE__STRTOI64

-
Jacob Hoffman-Andrews (11 Feb 2023)
+
  Also delete obsolete surrounding comments.

-
- rustls: improve error messages
+
  Reviewed-by: Daniel Stenberg
+
  Closes #10756

-
  Changes numeric error codes into verbose error codes in two places.
-
  Adds a prefix indicating that the error came from rustls, and in some
-
  places which function it came from.
+
- CI: fix copyright header

-
  Adds special handling for RUSTLS_RESULT_UNEXPECTED_EOF, since the
-
  default message of "Unexpected EOF" is insufficiently explanatory.
+
  Follow-up to 395b9175b7422d699fa93643973295c106cdf147

-
  Closes #10463
+
Daniel Stenberg (13 Mar 2023)

-
Daniel Stenberg (11 Feb 2023)
+
- RELEASE-PROCEDURE.md: update coming release dates

-
- openssl: remove dead code
+
Stefan Eissing (13 Mar 2023)

-
  Follow-up to e8b00fcd6a
+
- tests/http: add pytest to GHA and improve tests

-
  Due to the new 'if(!nonblocking)' check on the block a level above,
-
  there is no need to check for it again within the same conditional.
+
  - added to: ngtcp2-quictls, ngtcp2-gnutls and the linux varians
+
    quiche, bearssl, libressl, mbedtls, openssl3, rustls
+
  - added disabled in ngtcp2-wolfssl due to weird SSL_connect() errors
+
    not reproducable locally

-
  Detected by Coverity
+
  Improvements on pytest:

-
  Closes #10473
+
  -  handling of systems with nghttpx in $PATH
+
     - configure will seach $PATH got nghttpx used in pytest
+
     - pytest fixes for managing nghttpx without h3 support
+
     - ngtcp2-wolfssl: use a fully enabled wolfssl build

-
- ngtcp2: replace removed define and stop using removed function
+
  - lower parallel count for http/1.1 tests, since we do not
+
     want to test excessive connections.
+
  - check built curl for HTTPS-proxy support in proxy tests
+
  - bearssl does not like one of our critical cert extensions, making
+
    it non-critical now
+
  - bearssl is too slow for test_12, skipping
+
  - making sure we do h3 tests only when curl and server support is there

-
  They were removed upstream.
+
  Closes #10699

-
  Reported-by: Karthikdasari0423 on github
-
  Fixes #10469
-
  Closes #10474
+
Marcel Raad (13 Mar 2023)

-
- scripts/delta: show percent of number of files changed since last tag
+
- tool_operate: silence unused parameter warning

-
- RELEASE-NOTES: synced
+
  `global` is only used in the `my_setopt` macro version without
+
  `CURL_DISABLE_LIBCURL_OPTION` since commit 4774decf10a.

-
Stefan Eissing (10 Feb 2023)
+
  Closes https://github.com/curl/curl/pull/10752

-
- pytest: add a test case for PUSH related things.
+
Viktor Szakats (13 Mar 2023)

-
  - checking that "103 Early Hints" are visible in curl's header dump file
+
- build: fix stdint/inttypes detection with non-autotools

-
  Closes #10452
+
  Fix `stdint.h` and `inttypes.h` detection with non-autotools builds on
+
  Windows. (autotools already auto-detected them accurately.)

-
Gregory Panakkal (10 Feb 2023)
+
  `lib/config-win32.h` builds (e.g. `Makefile.mk`):
+
  - set `HAVE_STDINT_H` where supported.
+
  - set `HAVE_INTTYPES_H` for MinGW.

-
- WEBSOCKET.md: typo
+
  CMake:
+
  - auto-detect them on Windows. (They were both force-disabled.)
+
  - delete unused `CURL_PULL_STDINT_H`.
+
  - delete unused `CURL_PULL_INTTYPES_H`.
+
  - stop detecting `HAVE_STDINT_H` twice.
+
    Present since the initial CMake commit: 4c5307b45655ba75ab066564afdc0c111a8
+
  b9291

-
  Fixing missing slash for ws protocol scheme
+
  curl doesn't use these C99 headers, we need them now to workaround
+
  broken wolfSSL builds. Ref: #10739

-
  Closes #10464
+
  Once that clears up, we can delete these detections and macros (unless
+
  we want to keep them for future us.)

-
Stefan Eissing (10 Feb 2023)
+
  Reviewed-by: Daniel Stenberg
+
  Closes #10745

-
- vquic: stabilization and improvements
+
Daniel Stenberg (13 Mar 2023)

-
  vquic stabilization
-
  - udp send code shared between ngtcp2 and quiche
-
  - quiche handling of data and events improved
+
- RELEASE-NOTES: synced

-
  ngtcp2 and pytest improvements
-
  - fixes handling of "drain" situations, discovered in scorecard
-
    tests with the Caddy server.
-
  - improvements in handling transfers that have already  data or
-
    are already closed to make an early return on recv
+
- ftp: add more conditions for connection reuse

-
  pytest
-
  - adding caddy tests when available
+
  Reported-by: Harry Sintonen
+
  Closes #10730

-
  scorecard improvemnts.
-
  - using correct caddy port
-
  - allowing tests for only httpd or caddy
+
Dan Fandrich (12 Mar 2023)

-
  Closes #10451
+
- tests: make first.c the same for both lib tests and unit tests

-
Philip Heiduck (10 Feb 2023)
+
  The only difference used to be global variable used in unittest tests.
+
  After cb7ed5a removed individual flag overrides for the unittests, first.c
+
  was no longer recompiled for unit tests to include the flag, so whether it
+
  worked or gave a link error depended on whether it was compiled in
+
  libtest or unittest first. This way also speeds up the build by
+
  eliminating 40 identical compile invocations.

-
- Linux CI: update some dependecies to latest tag
+
  Fixes #10749

-
  Closes #10458
+
- tests: use AM_CPPFILES to modify flags in unit tests

-
Daniel Stenberg (10 Feb 2023)
+
  Using CPPFLAGS sometimes caused odd compile issues when building tests
+
  with parallel make and AM_CPPFILES is the right flag, anyway.

-
- test2305: send 3 frames, 4097 bytes each, as one message
+
  Follow-up to cb7ed5a

-
  Receive them using a 256 bytes buffer in a loop.
+
  Ref #10749

-
- ws: fix recv of larger frames
+
Viktor Szakats (13 Mar 2023)

-
   + remove 'oleft' from the struct
-
   + deal with "overflow data" in a separate dynbuf
+
- Makefile.mk: fix -g option in debug mode [ci skip]

-
  Reported-by: Mike Duglas
-
  Fixes #10438
-
  Closes #10447
+
  Add it to `CFLAGS` (was: `LDFLAGS`).

-
- curl/websockets.h: extend the websocket frame struct
+
  Closes #10747

-
- sws: fix typo, indentation add more ws logging
+
Jay Satiro (12 Mar 2023)

-
- test2304: remove stdout verification
+
- tool: improve --stderr handling

-
  This cripples the test somewhat but the check was bad since depending on
-
  timing it could exit before the output was done, making the test flaky.
+
  - freopen stderr with the user-specified file (--stderr file) instead of
+
    using a separate 'errors' stream.

-
Dan Fandrich (9 Feb 2023)
+
  - In tool_setup.h override stdio.h's stderr macro as global variable
+
    tool_stderr.

-
- CI: Add more labeler match patterns
+
  Both freopen and overriding the stderr macro are necessary because if
+
  the user-specified filename is "-" then stdout is assigned to
+
  tool_stderr and no freopen takes place. See the PR for more information.

-
- CI: Retry failed downloads to reduce spurious failures
+
  Ref: https://github.com/curl/curl/issues/10491

-
  A temporary error with a remote server shouldn't cause a CI run to fail.
-
  Also, put a cap on the time to download to fail faster on a misbehaving
-
  server or connection and use HTTP compression where possible to reduce
-
  download times.
+
  Closes https://github.com/curl/curl/pull/10673

-
Daniel Stenberg (9 Feb 2023)
+
Dan Fandrich (11 Mar 2023)

-
- no-clobber.d: only use long form options in man page text
+
- CI: don't run CI jobs if only another CI was changed

-
  ... since they are expanded and the short-form gets mentioned
-
  automatically so if the short form is mentioned as well, it gets
-
  repeated.
+
  Also skip builds on non-Windows platforms when only Windows build files
+
  have changed.

-
  Fixes #10461
-
  Closes #10462
-
  Reported-by: Dan Fandrich
+
  This should reduce the number of useless builds and the associated
+
  waiting time and chance of spurious failures, freeing resources for
+
  new PRs.

-
- GHA: enable websockets in the torture job
+
  Closes #10742

-
  Closes #10448
+
- http: don't send 100-continue for short PUT requests

-
- header.d: add a header file example
+
  This is already how curl is documented to behave in Everything curl, but
+
  in actuality only short POSTs skip this. This should knock 30 seconds
+
  off a full run of the test suite since the 100-continue timeout will no
+
  longer be hit.

-
  Closes #10455
+
  Closes #10740

-
Stefan Eissing (9 Feb 2023)
+
- tests: add DELAY keyword to more tests using waits

-
- HTTP/[23]: continue upload when state.drain is set
+
- tests: hack to build most unit tests under cmake

-
  - as reported in #10433, HTTP/2 uploads may stall when a response is
-
    received before the upload is done. This happens when the
-
    data->state.drain is set for such a transfer, as the special handling
-
    in transfer.c from then on only cared about downloads.
-
  - add continuation of uploads, if applicable, in this case.
-
  - add pytest case test_07_12_upload_seq_large to reproduce this scenario
-
    (although, current nghttp2 implementation is using drain less often)
+
  These are only built when a libcurl static library is available, since
+
  we're not building a special libcurlu library yet and these tests rely
+
  on private symbols that aren't available in the shared library. A few
+
  unit tests do require libcurlu, so those are not built.

-
  Reported-by: Lucas Pardue
+
  Closes #10722

-
  Fixes #10433
-
  Closes #10443
+
- tests: fix MSVC unreachable code warnings in unit tests

-
- http2: minor buffer and error path fixes
+
  Switch unit1654 to use the proper test macros as well.

-
  - use memory buffer in full available size
-
  - fail receive of reset/errored streams early
+
- tests: make CPPFLAGS common to all unit tests

-
  pytest:
-
  - make test_05 error cases more reliable
+
  There's no need to specify them individually.

-
  Closes #10444
+
- tests: keep cmake unit tests names in sync

-
Federico Pellegrin (9 Feb 2023)
+
  Put only the test names into Makefile.inc so they can be used by both
+
  cmake and automake. This will prevent the list of tests from becoming
+
  out of date when they are also built under cmake.

-
- openldap: fix missing sasl symbols at build in specific configs
+
Viktor Szakats (11 Mar 2023)

-
  If curl is built with openldap support (USE_OPENLDAP=1) but does not
-
  have also some other protocol (IMAP/SMTP/POP3) enabled that brings
-
  in Curl_sasl_* functions, then the build will fail with undefined
-
  references to various symbols:
+
- src: silence wmain() warning for all build methods

-
  ld: ../lib/.libs/libcurl.so: undefined reference to `Curl_sasl_decode_mech'
-
  ld: ../lib/.libs/libcurl.so: undefined reference to `Curl_sasl_parse_url_auth
-
  _option'
-
  ld: ../lib/.libs/libcurl.so: undefined reference to `Curl_sasl_cleanup'
-
  ld: ../lib/.libs/libcurl.so: undefined reference to `Curl_sasl_can_authentica
-
  te'
-
  ld: ../lib/.libs/libcurl.so: undefined reference to `Curl_sasl_continue'
-
  ld: ../lib/.libs/libcurl.so: undefined reference to `Curl_sasl_start'
-
  ld: ../lib/.libs/libcurl.so: undefined reference to `Curl_sasl_init'
+
  llvm/clang and gcc doesn't recognize the wmain() function in Unicode
+
  Windows builds:

-
  This was tracked down to these functions bein used in openldap.c but
-
  defined in curl_sasl.c and then forward in two vauth/ files to have
-
  a guard against a set of #define configurations that was now extended
-
  to cover also this case.
+
  llvm/clang:
+
  ```
+
  ../../src/tool_main.c:239:5: warning: no previous prototype for function 'wma
+
  in' [-Wmissing-prototypes]
+
  int wmain(int argc, wchar_t *argv[])
+
      ^
+
  1 warning generated.
+
  ```

-
  Example configuration targeted that could reproduce the problem:
+
  gcc:
+
  ```
+
  ../../src/tool_main.c:239:5: warning: no previous prototype for 'wmain' [-Wmi
+
  ssing-prototypes]
+
    239 | int wmain(int argc, wchar_t *argv[])
+
        |     ^~~~~
+
  ```

-
  curl 7.87.1-DEV () libcurl/7.87.1-DEV .... OpenLDAP/2.6.3
-
  Protocols: file ftp ftps http https ldap ldaps
+
  Before this patch, we already silenced it with CMake. This patch moves
+
  the silencing to the source, so that it applies to all build tools.

-
  Closes #10445
+
  Bug: https://github.com/curl/curl/issues/7229#issuecomment-1464806651

-
Daniel Stenberg (9 Feb 2023)
+
  Reviewed-by: Marcel Raad
+
  Closes #10744

-
- ws: use %Ou for outputting curl_off_t with info()
+
Dan Fandrich (10 Mar 2023)

-
  Reported-by: Mike Duglas
-
  Fixes #10439
-
  Closes #10441
+
- CI: fix retrying on brew failures

-
Jay Satiro (9 Feb 2023)
+
  The previous attempt didn't consider that the shell would exit
+
  immediately after the false statement in the retry case.

-
- curl_setup: Disable by default recv-before-send in Windows
+
  Follow-up to dc141a37

-
  Prior to this change a workaround for Windows to recv before every send
-
  was enabled by default. The way it works is a recv is called before
-
  every send and saves the received data, in case send fails because in
-
  Windows apparently that can wipe out the socket's internal received
-
  data buffer.
+
Stefan Eissing (10 Mar 2023)

-
  This feature has led to several bugs because the way libcurl operates
-
  it waits on a socket to read or to write, and may not at all times
-
  check for buffered receive data.
+
- http2: fix error handling during parallel operations

-
  Two recent significant bugs this workaround caused:
-
  - Broken Schannel TLS 1.3 connections (#9431)
-
  - HTTP/2 arbitrary hangs (#10253)
+
  RST and connection close were not handled correctly during parallel
+
  transfers, leading to aborted response bodies being reported complete.

-
  The actual code remains though it is disabled by default. Though future
-
  changes to connection filter buffering could improve the situation IMO
-
  it's just not tenable to manage this workaround.
+
  Closes #10715

-
  Ref: https://github.com/curl/curl/issues/657
-
  Ref: https://github.com/curl/curl/pull/668
-
  Ref: https://github.com/curl/curl/pull/720
+
Daniel Stenberg (10 Mar 2023)

-
  Ref: https://github.com/curl/curl/issues/9431
-
  Ref: https://github.com/curl/curl/issues/10253
+
- url: only reuse connections with same GSS delegation

-
  Closes https://github.com/curl/curl/pull/10409
+
  Reported-by: Harry Sintonen
+
  Closes #10731

-
Stefan Eissing (8 Feb 2023)
+
Viktor Szakats (10 Mar 2023)

-
- http2: aggregate small SETTINGS/PRIO/WIN_UPDATE frames
+
- lib: silence clang/gcc -Wvla warnings in brotli headers

-
  add a small buffer to nghttp2 session sending in order to aggregate
-
  small SETTINGS/PRIO/WIN_UPDATE frames that nghttp2 "writes" to the
-
  callback individually.
+
  brotli v1.0.0 throughout current latest v1.0.9 and latest master [1]
+
  trigger this warning.

-
  Ref: #10389
-
  Closes #10432
+
  It happened with CMake and GNU Make. autotools builds avoid it with
+
  the `convert -I options to -isystem` macro.

-
- openssl: store the CA after first send (ClientHello)
+
  llvm/clang:
+
  ```
+
  In file included from ./curl/lib/content_encoding.c:36:
+
  ./brotli/x64-ucrt/usr/include/brotli/decode.h:204:34: warning: variable lengt
+
  h array used [-Wvla]
+
      const uint8_t encoded_buffer[BROTLI_ARRAY_PARAM(encoded_size)],
+
                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
  ./brotli/x64-ucrt/usr/include/brotli/port.h:253:34: note: expanded from macro
+
   'BROTLI_ARRAY_PARAM'
+
                                   ^~~~~~
+
  In file included from ./curl/lib/content_encoding.c:36:
+
  ./brotli/x64-ucrt/usr/include/brotli/decode.h:206:48: warning: variable lengt
+
  h array used [-Wvla]
+
      uint8_t decoded_buffer[BROTLI_ARRAY_PARAM(*decoded_size)]);
+
                             ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
+
  ./brotli/x64-ucrt/usr/include/brotli/port.h:253:35: note: expanded from macro
+
   'BROTLI_ARRAY_PARAM'
+
                                   ~^~~~~
+
  ```

-
  move Curl_ssl_setup_x509_store() call after the first send (ClientHello)
-
  this gives time to parse CA anchors while waiting on the server reply
+
  gcc:
+
  ```
+
  In file included from ./curl/lib/content_encoding.c:36:
+
  ./brotli/x64-ucrt/usr/include/brotli/decode.h:204:5: warning: ISO C90 forbids
+
   variable length array 'encoded_buffer' [-Wvla]
+
    204 |     const uint8_t encoded_buffer[BROTLI_ARRAY_PARAM(encoded_size)],
+
        |     ^~~~~
+
  ./brotli/x64-ucrt/usr/include/brotli/decode.h:206:5: warning: ISO C90 forbids
+
   variable length array 'decoded_buffer' [-Wvla]
+
    206 |     uint8_t decoded_buffer[BROTLI_ARRAY_PARAM(*decoded_size)]);
+
        |     ^~~~~~~
+
  ```

-
  Ref: #10389
-
  Closes #10432
+
  [1] https://github.com/google/brotli/commit/ed1995b6bda19244070ab5d331111f16f
+
  67c8054

-
Daniel Stenberg (8 Feb 2023)
+
  Reviewed-by: Daniel Stenberg
+
  Reviewed-by: Marcel Raad
+
  Closes #10738

-
- RELEASE-NOTES: synced
+
Daniel Stenberg (10 Mar 2023)

-
Anthony Hu (8 Feb 2023)
+
- curl_path: create the new path with dynbuf

-
- wolfssl: remove deprecated post-quantum algorithms
+
  Closes #10729

-
  Closes #10440
+
- url: remove dummy protocol handler

-
John Bampton (8 Feb 2023)
+
  Just two added checks were needed saves a whole handler struct.

-
- misc: fix spelling
+
  Closes #10727

-
  Closes #10437
+
Dan Fandrich (10 Mar 2023)

-
Daniel Stenberg (7 Feb 2023)
+
- CI: retry a failed brew update too, not just brew install

-
- man pages: call the custom user pointer 'clientp' consistently
+
  Also, make sure an eventual failure ends up returning a failure code so
+
  the job stops.

-
  The variable had a few different names. Now try to use 'clientp'
-
  consistently for all man pages using a custom pointer set by the
-
  application.
+
Daniel Stenberg (10 Mar 2023)

-
  Reported-by: Gerrit Renker
+
- url: fix the SSH connection reuse check

-
  Fixes #10434
-
  Closes #10435
+
  Reported-by: Harry Sintonen
+
  Closes #10735

-
- vtls: infof using %.*s needs to provide the length as int
+
- CURLOPT_PROXY.3: curl+NSS does not handle HTTPS over unix domain socket

-
  Fixes a Coverity warning.
+
  It results in error "NSS error -5985 (PR_ADDRESS_NOT_SUPPORTED_ERROR)"

-
  Closes #10436
+
  Disabled test 1470 for NSS builds and documented the restriction.

-
Stefan Eissing (7 Feb 2023)
+
  Reported-by: Dan Fandrich
+
  Fixes #10723
+
  Closes #10734

-
- vrls: addressing issues reported by coverity
+
- CURLSHOPT_SHARE.3: HSTS sharing is not thread-safe

-
  I believe the code was secure before this, but limiting the accepted
-
  name length to what is used in the structures should help Coverity's
-
  analysis.
+
  Reported-by: Hiroki Kurosawa
+
  Closes #10732

-
  Closes #10431
+
- telnet: only accept option arguments in ascii

-
Daniel Stenberg (7 Feb 2023)
+
  To avoid embedded telnet negotiation commands etc.

-
- tool_operate: move the 'updated' variable
+
  Reported-by: Harry Sintonen
+
  Closes #10728

-
  This was already done by Dan Fandrich in the previous PR but somehow I
-
  lost that fixup.
+
- test1903: test use of COOKIEFILE - reset - COOKIEFILE

-
  Follow-up to 349c5391f2121e
+
  This also tests for the memory leak bug fixed by parent commit b559ef6f.

-
Dan Fandrich (7 Feb 2023)
+
  Ref: #10694

-
- tool_operate: Fix error codes during DOS filename sanitize
+
  Closes https://github.com/curl/curl/pull/10712

-
  It would return CURLE_URL_MALFORMAT in an OOM condition.
+
Jay Satiro (10 Mar 2023)

-
  Closes #10414
+
- url: fix cookielist memleak when curl_easy_reset

-
- tool_operate: Fix error codes on bad URL & OOM
+
  - Free set.cookelist in Curl_freeset instead of Curl_close.

-
  curl would erroneously report CURLE_OUT_OF_MEMORY in some cases instead
-
  of CURLE_URL_MALFORMAT. In other cases, it would erroneously return
-
  CURLE_URL_MALFORMAT instead of CURLE_OUT_OF_MEMORY.  Add a test case to
-
  test the former condition.
+
  Prior to this change the cookielist linked list wasn't freed by
+
  curl_easy_reset which calls Curl_freeset to free all set.

-
  Fixes #10130
-
  Closes #10414
+
  Bug: https://github.com/curl/curl/issues/10694#issuecomment-1458619157
+
  Reported-by: Sergey Ryabinin

-
Daniel Stenberg (6 Feb 2023)
+
  Closes https://github.com/curl/curl/pull/10709

-
- setopt: use >, not >=, when checking if uarg is larger than uint-max
+
Dan Fandrich (10 Mar 2023)

-
  Closes #10421
+
- tests: fix some keywords and unused sections

-
- vtls: fix failf() format argument type for %.*s handling
+
- tests: fix test1301 to call the right binary

-
  Reported by Coverity
+
  It was refactored in commit 480ac6e5 but this step was missed.

-
  Closes #10422
+
- tests: add timeout, SLOWDOWN and DELAY keywords to tests

-
- openssl: fix "Improper use of negative value"
+
  These are tests that are testing timing and end up being quite slow.

-
  By getting the socket first and returning error in case of bad socket.
+
Daniel Stenberg (10 Mar 2023)

-
  Detected by Coverity.
+
- RELEASE-NOTES: synced

-
  Closes #10423
+
Stefan Eissing (10 Mar 2023)

-
Dan Fandrich (6 Feb 2023)
+
- wolfSSL: ressurect the BIO `io_result`

-
- packages: Remove Android.mk from makefile
+
  In pytest'ing the situation occored that wolfSSL reported an
+
  IO error when the underlying BIO operation was returning an
+
  CURLE_AGAIN condition.

-
  This was missed in commit #44141512
+
  Readding the `io_result` filter context member to detect such
+
  situations.

-
  Ref: #10418
+
  Also, making sure that the returned CURLcode is initialized
+
  on all recv operations outcome.

-
Daniel Stenberg (6 Feb 2023)
+
  Closes #10716

-
- curl_ws_send.3: clarify how to send multi-frame messages
+
- gssapi: align global `gss_OID_desc` vars to silence ld warnings on macOS vent
+
  ura

-
Mike Duglas (6 Feb 2023)
+
  Refs #9975 which first reported this.

-
- ws: fix multiframe send handling
+
  Closes #10718

-
  Fixes #10413
-
  Closes #10420
+
Daniel Stenberg (10 Mar 2023)

-
Daniel Stenberg (6 Feb 2023)
+
- libssh2: only set the memory callbacks when debugging

-
- unit2600: make sure numerical curl_easy_setopt sets long
+
  This makes us debug libssh2 less and libcurl more when for example
+
  running torture tests that otherwise will spend a lot of time in libssh2
+
  functions.

-
  Follow-up to 671158242db3203
+
  We leave libssh2 to test libssh2.

-
  Reported-by: Marcel Raad
-
  Fixes #10410
-
  Closes #10419
+
  Closes #10721

-
Andy Alt (6 Feb 2023)
+
- docs/SECURITY-PROCESS.md: updates

-
- GHA: move Slackware test into matrix
+
  - allow Low+Medium issues to be managed through plain PRs
+
  - update the bug-bounty part to reflect current reality

-
  Closes #10412
+
  Closes #10719

-
Pronyushkin Petr (6 Feb 2023)
+
Dan Fandrich (9 Mar 2023)

-
- urlapi: fix part of conditional expression is always true: qlen
+
- tests: fix tag markup issues in some tests

-
  Closes #10408
+
Marcel Raad (9 Mar 2023)

-
- url: fix part of conditional expression is always true
+
- tests: add `cookies` features

-
  Closes #10407
+
  These tests don't work with `--disable-cookies`.

-
Daniel Stenberg (6 Feb 2023)
+
  Closes https://github.com/curl/curl/pull/10713

-
- RELEASE-NOTES: synced
+
- test420: add cookies keyword

-
Philip Heiduck (6 Feb 2023)
+
  It fails with `--disable-cookies`.

-
- GHA/macos.yml: bump to gcc-12
-

-
  Closes #10415
-

-
Daniel Stenberg (6 Feb 2023)
-

-
- packages: remove Android, update README
-

-
  - Nobody builds curl for Android using this anymore
-
  - Refreshed the README and converted to markdown
-

-
  Reported-by: John Porter
-
  Fixes #10416
-
  Closes #10418
-

-
Kvarec Lezki (5 Feb 2023)
-

-
- fopen: remove unnecessary assignment
-

-
  [CWE-1164] V1048: The '* tempname' variable was assigned the same value.
-

-
  Ref: https://pvs-studio.com/en/docs/warnings/v1048/
-

-
  Closes https://github.com/curl/curl/pull/10398
-

-
Gisle Vanem (5 Feb 2023)
-

-
- libtest: add a sleep macro for Windows
-

-
  .. because sleep() is used in some libtests.
-

-
  Closes https://github.com/curl/curl/pull/10295
-

-
Kvarec Lezki (3 Feb 2023)
-

-
- http_aws_sigv4: remove typecasts from HMAC_SHA256 macro
-

-
  V220: Suspicious sequence of types castings: memsize -> 32-bit integer -> mem
-
  size.
-

-
  https://pvs-studio.com/en/docs/warnings/v220/
-

-
  Closes #10400
-

-
Daniel Stenberg (3 Feb 2023)
-

-
- mailmap: Thomas1664 on github
-

-
Thomas1664 on github (3 Feb 2023)
-

-
- CURLOPT_WRITEFUNCTION.3: fix memory leak in example
-

-
  Closes #10390
-

-
Kvarec Lezki (3 Feb 2023)
-

-
- doh: ifdef IPv6 code
-

-
  For disabled IPv6 a condition (conn->ip_version != CURL_IPRESOLVE_V4) is
-
  always false. https://pvs-studio.com/en/docs/warnings/v560/
-

-
  Closes #10397
-

-
Daniel Stenberg (3 Feb 2023)
-

-
- urlapi: remove pathlen assignment
-

-
  "Value stored to 'pathlen' is never read"
-

-
  Follow-up to 804d5293f89
-

-
  Reported-by: Kvarec Lezki
-

-
  Closes #10405
-

-
Kvarec Lezki (3 Feb 2023)
-

-
- http: fix "part of conditional expression is always false"
-

-
  [CWE-570] V560: A part of conditional expression is always false: conn->bits.
-
  authneg.
-
  [CWE-570] V560: A part of conditional expression is always false: conn->handl
-
  er->protocol & (0 | 0).
-

-
  https://pvs-studio.com/en/docs/warnings/v560/
-

-
  Closes #10399
-

-
Daniel Stenberg (2 Feb 2023)
-

-
- urlapi: skip the extra dedotdot alloc if no dot in path
-

-
  Saves an allocation for many/most URLs.
-

-
  Updates test 1395 accordingly
-

-
  Closes #10403
-

-
Stefan Eissing (2 Feb 2023)
-

-
- connections: introduce http/3 happy eyeballs
-

-
  New cfilter HTTP-CONNECT for h3/h2/http1.1 eyeballing.
-
  - filter is installed when `--http3` in the tool is used (or
-
    the equivalent CURLOPT_ done in the library)
-
  - starts a QUIC/HTTP/3 connect right away. Should that not
-
    succeed after 100ms (subject to change), a parallel attempt
-
    is started for HTTP/2 and HTTP/1.1 via TCP
-
  - both attempts are subject to IPv6/IPv4 eyeballing, same
-
    as happens for other connections
-
  - tie timeout to the ip-version HAPPY_EYEBALLS_TIMEOUT
-
  - use a `soft` timeout at half the value. When the soft timeout
-
    expires, the HTTPS-CONNECT filter checks if the QUIC filter
-
    has received any data from the server. If not, it will start
-
    the HTTP/2 attempt.
-

-
  HTTP/3(ngtcp2) improvements.
-
  - setting call_data in all cfilter calls similar to http/2 and vtls filters
-
    for use in callback where no stream data is available.
-
  - returning CURLE_PARTIAL_FILE for prematurely terminated transfers
-
  - enabling pytest test_05 for h3
-
  - shifting functionality to "connect" UDP sockets from ngtcp2
-
    implementation into the udp socket cfilter. Because unconnected
-
    UDP sockets are weird. For example they error when adding to a
-
    pollset.
-

-
  HTTP/3(quiche) improvements.
-
  - fixed upload bug in quiche implementation, now passes 251 and pytest
-
  - error codes on stream RESET
-
  - improved debug logs
-
  - handling of DRAIN during connect
-
  - limiting pending event queue
-

-
  HTTP/2 cfilter improvements.
-
  - use LOG_CF macros for dynamic logging in debug build
-
  - fix CURLcode on RST streams to be CURLE_PARTIAL_FILE
-
  - enable pytest test_05 for h2
-
  - fix upload pytests and improve parallel transfer performance.
-

-
  GOAWAY handling for ngtcp2/quiche
-
  - during connect, when the remote server refuses to accept new connections
-
    and closes immediately (so the local conn goes into DRAIN phase), the
-
    connection is torn down and a another attempt is made after a short grace
-
    period.
-
    This is the behaviour observed with nghttpx when we tell it to  shut
-
    down gracefully. Tested in pytest test_03_02.
-

-
  TLS improvements
-
  - ALPN selection for SSL/SSL-PROXY filters in one vtls set of functions, repl
-
  aces
-
    copy of logic in all tls backends.
-
  - standardized the infof logging of offered ALPNs
-
  - ALPN negotiated: have common function for all backends that sets alpn propr
-
  ty
-
    and connection related things based on the negotiated protocol (or lack the
-
  reof).
-

-
  - new tests/tests-httpd/scorecard.py for testing h3/h2 protocol implementatio
-
  n.
-
    Invoke:
-
      python3 tests/tests-httpd/scorecard.py --help
-
    for usage.
-

-
  Improvements on gathering connect statistics and socket access.
-
  - new CF_CTRL_CONN_REPORT_STATS cfilter control for having cfilters
-
    report connection statistics. This is triggered when the connection
-
    has completely connected.
-
  - new void Curl_pgrsTimeWas(..) method to report a timer update with
-
    a timestamp of when it happend. This allows for updating timers
-
    "later", e.g. a connect statistic after full connectivity has been
-
    reached.
-
  - in case of HTTP eyeballing, the previous changes will update
-
    statistics only from the filter chain that "won" the eyeballing.
-
  - new cfilter query CF_QUERY_SOCKET for retrieving the socket used
-
    by a filter chain.
-
    Added methods Curl_conn_cf_get_socket() and Curl_conn_get_socket()
-
    for convenient use of this query.
-
  - Change VTLS backend to query their sub-filters for the socket when
-
    checks during the handshake are made.
-

-
  HTTP/3 documentation on how https eyeballing works.
-

-
  TLS improvements
-
  - ALPN selection for SSL/SSL-PROXY filters in one vtls set of functions, repl
-
  aces
-
    copy of logic in all tls backends.
-
  - standardized the infof logging of offered ALPNs
-
  - ALPN negotiated: have common function for all backends that sets alpn propr
-
  ty
-
    and connection related things based on the negotiated protocol (or lack the
-
  reof).
-

-
  Scorecard with Caddy.
-
  - configure can be run with `--with-test-caddy=path` to specify which caddy t
-
  o use for testing
-
  - tests/tests-httpd/scorecard.py now measures download speeds with caddy
-

-
  pytest improvements
-
  - adding Makfile to clean gen dir
-
  - adding nghttpx rundir creation on start
-
  - checking httpd version 2.4.55 for test_05 cases where it is needed. Skippin
-
  g with message if too old.
-
  - catch exception when checking for caddy existance on system.
-

-
  Closes #10349
-

-
Daniel Stenberg (2 Feb 2023)
-

-
- CODEOWNERS: remove the peeps mentioned as CI owners
-

-
  These owners do not have the bandwidth/energy to do the reviews which
-
  makes PRs stall and this ownership claim flawed. We can bring people
-
  back when the situation is different.
-

-
  Follow-up to c04c78ac87c4d46737934345a
-

-
  Closes #10386
-

-
Martin D'Aloia (2 Feb 2023)
-

-
- write-out.d: add 'since version' to %{header_json} documentation
-

-
  The documentation of `%{header_json}` missed to mention since which
-
  version this variable for `--write-out` is present.
-

-
  Based on commit https://github.com/curl/curl/commit/4133a69f2daa476bb
-
  we can determine from the tags were this commit is present that the
-
  first version to include it was `7.83.0`.
-
  This could be also checked with:
-
  `git tag --contains 4133a69f2daa476bb6d902687f1dd6660ea9c3c5`
-

-
  Closes #10395
-

-
Daniel Stenberg (1 Feb 2023)
-

-
- urlapi: avoid Curl_dyn_addf() for hex outputs
-

-
  Inspired by the recent fixes to escape.c, we should avoid calling
-
  Curl_dyn_addf() in loops, perhaps in particular when adding something so
-
  simple as %HH codes - for performance reasons. This change makes the
-
  same thing for the URL parser's two URL-encoding loops.
-

-
  Closes #10384
-

-
- urlapi: skip path checks if path is just "/"
-

-
  As a miniscule optimization, treat a path of the length 1 as the same as
-
  non-existing, as it can only be a single leading slash, and that's what
-
  we do for no paths as well.
-

-
  Closes #10385
-

-
Philip Heiduck (1 Feb 2023)
-

-
- GHA/macos: use Xcode_14.0.1 for cmake builds
-

-
  Fixes #10356
-
  Closes #10381
-

-
Viktor Szakats (1 Feb 2023)
-

-
- tls: fixes for wolfssl + openssl combo builds
-

-
  1. Add `USE_WOLFSSL` to the TLS backend priority list in
-
     `lib/curl_ntlm_core.c`.
-

-
  2. Fix `lib/curl_ntlm_core.h` to respect TLS backend priority, bringing
-
     it in sync with the above list and `lib/curl_ntlm_core.c` itself.
-

-
     Reported-by: Mark Roszko
-
     Ref: https://github.com/curl/curl/issues/10321
-

-
  3. Allow enabling both wolfSSL and OpenSSL at the same time in
-
     `lib/Makefile.mk` bringing this in line with cmake/autotools builds.
-
     Update logic to select the crypto-specific lib for `ngtcp2`, which
-
     supports a single TLS backend at the same time.
-

-
  Closes #10322
-

-
Daniel Stenberg (1 Feb 2023)
-

-
- RELEASE-NOTES: synced
-

-
- docs/INSTALL: document how to use multiple TLS backends
-

-
  And document how OpenSSL forks and wolfSSL cannot be used at the same
-
  time.
-

-
  Reported-by: Mark Roszko
-
  Fixes #10321
-
  Closes #10382
-

-
Kvarec Lezki (1 Feb 2023)
-

-
- cookies: fp is always not NULL
-

-
  Closes #10383
-

-
Daniel Stenberg (31 Jan 2023)
-

-
- escape: use table lookup when adding %-codes to output
-

-
  On my dev host, this code runs 7.8 times faster.
-

-
  Closes #10377
-

-
- unit2600: avoid error: ‘TEST_CASES’ defined but not used
-

-
  Follow-up to d55de24dce9d51
-

-
  Closes #10379
-

-
- escape: hex decode with a lookup-table
-

-
  Makes the decoding 2.8 times faster in my tests.
-

-
  Closes #10376
-

-
- cf-socket: fix build error wo TCP_FASTOPEN_CONNECT
-

-
  Follow-up to 5651a36d1a
+
  Closes https://github.com/curl/curl/pull/10713

-
  Closes #10378
+
Dan Fandrich (8 Mar 2023)

-
  Reviewed-by: Stefan Eissing
+
- CI: Add more labeler match patterns

-
Stefan Eissing (31 Jan 2023)
+
  Also, add the  CI, tests or libcurl API tags in conjunction with any
+
  others that might also apply.

-
- CI: add pytest github workflow to CI test/tests-httpd on a HTTP/3 setup
+
Andy Alt (9 Mar 2023)

-
  Closes #10317
+
- GHA: minor improvements to spellcheck

-
- connect: fix strategy testing for attempts, timeouts and happy-eyeball
+
  Closes #10640

-
  - add test2600 as a unit test that triggers various connect conditions
-
    and monitors behaviour, available in a debug build only.
+
Daniel Stenberg (9 Mar 2023)

-
  - this exposed edge cases in connect.c that have been fixed
+
- test1671: fix after fix

-
  Closes #10312
+
- test421: -w %{header_json} test with multiple same header names

-
- cf-socket: improvements in socket I/O handling
+
  To reproduce the issue in #10704

-
  - Curl_write_plain/Curl_read_plain have been eliminated. Last code use
-
    now uses Curl_conn_send/recv so that requests use conn->send/revc
-
    callbacks which defaults to cfilters use.
-
  - Curl_recv_plain/Curl_send_plain have been internalized in cf-socket.c.
-
  - USE_RECV_BEFORE_SEND_WORKAROUND (active on Windows) has been moved
-
    into cf-socket.c. The pre_recv buffer is held at the socket filter
-
    context.  `postponed_data` structures have been removed from
-
    `connectdata`.
-
  - the hanger in HTTP/2 request handling was a result of read buffering
-
    on all sends and the multi handling is not prepared for this. The
-
    following happens:
+
- tool_writeout_json. fix the output for duplicate header names

-
     - multi preforms on a HTTP/2 easy handle
-
     - h2 reads and processes data
-
     - this leads to a send of h2 data
-
     - which receives and buffers before the send
-
     - h2 returns
-
     - multi selects on the socket, but no data arrives (its in the buffer alre
-
  ady)
-
     the workaround now receives data in a loop as long as there is something i
-
  n
-
     the buffer. The real fix would be for multi to change, so that `data_pendi
-
  ng`
-
     is evaluated before deciding to wait on the socket.
+
  Header entries with index != 0 are handled at the index 0 level so they
+
  should then be skipped when iterated over.

-
  io_buffer, optional, in cf-socket.c, http/2 sets state.drain if lower
-
  filter have pending data.
+
  Reported-by: Boris Okunskiy
+
  Fixes #10704
+
  Closes #10707

-
  This io_buffer is only available/used when the
-
  -DUSE_RECV_BEFORE_SEND_WORKAROUND is active, e.g. on Windows
-
  configurations. It also maintains the original checks on protocol
-
  handler being HTTP and conn->send/recv not being replaced.
+
- headers: make curl_easy_header and nextheader return different buffers

-
  The HTTP/2 (nghttp2) cfilter now sets data->state.drain when it finds
-
  out that the "lower" filter chain has still pending data at the end of
-
  its IO operation. This prevents the processing from becoming stalled.
+
  By letting curl_easy_header() and curl_easy_nextheader() store the
+
  header data in their own struct storage when they return a pointer to
+
  it, it makes it possible for applications to use them both in a loop.
+
  Like the curl tool does.

-
  Closes #10280
+
  Reported-by: Boris Okunskiy
+
  Fixes #10704
+
  Closes #10707

-
Daniel Stenberg (31 Jan 2023)
+
rcombs (8 Mar 2023)

-
- openssl: only use CA_BLOB if verifying peer
+
- urlapi: take const args in _dup and _get functions

-
  Reported-by: Paul Groke
-
  Bug: https://curl.se/mail/lib-2023-01/0070.html
-
  Fixes #10351
-
  Closes #10359
+
  Closes #10708

-
Thomas1664 on github (31 Jan 2023)
+
- urlapi: avoid mutating internals in getter routine

-
- curl_free.3: fix return type of `curl_free`
+
  This was not intended.

-
  Fixes #10373
-
  Closes #10374
+
  Closes #10708

-
Daniel Stenberg (30 Jan 2023)
+
Daniel Stenberg (8 Mar 2023)

-
- zuul: stop using this CI service
+
- urlapi: '%' is illegal in host names

-
  The important jobs have already transitioned. The remaining ones we can
-
  skip for now.
+
  Update test 1560 to verify

-
  Closes #10368
+
  Ref: #10708
+
  Closes #10711

-
- copyright: remove "m4/ax_compile_check_sizeof.m4" from skips
+
- ftp: make the 'ftpauth' a more normal 'char *'-array

-
  and report if skipped files do not exist.
+
  Closes #10703

-
  Follow-up to 9e11c2791fb960758 which removed the file.
+
Evgeny Grin (Karlson2k) (8 Mar 2023)

-
  Closes #10369
+
- doc: fix compiler warning in libcurl.m4

-
- ws: unstick connect-only shutdown
+
  Current test for curl_free() may produce warnings with strict compiler
+
  flags or even with default compiler flags with upcoming versions.
+
  These warning could turned into errors by -Werror or similar flags.
+
  Such warnings/errors are avoided by this patch.

-
  As this mode uses blocking sockets, it must set them back to
-
  non-blocking in disconnect to avoid the risk of getting stuck.
+
  Closes #10710

-
  Closes #10366
+
Viktor Szakats (8 Mar 2023)

-
- ws: remove bad assert
+
- misc: fix typos

-
  Reported-by: Stanley Wucw
-
  Fixes #10347
-
  Closes #10366
+
  Closes #10706

-
- openssl: adapt to boringssl's error code type
+
Stefan Eissing (7 Mar 2023)

-
  BoringSSL uses uint32_t, OpenSSL uses 'unsigned 'long'
+
- ftp: active mode with SSL, add the damn filter

-
  Closes #10360
+
  - since 7.87.0 we lost adding the SSL filter for an active
+
    FTP connection that uses SSL. This leads to hangers and timeouts
+
    as reported in #10666.

-
- tool_operate: repair --rate
+
  Reported-by: SandakovMM on github
+
  Fixes #10666
+
  Closes #10669

-
  Regression from a55256cfb242 (7.87.0)
-
  Reported-by: highmtworks on github
-
  Fixes #10357
-
  Closes #10358
+
Daniel Stenberg (7 Mar 2023)

-
- dict: URL decode the entire path always
+
- docs: extend the URL API descriptions

-
  Reported-by: dekerser on github
-
  Fixes #10298
-
  Closes #10354
+
  Closes #10701

-
Stefan Eissing (29 Jan 2023)
+
Stefan Eissing (7 Mar 2023)

-
- vtls: do not null-check when we already assume cf-ctx exists
+
- url: fix logic in connection reuse to deny reuse on "unclean" connections

-
  Fixes #10361
-
  Closes #10362
+
  - add parameter to `conn_is_alive()` cfilter method that returns
+
    if there is input data waiting on the connection
+
  - refrain from re-using connnection from the cache that have
+
    input pending
+
  - adapt http/2 and http/3 alive checks to digest pending input
+
    to check the connection state
+
  - remove check_cxn method from openssl as that was just doing
+
    what the socket filter now does.
+
  - add tests for connection reuse with special server configs

-
Daniel Stenberg (29 Jan 2023)
+
  Closes #10690

-
- RELEASE-NOTES: synced
+
Daniel Stenberg (6 Mar 2023)

-
- CURLOPT_READFUNCTION.3: the callback 'size' arg is always 1
+
- x509asn1: use plain %x, not %lx, when the arg is an int

-
  Reported-by: Brian Green
-
  Fixes #10328
-
  Closes #10355
+
  Pointed out by Coverity.

-
- copyright.pl: cease doing year verifications
+
  Closes #10689

-
  As we have (mostly) removed the copyright year ranges.
+
Stefan Eissing (6 Mar 2023)

-
  Reported-by: Ryan Schmidt
-
  Fixes #10345
-
  Closes #10352
+
- http2: fix handling of RST and GOAWAY to recognize partial transfers

-
Dan Fandrich (28 Jan 2023)
+
  - a reset transfer (HTTP/2 RST) did not always lead to the proper
+
    error message on receiving its response, leading to wrong reports
+
    of a successful transfer
+
  - test_05_02 was able to trigger this condition with increased transfer
+
    count. The simulated response errors did not carry a 'Content-Length'
+
    so only proper RST handling could detect the abort
+
  - When doing such transfers in parallel, a connection could enter the
+
    state where
+
    a) it had been closed (GOAWAY received)
+
    b) the RST had not been "seen" for the transfer yet
+
    or c) the GOAWAY announced an error and the last successful
+
    stream id was not checked against ongoing transfers

-
- CI: Work around a labeler bug that removes labels
+
  Closes #10693

-
Jay Satiro (26 Jan 2023)
+
- tests: use dynamic ports numbers in pytest suite

-
- write-out.d: clarify Windows % symbol escaping
+
  - necessary ports are bound at start of test suite and then
+
    given to server fixtures for use.
+
  - this make parallel use of pytest (in separate directories),
+
    practically safe for use as OS tend to not reuse such port numbers
+
    for a while

-
  - Clarify that in Windows batch files the % must be escaped as %%, and
-
    at the command prompt it cannot be escaped which could lead to
-
    incorrect expansion.
+
  Closes #10692

-
  Prior to this change the doc implied % must be escaped as %% in win32
-
  always.
+
- connect: fix time_connect and time_appconnect timer statistics

-
  ---
+
  - time_connect was not updated when the overall connection failed,
+
    e.g. when SSL verification was unsuccessful, refs #10670
+
  - rework gather those values to interrogate involved filters,
+
    also from all eyeballing attempts, to report the maximum of
+
    those values.
+
  - added 3 test cases in test_06 to check reported values on
+
    successful, partially failed and totally failed connections.

-
  Examples showing how a write-out argument is received by curl:
+
  Reported-by: Master Inspire
+
  Fixes #10670
+
  Closes #10671

-
  If curl --write-out "%{http_code}" is executed in a batch file:
-
  {http_code}
+
Daniel Stenberg (6 Mar 2023)

-
  If curl --write-out "%%{http_code}" is executed in a batch file:
-
  %{http_code}
+
- test1905: update output cookie order

-
  If curl --write-out "%{http_code}" is executed from the command prompt:
-
  %{http_code}
+
  After the #10685 update

-
  If curl --write-out "%%{http_code}" is executed from the command prompt:
-
  %%{http_code}
+
- test420: verify expiring cookies

-
  At the command prompt something like "%{speed_download}%{http_code}"
-
  would first be parsed by the command interpreter as %{speed_download}%
-
  and would be expanded as environment variable {speed_download} if it
-
  existed, though that's highly unlikely since Windows environment names
-
  don't use braces.
+
  Cookies that are loaded fine from a jar but then are expired in headers.

-
  ---
+
- cookie: don't load cookies again when flushing

-
  Reported-by: Muhammad Hussein Ammari
+
  Reported-by: Sergio Mijatovic
+
  Fixes #10677
+
  Closes #10685

-
  Ref: https://github.com/bagder/everything-curl/pull/279
+
- RELEASE-NOTES: synced

-
  Fixes https://github.com/curl/curl/issues/10323
-
  Closes https://github.com/curl/curl/pull/10337
+
Andy Alt (6 Mar 2023)

-
Ryan Schmidt (26 Jan 2023)
+
- docs: note '--data-urlencode' option

-
- connect: Fix build when not ENABLE_IPV6
+
  Closes #10687

-
  Check for ENABLE_IPV6 before accessing AF_INET6. Fixes build failure
-
  introduced in 1c5d8ac.
+
Daniel Stenberg (6 Mar 2023)

-
  Closes https://github.com/curl/curl/pull/10344
+
- DEPRECATE: the original legacy mingw version 1

-
- cf-socket: Fix build when not HAVE_GETPEERNAME
+
  Remove completely in September 2023

-
  Remove remaining references to conn and sockfd, which were removed from
-
  the function signature when conninfo_remote was renamed to
-
  conn_set_primary_ip in 6a8d7ef.
+
  Closes #10667

-
  Closes https://github.com/curl/curl/pull/10343
+
Harry Sintonen (6 Mar 2023)

-
Stefan Eissing (26 Jan 2023)
+
- rand: use arc4random as fallback when available

-
- vtls: Manage current easy handle in nested cfilter calls
+
  Normally curl uses cryptographically strong random provided by the
+
  selected SSL backend. If compiled without SSL support, a naive built-in
+
  function was used instead.

-
  The previous implementation cleared `data` so the outer invocation lost
-
  its data, which could lead to a crash.
+
  Generally this was okay, but it will result in some downsides for non-
+
  SSL builds, such as predictable temporary file names.

-
  Bug: https://github.com/curl/curl/issues/10336
-
  Reported-by: Fujii Hironori
+
  This change ensures that arc4random will be used instead, if available.

-
  Closes https://github.com/curl/curl/pull/10340
+
  Closes #10672

-
Dan Fandrich (25 Jan 2023)
+
Grisha Levit (6 Mar 2023)

-
- CI: Add even more paths to the labeler config (#10326)
+
- tool: dump headers even if file is write-only

-
- scripts: Fix Appveyor job detection in cijobs.pl
+
  The fixes in #10079 brought a (seemingly unrelated) change of open mode
+
  from `wb`/`ab` to `wb+`/`ab+` for the headerfile. This makes it no
+
  longer possible to write the header file to e.g. a pipe, like:

-
  The reorganization in #9769 broke the script. This should probably be
-
  rewritten to use a YAML parser for better upward compatibility.
+
      curl -D >(grep ...) file:///dev/null

-
- CI: Add a few more paths to the labeler config (#10326)
+
  Which presently results in `Warning: Failed to open /dev/fd/63`

-
- CI: Switch the labeler event to pull_request_target
+
  See #10079
+
  Closes #10675

-
  Otherwise, the action won't work on PRs from forked repositories
-
  (#10326).
+
Jay Satiro (6 Mar 2023)

-
Viktor Szakats (25 Jan 2023)
+
- tests: fix gnutls-serv check

-
- cmake: delete redundant macro definition `SECURITY_WIN32`
+
  - If gnutls-serv doesn't exist then don't try to execute it.

-
  Stop explicitly defining `SECURITY_WIN32` in CMake builds.
+
  Follow-up to 2fdc1d81.

-
  No other build systems define this macro, because it's unconditionally
-
  defined in `lib/curl_sspi.h` already. This is the only curl source using
-
  the `sspi.h` and `security.h` Win32 headers, and no other Win32 headers
-
  need this macro.
+
  Closes https://github.com/curl/curl/pull/10688

-
  Reviewed-by: Jay Satiro
-
  Closes #10341
+
Daniel Stenberg (6 Mar 2023)

-
Fredrik (24 Jan 2023)
+
- lib1560: fix enumerated type mixed with another type

-
- winbuild: document that arm64 is supported
+
  Follow-up to c84c0f9aa3bb006

-
  Building an arm64 version works flawlessly with the VS arm64 toolset.
+
  Closes #10684

-
  Closes https://github.com/curl/curl/pull/10332
+
Viktor Szakats (5 Mar 2023)
+

+
- cmake: fix enabling LDAPS on Windows

-
Cherish98 (24 Jan 2023)
+
  Before this patch, enabling LDAPS required a manual C flag:
+
  https://github.com/curl/curl-for-win/blob/c1cfc31cfc04f24f7a4f946564d6f0e1b4d
+
  7dd36/curl-cmake.sh#L105

-
- openssl: don't log raw record headers
+
  Fix this and enable LDAPS automatically when using `wldap32` (and
+
  when not explicitly disabled). This matches autotools and `Makefile.mk`
+
  behavior. Also remove issue from KNOWN_BUGS.

-
  - Skip content type SSL3_RT_HEADER in verbose TLS output.
+
  Add workaround for MSVS 2010 warning triggered by LDAPS now enabled
+
  in more CI tests:
+
  `ldap.c(360): warning C4306: 'type cast' : conversion from 'int' to 'void *' 
+
  of greater size`
+
  Ref: https://ci.appveyor.com/project/curlorg/curl/builds/46408284/job/v8mwl9y
+
  fbmoeqwlr#L312

-
  This commit prevents bogus and misleading verbose TLS header messages as
-
  discussed in #10299.
+
  Reported-by: JackBoosY on github
+
  Reviewed-by: Jay Satiro
+
  Reviewed-by: Marcel Raad
+
  Fixes #6284
+
  Closes #10674

-
  Assisted-by: Peter Wu
+
- Makefile.mk: delete redundant `HAVE_LDAP_SSL` macro [ci skip]

-
  Closes https://github.com/curl/curl/pull/10299
+
  Since abebb2b8939c6b3e0f951eb2d9ec3729b569aa2c, we set this macro for
+
  all Windows `wldap32` builds using `Makefile.mk`.

-
Marc Aldorasi (24 Jan 2023)
+
  For OpenLDAP builds this macro is not enough to enable LDAPS, and
+
  OpenLDAP is not an option in `Makefile.mk`. For Novell LDAP it might
+
  have helped, but it's also not an option anymore in `Makefile.mk`.

-
- cmake: use list APPEND syntax for CMAKE_REQUIRED_DEFINITIONS
+
  The future for LDAPS is that we should enable it by default without
+
  extra build knobs.

-
  - Use list() instead of set() for CMAKE_REQUIRED_DEFINITIONS list since
-
    the former is clearer.
+
  Reviewed-by: Marcel Raad
+
  Closes #10681

-
  Closes https://github.com/curl/curl/pull/10272
+
- cmake: skip CA-path/bundle auto-detection in cross-builds

-
Dan Fandrich (23 Jan 2023)
+
  Also remove issue from KNOWN_BUGS.

-
- CI: Add a workflow to automatically label pull requests
+
  Reported-by: Cristian Morales Vega
+
  Reviewed-by: Marcel Raad
+
  Fixes #6178
+
  Closes #10676

-
  The labeler language is quite restrictive right now so labels are added
-
  quite conservatively, meaning that many PRs won't get labels when it's
-
  "obvious" they should. It will still save some manual work on those
-
  that it can label.
+
Daniel Stenberg (3 Mar 2023)

-
Jay Satiro (21 Jan 2023)
+
- schannel: loop over the algos to pick the selected one

-
- system.h: assume OS400 is always built with ILEC compiler
+
  Avoid using the funny macro and the extra buffer copy.

-
  Prior to this change the OS400 types were only defined when __ILEC400__.
-
  That symbol is only defined by IBM's C compiler and not their C++
-
  compiler, which led to missing types when users on OS400 would compile a
-
  C++ application that included curl.
+
  Closes #10647

-
  The IBM C and C++ compilers are the only native compilers on the
-
  platform.
+
- wildcard: remove files and move functions into ftplistparser.c

-
  Assisted-by: Jon Rumsey
-
  Reported-by: John Sherrill
+
- ftp: allocate the wildcard struct on demand

-
  Fixes https://github.com/curl/curl/issues/10305
-
  Closes https://github.com/curl/curl/pull/10329
+
  The feature is rarely used so this frees up data for the vast majority
+
  of easy handles that don't use it.

-
xgladius (20 Jan 2023)
+
  Rename "protdata" to "ftpwc" since it is always an FTP wildcard struct
+
  pointer. Made the state struct field an unsigned char to save space.

-
- cmake: Remove deprecated symbols check
+
  Closes #10639

-
  curl stopped use of CMAKE_USE_ as a prefix for its own build symbols in
-
  2021 and added a check, meant to last 1 year, to fatally error on those
-
  symbols. This commit removes that check.
+
- lib1560: test parsing URLs with ridiculously large fields

-
  Closes https://github.com/curl/curl/pull/10314
+
  In the order of 120K.

-
Dan Fandrich (20 Jan 2023)
+
  Closes #10665

-
- docs: POSTFIELDSIZE must be set to -1 with read function
+
Brad Spencer (3 Mar 2023)

-
  Reported-by: RanBarLavie on github
+
- urlapi: parse IPv6 literals without ENABLE_IPV6

-
  Closes #10313
+
  This makes the URL parser API stable and working the same way
+
  independently of libcurl supporting IPv6 transfers or not.

-
Stefan Eissing (20 Jan 2023)
+
  Closes #10660

-
- vtls: fix hostname handling in filters
+
Jan Engelhardt (3 Mar 2023)

-
  - Copy the hostname and dispname to ssl_connect_data.
+
- build: drop the use of XC_AMEND_DISTCLEAN

-
  Use a copy instead of referencing the `connectdata` instance since this
-
  may get free'ed on connection reuse.
+
  Because automake used to delete depdirs at once (.deps) and there was an issu
+
  e
+
  with portability, curl's XC_AMEND_DISTCLEAN greps the Makefiles in an attempt
+
  to build a list of all depfiles and delete them individually instead.

-
  Reported-by: Stefan Talpalaru
-
  Reported-by: sergio-nsk@users.noreply.github.com
+
  Since commit 08849db866b44510f6b8fd49e313c91a43a3dfd3, automake switched from
+
  deleting directories to individual files. curl's custom logic now finds a lot
+
  more results with the grep (the filtering of these results isn't great), whic
+
  h
+
  causes a massive bloating of the Makefile in the order of O(n^2).

-
  Fixes https://github.com/curl/curl/issues/10273
-
  Fixes https://github.com/curl/curl/issues/10309
+
  Also remove now-unused XC_AMEND_DISTCLEAN macro group

-
  Closes https://github.com/curl/curl/pull/10310
+
  References: https://github.com/curl/curl/issues/9843
+
  References: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=59288

-
Sergey Bronnikov (17 Jan 2023)
+
  Reported-by: Ilmari Lauhakangas
+
  Fixes #9843
+
  Closes #10661

-
- lib: fix typos
+
Balakrishnan Balasubramanian (3 Mar 2023)

-
  Closes https://github.com/curl/curl/pull/10307
+
- test1470: test socks proxy using unix sockets and connect to https

-
- curl_version_info.3: fix typo
+
  Similar to test1468 except using https instead of http

-
  Closes https://github.com/curl/curl/pull/10306
+
  Closes #10662

-
Jay Satiro (17 Jan 2023)
+
Daniel Stenberg (3 Mar 2023)

-
- openssl: Don't ignore CA paths when using Windows CA store (redux)
+
- test1960: verify CURL_SOCKOPT_ALREADY_CONNECTED

-
  .. and remove 'experimental' designation from CURLSSLOPT_NATIVE_CA.
+
  When returned from the CURLOPT_SOCKOPTFUNCTION, like when we have a
+
  custom socket connected in the app, passed in to libcurl.

-
  This commit restores the behavior of CURLSSLOPT_NATIVE_CA so that it
-
  does not override CURLOPT_CAINFO / CURLOPT_CAPATH, or the hardcoded
-
  default locations. Instead the native Windows CA store can be used at
-
  the same time.
+
  Verifies the fix in #10648

-
  ---
+
  Closes #10651

-
  This behavior was originally added over two years ago in abbc5d60
-
  (#5585) but then 83393b1a (#7892) broke it over a year ago, I assume
-
  inadvertently.
+
Stefan Eissing (2 Mar 2023)

-
  The CURLSSLOPT_NATIVE_CA feature was marked experimental and likely
-
  rarely used.
+
- tests: rename tests/tests-httpd to tests/http

-
  Ref: https://github.com/curl/curl/pull/5585
-
  Ref: https://github.com/curl/curl/pull/7892
-
  Ref: https://curl.se/mail/lib-2023-01/0019.html
+
   - httpd is only one server we test with
+
   - the suite coveres the HTTP protocol in general where
+
     the default test cases need a more beefy environment

-
  Closes https://github.com/curl/curl/pull/10244
+
  Closes #10654

-
Daniel Stenberg (13 Jan 2023)
+
- socket: detect "dead" connections better, e.g. not fit for reuse

-
- RELEASE-NOTES: synced
+
  - refs #10646 where reuse was attempted on closed connections in the
+
    cache, leading to an exhaustion of retries on a transfer
+
  - the mistake was that poll events like POLLHUP, POLLERR, etc
+
    were regarded as "not dead".
+
  - change cf-socket filter check to regard such events as inidication
+
    of corpsiness.
+
  - vtls filter checks: fixed interpretation of backend check result
+
    when inconclusive to interrogate status further down the filter
+
    chain.

-
- ws: fix autoping handling
+
  Reported-by: SendSonS on github
+
  Fixes #10646
+
  Closes #10652

-
  Reported-by: Alexey Savchuk
-
  Fixes #10289
-
  Closes #10294
+
- lib: give source files cf-http.* better fitting names

-
- curl_log: avoid printf() format checking with mingw
+
  Closes #10656

-
  Since it does not seem to like %zu and more
+
- http2: fix code indent

-
  Follow-up to db91dbbf2
+
  Closes https://github.com/curl/curl/pull/10655

-
  Fixes #10291
-
  Closes #10292
+
Shankar Jadhavar (1 Mar 2023)

-
- tool_getparam: fix compiler warning when !HAVE_WRITABLE_ARGV
+
- cf-socket: if socket is already connected, return CURLE_OK

-
  Follow-up to 2ed0e1f70ee176edf3d2
+
  In 7.87.0, if callback method for CURLOPT_SOCKOPTFUNCTION returns
+
  CURL_SOCKOPT_ALREADY_CONNECTED then curl library used to return
+
  CURLE_OK.  n 7.88.0, now even if callback returns
+
  CURL_SOCKOPT_ALREADY_CONNECTED, curl library still tries to connect to
+
  socket by invoking method do_connect().

-
  Closes #10286
+
  This is regression caused by commit
+
  https://github.com/curl/curl/commit/71b7e0161032927cdfb

-
Stefan Eissing (12 Jan 2023)
+
  Fix: Check if we are already connected and return CURLE_OK.

-
- openssl: make the BIO_METHOD a local variable in the connection filter
+
  Fixes #10626
+
  Closes #10648

-
  This avoids UAF issues when `curl_global_cleanup()` is called before all
-
  transfers have been completely handled. Unfortunately this seems to be a
-
  more common pattern than we like.
+
Jay Satiro (1 Mar 2023)

-
  Closes #10285
+
- DYNBUF.md: note Curl_dyn_add* calls Curl_dyn_free on failure

-
Daniel Stenberg (12 Jan 2023)
+
  This is the existing behavior and it has been widely assumed in the
+
  codebase.

-
- curl: output warning at --verbose output for debug-enabled version
+
  Closes https://github.com/curl/curl/pull/10645

-
  + a libcurl warning in the debug output
+
Stefan Eissing (1 Mar 2023)

-
  Assisted-by: Jay Satiro
+
- http2: fix upload busy loop

-
  Ref: https://curl.se/mail/lib-2023-01/0039.html
-
  Closes #10278
+
  - Set KEEP_SEND_PAUSE when exhausting remote HTTP/2 window size of a
+
    stream.

-
- src: add --http3-only
+
  - Clear KEEP_SEND_PAUSE when receiving HTTP/2 window updates on a paused
+
    stream.

-
  Warning: --http3 and --http3-only are subject to change again (or be
-
  removed) before HTTP/3 support goes non-experimental.
+
  - Also fix http2 send compiler warnings reported in #10449.

-
  Closes #10264
+
  Prior to this change, starting in 71b7e016 which precedes 7.88.0,
+
  libcurl may eat CPU during HTTP/2 upload.

-
- curl.h: add CURL_HTTP_VERSION_3ONLY
+
  Reported-by: Jay Satiro

-
  As the previous CURL_HTTP_VERSION_3 option gets a slightly altered meaning.
+
  Fixes https://github.com/curl/curl/issues/10449
+
  Fixes https://github.com/curl/curl/issues/10618
+
  Closes https://github.com/curl/curl/pull/10627

-
  Closes #10264
+
Daniel Stenberg (1 Mar 2023)

-
- connect: fix access of pointer before NULL check
+
- sectransp: make read_cert() use a dynbuf when loading

-
  Detected by Coverity CID 1518992
+
  Closes #10632

-
  Closes #10284
+
Jay Satiro (1 Mar 2023)

-
Daniel Gustafsson (12 Jan 2023)
+
- transfer: limit Windows SO_SNDBUF updates to once a second

-
- easyoptions: Fix header printing in generation script
+
  - Change readwrite_upload() to call win_update_buffer_size() no more
+
    than once a second to update SO_SNDBUF (send buffer limit).

-
  The optiontable.pl script prints the header comment when generating
-
  easyoptions.c, but it wasn't escaping all characters which jumbled the
-
  curl ascii logo.  Fix by escaping.
+
  Prior to this change during an upload readwrite_upload() could call
+
  win_update_buffer_size() anywhere from hundreds of times per second to
+
  an extreme test case of 100k per second (which is likely due to a bug,
+
  see #10618). In the latter case WPA profiler showed
+
  win_update_buffer_size was the highest capture count in
+
  readwrite_upload. In any case the calls were excessive and unnecessary.

-
  Cloes #10275
+
  Ref: https://github.com/curl/curl/pull/2762

-
Harry Sintonen (12 Jan 2023)
+
  Closes https://github.com/curl/curl/pull/10611

-
- tool_getparam: fix hiding of command line secrets
+
Daniel Stenberg (28 Feb 2023)

-
  Closes #10276
+
- RELEASE-NOTES: synced

-
Stefan Eissing (12 Jan 2023)
+
Stefan Eissing (28 Feb 2023)

-
- tests: document the cfilter debug logging options
+
- http2: fix for http2-prior-knowledge when reusing connections

-
  Closes #10283
+
  - refs #10634 where errors in the HTTP/2 framing layer are observed.
+
  - the bug was that on connection reuse, the code attempted to switch
+
    in yet another layer of HTTP/2 handling instead of detecting that
+
    this was already in place.
+
  - added pytest testcase reproducing the issue.

-
- curl_log: for failf/infof and debug logging implementations
+
  Reported-by: rwmjones on github
+
  Fixes #10634
+
  Closes #10643

-
   - new functions and macros for cfilter debugging
-
   - set CURL_DEBUG with names of cfilters where debug logging should be
-
     enabled
-
   - use GNUC __attribute__ to enable printf format checks during compile
+
- cf-socket: fix handling of remote addr for accepted tcp sockets

-
  Closes #10271
+
  - do not try to determine the remote address of a listen socket. There
+
    is none.
+
  - Update remote address of an accepted socket by getpeername() if
+
    available.

-
Daniel Stenberg (10 Jan 2023)
+
  Reported-by: Harry Sintonen
+
  Fixes #10622
+
  Closes #10642

-
- RELEASE-NOTES: synced
+
- http: fix unix domain socket use in https connects

-
Nick Banks (10 Jan 2023)
+
  - when h2/h3 eyeballing was involved, unix domain socket
+
    configurations were not honoured
+
  - configuring --unix-socket will disable HTTP/3 as candidate for eyeballing
+
  - combinatino of --unix-socket and --http3-only will fail during initialisati
+
  on
+
  - adding pytest test_11 to reproduce

-
- msh3: update to v0.6
+
  Reported-by: Jelle van der Waa
+
  Fixes #10633
+
  Closes #10641

-
  Closes #10192
+
Daniel Stenberg (28 Feb 2023)

-
Stefan Eissing (10 Jan 2023)
+
- setopt: move the CURLOPT_CHUNK_DATA pointer to the set struct

-
- ngtcp2: add CURLOPT_SSL_CTX_FUNCTION support for openssl+wolfssl
+
  To make duphandle work etc

-
  Using common method for SSL_CTX initialization of verfiy peer and CA
-
  settings. This also provides X509_STORE sharing to become available for
-
  ngtcp2+openssl HTTP/3.
+
  Closes #10635

-
  Reported-by: violetlige on github
+
Viktor Szakats (28 Feb 2023)

-
  Fixes #10222
-
  Closes #10239
+
- quic/schannel: fix compiler warnings

-
Daniel Stenberg (10 Jan 2023)
+
  Fixes #10603
+
  Closes #10616

-
- cf-socket: make infof() call use %zu for size_t output
+
Daniel Stenberg (28 Feb 2023)

-
  Detected by Coverity CID 1518986 and CID 1518984
+
- page-footer: add explanation for three missing exit codes

-
  Closes #10268
+
  Added in 7.73.0, 7.77.0 and 7.84.0

-
Jon Rumsey (10 Jan 2023)
+
  Closes #10630

-
- os400: fixes to make-lib.sh and initscript.sh
+
積丹尼 Dan Jacobson (28 Feb 2023)

-
  Adjust how exports list is generated from header files to account for
-
  declarations across multiple lines and CURL_DEPRECATED(...) tags.
+
- rate.c: single URLs make no sense in --rate example

-
  Update initscript.sh
+
  Here somehow you need to put more than one URL in these examples, else
+
  they will make no sense, as --rate only affects the second and beyond
+
  URLs. The first URL will always finish the same time no matter what
+
  --rate is given.

-
  Specify qadrt_use_inline to prevent unistd.h in ASCII runtime defining
-
  close(a) -> close_a(a)
+
  Closes #10638

-
  Fixes #10266
-
  Closes #10267
+
Daniel Stenberg (28 Feb 2023)

-
Stefan Eissing (9 Jan 2023)
+
- libcurl-errors.3: add the CURLHcode errors from curl_easy_header.3

-
- tests-httpd: basic infra to run curl against an apache httpd plus nghttpx for
-
   h3
+
  Closes #10629

-
  - adding '--with-test-httpd=<path>' to configure non-standard apache2
-
    install
-
  - python env and base classes for running httpd
-
  - basic tests for connectivity with h1/h2/h3
-
  - adding test cases for truncated responses in http versions.
-
  - adding goaway test for HTTP/3.
-
  - adding "stuttering" tests with parallel downloads in chunks with
-
    varying delays between chunks.
+
- mqtt: on send error, return error

-
  - adding a curltest module to the httpd server, adding GOAWAY test.
-
      - mod_curltest now installs 2 handlers
-
        - 'echo': writing as response body what came as request body
-
        - 'tweak': with query parameters to tweak response behaviour
-
  - marked known fails as skip for now
+
  Reported-by: Maciej Domanski

-
  Closes #10175
+
  Closes #10623

-
- quic: improve connect error message, debugging info, fix false connect report
+
- ws: keep the socket non-blocking

-
  - ECONNECTREFUSED has not its own fail message in quic filters
-
  - Debug logging in connect eyballing improved
-
  - Fix bug in ngtcp2/quiche that could lead to false success reporting.
+
  Reported-by: marski on github
+
  Fixes #10615
+
  Closes #10625

-
  Reported-by: Divy Le Ray
+
- hostip: avoid sscanf and extra buffer copies

-
  Fixes #10245
-
  Closes #10248
+
  Also made create_hostcache_id() return the id length.

-
- quiche: fix build without any HTTP/2 implementation
+
  Closes #10601

-
  Fixes #10260
-
  Closes #10263
+
- PARALLEL-TRANSFERS.md: not "early days" for this anymore

-
Daniel Stenberg (9 Jan 2023)
+
  Refresh the language as the support is now over three years old

-
- .github/workflows/linux.yml: add a quiche CI job
+
  Closes #10624

-
  Move over from zuul
+
- easy: remove infof() debug leftover from curl_easy_recv

-
  Closes #10241
+
  It said "reached [path]/easy.c:1231"

-
- curl.h: allow up to 10M buffer size
+
  Closes #10628

-
  Bump the limit from 512K. There might be reasons for applications using
-
  h3 to set larger buffers and there is no strong reason for curl to have
-
  a very small maximum.
+
- idn: return error if the conversion ends up with a blank host

-
  Ref: https://curl.se/mail/lib-2023-01/0026.html
+
  Some IDN sequences are converted into "" (nothing), which can make this
+
  function end up with a zero length host name and we cannot consider that
+
  a valid host to continue with.

-
  Closes #10256
+
  Reported-by: Maciej Domanski
+
  Closes #10617

-
Tatsuhiro Tsujikawa (8 Jan 2023)
+
- examples/http3.c: use CURL_HTTP_VERSION_3

-
- GHA: use designated ngtcp2 and its dependencies versions
+
  and update the comment

-
  Designate ngtcp2 and its dependency versions so that the CI build does
-
  not fail without our control.
+
  Closes #10619

-
  Closes #10257
+
- x509asn1.c: use correct format specifier for infof() call

-
Daniel Stenberg (8 Jan 2023)
+
  Detected by Coverity

-
- docs/cmdline-opts/hsts.d: explain hsts more
+
  Closes #10614

-
  Closes #10258
+
- Revert "GHA: add Microsoft C++ Code Analysis"

-
Stefan Eissing (8 Jan 2023)
+
  This reverts commit e0db842b2a082dffad4a9fbe31321e9a75c74041.

-
- msh3: run again in its cfilter
+
  This tool seems very restricted in how often it might be used by a
+
  project and thus very quickly start to report fails simply because it
+
  refuses to run when "there are more runs than allowed".

-
  - test 2500, single GET works
-
  - test 2501, single POST stalls
-
  - test 2502, multiple, sequential GETs each use a new connection since
-
    MsH3ConnectionGetState(qconn) no longer reports CONNECTED after one
-
    GET.
+
  Closes #10613

-
  Closes #10204
+
Patrick Monnerat (25 Feb 2023)

-
Jay Satiro (8 Jan 2023)
+
- tests: test secure mail protocols with explicit SSL requests

-
- sendf: fix build for Linux TCP fastopen
+
  New tests 987, 988 and 989, disabled for rustls (hanging).

-
  - Fix the remote addr struct dereference.
+
  Closes #10077

-
  - Include cf-socket.h in urldata.h.
+
- tests: support for imaps/pop3s/smtps protocols

-
  Follow-up to 6a8d7ef9 which changed conn->ipaddr (Curl_addrinfo* )
-
  member to conn->remote_addr (Curl_sockaddr_ex *) several days ago.
+
  Closes #10077

-
  Reported-by: Stephan Guilloux
+
- runtests: use a hash table for server port numbers

-
  Fixes https://github.com/curl/curl/issues/10249
-
  Closes https://github.com/curl/curl/pull/10250
+
  Closes #10077

-
Daniel Stenberg (7 Jan 2023)
+
Andy Alt (25 Feb 2023)

-
- RELEASE-NOTES: synced
+
- INTERNALS.md: grammar

-
- setopt: move the SHA256 opt within #ifdef libssh2
+
  Closes #10607

-
  Because only the libssh2 backend not supports it and thus this should
-
  return error if this option is used other backends.
+
Daniel Stenberg (25 Feb 2023)

-
  Reported-by: Harry Sintonen
+
- RELEASE-NOTES: synced

-
  Closes #10255
+
Philip Heiduck (25 Feb 2023)

-
Patrick Monnerat (7 Jan 2023)
+
- .cirrus.yml: Bump to FreeBSD 13.2

-
- nss: implement data_pending method
+
  Closes #10270

-
  NSS currently uses the default Curl_none_data_pending() method which
-
  always returns false, causing TLS buffered input data to be missed.
+
- ngtcp2-gnutls.yml: bump to gnutls 3.8.0

-
  The current commit implements the nss_data_pending() method that properly
-
  monitors the presence of available TLS data.
+
  Closes #10507

-
  Ref:#10077
+
- CI: update ngtcp2 and nghttp2 for pytest

-
  Closes #10225
+
  Follow-up: https://github.com/curl/curl/commit/5c9ee8cef4b351a085b440f8178500
+
  124647f8e6

-
Jay Satiro (6 Jan 2023)
+
  Closes #10508

-
- CURLOPT_HEADERDATA.3: warn DLL users must set write function
+
Andy Alt (25 Feb 2023)

-
  - Warn that in Windows if libcurl is running from a DLL and if
-
    CURLOPT_HEADERDATA is set then CURLOPT_WRITEFUNCTION or
-
    CURLOPT_HEADERFUNCTION must be set as well, otherwise the user may
-
    experience crashes.
+
- GHA: use same flags for Slackbuild as Slack package

-
  We already have a similar warning in CURLOPT_WRITEDATA. Basically, in
-
  Windows libcurl could crash writing a FILE pointer that was created by
-
  a different C runtime. In Windows each DLL that is part of a program may
-
  or may not have its own C runtime.
+
  Closes #10526

-
  Ref: https://github.com/curl/curl/issues/10231
+
Daniel Stenberg (24 Feb 2023)

-
  Closes https://github.com/curl/curl/pull/10233
+
- rtsp: avoid sscanf for parsing

-
Jon Rumsey (5 Jan 2023)
+
  Closes #10605

-
- x509asn1: fix compile errors and warnings
+
- http_proxy: parse the status line without sscanf

-
  Various small issues when built for GSKit
+
  Closes #10602

-
  Closes #10238
+
- telnet: error correctly for WS set to "x[num]"

-
Patrick Monnerat (5 Jan 2023)
+
  Follow-up to e4f93be9d587
+
  Reported-by: Harry Sintonen
+
  Closes #10606

-
- runtests: fix detection of TLS backends
+
- krb5: avoid sscanf for parsing

-
  Built-in TLS backends are detected at test time by scanning for their
-
  names in the version string line returned by the cli tool: as this line
-
  may also list the libssh configuration that mentions its own backend,
-
  the curl backend may be wrongly determined.
+
  Closes #10599

-
  In example, if the version line contains "libssh/0.10.4/openssl/zlib",
-
  OpenSSL is detected as a curl-configured backend even if not.
+
- misc: remove support for curl_off_t < 8 bytes

-
  This fix requires the backend names to appear as full words preceded by
-
  spacing in the version line to be recognized as curl TLS backends.
+
  Closes #10597

-
  Closes #10236
+
- telnet: parse NEW_ENVIRON without sscanf

-
Andy Alt (5 Jan 2023)
+
  Closes #10596

-
- GHA: add job on Slackware 15.0
+
- telnet: parse the WS= argument without sscanf

-
  Closes #10230
+
  Closes #10596

-
Daniel Stenberg (5 Jan 2023)
+
- telnet: parse telnet options without sscanf

-
- test363: make even smaller writes to loop more
+
  Closes #10596

-
- http_proxy: do not assign data->req.p.http use local copy
+
- ftp: replace sscanf for MDTM 213 response parsing

-
  Avoid the tricky reusing of the data->req.p.http pointer for http proxy
-
  tunneling.
+
  Closes #10590

-
  Fixes #10194
-
  Closes #10234
+
- ftp: replace sscanf for PASV parsing

-
Stefan Eissing (5 Jan 2023)
+
  Closes #10590

-
- quic: rename vquic implementations, fix for quiche build.
+
- ftp: make the EPSV response parser not use sscanf

-
  - quiche in debug mode did not build, fixed.
-
  - moved all vquic implementation files to prefix curl_* to avoid
-
    the potential mixups between provided .h files and our own.
-
  - quich passes test 2500 and 2502. 2501, the POST, fail with
-
    the body being rejected. Quich bug?
+
  Closes #10590

-
  Closes #10242
+
Stefan Eissing (24 Feb 2023)

-
- sectransp: fix for incomplete read/writes
+
- ngtcp2: fix unwanted close of file descriptor 0

-
  SecureTransport expects result code errSSLWouldBlock when the requested
-
  length could not be sent/recieved in full. The previous code returned
-
  noErr, which let SecureTransport to believe that the IO had terminated
-
  prematurely.
+
  ... causing macOS to hand out 0 as next socket handle and failing on
+
  further operations.

-
  Fixes #10227
-
  Closes #10235
+
  Reported-by: Sergey Fionov
+
  Fixes #10593
+
  Closes #10595

-
Andy Alt (5 Jan 2023)
+
Daniel Stenberg (23 Feb 2023)

-
- GHA: Hacktoberfest CI: Update deprecated 'set-output' command
+
- select: stop treating POLLRDBAND as an error

-
  Closes #10221
+
  POLLRDBAND does not seem to be an general error and on Windows the value
+
  for POLLIN is 768 and the value for POLLRDBAND is 512.

-
Jay Satiro (5 Jan 2023)
+
  Fixes #10501
+
  Reported-by: opensslonzos-github on github
+
  Closes #10592

-
- scripts: set file mode +x on all perl and shell scripts
+
- test978: mark file as text mode

-
  - Set all scripts +x, ie 644 => 755.
+
  Follow-up to 4ea5702980cb

-
  Prior to this change some scripts were not executable and therefore
-
  could not be called directly.
+
  To fix test failures on Windows

-
  ~~~
-
  git ls-files -s \*.{sh,pl,py} | grep -v 100755
-
  ~~~
+
  Closes #10594

-
  Closes https://github.com/curl/curl/pull/10219
+
- http: rewrite the status line parser without sscanf

-
Stefan Eissing (4 Jan 2023)
+
  Closes #10585

-
- tool_operate: fix headerfile writing
+
- test978: verify that --stderr works for -w's stderr as well

-
  Do not rely on the first transfer started to be the first to get a
-
  response (remember -Z). All transfers now write the headefile (-D) in
-
  append mode, making sure that the order of transfer responses does not
-
  lead to overwrites of previous data.
+
Jay Satiro (23 Feb 2023)

-
  Closes #10224
+
- curl: make -w's %{stderr} use the file set with --stderr

-
Daniel Stenberg (4 Jan 2023)
+
  Reported-by: u20221022 on github
+
  Fixes #10491
+
  Closes #10569

-
- misc: reduce struct and struct field sizes
+
- winbuild: fix makefile clean

-
  - by using BIT() instead of bool
-
  - imap: shrink struct
-
  - ftp: make state 'unsigned char'
-
  - ftp: sort ftp_conn struct entries on size
-
  - urldata: use smaller fields for SSL version info storage
-
  - pop3: reduce the pop3_conn struct size
-
  - smtp: reduce the size of the smtp structs
+
  - Fix and move 'clean' code that removes the output and obj directories
+
    trees from MakefileBuild.vc to Makefile.vc.

-
  Closes #10186
+
  Prior to this change the 'clean' code did not work right because the
+
  variables containing the directory names were not fully initialized and
+
  the rmdir syntax was sometimes incorrect (typos). DIRDIST for example
+
  was set to ..\builds\ and not ..\builds\$(CONFIG_NAME_LIB)\ so it would
+
  remove the former and not the latter. If WITH_PREFIX was set then that
+
  directory was removed instead.

-
- noproxy: support for space-separated names is deprecated
+
  Also, DIRDIST (the output directory) even if initialized should not be
+
  removed by MakefileBuild.vc because by that time it could be set to a
+
  user directory that may contain other files if WITH_PREFIX is set (eg we
+
  don't want rmdir /s /q C:\usr\local). Therefore we remove from
+
  Makefile.vc before any of that happens. I added a comment in both
+
  makefiles explaining this.

-
  To be removed in July 2024.
+
  Closes https://github.com/curl/curl/pull/10576

-
  Assisted-by: Michael Osipov
-
  Fixes #10209
-
  Closes #10215
+
- sectransp: fix compiler warning c89 mixed code/declaration

-
Andrei Rybak (4 Jan 2023)
+
  Since cbf57176 the Cirrus CI 'macOS arm64 SecureTransport http2' has
+
  been failing due to c89 warnings mixed code/declaration. That commit is
+
  not the cause so I assume something has changed in the CI outside of our
+
  configuration. Anyway, we don't mix code/declaration so this is the fix
+
  for that.

-
- lib: fix typos in comments which repeat a word
+
  Closes https://github.com/curl/curl/pull/10574

-
  Remove erroneously duplicated words in code comments of files
-
  `lib.connect.c` and `lib/url.c`.
+
Philipp Engel (22 Feb 2023)

-
  Closes #10220
+
- BINDINGS: add Fortran binding

-
Radek Brich (3 Jan 2023)
+
  Closes #10589

-
- cmake: set SOVERSION also for macOS
+
Stefan Eissing (22 Feb 2023)

-
  Closes #10214
+
- test2600: detect when ALARM_TIMEOUT is in use and adjust

-
Jay Satiro (3 Jan 2023)
+
  - use higher timeout values > 1s
+
  - skip duration checks

-
- http2: fix compiler warning due to uninitialized variable
+
  Assisted-by: Marcel Raad
+
  Closes #10513

-
  Prior to this change http2_cfilter_add could return an uninitialized
-
  cfilter pointer in an OOM condition. In this case though, the pointer
-
  is discarded and not dereferenced so there was no risk of a crash.
+
Daniel Stenberg (22 Feb 2023)

-
Stefan Eissing (3 Jan 2023)
+
- RELEASE-NOTES: synced

-
- cf-socket: keep sockaddr local in the socket filters
+
- test686: verify return code for no URL after --next

-
  - copy `struct Curl_addrinfo` on filter setup into context
-
  - remove `struct Curl_addrinfoi *` with `struct Curl_sockaddr_ex *` in
-
    connectdata that is set and NULLed by the socket filter
-
  - this means we have no reference to the resolver info in connectdata or
-
    its filters
-
  - trigger the CF_CTRL_CONN_INFO_UPDATE event when the complete filter
-
    chain reaches connected status
-
  - update easy handle connection information on CF_CTRL_DATA_SETUP event.
+
- tool_operate: propagate error codes for missing URL after --next

-
  Closes #10213
+
  Fixes #10558
+
  Reported-by: u20221022 on github
+
  Closes #10580

-
Daniel Stenberg (3 Jan 2023)
+
- test1278: verify that an extra --no-remote-name cause no warning

-
- RELEASE-NOTES: synced
+
- tool_getparam: don't add a new node for just --no-remote-name

-
- runtests: consider warnings fatal and error on them
+
  Unless --remote-name-all is used.

-
  To help us detect and fix warnings in this script easier and faster.
+
  Fixes #10564
+
  Reported-by: u20221022 on github
+
  Closes #10582

-
  Assisted-by: Jakob Hirsch
+
- gen.pl: add '%GLOBALS' as a variable for mainpage

-
  Ref: #10206
-
  Closes #10208
+
  And use it in page-header to list all global command line options.

-
- copyright: update all copyright lines and remove year ranges
+
- docs/cmdline-opts: mark all global options

-
  - they are mostly pointless in all major jurisdictions
-
  - many big corporations and projects already don't use them
-
  - saves us from pointless churn
-
  - git keeps history for us
-
  - the year range is kept in COPYING
+
  gen.pl now outputs a generic explanations for them for each option

-
  checksrc is updated to allow non-year using copyright statements
+
  Fixes #10566
+
  Reported-by: u20221022 on github
+
  Closes #10584

-
  Closes #10205
+
- GHA: add Microsoft C++ Code Analysis

-
- docs/DEPRECATE.md: deprecate gskit
+
  Closes #10583

-
  Ref: #10163
+
- tool_progress: shut off progress meter for --silent in parallel

-
  - This is a niche TLS library, only running on some IBM systems
-
  - no regular curl contributors use this backend
-
  - no CI builds use or verify this backend
-
  - gskit, or the curl adaption for it, lacks many modern TLS features
-
    making it an inferior solution
-
  - build breakages in this code take weeks or more to get detected
-
  - fixing gskit code is mostly done "flying blind"
+
  Reported-by: finkjsc on github
+
  Fixes #10573
+
  Closes #10579

-
  Closes #10201
+
- lib1560: add a test using %25 in the userinfo in a URL

-
- Revert "x509asn1: avoid freeing unallocated pointers"
+
  Closes #10578

-
  This reverts commit 6b19247e794cfdf4ec63c5880d8f4f5485f653ab.
+
Stefan Eissing (21 Feb 2023)

-
  Fixes #10163
-
  Closes #10207
+
- CURLOPT_PIPEWAIT: allow waited reuse also for subsequent connections

-
- ngtcp2: fix the build without 'sendmsg'
+
  As tested in test_02_07, when firing off 200 urls with --parallel, 199
+
  wait for the first connection to be established. if that is multiuse,
+
  urls are added up to its capacity.

-
  Follow-up from 71b7e0161032
+
  The first url over capacity opens another connection. But subsequent
+
  urls found the same situation and open a connection too. They should
+
  have waited for the second connection to actually connect and make its
+
  capacity known.

-
  Closes #10210
+
  This change fixes that by

-
- cmake: check for sendmsg
+
  - setting `connkeep()` early in the HTTP setup handler. as otherwise
+
    a new connection is marked as closeit by default and not considered
+
    for multiuse at all
+
  - checking the "connected" status for a candidate always and continuing
+
    to PIPEWAIT if no alternative is found.

-
  Used by ngtcp2
+
  pytest:
+
  - removed "skip" from test_02_07
+
  - added test_02_07b to check that http/1.1 continues to work as before

-
  Closes #10211
+
  Closes #10456

-
Timmy Schierling (2 Jan 2023)
+
Daniel Stenberg (21 Feb 2023)

-
- runtest.pl: add expected fourth return value
+
- test419: verify --dump-header to file that cannot be created

-
  Fixes warning in autobild log: "Use of uninitialized value $HTTP2TLSPORT
-
  in substitution iterator at /tests/runtests.pl line 3516"
+
  Closes #10571

-
  Closes #10206
+
- tool_operate: avoid fclose(NULL) on bad header dump file

-
Daniel Stenberg (2 Jan 2023)
+
  Fixes #10570
+
  Reported-by: Jérémy Rabasco
+
  Closes #10571

-
- http2: when using printf %.*s, the length arg must be 'int'
+
- RELEASE-NOTES: synced

-
  Detected by Coverity CID 1518341
+
  Starting the journey towards 8.0.0

-
  Closes #10203
+
- cookie: parse without sscanf()

-
- cfilters: check for NULL before using pointer
+
  Saves us from using 2*4096 bytes buffers on stack, the extra copies and
+
  more.

-
  Detected by Coverity CID 1518343
+
  Closes #10550

-
  Closes #10202
+
- lib517: verify time stamps without leading zeroes plus some more

-
- http2: in connisdead check, attach the connection before reading
+
- parsedate: replace sscanf( for time stamp parsing

-
  Otherwise data->conn is NULL and things go wrong.
+
  Closes #10547

-
  This problem caused occastional failures in test 359, 1700 and more
-
  depending on timing and the alignment of various planets.
+
- parsedate: parse strings without using sscanf()

-
  Assisted-by: Stefan Eissing
+
  - sscanf is slow and complex, avoid it
+
  - give up already if the string is 12 bytes or longer as no valid string
+
    can be that long
+
  - this can now be done without copy

-
  Closes #10199
+
  Closes #10547

-
Philip Heiduck (2 Jan 2023)
+
Matt Jolly (20 Feb 2023)

-
- Linux CI: update some dependecies to latest tag
+
- tests: HTTP server fixups

-
  Closes #10195
+
  - httpserver.pl -> http-server.pl for consistency
+
  - add http3-server.pl to EXTRA_DIST; alphabetise for maintainability
+
  - nghttpx proxy invocation scripts should not use getcwd

-
Daniel Stenberg (2 Jan 2023)
+
  Closes #10568

-
- c-hyper: move down the Accept-Encoding header generation
+
Version 7.88.1 (20 Feb 2023)

-
  To match the internal HTTP request header order so that test 1277 works
-
  again.
+
Daniel Stenberg (20 Feb 2023)

-
  Closes #10200
+
- RELEASE-NOTES: synced

-
- release-notes.pl: check fixes/closes lines better
+
  7.88.1 release

-
  To better skip lines that just happen to mention those words at the
-
  start of a line without being instructions.
+
- THANKS: add contributors from 7.88.1

-
- test1560: use a UTF8-using locale when run
+
- socketpair: allow EWOULDBLOCK when reading the pair check bytes

-
  There are odd cases that don't use UTF8 and then the IDN handling goes
-
  wrong.
+
  Reported-by: Gunamoi Software
+
  Co-authored-by: Jay Satiro
+
  Fixes #10561
+
  Closes #10562

-
  Reported-by: Marcel Raad
-
  Fixes #10193
-
  Closes #10196
+
Jay Satiro (18 Feb 2023)

-
- cf-socket: fix build regression
+
- tool_operate: fix scanbuild compiler warning

-
  Reported-by: Stephan Guilloux
-
  Fixes #10190
-
  Closes #10191
+
  Prior to this change Azure CI scanbuild warned of a potential NULL
+
  pointer string passed to strtol when CURLDEBUG enabled, even though the
+
  way the code was written it wouldn't have happened.

-
- examples: remove the curlgtk.c example
+
  Bug: https://github.com/curl/curl/commit/5479d991#r101159711
+
  Reported-by: Marcel Raad

-
  - it does not add a lot of value
-
  - we do not test-build it to verify because of its dependencies
-
  - unclear for what GTK versions it works or not
+
  Closes https://github.com/curl/curl/pull/10559

-
  Reported-by: odek86 on github
+
- curl_setup: Suppress OpenSSL 3 deprecation warnings

-
  Fixes #10197
-
  Closes #10198
+
  - Define OPENSSL_SUPPRESS_DEPRECATED.

-
Andy Alt (2 Jan 2023)
+
  OpenSSL 3 has deprecated some of the functions libcurl uses such as
+
  those with DES, MD5 and ENGINE prefix. We don't have replacements for
+
  those functions so the warnings were disabled in autotools and cmake
+
  builds, but still showed in other builds.

-
- docs: add link to GitHub Discussions
+
  Closes https://github.com/curl/curl/pull/10543

-
  Closes #10171
+
- build-openssl.bat: keep OpenSSL 3 engine binaries

-
- GHA: ignore changes to md files for most workflows
+
  Prior to this change copying the OpenSSL 3 engine binaries failed
+
  because 'engines-1_1' (OpenSSL 1.1.x folder name) was erroneously used
+
  instead of 'engines-3'. The OpenSSL 3 builds would complete successfully
+
  but without the engine binaries.

-
  Closes #10176
+
  Closes https://github.com/curl/curl/pull/10542

-
Josh Brobst (2 Jan 2023)
+
ALittleDruid (18 Feb 2023)

-
- http: decode transfer encoding first
+
- cmake: fix Windows check for CryptAcquireContext

-
  The unencoding stack is added to as Transfer-Encoding and
-
  Content-Encoding fields are encountered with no distinction between the
-
  two, meaning the stack will be incorrect if, e.g., the message has both
-
  fields and a non-chunked Transfer-Encoding comes first. This commit
-
  fixes this by ordering the stack with transfer encodings first.
+
  Check for CryptAcquireContext in windows.h and wincrypt.h only, since
+
  otherwise this check may fail due to third party headers not found.

-
  Reviewed-by: Patrick Monnerat
-
  Closes #10187
+
  Closes https://github.com/curl/curl/pull/10353

-
Daniel Stenberg (1 Jan 2023)
+
Daniel Stenberg (19 Feb 2023)

-
- curl.h: mark CURLSSLBACKEND_MESALINK as deprecated
+
- remote-header-name.d: mention that filename* is not supported

-
  Follow-up since 223f26c28a340b36
+
  and that you can use --clobber to allow overwriting.

-
  Deprecated since 7.82.0
+
  Ref: #10533
+
  Closes #10555

-
  Closes #10189
+
  Co-authored-by: Jay Satiro <raysatiro@yahoo.com>

-
- curl_global_sslset.3: clarify the openssl situation
+
Pierrick Charron (18 Feb 2023)

-
  and add rustls
+
- CURLOPT_WS_OPTIONS.3: fix the availability version

-
  Closes #10188
+
  Closes #10557

-
Cameron Blomquist (1 Jan 2023)
+
Jacob Hoffman-Andrews (18 Feb 2023)

-
- http: add additional condition for including stdint.h
+
- GHA: update rustls dependency to 0.9.2

-
  stdint.h was only included in http.h when ENABLE_QUIC was defined, but
-
  symbols from stdint.h are also used when USE_NGHTTP2 is defined. This
-
  causes build errors when USE_NGHTTP2 is defined but ENABLE_QUIC is not.
+
  This allows re-enabling test 312 for the rustls backend.

-
  Closes #10185
+
  Closes #10553

-
Daniel Stenberg (31 Dec 2022)
+
Philip Heiduck (18 Feb 2023)

-
- urldata: cease storing TLS auth type
+
- HTTP3.md: update git branches

-
  The only TLS auth type libcurl ever supported is SRP and that is the
-
  default type. Since nobody ever sets any other type, there is no point
-
  in wasting space to store the set type and code to check the type.
+
  Closes #10554

-
  If TLS auth is used, SRP is now implied.
+
Stefan Eissing (17 Feb 2023)

-
  Closes #10181
+
- urldata: remove `now` from struct SingleRequest - not needed

-
- vtls: use ALPN HTTP/1.0 when HTTP/1.0 is used
+
  Closes #10549

-
  Previously libcurl would use the HTTP/1.1 ALPN id even when the
-
  application specified HTTP/1.0.
+
Daniel Stenberg (17 Feb 2023)

-
  Reported-by: William Tang
-
  Ref: #10183
+
- lib1560: add IPv6 canonicalization tests

-
Marcel Raad (30 Dec 2022)
+
  Closes #10552

-
- lib670: make test.h the first include
+
- RELEASE-NOTES: synced

-
  As in all other lib tests. This avoids a macro redefinition warning for
-
  `_FILE_OFFSET_BITS` visible in the autobuilds.
+
- urlapi: do the port number extraction without using sscanf()

-
  Closes https://github.com/curl/curl/pull/10182
+
  - sscanf() is rather complex and slow, strchr() much simpler

-
Stefan Eissing (30 Dec 2022)
+
  - the port number function does not need to fully verify the IPv6 address
+
    anyway as it is done later in the hostname_check() function and doing
+
    it twice is unnecessary.

-
- lib: connect/h2/h3 refactor
+
  Closes #10541

-
  Refactoring of connection setup and happy eyeballing. Move
-
  nghttp2. ngtcp2, quiche and msh3 into connection filters.
+
Stefan Eissing (17 Feb 2023)

-
   - eyeballing cfilter that uses sub-filters for performing parallel connects
-
   - socket cfilter for all transport types, including QUIC
-
   - QUIC implementations in cfilter, can now participate in eyeballing
-
   - connection setup is more dynamic in order to adapt to what filter did
-
     really connect.  Relevant to see if a SSL filter needs to be added or
-
     if SSL has already been provided
-
   - HTTP/3 test cases similar to HTTP/2
-
   - multiuse of parallel transfers for HTTP/3, tested for ngtcp2 and quiche
+
- setopt: allow HTTP3 when HTTP2 is not defined

-
   - Fix for data attach/detach in VTLS filters that could lead to crashes
-
     during parallel transfers.
-
   - Eliminating setup() methods in cfilters, no longer needed.
-
   - Improving Curl_conn_is_alive() to replace Curl_connalive() and
-
     integrated ssl alive checks into cfilter.
-
   - Adding CF_CNTRL_CONN_INFO_UPDATE to tell filters to update
-
     connection into and persist it at the easy handle.
+
  Reported-by: Karthikdasari0423 on github
+
  Fixes #10538
+
  Closes #10544

-
   - Several more cfilter related cleanups and moves:
-
     - stream_weigth and dependency info is now wrapped in struct
-
       Curl_data_priority
-
     - Curl_data_priority members depend is available in HTTP2|HTTP3
-
     - Curl_data_priority members depend on NGHTTP2 support
-
     - handling init/reset/cleanup of priority part of url.c
-
     - data->state.priority same struct, but shallow copy for compares only
+
Jon Rumsey (17 Feb 2023)

-
   - PROTOPT_STREAM has been removed
-
     - Curl_conn_is_mulitplex() now available to check on capability
+
- os400: correct Curl_os400_sendto()

-
   - Adding query method to connection filters.
-
     - ngtcp2+quiche: implementing query for max concurrent transfers.
+
  Add const qualifier to 5th argument of Curl_os400_sendto()

-
   - Adding is_alive and keep_alive cfilter methods. Adding DATA_SETUP event.
-
     - setting keepalive timestamp on connect
-
     - DATA_SETUP is called after the connection has been completely
-
       setup (but may not connected yet) to allow filters to initialize
-
       data members they use.
+
  Make OS400 wrapper for sendto match the normal prototype of sendto()
+
  with a const qualifier.

-
   - there is no socket to be had with msh3, it is unclear how select
-
     shall work
+
  Fixes #10539
+
  Closes #10548

-
   - manual test via "curl --http3 https://curl.se" fail with "empty
-
     reply from server".
+
Stefan Eissing (17 Feb 2023)

-
   - Various socket/conn related cleanups:
-
     - Curl_socket is now Curl_socket_open and in cf-socket.c
-
     - Curl_closesocket is now Curl_socket_close and in cf-socket.c
-
     - Curl_ssl_use has been replaced with Cur_conn_is_ssl
-
     - Curl_conn_tcp_accepted_set has been split into
-
       Curl_conn_tcp_listen_set and Curl_conn_tcp_accepted_set
-
       with a clearer purpose
+
- tests-httpd: add proxy tests

-
  Closes #10141
+
  for direct and tunneling checks on http: and https:

-
Daniel Stenberg (30 Dec 2022)
+
  Closes #10519

-
- RELEASE-NOTES: synced
+
Daniel Stenberg (17 Feb 2023)

-
- docs/libcurl/curl_getdate.3: minor whitespace edit
+
- curl: make --silent work stand-alone

-
  To avoid a fccp quirk that made it render wrongly on the website
+
  - renamed the struct field to 'silent' to match the cmdline option
+
  - make --show-error toggle independently of --silent
+
  - make --silent independent of ->noprogress as well

-
- transfer: break the read loop when RECV is cleared
+
  By doing this, the three options --silent, --no-progress-meter and
+
  --show-error should work independently of each other and also work with
+
  and without '--no-' prefix as documented.

-
  When the RECV bit is cleared because the response reading for this
-
  transfer is complete, the read loop should be stopped. data_pending()
-
  can otherwise still return TRUE and another read would be attempted.
+
  Reported-by: u20221022 on github
+
  Fixes #10535
+
  Closes #10536

-
  Reported-by: Hide Ishikawa
-
  Fixes #10172
-
  Closes #10174
+
- socks: allow using DoH to resolve host names

-
- multihandle: turn bool struct fields into bits
+
  For SOCKS modes where a local host resolve is done.

-
  Closes #10179
+
  It was previously disabled in 12d655d4561, but a few local tests seem to
+
  indicate that it works fine. Works now because of the SOCKS refactor of
+
  4a4b63daaa01ef59 that made it non-blocking.

-
Stefan Eissing (30 Dec 2022)
+
  Reported-by: roughtex on github
+
  Fixes #10537
+
  Closes #10540

-
- ftpserver: lower the normal DATA connect timeout to speed up torture tests
+
Stefan Eissing (17 Feb 2023)

-
  - tests/ftpserver.pl blocks when expecting a DATA connection from the
-
    client.
+
- test: add test for HTTP/2 corruption as reported in #10525

-
  - the previous 10 seconds were encountered repeatedly in torture tests
-
    and let to long waits.
+
  - adding test_02_20 for reproducing the situation
+
  - using recently released mod_h2 Apache module
+
  - skipping test if an older version is installed
+
  - adding installation of current mod_h2 to github pytest workflow

-
  - 2 seconds should still be sufficient for current hw, but CI will show.
+
  This reproduces the error reliable (for me) on the lib/http2.c version
+
  of curl 7.88.0. And passes with the recent curl master.

-
  Closes #10178
+
  Closes #10534

-
Nick Banks (28 Dec 2022)
+
Daniel Stenberg (16 Feb 2023)

-
- msh3: add support for request payload
+
- tool_operate: allow debug builds to set buffersize

-
  Closes #10136
+
  Using the CURL_BUFFERSIZE environment variable.

-
Stefan Eissing (28 Dec 2022)
+
  Closes #10532

-
- openssl: remove attached easy handles from SSL instances
+
Stefan Eissing (16 Feb 2023)

-
   - keeping the "current" easy handle registered at SSL* is no longer
-
     necessary, since the "calling" data object is already stored in the
-
     cfilter's context (and used by other SSL backends from there).
-
   - The "detach" of an easy handle that goes out of scope is then avoided.
-
   - using SSL_set0_wbio for clear reference counting where available.
+
- connnect: fix timeout handling to use full duration

-
  Closes #10151
+
  - connect timeout was used at half the configured value, if the
+
    destination had 1 ip version 4 and other version 6 addresses
+
    (or the other way around)
+
  - extended test2600 to reproduce these cases

-
Daniel Stenberg (28 Dec 2022)
+
  Reported-by: Michael Kaufmann
+
  Fixes #10514
+
  Closes #10517

-
- socketpair: allow localhost MITM sniffers
+
Daniel Stenberg (16 Feb 2023)

-
  Windows allow programs to MITM connections to localhost. The previous
-
  check here would detect that and error out. This new method writes data
-
  to verify the pipe thus allowing MITM.
+
- tool_getparam: make --get a true boolean

-
  Reported-by: SerusDev on github
-
  Fixes #10144
-
  Closes #10169
+
  To match how it is documented in the man page.

-
- HTTP3: mention what needs to be in place to remove EXPERIMENTAL label
+
  Fixes #10527
+
  Reported-by: u20221022 on github
+
  Closes #10531

-
  Closes #10168
+
Harry Sintonen (16 Feb 2023)

-
Andy Alt (28 Dec 2022)
+
- http:: include stdint.h more readily

-
- MANUAL.md: add pipe to apt-key example
+
  Closes #10516

-
  Closes #10170
+
Stefan Eissing (16 Feb 2023)

-
Daniel Stenberg (27 Dec 2022)
+
- tests: make the telnet server shut down a socket gracefully

-
- test417: verify %{certs} output
+
  - test 1452 failed occasionally with ECONNRESET errnos in curl when the
+
    server closed the connection in an unclean state.

-
- runtests: make 'mbedtls' a testable feature
+
  Closes #10509

-
  Also add to FILEFORMAT.md
+
Harry Sintonen (16 Feb 2023)

-
- writeout: add %{certs} and %{num_certs}
+
- http2: set drain on stream end

-
  Let users get the server certificate chain using the command line
+
  Ensure that on_frame_recv() stream end will trigger a read if there is
+
  pending data. Without this it could happen that the pending data is
+
  never consumed.

-
  Closes #10019
+
  This combined with https://github.com/curl/curl/pull/10529 should fix
+
  https://github.com/curl/curl/issues/10525

-
Stefan Eissing (27 Dec 2022)
+
  Ref: https://github.com/curl/curl/issues/10525
+
  Closes #10530

-
- haxproxy: send before TLS handhshake
+
Stefan Eissing (16 Feb 2023)

-
  - reverse order of haproxy and final ssl cfilter
+
- http2: buffer/pausedata and output flush fix.

-
  - make haproxy avaiable on PROXY builds, independent of HTTP support as
-
    it can be used with any protocol.
+
   * do not process pending input data when copying pausedata to the
+
     caller
+
   * return CURLE_AGAIN if the output buffer could not be completely
+
     written out.

-
  Reported-by: Sergio-IME on github
-
  Fixes #10165
-
  Closes #10167
+
  Ref: #10525
+
  Closes #10529

-
Daniel Stenberg (27 Dec 2022)
+
Marcel Raad (16 Feb 2023)

-
- RELEASE-NOTES: synced
+
- krb5: silence cast-align warning

-
- test446: verify hsts with two URLs
+
  Add an intermediate cast to `void *`, as done everywhere else when
+
  casting from `sockaddr *` to `sockaddr_in *`.

-
- runtests: support crlf="yes" for verify/proxy
+
  Closes https://github.com/curl/curl/pull/10528

-
- hsts: handle adding the same host name again
+
Daniel Stenberg (15 Feb 2023)

-
  It will then use the largest expire time of the two entries.
+
- RELEASE-NOTES: synced

-
- tool_operate: share HSTS between handles
+
  bumped to 7.88.1

-
- share: add sharing of HSTS cache among handles
+
- tests: make sure gnuserv-tls has SRP support before using it

-
  Closes #10138
+
  Reported-by: fundawang on github
+
  Fixes #10522
+
  Closes #10524

-
Viktor Szakats (27 Dec 2022)
+
- runtests: fix "uninitialized value $port"

-
- Makefile.mk: fix wolfssl and mbedtls default paths
+
  by using a more appropriate variable

-
  Fix the defaults for `WOLFSSL_PATH` and `MBEDTLS_PATH` to have
-
  meaningful values instead of the copy-pasted wrong ones.
+
  Reported-by: fundawang on github
+
  Fixes #10518
+
  Closes #10520

-
  Ref: https://github.com/curl/curl/commit/66e68ca47f7fd00dff2cb7c45ba6725d4009
-
  9585#r94275172
+
Version 7.88.0 (15 Feb 2023)

-
  Reported-by: Ryan Schmidt
-
  Closes #10164
+
Daniel Stenberg (15 Feb 2023)

-
Daniel Stenberg (27 Dec 2022)
+
- RELEASE-NOTES: synced

-
- INTERNALS: cleanup
+
  7.88.0 release

-
  - remove "operating systems" (mostly outdated)
+
- THANKS: added contributors from 7.88.0

-
  - upodate the "build tools"
+
- openssl: rename 'errcode_t' to 'sslerr_t'

-
  Closes #10162
+
  Turns out "/usr/include/et/com_err.h" typedefs this type (without proper
+
  variable scoping).

-
- cmake: bump requirement to 3.7
+
  comerr is the "common error description library" that apparently might be use
+
  d
+
  by krb5 code, which then makes this header get used in a curl build.

-
  Because this is the cmake version (released in November 2016) that
-
  introduced GREATER_EQUAL, which is used already.
+
  Reported-by: Bruno Henrique Batista Cruz da Silva
+
  Fixed #10502
+
  Closes #10500

-
  Reported-by: nick-telia on github
-
  Fixes #10128
-
  Closes #10161
+
Dan Fandrich (13 Feb 2023)

-
- cfilters:Curl_conn_get_select_socks: use the first non-connected filter
+
- CONTRIBUTE: More formally specify the commit description

-
  When there are filters addded for both socket and SSL, the code
-
  previously checked the SSL sockets during connect when it *should* first
-
  check the socket layer until that has connected.
+
  This codifies what people have actually used in git commits over the
+
  past 6 years. I've left off some lesser-used headers that appear to
+
  duplicate others and tried to describe a consistent use for several
+
  others that were used more arbitrarily.

-
  Fixes #10157
-
  Fixes #10146
-
  Closes #10160
+
  This makes it easier for new committers to find out the kinds of things
+
  we want to acknowledge, makes it easier to perform statistical analysis
+
  on commits, and opens the possibility of performing lint checks on
+
  descriptions before submission.

-
  Reviewed-by: Stefan Eissing
+
  Reviewed-by: Daniel Stenberg
+
  Reviewed-by: Jay Satiro

-
- urlapi: add CURLU_PUNYCODE
+
  Closes #10478

-
  Allows curl_url_get() get the punycode version of host names for the
-
  host name and URL parts.
+
Stefan Eissing (13 Feb 2023)

-
  Extend test 1560 to verify.
+
- openssl: test and fix for forward proxy handling (non-tunneling).

-
  Closes #10109
+
  - adding pytest test_10 cases for proxy httpd setup tests
+
  - fixing openssl bug in https: proxy hostname verification that
+
    used the hostname of the request and not the proxy name.

-
- RELEASE-NOTES: synced
+
  Closes #10498

-
- libssh2: try sha2 algos for hostkey methods
+
Daniel Stenberg (13 Feb 2023)

-
  As is supported by recent libssh2, but should just be ignored by older
-
  versions.
+
- cmdline-opts/Makefile: on error, do not leave a partial

-
  Reported-by: norbertmm on github
-
  Assisted-by: norbertmm on github
-
  Fixes #10143
-
  Closes #10145
+
  And support 'make V=1' to show the full command line

-
Patrick Monnerat (26 Dec 2022)
+
  Closes #10497

-
- typecheck: accept expressions for option/info parameters
+
- curl.1: make help, version and manual sections "custom"

-
  As expressions can have side effects, evaluate only once.
+
  Instead of using "multi: boolean", as these are slightly special as in
+
  they do are not enable/disable ones.

-
  To enable deprecation reporting only once, get rid of the __typeof__
-
  use to define the local temporary variable and use the target type
-
  (CURLoption/CURLINFO). This also avoids multiple reports on type
-
  conflicts (if some) by the curlcheck_* macros.
+
  Fixes #10490
+
  Reported-by: u20221022 on github
+
  Closes #10497

-
  Note that CURLOPT_* and CURLINFO_* symbols may be deprecated, but not
-
  their values: a curl_easy_setopt call with an integer constant as option
-
  will never report a deprecation.
+
Stefan Eissing (13 Feb 2023)

-
  Reported-by: Thomas Klausner
-
  Fixes #10148
-
  Closes #10149
+
- tests: add tests for HTTP/2 and HTTP/3 to verify the header API

-
Paul Howarth (26 Dec 2022)
+
  Test 2403 and 2503 check "header_json" output and therefore use of
+
  header-api

-
- tests: avoid use of sha1 in certificates
+
  Closes #10495

-
  The SHA-1 algorithm is deprecated (particularly for security-sensitive
-
  applications) in a variety of OS environments. This already affects
-
  RHEL-9 and derivatives, which are not willing to use certificates using
-
  that algorithm. The fix is to use sha256 instead, which is already used
-
  for most of the other certificates in the test suite.
+
Philip Heiduck (13 Feb 2023)

-
  Fixes #10135
+
- CI: update wolfssl / wolfssh to 5.5.4 / 1.4.12

-
  This gets rid of issues related to sha1 signatures.
+
  Closes #10493

-
  Manual steps after "make clean-certs" and "make build-certs":
+
Daniel Stenberg (13 Feb 2023)

-
  - Copy tests/certs/stunnel-sv.pem to tests/stunnel.pem
-
    (make clean-certs does not remove the original tests/stunnel.pem)
+
- KNOW_BUGS: cleanups with some changed to TODOs

-
  - Copy tests/certs/Server-localhost-sv.pubkey-pinned into --pinnedpubkey
-
    options of tests/data/test2041 and tests/data/test2087
+
  - remove "Excessive HTTP/2 packets with TCP_NODELAY"

-
  Closes #10153
+
    This is not a bug. Rather room for improvement.

-
Yurii Rashkovskii (26 Dec 2022)
+
  I believe these have been fixed:

-
- cmake: fix the snprintf detection
+
  - 17.4 Connection failures with parallel HTTP/2
+
  - 17.5 HTTP/2 connections through HTTPS proxy frequently stall

-
  I haven't had the time to check other configurations, but on my macOS
-
  Ventura 13.1 with XCode 14.2 cmake does not find `snprintf`.
+
  - remove "FTPS needs session reuse"

-
  Solution: ensure stdio.h is checked for definitions
+
  That is still true, but curl should also do session reuse now.

-
  Closes #10155
+
  - remove "ASCII FTP"

-
Radu Hociung (26 Dec 2022)
+
  It is documented behavior, and not single user has asked for extended
+
  functionality here the last decade or so.

-
- http: remove the trace message "Mark bundle... multiuse"
+
  - remove "Passive transfer tries only one IP address"

-
  The message "Mark bundle as not supporting multiuse" was added at commit
-
  29364d93 when an http/2-related bug was fixed, and it appears to be a
-
  leftover trace message.
+
  add as a TODO

-
  This message should be removed because:
-
   * it conveys no information to the user
-
   * it is enabled in the default build (--enable-verbose)
-
   * it reads like a warning/unexpected condition
-
   * it is equivalent to "Detected http proto < 2", which is
-
     not a useful message.
-
   * it is a time-wasting red-herring for anyone who encounters
-
     it for the first time while investigating some other, real
-
     problem.
+
  - remove "DoH leaks memory after followlocation"

-
  This commit removes the trace message "Mark bundle as not
-
  supporting multiuse"
+
  With a recipe on how to reproduce, this is pointless to keep around

-
  Closes #10159
+
  - remove "DoH does not inherit all transfer options"

-
Hannah Schierling (26 Dec 2022)
+
  add it as a TODO

-
- url: fix build with `--disable-cookies`
+
  Closes #10487

-
  Struct `UserDefined` has no member `cookielist` if
-
  `CURL_DISABLE_COOKIES` is defined.
+
Tatsuhiro Tsujikawa (13 Feb 2023)

-
  Follow-up to af5999a
+
- GHA: bump ngtcp2 workflow dependencies

-
  Closes #10158
+
  Closes #10494

-
Stefan Eissing (23 Dec 2022)
+
Patrick Monnerat (13 Feb 2023)

-
- runtests: also tear down http2/http3 servers when https server is stopped
+
- content_encoding: do not reset stage counter for each header

-
  Closes #10114
+
  Test 418 verifies

-
- tests: add 3 new HTTP/2 test cases, plus https: support for nghttpx
+
  Closes #10492

-
  - a simple https get
-
  - a simple https post
-
  - a multi get of 4 requests and check that same connection was used
+
Daniel Stenberg (13 Feb 2023)

-
  Closes #10114
+
- RELEASE-NOTES: synced

-
Daniel Stenberg (23 Dec 2022)
+
Jay Satiro (13 Feb 2023)

-
- urldata: remove unused struct fields, made more conditional
+
- multi: stop sending empty HTTP/3 UDP datagrams on Windows

-
  - source_quote, source_prequote and source_postquote have not been used since
-
    5e0d9aea3; September 2006
+
  - Limit the 0-sized send procedure that is used to reset a SOCKET's
+
    FD_WRITE to TCP sockets only.

-
  - make several fields conditional on proxy support
+
  Prior to this change the reset was used on UDP sockets as well, but
+
  unlike TCP sockets a 0-sized send actually sends out a datagram.

-
  - make three quote struct fields conditional on FTP || SSH
+
  Assisted-by: Marc Hörsken

-
  - make 'mime_options' depend on MIME
+
  Ref: https://github.com/curl/curl/pull/9203

-
  - make trailer_* fields depend on HTTP
+
  Fixes https://github.com/curl/curl/issues/9086
+
  Closes https://github.com/curl/curl/pull/10430

-
  - change 'gssapi_delegation' from long to unsigned char
+
Viktor Szakats (12 Feb 2023)

-
  - make 'localportrange' unsigned short instead of int
+
- h3: silence compiler warnings

-
  - conn->trailer now depends on HTTP
+
  Reviewed-by: Daniel Stenberg
+
  Fixes #10485
+
  Closes #10486

-
  Closes #10147
+
Daniel Stenberg (12 Feb 2023)

-
- urldata: make set.http200aliases conditional on HTTP being present
+
- smb: return error on upload without size

-
  And make a few SSH-only fields depend on SSH
+
  The protocol needs to know the size ahead of time, this is now a known
+
  restriction and not a bug.

-
  Closes #10140
+
  Also output a clearer error if the URL path does not contain proper
+
  share.

-
- md4: fix build with GnuTLS + OpenSSL v1
+
  Ref: #7896
+
  Closes #10484

-
  Reported-by: Esdras de Morais da Silva
+
Viktor Szakats (12 Feb 2023)

-
  Fixes #10110
-
  Closes #10142
+
- windows: always use curl's basename() implementation

-
- urldata: make 'ftp_create_missing_dirs' depend on FTP || SFTP
+
  The `basename()` [1][2] implementation provided by mingw-w64 [3] makes
+
  assumptions about input encoding and may break with non-ASCII strings.

-
  Closes #10139
+
  `basename()` was auto-detected with CMake, autotools and since
+
  68fa9bf3f5d7b4fcbb57619f70cb4aabb79a51f6 (2022-10-13), also in
+
  `Makefile.mk` after syncing its behaviour with the mainline build
+
  methods. A similar patch for curl-for-win broke official Windows
+
  builds earlier, in release 7.83.1_4 (2022-06-15).

-
John Bampton (22 Dec 2022)
+
  This patch forces all Windows builds to use curl's internal
+
  `basename()` implementation to avoid such problems.

-
- misc: fix grammar and spelling
+
  [1]: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/basename.html
+
  [2]: https://www.man7.org/linux/man-pages/man3/basename.3.html
+
  [3]: https://sourceforge.net/p/mingw-w64/mingw-w64/ci/master/tree/mingw-w64-c
+
  rt/misc/basename.c

-
  Closes #10137
+
  Reported-by: UnicornZhang on Github
+
  Assisted-by: Cherish98 on Github
+
  Reviewed-by: Daniel Stenberg

-
Daniel Stenberg (22 Dec 2022)
+
  Fixes #10261
+
  Closes #10475

-
- urldata: move the cookefilelist to the 'set' struct
+
Philip Heiduck (12 Feb 2023)

-
  The cookiefile entries are set into the handle and should remain set for
-
  the lifetime of the handle so that duplicating it also duplicates the
-
  list. Therefore, the struct field is moved from 'state' to 'set'.
+
- Linux CI: Bump rustls-ffi to v0.9.1

-
  Fixes #10133
-
  Closes #10134
+
  Closes #10476

-
- strdup: name it Curl_strdup
+
Daniel Stenberg (12 Feb 2023)

-
  It does not belong in the curlx_ name space as it is never used
-
  externally.
+
- libtest: build lib2305 with multibyte as well

-
  Closes #10132
+
  Fixes a build regression.

-
Nick Banks (22 Dec 2022)
+
  Follow-up to 5a9a04d5567
+
  Reported-by: Viktor Szakats
+
  Ref: https://github.com/curl/curl/pull/10475#issuecomment-1426831800

-
- msh3: update to v0.5 Release
+
  Closes #10477

-
  Closes #10125
+
Dmitry Atamanov (12 Feb 2023)

-
Andy Alt (22 Dec 2022)
+
- cmake: fix dev warning due to mismatched arg

-
- workflows/linux.yml: merge 3 common packages
+
  The package name passed to find_package_handle_standard_args (BROTLI)
+
  does not match the name of the calling package (Brotli). This can lead
+
  to problems in calling code that expects find_package result variables
+
  (e.g., _FOUND) to follow a certain pattern.

-
  Closes #10071
+
  Closes https://github.com/curl/curl/pull/10471

-
Daniel Stenberg (21 Dec 2022)
+
James Keast (11 Feb 2023)

-
- docs: mention indirect effects of --insecure
+
- setopt: Address undefined behaviour by checking for null

-
  Warn users that disabling certficate verification allows servers to
-
  "pollute" curl with data it trusts.
+
  This addresses undefined behaviour found using clang's UBsan:

-
  Reported-by: Harry Sintonen
-
  Closes #10126
+
  curl/lib/setopt.c:177:14: runtime error: applying non-zero offset 1 to null p
+
  ointer
+
  SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior curl/lib/setopt.c:177
+
  :14 in

-
- SECURITY-PROCESS.md: document severity levels
+
  Closes #10472

-
  Closes #10118
+
Jacob Hoffman-Andrews (11 Feb 2023)

-
- RELEASE_NOTES: synced
+
- rustls: improve error messages

-
  bumped version for new cycle
+
  Changes numeric error codes into verbose error codes in two places.
+
  Adds a prefix indicating that the error came from rustls, and in some
+
  places which function it came from.

-
Marcel Raad (21 Dec 2022)
+
  Adds special handling for RUSTLS_RESULT_UNEXPECTED_EOF, since the
+
  default message of "Unexpected EOF" is insufficiently explanatory.

-
- tool_operate: fix `CURLOPT_SOCKS5_GSSAPI_NEC` type
+
  Closes #10463

-
  `CURLOPT_SOCKS5_GSSAPI_NEC` is a long, while `socks5_gssapi_nec` was
-
  made a bool in commit 4ac64eadf60.
+
Daniel Stenberg (11 Feb 2023)

-
  Closes https://github.com/curl/curl/pull/10124
+
- openssl: remove dead code

-
Version 7.87.0 (21 Dec 2022)
+
  Follow-up to e8b00fcd6a

-
Daniel Stenberg (21 Dec 2022)
+
  Due to the new 'if(!nonblocking)' check on the block a level above,
+
  there is no need to check for it again within the same conditional.

-
- RELEASE-NOTES: synced
+
  Detected by Coverity

-
  The curl 7.87.0 release
+
  Closes #10473

-
- THANKS: 40 new contributors from 7.87.0
+
- ngtcp2: replace removed define and stop using removed function

-
- http: fix the ::1 comparison for IPv6 localhost for cookies
+
  They were removed upstream.

-
  When checking if there is a "secure context", which it is if the
-
  connection is to localhost even if the protocol is HTTP, the comparison
-
  for ::1 was done incorrectly and included brackets.
+
  Reported-by: Karthikdasari0423 on github
+
  Fixes #10469
+
  Closes #10474

-
  Reported-by: BratSinot on github
+
- scripts/delta: show percent of number of files changed since last tag

-
  Fixes #10120
-
  Closes #10121
+
- RELEASE-NOTES: synced

-
Philip Heiduck (19 Dec 2022)
+
Stefan Eissing (10 Feb 2023)

-
- CI/spell: actions/checkout@v2 > actions/checkout@v3
+
- pytest: add a test case for PUSH related things.

-
Daniel Stenberg (19 Dec 2022)
+
  - checking that "103 Early Hints" are visible in curl's header dump file

-
- smb/telnet: do not free the protocol struct in *_done()
+
  Closes #10452

-
  It is managed by the generic layer.
+
Gregory Panakkal (10 Feb 2023)

-
  Reported-by: Trail of Bits
+
- WEBSOCKET.md: typo

-
  Closes #10112
+
  Fixing missing slash for ws protocol scheme

-
- http: use the IDN decoded name in HSTS checks
+
  Closes #10464

-
  Otherwise it stores the info HSTS into the persistent cache for the IDN
-
  name which will not match when the HSTS status is later checked for
-
  using the decoded name.
+
Stefan Eissing (10 Feb 2023)

-
  Reported-by: Hiroki Kurosawa
+
- vquic: stabilization and improvements

-
  Closes #10111
+
  vquic stabilization
+
  - udp send code shared between ngtcp2 and quiche
+
  - quiche handling of data and events improved

-
- CURLOPT_DEBUGFUNCTION.3: emphasize that incoming data is "raw"
+
  ngtcp2 and pytest improvements
+
  - fixes handling of "drain" situations, discovered in scorecard
+
    tests with the Caddy server.
+
  - improvements in handling transfers that have already  data or
+
    are already closed to make an early return on recv

-
  Closes #10106
+
  pytest
+
  - adding caddy tests when available

-
Xì Gà (16 Dec 2022)
+
  scorecard improvemnts.
+
  - using correct caddy port
+
  - allowing tests for only httpd or caddy

-
- socks: fix username max size is 255 (0xFF)
+
  Closes #10451

-
  Closes #10105
+
Philip Heiduck (10 Feb 2023)

-
  Reviewed-by: Daniel Gustafsson
+
- Linux CI: update some dependecies to latest tag

-
Daniel Stenberg (16 Dec 2022)
+
  Closes #10458

-
- limit-rate.d: see also --rate
+
Daniel Stenberg (10 Feb 2023)

-
- lib1560: add some basic IDN host name tests
+
- test2305: send 3 frames, 4097 bytes each, as one message

-
  Closes #10094
+
  Receive them using a 256 bytes buffer in a loop.

-
- idn: rename the files to idn.[ch] and hold all IDN functions
+
- ws: fix recv of larger frames

-
  Closes #10094
+
   + remove 'oleft' from the struct
+
   + deal with "overflow data" in a separate dynbuf

-
- idn: remove Curl_win32_ascii_to_idn
+
  Reported-by: Mike Duglas
+
  Fixes #10438
+
  Closes #10447

-
  It was not used. Introduce a new IDN header for the prototype(s).
+
- curl/websockets.h: extend the websocket frame struct

-
  Closes #10094
+
- sws: fix typo, indentation add more ws logging

-
- RELEASE-NOTES: synced
+
- test2304: remove stdout verification

-
- curl_url_get.3: remove spurious backtick
+
  This cripples the test somewhat but the check was bad since depending on
+
  timing it could exit before the output was done, making the test flaky.

-
  Put there by mistake.
+
Dan Fandrich (9 Feb 2023)

-
  Follow-up from 9a8564a92
+
- CI: Add more labeler match patterns

-
  Closes #10101
+
- CI: Retry failed downloads to reduce spurious failures

-
- socks: fix infof() flag for outputing a char
+
  A temporary error with a remote server shouldn't cause a CI run to fail.
+
  Also, put a cap on the time to download to fail faster on a misbehaving
+
  server or connection and use HTTP compression where possible to reduce
+
  download times.

-
  It used to be a 'long', %lu is no longer correct.
+
Daniel Stenberg (9 Feb 2023)

-
  Follow-up to 57d2d9b6bed33d
-
  Detected by Coverity CID 1517663
+
- no-clobber.d: only use long form options in man page text

-
  Closes #10100
+
  ... since they are expanded and the short-form gets mentioned
+
  automatically so if the short form is mentioned as well, it gets
+
  repeated.

-
- ssl-reqd.d: clarify that this is for upgrading connections only
+
  Fixes #10461
+
  Closes #10462
+
  Reported-by: Dan Fandrich

-
  Closes #10093
+
- GHA: enable websockets in the torture job

-
- curl_url_set.3: document CURLU_DISALLOW_USER
+
  Closes #10448

-
  Closes #10099
+
- header.d: add a header file example

-
- cmake: set the soname on the shared library
+
  Closes #10455

-
  Set SONAME and VERSION for platforms we think this works on. Remove
-
  issue from KNOWN_BUGS.
+
Stefan Eissing (9 Feb 2023)

-
  Assisted-by: Jakub Zakrzewski
+
- HTTP/[23]: continue upload when state.drain is set

-
  Closes #10023
+
  - as reported in #10433, HTTP/2 uploads may stall when a response is
+
    received before the upload is done. This happens when the
+
    data->state.drain is set for such a transfer, as the special handling
+
    in transfer.c from then on only cared about downloads.
+
  - add continuation of uploads, if applicable, in this case.
+
  - add pytest case test_07_12_upload_seq_large to reproduce this scenario
+
    (although, current nghttp2 implementation is using drain less often)

-
- tool_paramhlp: free the proto strings on exit
+
  Reported-by: Lucas Pardue

-
  And also make sure that repeated use of the options free the previous
-
  string before it stores a new.
+
  Fixes #10433
+
  Closes #10443

-
  Follow-up from e6f8445edef8e7996d
+
- http2: minor buffer and error path fixes

-
  Closes #10098
+
  - use memory buffer in full available size
+
  - fail receive of reset/errored streams early

-
- tool_cfgable: free the ssl_ec_curves on exit
+
  pytest:
+
  - make test_05 error cases more reliable

-
  Follow-up to ede125b7b
+
  Closes #10444

-
  Closes #10097
+
Federico Pellegrin (9 Feb 2023)

-
- urlapi: reject more bad letters from the host name: &+()
+
- openldap: fix missing sasl symbols at build in specific configs

-
  Follow-up from eb0167ff7d31d3a5
+
  If curl is built with openldap support (USE_OPENLDAP=1) but does not
+
  have also some other protocol (IMAP/SMTP/POP3) enabled that brings
+
  in Curl_sasl_* functions, then the build will fail with undefined
+
  references to various symbols:

-
  Extend test 1560 to verify
+
  ld: ../lib/.libs/libcurl.so: undefined reference to `Curl_sasl_decode_mech'
+
  ld: ../lib/.libs/libcurl.so: undefined reference to `Curl_sasl_parse_url_auth
+
  _option'
+
  ld: ../lib/.libs/libcurl.so: undefined reference to `Curl_sasl_cleanup'
+
  ld: ../lib/.libs/libcurl.so: undefined reference to `Curl_sasl_can_authentica
+
  te'
+
  ld: ../lib/.libs/libcurl.so: undefined reference to `Curl_sasl_continue'
+
  ld: ../lib/.libs/libcurl.so: undefined reference to `Curl_sasl_start'
+
  ld: ../lib/.libs/libcurl.so: undefined reference to `Curl_sasl_init'

-
  Closes #10096
+
  This was tracked down to these functions bein used in openldap.c but
+
  defined in curl_sasl.c and then forward in two vauth/ files to have
+
  a guard against a set of #define configurations that was now extended
+
  to cover also this case.

-
- altsvc: fix rejection of negative port numbers
+
  Example configuration targeted that could reproduce the problem:

-
  Follow-up to ac612dfeee95
+
  curl 7.87.1-DEV () libcurl/7.87.1-DEV .... OpenLDAP/2.6.3
+
  Protocols: file ftp ftps http https ldap ldaps

-
  strtoul() accepts a leading minus so better make sure there is none
+
  Closes #10445

-
  Extended test 356 somewhat to use a huge negative 64 bit number that
-
  otherwise becomes a low positive number.
+
Daniel Stenberg (9 Feb 2023)

-
  Closes #10095
+
- ws: use %Ou for outputting curl_off_t with info()

-
- lib: use size_t or int etc instead of longs
+
  Reported-by: Mike Duglas
+
  Fixes #10439
+
  Closes #10441

-
  Since long is not using a consistent data size in curl builds, making it
-
  often "waste" 32 bits.
+
Jay Satiro (9 Feb 2023)

-
  Closes #10088
+
- curl_setup: Disable by default recv-before-send in Windows

-
- azure: use "unversioned" clang and clang-tools for scanbuild job
+
  Prior to this change a workaround for Windows to recv before every send
+
  was enabled by default. The way it works is a recv is called before
+
  every send and saves the received data, in case send fails because in
+
  Windows apparently that can wipe out the socket's internal received
+
  data buffer.

-
  To make it less fragile
+
  This feature has led to several bugs because the way libcurl operates
+
  it waits on a socket to read or to write, and may not at all times
+
  check for buffered receive data.

-
  Closes #10092
+
  Two recent significant bugs this workaround caused:
+
  - Broken Schannel TLS 1.3 connections (#9431)
+
  - HTTP/2 arbitrary hangs (#10253)

-
Daniel Gustafsson (14 Dec 2022)
+
  The actual code remains though it is disabled by default. Though future
+
  changes to connection filter buffering could improve the situation IMO
+
  it's just not tenable to manage this workaround.

-
- x509asn1: avoid freeing unallocated pointers
+
  Ref: https://github.com/curl/curl/issues/657
+
  Ref: https://github.com/curl/curl/pull/668
+
  Ref: https://github.com/curl/curl/pull/720

-
  When utf8asn1str fails there is no allocation returned, so freeing
-
  the return pointer in **to is at best a no-op and at worst a double-
-
  free bug waiting to happen. The current coding isn't hiding any such
-
  bugs but to future proof, avoid freeing the return value pointer iff
-
  the function failed.
+
  Ref: https://github.com/curl/curl/issues/9431
+
  Ref: https://github.com/curl/curl/issues/10253

-
  Closes: #10087
-
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
  Closes https://github.com/curl/curl/pull/10409

-
Emil Engler (13 Dec 2022)
+
Stefan Eissing (8 Feb 2023)

-
- curl_url_set.3: fix typo
+
- http2: aggregate small SETTINGS/PRIO/WIN_UPDATE frames

-
  Closes: #10089
-
  Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
+
  add a small buffer to nghttp2 session sending in order to aggregate
+
  small SETTINGS/PRIO/WIN_UPDATE frames that nghttp2 "writes" to the
+
  callback individually.

-
Daniel Stenberg (13 Dec 2022)
+
  Ref: #10389
+
  Closes #10432

-
- test2304: verify websocket handling when connection is closed
+
- openssl: store the CA after first send (ClientHello)

-
- server/sws: if asked to close connection, skip the websocket handling
+
  move Curl_ssl_setup_x509_store() call after the first send (ClientHello)
+
  this gives time to parse CA anchors while waiting on the server reply

-
- ws: if no connection is around, return error
+
  Ref: #10389
+
  Closes #10432

-
  - curl_ws_send returns CURLE_SEND_ERROR if data->conn is gone
+
Daniel Stenberg (8 Feb 2023)

-
  - curl_ws_recv returns CURLE_GOT_NOTHING on connection close
+
- RELEASE-NOTES: synced

-
  - curl_ws_recv.3: mention new return code for connection close + example
-
    embryo
+
Anthony Hu (8 Feb 2023)

-
  Closes #10084
+
- wolfssl: remove deprecated post-quantum algorithms

-
Emil Engler (13 Dec 2022)
+
  Closes #10440

-
- docs: extend the dump-header documentation
+
John Bampton (8 Feb 2023)

-
  This commit extends the documentation of the --dump-header command-line
-
  option to reflect the behavior introduced in 8b1e5df7.
+
- misc: fix spelling

-
  See #10079
-
  Closes #10085
+
  Closes #10437

-
Daniel Stenberg (12 Dec 2022)
+
Daniel Stenberg (7 Feb 2023)

-
- RELEASE-NOTES: synced
+
- man pages: call the custom user pointer 'clientp' consistently

-
- styled-output.d: this option does not work on Windows
+
  The variable had a few different names. Now try to use 'clientp'
+
  consistently for all man pages using a custom pointer set by the
+
  application.

-
  Reported-by: u20221022 on github
+
  Reported-by: Gerrit Renker

-
  Fixes #10082
-
  Closes #10083
+
  Fixes #10434
+
  Closes #10435

-
Emil Engler (12 Dec 2022)
+
- vtls: infof using %.*s needs to provide the length as int

-
- tool: determine the correct fopen option for -D
+
  Fixes a Coverity warning.

-
  This commit fixes a bug in the dump-header feature regarding the
-
  determination of the second fopen(3) option.
+
  Closes #10436

-
  Reported-by: u20221022 on github
+
Stefan Eissing (7 Feb 2023)

-
  See #4753
-
  See #4762
-
  Fixes #10074
-
  Closes #10079
+
- vrls: addressing issues reported by coverity

-
Christian Schmitz (11 Dec 2022)
+
  I believe the code was secure before this, but limiting the accepted
+
  name length to what is used in the structures should help Coverity's
+
  analysis.

-
- docs/curl_ws_send: Fixed typo in websocket docs
+
  Closes #10431

-
  Replace as with is in relevant sentences.
+
Daniel Stenberg (7 Feb 2023)

-
  Closes: #10081
-
  Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
+
- tool_operate: move the 'updated' variable

-
Prithvi MK (11 Dec 2022)
+
  This was already done by Dan Fandrich in the previous PR but somehow I
+
  lost that fixup.

-
- c-hyper: fix multi-request mechanism
+
  Follow-up to 349c5391f2121e

-
  It makes test 565 run fine.
+
Dan Fandrich (7 Feb 2023)

-
  Fixes #8896
-
  Closes #10080
-
  Assisted-by: Daniel Stenberg
+
- tool_operate: Fix error codes during DOS filename sanitize

-
Andy Alt (11 Dec 2022)
+
  It would return CURLE_URL_MALFORMAT in an OOM condition.

-
- page-header: grammar improvement (display transfer rate)
+
  Closes #10414

-
  Closes #10068
+
- tool_operate: Fix error codes on bad URL & OOM

-
- docs/DEPRECATE.md: grammar improvement and sp correction
+
  curl would erroneously report CURLE_OUT_OF_MEMORY in some cases instead
+
  of CURLE_URL_MALFORMAT. In other cases, it would erroneously return
+
  CURLE_URL_MALFORMAT instead of CURLE_OUT_OF_MEMORY.  Add a test case to
+
  test the former condition.

-
  The main thing I wanted to do was fix the spelling of "spent", but I
-
  think this rewording improves the flow of the paragraph.
+
  Fixes #10130
+
  Closes #10414

-
  Closes #10067
+
Daniel Stenberg (6 Feb 2023)

-
Boris Verkhovskiy (11 Dec 2022)
+
- setopt: use >, not >=, when checking if uarg is larger than uint-max

-
- tool_cfgable: make socks5_gssapi_nec a boolean
+
  Closes #10421

-
  Closes #10078
+
- vtls: fix failf() format argument type for %.*s handling

-
Frank Gevaerts (9 Dec 2022)
+
  Reported by Coverity

-
- contributors.sh: actually use $CURLWWW instead of just setting it.
+
  Closes #10422

-
  The script was all set up for flexibility where curl-www is elsewhere in
-
  the filesystem, but then hard-coded ../curl-www anyway...
+
- openssl: fix "Improper use of negative value"

-
  Closes #10064
+
  By getting the socket first and returning error in case of bad socket.

-
Daniel Stenberg (9 Dec 2022)
+
  Detected by Coverity.

-
- KNOWN_BUGS: remove items not considered bugs any more
+
  Closes #10423

-
  - CURL_GLOBAL_SSL
+
Dan Fandrich (6 Feb 2023)

-
  This option was changed in libcurl 7.57.0 and clearly it has not caused
-
  too many issues and a lot of time has passed.
+
- packages: Remove Android.mk from makefile

-
  - Store TLS context per transfer instead of per connection
+
  This was missed in commit #44141512

-
  This is a possible future optimization. One that is much less important
-
  and interesting since the added support for CA caching.
+
  Ref: #10418

-
  - Microsoft telnet server
+
Daniel Stenberg (6 Feb 2023)

-
  This bug was filed in May 2007 against curl 7.16.1 and we have not
-
  received further reports.
+
- curl_ws_send.3: clarify how to send multi-frame messages

-
  - active FTP over a SOCKS
+
Mike Duglas (6 Feb 2023)

-
  Actually, proxies in general is not working with active FTP mode. This
-
  is now added in proxy documentation.
+
- ws: fix multiframe send handling

-
  - DICT responses show the underlying protocol
+
  Fixes #10413
+
  Closes #10420

-
  curl still does this, but since this is now an established behavior
-
  since forever we cannot change it easily and adding an option for it
-
  seems crazy as this protocol is not so little its not worth it. Let's
-
  just live with it.
+
Daniel Stenberg (6 Feb 2023)

-
  - Secure Transport disabling hostname validation also disables SNI
+
- unit2600: make sure numerical curl_easy_setopt sets long

-
  This is an already documented restriction in Secure Transport.
+
  Follow-up to 671158242db3203

-
  - CURLOPT_SEEKFUNCTION not called with CURLFORM_STREAM
+
  Reported-by: Marcel Raad
+
  Fixes #10410
+
  Closes #10419

-
  The curl_formadd() function is marked and documented as deprecated. No
-
  point in collecting bugs for it. It should not be used further.
+
Andy Alt (6 Feb 2023)

-
  - STARTTRANSFER time is wrong for HTTP POSTs
+
- GHA: move Slackware test into matrix

-
  After close source code inspection I cannot see how this is true or that
-
  there is any special treatment for different HTTP methods. We also have
-
  not received many further reports on this, making me strongly suspect
-
  that this is no (longer an) issue.
+
  Closes #10412

-
  - multipart formposts file name encoding
+
Pronyushkin Petr (6 Feb 2023)

-
  The once proposed RFC 5987-encoding is since RFC 7578 documented as MUST
-
  NOT be used. The since then implemented MIME API allows the user to set
-
  the name on their own and can thus provide it encoded as it wants.
+
- urlapi: fix part of conditional expression is always true: qlen

-
  - DoH is not used for all name resolves when enabled
+
  Closes #10408

-
  It is questionable if users actually want to use DoH for interface and
-
  FTP port name resolving. This restriction is now documented and we
-
  advice users against using name resolving at all for these functions.
+
- url: fix part of conditional expression is always true

-
  Closes #10043
+
  Closes #10407

-
- CURLOPT_COOKIEFILE.3: advice => advise
+
Daniel Stenberg (6 Feb 2023)

-
  Closes #10063
+
- RELEASE-NOTES: synced

-
  Reviewed-by: Daniel Gustafsson
+
Philip Heiduck (6 Feb 2023)

-
Daniel Gustafsson (9 Dec 2022)
+
- GHA/macos.yml: bump to gcc-12

-
- curl.h: reword comment to not use deprecated option
+
  Closes #10415

-
  CURLOPT_INFILE was replaced by CURLOPT_READDATA in 7.9.7,  reword the
-
  comment mentioning it to make code grepping easier as well as improve
-
  the documentation.
+
Daniel Stenberg (6 Feb 2023)

-
  Closes: #10062
-
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
- packages: remove Android, update README

-
Ryan Schmidt (9 Dec 2022)
+
  - Nobody builds curl for Android using this anymore
+
  - Refreshed the README and converted to markdown

-
- system.h: fix socklen_t, curl_off_t, long long for Classic Mac OS
+
  Reported-by: John Porter
+
  Fixes #10416
+
  Closes #10418

-
  Change "__MWERKS__" to "macintosh". When this block was originally added
-
  in 3ac6929 it was probably intended to handle classic Mac OS since the
-
  previous classic Mac OS build procedure for curl (which was removed in
-
  bf327a9) used Metrowerks CodeWarrior.
+
Kvarec Lezki (5 Feb 2023)

-
  But there are other classic Mac OS compilers, such as the MPW compilers,
-
  that were not handled by this case. For classic Mac OS,
-
  CURL_TYPEOF_CURL_SOCKLEN_T needs to match what's provided by the
-
  third-party GUSI library, which does not vary by compiler.
+
- fopen: remove unnecessary assignment

-
  Meanwhile CodeWarrior works on platforms other than classic Mac OS, and
-
  they may need different definitions. Separate blocks could be added
-
  later for any of those platforms that curl doesn't already support.
+
  [CWE-1164] V1048: The '* tempname' variable was assigned the same value.

-
  Closes #10049
+
  Ref: https://pvs-studio.com/en/docs/warnings/v1048/

-
- vms: remove SIZEOF_SHORT
+
  Closes https://github.com/curl/curl/pull/10398

-
  The rest of SIZEOF_SHORT was removed in d48dd15.
+
Gisle Vanem (5 Feb 2023)

-
  See #9291
-
  Closes #10061
+
- libtest: add a sleep macro for Windows

-
Daniel Gustafsson (8 Dec 2022)
+
  .. because sleep() is used in some libtests.

-
- tool_formparse: avoid clobbering on function params
+
  Closes https://github.com/curl/curl/pull/10295

-
  While perfectly legal to do, clobbering function parameters and using
-
  them as local variables is confusing at best and rarely improves code
-
  readability.  Fix by using a local variable instead, no functionality
-
  is changed.
+
Kvarec Lezki (3 Feb 2023)

-
  This also renames the parameter from data to mime_data since the term
-
  data is (soft) reserved for the easy handle struct.
+
- http_aws_sigv4: remove typecasts from HMAC_SHA256 macro

-
  Closes: #10046
-
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
  V220: Suspicious sequence of types castings: memsize -> 32-bit integer -> mem
+
  size.

-
- noproxy: guard against empty hostnames in noproxy check
+
  https://pvs-studio.com/en/docs/warnings/v220/

-
  When checking for a noproxy setting we need to ensure that we get
-
  a hostname passed in. If there is no hostname then there cannot be
-
  a matching noproxy rule for it by definition.
+
  Closes #10400

-
  Closes: #10057
-
  Reported-by: Geeknik Labs
-
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
Daniel Stenberg (3 Feb 2023)

-
Daniel Stenberg (8 Dec 2022)
+
- mailmap: Thomas1664 on github

-
- c-hyper: CONNECT respones are not server responses
+
Thomas1664 on github (3 Feb 2023)

-
  Together with d31915a8dbbd it makes test 265 run fine.
+
- CURLOPT_WRITEFUNCTION.3: fix memory leak in example

-
  Fixes #8853
-
  Assisted-by: Prithvi MK
-
  Assisted-by: Sean McArthur
-
  Closes #10060
+
  Closes #10390

-
- test265: Use "connection: keep-alive" response header
+
Kvarec Lezki (3 Feb 2023)

-
  When it answers as HTTP/1.0, so that clients (hyper) knows properly that
-
  the connection remains intact.
+
- doh: ifdef IPv6 code

-
- RELEASE-NOTES: synced
+
  For disabled IPv6 a condition (conn->ip_version != CURL_IPRESOLVE_V4) is
+
  always false. https://pvs-studio.com/en/docs/warnings/v560/

-
Stefan Eissing (8 Dec 2022)
+
  Closes #10397

-
- cfilter: improve SSL connection checks
+
Daniel Stenberg (3 Feb 2023)

-
  - fixes `Curl_ssl_cf_get_ssl()` to detect also the first filter instance
-
    as ssl (refs #10053)
+
- urlapi: remove pathlen assignment

-
  - replaces `Curl_ssl_use()` with the correct `Curl_conn_is_ssl()`
+
  "Value stored to 'pathlen' is never read"

-
  Closes #10054
-
  Fixes #10053
+
  Follow-up to 804d5293f89

-
  Reported-by: Patrick Monnerat
+
  Reported-by: Kvarec Lezki

-
Daniel Stenberg (8 Dec 2022)
+
  Closes #10405

-
- runtests: silence nghttpx errors
+
Kvarec Lezki (3 Feb 2023)

-
  Also, move the output of the nghttpx_h3 info to the general "Env:" line
-
  in the test output header.
+
- http: fix "part of conditional expression is always false"

-
  Reported-by: Marcel Raad
-
  Ref: https://github.com/curl/curl/commit/ca15b7512e8d1199e55fbaa206ef01e64b8f
-
  147d#commitcomment-92015094
-
  Closes #10044
+
  [CWE-570] V560: A part of conditional expression is always false: conn->bits.
+
  authneg.
+
  [CWE-570] V560: A part of conditional expression is always false: conn->handl
+
  er->protocol & (0 | 0).

-
Ryan Schmidt (7 Dec 2022)
+
  https://pvs-studio.com/en/docs/warnings/v560/

-
- config-mac: define HAVE_SYS_IOCTL_H
+
  Closes #10399

-
  This is needed to compile nonblock.c on classic Mac OS with Grand
-
  Unified Socket Interface (GUSI) because nonblock.c uses FIONBIO which is
-
  defined in <sys/filio.h> which is included by <sys/ioctl.h>.
+
Daniel Stenberg (2 Feb 2023)

-
  Ref: https://sourceforge.net/projects/gusi/
+
- urlapi: skip the extra dedotdot alloc if no dot in path

-
  Closes https://github.com/curl/curl/pull/10042
+
  Saves an allocation for many/most URLs.

-
Philip Heiduck (7 Dec 2022)
+
  Updates test 1395 accordingly

-
- CI: Change FreeBSD image from 12.3 to 12.4
+
  Closes #10403

-
  Ref: https://www.phoronix.com/news/FreeBSD-12.4-Released
+
Stefan Eissing (2 Feb 2023)

-
  Closes https://github.com/curl/curl/pull/10051
+
- connections: introduce http/3 happy eyeballs

-
Ryan Schmidt (7 Dec 2022)
+
  New cfilter HTTP-CONNECT for h3/h2/http1.1 eyeballing.
+
  - filter is installed when `--http3` in the tool is used (or
+
    the equivalent CURLOPT_ done in the library)
+
  - starts a QUIC/HTTP/3 connect right away. Should that not
+
    succeed after 100ms (subject to change), a parallel attempt
+
    is started for HTTP/2 and HTTP/1.1 via TCP
+
  - both attempts are subject to IPv6/IPv4 eyeballing, same
+
    as happens for other connections
+
  - tie timeout to the ip-version HAPPY_EYEBALLS_TIMEOUT
+
  - use a `soft` timeout at half the value. When the soft timeout
+
    expires, the HTTPS-CONNECT filter checks if the QUIC filter
+
    has received any data from the server. If not, it will start
+
    the HTTP/2 attempt.

-
- test1421: fix typo
+
  HTTP/3(ngtcp2) improvements.
+
  - setting call_data in all cfilter calls similar to http/2 and vtls filters
+
    for use in callback where no stream data is available.
+
  - returning CURLE_PARTIAL_FILE for prematurely terminated transfers
+
  - enabling pytest test_05 for h3
+
  - shifting functionality to "connect" UDP sockets from ngtcp2
+
    implementation into the udp socket cfilter. Because unconnected
+
    UDP sockets are weird. For example they error when adding to a
+
    pollset.

-
  Closes https://github.com/curl/curl/pull/10055
+
  HTTP/3(quiche) improvements.
+
  - fixed upload bug in quiche implementation, now passes 251 and pytest
+
  - error codes on stream RESET
+
  - improved debug logs
+
  - handling of DRAIN during connect
+
  - limiting pending event queue

-
Jay Satiro (7 Dec 2022)
+
  HTTP/2 cfilter improvements.
+
  - use LOG_CF macros for dynamic logging in debug build
+
  - fix CURLcode on RST streams to be CURLE_PARTIAL_FILE
+
  - enable pytest test_05 for h2
+
  - fix upload pytests and improve parallel transfer performance.

-
- build: assume errno.h is always available
+
  GOAWAY handling for ngtcp2/quiche
+
  - during connect, when the remote server refuses to accept new connections
+
    and closes immediately (so the local conn goes into DRAIN phase), the
+
    connection is torn down and a another attempt is made after a short grace
+
    period.
+
    This is the behaviour observed with nghttpx when we tell it to  shut
+
    down gracefully. Tested in pytest test_03_02.

-
  - Remove errno.h detection from all build configurations.
+
  TLS improvements
+
  - ALPN selection for SSL/SSL-PROXY filters in one vtls set of functions, repl
+
  aces
+
    copy of logic in all tls backends.
+
  - standardized the infof logging of offered ALPNs
+
  - ALPN negotiated: have common function for all backends that sets alpn propr
+
  ty
+
    and connection related things based on the negotiated protocol (or lack the
+
  reof).

-
  errno.h is a standard header according to C89.
+
  - new tests/tests-httpd/scorecard.py for testing h3/h2 protocol implementatio
+
  n.
+
    Invoke:
+
      python3 tests/tests-httpd/scorecard.py --help
+
    for usage.

-
  Closes https://github.com/curl/curl/pull/9986
+
  Improvements on gathering connect statistics and socket access.
+
  - new CF_CTRL_CONN_REPORT_STATS cfilter control for having cfilters
+
    report connection statistics. This is triggered when the connection
+
    has completely connected.
+
  - new void Curl_pgrsTimeWas(..) method to report a timer update with
+
    a timestamp of when it happend. This allows for updating timers
+
    "later", e.g. a connect statistic after full connectivity has been
+
    reached.
+
  - in case of HTTP eyeballing, the previous changes will update
+
    statistics only from the filter chain that "won" the eyeballing.
+
  - new cfilter query CF_QUERY_SOCKET for retrieving the socket used
+
    by a filter chain.
+
    Added methods Curl_conn_cf_get_socket() and Curl_conn_get_socket()
+
    for convenient use of this query.
+
  - Change VTLS backend to query their sub-filters for the socket when
+
    checks during the handshake are made.

-
- build: assume assert.h is always available
+
  HTTP/3 documentation on how https eyeballing works.

-
  - Remove assert.h detection from all build configurations.
+
  TLS improvements
+
  - ALPN selection for SSL/SSL-PROXY filters in one vtls set of functions, repl
+
  aces
+
    copy of logic in all tls backends.
+
  - standardized the infof logging of offered ALPNs
+
  - ALPN negotiated: have common function for all backends that sets alpn propr
+
  ty
+
    and connection related things based on the negotiated protocol (or lack the
+
  reof).

-
  assert.h is a standard header according to C89.
+
  Scorecard with Caddy.
+
  - configure can be run with `--with-test-caddy=path` to specify which caddy t
+
  o use for testing
+
  - tests/tests-httpd/scorecard.py now measures download speeds with caddy

-
  I had proposed this several years ago as part of a larger change that
-
  was abandoned.
+
  pytest improvements
+
  - adding Makfile to clean gen dir
+
  - adding nghttpx rundir creation on start
+
  - checking httpd version 2.4.55 for test_05 cases where it is needed. Skippin
+
  g with message if too old.
+
  - catch exception when checking for caddy existance on system.

-
  Ref: https://github.com/curl/curl/issues/1237#issuecomment-277500720
+
  Closes #10349

-
  Closes https://github.com/curl/curl/pull/9985
+
Daniel Stenberg (2 Feb 2023)

-
Philip Heiduck (7 Dec 2022)
+
- CODEOWNERS: remove the peeps mentioned as CI owners

-
- CI: LGTM.com will be shut down in December 2022
+
  These owners do not have the bandwidth/energy to do the reviews which
+
  makes PRs stall and this ownership claim flawed. We can bring people
+
  back when the situation is different.

-
  Closes #10052
+
  Follow-up to c04c78ac87c4d46737934345a

-
Daniel Stenberg (6 Dec 2022)
+
  Closes #10386

-
- mailmap: Andy Alt
+
Martin D'Aloia (2 Feb 2023)

-
Andy Alt (6 Dec 2022)
+
- write-out.d: add 'since version' to %{header_json} documentation

-
- misc: Fix incorrect spelling
+
  The documentation of `%{header_json}` missed to mention since which
+
  version this variable for `--write-out` is present.

-
  Fix various uses of connnect by replacing them with connect.
+
  Based on commit https://github.com/curl/curl/commit/4133a69f2daa476bb
+
  we can determine from the tags were this commit is present that the
+
  first version to include it was `7.83.0`.
+
  This could be also checked with:
+
  `git tag --contains 4133a69f2daa476bb6d902687f1dd6660ea9c3c5`

-
  Closes: #10045
-
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
-
  Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
+
  Closes #10395

-
Stefan Eissing (6 Dec 2022)
+
Daniel Stenberg (1 Feb 2023)

-
- wolfssl: remove special BIO return code handling
+
- urlapi: avoid Curl_dyn_addf() for hex outputs

-
  - rely solely on the retry flag in BIO, similar to OpenSSL vtls
-
    implementation.
+
  Inspired by the recent fixes to escape.c, we should avoid calling
+
  Curl_dyn_addf() in loops, perhaps in particular when adding something so
+
  simple as %HH codes - for performance reasons. This change makes the
+
  same thing for the URL parser's two URL-encoding loops.

-
  Ref: https://github.com/curl/curl/pull/10021#issuecomment-1336147053
+
  Closes #10384

-
  Closes #10033
+
- urlapi: skip path checks if path is just "/"

-
Daniel Stenberg (6 Dec 2022)
+
  As a miniscule optimization, treat a path of the length 1 as the same as
+
  non-existing, as it can only be a single leading slash, and that's what
+
  we do for no paths as well.

-
- openssl: return -1 on error in the BIO callbacks
+
  Closes #10385

-
  BIO_read and BIO_write return negative numbers on error, including
-
  retryable ones. A regression from 55807e6. Both branches should be
-
  returning -1.
+
Philip Heiduck (1 Feb 2023)

-
  The APIs are patterned after POSIX read and write which, similarly,
-
  return -1 on errors, not zero, with EAGAIN treated as an error.
+
- GHA/macos: use Xcode_14.0.1 for cmake builds

-
  Bug: https://github.com/curl/curl/issues/10013#issuecomment-1335308146
-
  Reported-by: David Benjamin
-
  Closes #10021
+
  Fixes #10356
+
  Closes #10381

-
Ryan Schmidt (6 Dec 2022)
+
Viktor Szakats (1 Feb 2023)

-
- config-mac: remove HAVE_SYS_SELECT_H
+
- tls: fixes for wolfssl + openssl combo builds

-
  When compiling for classic Mac OS with GUSI, there is no sys/select.h.
-
  GUSI provides the "select" function prototype in sys/time.h.
+
  1. Add `USE_WOLFSSL` to the TLS backend priority list in
+
     `lib/curl_ntlm_core.c`.

-
  Closes #10039
+
  2. Fix `lib/curl_ntlm_core.h` to respect TLS backend priority, bringing
+
     it in sync with the above list and `lib/curl_ntlm_core.c` itself.

-
- setup: do not require __MRC__ defined for Mac OS 9 builds
+
     Reported-by: Mark Roszko
+
     Ref: https://github.com/curl/curl/issues/10321

-
  Partially reverts "somewhat protect Mac OS X users from using Mac OS 9
-
  config file", commit 62519bfe059251af2914199f284c736553ff0489.
+
  3. Allow enabling both wolfSSL and OpenSSL at the same time in
+
     `lib/Makefile.mk` bringing this in line with cmake/autotools builds.
+
     Update logic to select the crypto-specific lib for `ngtcp2`, which
+
     supports a single TLS backend at the same time.

-
  Do things that are specific to classic Mac OS (i.e. include config-mac.h
-
  in curl_setup.h and rename "main" to "curl_main" in tool_setup.h) when
-
  only "macintosh" is defined. Remove the additional condition that
-
  "__MRC__" should be defined since that would only be true with the MPW
-
  MrC compiler which prevents the use of other reasonable compilers like
-
  the MPW SC compiler and especially the Metrowerks CodeWarrior compilers.
-
  "macintosh" is only defined by classic Mac OS compilers so this change
-
  should not affect users of Mac OS X / OS X / macOS / any other OS.
+
  Closes #10322

-
  Closes #10037
+
Daniel Stenberg (1 Feb 2023)

-
- curl.h: name all public function parameters
+
- RELEASE-NOTES: synced

-
  Most public function parameters already have names; this adds those
-
  that were missing.
+
- docs/INSTALL: document how to use multiple TLS backends

-
  Closes #10036
+
  And document how OpenSSL forks and wolfSSL cannot be used at the same
+
  time.

-
Andy Alt (6 Dec 2022)
+
  Reported-by: Mark Roszko
+
  Fixes #10321
+
  Closes #10382

-
- docs/examples: spell correction ('Retrieve')
+
Kvarec Lezki (1 Feb 2023)

-
  Closes #10040
+
- cookies: fp is always not NULL

-
Daniel Stenberg (6 Dec 2022)
+
  Closes #10383

-
- unit1302: slightly extended
+
Daniel Stenberg (31 Jan 2023)

-
  To test more base64 decoding
+
- escape: use table lookup when adding %-codes to output

-
- base64: faster base64 decoding
+
  On my dev host, this code runs 7.8 times faster.

-
  - by using a lookup table instead of strchr()
-
  - by doing full quantums first, then padding
+
  Closes #10377

-
  Closes #10032
+
- unit2600: avoid error: ‘TEST_CASES’ defined but not used

-
Michael Musset (6 Dec 2022)
+
  Follow-up to d55de24dce9d51

-
- libssh2: return error when ssh_hostkeyfunc returns error
+
  Closes #10379

-
  return CURLE_PEER_FAILED_VERIFICATION if verification with the callback
-
  return a result different than CURLKHMATCH_OK
+
- escape: hex decode with a lookup-table

-
  Closes #10034
+
  Makes the decoding 2.8 times faster in my tests.

-
Viktor Szakats (5 Dec 2022)
+
  Closes #10376

-
- Makefile.mk: improve a GNU Make hack [ci skip]
+
- cf-socket: fix build error wo TCP_FASTOPEN_CONNECT

-
  Replace the hack of using `$() ` to represent a single space. The new
-
  method silences the `--warn-undefined-variables` debug warning and it's
-
  also a better-known form of solving this problem.
+
  Follow-up to 5651a36d1a

-
  Reviewed-by: Jay Satiro
-
  Closes #10031
+
  Closes #10378

-
Daniel Stenberg (5 Dec 2022)
+
  Reviewed-by: Stefan Eissing

-
- tests/unit/.gitignore: ignore all unit + 4 digits files
+
Stefan Eissing (31 Jan 2023)

-
- base64: encode without using snprintf
+
- CI: add pytest github workflow to CI test/tests-httpd on a HTTP/3 setup

-
  For speed. In some tests, this approch is 29 times faster!
+
  Closes #10317

-
  Closes #10026
+
- connect: fix strategy testing for attempts, timeouts and happy-eyeball

-
- base64: better alloc size
+
  - add test2600 as a unit test that triggers various connect conditions
+
    and monitors behaviour, available in a debug build only.

-
  The previous algorithm allocated more bytes than necessary.
+
  - this exposed edge cases in connect.c that have been fixed

-
  Suggested-by: xtonik on github
-
  Fixes #10024
-
  Closes #10025
+
  Closes #10312

-
Ryan Schmidt (5 Dec 2022)
+
- cf-socket: improvements in socket I/O handling

-
- config-mac: fix typo: size_T -> size_t
+
  - Curl_write_plain/Curl_read_plain have been eliminated. Last code use
+
    now uses Curl_conn_send/recv so that requests use conn->send/revc
+
    callbacks which defaults to cfilters use.
+
  - Curl_recv_plain/Curl_send_plain have been internalized in cf-socket.c.
+
  - USE_RECV_BEFORE_SEND_WORKAROUND (active on Windows) has been moved
+
    into cf-socket.c. The pre_recv buffer is held at the socket filter
+
    context.  `postponed_data` structures have been removed from
+
    `connectdata`.
+
  - the hanger in HTTP/2 request handling was a result of read buffering
+
    on all sends and the multi handling is not prepared for this. The
+
    following happens:

-
  Both MPW and CodeWarrior compilers complained about this.
+
     - multi preforms on a HTTP/2 easy handle
+
     - h2 reads and processes data
+
     - this leads to a send of h2 data
+
     - which receives and buffers before the send
+
     - h2 returns
+
     - multi selects on the socket, but no data arrives (its in the buffer alre
+
  ady)
+
     the workaround now receives data in a loop as long as there is something i
+
  n
+
     the buffer. The real fix would be for multi to change, so that `data_pendi
+
  ng`
+
     is evaluated before deciding to wait on the socket.

-
  Closes #10029
+
  io_buffer, optional, in cf-socket.c, http/2 sets state.drain if lower
+
  filter have pending data.

-
Daniel Stenberg (3 Dec 2022)
+
  This io_buffer is only available/used when the
+
  -DUSE_RECV_BEFORE_SEND_WORKAROUND is active, e.g. on Windows
+
  configurations. It also maintains the original checks on protocol
+
  handler being HTTP and conn->send/recv not being replaced.

-
- RELEASE-NOTES: synced
+
  The HTTP/2 (nghttp2) cfilter now sets data->state.drain when it finds
+
  out that the "lower" filter chain has still pending data at the end of
+
  its IO operation. This prevents the processing from becoming stalled.

-
Jakub Zakrzewski (2 Dec 2022)
+
  Closes #10280

-
- CMake: fix build with `CURL_USE_GSSAPI`
+
Daniel Stenberg (31 Jan 2023)

-
  CMAKE_*_LINKER_FLAGS must be a string but GSS_LINKER_FLAGS is a list, so
-
  we need to replace semicolons with spaces when setting those.
+
- openssl: only use CA_BLOB if verifying peer

-
  Fixes #9017
-
  Closes #1022
+
  Reported-by: Paul Groke
+
  Bug: https://curl.se/mail/lib-2023-01/0070.html
+
  Fixes #10351
+
  Closes #10359

-
Max Dymond (2 Dec 2022)
+
Thomas1664 on github (31 Jan 2023)

-
- ci: Reuse fuzzing snippet from curl-fuzzer project
+
- curl_free.3: fix return type of `curl_free`

-
Diogo Teles Sant'Anna (2 Dec 2022)
+
  Fixes #10373
+
  Closes #10374

-
- GHA: clarify workflows permissions, set least possible privilege
+
Daniel Stenberg (30 Jan 2023)

-
  Set top-level permissions to None on all workflows, setting per-job
-
  permissions. This avoids that new jobs inherit unwanted permissions.
+
- zuul: stop using this CI service

-
  Discussion: https://curl.se/mail/lib-2022-11/0028.html
+
  The important jobs have already transitioned. The remaining ones we can
+
  skip for now.

-
  Signed-off-by: Diogo Teles Sant'Anna <diogoteles@google.com>
+
  Closes #10368

-
  Closes #9928
+
- copyright: remove "m4/ax_compile_check_sizeof.m4" from skips

-
Viktor Szakats (2 Dec 2022)
+
  and report if skipped files do not exist.

-
- Makefile.mk: address minor issues
+
  Follow-up to 9e11c2791fb960758 which removed the file.

-
  - Fix `NROFF` auto-detection with certain shell/make-build combinations:
+
  Closes #10369

-
    When a non-MSYS2 GNU Make runs inside an MSYS2 shell, Make executes
-
    the detection command as-is via `CreateProcess()`. It fails because
-
    `command` is an `sh` built-in. Ensure to explicitly invoke the shell.
+
- ws: unstick connect-only shutdown

-
  - Initialize user-customizable variables:
+
  As this mode uses blocking sockets, it must set them back to
+
  non-blocking in disconnect to avoid the risk of getting stuck.

-
    Silences a list of warnings when running GNU Make with the option
-
    `--warn-undefined-variables`. Another benefit is that it's now easy
-
    to look up all user-customizable `Makefile.mk` variables by grepping
-
    for ` ?=` in the curl source tree.
+
  Closes #10366

-
    Suggested-by: Gisle Vanem
-
    Ref: https://github.com/curl/curl/pull/9764#issuecomment-1330674433
+
- ws: remove bad assert

-
  - Fix `MKDIR` invocation:
+
  Reported-by: Stanley Wucw
+
  Fixes #10347
+
  Closes #10366

-
    Avoid a warning and potential issue in envs without forward-slash
-
    support.
+
- openssl: adapt to boringssl's error code type

-
  Closes #10000
+
  BoringSSL uses uint32_t, OpenSSL uses 'unsigned 'long'

-
Rob de Wit (2 Dec 2022)
+
  Closes #10360

-
- curl_get_line: allow last line without newline char
+
- tool_operate: repair --rate

-
  improve backwards compatibility
+
  Regression from a55256cfb242 (7.87.0)
+
  Reported-by: highmtworks on github
+
  Fixes #10357
+
  Closes #10358

-
  Test 3200 verifies
+
- dict: URL decode the entire path always

-
  Closes #9973
+
  Reported-by: dekerser on github
+
  Fixes #10298
+
  Closes #10354

-
Daniel Stenberg (2 Dec 2022)
+
Stefan Eissing (29 Jan 2023)

-
- cookie: open cookie jar as a binary file
+
- vtls: do not null-check when we already assume cf-ctx exists

-
  On Windows there is a difference and for text files, ^Z means end of
-
  file which is not desirable.
+
  Fixes #10361
+
  Closes #10362

-
  Ref: #9973
-
  Closes #10017
+
Daniel Stenberg (29 Jan 2023)

-
- runtests: only do CRLF replacements for hyper if it is HTTP
+
- RELEASE-NOTES: synced

-
  Closes #10016
+
- CURLOPT_READFUNCTION.3: the callback 'size' arg is always 1

-
Stefan Eissing (1 Dec 2022)
+
  Reported-by: Brian Green
+
  Fixes #10328
+
  Closes #10355

-
- openssl: fix for BoringSSL BIO result interpretation mixups
+
- copyright.pl: cease doing year verifications

-
  Reported-by: Robin Marx
-
  Fixes #10013
-
  Closes #10015
+
  As we have (mostly) removed the copyright year ranges.

-
Max Dymond (1 Dec 2022)
+
  Reported-by: Ryan Schmidt
+
  Fixes #10345
+
  Closes #10352

-
- ci: Remove zuul fuzzing job as it's superseded by CIFuzz
+
Dan Fandrich (28 Jan 2023)

-
Daniel Stenberg (1 Dec 2022)
+
- CI: Work around a labeler bug that removes labels

-
- runtests: do CRLF replacements per section only
+
Jay Satiro (26 Jan 2023)

-
  The `crlf="yes"` attribute and "hyper mode" are now only applied on a
-
  subset of dedicated sections: data, datacheck, stdout and protocol.
+
- write-out.d: clarify Windows % symbol escaping

-
  Updated test 2500 accordingly.
+
  - Clarify that in Windows batch files the % must be escaped as %%, and
+
    at the command prompt it cannot be escaped which could lead to
+
    incorrect expansion.

-
  Also made test1 use crlf="yes" for <protocol>, mostly because it is
-
  often used as a template test case. Going forward, using this attribute
-
  we should be able to write test cases using linefeeds only and avoid
-
  mixed line ending encodings.
+
  Prior to this change the doc implied % must be escaped as %% in win32
+
  always.

-
  Follow-up to ca15b7512e8d11
+
  ---

-
  Fixes #10009
-
  Closes #10010
+
  Examples showing how a write-out argument is received by curl:

-
Stefan Eissing (1 Dec 2022)
+
  If curl --write-out "%{http_code}" is executed in a batch file:
+
  {http_code}

-
- gnutls: use common gnutls init and verify code for ngtcp2
+
  If curl --write-out "%%{http_code}" is executed in a batch file:
+
  %{http_code}

-
  Closes #10007
+
  If curl --write-out "%{http_code}" is executed from the command prompt:
+
  %{http_code}

-
Baitinq on github (1 Dec 2022)
+
  If curl --write-out "%%{http_code}" is executed from the command prompt:
+
  %%{http_code}

-
- aws_sigv4: fix typos in aws_sigv4.c
+
  At the command prompt something like "%{speed_download}%{http_code}"
+
  would first be parsed by the command interpreter as %{speed_download}%
+
  and would be expanded as environment variable {speed_download} if it
+
  existed, though that's highly unlikely since Windows environment names
+
  don't use braces.

-
  Closes #10008
+
  ---

-
Kenneth Myhra (30 Nov 2022)
+
  Reported-by: Muhammad Hussein Ammari

-
- curl.h: include <sys/select.h> on SerenityOS
+
  Ref: https://github.com/bagder/everything-curl/pull/279

-
  Closes #10006
+
  Fixes https://github.com/curl/curl/issues/10323
+
  Closes https://github.com/curl/curl/pull/10337

-
Daniel Stenberg (30 Nov 2022)
+
Ryan Schmidt (26 Jan 2023)

-
- openssl: prefix errors with '[lib]/[version]: '
+
- connect: Fix build when not ENABLE_IPV6

-
  To help users understand where this (cryptic) error message comes from.
+
  Check for ENABLE_IPV6 before accessing AF_INET6. Fixes build failure
+
  introduced in 1c5d8ac.

-
  Suggested-by: Philip Sanetra
-
  Ref: #10002
-
  Closes #10004
+
  Closes https://github.com/curl/curl/pull/10344

-
Stefan Eissing (30 Nov 2022)
+
- cf-socket: Fix build when not HAVE_GETPEERNAME

-
- tests: add HTTP/3 test case, custom location for proper nghttpx
+
  Remove remaining references to conn and sockfd, which were removed from
+
  the function signature when conninfo_remote was renamed to
+
  conn_set_primary_ip in 6a8d7ef.

-
  - adding support for HTTP/3 test cases via a nghttpx server that is
-
    build with ngtcp2 and nghttp3.
-
  - test2500 is the first test case, performing a simple GET.
-
  - nghttpx is checked for support and the 'feature' nghttpx-h3
-
    is set accordingly. test2500 will only run, when supported.
-
  - a specific nghttpx location can be given in the environment
-
    variable NGHTTPX or via the configure option
-
      --with-test-nghttpx=<path>
+
  Closes https://github.com/curl/curl/pull/10343

-
  Extend NGHTTPX config to H2 tests as well
+
Stefan Eissing (26 Jan 2023)

-
  * use $ENV{NGHTTPX} and the configured default also in http2 server starts
-
  * always provide the empty test/nghttpx.conf to nghttpx. as it defaults to
-
    reading /etc/nghttpx/nghttpx.conf otherwise.
+
- vtls: Manage current easy handle in nested cfilter calls

-
  Added nghttpx to CI ngtcp2 jobs to run h3 tests.
+
  The previous implementation cleared `data` so the outer invocation lost
+
  its data, which could lead to a crash.

-
  Closes #9031
+
  Bug: https://github.com/curl/curl/issues/10336
+
  Reported-by: Fujii Hironori

-
Daniel Stenberg (30 Nov 2022)
+
  Closes https://github.com/curl/curl/pull/10340

-
- RELEASE-NOTES: synced
+
Dan Fandrich (25 Jan 2023)

-
  Removed duplicate after contributors.sh fix: 9967c10b6daa1
+
- CI: Add even more paths to the labeler config (#10326)

-
- scripts/contributors.sh: strip one OR MORE leading spaces
+
- scripts: Fix Appveyor job detection in cijobs.pl

-
  From names found credited in commit logs
+
  The reorganization in #9769 broke the script. This should probably be
+
  rewritten to use a YAML parser for better upward compatibility.

-
- RELEASE-NOTES: synced
+
- CI: Add a few more paths to the labeler config (#10326)

-
- openssl/mbedtls: use %d for outputing port with failf (int)
+
- CI: Switch the labeler event to pull_request_target

-
  Coverity CID 1517100
+
  Otherwise, the action won't work on PRs from forked repositories
+
  (#10326).

-
  Also, remove some int typecasts in vtls.c for the port number
+
Viktor Szakats (25 Jan 2023)

-
  Closes #10001
+
- cmake: delete redundant macro definition `SECURITY_WIN32`

-
- KNOWN_BUGS: remove "Multi perform hangs waiting for threaded resolver"
+
  Stop explicitly defining `SECURITY_WIN32` in CMake builds.

-
  We now offer a way to avoid that hang, using CURLOPT_QUICK_EXIT.
+
  No other build systems define this macro, because it's unconditionally
+
  defined in `lib/curl_sspi.h` already. This is the only curl source using
+
  the `sspi.h` and `security.h` Win32 headers, and no other Win32 headers
+
  need this macro.

-
  Follow-up to 49798cac832ab1 fixed via #9147
+
  Reviewed-by: Jay Satiro
+
  Closes #10341

-
  Closes #9999
+
Fredrik (24 Jan 2023)

-
- KNOWN_BUGS: remove "--interface for ipv6 binds to unusable IP address"
+
- winbuild: document that arm64 is supported

-
  Since years back the "if2ip" function verifies that it binds to a local IPv6
-
  address that uses the same scope as the remote address.
+
  Building an arm64 version works flawlessly with the VS arm64 toolset.

-
  This is not a bug.
+
  Closes https://github.com/curl/curl/pull/10332

-
  Fixes #686
-
  Closes #9998
+
Cherish98 (24 Jan 2023)

-
- test1276: verify lib/optiontable.pl
+
- openssl: don't log raw record headers

-
  Checks that it generates an output identical to the file.
+
  - Skip content type SSL3_RT_HEADER in verbose TLS output.

-
- lib/optiontable.pl: adapt to CURLOPTDEPRECATED()
+
  This commit prevents bogus and misleading verbose TLS header messages as
+
  discussed in #10299.

-
  Follow-up from 6967571bf20624bc
+
  Assisted-by: Peter Wu

-
  Reported-by: Gisle Vanem
+
  Closes https://github.com/curl/curl/pull/10299

-
  Fixes #9992
-
  Closes #9993
+
Marc Aldorasi (24 Jan 2023)

-
- docs/INSTALL.md: list OSes and CPUs quoted
+
- cmake: use list APPEND syntax for CMAKE_REQUIRED_DEFINITIONS

-
  to make them skip spellcheck. Also added a new CPU.
+
  - Use list() instead of set() for CMAKE_REQUIRED_DEFINITIONS list since
+
    the former is clearer.

-
  Follow-up to 4506cbf7f24a2a
+
  Closes https://github.com/curl/curl/pull/10272

-
  Closes #9997
+
Dan Fandrich (23 Jan 2023)

-
Ikko Ashimine (28 Nov 2022)
+
- CI: Add a workflow to automatically label pull requests

-
- vtls: fix typo in vtls_int.h
+
  The labeler language is quite restrictive right now so labels are added
+
  quite conservatively, meaning that many PRs won't get labels when it's
+
  "obvious" they should. It will still save some manual work on those
+
  that it can label.

-
  paramter -> parameter
+
Jay Satiro (21 Jan 2023)

-
  Closes: #9996
-
  Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
+
- system.h: assume OS400 is always built with ILEC compiler

-
Daniel Stenberg (28 Nov 2022)
+
  Prior to this change the OS400 types were only defined when __ILEC400__.
+
  That symbol is only defined by IBM's C compiler and not their C++
+
  compiler, which led to missing types when users on OS400 would compile a
+
  C++ application that included curl.

-
- curl-openssl.m4: do not add $prefix/include/openssl to CPPFLAGS
+
  The IBM C and C++ compilers are the only native compilers on the
+
  platform.

-
  As OpenSSL's include files are all included using <openssl/*.h> in curl
-
  source code, we just risk that existing openssl files will "shadow"
-
  include files without path if that path is provided.
+
  Assisted-by: Jon Rumsey
+
  Reported-by: John Sherrill

-
  Fixes #9989
-
  Closes #9988
+
  Fixes https://github.com/curl/curl/issues/10305
+
  Closes https://github.com/curl/curl/pull/10329

-
- INSTALL: update operating systems and CPU archs
+
xgladius (20 Jan 2023)

-
  Update after recent runs on Twitter/Mastodon and my blog
+
- cmake: Remove deprecated symbols check

-
  Closes #9994
+
  curl stopped use of CMAKE_USE_ as a prefix for its own build symbols in
+
  2021 and added a check, meant to last 1 year, to fatally error on those
+
  symbols. This commit removes that check.

-
Stefan Eissing (28 Nov 2022)
+
  Closes https://github.com/curl/curl/pull/10314

-
- tls: backends use connection filters for IO, enabling HTTPS-proxy
+
Dan Fandrich (20 Jan 2023)

-
   - OpenSSL (and compatible)
-
   - BearSSL
-
   - gnutls
-
   - mbedtls
-
   - rustls
-
   - schannel
-
   - secure-transport
-
   - wolfSSL (v5.0.0 and newer)
+
- docs: POSTFIELDSIZE must be set to -1 with read function

-
   This leaves only the following without HTTPS-proxy support:
-
   - gskit
-
   - nss
-
   - wolfSSL (versions earlier than v5.0.0)
+
  Reported-by: RanBarLavie on github

-
  Closes #9962
+
  Closes #10313

-
Daniel Stenberg (28 Nov 2022)
+
Stefan Eissing (20 Jan 2023)

-
- include/curl/curl.h: bump the deprecated requirements to gcc 6.1
+
- vtls: fix hostname handling in filters

-
  Reported-by: Michael Kaufmann
-
  Fixes #9917
-
  Closes #9987
+
  - Copy the hostname and dispname to ssl_connect_data.

-
Patrick Monnerat (28 Nov 2022)
+
  Use a copy instead of referencing the `connectdata` instance since this
+
  may get free'ed on connection reuse.

-
- mime: relax easy/mime structures binding
+
  Reported-by: Stefan Talpalaru
+
  Reported-by: sergio-nsk@users.noreply.github.com

-
  Deprecation and removal of codeset conversion support from the library
-
  have released the strict need for an early binding of mime structures to
-
  an easy handle (https://github.com/curl/curl/commit/2610142).
+
  Fixes https://github.com/curl/curl/issues/10273
+
  Fixes https://github.com/curl/curl/issues/10309

-
  This constraint currently forces to create the handle before the mime
-
  structure and the latter cannot be attached to another handle once
-
  created (see https://curl.se/mail/lib-2022-08/0027.html).
+
  Closes https://github.com/curl/curl/pull/10310

-
  This commit removes the handle pointers from the mime structures
-
  allowing more flexibility on their use.
+
Sergey Bronnikov (17 Jan 2023)

-
  When an easy handle is duplicated, bound mime structures must however
-
  still be duplicated too as their components hold send-time dynamic
-
  information.
+
- lib: fix typos

-
  Closes #9927
+
  Closes https://github.com/curl/curl/pull/10307

-
fractal-access (26 Nov 2022)
+
- curl_version_info.3: fix typo

-
- test416: verify growing FTP file support
+
  Closes https://github.com/curl/curl/pull/10306

-
  Added setting: RETRSIZE [size] in the <servercmd> section. When set this
-
  will cause the test FTP server to return the size set (rather than the
-
  actual size) in the acknowledgement from a RETR request.
+
Jay Satiro (17 Jan 2023)

-
  Closes #9772
+
- openssl: Don't ignore CA paths when using Windows CA store (redux)

-
- ftp: support growing files with CURLOPT_IGNORE_CONTENT_LENGTH
+
  .. and remove 'experimental' designation from CURLSSLOPT_NATIVE_CA.

-
  When using the option CURLOPT_IGNORE_CONTENT_LENGTH (set.ignorecl in
-
  code) to support growing files in FTP, the code should ignore the
-
  initial size it gets from the server as this will not be the final size
-
  of the file. This is done in ftp_state_quote() to prevent a size request
-
  being issued in the initial sequence. However, in a later call to
-
  ftp_state_get_resp() the code attempts to get the size of the content
-
  again if it doesn't already have it, by parsing the response from the
-
  RETR request. This fix prevents this parsing of the response to get the
-
  size when the set.ignorecl option is set. This should maintain the size
-
  value as -1, unknown, in this situation.
+
  This commit restores the behavior of CURLSSLOPT_NATIVE_CA so that it
+
  does not override CURLOPT_CAINFO / CURLOPT_CAPATH, or the hardcoded
+
  default locations. Instead the native Windows CA store can be used at
+
  the same time.

-
  Closes #9772
+
  ---

-
Stefan Eissing (26 Nov 2022)
+
  This behavior was originally added over two years ago in abbc5d60
+
  (#5585) but then 83393b1a (#7892) broke it over a year ago, I assume
+
  inadvertently.

-
- cfilter: re-add `conn` as parameter to cfilter setup methods
+
  The CURLSSLOPT_NATIVE_CA feature was marked experimental and likely
+
  rarely used.

-
  - `Curl_ssl_get_config()` now returns the first config if no SSL proxy
-
    filter is active
+
  Ref: https://github.com/curl/curl/pull/5585
+
  Ref: https://github.com/curl/curl/pull/7892
+
  Ref: https://curl.se/mail/lib-2023-01/0019.html

-
  - socket filter starts connection only on first invocation of its
-
    connect method
+
  Closes https://github.com/curl/curl/pull/10244

-
  Fixes #9982
-
  Closes #9983
+
Daniel Stenberg (13 Jan 2023)

-
Daniel Stenberg (26 Nov 2022)
+
- RELEASE-NOTES: synced

-
- KNOWN_BUGS: remove five FTP related issues
+
- ws: fix autoping handling

-
  - "FTP with CONNECT and slow server"
+
  Reported-by: Alexey Savchuk
+
  Fixes #10289
+
  Closes #10294

-
  I believe this is not a problem these days.
+
- curl_log: avoid printf() format checking with mingw

-
  - "FTP with NULs in URL parts"
+
  Since it does not seem to like %zu and more

-
  The FTP protocol does not support them properly anyway.
+
  Follow-up to db91dbbf2

-
  - remove "FTP and empty path parts in the URL"
+
  Fixes #10291
+
  Closes #10292

-
  I don't think this has ever been reported as a real problem but was only
-
  a hypothetical one.
+
- tool_getparam: fix compiler warning when !HAVE_WRITABLE_ARGV

-
  - "Premature transfer end but healthy control channel"
+
  Follow-up to 2ed0e1f70ee176edf3d2

-
  This is not a bug, this is an optimization that *could* be performed but is
-
  not an actual problem.
+
  Closes #10286

-
  - "FTP without or slow 220 response"
+
Stefan Eissing (12 Jan 2023)

-
  Instead add to the documentation of the connect timeout that the
-
  connection is considered complete at TCP/TLS/QUIC layer.
+
- openssl: make the BIO_METHOD a local variable in the connection filter

-
  Closes #9979
+
  This avoids UAF issues when `curl_global_cleanup()` is called before all
+
  transfers have been completely handled. Unfortunately this seems to be a
+
  more common pattern than we like.

-
Stefan Eissing (26 Nov 2022)
+
  Closes #10285

-
- tests: add authorityInfoAccess to generated certs
+
Daniel Stenberg (12 Jan 2023)

-
  Generate stunnel.pem as well
+
- curl: output warning at --verbose output for debug-enabled version

-
  Closes #9980
+
  + a libcurl warning in the debug output

-
Daniel Stenberg (25 Nov 2022)
+
  Assisted-by: Jay Satiro

-
- runtests: --no-debuginfod now disables DEBUGINFOD_URLS
+
  Ref: https://curl.se/mail/lib-2023-01/0039.html
+
  Closes #10278

-
  Prior to this change, DEBUGINFOD_URLS was always disabled by runtests
-
  due to a report of it slowing down tests. However, some setups need it
-
  to fetch debug symbols, and if it is disabled on those systems then curl
-
  tests with valgrind will fail.
+
- src: add --http3-only

-
  Reported-by: Mark Gaiser
+
  Warning: --http3 and --http3-only are subject to change again (or be
+
  removed) before HTTP/3 support goes non-experimental.

-
  Ref: #8805
-
  Closes #9950
+
  Closes #10264

-
Casey Bodley (25 Nov 2022)
+
- curl.h: add CURL_HTTP_VERSION_3ONLY

-
- test/aws_sigv4: test cases for content-sha256
+
  As the previous CURL_HTTP_VERSION_3 option gets a slightly altered meaning.

-
  1956 adds the sha256 value corresponding to an empty buffer
-
  1957 adds an arbitrary value and confirms that the signature differs from 195
-
  6
-
  1958 adds whitespace to 1957 and confirms that the signature matches 1957
-
  1959 adds a value longer than 'char sha_hex[65]' in Curl_output_aws_sigv4()
+
  Closes #10264

-
  Signed-off-by: Casey Bodley <cbodley@redhat.com>
+
- connect: fix access of pointer before NULL check

-
  Closes #9804
+
  Detected by Coverity CID 1518992

-
- aws_sigv4: consult x-%s-content-sha256 for payload hash
+
  Closes #10284

-
  `Curl_output_aws_sigv4()` doesn't always have the whole payload in
-
  memory to generate a real payload hash. this commit allows the user to
-
  pass in a header like `x-amz-content-sha256` to provide their desired
-
  payload hash
+
Daniel Gustafsson (12 Jan 2023)

-
  some services like s3 require this header, and may support other values
-
  like s3's `UNSIGNED-PAYLOAD` and `STREAMING-AWS4-HMAC-SHA256-PAYLOAD`
-
  with special semantics. servers use this header's value as the payload
-
  hash during signature validation, so it must match what the client uses
-
  to generate the signature
+
- easyoptions: Fix header printing in generation script

-
  CURLOPT_AWS_SIGV4.3 now describes the content-sha256 interaction
+
  The optiontable.pl script prints the header comment when generating
+
  easyoptions.c, but it wasn't escaping all characters which jumbled the
+
  curl ascii logo.  Fix by escaping.

-
  Signed-off-by: Casey Bodley <cbodley@redhat.com>
+
  Cloes #10275

-
  Closes #9804
+
Harry Sintonen (12 Jan 2023)

-
Philip Heiduck (25 Nov 2022)
+
- tool_getparam: fix hiding of command line secrets

-
- GHA: NSS use clang instead of clang-9
+
  Closes #10276

-
  Closes #9978
+
Stefan Eissing (12 Jan 2023)

-
Daniel Stenberg (25 Nov 2022)
+
- tests: document the cfilter debug logging options

-
- RELEASE-NOTES: synced
+
  Closes #10283

-
- tool_operate: override the numeric locale and set "C" by force
+
- curl_log: for failf/infof and debug logging implementations

-
  Makes curl always use dot as decimal separator for options,
-
  independently of what the locale says. Makes scripts and command lines
-
  portable.
+
   - new functions and macros for cfilter debugging
+
   - set CURL_DEBUG with names of cfilters where debug logging should be
+
     enabled
+
   - use GNUC __attribute__ to enable printf format checks during compile

-
  Updated docs accordingly.
+
  Closes #10271

-
  Reported-by: Daniel Faust
+
Daniel Stenberg (10 Jan 2023)

-
  Fixes #9969
-
  Closes #9972
+
- RELEASE-NOTES: synced

-
- test1662: verify formpost, 301 redirect, no rewind possible
+
Nick Banks (10 Jan 2023)

-
  Reproduces #9735 and verifies the subsequent fix. The original issue
-
  uses a pipe that cannot be rewound, but this test case instead sets a
-
  callback without rewind ability to get roughly the same properties but
-
  being a much more portable test.
+
- msh3: update to v0.6

-
- lib: rewind BEFORE request instead of AFTER previous
+
  Closes #10192

-
  This makes a big difference for cases when the rewind is not actually
-
  necessary to perofm (for example HTTP response code 301 converts to GET)
-
  and therefore the rewind can be avoided. In particular for situations
-
  when that rewind fails, for example when reading from a pipe or similar.
+
Stefan Eissing (10 Jan 2023)

-
  Reported-by: Ali Utku Selen
+
- ngtcp2: add CURLOPT_SSL_CTX_FUNCTION support for openssl+wolfssl

-
  Fixes #9735
-
  Closes #9958
+
  Using common method for SSL_CTX initialization of verfiy peer and CA
+
  settings. This also provides X509_STORE sharing to become available for
+
  ngtcp2+openssl HTTP/3.

-
- vtls: repair build with disabled proxy
+
  Reported-by: violetlige on github

-
  Closes #9974
+
  Fixes #10222
+
  Closes #10239

-
Daniel Gustafsson (23 Nov 2022)
+
Daniel Stenberg (10 Jan 2023)

-
- packaging: remove traces of deleted files
+
- cf-socket: make infof() call use %zu for size_t output

-
  Commit a8861b6cc removed packages/DOS but left a few traces of it
-
  which broke the distcheck CI. Remove all traces.
+
  Detected by Coverity CID 1518986 and CID 1518984

-
  Closes: #9971
-
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
  Closes #10268

-
- openssl: silence compiler warning when not using IPv6
+
Jon Rumsey (10 Jan 2023)

-
  In non-IPv6 builds the conn parameter is unused, and compilers which
-
  run with "-Werror=unused-parameter" (or similar) warnings turned on
-
  fails to build. Below is an excerpt from a CI job:
+
- os400: fixes to make-lib.sh and initscript.sh

-
    vtls/openssl.c: In function ‘Curl_ossl_verifyhost’:
-
    vtls/openssl.c:2016:75: error: unused parameter ‘conn’ [-Werror=unused-
-
  parameter]
-
     2016 | CURLcode Curl_ossl_verifyhost(struct Curl_easy *data, struct connec
-
  tdata *conn,
-
          |                                                       ~~~~~~~~~~~~~
-
  ~~~~~~~^~~~
+
  Adjust how exports list is generated from header files to account for
+
  declarations across multiple lines and CURL_DEPRECATED(...) tags.

-
  Closes: #9970
-
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
  Update initscript.sh

-
- netware: remove leftover traces
+
  Specify qadrt_use_inline to prevent unistd.h in ASCII runtime defining
+
  close(a) -> close_a(a)

-
  Commit 3b16575ae938dec2a29454631a12aa52b6ab9c67 removed support for
-
  building on Novell Netware, but a few leftover traces remained. This
-
  removes the last bits.
+
  Fixes #10266
+
  Closes #10267

-
  Closes: #9966
-
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
Stefan Eissing (9 Jan 2023)

-
Ryan Schmidt (23 Nov 2022)
+
- tests-httpd: basic infra to run curl against an apache httpd plus nghttpx for
+
   h3

-
- curl_endian: remove Curl_write64_le from header
+
  - adding '--with-test-httpd=<path>' to configure non-standard apache2
+
    install
+
  - python env and base classes for running httpd
+
  - basic tests for connectivity with h1/h2/h3
+
  - adding test cases for truncated responses in http versions.
+
  - adding goaway test for HTTP/3.
+
  - adding "stuttering" tests with parallel downloads in chunks with
+
    varying delays between chunks.

-
  The actual function was already removed in 4331c6dc.
+
  - adding a curltest module to the httpd server, adding GOAWAY test.
+
      - mod_curltest now installs 2 handlers
+
        - 'echo': writing as response body what came as request body
+
        - 'tweak': with query parameters to tweak response behaviour
+
  - marked known fails as skip for now

-
  See #7280
-
  Closes #9968
+
  Closes #10175

-
Daniel Stenberg (22 Nov 2022)
+
- quic: improve connect error message, debugging info, fix false connect report

-
- docs: add more "SEE ALSO" links to CA related pages
+
  - ECONNECTREFUSED has not its own fail message in quic filters
+
  - Debug logging in connect eyballing improved
+
  - Fix bug in ngtcp2/quiche that could lead to false success reporting.

-
  Closes #9959
+
  Reported-by: Divy Le Ray

-
- examples: update descriptions
+
  Fixes #10245
+
  Closes #10248

-
  Make them not say "this is an example showing..." and instead just say
-
  what the example shows.
+
- quiche: fix build without any HTTP/2 implementation

-
  Closes #9960
+
  Fixes #10260
+
  Closes #10263

-
Stefan Eissing (22 Nov 2022)
+
Daniel Stenberg (9 Jan 2023)

-
- vtls: localization of state data in filters
+
- .github/workflows/linux.yml: add a quiche CI job

-
   - almost all backend calls pass the Curl_cfilter intance instead of
-
     connectdata+sockindex
-
   - ssl_connect_data is remove from struct connectdata and made internal
-
     to vtls
-
   - ssl_connect_data is allocated in the added filter, kept at cf->ctx
+
  Move over from zuul

-
   - added function to let a ssl filter access its ssl_primary_config and
-
     ssl_config_data this selects the propert subfields in conn and data,
-
     for filters added as plain or proxy
-
   - adjusted all backends to use the changed api
-
   - adjusted all backends to access config data via the exposed
-
     functions, no longer using conn or data directly
+
  Closes #10241

-
  cfilter renames for clear purpose:
+
- curl.h: allow up to 10M buffer size

-
   - methods `Curl_conn_*(data, conn, sockindex)` work on the complete
-
     filter chain at `sockindex` and connection `conn`.
-
   - methods `Curl_cf_*(cf, ...)` work on a specific Curl_cfilter
-
     instance.
-
   - methods `Curl_conn_cf()` work on/with filter instances at a
-
     connection.
-
   - rebased and resolved some naming conflicts
-
   - hostname validation (und session lookup) on SECONDARY use the same
-
     name as on FIRST (again).
+
  Bump the limit from 512K. There might be reasons for applications using
+
  h3 to set larger buffers and there is no strong reason for curl to have
+
  a very small maximum.

-
  new debug macros and removing connectdata from function signatures where not
-
  needed.
+
  Ref: https://curl.se/mail/lib-2023-01/0026.html

-
  adapting schannel for new Curl_read_plain paramter.
+
  Closes #10256

-
  Closes #9919
+
Tatsuhiro Tsujikawa (8 Jan 2023)

-
Daniel Stenberg (22 Nov 2022)
+
- GHA: use designated ngtcp2 and its dependencies versions

-
- examples/10-at-a-time: fix possible skipped final transfers
+
  Designate ngtcp2 and its dependency versions so that the CI build does
+
  not fail without our control.

-
  Prior to this change if curl_multi_perform returned 0 running handles
-
  and then all remaining transfers were added, then the perform loop would
-
  end immediately without performing those transfers.
+
  Closes #10257

-
  Reported-by: Mikhail Kuznetsov
+
Daniel Stenberg (8 Jan 2023)

-
  Fixes https://github.com/curl/curl/issues/9953
-
  Closes https://github.com/curl/curl/pull/9954
+
- docs/cmdline-opts/hsts.d: explain hsts more

-
Viktor Szakats (22 Nov 2022)
+
  Closes #10258

-
- Makefile.mk: portable Makefile.m32
+
Stefan Eissing (8 Jan 2023)

-
  Update bare GNU Make `Makefile.m32` to:
+
- msh3: run again in its cfilter

-
  - Move objects into a subdirectory.
-
  - Add support for MS-DOS. Tested with DJGPP.
-
  - Add support for Watt-32 (on MS-DOS).
-
  - Add support for AmigaOS.
-
  - Rename `Makefile.m32` to `Makefile.mk`
-
  - Replace `ARCH` with `TRIPLET`.
-
  - Build `tool_hugehelp.c` proper (when tools are available).
-
  - Drop MS-DOS compatibility macro `USE_ZLIB` (replaced by `HAVE_LIBZ`)
-
  - Add support for `ZLIB_LIBS` to override `-lz`.
-
  - Omit object files when building examples.
-
  - Default `CC` to `gcc` once again, for convenience. (Caveat: compiler
-
    name `cc` cannot be set now.)
-
  - Set `-DCURL_NO_OLDIES` for examples, like autotools does.
-
  - Delete `makefile.dj` files. Notice the configuration details and
-
    defaults are not retained with the new method.
-
  - Delete `makefile.amiga` files. A successful build needs a few custom
-
    options. We're also not retaining all build details from the existing
-
    Amiga make files.
-
  - Rename `Makefile.m32` to `Makefile.mk` to reflect that they are not
-
    Windows/MinGW32-specific anymore.
-
  - Add support for new `CFG` options: `-map`, `-debug`, `-trackmem`
-
  - Set `-DNDEBUG` by default.
-
  - Allow using `-DOS=...` in all `lib/config-*.h` headers, syncing this
-
    with `config-win32.h`.
-
  - Look for zlib parts in `ZLIB_PATH/include` and `ZLIB_PATH/lib`
-
    instead of bare `ZLIB_PATH`.
+
  - test 2500, single GET works
+
  - test 2501, single POST stalls
+
  - test 2502, multiple, sequential GETs each use a new connection since
+
    MsH3ConnectionGetState(qconn) no longer reports CONNECTED after one
+
    GET.

-
  Note that existing build configurations for MS-DOS and AmigaOS likely
-
  become incompatible with this change.
+
  Closes #10204

-
  Example AmigaOS configuration:
-
  ```
-
  export CROSSPREFIX=/opt/amiga/bin/m68k-amigaos-
-
  export CC=gcc
-
  export CPPFLAGS='-DHAVE_PROTO_BSDSOCKET_H'
-
  export CFLAGS='-mcrt=clib2'
-
  export LDFLAGS="${CFLAGS}"
-
  export LIBS='-lnet -lm'
-
  make -C lib -f Makefile.mk
-
  make -C src -f Makefile.mk
-
  ```
+
Jay Satiro (8 Jan 2023)

-
  Example MS-DOS configuration:
-
  ```
-
  export CROSSPREFIX=/opt/djgpp/bin/i586-pc-msdosdjgpp-
-
  export WATT_PATH=/opt/djgpp/net/watt
-
  export ZLIB_PATH=/opt/djgpp
-
  export OPENSSL_PATH=/opt/djgpp
-
  export OPENSSL_LIBS='-lssl -lcrypt'
-
  export CFG=-zlib-ssl
-
  make -C lib -f Makefile.mk
-
  make -C src -f Makefile.mk
-
  ```
+
- sendf: fix build for Linux TCP fastopen

-
  Closes #9764
+
  - Fix the remote addr struct dereference.

-
Stefan Eissing (22 Nov 2022)
+
  - Include cf-socket.h in urldata.h.

-
- cfiler: filter types have flags indicating what they do
+
  Follow-up to 6a8d7ef9 which changed conn->ipaddr (Curl_addrinfo* )
+
  member to conn->remote_addr (Curl_sockaddr_ex *) several days ago.

-
  - Adding Curl_conn_is_ip_connected() to check if network connectivity
-
    has been reached
+
  Reported-by: Stephan Guilloux

-
  - having ftp wait for network connectivity before proceeding with
-
    transfers.
+
  Fixes https://github.com/curl/curl/issues/10249
+
  Closes https://github.com/curl/curl/pull/10250

-
  Fixes test failures 1631 and 1632 with hyper.
+
Daniel Stenberg (7 Jan 2023)

-
  Closes #9952
+
- RELEASE-NOTES: synced

-
Daniel Stenberg (21 Nov 2022)
+
- setopt: move the SHA256 opt within #ifdef libssh2

-
- RELEASE-NOTES: synced
+
  Because only the libssh2 backend not supports it and thus this should
+
  return error if this option is used other backends.

-
Jay Satiro (20 Nov 2022)
+
  Reported-by: Harry Sintonen

-
- sendf: change Curl_read_plain to wrap Curl_recv_plain (take 2)
+
  Closes #10255

-
  Prior to this change Curl_read_plain would attempt to read the
-
  socket directly. On Windows that's a problem because recv data may be
-
  cached by libcurl and that data is only drained using Curl_recv_plain.
+
Patrick Monnerat (7 Jan 2023)

-
  Rather than rewrite Curl_read_plain to handle cached recv data, I
-
  changed it to wrap Curl_recv_plain, in much the same way that
-
  Curl_write_plain already wraps Curl_send_plain.
+
- nss: implement data_pending method

-
  Curl_read_plain -> Curl_recv_plain
-
  Curl_write_plain -> Curl_send_plain
+
  NSS currently uses the default Curl_none_data_pending() method which
+
  always returns false, causing TLS buffered input data to be missed.

-
  This fixes a bug in the schannel backend where decryption of arbitrary
-
  TLS records fails because cached recv data is never drained. We send
-
  data (TLS records formed by Schannel) using Curl_write_plain, which
-
  calls Curl_send_plain, and that may do a recv-before-send
-
  ("pre-receive") to cache received data. The code calls Curl_read_plain
-
  to read data (TLS records from the server), which prior to this change
-
  did not call Curl_recv_plain and therefore cached recv data wasn't
-
  retrieved, resulting in malformed TLS records and decryption failure
-
  (SEC_E_DECRYPT_FAILURE).
+
  The current commit implements the nss_data_pending() method that properly
+
  monitors the presence of available TLS data.

-
  The bug has only been observed during Schannel TLS 1.3 handshakes. Refer
-
  to the issue and PR for more information.
+
  Ref:#10077

-
  --
+
  Closes #10225

-
  This is take 2 of the original fix. It preserves the original behavior
-
  of Curl_read_plain to write 0 to the bytes read parameter on error,
-
  since apparently some callers expect that (SOCKS tests were hanging).
-
  The original fix which landed in 12e1def5 and was later reverted in
-
  18383fbf failed to work properly because it did not do that.
+
Jay Satiro (6 Jan 2023)

-
  Also, it changes Curl_write_plain the same way to complement
-
  Curl_read_plain, and it changes Curl_send_plain to return -1 instead of
-
  0 on CURLE_AGAIN to complement Curl_recv_plain.
+
- CURLOPT_HEADERDATA.3: warn DLL users must set write function

-
  Behavior on error with these changes:
+
  - Warn that in Windows if libcurl is running from a DLL and if
+
    CURLOPT_HEADERDATA is set then CURLOPT_WRITEFUNCTION or
+
    CURLOPT_HEADERFUNCTION must be set as well, otherwise the user may
+
    experience crashes.

-
  Curl_recv_plain returns -1 and *code receives error code.
-
  Curl_send_plain returns -1 and *code receives error code.
-
  Curl_read_plain returns error code and *n (bytes read) receives 0.
-
  Curl_write_plain returns error code and *written receives 0.
+
  We already have a similar warning in CURLOPT_WRITEDATA. Basically, in
+
  Windows libcurl could crash writing a FILE pointer that was created by
+
  a different C runtime. In Windows each DLL that is part of a program may
+
  or may not have its own C runtime.

-
  --
+
  Ref: https://github.com/curl/curl/issues/10231

-
  Ref: https://github.com/curl/curl/issues/9431#issuecomment-1312420361
+
  Closes https://github.com/curl/curl/pull/10233

-
  Assisted-by: Joel Depooter
-
  Reported-by: Egor Pugin
+
Jon Rumsey (5 Jan 2023)

-
  Fixes https://github.com/curl/curl/issues/9431
-
  Closes https://github.com/curl/curl/pull/9949
+
- x509asn1: fix compile errors and warnings

-
Sean McArthur (19 Nov 2022)
+
  Various small issues when built for GSKit

-
- hyper: classify headers as CONNECT and 1XX
+
  Closes #10238

-
  Closes #9947
+
Patrick Monnerat (5 Jan 2023)

-
Stefan Eissing (19 Nov 2022)
+
- runtests: fix detection of TLS backends

-
- ftp: fix "AUTH TLS" on primary conn and for SSL in PASV second conn
+
  Built-in TLS backends are detected at test time by scanning for their
+
  names in the version string line returned by the cli tool: as this line
+
  may also list the libssh configuration that mentions its own backend,
+
  the curl backend may be wrongly determined.

-
  Follow-up to dafdb20a26d0c89
+
  In example, if the version line contains "libssh/0.10.4/openssl/zlib",
+
  OpenSSL is detected as a curl-configured backend even if not.

-
  Reported-by: Anthony Hu
-
  Closes #9948
+
  This fix requires the backend names to appear as full words preceded by
+
  spacing in the version line to be recognized as curl TLS backends.

-
Jay Satiro (19 Nov 2022)
+
  Closes #10236

-
- CURLOPT_POST.3: Explain setting to 0 changes request type
+
Andy Alt (5 Jan 2023)

-
  Bug: https://github.com/curl/curl/issues/9849
-
  Reported-by:  MonkeybreadSoftware@users.noreply.github.com
+
- GHA: add job on Slackware 15.0

-
  Closes https://github.com/curl/curl/pull/9942
+
  Closes #10230

-
Daniel Stenberg (19 Nov 2022)
+
Daniel Stenberg (5 Jan 2023)

-
- docs/INSTALL.md: expand on static builds
+
- test363: make even smaller writes to loop more

-
  Remove from KNOWN_BUGS
+
- http_proxy: do not assign data->req.p.http use local copy

-
  Closes #9944
+
  Avoid the tricky reusing of the data->req.p.http pointer for http proxy
+
  tunneling.

-
Stefan Eissing (19 Nov 2022)
+
  Fixes #10194
+
  Closes #10234

-
- http: restore h3 to working condition after connection filter introduction
+
Stefan Eissing (5 Jan 2023)

-
  Follow-up to dafdb20a26d0c
+
- quic: rename vquic implementations, fix for quiche build.

-
  HTTP/3 needs a special filter chain, since it does the TLS handling
-
  itself. This PR adds special setup handling in the HTTP protocol handler
-
  that takes are of it.
+
  - quiche in debug mode did not build, fixed.
+
  - moved all vquic implementation files to prefix curl_* to avoid
+
    the potential mixups between provided .h files and our own.
+
  - quich passes test 2500 and 2502. 2501, the POST, fail with
+
    the body being rejected. Quich bug?

-
  When a handler, in its setup method, installs filters, the default
-
  behaviour for managing the filter chain is overridden.
+
  Closes #10242

-
  Reported-by: Karthikdasari0423 on github
+
- sectransp: fix for incomplete read/writes

-
  Fixes #9931
-
  Closes #9945
+
  SecureTransport expects result code errSSLWouldBlock when the requested
+
  length could not be sent/recieved in full. The previous code returned
+
  noErr, which let SecureTransport to believe that the IO had terminated
+
  prematurely.

-
Daniel Stenberg (18 Nov 2022)
+
  Fixes #10227
+
  Closes #10235

-
- urldata: change port num storage to int and unsigned short
+
Andy Alt (5 Jan 2023)

-
  Instead of long.
+
- GHA: Hacktoberfest CI: Update deprecated 'set-output' command

-
  Closes #9946
+
  Closes #10221

-
- Revert "sendf: change Curl_read_plain to wrap Curl_recv_plain"
+
Jay Satiro (5 Jan 2023)

-
  This reverts commit 12e1def51a75392df62e65490416007d7e68dab9.
+
- scripts: set file mode +x on all perl and shell scripts

-
  It introduced SOCKS proxy fails, like test 700 never ending.
+
  - Set all scripts +x, ie 644 => 755.

-
  Reopens #9431
+
  Prior to this change some scripts were not executable and therefore
+
  could not be called directly.

-
- HTTP-COOKIES.md: update the 6265bis link to draft-11
+
  ~~~
+
  git ls-files -s \*.{sh,pl,py} | grep -v 100755
+
  ~~~

-
  Closes #9940
+
  Closes https://github.com/curl/curl/pull/10219

-
- docs/WEBSOCKET.md: explain the URL use
+
Stefan Eissing (4 Jan 2023)

-
  Fixes #9936
-
  Closes #9941
+
- tool_operate: fix headerfile writing

-
Jay Satiro (18 Nov 2022)
+
  Do not rely on the first transfer started to be the first to get a
+
  response (remember -Z). All transfers now write the headefile (-D) in
+
  append mode, making sure that the order of transfer responses does not
+
  lead to overwrites of previous data.

-
- sendf: change Curl_read_plain to wrap Curl_recv_plain
+
  Closes #10224

-
  Prior to this change Curl_read_plain would attempt to read the
-
  socket directly. On Windows that's a problem because recv data may be
-
  cached by libcurl and that data is only drained using Curl_recv_plain.
+
Daniel Stenberg (4 Jan 2023)

-
  Rather than rewrite Curl_read_plain to handle cached recv data, I
-
  changed it to wrap Curl_recv_plain, in much the same way that
-
  Curl_write_plain already wraps Curl_send_plain.
+
- misc: reduce struct and struct field sizes

-
  Curl_read_plain -> Curl_recv_plain
-
  Curl_write_plain -> Curl_send_plain
+
  - by using BIT() instead of bool
+
  - imap: shrink struct
+
  - ftp: make state 'unsigned char'
+
  - ftp: sort ftp_conn struct entries on size
+
  - urldata: use smaller fields for SSL version info storage
+
  - pop3: reduce the pop3_conn struct size
+
  - smtp: reduce the size of the smtp structs

-
  This fixes a bug in the schannel backend where decryption of arbitrary
-
  TLS records fails because cached recv data is never drained. We send
-
  data (TLS records formed by Schannel) using Curl_write_plain, which
-
  calls Curl_send_plain, and that may do a recv-before-send
-
  ("pre-receive") to cache received data. The code calls Curl_read_plain
-
  to read data (TLS records from the server), which prior to this change
-
  did not call Curl_recv_plain and therefore cached recv data wasn't
-
  retrieved, resulting in malformed TLS records and decryption failure
-
  (SEC_E_DECRYPT_FAILURE).
+
  Closes #10186

-
  The bug has only been observed during Schannel TLS 1.3 handshakes. Refer
-
  to the issue and PR for more information.
+
- noproxy: support for space-separated names is deprecated

-
  Ref: https://github.com/curl/curl/issues/9431#issuecomment-1312420361
+
  To be removed in July 2024.

-
  Assisted-by: Joel Depooter
-
  Reported-by: Egor Pugin
+
  Assisted-by: Michael Osipov
+
  Fixes #10209
+
  Closes #10215

-
  Fixes https://github.com/curl/curl/issues/9431
-
  Closes https://github.com/curl/curl/pull/9904
+
Andrei Rybak (4 Jan 2023)

-
- test3026: reduce runtime in legacy mingw builds
+
- lib: fix typos in comments which repeat a word

-
  - Load Windows system libraries secur32 and iphlpapi beforehand, so
-
    that libcurl's repeated global init/cleanup only increases/decreases
-
    the library's refcount rather than causing it to load/unload.
+
  Remove erroneously duplicated words in code comments of files
+
  `lib.connect.c` and `lib/url.c`.

-
  Assisted-by: Marc Hoersken
+
  Closes #10220

-
  Closes https://github.com/curl/curl/pull/9412
+
Radek Brich (3 Jan 2023)

-
Daniel Stenberg (18 Nov 2022)
+
- cmake: set SOVERSION also for macOS

-
- url: move back the IDN conversion of proxy names
+
  Closes #10214

-
  Regression: in commit 53bcf55 we moved the IDN conversion calls to
-
  happen before the HSTS checks. But the HSTS checks are only done on the
-
  server host name, not the proxy names. By moving the proxy name IDN
-
  conversions, we accidentally broke the verbose output showing the proxy
-
  name.
+
Jay Satiro (3 Jan 2023)

-
  This change moves back the IDN conversions for the proxy names to the
-
  place in the code path they were before 53bcf55.
+
- http2: fix compiler warning due to uninitialized variable

-
  Reported-by: Andy Stamp
-
  Fixes #9937
-
  Closes #9939
+
  Prior to this change http2_cfilter_add could return an uninitialized
+
  cfilter pointer in an OOM condition. In this case though, the pointer
+
  is discarded and not dereferenced so there was no risk of a crash.
modified external/curl/CMake/FindNGTCP2.cmake
@@ -31,7 +31,7 @@ Find the ngtcp2 library
This module accepts optional COMPONENTS to control the crypto library (these are
mutually exclusive)::

-
  OpenSSL:  Use libngtcp2_crypto_openssl
+
  OpenSSL:  Use libngtcp2_crypto_quictls
  GnuTLS:   Use libngtcp2_crypto_gnutls

Result Variables
@@ -71,7 +71,7 @@ endif()
if(NGTCP2_FIND_COMPONENTS)
  set(NGTCP2_CRYPTO_BACKEND "")
  foreach(component IN LISTS NGTCP2_FIND_COMPONENTS)
-
    if(component MATCHES "^(BoringSSL|OpenSSL|wolfSSL|GnuTLS)")
+
    if(component MATCHES "^(BoringSSL|quictls|wolfSSL|GnuTLS)")
      if(NGTCP2_CRYPTO_BACKEND)
        message(FATAL_ERROR "NGTCP2: Only one crypto library can be selected")
      endif()
modified external/curl/CMakeLists.txt
@@ -97,6 +97,8 @@ endif()

include_directories(${CURL_SOURCE_DIR}/include)

+
set(CMAKE_UNITY_BUILD_BATCH_SIZE 0)
+

option(CURL_WERROR "Turn compiler warnings into errors" OFF)
option(PICKY_COMPILER "Enable picky compiler options" ON)
option(BUILD_CURL_EXE "Set to ON to build curl executable." ON)
@@ -522,7 +524,7 @@ endif()
option(CURL_BROTLI "Set to ON to enable building curl with brotli support." OFF)
set(HAVE_BROTLI OFF)
if(CURL_BROTLI)
-
  find_package(Brotli QUIET)
+
  find_package(Brotli REQUIRED)
  if(BROTLI_FOUND)
    set(HAVE_BROTLI ON)
    set(CURL_LIBS "${BROTLI_LIBRARIES};${CURL_LIBS}")  # For 'ld' linker. Emulate `list(PREPEND ...)` to stay compatible with <v3.15 CMake.
@@ -602,7 +604,7 @@ if(USE_NGTCP2)
    elseif(HAVE_BORINGSSL)
      find_package(NGTCP2 REQUIRED BoringSSL)
    else()
-
      find_package(NGTCP2 REQUIRED OpenSSL)
+
      find_package(NGTCP2 REQUIRED quictls)
    endif()
    CheckQuicSupportInOpenSSL()
  elseif(USE_GNUTLS)
@@ -673,9 +675,7 @@ if(NOT CURL_DISABLE_LDAP)
  endif()

  # Now that we know, we're not using windows LDAP...
-
  if(USE_WIN32_LDAP)
-
    check_include_file_concat("winldap.h" HAVE_WINLDAP_H)
-
  else()
+
  if(NOT USE_WIN32_LDAP)
    # Check for LDAP
    set(CMAKE_REQUIRED_LIBRARIES ${OPENSSL_LIBRARIES})
    check_library_exists_concat(${CMAKE_LDAP_LIB} ldap_init HAVE_LIBLDAP)
modified external/curl/Makefile.in
@@ -485,7 +485,7 @@ USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
-
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
+
USE_NGTCP2_CRYPTO_QUICTLS = @USE_NGTCP2_CRYPTO_QUICTLS@
USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
@@ -739,6 +739,7 @@ LIB_VTLS_HFILES = \
  vtls/openssl.h            \
  vtls/rustls.h             \
  vtls/schannel.h           \
+
  vtls/schannel_int.h       \
  vtls/sectransp.h          \
  vtls/vtls.h               \
  vtls/vtls_int.h           \
@@ -846,6 +847,7 @@ LIB_CFILES = \
  krb5.c             \
  ldap.c             \
  llist.c            \
+
  macos.c            \
  md4.c              \
  md5.c              \
  memdebug.c         \
@@ -982,6 +984,7 @@ LIB_HFILES = \
  inet_ntop.h        \
  inet_pton.h        \
  llist.h            \
+
  macos.h            \
  memdebug.h         \
  mime.h             \
  mqtt.h             \
modified external/curl/RELEASE-NOTES
@@ -1,27 +1,43 @@
-
curl and libcurl 8.1.2
+
curl and libcurl 8.2.1

-
 Public curl releases:         219
-
 Command line options:         251
-
 curl_easy_setopt() options:   302
+
 Public curl releases:         221
+
 Command line options:         255
+
 curl_easy_setopt() options:   303
 Public functions in libcurl:  91
-
 Contributors:                 2888
+
 Contributors:                 2927
+

+
This release includes the following changes:
+


This release includes the following bugfixes:

-
 o configure: quote the assignments for run-compiler [1]
-
 o configure: without pkg-config and no custom path, use -lnghttp2 [8]
-
 o curl: cache the --trace-time value for a second [9]
-
 o http2: fix EOF handling on uploads with auth negotiation [7]
-
 o http3: send EOF indicator early as possible [11]
-
 o lib1560: verify more scheme guessing [5]
-
 o lib: remove unused functions, make single-use static [3]
-
 o libcurl.m4: remove trailing 'dnl' that causes this to break autoconf [10]
-
 o libssh: when keyboard-interactive auth fails, try password [4]
-
 o misc: fix spelling mistakes [2]
-
 o page-header: mention curl version and how to figure out current release [13]
-
 o page-header: minor wording polish in the URL segment [12]
-
 o scripts/singleuse.pl: add more API calls
-
 o urlapi: remove superfluous host name check [6]
+
 o amigaos: fix sys/mbuf.h m_len macro clash [9]
+
 o amissl: add missing signal.h include [8]
+
 o amissl: fix AmiSSL v5 detection [2]
+
 o cfilters: rename close/connect functions to avoid clashes [12]
+
 o ciphers.d: put URL in first column [1]
+
 o cmake: add `libcurlu`/`libcurltool` for unit tests [5]
+
 o cmake: update ngtcp2 detection [4]
+
 o configure: check for nghttp2_session_get_stream_local_window_size [14]
+
 o CONTRIBUTE: drop mention of copyright year ranges [20]
+
 o CONTRIBUTE: fix syntax in commit message description [21]
+
 o curl_multi_wait.3: fix arg quoting to doc macro .BR [27]
+
 o docs: mark two TLS options for TLS, not SSL [26]
+
 o docs: provide more see also for cipher options [23]
+
 o hostip: return IPv6 first for localhost resolves [16]
+
 o http2: fix regression on upload EOF handling [13]
+
 o http: VLH, very large header test and fixes [19]
+
 o libcurl-errors.3: add CURLUE_OK [11]
+
 o os400: correct EXPECTED_STRING_LASTZEROTERMINATED [7]
+
 o quiche: fix lookup of transfer at multi [18]
+
 o quiche: fix segfault and other things [15]
+
 o rustls: update rustls-ffi 0.10.0 [24]
+
 o socks: print ipv6 address within brackets [10]
+
 o src/mkhelp: strip off escape sequences [22]
+
 o tool: fix tool_seek_cb build when SIZEOF_CURL_OFF_T > SIZEOF_OFF_T [17]
+
 o transfer: do not clear the credentials on redirect to absolute URL [6]
+
 o unittest: remove unneeded *_LDADD [3]
+
 o websocket: rename arguments/variables to match docs [25]

This release includes the following known bugs:

@@ -39,23 +55,39 @@ Planned upcoming removals include:
This release would not have looked like this without help, code, reports and
advice from friends like these:

-
  Aleksander Mazur, Christian Hesse, correctmost on github, Dan Fandrich,
-
  Daniel Stenberg, Emanuele Torre, Gisle Vanem, Kev Jackson,
-
  musvaage on github, Sergey Fionov, Stefan Eissing, Viktor Szakats, 左潇峰
-
  (13 contributors)
+
  Aleksander Mazur, Alois Klink, Andrei Rybak, Brad Harder,
+
  Chilledheart on github, Christian Schmitz, Cloudogu Siebels, Daniel Stenberg,
+
  Harry Sintonen, Jacob Hoffman-Andrews, Jan Macku, John Haugabook, Jon Rumsey,
+
  Oliver Roberts, Paul Howarth, Stefan Eissing, VictorVG on github,
+
  Viktor Szakats, Yair Lenga, ウさん
+
  (20 contributors)

References to bug reports and discussions on issues:

-
 [1] = https://curl.se/bug/?i=11179
-
 [2] = https://curl.se/bug/?i=11171
-
 [3] = https://curl.se/bug/?i=11174
-
 [4] = https://curl.se/bug/?i=11196
-
 [5] = https://curl.se/bug/?i=11219
-
 [6] = https://curl.se/bug/?i=11195
-
 [7] = https://curl.se/bug/?i=11194
-
 [8] = https://curl.se/bug/?i=11186
-
 [9] = https://curl.se/bug/?i=11211
-
 [10] = https://curl.se/bug/?i=11212
-
 [11] = https://curl.se/bug/?i=11205
-
 [12] = https://curl.se/bug/?i=11217
-
 [13] = https://curl.se/bug/?i=11216
+
 [1] = https://curl.se/bug/?i=11464
+
 [2] = https://curl.se/bug/?i=11477
+
 [3] = https://curl.se/bug/?i=11494
+
 [4] = https://curl.se/bug/?i=11508
+
 [5] = https://curl.se/bug/?i=11446
+
 [6] = https://curl.se/bug/?i=11486
+
 [7] = https://curl.se/bug/?i=11476
+
 [8] = https://curl.se/bug/?i=11478
+
 [9] = https://curl.se/bug/?i=11479
+
 [10] = https://curl.se/bug/?i=11483
+
 [11] = https://curl.se/bug/?i=11488
+
 [12] = https://curl.se/bug/?i=11491
+
 [13] = https://curl.se/bug/?i=11485
+
 [14] = https://curl.se/bug/?i=11470
+
 [15] = https://curl.se/bug/?i=11449
+
 [16] = https://curl.se/bug/?i=11465
+
 [17] = https://curl.se/bug/?i=11468
+
 [18] = https://curl.se/bug/?i=11462
+
 [19] = https://curl.se/bug/?i=11509
+
 [20] = https://curl.se/bug/?i=11504
+
 [21] = https://curl.se/bug/?i=11504
+
 [22] = https://curl.se/bug/?i=11501
+
 [23] = https://curl.se/bug/?i=11513
+
 [24] = https://curl.se/bug/?i=10865
+
 [25] = https://curl.se/bug/?i=11493
+
 [26] = https://curl.se/bug/?i=11514
+
 [27] = https://curl.se/bug/?i=11511
modified external/curl/acinclude.m4
@@ -345,46 +345,6 @@ AC_DEFUN([CURL_CHECK_HEADER_WINCRYPT], [
])


-
dnl CURL_CHECK_HEADER_WINLDAP
-
dnl -------------------------------------------------
-
dnl Check for compilable and valid winldap.h header
-

-
AC_DEFUN([CURL_CHECK_HEADER_WINLDAP], [
-
  AC_REQUIRE([CURL_CHECK_HEADER_WINDOWS])dnl
-
  AC_CACHE_CHECK([for winldap.h], [curl_cv_header_winldap_h], [
-
    AC_COMPILE_IFELSE([
-
      AC_LANG_PROGRAM([[
-
#undef inline
-
#ifdef HAVE_WINDOWS_H
-
#ifndef WIN32_LEAN_AND_MEAN
-
#define WIN32_LEAN_AND_MEAN
-
#endif
-
#include <windows.h>
-
#endif
-
#include <winldap.h>
-
      ]],[[
-
#if defined(__CYGWIN__) || defined(__CEGCC__)
-
        HAVE_WINLDAP_H shall not be defined.
-
#else
-
        LDAP *ldp = ldap_init("dummy", LDAP_PORT);
-
        ULONG res = ldap_unbind(ldp);
-
#endif
-
      ]])
-
    ],[
-
      curl_cv_header_winldap_h="yes"
-
    ],[
-
      curl_cv_header_winldap_h="no"
-
    ])
-
  ])
-
  case "$curl_cv_header_winldap_h" in
-
    yes)
-
      AC_DEFINE_UNQUOTED(HAVE_WINLDAP_H, 1,
-
        [Define to 1 if you have the winldap.h header file.])
-
      ;;
-
  esac
-
])
-

-

dnl CURL_CHECK_HEADER_LBER
dnl -------------------------------------------------
dnl Check for compilable and valid lber.h header,
@@ -612,9 +572,7 @@ AC_DEFUN([CURL_CHECK_LIBS_WINLDAP], [
#define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
-
#ifdef HAVE_WINLDAP_H
#include <winldap.h>
-
#endif
#ifdef HAVE_WINBER_H
#include <winber.h>
#endif
@@ -1114,6 +1072,38 @@ AC_DEFUN([CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC], [
  dnl until library linking and run-time checks for clock_gettime succeed.
])

+
dnl CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC_RAW
+
dnl -------------------------------------------------
+
dnl Check if monotonic clock_gettime is available.
+

+
AC_DEFUN([CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC_RAW], [
+
  AC_CHECK_HEADERS(sys/types.h sys/time.h)
+
  AC_MSG_CHECKING([for raw monotonic clock_gettime])
+
  #
+
  if test "x$dontwant_rt" = "xno" ; then
+
    AC_COMPILE_IFELSE([
+
      AC_LANG_PROGRAM([[
+
#ifdef HAVE_SYS_TYPES_H
+
#include <sys/types.h>
+
#endif
+
#ifdef HAVE_SYS_TIME_H
+
#include <sys/time.h>
+
#endif
+
#include <time.h>
+
      ]],[[
+
        struct timespec ts;
+
        (void)clock_gettime(CLOCK_MONOTONIC_RAW, &ts);
+
      ]])
+
    ],[
+
      AC_MSG_RESULT([yes])
+
      AC_DEFINE_UNQUOTED(HAVE_CLOCK_GETTIME_MONOTONIC_RAW, 1,
+
        [Define to 1 if you have the clock_gettime function and raw monotonic timer.])
+
    ],[
+
      AC_MSG_RESULT([no])
+
    ])
+
  fi
+
])
+


dnl CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC
dnl -------------------------------------------------
modified external/curl/configure
@@ -933,7 +933,7 @@ USE_QUICHE
USE_NGHTTP3
USE_NGTCP2_CRYPTO_WOLFSSL
USE_NGTCP2_CRYPTO_GNUTLS
-
USE_NGTCP2_CRYPTO_OPENSSL
+
USE_NGTCP2_CRYPTO_QUICTLS
USE_NGTCP2
USE_NGHTTP2
IDN_ENABLED
@@ -6676,11 +6676,15 @@ INITIAL_LDFLAGS=$LDFLAGS
INITIAL_LIBS=$LIBS

compilersh="run-compiler"
-
export "CURL_SAVED_CC=$CC"
-
export "CURL_SAVED_LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
+
CURL_SAVED_CC="$CC"
+
export CURL_SAVED_CC
+
CURL_SAVED_LD_LIBRARY_PATH="$LD_LIBRARY_PATH"
+
export CURL_SAVED_LD_LIBRARY_PATH
cat <<\EOF > "$compilersh"
-
export "CC=$CURL_SAVED_CC"
-
export "LD_LIBRARY_PATH=$CURL_SAVED_LD_LIBRARY_PATH"
+
CC="$CURL_SAVED_CC"
+
export CC
+
LD_LIBRARY_PATH="$CURL_SAVED_LD_LIBRARY_PATH"
+
export LD_LIBRARY_PATH
exec $CC "$@"
EOF

@@ -7294,7 +7298,7 @@ fi
# Check whether --with-darwinssl was given.
if test ${with_darwinssl+y}
then :
-
  withval=$with_darwinssl; as_fn_error $? "--with-darwin-ssl no longer works!" "$LINENO" 5
+
  withval=$with_darwinssl; as_fn_error $? "--with-darwin-ssl and --without-darwin-ssl no longer work!" "$LINENO" 5
fi


@@ -21496,71 +21500,11 @@ printf "%s\n" "#define HAVE_WINCRYPT_H 1" >>confdefs.h
      ;;
  esac

-

-
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for winldap.h" >&5
-
printf %s "checking for winldap.h... " >&6; }
-
if test ${curl_cv_header_winldap_h+y}
-
then :
-
  printf %s "(cached) " >&6
-
else $as_nop
-

-
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-
/* end confdefs.h.  */
-

-

-
#undef inline
-
#ifdef HAVE_WINDOWS_H
-
#ifndef WIN32_LEAN_AND_MEAN
-
#define WIN32_LEAN_AND_MEAN
-
#endif
-
#include <windows.h>
-
#endif
-
#include <winldap.h>
-

-
int main (void)
-
{
-

-
#if defined(__CYGWIN__) || defined(__CEGCC__)
-
        HAVE_WINLDAP_H shall not be defined.
-
#else
-
        LDAP *ldp = ldap_init("dummy", LDAP_PORT);
-
        ULONG res = ldap_unbind(ldp);
-
#endif
-

-
 ;
-
 return 0;
-
}
-

-
_ACEOF
-
if ac_fn_c_try_compile "$LINENO"
-
then :
-

-
      curl_cv_header_winldap_h="yes"
-

-
else $as_nop
-

-
      curl_cv_header_winldap_h="no"
-

-
fi
-
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-

-
fi
-
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_header_winldap_h" >&5
-
printf "%s\n" "$curl_cv_header_winldap_h" >&6; }
-
  case "$curl_cv_header_winldap_h" in
-
    yes)
-

-
printf "%s\n" "#define HAVE_WINLDAP_H 1" >>confdefs.h
-

-
      ;;
-
  esac
-

    ;;
  *)
    curl_cv_header_winsock2_h="no"
    curl_cv_header_ws2tcpip_h="no"
    curl_cv_header_wincrypt_h="no"
-
    curl_cv_header_winldap_h="no"
    ;;
esac

@@ -23645,6 +23589,66 @@ printf "%s\n" "#define HAVE_CLOCK_GETTIME_MONOTONIC 1" >>confdefs.h
  #


+

+
  ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$ac_includes_default"
+
if test "x$ac_cv_header_sys_types_h" = xyes
+
then :
+
  printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h
+

+
fi
+
ac_fn_c_check_header_compile "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default"
+
if test "x$ac_cv_header_sys_time_h" = xyes
+
then :
+
  printf "%s\n" "#define HAVE_SYS_TIME_H 1" >>confdefs.h
+

+
fi
+

+
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for raw monotonic clock_gettime" >&5
+
printf %s "checking for raw monotonic clock_gettime... " >&6; }
+
  #
+
  if test "x$dontwant_rt" = "xno" ; then
+
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+
/* end confdefs.h.  */
+

+

+
#ifdef HAVE_SYS_TYPES_H
+
#include <sys/types.h>
+
#endif
+
#ifdef HAVE_SYS_TIME_H
+
#include <sys/time.h>
+
#endif
+
#include <time.h>
+

+
int main (void)
+
{
+

+
        struct timespec ts;
+
        (void)clock_gettime(CLOCK_MONOTONIC_RAW, &ts);
+

+
 ;
+
 return 0;
+
}
+

+
_ACEOF
+
if ac_fn_c_try_compile "$LINENO"
+
then :
+

+
      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+
printf "%s\n" "yes" >&6; }
+

+
printf "%s\n" "#define HAVE_CLOCK_GETTIME_MONOTONIC_RAW 1" >>confdefs.h
+

+

+
else $as_nop
+

+
      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+
printf "%s\n" "no" >&6; }
+

+
fi
+
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+
  fi
+

+

CURL_NETWORK_AND_TIME_LIBS=$LIBS


@@ -25047,6 +25051,12 @@ then :
  printf "%s\n" "#define HAVE_LDAP_URL_PARSE 1" >>confdefs.h

fi
+
ac_fn_c_check_func "$LINENO" "ldap_init_fd" "ac_cv_func_ldap_init_fd"
+
if test "x$ac_cv_func_ldap_init_fd" = xyes
+
then :
+
  printf "%s\n" "#define HAVE_LDAP_INIT_FD 1" >>confdefs.h
+

+
fi


  if test "$LDAPLIBNAME" = "wldap32"; then
@@ -25055,13 +25065,15 @@ fi
printf "%s\n" "#define USE_WIN32_LDAP 1" >>confdefs.h

  else
-
    curl_ldap_msg="enabled (OpenLDAP)"
    if test "x$ac_cv_func_ldap_init_fd" = "xyes"; then
+
      curl_ldap_msg="enabled (OpenLDAP)"

printf "%s\n" "#define USE_OPENLDAP 1" >>confdefs.h

      USE_OPENLDAP=1

+
    else
+
      curl_ldap_msg="enabled (ancient OpenLDAP)"
    fi
  fi
fi
@@ -26250,7 +26262,7 @@ if test "$HAVE_PROTO_BSDSOCKET_H" = "1"; then
int main (void)
{

-
        #if defined(AMISSL_CURRENT_VERSION) && (AMISSL_CURRENT_VERSION >= AMISSL_V303) && \
+
        #if defined(AMISSL_CURRENT_VERSION) && defined(AMISSL_V3xx) && \
            defined(OPENSSL_VERSION_MAJOR) && (OPENSSL_VERSION_MAJOR >= 3) && \
            defined(PROTO_AMISSL_H)
        return 0;
@@ -29415,7 +29427,7 @@ fi
# Check whether --with-libmetalink was given.
if test ${with_libmetalink+y}
then :
-
  withval=$with_libmetalink; as_fn_error $? "--with-libmetalink no longer works!" "$LINENO" 5
+
  withval=$with_libmetalink; as_fn_error $? "--with-libmetalink and --without-libmetalink no longer work!" "$LINENO" 5
fi


@@ -31167,11 +31179,11 @@ printf "%s\n" "$as_me: -L is $LD_H2" >&6;}
  CPPFLAGS="$CPPFLAGS $CPP_H2"
  LIBS="$LIB_H2 $LIBS"

-
  # use nghttp2_session_set_local_window_size to require nghttp2
-
  # >= 1.12.0
-
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for nghttp2_session_set_local_window_size in -lnghttp2" >&5
-
printf %s "checking for nghttp2_session_set_local_window_size in -lnghttp2... " >&6; }
-
if test ${ac_cv_lib_nghttp2_nghttp2_session_set_local_window_size+y}
+
  # use nghttp2_session_get_stream_local_window_size to require nghttp2
+
  # >= 1.15.0
+
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for nghttp2_session_get_stream_local_window_size in -lnghttp2" >&5
+
printf %s "checking for nghttp2_session_get_stream_local_window_size in -lnghttp2... " >&6; }
+
if test ${ac_cv_lib_nghttp2_nghttp2_session_get_stream_local_window_size+y}
then :
  printf %s "(cached) " >&6
else $as_nop
@@ -31184,27 +31196,27 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
#ifdef __cplusplus
extern "C"
#endif
-
char nghttp2_session_set_local_window_size ();
+
char nghttp2_session_get_stream_local_window_size ();
int main (void)
{
-
return nghttp2_session_set_local_window_size ();
+
return nghttp2_session_get_stream_local_window_size ();
 ;
 return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"
then :
-
  ac_cv_lib_nghttp2_nghttp2_session_set_local_window_size=yes
+
  ac_cv_lib_nghttp2_nghttp2_session_get_stream_local_window_size=yes
else $as_nop
-
  ac_cv_lib_nghttp2_nghttp2_session_set_local_window_size=no
+
  ac_cv_lib_nghttp2_nghttp2_session_get_stream_local_window_size=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
    conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nghttp2_nghttp2_session_set_local_window_size" >&5
-
printf "%s\n" "$ac_cv_lib_nghttp2_nghttp2_session_set_local_window_size" >&6; }
-
if test "x$ac_cv_lib_nghttp2_nghttp2_session_set_local_window_size" = xyes
+
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nghttp2_nghttp2_session_get_stream_local_window_size" >&5
+
printf "%s\n" "$ac_cv_lib_nghttp2_nghttp2_session_get_stream_local_window_size" >&6; }
+
if test "x$ac_cv_lib_nghttp2_nghttp2_session_get_stream_local_window_size" = xyes
then :

            for ac_header in nghttp2/nghttp2.h
@@ -31645,14 +31657,14 @@ fi
    fi

    if test "x$PKGCONFIG" != "xno"; then
-
      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libngtcp2_crypto_openssl options with pkg-config" >&5
-
printf %s "checking for libngtcp2_crypto_openssl options with pkg-config... " >&6; }
+
      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libngtcp2_crypto_quictls options with pkg-config" >&5
+
printf %s "checking for libngtcp2_crypto_quictls options with pkg-config... " >&6; }
            itexists=`
    if test -n "$want_tcp2_path"; then
      PKG_CONFIG_LIBDIR="$want_tcp2_path"
      export PKG_CONFIG_LIBDIR
    fi
-
         $PKGCONFIG --exists libngtcp2_crypto_openssl >/dev/null 2>&1 && echo 1`
+
         $PKGCONFIG --exists libngtcp2_crypto_quictls >/dev/null 2>&1 && echo 1`

      if test -z "$itexists"; then
                        PKGCONFIG="no"
@@ -31666,50 +31678,50 @@ printf "%s\n" "found" >&6; }


  if test "$PKGCONFIG" != "no" ; then
-
    LIB_NGTCP2_CRYPTO_OPENSSL=`
+
    LIB_NGTCP2_CRYPTO_QUICTLS=`
    if test -n "$want_tcp2_path"; then
      PKG_CONFIG_LIBDIR="$want_tcp2_path"
      export PKG_CONFIG_LIBDIR
    fi

-
      $PKGCONFIG --libs-only-l libngtcp2_crypto_openssl`
-
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -l is $LIB_NGTCP2_CRYPTO_OPENSSL" >&5
-
printf "%s\n" "$as_me: -l is $LIB_NGTCP2_CRYPTO_OPENSSL" >&6;}
+
      $PKGCONFIG --libs-only-l libngtcp2_crypto_quictls`
+
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -l is $LIB_NGTCP2_CRYPTO_QUICTLS" >&5
+
printf "%s\n" "$as_me: -l is $LIB_NGTCP2_CRYPTO_QUICTLS" >&6;}

-
    CPP_NGTCP2_CRYPTO_OPENSSL=`
+
    CPP_NGTCP2_CRYPTO_QUICTLS=`
    if test -n "$want_tcp2_path"; then
      PKG_CONFIG_LIBDIR="$want_tcp2_path"
      export PKG_CONFIG_LIBDIR
    fi
-
       $PKGCONFIG --cflags-only-I libngtcp2_crypto_openssl`
-
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -I is $CPP_NGTCP2_CRYPTO_OPENSSL" >&5
-
printf "%s\n" "$as_me: -I is $CPP_NGTCP2_CRYPTO_OPENSSL" >&6;}
+
       $PKGCONFIG --cflags-only-I libngtcp2_crypto_quictls`
+
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -I is $CPP_NGTCP2_CRYPTO_QUICTLS" >&5
+
printf "%s\n" "$as_me: -I is $CPP_NGTCP2_CRYPTO_QUICTLS" >&6;}

-
    LD_NGTCP2_CRYPTO_OPENSSL=`
+
    LD_NGTCP2_CRYPTO_QUICTLS=`
    if test -n "$want_tcp2_path"; then
      PKG_CONFIG_LIBDIR="$want_tcp2_path"
      export PKG_CONFIG_LIBDIR
    fi

-
      $PKGCONFIG --libs-only-L libngtcp2_crypto_openssl`
-
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -L is $LD_NGTCP2_CRYPTO_OPENSSL" >&5
-
printf "%s\n" "$as_me: -L is $LD_NGTCP2_CRYPTO_OPENSSL" >&6;}
+
      $PKGCONFIG --libs-only-L libngtcp2_crypto_quictls`
+
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -L is $LD_NGTCP2_CRYPTO_QUICTLS" >&5
+
printf "%s\n" "$as_me: -L is $LD_NGTCP2_CRYPTO_QUICTLS" >&6;}

-
    LDFLAGS="$LDFLAGS $LD_NGTCP2_CRYPTO_OPENSSL"
-
    CPPFLAGS="$CPPFLAGS $CPP_NGTCP2_CRYPTO_OPENSSL"
-
    LIBS="$LIB_NGTCP2_CRYPTO_OPENSSL $LIBS"
+
    LDFLAGS="$LDFLAGS $LD_NGTCP2_CRYPTO_QUICTLS"
+
    CPPFLAGS="$CPPFLAGS $CPP_NGTCP2_CRYPTO_QUICTLS"
+
    LIBS="$LIB_NGTCP2_CRYPTO_QUICTLS $LIBS"

    if test "x$cross_compiling" != "xyes"; then
-
      DIR_NGTCP2_CRYPTO_OPENSSL=`echo $LD_NGTCP2_CRYPTO_OPENSSL | $SED -e 's/^-L//'`
+
      DIR_NGTCP2_CRYPTO_QUICTLS=`echo $LD_NGTCP2_CRYPTO_QUICTLS | $SED -e 's/^-L//'`
    fi
-
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ngtcp2_crypto_recv_client_initial_cb in -lngtcp2_crypto_openssl" >&5
-
printf %s "checking for ngtcp2_crypto_recv_client_initial_cb in -lngtcp2_crypto_openssl... " >&6; }
-
if test ${ac_cv_lib_ngtcp2_crypto_openssl_ngtcp2_crypto_recv_client_initial_cb+y}
+
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ngtcp2_crypto_recv_client_initial_cb in -lngtcp2_crypto_quictls" >&5
+
printf %s "checking for ngtcp2_crypto_recv_client_initial_cb in -lngtcp2_crypto_quictls... " >&6; }
+
if test ${ac_cv_lib_ngtcp2_crypto_quictls_ngtcp2_crypto_recv_client_initial_cb+y}
then :
  printf %s "(cached) " >&6
else $as_nop
  ac_check_lib_save_LIBS=$LIBS
-
LIBS="-lngtcp2_crypto_openssl  $LIBS"
+
LIBS="-lngtcp2_crypto_quictls  $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

@@ -31727,17 +31739,17 @@ return ngtcp2_crypto_recv_client_initial_cb ();
_ACEOF
if ac_fn_c_try_link "$LINENO"
then :
-
  ac_cv_lib_ngtcp2_crypto_openssl_ngtcp2_crypto_recv_client_initial_cb=yes
+
  ac_cv_lib_ngtcp2_crypto_quictls_ngtcp2_crypto_recv_client_initial_cb=yes
else $as_nop
-
  ac_cv_lib_ngtcp2_crypto_openssl_ngtcp2_crypto_recv_client_initial_cb=no
+
  ac_cv_lib_ngtcp2_crypto_quictls_ngtcp2_crypto_recv_client_initial_cb=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
    conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ngtcp2_crypto_openssl_ngtcp2_crypto_recv_client_initial_cb" >&5
-
printf "%s\n" "$ac_cv_lib_ngtcp2_crypto_openssl_ngtcp2_crypto_recv_client_initial_cb" >&6; }
-
if test "x$ac_cv_lib_ngtcp2_crypto_openssl_ngtcp2_crypto_recv_client_initial_cb" = xyes
+
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ngtcp2_crypto_quictls_ngtcp2_crypto_recv_client_initial_cb" >&5
+
printf "%s\n" "$ac_cv_lib_ngtcp2_crypto_quictls_ngtcp2_crypto_recv_client_initial_cb" >&6; }
+
if test "x$ac_cv_lib_ngtcp2_crypto_quictls_ngtcp2_crypto_recv_client_initial_cb" = xyes
then :

              for ac_header in ngtcp2/ngtcp2_crypto.h
@@ -31748,14 +31760,14 @@ then :
  printf "%s\n" "#define HAVE_NGTCP2_NGTCP2_CRYPTO_H 1" >>confdefs.h
 NGTCP2_ENABLED=1

-
printf "%s\n" "#define USE_NGTCP2_CRYPTO_OPENSSL 1" >>confdefs.h
+
printf "%s\n" "#define USE_NGTCP2_CRYPTO_QUICTLS 1" >>confdefs.h

-
          USE_NGTCP2_CRYPTO_OPENSSL=1
+
          USE_NGTCP2_CRYPTO_QUICTLS=1

-
          CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGTCP2_CRYPTO_OPENSSL"
+
          CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGTCP2_CRYPTO_QUICTLS"
          export CURL_LIBRARY_PATH
-
          { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $DIR_NGTCP2_CRYPTO_OPENSSL to CURL_LIBRARY_PATH" >&5
-
printf "%s\n" "$as_me: Added $DIR_NGTCP2_CRYPTO_OPENSSL to CURL_LIBRARY_PATH" >&6;}
+
          { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $DIR_NGTCP2_CRYPTO_QUICTLS to CURL_LIBRARY_PATH" >&5
+
printf "%s\n" "$as_me: Added $DIR_NGTCP2_CRYPTO_QUICTLS to CURL_LIBRARY_PATH" >&6;}

fi

@@ -31771,7 +31783,7 @@ fi

  else
        if test X"$want_tcp2" != Xdefault; then
-
                  as_fn_error $? "--with-ngtcp2 was specified but could not find ngtcp2_crypto_openssl pkg-config file." "$LINENO" 5
+
                  as_fn_error $? "--with-ngtcp2 was specified but could not find ngtcp2_crypto_quictls pkg-config file." "$LINENO" 5
    fi
  fi
fi
modified external/curl/configure.ac
@@ -193,11 +193,15 @@ dnl something different but only have that affect the execution of the results
dnl of the compile, not change the libraries for the compiler itself.
dnl
compilersh="run-compiler"
-
export "CURL_SAVED_CC=$CC"
-
export "CURL_SAVED_LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
+
CURL_SAVED_CC="$CC"
+
export CURL_SAVED_CC
+
CURL_SAVED_LD_LIBRARY_PATH="$LD_LIBRARY_PATH"
+
export CURL_SAVED_LD_LIBRARY_PATH
cat <<\EOF > "$compilersh"
-
export "CC=$CURL_SAVED_CC"
-
export "LD_LIBRARY_PATH=$CURL_SAVED_LD_LIBRARY_PATH"
+
CC="$CURL_SAVED_CC"
+
export CC
+
LD_LIBRARY_PATH="$CURL_SAVED_LD_LIBRARY_PATH"
+
export LD_LIBRARY_PATH
exec $CC "$@"
EOF

@@ -434,7 +438,7 @@ Select from these:
fi

AC_ARG_WITH(darwinssl,,
-
  AC_MSG_ERROR([--with-darwin-ssl no longer works!]))
+
  AC_MSG_ERROR([--with-darwin-ssl and --without-darwin-ssl no longer work!]))

dnl
dnl Detect the canonical host and target build environment
@@ -677,13 +681,11 @@ case X-"$curl_cv_native_windows" in
    CURL_CHECK_HEADER_WINSOCK2
    CURL_CHECK_HEADER_WS2TCPIP
    CURL_CHECK_HEADER_WINCRYPT
-
    CURL_CHECK_HEADER_WINLDAP
    ;;
  *)
    curl_cv_header_winsock2_h="no"
    curl_cv_header_ws2tcpip_h="no"
    curl_cv_header_wincrypt_h="no"
-
    curl_cv_header_winldap_h="no"
    ;;
esac
CURL_CHECK_WIN32_LARGEFILE
@@ -1337,6 +1339,9 @@ dnl check for additional required libraries.
dnl **********************************************************************
CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC

+
dnl Check for even better option
+
CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC_RAW
+

dnl **********************************************************************
dnl The preceding library checks are all potentially useful for test
dnl servers and libtest cases which require networking and clock_gettime
@@ -1701,16 +1706,19 @@ if test x$CURL_DISABLE_LDAP != x1 ; then
fi

if test x$CURL_DISABLE_LDAP != x1 ; then
-
  AC_CHECK_FUNCS([ldap_url_parse])
+
  AC_CHECK_FUNCS([ldap_url_parse \
+
                  ldap_init_fd])

  if test "$LDAPLIBNAME" = "wldap32"; then
    curl_ldap_msg="enabled (winldap)"
    AC_DEFINE(USE_WIN32_LDAP, 1, [Use Windows LDAP implementation])
  else
-
    curl_ldap_msg="enabled (OpenLDAP)"
    if test "x$ac_cv_func_ldap_init_fd" = "xyes"; then
+
      curl_ldap_msg="enabled (OpenLDAP)"
      AC_DEFINE(USE_OPENLDAP, 1, [Use OpenLDAP-specific code])
      AC_SUBST(USE_OPENLDAP, [1])
+
    else
+
      curl_ldap_msg="enabled (ancient OpenLDAP)"
    fi
  fi
fi
@@ -2196,7 +2204,7 @@ fi
AM_CONDITIONAL([USE_GSASL], [test "$curl_gsasl_msg" = "enabled"])

AC_ARG_WITH(libmetalink,,
-
  AC_MSG_ERROR([--with-libmetalink no longer works!]))
+
  AC_MSG_ERROR([--with-libmetalink and --without-libmetalink no longer work!]))

dnl **********************************************************************
dnl Check for the presence of LIBSSH2 libraries and headers
@@ -2827,9 +2835,9 @@ if test X"$want_nghttp2" != Xno; then
  CPPFLAGS="$CPPFLAGS $CPP_H2"
  LIBS="$LIB_H2 $LIBS"

-
  # use nghttp2_session_set_local_window_size to require nghttp2
-
  # >= 1.12.0
-
  AC_CHECK_LIB(nghttp2, nghttp2_session_set_local_window_size,
+
  # use nghttp2_session_get_stream_local_window_size to require nghttp2
+
  # >= 1.15.0
+
  AC_CHECK_LIB(nghttp2, nghttp2_session_get_stream_local_window_size,
    [
     AC_CHECK_HEADERS(nghttp2/nghttp2.h,
        curl_h2_msg="enabled (nghttp2)"
@@ -2939,42 +2947,42 @@ if test X"$want_tcp2" != Xno; then
fi

if test "x$NGTCP2_ENABLED" = "x1" -a "x$OPENSSL_ENABLED" = "x1"; then
-
  dnl backup the pre-ngtcp2_crypto_openssl variables
+
  dnl backup the pre-ngtcp2_crypto_quictls variables
  CLEANLDFLAGS="$LDFLAGS"
  CLEANCPPFLAGS="$CPPFLAGS"
  CLEANLIBS="$LIBS"

-
  CURL_CHECK_PKGCONFIG(libngtcp2_crypto_openssl, $want_tcp2_path)
+
  CURL_CHECK_PKGCONFIG(libngtcp2_crypto_quictls, $want_tcp2_path)

  if test "$PKGCONFIG" != "no" ; then
-
    LIB_NGTCP2_CRYPTO_OPENSSL=`CURL_EXPORT_PCDIR([$want_tcp2_path])
-
      $PKGCONFIG --libs-only-l libngtcp2_crypto_openssl`
-
    AC_MSG_NOTICE([-l is $LIB_NGTCP2_CRYPTO_OPENSSL])
+
    LIB_NGTCP2_CRYPTO_QUICTLS=`CURL_EXPORT_PCDIR([$want_tcp2_path])
+
      $PKGCONFIG --libs-only-l libngtcp2_crypto_quictls`
+
    AC_MSG_NOTICE([-l is $LIB_NGTCP2_CRYPTO_QUICTLS])

-
    CPP_NGTCP2_CRYPTO_OPENSSL=`CURL_EXPORT_PCDIR([$want_tcp2_path]) dnl
-
      $PKGCONFIG --cflags-only-I libngtcp2_crypto_openssl`
-
    AC_MSG_NOTICE([-I is $CPP_NGTCP2_CRYPTO_OPENSSL])
+
    CPP_NGTCP2_CRYPTO_QUICTLS=`CURL_EXPORT_PCDIR([$want_tcp2_path]) dnl
+
      $PKGCONFIG --cflags-only-I libngtcp2_crypto_quictls`
+
    AC_MSG_NOTICE([-I is $CPP_NGTCP2_CRYPTO_QUICTLS])

-
    LD_NGTCP2_CRYPTO_OPENSSL=`CURL_EXPORT_PCDIR([$want_tcp2_path])
-
      $PKGCONFIG --libs-only-L libngtcp2_crypto_openssl`
-
    AC_MSG_NOTICE([-L is $LD_NGTCP2_CRYPTO_OPENSSL])
+
    LD_NGTCP2_CRYPTO_QUICTLS=`CURL_EXPORT_PCDIR([$want_tcp2_path])
+
      $PKGCONFIG --libs-only-L libngtcp2_crypto_quictls`
+
    AC_MSG_NOTICE([-L is $LD_NGTCP2_CRYPTO_QUICTLS])

-
    LDFLAGS="$LDFLAGS $LD_NGTCP2_CRYPTO_OPENSSL"
-
    CPPFLAGS="$CPPFLAGS $CPP_NGTCP2_CRYPTO_OPENSSL"
-
    LIBS="$LIB_NGTCP2_CRYPTO_OPENSSL $LIBS"
+
    LDFLAGS="$LDFLAGS $LD_NGTCP2_CRYPTO_QUICTLS"
+
    CPPFLAGS="$CPPFLAGS $CPP_NGTCP2_CRYPTO_QUICTLS"
+
    LIBS="$LIB_NGTCP2_CRYPTO_QUICTLS $LIBS"

    if test "x$cross_compiling" != "xyes"; then
-
      DIR_NGTCP2_CRYPTO_OPENSSL=`echo $LD_NGTCP2_CRYPTO_OPENSSL | $SED -e 's/^-L//'`
+
      DIR_NGTCP2_CRYPTO_QUICTLS=`echo $LD_NGTCP2_CRYPTO_QUICTLS | $SED -e 's/^-L//'`
    fi
-
    AC_CHECK_LIB(ngtcp2_crypto_openssl, ngtcp2_crypto_recv_client_initial_cb,
+
    AC_CHECK_LIB(ngtcp2_crypto_quictls, ngtcp2_crypto_recv_client_initial_cb,
      [
       AC_CHECK_HEADERS(ngtcp2/ngtcp2_crypto.h,
          NGTCP2_ENABLED=1
-
          AC_DEFINE(USE_NGTCP2_CRYPTO_OPENSSL, 1, [if ngtcp2_crypto_openssl is in use])
-
          AC_SUBST(USE_NGTCP2_CRYPTO_OPENSSL, [1])
-
          CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGTCP2_CRYPTO_OPENSSL"
+
          AC_DEFINE(USE_NGTCP2_CRYPTO_QUICTLS, 1, [if ngtcp2_crypto_quictls is in use])
+
          AC_SUBST(USE_NGTCP2_CRYPTO_QUICTLS, [1])
+
          CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGTCP2_CRYPTO_QUICTLS"
          export CURL_LIBRARY_PATH
-
          AC_MSG_NOTICE([Added $DIR_NGTCP2_CRYPTO_OPENSSL to CURL_LIBRARY_PATH])
+
          AC_MSG_NOTICE([Added $DIR_NGTCP2_CRYPTO_QUICTLS to CURL_LIBRARY_PATH])
       )
      ],
        dnl not found, revert back to clean variables
@@ -2984,11 +2992,11 @@ if test "x$NGTCP2_ENABLED" = "x1" -a "x$OPENSSL_ENABLED" = "x1"; then
    )

  else
-
    dnl no ngtcp2_crypto_openssl pkg-config found, deal with it
+
    dnl no ngtcp2_crypto_quictls pkg-config found, deal with it
    if test X"$want_tcp2" != Xdefault; then
      dnl To avoid link errors, we do not allow --with-ngtcp2 without
      dnl a pkgconfig file
-
      AC_MSG_ERROR([--with-ngtcp2 was specified but could not find ngtcp2_crypto_openssl pkg-config file.])
+
      AC_MSG_ERROR([--with-ngtcp2 was specified but could not find ngtcp2_crypto_quictls pkg-config file.])
    fi
  fi
fi
modified external/curl/docs/CIPHERS.md
@@ -51,7 +51,7 @@ When specifying multiple cipher names, separate them with colon (`:`).
`ADH-RC4-MD5`
`ADH-DES-CBC3-SHA`

-
### AES cipher suites from RFC3268, extending TLS v1.0
+
### AES cipher suites from RFC 3268, extending TLS v1.0

`AES128-SHA`
`AES256-SHA`
@@ -66,7 +66,7 @@ When specifying multiple cipher names, separate them with colon (`:`).
`ADH-AES128-SHA`
`ADH-AES256-SHA`

-
### SEED cipher suites from RFC4162, extending TLS v1.0
+
### SEED cipher suites from RFC 4162, extending TLS v1.0

`SEED-SHA`
`DH-DSS-SEED-SHA`
@@ -148,7 +148,7 @@ When specifying multiple cipher names, separate them with colon (`:`).
`ECDHE-ECDSA-AES128-CCM8`
`ECDHE-ECDSA-AES256-CCM8`

-
### Camellia HMAC-Based cipher suites from RFC6367, extending TLS v1.2
+
### Camellia HMAC-Based cipher suites from RFC 6367, extending TLS v1.2

`ECDHE-ECDSA-CAMELLIA128-SHA256`
`ECDHE-ECDSA-CAMELLIA256-SHA384`
modified external/curl/docs/CONTRIBUTE.md
@@ -210,7 +210,7 @@ A short guide to how to write git commit messages in the curl project.
        as you are implicitly approving it by committing]
    [Authored-by: John Doe - credit the original author of the code; only use
        this if you can't use "git commit --author=..."]
-
    {Signed-off-by: John Doe - we don't use this, but don't bother removing it]
+
    [Signed-off-by: John Doe - we don't use this, but don't bother removing it]
    [whatever-else-by: credit all helpers, finders, doers; try to use one of
        the following keywords if at all possible, for consistency:
        Acked-by:, Assisted-by:, Co-authored-by:, Found-by:, Reported-by:,
@@ -308,12 +308,9 @@ still fine.

This means that all files need to have their license and copyright information
clearly stated. Ideally by having the standard curl source code header, with
-
an accurate copyright year range and the SPDX-License-Identifier included. If
-
the header does not work, you can use a smaller header or add the information
-
for a specific file to the `.reuse/dep5` file.
-

-
We update copyright year ranges to end on the year of the most recent change
-
of the individual file.
+
the SPDX-License-Identifier included. If the header does not work, you can use a
+
smaller header or add the information for a specific file to the `.reuse/dep5`
+
file.

You can manually verify the copyright and compliance status by running the
`./scripts/copyright.pl` script in the root of the git repository.
modified external/curl/docs/FAQ
@@ -817,7 +817,7 @@ FAQ

  4.5 Why do I get return code XXX from an HTTP server?

-
  RFC2616 clearly explains the return codes. This is a short transcript. Go
+
  RFC 2616 clearly explains the return codes. This is a short transcript. Go
  read the RFC for exact details:

    4.5.1 "400 Bad Request"
@@ -985,7 +985,7 @@ FAQ

  To use explicit FTPS, you use an FTP:// URL and the --ftp-ssl option (or one
  of its related flavors). This is the most common method, and the one
-
  mandated by RFC4217. This kind of connection will then of course use the
+
  mandated by RFC 4217. This kind of connection will then of course use the
  standard FTP port 21 by default.

  4.16 My HTTP POST or PUT requests are slow
@@ -1332,7 +1332,7 @@ FAQ
  directory listing. How does it know what's a file and what's a directory and
  what's a symlink etc. If the FTP server supports the MLSD command then it
  will return data in a machine-readable format that can be parsed for type.
-
  The types are specified by RFC3659 section 7.5.1. If MLSD is not supported
+
  The types are specified by RFC 3659 section 7.5.1. If MLSD is not supported
  then you have to work with what you are given. The LIST output format is
  entirely at the server's own liking and the NLST output does not reveal any
  types and in many cases does not even include all the directory entries.
modified external/curl/docs/FEATURES.md
@@ -43,7 +43,7 @@
 - PUT
 - HEAD
 - POST
-
 - multipart formpost (RFC1867-style)
+
 - multipart formpost (RFC 1867-style)
 - authentication: Basic, Digest, NTLM (9) and Negotiate (SPNEGO) (3)
   to server and proxy
 - resume (both GET and PUT)
modified external/curl/docs/HTTP-COOKIES.md
@@ -17,7 +17,7 @@
  For a long time, the only spec explaining how to use cookies was the
  original [Netscape spec from 1994](https://curl.se/rfc/cookie_spec.html).

-
  In 2011, [RFC6265](https://www.ietf.org/rfc/rfc6265.txt) was finally
+
  In 2011, [RFC 6265](https://www.ietf.org/rfc/rfc6265.txt) was finally
  published and details how cookies work within HTTP. In 2016, an update which
  added support for prefixes was
  [proposed](https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00),
@@ -26,7 +26,7 @@
  to deprecate modification of 'secure' cookies from non-secure origins. Both
  of these drafts have been incorporated into a proposal to
  [replace](https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis-11)
-
  RFC6265. Cookie prefixes and secure cookie modification protection has been
+
  RFC 6265. Cookie prefixes and secure cookie modification protection has been
  implemented by curl.

  curl considers `http://localhost` to be a *secure context*, meaning that it
modified external/curl/docs/HTTP3.md
@@ -39,14 +39,14 @@ Building curl with ngtcp2 involves 3 components: `ngtcp2` itself, `nghttp3` and

For now, `ngtcp2` and `nghttp3` are still *experimental* which means their evolution bring breaking changes. Therefore, the proper version of both libraries need to be used when building curl. These are

-
 * `ngtcp2`: v0.15.0
-
 * `nghttp3`: v0.11.0
+
 * `ngtcp2`: v0.17.0
+
 * `nghttp3`: v0.13.0

## Build with OpenSSL

Build (patched) OpenSSL

-
     % git clone --depth 1 -b openssl-3.0.8+quic https://github.com/quictls/openssl
+
     % git clone --depth 1 -b openssl-3.0.9+quic https://github.com/quictls/openssl
     % cd openssl
     % ./config enable-tls1_3 --prefix=<somewhere1>
     % make
@@ -55,7 +55,7 @@ Build (patched) OpenSSL
Build nghttp3

     % cd ..
-
     % git clone -b v0.11.0 https://github.com/ngtcp2/nghttp3
+
     % git clone -b v0.13.0 https://github.com/ngtcp2/nghttp3
     % cd nghttp3
     % autoreconf -fi
     % ./configure --prefix=<somewhere2> --enable-lib-only
@@ -65,7 +65,7 @@ Build nghttp3
Build ngtcp2

     % cd ..
-
     % git clone -b v0.15.0 https://github.com/ngtcp2/ngtcp2
+
     % git clone -b v0.17.0 https://github.com/ngtcp2/ngtcp2
     % cd ngtcp2
     % autoreconf -fi
     % ./configure PKG_CONFIG_PATH=<somewhere1>/lib/pkgconfig:<somewhere2>/lib/pkgconfig LDFLAGS="-Wl,-rpath,<somewhere1>/lib" --prefix=<somewhere3> --enable-lib-only
@@ -98,7 +98,7 @@ Build GnuTLS
Build nghttp3

     % cd ..
-
     % git clone -b v0.11.0 https://github.com/ngtcp2/nghttp3
+
     % git clone -b v0.13.0 https://github.com/ngtcp2/nghttp3
     % cd nghttp3
     % autoreconf -fi
     % ./configure --prefix=<somewhere2> --enable-lib-only
@@ -108,7 +108,7 @@ Build nghttp3
Build ngtcp2

     % cd ..
-
     % git clone -b v0.15.0 https://github.com/ngtcp2/ngtcp2
+
     % git clone -b v0.17.0 https://github.com/ngtcp2/ngtcp2
     % cd ngtcp2
     % autoreconf -fi
     % ./configure PKG_CONFIG_PATH=<somewhere1>/lib/pkgconfig:<somewhere2>/lib/pkgconfig LDFLAGS="-Wl,-rpath,<somewhere1>/lib" --prefix=<somewhere3> --enable-lib-only --with-gnutls
@@ -139,7 +139,7 @@ Build wolfSSL
Build nghttp3

     % cd ..
-
     % git clone -b v0.11.0 https://github.com/ngtcp2/nghttp3
+
     % git clone -b v0.13.0 https://github.com/ngtcp2/nghttp3
     % cd nghttp3
     % autoreconf -fi
     % ./configure --prefix=<somewhere2> --enable-lib-only
@@ -149,7 +149,7 @@ Build nghttp3
Build ngtcp2

     % cd ..
-
     % git clone -b v0.15.0 https://github.com/ngtcp2/ngtcp2
+
     % git clone -b v0.17.0 https://github.com/ngtcp2/ngtcp2
     % cd ngtcp2
     % autoreconf -fi
     % ./configure PKG_CONFIG_PATH=<somewhere1>/lib/pkgconfig:<somewhere2>/lib/pkgconfig LDFLAGS="-Wl,-rpath,<somewhere1>/lib" --prefix=<somewhere3> --enable-lib-only --with-wolfssl
modified external/curl/docs/INTERNALS.md
@@ -30,7 +30,7 @@ versions of libs and build tools.
 - GSKit        V5R3M0
 - NSS          3.14.x
 - Heimdal      ?
-
 - nghttp2      1.12.0
+
 - nghttp2      1.15.0
 - WinSock      2.2 (on Windows 95+ and Windows CE .NET 4.1+)

## Build tools
modified external/curl/docs/KNOWN_BUGS
@@ -36,6 +36,7 @@ problems may have been fixed or changed somewhat since this was written.
 5. Build and portability issues
 5.1 OS400 port requires deprecated IBM library
 5.2 curl-config --libs contains private details
+
 5.3 building for old macOS fails with gcc
 5.5 cannot handle Unicode arguments in non-Unicode builds on Windows
 5.9 Utilize Requires.private directives in libcurl.pc
 5.11 configure --with-gssapi with Heimdal is ignored on macOS
@@ -215,6 +216,13 @@ problems may have been fixed or changed somewhat since this was written.
 run that might be needed only for building libcurl. Further, curl-config
 --cflags suffers from the same effects with CFLAGS/CPPFLAGS.

+
5.3 building for old macOS fails with gcc
+

+
 Building curl for certain old macOS versions fails when gcc is used. We
+
 command using clang in those cases.
+

+
 See https://github.com/curl/curl/issues/11441
+

5.5 cannot handle Unicode arguments in non-Unicode builds on Windows

 If a URL or filename cannot be encoded using the user's current codepage then
modified external/curl/docs/Makefile.in
@@ -407,7 +407,7 @@ USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
-
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
+
USE_NGTCP2_CRYPTO_QUICTLS = @USE_NGTCP2_CRYPTO_QUICTLS@
USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
modified external/curl/docs/RELEASE-PROCEDURE.md
@@ -107,11 +107,11 @@ Coming dates
Based on the description above, here are some planned release dates (at the
time of this writing):

-
- May 17, 2023
- July 19, 2023
-
- September 6, 2023
-
- November 1, 2023
-
- December 27, 2023
-
- February 21, 2024
-
- April 17, 2024
-
- June 12, 2024
+
- September 13, 2023
+
- November 8, 2023
+
- January 3, 2024
+
- February 28, 2024
+
- April 24, 2024
+
- June 19, 2024
+
- August 14, 2024
modified external/curl/docs/RUSTLS.md
@@ -3,7 +3,7 @@
[Rustls is a TLS backend written in Rust](https://docs.rs/rustls/). Curl can
be built to use it as an alternative to OpenSSL or other TLS backends. We use
the [rustls-ffi C bindings](https://github.com/rustls/rustls-ffi/). This
-
version of curl depends on version v0.9.2 of rustls-ffi.
+
version of curl depends on version v0.10.0 of rustls-ffi.

# Building with rustls

@@ -12,7 +12,7 @@ First, [install Rust](https://rustup.rs/).
Next, check out, build, and install the appropriate version of rustls-ffi:

    % cargo install cbindgen
-
    % git clone https://github.com/rustls/rustls-ffi -b v0.9.2
+
    % git clone https://github.com/rustls/rustls-ffi -b v0.10.0
    % cd rustls-ffi
    % make
    % make DESTDIR=${HOME}/rustls-ffi-built/ install
modified external/curl/docs/SECURITY-PROCESS.md
@@ -180,8 +180,7 @@ Easily exploitable by a remote unauthenticated attacker and lead to system
compromise (arbitrary code execution) without requiring user interaction, with
a common configuration on a popular platform. This issue has few restrictions
and requirements and can be exploited easily using most curl configurations.
-

-
No past curl vulnerability has had this severity level.
+
[Past example](https://curl.se/docs/CVE-2000-0973.html)

# Not security issues

modified external/curl/docs/THANKS
@@ -22,6 +22,7 @@ Abhinav Singh
Abram Pousada
accountantM on github
AceCrow on Github
+
ad0p on github
Adam Averay
Adam Barclay
Adam Brown
@@ -123,6 +124,7 @@ Ali Khodkar
Ali Utku Selen
ALittleDruid on github
Allen Pulsifer
+
Alois Klink
Alona Rossen
Amaury Denoyelle
amishmm on github
@@ -201,6 +203,7 @@ Angus Mackay
anio on github
anon00000000 on github
anshnd on github
+
Anssi Kolehmainen
Antarpreet Singh
Anthon Pang
Anthony Avina
@@ -211,6 +214,7 @@ Anthony Ramine
Anthony Shaw
Antoine Aubert
Antoine Calando
+
Antoine du Hamel
Antoine Pietri
Antoine Pitrou
Anton Bychkov
@@ -246,6 +250,7 @@ Ask Bjørn Hansen
Askar Safin
AtariDreams on github
Ates Goral
+
atjg on github
Augustus Saunders
Austin Green
Avery Fay
@@ -370,6 +375,7 @@ Brian Green
Brian Inglis
Brian J. Murrell
Brian Lund
+
Brian Nixon
Brian Prodoehl
Brian R Duffy
Brian Ulm
@@ -430,6 +436,7 @@ Cherish98 on github
Chester Liu
Chih-Chung Chang
Chih-Hsuan Yen
+
Chilledheart on github
Chloe Kudryavtsev
Chris "Bob Bob"
Chris Araman
@@ -445,6 +452,7 @@ Chris Mumford
Chris Paulson-Ellis
Chris Roberts
Chris Smowton
+
Chris Talbot
Chris Young
Christian Fillion
Christian Grothoff
@@ -483,6 +491,7 @@ Clemens Gruber
Cliff Crosland
Clifford Wolf
Clint Clayton
+
Cloudogu Siebels
Clément Notin
cmfrolick on github
codesniffer13 on github
@@ -655,6 +664,7 @@ Denis Ollier
Dennis Clarke
Dennis Felsing
Derek Higgins
+
Derzsi Dániel
Desmond O. Chang
destman on github
Detlef Schmier
@@ -674,6 +684,7 @@ Dimitrios Siganos
Dimitris Sarris
Dinar
Diogo Teles Sant'Anna
+
Dion Williams
Dirk Eddelbuettel
Dirk Feytons
Dirk Manske
@@ -963,6 +974,7 @@ Google Inc.
Gordon Marler
Gorilla Maguila
Gou Lingfeng
+
Graham Campbell
Grant Erickson
Grant Pannell
Greg Hewgill
@@ -1055,6 +1067,7 @@ htasta on github
Hubert Kario
Hugh Macdonald
Hugo van Kemenade
+
humbleacolyte
Huzaifa Sidhpurwala
huzunhao on github
hydra3333 on github
@@ -1075,6 +1088,7 @@ Igor Khristophorov
Igor Makarov
Igor Novoseltsev
Igor Polyakov
+
Igor Todorovski
Ihor Karpenko
ihsinme on github
Iida Yosiaki
@@ -1140,6 +1154,7 @@ James Housley
James Keast
James Knight
James Le Cuirot
+
James Lucas
James MacMillan
James Slaughter
Jamie Lokier
@@ -1151,6 +1166,7 @@ Jan Ehrhardt
Jan Engelhardt
Jan Koen Annot
Jan Kunder
+
Jan Macku
Jan Mazur
Jan Schaumann
Jan Schmidt
@@ -1182,6 +1198,7 @@ Jay Austin
Jay Dommaschk
Jayesh A Shah
Jaz Fresh
+
jbgoog on github
Jean Fabrice
Jean Gressmann
Jean Jacques Drouin
@@ -1289,6 +1306,7 @@ John E. Malmberg
John Gardiner Myers
John H. Ayad
John Hascall
+
John Haugabook
John Janssen
John Joseph Bachir
John Kelly
@@ -1363,6 +1381,7 @@ Josue Andrade Gomes
José Joaquín Atria
Jozef Kralik
Juan Barreto
+
Juan Cruz Viotti
Juan F. Codagnone
Juan Ignacio Hervás
Juan RP
@@ -1387,6 +1406,7 @@ Junho Choi
Jurij Smakov
jurisuk on github
Juro Bystricky
+
JustAnotherArchivist on github
justchen1369 on github
Justin Clift
Justin Ehlert
@@ -1421,6 +1441,7 @@ Kari Pahula
Karl Chen
Karl Moerder
Karol Pietrzak
+
Karthikdasari0423
Karthikdasari0423 on github
Kartik Mahajan
Kaspar Brand
@@ -1561,6 +1582,7 @@ Lisa Xu
Litter White
Liviu Chircu
Liza Alenchery
+
lizhuang0630 on github
lllaffer on github
Lloyd Fournier
Lluís Batlle i Rossell
@@ -1604,6 +1626,7 @@ Maciej Karpiuk
Maciej Puzio
Maciej W. Rozycki
madblobfish on github
+
MaeIsBad on github
Mahmoud Samir Fayed
Maks Naumov
Maksim Kuzevanov
@@ -1644,6 +1667,7 @@ Marcus Klein
Marcus Sundberg
Marcus T
Marcus Webster
+
Margu
Marian Klymov
Mario Schroeder
Mark Brand
@@ -1659,6 +1683,7 @@ Mark Lentczner
Mark Nottingham
Mark Roszko
Mark Salisbury
+
Mark Seuffert
Mark Snelling
Mark Swaanenburg
Mark Tully
@@ -1820,6 +1845,7 @@ Michał Fita
Michał Górny
Michał Janiszewski
Michał Kowalczyk
+
Michał Petryka
Michał Piechowski
Michel Promonet
Michele Bini
@@ -1968,6 +1994,7 @@ Ola Mork
Olaf Flebbe
Olaf Hering
Olaf Stüben
+
Oleg Jukovec
Oleg Pudeyev
Oleguer Llopart
Olen Andoni
@@ -1984,6 +2011,7 @@ Olivier Berger
Olivier Brunel
Omar Ramadan
omau on github
+
Ondřej Koláček
opensignature on github
opensslonzos-github on github
Orange Tsai
@@ -2047,6 +2075,7 @@ Paul Querna
Paul Saab
Paul Seligman
Paul Vixie
+
Paul Wise
Paulo Roberto Tomasi
Pavel Cenek
Pavel Gushchin
@@ -2063,6 +2092,7 @@ Pawel A. Gajda
Pawel Kierski
Paweł Kowalski
Paweł Wegner
+
Pedro Henrique
Pedro Larroy
Pedro Monreal
Pedro Neves
@@ -2137,6 +2167,7 @@ Pierrick Charron
Piotr Dobrogost
Piotr Komborski
Po-Chuan Hsieh
+
Pontakorn Prasertsuk
Pontus Lundkvist
Pooyan McSporran
Poul T Lomholt
@@ -2174,6 +2205,7 @@ Rainer Canavan
Rainer Jung
Rainer Koenig
Rainer Müller
+
Raito Bezarius
Rajesh Naganathan
Rajkumar Mandal
Ralf S. Engelschall
@@ -2354,6 +2386,7 @@ S. Moonesamy
Sai Ram Kunala
Salah-Eddin Shaban
Saleem Abdulrasool
+
SaltyMilk
Salvador Dávila
Salvatore Sorrentino
Sam Deane
@@ -2402,10 +2435,12 @@ Sebastian Mundry
Sebastian Pohlschmidt
Sebastian Rasmussen
Sebastian Sterk
+
selmelc on hackerone
SendSonS on github
Senthil Raja Velu
Sergei Kuzmin
Sergei Nikulov
+
Sergey Alirzaev
Sergey Bronnikov
Sergey Fionov
Sergey Markelov
@@ -2440,6 +2475,7 @@ Shaun Jackman
Shaun Mirani
Shawn Landden
Shawn Poulson
+
Sheshadri.V
Shikha Sharma
Shine Fan
Shiraz Kanga
@@ -2742,6 +2778,7 @@ Vicente Garcia
Victor Magierski
Victor Snezhko
Victor Vieux
+
VictorVG on github
Vijay Panghal
Vikram Saxena
Viktor Szakats
@@ -2767,6 +2804,7 @@ Vladimir Lazarenko
Vladimir Panteleev
Vladimir Varlamov
Vlastimil Ovčáčík
+
vlkl-sap on github
vlubart on github
Vojtech Janota
Vojtech Minarik
@@ -2827,6 +2865,7 @@ xtonik on github
xwxbug on github
Xì Gà
Yaakov Selkowitz
+
Yair Lenga
Yang Tse
Yaobin Wen
Yarram Sunil
modified external/curl/docs/TODO
@@ -23,7 +23,6 @@
 1.4 alt-svc sharing
 1.5 get rid of PATH_MAX
 1.6 native IDN support on macOS
-
 1.7 Support HTTP/2 for HTTP(S) proxies
 1.8 CURLOPT_RESOLVE for any port number
 1.9 Cache negative name resolves
 1.10 auto-detect proxy
@@ -73,7 +72,7 @@

 5. HTTP
 5.1 Provide the error body from a CONNECT response
-
 5.2 Set custom client ip when using haproxy protocol
+
 5.2 Obey Retry-After in redirects
 5.3 Rearrange request header order
 5.4 Allow SAN names in HTTP/2 server push
 5.5 auth= in URLs
@@ -189,7 +188,7 @@
 20.3 more protocols supported
 20.4 more platforms supported
 20.5 Add support for concurrent connections
-
 20.6 Use the RFC6265 test suite
+
 20.6 Use the RFC 6265 test suite
 20.7 Support LD_PRELOAD on macOS
 20.8 Run web-platform-tests URL tests

@@ -258,12 +257,6 @@

 See initial work in https://github.com/curl/curl/pull/5371

-
1.7 Support HTTP/2 for HTTP(S) proxies
-

-
 Support for doing HTTP/2 to HTTP and HTTPS proxies is still missing.
-

-
 See https://github.com/curl/curl/issues/3570
-

1.8 CURLOPT_RESOLVE for any port number

 This option allows applications to set a replacement IP address for a given
@@ -577,7 +570,7 @@

4.5 ASCII support

-
 FTP ASCII transfers do not follow RFC959. They do not convert the data
+
 FTP ASCII transfers do not follow RFC 959. They do not convert the data
 accordingly.

4.6 GSSAPI via Windows SSPI
@@ -616,12 +609,13 @@

 See https://github.com/curl/curl/issues/9513

-
5.2 Set custom client ip when using haproxy protocol
+
5.2 Obey Retry-After in redirects

-
 This would allow testing servers with different client ip addresses (without
-
 using x-forward-for header).
+
 The Retry-After is said to dicate "the minimum time that the user agent is
+
 asked to wait before issuing the redirected request" and libcurl does not
+
 obey this.

-
 https://github.com/curl/curl/issues/5125
+
 See https://github.com/curl/curl/issues/11447

5.3 Rearrange request header order

@@ -1246,7 +1240,7 @@

18.27 -J and -O with %-encoded file names

-
 -J/--remote-header-name does not decode %-encoded file names. RFC6266 details
+
 -J/--remote-header-name does not decode %-encoded file names. RFC 6266 details
 how it should be done. The can of worm is basically that we have no charset
 handling in curl and ascii >=128 is a challenge for us. Not to mention that
 decoding also means that we need to check for nastiness that is attempted,
@@ -1365,7 +1359,7 @@
 should not do in these tests) and thus the wait for connections loop is never
 entered to receive the second connection.

-
20.6 Use the RFC6265 test suite
+
20.6 Use the RFC 6265 test suite

 A test suite made for HTTP cookies (RFC 6265) by Adam Barth is available at
 https://github.com/abarth/http-state/tree/master/tests
modified external/curl/docs/TheArtOfHttpScripting.md
@@ -64,6 +64,17 @@

    curl --trace-ascii d.txt --trace-time http://example.com/

+
## See which Transfer
+

+
 When doing parallel transfers, it is relevant to see which transfer is
+
 doing what. When response headers are received (and logged) you need to
+
 know which transfer these are for.
+
 [`--trace-ids`](https://curl.se/docs/manpage.html#--trace-ids) option
+
 is what you need. It will prepend the transfer and connection identifier
+
 to each trace output line:
+

+
    curl --trace-ascii d.txt --trace-ids http://example.com/
+

## See the Response

 By default curl sends the response to stdout. You need to redirect it
@@ -293,7 +304,7 @@

 Back in late 1995 they defined an additional way to post data over HTTP. It
 is documented in the RFC 1867, why this method sometimes is referred to as
-
 RFC1867-posting.
+
 RFC 1867-posting.

 This method is mainly designed to better support file uploads. A form that
 allows a user to upload a file could be written like this in HTML:
modified external/curl/docs/URL-SYNTAX.md
@@ -52,7 +52,7 @@ security concerns:

3. Such a URL might use other schemes than you thought of or planned for.

-
## "RFC3986 plus"
+
## "RFC 3986 plus"

curl recognizes a URL syntax that we call "RFC 3986 plus". It is grounded on
the well established RFC 3986 to make sure previously written command lines and
modified external/curl/docs/cmdline-opts/Makefile.in
@@ -344,7 +344,7 @@ USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
-
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
+
USE_NGTCP2_CRYPTO_QUICTLS = @USE_NGTCP2_CRYPTO_QUICTLS@
USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
@@ -426,6 +426,7 @@ DPAGES = \
  append.d \
  aws-sigv4.d \
  basic.d \
+
  ca-native.d \
  cacert.d \
  capath.d \
  cert-status.d \
@@ -491,6 +492,7 @@ DPAGES = \
  globoff.d \
  happy-eyeballs-timeout-ms.d \
  haproxy-protocol.d \
+
  haproxy-clientip.d \
  head.d \
  header.d \
  help.d \
@@ -566,6 +568,7 @@ DPAGES = \
  proto.d \
  proxy-anyauth.d \
  proxy-basic.d \
+
  proxy-ca-native.d \
  proxy-cacert.d \
  proxy-capath.d \
  proxy-cert-type.d \
@@ -658,6 +661,7 @@ DPAGES = \
  tlsv1.d \
  tr-encoding.d \
  trace-ascii.d \
+
  trace-ids.d \
  trace-time.d \
  trace.d \
  unix-socket.d \
modified external/curl/docs/cmdline-opts/Makefile.inc
@@ -30,6 +30,7 @@ DPAGES = \
  append.d \
  aws-sigv4.d \
  basic.d \
+
  ca-native.d \
  cacert.d \
  capath.d \
  cert-status.d \
@@ -95,6 +96,7 @@ DPAGES = \
  globoff.d \
  happy-eyeballs-timeout-ms.d \
  haproxy-protocol.d \
+
  haproxy-clientip.d \
  head.d \
  header.d \
  help.d \
@@ -170,6 +172,7 @@ DPAGES = \
  proto.d \
  proxy-anyauth.d \
  proxy-basic.d \
+
  proxy-ca-native.d \
  proxy-cacert.d \
  proxy-capath.d \
  proxy-cert-type.d \
@@ -262,6 +265,7 @@ DPAGES = \
  tlsv1.d \
  tr-encoding.d \
  trace-ascii.d \
+
  trace-ids.d \
  trace-time.d \
  trace.d \
  unix-socket.d \
added external/curl/docs/cmdline-opts/ca-native.d
@@ -0,0 +1,19 @@
+
c: Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
+
SPDX-License-Identifier: curl
+
Long: ca-native
+
Help: Use CA certificates from the native OS
+
Protocols: TLS
+
Category: tls
+
See-also: cacert capath insecure
+
Example: --ca-native $URL
+
Added: 8.2.0
+
Multi: boolean
+
---
+
Tells curl to use the CA store from the native operating system to verify the
+
peer. By default, curl will otherwise use a CA store provided in a single file
+
or directory, but when using this option it will interface the operating
+
system's own vault.
+

+
This option only works for curl on Windows when built to use OpenSSL. When
+
curl on Windows is built to use Schannel, this feature is implied and curl
+
then only uses the native CA store.
modified external/curl/docs/cmdline-opts/ciphers.d
@@ -5,7 +5,7 @@ Arg: <list of ciphers>
Help: SSL ciphers to use
Protocols: TLS
Category: tls
-
See-also: tlsv1.3
+
See-also: tlsv1.3 tls13-ciphers proxy-ciphers
Example: --ciphers ECDHE-ECDSA-AES256-CCM8 $URL
Added: 7.9
Multi: single
@@ -13,4 +13,4 @@ Multi: single
Specifies which ciphers to use in the connection. The list of ciphers must
specify valid ciphers. Read up on SSL cipher list details on this URL:

-
 https://curl.se/docs/ssl-ciphers.html
+
https://curl.se/docs/ssl-ciphers.html
modified external/curl/docs/cmdline-opts/config.d
@@ -29,7 +29,8 @@ preceding any other letter is ignored.
If the first column of a config line is a '#' character, the rest of the line
will be treated as a comment.

-
Only write one option per physical line in the config file.
+
Only write one option per physical line in the config file. A single line is
+
required to be no more than 10 megabytes (since 8.2.0).

Specify the filename to --config as '-' to make curl read the file from stdin.

modified external/curl/docs/cmdline-opts/connect-timeout.d
@@ -15,8 +15,8 @@ limits the connection phase, so if curl connects within the given period it
will continue - if not it will exit.  Since version 7.32.0, this option
accepts decimal values.

-
The "connection phase" is considered complete when the requested TCP, TLS or
-
QUIC handshakes are done.
+
The "connection phase" is considered complete when the DNS lookup and
+
requested TCP, TLS or QUIC handshakes are done.

The decimal value needs to provided using a dot (.) as decimal separator - not
the local version even if it might be using another separator.
modified external/curl/docs/cmdline-opts/data-urlencode.d
@@ -39,3 +39,4 @@ URL-encode that data and pass it on in the POST. The name part gets an equal
sign appended, resulting in *name=urlencoded-file-content*. Note that the
name is expected to be URL-encoded already.
.RE
+
.IP
modified external/curl/docs/cmdline-opts/delegation.d
@@ -21,3 +21,4 @@ service ticket, which is a matter of realm policy.
.IP "always"
Unconditionally allow the server to delegate.
.RE
+
.IP
modified external/curl/docs/cmdline-opts/ftp-method.d
@@ -27,3 +27,4 @@ curl does one CWD with the full target directory and then operates on the file
"normally" (like in the multicwd case). This is somewhat more standards
compliant than 'nocwd' but without the full penalty of 'multicwd'.
.RE
+
.IP
modified external/curl/docs/cmdline-opts/ftp-port.d
@@ -29,6 +29,7 @@ e.g. "my.host.domain" to specify the machine
make curl pick the same IP address that is already used for the control
connection
.RE
+
.IP

Disable the use of PORT with --ftp-pasv. Disable the attempt to use the EPRT
command instead of PORT by using --disable-eprt. EPRT is really PORT++.
added external/curl/docs/cmdline-opts/haproxy-clientip.d
@@ -0,0 +1,29 @@
+
c: Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
+
SPDX-License-Identifier: curl
+
Long: haproxy-clientip
+
Help: Sets client IP in HAProxy PROXY protocol v1 header
+
Protocols: HTTP
+
Added: 8.2.0
+
Category: http proxy
+
Example: --haproxy-clientip $IP
+
See-also: proxy
+
Multi: single
+
---
+
Sets a client IP in HAProxy PROXY protocol v1 header at the beginning of the
+
connection.
+

+
For valid requests, IPv4 addresses must be indicated as a series of exactly
+
4 integers in the range [0..255] inclusive written in decimal representation
+
separated by exactly one dot between each other. Heading zeroes are not
+
permitted in front of numbers in order to avoid any possible confusion
+
with octal numbers. IPv6 addresses must be indicated as series of 4 hexadecimal
+
digits (upper or lower case) delimited by colons between each other, with the
+
acceptance of one double colon sequence to replace the largest acceptable range
+
of consecutive zeroes. The total number of decoded bits must exactly be 128.
+

+
Otherwise, any string can be accepted for the client IP and will be sent.
+

+
It replaces `--haproxy-protocol` if used, it is not necessary to specify both flags.
+

+
This option is primarily useful when sending test requests to
+
verify a service is working as intended.
modified external/curl/docs/cmdline-opts/login-options.d
@@ -16,3 +16,9 @@ You can use login options to specify protocol specific options that may be
used during authentication. At present only IMAP, POP3 and SMTP support
login options. For more information about login options please see RFC
2384, RFC 5092 and IETF draft draft-earhart-url-smtp-00.txt
+

+
Since 8.2.0, IMAP supports the login option "AUTH=+LOGIN". With this option,
+
curl uses the plain (not SASL) LOGIN IMAP command even if the server advertises
+
SASL authentication. Care should be taken in using this option, as it will send
+
out your password in plain text. This will not work if the IMAP server disables
+
the plain LOGIN (e.g. to prevent password snooping).
modified external/curl/docs/cmdline-opts/mail-rcpt.d
@@ -15,7 +15,7 @@ option several times to send to multiple recipients.

When performing an address verification (VRFY command), the recipient should be
specified as the user name or user name and domain (as per Section 3.5 of
-
RFC5321). (Added in 7.34.0)
+
RFC 5321). (Added in 7.34.0)

When performing a mailing list expand (EXPN command), the recipient should be
specified using the mailing list name, such as "Friends" or "London-Office".
added external/curl/docs/cmdline-opts/proxy-ca-native.d
@@ -0,0 +1,19 @@
+
c: Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
+
SPDX-License-Identifier: curl
+
Long: proxy-ca-native
+
Help: Use CA certificates from the native OS for proxy
+
Protocols: TLS
+
Category: tls
+
See-also: cacert capath insecure
+
Example: --ca-native $URL
+
Added: 8.2.0
+
Multi: boolean
+
---
+
Tells curl to use the CA store from the native operating system to verify the
+
HTTPS proxy. By default, curl will otherwise use a CA store provided in a
+
single file or directory, but when using this option it will interface the
+
operating system's own vault.
+

+
This option only works for curl on Windows when built to use OpenSSL. When
+
curl on Windows is built to use Schannel, this feature is implied and curl
+
then only uses the native CA store.
modified external/curl/docs/cmdline-opts/proxy-ciphers.d
@@ -10,3 +10,9 @@ See-also: ciphers curves proxy
Multi: single
---
Same as --ciphers but used in HTTPS proxy context.
+

+
Specifies which ciphers to use in the connection to the HTTPS proxy. The list
+
of ciphers must specify valid ciphers. Read up on SSL cipher list details on
+
this URL:
+

+
https://curl.se/docs/ssl-ciphers.html
modified external/curl/docs/cmdline-opts/proxy-tls13-ciphers.d
@@ -7,14 +7,14 @@ Protocols: TLS
Category: proxy tls
Example: --proxy-tls13-ciphers TLS_AES_128_GCM_SHA256 -x proxy $URL
Added: 7.61.0
-
See-also: tls13-ciphers curves
+
See-also: tls13-ciphers curves proxy-ciphers
Multi: single
---
Specifies which cipher suites to use in the connection to your HTTPS proxy
when it negotiates TLS 1.3. The list of ciphers suites must specify valid
ciphers. Read up on TLS 1.3 cipher suite details on this URL:

-
 https://curl.se/docs/ssl-ciphers.html
+
https://curl.se/docs/ssl-ciphers.html

This option is currently used only when curl is built to use OpenSSL 1.1.1 or
later. If you are using a different SSL backend you can try setting TLS 1.3
modified external/curl/docs/cmdline-opts/quote.d
@@ -30,47 +30,58 @@ aborted.
You must send syntactically correct FTP commands as RFC 959 defines to FTP
servers, or one of the commands listed below to SFTP servers.

-
This option can be used multiple times.
-

SFTP is a binary protocol. Unlike for FTP, curl interprets SFTP quote commands
itself before sending them to the server. File names may be quoted
shell-style to embed spaces or special characters. Following is the list of
all supported SFTP quote commands:
.RS
-
.IP "atime date file"
+
.TP
+
.B "atime date file"
The atime command sets the last access time of the file named by the file
operand. The <date expression> can be all sorts of date strings, see the
*curl_getdate(3)* man page for date expression details. (Added in 7.73.0)
-
.IP "chgrp group file"
+
.TP
+
.B "chgrp group file"
The chgrp command sets the group ID of the file named by the file operand to
the group ID specified by the group operand. The group operand is a decimal
integer group ID.
-
.IP "chmod mode file"
+
.TP
+
.B "chmod mode file"
The chmod command modifies the file mode bits of the specified file. The
mode operand is an octal integer mode number.
-
.IP "chown user file"
+
.TP
+
.B "chown user file"
The chown command sets the owner of the file named by the file operand to the
user ID specified by the user operand. The user operand is a decimal
integer user ID.
-
.IP "ln source_file target_file"
+
.TP
+
.B "ln source_file target_file"
The ln and symlink commands create a symbolic link at the target_file location
pointing to the source_file location.
-
.IP "mkdir directory_name"
+
.TP
+
.B "mkdir directory_name"
The mkdir command creates the directory named by the directory_name operand.
-
.IP "mtime date file"
+
.TP
+
.B "mtime date file"
The mtime command sets the last modification time of the file named by the
file operand. The <date expression> can be all sorts of date strings, see the
*curl_getdate(3)* man page for date expression details. (Added in 7.73.0)
-
.IP "pwd"
+
.TP
+
.B "pwd"
The pwd command returns the absolute pathname of the current working directory.
-
.IP "rename source target"
+
.TP
+
.B "rename source target"
The rename command renames the file or directory named by the source
operand to the destination path named by the target operand.
-
.IP "rm file"
+
.TP
+
.B "rm file"
The rm command removes the file specified by the file operand.
-
.IP "rmdir directory"
+
.TP
+
.B "rmdir directory"
The rmdir command removes the directory entry specified by the directory
operand, provided it is empty.
-
.IP "symlink source_file target_file"
+
.TP
+
.B "symlink source_file target_file"
See ln.
.RE
+
.IP
modified external/curl/docs/cmdline-opts/tcp-fastopen.d
@@ -8,4 +8,7 @@ Example: --tcp-fastopen $URL
See-also: false-start
Multi: boolean
---
-
Enable use of TCP Fast Open (RFC7413).
+

+
Enable use of TCP Fast Open (RFC 7413). TCP Fast Open is a TCP extension that
+
allows data to get sent earlier over the connection (before the final
+
handshake ACK) if the client and server have been connected previously.
modified external/curl/docs/cmdline-opts/tls-max.d
@@ -3,7 +3,7 @@ SPDX-License-Identifier: curl
Long: tls-max
Arg: <VERSION>
Tags: Versions
-
Protocols: SSL
+
Protocols: TLS
Added: 7.54.0
Requires: TLS
See-also: tlsv1.0 tlsv1.1 tlsv1.2 tlsv1.3
@@ -31,3 +31,4 @@ Use up to TLSv1.2.
.IP "1.3"
Use up to TLSv1.3.
.RE
+
.IP
modified external/curl/docs/cmdline-opts/tls13-ciphers.d
@@ -7,15 +7,15 @@ Protocols: TLS
Category: tls
Example: --tls13-ciphers TLS_AES_128_GCM_SHA256 $URL
Added: 7.61.0
-
See-also: ciphers curves
+
See-also: ciphers curves proxy-tls13-ciphers
Multi: single
---
Specifies which cipher suites to use in the connection if it negotiates TLS
1.3. The list of ciphers suites must specify valid ciphers. Read up on TLS 1.3
cipher suite details on this URL:

-
 https://curl.se/docs/ssl-ciphers.html
+
https://curl.se/docs/ssl-ciphers.html

This option is currently used only when curl is built to use OpenSSL 1.1.1 or
-
later. If you are using a different SSL backend you can try setting TLS 1.3
-
cipher suites by using the --ciphers option.
+
later or Schannel. If you are using a different SSL backend you can try
+
setting TLS 1.3 cipher suites by using the --ciphers option.
modified external/curl/docs/cmdline-opts/tlsv1.d
@@ -3,7 +3,7 @@ SPDX-License-Identifier: curl
Short: 1
Long: tlsv1
Tags: Versions
-
Protocols: SSL
+
Protocols: TLS
Added: 7.9.2
Mutexed: tlsv1.1 tlsv1.2 tlsv1.3
Requires: TLS
added external/curl/docs/cmdline-opts/trace-ids.d
@@ -0,0 +1,12 @@
+
c: Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
+
SPDX-License-Identifier: curl
+
Long: trace-ids
+
Help: Add transfer and connection identifiers to trace/verbose output
+
Added: 8.2.0
+
Category: verbose
+
Example: --trace-ids --trace-ascii output $URL
+
See-also: trace verbose
+
Multi: boolean
+
Scope: global
+
---
+
Prepends the transfer and connection identifiers to each trace or verbose line that curl displays.
modified external/curl/docs/cmdline-opts/trace.d
@@ -7,7 +7,7 @@ Mutexed: verbose trace-ascii
Category: verbose
Example: --trace log.txt $URL
Added: 7.9.7
-
See-also: trace-ascii trace-time
+
See-also: trace-ascii trace-ids trace-time
Multi: single
Scope: global
---
modified external/curl/docs/cmdline-opts/version.d
@@ -83,3 +83,4 @@ Unix sockets support is provided.
.IP "zstd"
Automatic decompression (via zstd) of compressed files over HTTP is supported.
.RE
+
.IP
modified external/curl/docs/curl-config.1
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH curl-config 1 "April 26, 2023" "url-config 8.1.2" curl-config
+
.TH curl-config 1 "April 26, 2023" "url-config 8.2.1" curl-config

.SH NAME
curl-config \- Get information about a libcurl installation
modified external/curl/docs/curl.1
@@ -24,7 +24,7 @@
.\"
.\" DO NOT EDIT. Generated by the curl project gen.pl man page generator.
.\"
-
.TH curl 1 "May 29 2023" "curl 8.1.2" "curl Manual"
+
.TH curl 1 "July 25 2023" "curl 8.2.1" "curl Manual"
.SH NAME
curl \- transfer a URL
.SH SYNOPSIS
@@ -194,7 +194,7 @@ If you prefer a progress "bar" instead of the regular meter, \fI\-#, \-\-progres
your friend. You can also disable the progress meter completely with the
\fI\-s, \-\-silent\fP option.
.SH VERSION
-
This man page describes curl 8.1.2. If you use a later version, chances are
+
This man page describes curl 8.2.1. If you use a later version, chances are
this man page does not fully document it. If you use an earlier version, this
document tries to include version information about which specific version
that introduced changes.
@@ -226,7 +226,7 @@ clean option state, except for the options that are "global". Global options
will retain their values and meaning even after \fI\-:, \-\-next\fP.

The following options are global:
-
\fI\-\-fail-early\fP, \fI\-\-libcurl\fP, \fI\-\-parallel-immediate\fP, \fI\-Z, \-\-parallel\fP, \fI\-#, \-\-progress-bar\fP, \fI\-\-rate\fP, \fI\-S, \-\-show-error\fP, \fI\-\-stderr\fP, \fI\-\-styled-output\fP, \fI\-\-trace-ascii\fP, \fI\-\-trace-time\fP, \fI\-\-trace\fP and \fI\-v, \-\-verbose\fP.
+
\fI\-\-fail-early\fP, \fI\-\-libcurl\fP, \fI\-\-parallel-immediate\fP, \fI\-Z, \-\-parallel\fP, \fI\-#, \-\-progress-bar\fP, \fI\-\-rate\fP, \fI\-S, \-\-show-error\fP, \fI\-\-stderr\fP, \fI\-\-styled-output\fP, \fI\-\-trace-ascii\fP, \fI\-\-trace-ids\fP, \fI\-\-trace-time\fP, \fI\-\-trace\fP and \fI\-v, \-\-verbose\fP.
.IP "\-\-abstract-unix-socket <path>"
(HTTP) Connect through an abstract Unix domain socket, instead of using the network.
Note: netstat shows the path of an abstract socket prefixed with '@', however
@@ -332,6 +332,25 @@ Example:
.fi

See also \fI--proxy-basic\fP.
+
.IP "\-\-ca-native"
+
(TLS) Tells curl to use the CA store from the native operating system to verify the
+
peer. By default, curl will otherwise use a CA store provided in a single file
+
or directory, but when using this option it will interface the operating
+
system's own vault.
+

+
This option only works for curl on Windows when built to use OpenSSL. When
+
curl on Windows is built to use Schannel, this feature is implied and curl
+
then only uses the native CA store.
+

+
Providing \fI\-\-ca-native\fP multiple times has no extra effect.
+
Disable it again with \-\-no-ca-native.
+

+
Example:
+
.nf
+
 curl --ca-native https://example.com
+
.fi
+

+
See also \fI--cacert\fP, \fI--capath\fP and \fI-k, --insecure\fP. Added in 8.2.0.
.IP "\-\-cacert <file>"
(TLS) Tells curl to use the specified certificate file to verify the peer. The file
may contain multiple CA certificates. The certificate(s) must be in PEM
@@ -481,9 +500,7 @@ See also \fI--cert-type\fP, \fI--key\fP and \fI--key-type\fP.
(TLS) Specifies which ciphers to use in the connection. The list of ciphers must
specify valid ciphers. Read up on SSL cipher list details on this URL:

-
.nf
-
 https://curl.se/docs/ssl-ciphers.html
-
.fi
+
https://curl.se/docs/ssl-ciphers.html

If \fI\-\-ciphers\fP is provided several times, the last set value will be used.

@@ -492,7 +509,7 @@ Example:
 curl --ciphers ECDHE-ECDSA-AES256-CCM8 https://example.com
.fi

-
See also \fI--tlsv1.3\fP.
+
See also \fI--tlsv1.3\fP, \fI--tls13-ciphers\fP and \fI--proxy-ciphers\fP.
.IP "\-\-compressed-ssh"
(SCP SFTP) Enables built-in SSH compression.
This is a request, not an order; the server may or may not do it.
@@ -547,7 +564,8 @@ preceding any other letter is ignored.
If the first column of a config line is a '#' character, the rest of the line
will be treated as a comment.

-
Only write one option per physical line in the config file.
+
Only write one option per physical line in the config file. A single line is
+
required to be no more than 10 megabytes (since 8.2.0).

Specify the filename to \fI\-K, \-\-config\fP as '-' to make curl read the file from stdin.

@@ -611,8 +629,8 @@ limits the connection phase, so if curl connects within the given period it
will continue \- if not it will exit.  Since version 7.32.0, this option
accepts decimal values.

-
The "connection phase" is considered complete when the requested TCP, TLS or
-
QUIC handshakes are done.
+
The "connection phase" is considered complete when the DNS lookup and
+
requested TCP, TLS or QUIC handshakes are done.

The decimal value needs to provided using a dot (.) as decimal separator \- not
the local version even if it might be using another separator.
@@ -888,6 +906,7 @@ URL-encode that data and pass it on in the POST. The name part gets an equal
sign appended, resulting in \fIname=urlencoded-file-content\fP. Note that the
name is expected to be URL-encoded already.
.RE
+
.IP

\fI\-\-data-urlencode\fP can be used several times in a command line

@@ -949,6 +968,7 @@ service ticket, which is a matter of realm policy.
.IP "always"
Unconditionally allow the server to delegate.
.RE
+
.IP

If \fI\-\-delegation\fP is provided several times, the last set value will be used.

@@ -1572,6 +1592,7 @@ curl does one CWD with the full target directory and then operates on the file
\(dqnormally" (like in the multicwd case). This is somewhat more standards
compliant than 'nocwd' but without the full penalty of 'multicwd'.
.RE
+
.IP

If \fI\-\-ftp-method\fP is provided several times, the last set value will be used.

@@ -1620,6 +1641,7 @@ e.g. "my.host.domain" to specify the machine
make curl pick the same IP address that is already used for the control
connection
.RE
+
.IP

Disable the use of PORT with \fI\-\-ftp-pasv\fP. Disable the attempt to use the EPRT
command instead of PORT by using \fI\-\-disable-eprt\fP. EPRT is really PORT++.
@@ -1772,6 +1794,34 @@ Example:
.fi

See also \fI-m, --max-time\fP and \fI--connect-timeout\fP. Added in 7.59.0.
+
.IP "\-\-haproxy-clientip"
+
(HTTP) Sets a client IP in HAProxy PROXY protocol v1 header at the beginning of the
+
connection.
+

+
For valid requests, IPv4 addresses must be indicated as a series of exactly
+
4 integers in the range [0..255] inclusive written in decimal representation
+
separated by exactly one dot between each other. Heading zeroes are not
+
permitted in front of numbers in order to avoid any possible confusion
+
with octal numbers. IPv6 addresses must be indicated as series of 4 hexadecimal
+
digits (upper or lower case) delimited by colons between each other, with the
+
acceptance of one double colon sequence to replace the largest acceptable range
+
of consecutive zeroes. The total number of decoded bits must exactly be 128.
+

+
Otherwise, any string can be accepted for the client IP and will be sent.
+

+
It replaces `\fI\-\-haproxy-protocol\fP` if used, it is not necessary to specify both flags.
+

+
This option is primarily useful when sending test requests to
+
verify a service is working as intended.
+

+
If \fI\-\-haproxy-clientip\fP is provided several times, the last set value will be used.
+

+
Example:
+
.nf
+
 curl --haproxy-clientip $IP
+
.fi
+

+
See also \fI-x, --proxy\fP. Added in 8.2.0.
.IP "\-\-haproxy-protocol"
(HTTP) Send a HAProxy PROXY protocol v1 header at the beginning of the
connection. This is used by some load balancers and reverse proxies to
@@ -2419,6 +2469,12 @@ used during authentication. At present only IMAP, POP3 and SMTP support
login options. For more information about login options please see RFC
2384, RFC 5092 and IETF draft draft-earhart-url-smtp-00.txt

+
Since 8.2.0, IMAP supports the login option "AUTH=+LOGIN". With this option,
+
curl uses the plain (not SASL) LOGIN IMAP command even if the server advertises
+
SASL authentication. Care should be taken in using this option, as it will send
+
out your password in plain text. This will not work if the IMAP server disables
+
the plain LOGIN (e.g. to prevent password snooping).
+

If \fI\-\-login-options\fP is provided several times, the last set value will be used.

Example:
@@ -2479,7 +2535,7 @@ option several times to send to multiple recipients.

When performing an address verification (VRFY command), the recipient should be
specified as the user name or user name and domain (as per Section 3.5 of
-
RFC5321). (Added in 7.34.0)
+
RFC 5321). (Added in 7.34.0)

When performing a mailing list expand (EXPN command), the recipient should be
specified using the mailing list name, such as "Friends" or "London-Office".
@@ -3254,6 +3310,25 @@ Example:
.fi

See also \fI-x, --proxy\fP, \fI--proxy-anyauth\fP and \fI--proxy-digest\fP.
+
.IP "\-\-proxy-ca-native"
+
(TLS) Tells curl to use the CA store from the native operating system to verify the
+
HTTPS proxy. By default, curl will otherwise use a CA store provided in a
+
single file or directory, but when using this option it will interface the
+
operating system's own vault.
+

+
This option only works for curl on Windows when built to use OpenSSL. When
+
curl on Windows is built to use Schannel, this feature is implied and curl
+
then only uses the native CA store.
+

+
Providing \fI\-\-proxy-ca-native\fP multiple times has no extra effect.
+
Disable it again with \-\-no-proxy-ca-native.
+

+
Example:
+
.nf
+
 curl --ca-native https://example.com
+
.fi
+

+
See also \fI--cacert\fP, \fI--capath\fP and \fI-k, --insecure\fP. Added in 8.2.0.
.IP "\-\-proxy-cacert <file>"
Same as \fI\-\-cacert\fP but used in HTTPS proxy context.

@@ -3301,6 +3376,12 @@ See also \fI--proxy-cert-type\fP. Added in 7.52.0.
.IP "\-\-proxy-ciphers <list>"
Same as \fI\-\-ciphers\fP but used in HTTPS proxy context.

+
Specifies which ciphers to use in the connection to the HTTPS proxy. The list
+
of ciphers must specify valid ciphers. Read up on SSL cipher list details on
+
this URL:
+

+
https://curl.se/docs/ssl-ciphers.html
+

If \fI\-\-proxy-ciphers\fP is provided several times, the last set value will be used.

Example:
@@ -3507,9 +3588,7 @@ See also \fI--ssl-auto-client-cert\fP and \fI-x, --proxy\fP. Added in 7.77.0.
when it negotiates TLS 1.3. The list of ciphers suites must specify valid
ciphers. Read up on TLS 1.3 cipher suite details on this URL:

-
.nf
-
 https://curl.se/docs/ssl-ciphers.html
-
.fi
+
https://curl.se/docs/ssl-ciphers.html

This option is currently used only when curl is built to use OpenSSL 1.1.1 or
later. If you are using a different SSL backend you can try setting TLS 1.3
@@ -3522,7 +3601,7 @@ Example:
 curl --proxy-tls13-ciphers TLS_AES_128_GCM_SHA256 -x proxy https://example.com
.fi

-
See also \fI--tls13-ciphers\fP and \fI--curves\fP. Added in 7.61.0.
+
See also \fI--tls13-ciphers\fP, \fI--curves\fP and \fI--proxy-ciphers\fP. Added in 7.61.0.
.IP "\-\-proxy-tlsauthtype <type>"
Same as \fI\-\-tlsauthtype\fP but used in HTTPS proxy context.

@@ -3708,50 +3787,61 @@ aborted.
You must send syntactically correct FTP commands as RFC 959 defines to FTP
servers, or one of the commands listed below to SFTP servers.

-
This option can be used multiple times.
-

SFTP is a binary protocol. Unlike for FTP, curl interprets SFTP quote commands
itself before sending them to the server. File names may be quoted
shell-style to embed spaces or special characters. Following is the list of
all supported SFTP quote commands:
.RS
-
.IP "atime date file"
+
.TP
+
.B "atime date file"
The atime command sets the last access time of the file named by the file
operand. The <date expression> can be all sorts of date strings, see the
\fIcurl_getdate(3)\fP man page for date expression details. (Added in 7.73.0)
-
.IP "chgrp group file"
+
.TP
+
.B "chgrp group file"
The chgrp command sets the group ID of the file named by the file operand to
the group ID specified by the group operand. The group operand is a decimal
integer group ID.
-
.IP "chmod mode file"
+
.TP
+
.B "chmod mode file"
The chmod command modifies the file mode bits of the specified file. The
mode operand is an octal integer mode number.
-
.IP "chown user file"
+
.TP
+
.B "chown user file"
The chown command sets the owner of the file named by the file operand to the
user ID specified by the user operand. The user operand is a decimal
integer user ID.
-
.IP "ln source_file target_file"
+
.TP
+
.B "ln source_file target_file"
The ln and symlink commands create a symbolic link at the target_file location
pointing to the source_file location.
-
.IP "mkdir directory_name"
+
.TP
+
.B "mkdir directory_name"
The mkdir command creates the directory named by the directory_name operand.
-
.IP "mtime date file"
+
.TP
+
.B "mtime date file"
The mtime command sets the last modification time of the file named by the
file operand. The <date expression> can be all sorts of date strings, see the
\fIcurl_getdate(3)\fP man page for date expression details. (Added in 7.73.0)
-
.IP "pwd"
+
.TP
+
.B "pwd"
The pwd command returns the absolute pathname of the current working directory.
-
.IP "rename source target"
+
.TP
+
.B "rename source target"
The rename command renames the file or directory named by the source
operand to the destination path named by the target operand.
-
.IP "rm file"
+
.TP
+
.B "rm file"
The rm command removes the file specified by the file operand.
-
.IP "rmdir directory"
+
.TP
+
.B "rmdir directory"
The rmdir command removes the directory entry specified by the directory
operand, provided it is empty.
-
.IP "symlink source_file target_file"
+
.TP
+
.B "symlink source_file target_file"
See ln.
.RE
+
.IP

\fI\-Q, \-\-quote\fP can be used several times in a command line

@@ -4645,7 +4735,10 @@ Example:

See also \fI-D, --dump-header\fP, \fI-i, --include\fP and \fI-p, --proxytunnel\fP. Added in 7.54.0.
.IP "\-\-tcp-fastopen"
-
Enable use of TCP Fast Open (RFC7413).
+

+
Enable use of TCP Fast Open (RFC 7413). TCP Fast Open is a TCP extension that
+
allows data to get sent earlier over the connection (before the final
+
handshake ACK) if the client and server have been connected previously.

Providing \fI\-\-tcp-fastopen\fP multiple times has no extra effect.
Disable it again with \-\-no-tcp-fastopen.
@@ -4740,7 +4833,7 @@ Examples:

See also \fI--etag-compare\fP and \fI-R, --remote-time\fP.
.IP "\-\-tls-max <VERSION>"
-
(SSL) VERSION defines maximum supported TLS version. The minimum acceptable version
+
(TLS) VERSION defines maximum supported TLS version. The minimum acceptable version
is set by tlsv1.0, tlsv1.1, tlsv1.2 or tlsv1.3.

If the connection is done without TLS, this option has no effect. This
@@ -4758,6 +4851,7 @@ Use up to TLSv1.2.
.IP "1.3"
Use up to TLSv1.3.
.RE
+
.IP

If \fI\-\-tls-max\fP is provided several times, the last set value will be used.

@@ -4773,13 +4867,11 @@ See also \fI--tlsv1.0\fP, \fI--tlsv1.1\fP, \fI--tlsv1.2\fP and \fI--tlsv1.3\fP.
1.3. The list of ciphers suites must specify valid ciphers. Read up on TLS 1.3
cipher suite details on this URL:

-
.nf
-
 https://curl.se/docs/ssl-ciphers.html
-
.fi
+
https://curl.se/docs/ssl-ciphers.html

This option is currently used only when curl is built to use OpenSSL 1.1.1 or
-
later. If you are using a different SSL backend you can try setting TLS 1.3
-
cipher suites by using the \fI\-\-ciphers\fP option.
+
later or Schannel. If you are using a different SSL backend you can try
+
setting TLS 1.3 cipher suites by using the \fI\-\-ciphers\fP option.

If \fI\-\-tls13-ciphers\fP is provided several times, the last set value will be used.

@@ -4788,7 +4880,7 @@ Example:
 curl --tls13-ciphers TLS_AES_128_GCM_SHA256 https://example.com
.fi

-
See also \fI--ciphers\fP and \fI--curves\fP. Added in 7.61.0.
+
See also \fI--ciphers\fP, \fI--curves\fP and \fI--proxy-tls13-ciphers\fP. Added in 7.61.0.
.IP "\-\-tlsauthtype <type>"
Set TLS authentication type. Currently, the only supported option is "SRP",
for TLS-SRP (RFC 5054). If \fI\-\-tlsuser\fP and \fI\-\-tlspassword\fP are specified but
@@ -4895,7 +4987,7 @@ Example:

See also \fI--tlsv1.2\fP and \fI--tls-max\fP. Added in 7.52.0.
.IP "\-1, \-\-tlsv1"
-
(SSL) Tells curl to use at least TLS version 1.x when negotiating with a remote TLS
+
(TLS) Tells curl to use at least TLS version 1.x when negotiating with a remote TLS
server. That means TLS version 1.0 or higher

Providing \fI\-1, \-\-tlsv1\fP multiple times has no extra effect.
@@ -4938,6 +5030,20 @@ Example:
.fi

See also \fI-v, --verbose\fP and \fI--trace\fP. This option is mutually exclusive to \fI--trace\fP and \fI-v, --verbose\fP.
+
.IP "\-\-trace-ids"
+
Prepends the transfer and connection identifiers to each trace or verbose line that curl displays.
+

+
This option is global and does not need to be specified for each use of --next.
+

+
Providing \fI\-\-trace-ids\fP multiple times has no extra effect.
+
Disable it again with \-\-no-trace-ids.
+

+
Example:
+
.nf
+
 curl --trace-ids --trace-ascii output https://example.com
+
.fi
+

+
See also \fI--trace\fP and \fI-v, --verbose\fP. Added in 8.2.0.
.IP "\-\-trace-time"
Prepends a time stamp to each trace or verbose line that curl displays.

@@ -4967,7 +5073,7 @@ Example:
 curl --trace log.txt https://example.com
.fi

-
See also \fI--trace-ascii\fP and \fI--trace-time\fP. This option is mutually exclusive to \fI-v, --verbose\fP and \fI--trace-ascii\fP.
+
See also \fI--trace-ascii\fP, \fI--trace-ids\fP and \fI--trace-time\fP. This option is mutually exclusive to \fI-v, --verbose\fP and \fI--trace-ascii\fP.
.IP "\-\-unix-socket <path>"
(HTTP) Connect through this Unix domain socket, instead of using the network.

@@ -5232,6 +5338,7 @@ Unix sockets support is provided.
.IP "zstd"
Automatic decompression (via zstd) of compressed files over HTTP is supported.
.RE
+
.IP

Example:
.nf
modified external/curl/docs/examples/Makefile.in
@@ -138,13 +138,14 @@ host_triplet = @host@
@USE_CPPFLAG_CURL_STATICLIB_TRUE@am__append_1 = -DCURL_STATICLIB
check_PROGRAMS = 10-at-a-time$(EXEEXT) altsvc$(EXEEXT) \
	anyauthput$(EXEEXT) certinfo$(EXEEXT) chkspeed$(EXEEXT) \
-
	cookie_interface$(EXEEXT) debug$(EXEEXT) \
-
	externalsocket$(EXEEXT) fileupload$(EXEEXT) \
-
	ftp-wildcard$(EXEEXT) ftpget$(EXEEXT) ftpgetinfo$(EXEEXT) \
-
	ftpgetresp$(EXEEXT) ftpsget$(EXEEXT) ftpupload$(EXEEXT) \
-
	ftpuploadfrommem$(EXEEXT) ftpuploadresume$(EXEEXT) \
-
	getinfo$(EXEEXT) getinmemory$(EXEEXT) getredirect$(EXEEXT) \
-
	getreferrer$(EXEEXT) headerapi$(EXEEXT) http-post$(EXEEXT) \
+
	connect-to$(EXEEXT) cookie_interface$(EXEEXT) debug$(EXEEXT) \
+
	default-scheme$(EXEEXT) externalsocket$(EXEEXT) \
+
	fileupload$(EXEEXT) ftp-wildcard$(EXEEXT) ftpget$(EXEEXT) \
+
	ftpgetinfo$(EXEEXT) ftpgetresp$(EXEEXT) ftpsget$(EXEEXT) \
+
	ftpupload$(EXEEXT) ftpuploadfrommem$(EXEEXT) \
+
	ftpuploadresume$(EXEEXT) getinfo$(EXEEXT) getinmemory$(EXEEXT) \
+
	getredirect$(EXEEXT) getreferrer$(EXEEXT) headerapi$(EXEEXT) \
+
	hsts-preload$(EXEEXT) http-options$(EXEEXT) http-post$(EXEEXT) \
	http2-download$(EXEEXT) http2-pushinmemory$(EXEEXT) \
	http2-serverpush$(EXEEXT) http2-upload$(EXEEXT) http3$(EXEEXT) \
	http3-present$(EXEEXT) httpcustomheader$(EXEEXT) \
@@ -154,15 +155,16 @@ check_PROGRAMS = 10-at-a-time$(EXEEXT) altsvc$(EXEEXT) \
	imap-examine$(EXEEXT) imap-fetch$(EXEEXT) imap-list$(EXEEXT) \
	imap-lsub$(EXEEXT) imap-multi$(EXEEXT) imap-noop$(EXEEXT) \
	imap-search$(EXEEXT) imap-ssl$(EXEEXT) imap-store$(EXEEXT) \
-
	imap-tls$(EXEEXT) multi-app$(EXEEXT) \
-
	multi-debugcallback$(EXEEXT) multi-double$(EXEEXT) \
-
	multi-formadd$(EXEEXT) multi-legacy$(EXEEXT) \
-
	multi-post$(EXEEXT) multi-single$(EXEEXT) parseurl$(EXEEXT) \
-
	persistent$(EXEEXT) pop3-authzid$(EXEEXT) pop3-dele$(EXEEXT) \
-
	pop3-list$(EXEEXT) pop3-multi$(EXEEXT) pop3-noop$(EXEEXT) \
-
	pop3-retr$(EXEEXT) pop3-ssl$(EXEEXT) pop3-stat$(EXEEXT) \
-
	pop3-tls$(EXEEXT) pop3-top$(EXEEXT) pop3-uidl$(EXEEXT) \
-
	post-callback$(EXEEXT) postinmemory$(EXEEXT) postit2$(EXEEXT) \
+
	imap-tls$(EXEEXT) ipv6$(EXEEXT) maxconnects$(EXEEXT) \
+
	multi-app$(EXEEXT) multi-debugcallback$(EXEEXT) \
+
	multi-double$(EXEEXT) multi-formadd$(EXEEXT) \
+
	multi-legacy$(EXEEXT) multi-post$(EXEEXT) \
+
	multi-single$(EXEEXT) parseurl$(EXEEXT) persistent$(EXEEXT) \
+
	pop3-authzid$(EXEEXT) pop3-dele$(EXEEXT) pop3-list$(EXEEXT) \
+
	pop3-multi$(EXEEXT) pop3-noop$(EXEEXT) pop3-retr$(EXEEXT) \
+
	pop3-ssl$(EXEEXT) pop3-stat$(EXEEXT) pop3-tls$(EXEEXT) \
+
	pop3-top$(EXEEXT) pop3-uidl$(EXEEXT) post-callback$(EXEEXT) \
+
	postinmemory$(EXEEXT) postit2$(EXEEXT) \
	postit2-formadd$(EXEEXT) progressfunc$(EXEEXT) \
	protofeats$(EXEEXT) resolve$(EXEEXT) sendrecv$(EXEEXT) \
	sepheaders$(EXEEXT) sftpget$(EXEEXT) sftpuploadresume$(EXEEXT) \
@@ -170,8 +172,9 @@ check_PROGRAMS = 10-at-a-time$(EXEEXT) altsvc$(EXEEXT) \
	simplepost$(EXEEXT) simplessl$(EXEEXT) smtp-authzid$(EXEEXT) \
	smtp-expn$(EXEEXT) smtp-mail$(EXEEXT) smtp-mime$(EXEEXT) \
	smtp-multi$(EXEEXT) smtp-ssl$(EXEEXT) smtp-tls$(EXEEXT) \
-
	smtp-vrfy$(EXEEXT) sslbackend$(EXEEXT) url2file$(EXEEXT) \
-
	urlapi$(EXEEXT)
+
	smtp-vrfy$(EXEEXT) sslbackend$(EXEEXT) unixsocket$(EXEEXT) \
+
	url2file$(EXEEXT) urlapi$(EXEEXT) websocket$(EXEEXT) \
+
	websocket-cb$(EXEEXT)
subdir = docs/examples
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \
@@ -246,6 +249,13 @@ chkspeed_LDADD = $(LDADD)
@USE_EXPLICIT_LIB_DEPS_FALSE@	$(LIBDIR)/libcurl.la
@USE_EXPLICIT_LIB_DEPS_TRUE@chkspeed_DEPENDENCIES =  \
@USE_EXPLICIT_LIB_DEPS_TRUE@	$(LIBDIR)/libcurl.la
+
connect_to_SOURCES = connect-to.c
+
connect_to_OBJECTS = connect-to.$(OBJEXT)
+
connect_to_LDADD = $(LDADD)
+
@USE_EXPLICIT_LIB_DEPS_FALSE@connect_to_DEPENDENCIES =  \
+
@USE_EXPLICIT_LIB_DEPS_FALSE@	$(LIBDIR)/libcurl.la
+
@USE_EXPLICIT_LIB_DEPS_TRUE@connect_to_DEPENDENCIES =  \
+
@USE_EXPLICIT_LIB_DEPS_TRUE@	$(LIBDIR)/libcurl.la
cookie_interface_SOURCES = cookie_interface.c
cookie_interface_OBJECTS = cookie_interface.$(OBJEXT)
cookie_interface_LDADD = $(LDADD)
@@ -259,6 +269,13 @@ debug_LDADD = $(LDADD)
@USE_EXPLICIT_LIB_DEPS_FALSE@debug_DEPENDENCIES =  \
@USE_EXPLICIT_LIB_DEPS_FALSE@	$(LIBDIR)/libcurl.la
@USE_EXPLICIT_LIB_DEPS_TRUE@debug_DEPENDENCIES = $(LIBDIR)/libcurl.la
+
default_scheme_SOURCES = default-scheme.c
+
default_scheme_OBJECTS = default-scheme.$(OBJEXT)
+
default_scheme_LDADD = $(LDADD)
+
@USE_EXPLICIT_LIB_DEPS_FALSE@default_scheme_DEPENDENCIES =  \
+
@USE_EXPLICIT_LIB_DEPS_FALSE@	$(LIBDIR)/libcurl.la
+
@USE_EXPLICIT_LIB_DEPS_TRUE@default_scheme_DEPENDENCIES =  \
+
@USE_EXPLICIT_LIB_DEPS_TRUE@	$(LIBDIR)/libcurl.la
externalsocket_SOURCES = externalsocket.c
externalsocket_OBJECTS = externalsocket.$(OBJEXT)
externalsocket_LDADD = $(LDADD)
@@ -364,6 +381,20 @@ headerapi_LDADD = $(LDADD)
@USE_EXPLICIT_LIB_DEPS_FALSE@	$(LIBDIR)/libcurl.la
@USE_EXPLICIT_LIB_DEPS_TRUE@headerapi_DEPENDENCIES =  \
@USE_EXPLICIT_LIB_DEPS_TRUE@	$(LIBDIR)/libcurl.la
+
hsts_preload_SOURCES = hsts-preload.c
+
hsts_preload_OBJECTS = hsts-preload.$(OBJEXT)
+
hsts_preload_LDADD = $(LDADD)
+
@USE_EXPLICIT_LIB_DEPS_FALSE@hsts_preload_DEPENDENCIES =  \
+
@USE_EXPLICIT_LIB_DEPS_FALSE@	$(LIBDIR)/libcurl.la
+
@USE_EXPLICIT_LIB_DEPS_TRUE@hsts_preload_DEPENDENCIES =  \
+
@USE_EXPLICIT_LIB_DEPS_TRUE@	$(LIBDIR)/libcurl.la
+
http_options_SOURCES = http-options.c
+
http_options_OBJECTS = http-options.$(OBJEXT)
+
http_options_LDADD = $(LDADD)
+
@USE_EXPLICIT_LIB_DEPS_FALSE@http_options_DEPENDENCIES =  \
+
@USE_EXPLICIT_LIB_DEPS_FALSE@	$(LIBDIR)/libcurl.la
+
@USE_EXPLICIT_LIB_DEPS_TRUE@http_options_DEPENDENCIES =  \
+
@USE_EXPLICIT_LIB_DEPS_TRUE@	$(LIBDIR)/libcurl.la
http_post_SOURCES = http-post.c
http_post_OBJECTS = http-post.$(OBJEXT)
http_post_LDADD = $(LDADD)
@@ -544,6 +575,18 @@ imap_tls_LDADD = $(LDADD)
@USE_EXPLICIT_LIB_DEPS_FALSE@	$(LIBDIR)/libcurl.la
@USE_EXPLICIT_LIB_DEPS_TRUE@imap_tls_DEPENDENCIES =  \
@USE_EXPLICIT_LIB_DEPS_TRUE@	$(LIBDIR)/libcurl.la
+
ipv6_SOURCES = ipv6.c
+
ipv6_OBJECTS = ipv6.$(OBJEXT)
+
ipv6_LDADD = $(LDADD)
+
@USE_EXPLICIT_LIB_DEPS_FALSE@ipv6_DEPENDENCIES = $(LIBDIR)/libcurl.la
+
@USE_EXPLICIT_LIB_DEPS_TRUE@ipv6_DEPENDENCIES = $(LIBDIR)/libcurl.la
+
maxconnects_SOURCES = maxconnects.c
+
maxconnects_OBJECTS = maxconnects.$(OBJEXT)
+
maxconnects_LDADD = $(LDADD)
+
@USE_EXPLICIT_LIB_DEPS_FALSE@maxconnects_DEPENDENCIES =  \
+
@USE_EXPLICIT_LIB_DEPS_FALSE@	$(LIBDIR)/libcurl.la
+
@USE_EXPLICIT_LIB_DEPS_TRUE@maxconnects_DEPENDENCIES =  \
+
@USE_EXPLICIT_LIB_DEPS_TRUE@	$(LIBDIR)/libcurl.la
multi_app_SOURCES = multi-app.c
multi_app_OBJECTS = multi-app.$(OBJEXT)
multi_app_LDADD = $(LDADD)
@@ -852,6 +895,13 @@ sslbackend_LDADD = $(LDADD)
@USE_EXPLICIT_LIB_DEPS_FALSE@	$(LIBDIR)/libcurl.la
@USE_EXPLICIT_LIB_DEPS_TRUE@sslbackend_DEPENDENCIES =  \
@USE_EXPLICIT_LIB_DEPS_TRUE@	$(LIBDIR)/libcurl.la
+
unixsocket_SOURCES = unixsocket.c
+
unixsocket_OBJECTS = unixsocket.$(OBJEXT)
+
unixsocket_LDADD = $(LDADD)
+
@USE_EXPLICIT_LIB_DEPS_FALSE@unixsocket_DEPENDENCIES =  \
+
@USE_EXPLICIT_LIB_DEPS_FALSE@	$(LIBDIR)/libcurl.la
+
@USE_EXPLICIT_LIB_DEPS_TRUE@unixsocket_DEPENDENCIES =  \
+
@USE_EXPLICIT_LIB_DEPS_TRUE@	$(LIBDIR)/libcurl.la
url2file_SOURCES = url2file.c
url2file_OBJECTS = url2file.$(OBJEXT)
url2file_LDADD = $(LDADD)
@@ -866,6 +916,20 @@ urlapi_LDADD = $(LDADD)
@USE_EXPLICIT_LIB_DEPS_FALSE@	$(LIBDIR)/libcurl.la
@USE_EXPLICIT_LIB_DEPS_TRUE@urlapi_DEPENDENCIES =  \
@USE_EXPLICIT_LIB_DEPS_TRUE@	$(LIBDIR)/libcurl.la
+
websocket_SOURCES = websocket.c
+
websocket_OBJECTS = websocket.$(OBJEXT)
+
websocket_LDADD = $(LDADD)
+
@USE_EXPLICIT_LIB_DEPS_FALSE@websocket_DEPENDENCIES =  \
+
@USE_EXPLICIT_LIB_DEPS_FALSE@	$(LIBDIR)/libcurl.la
+
@USE_EXPLICIT_LIB_DEPS_TRUE@websocket_DEPENDENCIES =  \
+
@USE_EXPLICIT_LIB_DEPS_TRUE@	$(LIBDIR)/libcurl.la
+
websocket_cb_SOURCES = websocket-cb.c
+
websocket_cb_OBJECTS = websocket-cb.$(OBJEXT)
+
websocket_cb_LDADD = $(LDADD)
+
@USE_EXPLICIT_LIB_DEPS_FALSE@websocket_cb_DEPENDENCIES =  \
+
@USE_EXPLICIT_LIB_DEPS_FALSE@	$(LIBDIR)/libcurl.la
+
@USE_EXPLICIT_LIB_DEPS_TRUE@websocket_cb_DEPENDENCIES =  \
+
@USE_EXPLICIT_LIB_DEPS_TRUE@	$(LIBDIR)/libcurl.la
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
@@ -884,7 +948,8 @@ am__maybe_remake_depfiles = depfiles
am__depfiles_remade = ./$(DEPDIR)/10-at-a-time.Po \
	./$(DEPDIR)/altsvc.Po ./$(DEPDIR)/anyauthput.Po \
	./$(DEPDIR)/certinfo.Po ./$(DEPDIR)/chkspeed.Po \
-
	./$(DEPDIR)/cookie_interface.Po ./$(DEPDIR)/debug.Po \
+
	./$(DEPDIR)/connect-to.Po ./$(DEPDIR)/cookie_interface.Po \
+
	./$(DEPDIR)/debug.Po ./$(DEPDIR)/default-scheme.Po \
	./$(DEPDIR)/externalsocket.Po ./$(DEPDIR)/fileupload.Po \
	./$(DEPDIR)/ftp-wildcard.Po ./$(DEPDIR)/ftpget.Po \
	./$(DEPDIR)/ftpgetinfo.Po ./$(DEPDIR)/ftpgetresp.Po \
@@ -892,7 +957,8 @@ am__depfiles_remade = ./$(DEPDIR)/10-at-a-time.Po \
	./$(DEPDIR)/ftpuploadfrommem.Po ./$(DEPDIR)/ftpuploadresume.Po \
	./$(DEPDIR)/getinfo.Po ./$(DEPDIR)/getinmemory.Po \
	./$(DEPDIR)/getredirect.Po ./$(DEPDIR)/getreferrer.Po \
-
	./$(DEPDIR)/headerapi.Po ./$(DEPDIR)/http-post.Po \
+
	./$(DEPDIR)/headerapi.Po ./$(DEPDIR)/hsts-preload.Po \
+
	./$(DEPDIR)/http-options.Po ./$(DEPDIR)/http-post.Po \
	./$(DEPDIR)/http2-download.Po \
	./$(DEPDIR)/http2-pushinmemory.Po \
	./$(DEPDIR)/http2-serverpush.Po ./$(DEPDIR)/http2-upload.Po \
@@ -907,6 +973,7 @@ am__depfiles_remade = ./$(DEPDIR)/10-at-a-time.Po \
	./$(DEPDIR)/imap-multi.Po ./$(DEPDIR)/imap-noop.Po \
	./$(DEPDIR)/imap-search.Po ./$(DEPDIR)/imap-ssl.Po \
	./$(DEPDIR)/imap-store.Po ./$(DEPDIR)/imap-tls.Po \
+
	./$(DEPDIR)/ipv6.Po ./$(DEPDIR)/maxconnects.Po \
	./$(DEPDIR)/multi-app.Po ./$(DEPDIR)/multi-debugcallback.Po \
	./$(DEPDIR)/multi-double.Po ./$(DEPDIR)/multi-formadd.Po \
	./$(DEPDIR)/multi-legacy.Po ./$(DEPDIR)/multi-post.Po \
@@ -929,8 +996,9 @@ am__depfiles_remade = ./$(DEPDIR)/10-at-a-time.Po \
	./$(DEPDIR)/smtp-mail.Po ./$(DEPDIR)/smtp-mime.Po \
	./$(DEPDIR)/smtp-multi.Po ./$(DEPDIR)/smtp-ssl.Po \
	./$(DEPDIR)/smtp-tls.Po ./$(DEPDIR)/smtp-vrfy.Po \
-
	./$(DEPDIR)/sslbackend.Po ./$(DEPDIR)/url2file.Po \
-
	./$(DEPDIR)/urlapi.Po
+
	./$(DEPDIR)/sslbackend.Po ./$(DEPDIR)/unixsocket.Po \
+
	./$(DEPDIR)/url2file.Po ./$(DEPDIR)/urlapi.Po \
+
	./$(DEPDIR)/websocket-cb.Po ./$(DEPDIR)/websocket.Po
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
@@ -951,49 +1019,55 @@ am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
am__v_CCLD_0 = @echo "  CCLD    " $@;
am__v_CCLD_1 = 
SOURCES = 10-at-a-time.c altsvc.c anyauthput.c certinfo.c chkspeed.c \
-
	cookie_interface.c debug.c externalsocket.c fileupload.c \
-
	ftp-wildcard.c ftpget.c ftpgetinfo.c ftpgetresp.c ftpsget.c \
-
	ftpupload.c ftpuploadfrommem.c ftpuploadresume.c getinfo.c \
-
	getinmemory.c getredirect.c getreferrer.c headerapi.c \
-
	http-post.c http2-download.c http2-pushinmemory.c \
-
	http2-serverpush.c http2-upload.c http3.c http3-present.c \
-
	httpcustomheader.c httpput.c httpput-postfields.c https.c \
-
	imap-append.c imap-authzid.c imap-copy.c imap-create.c \
-
	imap-delete.c imap-examine.c imap-fetch.c imap-list.c \
-
	imap-lsub.c imap-multi.c imap-noop.c imap-search.c imap-ssl.c \
-
	imap-store.c imap-tls.c multi-app.c multi-debugcallback.c \
-
	multi-double.c multi-formadd.c multi-legacy.c multi-post.c \
-
	multi-single.c parseurl.c persistent.c pop3-authzid.c \
-
	pop3-dele.c pop3-list.c pop3-multi.c pop3-noop.c pop3-retr.c \
-
	pop3-ssl.c pop3-stat.c pop3-tls.c pop3-top.c pop3-uidl.c \
-
	post-callback.c postinmemory.c postit2.c postit2-formadd.c \
-
	progressfunc.c protofeats.c resolve.c sendrecv.c sepheaders.c \
-
	sftpget.c sftpuploadresume.c shared-connection-cache.c \
-
	simple.c simplepost.c simplessl.c smtp-authzid.c smtp-expn.c \
+
	connect-to.c cookie_interface.c debug.c default-scheme.c \
+
	externalsocket.c fileupload.c ftp-wildcard.c ftpget.c \
+
	ftpgetinfo.c ftpgetresp.c ftpsget.c ftpupload.c \
+
	ftpuploadfrommem.c ftpuploadresume.c getinfo.c getinmemory.c \
+
	getredirect.c getreferrer.c headerapi.c hsts-preload.c \
+
	http-options.c http-post.c http2-download.c \
+
	http2-pushinmemory.c http2-serverpush.c http2-upload.c http3.c \
+
	http3-present.c httpcustomheader.c httpput.c \
+
	httpput-postfields.c https.c imap-append.c imap-authzid.c \
+
	imap-copy.c imap-create.c imap-delete.c imap-examine.c \
+
	imap-fetch.c imap-list.c imap-lsub.c imap-multi.c imap-noop.c \
+
	imap-search.c imap-ssl.c imap-store.c imap-tls.c ipv6.c \
+
	maxconnects.c multi-app.c multi-debugcallback.c multi-double.c \
+
	multi-formadd.c multi-legacy.c multi-post.c multi-single.c \
+
	parseurl.c persistent.c pop3-authzid.c pop3-dele.c pop3-list.c \
+
	pop3-multi.c pop3-noop.c pop3-retr.c pop3-ssl.c pop3-stat.c \
+
	pop3-tls.c pop3-top.c pop3-uidl.c post-callback.c \
+
	postinmemory.c postit2.c postit2-formadd.c progressfunc.c \
+
	protofeats.c resolve.c sendrecv.c sepheaders.c sftpget.c \
+
	sftpuploadresume.c shared-connection-cache.c simple.c \
+
	simplepost.c simplessl.c smtp-authzid.c smtp-expn.c \
	smtp-mail.c smtp-mime.c smtp-multi.c smtp-ssl.c smtp-tls.c \
-
	smtp-vrfy.c sslbackend.c url2file.c urlapi.c
+
	smtp-vrfy.c sslbackend.c unixsocket.c url2file.c urlapi.c \
+
	websocket.c websocket-cb.c
DIST_SOURCES = 10-at-a-time.c altsvc.c anyauthput.c certinfo.c \
-
	chkspeed.c cookie_interface.c debug.c externalsocket.c \
-
	fileupload.c ftp-wildcard.c ftpget.c ftpgetinfo.c ftpgetresp.c \
-
	ftpsget.c ftpupload.c ftpuploadfrommem.c ftpuploadresume.c \
-
	getinfo.c getinmemory.c getredirect.c getreferrer.c \
-
	headerapi.c http-post.c http2-download.c http2-pushinmemory.c \
-
	http2-serverpush.c http2-upload.c http3.c http3-present.c \
-
	httpcustomheader.c httpput.c httpput-postfields.c https.c \
-
	imap-append.c imap-authzid.c imap-copy.c imap-create.c \
-
	imap-delete.c imap-examine.c imap-fetch.c imap-list.c \
-
	imap-lsub.c imap-multi.c imap-noop.c imap-search.c imap-ssl.c \
-
	imap-store.c imap-tls.c multi-app.c multi-debugcallback.c \
-
	multi-double.c multi-formadd.c multi-legacy.c multi-post.c \
-
	multi-single.c parseurl.c persistent.c pop3-authzid.c \
-
	pop3-dele.c pop3-list.c pop3-multi.c pop3-noop.c pop3-retr.c \
-
	pop3-ssl.c pop3-stat.c pop3-tls.c pop3-top.c pop3-uidl.c \
-
	post-callback.c postinmemory.c postit2.c postit2-formadd.c \
-
	progressfunc.c protofeats.c resolve.c sendrecv.c sepheaders.c \
-
	sftpget.c sftpuploadresume.c shared-connection-cache.c \
-
	simple.c simplepost.c simplessl.c smtp-authzid.c smtp-expn.c \
+
	chkspeed.c connect-to.c cookie_interface.c debug.c \
+
	default-scheme.c externalsocket.c fileupload.c ftp-wildcard.c \
+
	ftpget.c ftpgetinfo.c ftpgetresp.c ftpsget.c ftpupload.c \
+
	ftpuploadfrommem.c ftpuploadresume.c getinfo.c getinmemory.c \
+
	getredirect.c getreferrer.c headerapi.c hsts-preload.c \
+
	http-options.c http-post.c http2-download.c \
+
	http2-pushinmemory.c http2-serverpush.c http2-upload.c http3.c \
+
	http3-present.c httpcustomheader.c httpput.c \
+
	httpput-postfields.c https.c imap-append.c imap-authzid.c \
+
	imap-copy.c imap-create.c imap-delete.c imap-examine.c \
+
	imap-fetch.c imap-list.c imap-lsub.c imap-multi.c imap-noop.c \
+
	imap-search.c imap-ssl.c imap-store.c imap-tls.c ipv6.c \
+
	maxconnects.c multi-app.c multi-debugcallback.c multi-double.c \
+
	multi-formadd.c multi-legacy.c multi-post.c multi-single.c \
+
	parseurl.c persistent.c pop3-authzid.c pop3-dele.c pop3-list.c \
+
	pop3-multi.c pop3-noop.c pop3-retr.c pop3-ssl.c pop3-stat.c \
+
	pop3-tls.c pop3-top.c pop3-uidl.c post-callback.c \
+
	postinmemory.c postit2.c postit2-formadd.c progressfunc.c \
+
	protofeats.c resolve.c sendrecv.c sepheaders.c sftpget.c \
+
	sftpuploadresume.c shared-connection-cache.c simple.c \
+
	simplepost.c simplessl.c smtp-authzid.c smtp-expn.c \
	smtp-mail.c smtp-mime.c smtp-multi.c smtp-ssl.c smtp-tls.c \
-
	smtp-vrfy.c sslbackend.c url2file.c urlapi.c
+
	smtp-vrfy.c sslbackend.c unixsocket.c url2file.c urlapi.c \
+
	websocket.c websocket-cb.c
am__can_run_installinfo = \
  case $$AM_UPDATE_INFO_DIR in \
    n|no|NO) false;; \
@@ -1172,7 +1246,7 @@ USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
-
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
+
USE_NGTCP2_CRYPTO_QUICTLS = @USE_NGTCP2_CRYPTO_QUICTLS@
USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
@@ -1281,7 +1355,6 @@ COMPLICATED_EXAMPLES = \
  multi-event.c \
  multi-uv.c \
  multithread.c \
-
  opensslthreadlock.c \
  sessioninfo.c \
  smooth-gtk-thread.c \
  synctime.c \
@@ -1358,6 +1431,10 @@ chkspeed$(EXEEXT): $(chkspeed_OBJECTS) $(chkspeed_DEPENDENCIES) $(EXTRA_chkspeed
	@rm -f chkspeed$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(chkspeed_OBJECTS) $(chkspeed_LDADD) $(LIBS)

+
connect-to$(EXEEXT): $(connect_to_OBJECTS) $(connect_to_DEPENDENCIES) $(EXTRA_connect_to_DEPENDENCIES) 
+
	@rm -f connect-to$(EXEEXT)
+
	$(AM_V_CCLD)$(LINK) $(connect_to_OBJECTS) $(connect_to_LDADD) $(LIBS)
+

cookie_interface$(EXEEXT): $(cookie_interface_OBJECTS) $(cookie_interface_DEPENDENCIES) $(EXTRA_cookie_interface_DEPENDENCIES) 
	@rm -f cookie_interface$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(cookie_interface_OBJECTS) $(cookie_interface_LDADD) $(LIBS)
@@ -1366,6 +1443,10 @@ debug$(EXEEXT): $(debug_OBJECTS) $(debug_DEPENDENCIES) $(EXTRA_debug_DEPENDENCIE
	@rm -f debug$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(debug_OBJECTS) $(debug_LDADD) $(LIBS)

+
default-scheme$(EXEEXT): $(default_scheme_OBJECTS) $(default_scheme_DEPENDENCIES) $(EXTRA_default_scheme_DEPENDENCIES) 
+
	@rm -f default-scheme$(EXEEXT)
+
	$(AM_V_CCLD)$(LINK) $(default_scheme_OBJECTS) $(default_scheme_LDADD) $(LIBS)
+

externalsocket$(EXEEXT): $(externalsocket_OBJECTS) $(externalsocket_DEPENDENCIES) $(EXTRA_externalsocket_DEPENDENCIES) 
	@rm -f externalsocket$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(externalsocket_OBJECTS) $(externalsocket_LDADD) $(LIBS)
@@ -1426,6 +1507,14 @@ headerapi$(EXEEXT): $(headerapi_OBJECTS) $(headerapi_DEPENDENCIES) $(EXTRA_heade
	@rm -f headerapi$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(headerapi_OBJECTS) $(headerapi_LDADD) $(LIBS)

+
hsts-preload$(EXEEXT): $(hsts_preload_OBJECTS) $(hsts_preload_DEPENDENCIES) $(EXTRA_hsts_preload_DEPENDENCIES) 
+
	@rm -f hsts-preload$(EXEEXT)
+
	$(AM_V_CCLD)$(LINK) $(hsts_preload_OBJECTS) $(hsts_preload_LDADD) $(LIBS)
+

+
http-options$(EXEEXT): $(http_options_OBJECTS) $(http_options_DEPENDENCIES) $(EXTRA_http_options_DEPENDENCIES) 
+
	@rm -f http-options$(EXEEXT)
+
	$(AM_V_CCLD)$(LINK) $(http_options_OBJECTS) $(http_options_LDADD) $(LIBS)
+

http-post$(EXEEXT): $(http_post_OBJECTS) $(http_post_DEPENDENCIES) $(EXTRA_http_post_DEPENDENCIES) 
	@rm -f http-post$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(http_post_OBJECTS) $(http_post_LDADD) $(LIBS)
@@ -1530,6 +1619,14 @@ imap-tls$(EXEEXT): $(imap_tls_OBJECTS) $(imap_tls_DEPENDENCIES) $(EXTRA_imap_tls
	@rm -f imap-tls$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(imap_tls_OBJECTS) $(imap_tls_LDADD) $(LIBS)

+
ipv6$(EXEEXT): $(ipv6_OBJECTS) $(ipv6_DEPENDENCIES) $(EXTRA_ipv6_DEPENDENCIES) 
+
	@rm -f ipv6$(EXEEXT)
+
	$(AM_V_CCLD)$(LINK) $(ipv6_OBJECTS) $(ipv6_LDADD) $(LIBS)
+

+
maxconnects$(EXEEXT): $(maxconnects_OBJECTS) $(maxconnects_DEPENDENCIES) $(EXTRA_maxconnects_DEPENDENCIES) 
+
	@rm -f maxconnects$(EXEEXT)
+
	$(AM_V_CCLD)$(LINK) $(maxconnects_OBJECTS) $(maxconnects_LDADD) $(LIBS)
+

multi-app$(EXEEXT): $(multi_app_OBJECTS) $(multi_app_DEPENDENCIES) $(EXTRA_multi_app_DEPENDENCIES) 
	@rm -f multi-app$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(multi_app_OBJECTS) $(multi_app_LDADD) $(LIBS)
@@ -1706,6 +1803,10 @@ sslbackend$(EXEEXT): $(sslbackend_OBJECTS) $(sslbackend_DEPENDENCIES) $(EXTRA_ss
	@rm -f sslbackend$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(sslbackend_OBJECTS) $(sslbackend_LDADD) $(LIBS)

+
unixsocket$(EXEEXT): $(unixsocket_OBJECTS) $(unixsocket_DEPENDENCIES) $(EXTRA_unixsocket_DEPENDENCIES) 
+
	@rm -f unixsocket$(EXEEXT)
+
	$(AM_V_CCLD)$(LINK) $(unixsocket_OBJECTS) $(unixsocket_LDADD) $(LIBS)
+

url2file$(EXEEXT): $(url2file_OBJECTS) $(url2file_DEPENDENCIES) $(EXTRA_url2file_DEPENDENCIES) 
	@rm -f url2file$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(url2file_OBJECTS) $(url2file_LDADD) $(LIBS)
@@ -1714,6 +1815,14 @@ urlapi$(EXEEXT): $(urlapi_OBJECTS) $(urlapi_DEPENDENCIES) $(EXTRA_urlapi_DEPENDE
	@rm -f urlapi$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(urlapi_OBJECTS) $(urlapi_LDADD) $(LIBS)

+
websocket$(EXEEXT): $(websocket_OBJECTS) $(websocket_DEPENDENCIES) $(EXTRA_websocket_DEPENDENCIES) 
+
	@rm -f websocket$(EXEEXT)
+
	$(AM_V_CCLD)$(LINK) $(websocket_OBJECTS) $(websocket_LDADD) $(LIBS)
+

+
websocket-cb$(EXEEXT): $(websocket_cb_OBJECTS) $(websocket_cb_DEPENDENCIES) $(EXTRA_websocket_cb_DEPENDENCIES) 
+
	@rm -f websocket-cb$(EXEEXT)
+
	$(AM_V_CCLD)$(LINK) $(websocket_cb_OBJECTS) $(websocket_cb_LDADD) $(LIBS)
+

mostlyclean-compile:
	-rm -f *.$(OBJEXT)

@@ -1725,8 +1834,10 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/anyauthput.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/certinfo.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chkspeed.Po@am__quote@ # am--include-marker
+
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/connect-to.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cookie_interface.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/debug.Po@am__quote@ # am--include-marker
+
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/default-scheme.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/externalsocket.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fileupload.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftp-wildcard.Po@am__quote@ # am--include-marker
@@ -1742,6 +1853,8 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getredirect.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getreferrer.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/headerapi.Po@am__quote@ # am--include-marker
+
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hsts-preload.Po@am__quote@ # am--include-marker
+
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http-options.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http-post.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http2-download.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http2-pushinmemory.Po@am__quote@ # am--include-marker
@@ -1768,6 +1881,8 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/imap-ssl.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/imap-store.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/imap-tls.Po@am__quote@ # am--include-marker
+
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ipv6.Po@am__quote@ # am--include-marker
+
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/maxconnects.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multi-app.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multi-debugcallback.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multi-double.Po@am__quote@ # am--include-marker
@@ -1812,8 +1927,11 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smtp-tls.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smtp-vrfy.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sslbackend.Po@am__quote@ # am--include-marker
+
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unixsocket.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/url2file.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/urlapi.Po@am__quote@ # am--include-marker
+
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/websocket-cb.Po@am__quote@ # am--include-marker
+
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/websocket.Po@am__quote@ # am--include-marker

$(am__depfiles_remade):
	@$(MKDIR_P) $(@D)
@@ -1981,8 +2099,10 @@ distclean: distclean-am
	-rm -f ./$(DEPDIR)/anyauthput.Po
	-rm -f ./$(DEPDIR)/certinfo.Po
	-rm -f ./$(DEPDIR)/chkspeed.Po
+
	-rm -f ./$(DEPDIR)/connect-to.Po
	-rm -f ./$(DEPDIR)/cookie_interface.Po
	-rm -f ./$(DEPDIR)/debug.Po
+
	-rm -f ./$(DEPDIR)/default-scheme.Po
	-rm -f ./$(DEPDIR)/externalsocket.Po
	-rm -f ./$(DEPDIR)/fileupload.Po
	-rm -f ./$(DEPDIR)/ftp-wildcard.Po
@@ -1998,6 +2118,8 @@ distclean: distclean-am
	-rm -f ./$(DEPDIR)/getredirect.Po
	-rm -f ./$(DEPDIR)/getreferrer.Po
	-rm -f ./$(DEPDIR)/headerapi.Po
+
	-rm -f ./$(DEPDIR)/hsts-preload.Po
+
	-rm -f ./$(DEPDIR)/http-options.Po
	-rm -f ./$(DEPDIR)/http-post.Po
	-rm -f ./$(DEPDIR)/http2-download.Po
	-rm -f ./$(DEPDIR)/http2-pushinmemory.Po
@@ -2024,6 +2146,8 @@ distclean: distclean-am
	-rm -f ./$(DEPDIR)/imap-ssl.Po
	-rm -f ./$(DEPDIR)/imap-store.Po
	-rm -f ./$(DEPDIR)/imap-tls.Po
+
	-rm -f ./$(DEPDIR)/ipv6.Po
+
	-rm -f ./$(DEPDIR)/maxconnects.Po
	-rm -f ./$(DEPDIR)/multi-app.Po
	-rm -f ./$(DEPDIR)/multi-debugcallback.Po
	-rm -f ./$(DEPDIR)/multi-double.Po
@@ -2068,8 +2192,11 @@ distclean: distclean-am
	-rm -f ./$(DEPDIR)/smtp-tls.Po
	-rm -f ./$(DEPDIR)/smtp-vrfy.Po
	-rm -f ./$(DEPDIR)/sslbackend.Po
+
	-rm -f ./$(DEPDIR)/unixsocket.Po
	-rm -f ./$(DEPDIR)/url2file.Po
	-rm -f ./$(DEPDIR)/urlapi.Po
+
	-rm -f ./$(DEPDIR)/websocket-cb.Po
+
	-rm -f ./$(DEPDIR)/websocket.Po
	-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
	distclean-tags
@@ -2120,8 +2247,10 @@ maintainer-clean: maintainer-clean-am
	-rm -f ./$(DEPDIR)/anyauthput.Po
	-rm -f ./$(DEPDIR)/certinfo.Po
	-rm -f ./$(DEPDIR)/chkspeed.Po
+
	-rm -f ./$(DEPDIR)/connect-to.Po
	-rm -f ./$(DEPDIR)/cookie_interface.Po
	-rm -f ./$(DEPDIR)/debug.Po
+
	-rm -f ./$(DEPDIR)/default-scheme.Po
	-rm -f ./$(DEPDIR)/externalsocket.Po
	-rm -f ./$(DEPDIR)/fileupload.Po
	-rm -f ./$(DEPDIR)/ftp-wildcard.Po
@@ -2137,6 +2266,8 @@ maintainer-clean: maintainer-clean-am
	-rm -f ./$(DEPDIR)/getredirect.Po
	-rm -f ./$(DEPDIR)/getreferrer.Po
	-rm -f ./$(DEPDIR)/headerapi.Po
+
	-rm -f ./$(DEPDIR)/hsts-preload.Po
+
	-rm -f ./$(DEPDIR)/http-options.Po
	-rm -f ./$(DEPDIR)/http-post.Po
	-rm -f ./$(DEPDIR)/http2-download.Po
	-rm -f ./$(DEPDIR)/http2-pushinmemory.Po
@@ -2163,6 +2294,8 @@ maintainer-clean: maintainer-clean-am
	-rm -f ./$(DEPDIR)/imap-ssl.Po
	-rm -f ./$(DEPDIR)/imap-store.Po
	-rm -f ./$(DEPDIR)/imap-tls.Po
+
	-rm -f ./$(DEPDIR)/ipv6.Po
+
	-rm -f ./$(DEPDIR)/maxconnects.Po
	-rm -f ./$(DEPDIR)/multi-app.Po
	-rm -f ./$(DEPDIR)/multi-debugcallback.Po
	-rm -f ./$(DEPDIR)/multi-double.Po
@@ -2207,8 +2340,11 @@ maintainer-clean: maintainer-clean-am
	-rm -f ./$(DEPDIR)/smtp-tls.Po
	-rm -f ./$(DEPDIR)/smtp-vrfy.Po
	-rm -f ./$(DEPDIR)/sslbackend.Po
+
	-rm -f ./$(DEPDIR)/unixsocket.Po
	-rm -f ./$(DEPDIR)/url2file.Po
	-rm -f ./$(DEPDIR)/urlapi.Po
+
	-rm -f ./$(DEPDIR)/websocket-cb.Po
+
	-rm -f ./$(DEPDIR)/websocket.Po
	-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic

modified external/curl/docs/examples/Makefile.inc
@@ -29,8 +29,10 @@ check_PROGRAMS = \
  anyauthput \
  certinfo \
  chkspeed \
+
  connect-to \
  cookie_interface \
  debug \
+
  default-scheme \
  externalsocket \
  fileupload \
  ftp-wildcard \
@@ -46,6 +48,8 @@ check_PROGRAMS = \
  getredirect \
  getreferrer \
  headerapi \
+
  hsts-preload \
+
  http-options \
  http-post \
  http2-download \
  http2-pushinmemory \
@@ -72,6 +76,8 @@ check_PROGRAMS = \
  imap-ssl \
  imap-store \
  imap-tls \
+
  ipv6 \
+
  maxconnects  \
  multi-app \
  multi-debugcallback \
  multi-double \
@@ -116,8 +122,11 @@ check_PROGRAMS = \
  smtp-tls \
  smtp-vrfy \
  sslbackend \
+
  unixsocket \
  url2file \
-
  urlapi
+
  urlapi \
+
  websocket \
+
  websocket-cb

# These examples require external dependencies that may not be commonly
# available on POSIX systems, so don't bother attempting to compile them here.
@@ -134,7 +143,6 @@ COMPLICATED_EXAMPLES = \
  multi-event.c \
  multi-uv.c \
  multithread.c \
-
  opensslthreadlock.c \
  sessioninfo.c \
  smooth-gtk-thread.c \
  synctime.c \
added external/curl/docs/examples/connect-to.c
@@ -0,0 +1,70 @@
+
/***************************************************************************
+
 *                                  _   _ ____  _
+
 *  Project                     ___| | | |  _ \| |
+
 *                             / __| | | | |_) | |
+
 *                            | (__| |_| |  _ <| |___
+
 *                             \___|\___/|_| \_\_____|
+
 *
+
 * Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
+
 *
+
 * This software is licensed as described in the file COPYING, which
+
 * you should have received as part of this distribution. The terms
+
 * are also available at https://curl.se/docs/copyright.html.
+
 *
+
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+
 * copies of the Software, and permit persons to whom the Software is
+
 * furnished to do so, under the terms of the COPYING file.
+
 *
+
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+
 * KIND, either express or implied.
+
 *
+
 * SPDX-License-Identifier: curl
+
 *
+
 ***************************************************************************/
+
/* <DESC>
+
 * Use CURLOPT_CONNECT_TO to connect to "wrong" host name
+
 * </DESC>
+
 */
+
#include <stdio.h>
+
#include <curl/curl.h>
+

+
int main(void)
+
{
+
  CURL *curl;
+
  CURLcode res = CURLE_OK;
+

+
  /*
+
    Each single string should be written using the format
+
    HOST:PORT:CONNECT-TO-HOST:CONNECT-TO-PORT where HOST is the host of the
+
    request, PORT is the port of the request, CONNECT-TO-HOST is the host name
+
    to connect to, and CONNECT-TO-PORT is the port to connect to.
+
   */
+
  /* instead of curl.se:443, it will resolve and use example.com:443 but in
+
     other aspects work as if it still is curl.se */
+
  struct curl_slist *host = curl_slist_append(NULL,
+
                                              "curl.se:443:example.com:443");
+

+
  curl = curl_easy_init();
+
  if(curl) {
+
    curl_easy_setopt(curl, CURLOPT_CONNECT_TO, host);
+
    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
+
    curl_easy_setopt(curl, CURLOPT_URL, "https://curl.se/");
+

+
    /* since this connects to the wrong host, checking the host name in the
+
       server certificate will fail, so unless we disable the check libcurl
+
       returns CURLE_PEER_FAILED_VERIFICATION */
+
    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
+

+
    /* Letting the wrong host name in the certficate be okay, the transfer
+
       goes through but will (most likely) cause a 404 or similar because it
+
       sends an unknown name in the Host: header field */
+
    res = curl_easy_perform(curl);
+

+
    /* always cleanup */
+
    curl_easy_cleanup(curl);
+
  }
+

+
  curl_slist_free_all(host);
+

+
  return (int)res;
+
}
modified external/curl/docs/examples/crawler.c
@@ -95,8 +95,17 @@ CURL *make_handle(char *url)
  curl_easy_setopt(handle, CURLOPT_ACCEPT_ENCODING, "");
  curl_easy_setopt(handle, CURLOPT_TIMEOUT, 5L);
  curl_easy_setopt(handle, CURLOPT_FOLLOWLOCATION, 1L);
+
  /* only allow redirects to HTTP and HTTPS URLs */
+
  curl_easy_setopt(handle, CURLOPT_REDIR_PROTOCOLS_STR, "http,https");
+
  curl_easy_setopt(handle, CURLOPT_AUTOREFERER, 1L);
  curl_easy_setopt(handle, CURLOPT_MAXREDIRS, 10L);
-
  curl_easy_setopt(handle, CURLOPT_CONNECTTIMEOUT, 2L);
+
  /* each transfer needs to be done within 20 seconds! */
+
  curl_easy_setopt(handle, CURLOPT_TIMEOUT_MS, 20000L);
+
  /* connect fast or fail */
+
  curl_easy_setopt(handle, CURLOPT_CONNECTTIMEOUT_MS, 2000L);
+
  /* skip files larger than a gigabyte */
+
  curl_easy_setopt(handle, CURLOPT_MAXFILESIZE_LARGE,
+
                   (curl_off_t)1024*1024*1024);
  curl_easy_setopt(handle, CURLOPT_COOKIEFILE, "");
  curl_easy_setopt(handle, CURLOPT_FILETIME, 1L);
  curl_easy_setopt(handle, CURLOPT_USERAGENT, "mini crawler");
added external/curl/docs/examples/default-scheme.c
@@ -0,0 +1,57 @@
+
/***************************************************************************
+
 *                                  _   _ ____  _
+
 *  Project                     ___| | | |  _ \| |
+
 *                             / __| | | | |_) | |
+
 *                            | (__| |_| |  _ <| |___
+
 *                             \___|\___/|_| \_\_____|
+
 *
+
 * Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
+
 *
+
 * This software is licensed as described in the file COPYING, which
+
 * you should have received as part of this distribution. The terms
+
 * are also available at https://curl.se/docs/copyright.html.
+
 *
+
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+
 * copies of the Software, and permit persons to whom the Software is
+
 * furnished to do so, under the terms of the COPYING file.
+
 *
+
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+
 * KIND, either express or implied.
+
 *
+
 * SPDX-License-Identifier: curl
+
 *
+
 ***************************************************************************/
+
/* <DESC>
+
 * Change default scheme when none is provided in the URL
+
 * </DESC>
+
 */
+
#include <stdio.h>
+
#include <curl/curl.h>
+

+
int main(void)
+
{
+
  CURL *curl;
+
  CURLcode res;
+

+
  curl = curl_easy_init();
+
  if(curl) {
+
    curl_easy_setopt(curl, CURLOPT_URL, "example.com");
+

+
    /* Change the default protocol (scheme) for schemeless URLs from plain
+
       "http" to use a secure one instead. */
+
    curl_easy_setopt(curl, CURLOPT_DEFAULT_PROTOCOL, "https");
+

+
    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
+

+
    /* Perform the request, res will get the return code */
+
    res = curl_easy_perform(curl);
+
    /* Check for errors */
+
    if(res != CURLE_OK)
+
      fprintf(stderr, "curl_easy_perform() failed: %s\n",
+
              curl_easy_strerror(res));
+

+
    /* always cleanup */
+
    curl_easy_cleanup(curl);
+
  }
+
  return 0;
+
}
modified external/curl/docs/examples/ftpuploadresume.c
@@ -22,7 +22,7 @@
 *
 ***************************************************************************/
/* <DESC>
-
 * Upload to FTP, resuming failed transfers.
+
 * Upload to FTP, resuming failed transfers. Active mode.
 * </DESC>
 */

@@ -96,8 +96,12 @@ static int upload(CURL *curlhandle, const char *remotepath,
  curl_easy_setopt(curlhandle, CURLOPT_READFUNCTION, readfunc);
  curl_easy_setopt(curlhandle, CURLOPT_READDATA, f);

-
  /* disable passive mode */
+
  /* enable active mode */
  curl_easy_setopt(curlhandle, CURLOPT_FTPPORT, "-");
+

+
  /* allow the server no more than 7 seconds to connect back */
+
  curl_easy_setopt(curlhandle, CURLOPT_ACCEPTTIMEOUT_MS, 7000L);
+

  curl_easy_setopt(curlhandle, CURLOPT_FTP_CREATE_MISSING_DIRS, 1L);

  curl_easy_setopt(curlhandle, CURLOPT_VERBOSE, 1L);
added external/curl/docs/examples/hsts-preload.c
@@ -0,0 +1,118 @@
+
/***************************************************************************
+
 *                                  _   _ ____  _
+
 *  Project                     ___| | | |  _ \| |
+
 *                             / __| | | | |_) | |
+
 *                            | (__| |_| |  _ <| |___
+
 *                             \___|\___/|_| \_\_____|
+
 *
+
 * Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
+
 *
+
 * This software is licensed as described in the file COPYING, which
+
 * you should have received as part of this distribution. The terms
+
 * are also available at https://curl.se/docs/copyright.html.
+
 *
+
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+
 * copies of the Software, and permit persons to whom the Software is
+
 * furnished to do so, under the terms of the COPYING file.
+
 *
+
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+
 * KIND, either express or implied.
+
 *
+
 * SPDX-License-Identifier: curl
+
 *
+
 ***************************************************************************/
+
/* <DESC>
+
 * Preload domains to HSTS
+
 * </DESC>
+
 */
+
#include <stdio.h>
+
#include <string.h>
+
#include <curl/curl.h>
+

+
struct entry {
+
  const char *name;
+
  const char *exp;
+
};
+

+
static const struct entry preload_hosts[] = {
+
  { "example.com", "20370320 01:02:03" },
+
  { "curl.se",     "20370320 03:02:01" },
+
  { NULL, NULL } /* end of list marker */
+
};
+

+
struct state {
+
  int index;
+
};
+

+
/* "read" is from the point of the library, it wants data from us. One domain
+
   entry per invoke. */
+
static CURLSTScode hstsread(CURL *easy, struct curl_hstsentry *e,
+
                            void *userp)
+
{
+
  const char *host;
+
  const char *expire;
+
  struct state *s = (struct state *)userp;
+
  (void)easy;
+
  host = preload_hosts[s->index].name;
+
  expire = preload_hosts[s->index++].exp;
+

+
  if(host && (strlen(host) < e->namelen)) {
+
    strcpy(e->name, host);
+
    e->includeSubDomains = 0;
+
    strcpy(e->expire, expire);
+
    fprintf(stderr, "HSTS preload '%s' until '%s'\n", host, expire);
+
  }
+
  else
+
    return CURLSTS_DONE;
+
  return CURLSTS_OK;
+
}
+

+
static CURLSTScode hstswrite(CURL *easy, struct curl_hstsentry *e,
+
                             struct curl_index *i, void *userp)
+
{
+
  (void)easy;
+
  (void)userp; /* we have no custom input */
+
  printf("[%u/%u] %s %s\n", (unsigned int)i->index, (unsigned int)i->total,
+
         e->name, e->expire);
+
  return CURLSTS_OK;
+
}
+

+
int main(void)
+
{
+
  CURL *curl;
+
  CURLcode res;
+

+
  curl = curl_easy_init();
+
  if(curl) {
+
    struct state st = {0};
+

+
    /* enable HSTS for this handle */
+
    curl_easy_setopt(curl, CURLOPT_HSTS_CTRL, (long)CURLHSTS_ENABLE);
+

+
    /* function to call at first to populate the cache before the transfer */
+
    curl_easy_setopt(curl, CURLOPT_HSTSREADFUNCTION, hstsread);
+
    curl_easy_setopt(curl, CURLOPT_HSTSREADDATA, &st);
+

+
    /* function to call after transfer to store the new state of the HSTS
+
       cache */
+
    curl_easy_setopt(curl, CURLOPT_HSTSWRITEFUNCTION, hstswrite);
+
    curl_easy_setopt(curl, CURLOPT_HSTSWRITEDATA, NULL);
+

+
    /* use the domain with HTTP but due to the preload, it should do the
+
       transfer using HTTPS */
+
    curl_easy_setopt(curl, CURLOPT_URL, "http://curl.se");
+

+
    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
+

+
    /* Perform the request, res will get the return code */
+
    res = curl_easy_perform(curl);
+
    /* Check for errors */
+
    if(res != CURLE_OK)
+
      fprintf(stderr, "curl_easy_perform() failed: %s\n",
+
              curl_easy_strerror(res));
+

+
    /* always cleanup */
+
    curl_easy_cleanup(curl);
+
  }
+
  return 0;
+
}
added external/curl/docs/examples/http-options.c
@@ -0,0 +1,59 @@
+
/***************************************************************************
+
 *                                  _   _ ____  _
+
 *  Project                     ___| | | |  _ \| |
+
 *                             / __| | | | |_) | |
+
 *                            | (__| |_| |  _ <| |___
+
 *                             \___|\___/|_| \_\_____|
+
 *
+
 * Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
+
 *
+
 * This software is licensed as described in the file COPYING, which
+
 * you should have received as part of this distribution. The terms
+
 * are also available at https://curl.se/docs/copyright.html.
+
 *
+
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+
 * copies of the Software, and permit persons to whom the Software is
+
 * furnished to do so, under the terms of the COPYING file.
+
 *
+
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+
 * KIND, either express or implied.
+
 *
+
 * SPDX-License-Identifier: curl
+
 *
+
 ***************************************************************************/
+
/* <DESC>
+
 * Issue an HTTP 'OPTIONS *' request
+
 * </DESC>
+
 */
+
#include <stdio.h>
+
#include <curl/curl.h>
+

+
int main(void)
+
{
+
  CURL *curl;
+
  CURLcode res;
+

+
  curl = curl_easy_init();
+
  if(curl) {
+
    curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
+
    curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "OPTIONS");
+

+
    /* issue an OPTIONS * request (no leading slash) */
+
    curl_easy_setopt(curl, CURLOPT_REQUEST_TARGET, "*");
+

+
    /* if this operation fails, allow risking a memory leak and do quick exit
+
       from libcurl as this will exit() anyway */
+
    curl_easy_setopt(curl, CURLOPT_QUICK_EXIT, 1L);
+

+
    /* Perform the request, res will get the return code */
+
    res = curl_easy_perform(curl);
+
    /* Check for errors */
+
    if(res != CURLE_OK)
+
      fprintf(stderr, "curl_easy_perform() failed: %s\n",
+
              curl_easy_strerror(res));
+

+
    /* always cleanup */
+
    curl_easy_cleanup(curl);
+
  }
+
  return 0;
+
}
modified external/curl/docs/examples/http2-download.c
@@ -170,13 +170,12 @@ static void setup(struct transfer *t, int num)
  curl_easy_setopt(hnd, CURLOPT_DEBUGFUNCTION, my_trace);
  curl_easy_setopt(hnd, CURLOPT_DEBUGDATA, t);

+
  /* enlarge the receive buffer for potentially higher transfer speeds */
+
  curl_easy_setopt(hnd, CURLOPT_BUFFERSIZE, 100000L);
+

  /* HTTP/2 please */
  curl_easy_setopt(hnd, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0);

-
  /* we use a self-signed test server, skip verification during debugging */
-
  curl_easy_setopt(hnd, CURLOPT_SSL_VERIFYPEER, 0L);
-
  curl_easy_setopt(hnd, CURLOPT_SSL_VERIFYHOST, 0L);
-

#if (CURLPIPE_MULTIPLEX > 0)
  /* wait for pipe connection to confirm */
  curl_easy_setopt(hnd, CURLOPT_PIPEWAIT, 1L);
modified external/curl/docs/examples/https.c
@@ -63,6 +63,9 @@ int main(void)
    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
#endif

+
    /* cache the CA cert bundle in memory for a week */
+
    curl_easy_setopt(curl, CURLOPT_CA_CACHE_TIMEOUT, 604800L);
+

    /* Perform the request, res will get the return code */
    res = curl_easy_perform(curl);
    /* Check for errors */
modified external/curl/docs/examples/imap-append.c
@@ -49,11 +49,11 @@ static const char *payload_text =
  "Message-ID: "
  "<dcd7cb36-11db-487a-9f3a-e652a9458efd@rfcpedant.example.org>\r\n"
  "Subject: IMAP example message\r\n"
-
  "\r\n" /* empty line to divide headers from body, see RFC5322 */
+
  "\r\n" /* empty line to divide headers from body, see RFC 5322 */
  "The body of the message starts here.\r\n"
  "\r\n"
  "It could be a lot of lines, could be MIME encoded, whatever.\r\n"
-
  "Check RFC5322.\r\n";
+
  "Check RFC 5322.\r\n";

struct upload_status {
  size_t bytes_read;
@@ -99,10 +99,8 @@ int main(void)
    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");

-
    /* This will create a new message 100. Note that you should perform an
-
     * EXAMINE command to obtain the UID of the next message to create and a
-
     * SELECT to ensure you are creating the message in the OUTBOX. */
-
    curl_easy_setopt(curl, CURLOPT_URL, "imap://imap.example.com/100");
+
    /* This will create a new message in folder "Sent". */
+
    curl_easy_setopt(curl, CURLOPT_URL, "imap://imap.example.com/Sent");

    /* In this case, we are using a callback function to specify the data. You
     * could just use the CURLOPT_READDATA option to specify a FILE pointer to
added external/curl/docs/examples/ipv6.c
@@ -0,0 +1,63 @@
+
/***************************************************************************
+
 *                                  _   _ ____  _
+
 *  Project                     ___| | | |  _ \| |
+
 *                             / __| | | | |_) | |
+
 *                            | (__| |_| |  _ <| |___
+
 *                             \___|\___/|_| \_\_____|
+
 *
+
 * Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
+
 *
+
 * This software is licensed as described in the file COPYING, which
+
 * you should have received as part of this distribution. The terms
+
 * are also available at https://curl.se/docs/copyright.html.
+
 *
+
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+
 * copies of the Software, and permit persons to whom the Software is
+
 * furnished to do so, under the terms of the COPYING file.
+
 *
+
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+
 * KIND, either express or implied.
+
 *
+
 * SPDX-License-Identifier: curl
+
 *
+
 ***************************************************************************/
+
/* <DESC>
+
 * HTTP GET to an IPv6 address with specific scope
+
 * </DESC>
+
 */
+
#include <stdio.h>
+
#include <curl/curl.h>
+

+
#ifndef WIN32
+
#include <net/if.h>
+
#endif
+

+
int main(void)
+
{
+
#ifndef WIN32
+
  /* Windows users need to find how to use if_nametoindex() */
+
  CURL *curl;
+
  CURLcode res;
+

+
  curl = curl_easy_init();
+
  if(curl) {
+
    long my_scope_id;
+
    curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
+

+
    my_scope_id = if_nametoindex("eth0");
+
    curl_easy_setopt(curl, CURLOPT_ADDRESS_SCOPE, my_scope_id);
+

+
    /* Perform the request, res will get the return code */
+
    res = curl_easy_perform(curl);
+
    /* Check for errors */
+
    if(res != CURLE_OK)
+
      fprintf(stderr, "curl_easy_perform() failed: %s\n",
+
              curl_easy_strerror(res));
+

+
    /* always cleanup */
+
    curl_easy_cleanup(curl);
+
  }
+
#endif
+
  return 0;
+
}
+

added external/curl/docs/examples/maxconnects.c
@@ -0,0 +1,66 @@
+
/***************************************************************************
+
 *                                  _   _ ____  _
+
 *  Project                     ___| | | |  _ \| |
+
 *                             / __| | | | |_) | |
+
 *                            | (__| |_| |  _ <| |___
+
 *                             \___|\___/|_| \_\_____|
+
 *
+
 * Copyright (C) James Fuller, <jim@webcomposite.com>, et al.
+
 *
+
 * This software is licensed as described in the file COPYING, which
+
 * you should have received as part of this distribution. The terms
+
 * are also available at https://curl.se/docs/copyright.html.
+
 *
+
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+
 * copies of the Software, and permit persons to whom the Software is
+
 * furnished to do so, under the terms of the COPYING file.
+
 *
+
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+
 * KIND, either express or implied.
+
 *
+
 * SPDX-License-Identifier: curl
+
 *
+
 ***************************************************************************/
+
/* <DESC>
+
 * Set maximum number of persistent connections to 1.
+
 * </DESC>
+
 */
+
#include <stdio.h>
+
#include <curl/curl.h>
+

+
int main(void)
+
{
+
  CURL *curl;
+
  CURLcode res;
+

+
  curl = curl_easy_init();
+
  if(curl) {
+
    const char *urls[] = { "https://example.com",
+
      "https://curl.se",
+
      "https://www.example/",
+
      NULL /* end of list */
+
    };
+
    int i = 0;
+

+
    /* Change the maximum number of persistent connection   */
+
    curl_easy_setopt(curl, CURLOPT_MAXCONNECTS, 1L);
+

+
    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
+

+
    /* loop over the URLs */
+
    while(urls[i]) {
+
      curl_easy_setopt(curl, CURLOPT_URL, urls[i]);
+

+
      /* Perform the request, res will get the return code */
+
      res = curl_easy_perform(curl);
+
      /* Check for errors */
+
      if(res != CURLE_OK)
+
        fprintf(stderr, "curl_easy_perform() failed: %s\n",
+
                curl_easy_strerror(res));
+
      i++;
+
    }
+
    /* always cleanup */
+
    curl_easy_cleanup(curl);
+
  }
+
  return 0;
+
}
modified external/curl/docs/examples/multi-debugcallback.c
@@ -36,13 +36,10 @@
/* curl stuff */
#include <curl/curl.h>

-
typedef char bool;
#define TRUE 1

-
static
-
void dump(const char *text,
-
          FILE *stream, unsigned char *ptr, size_t size,
-
          bool nohex)
+
static void dump(const char *text, FILE *stream, unsigned char *ptr,
+
                 size_t size, char nohex)
{
  size_t i;
  size_t c;
deleted external/curl/docs/examples/opensslthreadlock.c
@@ -1,97 +0,0 @@
-
/***************************************************************************
-
 *                                  _   _ ____  _
-
 *  Project                     ___| | | |  _ \| |
-
 *                             / __| | | | |_) | |
-
 *                            | (__| |_| |  _ <| |___
-
 *                             \___|\___/|_| \_\_____|
-
 *
-
 * Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
-
 *
-
 * This software is licensed as described in the file COPYING, which
-
 * you should have received as part of this distribution. The terms
-
 * are also available at https://curl.se/docs/copyright.html.
-
 *
-
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
-
 * copies of the Software, and permit persons to whom the Software is
-
 * furnished to do so, under the terms of the COPYING file.
-
 *
-
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
-
 * KIND, either express or implied.
-
 *
-
 * SPDX-License-Identifier: curl
-
 *
-
 ***************************************************************************/
-
/* <DESC>
-
 * one way to set the necessary OpenSSL locking callbacks if you want to do
-
 * multi-threaded transfers with HTTPS/FTPS with libcurl built to use OpenSSL.
-
 * </DESC>
-
 */
-
/*
-
 * This is not a complete stand-alone example.
-
 *
-
 * Author: Jeremy Brown
-
 */
-

-
#include <stdio.h>
-
#include <pthread.h>
-
#include <openssl/err.h>
-

-
#define MUTEX_TYPE       pthread_mutex_t
-
#define MUTEX_SETUP(x)   pthread_mutex_init(&(x), NULL)
-
#define MUTEX_CLEANUP(x) pthread_mutex_destroy(&(x))
-
#define MUTEX_LOCK(x)    pthread_mutex_lock(&(x))
-
#define MUTEX_UNLOCK(x)  pthread_mutex_unlock(&(x))
-
#define THREAD_ID        pthread_self()
-

-

-
void handle_error(const char *file, int lineno, const char *msg)
-
{
-
  fprintf(stderr, "** %s:%d %s\n", file, lineno, msg);
-
  ERR_print_errors_fp(stderr);
-
  /* exit(-1); */
-
}
-

-
/* This array will store all of the mutexes available to OpenSSL. */
-
static MUTEX_TYPE *mutex_buf = NULL;
-

-
static void locking_function(int mode, int n, const char *file, int line)
-
{
-
  if(mode & CRYPTO_LOCK)
-
    MUTEX_LOCK(mutex_buf[n]);
-
  else
-
    MUTEX_UNLOCK(mutex_buf[n]);
-
}
-

-
static unsigned long id_function(void)
-
{
-
  return ((unsigned long)THREAD_ID);
-
}
-

-
int thread_setup(void)
-
{
-
  int i;
-

-
  mutex_buf = malloc(CRYPTO_num_locks() * sizeof(MUTEX_TYPE));
-
  if(!mutex_buf)
-
    return 0;
-
  for(i = 0;  i < CRYPTO_num_locks();  i++)
-
    MUTEX_SETUP(mutex_buf[i]);
-
  CRYPTO_set_id_callback(id_function);
-
  CRYPTO_set_locking_callback(locking_function);
-
  return 1;
-
}
-

-
int thread_cleanup(void)
-
{
-
  int i;
-

-
  if(!mutex_buf)
-
    return 0;
-
  CRYPTO_set_id_callback(NULL);
-
  CRYPTO_set_locking_callback(NULL);
-
  for(i = 0;  i < CRYPTO_num_locks();  i++)
-
    MUTEX_CLEANUP(mutex_buf[i]);
-
  free(mutex_buf);
-
  mutex_buf = NULL;
-
  return 1;
-
}
modified external/curl/docs/examples/postit2-formadd.c
@@ -28,7 +28,7 @@

/*
 * Example code that uploads a file name 'foo' to a remote script that accepts
-
 * "HTML form based" (as described in RFC1738) uploads using HTTP POST.
+
 * "HTML form based" (as described in RFC 1738) uploads using HTTP POST.
 *
 * Warning: this example uses the deprecated form api. See "postit2.c"
 *          for a similar example using the mime api.
modified external/curl/docs/examples/postit2.c
@@ -26,7 +26,7 @@
 * </DESC>
 */
/* Example code that uploads a file name 'foo' to a remote script that accepts
-
 * "HTML form based" (as described in RFC1738) uploads using HTTP POST.
+
 * "HTML form based" (as described in RFC 1738) uploads using HTTP POST.
 *
 * The imaginary form we will fill in looks like:
 *
modified external/curl/docs/examples/smtp-authzid.c
@@ -57,11 +57,11 @@ static const char *payload_text =
  "Message-ID: <dcd7cb36-11db-487a-9f3a-e652a9458efd@"
  "rfcpedant.example.org>\r\n"
  "Subject: SMTP example message\r\n"
-
  "\r\n" /* empty line to divide headers from body, see RFC5322 */
+
  "\r\n" /* empty line to divide headers from body, see RFC 5322 */
  "The body of the message starts here.\r\n"
  "\r\n"
  "It could be a lot of lines, could be MIME encoded, whatever.\r\n"
-
  "Check RFC5322.\r\n";
+
  "Check RFC 5322.\r\n";

struct upload_status {
  size_t bytes_read;
modified external/curl/docs/examples/smtp-mail.c
@@ -54,11 +54,11 @@ static const char *payload_text =
  "Message-ID: <dcd7cb36-11db-487a-9f3a-e652a9458efd@"
  "rfcpedant.example.org>\r\n"
  "Subject: SMTP example message\r\n"
-
  "\r\n" /* empty line to divide headers from body, see RFC5322 */
+
  "\r\n" /* empty line to divide headers from body, see RFC 5322 */
  "The body of the message starts here.\r\n"
  "\r\n"
  "It could be a lot of lines, could be MIME encoded, whatever.\r\n"
-
  "Check RFC5322.\r\n";
+
  "Check RFC 5322.\r\n";

struct upload_status {
  size_t bytes_read;
modified external/curl/docs/examples/smtp-mime.c
@@ -102,6 +102,9 @@ int main(void)
    recipients = curl_slist_append(recipients, CC);
    curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, recipients);

+
    /* allow one of the recipients to fail and still consider it okay */
+
    curl_easy_setopt(curl, CURLOPT_MAIL_RCPT_ALLOWFAILS, 1L);
+

    /* Build and set the message header list. */
    for(cpp = headers_text; *cpp; cpp++)
      headers = curl_slist_append(headers, *cpp);
modified external/curl/docs/examples/smtp-multi.c
@@ -47,11 +47,11 @@ static const char *payload_text =
  "Message-ID: <dcd7cb36-11db-487a-9f3a-e652a9458efd@"
  "rfcpedant.example.org>\r\n"
  "Subject: SMTP example message\r\n"
-
  "\r\n" /* empty line to divide headers from body, see RFC5322 */
+
  "\r\n" /* empty line to divide headers from body, see RFC 5322 */
  "The body of the message starts here.\r\n"
  "\r\n"
  "It could be a lot of lines, could be MIME encoded, whatever.\r\n"
-
  "Check RFC5322.\r\n";
+
  "Check RFC 5322.\r\n";

struct upload_status {
  size_t bytes_read;
modified external/curl/docs/examples/smtp-ssl.c
@@ -51,11 +51,11 @@ static const char *payload_text =
  "Message-ID: <dcd7cb36-11db-487a-9f3a-e652a9458efd@"
  "rfcpedant.example.org>\r\n"
  "Subject: SMTP example message\r\n"
-
  "\r\n" /* empty line to divide headers from body, see RFC5322 */
+
  "\r\n" /* empty line to divide headers from body, see RFC 5322 */
  "The body of the message starts here.\r\n"
  "\r\n"
  "It could be a lot of lines, could be MIME encoded, whatever.\r\n"
-
  "Check RFC5322.\r\n";
+
  "Check RFC 5322.\r\n";

struct upload_status {
  size_t bytes_read;
modified external/curl/docs/examples/smtp-tls.c
@@ -51,11 +51,11 @@ static const char *payload_text =
  "Message-ID: <dcd7cb36-11db-487a-9f3a-e652a9458efd@"
  "rfcpedant.example.org>\r\n"
  "Subject: SMTP example message\r\n"
-
  "\r\n" /* empty line to divide headers from body, see RFC5322 */
+
  "\r\n" /* empty line to divide headers from body, see RFC 5322 */
  "The body of the message starts here.\r\n"
  "\r\n"
  "It could be a lot of lines, could be MIME encoded, whatever.\r\n"
-
  "Check RFC5322.\r\n";
+
  "Check RFC 5322.\r\n";

struct upload_status {
  size_t bytes_read;
@@ -101,7 +101,7 @@ int main(void)

    /* This is the URL for your mailserver. Note the use of port 587 here,
     * instead of the normal SMTP port (25). Port 587 is commonly used for
-
     * secure mail submission (see RFC4403), but you should use whatever
+
     * secure mail submission (see RFC 4403), but you should use whatever
     * matches your server configuration. */
    curl_easy_setopt(curl, CURLOPT_URL, "smtp://mainserver.example.net:587");

added external/curl/docs/examples/unixsocket.c
@@ -0,0 +1,67 @@
+
/***************************************************************************
+
 *                                  _   _ ____  _
+
 *  Project                     ___| | | |  _ \| |
+
 *                             / __| | | | |_) | |
+
 *                            | (__| |_| |  _ <| |___
+
 *                             \___|\___/|_| \_\_____|
+
 *
+
 * Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
+
 *
+
 * This software is licensed as described in the file COPYING, which
+
 * you should have received as part of this distribution. The terms
+
 * are also available at https://curl.se/docs/copyright.html.
+
 *
+
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+
 * copies of the Software, and permit persons to whom the Software is
+
 * furnished to do so, under the terms of the COPYING file.
+
 *
+
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+
 * KIND, either express or implied.
+
 *
+
 * SPDX-License-Identifier: curl
+
 *
+
 ***************************************************************************/
+
/* <DESC>
+
 * Access HTTP server over unix domain socket
+
 * </DESC>
+
 */
+
#include <stdio.h>
+
#include <curl/curl.h>
+

+
#ifdef USE_ABSTRACT
+
/*
+
 * The abstract socket namespace is a nonportable Linux extension. The name
+
 * has no connection with filesystem pathnames.
+
 */
+
#define ABSTRACT "http-unix-domain"
+
#else
+
#define PATH "/tmp/http-unix-domain"
+
#endif
+

+
int main(void)
+
{
+
  CURL *curl;
+
  CURLcode res;
+

+
  curl = curl_easy_init();
+
  if(curl) {
+
    curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+

+
#ifdef USE_ABSTRACT
+
    curl_easy_setopt(curl, CURLOPT_ABSTRACT_UNIX_SOCKET, ABSTRACT);
+
#else
+
    curl_easy_setopt(curl, CURLOPT_UNIX_SOCKET_PATH, PATH);
+
#endif
+

+
    /* Perform the request, res will get the return code */
+
    res = curl_easy_perform(curl);
+
    /* Check for errors */
+
    if(res != CURLE_OK)
+
      fprintf(stderr, "curl_easy_perform() failed: %s\n",
+
              curl_easy_strerror(res));
+

+
    /* always cleanup */
+
    curl_easy_cleanup(curl);
+
  }
+
  return 0;
+
}
modified external/curl/docs/examples/urlapi.c
@@ -58,6 +58,9 @@ int main(void)
    curl_easy_setopt(curl, CURLOPT_CURLU, urlp);
    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);

+
    /* only allow HTTP, TFTP and SFTP */
+
    curl_easy_setopt(curl, CURLOPT_PROTOCOLS_STR, "http,tftp,sftp");
+

    res = curl_easy_perform(curl);
    /* Check for errors */
    if(res != CURLE_OK)
added external/curl/docs/examples/websocket-cb.c
@@ -0,0 +1,68 @@
+
/***************************************************************************
+
 *                                  _   _ ____  _
+
 *  Project                     ___| | | |  _ \| |
+
 *                             / __| | | | |_) | |
+
 *                            | (__| |_| |  _ <| |___
+
 *                             \___|\___/|_| \_\_____|
+
 *
+
 * Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
+
 *
+
 * This software is licensed as described in the file COPYING, which
+
 * you should have received as part of this distribution. The terms
+
 * are also available at https://curl.se/docs/copyright.html.
+
 *
+
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+
 * copies of the Software, and permit persons to whom the Software is
+
 * furnished to do so, under the terms of the COPYING file.
+
 *
+
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+
 * KIND, either express or implied.
+
 *
+
 * SPDX-License-Identifier: curl
+
 *
+
 ***************************************************************************/
+
/* <DESC>
+
 * WebSocket download-only using write callback
+
 * </DESC>
+
 */
+
#include <stdio.h>
+
#include <curl/curl.h>
+

+
static size_t writecb(char *b, size_t size, size_t nitems, void *p)
+
{
+
  CURL *easy = p;
+
  size_t i;
+
  const struct curl_ws_frame *frame = curl_ws_meta(easy);
+
  fprintf(stderr, "Type: %s\n", frame->flags & CURLWS_BINARY ?
+
          "binary" : "text");
+
  fprintf(stderr, "Bytes: %u", (unsigned int)(nitems * size));
+
  for(i = 0; i < nitems; i++)
+
    fprintf(stderr, "%02x ", (unsigned char)b[i]);
+
  return nitems;
+
}
+

+
int main(void)
+
{
+
  CURL *curl;
+
  CURLcode res;
+

+
  curl = curl_easy_init();
+
  if(curl) {
+
    curl_easy_setopt(curl, CURLOPT_URL, "wss://example.com");
+

+
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writecb);
+
    /* pass the easy handle to the callback */
+
    curl_easy_setopt(curl, CURLOPT_WRITEDATA, curl);
+

+
    /* Perform the request, res will get the return code */
+
    res = curl_easy_perform(curl);
+
    /* Check for errors */
+
    if(res != CURLE_OK)
+
      fprintf(stderr, "curl_easy_perform() failed: %s\n",
+
              curl_easy_strerror(res));
+

+
    /* always cleanup */
+
    curl_easy_cleanup(curl);
+
  }
+
  return 0;
+
}
added external/curl/docs/examples/websocket.c
@@ -0,0 +1,131 @@
+
/***************************************************************************
+
 *                                  _   _ ____  _
+
 *  Project                     ___| | | |  _ \| |
+
 *                             / __| | | | |_) | |
+
 *                            | (__| |_| |  _ <| |___
+
 *                             \___|\___/|_| \_\_____|
+
 *
+
 * Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
+
 *
+
 * This software is licensed as described in the file COPYING, which
+
 * you should have received as part of this distribution. The terms
+
 * are also available at https://curl.se/docs/copyright.html.
+
 *
+
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+
 * copies of the Software, and permit persons to whom the Software is
+
 * furnished to do so, under the terms of the COPYING file.
+
 *
+
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+
 * KIND, either express or implied.
+
 *
+
 * SPDX-License-Identifier: curl
+
 *
+
 ***************************************************************************/
+
/* <DESC>
+
 * WebSocket using CONNECT_ONLY
+
 * </DESC>
+
 */
+
#include <stdio.h>
+
#include <string.h>
+
#include <unistd.h>
+
#include <curl/curl.h>
+

+
static int ping(CURL *curl, const char *send_payload)
+
{
+
  size_t sent;
+
  CURLcode result =
+
    curl_ws_send(curl, send_payload, strlen(send_payload), &sent, 0,
+
                 CURLWS_PING);
+
  return (int)result;
+
}
+

+
static int recv_pong(CURL *curl, const char *exected_payload)
+
{
+
  size_t rlen;
+
  const struct curl_ws_frame *meta;
+
  char buffer[256];
+
  CURLcode result = curl_ws_recv(curl, buffer, sizeof(buffer), &rlen, &meta);
+
  if(!result) {
+
    if(meta->flags & CURLWS_PONG) {
+
      int same = 0;
+
      fprintf(stderr, "ws: got PONG back\n");
+
      if(rlen == strlen(exected_payload)) {
+
        if(!memcmp(exected_payload, buffer, rlen)) {
+
          fprintf(stderr, "ws: got the same payload back\n");
+
          same = 1;
+
        }
+
      }
+
      if(!same)
+
        fprintf(stderr, "ws: did NOT get the same payload back\n");
+
    }
+
    else {
+
      fprintf(stderr, "recv_pong: got %u bytes rflags %x\n", (int)rlen,
+
              meta->flags);
+
    }
+
  }
+
  fprintf(stderr, "ws: curl_ws_recv returned %u, received %u\n",
+
          (unsigned int)result, (unsigned int)rlen);
+
  return (int)result;
+
}
+

+
static int recv_any(CURL *curl)
+
{
+
  size_t rlen;
+
  const struct curl_ws_frame *meta;
+
  char buffer[256];
+
  CURLcode result = curl_ws_recv(curl, buffer, sizeof(buffer), &rlen, &meta);
+
  if(result)
+
    return result;
+

+
  return 0;
+
}
+

+
/* close the connection */
+
static void websocket_close(CURL *curl)
+
{
+
  size_t sent;
+
  (void)curl_ws_send(curl, "", 0, &sent, 0, CURLWS_CLOSE);
+
}
+

+
static void websocket(CURL *curl)
+
{
+
  int i = 0;
+
  do {
+
    recv_any(curl);
+
    if(ping(curl, "foobar"))
+
      return;
+
    if(recv_pong(curl, "foobar")) {
+
      return;
+
    }
+
    sleep(2);
+
  } while(i++ < 10);
+
  websocket_close(curl);
+
}
+

+
int main(void)
+
{
+
  CURL *curl;
+
  CURLcode res;
+

+
  curl = curl_easy_init();
+
  if(curl) {
+
    curl_easy_setopt(curl, CURLOPT_URL, "wss://example.com");
+

+
    curl_easy_setopt(curl, CURLOPT_CONNECT_ONLY, 2L); /* websocket style */
+

+
    /* Perform the request, res will get the return code */
+
    res = curl_easy_perform(curl);
+
    /* Check for errors */
+
    if(res != CURLE_OK)
+
      fprintf(stderr, "curl_easy_perform() failed: %s\n",
+
              curl_easy_strerror(res));
+
    else {
+
      /* connected and ready */
+
      websocket(curl);
+
    }
+

+
    /* always cleanup */
+
    curl_easy_cleanup(curl);
+
  }
+
  return 0;
+
}
modified external/curl/docs/libcurl/Makefile.in
@@ -614,7 +614,7 @@ USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
-
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
+
USE_NGTCP2_CRYPTO_QUICTLS = @USE_NGTCP2_CRYPTO_QUICTLS@
USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
@@ -750,6 +750,8 @@ man_MANS = \
 curl_multi_timeout.3 \
 curl_multi_wakeup.3 \
 curl_multi_wait.3 \
+
 curl_pushheader_bynum.3 \
+
 curl_pushheader_byname.3 \
 curl_share_cleanup.3 \
 curl_share_init.3 \
 curl_share_setopt.3 \
@@ -780,6 +782,7 @@ man_MANS = \
 libcurl-thread.3 \
 libcurl-tutorial.3 \
 libcurl-url.3 \
+
 libcurl-ws.3 \
 libcurl.3

man_DISTMANS = $(man_MANS:.3=.3.dist)
modified external/curl/docs/libcurl/Makefile.inc
@@ -85,6 +85,8 @@ man_MANS = \
 curl_multi_timeout.3 \
 curl_multi_wakeup.3 \
 curl_multi_wait.3 \
+
 curl_pushheader_bynum.3 \
+
 curl_pushheader_byname.3 \
 curl_share_cleanup.3 \
 curl_share_init.3 \
 curl_share_setopt.3 \
@@ -115,4 +117,5 @@ man_MANS = \
 libcurl-thread.3 \
 libcurl-tutorial.3 \
 libcurl-url.3 \
+
 libcurl-ws.3 \
 libcurl.3
modified external/curl/docs/libcurl/curl_easy_cleanup.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH curl_easy_cleanup 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_easy_cleanup 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_easy_cleanup - End a libcurl easy handle
modified external/curl/docs/libcurl/curl_easy_duphandle.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_easy_duphandle 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_easy_duphandle 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_easy_duphandle - Clone a libcurl session handle
modified external/curl/docs/libcurl/curl_easy_escape.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH curl_easy_escape 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_easy_escape 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_easy_escape - URL encodes the given string
modified external/curl/docs/libcurl/curl_easy_getinfo.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH curl_easy_getinfo 3 "May 17, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_easy_getinfo 3 "May 23, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_easy_getinfo - extract information from a curl handle
@@ -248,6 +248,12 @@ See \fICURLINFO_PROTOCOL(3)\fP
.IP CURLINFO_SCHEME
The scheme used for the connection. (Added in 7.52.0)
See \fICURLINFO_SCHEME(3)\fP
+
.IP CURLINFO_CONN_ID
+
The ID of the last connection used by the transfer. (Added in 8.2.0)
+
See \fICURLINFO_CONN_ID(3)\fP
+
.IP CURLINFO_XFER_ID
+
The ID of the transfer. (Added in 8.2.0)
+
See \fICURLINFO_XFER_ID(3)\fP
.SH TIMES
.nf
An overview of the six time values available from curl_easy_getinfo()
modified external/curl/docs/libcurl/curl_easy_header.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_easy_header 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_easy_header 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_easy_header - get an HTTP header
modified external/curl/docs/libcurl/curl_easy_init.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_easy_init 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_easy_init 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_easy_init - Start a libcurl easy session
modified external/curl/docs/libcurl/curl_easy_nextheader.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_easy_nextheader 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_easy_nextheader 3 "July 07, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_easy_nextheader - get the next HTTP header
@@ -74,14 +74,14 @@ struct curl_header *h;

/* extract the normal headers from the first request */
while((h = curl_easy_nextheader(easy, CURLH_HEADER, 0, prev))) {
-
   print "%s: %s\\n", h->name, h->value);
+
   printf("%s: %s\\n", h->name, h->value);
   prev = h;
}

/* extract the normal headers + 1xx + trailers from the last request */
unsigned int origin = CURLH_HEADER| CURLH_1XX | CURLH_TRAILER;
while((h = curl_easy_nextheader(easy, origin, -1, prev))) {
-
   print "%s: %s\\n", h->name, h->value);
+
   printf("%s: %s\\n", h->name, h->value);
   prev = h;
}
.fi
modified external/curl/docs/libcurl/curl_easy_option_by_id.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_easy_option_by_id 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_easy_option_by_id 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_easy_option_by_id - find an easy setopt option by id
modified external/curl/docs/libcurl/curl_easy_option_by_name.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_easy_option_by_name 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_easy_option_by_name 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_easy_option_by_name - find an easy setopt option by name
modified external/curl/docs/libcurl/curl_easy_option_next.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_easy_option_next 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_easy_option_next 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_easy_option_next - iterate over easy setopt options
modified external/curl/docs/libcurl/curl_easy_pause.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_easy_pause 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_easy_pause 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_easy_pause - pause and unpause a connection
modified external/curl/docs/libcurl/curl_easy_perform.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_easy_perform 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_easy_perform 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_easy_perform - perform a blocking file transfer
modified external/curl/docs/libcurl/curl_easy_recv.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH curl_easy_recv 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_easy_recv 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_easy_recv - receives raw data on an "easy" connection
modified external/curl/docs/libcurl/curl_easy_reset.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_easy_reset 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_easy_reset 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_easy_reset - reset all options of a libcurl session handle
modified external/curl/docs/libcurl/curl_easy_send.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH curl_easy_send 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_easy_send 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_easy_send - sends raw data over an "easy" connection
modified external/curl/docs/libcurl/curl_easy_setopt.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH curl_easy_setopt 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_easy_setopt 3 "March 16, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_easy_setopt \- set options for a curl easy handle
@@ -209,6 +209,8 @@ Socks5 GSSAPI NEC mode. See \fICURLOPT_SOCKS5_GSSAPI_NEC(3)\fP
Proxy authentication service name. \fICURLOPT_PROXY_SERVICE_NAME(3)\fP
.IP CURLOPT_HAPROXYPROTOCOL
Send an HAProxy PROXY protocol v1 header. See \fICURLOPT_HAPROXYPROTOCOL(3)\fP
+
.IP CURLOPT_HAPROXY_CLIENT_IP
+
Spoof the client IP in an HAProxy PROXY protocol v1 header. See \fICURLOPT_HAPROXY_CLIENT_IP(3)\fP
.IP CURLOPT_SERVICE_NAME
Authentication service name. \fICURLOPT_SERVICE_NAME(3)\fP
.IP CURLOPT_INTERFACE
@@ -393,8 +395,9 @@ Address of the sender. See \fICURLOPT_MAIL_FROM(3)\fP
Address of the recipients. See \fICURLOPT_MAIL_RCPT(3)\fP
.IP CURLOPT_MAIL_AUTH
Authentication address. See \fICURLOPT_MAIL_AUTH(3)\fP
-
.IP CURLOPT_MAIL_RCPT_ALLLOWFAILS
-
Allow RCPT TO command to fail for some recipients. See \fICURLOPT_MAIL_RCPT_ALLLOWFAILS(3)\fP
+
.IP CURLOPT_MAIL_RCPT_ALLOWFAILS
+
Allow RCPT TO command to fail for some recipients. See
+
\fICURLOPT_MAIL_RCPT_ALLOWFAILS(3)\fP
.SH TFTP OPTIONS
.IP CURLOPT_TFTP_BLKSIZE
TFTP block size. See \fICURLOPT_TFTP_BLKSIZE(3)\fP
modified external/curl/docs/libcurl/curl_easy_strerror.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_easy_strerror 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_easy_strerror 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_easy_strerror - return string describing error code
modified external/curl/docs/libcurl/curl_easy_unescape.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH curl_easy_unescape 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_easy_unescape 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_easy_unescape - URL decodes the given string
modified external/curl/docs/libcurl/curl_easy_upkeep.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH curl_easy_upkeep 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_easy_upkeep 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_easy_upkeep - Perform any connection upkeep checks.
modified external/curl/docs/libcurl/curl_escape.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_escape 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_escape 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_escape - URL encodes the given string
modified external/curl/docs/libcurl/curl_formadd.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_formadd 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_formadd 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_formadd - add a section to a multipart form POST
modified external/curl/docs/libcurl/curl_formfree.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_formfree 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_formfree 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_formfree - free a previously build multipart form post chain
modified external/curl/docs/libcurl/curl_formget.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_formget 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_formget 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_formget - serialize a previously built multipart form POST chain
modified external/curl/docs/libcurl/curl_free.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_free 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_free 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_free - reclaim memory that has been obtained through a libcurl call
modified external/curl/docs/libcurl/curl_getenv.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_getenv 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_getenv 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_getenv - return value for environment name
modified external/curl/docs/libcurl/curl_global_cleanup.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_global_cleanup 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_global_cleanup 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_global_cleanup - global libcurl cleanup
modified external/curl/docs/libcurl/curl_global_init.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_global_init 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_global_init 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_global_init - Global libcurl initialization
modified external/curl/docs/libcurl/curl_global_init_mem.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_global_init_mem 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_global_init_mem 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_global_init_mem - Global libcurl initialization with memory callbacks
modified external/curl/docs/libcurl/curl_global_sslset.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_global_sslset 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_global_sslset 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_global_sslset - Select SSL backend to use with libcurl
modified external/curl/docs/libcurl/curl_mime_addpart.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_mime_addpart 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_mime_addpart 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_mime_addpart - append a new empty part to a mime structure
modified external/curl/docs/libcurl/curl_mime_data.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_mime_data 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_mime_data 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_mime_data - set a mime part's body data from memory
modified external/curl/docs/libcurl/curl_mime_data_cb.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_mime_data_cb 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_mime_data_cb 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_mime_data_cb - set a callback-based data source for a mime part's body
modified external/curl/docs/libcurl/curl_mime_encoder.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_mime_encoder 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_mime_encoder 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_mime_encoder - set a mime part's encoder and content transfer encoding
modified external/curl/docs/libcurl/curl_mime_filedata.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_mime_filedata 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_mime_filedata 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_mime_filedata - set a mime part's body data from a file contents
modified external/curl/docs/libcurl/curl_mime_filename.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_mime_filename 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_mime_filename 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_mime_filename - set a mime part's remote file name
modified external/curl/docs/libcurl/curl_mime_free.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_mime_free 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_mime_free 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_mime_free - free a previously built mime structure
modified external/curl/docs/libcurl/curl_mime_headers.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_mime_headers 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_mime_headers 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_mime_headers - set a mime part's custom headers
modified external/curl/docs/libcurl/curl_mime_init.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_mime_init 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_mime_init 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_mime_init - create a mime handle
modified external/curl/docs/libcurl/curl_mime_name.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_mime_name 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_mime_name 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_mime_name - set a mime part's name
modified external/curl/docs/libcurl/curl_mime_subparts.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_mime_subparts 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_mime_subparts 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_mime_subparts - set sub-parts of a multipart mime part
modified external/curl/docs/libcurl/curl_mime_type.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_mime_type 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_mime_type 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_mime_type - set a mime part's content type
modified external/curl/docs/libcurl/curl_mprintf.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_printf 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_printf 3 "June 09, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_maprintf, curl_mfprintf, curl_mprintf, curl_msnprintf, curl_msprintf
@@ -238,8 +238,8 @@ by the corresponding argument.
A '%' is written. No argument is converted.
.SH EXAMPLE
.nf
-
  mprintf("My name is %s\\n", name);
-
  mprintf("Pi is almost %f\\n", 25/8);
+
  curl_mprintf("My name is %s\\n", name);
+
  curl_mprintf("Pi is almost %f\\n", 25/8);
.fi
.SH AVAILABILITY
These functions will be removed from the public libcurl API in the future. Do
modified external/curl/docs/libcurl/curl_multi_add_handle.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_multi_add_handle 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_multi_add_handle 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_multi_add_handle - add an easy handle to a multi session
modified external/curl/docs/libcurl/curl_multi_assign.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_multi_assign 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_multi_assign 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_multi_assign \- set data to associate with an internal socket
modified external/curl/docs/libcurl/curl_multi_cleanup.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_multi_cleanup 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_multi_cleanup 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_multi_cleanup - close down a multi session
modified external/curl/docs/libcurl/curl_multi_fdset.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_multi_fdset 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_multi_fdset 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_multi_fdset - extracts file descriptor information from a multi handle
modified external/curl/docs/libcurl/curl_multi_info_read.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_multi_info_read 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_multi_info_read 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_multi_info_read - read multi stack information
modified external/curl/docs/libcurl/curl_multi_init.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_multi_init 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_multi_init 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_multi_init - create a multi handle
modified external/curl/docs/libcurl/curl_multi_perform.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_multi_perform 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_multi_perform 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_multi_perform - reads/writes available data from easy handles
modified external/curl/docs/libcurl/curl_multi_poll.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_multi_poll 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_multi_poll 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_multi_poll - polls on all easy handles in a multi handle
modified external/curl/docs/libcurl/curl_multi_remove_handle.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_multi_remove_handle 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_multi_remove_handle 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_multi_remove_handle - remove an easy handle from a multi session
modified external/curl/docs/libcurl/curl_multi_setopt.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_multi_setopt 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_multi_setopt 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_multi_setopt \- set options for a curl multi handle
modified external/curl/docs/libcurl/curl_multi_socket.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_multi_socket 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_multi_socket 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_multi_socket \- reads/writes available data
modified external/curl/docs/libcurl/curl_multi_socket_action.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_multi_socket_action 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_multi_socket_action 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_multi_socket_action \- reads/writes available data given an action
modified external/curl/docs/libcurl/curl_multi_strerror.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_multi_strerror 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_multi_strerror 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_multi_strerror - return string describing error code
modified external/curl/docs/libcurl/curl_multi_timeout.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_multi_timeout 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_multi_timeout 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_multi_timeout \- how long to wait for action before proceeding
modified external/curl/docs/libcurl/curl_multi_wait.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_multi_wait 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_multi_wait 3 "July 24, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_multi_wait - polls on all easy handles in a multi handle
@@ -124,4 +124,4 @@ This function was added in libcurl 7.28.0.
CURLMcode type, general libcurl multi interface error code. See
\fIlibcurl-errors(3)\fP
.SH "SEE ALSO"
-
.BR curl_multi_fdset "(3), " curl_multi_perform "(3)", curl_multi_poll "(3) ",
+
.BR curl_multi_fdset "(3), " curl_multi_perform "(3), " curl_multi_poll "(3), "
modified external/curl/docs/libcurl/curl_multi_wakeup.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_multi_wakeup 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_multi_wakeup 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_multi_wakeup - wakes up a sleeping curl_multi_poll call
added external/curl/docs/libcurl/curl_pushheader_byname.3
@@ -0,0 +1,81 @@
+
.\" **************************************************************************
+
.\" *                                  _   _ ____  _
+
.\" *  Project                     ___| | | |  _ \| |
+
.\" *                             / __| | | | |_) | |
+
.\" *                            | (__| |_| |  _ <| |___
+
.\" *                             \___|\___/|_| \_\_____|
+
.\" *
+
.\" * Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
+
.\" *
+
.\" * This software is licensed as described in the file COPYING, which
+
.\" * you should have received as part of this distribution. The terms
+
.\" * are also available at https://curl.se/docs/copyright.html.
+
.\" *
+
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+
.\" * copies of the Software, and permit persons to whom the Software is
+
.\" * furnished to do so, under the terms of the COPYING file.
+
.\" *
+
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+
.\" * KIND, either express or implied.
+
.\" *
+
.\" * SPDX-License-Identifier: curl
+
.\" *
+
.\" **************************************************************************
+
.TH curl_pushheader_byname 3 "June 09, 2023" "libcurl 8.2.1" "libcurl"
+

+
.SH NAME
+
curl_pushheader_byname - get a push header by name
+
.SH SYNOPSIS
+
.nf
+
#include <curl/curl.h>
+

+
char *curl_pushheader_byname(struct curl_pushheaders *h, const char *name);
+
.fi
+
.SH DESCRIPTION
+
This is a function that is only functional within a
+
\fICURLMOPT_PUSHFUNCTION(3)\fP callback. It makes no sense to try to use it
+
elsewhere and it has no function then.
+

+
It returns the value for the given header field name (or NULL) for the
+
incoming server push request. This is a shortcut so that the application does
+
not have to loop through all headers to find the one it is interested in. The
+
data this function points to will be freed when this callback returns. If more
+
than one header field use the same name, this returns only the first one.
+

+
.SH EXAMPLE
+
.nf
+
int curl_push_callback(CURL *parent,
+
                       CURL *easy,
+
                       size_t num_headers,
+
                       struct curl_pushheaders *headers,
+
                       void *clientp)
+
{
+
  char *headp;
+
  int *transfers = (int *)clientp;
+
  FILE *out;
+
  headp = curl_pushheader_byname(headers, ":path");
+
  if(headp && !strncmp(headp, "/push-", 6)) {
+
    fprintf(stderr, "The PATH is %s\\n", headp);
+

+
    /* save the push here */
+
    out = fopen("pushed-stream", "wb");
+

+
    /* write to this file */
+
    curl_easy_setopt(easy, CURLOPT_WRITEDATA, out);
+

+
    (*transfers)++; /* one more */
+

+
    return CURL_PUSH_OK;
+
  }
+
  return CURL_PUSH_DENY;
+
}
+

+
curl_multi_setopt(multi, CURLMOPT_PUSHFUNCTION, curl_push_callback);
+
curl_multi_setopt(multi, CURLMOPT_PUSHDATA, &counter);
+
.fi
+
.SH AVAILABILITY
+
Added in 7.44.0
+
.SH RETURN VALUE
+
Returns a pointer to the header field content or NULL.
+
.SH "SEE ALSO"
+
.BR CURLMOPT_PUSHFUNCTION "(3)," curl_pushheader_bynum "(3), "
added external/curl/docs/libcurl/curl_pushheader_bynum.3
@@ -0,0 +1,71 @@
+
.\" **************************************************************************
+
.\" *                                  _   _ ____  _
+
.\" *  Project                     ___| | | |  _ \| |
+
.\" *                             / __| | | | |_) | |
+
.\" *                            | (__| |_| |  _ <| |___
+
.\" *                             \___|\___/|_| \_\_____|
+
.\" *
+
.\" * Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
+
.\" *
+
.\" * This software is licensed as described in the file COPYING, which
+
.\" * you should have received as part of this distribution. The terms
+
.\" * are also available at https://curl.se/docs/copyright.html.
+
.\" *
+
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+
.\" * copies of the Software, and permit persons to whom the Software is
+
.\" * furnished to do so, under the terms of the COPYING file.
+
.\" *
+
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+
.\" * KIND, either express or implied.
+
.\" *
+
.\" * SPDX-License-Identifier: curl
+
.\" *
+
.\" **************************************************************************
+
.TH curl_pushheader_bynum 3 "June 09, 2023" "libcurl 8.2.1" "libcurl"
+

+
.SH NAME
+
curl_pushheader_bynum - get a push header by index
+
.SH SYNOPSIS
+
.nf
+
#include <curl/curl.h>
+

+
char *curl_pushheader_bynum(struct curl_pushheaders *h, size_t num);
+
.fi
+
.SH DESCRIPTION
+
This is a function that is only functional within a
+
\fICURLMOPT_PUSHFUNCTION(3)\fP callback. It makes no sense to try to use it
+
elsewhere and it has no function then.
+

+
It returns the value for the header field at the given index \fBnum\fP, for
+
the incoming server push request or NULL. The data pointed will be freed when
+
this callback returns.  The returned pointer points to a "name:value" string
+
that will be freed when this callback returns.
+

+
.SH EXAMPLE
+
.nf
+
/* output all the incoming push request headers */
+
int curl_push_callback(CURL *parent,
+
                       CURL *easy,
+
                       size_t num_headers,
+
                       struct curl_pushheaders *headers,
+
                       void *clientp)
+
{
+
  sizt_t i = 0;
+
  char *field;
+
  do {
+
     field = curl_pushheader_bynum(headers, i);
+
     if(field)
+
       fprintf(stderr, "Push header: %s\\n", field);
+
     i++;
+
  } while(field);
+
  return CURL_PUSH_OK; /* permission granted */
+
}
+

+
curl_multi_setopt(multi, CURLMOPT_PUSHFUNCTION, curl_push_callback);
+
.fi
+
.SH AVAILABILITY
+
Added in 7.44.0
+
.SH RETURN VALUE
+
Returns a pointer to the header field content or NULL.
+
.SH "SEE ALSO"
+
.BR CURLMOPT_PUSHFUNCTION "(3)," curl_pushheader_byname "(3),"
modified external/curl/docs/libcurl/curl_share_cleanup.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_share_cleanup 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_share_cleanup 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_share_cleanup - Clean up a shared object
modified external/curl/docs/libcurl/curl_share_init.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_share_init 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_share_init 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_share_init - Create a shared object
modified external/curl/docs/libcurl/curl_share_setopt.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_share_setopt 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_share_setopt 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_share_setopt - Set options for a shared object
modified external/curl/docs/libcurl/curl_share_strerror.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_share_strerror 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_share_strerror 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_share_strerror - return string describing error code
modified external/curl/docs/libcurl/curl_slist_append.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_slist_append 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_slist_append 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_slist_append - add a string to an slist
modified external/curl/docs/libcurl/curl_slist_free_all.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_slist_free_all 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_slist_free_all 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_slist_free_all - free an entire curl_slist list
modified external/curl/docs/libcurl/curl_strequal.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_strequal 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_strequal 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_strequal, curl_strnequal - case insensitive string comparisons
modified external/curl/docs/libcurl/curl_unescape.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_unescape 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_unescape 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_unescape - URL decodes the given string
modified external/curl/docs/libcurl/curl_url.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_url 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_url 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_url - returns a new URL handle
modified external/curl/docs/libcurl/curl_url_cleanup.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_url_cleanup 3 "May 19, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_url_cleanup 3 "May 19, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_url_cleanup - free the URL handle
modified external/curl/docs/libcurl/curl_url_dup.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_url_dup 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_url_dup 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_url_dup - duplicate a URL handle
modified external/curl/docs/libcurl/curl_url_get.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_url_get 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_url_get 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_url_get - extract a part from a URL
modified external/curl/docs/libcurl/curl_url_set.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_url_set 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_url_set 3 "June 08, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_url_set - set a URL part
@@ -102,8 +102,8 @@ Port cannot be URL encoded on set. The given port number is provided as a
string and the decimal number must be between 1 and 65535. Anything else will
return an error.
.IP CURLUPART_PATH
-
If a path is set in the URL without a leading slash, a slash will be inserted
-
automatically when this URL is read from the handle.
+
If a path is set in the URL without a leading slash, a slash will be prepended
+
automatically.
.IP CURLUPART_QUERY
The query part will also get spaces converted to pluses when asked to URL
encode on set with the \fICURLU_URLENCODE\fP bit.
@@ -189,9 +189,8 @@ Returns a \fICURLUcode\fP error value, which is CURLUE_OK (0) if everything
went fine. See the \fIlibcurl-errors(3)\fP man page for the full list with
descriptions.

-
A URL string passed on to \fIcurl_url_set(3)\fP for the \fBCURLUPART_URL\fP
-
part, must be shorter than 8000000 bytes otherwise it returns
-
\fBCURLUE_MALFORMED_INPUT\fP (added in 7.65.0).
+
The input string passed to \fIcurl_url_set(3)\fP must be shorter than eight
+
million bytes. Otherwise this function returns \fBCURLUE_MALFORMED_INPUT\fP.

If this function returns an error, no URL part is set.
.SH "SEE ALSO"
modified external/curl/docs/libcurl/curl_url_strerror.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_url_strerror 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_url_strerror 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_url_strerror - return string describing error code
modified external/curl/docs/libcurl/curl_version.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH curl_version 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_version 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_version - returns the libcurl version string
modified external/curl/docs/libcurl/curl_version_info.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH curl_version_info 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_version_info 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_version_info - returns runtime libcurl version info
modified external/curl/docs/libcurl/curl_ws_meta.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH curl_ws_meta 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_ws_meta 3 "June 14, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_ws_meta - meta data WebSocket information
@@ -37,7 +37,7 @@ struct curl_ws_frame {
  curl_off_t bytesleft; /* number of pending bytes left of the payload */
};

-
struct curl_ws_frame *curl_ws_meta(CURL *curl);
+
const struct curl_ws_frame *curl_ws_meta(CURL *curl);
.fi
.SH DESCRIPTION
This function call is EXPERIMENTAL.
@@ -94,7 +94,7 @@ static size_t writecb(unsigned char *buffer,
                      size_t size, size_t nitems, void *p)
{
  struct customdata *c = (struct customdata *)p;
-
  struct curl_ws_frame *m = curl_ws_meta(c->easy);
+
  const struct curl_ws_frame *m = curl_ws_meta(c->easy);

  /* m->flags tells us about the traffic */
}
@@ -110,11 +110,10 @@ static size_t writecb(unsigned char *buffer,
.SH AVAILABILITY
Added in 7.86.0.
.SH RETURN VALUE
-
This function returns a pointer to a \fIcurl_ws_frame\fP struct with
+
This function returns a pointer to a \fIcurl_ws_frame\fP struct with read-only
information that is valid for this specific callback invocation. If it cannot
return this information, or if the function is called in the wrong context, it
returns NULL.
.SH "SEE ALSO"
-
.BR curl_easy_setopt "(3), "
-
.BR curl_easy_getinfo "(3), "
-
.BR curl_ws_send "(3), " curl_ws_recv "(3), "
+
.BR curl_easy_setopt "(3), " curl_easy_getinfo "(3), "
+
.BR curl_ws_send "(3), " curl_ws_recv "(3), " libcurl-ws "(3), "
modified external/curl/docs/libcurl/curl_ws_recv.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH curl_ws_recv 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_ws_recv 3 "June 14, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_ws_recv - receive WebSocket data
@@ -31,7 +31,7 @@ curl_ws_recv - receive WebSocket data
#include <curl/easy.h>

CURLcode curl_ws_recv(CURL *curl, void *buffer, size_t buflen,
-
                      size_t *recv, struct curl_ws_frame **meta);
+
                      size_t *recv, const struct curl_ws_frame **meta);
.fi
.SH DESCRIPTION
This function call is EXPERIMENTAL.
@@ -44,13 +44,13 @@ If there is more fragment data to deliver than what fits in the provided
\fIbuffer\fP, libcurl returns a full buffer and the application needs to call
this function again to continue draining the buffer.

-
The \fImeta\fP pointer gets set to point to a \fIstruct curl_ws_frame\fP that
-
contains information about the received data. See the \fIcurl_ws_meta(3)\fP
-
for details on that struct.
+
The \fImeta\fP pointer gets set to point to a \fIconst struct curl_ws_frame\fP
+
that contains information about the received data. See the
+
\fIcurl_ws_meta(3)\fP for details on that struct.
.SH EXAMPLE
.nf
  size_t rlen;
-
  struct curl_ws_frame *meta;
+
  const struct curl_ws_frame *meta;
  char buffer[256];
  CURLcode result = curl_ws_recv(curl, buffer, sizeof(buffer), &rlen, &meta);
.fi
@@ -67,4 +67,4 @@ this function again.
.SH "SEE ALSO"
.BR curl_easy_setopt "(3), " curl_easy_perform "(3), "
.BR curl_easy_getinfo "(3), "
-
.BR curl_ws_send "(3) "
+
.BR curl_ws_send "(3), "  libcurl-ws "(3), "
modified external/curl/docs/libcurl/curl_ws_send.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH curl_ws_send 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH curl_ws_send 3 "June 14, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
curl_ws_send - send WebSocket data
@@ -81,13 +81,22 @@ expected fragment size in the first call and it needs to be zero in subsequent
calls.
.SH EXAMPLE
.nf
-

+
int ping(CURL *curl, const char *send_payload)
+
{
+
  size_t sent;
+
  CURLcode result =
+
    curl_ws_send(curl, send_payload, strlen(send_payload), &sent, 0,
+
                 CURLWS_PING);
+
  return (int)result;
+
}
.fi
.SH AVAILABILITY
Added in 7.86.0.
.SH RETURN VALUE
-

+
\fICURLE_OK\fP (zero) means that the data was sent properly, non-zero means an
+
error occurred as \fI<curl/curl.h>\fP defines. See the \fIlibcurl-errors(3)\fP
+
man page for the full list with descriptions.
.SH "SEE ALSO"
.BR curl_easy_setopt "(3), " curl_easy_perform "(3), "
.BR curl_easy_getinfo "(3), "
-
.BR curl_ws_recv "(3) "
+
.BR curl_ws_recv "(3), " libcurl-ws "(3), "
modified external/curl/docs/libcurl/libcurl-easy.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH libcurl 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH libcurl 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
libcurl-easy \- easy interface overview
modified external/curl/docs/libcurl/libcurl-env.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH libcurl-env 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH libcurl-env 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
libcurl-env \- environment variables libcurl understands
modified external/curl/docs/libcurl/libcurl-errors.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH libcurl-errors 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH libcurl-errors 3 "July 20, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
libcurl-errors \- error codes in libcurl
@@ -355,6 +355,8 @@ that particular feature enabled. (Added in 7.23.0)
.SH "CURLUcode"
The URL interface will return a \fICURLUcode\fP to indicate when an error has
occurred. Also consider \fIcurl_url_strerror(3)\fP.
+
.IP "CURLUE_OK (0)"
+
All fine. Proceed as usual.
.IP "CURLUE_BAD_HANDLE (1)"
An invalid URL handle was passed as argument.
.IP "CURLUE_BAD_PARTPOINTER (2)"
modified external/curl/docs/libcurl/libcurl-multi.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH libcurl-multi 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH libcurl-multi 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
libcurl-multi \- how to use the multi interface
modified external/curl/docs/libcurl/libcurl-security.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH libcurl-security 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH libcurl-security 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
libcurl-security \- security considerations when using libcurl
modified external/curl/docs/libcurl/libcurl-share.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH libcurl-share 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH libcurl-share 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
libcurl-share \- how to use the share interface
modified external/curl/docs/libcurl/libcurl-symbols.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH libcurl-symbols 3 "May 30, 2023" "libcurl" "libcurl"
+
.TH libcurl-symbols 3 "Jul 19, 2023" "libcurl" "libcurl"
.SH NAME
libcurl-symbols \- libcurl symbol version information
.SH "libcurl symbols"
@@ -926,6 +926,8 @@ Introduced in 7.84.0
Introduced in 7.19.1
.IP CURLINFO_CONDITION_UNMET
Introduced in 7.19.4
+
.IP CURLINFO_CONN_ID
+
Introduced in 8.2.0
.IP CURLINFO_CONNECT_TIME
Introduced in 7.4.1
.IP CURLINFO_CONNECT_TIME_T
@@ -1100,6 +1102,8 @@ Introduced in 7.4.1
Introduced in 7.61.0
.IP CURLINFO_TYPEMASK
Introduced in 7.4.1
+
.IP CURLINFO_XFER_ID
+
Introduced in 8.2.0
.IP CURLIOCMD_NOP
Introduced in 7.12.3
.IP CURLIOCMD_RESTARTREAD
@@ -1396,6 +1400,8 @@ Introduced in 7.22.0
Introduced in 7.59.0
.IP CURLOPT_HAPROXYPROTOCOL
Introduced in 7.60.0
+
.IP CURLOPT_HAPROXY_CLIENT_IP
+
Introduced in 8.2.0
.IP CURLOPT_HEADER
Introduced in 7.1
.IP CURLOPT_HEADERDATA
@@ -1493,6 +1499,9 @@ Introduced in 7.20.0
Introduced in 7.20.0
.IP CURLOPT_MAIL_RCPT_ALLLOWFAILS
Introduced in 7.69.0
+
Deprecated since 8.2.0
+
.IP CURLOPT_MAIL_RCPT_ALLOWFAILS
+
Introduced in 8.2.0
.IP CURLOPT_QUICK_EXIT
Introduced in 7.87.0
.IP CURLOPT_MAX_RECV_SPEED_LARGE
modified external/curl/docs/libcurl/libcurl-thread.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH libcurl-thread 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH libcurl-thread 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
libcurl-thread \- libcurl thread safety
modified external/curl/docs/libcurl/libcurl-tutorial.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH libcurl-tutorial 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH libcurl-tutorial 3 "June 25, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
libcurl-tutorial \- libcurl programming tutorial
@@ -474,18 +474,18 @@ that list to libcurl.
While the simple examples above cover the majority of all cases where HTTP
POST operations are required, they do not do multi-part formposts. Multi-part
formposts were introduced as a better way to post (possibly large) binary data
-
and were first documented in the RFC1867 (updated in RFC2388). they are called
-
multi-part because they are built by a chain of parts, each part being a single
-
unit of data. Each part has its own name and contents. You can in fact create
-
and post a multi-part formpost with the regular libcurl POST support described
-
above, but that would require that you build a formpost yourself and provide
-
to libcurl. To make that easier, libcurl provides a MIME API consisting in
-
several functions: using those, you can create and fill a multi-part form.
-
Function \fIcurl_mime_init(3)\fP creates a multi-part body; you can then
-
append new parts to a multi-part body using \fIcurl_mime_addpart(3)\fP.
-
There are three possible data sources for a part: memory using
-
\fIcurl_mime_data(3)\fP, file using \fIcurl_mime_filedata(3)\fP and
-
user-defined data read callback using \fIcurl_mime_data_cb(3)\fP.
+
and were first documented in the RFC 1867 (updated in RFC 2388). they are
+
called multi-part because they are built by a chain of parts, each part being
+
a single unit of data. Each part has its own name and contents. You can in
+
fact create and post a multi-part formpost with the regular libcurl POST
+
support described above, but that would require that you build a formpost
+
yourself and provide to libcurl. To make that easier, libcurl provides a MIME
+
API consisting in several functions: using those, you can create and fill a
+
multi-part form.  Function \fIcurl_mime_init(3)\fP creates a multi-part body;
+
you can then append new parts to a multi-part body using
+
\fIcurl_mime_addpart(3)\fP.  There are three possible data sources for a part:
+
memory using \fIcurl_mime_data(3)\fP, file using \fIcurl_mime_filedata(3)\fP
+
and user-defined data read callback using \fIcurl_mime_data_cb(3)\fP.
\fIcurl_mime_name(3)\fP sets a part's (i.e.: form field) name, while
\fIcurl_mime_filename(3)\fP fills in the remote file name. With
\fIcurl_mime_type(3)\fP, you can tell the MIME type of a part,
@@ -1058,9 +1058,9 @@ Not all protocols are HTTP-like, and thus the above may not help you when
you want to make, for example, your FTP transfers to behave differently.

Sending custom commands to an FTP server means that you need to send the
-
commands exactly as the FTP server expects them (RFC959 is a good guide here),
-
and you can only use commands that work on the control-connection alone. All
-
kinds of commands that require data interchange and thus need a
+
commands exactly as the FTP server expects them (RFC 959 is a good guide
+
here), and you can only use commands that work on the control-connection
+
alone. All kinds of commands that require data interchange and thus need a
data-connection must be left to libcurl's own judgment. Also be aware that
libcurl will do its best to change directory to the target directory before
doing any transfer, so if you change directory (with CWD or similar) you might
modified external/curl/docs/libcurl/libcurl-url.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH libcurl 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH libcurl 3 "June 14, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
libcurl-url \- URL interface overview
@@ -76,14 +76,15 @@ When a URL has been parsed or parts have been set, you can extract those
pieces from the handle at any time.

.nf
+
  rc = curl_url_get(h, CURLUPART_FRAGMENT, &fragment, 0);
  rc = curl_url_get(h, CURLUPART_HOST, &host, 0);
-
  rc = curl_url_get(h, CURLUPART_SCHEME, &scheme, 0);
-
  rc = curl_url_get(h, CURLUPART_USER, &user, 0);
  rc = curl_url_get(h, CURLUPART_PASSWORD, &password, 0);
-
  rc = curl_url_get(h, CURLUPART_PORT, &port, 0);
  rc = curl_url_get(h, CURLUPART_PATH, &path, 0);
+
  rc = curl_url_get(h, CURLUPART_PORT, &port, 0);
  rc = curl_url_get(h, CURLUPART_QUERY, &query, 0);
-
  rc = curl_url_get(h, CURLUPART_FRAGMENT, &fragment, 0);
+
  rc = curl_url_get(h, CURLUPART_SCHEME, &scheme, 0);
+
  rc = curl_url_get(h, CURLUPART_USER, &user, 0);
+
  rc = curl_url_get(h, CURLUPART_ZONEID, &zoneid, 0);
.fi

Extracted parts are not URL decoded unless the user also asks for it with the
@@ -96,14 +97,15 @@ A user set individual URL parts, either after having parsed a full URL or
instead of parsing such.

.nf
+
  rc = curl_url_set(urlp, CURLUPART_FRAGMENT, "anchor", 0);
  rc = curl_url_set(urlp, CURLUPART_HOST, "www.example.com", 0);
-
  rc = curl_url_set(urlp, CURLUPART_SCHEME, "https", 0);
-
  rc = curl_url_set(urlp, CURLUPART_USER, "john", 0);
  rc = curl_url_set(urlp, CURLUPART_PASSWORD, "doe", 0);
-
  rc = curl_url_set(urlp, CURLUPART_PORT, "443", 0);
  rc = curl_url_set(urlp, CURLUPART_PATH, "/index.html", 0);
+
  rc = curl_url_set(urlp, CURLUPART_PORT, "443", 0);
  rc = curl_url_set(urlp, CURLUPART_QUERY, "name=john", 0);
-
  rc = curl_url_set(urlp, CURLUPART_FRAGMENT, "anchor", 0);
+
  rc = curl_url_set(urlp, CURLUPART_SCHEME, "https", 0);
+
  rc = curl_url_set(urlp, CURLUPART_USER, "john", 0);
+
  rc = curl_url_set(urlp, CURLUPART_ZONEID, "eth0", 0);
.fi

Set parts are not URL encoded unless the user asks for it with the
added external/curl/docs/libcurl/libcurl-ws.3
@@ -0,0 +1,116 @@
+
.\" **************************************************************************
+
.\" *                                  _   _ ____  _
+
.\" *  Project                     ___| | | |  _ \| |
+
.\" *                             / __| | | | |_) | |
+
.\" *                            | (__| |_| |  _ <| |___
+
.\" *                             \___|\___/|_| \_\_____|
+
.\" *
+
.\" * Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
+
.\" *
+
.\" * This software is licensed as described in the file COPYING, which
+
.\" * you should have received as part of this distribution. The terms
+
.\" * are also available at https://curl.se/docs/copyright.html.
+
.\" *
+
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+
.\" * copies of the Software, and permit persons to whom the Software is
+
.\" * furnished to do so, under the terms of the COPYING file.
+
.\" *
+
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+
.\" * KIND, either express or implied.
+
.\" *
+
.\" * SPDX-License-Identifier: curl
+
.\" *
+
.\" **************************************************************************
+
.TH libcurl 3 "June 18, 2023" "libcurl 8.2.1" "libcurl"
+

+
.SH NAME
+
libcurl-ws \- WebSocket interface overview
+
.SH DESCRIPTION
+
The WebSocket interface provides functions for receiving and sending WebSocket
+
data.
+
.SH INCLUDE
+
You still only include <curl/curl.h> in your code.
+
.SH SETUP
+
WebSocket is also often known as \fIWebSockets\fP, in plural. It is done by
+
upgrading a regular HTTP(S) GET request to a WebSocket connection.
+

+
WebSocket is a TCP-like message-based communication protocol done over HTTP,
+
specified in RFC 6455.
+

+
To initiate a WebSocket session with libcurl, setup an easy handle to use a
+
URL with a "WS://" or "WSS://" scheme. "WS" is for cleartext communication
+
over HTTP and "WSS" is for doing WebSocket securely over HTTPS.
+

+
A WebSocket request is done as an HTTP/1 GET request with an "Upgrade
+
WebSocket" request header field. When the upgrade is accepted by the server,
+
it responds with a 101 Switching and then the client can speak WebSocket with
+
the server. The communication can happen in both directions at the same time.
+
.SH MESSAGES
+
WebSocket communication is message based. That means that both ends send and
+
receive entire messages, not streams like TCP. A WebSocket message is sent
+
over the wire in one or more frames. Each frame in a message can have a size
+
up to 2^63 bytes.
+

+
libcurl delivers WebSocket data as frame fragments. It might send a whole
+
frame, but it might also deliver them in pieces depending on size and network
+
patterns. It makes sure to provide the API user about the exact specifics
+
about the fragment: type, offset, size and how much data there is pending to
+
arrive for the same frame.
+

+
A message has an unknown size until the last frame header for the message has
+
been received since only frames have set sizes.
+
.SH "Raw mode"
+
libcurl can be told to speak WebSocket in "raw mode" by setting the
+
\fBCURLWS_RAW_MODE\fP bit to the \fICURLOPT_WS_OPTIONS(3)\fP option.
+

+
Raw WebSocket means that libcurl will pass on the data from the network
+
without parsing it leaving that entirely to the application. This mode assumes
+
that the user of this knows WebSocket and can parse and figure out the data
+
all by itself.
+

+
This mode is intended for applications that already have a WebSocket
+
parser/engine that want to switch over to use libcurl for enabling WebSocket,
+
but keep parts of the existing software architecture.
+
.SH PING
+
WebSocket is designed to allow long-lived sessions and in order to keep the
+
connections alive, both ends can send PING messages for the other end to
+
respond with a PONG.
+

+
libcurl automatically responds to server PING messages with a PONG. It does
+
not send any PING messages automatically.
+
.SH MODELS
+
Because of the many different ways WebSocket can be used, which is much more
+
flexible than limited to plain downloads or uploads, libcurl offers two
+
different API models to use it:
+

+
1. Using a write callback with \fICURLOPT_WRITEFUNCTION(3)\fP much like other
+
downloads for when the traffic is download oriented.
+

+
2. Using \fICURLOPT_CONNECT_ONLY(3)\fP and use the WebSocket recv/send
+
functions at will.
+
.SH "Callback model"
+
When a write callback is set and a WebSocket transfer is performed, the
+
callback will be called to deliver all WebSocket data that arrives.
+

+
The callback can then call \fIcurl_ws_meta(3)\fP to learn about the details of
+
the incoming data fragment.
+
.SH "CONNECT_ONLY model"
+
By setting \fICURLOPT_CONNECT_ONLY(3)\fP to \fB2L\fP, the transfer will only
+
establish and setup the WebSocket communication and then return control back
+
to the application.
+

+
Once such a setup has been successfully performed, the application can proceed
+
and use \fIcurl_ws_recv(3)\fP and \fIcurl_ws_send(3)\fP freely to exchange
+
WebSocket messages with the server.
+
.SH AVAILABILITY
+
The WebSocket API was introduced as experimental in 7.86.0 and is still
+
experimental today.
+

+
It is only built-in if explicitly opted in at build time. We discourage use of
+
the WebSocket API in production because of its experimental state. We might
+
change API, ABI and behavior before this "goes live".
+
.SH "SEE ALSO"
+
.BR curl_ws_meta "(3), " curl_ws_recv "(3), " curl_ws_send "(3), "
+
.BR curl_easy_init "(3), " CURLOPT_CONNECT_ONLY "(3), "
+
.BR CURLOPT_WRITEFUNCTION "(3)" CURLOPT_WS_OPTIONS "(3), "
+

modified external/curl/docs/libcurl/libcurl.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH libcurl 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH libcurl 3 "June 14, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
libcurl \- client-side URL transfers
@@ -29,21 +29,12 @@ libcurl \- client-side URL transfers
This is a short overview on how to use libcurl in your C programs. There are
specific man pages for each function mentioned in here. See
\fIlibcurl-easy(3)\fP, \fIlibcurl-multi(3)\fP, \fIlibcurl-share(3)\fP,
-
\fIlibcurl-url(3)\fP and \fIlibcurl-tutorial(3)\fP for in-depth understanding
-
on how to program with libcurl.
+
\fIlibcurl-url(3)\fP, \fIlibcurl-ws(3)\fP and \fIlibcurl-tutorial(3)\fP for
+
in-depth understanding on how to program with libcurl.

There are many bindings available that bring libcurl access to your favorite
language. Look elsewhere for documentation on those.
-

-
libcurl has a global constant environment that you must set up and maintain
-
while using libcurl. This essentially means you call \fIcurl_global_init(3)\fP
-
at the start of your program and \fIcurl_global_cleanup(3)\fP at the end. See
-
\fBGLOBAL CONSTANTS\fP below for details.
-

-
If libcurl was compiled with support for multiple SSL backends, the function
-
\fIcurl_global_sslset(3)\fP can be called before \fIcurl_global_init(3)\fP
-
to select the active SSL backend.
-

+
.SH TRANSFERS
To transfer files, you create an "easy handle" using \fIcurl_easy_init(3)\fP
for a single individual transfer (in either direction). You then set your
desired set of options in that handle with \fIcurl_easy_setopt(3)\fP. Options
@@ -66,28 +57,29 @@ similar. The multi interface allows you to select() on libcurl action, and
even to easily download multiple files simultaneously using a single
thread. See further details in the \fIlibcurl-multi(3)\fP man page.

-
You can have multiple easy handles share certain data, even if they are used
-
in different threads. This magic is setup using the share interface, as
-
described in the \fIlibcurl-share(3)\fP man page.
-

-
There is also a series of other helpful functions to use, including these:
+
.SH "SUPPORT INTERFACES"
+
There is also a series of other helpful functions and interface families to
+
use, including these:
.RS
.IP curl_version_info()
-
gets detailed libcurl (and other used libraries) version info
+
gets detailed libcurl (and other used libraries) version info. See
+
\fIcurl_version_info(3)\fP
.IP curl_getdate()
-
converts a date string to time_t
+
converts a date string to time_t. See \fIcurl_getdate(3)\fP
.IP curl_easy_getinfo()
-
get information about a performed transfer
-
.IP curl_formadd()
-
helps building an HTTP form POST
-
.IP curl_formfree()
-
free a list built with \fIcurl_formadd(3)\fP
+
get information about a performed transfer. See \fIcurl_easy_getinfo(3)\fP
+
.IP curl_mime_addpart()
+
helps building an HTTP form POST. See \fIcurl_mime_addpart(3)\fP
.IP curl_slist_append()
-
builds a linked list
-
.IP curl_slist_free_all()
-
frees a whole curl_slist
-
.IP curl_url_set()
-
parses a URL
+
builds a linked list. See \fIcurl_slist_append(3)\fP
+
.IP Sharing data between transfers
+
You can have multiple easy handles share certain data, even if they are used
+
in different threads. This magic is setup using the share interface, as
+
described in the \fIlibcurl-share(3)\fP man page.
+
.IP "URL Parsing"
+
URL parsing and manipulations. See \fIlibcurl-url(3)\fP
+
.IP "WebSocket communication"
+
See \fIlibcurl-ws(3)\fP
.RE

.SH "LINKING WITH LIBCURL"
@@ -155,6 +147,10 @@ that library that describes the SSL protocol.
allocate resources (e.g. the memory for the GNU TLS tree mentioned above), so
the companion function \fIcurl_global_cleanup(3)\fP releases them.

+
If libcurl was compiled with support for multiple SSL backends, the function
+
\fIcurl_global_sslset(3)\fP can be called before \fIcurl_global_init(3)\fP
+
to select the active SSL backend.
+

The global constant functions are thread-safe since libcurl 7.84.0 if
\fIcurl_version_info(3)\fP has the CURL_VERSION_THREADSAFE feature bit set
(most platforms). Read \fIlibcurl-thread(3)\fP for thread safety guidelines.
modified external/curl/docs/libcurl/opts/CURLINFO_ACTIVESOCKET.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_ACTIVESOCKET 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH CURLINFO_ACTIVESOCKET 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
CURLINFO_ACTIVESOCKET \- get the active socket
modified external/curl/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_APPCONNECT_TIME 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH CURLINFO_APPCONNECT_TIME 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
CURLINFO_APPCONNECT_TIME \- get the time until the SSL/SSH handshake is completed
modified external/curl/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME_T.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_APPCONNECT_TIME_T 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH CURLINFO_APPCONNECT_TIME_T 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
CURLINFO_APPCONNECT_TIME_T \- time until the SSL/SSH handshake completed
modified external/curl/docs/libcurl/opts/CURLINFO_CAINFO.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_CAINFO 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH CURLINFO_CAINFO 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
CURLINFO_CAINFO \- get the default built-in CA certificate path
modified external/curl/docs/libcurl/opts/CURLINFO_CAPATH.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_CAPATH 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH CURLINFO_CAPATH 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
CURLINFO_CAPATH \- get the default built-in CA path string
modified external/curl/docs/libcurl/opts/CURLINFO_CERTINFO.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_CERTINFO 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH CURLINFO_CERTINFO 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
CURLINFO_CERTINFO \- get the TLS certificate chain
modified external/curl/docs/libcurl/opts/CURLINFO_CONDITION_UNMET.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_CONDITION_UNMET 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH CURLINFO_CONDITION_UNMET 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
CURLINFO_CONDITION_UNMET \- get info on unmet time conditional or 304 HTTP response.
modified external/curl/docs/libcurl/opts/CURLINFO_CONNECT_TIME.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_CONNECT_TIME 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH CURLINFO_CONNECT_TIME 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
CURLINFO_CONNECT_TIME \- get the time until connect
modified external/curl/docs/libcurl/opts/CURLINFO_CONNECT_TIME_T.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_CONNECT_TIME_T 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH CURLINFO_CONNECT_TIME_T 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
CURLINFO_CONNECT_TIME_T \- get the time until connect
added external/curl/docs/libcurl/opts/CURLINFO_CONN_ID.3
@@ -0,0 +1,70 @@
+
.\" **************************************************************************
+
.\" *                                  _   _ ____  _
+
.\" *  Project                     ___| | | |  _ \| |
+
.\" *                             / __| | | | |_) | |
+
.\" *                            | (__| |_| |  _ <| |___
+
.\" *                             \___|\___/|_| \_\_____|
+
.\" *
+
.\" * Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
+
.\" *
+
.\" * This software is licensed as described in the file COPYING, which
+
.\" * you should have received as part of this distribution. The terms
+
.\" * are also available at https://curl.se/docs/copyright.html.
+
.\" *
+
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+
.\" * copies of the Software, and permit persons to whom the Software is
+
.\" * furnished to do so, under the terms of the COPYING file.
+
.\" *
+
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+
.\" * KIND, either express or implied.
+
.\" *
+
.\" * SPDX-License-Identifier: curl
+
.\" *
+
.\" **************************************************************************
+
.\"
+
.TH CURLINFO_CONN_ID 3 "May 23, 2023" "libcurl 8.2.1" "libcurl"
+

+
.SH NAME
+
CURLINFO_CONN_ID \- get the ID of the last connection used by the handle
+
.SH SYNOPSIS
+
.nf
+
#include <curl/curl.h>
+

+
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONN_ID,
+
                           curl_off_t *conn_id);
+
.fi
+
.SH DESCRIPTION
+
Pass a pointer to a \fIcurl_off_t\fP to receive the connection identifier last
+
used by the handle. Stores -1 if there was no connection used.
+

+
The connection id is unique among all connections using the same
+
connection cache. This is implicitly the case for all connections in the
+
same multi handle.
+

+
.SH PROTOCOLS
+
All
+
.SH EXAMPLE
+
.nf
+
CURL *curl = curl_easy_init();
+
if(curl) {
+
  curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
+

+
  /* Perform the request */
+
  res = curl_easy_perform(curl);
+

+
  if(!res) {
+
    curl_off_t conn_id;
+
    res = curl_easy_getinfo(curl, CURLINFO_CONN_ID, &conn_id);
+
    if(!res) {
+
      printf("Connection used: %" CURL_FORMAT_CURL_OFF_T "\\n", conn_id);
+
    }
+
  }
+
}
+
.fi
+
.SH AVAILABILITY
+
Added in 8.2.0
+
.SH RETURN VALUE
+
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+
.SH "SEE ALSO"
+
.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+
.BR CURLINFO_XFER_ID "(3), "
modified external/curl/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
CURLINFO_CONTENT_LENGTH_DOWNLOAD \- get content-length of download
modified external/curl/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD_T 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD_T 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
CURLINFO_CONTENT_LENGTH_DOWNLOAD_T \- get content-length of download
modified external/curl/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_CONTENT_LENGTH_UPLOAD 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH CURLINFO_CONTENT_LENGTH_UPLOAD 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
CURLINFO_CONTENT_LENGTH_UPLOAD \- get the specified size of the upload
modified external/curl/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD_T.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_CONTENT_LENGTH_UPLOAD_T 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH CURLINFO_CONTENT_LENGTH_UPLOAD_T 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
CURLINFO_CONTENT_LENGTH_UPLOAD_T \- get the specified size of the upload
modified external/curl/docs/libcurl/opts/CURLINFO_CONTENT_TYPE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_CONTENT_TYPE 3 "April 26, 2023" "libcurl 8.1.2" "libcurl"
+
.TH CURLINFO_CONTENT_TYPE 3 "April 26, 2023" "libcurl 8.2.1" "libcurl"

.SH NAME
CURLINFO_CONTENT_TYPE \- get Content-Type
modified external/curl/docs/libcurl/opts/CURLINFO_COOKIELIST.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_COOKIELIST 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_COOKIELIST 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_COOKIELIST \- get all known cookies
modified external/curl/docs/libcurl/opts/CURLINFO_EFFECTIVE_METHOD.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_EFFECTIVE_METHOD 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_EFFECTIVE_METHOD 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_EFFECTIVE_METHOD \- get the last used HTTP method
modified external/curl/docs/libcurl/opts/CURLINFO_EFFECTIVE_URL.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_EFFECTIVE_URL 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_EFFECTIVE_URL 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_EFFECTIVE_URL \- get the last used URL
modified external/curl/docs/libcurl/opts/CURLINFO_FILETIME.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_FILETIME 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_FILETIME 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_FILETIME \- get the remote time of the retrieved document
modified external/curl/docs/libcurl/opts/CURLINFO_FILETIME_T.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_FILETIME 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_FILETIME 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_FILETIME_T \- get the remote time of the retrieved document
modified external/curl/docs/libcurl/opts/CURLINFO_FTP_ENTRY_PATH.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_FTP_ENTRY_PATH 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_FTP_ENTRY_PATH 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_FTP_ENTRY_PATH \- get entry path in FTP server
modified external/curl/docs/libcurl/opts/CURLINFO_HEADER_SIZE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_HEADER_SIZE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_HEADER_SIZE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_HEADER_SIZE \- get size of retrieved headers
modified external/curl/docs/libcurl/opts/CURLINFO_HTTPAUTH_AVAIL.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_HTTPAUTH_AVAIL 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_HTTPAUTH_AVAIL 3 "June 25, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_HTTPAUTH_AVAIL \- get available HTTP authentication methods
@@ -67,8 +67,8 @@ if(curl) {
}
.fi
.SH AVAILABILITY
-
Added RFC2617 in 7.10.8
-
Added RFC7616 in 7.57.0
+
Added RFC 2617 in 7.10.8
+
Added RFC 7616 in 7.57.0
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
modified external/curl/docs/libcurl/opts/CURLINFO_HTTP_CONNECTCODE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_HTTP_CONNECTCODE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_HTTP_CONNECTCODE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_HTTP_CONNECTCODE \- get the CONNECT response code
modified external/curl/docs/libcurl/opts/CURLINFO_HTTP_VERSION.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_HTTP_VERSION 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_HTTP_VERSION 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_HTTP_VERSION \- get the http version used in the connection
modified external/curl/docs/libcurl/opts/CURLINFO_LASTSOCKET.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_LASTSOCKET 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_LASTSOCKET 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_LASTSOCKET \- get the last socket used
modified external/curl/docs/libcurl/opts/CURLINFO_LOCAL_IP.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_LOCAL_IP 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_LOCAL_IP 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_LOCAL_IP \- get local IP address of last connection
modified external/curl/docs/libcurl/opts/CURLINFO_LOCAL_PORT.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_LOCAL_PORT 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_LOCAL_PORT 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_LOCAL_PORT \- get the latest local port number
modified external/curl/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_NAMELOOKUP_TIME 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_NAMELOOKUP_TIME 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_NAMELOOKUP_TIME \- get the name lookup time
modified external/curl/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME_T.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_NAMELOOKUP_TIME_T 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_NAMELOOKUP_TIME_T 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_NAMELOOKUP_TIME_T \- get the name lookup time in microseconds
modified external/curl/docs/libcurl/opts/CURLINFO_NUM_CONNECTS.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_NUM_CONNECTS 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_NUM_CONNECTS 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_NUM_CONNECTS \- get number of created connections
modified external/curl/docs/libcurl/opts/CURLINFO_OS_ERRNO.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_OS_ERRNO 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_OS_ERRNO 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_OS_ERRNO \- get errno number from last connect failure
modified external/curl/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_PRETRANSFER_TIME 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_PRETRANSFER_TIME 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_PRETRANSFER_TIME \- get the time until the file transfer start
modified external/curl/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME_T.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_PRETRANSFER_TIME_T 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_PRETRANSFER_TIME_T 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_PRETRANSFER_TIME_T \- get the time until the file transfer start
modified external/curl/docs/libcurl/opts/CURLINFO_PRIMARY_IP.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_PRIMARY_IP 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_PRIMARY_IP 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_PRIMARY_IP \- get IP address of last connection
modified external/curl/docs/libcurl/opts/CURLINFO_PRIMARY_PORT.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_PRIMARY_PORT 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_PRIMARY_PORT 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_PRIMARY_PORT \- get the latest destination port number
modified external/curl/docs/libcurl/opts/CURLINFO_PRIVATE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_PRIVATE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_PRIVATE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_PRIVATE \- get the private pointer
modified external/curl/docs/libcurl/opts/CURLINFO_PROTOCOL.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_PROTOCOL 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_PROTOCOL 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_PROTOCOL \- get the protocol used in the connection
modified external/curl/docs/libcurl/opts/CURLINFO_PROXYAUTH_AVAIL.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_PROXYAUTH_AVAIL 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_PROXYAUTH_AVAIL 3 "June 25, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_PROXYAUTH_AVAIL \- get available HTTP proxy authentication methods
@@ -69,8 +69,8 @@ if(curl) {
}
.fi
.SH AVAILABILITY
-
Added RFC2617 in 7.10.8
-
Added RFC7616 in 7.57.0
+
Added RFC 2617 in 7.10.8
+
Added RFC 7616 in 7.57.0
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
modified external/curl/docs/libcurl/opts/CURLINFO_PROXY_ERROR.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_PROXY_ERROR 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_PROXY_ERROR 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_PROXY_ERROR \- get the detailed (SOCKS) proxy error
modified external/curl/docs/libcurl/opts/CURLINFO_PROXY_SSL_VERIFYRESULT.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_PROXY_SSL_VERIFYRESULT 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_PROXY_SSL_VERIFYRESULT 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_PROXY_SSL_VERIFYRESULT \- get the result of the proxy certificate verification
modified external/curl/docs/libcurl/opts/CURLINFO_REDIRECT_COUNT.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_REDIRECT_COUNT 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_REDIRECT_COUNT 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_REDIRECT_COUNT \- get the number of redirects
modified external/curl/docs/libcurl/opts/CURLINFO_REDIRECT_TIME.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_REDIRECT_TIME 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_REDIRECT_TIME 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_REDIRECT_TIME \- get the time for all redirection steps
modified external/curl/docs/libcurl/opts/CURLINFO_REDIRECT_TIME_T.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_REDIRECT_TIME_T 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_REDIRECT_TIME_T 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_REDIRECT_TIME_T \- get the time for all redirection steps
modified external/curl/docs/libcurl/opts/CURLINFO_REDIRECT_URL.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_REDIRECT_URL 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_REDIRECT_URL 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_REDIRECT_URL \- get the URL a redirect would go to
modified external/curl/docs/libcurl/opts/CURLINFO_REFERER.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_REFERER 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_REFERER 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_REFERER \- get the referrer header
modified external/curl/docs/libcurl/opts/CURLINFO_REQUEST_SIZE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_REQUEST_SIZE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_REQUEST_SIZE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_REQUEST_SIZE \- get size of sent request
modified external/curl/docs/libcurl/opts/CURLINFO_RESPONSE_CODE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_RESPONSE_CODE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_RESPONSE_CODE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_RESPONSE_CODE \- get the last response code
modified external/curl/docs/libcurl/opts/CURLINFO_RETRY_AFTER.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_RETRY_AFTER 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_RETRY_AFTER 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_RETRY_AFTER \- returns the Retry-After retry delay
modified external/curl/docs/libcurl/opts/CURLINFO_RTSP_CLIENT_CSEQ.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_RTSP_CLIENT_CSEQ 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_RTSP_CLIENT_CSEQ 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_RTSP_CLIENT_CSEQ \- get the next RTSP client CSeq
modified external/curl/docs/libcurl/opts/CURLINFO_RTSP_CSEQ_RECV.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_RTSP_CSEQ_RECV 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_RTSP_CSEQ_RECV 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_RTSP_CSEQ_RECV \- get the recently received CSeq
modified external/curl/docs/libcurl/opts/CURLINFO_RTSP_SERVER_CSEQ.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_RTSP_SERVER_CSEQ 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_RTSP_SERVER_CSEQ 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_RTSP_SERVER_CSEQ \- get the next RTSP server CSeq
modified external/curl/docs/libcurl/opts/CURLINFO_RTSP_SESSION_ID.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_RTSP_SESSION_ID 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_RTSP_SESSION_ID 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_RTSP_SESSION_ID \- get RTSP session ID
modified external/curl/docs/libcurl/opts/CURLINFO_SCHEME.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_SCHEME 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_SCHEME 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_SCHEME \- get the URL scheme (sometimes called protocol) used in the connection
modified external/curl/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_SIZE_DOWNLOAD 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_SIZE_DOWNLOAD 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_SIZE_DOWNLOAD \- get the number of downloaded bytes
modified external/curl/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD_T.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_SIZE_DOWNLOAD_T 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_SIZE_DOWNLOAD_T 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_SIZE_DOWNLOAD_T \- get the number of downloaded bytes
modified external/curl/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_SIZE_UPLOAD 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_SIZE_UPLOAD 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_SIZE_UPLOAD \- get the number of uploaded bytes
modified external/curl/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD_T.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_SIZE_UPLOAD_T 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_SIZE_UPLOAD_T 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_SIZE_UPLOAD_T \- get the number of uploaded bytes
modified external/curl/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_SPEED_DOWNLOAD 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_SPEED_DOWNLOAD 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_SPEED_DOWNLOAD \- get download speed
modified external/curl/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD_T.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_SPEED_DOWNLOAD_T 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_SPEED_DOWNLOAD_T 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_SPEED_DOWNLOAD_T \- get download speed
modified external/curl/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_SPEED_UPLOAD 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_SPEED_UPLOAD 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_SPEED_UPLOAD \- get upload speed
modified external/curl/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD_T.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_SPEED_UPLOAD_T 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_SPEED_UPLOAD_T 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_SPEED_UPLOAD_T \- get upload speed
modified external/curl/docs/libcurl/opts/CURLINFO_SSL_ENGINES.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_SSL_ENGINES 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_SSL_ENGINES 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_SSL_ENGINES \- get an slist of OpenSSL crypto-engines
modified external/curl/docs/libcurl/opts/CURLINFO_SSL_VERIFYRESULT.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_SSL_VERIFYRESULT 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_SSL_VERIFYRESULT 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_SSL_VERIFYRESULT \- get the result of the certificate verification
modified external/curl/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_STARTTRANSFER_TIME 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_STARTTRANSFER_TIME 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_STARTTRANSFER_TIME \- get the time until the first byte is received
modified external/curl/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME_T.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_STARTTRANSFER_TIME_T 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_STARTTRANSFER_TIME_T 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_STARTTRANSFER_TIME_T \- get the time until the first byte is received
modified external/curl/docs/libcurl/opts/CURLINFO_TLS_SESSION.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_TLS_SESSION 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_TLS_SESSION 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_TLS_SESSION \- get TLS session info
modified external/curl/docs/libcurl/opts/CURLINFO_TLS_SSL_PTR.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_TLS_SSL_PTR 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_TLS_SSL_PTR 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_TLS_SESSION, CURLINFO_TLS_SSL_PTR \- get TLS session info
modified external/curl/docs/libcurl/opts/CURLINFO_TOTAL_TIME.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_TOTAL_TIME 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_TOTAL_TIME 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_TOTAL_TIME \- get total time of previous transfer
modified external/curl/docs/libcurl/opts/CURLINFO_TOTAL_TIME_T.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLINFO_TOTAL_TIME_T 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLINFO_TOTAL_TIME_T 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLINFO_TOTAL_TIME_T \- get total time of previous transfer in microseconds
added external/curl/docs/libcurl/opts/CURLINFO_XFER_ID.3
@@ -0,0 +1,71 @@
+
.\" **************************************************************************
+
.\" *                                  _   _ ____  _
+
.\" *  Project                     ___| | | |  _ \| |
+
.\" *                             / __| | | | |_) | |
+
.\" *                            | (__| |_| |  _ <| |___
+
.\" *                             \___|\___/|_| \_\_____|
+
.\" *
+
.\" * Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
+
.\" *
+
.\" * This software is licensed as described in the file COPYING, which
+
.\" * you should have received as part of this distribution. The terms
+
.\" * are also available at https://curl.se/docs/copyright.html.
+
.\" *
+
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+
.\" * copies of the Software, and permit persons to whom the Software is
+
.\" * furnished to do so, under the terms of the COPYING file.
+
.\" *
+
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+
.\" * KIND, either express or implied.
+
.\" *
+
.\" * SPDX-License-Identifier: curl
+
.\" *
+
.\" **************************************************************************
+
.\"
+
.TH CURLINFO_XFER_ID 3 "May 23, 2023" "libcurl 8.2.1" "libcurl"
+

+
.SH NAME
+
CURLINFO_XFER_ID \- get the ID of a transfer
+
.SH SYNOPSIS
+
.nf
+
#include <curl/curl.h>
+

+
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_XFER_ID,
+
                           curl_off_t *xfer_id);
+
.fi
+
.SH DESCRIPTION
+
Pass a pointer to a \fIcurl_off_t\fP to receive the identifier of the
+
current/last transfer done with the handle. Stores -1 if no transfer
+
has been started yet for the handle.
+

+
The transfer id is unique among all transfers performed using the same
+
connection cache. This is implicitly the case for all transfers in the
+
same multi handle.
+

+
.SH PROTOCOLS
+
All
+
.SH EXAMPLE
+
.nf
+
CURL *curl = curl_easy_init();
+
if(curl) {
+
  curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
+

+
  /* Perform the request */
+
  res = curl_easy_perform(curl);
+

+
  if(!res) {
+
    curl_off_t xfer_id;
+
    res = curl_easy_getinfo(curl, CURLINFO_XFER_ID, &xfer_id);
+
    if(!res) {
+
      printf("Transfer ID: %" CURL_FORMAT_CURL_OFF_T "\\n", xfer_id);
+
    }
+
  }
+
}
+
.fi
+
.SH AVAILABILITY
+
Added in 8.2.0
+
.SH RETURN VALUE
+
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+
.SH "SEE ALSO"
+
.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+
.BR CURLINFO_CONN_ID "(3), "
modified external/curl/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE \- chunk length threshold for pipelining
modified external/curl/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE \- size threshold for pipelining penalty
modified external/curl/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLMOPT_MAXCONNECTS 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLMOPT_MAXCONNECTS 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLMOPT_MAXCONNECTS \- size of connection cache
modified external/curl/docs/libcurl/opts/CURLMOPT_MAX_CONCURRENT_STREAMS.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLMOPT_MAX_CONCURRENT_STREAMS 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLMOPT_MAX_CONCURRENT_STREAMS 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLMOPT_MAX_CONCURRENT_STREAMS \- max concurrent streams for http2
modified external/curl/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLMOPT_MAX_HOST_CONNECTIONS 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLMOPT_MAX_HOST_CONNECTIONS 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLMOPT_MAX_HOST_CONNECTIONS \- max number of connections to a single host
modified external/curl/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLMOPT_MAX_PIPELINE_LENGTH 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLMOPT_MAX_PIPELINE_LENGTH 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLMOPT_MAX_PIPELINE_LENGTH \- maximum number of requests in a pipeline
modified external/curl/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLMOPT_MAX_TOTAL_CONNECTIONS 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLMOPT_MAX_TOTAL_CONNECTIONS 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLMOPT_MAX_TOTAL_CONNECTIONS \- max simultaneously open connections
modified external/curl/docs/libcurl/opts/CURLMOPT_PIPELINING.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLMOPT_PIPELINING 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLMOPT_PIPELINING 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLMOPT_PIPELINING \- enable HTTP pipelining and multiplexing
modified external/curl/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLMOPT_PIPELINING_SERVER_BL 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLMOPT_PIPELINING_SERVER_BL 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLMOPT_PIPELINING_SERVER_BL \- pipelining server block list
modified external/curl/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLMOPT_PIPELINING_SITE_BL 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLMOPT_PIPELINING_SITE_BL 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLMOPT_PIPELINING_SITE_BL \- pipelining host block list
modified external/curl/docs/libcurl/opts/CURLMOPT_PUSHDATA.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLMOPT_PUSHDATA 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLMOPT_PUSHDATA 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLMOPT_PUSHDATA \- pointer to pass to push callback
modified external/curl/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLMOPT_PUSHFUNCTION 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLMOPT_PUSHFUNCTION 3 "June 09, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLMOPT_PUSHFUNCTION \- callback that approves or denies server pushes
@@ -30,9 +30,6 @@ CURLMOPT_PUSHFUNCTION \- callback that approves or denies server pushes
.nf
#include <curl/curl.h>

-
char *curl_pushheader_bynum(struct curl_pushheaders *h, size_t num);
-
char *curl_pushheader_byname(struct curl_pushheaders *h, const char *name);
-

int curl_push_callback(CURL *parent,
                       CURL *easy,
                       size_t num_headers,
@@ -71,17 +68,12 @@ multi handle, the callback must not do that by itself.

The callback can access PUSH_PROMISE headers with two accessor
functions. These functions can only be used from within this callback and they
-
can only access the PUSH_PROMISE headers. The normal response headers will be
-
passed to the header callback for pushed streams just as for normal streams.
-
.IP curl_pushheader_bynum
-
Returns the header at index \fInum\fP (or NULL). The returned pointer points
-
to a "name:value" string that will be freed when this callback returns.
-
.IP curl_pushheader_byname
-
Returns the value for the given header name (or NULL). This is a shortcut so
-
that the application does not have to loop through all headers to find the one
-
it is interested in. The data pointed will be freed when this callback
-
returns. If more than one header field use the same name, this returns only
-
the first one.
+
can only access the PUSH_PROMISE headers: \fIcurl_pushheader_byname(3)\fP and
+
\fIcurl_pushheader_bynum(3)\fP. The normal response headers will be passed to
+
the header callback for pushed streams just as for normal streams.
+

+
The header fields can also be accessed with \fIcurl_easy_header(3)\fP,
+
introduced in later libcurl versions.
.SH CALLBACK RETURN VALUE
.IP "CURL_PUSH_OK (0)"
The application has accepted the stream and it can now start receiving data,
modified external/curl/docs/libcurl/opts/CURLMOPT_SOCKETDATA.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLMOPT_SOCKETDATA 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLMOPT_SOCKETDATA 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLMOPT_SOCKETDATA \- custom pointer passed to the socket callback
modified external/curl/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLMOPT_SOCKETFUNCTION 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLMOPT_SOCKETFUNCTION 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLMOPT_SOCKETFUNCTION \- callback informed about what to wait for
modified external/curl/docs/libcurl/opts/CURLMOPT_TIMERDATA.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLMOPT_TIMERDATA 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLMOPT_TIMERDATA 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLMOPT_TIMERDATA \- custom pointer to pass to timer callback
modified external/curl/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLMOPT_TIMERFUNCTION 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLMOPT_TIMERFUNCTION 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLMOPT_TIMERFUNCTION \- callback to receive timeout values
modified external/curl/docs/libcurl/opts/CURLOPT_ABSTRACT_UNIX_SOCKET.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_ABSTRACT_UNIX_SOCKET 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_ABSTRACT_UNIX_SOCKET 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_ABSTRACT_UNIX_SOCKET \- abstract Unix domain socket
modified external/curl/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_ACCEPTTIMEOUT_MS 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_ACCEPTTIMEOUT_MS 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_ACCEPTTIMEOUT_MS \- timeout waiting for FTP server to connect back
modified external/curl/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_ACCEPT_ENCODING 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_ACCEPT_ENCODING 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_ACCEPT_ENCODING \- automatic decompression of HTTP downloads
modified external/curl/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_ADDRESS_SCOPE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_ADDRESS_SCOPE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_ADDRESS_SCOPE \- scope id for IPv6 addresses
modified external/curl/docs/libcurl/opts/CURLOPT_ALTSVC.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_ALTSVC 3 "April 27, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_ALTSVC 3 "April 27, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_ALTSVC \- alt-svc cache file name
modified external/curl/docs/libcurl/opts/CURLOPT_ALTSVC_CTRL.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_ALTSVC_CTRL 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_ALTSVC_CTRL 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_ALTSVC_CTRL \- control alt-svc behavior
modified external/curl/docs/libcurl/opts/CURLOPT_APPEND.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_APPEND 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_APPEND 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_APPEND \- append to the remote file
modified external/curl/docs/libcurl/opts/CURLOPT_AUTOREFERER.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_AUTOREFERER 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_AUTOREFERER 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_AUTOREFERER \- automatically update the referer header
modified external/curl/docs/libcurl/opts/CURLOPT_AWS_SIGV4.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_AWS_SIGV4 3 "April 27, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_AWS_SIGV4 3 "June 12, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_AWS_SIGV4 \- V4 signature
@@ -70,19 +70,15 @@ HTTP
.nf
CURL *curl = curl_easy_init();

-
struct curl_slist *list = NULL;
-

if(curl) {
  curl_easy_setopt(curl, CURLOPT_URL,
                  "https://service.region.example.com/uri");
  curl_easy_setopt(c, CURLOPT_AWS_SIGV4, "provider1:provider2");

-
  /* service and region also could be set in CURLOPT_AWS_SIGV4 */
-
  /*
+
  /* service and region can also be set in CURLOPT_AWS_SIGV4 */
  curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/uri");
  curl_easy_setopt(c, CURLOPT_AWS_SIGV4,
                   "provider1:provider2:region:service");
-
  */

  curl_easy_setopt(c, CURLOPT_USERPWD, "MY_ACCESS_KEY:MY_SECRET_KEY");
  curl_easy_perform(curl);
modified external/curl/docs/libcurl/opts/CURLOPT_BUFFERSIZE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_BUFFERSIZE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_BUFFERSIZE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_BUFFERSIZE \- receive buffer size
modified external/curl/docs/libcurl/opts/CURLOPT_CAINFO.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_CAINFO 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_CAINFO 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_CAINFO \- path to Certificate Authority (CA) bundle
modified external/curl/docs/libcurl/opts/CURLOPT_CAINFO_BLOB.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_CAINFO_BLOB 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_CAINFO_BLOB 3 "July 16, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_CAINFO_BLOB \- Certificate Authority (CA) bundle in PEM format
@@ -65,7 +65,7 @@ if(curl) {
Added in 7.77.0.

This option is supported by the BearSSL (since 7.79.0), mbedTLS (since 7.81.0),
-
rustls (since 7.82.0), OpenSSL, Secure Transport and Schannel backends.
+
rustls (since 7.82.0), wolfSSL (since 8.2.0), OpenSSL, Secure Transport and Schannel backends.
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or
CURLE_OUT_OF_MEMORY if there was insufficient heap space.
modified external/curl/docs/libcurl/opts/CURLOPT_CAPATH.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_CAPATH 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_CAPATH 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_CAPATH \- directory holding CA certificates
modified external/curl/docs/libcurl/opts/CURLOPT_CA_CACHE_TIMEOUT.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_CA_CACHE_TIMEOUT 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_CA_CACHE_TIMEOUT 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_CA_CACHE_TIMEOUT \- life-time for cached certificate stores
modified external/curl/docs/libcurl/opts/CURLOPT_CERTINFO.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_CERTINFO 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_CERTINFO 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_CERTINFO \- request SSL certificate information
modified external/curl/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_CHUNK_BGN_FUNCTION 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_CHUNK_BGN_FUNCTION 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_CHUNK_BGN_FUNCTION \- callback before a transfer with FTP wildcard match
modified external/curl/docs/libcurl/opts/CURLOPT_CHUNK_DATA.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_CHUNK_DATA 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_CHUNK_DATA 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_CHUNK_DATA \- pointer passed to the FTP chunk callbacks
modified external/curl/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_CHUNK_END_FUNCTION 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_CHUNK_END_FUNCTION 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_CHUNK_END_FUNCTION \- callback after a transfer with FTP wildcard match
modified external/curl/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_CLOSESOCKETDATA 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_CLOSESOCKETDATA 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_CLOSESOCKETDATA \- pointer passed to the socket close callback
modified external/curl/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_CLOSESOCKETFUNCTION 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_CLOSESOCKETFUNCTION 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_CLOSESOCKETFUNCTION \- callback to socket close replacement
modified external/curl/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_CONNECTTIMEOUT 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_CONNECTTIMEOUT 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_CONNECTTIMEOUT \- timeout for the connect phase
modified external/curl/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_CONNECTTIMEOUT_MS 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_CONNECTTIMEOUT_MS 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_CONNECTTIMEOUT_MS \- timeout for the connect phase
modified external/curl/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_CONNECT_ONLY 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_CONNECT_ONLY 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_CONNECT_ONLY \- stop when connected to target server
modified external/curl/docs/libcurl/opts/CURLOPT_CONNECT_TO.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_CONNECT_TO 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_CONNECT_TO 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_CONNECT_TO \- connect to a specific host and port instead of the URL's host and port
modified external/curl/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_CONV_FROM_NETWORK_FUNCTION 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_CONV_FROM_NETWORK_FUNCTION 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_CONV_FROM_NETWORK_FUNCTION \- convert data from network to host encoding
modified external/curl/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_CONV_FROM_UTF8_FUNCTION 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_CONV_FROM_UTF8_FUNCTION 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_CONV_FROM_UTF8_FUNCTION \- convert data from UTF8 to host encoding
modified external/curl/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_CONV_TO_NETWORK_FUNCTION 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_CONV_TO_NETWORK_FUNCTION 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_CONV_TO_NETWORK_FUNCTION \- convert data to network from host encoding
modified external/curl/docs/libcurl/opts/CURLOPT_COOKIE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_COOKIE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_COOKIE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_COOKIE \- HTTP Cookie header
modified external/curl/docs/libcurl/opts/CURLOPT_COOKIEFILE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_COOKIEFILE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_COOKIEFILE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_COOKIEFILE \- file name to read cookies from
modified external/curl/docs/libcurl/opts/CURLOPT_COOKIEJAR.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_COOKIEJAR 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_COOKIEJAR 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_COOKIEJAR \- file name to store cookies to
modified external/curl/docs/libcurl/opts/CURLOPT_COOKIELIST.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_COOKIELIST 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_COOKIELIST 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_COOKIELIST \- add to or manipulate cookies held in memory
modified external/curl/docs/libcurl/opts/CURLOPT_COOKIESESSION.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_COOKIESESSION 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_COOKIESESSION 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_COOKIESESSION \- start a new cookie session
modified external/curl/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_COPYPOSTFIELDS 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_COPYPOSTFIELDS 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_COPYPOSTFIELDS \- have libcurl copy data to POST
modified external/curl/docs/libcurl/opts/CURLOPT_CRLF.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_CRLF 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_CRLF 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_CRLF \- CRLF conversion
modified external/curl/docs/libcurl/opts/CURLOPT_CRLFILE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_CRLFILE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_CRLFILE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_CRLFILE \- Certificate Revocation List file
modified external/curl/docs/libcurl/opts/CURLOPT_CURLU.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_CURLU 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_CURLU 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_CURLU \- URL in URL handle format
modified external/curl/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_CUSTOMREQUEST 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_CUSTOMREQUEST 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_CUSTOMREQUEST \- custom request method
modified external/curl/docs/libcurl/opts/CURLOPT_DEBUGDATA.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_DEBUGDATA 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_DEBUGDATA 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_DEBUGDATA \- pointer passed to the debug callback
modified external/curl/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_DEBUGFUNCTION 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_DEBUGFUNCTION 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_DEBUGFUNCTION \- debug callback
modified external/curl/docs/libcurl/opts/CURLOPT_DEFAULT_PROTOCOL.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_DEFAULT_PROTOCOL 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_DEFAULT_PROTOCOL 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_DEFAULT_PROTOCOL \- default protocol to use if the URL is missing a
modified external/curl/docs/libcurl/opts/CURLOPT_DIRLISTONLY.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_DIRLISTONLY 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_DIRLISTONLY 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_DIRLISTONLY \- ask for names only in a directory listing
modified external/curl/docs/libcurl/opts/CURLOPT_DISALLOW_USERNAME_IN_URL.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_DISALLOW_USERNAME_IN_URL 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_DISALLOW_USERNAME_IN_URL 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_DISALLOW_USERNAME_IN_URL \- disallow specifying username in the URL
modified external/curl/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_DNS_CACHE_TIMEOUT 3 "May 09, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_DNS_CACHE_TIMEOUT 3 "May 09, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_DNS_CACHE_TIMEOUT \- life-time for DNS cache entries
modified external/curl/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_DNS_INTERFACE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_DNS_INTERFACE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_DNS_INTERFACE \- interface to speak DNS over
modified external/curl/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_DNS_LOCAL_IP4 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_DNS_LOCAL_IP4 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_DNS_LOCAL_IP4 \- IPv4 address to bind DNS resolves to
modified external/curl/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_DNS_LOCAL_IP6 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_DNS_LOCAL_IP6 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_DNS_LOCAL_IP6 \- IPv6 address to bind DNS resolves to
modified external/curl/docs/libcurl/opts/CURLOPT_DNS_SERVERS.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_DNS_SERVERS 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_DNS_SERVERS 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_DNS_SERVERS \- DNS servers to use
modified external/curl/docs/libcurl/opts/CURLOPT_DNS_SHUFFLE_ADDRESSES.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_DNS_SHUFFLE_ADDRESSES 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_DNS_SHUFFLE_ADDRESSES 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_DNS_SHUFFLE_ADDRESSES \- shuffle IP addresses for hostname
modified external/curl/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_DNS_USE_GLOBAL_CACHE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_DNS_USE_GLOBAL_CACHE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_DNS_USE_GLOBAL_CACHE \- global DNS cache
modified external/curl/docs/libcurl/opts/CURLOPT_DOH_SSL_VERIFYHOST.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_DOH_SSL_VERIFYHOST 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_DOH_SSL_VERIFYHOST 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_DOH_SSL_VERIFYHOST \- verify the host name in the DoH SSL certificate
modified external/curl/docs/libcurl/opts/CURLOPT_DOH_SSL_VERIFYPEER.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_DOH_SSL_VERIFYPEER 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_DOH_SSL_VERIFYPEER 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_DOH_SSL_VERIFYPEER \- verify the DoH SSL certificate
modified external/curl/docs/libcurl/opts/CURLOPT_DOH_SSL_VERIFYSTATUS.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_DOH_SSL_VERIFYSTATUS 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_DOH_SSL_VERIFYSTATUS 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_DOH_SSL_VERIFYSTATUS \- verify the DoH SSL certificate's status
modified external/curl/docs/libcurl/opts/CURLOPT_DOH_URL.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_DOH_URL 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_DOH_URL 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_DOH_URL \- provide the DNS-over-HTTPS URL
modified external/curl/docs/libcurl/opts/CURLOPT_EGDSOCKET.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_EGDSOCKET 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_EGDSOCKET 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_EGDSOCKET \- EGD socket path
modified external/curl/docs/libcurl/opts/CURLOPT_ERRORBUFFER.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_ERRORBUFFER 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_ERRORBUFFER 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_ERRORBUFFER \- error buffer for error messages
modified external/curl/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_EXPECT_100_TIMEOUT_MS 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_EXPECT_100_TIMEOUT_MS 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_EXPECT_100_TIMEOUT_MS \- timeout for Expect: 100-continue response
modified external/curl/docs/libcurl/opts/CURLOPT_FAILONERROR.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_FAILONERROR 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_FAILONERROR 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_FAILONERROR \- request failure on HTTP response >= 400
modified external/curl/docs/libcurl/opts/CURLOPT_FILETIME.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_FILETIME 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_FILETIME 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_FILETIME \- get the modification time of the remote resource
modified external/curl/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_FNMATCH_DATA 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_FNMATCH_DATA 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_FNMATCH_DATA \- pointer passed to the fnmatch callback
modified external/curl/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_FNMATCH_FUNCTION 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_FNMATCH_FUNCTION 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_FNMATCH_FUNCTION \- wildcard match callback
modified external/curl/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_FOLLOWLOCATION 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_FOLLOWLOCATION 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_FOLLOWLOCATION \- follow HTTP 3xx redirects
modified external/curl/docs/libcurl/opts/CURLOPT_FORBID_REUSE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_FORBID_REUSE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_FORBID_REUSE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_FORBID_REUSE \- make connection get closed at once after use
modified external/curl/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_FRESH_CONNECT 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_FRESH_CONNECT 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_FRESH_CONNECT \- force a new connection to be used
modified external/curl/docs/libcurl/opts/CURLOPT_FTPPORT.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_FTPPORT 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_FTPPORT 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_FTPPORT \- make FTP transfer active
modified external/curl/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_FTPSSLAUTH 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_FTPSSLAUTH 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_FTPSSLAUTH \- order in which to attempt TLS vs SSL
modified external/curl/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_FTP_ACCOUNT 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_FTP_ACCOUNT 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_FTP_ACCOUNT \- account info for FTP
modified external/curl/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_FTP_ALTERNATIVE_TO_USER 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_FTP_ALTERNATIVE_TO_USER 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_FTP_ALTERNATIVE_TO_USER \- command to use instead of USER with FTP
modified external/curl/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_FTP_CREATE_MISSING_DIRS 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_FTP_CREATE_MISSING_DIRS 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_FTP_CREATE_MISSING_DIRS \- create missing directories for FTP and SFTP
modified external/curl/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_FTP_FILEMETHOD 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_FTP_FILEMETHOD 3 "June 25, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_FTP_FILEMETHOD \- select directory traversing method for FTP
@@ -42,7 +42,7 @@ what the standards say should work.
The argument should be one of the following alternatives:
.IP CURLFTPMETHOD_MULTICWD
libcurl does a single CWD operation for each path part in the given URL. For
-
deep hierarchies this means many commands. This is how RFC1738 says it should
+
deep hierarchies this means many commands. This is how RFC 1738 says it should
be done. This is the default but the slowest behavior.
.IP CURLFTPMETHOD_NOCWD
libcurl does no CWD at all. libcurl will do SIZE, RETR, STOR etc and give a
modified external/curl/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_FTP_SKIP_PASV_IP 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_FTP_SKIP_PASV_IP 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_FTP_SKIP_PASV_IP \- ignore the IP address in the PASV response
modified external/curl/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_FTP_SSL_CCC 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_FTP_SSL_CCC 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_FTP_SSL_CCC \- switch off SSL again with FTP after auth
modified external/curl/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_FTP_USE_EPRT 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_FTP_USE_EPRT 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_FTP_USE_EPRT \- use EPRT for FTP
modified external/curl/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_FTP_USE_EPSV 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_FTP_USE_EPSV 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_FTP_USE_EPSV \- use EPSV for FTP
modified external/curl/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_FTP_USE_PRET 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_FTP_USE_PRET 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_FTP_USE_PRET \- use PRET for FTP
modified external/curl/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_GSSAPI_DELEGATION 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_GSSAPI_DELEGATION 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_GSSAPI_DELEGATION \- allowed GSS-API delegation
modified external/curl/docs/libcurl/opts/CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS \- head start for IPv6 for happy eyeballs
modified external/curl/docs/libcurl/opts/CURLOPT_HAPROXYPROTOCOL.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_HAPROXYPROTOCOL 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_HAPROXYPROTOCOL 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_HAPROXYPROTOCOL \- send HAProxy PROXY protocol v1 header
added external/curl/docs/libcurl/opts/CURLOPT_HAPROXY_CLIENT_IP.3
@@ -0,0 +1,64 @@
+
.\" **************************************************************************
+
.\" *                                  _   _ ____  _
+
.\" *  Project                     ___| | | |  _ \| |
+
.\" *                             / __| | | | |_) | |
+
.\" *                            | (__| |_| |  _ <| |___
+
.\" *                             \___|\___/|_| \_\_____|
+
.\" *
+
.\" * Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
+
.\" *
+
.\" * This software is licensed as described in the file COPYING, which
+
.\" * you should have received as part of this distribution. The terms
+
.\" * are also available at https://curl.se/docs/copyright.html.
+
.\" *
+
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+
.\" * copies of the Software, and permit persons to whom the Software is
+
.\" * furnished to do so, under the terms of the COPYING file.
+
.\" *
+
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+
.\" * KIND, either express or implied.
+
.\" *
+
.\" * SPDX-License-Identifier: curl
+
.\" *
+
.\" **************************************************************************
+
.\"
+
.TH CURLOPT_HAPROXY_CLIENT_IP 3 "March 16, 2023" "ibcurl 8.2.1" libcurl
+

+
.SH NAME
+
CURLOPT_HAPROXY_CLIENT_IP \- set HAProxy PROXY protocol client IP
+
.SH SYNOPSIS
+
.nf
+
#include <curl/curl.h>
+

+
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HAPROXY_CLIENT_IP,
+
                          char *client_ip);
+
.fi
+
.SH DESCRIPTION
+
When this parameter is set to a valid IPv4 or IPv6, the library will
+
not send this address in the HAProxy PROXY protocol
+
v1 header at beginning of the connection.
+

+
This option is primarily useful when sending test requests to verify that
+
a service is working as intended.
+

+
.SH DEFAULT
+
no HAProxy header will be sent
+
.SH PROTOCOLS
+
HTTP, HAProxy PROTOCOL
+
.SH EXAMPLE
+
.nf
+
CURL *curl = curl_easy_init();
+
if(curl) {
+
  CURLcode ret;
+
  curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
+
  curl_easy_setopt(curl, CURLOPT_HAPROXY_CLIENT_IP, "1.1.1.1");
+
  ret = curl_easy_perform(curl);
+
}
+
.fi
+
.SH AVAILABILITY
+
Along with HTTP. Added in 8.2.0.
+
.SH RETURN VALUE
+
Returns CURLE_OK if HTTP is enabled, and CURLE_UNKNOWN_OPTION if not.
+
.SH SEE ALSO
+
.BR CURLOPT_PROXY "(3), "
+
.BR CURLOPT_HAPROXYPROTOCOL "(3), "
modified external/curl/docs/libcurl/opts/CURLOPT_HEADER.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_HEADER 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_HEADER 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_HEADER \- pass headers to the data stream
modified external/curl/docs/libcurl/opts/CURLOPT_HEADERDATA.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_HEADERDATA 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_HEADERDATA 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_HEADERDATA \- pointer to pass to header callback
modified external/curl/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_HEADERFUNCTION 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_HEADERFUNCTION 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_HEADERFUNCTION \- callback that receives header data
modified external/curl/docs/libcurl/opts/CURLOPT_HEADEROPT.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_HEADEROPT 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_HEADEROPT 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_HEADEROPT \- send HTTP headers to both proxy and host or separately
modified external/curl/docs/libcurl/opts/CURLOPT_HSTS.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_HSTS 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_HSTS 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_HSTS \- HSTS cache file name
modified external/curl/docs/libcurl/opts/CURLOPT_HSTSREADDATA.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_HSTSREADDATA 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_HSTSREADDATA 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_HSTSREADDATA \- pointer passed to the HSTS read callback
modified external/curl/docs/libcurl/opts/CURLOPT_HSTSREADFUNCTION.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_HSTSREADFUNCTION 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_HSTSREADFUNCTION 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_HSTSREADFUNCTION \- read callback for HSTS hosts
modified external/curl/docs/libcurl/opts/CURLOPT_HSTSWRITEDATA.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_HSTSWRITEDATA 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_HSTSWRITEDATA 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_HSTSWRITEDATA \- pointer passed to the HSTS write callback
modified external/curl/docs/libcurl/opts/CURLOPT_HSTSWRITEFUNCTION.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_HSTSWRITEFUNCTION 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_HSTSWRITEFUNCTION 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_HSTSWRITEFUNCTION \- write callback for HSTS hosts
modified external/curl/docs/libcurl/opts/CURLOPT_HSTS_CTRL.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_HSTS_CTRL 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_HSTS_CTRL 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_HSTS_CTRL \- control HSTS behavior
modified external/curl/docs/libcurl/opts/CURLOPT_HTTP09_ALLOWED.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_HTTP09_ALLOWED 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_HTTP09_ALLOWED 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_HTTP09_ALLOWED \- allow HTTP/0.9 response
modified external/curl/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_HTTP200ALIASES 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_HTTP200ALIASES 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_HTTP200ALIASES \- alternative matches for HTTP 200 OK
modified external/curl/docs/libcurl/opts/CURLOPT_HTTPAUTH.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_HTTPAUTH 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_HTTPAUTH 3 "June 25, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_HTTPAUTH \- HTTP server authentication methods to try
@@ -50,12 +50,12 @@ that is in wide-spread use and supported virtually everywhere. This sends
the user name and password over the network in plain text, easily captured by
others.
.IP CURLAUTH_DIGEST
-
HTTP Digest authentication.  Digest authentication is defined in RFC2617 and
+
HTTP Digest authentication.  Digest authentication is defined in RFC 2617 and
is a more secure way to do authentication over public networks than the
regular old-fashioned Basic method.
.IP CURLAUTH_DIGEST_IE
HTTP Digest authentication with an IE flavor.  Digest authentication is
-
defined in RFC2617 and is a more secure way to do authentication over public
+
defined in RFC 2617 and is a more secure way to do authentication over public
networks than the regular old-fashioned Basic method. The IE flavor is simply
that libcurl will use a special "quirk" that IE is known to have used before
version 7 and that some servers require the client to use.
modified external/curl/docs/libcurl/opts/CURLOPT_HTTPGET.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_HTTPGET 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_HTTPGET 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_HTTPGET \- ask for an HTTP GET request
modified external/curl/docs/libcurl/opts/CURLOPT_HTTPHEADER.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_HTTPHEADER 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_HTTPHEADER 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_HTTPHEADER \- set of HTTP headers
modified external/curl/docs/libcurl/opts/CURLOPT_HTTPPOST.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_HTTPPOST 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_HTTPPOST 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_HTTPPOST \- multipart formpost content
modified external/curl/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_HTTPPROXYTUNNEL 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_HTTPPROXYTUNNEL 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_HTTPPROXYTUNNEL \- tunnel through HTTP proxy
modified external/curl/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_HTTP_CONTENT_DECODING 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_HTTP_CONTENT_DECODING 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_HTTP_CONTENT_DECODING \- HTTP content decoding control
modified external/curl/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_HTTP_TRANSFER_DECODING 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_HTTP_TRANSFER_DECODING 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_HTTP_TRANSFER_DECODING \- HTTP transfer decoding control
modified external/curl/docs/libcurl/opts/CURLOPT_HTTP_VERSION.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_HTTP_VERSION 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_HTTP_VERSION 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_HTTP_VERSION \- HTTP protocol version to use
modified external/curl/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_IGNORE_CONTENT_LENGTH 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_IGNORE_CONTENT_LENGTH 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_IGNORE_CONTENT_LENGTH \- ignore content length
modified external/curl/docs/libcurl/opts/CURLOPT_INFILESIZE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_INFILESIZE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_INFILESIZE 3 "June 12, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_INFILESIZE \- size of the input file to send off
@@ -43,6 +43,9 @@ mandatory.

To unset this value again, set it to -1.

+
Using \fICURLOPT_UPLOAD(3)\fP to a HTTP/1.1 server and this value set to -1,
+
makes libcurl do a chunked transfer-encoded upload.
+

When sending emails using SMTP, this command can be used to specify the
optional SIZE parameter for the MAIL FROM command.

modified external/curl/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_INFILESIZE_LARGE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_INFILESIZE_LARGE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_INFILESIZE_LARGE \- size of the input file to send off
modified external/curl/docs/libcurl/opts/CURLOPT_INTERFACE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_INTERFACE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_INTERFACE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_INTERFACE \- source interface for outgoing traffic
modified external/curl/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_INTERLEAVEDATA 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_INTERLEAVEDATA 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_INTERLEAVEDATA \- pointer passed to RTSP interleave callback
modified external/curl/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_INTERLEAVEFUNCTION 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_INTERLEAVEFUNCTION 3 "June 25, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_INTERLEAVEFUNCTION \- callback for RTSP interleaved data
@@ -45,9 +45,8 @@ contains exactly one upper-layer protocol unit (e.g. one RTP packet). Curl
writes the interleaved header as well as the included data for each call. The
first byte is always an ASCII dollar sign. The dollar sign is followed by a
one byte channel identifier and then a 2 byte integer length in network byte
-
order. See \fIRFC2326 Section 10.12\fP for more information on how RTP
-
interleaving behaves. If unset or set to NULL, curl will use the default write
-
function.
+
order. See RFC 2326 Section 10.12 for more information on how RTP interleaving
+
behaves. If unset or set to NULL, curl will use the default write function.

Interleaved RTP poses some challenges for the client application. Since the
stream data is sharing the RTSP control connection, it is critical to service
modified external/curl/docs/libcurl/opts/CURLOPT_IOCTLDATA.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_IOCTLDATA 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_IOCTLDATA 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_IOCTLDATA \- pointer passed to I/O callback
modified external/curl/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_IOCTLFUNCTION 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_IOCTLFUNCTION 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_IOCTLFUNCTION \- callback for I/O operations
modified external/curl/docs/libcurl/opts/CURLOPT_IPRESOLVE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_IPRESOLVE 3 "May 08, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_IPRESOLVE 3 "May 08, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_IPRESOLVE \- IP protocol version to use
modified external/curl/docs/libcurl/opts/CURLOPT_ISSUERCERT.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_ISSUERCERT 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_ISSUERCERT 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_ISSUERCERT \- issuer SSL certificate filename
modified external/curl/docs/libcurl/opts/CURLOPT_ISSUERCERT_BLOB.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_ISSUERCERT_BLOB 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_ISSUERCERT_BLOB 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_ISSUERCERT_BLOB \- issuer SSL certificate from memory blob
modified external/curl/docs/libcurl/opts/CURLOPT_KEEP_SENDING_ON_ERROR.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_KEEP_SENDING_ON_ERROR 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_KEEP_SENDING_ON_ERROR 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_KEEP_SENDING_ON_ERROR \- keep sending on early HTTP response >= 300
modified external/curl/docs/libcurl/opts/CURLOPT_KEYPASSWD.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_KEYPASSWD 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_KEYPASSWD 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_KEYPASSWD \- passphrase to private key
modified external/curl/docs/libcurl/opts/CURLOPT_KRBLEVEL.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_KRBLEVEL 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_KRBLEVEL 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_KRBLEVEL \- FTP kerberos security level
modified external/curl/docs/libcurl/opts/CURLOPT_LOCALPORT.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_LOCALPORT 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_LOCALPORT 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_LOCALPORT \- local port number to use for socket
modified external/curl/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_LOCALPORTRANGE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_LOCALPORTRANGE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_LOCALPORTRANGE \- number of additional local ports to try
modified external/curl/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_LOGIN_OPTIONS 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_LOGIN_OPTIONS 3 "June 25, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_LOGIN_OPTIONS \- login options
@@ -36,7 +36,7 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOGIN_OPTIONS, char *options);
Pass a char * as parameter, which should be pointing to the null-terminated
\fIoptions\fP string to use for the transfer.

-
For more information about the login options please see RFC2384, RFC5092 and
+
For more information about the login options please see RFC 2384, RFC 5092 and
the IETF draft \fBdraft-earhart-url-smtp-00.txt\fP.

\fICURLOPT_LOGIN_OPTIONS(3)\fP can be used to set protocol specific login
@@ -44,6 +44,12 @@ options, such as the preferred authentication mechanism via "AUTH=NTLM" or
"AUTH=*", and should be used in conjunction with the \fICURLOPT_USERNAME(3)\fP
option.

+
Since 8.2.0, IMAP supports the login option "AUTH=+LOGIN". With this option,
+
curl uses the plain (not SASL) LOGIN IMAP command even if the server advertises
+
SASL authentication. Care should be taken in using this option, as it will send
+
out your password in plain text. This will not work if the IMAP server disables
+
the plain LOGIN (e.g. to prevent password snooping).
+

The application does not have to keep the string around after setting this
option.
.SH DEFAULT
modified external/curl/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_LOW_SPEED_LIMIT 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_LOW_SPEED_LIMIT 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_LOW_SPEED_LIMIT \- low speed limit in bytes per second
modified external/curl/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_LOW_SPEED_TIME 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_LOW_SPEED_TIME 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_LOW_SPEED_TIME \- low speed limit time period
modified external/curl/docs/libcurl/opts/CURLOPT_MAIL_AUTH.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_MAIL_AUTH 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_MAIL_AUTH 3 "June 25, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_MAIL_AUTH \- SMTP authentication address
@@ -47,7 +47,7 @@ be used for this parameter.
Unlike \fICURLOPT_MAIL_FROM(3)\fP and \fICURLOPT_MAIL_RCPT(3)\fP, the address
should not be specified within a pair of angled brackets (<>). However, if an
empty string is used then a pair of brackets will be sent by libcurl as
-
required by RFC2554.
+
required by RFC 2554.

The application does not have to keep the string around after setting this
option.
modified external/curl/docs/libcurl/opts/CURLOPT_MAIL_FROM.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_MAIL_FROM 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_MAIL_FROM 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_MAIL_FROM \- SMTP sender address
modified external/curl/docs/libcurl/opts/CURLOPT_MAIL_RCPT.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_MAIL_RCPT 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_MAIL_RCPT 3 "June 25, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_MAIL_RCPT \- list of SMTP mail recipients
@@ -46,7 +46,7 @@ and enclose that address within brackets for you.

When performing an address verification (\fBVRFY\fP command), each recipient
should be specified as the user name or user name and domain (as per Section
-
3.5 of RFC5321).
+
3.5 of RFC 5321).

When performing a mailing list expand (\fBEXPN\fP command), each recipient
should be specified using the mailing list name, such as "Friends" or
deleted external/curl/docs/libcurl/opts/CURLOPT_MAIL_RCPT_ALLLOWFAILS.3
@@ -1,75 +0,0 @@
-
.\" **************************************************************************
-
.\" *                                  _   _ ____  _
-
.\" *  Project                     ___| | | |  _ \| |
-
.\" *                             / __| | | | |_) | |
-
.\" *                            | (__| |_| |  _ <| |___
-
.\" *                             \___|\___/|_| \_\_____|
-
.\" *
-
.\" * Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
-
.\" *
-
.\" * This software is licensed as described in the file COPYING, which
-
.\" * you should have received as part of this distribution. The terms
-
.\" * are also available at https://curl.se/docs/copyright.html.
-
.\" *
-
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
-
.\" * copies of the Software, and permit persons to whom the Software is
-
.\" * furnished to do so, under the terms of the COPYING file.
-
.\" *
-
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
-
.\" * KIND, either express or implied.
-
.\" *
-
.\" * SPDX-License-Identifier: curl
-
.\" *
-
.\" **************************************************************************
-
.\"
-
.TH CURLOPT_MAIL_RCPT_ALLLOWFAILS 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
-

-
.SH NAME
-
CURLOPT_MAIL_RCPT_ALLLOWFAILS \- allow RCPT TO command to fail for some recipients
-
.SH SYNOPSIS
-
.nf
-
#include <curl/curl.h>
-

-
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAIL_RCPT_ALLLOWFAILS,
-
                          long allow);
-
.SH DESCRIPTION
-
If \fIallow\fP is set to 1L, allow RCPT TO command to fail for some recipients.
-

-
When sending data to multiple recipients, by default curl will abort SMTP
-
conversation if at least one of the recipients causes RCPT TO command to
-
return an error.
-

-
The default behavior can be changed by setting \fIignore\fP to 1L which will
-
make curl ignore errors and proceed with the remaining valid recipients.
-

-
If all recipients trigger RCPT TO failures and this flag is specified, curl
-
will still abort the SMTP conversation and return the error received from to
-
the last RCPT TO command.
-
.SH DEFAULT
-
0
-
.SH PROTOCOLS
-
SMTP
-
.SH EXAMPLE
-
.nf
-
CURL *curl = curl_easy_init();
-
if(curl) {
-
  struct curl_slist *list;
-

-
  /* Adding one valid and one invalid email address */
-
  list = curl_slist_append(NULL, "person@example.com");
-
  list = curl_slist_append(list, "invalidemailaddress");
-

-
  curl_easy_setopt(curl, CURLOPT_URL, "smtp://example.com/");
-
  curl_easy_setopt(curl, CURLOPT_MAIL_RCPT_ALLLOWFAILS, 1L);
-

-
  ret = curl_easy_perform(curl);
-
  curl_slist_free_all(list);
-
  curl_easy_cleanup(curl);
-
}
-
.fi
-
.SH AVAILABILITY
-
Added in 7.69.0.
-
.SH RETURN VALUE
-
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
-
.SH "SEE ALSO"
-
.BR CURLOPT_MAIL_FROM "(3), " CURLOPT_MAIL_RCPT "(3), "
added external/curl/docs/libcurl/opts/CURLOPT_MAIL_RCPT_ALLOWFAILS.3
@@ -0,0 +1,77 @@
+
.\" **************************************************************************
+
.\" *                                  _   _ ____  _
+
.\" *  Project                     ___| | | |  _ \| |
+
.\" *                             / __| | | | |_) | |
+
.\" *                            | (__| |_| |  _ <| |___
+
.\" *                             \___|\___/|_| \_\_____|
+
.\" *
+
.\" * Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
+
.\" *
+
.\" * This software is licensed as described in the file COPYING, which
+
.\" * you should have received as part of this distribution. The terms
+
.\" * are also available at https://curl.se/docs/copyright.html.
+
.\" *
+
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+
.\" * copies of the Software, and permit persons to whom the Software is
+
.\" * furnished to do so, under the terms of the COPYING file.
+
.\" *
+
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+
.\" * KIND, either express or implied.
+
.\" *
+
.\" * SPDX-License-Identifier: curl
+
.\" *
+
.\" **************************************************************************
+
.\"
+
.TH CURLOPT_MAIL_RCPT_ALLOWFAILS 3 "May 29, 2023" "ibcurl 8.2.1" libcurl
+

+
.SH NAME
+
CURLOPT_MAIL_RCPT_ALLOWFAILS \- allow RCPT TO command to fail for some recipients
+
.SH SYNOPSIS
+
.nf
+
#include <curl/curl.h>
+

+
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAIL_RCPT_ALLOWFAILS,
+
                          long allow);
+
.SH DESCRIPTION
+
If \fIallow\fP is set to 1L, allow RCPT TO command to fail for some recipients.
+

+
When sending data to multiple recipients, by default curl will abort SMTP
+
conversation if at least one of the recipients causes RCPT TO command to
+
return an error.
+

+
The default behavior can be changed by setting \fIignore\fP to 1L which will
+
make curl ignore errors and proceed with the remaining valid recipients.
+

+
If all recipients trigger RCPT TO failures and this flag is specified, curl
+
will still abort the SMTP conversation and return the error received from to
+
the last RCPT TO command.
+
.SH DEFAULT
+
0
+
.SH PROTOCOLS
+
SMTP
+
.SH EXAMPLE
+
.nf
+
CURL *curl = curl_easy_init();
+
if(curl) {
+
  struct curl_slist *list;
+

+
  /* Adding one valid and one invalid email address */
+
  list = curl_slist_append(NULL, "person@example.com");
+
  list = curl_slist_append(list, "invalidemailaddress");
+

+
  curl_easy_setopt(curl, CURLOPT_URL, "smtp://example.com/");
+
  curl_easy_setopt(curl, CURLOPT_MAIL_RCPT_ALLOWFAILS, 1L);
+

+
  ret = curl_easy_perform(curl);
+
  curl_slist_free_all(list);
+
  curl_easy_cleanup(curl);
+
}
+
.fi
+
.SH AVAILABILITY
+
This option was called CURLOPT_MAIL_RCPT_ALLLOWFAILS before 8.2.0
+

+
Added in 7.69.0.
+
.SH RETURN VALUE
+
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+
.SH "SEE ALSO"
+
.BR CURLOPT_MAIL_FROM "(3), " CURLOPT_MAIL_RCPT "(3), "
modified external/curl/docs/libcurl/opts/CURLOPT_MAXAGE_CONN.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_MAXAGE_CONN 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_MAXAGE_CONN 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_MAXAGE_CONN \- max idle time allowed for reusing a connection
modified external/curl/docs/libcurl/opts/CURLOPT_MAXCONNECTS.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_MAXCONNECTS 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_MAXCONNECTS 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_MAXCONNECTS \- maximum connection cache size
modified external/curl/docs/libcurl/opts/CURLOPT_MAXFILESIZE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_MAXFILESIZE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_MAXFILESIZE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_MAXFILESIZE \- maximum file size allowed to download
modified external/curl/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_MAXFILESIZE_LARGE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_MAXFILESIZE_LARGE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_MAXFILESIZE_LARGE \- maximum file size allowed to download
modified external/curl/docs/libcurl/opts/CURLOPT_MAXLIFETIME_CONN.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_MAXLIFETIME_CONN 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_MAXLIFETIME_CONN 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_MAXLIFETIME_CONN \- max lifetime (since creation) allowed for reusing a connection
modified external/curl/docs/libcurl/opts/CURLOPT_MAXREDIRS.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_MAXREDIRS 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_MAXREDIRS 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_MAXREDIRS \- maximum number of redirects allowed
modified external/curl/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_MAX_RECV_SPEED_LARGE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_MAX_RECV_SPEED_LARGE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_MAX_RECV_SPEED_LARGE \- rate limit data download speed
modified external/curl/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_MAX_SEND_SPEED_LARGE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_MAX_SEND_SPEED_LARGE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_MAX_SEND_SPEED_LARGE \- rate limit data upload speed
modified external/curl/docs/libcurl/opts/CURLOPT_MIMEPOST.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_MIMEPOST 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_MIMEPOST 3 "July 12, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_MIMEPOST \- send data from mime structure
@@ -41,6 +41,10 @@ SMTP and IMAP protocols to provide the email data to send/upload.

This option is the preferred way of posting an HTTP form, replacing and
extending the \fICURLOPT_HTTPPOST(3)\fP option.
+

+
When setting \fICURLOPT_MIMEPOST(3)\fP to NULL, libcurl resets the request
+
type for HTTP to the default to disable the POST. Typically that would mean it
+
is reset to GET. Instead you should set a desired request method explicitly.
.SH PROTOCOLS
HTTP, SMTP, IMAP.
.SH EXAMPLE
modified external/curl/docs/libcurl/opts/CURLOPT_MIME_OPTIONS.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_MIME_OPTIONS 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_MIME_OPTIONS 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_MIME_OPTIONS \- set MIME option flags
modified external/curl/docs/libcurl/opts/CURLOPT_NETRC.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_NETRC 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_NETRC 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_NETRC \- enable use of .netrc
modified external/curl/docs/libcurl/opts/CURLOPT_NETRC_FILE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_NETRC_FILE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_NETRC_FILE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_NETRC_FILE \- file name to read .netrc info from
modified external/curl/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_NEW_DIRECTORY_PERMS 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_NEW_DIRECTORY_PERMS 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_NEW_DIRECTORY_PERMS \- permissions for remotely created directories
modified external/curl/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_NEW_FILE_PERMS 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_NEW_FILE_PERMS 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_NEW_FILE_PERMS \- permissions for remotely created files
modified external/curl/docs/libcurl/opts/CURLOPT_NOBODY.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_NOBODY 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_NOBODY 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_NOBODY \- do the download request without getting the body
modified external/curl/docs/libcurl/opts/CURLOPT_NOPROGRESS.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_NOPROGRESS 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_NOPROGRESS 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_NOPROGRESS \- switch off the progress meter
modified external/curl/docs/libcurl/opts/CURLOPT_NOPROXY.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_NOPROXY 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_NOPROXY 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_NOPROXY \- disable proxy use for specific hosts
modified external/curl/docs/libcurl/opts/CURLOPT_NOSIGNAL.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_NOSIGNAL 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_NOSIGNAL 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_NOSIGNAL \- skip all signal handling
modified external/curl/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_OPENSOCKETDATA 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_OPENSOCKETDATA 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_OPENSOCKETDATA \- pointer passed to open socket callback
modified external/curl/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_OPENSOCKETFUNCTION 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_OPENSOCKETFUNCTION 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_OPENSOCKETFUNCTION \- callback for opening socket
modified external/curl/docs/libcurl/opts/CURLOPT_PASSWORD.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PASSWORD 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PASSWORD 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PASSWORD \- password to use in authentication
modified external/curl/docs/libcurl/opts/CURLOPT_PATH_AS_IS.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PATH_AS_IS 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PATH_AS_IS 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PATH_AS_IS \- do not handle dot dot sequences
modified external/curl/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PINNEDPUBLICKEY 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PINNEDPUBLICKEY 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PINNEDPUBLICKEY \- pinned public key
modified external/curl/docs/libcurl/opts/CURLOPT_PIPEWAIT.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PIPEWAIT 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PIPEWAIT 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PIPEWAIT \- wait for pipelining/multiplexing
modified external/curl/docs/libcurl/opts/CURLOPT_PORT.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PORT 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PORT 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PORT \- remote port number to connect to
modified external/curl/docs/libcurl/opts/CURLOPT_POST.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_POST 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_POST 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_POST \- make an HTTP POST
modified external/curl/docs/libcurl/opts/CURLOPT_POSTFIELDS.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_POSTFIELDS 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_POSTFIELDS 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_POSTFIELDS \- data to POST to server
modified external/curl/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_POSTFIELDSIZE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_POSTFIELDSIZE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_POSTFIELDSIZE \- size of POST data pointed to
modified external/curl/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_POSTFIELDSIZE_LARGE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_POSTFIELDSIZE_LARGE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_POSTFIELDSIZE_LARGE \- size of POST data pointed to
modified external/curl/docs/libcurl/opts/CURLOPT_POSTQUOTE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_POSTQUOTE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_POSTQUOTE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_POSTQUOTE \- (S)FTP commands to run after the transfer
modified external/curl/docs/libcurl/opts/CURLOPT_POSTREDIR.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_POSTREDIR 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_POSTREDIR 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_POSTREDIR \- how to act on an HTTP POST redirect
modified external/curl/docs/libcurl/opts/CURLOPT_PREQUOTE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PREQUOTE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PREQUOTE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PREQUOTE \- commands to run before an FTP transfer
modified external/curl/docs/libcurl/opts/CURLOPT_PREREQDATA.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PREREQDATA 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PREREQDATA 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PREREQDATA \- pointer passed to the pre-request callback
modified external/curl/docs/libcurl/opts/CURLOPT_PREREQFUNCTION.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PREREQFUNCTION 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PREREQFUNCTION 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PREREQFUNCTION \- user callback called when a connection has been
modified external/curl/docs/libcurl/opts/CURLOPT_PRE_PROXY.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PRE_PROXY 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PRE_PROXY 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PRE_PROXY \- pre-proxy host to use
modified external/curl/docs/libcurl/opts/CURLOPT_PRIVATE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PRIVATE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PRIVATE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PRIVATE \- store a private pointer
modified external/curl/docs/libcurl/opts/CURLOPT_PROGRESSDATA.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PROGRESSDATA 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PROGRESSDATA 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PROGRESSDATA \- pointer passed to the progress callback
modified external/curl/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PROGRESSFUNCTION 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PROGRESSFUNCTION 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PROGRESSFUNCTION \- progress meter callback
modified external/curl/docs/libcurl/opts/CURLOPT_PROTOCOLS.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PROTOCOLS 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PROTOCOLS 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PROTOCOLS \- allowed protocols
modified external/curl/docs/libcurl/opts/CURLOPT_PROTOCOLS_STR.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PROTOCOLS_STR 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PROTOCOLS_STR 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PROTOCOLS_STR \- allowed protocols
modified external/curl/docs/libcurl/opts/CURLOPT_PROXY.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PROXY 3 "April 27, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PROXY 3 "April 27, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PROXY \- proxy to use
modified external/curl/docs/libcurl/opts/CURLOPT_PROXYAUTH.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PROXYAUTH 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PROXYAUTH 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PROXYAUTH \- HTTP proxy authentication methods
modified external/curl/docs/libcurl/opts/CURLOPT_PROXYHEADER.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PROXYHEADER 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PROXYHEADER 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PROXYHEADER \- set of HTTP headers to pass to proxy
modified external/curl/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PROXYPASSWORD 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PROXYPASSWORD 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PROXYPASSWORD \- password to use with proxy authentication
modified external/curl/docs/libcurl/opts/CURLOPT_PROXYPORT.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PROXYPORT 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PROXYPORT 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PROXYPORT \- port number the proxy listens on
modified external/curl/docs/libcurl/opts/CURLOPT_PROXYTYPE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PROXYTYPE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PROXYTYPE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PROXYTYPE \- proxy protocol type
modified external/curl/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PROXYUSERNAME 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PROXYUSERNAME 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PROXYUSERNAME \- user name to use for proxy authentication
modified external/curl/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PROXYUSERPWD 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PROXYUSERPWD 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PROXYUSERPWD \- user name and password to use for proxy authentication
modified external/curl/docs/libcurl/opts/CURLOPT_PROXY_CAINFO.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PROXY_CAINFO 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PROXY_CAINFO 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PROXY_CAINFO \- path to proxy Certificate Authority (CA) bundle
modified external/curl/docs/libcurl/opts/CURLOPT_PROXY_CAINFO_BLOB.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PROXY_CAINFO_BLOB 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PROXY_CAINFO_BLOB 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PROXY_CAINFO_BLOB \- proxy Certificate Authority (CA) bundle in PEM format
modified external/curl/docs/libcurl/opts/CURLOPT_PROXY_CAPATH.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PROXY_CAPATH 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PROXY_CAPATH 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PROXY_CAPATH \- directory holding HTTPS proxy CA certificates
modified external/curl/docs/libcurl/opts/CURLOPT_PROXY_CRLFILE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PROXY_CRLFILE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PROXY_CRLFILE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PROXY_CRLFILE \- HTTPS proxy Certificate Revocation List file
modified external/curl/docs/libcurl/opts/CURLOPT_PROXY_ISSUERCERT.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PROXY_ISSUERCERT 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PROXY_ISSUERCERT 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PROXY_ISSUERCERT \- proxy issuer SSL certificate filename
modified external/curl/docs/libcurl/opts/CURLOPT_PROXY_ISSUERCERT_BLOB.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PROXY_ISSUERCERT_BLOB 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PROXY_ISSUERCERT_BLOB 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PROXY_ISSUERCERT_BLOB \- proxy issuer SSL certificate from memory blob
modified external/curl/docs/libcurl/opts/CURLOPT_PROXY_KEYPASSWD.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PROXY_KEYPASSWD 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PROXY_KEYPASSWD 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PROXY_KEYPASSWD \- passphrase for the proxy private key
modified external/curl/docs/libcurl/opts/CURLOPT_PROXY_PINNEDPUBLICKEY.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PROXY_PINNEDPUBLICKEY 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PROXY_PINNEDPUBLICKEY 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PROXY_PINNEDPUBLICKEY \- pinned public key for https proxy
modified external/curl/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PROXY_SERVICE_NAME 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PROXY_SERVICE_NAME 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PROXY_SERVICE_NAME \- proxy authentication service name
modified external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLCERT.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PROXY_SSLCERT 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PROXY_SSLCERT 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PROXY_SSLCERT \- HTTPS proxy client certificate
modified external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLCERTTYPE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PROXY_SSLCERTTYPE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PROXY_SSLCERTTYPE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PROXY_SSLCERTTYPE \- type of the proxy client SSL certificate
modified external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLCERT_BLOB.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PROXY_SSLCERT_BLOB 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PROXY_SSLCERT_BLOB 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PROXY_SSLCERT_BLOB \- SSL proxy client certificate from memory blob
modified external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLKEY.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PROXY_SSLKEY 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PROXY_SSLKEY 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PROXY_SSLKEY \- private key file for HTTPS proxy client cert
modified external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLKEYTYPE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PROXY_SSLKEYTYPE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PROXY_SSLKEYTYPE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PROXY_SSLKEYTYPE \- type of the proxy private key file
modified external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLKEY_BLOB.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PROXY_SSLKEY_BLOB 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PROXY_SSLKEY_BLOB 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PROXY_SSLKEY_BLOB \- private key for proxy cert from memory blob
modified external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLVERSION.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PROXY_SSLVERSION 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PROXY_SSLVERSION 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PROXY_SSLVERSION \- preferred HTTPS proxy TLS version
modified external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSL_CIPHER_LIST.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PROXY_SSL_CIPHER_LIST 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PROXY_SSL_CIPHER_LIST 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PROXY_SSL_CIPHER_LIST \- ciphers to use for HTTPS proxy
modified external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSL_OPTIONS.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PROXY_SSL_OPTIONS 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PROXY_SSL_OPTIONS 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PROXY_SSL_OPTIONS \- HTTPS proxy SSL behavior options
modified external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYHOST.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PROXY_SSL_VERIFYHOST 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PROXY_SSL_VERIFYHOST 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PROXY_SSL_VERIFYHOST \- verify the proxy certificate's name against host
modified external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYPEER.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PROXY_SSL_VERIFYPEER 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PROXY_SSL_VERIFYPEER 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PROXY_SSL_VERIFYPEER \- verify the proxy's SSL certificate
modified external/curl/docs/libcurl/opts/CURLOPT_PROXY_TLS13_CIPHERS.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PROXY_TLS13_CIPHERS 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PROXY_TLS13_CIPHERS 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PROXY_TLS13_CIPHERS \- ciphers suites for proxy TLS 1.3
modified external/curl/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_PASSWORD.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PROXY_TLSAUTH_PASSWORD 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PROXY_TLSAUTH_PASSWORD 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PROXY_TLSAUTH_PASSWORD \- password to use for proxy TLS authentication
modified external/curl/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_TYPE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PROXY_TLSAUTH_TYPE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PROXY_TLSAUTH_TYPE 3 "June 25, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PROXY_TLSAUTH_TYPE \- HTTPS proxy TLS authentication methods
@@ -40,7 +40,7 @@ method is "SRP".

.IP SRP
TLS-SRP authentication. Secure Remote Password authentication for TLS is
-
defined in RFC5054 and provides mutual authentication if both sides have a
+
defined in RFC 5054 and provides mutual authentication if both sides have a
shared secret. To use TLS-SRP, you must also set the
\fICURLOPT_PROXY_TLSAUTH_USERNAME(3)\fP and
\fICURLOPT_PROXY_TLSAUTH_PASSWORD(3)\fP options.
modified external/curl/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_USERNAME.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PROXY_TLSAUTH_USERNAME 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PROXY_TLSAUTH_USERNAME 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PROXY_TLSAUTH_USERNAME \- user name to use for proxy TLS authentication
modified external/curl/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PROXY_TRANSFER_MODE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PROXY_TRANSFER_MODE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PROXY_TRANSFER_MODE \- append FTP transfer mode to URL for proxy
modified external/curl/docs/libcurl/opts/CURLOPT_PUT.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_PUT 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_PUT 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_PUT \- make an HTTP PUT request
modified external/curl/docs/libcurl/opts/CURLOPT_QUICK_EXIT.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_QUICK_EXIT 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_QUICK_EXIT 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_QUICK_EXIT \- allow to exit quickly
modified external/curl/docs/libcurl/opts/CURLOPT_QUOTE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_QUOTE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_QUOTE 3 "June 25, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_QUOTE \- (S)FTP commands to run before transfer
@@ -47,7 +47,7 @@ When speaking to an FTP server, prefix the command with an asterisk (*) to
make libcurl continue even if the command fails as by default libcurl will
stop at first failure.

-
The set of valid FTP commands depends on the server (see RFC959 for a list of
+
The set of valid FTP commands depends on the server (see RFC 959 for a list of
mandatory commands).

libcurl does not inspect, parse or "understand" the commands passed to the
modified external/curl/docs/libcurl/opts/CURLOPT_RANDOM_FILE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_RANDOM_FILE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_RANDOM_FILE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_RANDOM_FILE \- file to read random data from
modified external/curl/docs/libcurl/opts/CURLOPT_RANGE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_RANGE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_RANGE 3 "June 25, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_RANGE \- byte range to request
@@ -44,7 +44,7 @@ techniques). Unfortunately, the HTTP standard (RFC 7233 section 3.1) allows
servers to ignore range requests so even when you set \fICURLOPT_RANGE(3)\fP
for a request, you may end up getting the full response sent back.

-
For RTSP, the formatting of a range should follow RFC2326 Section 12.29. For
+
For RTSP, the formatting of a range should follow RFC 2326 Section 12.29. For
RTSP, byte ranges are \fBnot\fP permitted. Instead, ranges should be given in
\fBnpt\fP, \fButc\fP, or \fBsmpte\fP formats.

modified external/curl/docs/libcurl/opts/CURLOPT_READDATA.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_READDATA 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_READDATA 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_READDATA \- pointer passed to the read callback
modified external/curl/docs/libcurl/opts/CURLOPT_READFUNCTION.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_READFUNCTION 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_READFUNCTION 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_READFUNCTION \- read callback for data uploads
modified external/curl/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_REDIR_PROTOCOLS 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_REDIR_PROTOCOLS 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_REDIR_PROTOCOLS \- protocols allowed to redirect to
modified external/curl/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS_STR.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_REDIR_PROTOCOLS_STR 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_REDIR_PROTOCOLS_STR 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_REDIR_PROTOCOLS_STR \- protocols allowed to redirect to
modified external/curl/docs/libcurl/opts/CURLOPT_REFERER.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_REFERER 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_REFERER 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_REFERER \- the HTTP referer header
modified external/curl/docs/libcurl/opts/CURLOPT_REQUEST_TARGET.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_REQUEST_TARGET 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_REQUEST_TARGET 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_REQUEST_TARGET \- alternative target for this request
modified external/curl/docs/libcurl/opts/CURLOPT_RESOLVE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_RESOLVE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_RESOLVE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_RESOLVE \- provide custom host name to IP address resolves
modified external/curl/docs/libcurl/opts/CURLOPT_RESOLVER_START_DATA.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_RESOLVER_START_DATA 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_RESOLVER_START_DATA 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_RESOLVER_START_DATA \- pointer passed to the resolver start callback
modified external/curl/docs/libcurl/opts/CURLOPT_RESOLVER_START_FUNCTION.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_RESOLVER_START_FUNCTION 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_RESOLVER_START_FUNCTION 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_RESOLVER_START_FUNCTION \- callback called before a new name resolve is started
modified external/curl/docs/libcurl/opts/CURLOPT_RESUME_FROM.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_RESUME_FROM 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_RESUME_FROM 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_RESUME_FROM \- offset to resume transfer from
modified external/curl/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_RESUME_FROM_LARGE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_RESUME_FROM_LARGE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_RESUME_FROM_LARGE \- offset to resume transfer from
modified external/curl/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_RTSP_CLIENT_CSEQ 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_RTSP_CLIENT_CSEQ 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_RTSP_CLIENT_CSEQ \- RTSP client CSEQ number
modified external/curl/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_RTSP_REQUEST 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_RTSP_REQUEST 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_RTSP_REQUEST \- RTSP request
modified external/curl/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_RTSP_SERVER_CSEQ 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_RTSP_SERVER_CSEQ 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_RTSP_SERVER_CSEQ \- RTSP server CSEQ number
modified external/curl/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_RTSP_SESSION_ID 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_RTSP_SESSION_ID 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_RTSP_SESSION_ID \- RTSP session ID
modified external/curl/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_RTSP_STREAM_URI 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_RTSP_STREAM_URI 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_RTSP_STREAM_URI \- RTSP stream URI
modified external/curl/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_RTSP_TRANSPORT 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_RTSP_TRANSPORT 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_RTSP_TRANSPORT \- RTSP Transport: header
modified external/curl/docs/libcurl/opts/CURLOPT_SASL_AUTHZID.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_SASL_AUTHZID 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_SASL_AUTHZID 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_SASL_AUTHZID \- authorization identity (identity to act as)
modified external/curl/docs/libcurl/opts/CURLOPT_SASL_IR.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_SASL_IR 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_SASL_IR 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_SASL_IR \- send initial response in first packet
modified external/curl/docs/libcurl/opts/CURLOPT_SEEKDATA.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_SEEKDATA 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_SEEKDATA 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_SEEKDATA \- pointer passed to the seek callback
modified external/curl/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_SEEKFUNCTION 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_SEEKFUNCTION 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_SEEKFUNCTION \- user callback for seeking in input stream
modified external/curl/docs/libcurl/opts/CURLOPT_SERVER_RESPONSE_TIMEOUT.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_SERVER_RESPONSE_TIMEOUT 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_SERVER_RESPONSE_TIMEOUT 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_SERVER_RESPONSE_TIMEOUT \- time allowed to wait for server response
modified external/curl/docs/libcurl/opts/CURLOPT_SERVICE_NAME.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_SERVICE_NAME 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_SERVICE_NAME 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_SERVICE_NAME \- authentication service name
modified external/curl/docs/libcurl/opts/CURLOPT_SHARE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_SHARE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_SHARE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_SHARE \- share handle to use
modified external/curl/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_SOCKOPTDATA 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_SOCKOPTDATA 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_SOCKOPTDATA \- pointer to pass to sockopt callback
modified external/curl/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_SOCKOPTFUNCTION 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_SOCKOPTFUNCTION 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_SOCKOPTFUNCTION \- callback for setting socket options
modified external/curl/docs/libcurl/opts/CURLOPT_SOCKS5_AUTH.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_SOCKS5_AUTH 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_SOCKS5_AUTH 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_SOCKS5_AUTH \- methods for SOCKS5 proxy authentication
modified external/curl/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_SOCKS5_GSSAPI_NEC 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_SOCKS5_GSSAPI_NEC 3 "June 25, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_SOCKS5_GSSAPI_NEC \- SOCKS proxy GSSAPI negotiation protection
@@ -34,7 +34,7 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKS5_GSSAPI_NEC, long nec);
.fi
.SH DESCRIPTION
Pass a long set to 1 to enable or 0 to disable. As part of the GSSAPI
-
negotiation a protection mode is negotiated. The RFC1961 says in section
+
negotiation a protection mode is negotiated. The RFC 1961 says in section
4.3/4.4 it should be protected, but the NEC reference implementation does not.
If enabled, this option allows the unprotected exchange of the protection mode
negotiation.
modified external/curl/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_SOCKS5_GSSAPI_SERVICE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_SOCKS5_GSSAPI_SERVICE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_SOCKS5_GSSAPI_SERVICE \- SOCKS5 proxy authentication service name
modified external/curl/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_SSH_AUTH_TYPES 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_SSH_AUTH_TYPES 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_SSH_AUTH_TYPES \- auth types for SFTP and SCP
modified external/curl/docs/libcurl/opts/CURLOPT_SSH_COMPRESSION.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_SSH_COMPRESSION 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_SSH_COMPRESSION 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_SSH_COMPRESSION \- enable SSH compression
modified external/curl/docs/libcurl/opts/CURLOPT_SSH_HOSTKEYDATA.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_SSH_KEYDATA 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_SSH_KEYDATA 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_SSH_HOSTKEYDATA \- pointer to pass to the SSH host key callback
modified external/curl/docs/libcurl/opts/CURLOPT_SSH_HOSTKEYFUNCTION.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_SSH_HOSTKEYFUNCTION 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_SSH_HOSTKEYFUNCTION 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_SSH_HOSTKEYFUNCTION \- callback to check host key
modified external/curl/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 \- MD5 checksum of SSH server public key
modified external/curl/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256 \- SHA256 hash of SSH server public key
modified external/curl/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_SSH_KEYDATA 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_SSH_KEYDATA 3 "June 08, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_SSH_KEYDATA \- pointer passed to the SSH key callback
@@ -44,7 +44,7 @@ SFTP and SCP
static int keycb(CURL *easy,
                 const struct curl_khkey *knownkey,
                 const struct curl_khkey *foundkey,
-
                 enum curl_khmatch,
+
                 enum curl_khmatch match,
                 void *clientp)
{
  /* 'clientp' points to the callback_data struct */
modified external/curl/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_SSH_KEYFUNCTION 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_SSH_KEYFUNCTION 3 "June 08, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_SSH_KEYFUNCTION \- callback for known host matching logic
@@ -57,7 +57,7 @@ struct curl_khkey {
int ssh_keycallback(CURL *easy,
                    const struct curl_khkey *knownkey,
                    const struct curl_khkey *foundkey,
-
                    enum curl_khmatch,
+
                    enum curl_khmatch match,
                    void *clientp);

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_KEYFUNCTION,
@@ -109,7 +109,7 @@ SFTP and SCP
static int keycb(CURL *easy,
                 const struct curl_khkey *knownkey,
                 const struct curl_khkey *foundkey,
-
                 enum curl_khmatch,
+
                 enum curl_khmatch match,
                 void *clientp)
{
  /* 'clientp' points to the callback_data struct */
modified external/curl/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_SSH_KNOWNHOSTS 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_SSH_KNOWNHOSTS 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_SSH_KNOWNHOSTS \- file name holding the SSH known hosts
modified external/curl/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_SSH_PRIVATE_KEYFILE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_SSH_PRIVATE_KEYFILE 3 "June 09, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_SSH_PRIVATE_KEYFILE \- private key file for SSH auth
@@ -34,8 +34,9 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_PRIVATE_KEYFILE,
                          char *filename);
.SH DESCRIPTION
Pass a char * pointing to a \fIfilename\fP for your private key. If not used,
-
libcurl defaults to \fB$HOME/.ssh/id_dsa\fP if the HOME environment variable
-
is set, and just "id_dsa" in the current directory if HOME is not set.
+
libcurl defaults to \fB$HOME/.ssh/id_rsa\fP or \fB$HOME/.ssh/id_dsa\fP if the
+
HOME environment variable is set, and just \fB"id_rsa"\fP or \fB"id_dsa"\fP in
+
the current directory if HOME is not set.

If the file is password-protected, set the password with
\fICURLOPT_KEYPASSWD(3)\fP.
modified external/curl/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_SSH_PUBLIC_KEYFILE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_SSH_PUBLIC_KEYFILE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_SSH_PUBLIC_KEYFILE \- public key file for SSH auth
modified external/curl/docs/libcurl/opts/CURLOPT_SSLCERT.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_SSLCERT 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_SSLCERT 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_SSLCERT \- SSL client certificate
modified external/curl/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_SSLCERTTYPE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_SSLCERTTYPE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_SSLCERTTYPE \- type of client SSL certificate
modified external/curl/docs/libcurl/opts/CURLOPT_SSLCERT_BLOB.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_SSLCERT_BLOB 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_SSLCERT_BLOB 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_SSLCERT_BLOB \- SSL client certificate from memory blob
modified external/curl/docs/libcurl/opts/CURLOPT_SSLENGINE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_SSLENGINE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_SSLENGINE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_SSLENGINE \- SSL engine identifier
modified external/curl/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_SSLENGINE_DEFAULT 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_SSLENGINE_DEFAULT 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_SSLENGINE_DEFAULT \- make SSL engine default
modified external/curl/docs/libcurl/opts/CURLOPT_SSLKEY.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_SSLKEY 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_SSLKEY 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_SSLKEY \- private key file for TLS and SSL client cert
modified external/curl/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_SSLKEYTYPE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_SSLKEYTYPE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_SSLKEYTYPE \- type of the private key file
modified external/curl/docs/libcurl/opts/CURLOPT_SSLKEY_BLOB.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_SSLKEY_BLOB 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_SSLKEY_BLOB 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_SSLKEY_BLOB \- private key for client cert from memory blob
modified external/curl/docs/libcurl/opts/CURLOPT_SSLVERSION.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_SSLVERSION 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_SSLVERSION 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_SSLVERSION \- preferred TLS/SSL version
modified external/curl/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_SSL_CIPHER_LIST 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_SSL_CIPHER_LIST 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_SSL_CIPHER_LIST \- ciphers to use for TLS
modified external/curl/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_SSL_CTX_DATA 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_SSL_CTX_DATA 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_SSL_CTX_DATA \- pointer passed to SSL context callback
modified external/curl/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_SSL_CTX_FUNCTION 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_SSL_CTX_FUNCTION 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_SSL_CTX_FUNCTION \- SSL context callback for OpenSSL, wolfSSL or mbedTLS
modified external/curl/docs/libcurl/opts/CURLOPT_SSL_EC_CURVES.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_SSL_EC_CURVES 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_SSL_EC_CURVES 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_SSL_EC_CURVES \- key exchange curves
modified external/curl/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_SSL_ENABLE_ALPN 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_SSL_ENABLE_ALPN 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_SSL_ENABLE_ALPN \- Application Layer Protocol Negotiation
modified external/curl/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_SSL_ENABLE_NPN 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_SSL_ENABLE_NPN 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_SSL_ENABLE_NPN \- use NPN
modified external/curl/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_SSL_FALSESTART 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_SSL_FALSESTART 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_SSL_FALSESTART \- TLS false start
modified external/curl/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_SSL_OPTIONS 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_SSL_OPTIONS 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_SSL_OPTIONS \- SSL behavior options
modified external/curl/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_SSL_SESSIONID_CACHE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_SSL_SESSIONID_CACHE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_SSL_SESSIONID_CACHE \- use the SSL session-ID cache
modified external/curl/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_SSL_VERIFYHOST 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_SSL_VERIFYHOST 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_SSL_VERIFYHOST \- verify the certificate's name against host
modified external/curl/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_SSL_VERIFYPEER 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_SSL_VERIFYPEER 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_SSL_VERIFYPEER \- verify the peer's SSL certificate
modified external/curl/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_SSL_VERIFYSTATUS 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_SSL_VERIFYSTATUS 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_SSL_VERIFYSTATUS \- verify the certificate's status
modified external/curl/docs/libcurl/opts/CURLOPT_STDERR.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_STDERR 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_STDERR 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_STDERR \- redirect stderr to another stream
modified external/curl/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_STREAM_DEPENDS 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_STREAM_DEPENDS 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_STREAM_DEPENDS \- stream this transfer depends on
modified external/curl/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_STREAM_DEPENDS_E 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_STREAM_DEPENDS_E 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_STREAM_DEPENDS_E \- stream this transfer depends on exclusively
modified external/curl/docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_STREAM_WEIGHT 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_STREAM_WEIGHT 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_STREAM_WEIGHT \- numerical stream weight
modified external/curl/docs/libcurl/opts/CURLOPT_SUPPRESS_CONNECT_HEADERS.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_SUPPRESS_CONNECT_HEADERS 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_SUPPRESS_CONNECT_HEADERS 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_SUPPRESS_CONNECT_HEADERS \- suppress proxy CONNECT response headers from user callbacks
modified external/curl/docs/libcurl/opts/CURLOPT_TCP_FASTOPEN.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_TCP_FASTOPEN 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_TCP_FASTOPEN 3 "June 25, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_TCP_FASTOPEN \- TCP Fast Open
@@ -35,7 +35,7 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_FASTOPEN, long enable);
.SH DESCRIPTION
Pass a long as parameter set to 1L to enable or 0 to disable.

-
TCP Fast Open (RFC7413) is a mechanism that allows data to be carried in the
+
TCP Fast Open (RFC 7413) is a mechanism that allows data to be carried in the
SYN and SYN-ACK packets and consumed by the receiving end during the initial
connection handshake, saving up to one full round-trip time (RTT).

modified external/curl/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_TCP_KEEPALIVE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_TCP_KEEPALIVE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_TCP_KEEPALIVE \- TCP keep-alive probing
modified external/curl/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_TCP_KEEPIDLE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_TCP_KEEPIDLE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_TCP_KEEPIDLE \- TCP keep-alive idle time wait
modified external/curl/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_TCP_KEEPINTVL 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_TCP_KEEPINTVL 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_TCP_KEEPINTVL \- TCP keep-alive interval
modified external/curl/docs/libcurl/opts/CURLOPT_TCP_NODELAY.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_TCP_NODELAY 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_TCP_NODELAY 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_TCP_NODELAY \- the TCP_NODELAY option
modified external/curl/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_TELNETOPTIONS 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_TELNETOPTIONS 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_TELNETOPTIONS \- set of telnet options
modified external/curl/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_TFTP_BLKSIZE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_TFTP_BLKSIZE 3 "June 25, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_TFTP_BLKSIZE \- TFTP block size
@@ -34,7 +34,7 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TFTP_BLKSIZE, long blocksize);
.fi
.SH DESCRIPTION
Specify \fIblocksize\fP to use for TFTP data transmission. Valid range as per
-
RFC2348 is 8-65464 bytes. The default of 512 bytes will be used if this option
+
RFC 2348 is 8-65464 bytes. The default of 512 bytes will be used if this option
is not specified. The specified block size will only be used pending support
by the remote server. If the server does not return an option acknowledgment
or returns an option acknowledgment with no block size, the default of 512
modified external/curl/docs/libcurl/opts/CURLOPT_TFTP_NO_OPTIONS.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_TFTP_NO_OPTIONS 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_TFTP_NO_OPTIONS 3 "June 25, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_TFTP_NO_OPTIONS \- send no TFTP options requests
@@ -33,8 +33,8 @@ CURLOPT_TFTP_NO_OPTIONS \- send no TFTP options requests
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TFTP_NO_OPTIONS, long onoff);
.fi
.SH DESCRIPTION
-
Set \fIonoff\fP to 1L to exclude all TFTP options defined in RFC2347, RFC2348
-
and RFC2349 from read and write requests.
+
Set \fIonoff\fP to 1L to exclude all TFTP options defined in RFC 2347,
+
RFC 2348 and RFC 2349 from read and write requests.

This option improves interoperability with legacy servers that do not
acknowledge or properly implement TFTP options. When this option is used
modified external/curl/docs/libcurl/opts/CURLOPT_TIMECONDITION.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_TIMECONDITION 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_TIMECONDITION 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_TIMECONDITION \- select condition for a time request
modified external/curl/docs/libcurl/opts/CURLOPT_TIMEOUT.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_TIMEOUT 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_TIMEOUT 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_TIMEOUT \- maximum time the transfer is allowed to complete
modified external/curl/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_TIMEOUT_MS 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_TIMEOUT_MS 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_TIMEOUT_MS \- maximum time the transfer is allowed to complete
modified external/curl/docs/libcurl/opts/CURLOPT_TIMEVALUE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_TIMEVALUE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_TIMEVALUE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_TIMEVALUE \- time value for conditional
modified external/curl/docs/libcurl/opts/CURLOPT_TIMEVALUE_LARGE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_TIMEVALUE_LARGE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_TIMEVALUE_LARGE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_TIMEVALUE_LARGE \- time value for conditional
modified external/curl/docs/libcurl/opts/CURLOPT_TLS13_CIPHERS.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_TLS13_CIPHERS 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_TLS13_CIPHERS 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_TLS13_CIPHERS \- ciphers suites to use for TLS 1.3
modified external/curl/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_TLSAUTH_PASSWORD 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_TLSAUTH_PASSWORD 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_TLSAUTH_PASSWORD \- password to use for TLS authentication
modified external/curl/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_TLSAUTH_TYPE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_TLSAUTH_TYPE 3 "June 25, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_TLSAUTH_TYPE \- TLS authentication methods
@@ -38,7 +38,7 @@ the method of the TLS authentication. Supported method is "SRP".

.IP SRP
TLS-SRP authentication. Secure Remote Password authentication for TLS is
-
defined in RFC5054 and provides mutual authentication if both sides have a
+
defined in RFC 5054 and provides mutual authentication if both sides have a
shared secret. To use TLS-SRP, you must also set the
\fICURLOPT_TLSAUTH_USERNAME(3)\fP and \fICURLOPT_TLSAUTH_PASSWORD(3)\fP
options.
modified external/curl/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_TLSAUTH_USERNAME 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_TLSAUTH_USERNAME 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_TLSAUTH_USERNAME \- user name to use for TLS authentication
modified external/curl/docs/libcurl/opts/CURLOPT_TRAILERDATA.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_TRAILERDATA 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_TRAILERDATA 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_TRAILERDATA \- pointer passed to trailing headers callback
modified external/curl/docs/libcurl/opts/CURLOPT_TRAILERFUNCTION.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_TRAILERFUNCTION 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_TRAILERFUNCTION 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_TRAILERFUNCTION \- callback for sending trailing headers
modified external/curl/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_TRANSFERTEXT 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_TRANSFERTEXT 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_TRANSFERTEXT \- request a text based transfer for FTP
modified external/curl/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_TRANSFER_ENCODING 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_TRANSFER_ENCODING 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_TRANSFER_ENCODING \- ask for HTTP Transfer Encoding
modified external/curl/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_UNIX_SOCKET_PATH 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_UNIX_SOCKET_PATH 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_UNIX_SOCKET_PATH \- Unix domain socket
modified external/curl/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_UNRESTRICTED_AUTH 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_UNRESTRICTED_AUTH 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_UNRESTRICTED_AUTH \- send credentials to other hosts too
modified external/curl/docs/libcurl/opts/CURLOPT_UPKEEP_INTERVAL_MS.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_UPKEEP_INTERVAL_MS 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_UPKEEP_INTERVAL_MS 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_UPKEEP_INTERVAL_MS \- connection upkeep interval
modified external/curl/docs/libcurl/opts/CURLOPT_UPLOAD.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_UPLOAD 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_UPLOAD 3 "June 11, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_UPLOAD \- data upload
@@ -43,10 +43,10 @@ Using PUT with HTTP 1.1 implies the use of a "Expect: 100-continue" header.
You can disable this header with \fICURLOPT_HTTPHEADER(3)\fP as usual.

If you use PUT to an HTTP 1.1 server, you can upload data without knowing the
-
size before starting the transfer if you use chunked encoding. You enable this
-
by adding a header like "Transfer-Encoding: chunked" with
-
\fICURLOPT_HTTPHEADER(3)\fP. With HTTP 1.0 or without chunked transfer, you
-
must specify the size.
+
size before starting the transfer. The library enables this by adding a header
+
"Transfer-Encoding: chunked". With HTTP 1.0 or if you prefer not to use chunked
+
transfer, you must specify the size of the data with
+
\fICURLOPT_INFILESIZE(3)\fP or \fICURLOPT_INFILESIZE_LARGE(3)\fP.
.SH DEFAULT
0, default is download
.SH PROTOCOLS
modified external/curl/docs/libcurl/opts/CURLOPT_UPLOAD_BUFFERSIZE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_UPLOAD_BUFFERSIZE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_UPLOAD_BUFFERSIZE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_UPLOAD_BUFFERSIZE \- upload buffer size
modified external/curl/docs/libcurl/opts/CURLOPT_URL.3
@@ -1,3 +1,4 @@
+

.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
@@ -22,7 +23,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_URL 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_URL 3 "June 25, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_URL \- URL for this transfer
@@ -39,7 +40,7 @@ format:

scheme://host:port/path

-
For a greater explanation of the format please see RFC3986.
+
For a greater explanation of the format please see RFC 3986.

libcurl does not validate the syntax or use this variable until the transfer is
issued. Even if you set a crazy value here, \fIcurl_easy_setopt(3)\fP will
modified external/curl/docs/libcurl/opts/CURLOPT_USERAGENT.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_USERAGENT 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_USERAGENT 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_USERAGENT \- HTTP user-agent header
modified external/curl/docs/libcurl/opts/CURLOPT_USERNAME.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_USERNAME 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_USERNAME 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_USERNAME \- user name to use in authentication
modified external/curl/docs/libcurl/opts/CURLOPT_USERPWD.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_USERPWD 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_USERPWD 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_USERPWD \- user name and password to use in authentication
modified external/curl/docs/libcurl/opts/CURLOPT_USE_SSL.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_USE_SSL 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_USE_SSL 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_USE_SSL \- request using SSL / TLS for the transfer
modified external/curl/docs/libcurl/opts/CURLOPT_VERBOSE.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_VERBOSE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_VERBOSE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_VERBOSE \- verbose mode
modified external/curl/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_WILDCARDMATCH 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_WILDCARDMATCH 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_WILDCARDMATCH \- directory wildcard transfers
modified external/curl/docs/libcurl/opts/CURLOPT_WRITEDATA.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_WRITEDATA 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_WRITEDATA 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_WRITEDATA \- pointer passed to the write callback
modified external/curl/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_WRITEFUNCTION 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_WRITEFUNCTION 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_WRITEFUNCTION \- callback for writing received data
modified external/curl/docs/libcurl/opts/CURLOPT_WS_OPTIONS.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_WS_OPTIONS 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_WS_OPTIONS 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_WS_OPTIONS \- WebSocket behavior options
modified external/curl/docs/libcurl/opts/CURLOPT_XFERINFODATA.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_XFERINFODATA 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_XFERINFODATA 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_XFERINFODATA \- pointer passed to the progress callback
modified external/curl/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_XFERINFOFUNCTION 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_XFERINFOFUNCTION 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_XFERINFOFUNCTION \- progress meter callback
modified external/curl/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.3
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH CURLOPT_XOAUTH2_BEARER 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLOPT_XOAUTH2_BEARER 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLOPT_XOAUTH2_BEARER \- OAuth 2.0 access token
modified external/curl/docs/libcurl/opts/CURLSHOPT_LOCKFUNC.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH CURLSHOPT_LOCKFUNC 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLSHOPT_LOCKFUNC 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLSHOPT_LOCKFUNC - mutex lock callback
modified external/curl/docs/libcurl/opts/CURLSHOPT_SHARE.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH CURLSHOPT_SHARE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLSHOPT_SHARE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLSHOPT_SHARE - add data to share
modified external/curl/docs/libcurl/opts/CURLSHOPT_UNLOCKFUNC.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH CURLSHOPT_UNLOCKFUNC 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLSHOPT_UNLOCKFUNC 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLSHOPT_UNLOCKFUNC - mutex unlock callback
modified external/curl/docs/libcurl/opts/CURLSHOPT_UNSHARE.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH CURLSHOPT_UNSHARE 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLSHOPT_UNSHARE 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLSHOPT_UNSHARE - remove data to share
modified external/curl/docs/libcurl/opts/CURLSHOPT_USERDATA.3
@@ -21,7 +21,7 @@
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
-
.TH CURLSHOPT_USERDATA 3 "April 26, 2023" "ibcurl 8.1.2" libcurl
+
.TH CURLSHOPT_USERDATA 3 "April 26, 2023" "ibcurl 8.2.1" libcurl

.SH NAME
CURLSHOPT_USERDATA - pointer passed to the lock and unlock mutex callbacks
modified external/curl/docs/libcurl/opts/Makefile.in
@@ -374,7 +374,7 @@ USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
-
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
+
USE_NGTCP2_CRYPTO_QUICTLS = @USE_NGTCP2_CRYPTO_QUICTLS@
USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
@@ -611,6 +611,7 @@ man_MANS = \
  CURLOPT_GSSAPI_DELEGATION.3                   \
  CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3           \
  CURLOPT_HAPROXYPROTOCOL.3                     \
+
  CURLOPT_HAPROXY_CLIENT_IP.3                   \
  CURLOPT_HEADER.3                              \
  CURLOPT_HEADERDATA.3                          \
  CURLOPT_HEADERFUNCTION.3                      \
@@ -653,7 +654,7 @@ man_MANS = \
  CURLOPT_MAIL_AUTH.3                           \
  CURLOPT_MAIL_FROM.3                           \
  CURLOPT_MAIL_RCPT.3                           \
-
  CURLOPT_MAIL_RCPT_ALLLOWFAILS.3               \
+
  CURLOPT_MAIL_RCPT_ALLOWFAILS.3                \
  CURLOPT_MAX_RECV_SPEED_LARGE.3                \
  CURLOPT_MAX_SEND_SPEED_LARGE.3                \
  CURLOPT_MAXAGE_CONN.3                         \
modified external/curl/docs/libcurl/opts/Makefile.inc
@@ -186,6 +186,7 @@ man_MANS = \
  CURLOPT_GSSAPI_DELEGATION.3                   \
  CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3           \
  CURLOPT_HAPROXYPROTOCOL.3                     \
+
  CURLOPT_HAPROXY_CLIENT_IP.3                   \
  CURLOPT_HEADER.3                              \
  CURLOPT_HEADERDATA.3                          \
  CURLOPT_HEADERFUNCTION.3                      \
@@ -228,7 +229,7 @@ man_MANS = \
  CURLOPT_MAIL_AUTH.3                           \
  CURLOPT_MAIL_FROM.3                           \
  CURLOPT_MAIL_RCPT.3                           \
-
  CURLOPT_MAIL_RCPT_ALLLOWFAILS.3               \
+
  CURLOPT_MAIL_RCPT_ALLOWFAILS.3                \
  CURLOPT_MAX_RECV_SPEED_LARGE.3                \
  CURLOPT_MAX_SEND_SPEED_LARGE.3                \
  CURLOPT_MAXAGE_CONN.3                         \
modified external/curl/docs/libcurl/symbols-in-versions
@@ -421,6 +421,7 @@ CURLINFO_CAINFO 7.84.0
CURLINFO_CAPATH                 7.84.0
CURLINFO_CERTINFO               7.19.1
CURLINFO_CONDITION_UNMET        7.19.4
+
CURLINFO_CONN_ID                8.2.0
CURLINFO_CONNECT_TIME           7.4.1
CURLINFO_CONNECT_TIME_T         7.61.0
CURLINFO_CONTENT_LENGTH_DOWNLOAD 7.6.1        7.55.0
@@ -503,6 +504,7 @@ CURLINFO_TLS_SSL_PTR 7.48.0
CURLINFO_TOTAL_TIME             7.4.1
CURLINFO_TOTAL_TIME_T           7.61.0
CURLINFO_TYPEMASK               7.4.1
+
CURLINFO_XFER_ID                8.2.0
CURLIOCMD_NOP                   7.12.3
CURLIOCMD_RESTARTREAD           7.12.3
CURLIOE_FAILRESTART             7.12.3
@@ -643,6 +645,7 @@ CURLOPT_FTPSSLAUTH 7.12.2
CURLOPT_GSSAPI_DELEGATION       7.22.0
CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS 7.59.0
CURLOPT_HAPROXYPROTOCOL         7.60.0
+
CURLOPT_HAPROXY_CLIENT_IP       8.2.0
CURLOPT_HEADER                  7.1
CURLOPT_HEADERDATA              7.10
CURLOPT_HEADERFUNCTION          7.7.2
@@ -688,7 +691,8 @@ CURLOPT_LOW_SPEED_TIME 7.1
CURLOPT_MAIL_AUTH               7.25.0
CURLOPT_MAIL_FROM               7.20.0
CURLOPT_MAIL_RCPT               7.20.0
-
CURLOPT_MAIL_RCPT_ALLLOWFAILS   7.69.0
+
CURLOPT_MAIL_RCPT_ALLLOWFAILS   7.69.0        8.2.0
+
CURLOPT_MAIL_RCPT_ALLOWFAILS    8.2.0
CURLOPT_QUICK_EXIT              7.87.0
CURLOPT_MAX_RECV_SPEED_LARGE    7.15.5
CURLOPT_MAX_SEND_SPEED_LARGE    7.15.5
modified external/curl/docs/options-in-versions
@@ -16,6 +16,7 @@
--append (-a)                        4.8
--aws-sigv4                          7.75.0
--basic                              7.10.6
+
--ca-native                          8.2.0
--cacert                             7.5
--capath                             7.9.8
--cert (-E)                          5.0
@@ -81,6 +82,7 @@
--globoff (-g)                       7.6
--happy-eyeballs-timeout-ms          7.59.0
--haproxy-protocol                   7.60.0
+
--haproxy-clientip                   8.2.0
--head (-I)                          4.0
--header (-H)                        5.0
--help (-h)                          4.0
@@ -157,6 +159,7 @@
--proxy (-x)                         4.0
--proxy-anyauth                      7.13.2
--proxy-basic                        7.12.0
+
--proxy-ca-native                    8.2.0
--proxy-cacert                       7.52.0
--proxy-capath                       7.52.0
--proxy-cert                         7.52.0
@@ -249,6 +252,7 @@
--tr-encoding                        7.21.6
--trace                              7.9.7
--trace-ascii                        7.9.7
+
--trace-ids                          8.2.0
--trace-time                         7.14.0
--unix-socket                        7.40.0
--upload-file (-T)                   4.0
modified external/curl/include/Makefile.in
@@ -353,7 +353,7 @@ USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
-
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
+
USE_NGTCP2_CRYPTO_QUICTLS = @USE_NGTCP2_CRYPTO_QUICTLS@
USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
modified external/curl/include/curl/Makefile.in
@@ -340,7 +340,7 @@ USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
-
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
+
USE_NGTCP2_CRYPTO_QUICTLS = @USE_NGTCP2_CRYPTO_QUICTLS@
USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
modified external/curl/include/curl/curl.h
@@ -93,7 +93,7 @@
    defined(__CYGWIN__) || defined(AMIGA) || defined(__NuttX__) || \
   (defined(__FreeBSD_version) && (__FreeBSD_version < 800000)) || \
   (defined(__MidnightBSD_version) && (__MidnightBSD_version < 100000)) || \
-
    defined(__sun__) || defined(__serenity__)
+
    defined(__sun__) || defined(__serenity__) || defined(__vxworks__)
#include <sys/select.h>
#endif

@@ -781,7 +781,7 @@ typedef enum {
  CURLPROXY_HTTP_1_0 = 1,   /* added in 7.19.4, force to use CONNECT
                               HTTP/1.0  */
  CURLPROXY_HTTPS = 2,  /* HTTPS but stick to HTTP/1 added in 7.52.0 */
-
  CURLPROXY_HTTPS2 = 3, /* HTTPS and attempt HTTP/2 added in 8.1.0 */
+
  CURLPROXY_HTTPS2 = 3, /* HTTPS and attempt HTTP/2 added in 8.2.0 */
  CURLPROXY_SOCKS4 = 4, /* support added in 7.15.2, enum existed already
                           in 7.10 */
  CURLPROXY_SOCKS5 = 5, /* added in 7.10 */
@@ -2113,7 +2113,7 @@ typedef enum {
  CURLOPT(CURLOPT_SASL_AUTHZID, CURLOPTTYPE_STRINGPOINT, 289),

  /* allow RCPT TO command to fail for some recipients */
-
  CURLOPT(CURLOPT_MAIL_RCPT_ALLLOWFAILS, CURLOPTTYPE_LONG, 290),
+
  CURLOPT(CURLOPT_MAIL_RCPT_ALLOWFAILS, CURLOPTTYPE_LONG, 290),

  /* the private SSL-certificate as a "blob" */
  CURLOPT(CURLOPT_SSLCERT_BLOB, CURLOPTTYPE_BLOB, 291),
@@ -2207,6 +2207,9 @@ typedef enum {
  /* Can leak things, gonna exit() soon */
  CURLOPT(CURLOPT_QUICK_EXIT, CURLOPTTYPE_LONG, 322),

+
  /* set a specific client IP for HAProxy PROXY protocol header? */
+
  CURLOPT(CURLOPT_HAPROXY_CLIENT_IP, CURLOPTTYPE_STRINGPOINT, 323),
+

  CURLOPT_LASTENTRY /* the last unused */
} CURLoption;

@@ -2235,6 +2238,9 @@ typedef enum {
/* */
#define CURLOPT_FTP_RESPONSE_TIMEOUT CURLOPT_SERVER_RESPONSE_TIMEOUT

+
/* Added in 8.2.0 */
+
#define CURLOPT_MAIL_RCPT_ALLLOWFAILS CURLOPT_MAIL_RCPT_ALLOWFAILS
+

#else
/* This is set if CURL_NO_OLDIES is defined at compile-time */
#undef CURLOPT_DNS_USE_GLOBAL_CACHE /* soon obsolete */
@@ -2918,7 +2924,9 @@ typedef enum {
  CURLINFO_REFERER          = CURLINFO_STRING + 60,
  CURLINFO_CAINFO           = CURLINFO_STRING + 61,
  CURLINFO_CAPATH           = CURLINFO_STRING + 62,
-
  CURLINFO_LASTONE          = 62
+
  CURLINFO_XFER_ID          = CURLINFO_OFF_T + 63,
+
  CURLINFO_CONN_ID          = CURLINFO_OFF_T + 64,
+
  CURLINFO_LASTONE          = 64
} CURLINFO;

/* CURLINFO_RESPONSE_CODE is the new name for the option previously known as
modified external/curl/include/curl/curlver.h
@@ -32,13 +32,13 @@

/* This is the version number of the libcurl package from which this header
   file origins: */
-
#define LIBCURL_VERSION "8.1.2"
+
#define LIBCURL_VERSION "8.2.1"

/* The numeric version number is also available "in parts" by using these
   defines: */
#define LIBCURL_VERSION_MAJOR 8
-
#define LIBCURL_VERSION_MINOR 1
-
#define LIBCURL_VERSION_PATCH 2
+
#define LIBCURL_VERSION_MINOR 2
+
#define LIBCURL_VERSION_PATCH 1

/* This is the numeric version of the libcurl version number, meant for easier
   parsing and comparisons by programs. The LIBCURL_VERSION_NUM define will
@@ -59,7 +59,7 @@
   CURL_VERSION_BITS() macro since curl's own configure script greps for it
   and needs it to contain the full number.
*/
-
#define LIBCURL_VERSION_NUM 0x080102
+
#define LIBCURL_VERSION_NUM 0x080201

/*
 * This is the date and time when the full source package was created. The
@@ -70,7 +70,7 @@
 *
 * "2007-11-23"
 */
-
#define LIBCURL_TIMESTAMP "2023-05-30"
+
#define LIBCURL_TIMESTAMP "2023-07-26"

#define CURL_VERSION_BITS(x,y,z) ((x)<<16|(y)<<8|(z))
#define CURL_AT_LEAST_VERSION(x,y,z) \
modified external/curl/include/curl/system.h
@@ -237,33 +237,28 @@
#  define CURL_PULL_SYS_SOCKET_H     1

#elif defined(__MVS__)
-
#  if defined(__IBMC__) || defined(__IBMCPP__)
-
#    if defined(_ILP32)
-
#    elif defined(_LP64)
-
#    endif
-
#    if defined(_LONG_LONG)
-
#      define CURL_TYPEOF_CURL_OFF_T     long long
-
#      define CURL_FORMAT_CURL_OFF_T     "lld"
-
#      define CURL_FORMAT_CURL_OFF_TU    "llu"
-
#      define CURL_SUFFIX_CURL_OFF_T     LL
-
#      define CURL_SUFFIX_CURL_OFF_TU    ULL
-
#    elif defined(_LP64)
-
#      define CURL_TYPEOF_CURL_OFF_T     long
-
#      define CURL_FORMAT_CURL_OFF_T     "ld"
-
#      define CURL_FORMAT_CURL_OFF_TU    "lu"
-
#      define CURL_SUFFIX_CURL_OFF_T     L
-
#      define CURL_SUFFIX_CURL_OFF_TU    UL
-
#    else
-
#      define CURL_TYPEOF_CURL_OFF_T     long
-
#      define CURL_FORMAT_CURL_OFF_T     "ld"
-
#      define CURL_FORMAT_CURL_OFF_TU    "lu"
-
#      define CURL_SUFFIX_CURL_OFF_T     L
-
#      define CURL_SUFFIX_CURL_OFF_TU    UL
-
#    endif
-
#    define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
-
#    define CURL_PULL_SYS_TYPES_H      1
-
#    define CURL_PULL_SYS_SOCKET_H     1
+
#  if defined(_LONG_LONG)
+
#    define CURL_TYPEOF_CURL_OFF_T     long long
+
#    define CURL_FORMAT_CURL_OFF_T     "lld"
+
#    define CURL_FORMAT_CURL_OFF_TU    "llu"
+
#    define CURL_SUFFIX_CURL_OFF_T     LL
+
#    define CURL_SUFFIX_CURL_OFF_TU    ULL
+
#  elif defined(_LP64)
+
#    define CURL_TYPEOF_CURL_OFF_T     long
+
#    define CURL_FORMAT_CURL_OFF_T     "ld"
+
#    define CURL_FORMAT_CURL_OFF_TU    "lu"
+
#    define CURL_SUFFIX_CURL_OFF_T     L
+
#    define CURL_SUFFIX_CURL_OFF_TU    UL
+
#  else
+
#    define CURL_TYPEOF_CURL_OFF_T     long
+
#    define CURL_FORMAT_CURL_OFF_T     "ld"
+
#    define CURL_FORMAT_CURL_OFF_TU    "lu"
+
#    define CURL_SUFFIX_CURL_OFF_T     L
+
#    define CURL_SUFFIX_CURL_OFF_TU    UL
#  endif
+
#  define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
+
#  define CURL_PULL_SYS_TYPES_H      1
+
#  define CURL_PULL_SYS_SOCKET_H     1

#elif defined(__370__)
#  if defined(__IBMC__) || defined(__IBMCPP__)
modified external/curl/include/curl/typecheck-gcc.h
@@ -280,6 +280,7 @@ CURLWARNING(_curl_easy_getinfo_err_curl_off_t,
   (option) == CURLOPT_FTP_ALTERNATIVE_TO_USER ||                             \
   (option) == CURLOPT_FTPPORT ||                                             \
   (option) == CURLOPT_HSTS ||                                                \
+
   (option) == CURLOPT_HAPROXY_CLIENT_IP ||                                   \
   (option) == CURLOPT_INTERFACE ||                                           \
   (option) == CURLOPT_ISSUERCERT ||                                          \
   (option) == CURLOPT_KEYPASSWD ||                                           \
modified external/curl/include/curl/websockets.h
@@ -54,13 +54,13 @@ struct curl_ws_frame {
 */
CURL_EXTERN CURLcode curl_ws_recv(CURL *curl, void *buffer, size_t buflen,
                                  size_t *recv,
-
                                  struct curl_ws_frame **metap);
+
                                  const struct curl_ws_frame **metap);

-
/* sendflags for curl_ws_send() */
+
/* flags for curl_ws_send() */
#define CURLWS_PONG       (1<<6)

/*
-
 * NAME curl_easy_send()
+
 * NAME curl_ws_send()
 *
 * DESCRIPTION
 *
@@ -69,13 +69,13 @@ CURL_EXTERN CURLcode curl_ws_recv(CURL *curl, void *buffer, size_t buflen,
 */
CURL_EXTERN CURLcode curl_ws_send(CURL *curl, const void *buffer,
                                  size_t buflen, size_t *sent,
-
                                  curl_off_t framesize,
-
                                  unsigned int sendflags);
+
                                  curl_off_t fragsize,
+
                                  unsigned int flags);

/* bits for the CURLOPT_WS_OPTIONS bitmask: */
#define CURLWS_RAW_MODE (1<<0)

-
CURL_EXTERN struct curl_ws_frame *curl_ws_meta(CURL *curl);
+
CURL_EXTERN const struct curl_ws_frame *curl_ws_meta(CURL *curl);

#ifdef  __cplusplus
}
modified external/curl/lib/CMakeLists.txt
@@ -65,15 +65,30 @@ add_library(
  )

add_library(
+
  curlu # special libcurlu library just for unittests
+
  STATIC
+
  EXCLUDE_FROM_ALL
+
  ${HHEADERS} ${CSOURCES}
+
)
+
target_compile_definitions(curlu PUBLIC UNITTESTS CURL_STATICLIB)
+

+
add_library(
  ${PROJECT_NAME}::${LIB_NAME}
  ALIAS ${LIB_NAME}
  )

+
if(ENABLE_CURLDEBUG)
+
  # We must compile memdebug.c separately to avoid memdebug.h redefinitions
+
  # being applied to memdebug.c itself.
+
  set_source_files_properties(memdebug.c PROPERTIES SKIP_UNITY_BUILD_INCLUSION ON)
+
endif()
+

if(NOT BUILD_SHARED_LIBS)
    set_target_properties(${LIB_NAME} PROPERTIES INTERFACE_COMPILE_DEFINITIONS CURL_STATICLIB)
endif()

target_link_libraries(${LIB_NAME} PRIVATE ${CURL_LIBS})
+
target_link_libraries(curlu PRIVATE ${CURL_LIBS})

transform_makefile_inc("Makefile.soname" "${CMAKE_CURRENT_BINARY_DIR}/Makefile.soname.cmake")
include(${CMAKE_CURRENT_BINARY_DIR}/Makefile.soname.cmake)
modified external/curl/lib/Makefile.in
@@ -226,11 +226,11 @@ am__libcurl_la_SOURCES_DIST = altsvc.c amigaos.c asyn-ares.c \
	hostip4.c hostip6.c hostsyn.c hsts.c http.c http1.c http2.c \
	http_chunks.c http_digest.c http_negotiate.c http_ntlm.c \
	http_proxy.c http_aws_sigv4.c idn.c if2ip.c imap.c inet_ntop.c \
-
	inet_pton.c krb5.c ldap.c llist.c md4.c md5.c memdebug.c \
-
	mime.c mprintf.c mqtt.c multi.c netrc.c nonblock.c noproxy.c \
-
	openldap.c parsedate.c pingpong.c pop3.c progress.c psl.c \
-
	rand.c rename.c rtsp.c select.c sendf.c setopt.c sha256.c \
-
	share.c slist.c smb.c smtp.c socketpair.c socks.c \
+
	inet_pton.c krb5.c ldap.c llist.c macos.c md4.c md5.c \
+
	memdebug.c mime.c mprintf.c mqtt.c multi.c netrc.c nonblock.c \
+
	noproxy.c openldap.c parsedate.c pingpong.c pop3.c progress.c \
+
	psl.c rand.c rename.c rtsp.c select.c sendf.c setopt.c \
+
	sha256.c share.c slist.c smb.c smtp.c socketpair.c socks.c \
	socks_gssapi.c socks_sspi.c speedcheck.c splay.c strcase.c \
	strdup.c strerror.c strtok.c strtoofft.c system_win32.c \
	telnet.c tftp.c timediff.c timeval.c transfer.c url.c urlapi.c \
@@ -262,8 +262,8 @@ am__libcurl_la_SOURCES_DIST = altsvc.c amigaos.c asyn-ares.c \
	gopher.h hash.h headers.h hostip.h hsts.h http.h http1.h \
	http2.h http_chunks.h http_digest.h http_negotiate.h \
	http_ntlm.h http_proxy.h http_aws_sigv4.h idn.h if2ip.h imap.h \
-
	inet_ntop.h inet_pton.h llist.h memdebug.h mime.h mqtt.h \
-
	multihandle.h multiif.h netrc.h nonblock.h noproxy.h \
+
	inet_ntop.h inet_pton.h llist.h macos.h memdebug.h mime.h \
+
	mqtt.h multihandle.h multiif.h netrc.h nonblock.h noproxy.h \
	parsedate.h pingpong.h pop3.h progress.h psl.h rand.h rename.h \
	rtsp.h select.h sendf.h setopt.h setup-vms.h share.h sigpipe.h \
	slist.h smb.h smtp.h sockaddr.h socketpair.h socks.h \
@@ -274,10 +274,11 @@ am__libcurl_la_SOURCES_DIST = altsvc.c amigaos.c asyn-ares.c \
	vauth/vauth.h vtls/bearssl.h vtls/gskit.h vtls/gtls.h \
	vtls/hostcheck.h vtls/keylog.h vtls/mbedtls.h \
	vtls/mbedtls_threadlock.h vtls/nssg.h vtls/openssl.h \
-
	vtls/rustls.h vtls/schannel.h vtls/sectransp.h vtls/vtls.h \
-
	vtls/vtls_int.h vtls/wolfssl.h vtls/x509asn1.h \
-
	vquic/curl_msh3.h vquic/curl_ngtcp2.h vquic/curl_quiche.h \
-
	vquic/vquic.h vquic/vquic_int.h vssh/ssh.h libcurl.rc
+
	vtls/rustls.h vtls/schannel.h vtls/schannel_int.h \
+
	vtls/sectransp.h vtls/vtls.h vtls/vtls_int.h vtls/wolfssl.h \
+
	vtls/x509asn1.h vquic/curl_msh3.h vquic/curl_ngtcp2.h \
+
	vquic/curl_quiche.h vquic/vquic.h vquic/vquic_int.h vssh/ssh.h \
+
	libcurl.rc
am__objects_1 = libcurl_la-altsvc.lo libcurl_la-amigaos.lo \
	libcurl_la-asyn-ares.lo libcurl_la-asyn-thread.lo \
	libcurl_la-base64.lo libcurl_la-bufq.lo libcurl_la-bufref.lo \
@@ -314,9 +315,10 @@ am__objects_1 = libcurl_la-altsvc.lo libcurl_la-amigaos.lo \
	libcurl_la-idn.lo libcurl_la-if2ip.lo libcurl_la-imap.lo \
	libcurl_la-inet_ntop.lo libcurl_la-inet_pton.lo \
	libcurl_la-krb5.lo libcurl_la-ldap.lo libcurl_la-llist.lo \
-
	libcurl_la-md4.lo libcurl_la-md5.lo libcurl_la-memdebug.lo \
-
	libcurl_la-mime.lo libcurl_la-mprintf.lo libcurl_la-mqtt.lo \
-
	libcurl_la-multi.lo libcurl_la-netrc.lo libcurl_la-nonblock.lo \
+
	libcurl_la-macos.lo libcurl_la-md4.lo libcurl_la-md5.lo \
+
	libcurl_la-memdebug.lo libcurl_la-mime.lo \
+
	libcurl_la-mprintf.lo libcurl_la-mqtt.lo libcurl_la-multi.lo \
+
	libcurl_la-netrc.lo libcurl_la-nonblock.lo \
	libcurl_la-noproxy.lo libcurl_la-openldap.lo \
	libcurl_la-parsedate.lo libcurl_la-pingpong.lo \
	libcurl_la-pop3.lo libcurl_la-progress.lo libcurl_la-psl.lo \
@@ -410,8 +412,9 @@ am__objects_11 = libcurlu_la-altsvc.lo libcurlu_la-amigaos.lo \
	libcurlu_la-idn.lo libcurlu_la-if2ip.lo libcurlu_la-imap.lo \
	libcurlu_la-inet_ntop.lo libcurlu_la-inet_pton.lo \
	libcurlu_la-krb5.lo libcurlu_la-ldap.lo libcurlu_la-llist.lo \
-
	libcurlu_la-md4.lo libcurlu_la-md5.lo libcurlu_la-memdebug.lo \
-
	libcurlu_la-mime.lo libcurlu_la-mprintf.lo libcurlu_la-mqtt.lo \
+
	libcurlu_la-macos.lo libcurlu_la-md4.lo libcurlu_la-md5.lo \
+
	libcurlu_la-memdebug.lo libcurlu_la-mime.lo \
+
	libcurlu_la-mprintf.lo libcurlu_la-mqtt.lo \
	libcurlu_la-multi.lo libcurlu_la-netrc.lo \
	libcurlu_la-nonblock.lo libcurlu_la-noproxy.lo \
	libcurlu_la-openldap.lo libcurlu_la-parsedate.lo \
@@ -556,6 +559,7 @@ am__depfiles_remade = ./$(DEPDIR)/libcurl_la-altsvc.Plo \
	./$(DEPDIR)/libcurl_la-krb5.Plo \
	./$(DEPDIR)/libcurl_la-ldap.Plo \
	./$(DEPDIR)/libcurl_la-llist.Plo \
+
	./$(DEPDIR)/libcurl_la-macos.Plo \
	./$(DEPDIR)/libcurl_la-md4.Plo ./$(DEPDIR)/libcurl_la-md5.Plo \
	./$(DEPDIR)/libcurl_la-memdebug.Plo \
	./$(DEPDIR)/libcurl_la-mime.Plo \
@@ -682,6 +686,7 @@ am__depfiles_remade = ./$(DEPDIR)/libcurl_la-altsvc.Plo \
	./$(DEPDIR)/libcurlu_la-krb5.Plo \
	./$(DEPDIR)/libcurlu_la-ldap.Plo \
	./$(DEPDIR)/libcurlu_la-llist.Plo \
+
	./$(DEPDIR)/libcurlu_la-macos.Plo \
	./$(DEPDIR)/libcurlu_la-md4.Plo \
	./$(DEPDIR)/libcurlu_la-md5.Plo \
	./$(DEPDIR)/libcurlu_la-memdebug.Plo \
@@ -1006,7 +1011,7 @@ USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
-
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
+
USE_NGTCP2_CRYPTO_QUICTLS = @USE_NGTCP2_CRYPTO_QUICTLS@
USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
@@ -1183,6 +1188,7 @@ LIB_VTLS_HFILES = \
  vtls/openssl.h            \
  vtls/rustls.h             \
  vtls/schannel.h           \
+
  vtls/schannel_int.h       \
  vtls/sectransp.h          \
  vtls/vtls.h               \
  vtls/vtls_int.h           \
@@ -1290,6 +1296,7 @@ LIB_CFILES = \
  krb5.c             \
  ldap.c             \
  llist.c            \
+
  macos.c            \
  md4.c              \
  md5.c              \
  memdebug.c         \
@@ -1426,6 +1433,7 @@ LIB_HFILES = \
  inet_ntop.h        \
  inet_pton.h        \
  llist.h            \
+
  macos.h            \
  memdebug.h         \
  mime.h             \
  mqtt.h             \
@@ -1871,6 +1879,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-krb5.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-ldap.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-llist.Plo@am__quote@ # am--include-marker
+
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-macos.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-md4.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-md5.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-memdebug.Plo@am__quote@ # am--include-marker
@@ -2000,6 +2009,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-krb5.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-ldap.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-llist.Plo@am__quote@ # am--include-marker
+
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-macos.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-md4.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-md5.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-memdebug.Plo@am__quote@ # am--include-marker
@@ -2706,6 +2716,13 @@ libcurl_la-llist.lo: llist.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-llist.lo `test -f 'llist.c' || echo '$(srcdir)/'`llist.c

+
libcurl_la-macos.lo: macos.c
+
@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-macos.lo -MD -MP -MF $(DEPDIR)/libcurl_la-macos.Tpo -c -o libcurl_la-macos.lo `test -f 'macos.c' || echo '$(srcdir)/'`macos.c
+
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-macos.Tpo $(DEPDIR)/libcurl_la-macos.Plo
+
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='macos.c' object='libcurl_la-macos.lo' libtool=yes @AMDEPBACKSLASH@
+
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-macos.lo `test -f 'macos.c' || echo '$(srcdir)/'`macos.c
+

libcurl_la-md4.lo: md4.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-md4.lo -MD -MP -MF $(DEPDIR)/libcurl_la-md4.Tpo -c -o libcurl_la-md4.lo `test -f 'md4.c' || echo '$(srcdir)/'`md4.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-md4.Tpo $(DEPDIR)/libcurl_la-md4.Plo
@@ -3861,6 +3878,13 @@ libcurlu_la-llist.lo: llist.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-llist.lo `test -f 'llist.c' || echo '$(srcdir)/'`llist.c

+
libcurlu_la-macos.lo: macos.c
+
@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-macos.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-macos.Tpo -c -o libcurlu_la-macos.lo `test -f 'macos.c' || echo '$(srcdir)/'`macos.c
+
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-macos.Tpo $(DEPDIR)/libcurlu_la-macos.Plo
+
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='macos.c' object='libcurlu_la-macos.lo' libtool=yes @AMDEPBACKSLASH@
+
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-macos.lo `test -f 'macos.c' || echo '$(srcdir)/'`macos.c
+

libcurlu_la-md4.lo: md4.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-md4.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-md4.Tpo -c -o libcurlu_la-md4.lo `test -f 'md4.c' || echo '$(srcdir)/'`md4.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-md4.Tpo $(DEPDIR)/libcurlu_la-md4.Plo
@@ -4688,6 +4712,7 @@ distclean: distclean-am
	-rm -f ./$(DEPDIR)/libcurl_la-krb5.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-ldap.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-llist.Plo
+
	-rm -f ./$(DEPDIR)/libcurl_la-macos.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-md4.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-md5.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-memdebug.Plo
@@ -4817,6 +4842,7 @@ distclean: distclean-am
	-rm -f ./$(DEPDIR)/libcurlu_la-krb5.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-ldap.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-llist.Plo
+
	-rm -f ./$(DEPDIR)/libcurlu_la-macos.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-md4.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-md5.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-memdebug.Plo
@@ -5063,6 +5089,7 @@ maintainer-clean: maintainer-clean-am
	-rm -f ./$(DEPDIR)/libcurl_la-krb5.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-ldap.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-llist.Plo
+
	-rm -f ./$(DEPDIR)/libcurl_la-macos.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-md4.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-md5.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-memdebug.Plo
@@ -5192,6 +5219,7 @@ maintainer-clean: maintainer-clean-am
	-rm -f ./$(DEPDIR)/libcurlu_la-krb5.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-ldap.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-llist.Plo
+
	-rm -f ./$(DEPDIR)/libcurlu_la-macos.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-md4.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-md5.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-memdebug.Plo
modified external/curl/lib/Makefile.inc
@@ -72,6 +72,7 @@ LIB_VTLS_HFILES = \
  vtls/openssl.h            \
  vtls/rustls.h             \
  vtls/schannel.h           \
+
  vtls/schannel_int.h       \
  vtls/sectransp.h          \
  vtls/vtls.h               \
  vtls/vtls_int.h           \
@@ -179,6 +180,7 @@ LIB_CFILES = \
  krb5.c             \
  ldap.c             \
  llist.c            \
+
  macos.c            \
  md4.c              \
  md5.c              \
  memdebug.c         \
@@ -315,6 +317,7 @@ LIB_HFILES = \
  inet_ntop.h        \
  inet_pton.h        \
  llist.h            \
+
  macos.h            \
  memdebug.h         \
  mime.h             \
  mqtt.h             \
modified external/curl/lib/Makefile.mk
@@ -239,7 +239,7 @@ ifeq ($(findstring -nghttp3,$(CFG))$(findstring -ngtcp2,$(CFG)),-nghttp3-ngtcp2)
      ifneq ($(wildcard $(OPENSSL_INCLUDE)/openssl/aead.h),)
        NGTCP2_LIBS := -lngtcp2_crypto_boringssl
      else  # including libressl
-
        NGTCP2_LIBS := -lngtcp2_crypto_openssl
+
        NGTCP2_LIBS := -lngtcp2_crypto_quictls
      endif
    else ifneq ($(findstring -wolfssl,$(CFG)),)
      NGTCP2_LIBS := -lngtcp2_crypto_wolfssl
modified external/curl/lib/altsvc.c
@@ -424,7 +424,7 @@ static void altsvc_flush(struct altsvcinfo *asi, enum alpnid srcalpnid,
#ifdef DEBUGBUILD
/* to play well with debug builds, we can *set* a fixed time this will
   return */
-
static time_t debugtime(void *unused)
+
static time_t altsvc_debugtime(void *unused)
{
  char *timestr = getenv("CURL_TIME");
  (void)unused;
@@ -434,7 +434,8 @@ static time_t debugtime(void *unused)
  }
  return time(NULL);
}
-
#define time(x) debugtime(x)
+
#undef time
+
#define time(x) altsvc_debugtime(x)
#endif

#define ISNEWLINE(x) (((x) == '\n') || (x) == '\r')
modified external/curl/lib/amigaos.c
@@ -178,6 +178,7 @@ struct Curl_addrinfo *Curl_ipv4_resolve_r(const char *hostname,
#endif /* CURLRES_AMIGA */

#ifdef USE_AMISSL
+
#include <signal.h>
int Curl_amiga_select(int nfds, fd_set *readfds, fd_set *writefds,
                      fd_set *errorfds, struct timeval *timeout)
{
modified external/curl/lib/base64.c
@@ -43,7 +43,7 @@

/* ---- Base64 Encoding/Decoding Table --- */
/* Padding character string starts at offset 64. */
-
static const char base64[]=
+
static const char base64encdec[]=
  "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

/* The Base 64 encoding with a URL and filename safe alphabet, RFC 4648
@@ -120,7 +120,7 @@ CURLcode Curl_base64_decode(const char *src,
  /* replaces
  {
    unsigned char c;
-
    const unsigned char *p = (const unsigned char *)base64;
+
    const unsigned char *p = (const unsigned char *)base64encdec;
    for(c = 0; *p; c++, p++)
      lookup[*p] = c;
  }
@@ -264,7 +264,7 @@ static CURLcode base64_encode(const char *table64,
CURLcode Curl_base64_encode(const char *inputbuff, size_t insize,
                            char **outptr, size_t *outlen)
{
-
  return base64_encode(base64, inputbuff, insize, outptr, outlen);
+
  return base64_encode(base64encdec, inputbuff, insize, outptr, outlen);
}

/*
modified external/curl/lib/bufq.c
@@ -418,7 +418,8 @@ ssize_t Curl_bufq_write(struct bufq *q,
      break;
    }
    n = chunk_append(tail, buf, len);
-
    DEBUGASSERT(n);
+
    if(!n)
+
      break;
    nwritten += n;
    buf += n;
    len -= n;
@@ -528,6 +529,14 @@ ssize_t Curl_bufq_pass(struct bufq *q, Curl_bufq_writer *writer,
      }
      break;
    }
+
    if(!chunk_written) {
+
      if(!nwritten) {
+
        /* treat as blocked */
+
        *err = CURLE_AGAIN;
+
        nwritten = -1;
+
      }
+
      break;
+
    }
    Curl_bufq_skip(q, (size_t)chunk_written);
    nwritten += chunk_written;
  }
@@ -551,7 +560,8 @@ ssize_t Curl_bufq_write_pass(struct bufq *q,
          /* real error, fail */
          return -1;
        }
-
        /* would block */
+
        /* would block, bufq is full, give up */
+
        break;
      }
    }

@@ -562,16 +572,25 @@ ssize_t Curl_bufq_write_pass(struct bufq *q,
        /* real error, fail */
        return -1;
      }
-
      /* no room in bufq, bail out */
-
      goto out;
+
      /* no room in bufq */
+
      break;
    }
+
    /* edge case of writer returning 0 (and len is >0)
+
     * break or we might enter an infinite loop here */
+
    if(n == 0)
+
      break;
+

    /* Maybe only part of `data` has been added, continue to loop */
    buf += (size_t)n;
    len -= (size_t)n;
    nwritten += (size_t)n;
  }

-
out:
+
  if(!nwritten && len) {
+
    *err = CURLE_AGAIN;
+
    return -1;
+
  }
+
  *err = CURLE_OK;
  return nwritten;
}

modified external/curl/lib/c-hyper.c
@@ -71,9 +71,11 @@ size_t Curl_hyper_recv(void *userp, hyper_context *ctx,
  DEBUGASSERT(conn);
  (void)ctx;

+
  DEBUGF(infof(data, "Curl_hyper_recv(%zu)", buflen));
  result = Curl_read(data, conn->sockfd, (char *)buf, buflen, &nread);
  if(result == CURLE_AGAIN) {
    /* would block, register interest */
+
    DEBUGF(infof(data, "Curl_hyper_recv(%zu) -> EAGAIN", buflen));
    if(data->hyp.read_waker)
      hyper_waker_free(data->hyp.read_waker);
    data->hyp.read_waker = hyper_context_waker(ctx);
@@ -87,6 +89,7 @@ size_t Curl_hyper_recv(void *userp, hyper_context *ctx,
    failf(data, "Curl_read failed");
    return HYPER_IO_ERROR;
  }
+
  DEBUGF(infof(data, "Curl_hyper_recv(%zu) -> %zd", buflen, nread));
  return (size_t)nread;
}

@@ -98,8 +101,12 @@ size_t Curl_hyper_send(void *userp, hyper_context *ctx,
  CURLcode result;
  ssize_t nwrote;

+
  DEBUGF(infof(data, "Curl_hyper_send(%zu)", buflen));
  result = Curl_write(data, conn->sockfd, (void *)buf, buflen, &nwrote);
+
  if(!result && !nwrote)
+
    result = CURLE_AGAIN;
  if(result == CURLE_AGAIN) {
+
    DEBUGF(infof(data, "Curl_hyper_send(%zu) -> EAGAIN", buflen));
    /* would block, register interest */
    if(data->hyp.write_waker)
      hyper_waker_free(data->hyp.write_waker);
@@ -114,6 +121,7 @@ size_t Curl_hyper_send(void *userp, hyper_context *ctx,
    failf(data, "Curl_write failed");
    return HYPER_IO_ERROR;
  }
+
  DEBUGF(infof(data, "Curl_hyper_send(%zu) -> %zd", buflen, nwrote));
  return (size_t)nwrote;
}

@@ -433,8 +441,7 @@ CURLcode Curl_hyper_stream(struct Curl_easy *data,
      break;
    }
    else if(t != HYPER_TASK_RESPONSE) {
-
      *didwhat = KEEP_RECV;
-
      break;
+
      continue;
    }
    /* HYPER_TASK_RESPONSE */

modified external/curl/lib/cf-h1-proxy.c
@@ -54,16 +54,16 @@


typedef enum {
-
    TUNNEL_INIT,     /* init/default/no tunnel state */
-
    TUNNEL_CONNECT,  /* CONNECT request is being send */
-
    TUNNEL_RECEIVE,  /* CONNECT answer is being received */
-
    TUNNEL_RESPONSE, /* CONNECT response received completely */
-
    TUNNEL_ESTABLISHED,
-
    TUNNEL_FAILED
-
} tunnel_state;
+
    H1_TUNNEL_INIT,     /* init/default/no tunnel state */
+
    H1_TUNNEL_CONNECT,  /* CONNECT request is being send */
+
    H1_TUNNEL_RECEIVE,  /* CONNECT answer is being received */
+
    H1_TUNNEL_RESPONSE, /* CONNECT response received completely */
+
    H1_TUNNEL_ESTABLISHED,
+
    H1_TUNNEL_FAILED
+
} h1_tunnel_state;

/* struct for HTTP CONNECT tunneling */
-
struct tunnel_state {
+
struct h1_tunnel_state {
  int sockindex;
  const char *hostname;
  int remote_port;
@@ -78,23 +78,23 @@ struct tunnel_state {
    KEEPON_IGNORE
  } keepon;
  curl_off_t cl; /* size of content to read and ignore */
-
  tunnel_state tunnel_state;
+
  h1_tunnel_state tunnel_state;
  BIT(chunked_encoding);
  BIT(close_connection);
};


-
static bool tunnel_is_established(struct tunnel_state *ts)
+
static bool tunnel_is_established(struct h1_tunnel_state *ts)
{
-
  return ts && (ts->tunnel_state == TUNNEL_ESTABLISHED);
+
  return ts && (ts->tunnel_state == H1_TUNNEL_ESTABLISHED);
}

-
static bool tunnel_is_failed(struct tunnel_state *ts)
+
static bool tunnel_is_failed(struct h1_tunnel_state *ts)
{
-
  return ts && (ts->tunnel_state == TUNNEL_FAILED);
+
  return ts && (ts->tunnel_state == H1_TUNNEL_FAILED);
}

-
static CURLcode tunnel_reinit(struct tunnel_state *ts,
+
static CURLcode tunnel_reinit(struct h1_tunnel_state *ts,
                              struct connectdata *conn,
                              struct Curl_easy *data)
{
@@ -102,7 +102,7 @@ static CURLcode tunnel_reinit(struct tunnel_state *ts,
  DEBUGASSERT(ts);
  Curl_dyn_reset(&ts->rcvbuf);
  Curl_dyn_reset(&ts->req);
-
  ts->tunnel_state = TUNNEL_INIT;
+
  ts->tunnel_state = H1_TUNNEL_INIT;
  ts->keepon = KEEPON_CONNECT;
  ts->cl = 0;
  ts->close_connection = FALSE;
@@ -124,12 +124,12 @@ static CURLcode tunnel_reinit(struct tunnel_state *ts,
  return CURLE_OK;
}

-
static CURLcode tunnel_init(struct tunnel_state **pts,
+
static CURLcode tunnel_init(struct h1_tunnel_state **pts,
                            struct Curl_easy *data,
                            struct connectdata *conn,
                            int sockindex)
{
-
  struct tunnel_state *ts;
+
  struct h1_tunnel_state *ts;
  CURLcode result;

  if(conn->handler->flags & PROTOPT_NOTCPPROXY) {
@@ -157,16 +157,16 @@ static CURLcode tunnel_init(struct tunnel_state **pts,
  return tunnel_reinit(ts, conn, data);
}

-
static void tunnel_go_state(struct Curl_cfilter *cf,
-
                            struct tunnel_state *ts,
-
                            tunnel_state new_state,
-
                            struct Curl_easy *data)
+
static void h1_tunnel_go_state(struct Curl_cfilter *cf,
+
                               struct h1_tunnel_state *ts,
+
                               h1_tunnel_state new_state,
+
                               struct Curl_easy *data)
{
  if(ts->tunnel_state == new_state)
    return;
  /* leaving this one */
  switch(ts->tunnel_state) {
-
  case TUNNEL_CONNECT:
+
  case H1_TUNNEL_CONNECT:
    data->req.ignorebody = FALSE;
    break;
  default:
@@ -174,36 +174,36 @@ static void tunnel_go_state(struct Curl_cfilter *cf,
  }
  /* entering this one */
  switch(new_state) {
-
  case TUNNEL_INIT:
+
  case H1_TUNNEL_INIT:
    DEBUGF(LOG_CF(data, cf, "new tunnel state 'init'"));
    tunnel_reinit(ts, cf->conn, data);
    break;

-
  case TUNNEL_CONNECT:
+
  case H1_TUNNEL_CONNECT:
    DEBUGF(LOG_CF(data, cf, "new tunnel state 'connect'"));
-
    ts->tunnel_state = TUNNEL_CONNECT;
+
    ts->tunnel_state = H1_TUNNEL_CONNECT;
    ts->keepon = KEEPON_CONNECT;
    Curl_dyn_reset(&ts->rcvbuf);
    break;

-
  case TUNNEL_RECEIVE:
+
  case H1_TUNNEL_RECEIVE:
    DEBUGF(LOG_CF(data, cf, "new tunnel state 'receive'"));
-
    ts->tunnel_state = TUNNEL_RECEIVE;
+
    ts->tunnel_state = H1_TUNNEL_RECEIVE;
    break;

-
  case TUNNEL_RESPONSE:
+
  case H1_TUNNEL_RESPONSE:
    DEBUGF(LOG_CF(data, cf, "new tunnel state 'response'"));
-
    ts->tunnel_state = TUNNEL_RESPONSE;
+
    ts->tunnel_state = H1_TUNNEL_RESPONSE;
    break;

-
  case TUNNEL_ESTABLISHED:
+
  case H1_TUNNEL_ESTABLISHED:
    DEBUGF(LOG_CF(data, cf, "new tunnel state 'established'"));
    infof(data, "CONNECT phase completed");
    data->state.authproxy.done = TRUE;
    data->state.authproxy.multipass = FALSE;
    /* FALLTHROUGH */
-
  case TUNNEL_FAILED:
-
    if(new_state == TUNNEL_FAILED)
+
  case H1_TUNNEL_FAILED:
+
    if(new_state == H1_TUNNEL_FAILED)
      DEBUGF(LOG_CF(data, cf, "new tunnel state 'failed'"));
    ts->tunnel_state = new_state;
    Curl_dyn_reset(&ts->rcvbuf);
@@ -225,9 +225,9 @@ static void tunnel_go_state(struct Curl_cfilter *cf,
static void tunnel_free(struct Curl_cfilter *cf,
                        struct Curl_easy *data)
{
-
  struct tunnel_state *ts = cf->ctx;
+
  struct h1_tunnel_state *ts = cf->ctx;
  if(ts) {
-
    tunnel_go_state(cf, ts, TUNNEL_FAILED, data);
+
    h1_tunnel_go_state(cf, ts, H1_TUNNEL_FAILED, data);
    Curl_dyn_free(&ts->rcvbuf);
    Curl_dyn_free(&ts->req);
    free(ts);
@@ -270,7 +270,7 @@ static CURLcode CONNECT_host(struct Curl_easy *data,
#ifndef USE_HYPER
static CURLcode start_CONNECT(struct Curl_cfilter *cf,
                              struct Curl_easy *data,
-
                              struct tunnel_state *ts)
+
                              struct h1_tunnel_state *ts)
{
  struct connectdata *conn = cf->conn;
  char *hostheader = NULL;
@@ -351,7 +351,7 @@ out:

static CURLcode send_CONNECT(struct Curl_easy *data,
                             struct connectdata *conn,
-
                             struct tunnel_state *ts,
+
                             struct h1_tunnel_state *ts,
                             bool *done)
{
  struct SingleRequest *k = &data->req;
@@ -399,7 +399,7 @@ out:

static CURLcode on_resp_header(struct Curl_cfilter *cf,
                               struct Curl_easy *data,
-
                               struct tunnel_state *ts,
+
                               struct h1_tunnel_state *ts,
                               const char *header)
{
  CURLcode result = CURLE_OK;
@@ -475,7 +475,7 @@ static CURLcode on_resp_header(struct Curl_cfilter *cf,

static CURLcode recv_CONNECT_resp(struct Curl_cfilter *cf,
                                  struct Curl_easy *data,
-
                                  struct tunnel_state *ts,
+
                                  struct h1_tunnel_state *ts,
                                  bool *done)
{
  CURLcode result = CURLE_OK;
@@ -671,7 +671,7 @@ static CURLcode recv_CONNECT_resp(struct Curl_cfilter *cf,
/* The Hyper version of CONNECT */
static CURLcode start_CONNECT(struct Curl_cfilter *cf,
                              struct Curl_easy *data,
-
                              struct tunnel_state *ts)
+
                              struct h1_tunnel_state *ts)
{
  struct connectdata *conn = cf->conn;
  struct hyptransfer *h = &data->hyp;
@@ -882,7 +882,7 @@ error:

static CURLcode send_CONNECT(struct Curl_easy *data,
                             struct connectdata *conn,
-
                             struct tunnel_state *ts,
+
                             struct h1_tunnel_state *ts,
                             bool *done)
{
  struct hyptransfer *h = &data->hyp;
@@ -919,7 +919,7 @@ error:

static CURLcode recv_CONNECT_resp(struct Curl_cfilter *cf,
                                  struct Curl_easy *data,
-
                                  struct tunnel_state *ts,
+
                                  struct h1_tunnel_state *ts,
                                  bool *done)
{
  struct hyptransfer *h = &data->hyp;
@@ -949,9 +949,9 @@ static CURLcode recv_CONNECT_resp(struct Curl_cfilter *cf,

#endif /* USE_HYPER */

-
static CURLcode CONNECT(struct Curl_cfilter *cf,
-
                        struct Curl_easy *data,
-
                        struct tunnel_state *ts)
+
static CURLcode H1_CONNECT(struct Curl_cfilter *cf,
+
                           struct Curl_easy *data,
+
                           struct h1_tunnel_state *ts)
{
  struct connectdata *conn = cf->conn;
  CURLcode result;
@@ -973,25 +973,25 @@ static CURLcode CONNECT(struct Curl_cfilter *cf,
    }

    switch(ts->tunnel_state) {
-
    case TUNNEL_INIT:
+
    case H1_TUNNEL_INIT:
      /* Prepare the CONNECT request and make a first attempt to send. */
      DEBUGF(LOG_CF(data, cf, "CONNECT start"));
      result = start_CONNECT(cf, data, ts);
      if(result)
        goto out;
-
      tunnel_go_state(cf, ts, TUNNEL_CONNECT, data);
+
      h1_tunnel_go_state(cf, ts, H1_TUNNEL_CONNECT, data);
      /* FALLTHROUGH */

-
    case TUNNEL_CONNECT:
+
    case H1_TUNNEL_CONNECT:
      /* see that the request is completely sent */
      DEBUGF(LOG_CF(data, cf, "CONNECT send"));
      result = send_CONNECT(data, cf->conn, ts, &done);
      if(result || !done)
        goto out;
-
      tunnel_go_state(cf, ts, TUNNEL_RECEIVE, data);
+
      h1_tunnel_go_state(cf, ts, H1_TUNNEL_RECEIVE, data);
      /* FALLTHROUGH */

-
    case TUNNEL_RECEIVE:
+
    case H1_TUNNEL_RECEIVE:
      /* read what is there */
      DEBUGF(LOG_CF(data, cf, "CONNECT receive"));
      result = recv_CONNECT_resp(cf, data, ts, &done);
@@ -1003,10 +1003,10 @@ static CURLcode CONNECT(struct Curl_cfilter *cf,
      if(result || !done)
        goto out;
      /* got it */
-
      tunnel_go_state(cf, ts, TUNNEL_RESPONSE, data);
+
      h1_tunnel_go_state(cf, ts, H1_TUNNEL_RESPONSE, data);
      /* FALLTHROUGH */

-
    case TUNNEL_RESPONSE:
+
    case H1_TUNNEL_RESPONSE:
      DEBUGF(LOG_CF(data, cf, "CONNECT response"));
      if(data->req.newurl) {
        /* not the "final" response, we need to do a follow up request.
@@ -1028,7 +1028,7 @@ static CURLcode CONNECT(struct Curl_cfilter *cf,
        }
        else {
          /* staying on this connection, reset state */
-
          tunnel_go_state(cf, ts, TUNNEL_INIT, data);
+
          h1_tunnel_go_state(cf, ts, H1_TUNNEL_INIT, data);
        }
      }
      break;
@@ -1039,25 +1039,25 @@ static CURLcode CONNECT(struct Curl_cfilter *cf,

  } while(data->req.newurl);

-
  DEBUGASSERT(ts->tunnel_state == TUNNEL_RESPONSE);
+
  DEBUGASSERT(ts->tunnel_state == H1_TUNNEL_RESPONSE);
  if(data->info.httpproxycode/100 != 2) {
    /* a non-2xx response and we have no next url to try. */
    Curl_safefree(data->req.newurl);
    /* failure, close this connection to avoid re-use */
    streamclose(conn, "proxy CONNECT failure");
-
    tunnel_go_state(cf, ts, TUNNEL_FAILED, data);
+
    h1_tunnel_go_state(cf, ts, H1_TUNNEL_FAILED, data);
    failf(data, "CONNECT tunnel failed, response %d", data->req.httpcode);
    return CURLE_RECV_ERROR;
  }
  /* 2xx response, SUCCESS! */
-
  tunnel_go_state(cf, ts, TUNNEL_ESTABLISHED, data);
+
  h1_tunnel_go_state(cf, ts, H1_TUNNEL_ESTABLISHED, data);
  infof(data, "CONNECT tunnel established, response %d",
        data->info.httpproxycode);
  result = CURLE_OK;

out:
  if(result)
-
    tunnel_go_state(cf, ts, TUNNEL_FAILED, data);
+
    h1_tunnel_go_state(cf, ts, H1_TUNNEL_FAILED, data);
  return result;
}

@@ -1066,7 +1066,7 @@ static CURLcode cf_h1_proxy_connect(struct Curl_cfilter *cf,
                                    bool blocking, bool *done)
{
  CURLcode result;
-
  struct tunnel_state *ts = cf->ctx;
+
  struct h1_tunnel_state *ts = cf->ctx;

  if(cf->connected) {
    *done = TRUE;
@@ -1074,7 +1074,7 @@ static CURLcode cf_h1_proxy_connect(struct Curl_cfilter *cf,
  }

  DEBUGF(LOG_CF(data, cf, "connect"));
-
  result = cf->next->cft->connect(cf->next, data, blocking, done);
+
  result = cf->next->cft->do_connect(cf->next, data, blocking, done);
  if(result || !*done)
    return result;

@@ -1089,7 +1089,7 @@ static CURLcode cf_h1_proxy_connect(struct Curl_cfilter *cf,
  /* TODO: can we do blocking? */
  /* We want "seamless" operations through HTTP proxy tunnel */

-
  result = CONNECT(cf, data, ts);
+
  result = H1_CONNECT(cf, data, ts);
  if(result)
    goto out;
  Curl_safefree(data->state.aptr.proxyuserpwd);
@@ -1107,7 +1107,7 @@ static int cf_h1_proxy_get_select_socks(struct Curl_cfilter *cf,
                                        struct Curl_easy *data,
                                        curl_socket_t *socks)
{
-
  struct tunnel_state *ts = cf->ctx;
+
  struct h1_tunnel_state *ts = cf->ctx;
  int fds;

  fds = cf->next->cft->get_select_socks(cf->next, data, socks);
@@ -1143,10 +1143,10 @@ static void cf_h1_proxy_close(struct Curl_cfilter *cf,
  DEBUGF(LOG_CF(data, cf, "close"));
  cf->connected = FALSE;
  if(cf->ctx) {
-
    tunnel_go_state(cf, cf->ctx, TUNNEL_INIT, data);
+
    h1_tunnel_go_state(cf, cf->ctx, H1_TUNNEL_INIT, data);
  }
  if(cf->next)
-
    cf->next->cft->close(cf->next, data);
+
    cf->next->cft->do_close(cf->next, data);
}


modified external/curl/lib/cf-h2-proxy.c
@@ -44,26 +44,25 @@
#include "curl_memory.h"
#include "memdebug.h"

-
#define H2_NW_CHUNK_SIZE  (128*1024)
-
#define H2_NW_RECV_CHUNKS   1
-
#define H2_NW_SEND_CHUNKS   1
+
#define H2_CHUNK_SIZE  (16*1024)

-
#define HTTP2_HUGE_WINDOW_SIZE (32 * 1024 * 1024) /* 32 MB */
+
#define PROXY_HTTP2_HUGE_WINDOW_SIZE (100 * 1024 * 1024)
+
#define H2_TUNNEL_WINDOW_SIZE        (10 * 1024 * 1024)
+

+
#define PROXY_H2_NW_RECV_CHUNKS  (H2_TUNNEL_WINDOW_SIZE / H2_CHUNK_SIZE)
+
#define PROXY_H2_NW_SEND_CHUNKS   1
+

+
#define H2_TUNNEL_RECV_CHUNKS   (H2_TUNNEL_WINDOW_SIZE / H2_CHUNK_SIZE)
+
#define H2_TUNNEL_SEND_CHUNKS   ((128 * 1024) / H2_CHUNK_SIZE)

-
#define H2_TUNNEL_WINDOW_SIZE (1024 * 1024)
-
#define H2_TUNNEL_CHUNK_SIZE   (32 * 1024)
-
#define H2_TUNNEL_RECV_CHUNKS \
-
          (H2_TUNNEL_WINDOW_SIZE / H2_TUNNEL_CHUNK_SIZE)
-
#define H2_TUNNEL_SEND_CHUNKS \
-
          (H2_TUNNEL_WINDOW_SIZE / H2_TUNNEL_CHUNK_SIZE)

typedef enum {
-
    TUNNEL_INIT,     /* init/default/no tunnel state */
-
    TUNNEL_CONNECT,  /* CONNECT request is being send */
-
    TUNNEL_RESPONSE, /* CONNECT response received completely */
-
    TUNNEL_ESTABLISHED,
-
    TUNNEL_FAILED
-
} tunnel_state;
+
    H2_TUNNEL_INIT,     /* init/default/no tunnel state */
+
    H2_TUNNEL_CONNECT,  /* CONNECT request is being send */
+
    H2_TUNNEL_RESPONSE, /* CONNECT response received completely */
+
    H2_TUNNEL_ESTABLISHED,
+
    H2_TUNNEL_FAILED
+
} h2_tunnel_state;

struct tunnel_stream {
  struct http_resp *resp;
@@ -72,10 +71,11 @@ struct tunnel_stream {
  char *authority;
  int32_t stream_id;
  uint32_t error;
-
  tunnel_state state;
-
  bool has_final_response;
-
  bool closed;
-
  bool reset;
+
  size_t upload_blocked_len;
+
  h2_tunnel_state state;
+
  BIT(has_final_response);
+
  BIT(closed);
+
  BIT(reset);
};

static CURLcode tunnel_stream_init(struct Curl_cfilter *cf,
@@ -85,11 +85,11 @@ static CURLcode tunnel_stream_init(struct Curl_cfilter *cf,
  int port;
  bool ipv6_ip = cf->conn->bits.ipv6_ip;

-
  ts->state = TUNNEL_INIT;
+
  ts->state = H2_TUNNEL_INIT;
  ts->stream_id = -1;
-
  Curl_bufq_init2(&ts->recvbuf, H2_TUNNEL_CHUNK_SIZE, H2_TUNNEL_RECV_CHUNKS,
+
  Curl_bufq_init2(&ts->recvbuf, H2_CHUNK_SIZE, H2_TUNNEL_RECV_CHUNKS,
                  BUFQ_OPT_SOFT_LIMIT);
-
  Curl_bufq_init(&ts->sendbuf, H2_TUNNEL_CHUNK_SIZE, H2_TUNNEL_SEND_CHUNKS);
+
  Curl_bufq_init(&ts->sendbuf, H2_CHUNK_SIZE, H2_TUNNEL_SEND_CHUNKS);

  if(cf->conn->bits.conn_to_host)
    hostname = cf->conn->conn_to_host.name;
@@ -123,13 +123,13 @@ static void tunnel_stream_clear(struct tunnel_stream *ts)
  Curl_bufq_free(&ts->sendbuf);
  Curl_safefree(ts->authority);
  memset(ts, 0, sizeof(*ts));
-
  ts->state = TUNNEL_INIT;
+
  ts->state = H2_TUNNEL_INIT;
}

-
static void tunnel_go_state(struct Curl_cfilter *cf,
-
                            struct tunnel_stream *ts,
-
                            tunnel_state new_state,
-
                            struct Curl_easy *data)
+
static void h2_tunnel_go_state(struct Curl_cfilter *cf,
+
                               struct tunnel_stream *ts,
+
                               h2_tunnel_state new_state,
+
                               struct Curl_easy *data)
{
  (void)cf;

@@ -137,7 +137,7 @@ static void tunnel_go_state(struct Curl_cfilter *cf,
    return;
  /* leaving this one */
  switch(ts->state) {
-
  case TUNNEL_CONNECT:
+
  case H2_TUNNEL_CONNECT:
    data->req.ignorebody = FALSE;
    break;
  default:
@@ -145,29 +145,29 @@ static void tunnel_go_state(struct Curl_cfilter *cf,
  }
  /* entering this one */
  switch(new_state) {
-
  case TUNNEL_INIT:
+
  case H2_TUNNEL_INIT:
    DEBUGF(LOG_CF(data, cf, "new tunnel state 'init'"));
    tunnel_stream_clear(ts);
    break;

-
  case TUNNEL_CONNECT:
+
  case H2_TUNNEL_CONNECT:
    DEBUGF(LOG_CF(data, cf, "new tunnel state 'connect'"));
-
    ts->state = TUNNEL_CONNECT;
+
    ts->state = H2_TUNNEL_CONNECT;
    break;

-
  case TUNNEL_RESPONSE:
+
  case H2_TUNNEL_RESPONSE:
    DEBUGF(LOG_CF(data, cf, "new tunnel state 'response'"));
-
    ts->state = TUNNEL_RESPONSE;
+
    ts->state = H2_TUNNEL_RESPONSE;
    break;

-
  case TUNNEL_ESTABLISHED:
+
  case H2_TUNNEL_ESTABLISHED:
    DEBUGF(LOG_CF(data, cf, "new tunnel state 'established'"));
    infof(data, "CONNECT phase completed");
    data->state.authproxy.done = TRUE;
    data->state.authproxy.multipass = FALSE;
    /* FALLTHROUGH */
-
  case TUNNEL_FAILED:
-
    if(new_state == TUNNEL_FAILED)
+
  case H2_TUNNEL_FAILED:
+
    if(new_state == H2_TUNNEL_FAILED)
      DEBUGF(LOG_CF(data, cf, "new tunnel state 'failed'"));
    ts->state = new_state;
    /* If a proxy-authorization header was used for the proxy, then we should
@@ -191,9 +191,11 @@ struct cf_h2_proxy_ctx {
  int32_t last_stream_id;
  BIT(conn_closed);
  BIT(goaway);
+
  BIT(nw_out_blocked);
};

/* How to access `call_data` from a cf_h2 filter */
+
#undef CF_CTX_CALL_DATA
#define CF_CTX_CALL_DATA(cf)  \
  ((struct cf_h2_proxy_ctx *)(cf)->ctx)->call_data

@@ -219,35 +221,54 @@ static void cf_h2_proxy_ctx_free(struct cf_h2_proxy_ctx *ctx)
  }
}

-
static ssize_t nw_in_reader(void *reader_ctx,
-
                              unsigned char *buf, size_t buflen,
-
                              CURLcode *err)
+
static void drain_tunnel(struct Curl_cfilter *cf,
+
                         struct Curl_easy *data,
+
                         struct tunnel_stream *tunnel)
+
{
+
  unsigned char bits;
+

+
  (void)cf;
+
  bits = CURL_CSELECT_IN;
+
  if(!tunnel->closed && !tunnel->reset && tunnel->upload_blocked_len)
+
    bits |= CURL_CSELECT_OUT;
+
  if(data->state.dselect_bits != bits) {
+
    DEBUGF(LOG_CF(data, cf, "[h2sid=%d] DRAIN dselect_bits=%x",
+
                  tunnel->stream_id, bits));
+
    data->state.dselect_bits = bits;
+
    Curl_expire(data, 0, EXPIRE_RUN_NOW);
+
  }
+
}
+

+
static ssize_t proxy_nw_in_reader(void *reader_ctx,
+
                                  unsigned char *buf, size_t buflen,
+
                                  CURLcode *err)
{
  struct Curl_cfilter *cf = reader_ctx;
  struct Curl_easy *data = CF_DATA_CURRENT(cf);
  ssize_t nread;

  nread = Curl_conn_cf_recv(cf->next, data, (char *)buf, buflen, err);
-
  DEBUGF(LOG_CF(data, cf, "nw_in recv(len=%zu) -> %zd, %d",
+
  DEBUGF(LOG_CF(data, cf, "nw_in_reader(len=%zu) -> %zd, %d",
         buflen, nread, *err));
  return nread;
}

-
static ssize_t nw_out_writer(void *writer_ctx,
-
                             const unsigned char *buf, size_t buflen,
-
                             CURLcode *err)
+
static ssize_t proxy_h2_nw_out_writer(void *writer_ctx,
+
                                      const unsigned char *buf, size_t buflen,
+
                                      CURLcode *err)
{
  struct Curl_cfilter *cf = writer_ctx;
  struct Curl_easy *data = CF_DATA_CURRENT(cf);
  ssize_t nwritten;

  nwritten = Curl_conn_cf_send(cf->next, data, (const char *)buf, buflen, err);
-
  DEBUGF(LOG_CF(data, cf, "nw_out send(len=%zu) -> %zd", buflen, nwritten));
+
  DEBUGF(LOG_CF(data, cf, "nw_out_writer(len=%zu) -> %zd, %d",
+
                buflen, nwritten, *err));
  return nwritten;
}

-
static int h2_client_new(struct Curl_cfilter *cf,
-
                         nghttp2_session_callbacks *cbs)
+
static int proxy_h2_client_new(struct Curl_cfilter *cf,
+
                               nghttp2_session_callbacks *cbs)
{
  struct cf_h2_proxy_ctx *ctx = cf->ctx;
  nghttp2_option *o;
@@ -271,15 +292,18 @@ static int h2_client_new(struct Curl_cfilter *cf,
static ssize_t on_session_send(nghttp2_session *h2,
                              const uint8_t *buf, size_t blen,
                              int flags, void *userp);
-
static int on_frame_recv(nghttp2_session *session, const nghttp2_frame *frame,
-
                         void *userp);
-
static int on_stream_close(nghttp2_session *session, int32_t stream_id,
-
                           uint32_t error_code, void *userp);
-
static int on_header(nghttp2_session *session, const nghttp2_frame *frame,
-
                     const uint8_t *name, size_t namelen,
-
                     const uint8_t *value, size_t valuelen,
-
                     uint8_t flags,
-
                     void *userp);
+
static int proxy_h2_on_frame_recv(nghttp2_session *session,
+
                                  const nghttp2_frame *frame,
+
                                  void *userp);
+
static int proxy_h2_on_stream_close(nghttp2_session *session,
+
                                    int32_t stream_id,
+
                                    uint32_t error_code, void *userp);
+
static int proxy_h2_on_header(nghttp2_session *session,
+
                              const nghttp2_frame *frame,
+
                              const uint8_t *name, size_t namelen,
+
                              const uint8_t *value, size_t valuelen,
+
                              uint8_t flags,
+
                              void *userp);
static int tunnel_recv_callback(nghttp2_session *session, uint8_t flags,
                                int32_t stream_id,
                                const uint8_t *mem, size_t len, void *userp);
@@ -298,8 +322,8 @@ static CURLcode cf_h2_proxy_ctx_init(struct Curl_cfilter *cf,
  DEBUGASSERT(!ctx->h2);
  memset(&ctx->tunnel, 0, sizeof(ctx->tunnel));

-
  Curl_bufq_init(&ctx->inbufq, H2_NW_CHUNK_SIZE, H2_NW_RECV_CHUNKS);
-
  Curl_bufq_init(&ctx->outbufq, H2_NW_CHUNK_SIZE, H2_NW_SEND_CHUNKS);
+
  Curl_bufq_init(&ctx->inbufq, H2_CHUNK_SIZE, PROXY_H2_NW_RECV_CHUNKS);
+
  Curl_bufq_init(&ctx->outbufq, H2_CHUNK_SIZE, PROXY_H2_NW_SEND_CHUNKS);

  if(tunnel_stream_init(cf, &ctx->tunnel))
    goto out;
@@ -311,14 +335,16 @@ static CURLcode cf_h2_proxy_ctx_init(struct Curl_cfilter *cf,
  }

  nghttp2_session_callbacks_set_send_callback(cbs, on_session_send);
-
  nghttp2_session_callbacks_set_on_frame_recv_callback(cbs, on_frame_recv);
+
  nghttp2_session_callbacks_set_on_frame_recv_callback(
+
    cbs, proxy_h2_on_frame_recv);
  nghttp2_session_callbacks_set_on_data_chunk_recv_callback(
    cbs, tunnel_recv_callback);
-
  nghttp2_session_callbacks_set_on_stream_close_callback(cbs, on_stream_close);
-
  nghttp2_session_callbacks_set_on_header_callback(cbs, on_header);
+
  nghttp2_session_callbacks_set_on_stream_close_callback(
+
    cbs, proxy_h2_on_stream_close);
+
  nghttp2_session_callbacks_set_on_header_callback(cbs, proxy_h2_on_header);

  /* The nghttp2 session is not yet setup, do it */
-
  rc = h2_client_new(cf, cbs);
+
  rc = proxy_h2_client_new(cf, cbs);
  if(rc) {
    failf(data, "Couldn't initialize nghttp2");
    goto out;
@@ -343,7 +369,7 @@ static CURLcode cf_h2_proxy_ctx_init(struct Curl_cfilter *cf,
  }

  rc = nghttp2_session_set_local_window_size(ctx->h2, NGHTTP2_FLAG_NONE, 0,
-
                                             HTTP2_HUGE_WINDOW_SIZE);
+
                                             PROXY_HTTP2_HUGE_WINDOW_SIZE);
  if(rc) {
    failf(data, "nghttp2_session_set_local_window_size() failed: %s(%d)",
          nghttp2_strerror(rc), rc);
@@ -362,27 +388,35 @@ out:
  return result;
}

-
static CURLcode nw_out_flush(struct Curl_cfilter *cf,
-
                             struct Curl_easy *data)
+
static int should_close_session(struct cf_h2_proxy_ctx *ctx)
+
{
+
  return !nghttp2_session_want_read(ctx->h2) &&
+
    !nghttp2_session_want_write(ctx->h2);
+
}
+

+
static CURLcode proxy_h2_nw_out_flush(struct Curl_cfilter *cf,
+
                                      struct Curl_easy *data)
{
  struct cf_h2_proxy_ctx *ctx = cf->ctx;
-
  size_t buflen = Curl_bufq_len(&ctx->outbufq);
  ssize_t nwritten;
  CURLcode result;

  (void)data;
-
  if(!buflen)
+
  if(Curl_bufq_is_empty(&ctx->outbufq))
    return CURLE_OK;

-
  DEBUGF(LOG_CF(data, cf, "h2 conn flush %zu bytes", buflen));
-
  nwritten = Curl_bufq_pass(&ctx->outbufq, nw_out_writer, cf, &result);
+
  nwritten = Curl_bufq_pass(&ctx->outbufq, proxy_h2_nw_out_writer, cf,
+
                            &result);
  if(nwritten < 0) {
+
    if(result == CURLE_AGAIN) {
+
      DEBUGF(LOG_CF(data, cf, "flush nw send buffer(%zu) -> EAGAIN",
+
                    Curl_bufq_len(&ctx->outbufq)));
+
      ctx->nw_out_blocked = 1;
+
    }
    return result;
  }
-
  if((size_t)nwritten < buflen) {
-
    return CURLE_AGAIN;
-
  }
-
  return CURLE_OK;
+
  DEBUGF(LOG_CF(data, cf, "nw send buffer flushed"));
+
  return Curl_bufq_is_empty(&ctx->outbufq)? CURLE_OK: CURLE_AGAIN;
}

/*
@@ -390,9 +424,9 @@ static CURLcode nw_out_flush(struct Curl_cfilter *cf,
 * This function returns 0 if it succeeds, or -1 and error code will
 * be assigned to *err.
 */
-
static int h2_process_pending_input(struct Curl_cfilter *cf,
-
                                    struct Curl_easy *data,
-
                                    CURLcode *err)
+
static int proxy_h2_process_pending_input(struct Curl_cfilter *cf,
+
                                          struct Curl_easy *data,
+
                                          CURLcode *err)
{
  struct cf_h2_proxy_ctx *ctx = cf->ctx;
  const unsigned char *buf;
@@ -422,19 +456,11 @@ static int h2_process_pending_input(struct Curl_cfilter *cf,
    }
  }

-
  if(nghttp2_session_check_request_allowed(ctx->h2) == 0) {
-
    /* No more requests are allowed in the current session, so
-
       the connection may not be reused. This is set when a
-
       GOAWAY frame has been received or when the limit of stream
-
       identifiers has been reached. */
-
    connclose(cf->conn, "http/2: No new requests allowed");
-
  }
-

  return 0;
}

-
static CURLcode h2_progress_ingress(struct Curl_cfilter *cf,
-
                                    struct Curl_easy *data)
+
static CURLcode proxy_h2_progress_ingress(struct Curl_cfilter *cf,
+
                                          struct Curl_easy *data)
{
  struct cf_h2_proxy_ctx *ctx = cf->ctx;
  CURLcode result = CURLE_OK;
@@ -442,9 +468,9 @@ static CURLcode h2_progress_ingress(struct Curl_cfilter *cf,

  /* Process network input buffer fist */
  if(!Curl_bufq_is_empty(&ctx->inbufq)) {
-
    DEBUGF(LOG_CF(data, cf, "Process %zd bytes in connection buffer",
+
    DEBUGF(LOG_CF(data, cf, "Process %zu bytes in connection buffer",
                  Curl_bufq_len(&ctx->inbufq)));
-
    if(h2_process_pending_input(cf, data, &result) < 0)
+
    if(proxy_h2_process_pending_input(cf, data, &result) < 0)
      return result;
  }

@@ -455,8 +481,8 @@ static CURLcode h2_progress_ingress(struct Curl_cfilter *cf,
        Curl_bufq_is_empty(&ctx->inbufq) && /* and we consumed our input */
        !Curl_bufq_is_full(&ctx->tunnel.recvbuf)) {

-
    nread = Curl_bufq_slurp(&ctx->inbufq, nw_in_reader, cf, &result);
-
    DEBUGF(LOG_CF(data, cf, "read %zd bytes nw data -> %zd, %d",
+
    nread = Curl_bufq_slurp(&ctx->inbufq, proxy_nw_in_reader, cf, &result);
+
    DEBUGF(LOG_CF(data, cf, "read %zu bytes nw data -> %zd, %d",
                  Curl_bufq_len(&ctx->inbufq), nread, result));
    if(nread < 0) {
      if(result != CURLE_AGAIN) {
@@ -470,7 +496,7 @@ static CURLcode h2_progress_ingress(struct Curl_cfilter *cf,
      break;
    }

-
    if(h2_process_pending_input(cf, data, &result))
+
    if(proxy_h2_process_pending_input(cf, data, &result))
      return result;
  }

@@ -481,25 +507,22 @@ static CURLcode h2_progress_ingress(struct Curl_cfilter *cf,
  return CURLE_OK;
}

-
/*
-
 * Check if there's been an update in the priority /
-
 * dependency settings and if so it submits a PRIORITY frame with the updated
-
 * info.
-
 * Flush any out data pending in the network buffer.
-
 */
-
static CURLcode h2_progress_egress(struct Curl_cfilter *cf,
-
                                  struct Curl_easy *data)
+
static CURLcode proxy_h2_progress_egress(struct Curl_cfilter *cf,
+
                                         struct Curl_easy *data)
{
  struct cf_h2_proxy_ctx *ctx = cf->ctx;
  int rv = 0;

-
  rv = nghttp2_session_send(ctx->h2);
+
  ctx->nw_out_blocked = 0;
+
  while(!rv && !ctx->nw_out_blocked && nghttp2_session_want_write(ctx->h2))
+
    rv = nghttp2_session_send(ctx->h2);
+

  if(nghttp2_is_fatal(rv)) {
    DEBUGF(LOG_CF(data, cf, "nghttp2_session_send error (%s)%d",
                  nghttp2_strerror(rv), rv));
    return CURLE_SEND_ERROR;
  }
-
  return nw_out_flush(cf, data);
+
  return proxy_h2_nw_out_flush(cf, data);
}

static ssize_t on_session_send(nghttp2_session *h2,
@@ -517,7 +540,7 @@ static ssize_t on_session_send(nghttp2_session *h2,
  DEBUGASSERT(data);

  nwritten = Curl_bufq_write_pass(&ctx->outbufq, buf, blen,
-
                                  nw_out_writer, cf, &result);
+
                                  proxy_h2_nw_out_writer, cf, &result);
  if(nwritten < 0) {
    if(result == CURLE_AGAIN) {
      return NGHTTP2_ERR_WOULDBLOCK;
@@ -532,8 +555,9 @@ static ssize_t on_session_send(nghttp2_session *h2,
  return nwritten;
}

-
static int on_frame_recv(nghttp2_session *session, const nghttp2_frame *frame,
-
                         void *userp)
+
static int proxy_h2_on_frame_recv(nghttp2_session *session,
+
                                  const nghttp2_frame *frame,
+
                                  void *userp)
{
  struct Curl_cfilter *cf = userp;
  struct cf_h2_proxy_ctx *ctx = cf->ctx;
@@ -616,11 +640,12 @@ static int on_frame_recv(nghttp2_session *session, const nghttp2_frame *frame,
  return 0;
}

-
static int on_header(nghttp2_session *session, const nghttp2_frame *frame,
-
                     const uint8_t *name, size_t namelen,
-
                     const uint8_t *value, size_t valuelen,
-
                     uint8_t flags,
-
                     void *userp)
+
static int proxy_h2_on_header(nghttp2_session *session,
+
                              const nghttp2_frame *frame,
+
                              const uint8_t *name, size_t namelen,
+
                              const uint8_t *value, size_t valuelen,
+
                              uint8_t flags,
+
                              void *userp)
{
  struct Curl_cfilter *cf = userp;
  struct cf_h2_proxy_ctx *ctx = cf->ctx;
@@ -752,8 +777,9 @@ static int tunnel_recv_callback(nghttp2_session *session, uint8_t flags,
  return 0;
}

-
static int on_stream_close(nghttp2_session *session, int32_t stream_id,
-
                           uint32_t error_code, void *userp)
+
static int proxy_h2_on_stream_close(nghttp2_session *session,
+
                                    int32_t stream_id,
+
                                    uint32_t error_code, void *userp)
{
  struct Curl_cfilter *cf = userp;
  struct cf_h2_proxy_ctx *ctx = cf->ctx;
@@ -765,7 +791,7 @@ static int on_stream_close(nghttp2_session *session, int32_t stream_id,
  if(stream_id != ctx->tunnel.stream_id)
    return 0;

-
  DEBUGF(LOG_CF(data, cf, "[h2sid=%u] on_stream_close, %s (err %d)",
+
  DEBUGF(LOG_CF(data, cf, "[h2sid=%u] proxy_h2_on_stream_close, %s (err %d)",
                stream_id, nghttp2_http2_strerror(error_code), error_code));
  ctx->tunnel.closed = TRUE;
  ctx->tunnel.error = error_code;
@@ -773,15 +799,15 @@ static int on_stream_close(nghttp2_session *session, int32_t stream_id,
  return 0;
}

-
static CURLcode h2_submit(int32_t *pstream_id,
-
                          struct Curl_cfilter *cf,
-
                          struct Curl_easy *data,
-
                          nghttp2_session *h2,
-
                          struct httpreq *req,
-
                          const nghttp2_priority_spec *pri_spec,
-
                          void *stream_user_data,
-
                          nghttp2_data_source_read_callback read_callback,
-
                          void *read_ctx)
+
static CURLcode proxy_h2_submit(int32_t *pstream_id,
+
                                struct Curl_cfilter *cf,
+
                                struct Curl_easy *data,
+
                                nghttp2_session *h2,
+
                                struct httpreq *req,
+
                                const nghttp2_priority_spec *pri_spec,
+
                                void *stream_user_data,
+
                               nghttp2_data_source_read_callback read_callback,
+
                                void *read_ctx)
{
  struct dynhds h2_headers;
  nghttp2_nv *nva = NULL;
@@ -881,8 +907,8 @@ static CURLcode submit_CONNECT(struct Curl_cfilter *cf,
  if(result)
    goto out;

-
  result = h2_submit(&ts->stream_id, cf, data, ctx->h2, req,
-
                     NULL, ts, tunnel_send_callback, cf);
+
  result = proxy_h2_submit(&ts->stream_id, cf, data, ctx->h2, req,
+
                           NULL, ts, tunnel_send_callback, cf);
  if(result) {
    DEBUGF(LOG_CF(data, cf, "send: nghttp2_submit_request error (%s)%u",
                  nghttp2_strerror(ts->stream_id), ts->stream_id));
@@ -907,7 +933,7 @@ static CURLcode inspect_response(struct Curl_cfilter *cf,
  DEBUGASSERT(ts->resp);
  if(ts->resp->status/100 == 2) {
    infof(data, "CONNECT tunnel established, response %d", ts->resp->status);
-
    tunnel_go_state(cf, ts, TUNNEL_ESTABLISHED, data);
+
    h2_tunnel_go_state(cf, ts, H2_TUNNEL_ESTABLISHED, data);
    return CURLE_OK;
  }

@@ -928,7 +954,7 @@ static CURLcode inspect_response(struct Curl_cfilter *cf,
    if(data->req.newurl) {
      /* Inidicator that we should try again */
      Curl_safefree(data->req.newurl);
-
      tunnel_go_state(cf, ts, TUNNEL_INIT, data);
+
      h2_tunnel_go_state(cf, ts, H2_TUNNEL_INIT, data);
      return CURLE_OK;
    }
  }
@@ -937,9 +963,9 @@ static CURLcode inspect_response(struct Curl_cfilter *cf,
  return CURLE_RECV_ERROR;
}

-
static CURLcode CONNECT(struct Curl_cfilter *cf,
-
                        struct Curl_easy *data,
-
                        struct tunnel_stream *ts)
+
static CURLcode H2_CONNECT(struct Curl_cfilter *cf,
+
                           struct Curl_easy *data,
+
                           struct tunnel_stream *ts)
{
  struct cf_h2_proxy_ctx *ctx = cf->ctx;
  CURLcode result = CURLE_OK;
@@ -948,27 +974,27 @@ static CURLcode CONNECT(struct Curl_cfilter *cf,
  DEBUGASSERT(ts->authority);
  do {
    switch(ts->state) {
-
    case TUNNEL_INIT:
+
    case H2_TUNNEL_INIT:
      /* Prepare the CONNECT request and make a first attempt to send. */
      DEBUGF(LOG_CF(data, cf, "CONNECT start for %s", ts->authority));
      result = submit_CONNECT(cf, data, ts);
      if(result)
        goto out;
-
      tunnel_go_state(cf, ts, TUNNEL_CONNECT, data);
+
      h2_tunnel_go_state(cf, ts, H2_TUNNEL_CONNECT, data);
      /* FALLTHROUGH */

-
    case TUNNEL_CONNECT:
+
    case H2_TUNNEL_CONNECT:
      /* see that the request is completely sent */
-
      result = h2_progress_ingress(cf, data);
+
      result = proxy_h2_progress_ingress(cf, data);
      if(!result)
-
        result = h2_progress_egress(cf, data);
-
      if(result) {
-
        tunnel_go_state(cf, ts, TUNNEL_FAILED, data);
+
        result = proxy_h2_progress_egress(cf, data);
+
      if(result && result != CURLE_AGAIN) {
+
        h2_tunnel_go_state(cf, ts, H2_TUNNEL_FAILED, data);
        break;
      }

      if(ts->has_final_response) {
-
        tunnel_go_state(cf, ts, TUNNEL_RESPONSE, data);
+
        h2_tunnel_go_state(cf, ts, H2_TUNNEL_RESPONSE, data);
      }
      else {
        result = CURLE_OK;
@@ -976,28 +1002,28 @@ static CURLcode CONNECT(struct Curl_cfilter *cf,
      }
      /* FALLTHROUGH */

-
    case TUNNEL_RESPONSE:
+
    case H2_TUNNEL_RESPONSE:
      DEBUGASSERT(ts->has_final_response);
      result = inspect_response(cf, data, ts);
      if(result)
        goto out;
      break;

-
    case TUNNEL_ESTABLISHED:
+
    case H2_TUNNEL_ESTABLISHED:
      return CURLE_OK;

-
    case TUNNEL_FAILED:
+
    case H2_TUNNEL_FAILED:
      return CURLE_RECV_ERROR;

    default:
      break;
    }

-
  } while(ts->state == TUNNEL_INIT);
+
  } while(ts->state == H2_TUNNEL_INIT);

out:
  if(result || ctx->tunnel.closed)
-
    tunnel_go_state(cf, ts, TUNNEL_FAILED, data);
+
    h2_tunnel_go_state(cf, ts, H2_TUNNEL_FAILED, data);
  return result;
}

@@ -1043,10 +1069,10 @@ static CURLcode cf_h2_proxy_connect(struct Curl_cfilter *cf,
  /* for the secondary socket (FTP), use the "connect to host"
   * but ignore the "connect to port" (use the secondary port)
   */
-
  result = CONNECT(cf, data, ts);
+
  result = H2_CONNECT(cf, data, ts);

out:
-
  *done = (result == CURLE_OK) && (ts->state == TUNNEL_ESTABLISHED);
+
  *done = (result == CURLE_OK) && (ts->state == H2_TUNNEL_ESTABLISHED);
  cf->connected = *done;
  CF_DATA_RESTORE(cf, save);
  return result;
@@ -1082,7 +1108,7 @@ static bool cf_h2_proxy_data_pending(struct Curl_cfilter *cf,
{
  struct cf_h2_proxy_ctx *ctx = cf->ctx;
  if((ctx && !Curl_bufq_is_empty(&ctx->inbufq)) ||
-
     (ctx && ctx->tunnel.state == TUNNEL_ESTABLISHED &&
+
     (ctx && ctx->tunnel.state == H2_TUNNEL_ESTABLISHED &&
      !Curl_bufq_is_empty(&ctx->tunnel.recvbuf)))
    return TRUE;
  return cf->next? cf->next->cft->has_data_pending(cf->next, data) : FALSE;
@@ -1188,14 +1214,14 @@ static ssize_t cf_h2_proxy_recv(struct Curl_cfilter *cf,
  struct cf_call_data save;
  CURLcode result;

-
  if(ctx->tunnel.state != TUNNEL_ESTABLISHED) {
+
  if(ctx->tunnel.state != H2_TUNNEL_ESTABLISHED) {
    *err = CURLE_RECV_ERROR;
    return -1;
  }
  CF_DATA_SAVE(save, cf, data);

  if(Curl_bufq_is_empty(&ctx->tunnel.recvbuf)) {
-
    *err = h2_progress_ingress(cf, data);
+
    *err = proxy_h2_progress_ingress(cf, data);
    if(*err)
      goto out;
  }
@@ -1208,13 +1234,19 @@ static ssize_t cf_h2_proxy_recv(struct Curl_cfilter *cf,
    nghttp2_session_consume(ctx->h2, ctx->tunnel.stream_id, (size_t)nread);
  }

-
  result = h2_progress_egress(cf, data);
-
  if(result) {
+
  result = proxy_h2_progress_egress(cf, data);
+
  if(result && result != CURLE_AGAIN) {
    *err = result;
    nread = -1;
  }

out:
+
  if(!Curl_bufq_is_empty(&ctx->tunnel.recvbuf) &&
+
     (nread >= 0 || *err == CURLE_AGAIN)) {
+
    /* data pending and no fatal error to report. Need to trigger
+
     * draining to avoid stalling when no socket events happen. */
+
    drain_tunnel(cf, data, &ctx->tunnel);
+
  }
  DEBUGF(LOG_CF(data, cf, "[h2sid=%u] cf_recv(len=%zu) -> %zd %d",
                ctx->tunnel.stream_id, len, nread, *err));
  CF_DATA_RESTORE(cf, save);
@@ -1223,93 +1255,188 @@ out:

static ssize_t cf_h2_proxy_send(struct Curl_cfilter *cf,
                                struct Curl_easy *data,
-
                                const void *mem, size_t len, CURLcode *err)
+
                                const void *buf, size_t len, CURLcode *err)
{
  struct cf_h2_proxy_ctx *ctx = cf->ctx;
  struct cf_call_data save;
-
  ssize_t nwritten = -1;
-
  const unsigned char *buf = mem;
-
  size_t start_len = len;
  int rv;
+
  ssize_t nwritten;
+
  CURLcode result;
+
  int blocked = 0;

-
  if(ctx->tunnel.state != TUNNEL_ESTABLISHED) {
+
  if(ctx->tunnel.state != H2_TUNNEL_ESTABLISHED) {
    *err = CURLE_SEND_ERROR;
    return -1;
  }
  CF_DATA_SAVE(save, cf, data);

-
  while(len) {
+
  if(ctx->tunnel.closed) {
+
    nwritten = -1;
+
    *err = CURLE_SEND_ERROR;
+
    goto out;
+
  }
+
  else if(ctx->tunnel.upload_blocked_len) {
+
    /* the data in `buf` has alread been submitted or added to the
+
     * buffers, but have been EAGAINed on the last invocation. */
+
    DEBUGASSERT(len >= ctx->tunnel.upload_blocked_len);
+
    if(len < ctx->tunnel.upload_blocked_len) {
+
      /* Did we get called again with a smaller `len`? This should not
+
       * happend. We are not prepared to handle that. */
+
      failf(data, "HTTP/2 proxy, send again with decreased length");
+
      *err = CURLE_HTTP2;
+
      nwritten = -1;
+
      goto out;
+
    }
+
    nwritten = (ssize_t)ctx->tunnel.upload_blocked_len;
+
    ctx->tunnel.upload_blocked_len = 0;
+
  }
+
  else {
    nwritten = Curl_bufq_write(&ctx->tunnel.sendbuf, buf, len, err);
-
    if(nwritten <= 0) {
-
      if(*err && *err != CURLE_AGAIN) {
-
        DEBUGF(LOG_CF(data, cf, "error adding data to tunnel sendbuf: %d",
-
               *err));
-
        nwritten = -1;
+
    if(nwritten < 0) {
+
      if(*err != CURLE_AGAIN)
        goto out;
-
      }
-
      /* blocked */
      nwritten = 0;
    }
-
    else {
-
      DEBUGASSERT((size_t)nwritten <= len);
-
      buf += (size_t)nwritten;
-
      len -= (size_t)nwritten;
-
    }
+
  }

-
    /* resume the tunnel stream and let the h2 session send, which
-
     * triggers reading from tunnel.sendbuf */
+
  if(!Curl_bufq_is_empty(&ctx->tunnel.sendbuf)) {
+
    /* req body data is buffered, resume the potentially suspended stream */
    rv = nghttp2_session_resume_data(ctx->h2, ctx->tunnel.stream_id);
    if(nghttp2_is_fatal(rv)) {
      *err = CURLE_SEND_ERROR;
      nwritten = -1;
      goto out;
    }
-
    *err = h2_progress_egress(cf, data);
-
    if(*err) {
-
      nwritten = -1;
-
      goto out;
-
    }
-

-
    if(!nwritten && Curl_bufq_is_full(&ctx->tunnel.sendbuf)) {
-
      size_t rwin;
-
      /* we could not add to the buffer and after session processing,
-
       * it is still full. */
-
      rwin = nghttp2_session_get_stream_remote_window_size(
-
                                        ctx->h2, ctx->tunnel.stream_id);
-
      DEBUGF(LOG_CF(data, cf, "cf_send: tunnel win %u/%zu",
-
             nghttp2_session_get_remote_window_size(ctx->h2), rwin));
-
      if(rwin == 0) {
-
        /* We cannot upload more as the stream's remote window size
-
         * is 0. We need to receive WIN_UPDATEs before we can continue.
-
         */
-
        data->req.keepon |= KEEP_SEND_HOLD;
-
        DEBUGF(LOG_CF(data, cf, "pausing send as remote flow "
-
               "window is exhausted"));
-
      }
-
      break;
-
    }
  }

-
  nwritten = start_len - len;
-
  if(nwritten > 0) {
-
    *err = CURLE_OK;
+
  /* Call the nghttp2 send loop and flush to write ALL buffered data,
+
   * headers and/or request body completely out to the network */
+
  result = proxy_h2_progress_egress(cf, data);
+
  if(result == CURLE_AGAIN) {
+
    blocked = 1;
  }
-
  else if(ctx->tunnel.closed) {
+
  else if(result) {
+
    *err = result;
    nwritten = -1;
-
    *err = CURLE_SEND_ERROR;
+
    goto out;
  }
-
  else {
-
    nwritten = -1;
+
  else if(!Curl_bufq_is_empty(&ctx->tunnel.sendbuf)) {
+
    /* although we wrote everything that nghttp2 wants to send now,
+
     * there is data left in our stream send buffer unwritten. This may
+
     * be due to the stream's HTTP/2 flow window being exhausted. */
+
    blocked = 1;
+
  }
+

+
  if(blocked) {
+
    /* Unable to send all data, due to connection blocked or H2 window
+
     * exhaustion. Data is left in our stream buffer, or nghttp2's internal
+
     * frame buffer or our network out buffer. */
+
    size_t rwin = nghttp2_session_get_stream_remote_window_size(
+
                    ctx->h2, ctx->tunnel.stream_id);
+
    if(rwin == 0) {
+
      /* H2 flow window exhaustion.
+
       * FIXME: there is no way to HOLD all transfers that use this
+
       * proxy connection AND to UNHOLD all of them again when the
+
       * window increases.
+
       * We *could* iterate over all data on this conn maybe? */
+
      DEBUGF(LOG_CF(data, cf, "[h2sid=%d] remote flow "
+
             "window is exhausted", ctx->tunnel.stream_id));
+
    }
+

+
    /* Whatever the cause, we need to return CURL_EAGAIN for this call.
+
     * We have unwritten state that needs us being invoked again and EAGAIN
+
     * is the only way to ensure that. */
+
    ctx->tunnel.upload_blocked_len = nwritten;
+
    DEBUGF(LOG_CF(data, cf, "[h2sid=%d] cf_send(len=%zu) BLOCK: win %u/%zu "
+
           "blocked_len=%zu",
+
           ctx->tunnel.stream_id, len,
+
           nghttp2_session_get_remote_window_size(ctx->h2), rwin,
+
           nwritten));
    *err = CURLE_AGAIN;
+
    nwritten = -1;
+
    goto out;
+
  }
+
  else if(should_close_session(ctx)) {
+
    /* nghttp2 thinks this session is done. If the stream has not been
+
     * closed, this is an error state for out transfer */
+
    if(ctx->tunnel.closed) {
+
      *err = CURLE_SEND_ERROR;
+
      nwritten = -1;
+
    }
+
    else {
+
      DEBUGF(LOG_CF(data, cf, "send: nothing to do in this session"));
+
      *err = CURLE_HTTP2;
+
      nwritten = -1;
+
    }
  }

out:
-
  DEBUGF(LOG_CF(data, cf, "cf_send(len=%zu) -> %zd, %d ",
-
         start_len, nwritten, *err));
+
  DEBUGF(LOG_CF(data, cf, "[h2sid=%d] cf_send(len=%zu) -> %zd, %d, "
+
                "h2 windows %d-%d (stream-conn), "
+
                "buffers %zu-%zu (stream-conn)",
+
                ctx->tunnel.stream_id, len, nwritten, *err,
+
                nghttp2_session_get_stream_remote_window_size(
+
                  ctx->h2, ctx->tunnel.stream_id),
+
                nghttp2_session_get_remote_window_size(ctx->h2),
+
                Curl_bufq_len(&ctx->tunnel.sendbuf),
+
                Curl_bufq_len(&ctx->outbufq)));
  CF_DATA_RESTORE(cf, save);
  return nwritten;
}

+
static bool proxy_h2_connisalive(struct Curl_cfilter *cf,
+
                                 struct Curl_easy *data,
+
                                 bool *input_pending)
+
{
+
  struct cf_h2_proxy_ctx *ctx = cf->ctx;
+
  bool alive = TRUE;
+

+
  *input_pending = FALSE;
+
  if(!cf->next || !cf->next->cft->is_alive(cf->next, data, input_pending))
+
    return FALSE;
+

+
  if(*input_pending) {
+
    /* This happens before we've sent off a request and the connection is
+
       not in use by any other transfer, there shouldn't be any data here,
+
       only "protocol frames" */
+
    CURLcode result;
+
    ssize_t nread = -1;
+

+
    *input_pending = FALSE;
+
    nread = Curl_bufq_slurp(&ctx->inbufq, proxy_nw_in_reader, cf, &result);
+
    if(nread != -1) {
+
      if(proxy_h2_process_pending_input(cf, data, &result) < 0)
+
        /* immediate error, considered dead */
+
        alive = FALSE;
+
      else {
+
        alive = !should_close_session(ctx);
+
      }
+
    }
+
    else if(result != CURLE_AGAIN) {
+
      /* the read failed so let's say this is dead anyway */
+
      alive = FALSE;
+
    }
+
  }
+

+
  return alive;
+
}
+

+
static bool cf_h2_proxy_is_alive(struct Curl_cfilter *cf,
+
                                 struct Curl_easy *data,
+
                                 bool *input_pending)
+
{
+
  struct cf_h2_proxy_ctx *ctx = cf->ctx;
+
  CURLcode result;
+
  struct cf_call_data save;
+

+
  CF_DATA_SAVE(save, cf, data);
+
  result = (ctx && ctx->h2 && proxy_h2_connisalive(cf, data, input_pending));
+
  DEBUGF(LOG_CF(data, cf, "conn alive -> %d, input_pending=%d",
+
         result, *input_pending));
+
  CF_DATA_RESTORE(cf, save);
+
  return result;
+
}
+

struct Curl_cftype Curl_cft_h2_proxy = {
  "H2-PROXY",
  CF_TYPE_IP_CONNECT,
@@ -1323,7 +1450,7 @@ struct Curl_cftype Curl_cft_h2_proxy = {
  cf_h2_proxy_send,
  cf_h2_proxy_recv,
  Curl_cf_def_cntrl,
-
  Curl_cf_def_conn_is_alive,
+
  cf_h2_proxy_is_alive,
  Curl_cf_def_conn_keep_alive,
  Curl_cf_def_query,
};
modified external/curl/lib/cf-haproxy.c
@@ -71,6 +71,7 @@ static CURLcode cf_haproxy_date_out_set(struct Curl_cfilter*cf,
  struct cf_haproxy_ctx *ctx = cf->ctx;
  CURLcode result;
  const char *tcp_version;
+
  const char *client_ip;

  DEBUGASSERT(ctx);
  DEBUGASSERT(ctx->state == HAPROXY_INIT);
@@ -82,11 +83,15 @@ static CURLcode cf_haproxy_date_out_set(struct Curl_cfilter*cf,
#endif /* USE_UNIX_SOCKETS */
  /* Emit the correct prefix for IPv6 */
  tcp_version = cf->conn->bits.ipv6 ? "TCP6" : "TCP4";
+
  if(data->set.str[STRING_HAPROXY_CLIENT_IP])
+
    client_ip = data->set.str[STRING_HAPROXY_CLIENT_IP];
+
  else
+
    client_ip = data->info.conn_primary_ip;

  result = Curl_dyn_addf(&ctx->data_out, "PROXY %s %s %s %i %i\r\n",
                         tcp_version,
                         data->info.conn_local_ip,
-
                         data->info.conn_primary_ip,
+
                         client_ip,
                         data->info.conn_local_port,
                         data->info.conn_primary_port);

@@ -110,7 +115,7 @@ static CURLcode cf_haproxy_connect(struct Curl_cfilter *cf,
    return CURLE_OK;
  }

-
  result = cf->next->cft->connect(cf->next, data, blocking, done);
+
  result = cf->next->cft->do_connect(cf->next, data, blocking, done);
  if(result || !*done)
    return result;

@@ -163,7 +168,7 @@ static void cf_haproxy_close(struct Curl_cfilter *cf,
  cf->connected = FALSE;
  cf_haproxy_ctx_reset(cf->ctx);
  if(cf->next)
-
    cf->next->cft->close(cf->next, data);
+
    cf->next->cft->do_close(cf->next, data);
}

static int cf_haproxy_get_select_socks(struct Curl_cfilter *cf,
modified external/curl/lib/cf-https-connect.c
@@ -376,9 +376,9 @@ static bool cf_hc_data_pending(struct Curl_cfilter *cf,
         || cf_hc_baller_data_pending(&ctx->h21_baller, data);
}

-
static struct curltime get_max_baller_time(struct Curl_cfilter *cf,
-
                                          struct Curl_easy *data,
-
                                          int query)
+
static struct curltime cf_get_max_baller_time(struct Curl_cfilter *cf,
+
                                              struct Curl_easy *data,
+
                                              int query)
{
  struct cf_hc_ctx *ctx = cf->ctx;
  struct Curl_cfilter *cfb;
@@ -408,12 +408,12 @@ static CURLcode cf_hc_query(struct Curl_cfilter *cf,
    switch(query) {
    case CF_QUERY_TIMER_CONNECT: {
      struct curltime *when = pres2;
-
      *when = get_max_baller_time(cf, data, CF_QUERY_TIMER_CONNECT);
+
      *when = cf_get_max_baller_time(cf, data, CF_QUERY_TIMER_CONNECT);
      return CURLE_OK;
    }
    case CF_QUERY_TIMER_APPCONNECT: {
      struct curltime *when = pres2;
-
      *when = get_max_baller_time(cf, data, CF_QUERY_TIMER_APPCONNECT);
+
      *when = cf_get_max_baller_time(cf, data, CF_QUERY_TIMER_APPCONNECT);
      return CURLE_OK;
    }
    default:
@@ -432,7 +432,7 @@ static void cf_hc_close(struct Curl_cfilter *cf, struct Curl_easy *data)
  cf->connected = FALSE;

  if(cf->next) {
-
    cf->next->cft->close(cf->next, data);
+
    cf->next->cft->do_close(cf->next, data);
    Curl_conn_cf_discard_chain(&cf->next, data);
  }
}
modified external/curl/lib/cf-socket.c
@@ -871,7 +871,7 @@ static void cf_socket_close(struct Curl_cfilter *cf, struct Curl_easy *data)
      /* this is our local socket, we did never publish it */
      DEBUGF(LOG_CF(data, cf, "cf_socket_close(%" CURL_FORMAT_SOCKET_T
                    ", not active)", ctx->sock));
-
      sclose(ctx->sock);
+
      socket_close(data, cf->conn, !ctx->accepted, ctx->sock);
      ctx->sock = CURL_SOCKET_BAD;
    }
    Curl_bufq_reset(&ctx->recvbuf);
@@ -901,22 +901,26 @@ static CURLcode set_local_ip(struct Curl_cfilter *cf,
  struct cf_socket_ctx *ctx = cf->ctx;

#ifdef HAVE_GETSOCKNAME
-
  char buffer[STRERROR_LEN];
-
  struct Curl_sockaddr_storage ssloc;
-
  curl_socklen_t slen = sizeof(struct Curl_sockaddr_storage);
+
  if(!(data->conn->handler->protocol & CURLPROTO_TFTP)) {
+
    /* TFTP does not connect, so it cannot get the IP like this */

-
  memset(&ssloc, 0, sizeof(ssloc));
-
  if(getsockname(ctx->sock, (struct sockaddr*) &ssloc, &slen)) {
-
    int error = SOCKERRNO;
-
    failf(data, "getsockname() failed with errno %d: %s",
-
          error, Curl_strerror(error, buffer, sizeof(buffer)));
-
    return CURLE_FAILED_INIT;
-
  }
-
  if(!Curl_addr2string((struct sockaddr*)&ssloc, slen,
-
                       ctx->l_ip, &ctx->l_port)) {
-
    failf(data, "ssloc inet_ntop() failed with errno %d: %s",
-
          errno, Curl_strerror(errno, buffer, sizeof(buffer)));
-
    return CURLE_FAILED_INIT;
+
    char buffer[STRERROR_LEN];
+
    struct Curl_sockaddr_storage ssloc;
+
    curl_socklen_t slen = sizeof(struct Curl_sockaddr_storage);
+

+
    memset(&ssloc, 0, sizeof(ssloc));
+
    if(getsockname(ctx->sock, (struct sockaddr*) &ssloc, &slen)) {
+
      int error = SOCKERRNO;
+
      failf(data, "getsockname() failed with errno %d: %s",
+
            error, Curl_strerror(error, buffer, sizeof(buffer)));
+
      return CURLE_FAILED_INIT;
+
    }
+
    if(!Curl_addr2string((struct sockaddr*)&ssloc, slen,
+
                         ctx->l_ip, &ctx->l_port)) {
+
      failf(data, "ssloc inet_ntop() failed with errno %d: %s",
+
            errno, Curl_strerror(errno, buffer, sizeof(buffer)));
+
      return CURLE_FAILED_INIT;
+
    }
  }
#else
  (void)data;
@@ -1356,26 +1360,31 @@ out:
static void conn_set_primary_ip(struct Curl_cfilter *cf,
                                struct Curl_easy *data)
{
-
  struct cf_socket_ctx *ctx = cf->ctx;
#ifdef HAVE_GETPEERNAME
-
  char buffer[STRERROR_LEN];
-
  struct Curl_sockaddr_storage ssrem;
-
  curl_socklen_t plen;
-
  int port;
+
  struct cf_socket_ctx *ctx = cf->ctx;
+
  if(!(data->conn->handler->protocol & CURLPROTO_TFTP)) {
+
    /* TFTP does not connect the endpoint: getpeername() failed with errno
+
       107: Transport endpoint is not connected */

-
  plen = sizeof(ssrem);
-
  memset(&ssrem, 0, plen);
-
  if(getpeername(ctx->sock, (struct sockaddr*) &ssrem, &plen)) {
-
    int error = SOCKERRNO;
-
    failf(data, "getpeername() failed with errno %d: %s",
-
          error, Curl_strerror(error, buffer, sizeof(buffer)));
-
    return;
-
  }
-
  if(!Curl_addr2string((struct sockaddr*)&ssrem, plen,
-
                       cf->conn->primary_ip, &port)) {
-
    failf(data, "ssrem inet_ntop() failed with errno %d: %s",
-
          errno, Curl_strerror(errno, buffer, sizeof(buffer)));
-
    return;
+
    char buffer[STRERROR_LEN];
+
    struct Curl_sockaddr_storage ssrem;
+
    curl_socklen_t plen;
+
    int port;
+

+
    plen = sizeof(ssrem);
+
    memset(&ssrem, 0, plen);
+
    if(getpeername(ctx->sock, (struct sockaddr*) &ssrem, &plen)) {
+
      int error = SOCKERRNO;
+
      failf(data, "getpeername() failed with errno %d: %s",
+
            error, Curl_strerror(error, buffer, sizeof(buffer)));
+
      return;
+
    }
+
    if(!Curl_addr2string((struct sockaddr*)&ssrem, plen,
+
                         cf->conn->primary_ip, &port)) {
+
      failf(data, "ssrem inet_ntop() failed with errno %d: %s",
+
            errno, Curl_strerror(errno, buffer, sizeof(buffer)));
+
      return;
+
    }
  }
#else
  cf->conn->primary_ip[0] = 0;
modified external/curl/lib/cfilters.c
@@ -50,7 +50,7 @@ void Curl_cf_def_close(struct Curl_cfilter *cf, struct Curl_easy *data)
{
  cf->connected = FALSE;
  if(cf->next)
-
    cf->next->cft->close(cf->next, data);
+
    cf->next->cft->do_close(cf->next, data);
}
#endif

@@ -161,7 +161,7 @@ void Curl_conn_close(struct Curl_easy *data, int index)
  /* it is valid to call that without filters being present */
  cf = data->conn->cfilter[index];
  if(cf) {
-
    cf->cft->close(cf, data);
+
    cf->cft->do_close(cf, data);
  }
}

@@ -179,7 +179,7 @@ ssize_t Curl_conn_recv(struct Curl_easy *data, int num, char *buf,
  if(cf) {
    return cf->cft->do_recv(cf, data, buf, len, code);
  }
-
  failf(data, CMSGI(data->conn, num, "recv: no filter connected"));
+
  failf(data, "recv: no filter connected");
  *code = CURLE_FAILED_INIT;
  return -1;
}
@@ -198,7 +198,7 @@ ssize_t Curl_conn_send(struct Curl_easy *data, int num,
  if(cf) {
    return cf->cft->do_send(cf, data, mem, len, code);
  }
-
  failf(data, CMSGI(data->conn, num, "send: no filter connected"));
+
  failf(data, "send: no filter connected");
  DEBUGASSERT(0);
  *code = CURLE_FAILED_INIT;
  return -1;
@@ -293,14 +293,14 @@ CURLcode Curl_conn_cf_connect(struct Curl_cfilter *cf,
                              bool blocking, bool *done)
{
  if(cf)
-
    return cf->cft->connect(cf, data, blocking, done);
+
    return cf->cft->do_connect(cf, data, blocking, done);
  return CURLE_FAILED_INIT;
}

void Curl_conn_cf_close(struct Curl_cfilter *cf, struct Curl_easy *data)
{
  if(cf)
-
    cf->cft->close(cf, data);
+
    cf->cft->do_close(cf, data);
}

int Curl_conn_cf_get_select_socks(struct Curl_cfilter *cf,
@@ -348,7 +348,7 @@ CURLcode Curl_conn_connect(struct Curl_easy *data,

  *done = cf->connected;
  if(!*done) {
-
    result = cf->cft->connect(cf, data, blocking, done);
+
    result = cf->cft->do_connect(cf, data, blocking, done);
    if(!result && *done) {
      Curl_conn_ev_update_info(data, data->conn);
      conn_report_connect_stats(data, data->conn);
modified external/curl/lib/cfilters.h
@@ -168,8 +168,8 @@ struct Curl_cftype {
  int flags;                              /* flags of filter type */
  int log_level;                          /* log level for such filters */
  Curl_cft_destroy_this *destroy;         /* destroy resources of this cf */
-
  Curl_cft_connect *connect;              /* establish connection */
-
  Curl_cft_close *close;                  /* close conn */
+
  Curl_cft_connect *do_connect;           /* establish connection */
+
  Curl_cft_close *do_close;               /* close conn */
  Curl_cft_get_host *get_host;            /* host filter talks to */
  Curl_cft_get_select_socks *get_select_socks;/* sockets to select on */
  Curl_cft_data_pending *has_data_pending;/* conn has data pending */
modified external/curl/lib/conncache.h
@@ -39,7 +39,8 @@ struct connectdata;
struct conncache {
  struct Curl_hash hash;
  size_t num_conn;
-
  long next_connection_id;
+
  curl_off_t next_connection_id;
+
  curl_off_t next_easy_id;
  struct curltime last_cleanup;
  /* handle used for closing cached connections */
  struct Curl_easy *closure_handle;
modified external/curl/lib/connect.c
@@ -253,7 +253,7 @@ bool Curl_addr2string(struct sockaddr *sa, curl_socklen_t salen,
}

struct connfind {
-
  long id_tofind;
+
  curl_off_t id_tofind;
  struct connectdata *found;
};

@@ -937,7 +937,7 @@ static void cf_he_close(struct Curl_cfilter *cf,
  ctx->state = SCFST_INIT;

  if(cf->next) {
-
    cf->next->cft->close(cf->next, data);
+
    cf->next->cft->do_close(cf->next, data);
    Curl_conn_cf_discard_chain(&cf->next, data);
  }
}
@@ -1291,7 +1291,7 @@ static void cf_setup_close(struct Curl_cfilter *cf,
  ctx->state = CF_SETUP_INIT;

  if(cf->next) {
-
    cf->next->cft->close(cf->next, data);
+
    cf->next->cft->do_close(cf->next, data);
    Curl_conn_cf_discard_chain(&cf->next, data);
  }
}
modified external/curl/lib/cookie.c
@@ -123,8 +123,9 @@ static void freecookie(struct Cookie *co)
  free(co);
}

-
static bool tailmatch(const char *cookie_domain, size_t cookie_domain_len,
-
                      const char *hostname)
+
static bool cookie_tailmatch(const char *cookie_domain,
+
                             size_t cookie_domain_len,
+
                             const char *hostname)
{
  size_t hostname_len = strlen(hostname);

@@ -696,7 +697,7 @@ Curl_cookie_add(struct Curl_easy *data,
          if(!domain
             || (is_ip && !strncmp(valuep, domain, vlen) &&
                 (vlen == strlen(domain)))
-
             || (!is_ip && tailmatch(valuep, vlen, domain))) {
+
             || (!is_ip && cookie_tailmatch(valuep, vlen, domain))) {
            strstore(&co->domain, valuep, vlen);
            if(!co->domain) {
              badcookie = TRUE;
@@ -1431,7 +1432,7 @@ struct Cookie *Curl_cookie_getlist(struct Curl_easy *data,
      /* now check if the domain is correct */
      if(!co->domain ||
         (co->tailmatch && !is_ip &&
-
          tailmatch(co->domain, strlen(co->domain), host)) ||
+
          cookie_tailmatch(co->domain, strlen(co->domain), host)) ||
         ((!co->tailmatch || is_ip) && strcasecompare(host, co->domain)) ) {
        /*
         * the right part of the host matches the domain stuff in the
modified external/curl/lib/curl_config.h.cmake
@@ -448,6 +448,9 @@
/* Define to 1 if you have the sigsetjmp function or macro. */
#cmakedefine HAVE_SIGSETJMP 1

+
/* Define to 1 if you have the `snprintf' function. */
+
#cmakedefine HAVE_SNPRINTF
+

/* Define to 1 if struct sockaddr_in6 has the sin6_scope_id member */
#cmakedefine HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1

@@ -577,9 +580,6 @@
/* Define to 1 if you have the windows.h header file. */
#cmakedefine HAVE_WINDOWS_H 1

-
/* Define to 1 if you have the winldap.h header file. */
-
#cmakedefine HAVE_WINLDAP_H 1
-

/* Define to 1 if you have the winsock2.h header file. */
#cmakedefine HAVE_WINSOCK2_H 1

modified external/curl/lib/curl_config.h.in
@@ -177,6 +177,10 @@
/* Define to 1 if you have the clock_gettime function and monotonic timer. */
#undef HAVE_CLOCK_GETTIME_MONOTONIC

+
/* Define to 1 if you have the clock_gettime function and raw monotonic timer.
+
   */
+
#undef HAVE_CLOCK_GETTIME_MONOTONIC_RAW
+

/* Define to 1 if you have the closesocket function. */
#undef HAVE_CLOSESOCKET

@@ -362,6 +366,9 @@
/* Define to 1 if you have the ldap.h header file. */
#undef HAVE_LDAP_H

+
/* Define to 1 if you have the `ldap_init_fd' function. */
+
#undef HAVE_LDAP_INIT_FD
+

/* Use LDAPS implementation */
#undef HAVE_LDAP_SSL

@@ -721,9 +728,6 @@
/* Define to 1 if you have the windows.h header file. */
#undef HAVE_WINDOWS_H

-
/* Define to 1 if you have the winldap.h header file. */
-
#undef HAVE_WINLDAP_H
-

/* Define to 1 if you have the winsock2.h header file. */
#undef HAVE_WINSOCK2_H

@@ -885,8 +889,8 @@
/* if ngtcp2_crypto_gnutls is in use */
#undef USE_NGTCP2_CRYPTO_GNUTLS

-
/* if ngtcp2_crypto_openssl is in use */
-
#undef USE_NGTCP2_CRYPTO_OPENSSL
+
/* if ngtcp2_crypto_quictls is in use */
+
#undef USE_NGTCP2_CRYPTO_QUICTLS

/* if ngtcp2_crypto_wolfssl is in use */
#undef USE_NGTCP2_CRYPTO_WOLFSSL
modified external/curl/lib/curl_log.c
@@ -130,13 +130,11 @@ void Curl_log_cf_debug(struct Curl_easy *data, struct Curl_cfilter *cf,
                       const char *fmt, ...)
{
  DEBUGASSERT(cf);
-
  if(data && Curl_log_cf_is_debug(cf)) {
+
  if(data && Curl_log_cf_is_debug(cf, data)) {
    va_list ap;
    int len;
    char buffer[MAXINFO + 2];
-
    len = msnprintf(buffer, MAXINFO, "[CONN-%ld%s-%s] ",
-
                    cf->conn->connection_id, cf->sockindex? "/2" : "",
-
                    cf->cft->name);
+
    len = msnprintf(buffer, MAXINFO, "[%s] ", cf->cft->name);
    va_start(ap, fmt);
    len += mvsnprintf(buffer + len, MAXINFO - len, fmt, ap);
    va_end(ap);
modified external/curl/lib/curl_log.h
@@ -74,7 +74,7 @@ void Curl_debug(struct Curl_easy *data, curl_infotype type,
    defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)

#define LOG_CF(data, cf, ...) \
-
  do { if(Curl_log_cf_is_debug(cf)) \
+
  do { if(Curl_log_cf_is_debug(cf, data)) \
         Curl_log_cf_debug(data, cf, __VA_ARGS__); } while(0)
#else
#define LOG_CF Curl_log_cf_debug
@@ -90,8 +90,10 @@ void Curl_log_cf_debug(struct Curl_easy *data, struct Curl_cfilter *cf,
                       const char *fmt, ...);
#endif

-
#define Curl_log_cf_is_debug(cf) \
-
    ((cf) && (cf)->cft->log_level >= CURL_LOG_DEBUG)
+
#define Curl_log_cf_is_debug(cf, data) \
+
    ((data) && (data)->set.verbose && \
+
     (cf) && (cf)->cft->log_level >= CURL_LOG_DEBUG)
+


#else /* !DEBUGBUILD */

@@ -110,29 +112,10 @@ void Curl_log_cf_debug(struct Curl_easy *data, struct Curl_cfilter *cf,
                       const char *fmt, ...);
#endif

-
#define Curl_log_cf_is_debug(x)   ((void)(x), FALSE)
+
#define Curl_log_cf_is_debug(x,y)   ((void)(x), (void)(y), FALSE)

#endif  /* !DEBUGBUILD */

-
#define LOG_CF_IS_DEBUG(x)        Curl_log_cf_is_debug(x)
-

-
/* Macros intended for DEBUGF logging, use like:
-
 * DEBUGF(infof(data, CFMSG(cf, "this filter %s rocks"), "very much"));
-
 * and it will output:
-
 * [CONN-1-0][CF-SSL] this filter very much rocks
-
 * on connection #1 with sockindex 0 for filter of type "SSL". */
-
#define DMSG(d,msg)  \
-
  "[CONN-%ld] "msg, (d)->conn->connection_id
-
#define DMSGI(d,i,msg)  \
-
  "[CONN-%ld-%d] "msg, (d)->conn->connection_id, (i)
-
#define CMSG(c,msg)  \
-
  "[CONN-%ld] "msg, (c)->connection_id
-
#define CMSGI(c,i,msg)  \
-
  "[CONN-%ld-%d] "msg, (c)->connection_id, (i)
-
#define CFMSG(cf,msg)  \
-
  "[CONN-%ld-%d][CF-%s] "msg, (cf)->conn->connection_id, \
-
  (cf)->sockindex, (cf)->cft->name
-

-

+
#define LOG_CF_IS_DEBUG(cf, data)        Curl_log_cf_is_debug(cf, data)

#endif /* HEADER_CURL_LOG_H */
modified external/curl/lib/curl_memory.h
@@ -55,9 +55,65 @@
 */

#ifdef HEADER_CURL_MEMDEBUG_H
-
#error "Header memdebug.h shall not be included before curl_memory.h"
+
/* cleanup after memdebug.h */
+

+
#ifdef MEMDEBUG_NODEFINES
+
#ifdef CURLDEBUG
+

+
#undef strdup
+
#undef malloc
+
#undef calloc
+
#undef realloc
+
#undef free
+
#undef send
+
#undef recv
+

+
#ifdef WIN32
+
#  ifdef UNICODE
+
#    undef wcsdup
+
#    undef _wcsdup
+
#    undef _tcsdup
+
#  else
+
#    undef _tcsdup
+
#  endif
+
#endif
+

+
#undef socket
+
#undef accept
+
#ifdef HAVE_SOCKETPAIR
+
#undef socketpair
#endif

+
#ifdef HAVE_GETADDRINFO
+
#if defined(getaddrinfo) && defined(__osf__)
+
#undef ogetaddrinfo
+
#else
+
#undef getaddrinfo
+
#endif
+
#endif /* HAVE_GETADDRINFO */
+

+
#ifdef HAVE_FREEADDRINFO
+
#undef freeaddrinfo
+
#endif /* HAVE_FREEADDRINFO */
+

+
/* sclose is probably already defined, redefine it! */
+
#undef sclose
+
#undef fopen
+
#undef fdopen
+
#undef fclose
+

+
#endif /* MEMDEBUG_NODEFINES */
+
#endif /* CURLDEBUG */
+

+
#undef HEADER_CURL_MEMDEBUG_H
+
#endif /* HEADER_CURL_MEMDEBUG_H */
+

+
/*
+
** Following section applies even when CURLDEBUG is not defined.
+
*/
+

+
#undef fake_sclose
+

#ifndef CURL_DID_MEMORY_FUNC_TYPEDEFS /* only if not already done */
/*
 * The following memory function replacement typedef's are COPIED from
modified external/curl/lib/curl_printf.h
@@ -37,6 +37,7 @@
# undef vprintf
# undef vfprintf
# undef vsnprintf
+
# undef mvsnprintf
# undef aprintf
# undef vaprintf
# define printf curl_mprintf
modified external/curl/lib/curl_sasl.c
@@ -221,12 +221,12 @@ void Curl_sasl_init(struct SASL *sasl, struct Curl_easy *data,
}

/*
-
 * state()
+
 * sasl_state()
 *
 * This is the ONLY way to change SASL state!
 */
-
static void state(struct SASL *sasl, struct Curl_easy *data,
-
                  saslstate newstate)
+
static void sasl_state(struct SASL *sasl, struct Curl_easy *data,
+
                       saslstate newstate)
{
#if defined(DEBUGBUILD) && !defined(CURL_DISABLE_VERBOSE_STRINGS)
  /* for debug purposes */
@@ -508,7 +508,7 @@ CURLcode Curl_sasl_start(struct SASL *sasl, struct Curl_easy *data,

    if(!result) {
      *progress = SASL_INPROGRESS;
-
      state(sasl, data, Curl_bufref_ptr(&resp) ? state2 : state1);
+
      sasl_state(sasl, data, Curl_bufref_ptr(&resp) ? state2 : state1);
    }
  }

@@ -548,14 +548,14 @@ CURLcode Curl_sasl_continue(struct SASL *sasl, struct Curl_easy *data,
    if(code != sasl->params->finalcode)
      result = CURLE_LOGIN_DENIED;
    *progress = SASL_DONE;
-
    state(sasl, data, SASL_STOP);
+
    sasl_state(sasl, data, SASL_STOP);
    return result;
  }

  if(sasl->state != SASL_CANCEL && sasl->state != SASL_OAUTH2_RESP &&
     code != sasl->params->contcode) {
    *progress = SASL_DONE;
-
    state(sasl, data, SASL_STOP);
+
    sasl_state(sasl, data, SASL_STOP);
    return CURLE_LOGIN_DENIED;
  }

@@ -698,7 +698,7 @@ CURLcode Curl_sasl_continue(struct SASL *sasl, struct Curl_easy *data,
    if(code == sasl->params->finalcode) {
      /* Final response was received so we are done */
      *progress = SASL_DONE;
-
      state(sasl, data, SASL_STOP);
+
      sasl_state(sasl, data, SASL_STOP);
      return result;
    }
    else if(code == sasl->params->contcode) {
@@ -708,7 +708,7 @@ CURLcode Curl_sasl_continue(struct SASL *sasl, struct Curl_easy *data,
    }
    else {
      *progress = SASL_DONE;
-
      state(sasl, data, SASL_STOP);
+
      sasl_state(sasl, data, SASL_STOP);
      return CURLE_LOGIN_DENIED;
    }

@@ -745,7 +745,7 @@ CURLcode Curl_sasl_continue(struct SASL *sasl, struct Curl_easy *data,

  Curl_bufref_free(&resp);

-
  state(sasl, data, newstate);
+
  sasl_state(sasl, data, newstate);

  return result;
}
modified external/curl/lib/curl_setup.h
@@ -258,7 +258,7 @@
#if defined(__APPLE__) && !defined(USE_ARES)
#include <TargetConditionals.h>
#define USE_RESOLVE_ON_IPS 1
-
#  if defined(TARGET_OS_OSX) && TARGET_OS_OSX
+
#  if !defined(TARGET_OS_OSX) || TARGET_OS_OSX
#    define CURL_OSX_CALL_COPYPROXIES 1
#  endif
#endif
@@ -298,6 +298,7 @@
#  if defined(HAVE_PROTO_BSDSOCKET_H) && \
    (!defined(__amigaos4__) || defined(USE_AMISSL))
     /* use bsdsocket.library directly, instead of libc networking functions */
+
#    define _SYS_MBUF_H /* m_len define clashes with curl */
#    include <proto/bsdsocket.h>
#    ifdef __amigaos4__
       int Curl_amiga_select(int nfds, fd_set *readfds, fd_set *writefds,
modified external/curl/lib/curl_setup_once.h
@@ -77,6 +77,12 @@
#  endif
#endif

+
#ifdef USE_SCHANNEL
+
/* Must set this before <schannel.h> is included directly or indirectly by
+
   another Windows header. */
+
#  define SCHANNEL_USE_BLACKLISTS 1
+
#endif
+

#ifdef __hpux
#  if !defined(_XOPEN_SOURCE_EXTENDED) || defined(_KERNEL)
#    ifdef _APP32_64BIT_OFF_T
modified external/curl/lib/dynbuf.h
@@ -81,8 +81,6 @@ int Curl_dyn_vprintf(struct dynbuf *dyn, const char *format, va_list ap_save);
#define DYN_PAUSE_BUFFER    (64 * 1024 * 1024)
#define DYN_HAXPROXY        2048
#define DYN_HTTP_REQUEST    (1024*1024)
-
#define DYN_H2_HEADERS      (128*1024)
-
#define DYN_H2_TRAILERS     (128*1024)
#define DYN_APRINTF         8000000
#define DYN_RTSP_REQ_HEADER (64*1024)
#define DYN_TRAILERS        (64*1024)
modified external/curl/lib/easy.c
@@ -63,6 +63,7 @@
#include "slist.h"
#include "mime.h"
#include "amigaos.h"
+
#include "macos.h"
#include "warnless.h"
#include "sigpipe.h"
#include "vssh/ssh.h"
@@ -83,7 +84,7 @@

/* true globals -- for curl_global_init() and curl_global_cleanup() */
static unsigned int  initialized;
-
static long          init_flags;
+
static long          easy_init_flags;

#ifdef GLOBAL_INIT_IS_THREADSAFE

@@ -181,6 +182,11 @@ static CURLcode global_init(long flags, bool memoryfuncs)
  }
#endif

+
  if(Curl_macos_init()) {
+
    DEBUGF(fprintf(stderr, "Error: Curl_macos_init failed\n"));
+
    goto fail;
+
  }
+

  if(Curl_resolver_global_init()) {
    DEBUGF(fprintf(stderr, "Error: resolver_global_init failed\n"));
    goto fail;
@@ -199,7 +205,7 @@ static CURLcode global_init(long flags, bool memoryfuncs)
  }
#endif

-
  init_flags = flags;
+
  easy_init_flags = flags;

#ifdef DEBUGBUILD
  if(getenv("CURL_GLOBAL_INIT"))
@@ -274,7 +280,7 @@ CURLcode curl_global_init_mem(long flags, curl_malloc_callback m,

/**
 * curl_global_cleanup() globally cleanups curl, uses the value of
-
 * "init_flags" to determine what needs to be cleaned up and what doesn't.
+
 * "easy_init_flags" to determine what needs to be cleaned up and what doesn't.
 */
void curl_global_cleanup(void)
{
@@ -294,7 +300,7 @@ void curl_global_cleanup(void)
  Curl_resolver_global_cleanup();

#ifdef WIN32
-
  Curl_win32_cleanup(init_flags);
+
  Curl_win32_cleanup(easy_init_flags);
#endif

  Curl_amiga_cleanup();
@@ -308,7 +314,7 @@ void curl_global_cleanup(void)
  free(leakpointer);
#endif

-
  init_flags  = 0;
+
  easy_init_flags = 0;

  global_init_unlock();
}
@@ -893,6 +899,8 @@ struct Curl_easy *curl_easy_duphandle(struct Curl_easy *data)
  /* the connection cache is setup on demand */
  outcurl->state.conn_cache = NULL;
  outcurl->state.lastconnect_id = -1;
+
  outcurl->state.recent_conn_id = -1;
+
  outcurl->id = -1;

  outcurl->progress.flags    = data->progress.flags;
  outcurl->progress.callback = data->progress.callback;
modified external/curl/lib/easy_lock.h
@@ -1,3 +1,5 @@
+
#ifndef HEADER_CURL_EASY_LOCK_H
+
#define HEADER_CURL_EASY_LOCK_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
@@ -103,3 +105,5 @@ static inline void curl_simple_lock_unlock(curl_simple_lock *lock)
#undef  GLOBAL_INIT_IS_THREADSAFE

#endif
+

+
#endif /* HEADER_CURL_EASY_LOCK_H */
modified external/curl/lib/easyoptions.c
@@ -120,6 +120,7 @@ struct curl_easyoption Curl_easyopts[] = {
  {"HAPPY_EYEBALLS_TIMEOUT_MS", CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS,
   CURLOT_LONG, 0},
  {"HAPROXYPROTOCOL", CURLOPT_HAPROXYPROTOCOL, CURLOT_LONG, 0},
+
  {"HAPROXY_CLIENT_IP", CURLOPT_HAPROXY_CLIENT_IP, CURLOT_STRING, 0},
  {"HEADER", CURLOPT_HEADER, CURLOT_LONG, 0},
  {"HEADERDATA", CURLOPT_HEADERDATA, CURLOT_CBPTR, 0},
  {"HEADERFUNCTION", CURLOPT_HEADERFUNCTION, CURLOT_FUNCTION, 0},
@@ -164,7 +165,9 @@ struct curl_easyoption Curl_easyopts[] = {
  {"MAIL_AUTH", CURLOPT_MAIL_AUTH, CURLOT_STRING, 0},
  {"MAIL_FROM", CURLOPT_MAIL_FROM, CURLOT_STRING, 0},
  {"MAIL_RCPT", CURLOPT_MAIL_RCPT, CURLOT_SLIST, 0},
-
  {"MAIL_RCPT_ALLLOWFAILS", CURLOPT_MAIL_RCPT_ALLLOWFAILS, CURLOT_LONG, 0},
+
  {"MAIL_RCPT_ALLLOWFAILS", CURLOPT_MAIL_RCPT_ALLOWFAILS,
+
   CURLOT_LONG, CURLOT_FLAG_ALIAS},
+
  {"MAIL_RCPT_ALLOWFAILS", CURLOPT_MAIL_RCPT_ALLOWFAILS, CURLOT_LONG, 0},
  {"MAXAGE_CONN", CURLOPT_MAXAGE_CONN, CURLOT_LONG, 0},
  {"MAXCONNECTS", CURLOPT_MAXCONNECTS, CURLOT_LONG, 0},
  {"MAXFILESIZE", CURLOPT_MAXFILESIZE, CURLOT_LONG, 0},
@@ -370,6 +373,6 @@ struct curl_easyoption Curl_easyopts[] = {
 */
int Curl_easyopts_check(void)
{
-
  return ((CURLOPT_LASTENTRY%10000) != (322 + 1));
+
  return ((CURLOPT_LASTENTRY%10000) != (323 + 1));
}
#endif
modified external/curl/lib/fopen.c
@@ -56,13 +56,13 @@ CURLcode Curl_fopen(struct Curl_easy *data, const char *filename,
  int fd = -1;
  *tempname = NULL;

-
  if(stat(filename, &sb) == -1 || !S_ISREG(sb.st_mode)) {
-
    /* a non-regular file, fallback to direct fopen() */
-
    *fh = fopen(filename, FOPEN_WRITETEXT);
-
    if(*fh)
-
      return CURLE_OK;
+
  *fh = fopen(filename, FOPEN_WRITETEXT);
+
  if(!*fh)
    goto fail;
-
  }
+
  if(fstat(fileno(*fh), &sb) == -1 || !S_ISREG(sb.st_mode))
+
    return CURLE_OK;
+
  fclose(*fh);
+
  *fh = NULL;

  result = Curl_rand_hex(data, randsuffix, sizeof(randsuffix));
  if(result)
@@ -85,7 +85,7 @@ CURLcode Curl_fopen(struct Curl_easy *data, const char *filename,
    if((fstat(fd, &nsb) != -1) &&
       (nsb.st_uid == sb.st_uid) && (nsb.st_gid == sb.st_gid)) {
      /* if the user and group are the same, clone the original mode */
-
      if(fchmod(fd, sb.st_mode) == -1)
+
      if(fchmod(fd, (mode_t)sb.st_mode) == -1)
        goto fail;
    }
  }
modified external/curl/lib/ftp.c
@@ -93,14 +93,14 @@

/* Local API functions */
#ifndef DEBUGBUILD
-
static void _state(struct Curl_easy *data,
-
                   ftpstate newstate);
-
#define state(x,y) _state(x,y)
+
static void _ftp_state(struct Curl_easy *data,
+
                       ftpstate newstate);
+
#define ftp_state(x,y) _ftp_state(x,y)
#else
-
static void _state(struct Curl_easy *data,
-
                   ftpstate newstate,
-
                   int lineno);
-
#define state(x,y) _state(x,y,__LINE__)
+
static void _ftp_state(struct Curl_easy *data,
+
                       ftpstate newstate,
+
                       int lineno);
+
#define ftp_state(x,y) _ftp_state(x,y,__LINE__)
#endif

static CURLcode ftp_sendquote(struct Curl_easy *data,
@@ -463,7 +463,7 @@ static CURLcode InitiateTransfer(struct Curl_easy *data)
  }

  conn->proto.ftpc.pp.pending_resp = TRUE; /* expect server response */
-
  state(data, FTP_STOP);
+
  ftp_state(data, FTP_STOP);

  return CURLE_OK;
}
@@ -591,7 +591,7 @@ static CURLcode ftp_readresp(struct Curl_easy *data,
     * generically is a good idea.
     */
    infof(data, "We got a 421 - timeout");
-
    state(data, FTP_STOP);
+
    ftp_state(data, FTP_STOP);
    return CURLE_OPERATION_TIMEDOUT;
  }

@@ -750,10 +750,10 @@ static const char * const ftp_state_names[]={
#endif

/* This is the ONLY way to change FTP state! */
-
static void _state(struct Curl_easy *data,
-
                   ftpstate newstate
+
static void _ftp_state(struct Curl_easy *data,
+
                       ftpstate newstate
#ifdef DEBUGBUILD
-
                   , int lineno
+
                       , int lineno
#endif
  )
{
@@ -784,7 +784,7 @@ static CURLcode ftp_state_user(struct Curl_easy *data,
  if(!result) {
    struct ftp_conn *ftpc = &conn->proto.ftpc;
    ftpc->ftp_trying_alternative = FALSE;
-
    state(data, FTP_USER);
+
    ftp_state(data, FTP_USER);
  }
  return result;
}
@@ -794,7 +794,7 @@ static CURLcode ftp_state_pwd(struct Curl_easy *data,
{
  CURLcode result = Curl_pp_sendf(data, &conn->proto.ftpc.pp, "%s", "PWD");
  if(!result)
-
    state(data, FTP_PWD);
+
    ftp_state(data, FTP_PWD);

  return result;
}
@@ -872,7 +872,7 @@ static CURLcode ftp_state_cwd(struct Curl_easy *data,
                             for all upcoming ones in the ftp->dirs[] array */
      result = Curl_pp_sendf(data, &ftpc->pp, "CWD %s", ftpc->entrypath);
      if(!result)
-
        state(data, FTP_CWD);
+
        ftp_state(data, FTP_CWD);
    }
    else {
      if(ftpc->dirdepth) {
@@ -882,7 +882,7 @@ static CURLcode ftp_state_cwd(struct Curl_easy *data,
        result = Curl_pp_sendf(data, &ftpc->pp, "CWD %s",
                               ftpc->dirs[ftpc->cwdcount -1]);
        if(!result)
-
          state(data, FTP_CWD);
+
          ftp_state(data, FTP_CWD);
      }
      else {
        /* No CWD necessary */
@@ -1261,11 +1261,11 @@ static CURLcode ftp_state_use_port(struct Curl_easy *data,
  if(result)
    goto out;
  portsock = CURL_SOCKET_BAD; /* now held in filter */
-
  state(data, FTP_PORT);
+
  ftp_state(data, FTP_PORT);

out:
  if(result) {
-
    state(data, FTP_STOP);
+
    ftp_state(data, FTP_STOP);
  }
  if(portsock != CURL_SOCKET_BAD)
    Curl_socket_close(data, conn, portsock);
@@ -1307,7 +1307,7 @@ static CURLcode ftp_state_use_pasv(struct Curl_easy *data,
  result = Curl_pp_sendf(data, &ftpc->pp, "%s", mode[modeoff]);
  if(!result) {
    ftpc->count1 = modeoff;
-
    state(data, FTP_PASV);
+
    ftp_state(data, FTP_PASV);
    infof(data, "Connect data stream passively");
  }
  return result;
@@ -1330,7 +1330,7 @@ static CURLcode ftp_state_prepare_transfer(struct Curl_easy *data)
    /* doesn't transfer any data */

    /* still possibly do PRE QUOTE jobs */
-
    state(data, FTP_RETR_PREQUOTE);
+
    ftp_state(data, FTP_RETR_PREQUOTE);
    result = ftp_state_quote(data, TRUE, FTP_RETR_PREQUOTE);
  }
  else if(data->set.ftp_use_port) {
@@ -1355,7 +1355,7 @@ static CURLcode ftp_state_prepare_transfer(struct Curl_easy *data)
        result = Curl_pp_sendf(data, &ftpc->pp, "PRET RETR %s",
                               conn->proto.ftpc.file);
      if(!result)
-
        state(data, FTP_PRET);
+
        ftp_state(data, FTP_PRET);
    }
    else
      result = ftp_state_use_pasv(data, conn);
@@ -1377,7 +1377,7 @@ static CURLcode ftp_state_rest(struct Curl_easy *data,
       whether it supports range */
    result = Curl_pp_sendf(data, &ftpc->pp, "REST %d", 0);
    if(!result)
-
      state(data, FTP_REST);
+
      ftp_state(data, FTP_REST);
  }
  else
    result = ftp_state_prepare_transfer(data);
@@ -1398,7 +1398,7 @@ static CURLcode ftp_state_size(struct Curl_easy *data,
    /* we know ftpc->file is a valid pointer to a file name */
    result = Curl_pp_sendf(data, &ftpc->pp, "SIZE %s", ftpc->file);
    if(!result)
-
      state(data, FTP_SIZE);
+
      ftp_state(data, FTP_SIZE);
  }
  else
    result = ftp_state_rest(data, conn);
@@ -1466,7 +1466,7 @@ static CURLcode ftp_state_list(struct Curl_easy *data)
  free(cmd);

  if(!result)
-
    state(data, FTP_LIST);
+
    ftp_state(data, FTP_LIST);

  return result;
}
@@ -1530,7 +1530,7 @@ static CURLcode ftp_state_mdtm(struct Curl_easy *data)
    result = Curl_pp_sendf(data, &ftpc->pp, "MDTM %s", ftpc->file);

    if(!result)
-
      state(data, FTP_MDTM);
+
      ftp_state(data, FTP_MDTM);
  }
  else
    result = ftp_state_type(data);
@@ -1569,7 +1569,7 @@ static CURLcode ftp_state_ul_setup(struct Curl_easy *data,
      /* Got no given size to start from, figure it out */
      result = Curl_pp_sendf(data, &ftpc->pp, "SIZE %s", ftpc->file);
      if(!result)
-
        state(data, FTP_STOR_SIZE);
+
        ftp_state(data, FTP_STOR_SIZE);
      return result;
    }

@@ -1624,7 +1624,7 @@ static CURLcode ftp_state_ul_setup(struct Curl_easy *data,
         * ftp_done() because we didn't transfer anything! */
        ftp->transfer = PPTRANSFER_NONE;

-
        state(data, FTP_STOP);
+
        ftp_state(data, FTP_STOP);
        return CURLE_OK;
      }
    }
@@ -1634,7 +1634,7 @@ static CURLcode ftp_state_ul_setup(struct Curl_easy *data,
  result = Curl_pp_sendf(data, &ftpc->pp, append?"APPE %s":"STOR %s",
                         ftpc->file);
  if(!result)
-
    state(data, FTP_STOR);
+
    ftp_state(data, FTP_STOR);

  return result;
}
@@ -1695,7 +1695,7 @@ static CURLcode ftp_state_quote(struct Curl_easy *data,
      result = Curl_pp_sendf(data, &ftpc->pp, "%s", cmd);
      if(result)
        return result;
-
      state(data, instate);
+
      ftp_state(data, instate);
      quote = TRUE;
    }
  }
@@ -1709,7 +1709,7 @@ static CURLcode ftp_state_quote(struct Curl_easy *data,
      break;
    case FTP_RETR_PREQUOTE:
      if(ftp->transfer != PPTRANSFER_BODY)
-
        state(data, FTP_STOP);
+
        ftp_state(data, FTP_STOP);
      else {
        if(ftpc->known_filesize != -1) {
          Curl_pgrsSetDownloadSize(data, ftpc->known_filesize);
@@ -1731,12 +1731,12 @@ static CURLcode ftp_state_quote(struct Curl_easy *data,
            */
            result = Curl_pp_sendf(data, &ftpc->pp, "RETR %s", ftpc->file);
            if(!result)
-
              state(data, FTP_RETR);
+
              ftp_state(data, FTP_RETR);
          }
          else {
            result = Curl_pp_sendf(data, &ftpc->pp, "SIZE %s", ftpc->file);
            if(!result)
-
              state(data, FTP_RETR_SIZE);
+
              ftp_state(data, FTP_RETR_SIZE);
          }
        }
      }
@@ -1780,7 +1780,7 @@ static CURLcode ftp_epsv_disable(struct Curl_easy *data,
  if(!result) {
    conn->proto.ftpc.count1++;
    /* remain in/go to the FTP_PASV state */
-
    state(data, FTP_PASV);
+
    ftp_state(data, FTP_PASV);
  }
  return result;
}
@@ -2005,7 +2005,7 @@ static CURLcode ftp_state_pasv_resp(struct Curl_easy *data,
    return CURLE_OUT_OF_MEMORY;

  conn->bits.do_more = TRUE;
-
  state(data, FTP_STOP); /* this phase is completed */
+
  ftp_state(data, FTP_STOP); /* this phase is completed */

  return result;
}
@@ -2039,7 +2039,7 @@ static CURLcode ftp_state_port_resp(struct Curl_easy *data,
  }
  else {
    infof(data, "Connect data stream actively");
-
    state(data, FTP_STOP); /* end of DO phase */
+
    ftp_state(data, FTP_STOP); /* end of DO phase */
    result = ftp_dophase_done(data, FALSE);
  }

@@ -2151,7 +2151,7 @@ static CURLcode ftp_state_mdtm_resp(struct Curl_easy *data,
          infof(data, "The requested document is not new enough");
          ftp->transfer = PPTRANSFER_NONE; /* mark to not transfer data */
          data->info.timecond = TRUE;
-
          state(data, FTP_STOP);
+
          ftp_state(data, FTP_STOP);
          return CURLE_OK;
        }
        break;
@@ -2160,7 +2160,7 @@ static CURLcode ftp_state_mdtm_resp(struct Curl_easy *data,
          infof(data, "The requested document is not old enough");
          ftp->transfer = PPTRANSFER_NONE; /* mark to not transfer data */
          data->info.timecond = TRUE;
-
          state(data, FTP_STOP);
+
          ftp_state(data, FTP_STOP);
          return CURLE_OK;
        }
        break;
@@ -2268,7 +2268,7 @@ static CURLcode ftp_state_retr(struct Curl_easy *data,
      /* Set ->transfer so that we won't get any error in ftp_done()
       * because we didn't transfer the any file */
      ftp->transfer = PPTRANSFER_NONE;
-
      state(data, FTP_STOP);
+
      ftp_state(data, FTP_STOP);
      return CURLE_OK;
    }

@@ -2279,13 +2279,13 @@ static CURLcode ftp_state_retr(struct Curl_easy *data,
    result = Curl_pp_sendf(data, &ftpc->pp, "REST %" CURL_FORMAT_CURL_OFF_T,
                           data->state.resume_from);
    if(!result)
-
      state(data, FTP_RETR_REST);
+
      ftp_state(data, FTP_RETR_REST);
  }
  else {
    /* no resume */
    result = Curl_pp_sendf(data, &ftpc->pp, "RETR %s", ftpc->file);
    if(!result)
-
      state(data, FTP_RETR);
+
      ftp_state(data, FTP_RETR);
  }

  return result;
@@ -2385,7 +2385,7 @@ static CURLcode ftp_state_rest_resp(struct Curl_easy *data,
    else {
      result = Curl_pp_sendf(data, &ftpc->pp, "RETR %s", ftpc->file);
      if(!result)
-
        state(data, FTP_RETR);
+
        ftp_state(data, FTP_RETR);
    }
    break;
  }
@@ -2401,7 +2401,7 @@ static CURLcode ftp_state_stor_resp(struct Curl_easy *data,

  if(ftpcode >= 400) {
    failf(data, "Failed FTP upload: %0d", ftpcode);
-
    state(data, FTP_STOP);
+
    ftp_state(data, FTP_STOP);
    /* oops, we never close the sockets! */
    return CURLE_UPLOAD_FAILED;
  }
@@ -2412,7 +2412,7 @@ static CURLcode ftp_state_stor_resp(struct Curl_easy *data,
  if(data->set.ftp_use_port) {
    bool connected;

-
    state(data, FTP_STOP); /* no longer in STOR state */
+
    ftp_state(data, FTP_STOP); /* no longer in STOR state */

    result = AllowServerConnect(data, &connected);
    if(result)
@@ -2535,7 +2535,7 @@ static CURLcode ftp_state_get_resp(struct Curl_easy *data,
      if(!connected) {
        struct ftp_conn *ftpc = &conn->proto.ftpc;
        infof(data, "Data conn was not available immediately");
-
        state(data, FTP_STOP);
+
        ftp_state(data, FTP_STOP);
        ftpc->wait_data_conn = TRUE;
      }
    }
@@ -2546,7 +2546,7 @@ static CURLcode ftp_state_get_resp(struct Curl_easy *data,
    if((instate == FTP_LIST) && (ftpcode == 450)) {
      /* simply no matching files in the dir listing */
      ftp->transfer = PPTRANSFER_NONE; /* don't download anything */
-
      state(data, FTP_STOP); /* this phase is over */
+
      ftp_state(data, FTP_STOP); /* this phase is over */
    }
    else {
      failf(data, "RETR response: %03d", ftpcode);
@@ -2582,7 +2582,7 @@ static CURLcode ftp_state_loggedin(struct Curl_easy *data)
    */
    result = Curl_pp_sendf(data, &conn->proto.ftpc.pp, "PBSZ %d", 0);
    if(!result)
-
      state(data, FTP_PBSZ);
+
      ftp_state(data, FTP_PBSZ);
  }
  else {
    result = ftp_state_pwd(data, conn);
@@ -2605,7 +2605,7 @@ static CURLcode ftp_state_user_resp(struct Curl_easy *data,
    result = Curl_pp_sendf(data, &ftpc->pp, "PASS %s",
                           conn->passwd?conn->passwd:"");
    if(!result)
-
      state(data, FTP_PASS);
+
      ftp_state(data, FTP_PASS);
  }
  else if(ftpcode/100 == 2) {
    /* 230 User ... logged in.
@@ -2617,7 +2617,7 @@ static CURLcode ftp_state_user_resp(struct Curl_easy *data,
      result = Curl_pp_sendf(data, &ftpc->pp, "ACCT %s",
                             data->set.str[STRING_FTP_ACCOUNT]);
      if(!result)
-
        state(data, FTP_ACCT);
+
        ftp_state(data, FTP_ACCT);
    }
    else {
      failf(data, "ACCT requested but none available");
@@ -2638,7 +2638,7 @@ static CURLcode ftp_state_user_resp(struct Curl_easy *data,
                      data->set.str[STRING_FTP_ALTERNATIVE_TO_USER]);
      if(!result) {
        ftpc->ftp_trying_alternative = TRUE;
-
        state(data, FTP_USER);
+
        ftp_state(data, FTP_USER);
      }
    }
    else {
@@ -2741,7 +2741,7 @@ static CURLcode ftp_statemachine(struct Curl_easy *data,
        result = Curl_pp_sendf(data, &ftpc->pp, "AUTH %s",
                               ftpauth[ftpc->count1]);
        if(!result)
-
          state(data, FTP_AUTH);
+
          ftp_state(data, FTP_AUTH);
      }
      else
        result = ftp_state_user(data, conn);
@@ -2808,7 +2808,7 @@ static CURLcode ftp_statemachine(struct Curl_easy *data,
        Curl_pp_sendf(data, &ftpc->pp, "PROT %c",
                      data->set.use_ssl == CURLUSESSL_CONTROL ? 'C' : 'P');
      if(!result)
-
        state(data, FTP_PROT);
+
        ftp_state(data, FTP_PROT);
      break;

    case FTP_PROT:
@@ -2827,7 +2827,7 @@ static CURLcode ftp_statemachine(struct Curl_easy *data,
         */
        result = Curl_pp_sendf(data, &ftpc->pp, "%s", "CCC");
        if(!result)
-
          state(data, FTP_CCC);
+
          ftp_state(data, FTP_CCC);
      }
      else
        result = ftp_state_pwd(data, conn);
@@ -2919,7 +2919,7 @@ static CURLcode ftp_statemachine(struct Curl_easy *data,
            infof(data, "Entry path is '%s'", ftpc->entrypath);
            /* also save it where getinfo can access it: */
            data->state.most_recent_ftp_entrypath = ftpc->entrypath;
-
            state(data, FTP_SYST);
+
            ftp_state(data, FTP_SYST);
            break;
          }

@@ -2935,7 +2935,7 @@ static CURLcode ftp_statemachine(struct Curl_easy *data,
          infof(data, "Failed to figure out path");
        }
      }
-
      state(data, FTP_STOP); /* we are done with the CONNECT phase! */
+
      ftp_state(data, FTP_STOP); /* we are done with the CONNECT phase! */
      DEBUGF(infof(data, "protocol connect phase DONE"));
      break;

@@ -2970,7 +2970,7 @@ static CURLcode ftp_statemachine(struct Curl_easy *data,
          /* remember target server OS */
          Curl_safefree(ftpc->server_os);
          ftpc->server_os = os;
-
          state(data, FTP_NAMEFMT);
+
          ftp_state(data, FTP_NAMEFMT);
          break;
        }
        /* Nothing special for the target server. */
@@ -2982,7 +2982,7 @@ static CURLcode ftp_statemachine(struct Curl_easy *data,
        /* Cannot identify server OS. Continue anyway and cross fingers. */
      }

-
      state(data, FTP_STOP); /* we are done with the CONNECT phase! */
+
      ftp_state(data, FTP_STOP); /* we are done with the CONNECT phase! */
      DEBUGF(infof(data, "protocol connect phase DONE"));
      break;

@@ -2993,7 +2993,7 @@ static CURLcode ftp_statemachine(struct Curl_easy *data,
        break;
      }

-
      state(data, FTP_STOP); /* we are done with the CONNECT phase! */
+
      ftp_state(data, FTP_STOP); /* we are done with the CONNECT phase! */
      DEBUGF(infof(data, "protocol connect phase DONE"));
      break;

@@ -3026,7 +3026,7 @@ static CURLcode ftp_statemachine(struct Curl_easy *data,
          result = Curl_pp_sendf(data, &ftpc->pp, "MKD %s",
                                 ftpc->dirs[ftpc->cwdcount - 1]);
          if(!result)
-
            state(data, FTP_MKD);
+
            ftp_state(data, FTP_MKD);
        }
        else {
          /* return failure */
@@ -3055,7 +3055,7 @@ static CURLcode ftp_statemachine(struct Curl_easy *data,
        result = CURLE_REMOTE_ACCESS_DENIED;
      }
      else {
-
        state(data, FTP_CWD);
+
        ftp_state(data, FTP_CWD);
        /* send CWD */
        result = Curl_pp_sendf(data, &ftpc->pp, "CWD %s",
                               ftpc->dirs[ftpc->cwdcount - 1]);
@@ -3114,7 +3114,7 @@ static CURLcode ftp_statemachine(struct Curl_easy *data,
      /* fallthrough, just stop! */
    default:
      /* internal error */
-
      state(data, FTP_STOP);
+
      ftp_state(data, FTP_STOP);
      break;
    }
  } /* if(ftpcode) */
@@ -3191,7 +3191,7 @@ static CURLcode ftp_connect(struct Curl_easy *data,

  /* When we connect, we start in the state where we await the 220
     response */
-
  state(data, FTP_WAIT220);
+
  ftp_state(data, FTP_WAIT220);

  result = ftp_multi_statemach(data, done);

@@ -3516,13 +3516,13 @@ static CURLcode ftp_nb_type(struct Curl_easy *data,
  char want = (char)(ascii?'A':'I');

  if(ftpc->transfertype == want) {
-
    state(data, newstate);
+
    ftp_state(data, newstate);
    return ftp_state_type_resp(data, 200, newstate);
  }

  result = Curl_pp_sendf(data, &ftpc->pp, "TYPE %c", want);
  if(!result) {
-
    state(data, newstate);
+
    ftp_state(data, newstate);

    /* keep track of our current transfer type */
    ftpc->transfertype = want;
@@ -4039,11 +4039,11 @@ static CURLcode ftp_quit(struct Curl_easy *data, struct connectdata *conn)
            curl_easy_strerror(result));
      conn->proto.ftpc.ctl_valid = FALSE; /* mark control connection as bad */
      connclose(conn, "QUIT command failed"); /* mark for connection closure */
-
      state(data, FTP_STOP);
+
      ftp_state(data, FTP_STOP);
      return result;
    }

-
    state(data, FTP_QUIT);
+
    ftp_state(data, FTP_QUIT);

    result = ftp_block_statemach(data, conn);
  }
modified external/curl/lib/getinfo.c
@@ -415,6 +415,13 @@ static CURLcode getinfo_offt(struct Curl_easy *data, CURLINFO info,
  case CURLINFO_RETRY_AFTER:
    *param_offt = data->info.retry_after;
    break;
+
  case CURLINFO_XFER_ID:
+
    *param_offt = data->id;
+
    break;
+
  case CURLINFO_CONN_ID:
+
    *param_offt = data->conn?
+
                  data->conn->connection_id : data->state.recent_conn_id;
+
    break;
  default:
    return CURLE_UNKNOWN_OPTION;
  }
modified external/curl/lib/hostip.c
@@ -67,10 +67,6 @@
#include "curl_memory.h"
#include "memdebug.h"

-
#if defined(ENABLE_IPV6) && defined(CURL_OSX_CALL_COPYPROXIES)
-
#include <SystemConfiguration/SCDynamicStoreCopySpecific.h>
-
#endif
-

#if defined(CURLRES_SYNCH) &&                   \
  defined(HAVE_ALARM) &&                        \
  defined(SIGALRM) &&                           \
@@ -561,6 +557,7 @@ static struct Curl_addrinfo *get_localhost6(int port, const char *name)
static struct Curl_addrinfo *get_localhost(int port, const char *name)
{
  struct Curl_addrinfo *ca;
+
  struct Curl_addrinfo *ca6;
  const size_t ss_size = sizeof(struct sockaddr_in);
  const size_t hostlen = strlen(name);
  struct sockaddr_in sa;
@@ -587,8 +584,12 @@ static struct Curl_addrinfo *get_localhost(int port, const char *name)
  memcpy(ca->ai_addr, &sa, ss_size);
  ca->ai_canonname = (char *)ca->ai_addr + ss_size;
  strcpy(ca->ai_canonname, name);
-
  ca->ai_next = get_localhost6(port, name);
-
  return ca;
+

+
  ca6 = get_localhost6(port, name);
+
  if(!ca6)
+
    return ca;
+
  ca6->ai_next = ca;
+
  return ca6;
}

#ifdef ENABLE_IPV6
@@ -743,23 +744,6 @@ enum resolve_t Curl_resolv(struct Curl_easy *data,
        return CURLRESOLV_ERROR;
    }

-
#if defined(ENABLE_IPV6) && defined(CURL_OSX_CALL_COPYPROXIES)
-
    {
-
      /*
-
       * The automagic conversion from IPv4 literals to IPv6 literals only
-
       * works if the SCDynamicStoreCopyProxies system function gets called
-
       * first. As Curl currently doesn't support system-wide HTTP proxies, we
-
       * therefore don't use any value this function might return.
-
       *
-
       * This function is only available on a macOS and is not needed for
-
       * IPv4-only builds, hence the conditions above.
-
       */
-
      CFDictionaryRef dict = SCDynamicStoreCopyProxies(NULL);
-
      if(dict)
-
        CFRelease(dict);
-
    }
-
#endif
-

#ifndef USE_RESOLVE_ON_IPS
    /* First check if this is an IPv4 address string */
    if(Curl_inet_pton(AF_INET, hostname, &in) > 0)
modified external/curl/lib/hsts.c
@@ -57,7 +57,7 @@
/* to play well with debug builds, we can *set* a fixed time this will
   return */
time_t deltatime; /* allow for "adjustments" for unit test purposes */
-
static time_t debugtime(void *unused)
+
static time_t hsts_debugtime(void *unused)
{
  char *timestr = getenv("CURL_TIME");
  (void)unused;
@@ -70,7 +70,8 @@ static time_t debugtime(void *unused)
  }
  return time(NULL);
}
-
#define time(x) debugtime(x)
+
#undef time
+
#define time(x) hsts_debugtime(x)
#endif

struct hsts *Curl_hsts_init(void)
modified external/curl/lib/http.c
@@ -1308,7 +1308,7 @@ CURLcode Curl_buffer_send(struct dynbuf *in,
      || IS_HTTPS_PROXY(conn->http_proxy.proxytype)
#endif
       )
-
     && conn->httpversion != 20) {
+
     && conn->httpversion < 20) {
    /* Make sure this doesn't send more body bytes than what the max send
       speed says. The request bytes do not count to the max speed.
    */
@@ -2667,11 +2667,7 @@ CURLcode Curl_http_bodysend(struct Curl_easy *data, struct connectdata *conn,
#ifndef USE_HYPER
    /* With Hyper the body is always passed on separately */
    if(data->set.postfields) {
-

-
      /* In HTTP2, we send request body in DATA frame regardless of
-
         its size. */
-
      if(conn->httpversion < 20 &&
-
         !data->state.expect100header &&
+
      if(!data->state.expect100header &&
         (http->postsize < MAX_INITIAL_POST_SIZE)) {
        /* if we don't use expect: 100  AND
           postsize is less than MAX_INITIAL_POST_SIZE
@@ -2832,16 +2828,18 @@ CURLcode Curl_http_cookies(struct Curl_easy *data,
    }
    if(co) {
      struct Cookie *store = co;
+
      size_t clen = 8; /* hold the size of the generated Cookie: header */
      /* now loop through all cookies that matched */
      while(co) {
        if(co->value) {
-
          if(0 == count) {
+
          size_t add;
+
          if(!count) {
            result = Curl_dyn_addn(r, STRCONST("Cookie: "));
            if(result)
              break;
          }
-
          if((Curl_dyn_len(r) + strlen(co->name) + strlen(co->value) + 1) >=
-
             MAX_COOKIE_HEADER_LEN) {
+
          add = strlen(co->name) + strlen(co->value) + 1;
+
          if(clen + add >= MAX_COOKIE_HEADER_LEN) {
            infof(data, "Restricted outgoing cookies due to header size, "
                  "'%s' not sent", co->name);
            linecap = TRUE;
@@ -2851,6 +2849,7 @@ CURLcode Curl_http_cookies(struct Curl_easy *data,
                                 co->name, co->value);
          if(result)
            break;
+
          clen += add + (count ? 2 : 0);
          count++;
        }
        co = co->next; /* next cookie please */
@@ -3381,6 +3380,9 @@ CURLcode Curl_http(struct Curl_easy *data, bool *done)
    }
  }

+
  if(data->req.upload_done)
+
    Curl_conn_ev_data_done_send(data);
+

  if((conn->httpversion >= 20) && data->req.upload_chunky)
    /* upload_chunky was set above to set up the request in a chunky fashion,
       but is disabled here again to avoid that the chunked encoded version is
@@ -4569,8 +4571,8 @@ CURLcode Curl_http_req_make(struct httpreq **preq,
    if(!req->path)
      goto out;
  }
-
  Curl_dynhds_init(&req->headers, 0, DYN_H2_HEADERS);
-
  Curl_dynhds_init(&req->trailers, 0, DYN_H2_TRAILERS);
+
  Curl_dynhds_init(&req->headers, 0, DYN_HTTP_REQUEST);
+
  Curl_dynhds_init(&req->trailers, 0, DYN_HTTP_REQUEST);
  result = CURLE_OK;

out:
@@ -4727,8 +4729,8 @@ CURLcode Curl_http_req_make2(struct httpreq **preq,
  if(result)
    goto out;

-
  Curl_dynhds_init(&req->headers, 0, DYN_H2_HEADERS);
-
  Curl_dynhds_init(&req->trailers, 0, DYN_H2_TRAILERS);
+
  Curl_dynhds_init(&req->headers, 0, DYN_HTTP_REQUEST);
+
  Curl_dynhds_init(&req->trailers, 0, DYN_HTTP_REQUEST);
  result = CURLE_OK;

out:
@@ -4858,8 +4860,8 @@ CURLcode Curl_http_resp_make(struct http_resp **presp,
    if(!resp->description)
      goto out;
  }
-
  Curl_dynhds_init(&resp->headers, 0, DYN_H2_HEADERS);
-
  Curl_dynhds_init(&resp->trailers, 0, DYN_H2_TRAILERS);
+
  Curl_dynhds_init(&resp->headers, 0, DYN_HTTP_REQUEST);
+
  Curl_dynhds_init(&resp->trailers, 0, DYN_HTTP_REQUEST);
  result = CURLE_OK;

out:
modified external/curl/lib/http1.c
@@ -38,124 +38,97 @@
#include "memdebug.h"


-
#define MAX_URL_LEN   (4*1024)
+
#define H1_MAX_URL_LEN   (8*1024)

void Curl_h1_req_parse_init(struct h1_req_parser *parser, size_t max_line_len)
{
  memset(parser, 0, sizeof(*parser));
  parser->max_line_len = max_line_len;
-
  Curl_bufq_init(&parser->scratch, max_line_len, 1);
+
  Curl_dyn_init(&parser->scratch, max_line_len);
}

void Curl_h1_req_parse_free(struct h1_req_parser *parser)
{
  if(parser) {
    Curl_http_req_free(parser->req);
-
    Curl_bufq_free(&parser->scratch);
+
    Curl_dyn_free(&parser->scratch);
    parser->req = NULL;
    parser->done = FALSE;
  }
}

+
static CURLcode trim_line(struct h1_req_parser *parser, int options)
+
{
+
  DEBUGASSERT(parser->line);
+
  if(parser->line_len) {
+
    if(parser->line[parser->line_len - 1] == '\n')
+
      --parser->line_len;
+
    if(parser->line_len) {
+
      if(parser->line[parser->line_len - 1] == '\r')
+
        --parser->line_len;
+
      else if(options & H1_PARSE_OPT_STRICT)
+
        return CURLE_URL_MALFORMAT;
+
    }
+
    else if(options & H1_PARSE_OPT_STRICT)
+
      return CURLE_URL_MALFORMAT;
+
  }
+
  else if(options & H1_PARSE_OPT_STRICT)
+
    return CURLE_URL_MALFORMAT;
+

+
  if(parser->line_len > parser->max_line_len) {
+
    return CURLE_URL_MALFORMAT;
+
  }
+
  return CURLE_OK;
+
}
+

static ssize_t detect_line(struct h1_req_parser *parser,
-
                           const char *buf, const size_t buflen, int options,
+
                           const char *buf, const size_t buflen,
                           CURLcode *err)
{
  const char  *line_end;
-
  size_t len;

  DEBUGASSERT(!parser->line);
  line_end = memchr(buf, '\n', buflen);
  if(!line_end) {
-
    *err = (buflen > parser->max_line_len)? CURLE_URL_MALFORMAT : CURLE_AGAIN;
+
    *err = CURLE_AGAIN;
    return -1;
  }
-
  len = line_end - buf + 1;
-
  if(len > parser->max_line_len) {
-
    *err = CURLE_URL_MALFORMAT;
-
    return -1;
-
  }
-

-
  if(options & H1_PARSE_OPT_STRICT) {
-
    if((len == 1) || (buf[len - 2] != '\r')) {
-
      *err = CURLE_URL_MALFORMAT;
-
      return -1;
-
    }
-
    parser->line = buf;
-
    parser->line_len = len - 2;
-
  }
-
  else {
-
    parser->line = buf;
-
    parser->line_len = len - (((len == 1) || (buf[len - 2] != '\r'))? 1 : 2);
-
  }
+
  parser->line = buf;
+
  parser->line_len = line_end - buf + 1;
  *err = CURLE_OK;
-
  return (ssize_t)len;
+
  return (ssize_t)parser->line_len;
}

static ssize_t next_line(struct h1_req_parser *parser,
                         const char *buf, const size_t buflen, int options,
                         CURLcode *err)
{
-
  ssize_t nread = 0, n;
+
  ssize_t nread = 0;

  if(parser->line) {
-
    if(parser->scratch_skip) {
-
      /* last line was from scratch. Remove it now, since we are done
-
       * with it and look for the next one. */
-
      Curl_bufq_skip_and_shift(&parser->scratch, parser->scratch_skip);
-
      parser->scratch_skip = 0;
-
    }
    parser->line = NULL;
    parser->line_len = 0;
+
    Curl_dyn_reset(&parser->scratch);
  }

-
  if(Curl_bufq_is_empty(&parser->scratch)) {
-
    nread = detect_line(parser, buf, buflen, options, err);
-
    if(nread < 0) {
-
      if(*err != CURLE_AGAIN)
+
  nread = detect_line(parser, buf, buflen, err);
+
  if(nread >= 0) {
+
    if(Curl_dyn_len(&parser->scratch)) {
+
      /* append detected line to scratch to have the complete line */
+
      *err = Curl_dyn_addn(&parser->scratch, parser->line, parser->line_len);
+
      if(*err)
        return -1;
-
      /* not a complete line, add to scratch for later revisit */
-
      nread = Curl_bufq_write(&parser->scratch,
-
                              (const unsigned char *)buf, buflen, err);
-
      return nread;
+
      parser->line = Curl_dyn_ptr(&parser->scratch);
+
      parser->line_len = Curl_dyn_len(&parser->scratch);
    }
-
    /* found one */
+
    *err = trim_line(parser, options);
+
    if(*err)
+
      return -1;
  }
-
  else {
-
    const char *sbuf;
-
    size_t sbuflen;
-

-
    /* scratch contains bytes from last attempt, add more to it */
-
    if(buflen) {
-
      const char *line_end;
-
      size_t add_len;
-
      ssize_t pos;
-

-
      line_end = memchr(buf, '\n', buflen);
-
      pos = line_end? (line_end - buf + 1) : -1;
-
      add_len = (pos >= 0)? (size_t)pos : buflen;
-
      nread = Curl_bufq_write(&parser->scratch,
-
                              (const unsigned char *)buf, add_len, err);
-
      if(nread < 0) {
-
        /* Unable to add anything to scratch is an error, since we should
-
         * have seen a line there then before. */
-
        if(*err == CURLE_AGAIN)
-
          *err = CURLE_URL_MALFORMAT;
-
        return -1;
-
      }
-
    }
-

-
    if(Curl_bufq_peek(&parser->scratch,
-
                      (const unsigned char **)&sbuf, &sbuflen)) {
-
      n = detect_line(parser, sbuf, sbuflen, options, err);
-
      if(n < 0 && *err != CURLE_AGAIN)
-
        return -1;  /* real error */
-
      parser->scratch_skip = (size_t)n;
-
    }
-
    else {
-
      /* we SHOULD be able to peek at scratch data */
-
      DEBUGASSERT(0);
-
    }
+
  else if(*err == CURLE_AGAIN) {
+
    /* no line end in `buf`, add it to our scratch */
+
    *err = Curl_dyn_addn(&parser->scratch, (const unsigned char *)buf, buflen);
+
    nread = (*err)? -1 : (ssize_t)buflen;
  }
  return nread;
}
@@ -231,7 +204,7 @@ static CURLcode start_req(struct h1_req_parser *parser,
  else {
    /* origin-form OR absolute-form */
    CURLUcode uc;
-
    char tmp[MAX_URL_LEN];
+
    char tmp[H1_MAX_URL_LEN];

    /* default, unless we see an absolute URL */
    path = target;
@@ -328,7 +301,7 @@ ssize_t Curl_h1_req_parse_read(struct h1_req_parser *parser,
        goto out;
      }
      parser->done = TRUE;
-
      Curl_bufq_free(&parser->scratch);
+
      Curl_dyn_reset(&parser->scratch);
      /* last chance adjustments */
    }
    else {
modified external/curl/lib/http1.h
@@ -33,11 +33,11 @@
#define H1_PARSE_OPT_NONE       (0)
#define H1_PARSE_OPT_STRICT     (1 << 0)

-
#define H1_PARSE_DEFAULT_MAX_LINE_LEN (8 * 1024)
+
#define H1_PARSE_DEFAULT_MAX_LINE_LEN   DYN_HTTP_REQUEST

struct h1_req_parser {
  struct httpreq *req;
-
  struct bufq scratch;
+
  struct dynbuf scratch;
  size_t scratch_skip;
  const char *line;
  size_t max_line_len;
modified external/curl/lib/http2.c
@@ -134,9 +134,11 @@ struct cf_h2_ctx {
  BIT(conn_closed);
  BIT(goaway);
  BIT(enable_push);
+
  BIT(nw_out_blocked);
};

/* How to access `call_data` from a cf_h2 filter */
+
#undef CF_CTX_CALL_DATA
#define CF_CTX_CALL_DATA(cf)  \
  ((struct cf_h2_ctx *)(cf)->ctx)->call_data

@@ -175,6 +177,7 @@ struct stream_ctx {
  struct bufq sendbuf; /* request buffer */
  struct dynhds resp_trailers; /* response trailer fields */
  size_t resp_hds_len; /* amount of response header bytes in recvbuf */
+
  size_t upload_blocked_len;
  curl_off_t upload_left; /* number of request bytes left to upload */

  char **push_headers;       /* allocated array */
@@ -183,6 +186,7 @@ struct stream_ctx {

  int status_code; /* HTTP response status code */
  uint32_t error; /* stream error code */
+
  uint32_t local_window_size; /* the local recv window size */
  bool closed; /* TRUE on stream close */
  bool reset;  /* TRUE on stream reset */
  bool close_handled; /* TRUE if stream closure is handled by libcurl */
@@ -209,9 +213,12 @@ static void drain_stream(struct Curl_cfilter *cf,

  (void)cf;
  bits = CURL_CSELECT_IN;
-
  if(!stream->send_closed && stream->upload_left)
+
  if(!stream->send_closed &&
+
     (stream->upload_left || stream->upload_blocked_len))
    bits |= CURL_CSELECT_OUT;
  if(data->state.dselect_bits != bits) {
+
    DEBUGF(LOG_CF(data, cf, "[h2sid=%d] DRAIN dselect_bits=%x",
+
                  stream->id, bits));
    data->state.dselect_bits = bits;
    Curl_expire(data, 0, EXPIRE_RUN_NOW);
  }
@@ -245,13 +252,14 @@ static CURLcode http2_data_setup(struct Curl_cfilter *cf,
                  H2_STREAM_SEND_CHUNKS, BUFQ_OPT_NONE);
  Curl_bufq_initp(&stream->recvbuf, &ctx->stream_bufcp,
                  H2_STREAM_RECV_CHUNKS, BUFQ_OPT_SOFT_LIMIT);
-
  Curl_dynhds_init(&stream->resp_trailers, 0, DYN_H2_TRAILERS);
+
  Curl_dynhds_init(&stream->resp_trailers, 0, DYN_HTTP_REQUEST);
  stream->resp_hds_len = 0;
  stream->bodystarted = FALSE;
  stream->status_code = -1;
  stream->closed = FALSE;
  stream->close_handled = FALSE;
  stream->error = NGHTTP2_NO_ERROR;
+
  stream->local_window_size = H2_STREAM_WINDOW_SIZE;
  stream->upload_left = 0;

  H2_STREAM_LCTX(data) = stream;
@@ -580,7 +588,6 @@ static bool http2_connisalive(struct Curl_cfilter *cf, struct Curl_easy *data,
    ssize_t nread = -1;

    *input_pending = FALSE;
-
    Curl_attach_connection(data, cf->conn);
    nread = Curl_bufq_slurp(&ctx->inbufq, nw_in_reader, cf, &result);
    if(nread != -1) {
      DEBUGF(LOG_CF(data, cf, "%zd bytes stray data read before trying "
@@ -592,11 +599,10 @@ static bool http2_connisalive(struct Curl_cfilter *cf, struct Curl_easy *data,
        alive = !should_close_session(ctx);
      }
    }
-
    else {
+
    else if(result != CURLE_AGAIN) {
      /* the read failed so let's say this is dead anyway */
      alive = FALSE;
    }
-
    Curl_detach_connection(data);
  }

  return alive;
@@ -644,13 +650,17 @@ static CURLcode nw_out_flush(struct Curl_cfilter *cf,
  if(Curl_bufq_is_empty(&ctx->outbufq))
    return CURLE_OK;

-
  DEBUGF(LOG_CF(data, cf, "h2 conn flush %zu bytes",
-
                Curl_bufq_len(&ctx->outbufq)));
  nwritten = Curl_bufq_pass(&ctx->outbufq, nw_out_writer, cf, &result);
-
  if(nwritten < 0 && result != CURLE_AGAIN) {
+
  if(nwritten < 0) {
+
    if(result == CURLE_AGAIN) {
+
      DEBUGF(LOG_CF(data, cf, "flush nw send buffer(%zu) -> EAGAIN",
+
                    Curl_bufq_len(&ctx->outbufq)));
+
      ctx->nw_out_blocked = 1;
+
    }
    return result;
  }
-
  return CURLE_OK;
+
  DEBUGF(LOG_CF(data, cf, "nw send buffer flushed"));
+
  return Curl_bufq_is_empty(&ctx->outbufq)? CURLE_OK: CURLE_AGAIN;
}

/*
@@ -676,15 +686,17 @@ static ssize_t send_callback(nghttp2_session *h2,
                                  nw_out_writer, cf, &result);
  if(nwritten < 0) {
    if(result == CURLE_AGAIN) {
+
      ctx->nw_out_blocked = 1;
      return NGHTTP2_ERR_WOULDBLOCK;
    }
    failf(data, "Failed sending HTTP2 data");
    return NGHTTP2_ERR_CALLBACK_FAILURE;
  }

-
  if(!nwritten)
+
  if(!nwritten) {
+
    ctx->nw_out_blocked = 1;
    return NGHTTP2_ERR_WOULDBLOCK;
-

+
  }
  return nwritten;
}

@@ -964,6 +976,7 @@ static CURLcode on_stream_frame(struct Curl_cfilter *cf,
  struct stream_ctx *stream = H2_STREAM_CTX(data);
  int32_t stream_id = frame->hd.stream_id;
  CURLcode result;
+
  size_t rbuflen;
  int rv;

  if(!stream) {
@@ -973,10 +986,10 @@ static CURLcode on_stream_frame(struct Curl_cfilter *cf,

  switch(frame->hd.type) {
  case NGHTTP2_DATA:
+
    rbuflen = Curl_bufq_len(&stream->recvbuf);
    DEBUGF(LOG_CF(data, cf, "[h2sid=%d] FRAME[DATA len=%zu pad=%zu], "
                  "buffered=%zu, window=%d/%d",
-
                  stream_id, frame->hd.length, frame->data.padlen,
-
                  Curl_bufq_len(&stream->recvbuf),
+
                  stream_id, frame->hd.length, frame->data.padlen, rbuflen,
                  nghttp2_session_get_stream_effective_recv_data_length(
                    ctx->h2, stream->id),
                  nghttp2_session_get_stream_effective_local_window_size(
@@ -993,6 +1006,20 @@ static CURLcode on_stream_frame(struct Curl_cfilter *cf,
    if(frame->hd.flags & NGHTTP2_FLAG_END_STREAM) {
      drain_stream(cf, data, stream);
    }
+
    else if(rbuflen > stream->local_window_size) {
+
      int32_t wsize = nghttp2_session_get_stream_local_window_size(
+
                        ctx->h2, stream->id);
+
      if(wsize > 0 && (uint32_t)wsize != stream->local_window_size) {
+
        /* H2 flow control is not absolute, as the server might not have the
+
         * same view, yet. When we recieve more than we want, we enforce
+
         * the local window size again to make nghttp2 send WINDOW_UPATEs
+
         * accordingly. */
+
        nghttp2_session_set_local_window_size(ctx->h2,
+
                                              NGHTTP2_FLAG_NONE,
+
                                              stream->id,
+
                                              stream->local_window_size);
+
      }
+
    }
    break;
  case NGHTTP2_HEADERS:
    DEBUGF(LOG_CF(data, cf, "[h2sid=%d] FRAME[HEADERS]", stream_id));
@@ -1095,6 +1122,21 @@ static int on_frame_recv(nghttp2_session *session, const nghttp2_frame *frame,
                      ctx->max_concurrent_streams));
        multi_connchanged(data->multi);
      }
+
      /* Since the initial stream window is 64K, a request might be on HOLD,
+
       * due to exhaustion. The (initial) SETTINGS may announce a much larger
+
       * window and *assume* that we treat this like a WINDOW_UPDATE. Some
+
       * servers send an explicit WINDOW_UPDATE, but not all seem to do that.
+
       * To be safe, we UNHOLD a stream in order not to stall. */
+
      if((data->req.keepon & KEEP_SEND_HOLD) &&
+
         (data->req.keepon & KEEP_SEND)) {
+
        struct stream_ctx *stream = H2_STREAM_CTX(data);
+
        data->req.keepon &= ~KEEP_SEND_HOLD;
+
        if(stream) {
+
          drain_stream(cf, data, stream);
+
          DEBUGF(LOG_CF(data, cf, "[h2sid=%d] un-holding after SETTINGS",
+
                        stream_id));
+
        }
+
      }
      break;
    }
    case NGHTTP2_GOAWAY:
@@ -1448,8 +1490,8 @@ static ssize_t req_body_read_callback(nghttp2_session *session,
  if(nread > 0 && stream->upload_left != -1)
    stream->upload_left -= nread;

-
  DEBUGF(LOG_CF(data_s, cf, "[h2sid=%d] req_body_read(len=%zu) left=%zd"
-
                " -> %zd, %d",
+
  DEBUGF(LOG_CF(data_s, cf, "[h2sid=%d] req_body_read(len=%zu) left=%"
+
                            CURL_FORMAT_CURL_OFF_T " -> %zd, %d",
                stream_id, length, stream->upload_left, nread, result));

  if(stream->upload_left == 0)
@@ -1555,11 +1597,6 @@ static ssize_t http2_handle_stream_close(struct Curl_cfilter *cf,
    *err = CURLE_SEND_ERROR; /* trigger Curl_retry_request() later */
    return -1;
  }
-
  else if(stream->reset) {
-
    failf(data, "HTTP/2 stream %u was reset", stream->id);
-
    *err = stream->bodystarted? CURLE_PARTIAL_FILE : CURLE_RECV_ERROR;
-
    return -1;
-
  }
  else if(stream->error != NGHTTP2_NO_ERROR) {
    failf(data, "HTTP/2 stream %u was not closed cleanly: %s (err %u)",
          stream->id, nghttp2_http2_strerror(stream->error),
@@ -1567,6 +1604,11 @@ static ssize_t http2_handle_stream_close(struct Curl_cfilter *cf,
    *err = CURLE_HTTP2_STREAM;
    return -1;
  }
+
  else if(stream->reset) {
+
    failf(data, "HTTP/2 stream %u was reset", stream->id);
+
    *err = stream->bodystarted? CURLE_PARTIAL_FILE : CURLE_RECV_ERROR;
+
    return -1;
+
  }

  if(!stream->bodystarted) {
    failf(data, "HTTP/2 stream %u was closed cleanly, but before getting "
@@ -1659,9 +1701,10 @@ static CURLcode h2_progress_egress(struct Curl_cfilter *cf,
  struct stream_ctx *stream = H2_STREAM_CTX(data);
  int rv = 0;

-
  if((sweight_wanted(data) != sweight_in_effect(data)) ||
-
     (data->set.priority.exclusive != data->state.priority.exclusive) ||
-
     (data->set.priority.parent != data->state.priority.parent) ) {
+
  if(stream && stream->id > 0 &&
+
     ((sweight_wanted(data) != sweight_in_effect(data)) ||
+
      (data->set.priority.exclusive != data->state.priority.exclusive) ||
+
      (data->set.priority.parent != data->state.priority.parent)) ) {
    /* send new weight and/or dependency */
    nghttp2_priority_spec pri_spec;

@@ -1675,7 +1718,8 @@ static CURLcode h2_progress_egress(struct Curl_cfilter *cf,
      goto out;
  }

-
  while(!rv && nghttp2_session_want_write(ctx->h2))
+
  ctx->nw_out_blocked = 0;
+
  while(!rv && !ctx->nw_out_blocked && nghttp2_session_want_write(ctx->h2))
    rv = nghttp2_session_send(ctx->h2);

out:
@@ -1739,7 +1783,7 @@ static CURLcode h2_progress_ingress(struct Curl_cfilter *cf,

  /* Process network input buffer fist */
  if(!Curl_bufq_is_empty(&ctx->inbufq)) {
-
    DEBUGF(LOG_CF(data, cf, "Process %zd bytes in connection buffer",
+
    DEBUGF(LOG_CF(data, cf, "Process %zu bytes in connection buffer",
                  Curl_bufq_len(&ctx->inbufq)));
    if(h2_process_pending_input(cf, data, &result) < 0)
      return result;
@@ -1760,7 +1804,7 @@ static CURLcode h2_progress_ingress(struct Curl_cfilter *cf,
    }

    nread = Curl_bufq_slurp(&ctx->inbufq, nw_in_reader, cf, &result);
-
    /* DEBUGF(LOG_CF(data, cf, "read %zd bytes nw data -> %zd, %d",
+
    /* DEBUGF(LOG_CF(data, cf, "read %zu bytes nw data -> %zd, %d",
                  Curl_bufq_len(&ctx->inbufq), nread, result)); */
    if(nread < 0) {
      if(result != CURLE_AGAIN) {
@@ -1836,7 +1880,7 @@ static ssize_t cf_h2_recv(struct Curl_cfilter *cf, struct Curl_easy *data,

out:
  result = h2_progress_egress(cf, data);
-
  if(result) {
+
  if(result && result != CURLE_AGAIN) {
    *err = result;
    nread = -1;
  }
@@ -1864,7 +1908,8 @@ static ssize_t h2_submit(struct stream_ctx **pstream,
  struct h1_req_parser h1;
  struct dynhds h2_headers;
  nghttp2_nv *nva = NULL;
-
  size_t nheader, i;
+
  const void *body = NULL;
+
  size_t nheader, bodylen, i;
  nghttp2_data_provider data_prd;
  int32_t stream_id;
  nghttp2_priority_spec pri_spec;
@@ -1929,8 +1974,8 @@ static ssize_t h2_submit(struct stream_ctx **pstream,

  h2_pri_spec(data, &pri_spec);

-
  DEBUGF(LOG_CF(data, cf, "send request allowed %d (easy handle %p)",
-
                nghttp2_session_check_request_allowed(ctx->h2), (void *)data));
+
  DEBUGF(LOG_CF(data, cf, "send request allowed %d",
+
                nghttp2_session_check_request_allowed(ctx->h2)));

  switch(data->state.httpreq) {
  case HTTPREQ_POST:
@@ -1966,9 +2011,35 @@ static ssize_t h2_submit(struct stream_ctx **pstream,

  DEBUGF(LOG_CF(data, cf, "[h2sid=%d] cf_send(len=%zu) submit %s",
                stream_id, len, data->state.url));
-
  infof(data, "Using Stream ID: %u (easy handle %p)",
-
        stream_id, (void *)data);
+
  infof(data, "Using Stream ID: %u", stream_id);
  stream->id = stream_id;
+
  stream->local_window_size = H2_STREAM_WINDOW_SIZE;
+
  if(data->set.max_recv_speed) {
+
    /* We are asked to only receive `max_recv_speed` bytes per second.
+
     * Let's limit our stream window size around that, otherwise the server
+
     * will send in large bursts only. We make the window 50% larger to
+
     * allow for data in flight and avoid stalling. */
+
    curl_off_t n = (((data->set.max_recv_speed - 1) / H2_CHUNK_SIZE) + 1);
+
    n += CURLMAX((n/2), 1);
+
    if(n < (H2_STREAM_WINDOW_SIZE / H2_CHUNK_SIZE) &&
+
       n < (UINT_MAX / H2_CHUNK_SIZE)) {
+
      stream->local_window_size = (uint32_t)n * H2_CHUNK_SIZE;
+
    }
+
  }
+

+
  body = (const char *)buf + nwritten;
+
  bodylen = len - nwritten;
+

+
  if(bodylen) {
+
    /* We have request body to send in DATA frame */
+
    ssize_t n = Curl_bufq_write(&stream->sendbuf, body, bodylen, err);
+
    if(n < 0) {
+
      *err = CURLE_SEND_ERROR;
+
      nwritten = -1;
+
      goto out;
+
    }
+
    nwritten += n;
+
  }

out:
  DEBUGF(LOG_CF(data, cf, "[h2sid=%d] submit -> %zd, %d",
@@ -1982,17 +2053,13 @@ out:
static ssize_t cf_h2_send(struct Curl_cfilter *cf, struct Curl_easy *data,
                          const void *buf, size_t len, CURLcode *err)
{
-
  /*
-
   * Currently, we send request in this function, but this function is also
-
   * used to send request body. It would be nice to add dedicated function for
-
   * request.
-
   */
  struct cf_h2_ctx *ctx = cf->ctx;
  struct stream_ctx *stream = H2_STREAM_CTX(data);
  struct cf_call_data save;
  int rv;
  ssize_t nwritten;
  CURLcode result;
+
  int blocked = 0;

  CF_DATA_SAVE(save, cf, data);

@@ -2007,18 +2074,35 @@ static ssize_t cf_h2_send(struct Curl_cfilter *cf, struct Curl_easy *data,
      nwritten = http2_handle_stream_close(cf, data, stream, err);
      goto out;
    }
-
    /* If stream_id != -1, we have dispatched request HEADERS, and now
-
       are going to send or sending request body in DATA frame */
-
    nwritten = Curl_bufq_write(&stream->sendbuf, buf, len, err);
-
    if(nwritten < 0) {
-
      if(*err != CURLE_AGAIN)
+
    else if(stream->upload_blocked_len) {
+
      /* the data in `buf` has alread been submitted or added to the
+
       * buffers, but have been EAGAINed on the last invocation. */
+
      DEBUGASSERT(len >= stream->upload_blocked_len);
+
      if(len < stream->upload_blocked_len) {
+
        /* Did we get called again with a smaller `len`? This should not
+
         * happend. We are not prepared to handle that. */
+
        failf(data, "HTTP/2 send again with decreased length");
+
        *err = CURLE_HTTP2;
+
        nwritten = -1;
        goto out;
-
      nwritten = 0;
+
      }
+
      nwritten = (ssize_t)stream->upload_blocked_len;
+
      stream->upload_blocked_len = 0;
+
    }
+
    else {
+
      /* If stream_id != -1, we have dispatched request HEADERS and
+
       * optionally request body, and now are going to send or sending
+
       * more request body in DATA frame */
+
      nwritten = Curl_bufq_write(&stream->sendbuf, buf, len, err);
+
      if(nwritten < 0) {
+
        if(*err != CURLE_AGAIN)
+
          goto out;
+
        nwritten = 0;
+
      }
    }
-
    DEBUGF(LOG_CF(data, cf, "[h2sid=%u] bufq_write(len=%zu) -> %zd, %d",
-
                  stream->id, len, nwritten, *err));

    if(!Curl_bufq_is_empty(&stream->sendbuf)) {
+
      /* req body data is buffered, resume the potentially suspended stream */
      rv = nghttp2_session_resume_data(ctx->h2, stream->id);
      if(nghttp2_is_fatal(rv)) {
        *err = CURLE_SEND_ERROR;
@@ -2026,104 +2110,99 @@ static ssize_t cf_h2_send(struct Curl_cfilter *cf, struct Curl_easy *data,
        goto out;
      }
    }
-

-
    result = h2_progress_ingress(cf, data);
-
    if(result) {
-
      *err = result;
-
      nwritten = -1;
-
      goto out;
-
    }
-

-
    result = h2_progress_egress(cf, data);
-
    if(result) {
-
      *err = result;
-
      nwritten = -1;
-
      goto out;
-
    }
-

-
    if(should_close_session(ctx)) {
-
      if(stream->closed) {
-
        nwritten = http2_handle_stream_close(cf, data, stream, err);
-
      }
-
      else {
-
        DEBUGF(LOG_CF(data, cf, "send: nothing to do in this session"));
-
        *err = CURLE_HTTP2;
-
        nwritten = -1;
-
      }
-
      goto out;
-
    }
-

-
    if(!nwritten) {
-
      size_t rwin = nghttp2_session_get_stream_remote_window_size(ctx->h2,
-
                                                          stream->id);
-
      DEBUGF(LOG_CF(data, cf, "[h2sid=%d] cf_send: win %u/%zu",
-
             stream->id,
-
             nghttp2_session_get_remote_window_size(ctx->h2), rwin));
-
      if(rwin == 0) {
-
        /* We cannot upload more as the stream's remote window size
-
         * is 0. We need to receive WIN_UPDATEs before we can continue.
-
         */
-
        data->req.keepon |= KEEP_SEND_HOLD;
-
        DEBUGF(LOG_CF(data, cf, "[h2sid=%d] holding send as remote flow "
-
               "window is exhausted", stream->id));
-
      }
-
      nwritten = -1;
-
      *err = CURLE_AGAIN;
-
    }
-
    /* handled writing BODY for open stream. */
-
    goto out;
  }
  else {
    nwritten = h2_submit(&stream, cf, data, buf, len, err);
    if(nwritten < 0) {
      goto out;
    }
+
    DEBUGASSERT(stream);
+
  }

-
    result = h2_progress_ingress(cf, data);
-
    if(result) {
-
      *err = result;
-
      nwritten = -1;
-
      goto out;
+
  /* Call the nghttp2 send loop and flush to write ALL buffered data,
+
   * headers and/or request body completely out to the network */
+
  result = h2_progress_egress(cf, data);
+
  /* if the stream has been closed in egress handling (nghttp2 does that
+
   * when it does not like the headers, for example */
+
  if(stream && stream->closed) {
+
    nwritten = http2_handle_stream_close(cf, data, stream, err);
+
    goto out;
+
  }
+
  else if(result == CURLE_AGAIN) {
+
    blocked = 1;
+
  }
+
  else if(result) {
+
    *err = result;
+
    nwritten = -1;
+
    goto out;
+
  }
+
  else if(stream && !Curl_bufq_is_empty(&stream->sendbuf)) {
+
    /* although we wrote everything that nghttp2 wants to send now,
+
     * there is data left in our stream send buffer unwritten. This may
+
     * be due to the stream's HTTP/2 flow window being exhausted. */
+
    blocked = 1;
+
  }
+

+
  if(stream && blocked) {
+
    /* Unable to send all data, due to connection blocked or H2 window
+
     * exhaustion. Data is left in our stream buffer, or nghttp2's internal
+
     * frame buffer or our network out buffer. */
+
    size_t rwin = nghttp2_session_get_stream_remote_window_size(ctx->h2,
+
                                                                stream->id);
+
    if(rwin == 0) {
+
      /* H2 flow window exhaustion. We need to HOLD upload until we get
+
       * a WINDOW_UPDATE from the server. */
+
      data->req.keepon |= KEEP_SEND_HOLD;
+
      DEBUGF(LOG_CF(data, cf, "[h2sid=%d] holding send as remote flow "
+
             "window is exhausted", stream->id));
+
    }
+

+
    /* Whatever the cause, we need to return CURL_EAGAIN for this call.
+
     * We have unwritten state that needs us being invoked again and EAGAIN
+
     * is the only way to ensure that. */
+
    stream->upload_blocked_len = nwritten;
+
    DEBUGF(LOG_CF(data, cf, "[h2sid=%d] cf_send(len=%zu) BLOCK: win %u/%zu "
+
           "blocked_len=%zu",
+
           stream->id, len,
+
           nghttp2_session_get_remote_window_size(ctx->h2), rwin,
+
           nwritten));
+
    *err = CURLE_AGAIN;
+
    nwritten = -1;
+
    goto out;
+
  }
+
  else if(should_close_session(ctx)) {
+
    /* nghttp2 thinks this session is done. If the stream has not been
+
     * closed, this is an error state for out transfer */
+
    if(stream->closed) {
+
      nwritten = http2_handle_stream_close(cf, data, stream, err);
    }
-

-
    result = h2_progress_egress(cf, data);
-
    if(result) {
-
      *err = result;
+
    else {
+
      DEBUGF(LOG_CF(data, cf, "send: nothing to do in this session"));
+
      *err = CURLE_HTTP2;
      nwritten = -1;
-
      goto out;
-
    }
-

-
    if(should_close_session(ctx)) {
-
      if(stream->closed) {
-
        nwritten = http2_handle_stream_close(cf, data, stream, err);
-
      }
-
      else {
-
        DEBUGF(LOG_CF(data, cf, "send: nothing to do in this session"));
-
        *err = CURLE_HTTP2;
-
        nwritten = -1;
-
      }
-
      goto out;
    }
  }

out:
  if(stream) {
    DEBUGF(LOG_CF(data, cf, "[h2sid=%d] cf_send(len=%zu) -> %zd, %d, "
-
                  "buffered=%zu, upload_left=%zu, stream-window=%d, "
-
                  "connection-window=%d",
+
                  "upload_left=%" CURL_FORMAT_CURL_OFF_T ", "
+
                  "h2 windows %d-%d (stream-conn), "
+
                  "buffers %zu-%zu (stream-conn)",
                  stream->id, len, nwritten, *err,
-
                  Curl_bufq_len(&stream->sendbuf),
                  (ssize_t)stream->upload_left,
                  nghttp2_session_get_stream_remote_window_size(
                    ctx->h2, stream->id),
-
                  nghttp2_session_get_remote_window_size(ctx->h2)));
-
    drain_stream(cf, data, stream);
+
                  nghttp2_session_get_remote_window_size(ctx->h2),
+
                  Curl_bufq_len(&stream->sendbuf),
+
                  Curl_bufq_len(&ctx->outbufq)));
  }
  else {
    DEBUGF(LOG_CF(data, cf, "cf_send(len=%zu) -> %zd, %d, "
-
                  "connection-window=%d",
+
                  "connection-window=%d, nw_send_buffer(%zu)",
                  len, nwritten, *err,
-
                  nghttp2_session_get_remote_window_size(ctx->h2)));
+
                  nghttp2_session_get_remote_window_size(ctx->h2),
+
                  Curl_bufq_len(&ctx->outbufq)));
  }
  CF_DATA_RESTORE(cf, save);
  return nwritten;
@@ -2241,8 +2320,7 @@ static CURLcode http2_data_pause(struct Curl_cfilter *cf,

  DEBUGASSERT(data);
  if(ctx && ctx->h2 && stream) {
-
    uint32_t window = !pause * H2_STREAM_WINDOW_SIZE;
-
    CURLcode result;
+
    uint32_t window = pause? 0 : stream->local_window_size;

    int rv = nghttp2_session_set_local_window_size(ctx->h2,
                                                   NGHTTP2_FLAG_NONE,
@@ -2257,10 +2335,8 @@ static CURLcode http2_data_pause(struct Curl_cfilter *cf,
    if(!pause)
      drain_stream(cf, data, stream);

-
    /* make sure the window update gets sent */
-
    result = h2_progress_egress(cf, data);
-
    if(result)
-
      return result;
+
    /* attempt to send the window update */
+
    (void)h2_progress_egress(cf, data);

    if(!pause) {
      /* Unpausing a h2 transfer, requires it to be run again. The server
@@ -2510,7 +2586,7 @@ CURLcode Curl_http2_switch(struct Curl_easy *data,
  CURLcode result;

  DEBUGASSERT(!Curl_conn_is_http2(data, conn, sockindex));
-
  DEBUGF(infof(data, DMSGI(data, sockindex, "switching to HTTP/2")));
+
  DEBUGF(infof(data, "switching to HTTP/2"));

  result = http2_cfilter_add(&cf, data, conn, sockindex);
  if(result)
@@ -2569,7 +2645,7 @@ CURLcode Curl_http2_upgrade(struct Curl_easy *data,
  CURLcode result;

  DEBUGASSERT(!Curl_conn_is_http2(data, conn, sockindex));
-
  DEBUGF(infof(data, DMSGI(data, sockindex, "upgrading to HTTP/2")));
+
  DEBUGF(infof(data, "upgrading to HTTP/2"));
  DEBUGASSERT(data->req.upgr101 == UPGR101_RECEIVED);

  result = http2_cfilter_add(&cf, data, conn, sockindex);
modified external/curl/lib/http_proxy.c
@@ -71,7 +71,7 @@ static CURLcode http_proxy_cf_connect(struct Curl_cfilter *cf,

  DEBUGF(LOG_CF(data, cf, "connect"));
connect_sub:
-
  result = cf->next->cft->connect(cf->next, data, blocking, done);
+
  result = cf->next->cft->do_connect(cf->next, data, blocking, done);
  if(result || !*done)
    return result;

@@ -181,7 +181,7 @@ static void http_proxy_cf_close(struct Curl_cfilter *cf,
    ctx->cf_protocol = NULL;
  }
  if(cf->next)
-
    cf->next->cft->close(cf->next, data);
+
    cf->next->cft->do_close(cf->next, data);
}


modified external/curl/lib/imap.c
@@ -385,11 +385,11 @@ static CURLcode imap_get_message(struct Curl_easy *data, struct bufref *out)

/***********************************************************************
 *
-
 * state()
+
 * imap_state()
 *
 * This is the ONLY way to change IMAP state!
 */
-
static void state(struct Curl_easy *data, imapstate newstate)
+
static void imap_state(struct Curl_easy *data, imapstate newstate)
{
  struct imap_conn *imapc = &data->conn->proto.imapc;
#if defined(DEBUGBUILD) && !defined(CURL_DISABLE_VERBOSE_STRINGS)
@@ -441,7 +441,7 @@ static CURLcode imap_perform_capability(struct Curl_easy *data,
  result = imap_sendf(data, "CAPABILITY");

  if(!result)
-
    state(data, IMAP_CAPABILITY);
+
    imap_state(data, IMAP_CAPABILITY);

  return result;
}
@@ -458,7 +458,7 @@ static CURLcode imap_perform_starttls(struct Curl_easy *data)
  CURLcode result = imap_sendf(data, "STARTTLS");

  if(!result)
-
    state(data, IMAP_STARTTLS);
+
    imap_state(data, IMAP_STARTTLS);

  return result;
}
@@ -487,7 +487,7 @@ static CURLcode imap_perform_upgrade_tls(struct Curl_easy *data,
  if(!result) {
    imapc->ssldone = ssldone;
    if(imapc->state != IMAP_UPGRADETLS)
-
      state(data, IMAP_UPGRADETLS);
+
      imap_state(data, IMAP_UPGRADETLS);

    if(imapc->ssldone) {
      imap_to_imaps(conn);
@@ -514,7 +514,7 @@ static CURLcode imap_perform_login(struct Curl_easy *data,
  /* Check we have a username and password to authenticate with and end the
     connect phase if we don't */
  if(!data->state.aptr.user) {
-
    state(data, IMAP_STOP);
+
    imap_state(data, IMAP_STOP);

    return result;
  }
@@ -531,7 +531,7 @@ static CURLcode imap_perform_login(struct Curl_easy *data,
  free(passwd);

  if(!result)
-
    state(data, IMAP_LOGIN);
+
    imap_state(data, IMAP_LOGIN);

  return result;
}
@@ -615,7 +615,7 @@ static CURLcode imap_perform_authentication(struct Curl_easy *data,
     with and end the connect phase if we don't */
  if(imapc->preauth ||
     !Curl_sasl_can_authenticate(&imapc->sasl, data)) {
-
    state(data, IMAP_STOP);
+
    imap_state(data, IMAP_STOP);
    return result;
  }

@@ -624,7 +624,7 @@ static CURLcode imap_perform_authentication(struct Curl_easy *data,

  if(!result) {
    if(progress == SASL_INPROGRESS)
-
      state(data, IMAP_AUTHENTICATE);
+
      imap_state(data, IMAP_AUTHENTICATE);
    else if(!imapc->login_disabled && (imapc->preftype & IMAP_TYPE_CLEARTEXT))
      /* Perform clear text authentication */
      result = imap_perform_login(data, conn);
@@ -667,7 +667,7 @@ static CURLcode imap_perform_list(struct Curl_easy *data)
  }

  if(!result)
-
    state(data, IMAP_LIST);
+
    imap_state(data, IMAP_LIST);

  return result;
}
@@ -707,7 +707,7 @@ static CURLcode imap_perform_select(struct Curl_easy *data)
  free(mailbox);

  if(!result)
-
    state(data, IMAP_SELECT);
+
    imap_state(data, IMAP_SELECT);

  return result;
}
@@ -749,7 +749,7 @@ static CURLcode imap_perform_fetch(struct Curl_easy *data)
    return CURLE_URL_MALFORMAT;
  }
  if(!result)
-
    state(data, IMAP_FETCH);
+
    imap_state(data, IMAP_FETCH);

  return result;
}
@@ -820,7 +820,7 @@ static CURLcode imap_perform_append(struct Curl_easy *data)
  free(mailbox);

  if(!result)
-
    state(data, IMAP_APPEND);
+
    imap_state(data, IMAP_APPEND);

  return result;
}
@@ -846,7 +846,7 @@ static CURLcode imap_perform_search(struct Curl_easy *data)
  result = imap_sendf(data, "SEARCH %s", imap->query);

  if(!result)
-
    state(data, IMAP_SEARCH);
+
    imap_state(data, IMAP_SEARCH);

  return result;
}
@@ -863,7 +863,7 @@ static CURLcode imap_perform_logout(struct Curl_easy *data)
  CURLcode result = imap_sendf(data, "LOGOUT");

  if(!result)
-
    state(data, IMAP_LOGOUT);
+
    imap_state(data, IMAP_LOGOUT);

  return result;
}
@@ -1017,7 +1017,7 @@ static CURLcode imap_state_auth_resp(struct Curl_easy *data,
  if(!result)
    switch(progress) {
    case SASL_DONE:
-
      state(data, IMAP_STOP);  /* Authenticated */
+
      imap_state(data, IMAP_STOP);  /* Authenticated */
      break;
    case SASL_IDLE:            /* No mechanism left after cancellation */
      if((!imapc->login_disabled) && (imapc->preftype & IMAP_TYPE_CLEARTEXT))
@@ -1049,7 +1049,7 @@ static CURLcode imap_state_login_resp(struct Curl_easy *data,
  }
  else
    /* End of connect phase */
-
    state(data, IMAP_STOP);
+
    imap_state(data, IMAP_STOP);

  return result;
}
@@ -1075,7 +1075,7 @@ static CURLcode imap_state_listsearch_resp(struct Curl_easy *data,
    result = CURLE_QUOTE_ERROR;
  else
    /* End of DO phase */
-
    state(data, IMAP_STOP);
+
    imap_state(data, IMAP_STOP);

  return result;
}
@@ -1143,7 +1143,7 @@ static CURLcode imap_state_fetch_resp(struct Curl_easy *data,

  if(imapcode != '*') {
    Curl_pgrsSetDownloadSize(data, -1);
-
    state(data, IMAP_STOP);
+
    imap_state(data, IMAP_STOP);
    return CURLE_REMOTE_FILE_NOT_FOUND;
  }

@@ -1178,7 +1178,7 @@ static CURLcode imap_state_fetch_resp(struct Curl_easy *data,

      if(!chunk) {
        /* no size, we're done with the data */
-
        state(data, IMAP_STOP);
+
        imap_state(data, IMAP_STOP);
        return CURLE_OK;
      }
      result = Curl_client_write(data, CLIENTWRITE_BODY, pp->cache, chunk);
@@ -1224,7 +1224,7 @@ static CURLcode imap_state_fetch_resp(struct Curl_easy *data,
  }

  /* End of DO phase */
-
  state(data, IMAP_STOP);
+
  imap_state(data, IMAP_STOP);

  return result;
}
@@ -1242,7 +1242,7 @@ static CURLcode imap_state_fetch_final_resp(struct Curl_easy *data,
    result = CURLE_WEIRD_SERVER_REPLY;
  else
    /* End of DONE phase */
-
    state(data, IMAP_STOP);
+
    imap_state(data, IMAP_STOP);

  return result;
}
@@ -1265,7 +1265,7 @@ static CURLcode imap_state_append_resp(struct Curl_easy *data, int imapcode,
    Curl_setup_transfer(data, -1, -1, FALSE, FIRSTSOCKET);

    /* End of DO phase */
-
    state(data, IMAP_STOP);
+
    imap_state(data, IMAP_STOP);
  }

  return result;
@@ -1284,7 +1284,7 @@ static CURLcode imap_state_append_final_resp(struct Curl_easy *data,
    result = CURLE_UPLOAD_FAILED;
  else
    /* End of DONE phase */
-
    state(data, IMAP_STOP);
+
    imap_state(data, IMAP_STOP);

  return result;
}
@@ -1372,7 +1372,7 @@ static CURLcode imap_statemachine(struct Curl_easy *data,
      /* fallthrough, just stop! */
    default:
      /* internal error */
-
      state(data, IMAP_STOP);
+
      imap_state(data, IMAP_STOP);
      break;
    }
  } while(!result && imapc->state != IMAP_STOP && Curl_pp_moredata(pp));
@@ -1475,7 +1475,7 @@ static CURLcode imap_connect(struct Curl_easy *data, bool *done)
    return result;

  /* Start off waiting for the server greeting response */
-
  state(data, IMAP_SERVERGREET);
+
  imap_state(data, IMAP_SERVERGREET);

  /* Start off with an response id of '*' */
  strcpy(imapc->resptag, "*");
@@ -1516,12 +1516,12 @@ static CURLcode imap_done(struct Curl_easy *data, CURLcode status,
    /* Handle responses after FETCH or APPEND transfer has finished */

    if(!data->state.upload && data->set.mimepost.kind == MIMEKIND_NONE)
-
      state(data, IMAP_FETCH_FINAL);
+
      imap_state(data, IMAP_FETCH_FINAL);
    else {
      /* End the APPEND command first by sending an empty line */
      result = Curl_pp_sendf(data, &conn->proto.imapc.pp, "%s", "");
      if(!result)
-
        state(data, IMAP_APPEND_FINAL);
+
        imap_state(data, IMAP_APPEND_FINAL);
    }

    /* Run the state-machine */
@@ -1777,7 +1777,7 @@ static CURLcode imap_sendf(struct Curl_easy *data, const char *fmt, ...)

  /* Calculate the tag based on the connection ID and command ID */
  msnprintf(imapc->resptag, sizeof(imapc->resptag), "%c%03d",
-
            'A' + curlx_sltosi(data->conn->connection_id % 26),
+
            'A' + curlx_sltosi((long)(data->conn->connection_id % 26)),
            ++imapc->cmdid);

  /* start with a blank buffer */
@@ -1925,6 +1925,7 @@ static CURLcode imap_parse_url_options(struct connectdata *conn)
  CURLcode result = CURLE_OK;
  struct imap_conn *imapc = &conn->proto.imapc;
  const char *ptr = conn->options;
+
  bool prefer_login = false;

  while(!result && ptr && *ptr) {
    const char *key = ptr;
@@ -1938,26 +1939,39 @@ static CURLcode imap_parse_url_options(struct connectdata *conn)
    while(*ptr && *ptr != ';')
      ptr++;

-
    if(strncasecompare(key, "AUTH=", 5))
+
    if(strncasecompare(key, "AUTH=+LOGIN", 11)) {
+
      /* User prefers plaintext LOGIN over any SASL, including SASL LOGIN */
+
      prefer_login = true;
+
      imapc->sasl.prefmech = SASL_AUTH_NONE;
+
    }
+
    else if(strncasecompare(key, "AUTH=", 5)) {
+
      prefer_login = false;
      result = Curl_sasl_parse_url_auth_option(&imapc->sasl,
                                               value, ptr - value);
-
    else
+
    }
+
    else {
+
      prefer_login = false;
      result = CURLE_URL_MALFORMAT;
+
    }

    if(*ptr == ';')
      ptr++;
  }

-
  switch(imapc->sasl.prefmech) {
-
  case SASL_AUTH_NONE:
-
    imapc->preftype = IMAP_TYPE_NONE;
-
    break;
-
  case SASL_AUTH_DEFAULT:
-
    imapc->preftype = IMAP_TYPE_ANY;
-
    break;
-
  default:
-
    imapc->preftype = IMAP_TYPE_SASL;
-
    break;
+
  if(prefer_login)
+
    imapc->preftype = IMAP_TYPE_CLEARTEXT;
+
  else {
+
    switch(imapc->sasl.prefmech) {
+
    case SASL_AUTH_NONE:
+
      imapc->preftype = IMAP_TYPE_NONE;
+
      break;
+
    case SASL_AUTH_DEFAULT:
+
      imapc->preftype = IMAP_TYPE_ANY;
+
      break;
+
    default:
+
      imapc->preftype = IMAP_TYPE_SASL;
+
      break;
+
    }
  }

  return result;
modified external/curl/lib/krb5.c
@@ -261,7 +261,7 @@ krb5_auth(void *app_data, struct Curl_easy *data, struct connectdata *conn)
    }
    /* We pass NULL as |output_name_type| to avoid a leak. */
    gss_display_name(&min, gssname, &output_buffer, NULL);
-
    infof(data, "Trying against %s", output_buffer.value);
+
    infof(data, "Trying against %s", (char *)output_buffer.value);
    gssresp = GSS_C_NO_BUFFER;
    *context = GSS_C_NO_CONTEXT;

modified external/curl/lib/ldap.c
@@ -50,6 +50,14 @@
#endif

#ifdef USE_WIN32_LDAP           /* Use Windows LDAP implementation. */
+
# ifdef _MSC_VER
+
#  pragma warning(push)
+
#  pragma warning(disable: 4201)
+
# endif
+
# include <subauth.h>  /* for [P]UNICODE_STRING */
+
# ifdef _MSC_VER
+
#  pragma warning(pop)
+
# endif
# include <winldap.h>
# ifndef LDAP_VENDOR_NAME
#  error Your Platform SDK is NOT sufficient for LDAP support! \
modified external/curl/lib/libcurl.plist
@@ -15,7 +15,7 @@
	<string>se.curl.libcurl</string>

	<key>CFBundleVersion</key>
-
	<string>8.1.2</string>
+
	<string>8.2.1</string>

	<key>CFBundleName</key>
	<string>libcurl</string>
@@ -27,9 +27,9 @@
	<string>????</string>

	<key>CFBundleShortVersionString</key>
-
	<string>libcurl 8.1.2</string>
+
	<string>libcurl 8.2.1</string>

	<key>CFBundleGetInfoString</key>
-
	<string>libcurl.plist 8.1.2</string>
+
	<string>libcurl.plist 8.2.1</string>
</dict>
</plist>
added external/curl/lib/macos.c
@@ -0,0 +1,62 @@
+
/***************************************************************************
+
 *                                  _   _ ____  _
+
 *  Project                     ___| | | |  _ \| |
+
 *                             / __| | | | |_) | |
+
 *                            | (__| |_| |  _ <| |___
+
 *                             \___|\___/|_| \_\_____|
+
 *
+
 * Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
+
 *
+
 * This software is licensed as described in the file COPYING, which
+
 * you should have received as part of this distribution. The terms
+
 * are also available at https://curl.se/docs/copyright.html.
+
 *
+
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+
 * copies of the Software, and permit persons to whom the Software is
+
 * furnished to do so, under the terms of the COPYING file.
+
 *
+
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+
 * KIND, either express or implied.
+
 *
+
 * SPDX-License-Identifier: curl
+
 *
+
 ***************************************************************************/
+

+
#include "curl_setup.h"
+

+
#if defined(__APPLE__)
+

+
#if !defined(TARGET_OS_OSX) || TARGET_OS_OSX
+

+
#include <curl/curl.h>
+

+
#include "macos.h"
+

+
#if defined(ENABLE_IPV6) && defined(CURL_OSX_CALL_COPYPROXIES)
+
#include <SystemConfiguration/SCDynamicStoreCopySpecific.h>
+
#endif
+

+
CURLcode Curl_macos_init(void)
+
{
+
#if defined(ENABLE_IPV6) && defined(CURL_OSX_CALL_COPYPROXIES)
+
  {
+
    /*
+
     * The automagic conversion from IPv4 literals to IPv6 literals only
+
     * works if the SCDynamicStoreCopyProxies system function gets called
+
     * first. As Curl currently doesn't support system-wide HTTP proxies, we
+
     * therefore don't use any value this function might return.
+
     *
+
     * This function is only available on a macOS and is not needed for
+
     * IPv4-only builds, hence the conditions above.
+
     */
+
    CFDictionaryRef dict = SCDynamicStoreCopyProxies(NULL);
+
    if(dict)
+
      CFRelease(dict);
+
  }
+
#endif
+
  return CURLE_OK;
+
}
+

+
#endif /* TARGET_OS_OSX */
+

+
#endif /* __APPLE__ */
added external/curl/lib/macos.h
@@ -0,0 +1,38 @@
+
#ifndef HEADER_CURL_MACOS_H
+
#define HEADER_CURL_MACOS_H
+
/***************************************************************************
+
 *                                  _   _ ____  _
+
 *  Project                     ___| | | |  _ \| |
+
 *                             / __| | | | |_) | |
+
 *                            | (__| |_| |  _ <| |___
+
 *                             \___|\___/|_| \_\_____|
+
 *
+
 * Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
+
 *
+
 * This software is licensed as described in the file COPYING, which
+
 * you should have received as part of this distribution. The terms
+
 * are also available at https://curl.se/docs/copyright.html.
+
 *
+
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+
 * copies of the Software, and permit persons to whom the Software is
+
 * furnished to do so, under the terms of the COPYING file.
+
 *
+
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+
 * KIND, either express or implied.
+
 *
+
 * SPDX-License-Identifier: curl
+
 *
+
 ***************************************************************************/
+
#include "curl_setup.h"
+

+
#if defined(__APPLE__) && (!defined(TARGET_OS_OSX) || TARGET_OS_OSX)
+

+
CURLcode Curl_macos_init(void);
+

+
#else
+

+
#define Curl_macos_init() CURLE_OK
+

+
#endif
+

+
#endif /* HEADER_CURL_MACOS_H */
modified external/curl/lib/mime.c
@@ -84,7 +84,7 @@ static const struct mime_encoder encoders[] = {
};

/* Base64 encoding table */
-
static const char base64[] =
+
static const char base64enc[] =
  "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";

/* Quoted-printable character class table.
@@ -469,10 +469,10 @@ static size_t encoder_base64_read(char *buffer, size_t size, bool ateof,
    i = st->buf[st->bufbeg++] & 0xFF;
    i = (i << 8) | (st->buf[st->bufbeg++] & 0xFF);
    i = (i << 8) | (st->buf[st->bufbeg++] & 0xFF);
-
    *ptr++ = base64[(i >> 18) & 0x3F];
-
    *ptr++ = base64[(i >> 12) & 0x3F];
-
    *ptr++ = base64[(i >> 6) & 0x3F];
-
    *ptr++ = base64[i & 0x3F];
+
    *ptr++ = base64enc[(i >> 18) & 0x3F];
+
    *ptr++ = base64enc[(i >> 12) & 0x3F];
+
    *ptr++ = base64enc[(i >> 6) & 0x3F];
+
    *ptr++ = base64enc[i & 0x3F];
    cursize += 4;
    st->pos += 4;
    size -= 4;
@@ -496,10 +496,10 @@ static size_t encoder_base64_read(char *buffer, size_t size, bool ateof,
          i = (st->buf[st->bufbeg + 1] & 0xFF) << 8;

        i |= (st->buf[st->bufbeg] & 0xFF) << 16;
-
        ptr[0] = base64[(i >> 18) & 0x3F];
-
        ptr[1] = base64[(i >> 12) & 0x3F];
+
        ptr[0] = base64enc[(i >> 18) & 0x3F];
+
        ptr[1] = base64enc[(i >> 12) & 0x3F];
        if(++st->bufbeg != st->bufend) {
-
          ptr[2] = base64[(i >> 6) & 0x3F];
+
          ptr[2] = base64enc[(i >> 6) & 0x3F];
          st->bufbeg++;
        }
        cursize += 4;
modified external/curl/lib/mqtt.c
@@ -636,7 +636,7 @@ MQTT_SUBACK_COMING:

    /* -- switched state -- */
    remlen = mq->remaining_length;
-
    infof(data, "Remaining length: %zd bytes", remlen);
+
    infof(data, "Remaining length: %zu bytes", remlen);
    if(data->set.max_filesize &&
       (curl_off_t)remlen > data->set.max_filesize) {
      failf(data, "Maximum file size exceeded");
modified external/curl/lib/multi.c
@@ -112,7 +112,7 @@ static CURLMcode multi_timeout(struct Curl_multi *multi,
static void process_pending_handles(struct Curl_multi *multi);

#ifdef DEBUGBUILD
-
static const char * const statename[]={
+
static const char * const multi_statename[]={
  "INIT",
  "PENDING",
  "CONNECT",
@@ -194,15 +194,10 @@ static void mstate(struct Curl_easy *data, CURLMstate state
#if defined(DEBUGBUILD) && !defined(CURL_DISABLE_VERBOSE_STRINGS)
  if(data->mstate >= MSTATE_PENDING &&
     data->mstate < MSTATE_COMPLETED) {
-
    long connection_id = -5000;
-

-
    if(data->conn)
-
      connection_id = data->conn->connection_id;
-

    infof(data,
-
          "STATE: %s => %s handle %p; line %d (connection #%ld)",
-
          statename[oldstate], statename[data->mstate],
-
          (void *)data, lineno, connection_id);
+
          "STATE: %s => %s handle %p; line %d",
+
          multi_statename[oldstate], multi_statename[data->mstate],
+
          (void *)data, lineno);
  }
#endif

@@ -464,6 +459,20 @@ struct Curl_multi *curl_multi_init(void)
                           CURL_DNS_HASH_SIZE);
}

+
#ifdef DEBUGBUILD
+
static void multi_warn_debug(struct Curl_multi *multi, struct Curl_easy *data)
+
{
+
  if(!multi->warned) {
+
    infof(data, "!!! WARNING !!!");
+
    infof(data, "This is a debug build of libcurl, "
+
          "do not use in production.");
+
    multi->warned = true;
+
  }
+
}
+
#else
+
#define multi_warn_debug(x,y) Curl_nop_stmt
+
#endif
+

/* returns TRUE if the easy handle is supposed to be present in the main link
   list */
static bool in_main_list(struct Curl_easy *data)
@@ -623,8 +632,14 @@ CURLMcode curl_multi_add_handle(struct Curl_multi *multi,
    data->set.server_response_timeout;
  data->state.conn_cache->closure_handle->set.no_signal =
    data->set.no_signal;
+
  data->id = data->state.conn_cache->next_easy_id++;
+
  if(data->state.conn_cache->next_easy_id <= 0)
+
    data->state.conn_cache->next_easy_id = 0;
  CONNCACHE_UNLOCK(data);

+
  multi_warn_debug(multi, data);
+
  infof(data, "processing: %s", data->state.url);
+

  return CURLM_OK;
}

@@ -742,6 +757,7 @@ static CURLcode multi_done(struct Curl_easy *data,
     but currently we have no such detail knowledge.
  */

+
  data->state.recent_conn_id = conn->connection_id;
  if((data->set.reuse_forbid
#if defined(USE_NTLM)
      && !(conn->http_ntlm_state == NTLMSTATE_TYPE2 ||
@@ -753,8 +769,9 @@ static CURLcode multi_done(struct Curl_easy *data,
#endif
     ) || conn->bits.close
       || (premature && !Curl_conn_is_multiplex(conn, FIRSTSOCKET))) {
-
    DEBUGF(infof(data, "multi_done, not re-using connection=%ld, forbid=%d"
-
                 ", close=%d, premature=%d, conn_multiplex=%d",
+
    DEBUGF(infof(data, "multi_done, not re-using connection=%"
+
                       CURL_FORMAT_CURL_OFF_T ", forbid=%d"
+
                       ", close=%d, premature=%d, conn_multiplex=%d",
                 conn->connection_id,
                 data->set.reuse_forbid, conn->bits.close, premature,
                 Curl_conn_is_multiplex(conn, FIRSTSOCKET)));
@@ -774,15 +791,16 @@ static CURLcode multi_done(struct Curl_easy *data,
      conn->bits.conn_to_host ? conn->conn_to_host.dispname :
      conn->host.dispname;
    /* create string before returning the connection */
-
    long connection_id = conn->connection_id;
+
    curl_off_t connection_id = conn->connection_id;
    msnprintf(buffer, sizeof(buffer),
-
              "Connection #%ld to host %s left intact",
+
              "Connection #%" CURL_FORMAT_CURL_OFF_T " to host %s left intact",
              connection_id, host);
    /* the connection is no longer in use by this transfer */
    CONNCACHE_UNLOCK(data);
    if(Curl_conncache_return_conn(data, conn)) {
      /* remember the most recently used connection */
      data->state.lastconnect_id = connection_id;
+
      data->state.recent_conn_id = connection_id;
      infof(data, "%s", buffer);
    }
    else
@@ -1895,14 +1913,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
    multistate(data, MSTATE_COMPLETED);
  }

-
#ifdef DEBUGBUILD
-
  if(!multi->warned) {
-
    infof(data, "!!! WARNING !!!");
-
    infof(data, "This is a debug build of libcurl, "
-
          "do not use in production.");
-
    multi->warned = true;
-
  }
-
#endif
+
  multi_warn_debug(multi, data);

  do {
    /* A "stream" here is a logical stream if the protocol can handle that
@@ -3690,7 +3701,7 @@ void Curl_expire_clear(struct Curl_easy *data)
    }

#ifdef DEBUGBUILD
-
    infof(data, "Expire cleared (transfer %p)", data);
+
    infof(data, "Expire cleared");
#endif
    nowp->tv_sec = 0;
    nowp->tv_usec = 0;
@@ -3798,7 +3809,7 @@ void Curl_multi_dump(struct Curl_multi *multi)
      /* only display handles that are not completed */
      fprintf(stderr, "handle %p, state %s, %d sockets\n",
              (void *)data,
-
              statename[data->mstate], data->numsocks);
+
              multi_statename[data->mstate], data->numsocks);
      for(i = 0; i < data->numsocks; i++) {
        curl_socket_t s = data->sockets[i];
        struct Curl_sh_entry *entry = sh_getentry(&multi->sockhash, s);
modified external/curl/lib/pop3.c
@@ -282,11 +282,11 @@ static CURLcode pop3_get_message(struct Curl_easy *data, struct bufref *out)

/***********************************************************************
 *
-
 * state()
+
 * pop3_state()
 *
 * This is the ONLY way to change POP3 state!
 */
-
static void state(struct Curl_easy *data, pop3state newstate)
+
static void pop3_state(struct Curl_easy *data, pop3state newstate)
{
  struct pop3_conn *pop3c = &data->conn->proto.pop3c;
#if defined(DEBUGBUILD) && !defined(CURL_DISABLE_VERBOSE_STRINGS)
@@ -335,7 +335,7 @@ static CURLcode pop3_perform_capa(struct Curl_easy *data,
  result = Curl_pp_sendf(data, &pop3c->pp, "%s", "CAPA");

  if(!result)
-
    state(data, POP3_CAPA);
+
    pop3_state(data, POP3_CAPA);

  return result;
}
@@ -353,7 +353,7 @@ static CURLcode pop3_perform_starttls(struct Curl_easy *data,
  CURLcode result = Curl_pp_sendf(data, &conn->proto.pop3c.pp, "%s", "STLS");

  if(!result)
-
    state(data, POP3_STARTTLS);
+
    pop3_state(data, POP3_STARTTLS);

  return result;
}
@@ -383,7 +383,7 @@ static CURLcode pop3_perform_upgrade_tls(struct Curl_easy *data,
  if(!result) {
    pop3c->ssldone = ssldone;
    if(pop3c->state != POP3_UPGRADETLS)
-
      state(data, POP3_UPGRADETLS);
+
      pop3_state(data, POP3_UPGRADETLS);

    if(pop3c->ssldone) {
      pop3_to_pop3s(conn);
@@ -408,7 +408,7 @@ static CURLcode pop3_perform_user(struct Curl_easy *data,
  /* Check we have a username and password to authenticate with and end the
     connect phase if we don't */
  if(!data->state.aptr.user) {
-
    state(data, POP3_STOP);
+
    pop3_state(data, POP3_STOP);

    return result;
  }
@@ -417,7 +417,7 @@ static CURLcode pop3_perform_user(struct Curl_easy *data,
  result = Curl_pp_sendf(data, &conn->proto.pop3c.pp, "USER %s",
                         conn->user ? conn->user : "");
  if(!result)
-
    state(data, POP3_USER);
+
    pop3_state(data, POP3_USER);

  return result;
}
@@ -442,7 +442,7 @@ static CURLcode pop3_perform_apop(struct Curl_easy *data,
  /* Check we have a username and password to authenticate with and end the
     connect phase if we don't */
  if(!data->state.aptr.user) {
-
    state(data, POP3_STOP);
+
    pop3_state(data, POP3_STOP);

    return result;
  }
@@ -468,7 +468,7 @@ static CURLcode pop3_perform_apop(struct Curl_easy *data,
  result = Curl_pp_sendf(data, &pop3c->pp, "APOP %s %s", conn->user, secret);

  if(!result)
-
    state(data, POP3_APOP);
+
    pop3_state(data, POP3_APOP);

  return result;
}
@@ -552,7 +552,7 @@ static CURLcode pop3_perform_authentication(struct Curl_easy *data,
  /* Check we have enough data to authenticate with and end the
     connect phase if we don't */
  if(!Curl_sasl_can_authenticate(&pop3c->sasl, data)) {
-
    state(data, POP3_STOP);
+
    pop3_state(data, POP3_STOP);
    return result;
  }

@@ -562,7 +562,7 @@ static CURLcode pop3_perform_authentication(struct Curl_easy *data,

    if(!result)
      if(progress == SASL_INPROGRESS)
-
        state(data, POP3_AUTH);
+
        pop3_state(data, POP3_AUTH);
  }

  if(!result && progress == SASL_IDLE) {
@@ -620,7 +620,7 @@ static CURLcode pop3_perform_command(struct Curl_easy *data)
                            pop3->custom : command));

  if(!result)
-
    state(data, POP3_COMMAND);
+
    pop3_state(data, POP3_COMMAND);

  return result;
}
@@ -638,7 +638,7 @@ static CURLcode pop3_perform_quit(struct Curl_easy *data,
  CURLcode result = Curl_pp_sendf(data, &conn->proto.pop3c.pp, "%s", "QUIT");

  if(!result)
-
    state(data, POP3_QUIT);
+
    pop3_state(data, POP3_QUIT);

  return result;
}
@@ -831,7 +831,7 @@ static CURLcode pop3_state_auth_resp(struct Curl_easy *data,
  if(!result)
    switch(progress) {
    case SASL_DONE:
-
      state(data, POP3_STOP);  /* Authenticated */
+
      pop3_state(data, POP3_STOP);  /* Authenticated */
      break;
    case SASL_IDLE:            /* No mechanism left after cancellation */
#ifndef CURL_DISABLE_CRYPTO_AUTH
@@ -869,7 +869,7 @@ static CURLcode pop3_state_apop_resp(struct Curl_easy *data, int pop3code,
  }
  else
    /* End of connect phase */
-
    state(data, POP3_STOP);
+
    pop3_state(data, POP3_STOP);

  return result;
}
@@ -892,7 +892,7 @@ static CURLcode pop3_state_user_resp(struct Curl_easy *data, int pop3code,
    result = Curl_pp_sendf(data, &conn->proto.pop3c.pp, "PASS %s",
                           conn->passwd ? conn->passwd : "");
  if(!result)
-
    state(data, POP3_PASS);
+
    pop3_state(data, POP3_PASS);

  return result;
}
@@ -910,7 +910,7 @@ static CURLcode pop3_state_pass_resp(struct Curl_easy *data, int pop3code,
  }
  else
    /* End of connect phase */
-
    state(data, POP3_STOP);
+
    pop3_state(data, POP3_STOP);

  return result;
}
@@ -929,7 +929,7 @@ static CURLcode pop3_state_command_resp(struct Curl_easy *data,
  (void)instate; /* no use for this yet */

  if(pop3code != '+') {
-
    state(data, POP3_STOP);
+
    pop3_state(data, POP3_STOP);
    return CURLE_WEIRD_SERVER_REPLY;
  }

@@ -967,7 +967,7 @@ static CURLcode pop3_state_command_resp(struct Curl_easy *data,
  }

  /* End of DO phase */
-
  state(data, POP3_STOP);
+
  pop3_state(data, POP3_STOP);

  return result;
}
@@ -1037,12 +1037,12 @@ static CURLcode pop3_statemachine(struct Curl_easy *data,
      break;

    case POP3_QUIT:
-
      state(data, POP3_STOP);
+
      pop3_state(data, POP3_STOP);
      break;

    default:
      /* internal error */
-
      state(data, POP3_STOP);
+
      pop3_state(data, POP3_STOP);
      break;
    }
  } while(!result && pop3c->state != POP3_STOP && Curl_pp_moredata(pp));
@@ -1143,7 +1143,7 @@ static CURLcode pop3_connect(struct Curl_easy *data, bool *done)
    return result;

  /* Start off waiting for the server greeting response */
-
  state(data, POP3_SERVERGREET);
+
  pop3_state(data, POP3_SERVERGREET);

  result = pop3_multi_statemach(data, done);

modified external/curl/lib/sendf.c
@@ -419,8 +419,6 @@ CURLcode Curl_read(struct Curl_easy *data, /* transfer */
  *n += nread;
  result = CURLE_OK;
out:
-
  /* DEBUGF(infof(data, "Curl_read(handle=%p) -> %d, nread=%ld",
-
        data, result, nread)); */
  return result;
}

modified external/curl/lib/setopt.c
@@ -1867,6 +1867,15 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
     */
    data->set.haproxyprotocol = (0 != va_arg(param, long)) ? TRUE : FALSE;
    break;
+
  case CURLOPT_HAPROXY_CLIENT_IP:
+
    /*
+
     * Set the client IP to send through HAProxy PROXY protocol
+
     */
+
    result = Curl_setstropt(&data->set.str[STRING_HAPROXY_CLIENT_IP],
+
                            va_arg(param, char *));
+
    /* We enable implicitly the HAProxy protocol if we use this flag. */
+
    data->set.haproxyprotocol = TRUE;
+
    break;
#endif
  case CURLOPT_INTERFACE:
    /*
@@ -2711,7 +2720,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
    /* Set the list of mail recipients */
    data->set.mail_rcpt = va_arg(param, struct curl_slist *);
    break;
-
  case CURLOPT_MAIL_RCPT_ALLLOWFAILS:
+
  case CURLOPT_MAIL_RCPT_ALLOWFAILS:
    /* allow RCPT TO command to fail for some recipients */
    data->set.mail_rcpt_allowfails = (0 != va_arg(param, long)) ? TRUE : FALSE;
    break;
modified external/curl/lib/smb.c
@@ -27,8 +27,6 @@

#if !defined(CURL_DISABLE_SMB) && defined(USE_CURL_NTLM_CORE)

-
#define BUILDING_CURL_SMB_C
-

#ifdef WIN32
#define getpid GetCurrentProcessId
#endif
@@ -50,6 +48,199 @@
#include "curl_memory.h"
#include "memdebug.h"

+
/*
+
 * Definitions for SMB protocol data structures
+
 */
+
#if defined(_MSC_VER) || defined(__ILEC400__)
+
#  define PACK
+
#  pragma pack(push)
+
#  pragma pack(1)
+
#elif defined(__GNUC__)
+
#  define PACK __attribute__((packed))
+
#else
+
#  define PACK
+
#endif
+

+
#define SMB_COM_CLOSE                 0x04
+
#define SMB_COM_READ_ANDX             0x2e
+
#define SMB_COM_WRITE_ANDX            0x2f
+
#define SMB_COM_TREE_DISCONNECT       0x71
+
#define SMB_COM_NEGOTIATE             0x72
+
#define SMB_COM_SETUP_ANDX            0x73
+
#define SMB_COM_TREE_CONNECT_ANDX     0x75
+
#define SMB_COM_NT_CREATE_ANDX        0xa2
+
#define SMB_COM_NO_ANDX_COMMAND       0xff
+

+
#define SMB_WC_CLOSE                  0x03
+
#define SMB_WC_READ_ANDX              0x0c
+
#define SMB_WC_WRITE_ANDX             0x0e
+
#define SMB_WC_SETUP_ANDX             0x0d
+
#define SMB_WC_TREE_CONNECT_ANDX      0x04
+
#define SMB_WC_NT_CREATE_ANDX         0x18
+

+
#define SMB_FLAGS_CANONICAL_PATHNAMES 0x10
+
#define SMB_FLAGS_CASELESS_PATHNAMES  0x08
+
#define SMB_FLAGS2_UNICODE_STRINGS    0x8000
+
#define SMB_FLAGS2_IS_LONG_NAME       0x0040
+
#define SMB_FLAGS2_KNOWS_LONG_NAME    0x0001
+

+
#define SMB_CAP_LARGE_FILES           0x08
+
#define SMB_GENERIC_WRITE             0x40000000
+
#define SMB_GENERIC_READ              0x80000000
+
#define SMB_FILE_SHARE_ALL            0x07
+
#define SMB_FILE_OPEN                 0x01
+
#define SMB_FILE_OVERWRITE_IF         0x05
+

+
#define SMB_ERR_NOACCESS              0x00050001
+

+
struct smb_header {
+
  unsigned char nbt_type;
+
  unsigned char nbt_flags;
+
  unsigned short nbt_length;
+
  unsigned char magic[4];
+
  unsigned char command;
+
  unsigned int status;
+
  unsigned char flags;
+
  unsigned short flags2;
+
  unsigned short pid_high;
+
  unsigned char signature[8];
+
  unsigned short pad;
+
  unsigned short tid;
+
  unsigned short pid;
+
  unsigned short uid;
+
  unsigned short mid;
+
} PACK;
+

+
struct smb_negotiate_response {
+
  struct smb_header h;
+
  unsigned char word_count;
+
  unsigned short dialect_index;
+
  unsigned char security_mode;
+
  unsigned short max_mpx_count;
+
  unsigned short max_number_vcs;
+
  unsigned int max_buffer_size;
+
  unsigned int max_raw_size;
+
  unsigned int session_key;
+
  unsigned int capabilities;
+
  unsigned int system_time_low;
+
  unsigned int system_time_high;
+
  unsigned short server_time_zone;
+
  unsigned char encryption_key_length;
+
  unsigned short byte_count;
+
  char bytes[1];
+
} PACK;
+

+
struct andx {
+
  unsigned char command;
+
  unsigned char pad;
+
  unsigned short offset;
+
} PACK;
+

+
struct smb_setup {
+
  unsigned char word_count;
+
  struct andx andx;
+
  unsigned short max_buffer_size;
+
  unsigned short max_mpx_count;
+
  unsigned short vc_number;
+
  unsigned int session_key;
+
  unsigned short lengths[2];
+
  unsigned int pad;
+
  unsigned int capabilities;
+
  unsigned short byte_count;
+
  char bytes[1024];
+
} PACK;
+

+
struct smb_tree_connect {
+
  unsigned char word_count;
+
  struct andx andx;
+
  unsigned short flags;
+
  unsigned short pw_len;
+
  unsigned short byte_count;
+
  char bytes[1024];
+
} PACK;
+

+
struct smb_nt_create {
+
  unsigned char word_count;
+
  struct andx andx;
+
  unsigned char pad;
+
  unsigned short name_length;
+
  unsigned int flags;
+
  unsigned int root_fid;
+
  unsigned int access;
+
  curl_off_t allocation_size;
+
  unsigned int ext_file_attributes;
+
  unsigned int share_access;
+
  unsigned int create_disposition;
+
  unsigned int create_options;
+
  unsigned int impersonation_level;
+
  unsigned char security_flags;
+
  unsigned short byte_count;
+
  char bytes[1024];
+
} PACK;
+

+
struct smb_nt_create_response {
+
  struct smb_header h;
+
  unsigned char word_count;
+
  struct andx andx;
+
  unsigned char op_lock_level;
+
  unsigned short fid;
+
  unsigned int create_disposition;
+

+
  curl_off_t create_time;
+
  curl_off_t last_access_time;
+
  curl_off_t last_write_time;
+
  curl_off_t last_change_time;
+
  unsigned int ext_file_attributes;
+
  curl_off_t allocation_size;
+
  curl_off_t end_of_file;
+
} PACK;
+

+
struct smb_read {
+
  unsigned char word_count;
+
  struct andx andx;
+
  unsigned short fid;
+
  unsigned int offset;
+
  unsigned short max_bytes;
+
  unsigned short min_bytes;
+
  unsigned int timeout;
+
  unsigned short remaining;
+
  unsigned int offset_high;
+
  unsigned short byte_count;
+
} PACK;
+

+
struct smb_write {
+
  struct smb_header h;
+
  unsigned char word_count;
+
  struct andx andx;
+
  unsigned short fid;
+
  unsigned int offset;
+
  unsigned int timeout;
+
  unsigned short write_mode;
+
  unsigned short remaining;
+
  unsigned short pad;
+
  unsigned short data_length;
+
  unsigned short data_offset;
+
  unsigned int offset_high;
+
  unsigned short byte_count;
+
  unsigned char pad2;
+
} PACK;
+

+
struct smb_close {
+
  unsigned char word_count;
+
  unsigned short fid;
+
  unsigned int last_mtime;
+
  unsigned short byte_count;
+
} PACK;
+

+
struct smb_tree_disconnect {
+
  unsigned char word_count;
+
  unsigned short byte_count;
+
} PACK;
+

+
#if defined(_MSC_VER) || defined(__ILEC400__)
+
#  pragma pack(pop)
+
#endif
+

/* Local API functions */
static CURLcode smb_setup_connection(struct Curl_easy *data,
                                     struct connectdata *conn);
modified external/curl/lib/smb.h
@@ -48,203 +48,6 @@ struct smb_conn {
  size_t got;
};

-
/*
-
 * Definitions for SMB protocol data structures
-
 */
-
#ifdef BUILDING_CURL_SMB_C
-

-
#if defined(_MSC_VER) || defined(__ILEC400__)
-
#  define PACK
-
#  pragma pack(push)
-
#  pragma pack(1)
-
#elif defined(__GNUC__)
-
#  define PACK __attribute__((packed))
-
#else
-
#  define PACK
-
#endif
-

-
#define SMB_COM_CLOSE                 0x04
-
#define SMB_COM_READ_ANDX             0x2e
-
#define SMB_COM_WRITE_ANDX            0x2f
-
#define SMB_COM_TREE_DISCONNECT       0x71
-
#define SMB_COM_NEGOTIATE             0x72
-
#define SMB_COM_SETUP_ANDX            0x73
-
#define SMB_COM_TREE_CONNECT_ANDX     0x75
-
#define SMB_COM_NT_CREATE_ANDX        0xa2
-
#define SMB_COM_NO_ANDX_COMMAND       0xff
-

-
#define SMB_WC_CLOSE                  0x03
-
#define SMB_WC_READ_ANDX              0x0c
-
#define SMB_WC_WRITE_ANDX             0x0e
-
#define SMB_WC_SETUP_ANDX             0x0d
-
#define SMB_WC_TREE_CONNECT_ANDX      0x04
-
#define SMB_WC_NT_CREATE_ANDX         0x18
-

-
#define SMB_FLAGS_CANONICAL_PATHNAMES 0x10
-
#define SMB_FLAGS_CASELESS_PATHNAMES  0x08
-
#define SMB_FLAGS2_UNICODE_STRINGS    0x8000
-
#define SMB_FLAGS2_IS_LONG_NAME       0x0040
-
#define SMB_FLAGS2_KNOWS_LONG_NAME    0x0001
-

-
#define SMB_CAP_LARGE_FILES           0x08
-
#define SMB_GENERIC_WRITE             0x40000000
-
#define SMB_GENERIC_READ              0x80000000
-
#define SMB_FILE_SHARE_ALL            0x07
-
#define SMB_FILE_OPEN                 0x01
-
#define SMB_FILE_OVERWRITE_IF         0x05
-

-
#define SMB_ERR_NOACCESS              0x00050001
-

-
struct smb_header {
-
  unsigned char nbt_type;
-
  unsigned char nbt_flags;
-
  unsigned short nbt_length;
-
  unsigned char magic[4];
-
  unsigned char command;
-
  unsigned int status;
-
  unsigned char flags;
-
  unsigned short flags2;
-
  unsigned short pid_high;
-
  unsigned char signature[8];
-
  unsigned short pad;
-
  unsigned short tid;
-
  unsigned short pid;
-
  unsigned short uid;
-
  unsigned short mid;
-
} PACK;
-

-
struct smb_negotiate_response {
-
  struct smb_header h;
-
  unsigned char word_count;
-
  unsigned short dialect_index;
-
  unsigned char security_mode;
-
  unsigned short max_mpx_count;
-
  unsigned short max_number_vcs;
-
  unsigned int max_buffer_size;
-
  unsigned int max_raw_size;
-
  unsigned int session_key;
-
  unsigned int capabilities;
-
  unsigned int system_time_low;
-
  unsigned int system_time_high;
-
  unsigned short server_time_zone;
-
  unsigned char encryption_key_length;
-
  unsigned short byte_count;
-
  char bytes[1];
-
} PACK;
-

-
struct andx {
-
  unsigned char command;
-
  unsigned char pad;
-
  unsigned short offset;
-
} PACK;
-

-
struct smb_setup {
-
  unsigned char word_count;
-
  struct andx andx;
-
  unsigned short max_buffer_size;
-
  unsigned short max_mpx_count;
-
  unsigned short vc_number;
-
  unsigned int session_key;
-
  unsigned short lengths[2];
-
  unsigned int pad;
-
  unsigned int capabilities;
-
  unsigned short byte_count;
-
  char bytes[1024];
-
} PACK;
-

-
struct smb_tree_connect {
-
  unsigned char word_count;
-
  struct andx andx;
-
  unsigned short flags;
-
  unsigned short pw_len;
-
  unsigned short byte_count;
-
  char bytes[1024];
-
} PACK;
-

-
struct smb_nt_create {
-
  unsigned char word_count;
-
  struct andx andx;
-
  unsigned char pad;
-
  unsigned short name_length;
-
  unsigned int flags;
-
  unsigned int root_fid;
-
  unsigned int access;
-
  curl_off_t allocation_size;
-
  unsigned int ext_file_attributes;
-
  unsigned int share_access;
-
  unsigned int create_disposition;
-
  unsigned int create_options;
-
  unsigned int impersonation_level;
-
  unsigned char security_flags;
-
  unsigned short byte_count;
-
  char bytes[1024];
-
} PACK;
-

-
struct smb_nt_create_response {
-
  struct smb_header h;
-
  unsigned char word_count;
-
  struct andx andx;
-
  unsigned char op_lock_level;
-
  unsigned short fid;
-
  unsigned int create_disposition;
-

-
  curl_off_t create_time;
-
  curl_off_t last_access_time;
-
  curl_off_t last_write_time;
-
  curl_off_t last_change_time;
-
  unsigned int ext_file_attributes;
-
  curl_off_t allocation_size;
-
  curl_off_t end_of_file;
-
} PACK;
-

-
struct smb_read {
-
  unsigned char word_count;
-
  struct andx andx;
-
  unsigned short fid;
-
  unsigned int offset;
-
  unsigned short max_bytes;
-
  unsigned short min_bytes;
-
  unsigned int timeout;
-
  unsigned short remaining;
-
  unsigned int offset_high;
-
  unsigned short byte_count;
-
} PACK;
-

-
struct smb_write {
-
  struct smb_header h;
-
  unsigned char word_count;
-
  struct andx andx;
-
  unsigned short fid;
-
  unsigned int offset;
-
  unsigned int timeout;
-
  unsigned short write_mode;
-
  unsigned short remaining;
-
  unsigned short pad;
-
  unsigned short data_length;
-
  unsigned short data_offset;
-
  unsigned int offset_high;
-
  unsigned short byte_count;
-
  unsigned char pad2;
-
} PACK;
-

-
struct smb_close {
-
  unsigned char word_count;
-
  unsigned short fid;
-
  unsigned int last_mtime;
-
  unsigned short byte_count;
-
} PACK;
-

-
struct smb_tree_disconnect {
-
  unsigned char word_count;
-
  unsigned short byte_count;
-
} PACK;
-

-
#if defined(_MSC_VER) || defined(__ILEC400__)
-
#  pragma pack(pop)
-
#endif
-

-
#endif /* BUILDING_CURL_SMB_C */
-

#if !defined(CURL_DISABLE_SMB) && defined(USE_CURL_NTLM_CORE) && \
    (SIZEOF_CURL_OFF_T > 4)

modified external/curl/lib/smtp.c
@@ -281,11 +281,11 @@ static CURLcode smtp_get_message(struct Curl_easy *data, struct bufref *out)

/***********************************************************************
 *
-
 * state()
+
 * smtp_state()
 *
 * This is the ONLY way to change SMTP state!
 */
-
static void state(struct Curl_easy *data, smtpstate newstate)
+
static void smtp_state(struct Curl_easy *data, smtpstate newstate)
{
  struct smtp_conn *smtpc = &data->conn->proto.smtpc;
#if defined(DEBUGBUILD) && !defined(CURL_DISABLE_VERBOSE_STRINGS)
@@ -338,7 +338,7 @@ static CURLcode smtp_perform_ehlo(struct Curl_easy *data)
  result = Curl_pp_sendf(data, &smtpc->pp, "EHLO %s", smtpc->domain);

  if(!result)
-
    state(data, SMTP_EHLO);
+
    smtp_state(data, SMTP_EHLO);

  return result;
}
@@ -362,7 +362,7 @@ static CURLcode smtp_perform_helo(struct Curl_easy *data,
  result = Curl_pp_sendf(data, &smtpc->pp, "HELO %s", smtpc->domain);

  if(!result)
-
    state(data, SMTP_HELO);
+
    smtp_state(data, SMTP_HELO);

  return result;
}
@@ -381,7 +381,7 @@ static CURLcode smtp_perform_starttls(struct Curl_easy *data,
                                  "%s", "STARTTLS");

  if(!result)
-
    state(data, SMTP_STARTTLS);
+
    smtp_state(data, SMTP_STARTTLS);

  return result;
}
@@ -410,7 +410,7 @@ static CURLcode smtp_perform_upgrade_tls(struct Curl_easy *data)
  if(!result) {
    smtpc->ssldone = ssldone;
    if(smtpc->state != SMTP_UPGRADETLS)
-
      state(data, SMTP_UPGRADETLS);
+
      smtp_state(data, SMTP_UPGRADETLS);

    if(smtpc->ssldone) {
      smtp_to_smtps(conn);
@@ -499,7 +499,7 @@ static CURLcode smtp_perform_authentication(struct Curl_easy *data)
     server supports authentication, and end the connect phase if not */
  if(!smtpc->auth_supported ||
     !Curl_sasl_can_authenticate(&smtpc->sasl, data)) {
-
    state(data, SMTP_STOP);
+
    smtp_state(data, SMTP_STOP);
    return result;
  }

@@ -508,7 +508,7 @@ static CURLcode smtp_perform_authentication(struct Curl_easy *data)

  if(!result) {
    if(progress == SASL_INPROGRESS)
-
      state(data, SMTP_AUTH);
+
      smtp_state(data, SMTP_AUTH);
    else {
      /* Other mechanisms not supported */
      infof(data, "No known authentication mechanisms supported");
@@ -586,7 +586,7 @@ static CURLcode smtp_perform_command(struct Curl_easy *data)
                           smtp->custom : "HELP");

  if(!result)
-
    state(data, SMTP_COMMAND);
+
    smtp_state(data, SMTP_COMMAND);

  return result;
}
@@ -771,7 +771,7 @@ static CURLcode smtp_perform_mail(struct Curl_easy *data)
  free(size);

  if(!result)
-
    state(data, SMTP_MAIL);
+
    smtp_state(data, SMTP_MAIL);

  return result;
}
@@ -812,7 +812,7 @@ static CURLcode smtp_perform_rcpt_to(struct Curl_easy *data)
  free(address);

  if(!result)
-
    state(data, SMTP_RCPT);
+
    smtp_state(data, SMTP_RCPT);

  return result;
}
@@ -830,7 +830,7 @@ static CURLcode smtp_perform_quit(struct Curl_easy *data,
  CURLcode result = Curl_pp_sendf(data, &conn->proto.smtpc.pp, "%s", "QUIT");

  if(!result)
-
    state(data, SMTP_QUIT);
+
    smtp_state(data, SMTP_QUIT);

  return result;
}
@@ -996,7 +996,7 @@ static CURLcode smtp_state_helo_resp(struct Curl_easy *data, int smtpcode,
  }
  else
    /* End of connect phase */
-
    state(data, SMTP_STOP);
+
    smtp_state(data, SMTP_STOP);

  return result;
}
@@ -1017,7 +1017,7 @@ static CURLcode smtp_state_auth_resp(struct Curl_easy *data,
  if(!result)
    switch(progress) {
    case SASL_DONE:
-
      state(data, SMTP_STOP);  /* Authenticated */
+
      smtp_state(data, SMTP_STOP);  /* Authenticated */
      break;
    case SASL_IDLE:            /* No mechanism left after cancellation */
      failf(data, "Authentication cancelled");
@@ -1064,11 +1064,11 @@ static CURLcode smtp_state_command_resp(struct Curl_easy *data, int smtpcode,
        }
        else
          /* End of DO phase */
-
          state(data, SMTP_STOP);
+
          smtp_state(data, SMTP_STOP);
      }
      else
        /* End of DO phase */
-
        state(data, SMTP_STOP);
+
        smtp_state(data, SMTP_STOP);
    }
  }

@@ -1145,7 +1145,7 @@ static CURLcode smtp_state_rcpt_resp(struct Curl_easy *data,
        result = Curl_pp_sendf(data, &conn->proto.smtpc.pp, "%s", "DATA");

        if(!result)
-
          state(data, SMTP_DATA);
+
          smtp_state(data, SMTP_DATA);
      }
    }
  }
@@ -1172,7 +1172,7 @@ static CURLcode smtp_state_data_resp(struct Curl_easy *data, int smtpcode,
    Curl_setup_transfer(data, -1, -1, FALSE, FIRSTSOCKET);

    /* End of DO phase */
-
    state(data, SMTP_STOP);
+
    smtp_state(data, SMTP_STOP);
  }

  return result;
@@ -1192,7 +1192,7 @@ static CURLcode smtp_state_postdata_resp(struct Curl_easy *data,
    result = CURLE_WEIRD_SERVER_REPLY;

  /* End of DONE phase */
-
  state(data, SMTP_STOP);
+
  smtp_state(data, SMTP_STOP);

  return result;
}
@@ -1274,7 +1274,7 @@ static CURLcode smtp_statemachine(struct Curl_easy *data,
      /* fallthrough, just stop! */
    default:
      /* internal error */
-
      state(data, SMTP_STOP);
+
      smtp_state(data, SMTP_STOP);
      break;
    }
  } while(!result && smtpc->state != SMTP_STOP && Curl_pp_moredata(pp));
@@ -1379,7 +1379,7 @@ static CURLcode smtp_connect(struct Curl_easy *data, bool *done)
    return result;

  /* Start off waiting for the server greeting response */
-
  state(data, SMTP_SERVERGREET);
+
  smtp_state(data, SMTP_SERVERGREET);

  result = smtp_multi_statemach(data, done);

@@ -1461,7 +1461,7 @@ static CURLcode smtp_done(struct Curl_easy *data, CURLcode status,
      free(eob);
    }

-
    state(data, SMTP_POSTDATA);
+
    smtp_state(data, SMTP_POSTDATA);

    /* Run the state-machine */
    result = smtp_block_statemach(data, conn, FALSE);
modified external/curl/lib/socks.c
@@ -161,7 +161,7 @@ static void socksstate(struct socks_state *sx, struct Curl_easy *data,
  enum connect_t oldstate = sx->state;
#ifdef DEBUG_AND_VERBOSE
  /* synced with the state list in urldata.h */
-
  static const char * const statename[] = {
+
  static const char * const socks_statename[] = {
    "INIT",
    "SOCKS_INIT",
    "SOCKS_SEND",
@@ -193,7 +193,7 @@ static void socksstate(struct socks_state *sx, struct Curl_easy *data,
#ifdef DEBUG_AND_VERBOSE
  infof(data,
        "SXSTATE: %s => %s; line %d",
-
        statename[oldstate], statename[sx->state],
+
        socks_statename[oldstate], socks_statename[sx->state],
        lineno);
#endif
}
@@ -567,7 +567,6 @@ static CURLproxycode do_SOCKS5(struct Curl_cfilter *cf,
  */
  struct connectdata *conn = cf->conn;
  unsigned char *socksreq = (unsigned char *)data->state.buffer;
-
  char dest[256] = "unknown";  /* printable hostname:port */
  int idx;
  CURLcode result;
  CURLproxycode presult;
@@ -820,8 +819,8 @@ CONNECT_REQ_INIT:
    /* FALLTHROUGH */
CONNECT_RESOLVED:
  case CONNECT_RESOLVED: {
+
    char dest[MAX_IPADR_LEN] = "unknown";  /* printable address */
    struct Curl_addrinfo *hp = NULL;
-
    size_t destlen;
    if(dns)
      hp = dns->addr;
    if(!hp) {
@@ -831,8 +830,6 @@ CONNECT_RESOLVED:
    }

    Curl_printable_address(hp, dest, sizeof(dest));
-
    destlen = strlen(dest);
-
    msnprintf(dest + destlen, sizeof(dest) - destlen, ":%d", sx->remote_port);

    len = 0;
    socksreq[len++] = 5; /* version (SOCKS5) */
@@ -848,7 +845,8 @@ CONNECT_RESOLVED:
        socksreq[len++] = ((unsigned char *)&saddr_in->sin_addr.s_addr)[i];
      }

-
      infof(data, "SOCKS5 connect to IPv4 %s (locally resolved)", dest);
+
      infof(data, "SOCKS5 connect to %s:%d (locally resolved)", dest,
+
            sx->remote_port);
    }
#ifdef ENABLE_IPV6
    else if(hp->ai_family == AF_INET6) {
@@ -862,7 +860,8 @@ CONNECT_RESOLVED:
          ((unsigned char *)&saddr_in6->sin6_addr.s6_addr)[i];
      }

-
      infof(data, "SOCKS5 connect to IPv6 %s (locally resolved)", dest);
+
      infof(data, "SOCKS5 connect to [%s]:%d (locally resolved)", dest,
+
            sx->remote_port);
    }
#endif
    else {
@@ -1115,7 +1114,7 @@ static CURLcode socks_proxy_cf_connect(struct Curl_cfilter *cf,
    return CURLE_OK;
  }

-
  result = cf->next->cft->connect(cf->next, data, blocking, done);
+
  result = cf->next->cft->do_connect(cf->next, data, blocking, done);
  if(result || !*done)
    return result;

@@ -1193,7 +1192,7 @@ static void socks_proxy_cf_close(struct Curl_cfilter *cf,
  DEBUGASSERT(cf->next);
  cf->connected = FALSE;
  socks_proxy_cf_free(cf);
-
  cf->next->cft->close(cf->next, data);
+
  cf->next->cft->do_close(cf->next, data);
}

static void socks_proxy_cf_destroy(struct Curl_cfilter *cf,
modified external/curl/lib/telnet.c
@@ -1534,7 +1534,7 @@ static CURLcode telnet_do(struct Curl_easy *data, bool *done)
  }

  while(keepon) {
-
    DEBUGF(infof(data, "telnet_do(handle=%p), poll %d fds", data, poll_cnt));
+
    DEBUGF(infof(data, "telnet_do, poll %d fds", poll_cnt));
    switch(Curl_poll(pfd, poll_cnt, interval_ms)) {
    case -1:                    /* error, stop reading */
      keepon = FALSE;
@@ -1558,8 +1558,7 @@ static CURLcode telnet_do(struct Curl_easy *data, bool *done)
           * in a clean way? Seems to be timing related, happens more
           * on slow debug build */
          if(data->state.os_errno == ECONNRESET) {
-
            DEBUGF(infof(data, "telnet_do(handle=%p), unexpected ECONNRESET"
-
                         " on recv", data));
+
            DEBUGF(infof(data, "telnet_do, unexpected ECONNRESET on recv"));
          }
          break;
        }
modified external/curl/lib/timeval.c
@@ -58,7 +58,8 @@ struct curltime Curl_now(void)
  return now;
}

-
#elif defined(HAVE_CLOCK_GETTIME_MONOTONIC)
+
#elif defined(HAVE_CLOCK_GETTIME_MONOTONIC) ||  \
+
  defined(HAVE_CLOCK_GETTIME_MONOTONIC_RAW)

struct curltime Curl_now(void)
{
@@ -87,6 +88,19 @@ struct curltime Curl_now(void)
    have_clock_gettime = TRUE;
#endif

+
#ifdef HAVE_CLOCK_GETTIME_MONOTONIC_RAW
+
  if(
+
#if defined(__APPLE__) && defined(HAVE_BUILTIN_AVAILABLE) &&    \
+
        (HAVE_BUILTIN_AVAILABLE == 1)
+
    have_clock_gettime &&
+
#endif
+
    (0 == clock_gettime(CLOCK_MONOTONIC_RAW, &tsnow))) {
+
    cnow.tv_sec = tsnow.tv_sec;
+
    cnow.tv_usec = (unsigned int)(tsnow.tv_nsec / 1000);
+
  }
+
  else
+
#endif
+

  if(
#if defined(__APPLE__) && defined(HAVE_BUILTIN_AVAILABLE) && \
        (HAVE_BUILTIN_AVAILABLE == 1)
modified external/curl/lib/transfer.c
@@ -428,6 +428,8 @@ static CURLcode readwrite_data(struct Curl_easy *data,
  size_t excess = 0; /* excess bytes read */
  bool readmore = FALSE; /* used by RTP to signal for more data */
  int maxloops = 100;
+
  curl_off_t max_recv = data->set.max_recv_speed?
+
                        data->set.max_recv_speed : CURL_OFF_T_MAX;
  char *buf = data->state.buffer;
  DEBUGASSERT(buf);

@@ -472,7 +474,7 @@ static CURLcode readwrite_data(struct Curl_easy *data,
    else {
      /* read nothing but since we wanted nothing we consider this an OK
         situation to proceed from */
-
      DEBUGF(infof(data, DMSG(data, "readwrite_data: we're done")));
+
      DEBUGF(infof(data, "readwrite_data: we're done"));
      nread = 0;
    }

@@ -666,6 +668,7 @@ static CURLcode readwrite_data(struct Curl_easy *data,
      }

      k->bytecount += nread;
+
      max_recv -= nread;

      Curl_pgrsSetDownloadCounter(data, k->bytecount);

@@ -749,9 +752,9 @@ static CURLcode readwrite_data(struct Curl_easy *data,
      break;
    }

-
  } while(data_pending(data) && maxloops--);
+
  } while((max_recv > 0) && data_pending(data) && maxloops--);

-
  if(maxloops <= 0) {
+
  if(maxloops <= 0 || max_recv <= 0) {
    /* we mark it as read-again-please */
    data->state.dselect_bits = CURL_CSELECT_IN;
    *comeback = TRUE;
@@ -768,7 +771,7 @@ static CURLcode readwrite_data(struct Curl_easy *data,

out:
  if(result)
-
    DEBUGF(infof(data, DMSG(data, "readwrite_data() -> %d"), result));
+
    DEBUGF(infof(data, "readwrite_data() -> %d", result));
  return result;
}

@@ -1233,7 +1236,7 @@ CURLcode Curl_readwrite(struct connectdata *conn,
  *done = (0 == (k->keepon&(KEEP_RECVBITS|KEEP_SENDBITS))) ? TRUE : FALSE;
out:
  if(result)
-
    DEBUGF(infof(data, DMSG(data, "Curl_readwrite() -> %d"), result));
+
    DEBUGF(infof(data, "Curl_readwrite() -> %d", result));
  return result;
}

@@ -1551,10 +1554,11 @@ CURLcode Curl_follow(struct Curl_easy *data,

  if((type != FOLLOW_RETRY) &&
     (data->req.httpcode != 401) && (data->req.httpcode != 407) &&
-
     Curl_is_absolute_url(newurl, NULL, 0, FALSE))
+
     Curl_is_absolute_url(newurl, NULL, 0, FALSE)) {
    /* If this is not redirect due to a 401 or 407 response and an absolute
       URL: don't allow a custom port number */
    disallowport = TRUE;
+
  }

  DEBUGASSERT(data->state.uh);
  uc = curl_url_set(data->state.uh, CURLUPART_URL, newurl,
modified external/curl/lib/url.c
@@ -659,6 +659,9 @@ CURLcode Curl_open(struct Curl_easy **curl)

    /* most recent connection is not yet defined */
    data->state.lastconnect_id = -1;
+
    data->state.recent_conn_id = -1;
+
    /* and not assigned an id yet */
+
    data->id = -1;

    data->progress.flags |= PGRS_HIDE;
    data->state.current_speed = -1; /* init to negative == impossible */
@@ -680,7 +683,7 @@ CURLcode Curl_open(struct Curl_easy **curl)
static void conn_shutdown(struct Curl_easy *data)
{
  DEBUGASSERT(data);
-
  infof(data, "Closing connection %ld", data->conn->connection_id);
+
  infof(data, "Closing connection");

  /* possible left-overs from the async name resolvers */
  Curl_resolver_cancel(data);
@@ -763,7 +766,8 @@ void Curl_disconnect(struct Curl_easy *data,
  /* the transfer must be detached from the connection */
  DEBUGASSERT(!data->conn);

-
  DEBUGF(infof(data, "Curl_disconnect(conn #%ld, dead=%d)",
+
  DEBUGF(infof(data, "Curl_disconnect(conn #%"
+
         CURL_FORMAT_CURL_OFF_T ", dead=%d)",
         conn->connection_id, dead_connection));
  /*
   * If this connection isn't marked to force-close, leave it open if there
@@ -937,6 +941,7 @@ static bool extract_if_dead(struct connectdata *conn,
    else {
      bool input_pending;

+
      Curl_attach_connection(data, conn);
      dead = !Curl_conn_is_alive(data, conn, &input_pending);
      if(input_pending) {
        /* For reuse, we want a "clean" connection state. The includes
@@ -949,10 +954,12 @@ static bool extract_if_dead(struct connectdata *conn,
         */
        dead = TRUE;
      }
+
      Curl_detach_connection(data);
    }

    if(dead) {
-
      infof(data, "Connection %ld seems to be dead", conn->connection_id);
+
      infof(data, "Connection %" CURL_FORMAT_CURL_OFF_T " seems to be dead",
+
            conn->connection_id);
      Curl_conncache_remove_conn(data, conn, FALSE);
      return TRUE;
    }
@@ -1147,8 +1154,8 @@ ConnectionExists(struct Curl_easy *data,
          /* primary_ip[0] is NUL only if the resolving of the name hasn't
             completed yet and until then we don't re-use this connection */
          if(!check->primary_ip[0]) {
-
            infof(data,
-
                  "Connection #%ld is still name resolving, can't reuse",
+
            infof(data, "Connection #%" CURL_FORMAT_CURL_OFF_T " is still "
+
                        "name resolving, can't reuse",
                  check->connection_id);
            continue;
          }
@@ -1158,8 +1165,8 @@ ConnectionExists(struct Curl_easy *data,
      if(!Curl_conn_is_connected(check, FIRSTSOCKET)) {
        foundPendingCandidate = TRUE;
        /* Don't pick a connection that hasn't connected yet */
-
        infof(data, "Connection #%ld isn't open enough, can't reuse",
-
              check->connection_id);
+
        infof(data, "Connection #%" CURL_FORMAT_CURL_OFF_T
+
              "isn't open enough, can't reuse", check->connection_id);
        continue;
      }

@@ -1335,8 +1342,8 @@ ConnectionExists(struct Curl_easy *data,
            if(!Curl_ssl_config_matches(&needle->ssl_config,
                                        &check->ssl_config)) {
              DEBUGF(infof(data,
-
                           "Connection #%ld has different SSL parameters, "
-
                           "can't reuse",
+
                           "Connection #%" CURL_FORMAT_CURL_OFF_T
+
                           " has different SSL parameters, can't reuse",
                           check->connection_id));
              continue;
            }
@@ -1477,14 +1484,14 @@ void Curl_verboseconnect(struct Curl_easy *data,
                         struct connectdata *conn)
{
  if(data->set.verbose)
-
    infof(data, "Connected to %s (%s) port %u (#%ld)",
+
    infof(data, "Connected to %s (%s) port %u",
#ifndef CURL_DISABLE_PROXY
          conn->bits.socksproxy ? conn->socks_proxy.host.dispname :
          conn->bits.httpproxy ? conn->http_proxy.host.dispname :
#endif
          conn->bits.conn_to_host ? conn->conn_to_host.dispname :
          conn->host.dispname,
-
          conn->primary_ip, conn->port, conn->connection_id);
+
          conn->primary_ip, conn->port);
}
#endif

@@ -1857,7 +1864,7 @@ static CURLcode parseurlandfillconn(struct Curl_easy *data,
   * User name and password set with their own options override the
   * credentials possibly set in the URL.
   */
-
  if(!data->state.aptr.passwd) {
+
  if(!data->set.str[STRING_PASSWORD]) {
    uc = curl_url_get(uh, CURLUPART_PASSWORD, &data->state.up.password, 0);
    if(!uc) {
      char *decoded;
@@ -3678,15 +3685,14 @@ static CURLcode create_conn(struct Curl_easy *data,
    *in_connect = conn;

#ifndef CURL_DISABLE_PROXY
-
    infof(data, "Re-using existing connection #%ld with %s %s",
-
          conn->connection_id,
+
    infof(data, "Re-using existing connection with %s %s",
          conn->bits.proxy?"proxy":"host",
          conn->socks_proxy.host.name ? conn->socks_proxy.host.dispname :
          conn->http_proxy.host.name ? conn->http_proxy.host.dispname :
          conn->host.dispname);
#else
-
    infof(data, "Re-using existing connection #%ld with host %s",
-
          conn->connection_id, conn->host.dispname);
+
    infof(data, "Re-using existing connection with host %s",
+
          conn->host.dispname);
#endif
  }
  else {
modified external/curl/lib/urlapi.c
@@ -201,7 +201,7 @@ static CURLUcode urlencode_str(struct dynbuf *o, const char *url,
size_t Curl_is_absolute_url(const char *url, char *buf, size_t buflen,
                            bool guess_scheme)
{
-
  int i;
+
  int i = 0;
  DEBUGASSERT(!buf || (buflen > MAX_SCHEME_LEN));
  (void)buflen; /* only used in debug-builds */
  if(buf)
@@ -210,17 +210,18 @@ size_t Curl_is_absolute_url(const char *url, char *buf, size_t buflen,
  if(guess_scheme && STARTS_WITH_DRIVE_PREFIX(url))
    return 0;
#endif
-
  for(i = 0; i < MAX_SCHEME_LEN; ++i) {
-
    char s = url[i];
-
    if(s && (ISALNUM(s) || (s == '+') || (s == '-') || (s == '.') )) {
-
      /* RFC 3986 3.1 explains:
-
        scheme      = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )
-
      */
-
    }
-
    else {
-
      break;
+
  if(ISALPHA(url[0]))
+
    for(i = 1; i < MAX_SCHEME_LEN; ++i) {
+
      char s = url[i];
+
      if(s && (ISALNUM(s) || (s == '+') || (s == '-') || (s == '.') )) {
+
        /* RFC 3986 3.1 explains:
+
           scheme      = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )
+
        */
+
      }
+
      else {
+
        break;
+
      }
    }
-
  }
  if(i && (url[i] == ':') && ((url[i + 1] == '/') || !guess_scheme)) {
    /* If this does not guess scheme, the scheme always ends with the colon so
       that this also detects data: URLs etc. In guessing mode, data: could
@@ -1546,7 +1547,7 @@ CURLUcode curl_url_get(const CURLU *u, CURLUPart what,
        }
      }

-
      url = aprintf("%s://%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",
+
      url = aprintf("%s://%s%s%s%s%s%s%s%s%s%s%s%s%s%s",
                    scheme,
                    u->user ? u->user : "",
                    u->password ? ":": "",
@@ -1557,7 +1558,6 @@ CURLUcode curl_url_get(const CURLU *u, CURLUPart what,
                    allochost ? allochost : u->host,
                    port ? ":": "",
                    port ? port : "",
-
                    (u->path && (u->path[0] != '/')) ? "/": "",
                    u->path ? u->path : "/",
                    (u->query && u->query[0]) ? "?": "",
                    (u->query && u->query[0]) ? u->query : "",
@@ -1639,8 +1639,10 @@ CURLUcode curl_url_set(CURLU *u, CURLUPart what,
  bool urlencode = (flags & CURLU_URLENCODE)? 1 : 0;
  bool plusencode = FALSE;
  bool urlskipslash = FALSE;
+
  bool leadingslash = FALSE;
  bool appendquery = FALSE;
  bool equalsencode = FALSE;
+
  size_t nalloc;

  if(!u)
    return CURLUE_BAD_HANDLE;
@@ -1693,6 +1695,11 @@ CURLUcode curl_url_set(CURLU *u, CURLUPart what,
    return CURLUE_OK;
  }

+
  nalloc = strlen(part);
+
  if(nalloc > CURL_MAX_INPUT_LENGTH)
+
    /* excessive input length */
+
    return CURLUE_MALFORMED_INPUT;
+

  switch(what) {
  case CURLUPART_SCHEME: {
    size_t plen = strlen(part);
@@ -1706,13 +1713,17 @@ CURLUcode curl_url_set(CURLU *u, CURLUPart what,
      return CURLUE_UNSUPPORTED_SCHEME;
    storep = &u->scheme;
    urlencode = FALSE; /* never */
-
    /* ALPHA *( ALPHA / DIGIT / "+" / "-" / "." ) */
-
    while(plen--) {
-
      if(ISALNUM(*s) || (*s == '+') || (*s == '-') || (*s == '.'))
-
        s++; /* fine */
-
      else
-
        return CURLUE_BAD_SCHEME;
+
    if(ISALPHA(*s)) {
+
      /* ALPHA *( ALPHA / DIGIT / "+" / "-" / "." ) */
+
      while(--plen) {
+
        if(ISALNUM(*s) || (*s == '+') || (*s == '-') || (*s == '.'))
+
          s++; /* fine */
+
        else
+
          return CURLUE_BAD_SCHEME;
+
      }
    }
+
    else
+
      return CURLUE_BAD_SCHEME;
    break;
  }
  case CURLUPART_USER:
@@ -1746,6 +1757,7 @@ CURLUcode curl_url_set(CURLU *u, CURLUPart what,
  break;
  case CURLUPART_PATH:
    urlskipslash = TRUE;
+
    leadingslash = TRUE; /* enforce */
    storep = &u->path;
    break;
  case CURLUPART_QUERY:
@@ -1794,18 +1806,17 @@ CURLUcode curl_url_set(CURLU *u, CURLUPart what,
  }
  DEBUGASSERT(storep);
  {
-
    const char *newp = part;
-
    size_t nalloc = strlen(part);
-

-
    if(nalloc > CURL_MAX_INPUT_LENGTH)
-
      /* excessive input length */
-
      return CURLUE_MALFORMED_INPUT;
+
    const char *newp;
+
    struct dynbuf enc;
+
    Curl_dyn_init(&enc, nalloc * 3 + 1 + leadingslash);

+
    if(leadingslash && (part[0] != '/')) {
+
      CURLcode result = Curl_dyn_addn(&enc, "/", 1);
+
      if(result)
+
        return CURLUE_OUT_OF_MEMORY;
+
    }
    if(urlencode) {
      const unsigned char *i;
-
      struct dynbuf enc;
-

-
      Curl_dyn_init(&enc, nalloc * 3 + 1);

      for(i = (const unsigned char *)part; *i; i++) {
        CURLcode result;
@@ -1833,14 +1844,13 @@ CURLUcode curl_url_set(CURLU *u, CURLUPart what,
            return CURLUE_OUT_OF_MEMORY;
        }
      }
-
      newp = Curl_dyn_ptr(&enc);
    }
    else {
      char *p;
-
      newp = strdup(part);
-
      if(!newp)
+
      CURLcode result = Curl_dyn_add(&enc, part);
+
      if(result)
        return CURLUE_OUT_OF_MEMORY;
-
      p = (char *)newp;
+
      p = Curl_dyn_ptr(&enc);
      while(*p) {
        /* make sure percent encoded are lower case */
        if((*p == '%') && ISXDIGIT(p[1]) && ISXDIGIT(p[2]) &&
@@ -1853,6 +1863,7 @@ CURLUcode curl_url_set(CURLU *u, CURLUPart what,
          p++;
      }
    }
+
    newp = Curl_dyn_ptr(&enc);

    if(appendquery) {
      /* Append the 'newp' string onto the old query. Add a '&' separator if
@@ -1861,24 +1872,24 @@ CURLUcode curl_url_set(CURLU *u, CURLUPart what,
      size_t querylen = u->query ? strlen(u->query) : 0;
      bool addamperand = querylen && (u->query[querylen -1] != '&');
      if(querylen) {
-
        struct dynbuf enc;
-
        Curl_dyn_init(&enc, CURL_MAX_INPUT_LENGTH);
+
        struct dynbuf qbuf;
+
        Curl_dyn_init(&qbuf, CURL_MAX_INPUT_LENGTH);

-
        if(Curl_dyn_addn(&enc, u->query, querylen)) /* add original query */
+
        if(Curl_dyn_addn(&qbuf, u->query, querylen)) /* add original query */
          goto nomem;

        if(addamperand) {
-
          if(Curl_dyn_addn(&enc, "&", 1))
+
          if(Curl_dyn_addn(&qbuf, "&", 1))
            goto nomem;
        }
-
        if(Curl_dyn_add(&enc, newp))
+
        if(Curl_dyn_add(&qbuf, newp))
          goto nomem;
-
        free((char *)newp);
+
        Curl_dyn_free(&enc);
        free(*storep);
-
        *storep = Curl_dyn_ptr(&enc);
+
        *storep = Curl_dyn_ptr(&qbuf);
        return CURLUE_OK;
nomem:
-
        free((char *)newp);
+
        Curl_dyn_free(&enc);
        return CURLUE_OUT_OF_MEMORY;
      }
    }
@@ -1890,7 +1901,7 @@ nomem:
      }
      else {
        if(!n || hostname_check(u, (char *)newp, n)) {
-
          free((char *)newp);
+
          Curl_dyn_free(&enc);
          return CURLUE_BAD_HOSTNAME;
        }
      }
modified external/curl/lib/urldata.h
@@ -882,8 +882,8 @@ struct connectdata {
#define CONN_INUSE(c) ((c)->easyq.size)

  /**** Fields set when inited and not modified again */
-
  long connection_id; /* Contains a unique number to make it easier to
-
                         track the connections in the log output */
+
  curl_off_t connection_id; /* Contains a unique number to make it easier to
+
                               track the connections in the log output */

  /* 'dns_entry' is the particular host we use. This points to an entry in the
     DNS cache and it will not get pruned while locked. It gets unlocked in
@@ -1294,7 +1294,9 @@ struct UrlState {
  /* buffers to store authentication data in, as parsed from input options */
  struct curltime keeps_speed; /* for the progress meter really */

-
  long lastconnect_id; /* The last connection, -1 if undefined */
+
  curl_off_t lastconnect_id; /* The last connection, -1 if undefined */
+
  curl_off_t recent_conn_id; /* The most recent connection used, might no
+
                              * longer exist */
  struct dynbuf headerb; /* buffer to store headers in */

  char *buffer; /* download buffer */
@@ -1563,6 +1565,7 @@ enum dupstring {
  STRING_DNS_LOCAL_IP6,
  STRING_SSL_EC_CURVES,
  STRING_AWS_SIGV4, /* Parameters for V4 signature */
+
  STRING_HAPROXY_CLIENT_IP,     /* CURLOPT_HAPROXY_CLIENT_IP */

  /* -- end of null-terminated strings -- */

@@ -1902,6 +1905,13 @@ struct Curl_easy {
  /* First a simple identifier to easier detect if a user mix up this easy
     handle with a multi handle. Set this to CURLEASY_MAGIC_NUMBER */
  unsigned int magic;
+
  /* once an easy handle is tied to a connection cache
+
     a non-negative number to distinguish this transfer from
+
     other using the same cache. For easier tracking
+
     in log output.
+
     This may wrap around after LONG_MAX to 0 again, so it
+
     has no uniqueness guarantuee for very large processings. */
+
  curl_off_t id;

  /* first, two fields for the linked list of these */
  struct Curl_easy *next;
modified external/curl/lib/version.c
@@ -300,7 +300,7 @@ char *curl_version(void)
   protocol line has its own #if line to make things easier on the eye.
 */

-
static const char * const protocols[] = {
+
static const char * const supported_protocols[] = {
#ifndef CURL_DISABLE_DICT
  "dict",
#endif
@@ -535,7 +535,7 @@ static curl_version_info_data version_info = {
  NULL, /* ssl_version */
  0,    /* ssl_version_num, this is kept at zero */
  NULL, /* zlib_version */
-
  protocols,
+
  supported_protocols,
  NULL, /* c-ares version */
  0,    /* c-ares version numerical */
  NULL, /* libidn version */
modified external/curl/lib/vquic/curl_msh3.c
@@ -123,6 +123,7 @@ struct cf_msh3_ctx {
};

/* How to access `call_data` from a cf_msh3 filter */
+
#undef CF_CTX_CALL_DATA
#define CF_CTX_CALL_DATA(cf)  \
  ((struct cf_msh3_ctx *)(cf)->ctx)->call_data

@@ -172,7 +173,7 @@ static CURLcode h3_data_setup(struct Curl_cfilter *cf,
  msh3_lock_initialize(&stream->recv_lock);
  Curl_bufq_init2(&stream->recvbuf, H3_STREAM_CHUNK_SIZE,
                  H3_STREAM_RECV_CHUNKS, BUFQ_OPT_SOFT_LIMIT);
-
  DEBUGF(LOG_CF(data, cf, "data setup (easy %p)", (void *)data));
+
  DEBUGF(LOG_CF(data, cf, "data setup"));
  return CURLE_OK;
}

@@ -645,7 +646,7 @@ static ssize_t cf_msh3_send(struct Curl_cfilter *cf, struct Curl_easy *data,
  }
  else {
    /* request is open */
-
    DEBUGF(LOG_CF(data, cf, "req: send %zd body bytes", len));
+
    DEBUGF(LOG_CF(data, cf, "req: send %zu body bytes", len));
    if(len > 0xFFFFFFFF) {
      len = 0xFFFFFFFF;
    }
modified external/curl/lib/vquic/curl_ngtcp2.c
@@ -33,7 +33,7 @@
#ifdef OPENSSL_IS_BORINGSSL
#include <ngtcp2/ngtcp2_crypto_boringssl.h>
#else
-
#include <ngtcp2/ngtcp2_crypto_openssl.h>
+
#include <ngtcp2/ngtcp2_crypto_quictls.h>
#endif
#include "vtls/openssl.h"
#elif defined(USE_GNUTLS)
@@ -165,17 +165,19 @@ struct cf_ngtcp2_ctx {
};

/* How to access `call_data` from a cf_ngtcp2 filter */
+
#undef CF_CTX_CALL_DATA
#define CF_CTX_CALL_DATA(cf)  \
  ((struct cf_ngtcp2_ctx *)(cf)->ctx)->call_data

/**
 * All about the H3 internals of a stream
 */
-
struct stream_ctx {
+
struct h3_stream_ctx {
  int64_t id; /* HTTP/3 protocol identifier */
  struct bufq sendbuf;   /* h3 request body */
  struct bufq recvbuf;   /* h3 response body */
  size_t sendbuf_len_in_flight; /* sendbuf amount "in flight" */
+
  size_t upload_blocked_len; /* the amount written last and EGAINed */
  size_t recv_buf_nonflow; /* buffered bytes, not counting for flow control */
  uint64_t error3; /* HTTP/3 stream error code */
  curl_off_t upload_left; /* number of request bytes left to upload */
@@ -186,18 +188,18 @@ struct stream_ctx {
  bool send_closed; /* stream is local closed */
};

-
#define H3_STREAM_CTX(d)    ((struct stream_ctx *)(((d) && (d)->req.p.http)? \
-
                             ((struct HTTP *)(d)->req.p.http)->h3_ctx \
-
                               : NULL))
-
#define H3_STREAM_LCTX(d)   ((struct HTTP *)(d)->req.p.http)->h3_ctx
-
#define H3_STREAM_ID(d)     (H3_STREAM_CTX(d)? \
-
                             H3_STREAM_CTX(d)->id : -2)
+
#define H3_STREAM_CTX(d)  ((struct h3_stream_ctx *)(((d) && (d)->req.p.http)? \
+
                           ((struct HTTP *)(d)->req.p.http)->h3_ctx \
+
                             : NULL))
+
#define H3_STREAM_LCTX(d) ((struct HTTP *)(d)->req.p.http)->h3_ctx
+
#define H3_STREAM_ID(d)   (H3_STREAM_CTX(d)? \
+
                           H3_STREAM_CTX(d)->id : -2)

static CURLcode h3_data_setup(struct Curl_cfilter *cf,
                              struct Curl_easy *data)
{
  struct cf_ngtcp2_ctx *ctx = cf->ctx;
-
  struct stream_ctx *stream = H3_STREAM_CTX(data);
+
  struct h3_stream_ctx *stream = H3_STREAM_CTX(data);

  if(!data || !data->req.p.http) {
    failf(data, "initialization failure, transfer not http initialized");
@@ -223,13 +225,13 @@ static CURLcode h3_data_setup(struct Curl_cfilter *cf,
  stream->recv_buf_nonflow = 0;

  H3_STREAM_LCTX(data) = stream;
-
  DEBUGF(LOG_CF(data, cf, "data setup (easy %p)", (void *)data));
+
  DEBUGF(LOG_CF(data, cf, "data setup"));
  return CURLE_OK;
}

static void h3_data_done(struct Curl_cfilter *cf, struct Curl_easy *data)
{
-
  struct stream_ctx *stream = H3_STREAM_CTX(data);
+
  struct h3_stream_ctx *stream = H3_STREAM_CTX(data);

  (void)cf;
  if(stream) {
@@ -246,10 +248,37 @@ static void h3_data_done(struct Curl_cfilter *cf, struct Curl_easy *data)
   the maximum packet burst to MAX_PKT_BURST packets. */
#define MAX_PKT_BURST 10

-
static CURLcode cf_process_ingress(struct Curl_cfilter *cf,
-
                                   struct Curl_easy *data);
-
static CURLcode cf_flush_egress(struct Curl_cfilter *cf,
-
                                struct Curl_easy *data);
+
struct pkt_io_ctx {
+
  struct Curl_cfilter *cf;
+
  struct Curl_easy *data;
+
  ngtcp2_tstamp ts;
+
  size_t pkt_count;
+
  ngtcp2_path_storage ps;
+
};
+

+
static ngtcp2_tstamp timestamp(void)
+
{
+
  struct curltime ct = Curl_now();
+
  return ct.tv_sec * NGTCP2_SECONDS + ct.tv_usec * NGTCP2_MICROSECONDS;
+
}
+

+
static void pktx_init(struct pkt_io_ctx *pktx,
+
                      struct Curl_cfilter *cf,
+
                      struct Curl_easy *data)
+
{
+
  pktx->cf = cf;
+
  pktx->data = data;
+
  pktx->ts = timestamp();
+
  pktx->pkt_count = 0;
+
  ngtcp2_path_storage_zero(&pktx->ps);
+
}
+

+
static CURLcode cf_progress_ingress(struct Curl_cfilter *cf,
+
                                    struct Curl_easy *data,
+
                                    struct pkt_io_ctx *pktx);
+
static CURLcode cf_progress_egress(struct Curl_cfilter *cf,
+
                                   struct Curl_easy *data,
+
                                   struct pkt_io_ctx *pktx);
static int cb_h3_acked_req_body(nghttp3_conn *conn, int64_t stream_id,
                                   uint64_t datalen, void *user_data,
                                   void *stream_user_data);
@@ -261,12 +290,6 @@ static ngtcp2_conn *get_conn(ngtcp2_crypto_conn_ref *conn_ref)
  return ctx->qconn;
}

-
static ngtcp2_tstamp timestamp(void)
-
{
-
  struct curltime ct = Curl_now();
-
  return ct.tv_sec * NGTCP2_SECONDS + ct.tv_usec * NGTCP2_MICROSECONDS;
-
}
-

#ifdef DEBUG_NGTCP2
static void quic_printf(void *user_data, const char *fmt, ...)
{
@@ -300,7 +323,8 @@ static void qlog_callback(void *user_data, uint32_t flags,
}

static void quic_settings(struct cf_ngtcp2_ctx *ctx,
-
                          struct Curl_easy *data)
+
                          struct Curl_easy *data,
+
                          struct pkt_io_ctx *pktx)
{
  ngtcp2_settings *s = &ctx->settings;
  ngtcp2_transport_params *t = &ctx->transport_params;
@@ -314,7 +338,7 @@ static void quic_settings(struct cf_ngtcp2_ctx *ctx,
#endif

  (void)data;
-
  s->initial_ts = timestamp();
+
  s->initial_ts = pktx->ts;
  s->handshake_timeout = QUIC_HANDSHAKE_TIMEOUT;
  s->max_window = 100 * ctx->max_stream_window;
  s->max_stream_window = ctx->max_stream_window;
@@ -327,7 +351,7 @@ static void quic_settings(struct cf_ngtcp2_ctx *ctx,
  t->initial_max_streams_uni = QUIC_MAX_STREAMS;
  t->max_idle_timeout = QUIC_IDLE_TIMEOUT;
  if(ctx->qlogfd != -1) {
-
    s->qlog.write = qlog_callback;
+
    s->qlog_write = qlog_callback;
  }
}

@@ -383,8 +407,8 @@ static CURLcode quic_ssl_ctx(SSL_CTX **pssl_ctx,
    goto out;
  }
#else
-
  if(ngtcp2_crypto_openssl_configure_client_context(ssl_ctx) != 0) {
-
    failf(data, "ngtcp2_crypto_openssl_configure_client_context failed");
+
  if(ngtcp2_crypto_quictls_configure_client_context(ssl_ctx) != 0) {
+
    failf(data, "ngtcp2_crypto_quictls_configure_client_context failed");
    goto out;
  }
#endif
@@ -686,7 +710,7 @@ static void report_consumed_data(struct Curl_cfilter *cf,
                                 struct Curl_easy *data,
                                 size_t consumed)
{
-
  struct stream_ctx *stream = H3_STREAM_CTX(data);
+
  struct h3_stream_ctx *stream = H3_STREAM_CTX(data);
  struct cf_ngtcp2_ctx *ctx = cf->ctx;

  if(!stream)
@@ -902,13 +926,13 @@ static int cb_get_new_connection_id(ngtcp2_conn *tconn, ngtcp2_cid *cid,
  return 0;
}

-
static int cb_recv_rx_key(ngtcp2_conn *tconn, ngtcp2_crypto_level level,
+
static int cb_recv_rx_key(ngtcp2_conn *tconn, ngtcp2_encryption_level level,
                          void *user_data)
{
  struct Curl_cfilter *cf = user_data;
  (void)tconn;

-
  if(level != NGTCP2_CRYPTO_LEVEL_APPLICATION) {
+
  if(level != NGTCP2_ENCRYPTION_LEVEL_1RTT) {
    return 0;
  }

@@ -962,6 +986,61 @@ static ngtcp2_callbacks ng_callbacks = {
  NULL, /* early_data_rejected */
};

+
/**
+
 * Connection maintenance like timeouts on packet ACKs etc. are done by us, not
+
 * the OS like for TCP. POLL events on the socket therefore are not
+
 * sufficient.
+
 * ngtcp2 tells us when it wants to be invoked again. We handle that via
+
 * the `Curl_expire()` mechanisms.
+
 */
+
static CURLcode check_and_set_expiry(struct Curl_cfilter *cf,
+
                                     struct Curl_easy *data,
+
                                     struct pkt_io_ctx *pktx)
+
{
+
  struct cf_ngtcp2_ctx *ctx = cf->ctx;
+
  struct pkt_io_ctx local_pktx;
+
  ngtcp2_tstamp expiry;
+

+
  if(!pktx) {
+
    pktx_init(&local_pktx, cf, data);
+
    pktx = &local_pktx;
+
  }
+
  else {
+
    pktx->ts = timestamp();
+
  }
+

+
  expiry = ngtcp2_conn_get_expiry(ctx->qconn);
+
  if(expiry != UINT64_MAX) {
+
    if(expiry <= pktx->ts) {
+
      CURLcode result;
+
      int rv = ngtcp2_conn_handle_expiry(ctx->qconn, pktx->ts);
+
      if(rv) {
+
        failf(data, "ngtcp2_conn_handle_expiry returned error: %s",
+
              ngtcp2_strerror(rv));
+
        ngtcp2_ccerr_set_liberr(&ctx->last_error, rv, NULL, 0);
+
        return CURLE_SEND_ERROR;
+
      }
+
      result = cf_progress_ingress(cf, data, pktx);
+
      if(result)
+
        return result;
+
      result = cf_progress_egress(cf, data, pktx);
+
      if(result)
+
        return result;
+
      /* ask again, things might have changed */
+
      expiry = ngtcp2_conn_get_expiry(ctx->qconn);
+
    }
+

+
    if(expiry > pktx->ts) {
+
      ngtcp2_duration timeout = expiry - pktx->ts;
+
      if(timeout % NGTCP2_MILLISECONDS) {
+
        timeout += NGTCP2_MILLISECONDS;
+
      }
+
      Curl_expire(data, timeout / NGTCP2_MILLISECONDS, EXPIRE_QUIC);
+
    }
+
  }
+
  return CURLE_OK;
+
}
+

static int cf_ngtcp2_get_select_socks(struct Curl_cfilter *cf,
                                      struct Curl_easy *data,
                                      curl_socket_t *socks)
@@ -969,7 +1048,7 @@ static int cf_ngtcp2_get_select_socks(struct Curl_cfilter *cf,
  struct cf_ngtcp2_ctx *ctx = cf->ctx;
  struct SingleRequest *k = &data->req;
  int rv = GETSOCK_BLANK;
-
  struct stream_ctx *stream = H3_STREAM_CTX(data);
+
  struct h3_stream_ctx *stream = H3_STREAM_CTX(data);
  struct cf_call_data save;

  CF_DATA_SAVE(save, cf, data);
@@ -991,15 +1070,15 @@ static int cf_ngtcp2_get_select_socks(struct Curl_cfilter *cf,
  return rv;
}

-
static void drain_stream(struct Curl_cfilter *cf,
-
                         struct Curl_easy *data)
+
static void h3_drain_stream(struct Curl_cfilter *cf,
+
                            struct Curl_easy *data)
{
-
  struct stream_ctx *stream = H3_STREAM_CTX(data);
+
  struct h3_stream_ctx *stream = H3_STREAM_CTX(data);
  unsigned char bits;

  (void)cf;
  bits = CURL_CSELECT_IN;
-
  if(stream && !stream->send_closed && stream->upload_left)
+
  if(stream && stream->upload_left && !stream->send_closed)
    bits |= CURL_CSELECT_OUT;
  if(data->state.dselect_bits != bits) {
    data->state.dselect_bits = bits;
@@ -1013,7 +1092,7 @@ static int cb_h3_stream_close(nghttp3_conn *conn, int64_t stream_id,
{
  struct Curl_cfilter *cf = user_data;
  struct Curl_easy *data = stream_user_data;
-
  struct stream_ctx *stream = H3_STREAM_CTX(data);
+
  struct h3_stream_ctx *stream = H3_STREAM_CTX(data);
  (void)conn;
  (void)stream_id;
  (void)app_error_code;
@@ -1031,7 +1110,7 @@ static int cb_h3_stream_close(nghttp3_conn *conn, int64_t stream_id,
    stream->reset = TRUE;
    stream->send_closed = TRUE;
  }
-
  drain_stream(cf, data);
+
  h3_drain_stream(cf, data);
  return 0;
}

@@ -1045,7 +1124,7 @@ static CURLcode write_resp_raw(struct Curl_cfilter *cf,
                               const void *mem, size_t memlen,
                               bool flow)
{
-
  struct stream_ctx *stream = H3_STREAM_CTX(data);
+
  struct h3_stream_ctx *stream = H3_STREAM_CTX(data);
  CURLcode result = CURLE_OK;
  ssize_t nwritten;

@@ -1085,7 +1164,7 @@ static int cb_h3_recv_data(nghttp3_conn *conn, int64_t stream3_id,
  (void)stream3_id;

  result = write_resp_raw(cf, data, buf, buflen, TRUE);
-
  drain_stream(cf, data);
+
  h3_drain_stream(cf, data);
  return result? -1 : 0;
}

@@ -1110,7 +1189,7 @@ static int cb_h3_end_headers(nghttp3_conn *conn, int64_t stream_id,
{
  struct Curl_cfilter *cf = user_data;
  struct Curl_easy *data = stream_user_data;
-
  struct stream_ctx *stream = H3_STREAM_CTX(data);
+
  struct h3_stream_ctx *stream = H3_STREAM_CTX(data);
  CURLcode result = CURLE_OK;
  (void)conn;
  (void)stream_id;
@@ -1130,7 +1209,7 @@ static int cb_h3_end_headers(nghttp3_conn *conn, int64_t stream_id,
  if(stream->status_code / 100 != 1) {
    stream->resp_hds_complete = TRUE;
  }
-
  drain_stream(cf, data);
+
  h3_drain_stream(cf, data);
  return 0;
}

@@ -1143,7 +1222,7 @@ static int cb_h3_recv_header(nghttp3_conn *conn, int64_t stream_id,
  nghttp3_vec h3name = nghttp3_rcbuf_get_buf(name);
  nghttp3_vec h3val = nghttp3_rcbuf_get_buf(value);
  struct Curl_easy *data = stream_user_data;
-
  struct stream_ctx *stream = H3_STREAM_CTX(data);
+
  struct h3_stream_ctx *stream = H3_STREAM_CTX(data);
  CURLcode result = CURLE_OK;
  (void)conn;
  (void)stream_id;
@@ -1207,7 +1286,8 @@ static int cb_h3_stop_sending(nghttp3_conn *conn, int64_t stream_id,
  (void)conn;
  (void)stream_user_data;

-
  rv = ngtcp2_conn_shutdown_stream_read(ctx->qconn, stream_id, app_error_code);
+
  rv = ngtcp2_conn_shutdown_stream_read(ctx->qconn, 0, stream_id,
+
                                        app_error_code);
  if(rv && rv != NGTCP2_ERR_STREAM_NOT_FOUND) {
    return NGTCP2_ERR_CALLBACK_FAILURE;
  }
@@ -1225,7 +1305,7 @@ static int cb_h3_reset_stream(nghttp3_conn *conn, int64_t stream_id,
  (void)conn;
  (void)data;

-
  rv = ngtcp2_conn_shutdown_stream_write(ctx->qconn, stream_id,
+
  rv = ngtcp2_conn_shutdown_stream_write(ctx->qconn, 0, stream_id,
                                         app_error_code);
  DEBUGF(LOG_CF(data, cf, "[h3sid=%" PRId64 "] reset -> %d", stream_id, rv));
  if(rv && rv != NGTCP2_ERR_STREAM_NOT_FOUND) {
@@ -1249,7 +1329,8 @@ static nghttp3_callbacks ngh3_callbacks = {
  cb_h3_stop_sending,
  NULL, /* end_stream */
  cb_h3_reset_stream,
-
  NULL /* shutdown */
+
  NULL, /* shutdown */
+
  NULL /* recv_settings */
};

static int init_ngh3_conn(struct Curl_cfilter *cf)
@@ -1314,7 +1395,7 @@ fail:

static ssize_t recv_closed_stream(struct Curl_cfilter *cf,
                                  struct Curl_easy *data,
-
                                  struct stream_ctx *stream,
+
                                  struct h3_stream_ctx *stream,
                                  CURLcode *err)
{
  ssize_t nread = -1;
@@ -1364,9 +1445,10 @@ static ssize_t cf_ngtcp2_recv(struct Curl_cfilter *cf, struct Curl_easy *data,
                              char *buf, size_t len, CURLcode *err)
{
  struct cf_ngtcp2_ctx *ctx = cf->ctx;
-
  struct stream_ctx *stream = H3_STREAM_CTX(data);
+
  struct h3_stream_ctx *stream = H3_STREAM_CTX(data);
  ssize_t nread = -1;
  struct cf_call_data save;
+
  struct pkt_io_ctx pktx;

  (void)ctx;

@@ -1377,6 +1459,8 @@ static ssize_t cf_ngtcp2_recv(struct Curl_cfilter *cf, struct Curl_easy *data,
  DEBUGASSERT(ctx->h3conn);
  *err = CURLE_OK;

+
  pktx_init(&pktx, cf, data);
+

  if(!stream) {
    *err = CURLE_RECV_ERROR;
    goto out;
@@ -1392,7 +1476,7 @@ static ssize_t cf_ngtcp2_recv(struct Curl_cfilter *cf, struct Curl_easy *data,
    report_consumed_data(cf, data, nread);
  }

-
  if(cf_process_ingress(cf, data)) {
+
  if(cf_progress_ingress(cf, data, &pktx)) {
    *err = CURLE_RECV_ERROR;
    nread = -1;
    goto out;
@@ -1410,7 +1494,7 @@ static ssize_t cf_ngtcp2_recv(struct Curl_cfilter *cf, struct Curl_easy *data,
  }

  if(nread > 0) {
-
    drain_stream(cf, data);
+
    h3_drain_stream(cf, data);
  }
  else {
    if(stream->closed) {
@@ -1422,10 +1506,17 @@ static ssize_t cf_ngtcp2_recv(struct Curl_cfilter *cf, struct Curl_easy *data,
  }

out:
-
  if(cf_flush_egress(cf, data)) {
+
  if(cf_progress_egress(cf, data, &pktx)) {
    *err = CURLE_SEND_ERROR;
    nread = -1;
  }
+
  else {
+
    CURLcode result2 = check_and_set_expiry(cf, data, &pktx);
+
    if(result2) {
+
      *err = result2;
+
      nread = -1;
+
    }
+
  }
  DEBUGF(LOG_CF(data, cf, "[h3sid=%" PRId64 "] cf_recv(len=%zu) -> %zd, %d",
                stream? stream->id : -1, len, nread, *err));
  CF_DATA_RESTORE(cf, save);
@@ -1438,7 +1529,7 @@ static int cb_h3_acked_req_body(nghttp3_conn *conn, int64_t stream_id,
{
  struct Curl_cfilter *cf = user_data;
  struct Curl_easy *data = stream_user_data;
-
  struct stream_ctx *stream = H3_STREAM_CTX(data);
+
  struct h3_stream_ctx *stream = H3_STREAM_CTX(data);
  size_t skiplen;

  (void)cf;
@@ -1454,10 +1545,8 @@ static int cb_h3_acked_req_body(nghttp3_conn *conn, int64_t stream_id,
  Curl_bufq_skip(&stream->sendbuf, skiplen);
  stream->sendbuf_len_in_flight -= skiplen;

-
  /* `sendbuf` *might* now have more room. If so, resume this
-
   * possibly paused stream. And also tell our transfer engine that
-
   * it may continue KEEP_SEND if told to PAUSE. */
-
  if(!Curl_bufq_is_full(&stream->sendbuf)) {
+
  /* Everything ACKed, we resume upload processing */
+
  if(!stream->sendbuf_len_in_flight) {
    int rv = nghttp3_conn_resume_stream(conn, stream_id);
    if(rv) {
      return NGTCP2_ERR_CALLBACK_FAILURE;
@@ -1465,7 +1554,7 @@ static int cb_h3_acked_req_body(nghttp3_conn *conn, int64_t stream_id,
    if((data->req.keepon & KEEP_SEND_HOLD) &&
       (data->req.keepon & KEEP_SEND)) {
      data->req.keepon &= ~KEEP_SEND_HOLD;
-
      drain_stream(cf, data);
+
      h3_drain_stream(cf, data);
      DEBUGF(LOG_CF(data, cf, "[h3sid=%" PRId64 "] unpausing acks",
                    stream_id));
    }
@@ -1481,7 +1570,7 @@ cb_h3_read_req_body(nghttp3_conn *conn, int64_t stream_id,
{
  struct Curl_cfilter *cf = user_data;
  struct Curl_easy *data = stream_user_data;
-
  struct stream_ctx *stream = H3_STREAM_CTX(data);
+
  struct h3_stream_ctx *stream = H3_STREAM_CTX(data);
  ssize_t nwritten = 0;
  size_t nvecs = 0;
  (void)cf;
@@ -1530,8 +1619,10 @@ cb_h3_read_req_body(nghttp3_conn *conn, int64_t stream_id,
  }

  DEBUGF(LOG_CF(data, cf, "[h3sid=%" PRId64 "] read req body -> "
-
                "%d vecs%s with %zu (buffered=%zu, left=%zd)", stream->id,
-
                (int)nvecs, *pflags == NGHTTP3_DATA_FLAG_EOF?" EOF":"",
+
                          "%d vecs%s with %zu (buffered=%zu, left=%"
+
                          CURL_FORMAT_CURL_OFF_T ")",
+
                stream->id, (int)nvecs,
+
                *pflags == NGHTTP3_DATA_FLAG_EOF?" EOF":"",
                nwritten, Curl_bufq_len(&stream->sendbuf),
                stream->upload_left));
  return (nghttp3_ssize)nvecs;
@@ -1547,7 +1638,7 @@ static ssize_t h3_stream_open(struct Curl_cfilter *cf,
                              CURLcode *err)
{
  struct cf_ngtcp2_ctx *ctx = cf->ctx;
-
  struct stream_ctx *stream = NULL;
+
  struct h3_stream_ctx *stream = NULL;
  struct h1_req_parser h1;
  struct dynhds h2_headers;
  size_t nheader;
@@ -1614,16 +1705,19 @@ static ssize_t h3_stream_open(struct Curl_cfilter *cf,
    else
      /* data sending without specifying the data amount up front */
      stream->upload_left = -1; /* unknown */
-
    reader.read_data = cb_h3_read_req_body;
-
    preader = &reader;
    break;
  default:
    /* there is not request body */
    stream->upload_left = 0; /* no request body */
-
    preader = NULL;
    break;
  }

+
  stream->send_closed = (stream->upload_left == 0);
+
  if(!stream->send_closed) {
+
    reader.read_data = cb_h3_read_req_body;
+
    preader = &reader;
+
  }
+

  rc = nghttp3_conn_submit_request(ctx->h3conn, stream->id,
                                   nva, nheader, preader, data);
  if(rc) {
@@ -1642,8 +1736,7 @@ static ssize_t h3_stream_open(struct Curl_cfilter *cf,
    goto out;
  }

-
  infof(data, "Using HTTP/3 Stream ID: %" PRId64 " (easy handle %p)",
-
        stream->id, (void *)data);
+
  infof(data, "Using HTTP/3 Stream ID: %" PRId64, stream->id);
  DEBUGF(LOG_CF(data, cf, "[h3sid=%" PRId64 "] opened for %s",
                stream->id, data->state.url));

@@ -1658,20 +1751,23 @@ static ssize_t cf_ngtcp2_send(struct Curl_cfilter *cf, struct Curl_easy *data,
                              const void *buf, size_t len, CURLcode *err)
{
  struct cf_ngtcp2_ctx *ctx = cf->ctx;
-
  struct stream_ctx *stream = H3_STREAM_CTX(data);
+
  struct h3_stream_ctx *stream = H3_STREAM_CTX(data);
  ssize_t sent = 0;
  struct cf_call_data save;
+
  struct pkt_io_ctx pktx;
+
  CURLcode result;

  CF_DATA_SAVE(save, cf, data);
  DEBUGASSERT(cf->connected);
  DEBUGASSERT(ctx->qconn);
  DEBUGASSERT(ctx->h3conn);
+
  pktx_init(&pktx, cf, data);
  *err = CURLE_OK;

-
  if(stream && stream->closed) {
-
    *err = CURLE_HTTP3;
+
  result = cf_progress_ingress(cf, data, &pktx);
+
  if(result) {
+
    *err = result;
    sent = -1;
-
    goto out;
  }

  if(!stream || stream->id < 0) {
@@ -1681,32 +1777,66 @@ static ssize_t cf_ngtcp2_send(struct Curl_cfilter *cf, struct Curl_easy *data,
      goto out;
    }
  }
+
  else if(stream->upload_blocked_len) {
+
    /* the data in `buf` has alread been submitted or added to the
+
     * buffers, but have been EAGAINed on the last invocation. */
+
    DEBUGASSERT(len >= stream->upload_blocked_len);
+
    if(len < stream->upload_blocked_len) {
+
      /* Did we get called again with a smaller `len`? This should not
+
       * happen. We are not prepared to handle that. */
+
      failf(data, "HTTP/3 send again with decreased length");
+
      *err = CURLE_HTTP3;
+
      sent = -1;
+
      goto out;
+
    }
+
    sent = (ssize_t)stream->upload_blocked_len;
+
    stream->upload_blocked_len = 0;
+
  }
+
  else if(stream->closed) {
+
    *err = CURLE_HTTP3;
+
    sent = -1;
+
    goto out;
+
  }
  else {
    sent = Curl_bufq_write(&stream->sendbuf, buf, len, err);
    DEBUGF(LOG_CF(data, cf, "[h3sid=%" PRId64 "] cf_send, add to "
                  "sendbuf(len=%zu) -> %zd, %d",
                  stream->id, len, sent, *err));
    if(sent < 0) {
-
      if(*err == CURLE_AGAIN) {
-
        /* Can't add more to the send buf, needs to drain first.
-
         * Pause the sending to avoid a busy loop. */
-
        data->req.keepon |= KEEP_SEND_HOLD;
-
        DEBUGF(LOG_CF(data, cf, "[h3sid=%" PRId64 "] pause send",
-
                      stream->id));
-
      }
      goto out;
    }

    (void)nghttp3_conn_resume_stream(ctx->h3conn, stream->id);
  }

-
  if(cf_flush_egress(cf, data)) {
-
    *err = CURLE_SEND_ERROR;
+
  result = cf_progress_egress(cf, data, &pktx);
+
  if(result) {
+
    *err = result;
    sent = -1;
-
    goto out;
+
  }
+

+
  if(stream && sent > 0 && stream->sendbuf_len_in_flight) {
+
    /* We have unacknowledged DATA and cannot report success to our
+
     * caller. Instead we EAGAIN and remember how much we have already
+
     * "written" into our various internal connection buffers.
+
     * We put the stream upload on HOLD, until this gets ACKed. */
+
    stream->upload_blocked_len = sent;
+
    DEBUGF(LOG_CF(data, cf, "[h3sid=%" PRId64 "] cf_send(len=%zu), "
+
                  "%zu bytes in flight -> EGAIN", stream->id, len,
+
                  stream->sendbuf_len_in_flight));
+
    *err = CURLE_AGAIN;
+
    sent = -1;
+
    data->req.keepon |= KEEP_SEND_HOLD;
  }

out:
+
  result = check_and_set_expiry(cf, data, &pktx);
+
  if(result) {
+
    *err = result;
+
    sent = -1;
+
  }
+
  DEBUGF(LOG_CF(data, cf, "[h3sid=%" PRId64 "] cf_send(len=%zu) -> %zd, %d",
+
                stream? stream->id : -1, len, sent, *err));
  CF_DATA_RESTORE(cf, save);
  return sent;
}
@@ -1763,34 +1893,27 @@ static CURLcode qng_verify_peer(struct Curl_cfilter *cf,
  return result;
}

-
struct recv_ctx {
-
  struct Curl_cfilter *cf;
-
  struct Curl_easy *data;
-
  ngtcp2_tstamp ts;
-
  size_t pkt_count;
-
};
-

static CURLcode recv_pkt(const unsigned char *pkt, size_t pktlen,
                         struct sockaddr_storage *remote_addr,
                         socklen_t remote_addrlen, int ecn,
                         void *userp)
{
-
  struct recv_ctx *r = userp;
-
  struct cf_ngtcp2_ctx *ctx = r->cf->ctx;
+
  struct pkt_io_ctx *pktx = userp;
+
  struct cf_ngtcp2_ctx *ctx = pktx->cf->ctx;
  ngtcp2_pkt_info pi;
  ngtcp2_path path;
  int rv;

-
  ++r->pkt_count;
+
  ++pktx->pkt_count;
  ngtcp2_addr_init(&path.local, (struct sockaddr *)&ctx->q.local_addr,
                   ctx->q.local_addrlen);
  ngtcp2_addr_init(&path.remote, (struct sockaddr *)remote_addr,
                   remote_addrlen);
  pi.ecn = (uint32_t)ecn;

-
  rv = ngtcp2_conn_read_pkt(ctx->qconn, &path, &pi, pkt, pktlen, r->ts);
+
  rv = ngtcp2_conn_read_pkt(ctx->qconn, &path, &pi, pkt, pktlen, pktx->ts);
  if(rv) {
-
    DEBUGF(LOG_CF(r->data, r->cf, "ingress, read_pkt -> %s",
+
    DEBUGF(LOG_CF(pktx->data, pktx->cf, "ingress, read_pkt -> %s",
                  ngtcp2_strerror(rv)));
    if(!ctx->last_error.error_code) {
      if(rv == NGTCP2_ERR_CRYPTO) {
@@ -1813,41 +1936,40 @@ static CURLcode recv_pkt(const unsigned char *pkt, size_t pktlen,
  return CURLE_OK;
}

-
static CURLcode cf_process_ingress(struct Curl_cfilter *cf,
-
                                   struct Curl_easy *data)
+
static CURLcode cf_progress_ingress(struct Curl_cfilter *cf,
+
                                    struct Curl_easy *data,
+
                                    struct pkt_io_ctx *pktx)
{
  struct cf_ngtcp2_ctx *ctx = cf->ctx;
-
  struct recv_ctx rctx;
+
  struct pkt_io_ctx local_pktx;
  size_t pkts_chunk = 128, i;
  size_t pkts_max = 10 * pkts_chunk;
-
  CURLcode result;
+
  CURLcode result = CURLE_OK;

-
  rctx.cf = cf;
-
  rctx.data = data;
-
  rctx.ts = timestamp();
-
  rctx.pkt_count = 0;
+
  if(!pktx) {
+
    pktx_init(&local_pktx, cf, data);
+
    pktx = &local_pktx;
+
  }
+
  else {
+
    pktx->ts = timestamp();
+
  }

  for(i = 0; i < pkts_max; i += pkts_chunk) {
-
    rctx.pkt_count = 0;
+
    pktx->pkt_count = 0;
    result = vquic_recv_packets(cf, data, &ctx->q, pkts_chunk,
-
                                recv_pkt, &rctx);
+
                                recv_pkt, pktx);
    if(result) /* error */
      break;
-
    if(rctx.pkt_count < pkts_chunk) /* got less than we could */
+
    if(pktx->pkt_count < pkts_chunk) /* got less than we could */
      break;
    /* give egress a chance before we receive more */
-
    result = cf_flush_egress(cf, data);
+
    result = cf_progress_egress(cf, data, pktx);
+
    if(result) /* error */
+
      break;
  }
  return result;
}

-
struct read_ctx {
-
  struct Curl_cfilter *cf;
-
  struct Curl_easy *data;
-
  ngtcp2_tstamp ts;
-
  ngtcp2_path_storage *ps;
-
};
-

/**
 * Read a network packet to send from ngtcp2 into `buf`.
 * Return number of bytes written or -1 with *err set.
@@ -1856,7 +1978,7 @@ static ssize_t read_pkt_to_send(void *userp,
                                unsigned char *buf, size_t buflen,
                                CURLcode *err)
{
-
  struct read_ctx *x = userp;
+
  struct pkt_io_ctx *x = userp;
  struct cf_ngtcp2_ctx *ctx = x->cf->ctx;
  nghttp3_vec vec[16];
  nghttp3_ssize veccnt;
@@ -1896,7 +2018,7 @@ static ssize_t read_pkt_to_send(void *userp,

    flags = NGTCP2_WRITE_STREAM_FLAG_MORE |
            (fin ? NGTCP2_WRITE_STREAM_FLAG_FIN : 0);
-
    n = ngtcp2_conn_writev_stream(ctx->qconn, x->ps? &x->ps->path : NULL,
+
    n = ngtcp2_conn_writev_stream(ctx->qconn, &x->ps.path,
                                  NULL, buf, buflen,
                                  &ndatalen, flags, stream_id,
                                  (const ngtcp2_vec *)vec, veccnt, x->ts);
@@ -1955,28 +2077,25 @@ out:
  return nwritten;
}

-
static CURLcode cf_flush_egress(struct Curl_cfilter *cf,
-
                                struct Curl_easy *data)
+
static CURLcode cf_progress_egress(struct Curl_cfilter *cf,
+
                                   struct Curl_easy *data,
+
                                   struct pkt_io_ctx *pktx)
{
  struct cf_ngtcp2_ctx *ctx = cf->ctx;
-
  int rv;
  ssize_t nread;
  size_t max_payload_size, path_max_payload_size, max_pktcnt;
  size_t pktcnt = 0;
  size_t gsolen = 0;  /* this disables gso until we have a clue */
-
  ngtcp2_path_storage ps;
-
  ngtcp2_tstamp ts = timestamp();
-
  ngtcp2_tstamp expiry;
-
  ngtcp2_duration timeout;
  CURLcode curlcode;
-
  struct read_ctx readx;
+
  struct pkt_io_ctx local_pktx;

-
  rv = ngtcp2_conn_handle_expiry(ctx->qconn, ts);
-
  if(rv) {
-
    failf(data, "ngtcp2_conn_handle_expiry returned error: %s",
-
          ngtcp2_strerror(rv));
-
    ngtcp2_ccerr_set_liberr(&ctx->last_error, rv, NULL, 0);
-
    return CURLE_SEND_ERROR;
+
  if(!pktx) {
+
    pktx_init(&local_pktx, cf, data);
+
    pktx = &local_pktx;
+
  }
+
  else {
+
    pktx->ts = timestamp();
+
    ngtcp2_path_storage_zero(&pktx->ps);
  }

  curlcode = vquic_flush(cf, data, &ctx->q);
@@ -1988,8 +2107,6 @@ static CURLcode cf_flush_egress(struct Curl_cfilter *cf,
    return curlcode;
  }

-
  ngtcp2_path_storage_zero(&ps);
-

  /* In UDP, there is a maximum theoretical packet paload length and
   * a minimum payload length that is "guarantueed" to work.
   * To detect if this minimum payload can be increased, ngtcp2 sends
@@ -2008,15 +2125,10 @@ static CURLcode cf_flush_egress(struct Curl_cfilter *cf,
  max_pktcnt = CURLMIN(MAX_PKT_BURST,
                       ctx->q.sendbuf.chunk_size / max_payload_size);

-
  readx.cf = cf;
-
  readx.data = data;
-
  readx.ts = ts;
-
  readx.ps = &ps;
-

  for(;;) {
    /* add the next packet to send, if any, to our buffer */
    nread = Curl_bufq_sipn(&ctx->q.sendbuf, max_payload_size,
-
                           read_pkt_to_send, &readx, &curlcode);
+
                           read_pkt_to_send, pktx, &curlcode);
    /* DEBUGF(LOG_CF(data, cf, "sip packet(maxlen=%zu) -> %zd, %d",
                  max_payload_size, nread, curlcode)); */
    if(nread < 0) {
@@ -2076,21 +2188,6 @@ static CURLcode cf_flush_egress(struct Curl_cfilter *cf,
  }

out:
-
  /* non-errored exit. check when we should run again. */
-
  expiry = ngtcp2_conn_get_expiry(ctx->qconn);
-
  if(expiry != UINT64_MAX) {
-
    if(expiry <= ts) {
-
      timeout = 0;
-
    }
-
    else {
-
      timeout = expiry - ts;
-
      if(timeout % NGTCP2_MILLISECONDS) {
-
        timeout += NGTCP2_MILLISECONDS;
-
      }
-
    }
-
    Curl_expire(data, timeout / NGTCP2_MILLISECONDS, EXPIRE_QUIC);
-
  }
-

  return CURLE_OK;
}

@@ -2101,7 +2198,7 @@ out:
static bool cf_ngtcp2_data_pending(struct Curl_cfilter *cf,
                                   const struct Curl_easy *data)
{
-
  const struct stream_ctx *stream = H3_STREAM_CTX(data);
+
  const struct h3_stream_ctx *stream = H3_STREAM_CTX(data);
  (void)cf;
  return stream && !Curl_bufq_is_empty(&stream->recvbuf);
}
@@ -2113,7 +2210,7 @@ static CURLcode h3_data_pause(struct Curl_cfilter *cf,
  /* TODO: there seems right now no API in ngtcp2 to shrink/enlarge
   * the streams windows. As we do in HTTP/2. */
  if(!pause) {
-
    drain_stream(cf, data);
+
    h3_drain_stream(cf, data);
    Curl_expire(data, 0, EXPIRE_RUN_NOW);
  }
  return CURLE_OK;
@@ -2141,7 +2238,7 @@ static CURLcode cf_ngtcp2_data_event(struct Curl_cfilter *cf,
    break;
  }
  case CF_CTRL_DATA_DONE_SEND: {
-
    struct stream_ctx *stream = H3_STREAM_CTX(data);
+
    struct h3_stream_ctx *stream = H3_STREAM_CTX(data);
    if(stream && !stream->send_closed) {
      stream->send_closed = TRUE;
      stream->upload_left = Curl_bufq_len(&stream->sendbuf);
@@ -2150,11 +2247,7 @@ static CURLcode cf_ngtcp2_data_event(struct Curl_cfilter *cf,
    break;
  }
  case CF_CTRL_DATA_IDLE:
-
    if(timestamp() >= ngtcp2_conn_get_expiry(ctx->qconn)) {
-
      if(cf_flush_egress(cf, data)) {
-
        result = CURLE_SEND_ERROR;
-
      }
-
    }
+
    result = check_and_set_expiry(cf, data, NULL);
    break;
  default:
    break;
@@ -2250,7 +2343,8 @@ static void cf_ngtcp2_destroy(struct Curl_cfilter *cf, struct Curl_easy *data)
 * Might be called twice for happy eyeballs.
 */
static CURLcode cf_connect_start(struct Curl_cfilter *cf,
-
                                 struct Curl_easy *data)
+
                                 struct Curl_easy *data,
+
                                 struct pkt_io_ctx *pktx)
{
  struct cf_ngtcp2_ctx *ctx = cf->ctx;
  int rc;
@@ -2294,7 +2388,7 @@ static CURLcode cf_connect_start(struct Curl_cfilter *cf,

  (void)Curl_qlogdir(data, ctx->scid.data, NGTCP2_MAX_CIDLEN, &qfd);
  ctx->qlogfd = qfd; /* -1 if failure above */
-
  quic_settings(ctx, data);
+
  quic_settings(ctx, data, pktx);

  result = vquic_ctx_init(&ctx->q);
  if(result)
@@ -2344,6 +2438,7 @@ static CURLcode cf_ngtcp2_connect(struct Curl_cfilter *cf,
  CURLcode result = CURLE_OK;
  struct cf_call_data save;
  struct curltime now;
+
  struct pkt_io_ctx pktx;

  if(cf->connected) {
    *done = TRUE;
@@ -2359,6 +2454,7 @@ static CURLcode cf_ngtcp2_connect(struct Curl_cfilter *cf,

  *done = FALSE;
  now = Curl_now();
+
  pktx_init(&pktx, cf, data);

  CF_DATA_SAVE(save, cf, data);

@@ -2370,19 +2466,19 @@ static CURLcode cf_ngtcp2_connect(struct Curl_cfilter *cf,

  if(!ctx->qconn) {
    ctx->started_at = now;
-
    result = cf_connect_start(cf, data);
+
    result = cf_connect_start(cf, data, &pktx);
    if(result)
      goto out;
-
    result = cf_flush_egress(cf, data);
+
    result = cf_progress_egress(cf, data, &pktx);
    /* we do not expect to be able to recv anything yet */
    goto out;
  }

-
  result = cf_process_ingress(cf, data);
+
  result = cf_progress_ingress(cf, data, &pktx);
  if(result)
    goto out;

-
  result = cf_flush_egress(cf, data);
+
  result = cf_progress_egress(cf, data, &pktx);
  if(result)
    goto out;

@@ -2402,7 +2498,7 @@ static CURLcode cf_ngtcp2_connect(struct Curl_cfilter *cf,

out:
  if(result == CURLE_RECV_ERROR && ctx->qconn &&
-
     ngtcp2_conn_is_in_draining_period(ctx->qconn)) {
+
     ngtcp2_conn_in_draining_period(ctx->qconn)) {
    /* When a QUIC server instance is shutting down, it may send us a
     * CONNECTION_CLOSE right away. Our connection then enters the DRAINING
     * state.
@@ -2439,6 +2535,9 @@ out:
          r_ip, r_port, curl_easy_strerror(result));
  }
#endif
+
  if(!result && ctx->qconn) {
+
    result = check_and_set_expiry(cf, data, &pktx);
+
  }
  DEBUGF(LOG_CF(data, cf, "connect -> %d, done=%d", result, *done));
  CF_DATA_RESTORE(cf, save);
  return result;
@@ -2510,13 +2609,11 @@ static bool cf_ngtcp2_conn_is_alive(struct Curl_cfilter *cf,
       not in use by any other transfer, there shouldn't be any data here,
       only "protocol frames" */
    *input_pending = FALSE;
-
    Curl_attach_connection(data, cf->conn);
-
    if(cf_process_ingress(cf, data))
+
    if(cf_progress_ingress(cf, data, NULL))
      alive = FALSE;
    else {
      alive = TRUE;
    }
-
    Curl_detach_connection(data);
  }

  return alive;
modified external/curl/lib/vquic/curl_quiche.c
@@ -277,7 +277,7 @@ static CURLcode h3_data_setup(struct Curl_cfilter *cf,
  stream->id = -1;
  Curl_bufq_initp(&stream->recvbuf, &ctx->stream_bufcp,
                  H3_STREAM_RECV_CHUNKS, BUFQ_OPT_SOFT_LIMIT);
-
  DEBUGF(LOG_CF(data, cf, "data setup (easy %p)", (void *)data));
+
  DEBUGF(LOG_CF(data, cf, "data setup"));
  return CURLE_OK;
}

@@ -329,7 +329,7 @@ static struct Curl_easy *get_stream_easy(struct Curl_cfilter *cf,
  else {
    DEBUGASSERT(data->multi);
    for(sdata = data->multi->easyp; sdata; sdata = sdata->next) {
-
      if(H3_STREAM_ID(sdata) == stream3_id) {
+
      if((sdata->conn == data->conn) && H3_STREAM_ID(sdata) == stream3_id) {
        return sdata;
      }
    }
@@ -425,12 +425,8 @@ static ssize_t stream_resp_read(void *reader_ctx,
    *err = CURLE_OK;
    return nread;
  }
-
  else if(nread < 0) {
-
    *err = CURLE_AGAIN;
-
    return -1;
-
  }
  else {
-
    *err = stream->resp_got_header? CURLE_PARTIAL_FILE : CURLE_RECV_ERROR;
+
    *err = CURLE_AGAIN;
    return -1;
  }
}
@@ -461,8 +457,8 @@ static CURLcode cf_recv_body(struct Curl_cfilter *cf,
  if(nwritten < 0 && result != CURLE_AGAIN) {
    DEBUGF(LOG_CF(data, cf, "[h3sid=%"PRId64"] recv_body error %zd",
                  stream->id, nwritten));
-
    failf(data, "Error %zd in HTTP/3 response body for stream[%"PRId64"]",
-
          nwritten, stream->id);
+
    failf(data, "Error %d in HTTP/3 response body for stream[%"PRId64"]",
+
          result, stream->id);
    stream->closed = TRUE;
    stream->reset = TRUE;
    stream->send_closed = TRUE;
@@ -595,8 +591,13 @@ static CURLcode cf_poll_events(struct Curl_cfilter *cf,
                      "for [h3sid=%"PRId64"] -> %d",
                      stream? stream->id : -1, cf_ev_name(ev),
                      stream3_id, result));
-
        quiche_h3_event_free(ev);
-
        return result;
+
        if(data == sdata) {
+
          /* Only report this error to the caller if it is about the
+
           * transfer we were called with. Otherwise we fail a transfer
+
           * due to a problem in another one. */
+
          quiche_h3_event_free(ev);
+
          return result;
+
        }
      }
      quiche_h3_event_free(ev);
    }
@@ -649,7 +650,7 @@ static CURLcode recv_pkt(const unsigned char *pkt, size_t pktlen,
    }
  }
  else if((size_t)nread < pktlen) {
-
    DEBUGF(LOG_CF(r->data, r->cf, "ingress, quiche only read %zd/%zd bytes",
+
    DEBUGF(LOG_CF(r->data, r->cf, "ingress, quiche only read %zd/%zu bytes",
                  nread, pktlen));
  }

@@ -826,7 +827,7 @@ static ssize_t cf_quiche_recv(struct Curl_cfilter *cf, struct Curl_easy *data,

  if(!stream) {
    *err = CURLE_RECV_ERROR;
-
    goto out;
+
    return -1;
  }

  if(!Curl_bufq_is_empty(&stream->recvbuf)) {
@@ -883,8 +884,10 @@ out:
  }
  if(nread > 0)
    ctx->data_recvd += nread;
-
  DEBUGF(LOG_CF(data, cf, "[h3sid=%"PRId64"] cf_recv(total=%zd) -> %zd, %d",
-
                stream->id, ctx->data_recvd, nread, *err));
+
  DEBUGF(LOG_CF(data, cf, "[h3sid=%"PRId64"] cf_recv(total=%"
+
                CURL_FORMAT_CURL_OFF_T ") -> %zd, %d",
+
                stream ? stream->id : (int64_t)0,
+
                ctx->data_recvd, nread, *err));
  return nread;
}

@@ -909,8 +912,7 @@ static ssize_t h3_open_stream(struct Curl_cfilter *cf,
  if(!stream) {
    *err = h3_data_setup(cf, data);
    if(*err) {
-
      nwritten = -1;
-
      goto out;
+
      return -1;
    }
    stream = H3_STREAM_CTX(data);
    DEBUGASSERT(stream);
@@ -995,8 +997,7 @@ static ssize_t h3_open_stream(struct Curl_cfilter *cf,
  stream->closed = FALSE;
  stream->reset = FALSE;

-
  infof(data, "Using HTTP/3 Stream ID: %" PRId64 " (easy handle %p)",
-
        stream3_id, (void *)data);
+
  infof(data, "Using HTTP/3 Stream ID: %" PRId64, stream3_id);
  DEBUGF(LOG_CF(data, cf, "[h3sid=%" PRId64 "] opened for %s",
                stream3_id, data->state.url));

@@ -1068,7 +1069,7 @@ static ssize_t cf_quiche_send(struct Curl_cfilter *cf, struct Curl_easy *data,
        stream->send_closed = TRUE;

      DEBUGF(LOG_CF(data, cf, "[h3sid=%" PRId64 "] send body(len=%zu, "
-
                    "left=%zd) -> %zd",
+
                              "left=%" CURL_FORMAT_CURL_OFF_T ") -> %zd",
                    stream->id, len, stream->upload_left, nwritten));
      *err = CURLE_OK;
    }
@@ -1151,10 +1152,8 @@ static CURLcode cf_quiche_data_event(struct Curl_cfilter *cf,
  (void)arg1;
  (void)arg2;
  switch(event) {
-
  case CF_CTRL_DATA_SETUP: {
-
    result = h3_data_setup(cf, data);
+
  case CF_CTRL_DATA_SETUP:
    break;
-
  }
  case CF_CTRL_DATA_PAUSE:
    result = h3_data_pause(cf, data, (arg1 != 0));
    break;
@@ -1343,11 +1342,6 @@ static CURLcode cf_connect_start(struct Curl_cfilter *cf,
  }
#endif

-
  /* we do not get a setup event for the initial transfer */
-
  result = h3_data_setup(cf, data);
-
  if(result)
-
    return result;
-

  result = cf_flush_egress(cf, data);
  if(result)
    return result;
@@ -1555,13 +1549,11 @@ static bool cf_quiche_conn_is_alive(struct Curl_cfilter *cf,
       not in use by any other transfer, there shouldn't be any data here,
       only "protocol frames" */
    *input_pending = FALSE;
-
    Curl_attach_connection(data, cf->conn);
    if(cf_process_ingress(cf, data))
      alive = FALSE;
    else {
      alive = TRUE;
    }
-
    Curl_detach_connection(data);
  }

  return alive;
modified external/curl/lib/vquic/vquic.c
@@ -362,7 +362,7 @@ static CURLcode recvmmsg_packets(struct Curl_cfilter *cf,
  }

out:
-
  DEBUGF(LOG_CF(data, cf, "recvd %zu packets with %zd bytes -> %d",
+
  DEBUGF(LOG_CF(data, cf, "recvd %zu packets with %zu bytes -> %d",
                pkts, total_nread, result));
  return result;
}
@@ -425,7 +425,7 @@ static CURLcode recvmsg_packets(struct Curl_cfilter *cf,
  }

out:
-
  DEBUGF(LOG_CF(data, cf, "recvd %zu packets with %zd bytes -> %d",
+
  DEBUGF(LOG_CF(data, cf, "recvd %zu packets with %zu bytes -> %d",
                pkts, total_nread, result));
  return result;
}
@@ -482,7 +482,7 @@ static CURLcode recvfrom_packets(struct Curl_cfilter *cf,
  }

out:
-
  DEBUGF(LOG_CF(data, cf, "recvd %zu packets with %zd bytes -> %d",
+
  DEBUGF(LOG_CF(data, cf, "recvd %zu packets with %zu bytes -> %d",
                pkts, total_nread, result));
  return result;
}
modified external/curl/lib/vssh/libssh2.c
@@ -100,11 +100,9 @@

/* Local functions: */
static const char *sftp_libssh2_strerror(unsigned long err);
-
#ifdef CURL_LIBSSH2_DEBUG
static LIBSSH2_ALLOC_FUNC(my_libssh2_malloc);
static LIBSSH2_REALLOC_FUNC(my_libssh2_realloc);
static LIBSSH2_FREE_FUNC(my_libssh2_free);
-
#endif
static CURLcode ssh_force_knownhost_key_type(struct Curl_easy *data);
static CURLcode ssh_connect(struct Curl_easy *data, bool *done);
static CURLcode ssh_multi_statemach(struct Curl_easy *data, bool *done);
@@ -284,8 +282,6 @@ static CURLcode libssh2_session_error_to_CURLE(int err)
  return CURLE_SSH;
}

-
#ifdef CURL_LIBSSH2_DEBUG
-

static LIBSSH2_ALLOC_FUNC(my_libssh2_malloc)
{
  (void)abstract; /* arg not used */
@@ -305,8 +301,6 @@ static LIBSSH2_FREE_FUNC(my_libssh2_free)
    free(ptr);
}

-
#endif
-

/*
 * SSH State machine related code
 */
@@ -895,6 +889,7 @@ static CURLcode ssh_force_knownhost_key_type(struct Curl_easy *data)
    }

    if(found) {
+
      int rc;
      infof(data, "Found host %s in %s",
            conn->host.name, data->set.str[STRING_SSH_KNOWNHOSTS]);

@@ -944,9 +939,15 @@ static CURLcode ssh_force_knownhost_key_type(struct Curl_easy *data)
      }

      infof(data, "Set \"%s\" as SSH hostkey type", hostkey_method);
-
      result = libssh2_session_error_to_CURLE(
-
        libssh2_session_method_pref(
-
          sshc->ssh_session, LIBSSH2_METHOD_HOSTKEY, hostkey_method));
+
      rc = libssh2_session_method_pref(sshc->ssh_session,
+
                                       LIBSSH2_METHOD_HOSTKEY, hostkey_method);
+
      if(rc) {
+
        char *errmsg = NULL;
+
        int errlen;
+
        libssh2_session_last_error(sshc->ssh_session, &errmsg, &errlen, 0);
+
        failf(data, "libssh2: %s", errmsg);
+
        result = libssh2_session_error_to_CURLE(rc);
+
      }
    }
    else {
      infof(data, "Did not find host %s in %s",
@@ -3268,13 +3269,12 @@ static CURLcode ssh_connect(struct Curl_easy *data, bool *done)
  sock = conn->sock[FIRSTSOCKET];
#endif /* CURL_LIBSSH2_DEBUG */

-
#ifdef CURL_LIBSSH2_DEBUG
+
  /* libcurl MUST to set custom memory functions so that the kbd_callback
+
     funciton's memory allocations can be properled freed */
  sshc->ssh_session = libssh2_session_init_ex(my_libssh2_malloc,
                                              my_libssh2_free,
                                              my_libssh2_realloc, data);
-
#else
-
  sshc->ssh_session = libssh2_session_init_ex(NULL, NULL, NULL, data);
-
#endif
+

  if(!sshc->ssh_session) {
    failf(data, "Failure initialising ssh session");
    return CURLE_FAILED_INIT;
modified external/curl/lib/vssh/wolfssh.c
@@ -277,7 +277,7 @@ static ssize_t wsftp_send(struct Curl_easy *data, int sockindex,
    return -1;
  }
  DEBUGASSERT(rc == (int)len);
-
  infof(data, "sent %zd bytes SFTP from offset %zd",
+
  infof(data, "sent %zu bytes SFTP from offset %" CURL_FORMAT_CURL_OFF_T,
        len, sshc->offset);
  sshc->offset += len;
  return (ssize_t)rc;
modified external/curl/lib/vtls/bearssl.c
@@ -52,7 +52,7 @@ struct x509_context {
  int cert_num;
};

-
struct ssl_backend_data {
+
struct bearssl_ssl_backend_data {
  br_ssl_client_context ctx;
  struct x509_context x509;
  unsigned char buf[BR_SSL_BUFSIZE_BIDI];
@@ -574,7 +574,8 @@ static CURLcode bearssl_connect_step1(struct Curl_cfilter *cf,
                                      struct Curl_easy *data)
{
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct bearssl_ssl_backend_data *backend =
+
    (struct bearssl_ssl_backend_data *)connssl->backend;
  struct ssl_primary_config *conn_config = Curl_ssl_cf_get_primary_config(cf);
  struct ssl_config_data *ssl_config = Curl_ssl_cf_get_config(cf, data);
  const struct curl_blob *ca_info_blob = conn_config->ca_info_blob;
@@ -751,7 +752,8 @@ static CURLcode bearssl_run_until(struct Curl_cfilter *cf,
                                  unsigned target)
{
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct bearssl_ssl_backend_data *backend =
+
    (struct bearssl_ssl_backend_data *)connssl->backend;
  unsigned state;
  unsigned char *buf;
  size_t len;
@@ -820,7 +822,8 @@ static CURLcode bearssl_connect_step2(struct Curl_cfilter *cf,
                                      struct Curl_easy *data)
{
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct bearssl_ssl_backend_data *backend =
+
    (struct bearssl_ssl_backend_data *)connssl->backend;
  CURLcode ret;

  DEBUGASSERT(backend);
@@ -842,7 +845,8 @@ static CURLcode bearssl_connect_step3(struct Curl_cfilter *cf,
                                      struct Curl_easy *data)
{
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct bearssl_ssl_backend_data *backend =
+
    (struct bearssl_ssl_backend_data *)connssl->backend;
  struct ssl_config_data *ssl_config = Curl_ssl_cf_get_config(cf, data);
  CURLcode ret;

@@ -889,7 +893,8 @@ static ssize_t bearssl_send(struct Curl_cfilter *cf, struct Curl_easy *data,
                            const void *buf, size_t len, CURLcode *err)
{
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct bearssl_ssl_backend_data *backend =
+
    (struct bearssl_ssl_backend_data *)connssl->backend;
  unsigned char *app;
  size_t applen;

@@ -923,7 +928,8 @@ static ssize_t bearssl_recv(struct Curl_cfilter *cf, struct Curl_easy *data,
                            char *buf, size_t len, CURLcode *err)
{
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct bearssl_ssl_backend_data *backend =
+
    (struct bearssl_ssl_backend_data *)connssl->backend;
  unsigned char *app;
  size_t applen;

@@ -1050,10 +1056,12 @@ static bool bearssl_data_pending(struct Curl_cfilter *cf,
                                 const struct Curl_easy *data)
{
  struct ssl_connect_data *ctx = cf->ctx;
+
  struct bearssl_ssl_backend_data *backend;

  (void)data;
  DEBUGASSERT(ctx && ctx->backend);
-
  return br_ssl_engine_current_state(&ctx->backend->ctx.eng) & BR_SSL_RECVAPP;
+
  backend = (struct bearssl_ssl_backend_data *)ctx->backend;
+
  return br_ssl_engine_current_state(&backend->ctx.eng) & BR_SSL_RECVAPP;
}

static CURLcode bearssl_random(struct Curl_easy *data UNUSED_PARAM,
@@ -1101,7 +1109,8 @@ static CURLcode bearssl_connect_nonblocking(struct Curl_cfilter *cf,
static void *bearssl_get_internals(struct ssl_connect_data *connssl,
                                   CURLINFO info UNUSED_PARAM)
{
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct bearssl_ssl_backend_data *backend =
+
    (struct bearssl_ssl_backend_data *)connssl->backend;
  DEBUGASSERT(backend);
  return &backend->ctx;
}
@@ -1109,7 +1118,8 @@ static void *bearssl_get_internals(struct ssl_connect_data *connssl,
static void bearssl_close(struct Curl_cfilter *cf, struct Curl_easy *data)
{
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct bearssl_ssl_backend_data *backend =
+
    (struct bearssl_ssl_backend_data *)connssl->backend;
  size_t i;

  DEBUGASSERT(backend);
@@ -1147,7 +1157,7 @@ static CURLcode bearssl_sha256sum(const unsigned char *input,
const struct Curl_ssl Curl_ssl_bearssl = {
  { CURLSSLBACKEND_BEARSSL, "bearssl" }, /* info */
  SSLSUPP_CAINFO_BLOB | SSLSUPP_SSL_CTX | SSLSUPP_HTTPS_PROXY,
-
  sizeof(struct ssl_backend_data),
+
  sizeof(struct bearssl_ssl_backend_data),

  Curl_none_init,                  /* init */
  Curl_none_cleanup,               /* cleanup */
modified external/curl/lib/vtls/gskit.c
@@ -103,14 +103,14 @@
#define CURL_GSKPROTO_TLSV12_MASK        (1 << CURL_GSKPROTO_TLSV12)
#define CURL_GSKPROTO_LAST      5

-
struct ssl_backend_data {
+
struct gskit_ssl_backend_data {
  gsk_handle handle;
  int iocport;
  int localfd;
  int remotefd;
};

-
#define BACKEND connssl->backend
+
#define BACKEND ((struct gskit_ssl_backend_data *)connssl->backend)

/* Supported ciphers. */
struct gskit_cipher {
@@ -518,6 +518,7 @@ static int pipe_ssloverssl(struct Curl_cfilter *cf, struct Curl_easy *data,
  struct Curl_cfilter *cf_ssl_next = Curl_ssl_cf_get_ssl(cf->next);
  struct ssl_connect_data *connssl_next = cf_ssl_next?
                                            cf_ssl_next->ctx : NULL;
+
  struct gskit_ssl_backend_data *backend_next;
  struct pollfd fds[2];
  int n;
  int m;
@@ -531,6 +532,8 @@ static int pipe_ssloverssl(struct Curl_cfilter *cf, struct Curl_easy *data,
    return 0;   /* No SSL over SSL: OK. */

  DEBUGASSERT(connssl_next->backend);
+
  backend_next = (struct gskit_ssl_backend_data *)connssl_next->backend;
+

  n = 1;
  fds[0].fd = BACKEND->remotefd;
  fds[1].fd = Curl_conn_cf_get_socket(cf, data);
@@ -550,8 +553,7 @@ static int pipe_ssloverssl(struct Curl_cfilter *cf, struct Curl_easy *data,
  if(fds[0].revents & POLLOUT) {
    /* Try getting data from HTTPS proxy and pipe it upstream. */
    n = 0;
-
    i = gsk_secure_soc_read(connssl_next->backend->handle,
-
                            buf, sizeof(buf), &n);
+
    i = gsk_secure_soc_read(backend_next->handle, buf, sizeof(buf), &n);
    switch(i) {
    case GSK_OK:
      if(n) {
@@ -575,7 +577,7 @@ static int pipe_ssloverssl(struct Curl_cfilter *cf, struct Curl_easy *data,
    if(n < 0)
      return -1;
    if(n) {
-
      i = gsk_secure_soc_write(connssl_next->backend->handle, buf, n, &m);
+
      i = gsk_secure_soc_write(backend_next->handle, buf, n, &m);
      if(i != GSK_OK || n != m)
        return -1;
      ret = 1;
@@ -1294,7 +1296,7 @@ const struct Curl_ssl Curl_ssl_gskit = {
  SSLSUPP_CERTINFO |
  SSLSUPP_PINNEDPUBKEY,

-
  sizeof(struct ssl_backend_data),
+
  sizeof(struct gskit_ssl_backend_data),

  gskit_init,                     /* init */
  gskit_cleanup,                  /* cleanup */
modified external/curl/lib/vtls/gtls.c
@@ -76,7 +76,7 @@ static bool gtls_inited = FALSE;

# include <gnutls/ocsp.h>

-
struct ssl_backend_data {
+
struct gtls_ssl_backend_data {
  struct gtls_instance gtls;
};

@@ -91,7 +91,9 @@ static ssize_t gtls_push(void *s, const void *buf, size_t blen)
  DEBUGASSERT(data);
  nwritten = Curl_conn_cf_send(cf->next, data, buf, blen, &result);
  if(nwritten < 0) {
-
    gnutls_transport_set_errno(connssl->backend->gtls.session,
+
    struct gtls_ssl_backend_data *backend =
+
      (struct gtls_ssl_backend_data *)connssl->backend;
+
    gnutls_transport_set_errno(backend->gtls.session,
                               (CURLE_AGAIN == result)? EAGAIN : EINVAL);
    nwritten = -1;
  }
@@ -109,7 +111,9 @@ static ssize_t gtls_pull(void *s, void *buf, size_t blen)
  DEBUGASSERT(data);
  nread = Curl_conn_cf_recv(cf->next, data, buf, blen, &result);
  if(nread < 0) {
-
    gnutls_transport_set_errno(connssl->backend->gtls.session,
+
    struct gtls_ssl_backend_data *backend =
+
      (struct gtls_ssl_backend_data *)connssl->backend;
+
    gnutls_transport_set_errno(backend->gtls.session,
                               (CURLE_AGAIN == result)? EAGAIN : EINVAL);
    nread = -1;
  }
@@ -212,7 +216,8 @@ static CURLcode handshake(struct Curl_cfilter *cf,
                          bool nonblocking)
{
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct gtls_ssl_backend_data *backend =
+
    (struct gtls_ssl_backend_data *)connssl->backend;
  gnutls_session_t session;
  curl_socket_t sockfd = Curl_conn_cf_get_socket(cf, data);

@@ -679,7 +684,8 @@ static CURLcode
gtls_connect_step1(struct Curl_cfilter *cf, struct Curl_easy *data)
{
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct gtls_ssl_backend_data *backend =
+
    (struct gtls_ssl_backend_data *)connssl->backend;
  struct ssl_primary_config *conn_config = Curl_ssl_cf_get_primary_config(cf);
  struct ssl_config_data *ssl_config = Curl_ssl_cf_get_config(cf, data);
  long * const pverifyresult = &ssl_config->certverifyresult;
@@ -1346,7 +1352,8 @@ gtls_connect_common(struct Curl_cfilter *cf,

  /* Finish connecting once the handshake is done */
  if(ssl_connect_1 == connssl->connecting_state) {
-
    struct ssl_backend_data *backend = connssl->backend;
+
    struct gtls_ssl_backend_data *backend =
+
      (struct gtls_ssl_backend_data *)connssl->backend;
    gnutls_session_t session;
    DEBUGASSERT(backend);
    session = backend->gtls.session;
@@ -1390,11 +1397,13 @@ static bool gtls_data_pending(struct Curl_cfilter *cf,
                              const struct Curl_easy *data)
{
  struct ssl_connect_data *ctx = cf->ctx;
+
  struct gtls_ssl_backend_data *backend;

  (void)data;
  DEBUGASSERT(ctx && ctx->backend);
-
  if(ctx->backend->gtls.session &&
-
     0 != gnutls_record_check_pending(ctx->backend->gtls.session))
+
  backend = (struct gtls_ssl_backend_data *)ctx->backend;
+
  if(backend->gtls.session &&
+
     0 != gnutls_record_check_pending(backend->gtls.session))
    return TRUE;
  return FALSE;
}
@@ -1406,7 +1415,8 @@ static ssize_t gtls_send(struct Curl_cfilter *cf,
                         CURLcode *curlcode)
{
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct gtls_ssl_backend_data *backend =
+
    (struct gtls_ssl_backend_data *)connssl->backend;
  ssize_t rc;

  (void)data;
@@ -1428,7 +1438,8 @@ static void gtls_close(struct Curl_cfilter *cf,
                       struct Curl_easy *data)
{
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct gtls_ssl_backend_data *backend =
+
    (struct gtls_ssl_backend_data *)connssl->backend;

  (void) data;
  DEBUGASSERT(backend);
@@ -1463,7 +1474,8 @@ static int gtls_shutdown(struct Curl_cfilter *cf,
{
  struct ssl_connect_data *connssl = cf->ctx;
  struct ssl_config_data *ssl_config = Curl_ssl_cf_get_config(cf, data);
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct gtls_ssl_backend_data *backend =
+
    (struct gtls_ssl_backend_data *)connssl->backend;
  int retval = 0;

  DEBUGASSERT(backend);
@@ -1541,7 +1553,8 @@ static ssize_t gtls_recv(struct Curl_cfilter *cf,
                         CURLcode *curlcode)
{
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct gtls_ssl_backend_data *backend =
+
    (struct gtls_ssl_backend_data *)connssl->backend;
  ssize_t ret;

  (void)data;
@@ -1620,7 +1633,8 @@ static bool gtls_cert_status_request(void)
static void *gtls_get_internals(struct ssl_connect_data *connssl,
                                CURLINFO info UNUSED_PARAM)
{
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct gtls_ssl_backend_data *backend =
+
    (struct gtls_ssl_backend_data *)connssl->backend;
  (void)info;
  DEBUGASSERT(backend);
  return backend->gtls.session;
@@ -1634,7 +1648,7 @@ const struct Curl_ssl Curl_ssl_gnutls = {
  SSLSUPP_PINNEDPUBKEY |
  SSLSUPP_HTTPS_PROXY,

-
  sizeof(struct ssl_backend_data),
+
  sizeof(struct gtls_ssl_backend_data),

  gtls_init,                     /* init */
  gtls_cleanup,                  /* cleanup */
modified external/curl/lib/vtls/mbedtls.c
@@ -81,7 +81,7 @@
#  endif
#endif

-
struct ssl_backend_data {
+
struct mbed_ssl_backend_data {
  mbedtls_ctr_drbg_context ctr_drbg;
  mbedtls_entropy_context entropy;
  mbedtls_ssl_context ssl;
@@ -255,7 +255,8 @@ static CURLcode
set_ssl_version_min_max(struct Curl_cfilter *cf, struct Curl_easy *data)
{
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct mbed_ssl_backend_data *backend =
+
    (struct mbed_ssl_backend_data *)connssl->backend;
  struct ssl_primary_config *conn_config = Curl_ssl_cf_get_primary_config(cf);
#if MBEDTLS_VERSION_NUMBER >= 0x03000000
  int mbedtls_ver_min = MBEDTLS_SSL_MINOR_VERSION_3;
@@ -307,7 +308,8 @@ static CURLcode
mbed_connect_step1(struct Curl_cfilter *cf, struct Curl_easy *data)
{
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct mbed_ssl_backend_data *backend =
+
    (struct mbed_ssl_backend_data *)connssl->backend;
  struct ssl_primary_config *conn_config = Curl_ssl_cf_get_primary_config(cf);
  const struct curl_blob *ca_info_blob = conn_config->ca_info_blob;
  struct ssl_config_data *ssl_config = Curl_ssl_cf_get_config(cf, data);
@@ -697,7 +699,8 @@ mbed_connect_step2(struct Curl_cfilter *cf, struct Curl_easy *data)
{
  int ret;
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct mbed_ssl_backend_data *backend =
+
    (struct mbed_ssl_backend_data *)connssl->backend;
  struct ssl_primary_config *conn_config = Curl_ssl_cf_get_primary_config(cf);
  const mbedtls_x509_crt *peercert;
  const char * const pinnedpubkey = Curl_ssl_cf_is_proxy(cf)?
@@ -860,7 +863,8 @@ mbed_connect_step3(struct Curl_cfilter *cf, struct Curl_easy *data)
{
  CURLcode retcode = CURLE_OK;
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct mbed_ssl_backend_data *backend =
+
    (struct mbed_ssl_backend_data *)connssl->backend;
  struct ssl_config_data *ssl_config = Curl_ssl_cf_get_config(cf, data);

  DEBUGASSERT(ssl_connect_3 == connssl->connecting_state);
@@ -915,7 +919,8 @@ static ssize_t mbed_send(struct Curl_cfilter *cf, struct Curl_easy *data,
                         CURLcode *curlcode)
{
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct mbed_ssl_backend_data *backend =
+
    (struct mbed_ssl_backend_data *)connssl->backend;
  int ret = -1;

  (void)data;
@@ -939,7 +944,8 @@ static void mbedtls_close_all(struct Curl_easy *data)
static void mbedtls_close(struct Curl_cfilter *cf, struct Curl_easy *data)
{
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct mbed_ssl_backend_data *backend =
+
    (struct mbed_ssl_backend_data *)connssl->backend;
  char buf[32];

  (void)data;
@@ -968,7 +974,8 @@ static ssize_t mbed_recv(struct Curl_cfilter *cf, struct Curl_easy *data,
                         CURLcode *curlcode)
{
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct mbed_ssl_backend_data *backend =
+
    (struct mbed_ssl_backend_data *)connssl->backend;
  int ret = -1;
  ssize_t len = -1;

@@ -1204,10 +1211,12 @@ static bool mbedtls_data_pending(struct Curl_cfilter *cf,
                                 const struct Curl_easy *data)
{
  struct ssl_connect_data *ctx = cf->ctx;
+
  struct mbed_ssl_backend_data *backend;

  (void)data;
  DEBUGASSERT(ctx && ctx->backend);
-
  return mbedtls_ssl_get_bytes_avail(&ctx->backend->ssl) != 0;
+
  backend = (struct mbed_ssl_backend_data *)ctx->backend;
+
  return mbedtls_ssl_get_bytes_avail(&backend->ssl) != 0;
}

static CURLcode mbedtls_sha256sum(const unsigned char *input,
@@ -1234,7 +1243,8 @@ static CURLcode mbedtls_sha256sum(const unsigned char *input,
static void *mbedtls_get_internals(struct ssl_connect_data *connssl,
                                   CURLINFO info UNUSED_PARAM)
{
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct mbed_ssl_backend_data *backend =
+
    (struct mbed_ssl_backend_data *)connssl->backend;
  (void)info;
  DEBUGASSERT(backend);
  return &backend->ssl;
@@ -1249,7 +1259,7 @@ const struct Curl_ssl Curl_ssl_mbedtls = {
  SSLSUPP_SSL_CTX |
  SSLSUPP_HTTPS_PROXY,

-
  sizeof(struct ssl_backend_data),
+
  sizeof(struct mbed_ssl_backend_data),

  mbedtls_init,                     /* init */
  mbedtls_cleanup,                  /* cleanup */
modified external/curl/lib/vtls/nss.c
@@ -81,7 +81,7 @@
/* enough to fit the string "PEM Token #[0|1]" */
#define SLOTSIZE 13

-
struct ssl_backend_data {
+
struct nss_ssl_backend_data {
  PRFileDesc *handle;
  char *client_nickname;
  struct Curl_easy *data;
@@ -489,7 +489,8 @@ static CURLcode nss_create_object(struct ssl_connect_data *connssl,

  const int slot_id = (cacert) ? 0 : 1;
  char *slot_name = aprintf("PEM Token #%d", slot_id);
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct nss_ssl_backend_data *backend =
+
    (struct nss_ssl_backend_data *)connssl->backend;

  DEBUGASSERT(backend);

@@ -806,7 +807,9 @@ static SECStatus nss_auth_cert_hook(void *arg, PRFileDesc *fd, PRBool checksig,
  struct Curl_cfilter *cf = (struct Curl_cfilter *)arg;
  struct ssl_connect_data *connssl = cf->ctx;
  struct ssl_primary_config *conn_config = Curl_ssl_cf_get_primary_config(cf);
-
  struct Curl_easy *data = connssl->backend->data;
+
  struct nss_ssl_backend_data *backend =
+
    (struct nss_ssl_backend_data *)connssl->backend;
+
  struct Curl_easy *data = backend->data;

  DEBUGASSERT(data);
#ifdef SSL_ENABLE_OCSP_STAPLING
@@ -851,7 +854,9 @@ static void HandshakeCallback(PRFileDesc *sock, void *arg)
{
  struct Curl_cfilter *cf = (struct Curl_cfilter *)arg;
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct Curl_easy *data = connssl->backend->data;
+
  struct nss_ssl_backend_data *backend =
+
    (struct nss_ssl_backend_data *)connssl->backend;
+
  struct Curl_easy *data = backend->data;
  unsigned int buflenmax = 50;
  unsigned char buf[50];
  unsigned int buflen;
@@ -1055,7 +1060,9 @@ static SECStatus BadCertHandler(void *arg, PRFileDesc *sock)
{
  struct Curl_cfilter *cf = (struct Curl_cfilter *)arg;
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct Curl_easy *data = connssl->backend->data;
+
  struct nss_ssl_backend_data *backend =
+
    (struct nss_ssl_backend_data *)connssl->backend;
+
  struct Curl_easy *data = backend->data;
  struct ssl_primary_config *conn_config = Curl_ssl_cf_get_primary_config(cf);
  struct ssl_config_data *ssl_config;
  PRErrorCode err = PR_GetError();
@@ -1117,7 +1124,8 @@ static CURLcode cmp_peer_pubkey(struct ssl_connect_data *connssl,
                                const char *pinnedpubkey)
{
  CURLcode result = CURLE_SSL_PINNEDPUBKEYNOTMATCH;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct nss_ssl_backend_data *backend =
+
    (struct nss_ssl_backend_data *)connssl->backend;
  struct Curl_easy *data = NULL;
  CERTCertificate *cert;

@@ -1173,7 +1181,8 @@ static SECStatus SelectClientCert(void *arg, PRFileDesc *sock,
                                  struct SECKEYPrivateKeyStr **pRetKey)
{
  struct ssl_connect_data *connssl = (struct ssl_connect_data *)arg;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct nss_ssl_backend_data *backend =
+
    (struct nss_ssl_backend_data *)connssl->backend;
  struct Curl_easy *data = NULL;
  const char *nickname = NULL;
  static const char pem_slotname[] = "PEM Token #1";
@@ -1538,7 +1547,8 @@ static void nss_cleanup(void)
static void close_one(struct ssl_connect_data *connssl)
{
  /* before the cleanup, check whether we are using a client certificate */
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct nss_ssl_backend_data *backend =
+
    (struct nss_ssl_backend_data *)connssl->backend;
  bool client_cert = true;

  DEBUGASSERT(backend);
@@ -1580,7 +1590,8 @@ static void close_one(struct ssl_connect_data *connssl)
static void nss_close(struct Curl_cfilter *cf, struct Curl_easy *data)
{
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct nss_ssl_backend_data *backend =
+
    (struct nss_ssl_backend_data *)connssl->backend;
  (void)data;
  DEBUGASSERT(backend);

@@ -1796,7 +1807,8 @@ static CURLcode nss_fail_connect(struct Curl_cfilter *cf,
                                 CURLcode curlerr)
{
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct nss_ssl_backend_data *backend =
+
    (struct nss_ssl_backend_data *)connssl->backend;

  DEBUGASSERT(backend);

@@ -1826,7 +1838,8 @@ static CURLcode nss_set_blocking(struct Curl_cfilter *cf,
{
  struct ssl_connect_data *connssl = cf->ctx;
  PRSocketOptionData sock_opt;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct nss_ssl_backend_data *backend =
+
    (struct nss_ssl_backend_data *)connssl->backend;

  DEBUGASSERT(backend);

@@ -1849,7 +1862,8 @@ static CURLcode nss_setup_connect(struct Curl_cfilter *cf,
  PRBool ssl_cbc_random_iv;
  curl_socket_t sockfd = Curl_conn_cf_get_socket(cf, data);
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct nss_ssl_backend_data *backend =
+
    (struct nss_ssl_backend_data *)connssl->backend;
  struct ssl_primary_config *conn_config = Curl_ssl_cf_get_primary_config(cf);
  struct ssl_config_data *ssl_config = Curl_ssl_cf_get_config(cf, data);
  struct Curl_cfilter *cf_ssl_next = Curl_ssl_cf_get_ssl(cf->next);
@@ -2031,14 +2045,16 @@ static CURLcode nss_setup_connect(struct Curl_cfilter *cf,
  /* Is there an SSL filter "in front" of us or are we writing directly
   * to the socket? */
  if(connssl_next) {
+
    struct nss_ssl_backend_data *backend_next =
+
      (struct nss_ssl_backend_data *)connssl_next->backend;
    /* The filter should be connected by now, with full handshake */
-
    DEBUGASSERT(connssl_next->backend->handle);
+
    DEBUGASSERT(backend_next->handle);
    DEBUGASSERT(ssl_connection_complete == connssl_next->state);
    /* We tell our NSS instance to use do IO with the 'next' NSS
    * instance. This NSS instance will take ownership of the next
    * one, including its destruction. We therefore need to `disown`
    * the next filter's handle, once import succeeds. */
-
    nspr_io = connssl_next->backend->handle;
+
    nspr_io = backend->handle;
    second_layer = TRUE;
  }
  else {
@@ -2077,8 +2093,11 @@ static CURLcode nss_setup_connect(struct Curl_cfilter *cf,

  PR_Close(model); /* We don't need this any more */
  model = NULL;
-
  if(connssl_next) /* steal the NSS handle we just imported successfully */
-
    connssl_next->backend->handle = NULL;
+
  if(connssl_next) { /* steal the NSS handle we just imported successfully */
+
    struct nss_ssl_backend_data *backend_next =
+
      (struct nss_ssl_backend_data *)connssl_next->backend;
+
    backend_next->handle = NULL;
+
  }

  /* This is the password associated with the cert that we're using */
  if(ssl_config->key_passwd) {
@@ -2154,7 +2173,8 @@ static CURLcode nss_do_connect(struct Curl_cfilter *cf,
                               struct Curl_easy *data)
{
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct nss_ssl_backend_data *backend =
+
    (struct nss_ssl_backend_data *)connssl->backend;
  struct ssl_primary_config *conn_config = Curl_ssl_cf_get_primary_config(cf);
  struct ssl_config_data *ssl_config = Curl_ssl_cf_get_config(cf, data);
  CURLcode result = CURLE_SSL_CONNECT_ERROR;
@@ -2299,7 +2319,8 @@ static ssize_t nss_send(struct Curl_cfilter *cf,
                        CURLcode *curlcode)
{
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct nss_ssl_backend_data *backend =
+
    (struct nss_ssl_backend_data *)connssl->backend;
  ssize_t rc;

  (void)data;
@@ -2337,7 +2358,9 @@ static bool
nss_data_pending(struct Curl_cfilter *cf, const struct Curl_easy *data)
{
  struct ssl_connect_data *connssl = cf->ctx;
-
  PRFileDesc *fd = connssl->backend->handle->lower;
+
  struct nss_ssl_backend_data *backend =
+
    (struct nss_ssl_backend_data *)connssl->backend;
+
  PRFileDesc *fd = backend->handle->lower;
  char buf;

  (void) data;
@@ -2353,7 +2376,8 @@ static ssize_t nss_recv(struct Curl_cfilter *cf,
                        CURLcode *curlcode)
{
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct nss_ssl_backend_data *backend =
+
    (struct nss_ssl_backend_data *)connssl->backend;
  ssize_t nread;

  (void)data;
@@ -2455,7 +2479,8 @@ static bool nss_false_start(void)
static void *nss_get_internals(struct ssl_connect_data *connssl,
                               CURLINFO info UNUSED_PARAM)
{
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct nss_ssl_backend_data *backend =
+
    (struct nss_ssl_backend_data *)connssl->backend;
  (void)info;
  DEBUGASSERT(backend);
  return backend->handle;
@@ -2465,9 +2490,11 @@ static bool nss_attach_data(struct Curl_cfilter *cf,
                            struct Curl_easy *data)
{
  struct ssl_connect_data *connssl = cf->ctx;
+
  struct nss_ssl_backend_data *backend =
+
    (struct nss_ssl_backend_data *)connssl->backend;

-
  if(!connssl->backend->data)
-
    connssl->backend->data = data;
+
  if(!backend->data)
+
    backend->data = data;
  return TRUE;
}

@@ -2475,9 +2502,11 @@ static void nss_detach_data(struct Curl_cfilter *cf,
                            struct Curl_easy *data)
{
  struct ssl_connect_data *connssl = cf->ctx;
+
  struct nss_ssl_backend_data *backend =
+
    (struct nss_ssl_backend_data *)connssl->backend;

-
  if(connssl->backend->data == data)
-
    connssl->backend->data = NULL;
+
  if(backend->data == data)
+
    backend->data = NULL;
}

const struct Curl_ssl Curl_ssl_nss = {
@@ -2488,7 +2517,7 @@ const struct Curl_ssl Curl_ssl_nss = {
  SSLSUPP_PINNEDPUBKEY |
  SSLSUPP_HTTPS_PROXY,

-
  sizeof(struct ssl_backend_data),
+
  sizeof(struct nss_ssl_backend_data),

  nss_init,                     /* init */
  nss_cleanup,                  /* cleanup */
modified external/curl/lib/vtls/openssl.c
@@ -288,7 +288,7 @@ typedef unsigned long sslerr_t;
#define USE_PRE_1_1_API (OPENSSL_VERSION_NUMBER < 0x10100000L)
#endif /* !LIBRESSL_VERSION_NUMBER */

-
struct ssl_backend_data {
+
struct ossl_ssl_backend_data {
  /* these ones requires specific SSL-types */
  SSL_CTX* ctx;
  SSL*     handle;
@@ -714,6 +714,8 @@ static int bio_cf_out_write(BIO *bio, const char *buf, int blen)
{
  struct Curl_cfilter *cf = BIO_get_data(bio);
  struct ssl_connect_data *connssl = cf->ctx;
+
  struct ossl_ssl_backend_data *backend =
+
    (struct ossl_ssl_backend_data *)connssl->backend;
  struct Curl_easy *data = CF_DATA_CURRENT(cf);
  ssize_t nwritten;
  CURLcode result = CURLE_SEND_ERROR;
@@ -723,7 +725,7 @@ static int bio_cf_out_write(BIO *bio, const char *buf, int blen)
  DEBUGF(LOG_CF(data, cf, "bio_cf_out_write(len=%d) -> %d, err=%d",
                blen, (int)nwritten, result));
  BIO_clear_retry_flags(bio);
-
  connssl->backend->io_result = result;
+
  backend->io_result = result;
  if(nwritten < 0) {
    if(CURLE_AGAIN == result)
      BIO_set_retry_write(bio);
@@ -735,6 +737,8 @@ static int bio_cf_in_read(BIO *bio, char *buf, int blen)
{
  struct Curl_cfilter *cf = BIO_get_data(bio);
  struct ssl_connect_data *connssl = cf->ctx;
+
  struct ossl_ssl_backend_data *backend =
+
    (struct ossl_ssl_backend_data *)connssl->backend;
  struct Curl_easy *data = CF_DATA_CURRENT(cf);
  ssize_t nread;
  CURLcode result = CURLE_RECV_ERROR;
@@ -748,7 +752,7 @@ static int bio_cf_in_read(BIO *bio, char *buf, int blen)
  DEBUGF(LOG_CF(data, cf, "bio_cf_in_read(len=%d) -> %d, err=%d",
                blen, (int)nread, result));
  BIO_clear_retry_flags(bio);
-
  connssl->backend->io_result = result;
+
  backend->io_result = result;
  if(nread < 0) {
    if(CURLE_AGAIN == result)
      BIO_set_retry_read(bio);
@@ -756,13 +760,13 @@ static int bio_cf_in_read(BIO *bio, char *buf, int blen)

  /* Before returning server replies to the SSL instance, we need
   * to have setup the x509 store or verification will fail. */
-
  if(!connssl->backend->x509_store_setup) {
-
    result = Curl_ssl_setup_x509_store(cf, data, connssl->backend->ctx);
+
  if(!backend->x509_store_setup) {
+
    result = Curl_ssl_setup_x509_store(cf, data, backend->ctx);
    if(result) {
-
      connssl->backend->io_result = result;
+
      backend->io_result = result;
      return -1;
    }
-
    connssl->backend->x509_store_setup = TRUE;
+
    backend->x509_store_setup = TRUE;
  }

  return (int)nread;
@@ -1877,7 +1881,8 @@ static struct curl_slist *ossl_engines_list(struct Curl_easy *data)
static void ossl_close(struct Curl_cfilter *cf, struct Curl_easy *data)
{
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct ossl_ssl_backend_data *backend =
+
    (struct ossl_ssl_backend_data *)connssl->backend;

  (void)data;
  DEBUGASSERT(backend);
@@ -1923,7 +1928,8 @@ static int ossl_shutdown(struct Curl_cfilter *cf,
  int buffsize;
  int err;
  bool done = FALSE;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct ossl_ssl_backend_data *backend =
+
    (struct ossl_ssl_backend_data *)connssl->backend;
  int loop = 10;

  DEBUGASSERT(backend);
@@ -2321,7 +2327,8 @@ static CURLcode verifystatus(struct Curl_cfilter *cf,
  OCSP_BASICRESP *br = NULL;
  X509_STORE     *st = NULL;
  STACK_OF(X509) *ch = NULL;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct ossl_ssl_backend_data *backend =
+
    (struct ossl_ssl_backend_data *)connssl->backend;
  X509 *cert;
  OCSP_CERTID *id = NULL;
  int cert_status, crl_reason;
@@ -2713,7 +2720,7 @@ static void ossl_trace(int direction, int ssl_ver, int content_type,

#if (OPENSSL_VERSION_NUMBER >= 0x10100000L) /* 1.1.0 */
static CURLcode
-
set_ssl_version_min_max(struct Curl_cfilter *cf, SSL_CTX *ctx)
+
ossl_set_ssl_version_min_max(struct Curl_cfilter *cf, SSL_CTX *ctx)
{
  struct ssl_primary_config *conn_config = Curl_ssl_cf_get_primary_config(cf);
  /* first, TLS min version... */
@@ -2810,9 +2817,9 @@ typedef long ctx_option_t;

#if (OPENSSL_VERSION_NUMBER < 0x10100000L) /* 1.1.0 */
static CURLcode
-
set_ssl_version_min_max_legacy(ctx_option_t *ctx_options,
-
                               struct Curl_cfilter *cf,
-
                               struct Curl_easy *data)
+
ossl_set_ssl_version_min_max_legacy(ctx_option_t *ctx_options,
+
                                       struct Curl_cfilter *cf,
+
                                       struct Curl_easy *data)
{
  struct ssl_primary_config *conn_config = Curl_ssl_cf_get_primary_config(cf);
  long ssl_version = conn_config->version;
@@ -2825,8 +2832,10 @@ set_ssl_version_min_max_legacy(ctx_option_t *ctx_options,
#ifdef TLS1_3_VERSION
  {
    struct ssl_connect_data *connssl = cf->ctx;
-
    DEBUGASSERT(connssl->backend);
-
    SSL_CTX_set_max_proto_version(connssl->backend->ctx, TLS1_3_VERSION);
+
    struct ossl_ssl_backend_data *backend =
+
      (struct ossl_ssl_backend_data *)connssl->backend;
+
    DEBUGASSERT(backend);
+
    SSL_CTX_set_max_proto_version(backend->ctx, TLS1_3_VERSION);
    *ctx_options |= SSL_OP_NO_TLSv1_2;
  }
#else
@@ -3431,7 +3440,8 @@ static CURLcode ossl_connect_step1(struct Curl_cfilter *cf,
  const char * const ssl_cert_type = ssl_config->cert_type;
  const bool verifypeer = conn_config->verifypeer;
  char error_buffer[256];
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct ossl_ssl_backend_data *backend =
+
    (struct ossl_ssl_backend_data *)connssl->backend;

  DEBUGASSERT(ssl_connect_1 == connssl->connecting_state);
  DEBUGASSERT(backend);
@@ -3573,9 +3583,9 @@ static CURLcode ossl_connect_step1(struct Curl_cfilter *cf,
    ctx_options |= SSL_OP_NO_SSLv3;

#if (OPENSSL_VERSION_NUMBER >= 0x10100000L) /* 1.1.0 */
-
    result = set_ssl_version_min_max(cf, backend->ctx);
+
    result = ossl_set_ssl_version_min_max(cf, backend->ctx);
#else
-
    result = set_ssl_version_min_max_legacy(&ctx_options, cf, data);
+
    result = ossl_set_ssl_version_min_max_legacy(&ctx_options, cf, data);
#endif
    if(result != CURLE_OK)
      return result;
@@ -3804,7 +3814,8 @@ static CURLcode ossl_connect_step2(struct Curl_cfilter *cf,
{
  int err;
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct ossl_ssl_backend_data *backend =
+
    (struct ossl_ssl_backend_data *)connssl->backend;
  struct ssl_config_data *ssl_config = Curl_ssl_cf_get_config(cf, data);
  DEBUGASSERT(ssl_connect_2 == connssl->connecting_state
              || ssl_connect_2_reading == connssl->connecting_state
@@ -3967,8 +3978,8 @@ static CURLcode ossl_connect_step2(struct Curl_cfilter *cf,
 * Heavily modified from:
 * https://www.owasp.org/index.php/Certificate_and_Public_Key_Pinning#OpenSSL
 */
-
static CURLcode pkp_pin_peer_pubkey(struct Curl_easy *data, X509* cert,
-
                                    const char *pinnedpubkey)
+
static CURLcode ossl_pkp_pin_peer_pubkey(struct Curl_easy *data, X509* cert,
+
                                         const char *pinnedpubkey)
{
  /* Scratch */
  int len1 = 0, len2 = 0;
@@ -4046,7 +4057,8 @@ static CURLcode servercert(struct Curl_cfilter *cf,
  char buffer[2048];
  const char *ptr;
  BIO *mem = BIO_new(BIO_s_mem());
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct ossl_ssl_backend_data *backend =
+
    (struct ossl_ssl_backend_data *)connssl->backend;

  DEBUGASSERT(backend);

@@ -4061,7 +4073,7 @@ static CURLcode servercert(struct Curl_cfilter *cf,

  if(data->set.ssl.certinfo)
    /* asked to gather certificate info */
-
    (void)Curl_ossl_certchain(data, connssl->backend->handle);
+
    (void)Curl_ossl_certchain(data, backend->handle);

  backend->server_cert = SSL_get1_peer_certificate(backend->handle);
  if(!backend->server_cert) {
@@ -4229,7 +4241,7 @@ static CURLcode servercert(struct Curl_cfilter *cf,
    data->set.str[STRING_SSL_PINNEDPUBLICKEY_PROXY]:
    data->set.str[STRING_SSL_PINNEDPUBLICKEY];
  if(!result && ptr) {
-
    result = pkp_pin_peer_pubkey(data, backend->server_cert, ptr);
+
    result = ossl_pkp_pin_peer_pubkey(data, backend->server_cert, ptr);
    if(result)
      failf(data, "SSL: public key does not match pinned public key");
  }
@@ -4398,11 +4410,13 @@ static CURLcode ossl_connect(struct Curl_cfilter *cf,
static bool ossl_data_pending(struct Curl_cfilter *cf,
                              const struct Curl_easy *data)
{
-
  struct ssl_connect_data *ctx = cf->ctx;
+
  struct ssl_connect_data *connssl = cf->ctx;
+
  struct ossl_ssl_backend_data *backend =
+
    (struct ossl_ssl_backend_data *)connssl->backend;

  (void)data;
-
  DEBUGASSERT(ctx && ctx->backend);
-
  if(ctx->backend->handle && SSL_pending(ctx->backend->handle))
+
  DEBUGASSERT(connssl && backend);
+
  if(backend->handle && SSL_pending(backend->handle))
    return TRUE;
  return FALSE;
}
@@ -4421,7 +4435,8 @@ static ssize_t ossl_send(struct Curl_cfilter *cf,
  int memlen;
  int rc;
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct ossl_ssl_backend_data *backend =
+
    (struct ossl_ssl_backend_data *)connssl->backend;

  (void)data;
  DEBUGASSERT(backend);
@@ -4517,7 +4532,8 @@ static ssize_t ossl_recv(struct Curl_cfilter *cf,
  int buffsize;
  struct connectdata *conn = cf->conn;
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct ossl_ssl_backend_data *backend =
+
    (struct ossl_ssl_backend_data *)connssl->backend;

  (void)data;
  DEBUGASSERT(backend);
@@ -4740,7 +4756,8 @@ static void *ossl_get_internals(struct ssl_connect_data *connssl,
                                CURLINFO info)
{
  /* Legacy: CURLINFO_TLS_SESSION must return an SSL_CTX pointer. */
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct ossl_ssl_backend_data *backend =
+
    (struct ossl_ssl_backend_data *)connssl->backend;
  DEBUGASSERT(backend);
  return info == CURLINFO_TLS_SESSION ?
    (void *)backend->ctx : (void *)backend->handle;
@@ -4773,7 +4790,7 @@ const struct Curl_ssl Curl_ssl_openssl = {
#endif
  SSLSUPP_HTTPS_PROXY,

-
  sizeof(struct ssl_backend_data),
+
  sizeof(struct ossl_ssl_backend_data),

  ossl_init,                /* init */
  ossl_cleanup,             /* cleanup */
modified external/curl/lib/vtls/rustls.c
@@ -40,7 +40,7 @@
#include "strerror.h"
#include "multiif.h"

-
struct ssl_backend_data
+
struct rustls_ssl_backend_data
{
  const struct rustls_client_config *config;
  struct rustls_connection *conn;
@@ -67,10 +67,12 @@ static bool
cr_data_pending(struct Curl_cfilter *cf, const struct Curl_easy *data)
{
  struct ssl_connect_data *ctx = cf->ctx;
+
  struct rustls_ssl_backend_data *backend;

  (void)data;
  DEBUGASSERT(ctx && ctx->backend);
-
  return ctx->backend->data_pending;
+
  backend = (struct rustls_ssl_backend_data *)ctx->backend;
+
  return backend->data_pending;
}

static CURLcode
@@ -136,7 +138,8 @@ static ssize_t tls_recv_more(struct Curl_cfilter *cf,
                             struct Curl_easy *data, CURLcode *err)
{
  struct ssl_connect_data *const connssl = cf->ctx;
-
  struct ssl_backend_data *const backend = connssl->backend;
+
  struct rustls_ssl_backend_data *const backend =
+
    (struct rustls_ssl_backend_data *)connssl->backend;
  struct io_ctx io_ctx;
  size_t tls_bytes_read = 0;
  rustls_io_result io_error;
@@ -191,7 +194,8 @@ cr_recv(struct Curl_cfilter *cf, struct Curl_easy *data,
            char *plainbuf, size_t plainlen, CURLcode *err)
{
  struct ssl_connect_data *const connssl = cf->ctx;
-
  struct ssl_backend_data *const backend = connssl->backend;
+
  struct rustls_ssl_backend_data *const backend =
+
    (struct rustls_ssl_backend_data *)connssl->backend;
  struct rustls_connection *rconn = NULL;
  size_t n = 0;
  size_t plain_bytes_copied = 0;
@@ -283,7 +287,8 @@ cr_send(struct Curl_cfilter *cf, struct Curl_easy *data,
        const void *plainbuf, size_t plainlen, CURLcode *err)
{
  struct ssl_connect_data *const connssl = cf->ctx;
-
  struct ssl_backend_data *const backend = connssl->backend;
+
  struct rustls_ssl_backend_data *const backend =
+
    (struct rustls_ssl_backend_data *)connssl->backend;
  struct rustls_connection *rconn = NULL;
  struct io_ctx io_ctx;
  size_t plainwritten = 0;
@@ -373,7 +378,7 @@ cr_hostname_is_ip(const char *hostname)

static CURLcode
cr_init_backend(struct Curl_cfilter *cf, struct Curl_easy *data,
-
                struct ssl_backend_data *const backend)
+
                struct rustls_ssl_backend_data *const backend)
{
  struct ssl_connect_data *connssl = cf->ctx;
  struct ssl_primary_config *conn_config = Curl_ssl_cf_get_primary_config(cf);
@@ -491,7 +496,8 @@ cr_connect_nonblocking(struct Curl_cfilter *cf,
{
  struct ssl_connect_data *const connssl = cf->ctx;
  curl_socket_t sockfd = Curl_conn_cf_get_socket(cf, data);
-
  struct ssl_backend_data *const backend = connssl->backend;
+
  struct rustls_ssl_backend_data *const backend =
+
    (struct rustls_ssl_backend_data *)connssl->backend;
  struct rustls_connection *rconn = NULL;
  CURLcode tmperr = CURLE_OK;
  int result;
@@ -504,7 +510,8 @@ cr_connect_nonblocking(struct Curl_cfilter *cf,
  DEBUGASSERT(backend);

  if(ssl_connection_none == connssl->state) {
-
    result = cr_init_backend(cf, data, connssl->backend);
+
    result = cr_init_backend(cf, data,
+
               (struct rustls_ssl_backend_data *)connssl->backend);
    if(result != CURLE_OK) {
      return result;
    }
@@ -594,7 +601,8 @@ cr_get_select_socks(struct Curl_cfilter *cf, struct Curl_easy *data,
{
  struct ssl_connect_data *const connssl = cf->ctx;
  curl_socket_t sockfd = Curl_conn_cf_get_socket(cf, data);
-
  struct ssl_backend_data *const backend = connssl->backend;
+
  struct rustls_ssl_backend_data *const backend =
+
    (struct rustls_ssl_backend_data *)connssl->backend;
  struct rustls_connection *rconn = NULL;

  (void)data;
@@ -617,7 +625,8 @@ static void *
cr_get_internals(struct ssl_connect_data *connssl,
                 CURLINFO info UNUSED_PARAM)
{
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct rustls_ssl_backend_data *backend =
+
    (struct rustls_ssl_backend_data *)connssl->backend;
  DEBUGASSERT(backend);
  return &backend->conn;
}
@@ -626,7 +635,8 @@ static void
cr_close(struct Curl_cfilter *cf, struct Curl_easy *data)
{
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct rustls_ssl_backend_data *backend =
+
    (struct rustls_ssl_backend_data *)connssl->backend;
  CURLcode tmperr = CURLE_OK;
  ssize_t n = 0;

@@ -659,7 +669,7 @@ const struct Curl_ssl Curl_ssl_rustls = {
  SSLSUPP_CAINFO_BLOB |            /* supports */
  SSLSUPP_TLS13_CIPHERSUITES |
  SSLSUPP_HTTPS_PROXY,
-
  sizeof(struct ssl_backend_data),
+
  sizeof(struct rustls_ssl_backend_data),

  Curl_none_init,                  /* init */
  Curl_none_cleanup,               /* cleanup */
modified external/curl/lib/vtls/schannel.c
@@ -33,13 +33,12 @@

#ifdef USE_SCHANNEL

-
#define EXPOSE_SCHANNEL_INTERNAL_STRUCTS
-

#ifndef USE_WINDOWS_SSPI
#  error "Can't compile SCHANNEL support without SSPI."
#endif

#include "schannel.h"
+
#include "schannel_int.h"
#include "vtls.h"
#include "vtls_int.h"
#include "strcase.h"
@@ -186,9 +185,9 @@
#define PKCS12_NO_PERSIST_KEY 0x00008000
#endif

-
static CURLcode pkp_pin_peer_pubkey(struct Curl_cfilter *cf,
-
                                    struct Curl_easy *data,
-
                                    const char *pinnedpubkey);
+
static CURLcode schannel_pkp_pin_peer_pubkey(struct Curl_cfilter *cf,
+
                                             struct Curl_easy *data,
+
                                             const char *pinnedpubkey);

static void InitSecBuffer(SecBuffer *buffer, unsigned long BufType,
                          void *BufDataPtr, unsigned long BufByteSize)
@@ -207,9 +206,9 @@ static void InitSecBufferDesc(SecBufferDesc *desc, SecBuffer *BufArr,
}

static CURLcode
-
set_ssl_version_min_max(DWORD *enabled_protocols,
-
                        struct Curl_cfilter *cf,
-
                        struct Curl_easy *data)
+
schannel_set_ssl_version_min_max(DWORD *enabled_protocols,
+
                                 struct Curl_cfilter *cf,
+
                                 struct Curl_easy *data)
{
  struct ssl_primary_config *conn_config = Curl_ssl_cf_get_primary_config(cf);
  long ssl_version = conn_config->version;
@@ -500,7 +499,8 @@ schannel_acquire_credential_handle(struct Curl_cfilter *cf,
  DWORD flags = 0;
  DWORD enabled_protocols = 0;

-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct schannel_ssl_backend_data *backend =
+
    (struct schannel_ssl_backend_data *)(connssl->backend);

  DEBUGASSERT(backend);

@@ -563,7 +563,7 @@ schannel_acquire_credential_handle(struct Curl_cfilter *cf,
  case CURL_SSLVERSION_TLSv1_2:
  case CURL_SSLVERSION_TLSv1_3:
  {
-
    result = set_ssl_version_min_max(&enabled_protocols, cf, data);
+
    result = schannel_set_ssl_version_min_max(&enabled_protocols, cf, data);
    if(result != CURLE_OK)
      return result;
    break;
@@ -1075,7 +1075,8 @@ schannel_connect_step1(struct Curl_cfilter *cf, struct Curl_easy *data)
{
  ssize_t written = -1;
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct schannel_ssl_backend_data *backend =
+
    (struct schannel_ssl_backend_data *)connssl->backend;
  struct ssl_primary_config *conn_config = Curl_ssl_cf_get_primary_config(cf);
  struct ssl_config_data *ssl_config = Curl_ssl_cf_get_config(cf, data);
  SecBuffer outbuf;
@@ -1349,7 +1350,8 @@ static CURLcode
schannel_connect_step2(struct Curl_cfilter *cf, struct Curl_easy *data)
{
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct schannel_ssl_backend_data *backend =
+
    (struct schannel_ssl_backend_data *)connssl->backend;
  struct ssl_primary_config *conn_config = Curl_ssl_cf_get_primary_config(cf);
  int i;
  ssize_t nread = -1, written = -1;
@@ -1607,7 +1609,7 @@ schannel_connect_step2(struct Curl_cfilter *cf, struct Curl_easy *data)
    data->set.str[STRING_SSL_PINNEDPUBLICKEY_PROXY]:
    data->set.str[STRING_SSL_PINNEDPUBLICKEY];
  if(pubkey_ptr) {
-
    result = pkp_pin_peer_pubkey(cf, data, pubkey_ptr);
+
    result = schannel_pkp_pin_peer_pubkey(cf, data, pubkey_ptr);
    if(result) {
      failf(data, "SSL: public key does not match pinned public key");
      return result;
@@ -1686,7 +1688,8 @@ static CURLcode
schannel_connect_step3(struct Curl_cfilter *cf, struct Curl_easy *data)
{
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct schannel_ssl_backend_data *backend =
+
    (struct schannel_ssl_backend_data *)connssl->backend;
  struct ssl_config_data *ssl_config = Curl_ssl_cf_get_config(cf, data);
  CURLcode result = CURLE_OK;
  SECURITY_STATUS sspi_status = SEC_E_OK;
@@ -1931,7 +1934,8 @@ schannel_connect_common(struct Curl_cfilter *cf,
     * Available on Windows 7 or later.
     */
    {
-
      struct ssl_backend_data *backend = connssl->backend;
+
      struct schannel_ssl_backend_data *backend =
+
        (struct schannel_ssl_backend_data *)connssl->backend;
      DEBUGASSERT(backend);
      cf->conn->sslContext = &backend->ctxt->ctxt_handle;
    }
@@ -1960,7 +1964,8 @@ schannel_send(struct Curl_cfilter *cf, struct Curl_easy *data,
  SecBufferDesc outbuf_desc;
  SECURITY_STATUS sspi_status = SEC_E_OK;
  CURLcode result;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct schannel_ssl_backend_data *backend =
+
    (struct schannel_ssl_backend_data *)connssl->backend;

  DEBUGASSERT(backend);

@@ -2110,7 +2115,8 @@ schannel_recv(struct Curl_cfilter *cf, struct Curl_easy *data,
  /* we want the length of the encrypted buffer to be at least large enough
     that it can hold all the bytes requested and some TLS record overhead. */
  size_t min_encdata_length = len + CURL_SCHANNEL_BUFFER_FREE_SIZE;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct schannel_ssl_backend_data *backend =
+
    (struct schannel_ssl_backend_data *)connssl->backend;

  DEBUGASSERT(backend);

@@ -2443,12 +2449,13 @@ static bool schannel_data_pending(struct Curl_cfilter *cf,
                                  const struct Curl_easy *data)
{
  const struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct schannel_ssl_backend_data *backend =
+
    (struct schannel_ssl_backend_data *)connssl->backend;

  (void)data;
  DEBUGASSERT(backend);

-
  if(connssl->backend->ctxt) /* SSL/TLS is in use */
+
  if(backend->ctxt) /* SSL/TLS is in use */
    return (backend->decdata_offset > 0 ||
            (backend->encdata_offset > 0 && !backend->encdata_is_incomplete));
  else
@@ -2486,12 +2493,13 @@ static int schannel_shutdown(struct Curl_cfilter *cf,
   * Shutting Down an Schannel Connection
   */
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct schannel_ssl_backend_data *backend =
+
    (struct schannel_ssl_backend_data *)connssl->backend;

  DEBUGASSERT(data);
  DEBUGASSERT(backend);

-
  if(connssl->backend->ctxt) {
+
  if(backend->ctxt) {
    infof(data, "schannel: shutting down SSL/TLS connection with %s port %d",
          connssl->hostname, connssl->port);
  }
@@ -2611,12 +2619,13 @@ static CURLcode schannel_random(struct Curl_easy *data UNUSED_PARAM,
  return Curl_win32_random(entropy, length);
}

-
static CURLcode pkp_pin_peer_pubkey(struct Curl_cfilter *cf,
-
                                    struct Curl_easy *data,
-
                                    const char *pinnedpubkey)
+
static CURLcode schannel_pkp_pin_peer_pubkey(struct Curl_cfilter *cf,
+
                                             struct Curl_easy *data,
+
                                             const char *pinnedpubkey)
{
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct schannel_ssl_backend_data *backend =
+
    (struct schannel_ssl_backend_data *)connssl->backend;
  CERT_CONTEXT *pCertContextServer = NULL;

  /* Result is returned to caller */
@@ -2742,7 +2751,8 @@ static CURLcode schannel_sha256sum(const unsigned char *input,
static void *schannel_get_internals(struct ssl_connect_data *connssl,
                                    CURLINFO info UNUSED_PARAM)
{
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct schannel_ssl_backend_data *backend =
+
    (struct schannel_ssl_backend_data *)connssl->backend;
  (void)info;
  DEBUGASSERT(backend);
  return &backend->ctxt->ctxt_handle;
@@ -2759,7 +2769,7 @@ const struct Curl_ssl Curl_ssl_schannel = {
  SSLSUPP_TLS13_CIPHERSUITES |
  SSLSUPP_HTTPS_PROXY,

-
  sizeof(struct ssl_backend_data),
+
  sizeof(struct schannel_ssl_backend_data),

  schannel_init,                     /* init */
  schannel_cleanup,                  /* cleanup */
modified external/curl/lib/vtls/schannel.h
@@ -28,8 +28,6 @@

#ifdef USE_SCHANNEL

-
#define SCHANNEL_USE_BLACKLISTS 1
-

#ifdef _MSC_VER
#pragma warning(push)
#pragma warning(disable: 4201)
@@ -81,119 +79,5 @@ extern const struct Curl_ssl Curl_ssl_schannel;
CURLcode Curl_verify_certificate(struct Curl_cfilter *cf,
                                 struct Curl_easy *data);

-
/* structs to expose only in schannel.c and schannel_verify.c */
-
#ifdef EXPOSE_SCHANNEL_INTERNAL_STRUCTS
-

-
#ifdef __MINGW32__
-
#ifdef __MINGW64_VERSION_MAJOR
-
#define HAS_MANUAL_VERIFY_API
-
#endif
-
#else
-
#ifdef CERT_CHAIN_REVOCATION_CHECK_CHAIN
-
#define HAS_MANUAL_VERIFY_API
-
#endif
-
#endif
-

-
#if defined(CryptStringToBinary) && defined(CRYPT_STRING_HEX)   \
-
  && !defined(DISABLE_SCHANNEL_CLIENT_CERT)
-
#define HAS_CLIENT_CERT_PATH
-
#endif
-

-
#ifndef SCH_CREDENTIALS_VERSION
-

-
#define SCH_CREDENTIALS_VERSION  0x00000005
-

-
typedef enum _eTlsAlgorithmUsage
-
{
-
    TlsParametersCngAlgUsageKeyExchange,
-
    TlsParametersCngAlgUsageSignature,
-
    TlsParametersCngAlgUsageCipher,
-
    TlsParametersCngAlgUsageDigest,
-
    TlsParametersCngAlgUsageCertSig
-
} eTlsAlgorithmUsage;
-

-
typedef struct _CRYPTO_SETTINGS
-
{
-
    eTlsAlgorithmUsage  eAlgorithmUsage;
-
    UNICODE_STRING      strCngAlgId;
-
    DWORD               cChainingModes;
-
    PUNICODE_STRING     rgstrChainingModes;
-
    DWORD               dwMinBitLength;
-
    DWORD               dwMaxBitLength;
-
} CRYPTO_SETTINGS, * PCRYPTO_SETTINGS;
-

-
typedef struct _TLS_PARAMETERS
-
{
-
    DWORD               cAlpnIds;
-
    PUNICODE_STRING     rgstrAlpnIds;
-
    DWORD               grbitDisabledProtocols;
-
    DWORD               cDisabledCrypto;
-
    PCRYPTO_SETTINGS    pDisabledCrypto;
-
    DWORD               dwFlags;
-
} TLS_PARAMETERS, * PTLS_PARAMETERS;
-

-
typedef struct _SCH_CREDENTIALS
-
{
-
    DWORD               dwVersion;
-
    DWORD               dwCredFormat;
-
    DWORD               cCreds;
-
    PCCERT_CONTEXT* paCred;
-
    HCERTSTORE          hRootStore;
-

-
    DWORD               cMappers;
-
    struct _HMAPPER **aphMappers;
-

-
    DWORD               dwSessionLifespan;
-
    DWORD               dwFlags;
-
    DWORD               cTlsParameters;
-
    PTLS_PARAMETERS     pTlsParameters;
-
} SCH_CREDENTIALS, * PSCH_CREDENTIALS;
-

-
#define SCH_CRED_MAX_SUPPORTED_PARAMETERS 16
-
#define SCH_CRED_MAX_SUPPORTED_ALPN_IDS 16
-
#define SCH_CRED_MAX_SUPPORTED_CRYPTO_SETTINGS 16
-
#define SCH_CRED_MAX_SUPPORTED_CHAINING_MODES 16
-

-
#endif
-

-
struct Curl_schannel_cred {
-
  CredHandle cred_handle;
-
  TimeStamp time_stamp;
-
  TCHAR *sni_hostname;
-
#ifdef HAS_CLIENT_CERT_PATH
-
  HCERTSTORE client_cert_store;
-
#endif
-
  int refcount;
-
};
-

-
struct Curl_schannel_ctxt {
-
  CtxtHandle ctxt_handle;
-
  TimeStamp time_stamp;
-
};
-

-
struct ssl_backend_data {
-
  struct Curl_schannel_cred *cred;
-
  struct Curl_schannel_ctxt *ctxt;
-
  SecPkgContext_StreamSizes stream_sizes;
-
  size_t encdata_length, decdata_length;
-
  size_t encdata_offset, decdata_offset;
-
  unsigned char *encdata_buffer, *decdata_buffer;
-
  /* encdata_is_incomplete: if encdata contains only a partial record that
-
     can't be decrypted without another recv() (that is, status is
-
     SEC_E_INCOMPLETE_MESSAGE) then set this true. after an recv() adds
-
     more bytes into encdata then set this back to false. */
-
  bool encdata_is_incomplete;
-
  unsigned long req_flags, ret_flags;
-
  CURLcode recv_unrecoverable_err; /* schannel_recv had an unrecoverable err */
-
  bool recv_sspi_close_notify; /* true if connection closed by close_notify */
-
  bool recv_connection_closed; /* true if connection closed, regardless how */
-
  bool recv_renegotiating;     /* true if recv is doing renegotiation */
-
  bool use_alpn; /* true if ALPN is used for this connection */
-
#ifdef HAS_MANUAL_VERIFY_API
-
  bool use_manual_cred_validation; /* true if manual cred validation is used */
-
#endif
-
};
-
#endif /* EXPOSE_SCHANNEL_INTERNAL_STRUCTS */
-

#endif /* USE_SCHANNEL */
#endif /* HEADER_CURL_SCHANNEL_H */
added external/curl/lib/vtls/schannel_int.h
@@ -0,0 +1,142 @@
+
#ifndef HEADER_CURL_SCHANNEL_INT_H
+
#define HEADER_CURL_SCHANNEL_INT_H
+
/***************************************************************************
+
 *                                  _   _ ____  _
+
 *  Project                     ___| | | |  _ \| |
+
 *                             / __| | | | |_) | |
+
 *                            | (__| |_| |  _ <| |___
+
 *                             \___|\___/|_| \_\_____|
+
 *
+
 * Copyright (C) Marc Hoersken, <info@marc-hoersken.de>, et al.
+
 * Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
+
 *
+
 * This software is licensed as described in the file COPYING, which
+
 * you should have received as part of this distribution. The terms
+
 * are also available at https://curl.se/docs/copyright.html.
+
 *
+
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+
 * copies of the Software, and permit persons to whom the Software is
+
 * furnished to do so, under the terms of the COPYING file.
+
 *
+
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+
 * KIND, either express or implied.
+
 *
+
 * SPDX-License-Identifier: curl
+
 *
+
 ***************************************************************************/
+
#include "curl_setup.h"
+

+
#ifdef USE_SCHANNEL
+

+
#ifdef __MINGW32__
+
#ifdef __MINGW64_VERSION_MAJOR
+
#define HAS_MANUAL_VERIFY_API
+
#endif
+
#else
+
#ifdef CERT_CHAIN_REVOCATION_CHECK_CHAIN
+
#define HAS_MANUAL_VERIFY_API
+
#endif
+
#endif
+

+
#if defined(CryptStringToBinary) && defined(CRYPT_STRING_HEX)   \
+
  && !defined(DISABLE_SCHANNEL_CLIENT_CERT)
+
#define HAS_CLIENT_CERT_PATH
+
#endif
+

+
#ifndef SCH_CREDENTIALS_VERSION
+

+
#define SCH_CREDENTIALS_VERSION  0x00000005
+

+
typedef enum _eTlsAlgorithmUsage
+
{
+
    TlsParametersCngAlgUsageKeyExchange,
+
    TlsParametersCngAlgUsageSignature,
+
    TlsParametersCngAlgUsageCipher,
+
    TlsParametersCngAlgUsageDigest,
+
    TlsParametersCngAlgUsageCertSig
+
} eTlsAlgorithmUsage;
+

+
typedef struct _CRYPTO_SETTINGS
+
{
+
    eTlsAlgorithmUsage  eAlgorithmUsage;
+
    UNICODE_STRING      strCngAlgId;
+
    DWORD               cChainingModes;
+
    PUNICODE_STRING     rgstrChainingModes;
+
    DWORD               dwMinBitLength;
+
    DWORD               dwMaxBitLength;
+
} CRYPTO_SETTINGS, * PCRYPTO_SETTINGS;
+

+
typedef struct _TLS_PARAMETERS
+
{
+
    DWORD               cAlpnIds;
+
    PUNICODE_STRING     rgstrAlpnIds;
+
    DWORD               grbitDisabledProtocols;
+
    DWORD               cDisabledCrypto;
+
    PCRYPTO_SETTINGS    pDisabledCrypto;
+
    DWORD               dwFlags;
+
} TLS_PARAMETERS, * PTLS_PARAMETERS;
+

+
typedef struct _SCH_CREDENTIALS
+
{
+
    DWORD               dwVersion;
+
    DWORD               dwCredFormat;
+
    DWORD               cCreds;
+
    PCCERT_CONTEXT* paCred;
+
    HCERTSTORE          hRootStore;
+

+
    DWORD               cMappers;
+
    struct _HMAPPER **aphMappers;
+

+
    DWORD               dwSessionLifespan;
+
    DWORD               dwFlags;
+
    DWORD               cTlsParameters;
+
    PTLS_PARAMETERS     pTlsParameters;
+
} SCH_CREDENTIALS, * PSCH_CREDENTIALS;
+

+
#define SCH_CRED_MAX_SUPPORTED_PARAMETERS 16
+
#define SCH_CRED_MAX_SUPPORTED_ALPN_IDS 16
+
#define SCH_CRED_MAX_SUPPORTED_CRYPTO_SETTINGS 16
+
#define SCH_CRED_MAX_SUPPORTED_CHAINING_MODES 16
+

+
#endif /* SCH_CREDENTIALS_VERSION */
+

+
struct Curl_schannel_cred {
+
  CredHandle cred_handle;
+
  TimeStamp time_stamp;
+
  TCHAR *sni_hostname;
+
#ifdef HAS_CLIENT_CERT_PATH
+
  HCERTSTORE client_cert_store;
+
#endif
+
  int refcount;
+
};
+

+
struct Curl_schannel_ctxt {
+
  CtxtHandle ctxt_handle;
+
  TimeStamp time_stamp;
+
};
+

+
struct schannel_ssl_backend_data {
+
  struct Curl_schannel_cred *cred;
+
  struct Curl_schannel_ctxt *ctxt;
+
  SecPkgContext_StreamSizes stream_sizes;
+
  size_t encdata_length, decdata_length;
+
  size_t encdata_offset, decdata_offset;
+
  unsigned char *encdata_buffer, *decdata_buffer;
+
  /* encdata_is_incomplete: if encdata contains only a partial record that
+
     can't be decrypted without another recv() (that is, status is
+
     SEC_E_INCOMPLETE_MESSAGE) then set this true. after an recv() adds
+
     more bytes into encdata then set this back to false. */
+
  bool encdata_is_incomplete;
+
  unsigned long req_flags, ret_flags;
+
  CURLcode recv_unrecoverable_err; /* schannel_recv had an unrecoverable err */
+
  bool recv_sspi_close_notify; /* true if connection closed by close_notify */
+
  bool recv_connection_closed; /* true if connection closed, regardless how */
+
  bool recv_renegotiating;     /* true if recv is doing renegotiation */
+
  bool use_alpn; /* true if ALPN is used for this connection */
+
#ifdef HAS_MANUAL_VERIFY_API
+
  bool use_manual_cred_validation; /* true if manual cred validation is used */
+
#endif
+
};
+

+
#endif /* USE_SCHANNEL */
+
#endif /* HEADER_CURL_SCHANNEL_INT_H */
modified external/curl/lib/vtls/schannel_verify.c
@@ -36,8 +36,8 @@
#  error "Can't compile SCHANNEL support without SSPI."
#endif

-
#define EXPOSE_SCHANNEL_INTERNAL_STRUCTS
#include "schannel.h"
+
#include "schannel_int.h"

#ifdef HAS_MANUAL_VERIFY_API

@@ -54,7 +54,7 @@
#include "curl_memory.h"
#include "memdebug.h"

-
#define BACKEND connssl->backend
+
#define BACKEND ((struct schannel_ssl_backend_data *)connssl->backend)

#define MAX_CAFILE_SIZE 1048576 /* 1 MiB */
#define BEGIN_CERT "-----BEGIN CERTIFICATE-----"
modified external/curl/lib/vtls/sectransp.c
@@ -146,7 +146,7 @@
#define ioErr -36
#define paramErr -50

-
struct ssl_backend_data {
+
struct st_ssl_backend_data {
  SSLContextRef ssl_ctx;
  bool ssl_direction; /* true if writing, false if reading */
  size_t ssl_write_buffered_length;
@@ -836,7 +836,8 @@ static OSStatus bio_cf_in_read(SSLConnectionRef connection,
{
  struct Curl_cfilter *cf = (struct Curl_cfilter *)connection;
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct st_ssl_backend_data *backend =
+
    (struct st_ssl_backend_data *)connssl->backend;
  struct Curl_easy *data = CF_DATA_CURRENT(cf);
  ssize_t nread;
  CURLcode result;
@@ -859,6 +860,9 @@ static OSStatus bio_cf_in_read(SSLConnectionRef connection,
    }
    nread = 0;
  }
+
  else if(nread == 0) {
+
    rtn = errSSLClosedGraceful;
+
  }
  else if((size_t)nread < *dataLength) {
    rtn = errSSLWouldBlock;
  }
@@ -872,7 +876,8 @@ static OSStatus bio_cf_out_write(SSLConnectionRef connection,
{
  struct Curl_cfilter *cf = (struct Curl_cfilter *)connection;
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct st_ssl_backend_data *backend =
+
    (struct st_ssl_backend_data *)connssl->backend;
  struct Curl_easy *data = CF_DATA_CURRENT(cf);
  ssize_t nwritten;
  CURLcode result;
@@ -1338,7 +1343,8 @@ static CURLcode set_ssl_version_min_max(struct Curl_cfilter *cf,
                                        struct Curl_easy *data)
{
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct st_ssl_backend_data *backend =
+
    (struct st_ssl_backend_data *)connssl->backend;
  struct ssl_primary_config *conn_config = Curl_ssl_cf_get_primary_config(cf);
  long ssl_version = conn_config->version;
  long ssl_version_max = conn_config->version_max;
@@ -1633,7 +1639,8 @@ static CURLcode sectransp_connect_step1(struct Curl_cfilter *cf,
                                        struct Curl_easy *data)
{
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct st_ssl_backend_data *backend =
+
    (struct st_ssl_backend_data *)connssl->backend;
  struct ssl_primary_config *conn_config = Curl_ssl_cf_get_primary_config(cf);
  struct ssl_config_data *ssl_config = Curl_ssl_cf_get_config(cf, data);
  const struct curl_blob *ssl_cablob = conn_config->ca_info_blob;
@@ -2515,7 +2522,8 @@ static CURLcode sectransp_connect_step2(struct Curl_cfilter *cf,
                                        struct Curl_easy *data)
{
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct st_ssl_backend_data *backend =
+
    (struct st_ssl_backend_data *)connssl->backend;
  struct ssl_primary_config *conn_config = Curl_ssl_cf_get_primary_config(cf);
  OSStatus err;
  SSLCipherSuite cipher;
@@ -2896,7 +2904,8 @@ static CURLcode collect_server_cert(struct Curl_cfilter *cf,
  CURLcode result = ssl_config->certinfo ?
    CURLE_PEER_FAILED_VERIFICATION : CURLE_OK;
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct st_ssl_backend_data *backend =
+
    (struct st_ssl_backend_data *)connssl->backend;
  CFArrayRef server_certs = NULL;
  SecCertificateRef server_cert;
  OSStatus err;
@@ -3139,7 +3148,8 @@ static CURLcode sectransp_connect(struct Curl_cfilter *cf,
static void sectransp_close(struct Curl_cfilter *cf, struct Curl_easy *data)
{
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct st_ssl_backend_data *backend =
+
    (struct st_ssl_backend_data *)connssl->backend;

  (void) data;

@@ -3166,7 +3176,8 @@ static int sectransp_shutdown(struct Curl_cfilter *cf,
                              struct Curl_easy *data)
{
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct st_ssl_backend_data *backend =
+
    (struct st_ssl_backend_data *)connssl->backend;
  ssize_t nread;
  int what;
  int rc;
@@ -3244,7 +3255,8 @@ static bool sectransp_data_pending(struct Curl_cfilter *cf,
                                   const struct Curl_easy *data)
{
  const struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct st_ssl_backend_data *backend =
+
    (struct st_ssl_backend_data *)connssl->backend;
  OSStatus err;
  size_t buffer;

@@ -3308,7 +3320,8 @@ static ssize_t sectransp_send(struct Curl_cfilter *cf,
                              CURLcode *curlcode)
{
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct st_ssl_backend_data *backend =
+
    (struct st_ssl_backend_data *)connssl->backend;
  size_t processed = 0UL;
  OSStatus err;

@@ -3376,7 +3389,8 @@ static ssize_t sectransp_recv(struct Curl_cfilter *cf,
                              CURLcode *curlcode)
{
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct st_ssl_backend_data *backend =
+
    (struct st_ssl_backend_data *)connssl->backend;
  struct ssl_primary_config *conn_config = Curl_ssl_cf_get_primary_config(cf);
  size_t processed = 0UL;
  OSStatus err;
@@ -3434,7 +3448,8 @@ again:
static void *sectransp_get_internals(struct ssl_connect_data *connssl,
                                     CURLINFO info UNUSED_PARAM)
{
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct st_ssl_backend_data *backend =
+
    (struct st_ssl_backend_data *)connssl->backend;
  (void)info;
  DEBUGASSERT(backend);
  return backend->ssl_ctx;
@@ -3450,7 +3465,7 @@ const struct Curl_ssl Curl_ssl_sectransp = {
#endif /* SECTRANSP_PINNEDPUBKEY */
  SSLSUPP_HTTPS_PROXY,

-
  sizeof(struct ssl_backend_data),
+
  sizeof(struct st_ssl_backend_data),

  Curl_none_init,                     /* init */
  Curl_none_cleanup,                  /* cleanup */
modified external/curl/lib/vtls/vtls.c
@@ -453,7 +453,7 @@ bool Curl_ssl_getsessionid(struct Curl_cfilter *cf,
    }
  }

-
  DEBUGF(infof(data, DMSG(data, "%s Session ID in cache for %s %s://%s:%d"),
+
  DEBUGF(infof(data, "%s Session ID in cache for %s %s://%s:%d",
               no_match? "Didn't find": "Found",
               Curl_ssl_cf_is_proxy(cf) ? "proxy" : "host",
               cf->conn->handler->scheme, connssl->hostname, connssl->port));
@@ -601,8 +601,8 @@ CURLcode Curl_ssl_addsessionid(struct Curl_cfilter *cf,
  if(added)
    *added = TRUE;

-
  DEBUGF(infof(data, DMSG(data, "Added Session ID to cache for %s://%s:%d"
-
               " [%s]"), store->scheme, store->name, store->remote_port,
+
  DEBUGF(infof(data, "Added Session ID to cache for %s://%s:%d [%s]",
+
               store->scheme, store->name, store->remote_port,
               Curl_ssl_cf_is_proxy(cf) ? "PROXY" : "server"));
  return CURLE_OK;
}
@@ -893,8 +893,8 @@ CURLcode Curl_pin_peer_pubkey(struct Curl_easy *data,
  /* only do this if pinnedpubkey starts with "sha256//", length 8 */
  if(strncmp(pinnedpubkey, "sha256//", 8) == 0) {
    CURLcode encode;
-
    size_t encodedlen, pinkeylen;
-
    char *encoded, *pinkeycopy, *begin_pos, *end_pos;
+
    size_t encodedlen = 0, pinkeylen;
+
    char *encoded = NULL, *pinkeycopy, *begin_pos, *end_pos;
    unsigned char *sha256sumdigest;

    if(!Curl_ssl->sha256sum) {
@@ -907,14 +907,12 @@ CURLcode Curl_pin_peer_pubkey(struct Curl_easy *data,
    if(!sha256sumdigest)
      return CURLE_OUT_OF_MEMORY;
    encode = Curl_ssl->sha256sum(pubkey, pubkeylen,
-
                        sha256sumdigest, CURL_SHA256_DIGEST_LENGTH);
+
                                 sha256sumdigest, CURL_SHA256_DIGEST_LENGTH);

-
    if(encode != CURLE_OK)
-
      return encode;
-

-
    encode = Curl_base64_encode((char *)sha256sumdigest,
-
                                CURL_SHA256_DIGEST_LENGTH, &encoded,
-
                                &encodedlen);
+
    if(!encode)
+
      encode = Curl_base64_encode((char *)sha256sumdigest,
+
                                  CURL_SHA256_DIGEST_LENGTH, &encoded,
+
                                  &encodedlen);
    Curl_safefree(sha256sumdigest);

    if(encode)
@@ -1506,7 +1504,7 @@ static void ssl_cf_close(struct Curl_cfilter *cf,

  CF_DATA_SAVE(save, cf, data);
  cf_close(cf, data);
-
  cf->next->cft->close(cf->next, data);
+
  cf->next->cft->do_close(cf->next, data);
  CF_DATA_RESTORE(cf, save);
}

@@ -1530,7 +1528,7 @@ static CURLcode ssl_cf_connect(struct Curl_cfilter *cf,
  DEBUGASSERT(connssl);
  DEBUGASSERT(cf->conn->host.name);

-
  result = cf->next->cft->connect(cf->next, data, blocking, done);
+
  result = cf->next->cft->do_connect(cf->next, data, blocking, done);
  if(result || !*done)
    goto out;

@@ -1594,6 +1592,7 @@ static ssize_t ssl_cf_recv(struct Curl_cfilter *cf,
  ssize_t nread;

  CF_DATA_SAVE(save, cf, data);
+
  *err = CURLE_OK;
  nread = Curl_ssl->recv_plain(cf, data, buf, len, err);
  if(nread > 0) {
    DEBUGASSERT((size_t)nread <= len);
modified external/curl/lib/vtls/vtls_int.h
@@ -73,7 +73,7 @@ struct ssl_connect_data {
  char *hostname;                   /* hostname for verification */
  char *dispname;                   /* display version of hostname */
  const struct alpn_spec *alpn;     /* ALPN to use or NULL for none */
-
  struct ssl_backend_data *backend; /* vtls backend specific props */
+
  void *backend;                    /* vtls backend specific props */
  struct cf_call_data call_data;    /* data handle used in current call */
  struct curltime handshake_done;   /* time when handshake finished */
  int port;                         /* remote port at origin */
@@ -81,6 +81,7 @@ struct ssl_connect_data {
};


+
#undef CF_CTX_CALL_DATA
#define CF_CTX_CALL_DATA(cf)  \
  ((struct ssl_connect_data *)(cf)->ctx)->call_data

modified external/curl/lib/vtls/wolfssl.c
@@ -91,7 +91,7 @@
#undef USE_BIO_CHAIN
#endif

-
struct ssl_backend_data {
+
struct wolfssl_ssl_backend_data {
  SSL_CTX* ctx;
  SSL*     handle;
  CURLcode io_result;       /* result of last BIO cfilter operation */
@@ -281,13 +281,15 @@ static int bio_cf_out_write(WOLFSSL_BIO *bio, const char *buf, int blen)
{
  struct Curl_cfilter *cf = wolfSSL_BIO_get_data(bio);
  struct ssl_connect_data *connssl = cf->ctx;
+
  struct wolfssl_ssl_backend_data *backend =
+
    (struct wolfssl_ssl_backend_data *)connssl->backend;
  struct Curl_easy *data = CF_DATA_CURRENT(cf);
  ssize_t nwritten;
  CURLcode result = CURLE_OK;

  DEBUGASSERT(data);
  nwritten = Curl_conn_cf_send(cf->next, data, buf, blen, &result);
-
  connssl->backend->io_result = result;
+
  backend->io_result = result;
  DEBUGF(LOG_CF(data, cf, "bio_write(len=%d) -> %zd, %d",
                blen, nwritten, result));
  wolfSSL_BIO_clear_retry_flags(bio);
@@ -300,6 +302,8 @@ static int bio_cf_in_read(WOLFSSL_BIO *bio, char *buf, int blen)
{
  struct Curl_cfilter *cf = wolfSSL_BIO_get_data(bio);
  struct ssl_connect_data *connssl = cf->ctx;
+
  struct wolfssl_ssl_backend_data *backend =
+
    (struct wolfssl_ssl_backend_data *)connssl->backend;
  struct Curl_easy *data = CF_DATA_CURRENT(cf);
  ssize_t nread;
  CURLcode result = CURLE_OK;
@@ -310,7 +314,7 @@ static int bio_cf_in_read(WOLFSSL_BIO *bio, char *buf, int blen)
    return 0;

  nread = Curl_conn_cf_recv(cf->next, data, buf, blen, &result);
-
  connssl->backend->io_result = result;
+
  backend->io_result = result;
  DEBUGF(LOG_CF(data, cf, "bio_read(len=%d) -> %zd, %d",
                blen, nread, result));
  wolfSSL_BIO_clear_retry_flags(bio);
@@ -352,8 +356,10 @@ wolfssl_connect_step1(struct Curl_cfilter *cf, struct Curl_easy *data)
{
  char *ciphers, *curves;
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct wolfssl_ssl_backend_data *backend =
+
    (struct wolfssl_ssl_backend_data *)connssl->backend;
  struct ssl_primary_config *conn_config = Curl_ssl_cf_get_primary_config(cf);
+
  const struct curl_blob *ca_info_blob = conn_config->ca_info_blob;
  const struct ssl_config_data *ssl_config = Curl_ssl_cf_get_config(cf, data);
  SSL_METHOD* req_method = NULL;
#ifdef HAVE_LIBOQS
@@ -366,6 +372,7 @@ wolfssl_connect_step1(struct Curl_cfilter *cf, struct Curl_easy *data)
#else
#define use_sni(x)  Curl_nop_stmt
#endif
+
  bool imported_ca_info_blob = false;

  DEBUGASSERT(backend);

@@ -410,8 +417,13 @@ wolfssl_connect_step1(struct Curl_cfilter *cf, struct Curl_easy *data)
#endif
    break;
  case CURL_SSLVERSION_TLSv1_2:
+
#ifndef WOLFSSL_NO_TLS12
    req_method = TLSv1_2_client_method();
    use_sni(TRUE);
+
#else
+
    failf(data, "wolfSSL does not support TLS 1.2");
+
    return CURLE_NOT_BUILT_IN;
+
#endif
    break;
  case CURL_SSLVERSION_TLSv1_3:
#ifdef WOLFSSL_TLS13
@@ -494,13 +506,28 @@ wolfssl_connect_step1(struct Curl_cfilter *cf, struct Curl_easy *data)
      }
    }
  }
+

+
  if(ca_info_blob) {
+
    if(wolfSSL_CTX_load_verify_buffer(
+
      backend->ctx, ca_info_blob->data, ca_info_blob->len,
+
      SSL_FILETYPE_PEM
+
    ) != SSL_SUCCESS) {
+
      failf(data, "error importing CA certificate blob");
+
      return CURLE_SSL_CACERT_BADFILE;
+
    }
+
    else {
+
      imported_ca_info_blob = true;
+
      infof(data, "successfully imported CA certificate blob");
+
    }
+
  }
+

#ifndef NO_FILESYSTEM
  /* load trusted cacert */
  if(conn_config->CAfile) {
    if(1 != SSL_CTX_load_verify_locations(backend->ctx,
                                      conn_config->CAfile,
                                      conn_config->CApath)) {
-
      if(conn_config->verifypeer) {
+
      if(conn_config->verifypeer && !imported_ca_info_blob) {
        /* Fail if we insist on successfully verifying the server. */
        failf(data, "error setting certificate verify locations:"
              " CAfile: %s CApath: %s",
@@ -699,7 +726,8 @@ wolfssl_connect_step2(struct Curl_cfilter *cf, struct Curl_easy *data)
{
  int ret = -1;
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct wolfssl_ssl_backend_data *backend =
+
    (struct wolfssl_ssl_backend_data *)connssl->backend;
  struct ssl_primary_config *conn_config = Curl_ssl_cf_get_primary_config(cf);
  const char * const pinnedpubkey = Curl_ssl_cf_is_proxy(cf)?
    data->set.str[STRING_SSL_PINNEDPUBLICKEY_PROXY]:
@@ -892,7 +920,8 @@ wolfssl_connect_step3(struct Curl_cfilter *cf, struct Curl_easy *data)
{
  CURLcode result = CURLE_OK;
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct wolfssl_ssl_backend_data *backend =
+
    (struct wolfssl_ssl_backend_data *)connssl->backend;
  const struct ssl_config_data *ssl_config = Curl_ssl_cf_get_config(cf, data);

  DEBUGASSERT(ssl_connect_3 == connssl->connecting_state);
@@ -950,7 +979,8 @@ static ssize_t wolfssl_send(struct Curl_cfilter *cf,
                            CURLcode *curlcode)
{
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct wolfssl_ssl_backend_data *backend =
+
    (struct wolfssl_ssl_backend_data *)connssl->backend;
  char error_buffer[WOLFSSL_MAX_ERROR_SZ];
  int memlen = (len > (size_t)INT_MAX) ? INT_MAX : (int)len;
  int rc;
@@ -992,7 +1022,8 @@ static ssize_t wolfssl_send(struct Curl_cfilter *cf,
static void wolfssl_close(struct Curl_cfilter *cf, struct Curl_easy *data)
{
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct wolfssl_ssl_backend_data *backend =
+
    (struct wolfssl_ssl_backend_data *)connssl->backend;

  (void) data;

@@ -1019,7 +1050,8 @@ static ssize_t wolfssl_recv(struct Curl_cfilter *cf,
                            CURLcode *curlcode)
{
  struct ssl_connect_data *connssl = cf->ctx;
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct wolfssl_ssl_backend_data *backend =
+
    (struct wolfssl_ssl_backend_data *)connssl->backend;
  char error_buffer[WOLFSSL_MAX_ERROR_SZ];
  int buffsize = (blen > (size_t)INT_MAX) ? INT_MAX : (int)blen;
  int nread;
@@ -1108,11 +1140,14 @@ static bool wolfssl_data_pending(struct Curl_cfilter *cf,
                                 const struct Curl_easy *data)
{
  struct ssl_connect_data *ctx = cf->ctx;
+
  struct wolfssl_ssl_backend_data *backend;

  (void)data;
  DEBUGASSERT(ctx && ctx->backend);
-
  if(ctx->backend->handle)   /* SSL is in use */
-
    return (0 != SSL_pending(ctx->backend->handle)) ? TRUE : FALSE;
+

+
  backend = (struct wolfssl_ssl_backend_data *)ctx->backend;
+
  if(backend->handle)   /* SSL is in use */
+
    return (0 != SSL_pending(backend->handle)) ? TRUE : FALSE;
  else
    return FALSE;
}
@@ -1126,15 +1161,17 @@ static int wolfssl_shutdown(struct Curl_cfilter *cf,
                            struct Curl_easy *data)
{
  struct ssl_connect_data *ctx = cf->ctx;
+
  struct wolfssl_ssl_backend_data *backend;
  int retval = 0;

  (void)data;
  DEBUGASSERT(ctx && ctx->backend);

-
  if(ctx->backend->handle) {
+
  backend = (struct wolfssl_ssl_backend_data *)ctx->backend;
+
  if(backend->handle) {
    ERR_clear_error();
-
    SSL_free(ctx->backend->handle);
-
    ctx->backend->handle = NULL;
+
    SSL_free(backend->handle);
+
    backend->handle = NULL;
  }
  return retval;
}
@@ -1305,7 +1342,8 @@ static CURLcode wolfssl_sha256sum(const unsigned char *tmp, /* input */
static void *wolfssl_get_internals(struct ssl_connect_data *connssl,
                                   CURLINFO info UNUSED_PARAM)
{
-
  struct ssl_backend_data *backend = connssl->backend;
+
  struct wolfssl_ssl_backend_data *backend =
+
    (struct wolfssl_ssl_backend_data *)connssl->backend;
  (void)info;
  DEBUGASSERT(backend);
  return backend->handle;
@@ -1320,9 +1358,10 @@ const struct Curl_ssl Curl_ssl_wolfssl = {
#ifdef USE_BIO_CHAIN
  SSLSUPP_HTTPS_PROXY |
#endif
+
  SSLSUPP_CAINFO_BLOB |
  SSLSUPP_SSL_CTX,

-
  sizeof(struct ssl_backend_data),
+
  sizeof(struct wolfssl_ssl_backend_data),

  wolfssl_init,                    /* init */
  wolfssl_cleanup,                 /* cleanup */
modified external/curl/lib/warnless.c
@@ -35,10 +35,13 @@

#endif /* __INTEL_COMPILER && __unix__ */

-
#define BUILDING_WARNLESS_C 1
-

#include "warnless.h"

+
#ifdef WIN32
+
#undef read
+
#undef write
+
#endif
+

#include <limits.h>

#define CURL_MASK_UCHAR   ((unsigned char)~0)
@@ -376,6 +379,9 @@ ssize_t curlx_write(int fd, const void *buf, size_t count)
  return (ssize_t)write(fd, buf, curlx_uztoui(count));
}

+
/* Ensure that warnless.h continues to have an effect in "unity" builds. */
+
#undef HEADER_CURL_WARNLESS_H
+

#endif /* WIN32 */

#if defined(__INTEL_COMPILER) && defined(__unix__)
modified external/curl/lib/warnless.h
@@ -75,12 +75,10 @@ ssize_t curlx_read(int fd, void *buf, size_t count);

ssize_t curlx_write(int fd, const void *buf, size_t count);

-
#ifndef BUILDING_WARNLESS_C
-
#  undef  read
-
#  define read(fd, buf, count)  curlx_read(fd, buf, count)
-
#  undef  write
-
#  define write(fd, buf, count) curlx_write(fd, buf, count)
-
#endif
+
#undef  read
+
#define read(fd, buf, count)  curlx_read(fd, buf, count)
+
#undef  write
+
#define write(fd, buf, count) curlx_write(fd, buf, count)

#endif /* WIN32 */

modified external/curl/lib/ws.c
@@ -126,8 +126,9 @@ static void ws_dec_info(struct ws_decoder *dec, struct Curl_easy *data,
            dec->head_len, dec->head_total);
    }
    else {
-
      infof(data, "WS-DEC: %s [%s%s payload=%zd/%zd]", msg,
-
            ws_frame_name_of_op(dec->head[0]),
+
      infof(data, "WS-DEC: %s [%s%s payload=%" CURL_FORMAT_CURL_OFF_T
+
                  "/%" CURL_FORMAT_CURL_OFF_T "]",
+
            msg, ws_frame_name_of_op(dec->head[0]),
            (dec->head[0] & WSBIT_FIN)? "" : " NON-FINAL",
            dec->payload_offset, dec->payload_len);
    }
@@ -272,7 +273,8 @@ static CURLcode ws_dec_pass_payload(struct ws_decoder *dec,
    Curl_bufq_skip(inraw, (size_t)nwritten);
    dec->payload_offset += (curl_off_t)nwritten;
    remain = dec->payload_len - dec->payload_offset;
-
    /* infof(data, "WS-DEC: passed  %zd bytes payload, %zd remain",
+
    /* infof(data, "WS-DEC: passed  %zd bytes payload, %"
+
                CURL_FORMAT_CURL_OFF_T " remain",
          nwritten, remain); */
  }

@@ -351,8 +353,9 @@ static void update_meta(struct websocket *ws,
static void ws_enc_info(struct ws_encoder *enc, struct Curl_easy *data,
                        const char *msg)
{
-
  infof(data, "WS-ENC: %s [%s%s%s payload=%zd/%zd]", msg,
-
        ws_frame_name_of_op(enc->firstbyte),
+
  infof(data, "WS-ENC: %s [%s%s%s payload=%" CURL_FORMAT_CURL_OFF_T
+
              "/%" CURL_FORMAT_CURL_OFF_T "]",
+
        msg, ws_frame_name_of_op(enc->firstbyte),
        (enc->firstbyte & WSBIT_OPCODE_MASK) == WSBIT_OPCODE_CONT ?
        " CONT" : "",
        (enc->firstbyte & WSBIT_FIN)? "" : " NON-FIN",
@@ -839,7 +842,7 @@ static ssize_t nw_in_recv(void *reader_ctx,

CURL_EXTERN CURLcode curl_ws_recv(struct Curl_easy *data, void *buffer,
                                  size_t buflen, size_t *nread,
-
                                  struct curl_ws_frame **metap)
+
                                  const struct curl_ws_frame **metap)
{
  struct connectdata *conn = data->conn;
  struct websocket *ws;
@@ -921,7 +924,8 @@ CURL_EXTERN CURLcode curl_ws_recv(struct Curl_easy *data, void *buffer,
              ctx.payload_len, ctx.bufidx);
  *metap = &ws->frame;
  *nread = ws->frame.len;
-
  /* infof(data, "curl_ws_recv(len=%zu) -> %zu bytes (frame at %zd, %zd left)",
+
  /* infof(data, "curl_ws_recv(len=%zu) -> %zu bytes (frame at %"
+
              CURL_FORMAT_CURL_OFF_T ", %" CURL_FORMAT_CURL_OFF_T " left)",
        buflen, *nread, ws->frame.offset, ws->frame.bytesleft); */
  return CURLE_OK;
}
@@ -966,10 +970,10 @@ static CURLcode ws_flush(struct Curl_easy *data, struct websocket *ws,
  return CURLE_OK;
}

-
CURL_EXTERN CURLcode curl_ws_send(struct Curl_easy *data, const void *buffer,
+
CURL_EXTERN CURLcode curl_ws_send(CURL *data, const void *buffer,
                                  size_t buflen, size_t *sent,
-
                                  curl_off_t totalsize,
-
                                  unsigned int sendflags)
+
                                  curl_off_t fragsize,
+
                                  unsigned int flags)
{
  struct websocket *ws;
  ssize_t nwritten, n;
@@ -987,14 +991,13 @@ CURL_EXTERN CURLcode curl_ws_send(struct Curl_easy *data, const void *buffer,
    return CURLE_SEND_ERROR;
  }
  if(!data->conn->proto.ws) {
-
    failf(data, "Not a websocket transfer on connection #%ld",
-
          data->conn->connection_id);
+
    failf(data, "Not a websocket transfer");
    return CURLE_SEND_ERROR;
  }
  ws = data->conn->proto.ws;

  if(data->set.ws_raw_mode) {
-
    if(totalsize || sendflags)
+
    if(fragsize || flags)
      return CURLE_BAD_FUNCTION_ARGUMENT;
    if(!buflen)
      /* nothing to do */
@@ -1027,23 +1030,24 @@ CURL_EXTERN CURLcode curl_ws_send(struct Curl_easy *data, const void *buffer,
  if(space < 14)
    return CURLE_AGAIN;

-
  if(sendflags & CURLWS_OFFSET) {
-
    if(totalsize) {
-
      /* a frame series 'totalsize' bytes big, this is the first */
-
      n = ws_enc_write_head(data, &ws->enc, sendflags, totalsize,
+
  if(flags & CURLWS_OFFSET) {
+
    if(fragsize) {
+
      /* a frame series 'fragsize' bytes big, this is the first */
+
      n = ws_enc_write_head(data, &ws->enc, flags, fragsize,
                            &ws->sendbuf, &result);
      if(n < 0)
        return result;
    }
    else {
      if((curl_off_t)buflen > ws->enc.payload_remain) {
-
        infof(data, "WS: unaligned frame size (sending %zu instead of %zd)",
+
        infof(data, "WS: unaligned frame size (sending %zu instead of %"
+
                    CURL_FORMAT_CURL_OFF_T ")",
              buflen, ws->enc.payload_remain);
      }
    }
  }
  else if(!ws->enc.payload_remain) {
-
    n = ws_enc_write_head(data, &ws->enc, sendflags, (curl_off_t)buflen,
+
    n = ws_enc_write_head(data, &ws->enc, flags, (curl_off_t)buflen,
                          &ws->sendbuf, &result);
    if(n < 0)
      return result;
@@ -1082,7 +1086,7 @@ CURLcode Curl_ws_disconnect(struct Curl_easy *data,
  return CURLE_OK;
}

-
CURL_EXTERN struct curl_ws_frame *curl_ws_meta(struct Curl_easy *data)
+
CURL_EXTERN const struct curl_ws_frame *curl_ws_meta(struct Curl_easy *data)
{
  /* we only return something for websocket, called from within the callback
     when not using raw mode */
@@ -1096,7 +1100,7 @@ CURL_EXTERN struct curl_ws_frame *curl_ws_meta(struct Curl_easy *data)

CURL_EXTERN CURLcode curl_ws_recv(CURL *curl, void *buffer, size_t buflen,
                                  size_t *nread,
-
                                  struct curl_ws_frame **metap)
+
                                  const struct curl_ws_frame **metap)
{
  (void)curl;
  (void)buffer;
@@ -1108,19 +1112,19 @@ CURL_EXTERN CURLcode curl_ws_recv(CURL *curl, void *buffer, size_t buflen,

CURL_EXTERN CURLcode curl_ws_send(CURL *curl, const void *buffer,
                                  size_t buflen, size_t *sent,
-
                                  curl_off_t framesize,
-
                                  unsigned int sendflags)
+
                                  curl_off_t fragsize,
+
                                  unsigned int flags)
{
  (void)curl;
  (void)buffer;
  (void)buflen;
  (void)sent;
-
  (void)framesize;
-
  (void)sendflags;
+
  (void)fragsize;
+
  (void)flags;
  return CURLE_NOT_BUILT_IN;
}

-
CURL_EXTERN struct curl_ws_frame *curl_ws_meta(struct Curl_easy *data)
+
CURL_EXTERN const struct curl_ws_frame *curl_ws_meta(struct Curl_easy *data)
{
  (void)data;
  return NULL;
modified external/curl/m4/curl-amissl.m4
@@ -32,7 +32,7 @@ if test "$HAVE_PROTO_BSDSOCKET_H" = "1"; then
        #include <libraries/amisslmaster.h>
        #include <openssl/opensslv.h>
      ]],[[
-
        #if defined(AMISSL_CURRENT_VERSION) && (AMISSL_CURRENT_VERSION >= AMISSL_V303) && \
+
        #if defined(AMISSL_CURRENT_VERSION) && defined(AMISSL_V3xx) && \
            defined(OPENSSL_VERSION_MAJOR) && (OPENSSL_VERSION_MAJOR >= 3) && \
            defined(PROTO_AMISSL_H)
        return 0;
modified external/curl/packages/Makefile.in
@@ -351,7 +351,7 @@ USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
-
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
+
USE_NGTCP2_CRYPTO_QUICTLS = @USE_NGTCP2_CRYPTO_QUICTLS@
USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
modified external/curl/packages/OS400/ccsidcurl.c
@@ -1164,6 +1164,7 @@ curl_easy_setopt_ccsid(CURL *easy, CURLoption tag, ...)
  case CURLOPT_USERNAME:
  case CURLOPT_USERPWD:
  case CURLOPT_XOAUTH2_BEARER:
+
  case CURLOPT_HAPROXY_CLIENT_IP:
    s = va_arg(arg, char *);
    ccsid = va_arg(arg, unsigned int);

modified external/curl/packages/OS400/chkstrings.c
@@ -37,7 +37,7 @@
 * made, the EXPECTED_STRING_LASTZEROTERMINATED/EXPECTED_STRING_LAST
 * values can be updated to match the latest enum values in urldata.h.
 */
-
#define EXPECTED_STRING_LASTZEROTERMINATED  (STRING_AWS_SIGV4 + 1)
+
#define EXPECTED_STRING_LASTZEROTERMINATED  (STRING_HAPROXY_CLIENT_IP + 1)
#define EXPECTED_STRING_LAST                (STRING_COPYPOSTFIELDS + 1)

int main(int argc, char *argv[])
modified external/curl/packages/OS400/curl.inc.in
@@ -1589,7 +1589,7 @@
     d                 c                   00288
     d  CURLOPT_SASL_AUTHZID...
     d                 c                   10289
-
     d  CURLOPT_MAIL_RCPT_ALLLOWFAILS...
+
     d  CURLOPT_MAIL_RCPT_ALLOWFAILS...
     d                 c                   00290
     d  CURLOPT_SSLCERT_BLOB...
     d                 c                   40291
modified external/curl/packages/vms/Makefile.in
@@ -293,7 +293,7 @@ USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
-
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
+
USE_NGTCP2_CRYPTO_QUICTLS = @USE_NGTCP2_CRYPTO_QUICTLS@
USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
modified external/curl/projects/Windows/VC10/lib/libcurl.vcxproj
@@ -2410,6 +2410,7 @@
    <ClCompile Include="..\..\..\..\lib\krb5.c" />
    <ClCompile Include="..\..\..\..\lib\ldap.c" />
    <ClCompile Include="..\..\..\..\lib\llist.c" />
+
    <ClCompile Include="..\..\..\..\lib\macos.c" />
    <ClCompile Include="..\..\..\..\lib\md4.c" />
    <ClCompile Include="..\..\..\..\lib\md5.c" />
    <ClCompile Include="..\..\..\..\lib\memdebug.c" />
@@ -2583,6 +2584,7 @@
    <ClInclude Include="..\..\..\..\lib\inet_ntop.h" />
    <ClInclude Include="..\..\..\..\lib\inet_pton.h" />
    <ClInclude Include="..\..\..\..\lib\llist.h" />
+
    <ClInclude Include="..\..\..\..\lib\macos.h" />
    <ClInclude Include="..\..\..\..\lib\memdebug.h" />
    <ClInclude Include="..\..\..\..\lib\mime.h" />
    <ClInclude Include="..\..\..\..\lib\mqtt.h" />
@@ -2650,6 +2652,7 @@
    <ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\rustls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\schannel.h" />
+
    <ClInclude Include="..\..\..\..\lib\vtls\schannel_int.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\sectransp.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\vtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\vtls_int.h" />
modified external/curl/projects/Windows/VC11/lib/libcurl.vcxproj
@@ -2466,6 +2466,7 @@
    <ClCompile Include="..\..\..\..\lib\krb5.c" />
    <ClCompile Include="..\..\..\..\lib\ldap.c" />
    <ClCompile Include="..\..\..\..\lib\llist.c" />
+
    <ClCompile Include="..\..\..\..\lib\macos.c" />
    <ClCompile Include="..\..\..\..\lib\md4.c" />
    <ClCompile Include="..\..\..\..\lib\md5.c" />
    <ClCompile Include="..\..\..\..\lib\memdebug.c" />
@@ -2639,6 +2640,7 @@
    <ClInclude Include="..\..\..\..\lib\inet_ntop.h" />
    <ClInclude Include="..\..\..\..\lib\inet_pton.h" />
    <ClInclude Include="..\..\..\..\lib\llist.h" />
+
    <ClInclude Include="..\..\..\..\lib\macos.h" />
    <ClInclude Include="..\..\..\..\lib\memdebug.h" />
    <ClInclude Include="..\..\..\..\lib\mime.h" />
    <ClInclude Include="..\..\..\..\lib\mqtt.h" />
@@ -2706,6 +2708,7 @@
    <ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\rustls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\schannel.h" />
+
    <ClInclude Include="..\..\..\..\lib\vtls\schannel_int.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\sectransp.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\vtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\vtls_int.h" />
modified external/curl/projects/Windows/VC12/lib/libcurl.vcxproj
@@ -2466,6 +2466,7 @@
    <ClCompile Include="..\..\..\..\lib\krb5.c" />
    <ClCompile Include="..\..\..\..\lib\ldap.c" />
    <ClCompile Include="..\..\..\..\lib\llist.c" />
+
    <ClCompile Include="..\..\..\..\lib\macos.c" />
    <ClCompile Include="..\..\..\..\lib\md4.c" />
    <ClCompile Include="..\..\..\..\lib\md5.c" />
    <ClCompile Include="..\..\..\..\lib\memdebug.c" />
@@ -2639,6 +2640,7 @@
    <ClInclude Include="..\..\..\..\lib\inet_ntop.h" />
    <ClInclude Include="..\..\..\..\lib\inet_pton.h" />
    <ClInclude Include="..\..\..\..\lib\llist.h" />
+
    <ClInclude Include="..\..\..\..\lib\macos.h" />
    <ClInclude Include="..\..\..\..\lib\memdebug.h" />
    <ClInclude Include="..\..\..\..\lib\mime.h" />
    <ClInclude Include="..\..\..\..\lib\mqtt.h" />
@@ -2706,6 +2708,7 @@
    <ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\rustls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\schannel.h" />
+
    <ClInclude Include="..\..\..\..\lib\vtls\schannel_int.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\sectransp.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\vtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\vtls_int.h" />
modified external/curl/projects/Windows/VC14.10/lib/libcurl.vcxproj
@@ -2438,6 +2438,7 @@
    <ClCompile Include="..\..\..\..\lib\krb5.c" />
    <ClCompile Include="..\..\..\..\lib\ldap.c" />
    <ClCompile Include="..\..\..\..\lib\llist.c" />
+
    <ClCompile Include="..\..\..\..\lib\macos.c" />
    <ClCompile Include="..\..\..\..\lib\md4.c" />
    <ClCompile Include="..\..\..\..\lib\md5.c" />
    <ClCompile Include="..\..\..\..\lib\memdebug.c" />
@@ -2611,6 +2612,7 @@
    <ClInclude Include="..\..\..\..\lib\inet_ntop.h" />
    <ClInclude Include="..\..\..\..\lib\inet_pton.h" />
    <ClInclude Include="..\..\..\..\lib\llist.h" />
+
    <ClInclude Include="..\..\..\..\lib\macos.h" />
    <ClInclude Include="..\..\..\..\lib\memdebug.h" />
    <ClInclude Include="..\..\..\..\lib\mime.h" />
    <ClInclude Include="..\..\..\..\lib\mqtt.h" />
@@ -2678,6 +2680,7 @@
    <ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\rustls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\schannel.h" />
+
    <ClInclude Include="..\..\..\..\lib\vtls\schannel_int.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\sectransp.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\vtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\vtls_int.h" />
modified external/curl/projects/Windows/VC14.30/lib/libcurl.vcxproj
@@ -2438,6 +2438,7 @@
    <ClCompile Include="..\..\..\..\lib\krb5.c" />
    <ClCompile Include="..\..\..\..\lib\ldap.c" />
    <ClCompile Include="..\..\..\..\lib\llist.c" />
+
    <ClCompile Include="..\..\..\..\lib\macos.c" />
    <ClCompile Include="..\..\..\..\lib\md4.c" />
    <ClCompile Include="..\..\..\..\lib\md5.c" />
    <ClCompile Include="..\..\..\..\lib\memdebug.c" />
@@ -2611,6 +2612,7 @@
    <ClInclude Include="..\..\..\..\lib\inet_ntop.h" />
    <ClInclude Include="..\..\..\..\lib\inet_pton.h" />
    <ClInclude Include="..\..\..\..\lib\llist.h" />
+
    <ClInclude Include="..\..\..\..\lib\macos.h" />
    <ClInclude Include="..\..\..\..\lib\memdebug.h" />
    <ClInclude Include="..\..\..\..\lib\mime.h" />
    <ClInclude Include="..\..\..\..\lib\mqtt.h" />
@@ -2678,6 +2680,7 @@
    <ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\rustls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\schannel.h" />
+
    <ClInclude Include="..\..\..\..\lib\vtls\schannel_int.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\sectransp.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\vtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\vtls_int.h" />
modified external/curl/projects/Windows/VC14/lib/libcurl.vcxproj
@@ -2466,6 +2466,7 @@
    <ClCompile Include="..\..\..\..\lib\krb5.c" />
    <ClCompile Include="..\..\..\..\lib\ldap.c" />
    <ClCompile Include="..\..\..\..\lib\llist.c" />
+
    <ClCompile Include="..\..\..\..\lib\macos.c" />
    <ClCompile Include="..\..\..\..\lib\md4.c" />
    <ClCompile Include="..\..\..\..\lib\md5.c" />
    <ClCompile Include="..\..\..\..\lib\memdebug.c" />
@@ -2639,6 +2640,7 @@
    <ClInclude Include="..\..\..\..\lib\inet_ntop.h" />
    <ClInclude Include="..\..\..\..\lib\inet_pton.h" />
    <ClInclude Include="..\..\..\..\lib\llist.h" />
+
    <ClInclude Include="..\..\..\..\lib\macos.h" />
    <ClInclude Include="..\..\..\..\lib\memdebug.h" />
    <ClInclude Include="..\..\..\..\lib\mime.h" />
    <ClInclude Include="..\..\..\..\lib\mqtt.h" />
@@ -2706,6 +2708,7 @@
    <ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\rustls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\schannel.h" />
+
    <ClInclude Include="..\..\..\..\lib\vtls\schannel_int.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\sectransp.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\vtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\vtls_int.h" />
modified external/curl/scripts/Makefile.in
@@ -317,7 +317,7 @@ USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
-
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
+
USE_NGTCP2_CRYPTO_QUICTLS = @USE_NGTCP2_CRYPTO_QUICTLS@
USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
modified external/curl/scripts/checksrc.pl
@@ -99,13 +99,13 @@ my %warnings = (
    );

sub readskiplist {
-
    open(W, "<$dir/checksrc.skip") or return;
-
    my @all=<W>;
+
    open(my $W, '<', "$dir/checksrc.skip") or return;
+
    my @all=<$W>;
    for(@all) {
        $windows_os ? $_ =~ s/\r?\n$// : chomp;
        $skiplist{$_}=1;
    }
-
    close(W);
+
    close($W);
}

# Reads the .checksrc in $dir for any extended warnings to enable locally.
@@ -381,7 +381,7 @@ sub scanfile {
    my $l = "";
    my $prep = 0;
    my $prevp = 0;
-
    open(R, "<$file") || die "failed to open $file";
+
    open(my $R, '<', $file) || die "failed to open $file";

    my $incomment=0;
    my @copyright=();
@@ -389,7 +389,7 @@ sub scanfile {
    checksrc_clear(); # for file based ignores
    accept_violations();

-
    while(<R>) {
+
    while(<$R>) {
        $windows_os ? $_ =~ s/\r?\n$// : chomp;
        my $l = $_;
        my $ol = $l; # keep the unmodified line for error reporting
@@ -912,12 +912,12 @@ sub scanfile {
        @copyright = sort {$$b{year} cmp $$a{year}} @copyright;

        # if the file is modified, assume commit year this year
-
        if(`git status -s -- $file` =~ /^ [MARCU]/) {
+
        if(`git status -s -- "$file"` =~ /^ [MARCU]/) {
            $commityear = (localtime(time))[5] + 1900;
        }
        else {
            # min-parents=1 to ignore wrong initial commit in truncated repos
-
            my $grl = `git rev-list --max-count=1 --min-parents=1 --timestamp HEAD -- $file`;
+
            my $grl = `git rev-list --max-count=1 --min-parents=1 --timestamp HEAD -- "$file"`;
            if($grl) {
                chomp $grl;
                $commityear = (localtime((split(/ /, $grl))[0]))[5] + 1900;
@@ -939,7 +939,7 @@ sub scanfile {

    checksrc_endoffile($file);

-
    close(R);
+
    close($R);

}

modified external/curl/src/CMakeLists.txt
@@ -58,13 +58,17 @@ transform_makefile_inc("Makefile.inc" "${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.
include(${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake)

if(WIN32)
-
  list(APPEND CURL_FILES curl.rc)
+
  list(APPEND CURL_CFILES curl.rc)
+
endif()
+

+
# CURL_CFILES, CURLX_CFILES, CURL_HFILES come from Makefile.inc
+
if(NOT BUILD_SHARED_LIBS)
+
  set(CURLX_CFILES ../lib/dynbuf.c)
endif()

-
# CURL_FILES comes from Makefile.inc
add_executable(
  ${EXE_NAME}
-
  ${CURL_FILES}
+
  ${CURL_CFILES} ${CURLX_CFILES} ${CURL_HFILES}
  )

add_executable(
@@ -72,6 +76,14 @@ add_executable(
  ALIAS ${EXE_NAME}
  )

+
add_library(
+
  curltool # special libcurltool library just for unittests
+
  STATIC
+
  EXCLUDE_FROM_ALL
+
  ${CURL_CFILES} ${CURLX_CFILES} ${CURL_HFILES}
+
)
+
target_compile_definitions(curltool PUBLIC UNITTESTS CURL_STATICLIB)
+

if(CURL_HAS_LTO)
  set_target_properties(${EXE_NAME} PROPERTIES
    INTERPROCEDURAL_OPTIMIZATION_RELEASE TRUE
modified external/curl/src/Makefile.am
@@ -85,7 +85,7 @@ endif
CLEANFILES = tool_hugehelp.c
# Use the C locale to ensure that only ASCII characters appear in the
# embedded text.
-
NROFF=env LC_ALL=C @NROFF@ @MANOPT@ # figured out by the configure script
+
NROFF=env LC_ALL=C @NROFF@ @MANOPT@ 2>/dev/null # figured out by the configure script

EXTRA_DIST = mkhelp.pl \
 Makefile.mk curl.rc Makefile.inc CMakeLists.txt
modified external/curl/src/Makefile.in
@@ -574,7 +574,7 @@ NM = @NM@
NMEDIT = @NMEDIT@
# Use the C locale to ensure that only ASCII characters appear in the
# embedded text.
-
NROFF = env LC_ALL=C @NROFF@ @MANOPT@ # figured out by the configure script
+
NROFF = env LC_ALL=C @NROFF@ @MANOPT@ 2>/dev/null # figured out by the configure script
NSS_LIBS = @NSS_LIBS@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
@@ -620,7 +620,7 @@ USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
-
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
+
USE_NGTCP2_CRYPTO_QUICTLS = @USE_NGTCP2_CRYPTO_QUICTLS@
USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
modified external/curl/src/mkhelp.pl
@@ -51,6 +51,7 @@ while (<STDIN>) {
    # remove trailing CR from line. msysgit checks out files as line+CRLF
    $line =~ s/\r$//;

+
    $line =~ s/\x1b\x5b[0-9]+m//g; # escape sequence
    if($line =~ /^([ \t]*\n|curl)/i) {
        # cut off headers and empty lines
        $wline++; # count number of cut off lines
modified external/curl/src/tool_cb_dbg.c
@@ -34,7 +34,7 @@

#include "memdebug.h" /* keep this as LAST include */

-
static void dump(const char *timebuf, const char *text,
+
static void dump(const char *timebuf, const char *idsbuf, const char *text,
                 FILE *stream, const unsigned char *ptr, size_t size,
                 trace tracetype, curl_infotype infotype);

@@ -67,7 +67,8 @@ static const char *hms_for_sec(time_t tv_sec)
  return hms_buf;
}

-
static void log_line_start(FILE *log, const char *intro, curl_infotype type)
+
static void log_line_start(FILE *log, const char *timebuf,
+
                           const char *idsbuf, curl_infotype type)
{
  /*
   * This is the trace look that is similar to what libcurl makes on its
@@ -76,12 +77,15 @@ static void log_line_start(FILE *log, const char *intro, curl_infotype type)
  static const char * const s_infotype[] = {
    "* ", "< ", "> ", "{ ", "} ", "{ ", "} "
  };
-
  if(intro && *intro)
-
    fprintf(log, "%s%s", intro, s_infotype[type]);
+
  if((timebuf && *timebuf) || (idsbuf && *idsbuf))
+
    fprintf(log, "%s%s%s", timebuf, idsbuf, s_infotype[type]);
  else
    fputs(s_infotype[type], log);
}

+
#define TRC_IDS_FORMAT_IDS_1  "[%" CURL_FORMAT_CURL_OFF_T "-x] "
+
#define TRC_IDS_FORMAT_IDS_2  "[%" CURL_FORMAT_CURL_OFF_T "-%" \
+
                                   CURL_FORMAT_CURL_OFF_T "] "
/*
** callback for CURLOPT_DEBUGFUNCTION
*/
@@ -95,6 +99,13 @@ int tool_debug_cb(CURL *handle, curl_infotype type,
  const char *text;
  struct timeval tv;
  char timebuf[20];
+
  /* largest signed 64bit is: 9,223,372,036,854,775,807
+
   * max length in decimal: 1 + (6*3) = 19
+
   * formatted via TRC_IDS_FORMAT_IDS_2 this becomes 2 + 19 + 1 + 19 + 2 = 43
+
   * negative xfer-id are not printed, negative conn-ids use TRC_IDS_FORMAT_1
+
   */
+
  char idsbuf[60];
+
  curl_off_t xfer_id, conn_id;

  (void)handle; /* not used */

@@ -106,6 +117,20 @@ int tool_debug_cb(CURL *handle, curl_infotype type,
  else
    timebuf[0] = 0;

+
  if(handle && config->traceids &&
+
     !curl_easy_getinfo(handle, CURLINFO_XFER_ID, &xfer_id) && xfer_id >= 0) {
+
    if(!curl_easy_getinfo(handle, CURLINFO_CONN_ID, &conn_id) &&
+
        conn_id >= 0) {
+
      msnprintf(idsbuf, sizeof(idsbuf), TRC_IDS_FORMAT_IDS_2,
+
                xfer_id, conn_id);
+
    }
+
    else {
+
      msnprintf(idsbuf, sizeof(idsbuf), TRC_IDS_FORMAT_IDS_1, xfer_id);
+
    }
+
  }
+
  else
+
    idsbuf[0] = 0;
+

  if(!config->trace_stream) {
    /* open for append */
    if(!strcmp("-", config->trace_dump))
@@ -139,7 +164,7 @@ int tool_debug_cb(CURL *handle, curl_infotype type,
        for(i = 0; i < size - 1; i++) {
          if(data[i] == '\n') { /* LF */
            if(!newl) {
-
              log_line_start(output, timebuf, type);
+
              log_line_start(output, timebuf, idsbuf, type);
            }
            (void)fwrite(data + st, i - st + 1, 1, output);
            st = i + 1;
@@ -147,7 +172,7 @@ int tool_debug_cb(CURL *handle, curl_infotype type,
          }
        }
        if(!newl)
-
          log_line_start(output, timebuf, type);
+
          log_line_start(output, timebuf, idsbuf, type);
        (void)fwrite(data + st, i - st + 1, 1, output);
      }
      newl = (size && (data[size - 1] != '\n')) ? TRUE : FALSE;
@@ -156,7 +181,7 @@ int tool_debug_cb(CURL *handle, curl_infotype type,
    case CURLINFO_TEXT:
    case CURLINFO_HEADER_IN:
      if(!newl)
-
        log_line_start(output, timebuf, type);
+
        log_line_start(output, timebuf, idsbuf, type);
      (void)fwrite(data, size, 1, output);
      newl = (size && (data[size - 1] != '\n')) ? TRUE : FALSE;
      traced_data = FALSE;
@@ -172,7 +197,7 @@ int tool_debug_cb(CURL *handle, curl_infotype type,
           function */
        if(!config->isatty || ((output != stderr) && (output != stdout))) {
          if(!newl)
-
            log_line_start(output, timebuf, type);
+
            log_line_start(output, timebuf, idsbuf, type);
          fprintf(output, "[%zu bytes data]\n", size);
          newl = FALSE;
          traced_data = TRUE;
@@ -190,7 +215,7 @@ int tool_debug_cb(CURL *handle, curl_infotype type,

  switch(type) {
  case CURLINFO_TEXT:
-
    fprintf(output, "%s== Info: %.*s", timebuf, (int)size, data);
+
    fprintf(output, "%s%s== Info: %.*s", timebuf, idsbuf, (int)size, data);
    /* FALLTHROUGH */
  default: /* in case a new one is introduced to shock us */
    return 0;
@@ -215,12 +240,12 @@ int tool_debug_cb(CURL *handle, curl_infotype type,
    break;
  }

-
  dump(timebuf, text, output, (unsigned char *) data, size, config->tracetype,
-
       type);
+
  dump(timebuf, idsbuf, text, output, (unsigned char *) data, size,
+
       config->tracetype, type);
  return 0;
}

-
static void dump(const char *timebuf, const char *text,
+
static void dump(const char *timebuf, const char *idsbuf, const char *text,
                 FILE *stream, const unsigned char *ptr, size_t size,
                 trace tracetype, curl_infotype infotype)
{
@@ -233,7 +258,8 @@ static void dump(const char *timebuf, const char *text,
    /* without the hex output, we can fit more on screen */
    width = 0x40;

-
  fprintf(stream, "%s%s, %zu bytes (0x%zx)\n", timebuf, text, size, size);
+
  fprintf(stream, "%s%s%s, %zu bytes (0x%zx)\n", timebuf, idsbuf,
+
          text, size, size);

  for(i = 0; i < size; i += width) {

modified external/curl/src/tool_cb_hdr.c
@@ -82,8 +82,7 @@ size_t tool_header_cb(char *ptr, size_t size, size_t nmemb, void *userdata)

#ifdef DEBUGBUILD
  if(size * nmemb > (size_t)CURL_MAX_HTTP_HEADER) {
-
    warnf(per->config->global, "Header data exceeds single call write "
-
          "limit!\n");
+
    warnf(per->config->global, "Header data exceeds single call write limit");
    return CURL_WRITEFUNC_ERROR;
  }
#endif
modified external/curl/src/tool_cb_rea.c
@@ -35,6 +35,7 @@
#include "tool_cb_rea.h"
#include "tool_operate.h"
#include "tool_util.h"
+
#include "tool_msgs.h"

#include "memdebug.h" /* keep this as LAST include */

@@ -45,12 +46,18 @@
size_t tool_read_cb(char *buffer, size_t sz, size_t nmemb, void *userdata)
{
  ssize_t rc = 0;
-
  struct InStruct *in = userdata;
-
  struct OperationConfig *config = in->config;
+
  struct per_transfer *per = userdata;
+
  struct OperationConfig *config = per->config;
+

+
  if((per->uploadfilesize != -1) &&
+
     (per->uploadedsofar == per->uploadfilesize)) {
+
    /* done */
+
    return 0;
+
  }

  if(config->timeout_ms) {
    struct timeval now = tvnow();
-
    long msdelta = tvdiff(now, in->per->start);
+
    long msdelta = tvdiff(now, per->start);

    if(msdelta > config->timeout_ms)
      /* timeout */
@@ -68,24 +75,33 @@ size_t tool_read_cb(char *buffer, size_t sz, size_t nmemb, void *userdata)
      timeout.tv_usec = (int)((wait%1000)*1000);

      FD_ZERO(&bits);
-
      FD_SET(in->fd, &bits);
-
      if(!select(in->fd + 1, &bits, NULL, NULL, &timeout))
+
      FD_SET(per->infd, &bits);
+
      if(!select(per->infd + 1, &bits, NULL, NULL, &timeout))
        return 0; /* timeout */
    }
#endif
  }

-
  rc = read(in->fd, buffer, sz*nmemb);
+
  rc = read(per->infd, buffer, sz*nmemb);
  if(rc < 0) {
    if(errno == EAGAIN) {
      errno = 0;
-
      in->config->readbusy = TRUE;
+
      config->readbusy = TRUE;
      return CURL_READFUNC_PAUSE;
    }
    /* since size_t is unsigned we can't return negative values fine */
    rc = 0;
  }
-
  in->config->readbusy = FALSE;
+
  if((per->uploadfilesize != -1) &&
+
     (per->uploadedsofar + rc > per->uploadfilesize)) {
+
    /* do not allow uploading more than originally set out to do */
+
    curl_off_t delta = per->uploadedsofar + rc - per->uploadfilesize;
+
    warnf(per->config->global, "File size larger in the end than when "
+
          "started. Dropping at least %" CURL_FORMAT_CURL_OFF_T " bytes",
+
          delta);
+
    rc = (ssize_t)(per->uploadfilesize - per->uploadedsofar);
+
  }
+
  config->readbusy = FALSE;

  /* when select() returned zero here, it timed out */
  return (size_t)rc;
modified external/curl/src/tool_cb_see.c
@@ -28,6 +28,7 @@
#include "curlx.h"

#include "tool_cfgable.h"
+
#include "tool_operate.h"
#include "tool_cb_see.h"

#include "memdebug.h" /* keep this as LAST include */
@@ -48,7 +49,7 @@

int tool_seek_cb(void *userdata, curl_off_t offset, int whence)
{
-
  struct InStruct *in = userdata;
+
  struct per_transfer *per = userdata;

#if(SIZEOF_CURL_OFF_T > SIZEOF_OFF_T) && !defined(USE_WIN32_LARGE_FILES)

@@ -66,13 +67,13 @@ int tool_seek_cb(void *userdata, curl_off_t offset, int whence)
      /* this code path doesn't support other types */
      return CURL_SEEKFUNC_FAIL;

-
    if(LSEEK_ERROR == lseek(in->fd, 0, SEEK_SET))
+
    if(LSEEK_ERROR == lseek(per->infd, 0, SEEK_SET))
      /* couldn't rewind to beginning */
      return CURL_SEEKFUNC_FAIL;

    while(left) {
      long step = (left > OUR_MAX_SEEK_O) ? OUR_MAX_SEEK_L : (long)left;
-
      if(LSEEK_ERROR == lseek(in->fd, step, SEEK_CUR))
+
      if(LSEEK_ERROR == lseek(per->infd, step, SEEK_CUR))
        /* couldn't seek forwards the desired amount */
        return CURL_SEEKFUNC_FAIL;
      left -= step;
@@ -81,7 +82,7 @@ int tool_seek_cb(void *userdata, curl_off_t offset, int whence)
  }
#endif

-
  if(LSEEK_ERROR == lseek(in->fd, offset, whence))
+
  if(LSEEK_ERROR == lseek(per->infd, offset, whence))
    /* couldn't rewind, the reason is in errno but errno is just not portable
       enough and we don't actually care that much why we failed. We'll let
       libcurl know that it may try other means if it wants to. */
modified external/curl/src/tool_cb_wrt.c
@@ -62,14 +62,14 @@ bool tool_create_output_file(struct OutStruct *outs,
  DEBUGASSERT(config);
  global = config->global;
  if(!fname || !*fname) {
-
    warnf(global, "Remote filename has no length!\n");
+
    warnf(global, "Remote filename has no length");
    return FALSE;
  }

  if(config->output_dir && outs->is_cd_filename) {
    aname = aprintf("%s/%s", config->output_dir, fname);
    if(!aname) {
-
      errorf(global, "out of memory\n");
+
      errorf(global, "out of memory");
      return FALSE;
    }
    fname = aname;
@@ -95,12 +95,12 @@ bool tool_create_output_file(struct OutStruct *outs,
      /* Guard against wraparound in new filename */
      if(newlen < len) {
        free(aname);
-
        errorf(global, "overflow in filename generation\n");
+
        errorf(global, "overflow in filename generation");
        return FALSE;
      }
      newname = malloc(newlen);
      if(!newname) {
-
        errorf(global, "out of memory\n");
+
        errorf(global, "out of memory");
        free(aname);
        return FALSE;
      }
@@ -133,7 +133,7 @@ bool tool_create_output_file(struct OutStruct *outs,
  }

  if(!file) {
-
    warnf(global, "Failed to open the file %s: %s\n", fname,
+
    warnf(global, "Failed to open the file %s: %s", fname,
          strerror(errno));
    free(aname);
    return FALSE;
@@ -176,13 +176,13 @@ size_t tool_write_cb(char *buffer, size_t sz, size_t nmemb, void *userdata)
  if(config->show_headers) {
    if(bytes > (size_t)CURL_MAX_HTTP_HEADER) {
      warnf(config->global, "Header data size exceeds single call write "
-
            "limit!\n");
+
            "limit");
      return CURL_WRITEFUNC_ERROR;
    }
  }
  else {
    if(bytes > (size_t)CURL_MAX_WRITE_SIZE) {
-
      warnf(config->global, "Data size exceeds single call write limit!\n");
+
      warnf(config->global, "Data size exceeds single call write limit");
      return CURL_WRITEFUNC_ERROR;
    }
  }
@@ -211,7 +211,7 @@ size_t tool_write_cb(char *buffer, size_t sz, size_t nmemb, void *userdata)
        check_fails = TRUE;
    }
    if(check_fails) {
-
      warnf(config->global, "Invalid output struct data for write callback\n");
+
      warnf(config->global, "Invalid output struct data for write callback");
      return CURL_WRITEFUNC_ERROR;
    }
  }
@@ -225,7 +225,7 @@ size_t tool_write_cb(char *buffer, size_t sz, size_t nmemb, void *userdata)
    if(memchr(buffer, 0, bytes)) {
      warnf(config->global, "Binary output can mess up your terminal. "
            "Use \"--output -\" to tell curl to output it to your terminal "
-
            "anyway, or consider \"--output <FILE>\" to save to a file.\n");
+
            "anyway, or consider \"--output <FILE>\" to save to a file.");
      config->synthetic_error = TRUE;
      return CURL_WRITEFUNC_ERROR;
    }
modified external/curl/src/tool_cfgable.c
@@ -24,6 +24,7 @@
#include "tool_setup.h"

#include "tool_cfgable.h"
+
#include "tool_formparse.h"
#include "tool_main.h"

#include "memdebug.h" /* keep this as LAST include */
@@ -53,6 +54,7 @@ static void free_config_fields(struct OperationConfig *config)
  Curl_safefree(config->useragent);
  Curl_safefree(config->altsvc);
  Curl_safefree(config->hsts);
+
  Curl_safefree(config->haproxy_clientip);
  curl_slist_free_all(config->cookies);
  Curl_safefree(config->cookiejar);
  curl_slist_free_all(config->cookiefiles);
modified external/curl/src/tool_cfgable.h
@@ -26,7 +26,6 @@
#include "tool_setup.h"
#include "tool_sdecls.h"
#include "tool_urlglob.h"
-
#include "tool_formparse.h"

struct GlobalConfig;

@@ -37,11 +36,11 @@ struct State {
  char *outfiles;
  char *httpgetfields;
  char *uploadfile;
-
  unsigned long infilenum; /* number of files to upload */
-
  unsigned long up;  /* upload file counter within a single upload glob */
-
  unsigned long urlnum; /* how many iterations this single URL has with ranges
+
  curl_off_t infilenum; /* number of files to upload */
+
  curl_off_t up;        /* upload file counter within a single upload glob */
+
  curl_off_t urlnum;    /* how many iterations this single URL has with ranges
                           etc */
-
  unsigned long li;
+
  curl_off_t li;
};

struct OperationConfig {
@@ -260,7 +259,8 @@ struct OperationConfig {
  bool ssl_revoke_best_effort; /* ignore SSL revocation offline/missing
                                  revocation list errors */

-
  bool native_ca_store;        /* use the native os ca store */
+
  bool native_ca_store;        /* use the native OS CA store */
+
  bool proxy_native_ca_store;  /* use the native OS CA store for proxy */
  bool ssl_auto_client_cert;   /* automatically locate and use a client
                                  certificate for authentication (Schannel) */
  bool proxy_ssl_auto_client_cert; /* proxy version of ssl_auto_client_cert */
@@ -278,6 +278,7 @@ struct OperationConfig {
  long happy_eyeballs_timeout_ms; /* happy eyeballs timeout in milliseconds.
                                     0 is valid. default: CURL_HET_DEFAULT. */
  bool haproxy_protocol;          /* whether to send HAProxy protocol v1 */
+
  char *haproxy_clientip;         /* client IP for HAProxy protocol */
  bool disallow_username_in_url;  /* disallow usernames in URLs */
  char *aws_sigv4;
  enum {
@@ -307,6 +308,7 @@ struct GlobalConfig {
  bool trace_fopened;
  trace tracetype;
  bool tracetime;                 /* include timestamp? */
+
  bool traceids;                  /* include xfer-/conn-id? */
  int progressmode;               /* CURL_PROGRESS_BAR / CURL_PROGRESS_STATS */
  char *libcurl;                  /* Output libcurl code to this file name */
  bool fail_early;                /* exit on first transfer error */
@@ -317,7 +319,7 @@ struct GlobalConfig {
  bool test_event_based;
#endif
  bool parallel;
-
  long parallel_max;
+
  unsigned short parallel_max; /* MAX_PARALLEL is the maximum */
  bool parallel_connect;
  char *help_category;            /* The help category, if set */
  struct OperationConfig *first;
modified external/curl/src/tool_dirhie.c
@@ -34,6 +34,7 @@
#include "curlx.h"

#include "tool_dirhie.h"
+
#include "tool_msgs.h"

#include "memdebug.h" /* keep this as LAST include */

@@ -44,38 +45,38 @@
#  endif
#endif

-
static void show_dir_errno(FILE *errors, const char *name)
+
static void show_dir_errno(struct GlobalConfig *global, const char *name)
{
  switch(errno) {
#ifdef EACCES
  case EACCES:
-
    fprintf(errors, "You don't have permission to create %s.\n", name);
+
    errorf(global, "You don't have permission to create %s", name);
    break;
#endif
#ifdef ENAMETOOLONG
  case ENAMETOOLONG:
-
    fprintf(errors, "The directory name %s is too long.\n", name);
+
    errorf(global, "The directory name %s is too long", name);
    break;
#endif
#ifdef EROFS
  case EROFS:
-
    fprintf(errors, "%s resides on a read-only file system.\n", name);
+
    errorf(global, "%s resides on a read-only file system", name);
    break;
#endif
#ifdef ENOSPC
  case ENOSPC:
-
    fprintf(errors, "No space left on the file system that will "
-
            "contain the directory %s.\n", name);
+
    errorf(global, "No space left on the file system that will "
+
           "contain the directory %s", name);
    break;
#endif
#ifdef EDQUOT
  case EDQUOT:
-
    fprintf(errors, "Cannot create directory %s because you "
-
            "exceeded your quota.\n", name);
+
    errorf(global, "Cannot create directory %s because you "
+
           "exceeded your quota", name);
    break;
#endif
  default:
-
    fprintf(errors, "Error creating directory %s.\n", name);
+
    errorf(global, "Error creating directory %s", name);
    break;
  }
}
@@ -95,7 +96,7 @@ static void show_dir_errno(FILE *errors, const char *name)
#endif


-
CURLcode create_dir_hierarchy(const char *outfile, FILE *errors)
+
CURLcode create_dir_hierarchy(const char *outfile, struct GlobalConfig *global)
{
  char *tempdir;
  char *tempdir2;
@@ -151,7 +152,7 @@ CURLcode create_dir_hierarchy(const char *outfile, FILE *errors)
      /* Create directory. Ignore access denied error to allow traversal. */
      if(!skip && (-1 == mkdir(dirbuildup, (mode_t)0000750)) &&
         (errno != EACCES) && (errno != EEXIST)) {
-
        show_dir_errno(errors, dirbuildup);
+
        show_dir_errno(global, dirbuildup);
        result = CURLE_WRITE_ERROR;
        break; /* get out of loop */
      }
modified external/curl/src/tool_dirhie.h
@@ -24,7 +24,9 @@
 *
 ***************************************************************************/
#include "tool_setup.h"
+
#include "tool_cfgable.h"

-
CURLcode create_dir_hierarchy(const char *outfile, FILE *errors);
+
CURLcode create_dir_hierarchy(const char *outfile,
+
                              struct GlobalConfig *global);

#endif /* HEADER_CURL_TOOL_DIRHIE_H */
modified external/curl/src/tool_easysrc.c
@@ -186,7 +186,7 @@ void dumpeasysrc(struct GlobalConfig *config)
  else
    out = stdout;
  if(!out)
-
    warnf(config, "Failed to open %s to write libcurl code!\n", o);
+
    warnf(config, "Failed to open %s to write libcurl code", o);
  else {
    int i;
    const char *c;
modified external/curl/src/tool_easysrc.h
@@ -51,7 +51,7 @@ void dumpeasysrc(struct GlobalConfig *config);
#define easysrc_init() CURLE_OK
#define easysrc_cleanup()
#define dumpeasysrc(x)
-
#define easysrc_perform(x) CURLE_OK
+
#define easysrc_perform() CURLE_OK

#endif /* CURL_DISABLE_LIBCURL_OPTION */

modified external/curl/src/tool_filetime.c
@@ -55,7 +55,7 @@ curl_off_t getfiletime(const char *filename, struct GlobalConfig *global)
          | ((curl_off_t)ft.dwHighDateTime) << 32;

      if(converted < CURL_OFF_T_C(116444736000000000)) {
-
        warnf(global, "Failed to get filetime: underflow\n");
+
        warnf(global, "Failed to get filetime: underflow");
      }
      else {
        result = (converted - CURL_OFF_T_C(116444736000000000)) / 10000000;
@@ -63,14 +63,14 @@ curl_off_t getfiletime(const char *filename, struct GlobalConfig *global)
    }
    else {
      warnf(global, "Failed to get filetime: "
-
            "GetFileTime failed: GetLastError %u\n",
+
            "GetFileTime failed: GetLastError %u",
            (unsigned int)GetLastError());
    }
    CloseHandle(hfile);
  }
  else if(GetLastError() != ERROR_FILE_NOT_FOUND) {
    warnf(global, "Failed to get filetime: "
-
          "CreateFile failed: GetLastError %u\n",
+
          "CreateFile failed: GetLastError %u",
          (unsigned int)GetLastError());
  }
#else
@@ -79,7 +79,7 @@ curl_off_t getfiletime(const char *filename, struct GlobalConfig *global)
    result = (curl_off_t)statbuf.st_mtime;
  }
  else if(errno != ENOENT) {
-
    warnf(global, "Failed to get filetime: %s\n", strerror(errno));
+
    warnf(global, "Failed to get filetime: %s", strerror(errno));
  }
#endif
  return result;
@@ -101,7 +101,7 @@ void setfiletime(curl_off_t filetime, const char *filename,
       Windows FILETIME without overflow: 30827-12-31T23:59:59. */
    if(filetime > CURL_OFF_T_C(910670515199)) {
      warnf(global, "Failed to set filetime %" CURL_FORMAT_CURL_OFF_T
-
            " on outfile: overflow\n", filetime);
+
            " on outfile: overflow", filetime);
      curlx_unicodefree(tchar_filename);
      return;
    }
@@ -119,14 +119,14 @@ void setfiletime(curl_off_t filetime, const char *filename,
      ft.dwHighDateTime = (DWORD)(converted >> 32);
      if(!SetFileTime(hfile, NULL, &ft, &ft)) {
        warnf(global, "Failed to set filetime %" CURL_FORMAT_CURL_OFF_T
-
              " on outfile: SetFileTime failed: GetLastError %u\n",
+
              " on outfile: SetFileTime failed: GetLastError %u",
              filetime, (unsigned int)GetLastError());
      }
      CloseHandle(hfile);
    }
    else {
      warnf(global, "Failed to set filetime %" CURL_FORMAT_CURL_OFF_T
-
            " on outfile: CreateFile failed: GetLastError %u\n",
+
            " on outfile: CreateFile failed: GetLastError %u",
            filetime, (unsigned int)GetLastError());
    }

@@ -136,7 +136,7 @@ void setfiletime(curl_off_t filetime, const char *filename,
    times[0].tv_usec = times[1].tv_usec = 0;
    if(utimes(filename, times)) {
      warnf(global, "Failed to set filetime %" CURL_FORMAT_CURL_OFF_T
-
            " on '%s': %s\n", filetime, filename, strerror(errno));
+
            " on '%s': %s", filetime, filename, strerror(errno));
    }

#elif defined(HAVE_UTIME)
@@ -145,7 +145,7 @@ void setfiletime(curl_off_t filetime, const char *filename,
    times.modtime = (time_t)filetime;
    if(utime(filename, &times)) {
      warnf(global, "Failed to set filetime %" CURL_FORMAT_CURL_OFF_T
-
            " on '%s': %s\n", filetime, filename, strerror(errno));
+
            " on '%s': %s", filetime, filename, strerror(errno));
    }
#endif
  }
modified external/curl/src/tool_findfile.c
@@ -49,7 +49,7 @@ struct finder {

/* The order of the variables below is important, as the index number is used
   in the findfile() function */
-
static const struct finder list[] = {
+
static const struct finder conf_list[] = {
  { "CURL_HOME", NULL, FALSE },
  { "XDG_CONFIG_HOME", NULL, FALSE }, /* index == 1, used in the code */
  { "HOME", NULL, FALSE },
@@ -109,8 +109,8 @@ char *findfile(const char *fname, int dotscore)
  if(!fname[0])
    return NULL;

-
  for(i = 0; list[i].env; i++) {
-
    char *home = curl_getenv(list[i].env);
+
  for(i = 0; conf_list[i].env; i++) {
+
    char *home = curl_getenv(conf_list[i].env);
    if(home) {
      char *path;
      const char *filename = fname;
@@ -120,14 +120,14 @@ char *findfile(const char *fname, int dotscore)
        curl_free(home);
        continue;
      }
-
      if(list[i].append) {
-
        char *c = curl_maprintf("%s%s", home, list[i].append);
+
      if(conf_list[i].append) {
+
        char *c = curl_maprintf("%s%s", home, conf_list[i].append);
        curl_free(home);
        if(!c)
          return NULL;
        home = c;
      }
-
      if(list[i].withoutdot) {
+
      if(conf_list[i].withoutdot) {
        if(!dotscore || xdg) {
          /* this is not looking for .curlrc, or the XDG_CONFIG_HOME was
             defined so we skip the extended check */
modified external/curl/src/tool_formparse.c
@@ -202,7 +202,7 @@ size_t tool_mime_stdin_read(char *buffer,
      if(ferror(stdin)) {
        /* Show error only once. */
        if(sip->config) {
-
          warnf(sip->config, "stdin: %s\n", strerror(errno));
+
          warnf(sip->config, "stdin: %s", strerror(errno));
          sip->config = NULL;
        }
        return CURL_READFUNC_ABORT;
@@ -369,7 +369,7 @@ static char *get_param_word(struct OperationConfig *config, char **str,
          ++ptr;
        }
        if(trailing_data)
-
          warnf(config->global, "Trailing data after quoted form parameter\n");
+
          warnf(config->global, "Trailing data after quoted form parameter");
        *str = ptr;
        return word_begin + 1;
      }
@@ -417,7 +417,7 @@ static int read_field_headers(struct OperationConfig *config,
      if(hdrlen) {
        hdrbuf[hdrlen] = '\0';
        if(slist_append(pheaders, hdrbuf)) {
-
          fprintf(stderr, "Out of memory for field headers!\n");
+
          errorf(config->global, "Out of memory for field headers");
          return -1;
        }
        hdrlen = 0;
@@ -427,8 +427,8 @@ static int read_field_headers(struct OperationConfig *config,
    switch(c) {
    case EOF:
      if(ferror(fp)) {
-
        fprintf(stderr, "Header file %s read error: %s\n", filename,
-
                strerror(errno));
+
        errorf(config->global, "Header file %s read error: %s", filename,
+
               strerror(errno));
        return -1;
      }
      return 0;    /* Done. */
@@ -448,7 +448,7 @@ static int read_field_headers(struct OperationConfig *config,
    pos++;
    if(!incomment) {
      if(hdrlen == sizeof(hdrbuf) - 1) {
-
        warnf(config->global, "File %s line %d: header too long (truncated)\n",
+
        warnf(config->global, "File %s line %d: header too long (truncated)",
              filename, lineno);
        c = ' ';
      }
@@ -506,7 +506,7 @@ static int get_param_part(struct OperationConfig *config, char endchar,

      /* verify that this is a fine type specifier */
      if(2 != sscanf(type, "%127[^/ ]/%127[^;, \n]", type_major, type_minor)) {
-
        warnf(config->global, "Illegally formatted content-type field!\n");
+
        warnf(config->global, "Illegally formatted content-type field");
        curl_slist_free_all(headers);
        return -1; /* illegal content-type syntax! */
      }
@@ -558,7 +558,7 @@ static int get_param_part(struct OperationConfig *config, char endchar,
        *endpos = '\0';
        fp = fopen(hdrfile, FOPEN_READTEXT);
        if(!fp)
-
          warnf(config->global, "Cannot read from %s: %s\n", hdrfile,
+
          warnf(config->global, "Cannot read from %s: %s", hdrfile,
                strerror(errno));
        else {
          int i = read_field_headers(config, hdrfile, fp, &headers);
@@ -584,7 +584,7 @@ static int get_param_part(struct OperationConfig *config, char endchar,
        sep = *p;
        *endpos = '\0';
        if(slist_append(&headers, hdr)) {
-
          fprintf(stderr, "Out of memory for field header!\n");
+
          errorf(config->global, "Out of memory for field header");
          curl_slist_free_all(headers);
          return -1;
        }
@@ -620,7 +620,7 @@ static int get_param_part(struct OperationConfig *config, char endchar,
      sep = *p;
      *endpos = '\0';
      if(*unknown)
-
        warnf(config->global, "skip unknown form field: %s\n", unknown);
+
        warnf(config->global, "skip unknown form field: %s", unknown);
    }
  }

@@ -631,25 +631,25 @@ static int get_param_part(struct OperationConfig *config, char endchar,
  if(ptype)
    *ptype = type;
  else if(type)
-
    warnf(config->global, "Field content type not allowed here: %s\n", type);
+
    warnf(config->global, "Field content type not allowed here: %s", type);

  if(pfilename)
    *pfilename = filename;
  else if(filename)
    warnf(config->global,
-
          "Field file name not allowed here: %s\n", filename);
+
          "Field file name not allowed here: %s", filename);

  if(pencoder)
    *pencoder = encoder;
  else if(encoder)
    warnf(config->global,
-
          "Field encoder not allowed here: %s\n", encoder);
+
          "Field encoder not allowed here: %s", encoder);

  if(pheaders)
    *pheaders = headers;
  else if(headers) {
    warnf(config->global,
-
          "Field headers not allowed here: %s\n", headers->data);
+
          "Field headers not allowed here: %s", headers->data);
    curl_slist_free_all(headers);
  }

@@ -772,7 +772,7 @@ int formparse(struct OperationConfig *config,
    else if(!name && !strcmp(contp, ")") && !literal_value) {
      /* Ending a multipart. */
      if(*mimecurrent == *mimeroot) {
-
        warnf(config->global, "no multipart to terminate!\n");
+
        warnf(config->global, "no multipart to terminate");
        goto fail;
      }
      *mimecurrent = (*mimecurrent)->parent;
@@ -818,7 +818,7 @@ int formparse(struct OperationConfig *config,
               libcurl. */
          if(part->size > 0) {
            warnf(config->global,
-
                  "error while reading standard input\n");
+
                  "error while reading standard input");
            goto fail;
          }
          Curl_safefree(part->data);
@@ -855,7 +855,7 @@ int formparse(struct OperationConfig *config,
               libcurl. */
          if(part->size > 0) {
            warnf(config->global,
-
                  "error while reading standard input\n");
+
                  "error while reading standard input");
            goto fail;
          }
          Curl_safefree(part->data);
@@ -888,7 +888,7 @@ int formparse(struct OperationConfig *config,
      if(sep) {
        *contp = (char) sep;
        warnf(config->global,
-
              "garbage at end of field specification: %s\n", contp);
+
              "garbage at end of field specification: %s", contp);
      }
    }

@@ -896,7 +896,7 @@ int formparse(struct OperationConfig *config,
    SET_TOOL_MIME_PTR(part, name);
  }
  else {
-
    warnf(config->global, "Illegally formatted input field!\n");
+
    warnf(config->global, "Illegally formatted input field");
    goto fail;
  }
  err = 0;
modified external/curl/src/tool_getparam.c
@@ -122,6 +122,7 @@ static const struct LongShort aliases[]= {
  {"*x", "krb4",                     ARG_STRING},
         /* 'krb4' is the previous name */
  {"*X", "haproxy-protocol",         ARG_BOOL},
+
  {"*P", "haproxy-clientip",         ARG_STRING},
  {"*y", "max-filesize",             ARG_STRING},
  {"*z", "disable-eprt",             ARG_BOOL},
  {"*Z", "eprt",                     ARG_BOOL},
@@ -204,6 +205,7 @@ static const struct LongShort aliases[]= {
  {"$Z", "compressed-ssh",           ARG_BOOL},
  {"$~", "happy-eyeballs-timeout-ms", ARG_STRING},
  {"$!", "retry-all-errors",         ARG_BOOL},
+
  {"$%", "trace-ids",                ARG_BOOL},
  {"0",   "http1.0",                 ARG_NONE},
  {"01",  "http1.1",                 ARG_NONE},
  {"02",  "http2",                   ARG_NONE},
@@ -247,6 +249,8 @@ static const struct LongShort aliases[]= {
  {"Ed", "key-type",                 ARG_STRING},
  {"Ee", "pass",                     ARG_STRING},
  {"Ef", "engine",                   ARG_STRING},
+
  {"EG", "ca-native",                ARG_BOOL},
+
  {"EH", "proxy-ca-native",          ARG_BOOL},
  {"Eg", "capath",                   ARG_FILENAME},
  {"Eh", "pubkey",                   ARG_STRING},
  {"Ei", "hostpubmd5",               ARG_STRING},
@@ -506,7 +510,7 @@ static ParameterError GetSizeParameter(struct GlobalConfig *global,
  curl_off_t value;

  if(curlx_strtoofft(arg, &unit, 10, &value)) {
-
    warnf(global, "invalid number specified for %s\n", which);
+
    warnf(global, "invalid number specified for %s", which);
    return PARAM_BAD_USE;
  }

@@ -539,7 +543,7 @@ static ParameterError GetSizeParameter(struct GlobalConfig *global,
    /* for plain bytes, leave as-is */
    break;
  default:
-
    warnf(global, "unsupported %s unit. Use G, M, K or B!\n", which);
+
    warnf(global, "unsupported %s unit. Use G, M, K or B", which);
    return PARAM_BAD_USE;
  }
  *value_out = value;
@@ -603,7 +607,7 @@ static ParameterError data_urlencode(struct GlobalConfig *global,
      if(!file)
        warnf(global,
              "Couldn't read data from file \"%s\", this makes "
-
              "an empty POST.\n", nextarg);
+
              "an empty POST.", nextarg);
    }

    err = file2memory(&postdata, &size, file);
@@ -666,7 +670,7 @@ static void sethttpver(struct GlobalConfig *global,
{
  if(config->httpversion &&
     (config->httpversion != httpversion))
-
    warnf(global, "Overrides previous HTTP version option\n");
+
    warnf(global, "Overrides previous HTTP version option");

  config->httpversion = httpversion;
}
@@ -793,7 +797,7 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
      if((aliases[hit].desc == ARG_FILENAME) &&
         (nextarg[0] == '-') && nextarg[1]) {
        /* if the file name looks like a command line option */
-
        warnf(global, "The file name argument '%s' looks like a flag.\n",
+
        warnf(global, "The file name argument '%s' looks like a flag.",
              nextarg);
      }
    }
@@ -862,17 +866,17 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
      case 'g': /* --trace */
        GetStr(&global->trace_dump, nextarg);
        if(global->tracetype && (global->tracetype != TRACE_BIN))
-
          warnf(global, "--trace overrides an earlier trace/verbose option\n");
+
          warnf(global, "--trace overrides an earlier trace/verbose option");
        global->tracetype = TRACE_BIN;
        break;
      case 'G': /* --npn */
-
        warnf(global, "--npn is no longer supported\n");
+
        warnf(global, "--npn is no longer supported");
        break;
      case 'h': /* --trace-ascii */
        GetStr(&global->trace_dump, nextarg);
        if(global->tracetype && (global->tracetype != TRACE_ASCII))
          warnf(global,
-
                "--trace-ascii overrides an earlier trace/verbose option\n");
+
                "--trace-ascii overrides an earlier trace/verbose option");
        global->tracetype = TRACE_ASCII;
        break;
      case 'H': /* --alpn */
@@ -927,7 +931,7 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
            numerator = 24*60*60*1000;
            break;
          default:
-
            errorf(global, "unsupported --rate unit\n");
+
            errorf(global, "unsupported --rate unit");
            return PARAM_BAD_USE;
          }
        }
@@ -1038,7 +1042,7 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
        break;

      case 'v': /* --stderr */
-
        tool_set_stderr_file(nextarg);
+
        tool_set_stderr_file(global, nextarg);
        break;
      case 'w': /* --interface */
        /* interface */
@@ -1053,6 +1057,9 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
      case 'X': /* --haproxy-protocol */
        config->haproxy_protocol = toggle;
        break;
+
      case 'P': /* --haproxy-clientip */
+
        GetStr(&config->haproxy_clientip, nextarg);
+
        break;
      case 'y': /* --max-filesize */
        {
          curl_off_t value;
@@ -1113,7 +1120,7 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
        config->ftp_ssl = toggle;
        if(config->ftp_ssl)
          warnf(global,
-
                "--ssl is an insecure option, consider --ssl-reqd instead\n");
+
                "--ssl is an insecure option, consider --ssl-reqd instead");
        break;
      case 'b': /* --ftp-pasv */
        Curl_safefree(config->ftpport);
@@ -1255,7 +1262,7 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
      case 'z': /* --libcurl */
#ifdef CURL_DISABLE_LIBCURL_OPTION
        warnf(global,
-
              "--libcurl option was disabled at build-time!\n");
+
              "--libcurl option was disabled at build-time");
        return PARAM_OPTION_UNKNOWN;
#else
        GetStr(&global->libcurl, nextarg);
@@ -1333,7 +1340,7 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
        GetStr(&config->mail_auth, nextarg);
        break;
      case 'J': /* --metalink */
-
        errorf(global, "--metalink is disabled\n");
+
        errorf(global, "--metalink is disabled");
        return PARAM_BAD_USE;
      case '6': /* --sasl-authzid */
        GetStr(&config->sasl_authzid, nextarg);
@@ -1345,7 +1352,7 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
#ifdef CURLDEBUG
        global->test_event_based = toggle;
#else
-
        warnf(global, "--test-event is ignored unless a debug build!\n");
+
        warnf(global, "--test-event is ignored unless a debug build");
#endif
        break;
      case 'M': /* --unix-socket */
@@ -1401,6 +1408,9 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
          return err;
        /* 0 is a valid value for this timeout */
        break;
+
      case '%': /* --trace-ids */
+
        global->traceids = toggle;
+
        break;
      }
      break;
    case '#':
@@ -1428,10 +1438,14 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
        break;
      case '2':
        /* HTTP version 2.0 */
+
        if(!feature_http2)
+
          return PARAM_LIBCURL_DOESNT_SUPPORT;
        sethttpver(global, config, CURL_HTTP_VERSION_2_0);
        break;
      case '3': /* --http2-prior-knowledge */
        /* HTTP version 2.0 over clean TCP */
+
        if(!feature_http2)
+
          return PARAM_LIBCURL_DOESNT_SUPPORT;
        sethttpver(global, config, CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE);
        break;
      case '4': /* --http3 */
@@ -1452,6 +1466,8 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
        break;
      case 'a':
        /* --proxy-http2 */
+
        if(!feature_httpsproxy || !feature_http2)
+
          return PARAM_LIBCURL_DOESNT_SUPPORT;
        config->proxyver = CURLPROXY_HTTPS2;
        break;
      }
@@ -1488,11 +1504,11 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
      break;
    case '2':
      /* SSL version 2 */
-
      warnf(global, "Ignores instruction to use SSLv2\n");
+
      warnf(global, "Ignores instruction to use SSLv2");
      break;
    case '3':
      /* SSL version 3 */
-
      warnf(global, "Ignores instruction to use SSLv3\n");
+
      warnf(global, "Ignores instruction to use SSLv3");
      break;
    case '4':
      /* IPv4 */
@@ -1620,7 +1636,7 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
          file = fopen(nextarg, "rb");
          if(!file)
            warnf(global, "Couldn't read data from file \"%s\", this makes "
-
                  "an empty POST.\n", nextarg);
+
                  "an empty POST.", nextarg);
        }

        if((subletter == 'b') || /* --data-binary */
@@ -1723,9 +1739,15 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
        cleanarg(clearthis);
        GetFileAndPassword(nextarg, &config->cert, &config->key_passwd);
        break;
-
      case 'a': /* CA info PEM file */
+
      case 'a': /* --cacert CA info PEM file */
        GetStr(&config->cacert, nextarg);
        break;
+
      case 'G': /* --ca-native */
+
        config->native_ca_store = toggle;
+
        break;
+
      case 'H': /* --proxy-ca-native */
+
        config->proxy_native_ca_store = toggle;
+
        break;
      case 'b': /* cert file type */
        GetStr(&config->cert_type, nextarg);
        break;
@@ -1967,7 +1989,7 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
      }
      if(config->failonerror && config->failwithbody) {
        errorf(config->global, "You must select either --fail or "
-
               "--fail-with-body, not both.\n");
+
               "--fail-with-body, not both.");
        return PARAM_BAD_USE;
      }
      break;
@@ -2016,7 +2038,7 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
        bool use_stdin = !strcmp(&nextarg[1], "-");
        FILE *file = use_stdin?stdin:fopen(&nextarg[1], FOPEN_READTEXT);
        if(!file)
-
          warnf(global, "Failed to open %s!\n", &nextarg[1]);
+
          warnf(global, "Failed to open %s", &nextarg[1]);
        else {
          err = file2memory(&string, &len, file);
          if(!err && string) {
@@ -2075,7 +2097,7 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
      break;
    case 'K': /* parse config file */
      if(parseconfig(nextarg, global)) {
-
        errorf(global, "cannot read config from '%s'\n", nextarg);
+
        errorf(global, "cannot read config from '%s'", nextarg);
        return PARAM_READ_ERROR;
      }
      break;
@@ -2102,7 +2124,7 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
      if(toggle) { /* --no-manual shows no manual... */
#ifndef USE_MANUAL
        warnf(global,
-
              "built-in manual was disabled at build-time!\n");
+
              "built-in manual was disabled at build-time");
#endif
        return PARAM_MANUAL_REQUESTED;
      }
@@ -2172,7 +2194,7 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
      /* fill in the outfile */
      if('o' == letter) {
        if(!*nextarg) {
-
          warnf(global, "output file name has no length\n");
+
          warnf(global, "output file name has no length");
          return PARAM_BAD_USE;
        }
        GetStr(&url->outfile, nextarg);
@@ -2233,12 +2255,12 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
        char buffer[32];
        curl_off_t off;
        if(curlx_strtoofft(nextarg, NULL, 10, &off)) {
-
          warnf(global, "unsupported range point\n");
+
          warnf(global, "unsupported range point");
          return PARAM_BAD_USE;
        }
        warnf(global,
              "A specified range MUST include at least one dash (-). "
-
              "Appending one for you!\n");
+
              "Appending one for you");
        msnprintf(buffer, sizeof(buffer), "%" CURL_FORMAT_CURL_OFF_T "-", off);
        Curl_safefree(config->range);
        config->range = strdup(buffer);
@@ -2253,7 +2275,7 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
            warnf(global, "Invalid character is found in given range. "
                  "A specified range MUST have only digits in "
                  "\'start\'-\'stop\'. The server's response to this "
-
                  "request is uncertain.\n");
+
                  "request is uncertain.");
            break;
          }
          tmp_range++;
@@ -2330,7 +2352,7 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
          return PARAM_NO_MEM;
        if(global->tracetype && (global->tracetype != TRACE_PLAIN))
          warnf(global,
-
                "-v, --verbose overrides an earlier trace/verbose option\n");
+
                "-v, --verbose overrides an earlier trace/verbose option");
        global->tracetype = TRACE_PLAIN;
      }
      else
@@ -2408,16 +2430,20 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
      case '\0':  /* --parallel */
        global->parallel = toggle;
        break;
-
      case 'b':   /* --parallel-max */
-
        err = str2unum(&global->parallel_max, nextarg);
+
      case 'b': {  /* --parallel-max */
+
        long val;
+
        err = str2unum(&val, nextarg);
        if(err)
          return err;
-
        if(global->parallel_max > MAX_PARALLEL)
+
        if(val > MAX_PARALLEL)
          global->parallel_max = MAX_PARALLEL;
-
        else if(global->parallel_max < 1)
+
        else if(val < 1)
          global->parallel_max = PARALLEL_DEFAULT;
+
        else
+
          global->parallel_max = (unsigned short)val;
        break;
-
      case 'c':   /* --parallel-connect */
+
      }
+
      case 'c':   /* --parallel-immediate */
        global->parallel_connect = toggle;
        break;
      }
@@ -2457,7 +2483,7 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
          warnf(global,
                "Illegal date format for -z, --time-cond (and not "
                "a file name). Disabling time condition. "
-
                "See curl_getdate(3) for valid date syntax.\n");
+
                "See curl_getdate(3) for valid date syntax.");
        }
      }
      break;
@@ -2533,7 +2559,7 @@ ParameterError parse_args(struct GlobalConfig *global, int argc,
              result = PARAM_NO_MEM;
          }
          else {
-
            errorf(global, "missing URL before --next\n");
+
            errorf(global, "missing URL before --next");
            result = PARAM_BAD_USE;
          }
        }
@@ -2566,9 +2592,9 @@ ParameterError parse_args(struct GlobalConfig *global, int argc,
    const char *reason = param2text(result);

    if(orig_opt && strcmp(":", orig_opt))
-
      helpf(stderr, "option %s: %s\n", orig_opt, reason);
+
      helpf(stderr, "option %s: %s", orig_opt, reason);
    else
-
      helpf(stderr, "%s\n", reason);
+
      helpf(stderr, "%s", reason);
  }

  curlx_unicodefree(orig_opt);
modified external/curl/src/tool_helpers.c
@@ -99,7 +99,7 @@ int SetHTTPrequest(struct OperationConfig *config, HttpReq req, HttpReq *store)
    return 0;
  }
  warnf(config->global, "You can only select one HTTP request method! "
-
        "You asked for both %s and %s.\n",
+
        "You asked for both %s and %s.",
        reqname[req], reqname[*store]);

  return 1;
@@ -122,11 +122,11 @@ void customrequest_helper(struct OperationConfig *config, HttpReq req,
    ;
  else if(curl_strequal(method, dflt[req])) {
    notef(config->global, "Unnecessary use of -X or --request, %s is already "
-
          "inferred.\n", dflt[req]);
+
          "inferred.", dflt[req]);
  }
  else if(curl_strequal(method, "head")) {
    warnf(config->global,
          "Setting custom HTTP method to HEAD with -X/--request may not work "
-
          "the way you want. Consider using -I/--head instead.\n");
+
          "the way you want. Consider using -I/--head instead.");
  }
}
modified external/curl/src/tool_hugehelp.c
@@ -30,7 +30,7 @@ void hugehelp(void)
"       designed to work without user interaction.\n"
"\n"
"       curl offers a busload of useful tricks like proxy support, user authen-\n"
-
"       tication, FTP upload, HTTP post, SSL connections, cookies, file  trans-\n"
+
"       tication,  FTP upload, HTTP post, SSL connections, cookies, file trans-\n"
"       fer resume and more. As you will see below, the number of features will\n"
"       make your head spin.\n"
"\n"
@@ -70,14 +70,14 @@ void hugehelp(void)
"       -Z, --parallel. You can specify command line options and URLs mixed and\n"
"       in any order on the command line.\n"
"\n"
-
"       You  can  specify a step counter for the ranges to get every Nth number\n"
+
"       You can specify a step counter for the ranges to get every  Nth  number\n"
"       or letter:\n"
"\n"
"         \"http://example.com/file[1-100:10].txt\"\n"
"\n"
"         \"http://example.com/file[a-z:2].txt\"\n"
"\n"
-
"       When using [] or {} sequences when invoked from a command line  prompt,\n"
+
"       When  using [] or {} sequences when invoked from a command line prompt,\n"
, stdout);
 fputs(
"       you probably have to put the full URL within double quotes to avoid the\n"
@@ -93,7 +93,7 @@ void hugehelp(void)
, stdout);
 fputs(
"       protocol you want. It then defaults to HTTP but assumes others based on\n"
-
"       often-used host name prefixes. For example,  for  host  names  starting\n"
+
"       often-used  host  name  prefixes.  For example, for host names starting\n"
"       with \"ftp.\" curl assumes you want FTP.\n"
"\n"
"       curl attempts to re-use connections when doing multiple file transfers,\n"
@@ -143,7 +143,7 @@ void hugehelp(void)
"              tions and the correct command line options.\n"
"\n"
"       IMAP(S)\n"
-
"              Using  the mail reading protocol, curl can \"download\" emails for\n"
+
"              Using the mail reading protocol, curl can \"download\" emails  for\n"
"              you. With or without using TLS.\n"
"\n"
"       LDAP(S)\n"
@@ -156,11 +156,11 @@ void hugehelp(void)
"              topic. MQTT over TLS is not supported (yet).\n"
"\n"
"       POP3(S)\n"
-
"              Downloading from a pop3 server means getting  a  mail.  With  or\n"
+
"              Downloading  from  a  pop3  server means getting a mail. With or\n"
"              without using TLS.\n"
"\n"
"       RTMP(S)\n"
-
"              The  Realtime  Messaging  Protocol  is  primarily used to server\n"
+
"              The Realtime Messaging Protocol  is  primarily  used  to  server\n"
"              streaming media and curl can download it.\n"
"\n"
"       RTSP   curl supports RTSP 1.0 downloads.\n"
@@ -174,7 +174,7 @@ void hugehelp(void)
"       SMB(S) curl supports SMB version 1 for upload and download.\n"
"\n"
"       SMTP(S)\n"
-
"              Uploading contents to an SMTP server  means  sending  an  email.\n"
+
"              Uploading  contents  to  an  SMTP server means sending an email.\n"
"              With or without TLS.\n"
"\n"
"       TELNET Telling curl to fetch a telnet URL starts an interactive session\n"
@@ -213,8 +213,8 @@ void hugehelp(void)
"       completely with the -s, --silent option.\n"
"\n"
"VERSION\n"
-
"       This man page describes curl 8.1.2. If you use a later version, chances\n"
-
"       are this man page does not fully document it. If  you  use  an  earlier\n"
+
"       This man page describes curl 8.2.1. If you use a later version, chances\n"
+
"       are  this  man  page  does not fully document it. If you use an earlier\n"
, stdout);
 fputs(
"       version, this document tries to include version information about which\n"
@@ -241,8 +241,8 @@ void hugehelp(void)
, stdout);
 fputs(
"       In general, all boolean options are enabled with --option and yet again\n"
-
"       disabled  with  --no-option.  That is, you use the same option name but\n"
-
"       prefix it with \"no-\". However, in this list we  mostly  only  list  and\n"
+
"       disabled with --no-option. That is, you use the same  option  name  but\n"
+
"       prefix  it  with  \"no-\".  However, in this list we mostly only list and\n"
"       show the --option version of them.\n"
"\n"
"       When -:, --next is used, it resets the parser state and you start again\n"
@@ -254,8 +254,8 @@ void hugehelp(void)
"\n"
"       The following options are global: --fail-early, --libcurl,  --parallel-\n"
"       immediate,  -Z,  --parallel, -#, --progress-bar, --rate, -S, --show-er-\n"
-
"       ror, --stderr, --styled-output,  --trace-ascii,  --trace-time,  --trace\n"
-
"       and -v, --verbose.\n"
+
"       ror, --stderr, --styled-output,  --trace-ascii,  --trace-ids,  --trace-\n"
+
"       time, --trace and -v, --verbose.\n"
"\n"
"       --abstract-unix-socket <path>\n"
"              (HTTP)  Connect  through an abstract Unix domain socket, instead\n"
@@ -286,7 +286,7 @@ void hugehelp(void)
"\n"
, stdout);
 fputs(
-
"              If  this  option  is used several times, curl will load contents\n"
+
"              If this option is used several times, curl  will  load  contents\n"
"              from all the files but the last one will be used for saving.\n"
"\n"
"              --alt-svc can be used several times in a command line\n"
@@ -302,9 +302,9 @@ void hugehelp(void)
 fputs(
"              and  use  the most secure one the remote site claims to support.\n"
"              This is done by first doing a request and checking the response-\n"
-
"              headers,  thus  possibly  inducing  an extra network round-trip.\n"
-
"              This is  used  instead  of  setting  a  specific  authentication\n"
-
"              method,  which  you  can  do with --basic, --digest, --ntlm, and\n"
+
"              headers, thus possibly inducing  an  extra  network  round-trip.\n"
+
"              This  is  used  instead  of  setting  a  specific authentication\n"
+
"              method, which you can do with  --basic,  --digest,  --ntlm,  and\n"
"              --negotiate.\n"
"\n"
, stdout);
@@ -327,7 +327,7 @@ void hugehelp(void)
"\n"
"       -a, --append\n"
"              (FTP SFTP) When used in an upload, this makes curl append to the\n"
-
"              target file instead of overwriting it. If the remote  file  does\n"
+
"              target  file  instead of overwriting it. If the remote file does\n"
"              not exist, it will be created. Note that this flag is ignored by\n"
"              some SFTP servers (including OpenSSH).\n"
"\n"
@@ -344,7 +344,7 @@ void hugehelp(void)
"       --aws-sigv4 <provider1[:provider2[:region[:service]]]>\n"
"              Use AWS V4 signature authentication in the transfer.\n"
"\n"
-
"              The  provider argument is a string that is used by the algorithm\n"
+
"              The provider argument is a string that is used by the  algorithm\n"
"              when creating outgoing authentication headers.\n"
"\n"
, stdout);
@@ -357,7 +357,7 @@ void hugehelp(void)
"              vided by a cloud (service-code) when the service name is omitted\n"
"              from the endpoint.\n"
"\n"
-
"              If --aws-sigv4 is provided several times,  the  last  set  value\n"
+
"              If  --aws-sigv4  is  provided  several times, the last set value\n"
"              will be used.\n"
"\n"
, stdout);
@@ -368,12 +368,12 @@ void hugehelp(void)
"              See also --basic and -u, --user. Added in 7.75.0.\n"
"\n"
"       --basic\n"
-
"              (HTTP)  Tells curl to use HTTP Basic authentication with the re-\n"
+
"              (HTTP) Tells curl to use HTTP Basic authentication with the  re-\n"
"              mote host. This is the default and this option is usually point-\n"
"              less, unless you use it to override a previously set option that\n"
, stdout);
 fputs(
-
"              sets a different authentication method (such  as  --ntlm,  --di-\n"
+
"              sets  a  different  authentication method (such as --ntlm, --di-\n"
"              gest, or --negotiate).\n"
"\n"
"              Used together with -u, --user.\n"
@@ -385,12 +385,34 @@ void hugehelp(void)
"\n"
"              See also --proxy-basic.\n"
"\n"
+
"       --ca-native\n"
+
"              (TLS) Tells curl to use the CA store from the  native  operating\n"
+
, stdout);
+
 fputs(
+
"              system to verify the peer. By default, curl will otherwise use a\n"
+
"              CA  store provided in a single file or directory, but when using\n"
+
"              this option it will interface the operating system's own vault.\n"
+
"\n"
+
"              This option only works for curl on Windows  when  built  to  use\n"
+
"              OpenSSL.  When  curl  on  Windows is built to use Schannel, this\n"
+
"              feature is implied and curl then only uses the native CA store.\n"
+
"\n"
+
, stdout);
+
 fputs(
+
"              Providing --ca-native multiple times has no extra effect.   Dis-\n"
+
"              able it again with --no-ca-native.\n"
+
"\n"
+
"              Example:\n"
+
"               curl --ca-native https://example.com\n"
+
"\n"
+
"              See also --cacert, --capath and -k, --insecure. Added in 8.2.0.\n"
+
"\n"
"       --cacert <file>\n"
"              (TLS) Tells curl to use the specified certificate file to verify\n"
+
"              the  peer.  The  file  may contain multiple CA certificates. The\n"
, stdout);
 fputs(
-
"              the peer. The file may contain  multiple  CA  certificates.  The\n"
-
"              certificate(s)  must be in PEM format. Normally curl is built to\n"
+
"              certificate(s) must be in PEM format. Normally curl is built  to\n"
"              use a default file for this, so this option is typically used to\n"
"              alter that default file.\n"
"\n"
@@ -398,9 +420,9 @@ void hugehelp(void)
"              if it is set, and uses the given path as a path  to  a  CA  cert\n"
"              bundle. This option overrides that variable.\n"
"\n"
+
"              The  windows  version  of  curl will automatically look for a CA\n"
, stdout);
 fputs(
-
"              The  windows  version  of  curl will automatically look for a CA\n"
"              certs file named 'curl-ca-bundle.crt', either in the same direc-\n"
"              tory as curl.exe, or in the Current Working Directory, or in any\n"
"              folder along your PATH.\n"
@@ -409,90 +431,90 @@ void hugehelp(void)
"              PKCS#11 module (libnsspem.so) needs to be available for this op-\n"
"              tion to work properly.\n"
"\n"
+
"              (iOS  and macOS only) If curl is built against Secure Transport,\n"
, stdout);
 fputs(
-
"              (iOS and macOS only) If curl is built against Secure  Transport,\n"
-
"              then  this  option  is supported for backward compatibility with\n"
-
"              other SSL engines, but it should not be set. If  the  option  is\n"
-
"              not  set,  then curl will use the certificates in the system and\n"
-
"              user Keychain to verify the peer, which is the preferred  method\n"
+
"              then this option is supported for  backward  compatibility  with\n"
+
"              other  SSL  engines,  but it should not be set. If the option is\n"
+
"              not set, then curl will use the certificates in the  system  and\n"
+
"              user  Keychain to verify the peer, which is the preferred method\n"
"              of verifying the peer's certificate chain.\n"
"\n"
+
"              (Schannel only) This option is supported for Schannel in Windows\n"
, stdout);
 fputs(
-
"              (Schannel only) This option is supported for Schannel in Windows\n"
"              7 or later with libcurl 7.60 or later. This option is  supported\n"
"              for backward compatibility with other SSL engines; instead it is\n"
-
"              recommended to use Windows' store of root certificates (the  de-\n"
+
"              recommended  to use Windows' store of root certificates (the de-\n"
"              fault for Schannel).\n"
"\n"
-
"              If  --cacert  is provided several times, the last set value will\n"
+
"              If --cacert is provided several times, the last set  value  will\n"
"              be used.\n"
"              Example:\n"
-
, stdout);
-
 fputs(
"               curl --cacert CA-file.txt https://example.com\n"
"\n"
+
, stdout);
+
 fputs(
"              See also --capath and -k, --insecure.\n"
"\n"
"       --capath <dir>\n"
-
"              (TLS) Tells curl to use the specified certificate  directory  to\n"
-
"              verify  the  peer.  Multiple paths can be provided by separating\n"
+
"              (TLS)  Tells  curl to use the specified certificate directory to\n"
+
"              verify the peer. Multiple paths can be  provided  by  separating\n"
"              them with \":\" (e.g.  \"path1:path2:path3\"). The certificates must\n"
"              be  in PEM format, and if curl is built against OpenSSL, the di-\n"
+
"              rectory must have been processed using the c_rehash utility sup-\n"
, stdout);
 fputs(
-
"              rectory must have been processed using the c_rehash utility sup-\n"
-
"              plied  with  OpenSSL.  Using  --capath can allow OpenSSL-powered\n"
-
"              curl to make SSL-connections much more  efficiently  than  using\n"
+
"              plied with OpenSSL. Using  --capath  can  allow  OpenSSL-powered\n"
+
"              curl  to  make  SSL-connections much more efficiently than using\n"
"              --cacert if the --cacert file contains many CA certificates.\n"
"\n"
"              If this option is set, the default capath value will be ignored.\n"
-
"              If  --capath  is provided several times, the last set value will\n"
+
"              If --capath is provided several times, the last set  value  will\n"
"              be used.\n"
+
"              Example:\n"
, stdout);
 fputs(
-
"              Example:\n"
"               curl --capath /local/directory https://example.com\n"
"\n"
"              See also --cacert and -k, --insecure.\n"
"\n"
"       --cert-status\n"
-
"              (TLS) Tells curl to verify the status of the server  certificate\n"
+
"              (TLS)  Tells curl to verify the status of the server certificate\n"
"              by using the Certificate Status Request (aka. OCSP stapling) TLS\n"
"              extension.\n"
"\n"
"              If this option is enabled and the server sends an invalid  (e.g.\n"
+
"              expired) response, if the response suggests that the server cer-\n"
, stdout);
 fputs(
-
"              expired) response, if the response suggests that the server cer-\n"
-
"              tificate has been revoked, or no response at  all  is  received,\n"
+
"              tificate  has  been  revoked, or no response at all is received,\n"
"              the verification fails.\n"
"\n"
-
"              This  is  currently  only implemented in the OpenSSL, GnuTLS and\n"
+
"              This is currently only implemented in the  OpenSSL,  GnuTLS  and\n"
"              NSS backends.\n"
"\n"
-
"              Providing --cert-status multiple  times  has  no  extra  effect.\n"
+
"              Providing  --cert-status  multiple  times  has  no extra effect.\n"
"              Disable it again with --no-cert-status.\n"
"\n"
"              Example:\n"
-
, stdout);
-
 fputs(
"               curl --cert-status https://example.com\n"
"\n"
"              See also --pinnedpubkey. Added in 7.41.0.\n"
"\n"
+
, stdout);
+
 fputs(
"       --cert-type <type>\n"
-
"              (TLS)  Tells  curl  what type the provided client certificate is\n"
+
"              (TLS) Tells curl what type the provided  client  certificate  is\n"
"              using. PEM, DER, ENG and P12 are recognized types.\n"
"\n"
-
"              The default type depends on the TLS backend and is usually  PEM,\n"
-
"              however  for  Secure  Transport  and  Schannel it is P12. If -E,\n"
-
, stdout);
-
 fputs(
+
"              The  default type depends on the TLS backend and is usually PEM,\n"
+
"              however for Secure Transport and Schannel  it  is  P12.  If  -E,\n"
"              --cert is a pkcs11: URI then ENG is the default type.\n"
"\n"
-
"              If --cert-type is provided several times,  the  last  set  value\n"
+
"              If  --cert-type  is  provided  several times, the last set value\n"
+
, stdout);
+
 fputs(
"              will be used.\n"
"\n"
"              Example:\n"
@@ -501,77 +523,77 @@ void hugehelp(void)
"              See also -E, --cert, --key and --key-type.\n"
"\n"
"       -E, --cert <certificate[:password]>\n"
-
"              (TLS)  Tells  curl  to use the specified client certificate file\n"
-
, stdout);
-
 fputs(
+
"              (TLS) Tells curl to use the specified  client  certificate  file\n"
"              when getting a file with HTTPS, FTPS or another SSL-based proto-\n"
"              col.  The  certificate must be in PKCS#12 format if using Secure\n"
+
, stdout);
+
 fputs(
"              Transport, or PEM format if using any other engine. If  the  op-\n"
"              tional  password is not specified, it will be queried for on the\n"
"              terminal. Note that this option assumes a certificate file  that\n"
"              is  the private key and the client certificate concatenated. See\n"
-
, stdout);
-
 fputs(
"              -E, --cert and --key to specify them independently.\n"
"\n"
"              In the <certificate> portion of the argument,  you  must  escape\n"
+
, stdout);
+
 fputs(
"              the  character  \":\"  as \"\\:\" so that it is not recognized as the\n"
"              password delimiter. Similarly, you must escape the character \"\\\"\n"
"              as \"\\\\\" so that it is not recognized as an escape character.\n"
"\n"
-
"              If  curl  is  built against the NSS SSL library then this option\n"
+
"              If curl is built against the NSS SSL library  then  this  option\n"
+
"              can  tell curl the nickname of the certificate to use within the\n"
+
"              NSS database defined by the environment variable SSL_DIR (or  by\n"
, stdout);
 fputs(
-
"              can tell curl the nickname of the certificate to use within  the\n"
-
"              NSS  database defined by the environment variable SSL_DIR (or by\n"
-
"              default /etc/pki/nssdb). If the NSS  PEM  PKCS#11  module  (lib-\n"
+
"              default  /etc/pki/nssdb).  If  the  NSS PEM PKCS#11 module (lib-\n"
"              nsspem.so) is available then PEM files may be loaded.\n"
"\n"
-
"              If  you  provide  a  path relative to the current directory, you\n"
-
"              must prefix the path with \"./\" in order to avoid confusion  with\n"
-
, stdout);
-
 fputs(
+
"              If you provide a path relative to  the  current  directory,  you\n"
+
"              must  prefix the path with \"./\" in order to avoid confusion with\n"
"              an NSS database nickname.\n"
"\n"
-
"              If  curl is built against OpenSSL library, and the engine pkcs11\n"
+
"              If curl is built against OpenSSL library, and the engine  pkcs11\n"
+
, stdout);
+
 fputs(
"              is available, then a PKCS#11 URI (RFC 7512) can be used to spec-\n"
"              ify  a  certificate located in a PKCS#11 device. A string begin-\n"
"              ning with \"pkcs11:\" will be interpreted as a PKCS#11 URI.  If  a\n"
"              PKCS#11 URI is provided, then the --engine option will be set as\n"
-
, stdout);
-
 fputs(
"              \"pkcs11\" if none was provided and the --cert-type option will be\n"
"              set as \"ENG\" if none was provided.\n"
"\n"
-
"              (iOS  and macOS only) If curl is built against Secure Transport,\n"
-
"              then the certificate string can either be the name of a certifi-\n"
-
"              cate/private  key in the system or user keychain, or the path to\n"
-
"              a PKCS#12-encoded certificate and private key. If  you  want  to\n"
, stdout);
 fputs(
-
"              use  a  file  from the current directory, please precede it with\n"
+
"              (iOS  and macOS only) If curl is built against Secure Transport,\n"
+
"              then the certificate string can either be the name of a certifi-\n"
+
"              cate/private key in the system or user keychain, or the path  to\n"
+
"              a  PKCS#12-encoded  certificate  and private key. If you want to\n"
+
"              use a file from the current directory, please  precede  it  with\n"
"              \"./\" prefix, in order to avoid confusion with a nickname.\n"
"\n"
-
"              (Schannel only) Client certificates must be specified by a  path\n"
-
"              expression  to  a  certificate  store.  (Loading PFX is not sup-\n"
-
"              ported; you can import it to a store first). You can use \"<store\n"
-
"              location>\\<store  name>\\<thumbprint>\"  to refer to a certificate\n"
, stdout);
 fputs(
+
"              (Schannel  only) Client certificates must be specified by a path\n"
+
"              expression to a certificate store.  (Loading  PFX  is  not  sup-\n"
+
"              ported; you can import it to a store first). You can use \"<store\n"
+
"              location>\\<store  name>\\<thumbprint>\"  to refer to a certificate\n"
"              in  the  system  certificates  store,  for   example,   \"Curren-\n"
"              tUser\\MY\\934a7ac6f8a5d579285a74fa61e19f23ddfe8d7a\".   Thumbprint\n"
+
, stdout);
+
 fputs(
"              is usually a SHA-1 hex string which you can see  in  certificate\n"
"              details.  Following  store locations are supported: CurrentUser,\n"
"              LocalMachine, CurrentService, Services,  CurrentUserGroupPolicy,\n"
"              LocalMachineGroupPolicy, LocalMachineEnterprise.\n"
"\n"
-
, stdout);
-
 fputs(
"              If -E, --cert is provided several times, the last set value will\n"
"              be used.\n"
"              Example:\n"
"               curl --cert certfile --key keyfile https://example.com\n"
"\n"
+
, stdout);
+
 fputs(
"              See also --cert-type, --key and --key-type.\n"
"\n"
"       --ciphers <list of ciphers>\n"
@@ -579,27 +601,27 @@ void hugehelp(void)
"              of  ciphers  must  specify  valid ciphers. Read up on SSL cipher\n"
"              list details on this URL:\n"
"\n"
-
, stdout);
-
 fputs(
-
"               https://curl.se/docs/ssl-ciphers.html\n"
+
"              https://curl.se/docs/ssl-ciphers.html\n"
"\n"
"              If --ciphers is provided several times, the last set value  will\n"
"              be used.\n"
"              Example:\n"
+
, stdout);
+
 fputs(
"               curl --ciphers ECDHE-ECDSA-AES256-CCM8 https://example.com\n"
"\n"
-
"              See also --tlsv1.3.\n"
+
"              See also --tlsv1.3, --tls13-ciphers and --proxy-ciphers.\n"
"\n"
"       --compressed-ssh\n"
"              (SCP SFTP) Enables built-in SSH compression.  This is a request,\n"
"              not an order; the server may or may not do it.\n"
"\n"
-
, stdout);
-
 fputs(
-
"              Providing --compressed-ssh multiple times has no  extra  effect.\n"
+
"              Providing  --compressed-ssh  multiple times has no extra effect.\n"
"              Disable it again with --no-compressed-ssh.\n"
"\n"
"              Example:\n"
+
, stdout);
+
 fputs(
"               curl --compressed-ssh sftp://example.com/\n"
"\n"
"              See also --compressed. Added in 7.56.0.\n"
@@ -608,22 +630,22 @@ void hugehelp(void)
"              (HTTP) Request a compressed response using one of the algorithms\n"
"              curl supports, and automatically decompress the content.\n"
"\n"
-
, stdout);
-
 fputs(
"              Response headers are not modified when saved,  so  if  they  are\n"
"              \"interpreted\"  separately  again at a later point they might ap-\n"
+
, stdout);
+
 fputs(
"              pear to be saying that the content is (still) compressed;  while\n"
"              in fact it has already been decompressed.\n"
"\n"
"              If  this  option is used and the server sends an unsupported en-\n"
"              coding, curl will report an error. This is a request, not an or-\n"
-
, stdout);
-
 fputs(
"              der; the server may or may not deliver data compressed.\n"
"\n"
"              Providing --compressed multiple times has no extra effect.  Dis-\n"
"              able it again with --no-compressed.\n"
"\n"
+
, stdout);
+
 fputs(
"              Example:\n"
"               curl --compressed https://example.com\n"
"\n"
@@ -631,41 +653,43 @@ void hugehelp(void)
"\n"
"       -K, --config <file>\n"
"              Specify a text file to read curl  arguments  from.  The  command\n"
-
, stdout);
-
 fputs(
"              line  arguments  found  in the text file will be used as if they\n"
"              were provided on the command line.\n"
"\n"
"              Options and their parameters must be specified on the same  line\n"
-
"              in the file, separated by whitespace, colon, or the equals sign.\n"
-
"              Long option names can optionally be given  in  the  config  file\n"
-
"              without the initial double dashes and if so, the colon or equals\n"
, stdout);
 fputs(
+
"              in the file, separated by whitespace, colon, or the equals sign.\n"
+
"              Long  option  names  can  optionally be given in the config file\n"
+
"              without the initial double dashes and if so, the colon or equals\n"
"              characters can be used as separators. If the option is specified\n"
-
"              with  one or two dashes, there can be no colon or equals charac-\n"
+
"              with one or two dashes, there can be no colon or equals  charac-\n"
"              ter between the option and its parameter.\n"
"\n"
-
"              If the parameter contains whitespace (or starts with  :  or  =),\n"
-
"              the  parameter  must  be  enclosed  within quotes. Within double\n"
-
"              quotes, the following escape sequences are  available:  \\\\,  \\\",\n"
, stdout);
 fputs(
+
"              If  the  parameter  contains whitespace (or starts with : or =),\n"
+
"              the parameter must be  enclosed  within  quotes.  Within  double\n"
+
"              quotes,  the  following  escape sequences are available: \\\\, \\\",\n"
"              \\t, \\n, \\r and \\v. A backslash preceding any other letter is ig-\n"
"              nored.\n"
"\n"
"              If the first column of a config line is  a  '#'  character,  the\n"
"              rest of the line will be treated as a comment.\n"
"\n"
-
"              Only write one option per physical line in the config file.\n"
+
, stdout);
+
 fputs(
+
"              Only  write  one  option per physical line in the config file. A\n"
+
"              single line is required to be no more than 10  megabytes  (since\n"
+
"              8.2.0).\n"
"\n"
"              Specify  the  filename  to -K, --config as '-' to make curl read\n"
"              the file from stdin.\n"
"\n"
-
, stdout);
-
 fputs(
"              Note that to be able to specify a URL in the  config  file,  you\n"
"              need  to  specify  it  using the --url option, and not by simply\n"
+
, stdout);
+
 fputs(
"              writing the URL on its own line. So, it could  look  similar  to\n"
"              this:\n"
"\n"
@@ -677,25 +701,25 @@ void hugehelp(void)
"               output = \"curlhere.html\"\n"
"               user-agent = \"superagent/1.0\"\n"
"\n"
-
, stdout);
-
 fputs(
"               # and fetch another URL too\n"
"               url = \"example.com/docs/manpage.html\"\n"
"               -O\n"
+
, stdout);
+
 fputs(
"               referer = \"http://nowhereatall.example.com/\"\n"
"               # --- End of example file ---\n"
"\n"
"              When  curl  is invoked, it (unless -q, --disable is used) checks\n"
"              for a default config file and uses it if found,  even  when  -K,\n"
"              --config  is used. The default config file is checked for in the\n"
-
, stdout);
-
 fputs(
"              following places in this order:\n"
"\n"
"              1) \"$CURL_HOME/.curlrc\"\n"
"\n"
"              2) \"$XDG_CONFIG_HOME/curlrc\" (Added in 7.73.0)\n"
"\n"
+
, stdout);
+
 fputs(
"              3) \"$HOME/.curlrc\"\n"
"\n"
"              4) Windows: \"%USERPROFILE%\\.curlrc\"\n"
@@ -707,11 +731,11 @@ void hugehelp(void)
"              7) Non-Windows: use getpwuid to find the home directory\n"
"\n"
"              8) On Windows, if it finds no .curlrc file in the  sequence  de-\n"
-
, stdout);
-
 fputs(
"              scribed  above,  it checks for one in the same dir the curl exe-\n"
"              cutable is placed.\n"
"\n"
+
, stdout);
+
 fputs(
"              On Windows two filenames are checked per location:  .curlrc  and\n"
"              _curlrc,  preferring  the  former.  Older  versions  on  Windows\n"
"              checked for _curlrc only.\n"
@@ -721,20 +745,20 @@ void hugehelp(void)
"              Example:\n"
"               curl --config file.txt https://example.com\n"
"\n"
-
, stdout);
-
 fputs(
"              See also -q, --disable.\n"
"\n"
"       --connect-timeout <fractional seconds>\n"
+
, stdout);
+
 fputs(
"              Maximum time in seconds that  you  allow  curl's  connection  to\n"
"              take.   This  only  limits the connection phase, so if curl con-\n"
"              nects within the given period it will continue - if not it  will\n"
"              exit.  Since version 7.32.0, this option accepts decimal values.\n"
-
"              The \"connection phase\" is considered complete when the requested\n"
+
"              The  \"connection  phase\"  is  considered  complete  when the DNS\n"
+
"              lookup and requested TCP, TLS or QUIC handshakes are done.\n"
+
"\n"
, stdout);
 fputs(
-
"              TCP, TLS or QUIC handshakes are done.\n"
-
"\n"
"              The decimal value needs to provided using a dot (.)  as  decimal\n"
"              separator  - not the local version even if it might be using an-\n"
"              other separator.\n"
@@ -744,31 +768,31 @@ void hugehelp(void)
"\n"
"              Examples:\n"
"               curl --connect-timeout 20 https://example.com\n"
-
, stdout);
-
 fputs(
"               curl --connect-timeout 3.14 https://example.com\n"
"\n"
"              See also -m, --max-time.\n"
"\n"
+
, stdout);
+
 fputs(
"       --connect-to <HOST1:PORT1:HOST2:PORT2>\n"
"\n"
"              For  a  request  to  the  given  HOST1:PORT1  pair,  connect  to\n"
"              HOST2:PORT2 instead.  This option is suitable to direct requests\n"
"              at a specific server, e.g. at a specific cluster node in a clus-\n"
"              ter of servers. This option is only used to establish  the  net-\n"
+
"              work  connection.  It  does NOT affect the hostname/port that is\n"
, stdout);
 fputs(
-
"              work  connection.  It  does NOT affect the hostname/port that is\n"
"              used for TLS/SSL (e.g. SNI, certificate verification) or for the\n"
-
"              application  protocols.  \"HOST1\"  and  \"PORT1\"  may be the empty\n"
+
"              application protocols. \"HOST1\" and  \"PORT1\"  may  be  the  empty\n"
"              string, meaning \"any host/port\". \"HOST2\" and \"PORT2\" may also be\n"
"              the   empty   string,   meaning   \"use  the  request's  original\n"
"              host/port\".\n"
"\n"
+
"              A \"host\" specified to this option is compared as a string, so it\n"
, stdout);
 fputs(
-
"              A \"host\" specified to this option is compared as a string, so it\n"
-
"              needs  to  match  the name used in request URL. It can be either\n"
+
"              needs to match the name used in request URL. It  can  be  either\n"
"              numerical such as \"127.0.0.1\" or the full host name such as \"ex-\n"
"              ample.org\".\n"
"\n"
@@ -777,20 +801,20 @@ void hugehelp(void)
"              Example:\n"
"               curl --connect-to example.com:443:example.net:8443 https://example.com\n"
"\n"
-
, stdout);
-
 fputs(
"              See also --resolve and -H, --header. Added in 7.49.0.\n"
"\n"
"       -C, --continue-at <offset>\n"
+
, stdout);
+
 fputs(
"              Continue/Resume  a  previous  file transfer at the given offset.\n"
"              The given offset is the exact  number  of  bytes  that  will  be\n"
"              skipped,  counting  from the beginning of the source file before\n"
"              it is transferred to the destination. If used with uploads,  the\n"
"              FTP server command SIZE will not be used by curl.\n"
"\n"
+
"              Use  \"-C  -\" to tell curl to automatically find out where/how to\n"
, stdout);
 fputs(
-
"              Use  \"-C  -\" to tell curl to automatically find out where/how to\n"
"              resume the transfer. It then uses the given  output/input  files\n"
"              to figure that out.\n"
"\n"
@@ -804,19 +828,19 @@ void hugehelp(void)
"              See also -r, --range.\n"
"\n"
"       -c, --cookie-jar <filename>\n"
+
"              (HTTP) Specify to which file you want curl to write all  cookies\n"
, stdout);
 fputs(
-
"              (HTTP) Specify to which file you want curl to write all  cookies\n"
"              after  a  completed  operation. Curl writes all cookies from its\n"
"              in-memory cookie storage to the given file at the end of  opera-\n"
"              tions.  If  no  cookies  are known, no data will be written. The\n"
"              file will be written using the Netscape cookie file  format.  If\n"
"              you set the file name to a single dash, \"-\", the cookies will be\n"
-
, stdout);
-
 fputs(
"              written to stdout.\n"
"\n"
-
"              This command line option will activate the  cookie  engine  that\n"
+
, stdout);
+
 fputs(
+
"              This  command  line  option will activate the cookie engine that\n"
"              makes curl record and use cookies. Another way to activate it is\n"
"              to use the -b, --cookie option.\n"
"\n"
@@ -841,16 +865,16 @@ void hugehelp(void)
, stdout);
 fputs(
"              (HTTP) Pass the data to the HTTP server in the Cookie header. It\n"
-
"              is supposedly the data previously received from the server in  a\n"
-
"              \"Set-Cookie:\"   line.   The   data   should  be  in  the  format\n"
-
"              \"NAME1=VALUE1; NAME2=VALUE2\". This makes  curl  use  the  cookie\n"
-
"              header  with this content explicitly in all outgoing request(s).\n"
-
"              If multiple requests are done due  to  authentication,  followed\n"
+
"              is  supposedly the data previously received from the server in a\n"
+
"              \"Set-Cookie:\"  line.  The  data  should   be   in   the   format\n"
+
"              \"NAME1=VALUE1;  NAME2=VALUE2\".  This  makes  curl use the cookie\n"
+
"              header with this content explicitly in all outgoing  request(s).\n"
+
"              If  multiple  requests  are done due to authentication, followed\n"
, stdout);
 fputs(
"              redirects or similar, they will all get this cookie passed on.\n"
"\n"
-
"              If  no '=' symbol is used in the argument, it is instead treated\n"
+
"              If no '=' symbol is used in the argument, it is instead  treated\n"
"              as a filename to read previously stored cookie from. This option\n"
"              also activates the cookie engine which will make curl record in-\n"
"              coming cookies, which may be handy if you are using this in com-\n"
@@ -861,22 +885,22 @@ void hugehelp(void)
"              nus (\"-\"), curl will instead read the contents from stdin.\n"
"\n"
"              The file format of the file to read cookies from should be plain\n"
-
"              HTTP headers (Set-Cookie style) or the  Netscape/Mozilla  cookie\n"
+
"              HTTP  headers  (Set-Cookie style) or the Netscape/Mozilla cookie\n"
"              file format.\n"
"\n"
-
"              The  file  specified with -b, --cookie is only used as input. No\n"
-
"              cookies will be written to the file. To store cookies,  use  the\n"
+
"              The file specified with -b, --cookie is only used as  input.  No\n"
+
"              cookies  will  be written to the file. To store cookies, use the\n"
, stdout);
 fputs(
"              -c, --cookie-jar option.\n"
"\n"
-
"              If  you  use the Set-Cookie file format and do not specify a do-\n"
-
"              main then the cookie is not sent since  the  domain  will  never\n"
-
"              match.  To  address this, set a domain in Set-Cookie line (doing\n"
-
"              that will include sub-domains) or preferably: use  the  Netscape\n"
+
"              If you use the Set-Cookie file format and do not specify  a  do-\n"
+
"              main  then  the  cookie  is not sent since the domain will never\n"
+
"              match. To address this, set a domain in Set-Cookie  line  (doing\n"
+
"              that  will  include sub-domains) or preferably: use the Netscape\n"
"              format.\n"
"\n"
-
"              Users  often want to both read cookies from a file and write up-\n"
+
"              Users often want to both read cookies from a file and write  up-\n"
, stdout);
 fputs(
"              dated cookies back to a file, so using both -b, --cookie and -c,\n"
@@ -894,9 +918,9 @@ void hugehelp(void)
, stdout);
 fputs(
"              When used in conjunction with the -o, --output option, curl will\n"
-
"              create the necessary local directory hierarchy as  needed.  This\n"
-
"              option  creates  the directories mentioned with the -o, --output\n"
-
"              option, nothing else. If the -o, --output file name uses no  di-\n"
+
"              create  the  necessary local directory hierarchy as needed. This\n"
+
"              option creates the directories mentioned with the  -o,  --output\n"
+
"              option,  nothing else. If the -o, --output file name uses no di-\n"
"              rectory, or if the directories it mentions already exist, no di-\n"
"              rectories will be created.\n"
"\n"
@@ -918,7 +942,7 @@ void hugehelp(void)
 fputs(
"       --create-file-mode <mode>\n"
"              (SFTP SCP FILE) When curl is used to create files remotely using\n"
-
"              one  of  the supported protocols, this option allows the user to\n"
+
"              one of the supported protocols, this option allows the  user  to\n"
"              set which 'mode' to set on the file at creation time, instead of\n"
"              the default 0644.\n"
"\n"
@@ -954,7 +978,7 @@ void hugehelp(void)
"              tion List that may specify peer certificates that are to be con-\n"
"              sidered revoked.\n"
"\n"
-
"              If --crlfile is provided several times, the last set value  will\n"
+
"              If  --crlfile is provided several times, the last set value will\n"
"              be used.\n"
"              Example:\n"
"               curl --crlfile rejects.txt https://example.com\n"
@@ -964,22 +988,22 @@ void hugehelp(void)
, stdout);
 fputs(
"       --curves <algorithm list>\n"
-
"              (TLS)  Tells  curl  to request specific curves to use during SSL\n"
-
"              session establishment according to RFC 8422, 5.1.  Multiple  al-\n"
-
"              gorithms  can  be  provided  by  separating  them with \":\" (e.g.\n"
-
"              \"X25519:P-521\").  The parameter is available identically in  the\n"
+
"              (TLS) Tells curl to request specific curves to  use  during  SSL\n"
+
"              session  establishment according to RFC 8422, 5.1.  Multiple al-\n"
+
"              gorithms can be provided  by  separating  them  with  \":\"  (e.g.\n"
+
"              \"X25519:P-521\").   The parameter is available identically in the\n"
"              \"openssl s_client/s_server\" utilities.\n"
"\n"
-
"              --curves  allows  a OpenSSL powered curl to make SSL-connections\n"
+
"              --curves allows a OpenSSL powered curl to  make  SSL-connections\n"
, stdout);
 fputs(
-
"              with exactly the (EC) curve requested by  the  client,  avoiding\n"
+
"              with  exactly  the  (EC) curve requested by the client, avoiding\n"
"              nontransparent client/server negotiations.\n"
"\n"
-
"              If  this  option  is  set,  the  default  curves list built into\n"
+
"              If this option is  set,  the  default  curves  list  built  into\n"
"              openssl will be ignored.\n"
"\n"
-
"              If --curves is provided several times, the last set  value  will\n"
+
"              If  --curves  is provided several times, the last set value will\n"
"              be used.\n"
"              Example:\n"
"               curl --curves X25519 https://example.com\n"
@@ -999,18 +1023,18 @@ void hugehelp(void)
"              See also --data-binary, --data-raw and --data-urlencode.\n"
"\n"
"       --data-binary <data>\n"
-
"              (HTTP)  This  posts data exactly as specified with no extra pro-\n"
+
"              (HTTP) This posts data exactly as specified with no  extra  pro-\n"
"              cessing whatsoever.\n"
"\n"
, stdout);
 fputs(
-
"              If you start the data with the letter @, the rest  should  be  a\n"
+
"              If  you  start  the data with the letter @, the rest should be a\n"
"              filename. Data is posted in a similar manner as -d, --data does,\n"
"              except that newlines and carriage returns are preserved and con-\n"
"              versions are never done.\n"
"\n"
-
"              Like  -d,  --data the default content-type sent to the server is\n"
-
"              application/x-www-form-urlencoded. If you want the  data  to  be\n"
+
"              Like -d, --data the default content-type sent to the  server  is\n"
+
"              application/x-www-form-urlencoded.  If  you  want the data to be\n"
, stdout);
 fputs(
"              treated as arbitrary binary data by the server then set the con-\n"
@@ -1084,50 +1108,50 @@ void hugehelp(void)
"                     pended,  resulting  in name=urlencoded-file-content. Note\n"
"                     that the name is expected to be URL-encoded already.\n"
"\n"
-
"       --data-urlencode can be used several times in a command line\n"
+
"              --data-urlencode can be used several times in a command line\n"
"\n"
-
"       Examples:\n"
+
"              Examples:\n"
, stdout);
 fputs(
-
"        curl --data-urlencode name=val https://example.com\n"
-
"        curl --data-urlencode =encodethis https://example.com\n"
-
"        curl --data-urlencode name@file https://example.com\n"
-
"        curl --data-urlencode @fileonly https://example.com\n"
+
"               curl --data-urlencode name=val https://example.com\n"
+
"               curl --data-urlencode =encodethis https://example.com\n"
+
"               curl --data-urlencode name@file https://example.com\n"
+
"               curl --data-urlencode @fileonly https://example.com\n"
"\n"
-
"       See also -d, --data and --data-raw.\n"
+
"              See also -d, --data and --data-raw.\n"
"\n"
"       -d, --data <data>\n"
"              (HTTP MQTT) Sends the specified data in a POST  request  to  the\n"
-
"              HTTP server, in the same way that a browser does when a user has\n"
, stdout);
 fputs(
-
"              filled in an HTML form and presses the submit button. This  will\n"
+
"              HTTP server, in the same way that a browser does when a user has\n"
+
"              filled  in an HTML form and presses the submit button. This will\n"
"              cause curl to pass the data to the server using the content-type\n"
"              application/x-www-form-urlencoded. Compare to -F, --form.\n"
"\n"
"              --data-raw is almost the same but does not have a special inter-\n"
-
"              pretation  of  the  @ character. To post data purely binary, you\n"
-
"              should instead use the --data-binary option. To  URL-encode  the\n"
+
"              pretation of the @ character. To post data  purely  binary,  you\n"
, stdout);
 fputs(
+
"              should  instead  use the --data-binary option. To URL-encode the\n"
"              value of a form field you may use --data-urlencode.\n"
"\n"
-
"              If  any of these options is used more than once on the same com-\n"
+
"              If any of these options is used more than once on the same  com-\n"
"              mand line, the data pieces specified will be merged with a sepa-\n"
"              rating  &-symbol.  Thus,  using  '-d name=daniel -d skill=lousy'\n"
"              would    generate    a    post    chunk    that    looks    like\n"
-
"              'name=daniel&skill=lousy'.\n"
-
"\n"
, stdout);
 fputs(
+
"              'name=daniel&skill=lousy'.\n"
+
"\n"
"              If  you  start  the data with the letter @, the rest should be a\n"
"              file name to read the data from, or - if you want curl  to  read\n"
"              the  data  from  stdin.  Posting data from a file named 'foobar'\n"
"              would thus be done with -d, --data @foobar. When -d,  --data  is\n"
"              told  to  read  from a file like that, carriage returns and new-\n"
-
"              lines will be stripped out. If you do not want the  @  character\n"
, stdout);
 fputs(
+
"              lines will be stripped out. If you do not want the  @  character\n"
"              to have a special interpretation use --data-raw instead.\n"
"\n"
"              The  data  for this option is passed on to the server exactly as\n"
@@ -1137,10 +1161,10 @@ void hugehelp(void)
"\n"
"              -d, --data can be used several times in a command line\n"
"\n"
-
"              Examples:\n"
-
"               curl -d \"name=curl\" https://example.com\n"
, stdout);
 fputs(
+
"              Examples:\n"
+
"               curl -d \"name=curl\" https://example.com\n"
"               curl -d \"name=curl\" -d \"tool=cmdline\" https://example.com\n"
"               curl -d @filename https://example.com\n"
"\n"
@@ -1149,11 +1173,11 @@ void hugehelp(void)
"              -T, --upload-file.\n"
"\n"
"       --delegation <LEVEL>\n"
+
, stdout);
+
 fputs(
"              (GSS/kerberos) Set LEVEL to tell the server what it  is  allowed\n"
"              to delegate when it comes to user credentials.\n"
"\n"
-
, stdout);
-
 fputs(
"              none   Do not allow any delegation.\n"
"\n"
"              policy Delegates  if  and only if the OK-AS-DELEGATE flag is set\n"
@@ -1162,27 +1186,27 @@ void hugehelp(void)
"\n"
"              always Unconditionally allow the server to delegate.\n"
"\n"
-
"       If  --delegation  is provided several times, the last set value will be\n"
-
"       used.\n"
-
"\n"
-
"       Example:\n"
-
"        curl --delegation \"none\" https://example.com\n"
-
"\n"
, stdout);
 fputs(
-
"       See also -k, --insecure and --ssl.\n"
+
"              If  --delegation  is  provided several times, the last set value\n"
+
"              will be used.\n"
+
"\n"
+
"              Example:\n"
+
"               curl --delegation \"none\" https://example.com\n"
+
"\n"
+
"              See also -k, --insecure and --ssl.\n"
"\n"
"       --digest\n"
"              (HTTP) Enables HTTP Digest authentication. This is an  authenti-\n"
"              cation  scheme  that  prevents the password from being sent over\n"
"              the wire in clear text. Use this in combination with the  normal\n"
+
, stdout);
+
 fputs(
"              -u, --user option to set user name and password.\n"
"\n"
"              Providing  --digest multiple times has no extra effect.  Disable\n"
"              it again with --no-digest.\n"
"\n"
-
, stdout);
-
 fputs(
"              Example:\n"
"               curl -u name:password --digest https://example.com\n"
"\n"
@@ -1190,21 +1214,21 @@ void hugehelp(void)
"              is mutually exclusive to --basic and --ntlm and --negotiate.\n"
"\n"
"       --disable-eprt\n"
-
"              (FTP) Tell curl to disable the use of the EPRT and LPRT commands\n"
-
"              when doing active FTP transfers. Curl will normally always first\n"
, stdout);
 fputs(
+
"              (FTP) Tell curl to disable the use of the EPRT and LPRT commands\n"
+
"              when doing active FTP transfers. Curl will normally always first\n"
"              attempt  to use EPRT, then LPRT before using PORT, but with this\n"
"              option, it will use PORT right away. EPRT and  LPRT  are  exten-\n"
"              sions  to  the  original  FTP  protocol, and may not work on all\n"
"              servers, but they enable more functionality in a better way than\n"
+
, stdout);
+
 fputs(
"              the traditional PORT command.\n"
"\n"
"              --eprt can be used to explicitly enable EPRT again and --no-eprt\n"
"              is an alias for --disable-eprt.\n"
"\n"
-
, stdout);
-
 fputs(
"              If the server is accessed using IPv6, this option will  have  no\n"
"              effect as EPRT is necessary then.\n"
"\n"
@@ -1212,12 +1236,12 @@ void hugehelp(void)
"              switch to passive mode you need to not  use  -P,  --ftp-port  or\n"
"              force it with --ftp-pasv.\n"
"\n"
+
, stdout);
+
 fputs(
"              Providing  --disable-eprt  multiple  times  has no extra effect.\n"
"              Disable it again with --no-disable-eprt.\n"
"\n"
"              Example:\n"
-
, stdout);
-
 fputs(
"               curl --disable-eprt ftp://example.com/\n"
"\n"
"              See also --disable-epsv and -P, --ftp-port.\n"
@@ -1225,98 +1249,100 @@ void hugehelp(void)
"       --disable-epsv\n"
"              (FTP) Tell curl to disable the use of the EPSV command when  do-\n"
"              ing  passive  FTP transfers. Curl will normally always first at-\n"
+
, stdout);
+
 fputs(
"              tempt to use EPSV before PASV, but with this option, it will not\n"
"              try using EPSV.\n"
"\n"
"              --epsv can be used to explicitly enable EPSV again and --no-epsv\n"
-
, stdout);
-
 fputs(
"              is an alias for --disable-epsv.\n"
"\n"
"              If the server is an IPv6 host, this option will have  no  effect\n"
"              as EPSV is necessary then.\n"
"\n"
"              Disabling EPSV only changes the passive behavior. If you want to\n"
+
, stdout);
+
 fputs(
"              switch to active mode you need to use -P, --ftp-port.\n"
"\n"
-
"              Providing --disable-epsv multiple times  has  no  extra  effect.\n"
+
"              Providing  --disable-epsv  multiple  times  has no extra effect.\n"
"              Disable it again with --no-disable-epsv.\n"
"\n"
"              Example:\n"
-
, stdout);
-
 fputs(
"               curl --disable-epsv ftp://example.com/\n"
"\n"
"              See also --disable-eprt and -P, --ftp-port.\n"
"\n"
"       -q, --disable\n"
-
"              If  used  as the first parameter on the command line, the curlrc\n"
-
"              config file will not be read and used. See the -K, --config  for\n"
+
"              If used as the first parameter on the command line,  the  curlrc\n"
+
, stdout);
+
 fputs(
+
"              config  file will not be read and used. See the -K, --config for\n"
"              details on the default config file search path.\n"
"\n"
-
"              Providing  -q,  --disable  multiple  times  has no extra effect.\n"
+
"              Providing -q, --disable multiple  times  has  no  extra  effect.\n"
"              Disable it again with --no-disable.\n"
"\n"
-
, stdout);
-
 fputs(
"              Example:\n"
"               curl -q https://example.com\n"
"\n"
"              See also -K, --config.\n"
"\n"
"       --disallow-username-in-url\n"
-
"              (HTTP) This tells curl to exit if  passed  a  URL  containing  a\n"
-
"              username.  This  is  probably  most useful when the URL is being\n"
+
"              (HTTP)  This  tells  curl  to  exit if passed a URL containing a\n"
+
, stdout);
+
 fputs(
+
"              username. This is probably most useful when  the  URL  is  being\n"
"              provided at runtime or similar.\n"
"\n"
"              Providing --disallow-username-in-url multiple times has no extra\n"
"              effect.  Disable it again with --no-disallow-username-in-url.\n"
"\n"
-
, stdout);
-
 fputs(
"              Example:\n"
"               curl --disallow-username-in-url https://example.com\n"
"\n"
"              See also --proto. Added in 7.61.0.\n"
"\n"
"       --dns-interface <interface>\n"
+
, stdout);
+
 fputs(
"              (DNS)  Tell  curl  to send outgoing DNS requests through <inter-\n"
"              face>. This option is a counterpart to --interface  (which  does\n"
"              not  affect  DNS). The supplied string must be an interface name\n"
"              (not an address).\n"
"\n"
-
, stdout);
-
 fputs(
"              If --dns-interface is provided several times, the last set value\n"
"              will be used.\n"
"\n"
"              Example:\n"
"               curl --dns-interface eth0 https://example.com\n"
"\n"
-
"              See  also  --dns-ipv4-addr  and --dns-ipv6-addr. --dns-interface\n"
-
"              requires that the underlying libcurl was  built  to  support  c-\n"
+
, stdout);
+
 fputs(
+
"              See also --dns-ipv4-addr  and  --dns-ipv6-addr.  --dns-interface\n"
+
"              requires  that  the  underlying  libcurl was built to support c-\n"
"              ares. Added in 7.33.0.\n"
"\n"
"       --dns-ipv4-addr <address>\n"
-
, stdout);
-
 fputs(
"              (DNS) Tell curl to bind to <ip-address> when making IPv4 DNS re-\n"
"              quests, so that the DNS requests originate  from  this  address.\n"
"              The argument should be a single IPv4 address.\n"
"\n"
+
, stdout);
+
 fputs(
"              If --dns-ipv4-addr is provided several times, the last set value\n"
"              will be used.\n"
"\n"
"              Example:\n"
"               curl --dns-ipv4-addr 10.1.2.3 https://example.com\n"
"\n"
-
"              See also --dns-interface  and  --dns-ipv6-addr.  --dns-ipv4-addr\n"
-
, stdout);
-
 fputs(
-
"              requires  that  the  underlying  libcurl was built to support c-\n"
+
"              See  also  --dns-interface  and --dns-ipv6-addr. --dns-ipv4-addr\n"
+
"              requires that the underlying libcurl was  built  to  support  c-\n"
"              ares. Added in 7.33.0.\n"
"\n"
"       --dns-ipv6-addr <address>\n"
+
, stdout);
+
 fputs(
"              (DNS) Tell curl to bind to <ip-address> when making IPv6 DNS re-\n"
"              quests,  so  that  the DNS requests originate from this address.\n"
"              The argument should be a single IPv6 address.\n"
@@ -1325,38 +1351,38 @@ void hugehelp(void)
"              will be used.\n"
"\n"
"              Example:\n"
-
, stdout);
-
 fputs(
"               curl --dns-ipv6-addr 2a04:4e42::561 https://example.com\n"
"\n"
-
"              See  also  --dns-interface  and --dns-ipv4-addr. --dns-ipv6-addr\n"
-
"              requires that the underlying libcurl was  built  to  support  c-\n"
+
, stdout);
+
 fputs(
+
"              See also --dns-interface  and  --dns-ipv4-addr.  --dns-ipv6-addr\n"
+
"              requires  that  the  underlying  libcurl was built to support c-\n"
"              ares. Added in 7.33.0.\n"
"\n"
"       --dns-servers <addresses>\n"
"              Set the list of DNS servers to be used instead of the system de-\n"
"              fault.  The list of IP addresses should be separated  with  com-\n"
+
"              mas. Port numbers may also optionally be given as :<port-number>\n"
, stdout);
 fputs(
-
"              mas. Port numbers may also optionally be given as :<port-number>\n"
"              after each IP address.\n"
"\n"
-
"              If --dns-servers is provided several times, the last  set  value\n"
+
"              If  --dns-servers  is provided several times, the last set value\n"
"              will be used.\n"
"\n"
"              Example:\n"
"               curl --dns-servers 192.168.0.1,192.168.0.2 https://example.com\n"
"\n"
-
"              See  also --dns-interface and --dns-ipv4-addr. --dns-servers re-\n"
-
"              quires that the underlying libcurl was built to support  c-ares.\n"
-
, stdout);
-
 fputs(
+
"              See also --dns-interface and --dns-ipv4-addr. --dns-servers  re-\n"
+
"              quires  that the underlying libcurl was built to support c-ares.\n"
"              Added in 7.33.0.\n"
"\n"
"       --doh-cert-status\n"
+
, stdout);
+
 fputs(
"              Same as --cert-status but used for DoH (DNS-over-HTTPS).\n"
"\n"
-
"              Providing  --doh-cert-status multiple times has no extra effect.\n"
+
"              Providing --doh-cert-status multiple times has no extra  effect.\n"
"              Disable it again with --no-doh-cert-status.\n"
"\n"
"              Example:\n"
@@ -1365,11 +1391,11 @@ void hugehelp(void)
"              See also --doh-insecure. Added in 7.76.0.\n"
"\n"
"       --doh-insecure\n"
-
, stdout);
-
 fputs(
"              Same as -k, --insecure but used for DoH (DNS-over-HTTPS).\n"
"\n"
-
"              Providing --doh-insecure multiple times  has  no  extra  effect.\n"
+
, stdout);
+
 fputs(
+
"              Providing  --doh-insecure  multiple  times  has no extra effect.\n"
"              Disable it again with --no-doh-insecure.\n"
"\n"
"              Example:\n"
@@ -1378,10 +1404,10 @@ void hugehelp(void)
"              See also --doh-url. Added in 7.76.0.\n"
"\n"
"       --doh-url <URL>\n"
-
"              Specifies  which  DNS-over-HTTPS  (DoH) server to use to resolve\n"
+
"              Specifies which DNS-over-HTTPS (DoH) server to  use  to  resolve\n"
+
"              hostnames, instead of using the default name resolver mechanism.\n"
, stdout);
 fputs(
-
"              hostnames, instead of using the default name resolver mechanism.\n"
"              The URL must be HTTPS.\n"
"\n"
"              Some  SSL  options  that you set for your transfer will apply to\n"
@@ -1389,11 +1415,11 @@ void hugehelp(void)
"              certificate  verification  settings are not inherited and can be\n"
"              controlled separately via --doh-insecure and --doh-cert-status.\n"
"\n"
-
, stdout);
-
 fputs(
"              This option is unset if an empty string \"\" is used as  the  URL.\n"
"              (Added in 7.85.0)\n"
"\n"
+
, stdout);
+
 fputs(
"              If  --doh-url is provided several times, the last set value will\n"
"              be used.\n"
"              Example:\n"
@@ -1403,11 +1429,11 @@ void hugehelp(void)
"\n"
"       -D, --dump-header <filename>\n"
"              (HTTP FTP) Write the received protocol headers to the  specified\n"
-
, stdout);
-
 fputs(
"              file.  If  no  headers are received, the use of this option will\n"
"              create an empty file.\n"
"\n"
+
, stdout);
+
 fputs(
"              When used in FTP, the FTP server response lines  are  considered\n"
"              being \"headers\" and thus are saved there.\n"
"\n"
@@ -1415,12 +1441,12 @@ void hugehelp(void)
"              URLs in one -:, --next clause), will append  them  to  the  same\n"
"              file, separated by a blank line.\n"
"\n"
-
, stdout);
-
 fputs(
"              If  -D,  --dump-header  is  provided several times, the last set\n"
"              value will be used.\n"
"\n"
"              Example:\n"
+
, stdout);
+
 fputs(
"               curl --dump-header store.txt https://example.com\n"
"\n"
"              See also -o, --output.\n"
@@ -1430,10 +1456,10 @@ void hugehelp(void)
"              7.84.0.  Prior to that it only had an effect on curl if built to\n"
"              use old versions of OpenSSL.\n"
"\n"
-
, stdout);
-
 fputs(
"              Specify the path name to the Entropy  Gathering  Daemon  socket.\n"
"              The  socket  is  used  to seed the random engine for SSL connec-\n"
+
, stdout);
+
 fputs(
"              tions.\n"
"\n"
"              If --egd-file is provided several times, the last set value will\n"
@@ -1444,10 +1470,10 @@ void hugehelp(void)
"              See also --random-file.\n"
"\n"
"       --engine <name>\n"
+
"              (TLS) Select the OpenSSL crypto engine to use for cipher  opera-\n"
+
"              tions. Use --engine list to print a list of build-time supported\n"
, stdout);
 fputs(
-
"              (TLS)  Select the OpenSSL crypto engine to use for cipher opera-\n"
-
"              tions. Use --engine list to print a list of build-time supported\n"
"              engines.  Note  that  not all (and possibly none) of the engines\n"
"              may be available at runtime.\n"
"\n"
@@ -1456,12 +1482,12 @@ void hugehelp(void)
"              Example:\n"
"               curl --engine flavor https://example.com\n"
"\n"
-
, stdout);
-
 fputs(
"              See also --ciphers and --curves.\n"
"\n"
"       --etag-compare <file>\n"
"              (HTTP) This option makes a conditional HTTP request for the spe-\n"
+
, stdout);
+
 fputs(
"              cific ETag read from the given file by sending a custom If-None-\n"
"              Match header using the stored ETag.\n"
"\n"
@@ -1469,10 +1495,10 @@ void hugehelp(void)
"              only a single line with the  desired  ETag.  An  empty  file  is\n"
"              parsed as an empty ETag.\n"
"\n"
-
, stdout);
-
 fputs(
"              Use  the  option  --etag-save  to first save the ETag from a re-\n"
"              sponse, and then use this option to compare  against  the  saved\n"
+
, stdout);
+
 fputs(
"              ETag in a subsequent request.\n"
"\n"
"              If  --etag-compare is provided several times, the last set value\n"
@@ -1484,10 +1510,10 @@ void hugehelp(void)
"              See also --etag-save and -z, --time-cond. Added in 7.68.0.\n"
"\n"
"       --etag-save <file>\n"
-
, stdout);
-
 fputs(
"              (HTTP) This option saves an HTTP ETag to the specified file.  An\n"
"              ETag  is  a  caching  related  header, usually returned in a re-\n"
+
, stdout);
+
 fputs(
"              sponse.\n"
"\n"
"              If no ETag is sent by the server, an empty file is created.\n"
@@ -1498,24 +1524,24 @@ void hugehelp(void)
"              Example:\n"
"               curl --etag-save storetag.txt https://example.com\n"
"\n"
-
, stdout);
-
 fputs(
"              See also --etag-compare. Added in 7.68.0.\n"
"\n"
"       --expect100-timeout <seconds>\n"
"              (HTTP) Maximum time in seconds that you allow curl to wait for a\n"
-
"              100-continue response when curl emits an  Expects:  100-continue\n"
-
"              header  in  its  request.  By default curl will wait one second.\n"
-
"              This option accepts decimal values! When curl stops waiting,  it\n"
-
"              will continue as if the response has been received.\n"
-
"\n"
, stdout);
 fputs(
-
"              The  decimal  value needs to provided using a dot (.) as decimal\n"
-
"              separator - not the local version even if it might be using  an-\n"
+
"              100-continue  response  when curl emits an Expects: 100-continue\n"
+
"              header in its request. By default curl  will  wait  one  second.\n"
+
"              This  option accepts decimal values! When curl stops waiting, it\n"
+
"              will continue as if the response has been received.\n"
+
"\n"
+
"              The decimal value needs to provided using a dot (.)  as  decimal\n"
+
"              separator  - not the local version even if it might be using an-\n"
"              other separator.\n"
"\n"
-
"              If  --expect100-timeout  is provided several times, the last set\n"
+
, stdout);
+
 fputs(
+
"              If --expect100-timeout is provided several times, the  last  set\n"
"              value will be used.\n"
"\n"
"              Example:\n"
@@ -1524,31 +1550,31 @@ void hugehelp(void)
"              See also --connect-timeout. Added in 7.47.0.\n"
"\n"
"       --fail-early\n"
-
, stdout);
-
 fputs(
"              Fail and exit on the first detected transfer error.\n"
"\n"
-
"              When curl is used to do multiple transfers on the command  line,\n"
+
"              When  curl is used to do multiple transfers on the command line,\n"
+
, stdout);
+
 fputs(
"              it will attempt to operate on each given URL, one by one. By de-\n"
"              fault, it will ignore errors if there are more  URLs  given  and\n"
"              the  last  URL's  success will determine the error code curl re-\n"
"              turns. So early failures will be \"hidden\" by subsequent success-\n"
"              ful transfers.\n"
"\n"
+
"              Using this option, curl will instead  return  an  error  on  the\n"
, stdout);
 fputs(
-
"              Using  this  option,  curl  will  instead return an error on the\n"
-
"              first transfer that fails, independent of  the  amount  of  URLs\n"
-
"              that  are given on the command line. This way, no transfer fail-\n"
+
"              first  transfer  that  fails,  independent of the amount of URLs\n"
+
"              that are given on the command line. This way, no transfer  fail-\n"
"              ures go undetected by scripts and similar.\n"
"\n"
"              This option does not imply -f, --fail, which causes transfers to\n"
"              fail  due  to the server's HTTP status code. You can combine the\n"
-
, stdout);
-
 fputs(
"              two options, however note -f, --fail is not global and is there-\n"
"              fore contained by -:, --next.\n"
"\n"
+
, stdout);
+
 fputs(
"              This option is global and does not need to be specified for each\n"
"              use of --next.\n"
"\n"
@@ -1558,45 +1584,45 @@ void hugehelp(void)
"              Example:\n"
"               curl --fail-early https://example.com https://two.example\n"
"\n"
-
, stdout);
-
 fputs(
"              See also -f, --fail and --fail-with-body. Added in 7.52.0.\n"
"\n"
"       --fail-with-body\n"
-
"              (HTTP)  Return an error on server errors where the HTTP response\n"
-
"              code is 400 or greater). In normal cases  when  an  HTTP  server\n"
+
, stdout);
+
 fputs(
+
"              (HTTP) Return an error on server errors where the HTTP  response\n"
+
"              code  is  400  or  greater). In normal cases when an HTTP server\n"
"              fails to deliver a document, it returns an HTML document stating\n"
"              so (which often also describes why and  more).  This  flag  will\n"
"              still allow curl to output and save that content but also to re-\n"
-
, stdout);
-
 fputs(
"              turn error 22.\n"
"\n"
-
"              This is an alternative option to -f,  --fail  which  makes  curl\n"
+
, stdout);
+
 fputs(
+
"              This  is  an  alternative  option to -f, --fail which makes curl\n"
"              fail for the same circumstances but without saving the content.\n"
"\n"
-
"              Providing  --fail-with-body  multiple times has no extra effect.\n"
+
"              Providing --fail-with-body multiple times has no  extra  effect.\n"
"              Disable it again with --no-fail-with-body.\n"
"\n"
"              Example:\n"
"               curl --fail-with-body https://example.com\n"
"\n"
-
"              See also -f, --fail. This option is mutually  exclusive  to  -f,\n"
-
, stdout);
-
 fputs(
+
"              See  also  -f,  --fail. This option is mutually exclusive to -f,\n"
"              --fail. Added in 7.76.0.\n"
"\n"
+
, stdout);
+
 fputs(
"       -f, --fail\n"
"              (HTTP) Fail fast with no output at all on server errors. This is\n"
"              useful to enable scripts and users to better  deal  with  failed\n"
"              attempts. In normal cases when an HTTP server fails to deliver a\n"
-
"              document, it returns an HTML document stating  so  (which  often\n"
-
"              also  describes  why and more). This flag will prevent curl from\n"
-
, stdout);
-
 fputs(
+
"              document,  it  returns  an HTML document stating so (which often\n"
+
"              also describes why and more). This flag will prevent  curl  from\n"
"              outputting that and return error 22.\n"
"\n"
-
"              This method is not fail-safe and there are occasions where  non-\n"
+
, stdout);
+
 fputs(
+
"              This  method is not fail-safe and there are occasions where non-\n"
"              successful response codes will slip through, especially when au-\n"
"              thentication is involved (response codes 401 and 407).\n"
"\n"
@@ -1674,13 +1700,13 @@ void hugehelp(void)
"              For SMTP and IMAP protocols, this is the means to compose a mul-\n"
"              tipart mail message to transmit.\n"
"\n"
-
"              This enables uploading of binary files etc. To force  the  'con-\n"
+
"              This  enables  uploading of binary files etc. To force the 'con-\n"
"              tent' part to be a file, prefix the file name with an @ sign. To\n"
"              just get the content part from a file, prefix the file name with\n"
, stdout);
 fputs(
-
"              the  symbol  <.  The  difference  between @ and < is then that @\n"
-
"              makes a file get attached in the post as a  file  upload,  while\n"
+
"              the symbol <. The difference between @ and  <  is  then  that  @\n"
+
"              makes  a  file  get attached in the post as a file upload, while\n"
"              the < makes a text field and just get the contents for that text\n"
"              field from a file.\n"
"\n"
@@ -1691,33 +1717,33 @@ void hugehelp(void)
"              is used, the contents is buffered in memory first by curl to de-\n"
"              termine  its size and allow a possible resend. Defining a part's\n"
"              data from a named non-regular file (such as a named pipe or sim-\n"
-
"              ilar)  is unfortunately not subject to buffering and will be ef-\n"
-
"              fectively read at transmission time; since the full size is  un-\n"
+
"              ilar) is unfortunately not subject to buffering and will be  ef-\n"
+
"              fectively  read at transmission time; since the full size is un-\n"
"              known before the transfer starts, such data is sent as chunks by\n"
, stdout);
 fputs(
"              HTTP and rejected by IMAP.\n"
"\n"
"              Example: send an image to an HTTP server, where 'profile' is the\n"
-
"              name  of  the  form-field to which the file portrait.jpg will be\n"
+
"              name of the form-field to which the file  portrait.jpg  will  be\n"
"              the input:\n"
"\n"
"               curl -F profile=@portrait.jpg https://example.com/upload.cgi\n"
"\n"
-
"              Example: send your name and shoe size in two text fields to  the\n"
+
"              Example:  send your name and shoe size in two text fields to the\n"
"              server:\n"
"\n"
"               curl -F name=John -F shoesize=11 https://example.com/\n"
"\n"
, stdout);
 fputs(
-
"              Example:  send your essay in a text field to the server. Send it\n"
-
"              as a plain text field, but get the contents for it from a  local\n"
+
"              Example: send your essay in a text field to the server. Send  it\n"
+
"              as  a plain text field, but get the contents for it from a local\n"
"              file:\n"
"\n"
"               curl -F \"story=<hugefile.txt\" https://example.com/\n"
"\n"
-
"              You  can  also  tell  curl  what  Content-Type  to  use by using\n"
+
"              You can also  tell  curl  what  Content-Type  to  use  by  using\n"
"              'type=', in a manner similar to:\n"
"\n"
"               curl -F \"web=@index.html;type=text/html\" example.com\n"
@@ -1728,12 +1754,12 @@ void hugehelp(void)
 fputs(
"               curl -F \"name=daniel;type=text/foo\" example.com\n"
"\n"
-
"              You can also explicitly change the name field of a  file  upload\n"
+
"              You  can  also explicitly change the name field of a file upload\n"
"              part by setting filename=, like this:\n"
"\n"
"               curl -F \"file=@localfile;filename=nameinpost\" example.com\n"
"\n"
-
"              If  filename/path contains ',' or ';', it must be quoted by dou-\n"
+
"              If filename/path contains ',' or ';', it must be quoted by  dou-\n"
"              ble-quotes like:\n"
"\n"
"               curl -F \"file=@\\\"local,file\\\";filename=\\\"name;in;post\\\"\" example.com\n"
@@ -1743,7 +1769,7 @@ void hugehelp(void)
, stdout);
 fputs(
"               curl -F 'file=@\"local,file\";filename=\"name;in;post\"' example.com\n"
-
"              Note that if a filename/path is  quoted  by  double-quotes,  any\n"
+
"              Note  that  if  a  filename/path is quoted by double-quotes, any\n"
"              double-quote or backslash within the filename must be escaped by\n"
"              backslash.\n"
"\n"
@@ -1805,7 +1831,7 @@ void hugehelp(void)
"\n"
"              Data  can  be encoded for transfer using encoder=. Available en-\n"
"              codings are binary and 8bit that do nothing else than adding the\n"
-
"              corresponding  Content-Transfer-Encoding  header, 7bit that only\n"
+
"              corresponding Content-Transfer-Encoding header, 7bit  that  only\n"
"              rejects 8-bit characters with a transfer error, quoted-printable\n"
, stdout);
 fputs(
@@ -1835,10 +1861,10 @@ void hugehelp(void)
"              (FTP) When an FTP server asks for \"account data\" after user name\n"
, stdout);
 fputs(
-
"              and password has been provided, this data is sent off using  the\n"
+
"              and  password has been provided, this data is sent off using the\n"
"              ACCT command.\n"
"\n"
-
"              If  --ftp-account  is provided several times, the last set value\n"
+
"              If --ftp-account is provided several times, the last  set  value\n"
"              will be used.\n"
"\n"
"              Example:\n"
@@ -1847,12 +1873,12 @@ void hugehelp(void)
"              See also -u, --user.\n"
"\n"
"       --ftp-alternative-to-user <command>\n"
-
"              (FTP) If authenticating with the USER and PASS  commands  fails,\n"
+
"              (FTP)  If  authenticating with the USER and PASS commands fails,\n"
, stdout);
 fputs(
-
"              send  this  command.   When  connecting  to  Tumbleweed's Secure\n"
-
"              Transport server over FTPS using  a  client  certificate,  using\n"
-
"              \"SITE  AUTH\"  will tell the server to retrieve the username from\n"
+
"              send this  command.   When  connecting  to  Tumbleweed's  Secure\n"
+
"              Transport  server  over  FTPS  using a client certificate, using\n"
+
"              \"SITE AUTH\" will tell the server to retrieve the  username  from\n"
"              the certificate.\n"
"\n"
"              If --ftp-alternative-to-user is provided several times, the last\n"
@@ -1906,51 +1932,51 @@ void hugehelp(void)
"                     case). This is somewhat  more  standards  compliant  than\n"
"                     'nocwd' but without the full penalty of 'multicwd'.\n"
"\n"
-
"       If  --ftp-method  is provided several times, the last set value will be\n"
-
"       used.\n"
+
"              If  --ftp-method  is  provided several times, the last set value\n"
+
"              will be used.\n"
"\n"
-
"       Examples:\n"
-
"        curl --ftp-method multicwd ftp://example.com/dir1/dir2/file\n"
+
"              Examples:\n"
, stdout);
 fputs(
-
"        curl --ftp-method nocwd ftp://example.com/dir1/dir2/file\n"
-
"        curl --ftp-method singlecwd ftp://example.com/dir1/dir2/file\n"
+
"               curl --ftp-method multicwd ftp://example.com/dir1/dir2/file\n"
+
"               curl --ftp-method nocwd ftp://example.com/dir1/dir2/file\n"
+
"               curl --ftp-method singlecwd ftp://example.com/dir1/dir2/file\n"
"\n"
-
"       See also -l, --list-only.\n"
+
"              See also -l, --list-only.\n"
"\n"
"       --ftp-pasv\n"
"              (FTP) Use passive mode for the data connection. Passive  is  the\n"
"              internal  default behavior, but using this option can be used to\n"
"              override a previous -P, --ftp-port option.\n"
"\n"
-
"              Reversing an enforced passive really is not doable but you  must\n"
, stdout);
 fputs(
+
"              Reversing an enforced passive really is not doable but you  must\n"
"              then instead enforce the correct -P, --ftp-port again.\n"
"\n"
"              Passive mode means that curl will try the EPSV command first and\n"
"              then PASV, unless --disable-epsv is used.\n"
"\n"
-
"              Providing --ftp-pasv multiple times has no extra  effect.   Dis-\n"
+
"              Providing  --ftp-pasv  multiple times has no extra effect.  Dis-\n"
"              able it again with --no-ftp-pasv.\n"
"\n"
"              Example:\n"
"               curl --ftp-pasv ftp://example.com/\n"
"\n"
-
"              See also --disable-epsv.\n"
-
"       -P, --ftp-port <address>\n"
, stdout);
 fputs(
-
"              (FTP)  Reverses  the  default initiator/listener roles when con-\n"
-
"              necting with FTP. This option makes curl use active  mode.  curl\n"
-
"              then  tells the server to connect back to the client's specified\n"
+
"              See also --disable-epsv.\n"
+
"       -P, --ftp-port <address>\n"
+
"              (FTP) Reverses the default initiator/listener  roles  when  con-\n"
+
"              necting  with  FTP. This option makes curl use active mode. curl\n"
+
"              then tells the server to connect back to the client's  specified\n"
"              address and port, while passive mode asks the server to setup an\n"
"              IP  address  and  port for it to connect to. <address> should be\n"
"              one of:\n"
"\n"
-
"              interface\n"
, stdout);
 fputs(
+
"              interface\n"
"                     e.g. \"eth0\" to specify which interface's IP  address  you\n"
"                     want to use (Unix only)\n"
"\n"
@@ -1965,33 +1991,33 @@ void hugehelp(void)
"\n"
, stdout);
 fputs(
-
"       Disable the use of PORT with --ftp-pasv. Disable the attempt to use the\n"
-
"       EPRT  command  instead  of PORT by using --disable-eprt. EPRT is really\n"
-
"       PORT++.\n"
+
"              Disable the use of PORT with --ftp-pasv. Disable the attempt  to\n"
+
"              use  the  EPRT  command instead of PORT by using --disable-eprt.\n"
+
"              EPRT is really PORT++.\n"
"\n"
-
"       You can also append \":[start]-[end]\" to the right of  the  address,  to\n"
-
"       tell  curl  what  TCP  port range to use. That means you specify a port\n"
-
"       range, from a lower to a higher number. A single number works as  well,\n"
-
"       but  do  note  that it increases the risk of failure since the port may\n"
+
"              You can also append \":[start]-[end]\" to the  right  of  the  ad-\n"
+
"              dress,  to  tell curl what TCP port range to use. That means you\n"
+
"              specify a port range, from a lower to a higher number. A  single\n"
, stdout);
 fputs(
-
"       not be available.\n"
+
"              number  works as well, but do note that it increases the risk of\n"
+
"              failure since the port may not be available.\n"
"\n"
-
"       If -P, --ftp-port is provided several times, the last set value will be\n"
-
"       used.\n"
+
"              If -P, --ftp-port is provided several times, the last set  value\n"
+
"              will be used.\n"
"\n"
-
"       Examples:\n"
-
"        curl -P - ftp:/example.com\n"
-
"        curl -P eth0 ftp:/example.com\n"
-
"        curl -P 192.168.0.2 ftp:/example.com\n"
+
"              Examples:\n"
+
"               curl -P - ftp:/example.com\n"
+
"               curl -P eth0 ftp:/example.com\n"
+
"               curl -P 192.168.0.2 ftp:/example.com\n"
"\n"
-
"       See also --ftp-pasv and --disable-eprt.\n"
+
"              See also --ftp-pasv and --disable-eprt.\n"
"\n"
"       --ftp-pret\n"
-
"              (FTP)  Tell  curl to send a PRET command before PASV (and EPSV).\n"
-
"              Certain FTP servers, mainly drftpd,  require  this  non-standard\n"
, stdout);
 fputs(
+
"              (FTP)  Tell  curl to send a PRET command before PASV (and EPSV).\n"
+
"              Certain FTP servers, mainly drftpd,  require  this  non-standard\n"
"              command  for  directory  listings as well as up and downloads in\n"
"              PASV mode.\n"
"\n"
@@ -2001,24 +2027,24 @@ void hugehelp(void)
"              Example:\n"
"               curl --ftp-pret ftp://example.com/\n"
"\n"
+
, stdout);
+
 fputs(
"              See also -P, --ftp-port and --ftp-pasv.\n"
"\n"
"       --ftp-skip-pasv-ip\n"
"              (FTP) Tell curl to not use the IP address the server suggests in\n"
-
, stdout);
-
 fputs(
-
"              its response to curl's PASV command when curl connects the  data\n"
-
"              connection.  Instead curl will re-use the same IP address it al-\n"
+
"              its  response to curl's PASV command when curl connects the data\n"
+
"              connection. Instead curl will re-use the same IP address it  al-\n"
"              ready uses for the control connection.\n"
"\n"
"              Since curl 7.74.0 this option is enabled by default.\n"
"\n"
-
"              This option has no effect if PORT, EPRT or EPSV is used  instead\n"
+
, stdout);
+
 fputs(
+
"              This  option has no effect if PORT, EPRT or EPSV is used instead\n"
"              of PASV.\n"
"\n"
"              Providing --ftp-skip-pasv-ip multiple times has no extra effect.\n"
-
, stdout);
-
 fputs(
"              Disable it again with --no-ftp-skip-pasv-ip.\n"
"\n"
"              Example:\n"
@@ -2028,10 +2054,10 @@ void hugehelp(void)
"\n"
"       --ftp-ssl-ccc-mode <active/passive>\n"
"              (FTP) Sets the CCC mode. The passive mode will not initiate  the\n"
-
"              shutdown, but instead wait for the server to do it, and will not\n"
-
"              reply to the shutdown from the server. The active mode initiates\n"
, stdout);
 fputs(
+
"              shutdown, but instead wait for the server to do it, and will not\n"
+
"              reply to the shutdown from the server. The active mode initiates\n"
"              the shutdown and waits for a reply from the server.\n"
"\n"
"              Providing --ftp-ssl-ccc-mode multiple times has no extra effect.\n"
@@ -2040,12 +2066,12 @@ void hugehelp(void)
"              Example:\n"
"               curl --ftp-ssl-ccc-mode active --ftp-ssl-ccc ftps://example.com/\n"
"\n"
+
, stdout);
+
 fputs(
"              See also --ftp-ssl-ccc.\n"
"\n"
"       --ftp-ssl-ccc\n"
-
"              (FTP) Use CCC (Clear Command Channel)  Shuts  down  the  SSL/TLS\n"
-
, stdout);
-
 fputs(
+
"              (FTP)  Use  CCC  (Clear  Command Channel) Shuts down the SSL/TLS\n"
"              layer after authenticating. The rest of the control channel com-\n"
"              munication will be unencrypted. This allows NAT routers to  fol-\n"
"              low the FTP transaction. The default mode is passive.\n"
@@ -2053,24 +2079,24 @@ void hugehelp(void)
"              Providing  --ftp-ssl-ccc  multiple  times  has  no extra effect.\n"
"              Disable it again with --no-ftp-ssl-ccc.\n"
"\n"
+
, stdout);
+
 fputs(
"              Example:\n"
"               curl --ftp-ssl-ccc ftps://example.com/\n"
"              See also --ssl and --ftp-ssl-ccc-mode.\n"
"\n"
-
, stdout);
-
 fputs(
"       --ftp-ssl-control\n"
"              (FTP) Require SSL/TLS for the FTP  login,  clear  for  transfer.\n"
"              Allows  secure  authentication, but non-encrypted data transfers\n"
"              for efficiency.  Fails the transfer if the server does not  sup-\n"
"              port SSL/TLS.\n"
"\n"
+
, stdout);
+
 fputs(
"              Providing  --ftp-ssl-control multiple times has no extra effect.\n"
"              Disable it again with --no-ftp-ssl-control.\n"
"\n"
"              Example:\n"
-
, stdout);
-
 fputs(
"               curl --ftp-ssl-control ftp://example.com\n"
"\n"
"              See also --ssl.\n"
@@ -2078,11 +2104,11 @@ void hugehelp(void)
"       -G, --get\n"
"              When used, this option will make all  data  specified  with  -d,\n"
"              --data,  --data-binary or --data-urlencode to be used in an HTTP\n"
+
, stdout);
+
 fputs(
"              GET request instead of the POST request that otherwise would  be\n"
"              used. The data will be appended to the URL with a '?' separator.\n"
"              If  used  in combination with -I, --head, the POST data will in-\n"
-
, stdout);
-
 fputs(
"              stead be appended to the URL with a HEAD request.\n"
"\n"
"              Providing -G, --get multiple times has no extra effect.  Disable\n"
@@ -2090,62 +2116,102 @@ void hugehelp(void)
"\n"
"              Examples:\n"
"               curl --get https://example.com\n"
+
, stdout);
+
 fputs(
"               curl --get -d \"tool=curl\" -d \"age=old\" https://example.com\n"
"               curl --get -I -d \"tool=curl\" https://example.com\n"
"\n"
"              See also -d, --data and -X, --request.\n"
"\n"
"       -g, --globoff\n"
-
, stdout);
-
 fputs(
"              This option switches off the \"URL globbing parser\". When you set\n"
"              this option, you can specify URLs that contain the letters  {}[]\n"
"              without  having curl itself interpret them. Note that these let-\n"
+
, stdout);
+
 fputs(
"              ters are not normal legal URL contents but they  should  be  en-\n"
"              coded according to the URI standard.\n"
"\n"
"              Providing  -g,  --globoff  multiple  times  has no extra effect.\n"
"              Disable it again with --no-globoff.\n"
"\n"
-
, stdout);
-
 fputs(
"              Example:\n"
"               curl -g \"https://example.com/{[]}}}}\"\n"
"\n"
"              See also -K, --config and -q, --disable.\n"
"\n"
"       --happy-eyeballs-timeout-ms <milliseconds>\n"
+
, stdout);
+
 fputs(
"              Happy Eyeballs is an algorithm that attempts to connect to  both\n"
"              IPv4  and  IPv6  addresses  for  dual-stack hosts, giving IPv6 a\n"
"              head-start of the specified number of milliseconds. If the  IPv6\n"
"              address  cannot be connected to within that time, then a connec-\n"
-
, stdout);
-
 fputs(
"              tion attempt is made to the IPv4 address in parallel. The  first\n"
"              connection to be established is the one that is used.\n"
"\n"
+
, stdout);
+
 fputs(
"              The  range of suggested useful values is limited. Happy Eyeballs\n"
"              RFC 6555 says \"It is RECOMMENDED  that  connection  attempts  be\n"
"              paced  150-250 ms apart to balance human factors against network\n"
"              load.\" libcurl currently defaults to 200 ms. Firefox and  Chrome\n"
-
, stdout);
-
 fputs(
"              currently default to 300 ms.\n"
"\n"
"              If  --happy-eyeballs-timeout-ms  is  provided several times, the\n"
"              last set value will be used.\n"
"\n"
+
, stdout);
+
 fputs(
"              Example:\n"
"               curl --happy-eyeballs-timeout-ms 500 https://example.com\n"
"\n"
"              See also -m, --max-time and --connect-timeout. Added in 7.59.0.\n"
"\n"
-
"       --haproxy-protocol\n"
-
"              (HTTP) Send a HAProxy PROXY protocol v1 header at the  beginning\n"
+
"       --haproxy-clientip\n"
+
"              (HTTP) Sets a client IP in HAProxy PROXY protocol v1  header  at\n"
+
"              the beginning of the connection.\n"
+
"\n"
+
"              For valid requests, IPv4 addresses must be indicated as a series\n"
+
"              of exactly 4 integers in the range [0..255] inclusive written in\n"
+
, stdout);
+
 fputs(
+
"              decimal representation separated by exactly one dot between each\n"
+
"              other.  Heading  zeroes are not permitted in front of numbers in\n"
+
"              order to avoid any possible confusion with octal  numbers.  IPv6\n"
+
"              addresses  must  be  indicated as series of 4 hexadecimal digits\n"
+
"              (upper or lower case) delimited by colons  between  each  other,\n"
+
"              with  the acceptance of one double colon sequence to replace the\n"
+
, stdout);
+
 fputs(
+
"              largest acceptable range of consecutive zeroes. The total number\n"
+
"              of decoded bits must exactly be 128.\n"
+
"\n"
+
"              Otherwise, any string can be accepted for the client IP and will\n"
+
"              be sent.\n"
+
"\n"
+
"              It replaces `--haproxy-protocol` if used, it is not necessary to\n"
+
"              specify both flags.\n"
+
"\n"
+
"              This option is primarily useful when sending  test  requests  to\n"
+
"              verify a service is working as intended.\n"
+
"\n"
, stdout);
 fputs(
+
"              If  --haproxy-clientip  is  provided several times, the last set\n"
+
"              value will be used.\n"
+
"\n"
+
"              Example:\n"
+
"               curl --haproxy-clientip $IP\n"
+
"\n"
+
"              See also -x, --proxy. Added in 8.2.0.\n"
+
"\n"
+
"       --haproxy-protocol\n"
+
"              (HTTP) Send a HAProxy PROXY protocol v1 header at the  beginning\n"
"              of  the  connection. This is used by some load balancers and re-\n"
"              verse proxies to indicate the client's true IP address and port.\n"
+
, stdout);
+
 fputs(
"              This option is primarily useful when sending test requests to  a\n"
"              service that expects this header.\n"
"\n"
@@ -2153,26 +2219,26 @@ void hugehelp(void)
"              Disable it again with --no-haproxy-protocol.\n"
"\n"
"              Example:\n"
-
, stdout);
-
 fputs(
"               curl --haproxy-protocol https://example.com\n"
"\n"
"              See also -x, --proxy. Added in 7.60.0.\n"
"\n"
"       -I, --head\n"
+
, stdout);
+
 fputs(
"              (HTTP FTP FILE) Fetch the headers only! HTTP-servers feature the\n"
"              command  HEAD which this uses to get nothing but the header of a\n"
"              document. When used on an FTP or FILE file,  curl  displays  the\n"
"              file size and last modification time only.\n"
"\n"
-
, stdout);
-
 fputs(
"              Providing  -I,  --head multiple times has no extra effect.  Dis-\n"
"              able it again with --no-head.\n"
"\n"
"              Example:\n"
"               curl -I https://example.com\n"
"\n"
+
, stdout);
+
 fputs(
"              See also -G, --get, -v, --verbose and --trace-ascii.\n"
"\n"
"       -H, --header <header/@file>\n"
@@ -2180,143 +2246,141 @@ void hugehelp(void)
"              When used within an HTTP request, it is added to the regular re-\n"
"              quest headers.\n"
"\n"
-
, stdout);
-
 fputs(
"              For an IMAP or SMTP MIME uploaded mail built with -F, --form op-\n"
"              tions,  it  is  prepended to the resulting MIME document, effec-\n"
+
, stdout);
+
 fputs(
"              tively including it at the mail global level. It does not affect\n"
"              raw uploaded mails (Added in 7.56.0).\n"
"\n"
-
"              You  may  specify  any number of extra headers. Note that if you\n"
-
"              should add a custom header that has the same name as one of  the\n"
-
, stdout);
-
 fputs(
+
"              You may specify any number of extra headers. Note  that  if  you\n"
+
"              should  add a custom header that has the same name as one of the\n"
"              internal ones curl would use, your externally set header will be\n"
"              used instead of the internal one.  This allows you to make  even\n"
+
, stdout);
+
 fputs(
"              trickier  stuff  than curl would normally do. You should not re-\n"
"              place internally set headers without knowing perfectly well what\n"
"              you are doing. Remove an internal header by giving a replacement\n"
"              without content on the right  side  of  the  colon,  as  in:  -H\n"
-
, stdout);
-
 fputs(
"              \"Host:\".  If  you  send the custom header with no-value then its\n"
"              header must be terminated with a semicolon, such as  -H  \"X-Cus-\n"
+
, stdout);
+
 fputs(
"              tom-Header;\" to send \"X-Custom-Header:\".\n"
"\n"
"              curl  will  make  sure  that each header you add/replace is sent\n"
"              with the proper end-of-line marker, you should thus not add that\n"
"              as a part of the header content: do not add newlines or carriage\n"
-
, stdout);
-
 fputs(
"              returns, they will only mess things up for you.\n"
"\n"
"              This option can take an argument in @filename style, which  then\n"
+
, stdout);
+
 fputs(
"              adds  a  header  for  each line in the input file. Using @- will\n"
"              make curl read the header file from stdin. Added in 7.55.0.\n"
"\n"
"              Please note that most anti-spam utilities check the presence and\n"
-
"              value  of  several  MIME mail headers: these are \"From:\", \"To:\",\n"
-
, stdout);
-
 fputs(
-
"              \"Date:\" and \"Subject:\" among others and  should  be  added  with\n"
+
"              value of several MIME mail headers: these  are  \"From:\",  \"To:\",\n"
+
"              \"Date:\"  and  \"Subject:\"  among  others and should be added with\n"
"              this option.\n"
"\n"
-
"              You  need  --proxy-header to send custom headers intended for an\n"
+
"              You need --proxy-header to send custom headers intended  for  an\n"
+
, stdout);
+
 fputs(
"              HTTP proxy. Added in 7.37.0.\n"
"\n"
-
"              Passing on a \"Transfer-Encoding: chunked\" header when  doing  an\n"
-
"              HTTP  request  with a request body, will make curl send the data\n"
+
"              Passing  on  a \"Transfer-Encoding: chunked\" header when doing an\n"
+
"              HTTP request with a request body, will make curl send  the  data\n"
"              using chunked encoding.\n"
"\n"
+
"              WARNING:  headers  set  with this option will be set in all HTTP\n"
+
"              requests - even after redirects are  followed,  like  when  told\n"
+
"              with  -L,  --location. This can lead to the header being sent to\n"
, stdout);
 fputs(
-
"              WARNING: headers set with this option will be set  in  all  HTTP\n"
-
"              requests  -  even  after  redirects are followed, like when told\n"
-
"              with -L, --location. This can lead to the header being  sent  to\n"
-
"              other  hosts than the original host, so sensitive headers should\n"
+
"              other hosts than the original host, so sensitive headers  should\n"
"              be used with caution combined with following redirects.\n"
"\n"
"              -H, --header can be used several times in a command line\n"
"\n"
"              Examples:\n"
-
, stdout);
-
 fputs(
"               curl -H \"X-First-Name: Joe\" https://example.com\n"
"               curl -H \"User-Agent: yes-please/2000\" https://example.com\n"
"               curl -H \"Host:\" https://example.com\n"
"               curl -H @headers.txt https://example.com\n"
"\n"
+
, stdout);
+
 fputs(
"              See also -A, --user-agent and -e, --referer.\n"
"\n"
"       -h, --help <category>\n"
-
"              Usage help. This lists all commands of the  <category>.   If  no\n"
-
"              arg  was  provided, curl will display the most important command\n"
-
, stdout);
-
 fputs(
-
"              line arguments.  If the argument \"all\" was provided,  curl  will\n"
-
"              display  all  options available.  If the argument \"category\" was\n"
+
"              Usage  help.  This  lists all commands of the <category>.  If no\n"
+
"              arg was provided, curl will display the most  important  command\n"
+
"              line  arguments.   If the argument \"all\" was provided, curl will\n"
+
"              display all options available.  If the argument  \"category\"  was\n"
"              provided, curl will display all categories and their meanings.\n"
"\n"
+
, stdout);
+
 fputs(
"              Example:\n"
"               curl --help all\n"
"\n"
"              See also -v, --verbose.\n"
"\n"
"       --hostpubmd5 <md5>\n"
-
"              (SFTP SCP) Pass a string containing 32 hexadecimal  digits.  The\n"
-
, stdout);
-
 fputs(
-
"              string  should  be the 128 bit MD5 checksum of the remote host's\n"
+
"              (SFTP  SCP)  Pass a string containing 32 hexadecimal digits. The\n"
+
"              string should be the 128 bit MD5 checksum of the  remote  host's\n"
"              public key, curl will refuse the connection with the host unless\n"
"              the md5sums match.\n"
"\n"
"              If  --hostpubmd5  is  provided several times, the last set value\n"
"              will be used.\n"
"\n"
+
, stdout);
+
 fputs(
"              Example:\n"
"               curl --hostpubmd5 e5c1c49020640a5ab0f2034854c321a8 sftp://example.com/\n"
"\n"
"              See also --hostpubsha256.\n"
"\n"
"       --hostpubsha256 <sha256>\n"
-
, stdout);
-
 fputs(
"              (SFTP SCP) Pass a string containing a Base64-encoded SHA256 hash\n"
"              of the remote host's public key. Curl will refuse the connection\n"
"              with the host unless the hashes match.\n"
"\n"
"              This feature requires libcurl to be built with libssh2 and  does\n"
+
, stdout);
+
 fputs(
"              not work with other SSH backends.\n"
"\n"
"              If --hostpubsha256 is provided several times, the last set value\n"
"              will be used.\n"
"\n"
"              Example:\n"
-
, stdout);
-
 fputs(
"               curl --hostpubsha256 NDVkMTQxMGQ1ODdmMjQ3MjczYjAyOTY5MmRkMjVmNDQ= sftp://example.com/\n"
"\n"
"              See also --hostpubmd5. Added in 7.80.0.\n"
"\n"
"       --hsts <file name>\n"
-
"              (HTTPS) This option enables HSTS for the transfer. If  the  file\n"
-
"              name  points  to an existing HSTS cache file, that will be used.\n"
-
"              After a completed transfer, the cache will be saved to the  file\n"
+
"              (HTTPS)  This  option enables HSTS for the transfer. If the file\n"
+
, stdout);
+
 fputs(
+
"              name points to an existing HSTS cache file, that will  be  used.\n"
+
"              After  a completed transfer, the cache will be saved to the file\n"
"              name again if it has been modified.\n"
"\n"
+
"              If curl is told to use HTTP:// for a transfer involving  a  host\n"
+
"              name  that exists in the HSTS cache, it upgrades the transfer to\n"
+
"              use HTTPS. Each HSTS cache entry has an individual life time af-\n"
, stdout);
 fputs(
-
"              If  curl  is told to use HTTP:// for a transfer involving a host\n"
-
"              name that exists in the HSTS cache, it upgrades the transfer  to\n"
-
"              use HTTPS. Each HSTS cache entry has an individual life time af-\n"
"              ter which the upgrade is no longer performed.\n"
"\n"
"              Specify a \"\" file name (zero length) to avoid loading/saving and\n"
"              make curl just handle HSTS in memory.\n"
"\n"
-
, stdout);
-
 fputs(
-
"              If  this  option  is used several times, curl will load contents\n"
+
"              If this option is used several times, curl  will  load  contents\n"
"              from all the files but the last one will be used for saving.\n"
"\n"
"              --hsts can be used several times in a command line\n"
@@ -2324,41 +2388,41 @@ void hugehelp(void)
"              Example:\n"
"               curl --hsts cache.txt https://example.com\n"
"\n"
+
, stdout);
+
 fputs(
"              See also --proto. Added in 7.74.0.\n"
"\n"
"       --http0.9\n"
"              (HTTP) Tells curl to be fine with HTTP version 0.9 response.\n"
"\n"
-
, stdout);
-
 fputs(
-
"              HTTP/0.9 is a completely headerless response and  therefore  you\n"
-
"              can  also  connect with this to non-HTTP servers and still get a\n"
+
"              HTTP/0.9  is  a completely headerless response and therefore you\n"
+
"              can also connect with this to non-HTTP servers and still  get  a\n"
"              response since curl will simply transparently downgrade - if al-\n"
"              lowed.\n"
"\n"
"              Since curl 7.66.0, HTTP/0.9 is disabled by default.\n"
"\n"
+
, stdout);
+
 fputs(
"              Providing --http0.9 multiple times has no extra effect.  Disable\n"
"              it again with --no-http0.9.\n"
"\n"
"              Example:\n"
-
, stdout);
-
 fputs(
"               curl --http0.9 https://example.com\n"
"\n"
"              See also --http1.1, --http2 and --http3. Added in 7.64.0.\n"
"\n"
"       -0, --http1.0\n"
-
"              (HTTP) Tells curl to use HTTP version 1.0 instead of  using  its\n"
+
"              (HTTP)  Tells  curl to use HTTP version 1.0 instead of using its\n"
"              internally preferred HTTP version.\n"
"\n"
"              Providing -0, --http1.0 multiple times has no extra effect.\n"
"\n"
+
, stdout);
+
 fputs(
"              Example:\n"
"               curl --http1.0 https://example.com\n"
"\n"
-
, stdout);
-
 fputs(
"              See also --http0.9 and --http1.1. This option is mutually exclu-\n"
"              sive to --http1.1 and --http2  and  --http2-prior-knowledge  and\n"
"              --http3.\n"
@@ -2371,9 +2435,9 @@ void hugehelp(void)
"              Example:\n"
"               curl --http1.1 https://example.com\n"
"\n"
-
"              See  also  -0,  --http1.0 and --http0.9. This option is mutually\n"
, stdout);
 fputs(
+
"              See  also  -0,  --http1.0 and --http0.9. This option is mutually\n"
"              exclusive to -0, --http1.0 and --http2 and  --http2-prior-knowl-\n"
"              edge and --http3. Added in 7.33.0.\n"
"\n"
@@ -2381,9 +2445,9 @@ void hugehelp(void)
"              (HTTP)  Tells  curl  to  issue  its  non-TLS HTTP requests using\n"
"              HTTP/2 without HTTP/1.1 Upgrade.  It  requires  prior  knowledge\n"
"              that  the  server  supports HTTP/2 straight away. HTTPS requests\n"
-
"              will still do HTTP/2 the standard way with  negotiated  protocol\n"
, stdout);
 fputs(
+
"              will still do HTTP/2 the standard way with  negotiated  protocol\n"
"              version in the TLS handshake.\n"
"\n"
"              Providing  --http2-prior-knowledge  multiple  times has no extra\n"
@@ -2393,9 +2457,9 @@ void hugehelp(void)
"               curl --http2-prior-knowledge https://example.com\n"
"\n"
"              See also --http2 and --http3.  --http2-prior-knowledge  requires\n"
-
"              that  the  underlying  libcurl was built to support HTTP/2. This\n"
, stdout);
 fputs(
+
"              that  the  underlying  libcurl was built to support HTTP/2. This\n"
"              option is mutually exclusive to --http1.1 and -0, --http1.0  and\n"
"              --http2 and --http3. Added in 7.49.0.\n"
"\n"
@@ -2405,46 +2469,46 @@ void hugehelp(void)
"              For  HTTPS,  this means curl will attempt to negotiate HTTP/2 in\n"
"              the TLS handshake. curl does this by default.\n"
"\n"
+
, stdout);
+
 fputs(
"              For HTTP, this means curl will attempt to upgrade the request to\n"
"              HTTP/2 using the Upgrade: request header.\n"
"\n"
-
, stdout);
-
 fputs(
-
"              When  curl  uses HTTP/2 over HTTPS, it does not itself insist on\n"
+
"              When curl uses HTTP/2 over HTTPS, it does not itself  insist  on\n"
"              TLS 1.2 or higher even though that is required by the specifica-\n"
"              tion. A user can add this version requirement with --tlsv1.2.\n"
"\n"
"              Providing --http2 multiple times has no extra effect.\n"
"\n"
"              Example:\n"
+
, stdout);
+
 fputs(
"               curl --http2 https://example.com\n"
"\n"
"              See also --http1.1, --http3 and --no-alpn. --http2 requires that\n"
-
, stdout);
-
 fputs(
-
"              the underlying libcurl was built to support HTTP/2. This  option\n"
+
"              the  underlying libcurl was built to support HTTP/2. This option\n"
"              is  mutually  exclusive  to  --http1.1  and  -0,  --http1.0  and\n"
"              --http2-prior-knowledge and --http3. Added in 7.33.0.\n"
"\n"
"       --http3-only\n"
-
"              (HTTP) **WARNING**: this option is experimental. Do not  use  in\n"
+
"              (HTTP)  **WARNING**:  this option is experimental. Do not use in\n"
"              production.\n"
"\n"
-
"              Instructs  curl  to  use  HTTP/3 to the host in the URL, with no\n"
, stdout);
 fputs(
-
"              fallback to earlier HTTP versions. HTTP/3 can only be  used  for\n"
-
"              HTTPS  and not for HTTP URLs. For HTTP, this option will trigger\n"
+
"              Instructs curl to use HTTP/3 to the host in  the  URL,  with  no\n"
+
"              fallback  to  earlier HTTP versions. HTTP/3 can only be used for\n"
+
"              HTTPS and not for HTTP URLs. For HTTP, this option will  trigger\n"
"              an error.\n"
"\n"
-
"              This option allows a user to avoid using the Alt-Svc  method  of\n"
-
"              upgrading  to HTTP/3 when you know that the target speaks HTTP/3\n"
+
"              This  option  allows a user to avoid using the Alt-Svc method of\n"
+
"              upgrading to HTTP/3 when you know that the target speaks  HTTP/3\n"
"              on the given host and port.\n"
"\n"
-
"              This option will make curl fail if a QUIC connection  cannot  be\n"
, stdout);
 fputs(
-
"              established,  it  will not attempt any other HTTP version on its\n"
+
"              This  option  will make curl fail if a QUIC connection cannot be\n"
+
"              established, it will not attempt any other HTTP version  on  its\n"
"              own. Use --http3 for similar functionality with a fallback.\n"
"\n"
"              Providing --http3-only multiple times has no extra effect.\n"
@@ -2452,30 +2516,30 @@ void hugehelp(void)
"              Example:\n"
"               curl --http3-only https://example.com\n"
"\n"
-
"              See also --http1.1, --http2 and --http3.  --http3-only  requires\n"
-
"              that  the  underlying  libcurl was built to support HTTP/3. This\n"
+
"              See  also  --http1.1, --http2 and --http3. --http3-only requires\n"
, stdout);
 fputs(
-
"              option is mutually exclusive to --http1.1 and -0, --http1.0  and\n"
-
"              --http2   and  --http2-prior-knowledge  and  --http3.  Added  in\n"
+
"              that the underlying libcurl was built to  support  HTTP/3.  This\n"
+
"              option  is mutually exclusive to --http1.1 and -0, --http1.0 and\n"
+
"              --http2  and  --http2-prior-knowledge  and  --http3.  Added   in\n"
"              7.88.0.\n"
"       --http3\n"
-
"              (HTTP) **WARNING**: this option is experimental. Do not  use  in\n"
+
"              (HTTP)  **WARNING**:  this option is experimental. Do not use in\n"
"              production.\n"
"\n"
"              Tells curl to try HTTP/3 to the host in the URL, but fallback to\n"
-
"              earlier HTTP versions if  the  HTTP/3  connection  establishment\n"
, stdout);
 fputs(
+
"              earlier HTTP versions if  the  HTTP/3  connection  establishment\n"
"              fails. HTTP/3 is only available for HTTPS and not for HTTP URLs.\n"
"              This  option  allows a user to avoid using the Alt-Svc method of\n"
"              upgrading to HTTP/3 when you know that the target speaks  HTTP/3\n"
"              on the given host and port.\n"
"\n"
"              When  asked to use HTTP/3, curl will issue a separate attempt to\n"
-
"              use older HTTP versions with a slight delay, so  if  the  HTTP/3\n"
, stdout);
 fputs(
+
"              use older HTTP versions with a slight delay, so  if  the  HTTP/3\n"
"              transfer  fails  or is very slow, curl will still try to proceed\n"
"              with an older HTTP version.\n"
"\n"
@@ -2487,27 +2551,27 @@ void hugehelp(void)
"               curl --http3 https://example.com\n"
"\n"
"              See also --http1.1 and --http2. --http3 requires that the under-\n"
-
"              lying  libcurl was built to support HTTP/3. This option is mutu-\n"
, stdout);
 fputs(
-
"              ally exclusive to --http1.1 and -0, --http1.0  and  --http2  and\n"
+
"              lying libcurl was built to support HTTP/3. This option is  mutu-\n"
+
"              ally  exclusive  to  --http1.1 and -0, --http1.0 and --http2 and\n"
"              --http2-prior-knowledge and --http3-only. Added in 7.66.0.\n"
"\n"
"       --ignore-content-length\n"
-
"              (FTP  HTTP)  For HTTP, Ignore the Content-Length header. This is\n"
-
"              particularly useful for servers running Apache 1.x,  which  will\n"
-
"              report  incorrect  Content-Length  for files larger than 2 giga-\n"
-
"              bytes.\n"
-
"\n"
+
"              (FTP HTTP) For HTTP, Ignore the Content-Length header.  This  is\n"
+
"              particularly  useful  for servers running Apache 1.x, which will\n"
+
"              report incorrect Content-Length for files larger  than  2  giga-\n"
, stdout);
 fputs(
-
"              For FTP (since 7.46.0), skip the RETR command to figure out  the\n"
+
"              bytes.\n"
+
"\n"
+
"              For  FTP (since 7.46.0), skip the RETR command to figure out the\n"
"              size before downloading a file.\n"
"\n"
-
"              This  option  does not work for HTTP if libcurl was built to use\n"
+
"              This option does not work for HTTP if libcurl was built  to  use\n"
"              hyper.\n"
"\n"
-
"              Providing --ignore-content-length multiple times  has  no  extra\n"
+
"              Providing  --ignore-content-length  multiple  times has no extra\n"
"              effect.  Disable it again with --no-ignore-content-length.\n"
"\n"
"              Example:\n"
@@ -2518,13 +2582,13 @@ void hugehelp(void)
"              See also --ftp-skip-pasv-ip.\n"
"\n"
"       -i, --include\n"
-
"              Include  the  HTTP  response headers in the output. The HTTP re-\n"
-
"              sponse headers can include things  like  server  name,  cookies,\n"
+
"              Include the HTTP response headers in the output.  The  HTTP  re-\n"
+
"              sponse  headers  can  include  things like server name, cookies,\n"
"              date of the document, HTTP version and more...\n"
"\n"
"              To view the request headers, consider the -v, --verbose option.\n"
"\n"
-
"              Providing  -i,  --include  multiple  times  has no extra effect.\n"
+
"              Providing -i, --include multiple  times  has  no  extra  effect.\n"
"              Disable it again with --no-include.\n"
"\n"
, stdout);
@@ -2543,17 +2607,17 @@ void hugehelp(void)
"              When this option is not used for protocols using TLS, curl veri-\n"
, stdout);
 fputs(
-
"              fies the server's TLS certificate before it continues: that  the\n"
-
"              certificate  contains the right name which matches the host name\n"
+
"              fies  the server's TLS certificate before it continues: that the\n"
+
"              certificate contains the right name which matches the host  name\n"
"              used in the URL and that the certificate has been signed by a CA\n"
"              certificate present in the cert store.  See this online resource\n"
"              for further details:\n"
"               https://curl.se/docs/sslcerts.html\n"
"\n"
-
"              For SFTP and SCP, this option makes curl  skip  the  known_hosts\n"
+
"              For  SFTP  and  SCP, this option makes curl skip the known_hosts\n"
, stdout);
 fputs(
-
"              verification.   known_hosts  is  a  file  normally stored in the\n"
+
"              verification.  known_hosts is a  file  normally  stored  in  the\n"
"              user's home directory in the \".ssh\" subdirectory, which contains\n"
"              host names and their public keys.\n"
"\n"
@@ -2609,7 +2673,7 @@ void hugehelp(void)
"              Example:\n"
"               curl --ipv4 https://example.com\n"
"\n"
-
"              See also --http1.1 and --http2. This option is  mutually  exclu-\n"
+
"              See  also  --http1.1 and --http2. This option is mutually exclu-\n"
"              sive to -6, --ipv6.\n"
"\n"
"       -6, --ipv6\n"
@@ -2648,8 +2712,8 @@ void hugehelp(void)
 fputs(
"              stead read the data from stdin, use --json @-.\n"
"\n"
-
"              If this option is used more than once on the same command  line,\n"
-
"              the  additional data pieces will be concatenated to the previous\n"
+
"              If  this option is used more than once on the same command line,\n"
+
"              the additional data pieces will be concatenated to the  previous\n"
"              before sending.\n"
"\n"
"              The headers this option sets can be overridden with -H, --header\n"
@@ -2689,8 +2753,8 @@ void hugehelp(void)
"              See also -b, --cookie and -c, --cookie-jar.\n"
"\n"
"       --keepalive-time <seconds>\n"
-
"              This option sets the time a connection needs to remain idle  be-\n"
-
"              fore  sending  keepalive  probes and the time between individual\n"
+
"              This  option sets the time a connection needs to remain idle be-\n"
+
"              fore sending keepalive probes and the  time  between  individual\n"
"              keepalive probes. It is currently effective on operating systems\n"
, stdout);
 fputs(
@@ -2737,10 +2801,10 @@ void hugehelp(void)
"\n"
"              If  curl is built against OpenSSL library, and the engine pkcs11\n"
"              is available, then a PKCS#11 URI (RFC 7512) can be used to spec-\n"
-
"              ify  a  private key located in a PKCS#11 device. A string begin-\n"
+
"              ify a private key located in a PKCS#11 device. A  string  begin-\n"
, stdout);
 fputs(
-
"              ning with \"pkcs11:\" will be interpreted as a PKCS#11 URI.  If  a\n"
+
"              ning  with  \"pkcs11:\" will be interpreted as a PKCS#11 URI. If a\n"
"              PKCS#11 URI is provided, then the --engine option will be set as\n"
"              \"pkcs11\" if none was provided and the --key-type option will  be\n"
"              set as \"ENG\" if none was provided.\n"
@@ -2749,10 +2813,10 @@ void hugehelp(void)
"              option is ignored for TLS protocols (HTTPS, etc). Those backends\n"
, stdout);
 fputs(
-
"              expect  the private key to be already present in the keychain or\n"
+
"              expect the private key to be already present in the keychain  or\n"
"              PKCS#12 file containing the certificate.\n"
"\n"
-
"              If --key is provided several times, the last set value  will  be\n"
+
"              If  --key  is provided several times, the last set value will be\n"
"              used.\n"
"\n"
"              Example:\n"
@@ -2761,7 +2825,7 @@ void hugehelp(void)
"              See also --key-type and -E, --cert.\n"
"\n"
"       --krb <level>\n"
-
"              (FTP)  Enable Kerberos authentication and use. The level must be\n"
+
"              (FTP) Enable Kerberos authentication and use. The level must  be\n"
, stdout);
 fputs(
"              entered and should be one of 'clear', 'safe', 'confidential', or\n"
@@ -2789,7 +2853,7 @@ void hugehelp(void)
"\n"
, stdout);
 fputs(
-
"              If  --libcurl is provided several times, the last set value will\n"
+
"              If --libcurl is provided several times, the last set value  will\n"
"              be used.\n"
"              Example:\n"
"               curl --libcurl client.c https://example.com\n"
@@ -2797,7 +2861,7 @@ void hugehelp(void)
"              See also -v, --verbose.\n"
"\n"
"       --limit-rate <speed>\n"
-
"              Specify the maximum transfer rate you want curl  to  use  -  for\n"
+
"              Specify  the  maximum  transfer  rate you want curl to use - for\n"
"              both downloads and uploads. This feature is useful if you have a\n"
"              limited pipe and you would like your transfer not  to  use  your\n"
, stdout);
@@ -2813,10 +2877,10 @@ void hugehelp(void)
, stdout);
 fputs(
"              The rate limiting logic works on averaging the transfer speed to\n"
-
"              no more than the set threshold over a period  of  multiple  sec-\n"
+
"              no  more  than  the set threshold over a period of multiple sec-\n"
"              onds.\n"
"\n"
-
"              If  you  also use the -Y, --speed-limit option, that option will\n"
+
"              If you also use the -Y, --speed-limit option, that  option  will\n"
"              take precedence and might cripple the rate-limiting slightly, to\n"
"              help keeping the speed-limit logic working.\n"
"\n"
@@ -2871,11 +2935,11 @@ void hugehelp(void)
, stdout);
 fputs(
"              numbers to use for the connection(s).  Note that port numbers by\n"
-
"              nature  are a scarce resource that will be busy at times so set-\n"
-
"              ting this range to something too narrow might cause  unnecessary\n"
+
"              nature are a scarce resource that will be busy at times so  set-\n"
+
"              ting  this range to something too narrow might cause unnecessary\n"
"              connection setup failures.\n"
"\n"
-
"              If  --local-port  is  provided several times, the last set value\n"
+
"              If --local-port is provided several times, the  last  set  value\n"
"              will be used.\n"
"\n"
"              Example:\n"
@@ -2886,7 +2950,7 @@ void hugehelp(void)
"              See also -g, --globoff.\n"
"\n"
"       --location-trusted\n"
-
"              (HTTP) Like -L, --location, but will allow sending  the  name  +\n"
+
"              (HTTP)  Like  -L,  --location, but will allow sending the name +\n"
"              password to all hosts that the site may redirect to. This may or\n"
"              may not introduce a security breach if the site redirects you to\n"
"              a site to which you will send your authentication info (which is\n"
@@ -2903,37 +2967,37 @@ void hugehelp(void)
"              See also -u, --user.\n"
"\n"
"       -L, --location\n"
-
"              (HTTP)  If  the server reports that the requested page has moved\n"
+
"              (HTTP) If the server reports that the requested page  has  moved\n"
"              to a different location (indicated with a Location: header and a\n"
, stdout);
 fputs(
"              3XX  response code), this option will make curl redo the request\n"
"              on the new place. If used together with  -i,  --include  or  -I,\n"
"              --head, headers from all requested pages will be shown. When au-\n"
-
"              thentication is used, curl only sends  its  credentials  to  the\n"
-
"              initial  host.  If a redirect takes curl to a different host, it\n"
-
"              will not be able to intercept the user+password. See also  --lo-\n"
+
"              thentication  is  used,  curl  only sends its credentials to the\n"
+
"              initial host. If a redirect takes curl to a different  host,  it\n"
+
"              will  not be able to intercept the user+password. See also --lo-\n"
, stdout);
 fputs(
-
"              cation-trusted  on  how to change this. You can limit the amount\n"
+
"              cation-trusted on how to change this. You can limit  the  amount\n"
"              of redirects to follow by using the --max-redirs option.\n"
"\n"
-
"              When curl follows a redirect and if the request is  a  POST,  it\n"
-
"              will  send the following request with a GET if the HTTP response\n"
-
"              was 301, 302, or 303. If the response code  was  any  other  3xx\n"
+
"              When  curl  follows  a redirect and if the request is a POST, it\n"
+
"              will send the following request with a GET if the HTTP  response\n"
+
"              was  301,  302,  or  303. If the response code was any other 3xx\n"
"              code, curl will re-send the following request using the same un-\n"
"              modified method.\n"
"\n"
, stdout);
 fputs(
"              You can tell curl to not change POST requests to GET after a 30x\n"
-
"              response  by  using  the  dedicated options for that: --post301,\n"
+
"              response by using the dedicated  options  for  that:  --post301,\n"
"              --post302 and --post303.\n"
"\n"
-
"              The method set with -X,  --request  overrides  the  method  curl\n"
+
"              The  method  set  with  -X,  --request overrides the method curl\n"
"              would otherwise select to use.\n"
"\n"
-
"              Providing  -L,  --location  multiple  times has no extra effect.\n"
+
"              Providing -L, --location multiple times  has  no  extra  effect.\n"
"              Disable it again with --no-location.\n"
"\n"
"              Example:\n"
@@ -2944,17 +3008,26 @@ void hugehelp(void)
"              See also --resolve and --alt-svc.\n"
"\n"
"       --login-options <options>\n"
-
"              (IMAP LDAP POP3 SMTP) Specify the login options  to  use  during\n"
+
"              (IMAP  LDAP  POP3  SMTP) Specify the login options to use during\n"
"              server authentication.\n"
"\n"
-
"              You  can  use login options to specify protocol specific options\n"
-
"              that may be used during authentication. At  present  only  IMAP,\n"
-
"              POP3  and SMTP support login options. For more information about\n"
+
"              You can use login options to specify protocol  specific  options\n"
+
"              that  may  be  used during authentication. At present only IMAP,\n"
+
"              POP3 and SMTP support login options. For more information  about\n"
, stdout);
 fputs(
-
"              login options please see RFC  2384,  RFC  5092  and  IETF  draft\n"
+
"              login  options  please  see  RFC  2384,  RFC 5092 and IETF draft\n"
"              draft-earhart-url-smtp-00.txt\n"
"\n"
+
"              Since 8.2.0, IMAP supports the login option \"AUTH=+LOGIN\".  With\n"
+
"              this  option,  curl uses the plain (not SASL) LOGIN IMAP command\n"
+
"              even if the server advertises SASL authentication.  Care  should\n"
+
"              be taken in using this option, as it will send out your password\n"
+
, stdout);
+
 fputs(
+
"              in  plain  text.  This will not work if the IMAP server disables\n"
+
"              the plain LOGIN (e.g. to prevent password snooping).\n"
+
"\n"
"              If --login-options is provided several times, the last set value\n"
"              will be used.\n"
"\n"
@@ -2964,9 +3037,9 @@ void hugehelp(void)
"              See also -u, --user. Added in 7.34.0.\n"
"\n"
"       --mail-auth <address>\n"
-
"              (SMTP) Specify a single address. This will be  used  to  specify\n"
, stdout);
 fputs(
+
"              (SMTP) Specify a single address. This will be  used  to  specify\n"
"              the  authentication  address  (identity)  of a submitted message\n"
"              that is being relayed to another server.\n"
"\n"
@@ -2978,9 +3051,9 @@ void hugehelp(void)
"\n"
"              See also --mail-rcpt and --mail-from.\n"
"\n"
-
"       --mail-from <address>\n"
, stdout);
 fputs(
+
"       --mail-from <address>\n"
"              (SMTP)  Specify  a single address that the given mail should get\n"
"              sent from.\n"
"\n"
@@ -2993,20 +3066,20 @@ void hugehelp(void)
"              See also --mail-rcpt and --mail-auth.\n"
"\n"
"       --mail-rcpt-allowfails\n"
-
"              (SMTP) When sending data to multiple recipients, by default curl\n"
, stdout);
 fputs(
-
"              will abort SMTP conversation if at least one of  the  recipients\n"
+
"              (SMTP) When sending data to multiple recipients, by default curl\n"
+
"              will  abort  SMTP conversation if at least one of the recipients\n"
"              causes RCPT TO command to return an error.\n"
"\n"
-
"              The  default  behavior can be changed by passing --mail-rcpt-al-\n"
-
"              lowfails command-line option which will make curl ignore  errors\n"
+
"              The default behavior can be changed by  passing  --mail-rcpt-al-\n"
+
"              lowfails  command-line option which will make curl ignore errors\n"
"              and proceed with the remaining valid recipients.\n"
"\n"
-
"              If  all  recipients  trigger  RCPT  TO failures and this flag is\n"
, stdout);
 fputs(
-
"              specified, curl will still abort the SMTP conversation  and  re-\n"
+
"              If all recipients trigger RCPT TO  failures  and  this  flag  is\n"
+
"              specified,  curl  will still abort the SMTP conversation and re-\n"
"              turn the error received from to the last RCPT TO command.\n"
"\n"
"              Providing --mail-rcpt-allowfails multiple times has no extra ef-\n"
@@ -3015,22 +3088,22 @@ void hugehelp(void)
"              Example:\n"
"               curl --mail-rcpt-allowfails --mail-rcpt dest@example.com smtp://example.com\n"
"\n"
+
, stdout);
+
 fputs(
"              See also --mail-rcpt. Added in 7.69.0.\n"
"\n"
"       --mail-rcpt <address>\n"
-
, stdout);
-
 fputs(
"              (SMTP) Specify a single email address, user name or mailing list\n"
-
"              name.  Repeat  this option several times to send to multiple re-\n"
+
"              name. Repeat this option several times to send to  multiple  re-\n"
"              cipients.\n"
"\n"
-
"              When performing an address verification (VRFY command), the  re-\n"
-
"              cipient  should  be  specified as the user name or user name and\n"
-
"              domain (as per Section 3.5 of RFC5321). (Added in 7.34.0)\n"
+
"              When  performing an address verification (VRFY command), the re-\n"
+
"              cipient should be specified as the user name or  user  name  and\n"
+
"              domain (as per Section 3.5 of RFC 5321). (Added in 7.34.0)\n"
"\n"
-
"              When performing a mailing list expand (EXPN command), the recip-\n"
, stdout);
 fputs(
+
"              When performing a mailing list expand (EXPN command), the recip-\n"
"              ient  should  be  specified using the mailing list name, such as\n"
"              \"Friends\" or \"London-Office\".  (Added in 7.34.0)\n"
"\n"
@@ -3042,35 +3115,35 @@ void hugehelp(void)
"              See also --mail-rcpt-allowfails.\n"
"\n"
"       -M, --manual\n"
+
, stdout);
+
 fputs(
"              Manual. Display the huge help text.\n"
"\n"
"              Example:\n"
"               curl --manual\n"
"\n"
-
, stdout);
-
 fputs(
"              See also -v, --verbose, --libcurl and --trace.\n"
"\n"
"       --max-filesize <bytes>\n"
"              (FTP HTTP MQTT) Specify the maximum size (in bytes) of a file to\n"
-
"              download.  If  the file requested is larger than this value, the\n"
+
"              download. If the file requested is larger than this  value,  the\n"
"              transfer will not start and curl will return with exit code 63.\n"
"\n"
-
"              A size modifier may be used. For example, Appending 'k'  or  'K'\n"
-
"              will  count  the  number  as  kilobytes,  'm'  or  'M'  makes it\n"
, stdout);
 fputs(
-
"              megabytes, while 'g' or 'G' makes it gigabytes. Examples:  200K,\n"
+
"              A  size  modifier may be used. For example, Appending 'k' or 'K'\n"
+
"              will count  the  number  as  kilobytes,  'm'  or  'M'  makes  it\n"
+
"              megabytes,  while 'g' or 'G' makes it gigabytes. Examples: 200K,\n"
"              3m and 1G. (Added in 7.58.0)\n"
"\n"
-
"              NOTE:  The  file size is not always known prior to download, and\n"
+
"              NOTE: The file size is not always known prior to  download,  and\n"
"              for such files this option has no effect even if the file trans-\n"
+
, stdout);
+
 fputs(
"              fer  ends up being larger than this given limit.  If --max-file-\n"
"              size is provided several times, the last set value will be used.\n"
"\n"
"              Example:\n"
-
, stdout);
-
 fputs(
"               curl --max-filesize 100K https://example.com\n"
"\n"
"              See also --limit-rate.\n"
@@ -3078,12 +3151,12 @@ void hugehelp(void)
"       --max-redirs <num>\n"
"              (HTTP) Set maximum number of redirections to  follow.  When  -L,\n"
"              --location  is  used,  to  prevent  curl from following too many\n"
+
, stdout);
+
 fputs(
"              redirects, by default, the limit is set  to  50  redirects.  Set\n"
"              this option to -1 to make it unlimited.\n"
"\n"
"              If  --max-redirs  is  provided several times, the last set value\n"
-
, stdout);
-
 fputs(
"              will be used.\n"
"\n"
"              Example:\n"
@@ -3093,21 +3166,21 @@ void hugehelp(void)
"\n"
"       -m, --max-time <fractional seconds>\n"
"              Maximum time in seconds that you allow each  transfer  to  take.\n"
-
"              This  is  useful for preventing your batch jobs from hanging for\n"
-
"              hours due to slow networks or links going down.   Since  7.32.0,\n"
, stdout);
 fputs(
+
"              This  is  useful for preventing your batch jobs from hanging for\n"
+
"              hours due to slow networks or links going down.   Since  7.32.0,\n"
"              this  option accepts decimal values, but the actual timeout will\n"
"              decrease in accuracy as the specified timeout increases in deci-\n"
"              mal precision.\n"
"\n"
-
"              If  you  enable retrying the transfer (--retry) then the maximum\n"
+
"              If you enable retrying the transfer (--retry) then  the  maximum\n"
+
, stdout);
+
 fputs(
"              time counter is reset each time the transfer is retried. You can\n"
"              use --retry-max-time to limit the retry time.\n"
"\n"
"              The  decimal  value needs to provided using a dot (.) as decimal\n"
-
, stdout);
-
 fputs(
"              separator - not the local version even if it might be using  an-\n"
"              other separator.\n"
"\n"
@@ -3115,20 +3188,22 @@ void hugehelp(void)
"              will be used.\n"
"\n"
"              Examples:\n"
+
, stdout);
+
 fputs(
"               curl --max-time 10 https://example.com\n"
"               curl --max-time 2.92 https://example.com\n"
"\n"
"              See also --connect-timeout and --retry-max-time.\n"
"\n"
"       --metalink\n"
-
, stdout);
-
 fputs(
"              This option was previously used to specify a metalink  resource.\n"
"              Metalink  support has been disabled in curl since 7.78.0 for se-\n"
"              curity reasons.\n"
"\n"
"              If --metalink is provided several times, the last set value will\n"
"              be used.\n"
+
, stdout);
+
 fputs(
"              Example:\n"
"               curl --metalink file https://example.com\n"
"\n"
@@ -3137,20 +3212,18 @@ void hugehelp(void)
"       --negotiate\n"
"              (HTTP) Enables Negotiate (SPNEGO) authentication.\n"
"\n"
-
, stdout);
-
 fputs(
-
"              This  option  requires a library built with GSS-API or SSPI sup-\n"
-
"              port. Use -V, --version  to  see  if  your  curl  supports  GSS-\n"
+
"              This option requires a library built with GSS-API or  SSPI  sup-\n"
+
"              port.  Use  -V,  --version  to  see  if  your curl supports GSS-\n"
"              API/SSPI or SPNEGO.\n"
"\n"
-
"              When  using this option, you must also provide a fake -u, --user\n"
-
"              option to activate the authentication code properly.  Sending  a\n"
-
"              '-u  :'  is  enough  as  the user name and password from the -u,\n"
-
"              --user option are not actually used.\n"
-
"\n"
+
"              When using this option, you must also provide a fake -u,  --user\n"
, stdout);
 fputs(
-
"              If this option is used several times,  only  the  first  one  is\n"
+
"              option  to  activate the authentication code properly. Sending a\n"
+
"              '-u :' is enough as the user name  and  password  from  the  -u,\n"
+
"              --user option are not actually used.\n"
+
"\n"
+
"              If  this  option  is  used  several times, only the first one is\n"
"              used.\n"
"\n"
"              Providing --negotiate multiple times has no extra effect.\n"
@@ -3158,61 +3231,61 @@ void hugehelp(void)
"              Example:\n"
"               curl --negotiate -u : https://example.com\n"
"\n"
+
, stdout);
+
 fputs(
"              See also --basic, --ntlm, --anyauth and --proxy-negotiate.\n"
"\n"
"       --netrc-file <filename>\n"
-
"              This  option  is similar to -n, --netrc, except that you provide\n"
-
, stdout);
-
 fputs(
-
"              the path (absolute or relative) to  the  netrc  file  that  curl\n"
+
"              This option is similar to -n, --netrc, except that  you  provide\n"
+
"              the  path  (absolute  or  relative)  to the netrc file that curl\n"
"              should use. You can only specify one netrc file per invocation.\n"
"\n"
"              It will abide by --netrc-optional if specified.\n"
"\n"
-
"              If  --netrc-file  is  provided several times, the last set value\n"
+
"              If --netrc-file is provided several times, the  last  set  value\n"
+
, stdout);
+
 fputs(
"              will be used.\n"
"\n"
"              Example:\n"
"               curl --netrc-file netrc https://example.com\n"
"\n"
-
"              See also -n, --netrc, -u, --user and -K, --config.  This  option\n"
-
, stdout);
-
 fputs(
+
"              See  also  -n, --netrc, -u, --user and -K, --config. This option\n"
"              is mutually exclusive to -n, --netrc.\n"
"\n"
"       --netrc-optional\n"
-
"              Similar  to  -n, --netrc, but this option makes the .netrc usage\n"
+
"              Similar to -n, --netrc, but this option makes the  .netrc  usage\n"
"              optional and not mandatory as the -n, --netrc option does.\n"
"\n"
-
"              Providing --netrc-optional multiple times has no  extra  effect.\n"
+
"              Providing  --netrc-optional  multiple times has no extra effect.\n"
+
, stdout);
+
 fputs(
"              Disable it again with --no-netrc-optional.\n"
"\n"
"              Example:\n"
"               curl --netrc-optional https://example.com\n"
"\n"
-
, stdout);
-
 fputs(
-
"              See  also --netrc-file. This option is mutually exclusive to -n,\n"
+
"              See also --netrc-file. This option is mutually exclusive to  -n,\n"
"              --netrc.\n"
"\n"
"       -n, --netrc\n"
-
"              Makes curl scan the .netrc  (_netrc  on  Windows)  file  in  the\n"
+
"              Makes  curl  scan  the  .netrc  (_netrc  on Windows) file in the\n"
"              user's home directory for login name and password. This is typi-\n"
"              cally used for FTP on Unix. If used with HTTP, curl will  enable\n"
-
"              user  authentication. See netrc(5) and ftp(1) for details on the\n"
, stdout);
 fputs(
+
"              user  authentication. See netrc(5) and ftp(1) for details on the\n"
"              file format. Curl will not complain if that file does  not  have\n"
"              the  right  permissions  (it should be neither world- nor group-\n"
"              readable). The environment variable \"HOME\" is used to  find  the\n"
"              home directory.\n"
"\n"
"              A  quick  and  simple  example of how to setup a .netrc to allow\n"
+
, stdout);
+
 fputs(
"              curl to FTP to the machine host.domain.com with user  name  'my-\n"
"              self' and password 'secret' could look similar to:\n"
"\n"
-
, stdout);
-
 fputs(
"               machine host.domain.com\n"
"               login myself\n"
"               password secret\n"
@@ -3223,47 +3296,47 @@ void hugehelp(void)
"              Example:\n"
"               curl --netrc https://example.com\n"
"\n"
+
, stdout);
+
 fputs(
"              See also --netrc-file, -K, --config and -u, --user. This  option\n"
"              is mutually exclusive to --netrc-file and --netrc-optional.\n"
"\n"
"       -:, --next\n"
-
, stdout);
-
 fputs(
"              Tells curl to use a separate operation for the following URL and\n"
-
"              associated options. This allows you  to  send  several  URL  re-\n"
-
"              quests,  each with their own specific options, for example, such\n"
+
"              associated  options.  This  allows  you  to send several URL re-\n"
+
"              quests, each with their own specific options, for example,  such\n"
"              as different user names or custom requests for each.\n"
"\n"
-
"              -:, --next will reset all local options  and  only  global  ones\n"
-
"              will  have  their values survive over to the operation following\n"
, stdout);
 fputs(
-
"              the -:, --next instruction. Global options  include  -v,  --ver-\n"
+
"              -:,  --next  will  reset  all local options and only global ones\n"
+
"              will have their values survive over to the  operation  following\n"
+
"              the  -:,  --next  instruction. Global options include -v, --ver-\n"
"              bose, --trace, --trace-ascii and --fail-early.\n"
"\n"
-
"              For  example,  you can do both a GET and a POST in a single com-\n"
+
"              For example, you can do both a GET and a POST in a  single  com-\n"
"              mand line:\n"
"\n"
"               curl www1.example.com --next -d postthis www2.example.com\n"
"\n"
+
, stdout);
+
 fputs(
"              -:, --next can be used several times in a command line\n"
"\n"
"              Examples:\n"
"               curl https://example.com --next -d postthis www2.example.com\n"
-
, stdout);
-
 fputs(
"               curl -I https://example.com --next https://example.net/\n"
"\n"
"              See also -Z, --parallel and -K, --config. Added in 7.36.0.\n"
"\n"
"       --no-alpn\n"
-
"              (HTTPS) Disable the ALPN TLS extension. ALPN is enabled  by  de-\n"
-
"              fault  if  libcurl  was  built with an SSL library that supports\n"
-
"              ALPN. ALPN is used by a libcurl that supports HTTP/2 to  negoti-\n"
-
"              ate HTTP/2 support with the server during https sessions.\n"
-
"\n"
+
"              (HTTPS)  Disable  the ALPN TLS extension. ALPN is enabled by de-\n"
+
"              fault if libcurl was built with an  SSL  library  that  supports\n"
, stdout);
 fputs(
+
"              ALPN.  ALPN is used by a libcurl that supports HTTP/2 to negoti-\n"
+
"              ate HTTP/2 support with the server during https sessions.\n"
+
"\n"
"              Providing --no-alpn multiple times has no extra effect.  Disable\n"
"              it again with --alpn.\n"
"\n"
@@ -3273,60 +3346,60 @@ void hugehelp(void)
"              See also --no-npn and --http2. --no-alpn requires that  the  un-\n"
"              derlying libcurl was built to support TLS. Added in 7.36.0.\n"
"\n"
-
"       -N, --no-buffer\n"
-
"              Disables the buffering of the output stream. In normal work sit-\n"
, stdout);
 fputs(
-
"              uations, curl will use a standard buffered  output  stream  that\n"
+
"       -N, --no-buffer\n"
+
"              Disables the buffering of the output stream. In normal work sit-\n"
+
"              uations,  curl  will  use a standard buffered output stream that\n"
"              will have the effect that it will output the data in chunks, not\n"
"              necessarily exactly when the data arrives.   Using  this  option\n"
"              will disable that buffering.\n"
"\n"
"              Providing  -N,  --no-buffer  multiple times has no extra effect.\n"
+
, stdout);
+
 fputs(
"              Disable it again with --buffer.\n"
"\n"
"              Example:\n"
"               curl --no-buffer https://example.com\n"
"\n"
-
, stdout);
-
 fputs(
"              See also -#, --progress-bar.\n"
"\n"
"       --no-clobber\n"
"              When used in conjunction with the -o,  --output,  -J,  --remote-\n"
"              header-name,  -O,  --remote-name,  or --remote-name-all options,\n"
"              curl avoids overwriting files that already exist. Instead, a dot\n"
+
, stdout);
+
 fputs(
"              and a number gets appended to the name of the file that would be\n"
"              created, up to filename.100 after which it will not  create  any\n"
"              file.\n"
"\n"
-
, stdout);
-
 fputs(
"              Note  that  this is the negated option name documented.  You can\n"
"              thus use --clobber to enforce the clobbering, even if -J,  --re-\n"
"              mote-header-name is specified.\n"
"\n"
"              Providing --no-clobber multiple times has no extra effect.  Dis-\n"
+
, stdout);
+
 fputs(
"              able it again with --clobber.\n"
"\n"
"              Example:\n"
"               curl --no-clobber --output local/dir/file https://example.com\n"
-
, stdout);
-
 fputs(
"              See also -o, --output and -O, --remote-name. Added in 7.83.0.\n"
"\n"
"       --no-keepalive\n"
-
"              Disables the use of keepalive messages on  the  TCP  connection.\n"
+
"              Disables  the  use  of keepalive messages on the TCP connection.\n"
"              curl otherwise enables them by default.\n"
"\n"
-
"              Note  that  this  is the negated option name documented. You can\n"
+
"              Note that this is the negated option name  documented.  You  can\n"
+
, stdout);
+
 fputs(
"              thus use --keepalive to enforce keepalive.\n"
"\n"
-
"              Providing --no-keepalive multiple times  has  no  extra  effect.\n"
+
"              Providing  --no-keepalive  multiple  times  has no extra effect.\n"
"              Disable it again with --keepalive.\n"
"\n"
-
, stdout);
-
 fputs(
"              Example:\n"
"               curl --no-keepalive https://example.com\n"
"\n"
@@ -3335,25 +3408,25 @@ void hugehelp(void)
"       --no-npn\n"
"              (HTTPS) In curl 7.86.0 and later, curl never uses NPN.\n"
"\n"
-
"              Disable  the  NPN  TLS  extension.  NPN is enabled by default if\n"
-
"              libcurl was built with an SSL library that supports NPN. NPN  is\n"
-
"              used  by a libcurl that supports HTTP/2 to negotiate HTTP/2 sup-\n"
+
"              Disable the NPN TLS extension. NPN  is  enabled  by  default  if\n"
, stdout);
 fputs(
+
"              libcurl  was built with an SSL library that supports NPN. NPN is\n"
+
"              used by a libcurl that supports HTTP/2 to negotiate HTTP/2  sup-\n"
"              port with the server during https sessions.\n"
"\n"
-
"              Providing --no-npn multiple times has no extra effect.   Disable\n"
+
"              Providing  --no-npn multiple times has no extra effect.  Disable\n"
"              it again with --npn.\n"
"\n"
"              Example:\n"
"               curl --no-npn https://example.com\n"
"\n"
-
"              See  also  --no-alpn and --http2. --no-npn requires that the un-\n"
+
"              See also --no-alpn and --http2. --no-npn requires that  the  un-\n"
+
, stdout);
+
 fputs(
"              derlying libcurl was built to support TLS. Added in 7.36.0.\n"
"\n"
"       --no-progress-meter\n"
-
, stdout);
-
 fputs(
"              Option to switch off the progress meter output without muting or\n"
"              otherwise  affecting warning and informational messages like -s,\n"
"              --silent does.\n"
@@ -3361,11 +3434,11 @@ void hugehelp(void)
"              Note that this is the negated option name  documented.  You  can\n"
"              thus use --progress-meter to enable the progress meter again.\n"
"\n"
+
, stdout);
+
 fputs(
"              Providing  --no-progress-meter  multiple  times has no extra ef-\n"
"              fect.  Disable it again with --progress-meter.\n"
"\n"
-
, stdout);
-
 fputs(
"              Example:\n"
"               curl --no-progress-meter -o store https://example.com\n"
"\n"
@@ -3374,104 +3447,104 @@ void hugehelp(void)
"       --no-sessionid\n"
"              (TLS) Disable curl's use of SSL session-ID caching.  By  default\n"
"              all  transfers are done using the cache. Note that while nothing\n"
-
"              should ever get hurt by attempting  to  reuse  SSL  session-IDs,\n"
, stdout);
 fputs(
+
"              should ever get hurt by attempting  to  reuse  SSL  session-IDs,\n"
"              there seem to be broken SSL implementations in the wild that may\n"
"              require you to disable this in order for you to succeed.\n"
"\n"
-
"              Note that this is the negated option name  documented.  You  can\n"
+
"              Note  that  this  is the negated option name documented. You can\n"
"              thus use --sessionid to enforce session-ID caching.\n"
"\n"
-
"              Providing  --no-sessionid  multiple  times  has no extra effect.\n"
+
"              Providing --no-sessionid multiple times  has  no  extra  effect.\n"
+
, stdout);
+
 fputs(
"              Disable it again with --sessionid.\n"
"\n"
"              Example:\n"
-
, stdout);
-
 fputs(
"               curl --no-sessionid https://example.com\n"
"\n"
"              See also -k, --insecure.\n"
"\n"
"       --noproxy <no-proxy-list>\n"
-
"              Comma-separated list of hosts for which not to use a  proxy,  if\n"
-
"              one  is  specified.  The  only wildcard is a single * character,\n"
-
"              which matches all hosts, and  effectively  disables  the  proxy.\n"
-
"              Each  name in this list is matched as either a domain which con-\n"
+
"              Comma-separated  list  of hosts for which not to use a proxy, if\n"
+
"              one is specified. The only wildcard is  a  single  *  character,\n"
+
"              which  matches  all  hosts,  and effectively disables the proxy.\n"
, stdout);
 fputs(
-
"              tains the hostname, or the hostname  itself.  For  example,  lo-\n"
-
"              cal.com  would match local.com, local.com:80, and www.local.com,\n"
+
"              Each name in this list is matched as either a domain which  con-\n"
+
"              tains  the  hostname,  or  the hostname itself. For example, lo-\n"
+
"              cal.com would match local.com, local.com:80, and  www.local.com,\n"
"              but not www.notlocal.com.\n"
"\n"
-
"              Since 7.53.0, This option overrides  the  environment  variables\n"
-
"              that  disable  the proxy ('no_proxy' and 'NO_PROXY'). If there's\n"
-
"              an environment variable disabling a proxy, you can set  the  no-\n"
-
"              proxy list to \"\" to override it.\n"
-
"\n"
+
"              Since  7.53.0,  This  option overrides the environment variables\n"
+
"              that disable the proxy ('no_proxy' and 'NO_PROXY').  If  there's\n"
, stdout);
 fputs(
-
"              Since  7.86.0, IP addresses specified to this option can be pro-\n"
-
"              vided using CIDR notation: an appended slash and  number  speci-\n"
-
"              fies  the  number of \"network bits\" out of the address to use in\n"
+
"              an  environment  variable disabling a proxy, you can set the no-\n"
+
"              proxy list to \"\" to override it.\n"
+
"\n"
+
"              Since 7.86.0, IP addresses specified to this option can be  pro-\n"
+
"              vided  using  CIDR notation: an appended slash and number speci-\n"
+
"              fies the number of \"network bits\" out of the address to  use  in\n"
"              the comparison. For example \"192.168.0.0/16\" would match all ad-\n"
"              dresses starting with \"192.168\".\n"
"\n"
+
, stdout);
+
 fputs(
"              If  --noproxy is provided several times, the last set value will\n"
"              be used.\n"
"              Example:\n"
-
, stdout);
-
 fputs(
"               curl --noproxy \"www.example\" https://example.com\n"
"\n"
"              See also -x, --proxy.\n"
"\n"
"       --ntlm-wb\n"
"              (HTTP) Enables NTLM much in the style --ntlm does, but hand over\n"
-
"              the  authentication  to the separate binary ntlmauth application\n"
+
"              the authentication to the separate binary  ntlmauth  application\n"
"              that is executed when needed.\n"
"\n"
+
, stdout);
+
 fputs(
"              Providing --ntlm-wb multiple times has no extra effect.\n"
"\n"
"              Example:\n"
"               curl --ntlm-wb -u user:password https://example.com\n"
"\n"
-
, stdout);
-
 fputs(
"              See also --ntlm and --proxy-ntlm.\n"
"\n"
-
"       --ntlm (HTTP) Enables  NTLM  authentication.  The  NTLM  authentication\n"
+
"       --ntlm (HTTP)  Enables  NTLM  authentication.  The  NTLM authentication\n"
"              method was designed by Microsoft and is used by IIS web servers.\n"
"              It is a proprietary protocol, reverse-engineered by clever  peo-\n"
-
"              ple and implemented in curl based on their efforts. This kind of\n"
-
"              behavior should not be endorsed, you should  encourage  everyone\n"
, stdout);
 fputs(
-
"              who  uses  NTLM to switch to a public and documented authentica-\n"
+
"              ple and implemented in curl based on their efforts. This kind of\n"
+
"              behavior  should  not be endorsed, you should encourage everyone\n"
+
"              who uses NTLM to switch to a public and  documented  authentica-\n"
"              tion method instead, such as Digest.\n"
"\n"
-
"              If you want to enable NTLM for your proxy  authentication,  then\n"
+
"              If  you  want to enable NTLM for your proxy authentication, then\n"
"              use --proxy-ntlm.\n"
"\n"
-
"              If  this  option  is  used  several times, only the first one is\n"
+
"              If this option is used several times,  only  the  first  one  is\n"
"              used.\n"
+
, stdout);
+
 fputs(
"\n"
"              Providing --ntlm multiple times has no extra effect.\n"
"\n"
"              Example:\n"
"               curl --ntlm -u user:password https://example.com\n"
"\n"
-
, stdout);
-
 fputs(
-
"              See also  --proxy-ntlm.  --ntlm  requires  that  the  underlying\n"
+
"              See  also  --proxy-ntlm.  --ntlm  requires  that  the underlying\n"
"              libcurl was built to support TLS. This option is mutually exclu-\n"
"              sive to --basic and --negotiate and --digest and --anyauth.\n"
"\n"
"       --oauth2-bearer <token>\n"
"              (IMAP LDAP POP3 SMTP HTTP) Specify the Bearer  Token  for  OAUTH\n"
-
"              2.0  server authentication. The Bearer Token is used in conjunc-\n"
, stdout);
 fputs(
+
"              2.0  server authentication. The Bearer Token is used in conjunc-\n"
"              tion with the user name which can be specified as  part  of  the\n"
"              --url or -u, --user options.\n"
"\n"
@@ -3482,78 +3555,78 @@ void hugehelp(void)
"              will be used.\n"
"\n"
"              Example:\n"
+
, stdout);
+
 fputs(
"               curl --oauth2-bearer \"mF_9.B5f-4.1JqM\" https://example.com\n"
"\n"
"              See also --basic, --ntlm and --digest. Added in 7.33.0.\n"
"\n"
-
, stdout);
-
 fputs(
"       --output-dir <dir>\n"
-
"              This  option  specifies  the  directory in which files should be\n"
+
"              This option specifies the directory in  which  files  should  be\n"
"              stored, when -O, --remote-name or -o, --output are used.\n"
"\n"
-
"              The given output directory is used for all URLs and  output  op-\n"
+
"              The  given  output directory is used for all URLs and output op-\n"
"              tions on the command line, up until the first -:, --next.\n"
"\n"
-
"              If  the specified target directory does not exist, the operation\n"
-
"              will fail unless --create-dirs is also used.\n"
-
"\n"
, stdout);
 fputs(
-
"              If --output-dir is provided several times, the  last  set  value\n"
+
"              If the specified target directory does not exist, the  operation\n"
+
"              will fail unless --create-dirs is also used.\n"
+
"\n"
+
"              If  --output-dir  is  provided several times, the last set value\n"
"              will be used.\n"
"\n"
"              Example:\n"
"               curl --output-dir \"tmp\" -O https://example.com\n"
"\n"
-
"              See  also  -O, --remote-name and -J, --remote-header-name. Added\n"
+
"              See also -O, --remote-name and -J,  --remote-header-name.  Added\n"
"              in 7.73.0.\n"
"\n"
"       -o, --output <file>\n"
-
"              Write output to <file> instead of stdout. If you are using {} or\n"
-
"              [] to fetch multiple documents, you should quote the URL and you\n"
, stdout);
 fputs(
-
"              can use '#' followed by a number in the <file>  specifier.  That\n"
-
"              variable  will  be  replaced with the current string for the URL\n"
+
"              Write output to <file> instead of stdout. If you are using {} or\n"
+
"              [] to fetch multiple documents, you should quote the URL and you\n"
+
"              can  use  '#' followed by a number in the <file> specifier. That\n"
+
"              variable will be replaced with the current string  for  the  URL\n"
"              being fetched. Like in:\n"
"\n"
"               curl \"http://{one,two}.example.com\" -o \"file_#1.txt\"\n"
"\n"
"              or use several variables like:\n"
"\n"
-
"               curl \"http://{site,host}.host[1-5].com\" -o \"#1_#2\"\n"
-
"\n"
-
"              You may use this option as many times as the number of URLs  you\n"
, stdout);
 fputs(
-
"              have.  For  example, if you specify two URLs on the same command\n"
+
"               curl \"http://{site,host}.host[1-5].com\" -o \"#1_#2\"\n"
+
"\n"
+
"              You  may use this option as many times as the number of URLs you\n"
+
"              have. For example, if you specify two URLs on the  same  command\n"
"              line, you can use it like this:\n"
"\n"
"                curl -o aa example.com -o bb example.net\n"
"\n"
-
"              and the order of the -o options and the URLs  does  not  matter,\n"
-
"              just  that  the  first -o is for the first URL and so on, so the\n"
+
"              and  the  order  of the -o options and the URLs does not matter,\n"
+
"              just that the first -o is for the first URL and so  on,  so  the\n"
+
, stdout);
+
 fputs(
"              above command line can also be written as\n"
"\n"
"                curl example.com example.net -o aa -o bb\n"
"\n"
-
, stdout);
-
 fputs(
-
"              See also the --create-dirs option to create the  local  directo-\n"
-
"              ries  dynamically.  Specifying the output as '-' (a single dash)\n"
+
"              See  also  the --create-dirs option to create the local directo-\n"
+
"              ries dynamically. Specifying the output as '-' (a  single  dash)\n"
"              will force the output to be done to stdout.\n"
"\n"
-
"              To  suppress  response  bodies,  you  can  redirect  output   to\n"
+
"              To   suppress  response  bodies,  you  can  redirect  output  to\n"
"              /dev/null:\n"
"\n"
"                curl example.com -o /dev/null\n"
"\n"
+
, stdout);
+
 fputs(
"              Or for Windows use nul:\n"
"                curl example.com -o nul\n"
"\n"
-
, stdout);
-
 fputs(
"              -o, --output can be used several times in a command line\n"
"\n"
"              Examples:\n"
@@ -3562,23 +3635,23 @@ void hugehelp(void)
"               curl \"http://{site,host}.host[1-5].com\" -o \"#1_#2\"\n"
"               curl -o file https://example.com -o file2 https://example.net\n"
"\n"
-
"              See  also -O, --remote-name, --remote-name-all and -J, --remote-\n"
+
, stdout);
+
 fputs(
+
"              See also -O, --remote-name, --remote-name-all and -J,  --remote-\n"
"              header-name.\n"
"\n"
"       --parallel-immediate\n"
-
, stdout);
-
 fputs(
-
"              When doing parallel transfers, this option  will  instruct  curl\n"
+
"              When  doing  parallel  transfers, this option will instruct curl\n"
"              that it should rather prefer opening up more connections in par-\n"
"              allel at once rather than waiting to see if new transfers can be\n"
"              added as multiplexed streams on another connection.\n"
"\n"
+
, stdout);
+
 fputs(
"              This option is global and does not need to be specified for each\n"
"              use of --next.\n"
"\n"
"              Providing --parallel-immediate multiple times has no  extra  ef-\n"
-
, stdout);
-
 fputs(
"              fect.  Disable it again with --no-parallel-immediate.\n"
"\n"
"              Example:\n"
@@ -3587,12 +3660,12 @@ void hugehelp(void)
"              See also -Z, --parallel and --parallel-max. Added in 7.68.0.\n"
"\n"
"       --parallel-max <num>\n"
+
, stdout);
+
 fputs(
"              When  asked to do parallel transfers, using -Z, --parallel, this\n"
"              option controls the maximum amount of transfers to do simultane-\n"
"              ously.\n"
"\n"
-
, stdout);
-
 fputs(
"              This option is global and does not need to be specified for each\n"
"              use of -:, --next.\n"
"              The default is 50.\n"
@@ -3601,67 +3674,67 @@ void hugehelp(void)
"              will be used.\n"
"\n"
"              Example:\n"
+
, stdout);
+
 fputs(
"               curl --parallel-max 100 -Z https://example.com ftp://example.com/\n"
"\n"
"              See also -Z, --parallel. Added in 7.66.0.\n"
"\n"
"       -Z, --parallel\n"
-
, stdout);
-
 fputs(
"              Makes  curl perform its transfers in parallel as compared to the\n"
"              regular serial manner.\n"
"\n"
"              This option is global and does not need to be specified for each\n"
"              use of --next.\n"
"\n"
-
"              Providing  -Z,  --parallel  multiple  times has no extra effect.\n"
+
"              Providing -Z, --parallel multiple times  has  no  extra  effect.\n"
+
, stdout);
+
 fputs(
"              Disable it again with --no-parallel.\n"
"\n"
"              Example:\n"
"               curl --parallel https://example.com -o file1 https://example.com -o file2\n"
"\n"
-
, stdout);
-
 fputs(
"              See also -:, --next and -v, --verbose. Added in 7.66.0.\n"
"\n"
"       --pass <phrase>\n"
"              (SSH TLS) Passphrase for the private key.\n"
"\n"
-
"              If --pass is provided several times, the last set value will  be\n"
+
"              If  --pass is provided several times, the last set value will be\n"
"              used.\n"
"\n"
"              Example:\n"
+
, stdout);
+
 fputs(
"               curl --pass secret --key file https://example.com\n"
"\n"
"              See also --key and -u, --user.\n"
"\n"
"       --path-as-is\n"
-
"              Tell  curl  to  not handle sequences of /../ or /./ in the given\n"
-
, stdout);
-
 fputs(
-
"              URL path. Normally curl will squash or merge them  according  to\n"
+
"              Tell curl to not handle sequences of /../ or /./  in  the  given\n"
+
"              URL  path.  Normally curl will squash or merge them according to\n"
"              standards but with this option set you tell it not to do that.\n"
"\n"
"              Providing --path-as-is multiple times has no extra effect.  Dis-\n"
"              able it again with --no-path-as-is.\n"
"\n"
+
, stdout);
+
 fputs(
"              Example:\n"
"               curl --path-as-is https://example.com/../../etc/passwd\n"
"\n"
"              See also --request-target. Added in 7.42.0.\n"
"\n"
"       --pinnedpubkey <hashes>\n"
-
, stdout);
-
 fputs(
"              (TLS) Tells curl to  use  the  specified  public  key  file  (or\n"
"              hashes)  to  verify the peer. This can be a path to a file which\n"
"              contains a single public key in PEM or DER format, or any number\n"
"              of base64 encoded sha256 hashes preceded by 'sha256//' and sepa-\n"
+
, stdout);
+
 fputs(
"              rated by ';'.\n"
"\n"
"              When negotiating a TLS or SSL connection,  the  server  sends  a\n"
-
, stdout);
-
 fputs(
"              certificate  indicating  its identity. A public key is extracted\n"
"              from this certificate and if it does not exactly match the  pub-\n"
"              lic  key provided to this option, curl will abort the connection\n"
@@ -3671,13 +3744,13 @@ void hugehelp(void)
"\n"
"              7.39.0: OpenSSL, GnuTLS and GSKit\n"
"\n"
+
, stdout);
+
 fputs(
"              7.43.0: NSS and wolfSSL\n"
"\n"
"              7.47.0: mbedtls\n"
"              sha256 support:\n"
"\n"
-
, stdout);
-
 fputs(
"              7.44.0: OpenSSL, GnuTLS, NSS and wolfSSL\n"
"\n"
"              7.47.0: mbedtls\n"
@@ -3689,22 +3762,22 @@ void hugehelp(void)
"\n"
"              Examples:\n"
"               curl --pinnedpubkey keyfile https://example.com\n"
+
, stdout);
+
 fputs(
"               curl --pinnedpubkey 'sha256//ce118b51897f4452dc' https://example.com\n"
"\n"
"              See also --hostpubsha256. Added in 7.39.0.\n"
"\n"
"       --post301\n"
-
, stdout);
-
 fputs(
"              (HTTP) Tells curl to respect RFC 7231/6.4.2 and not convert POST\n"
"              requests into GET requests when following a 301 redirection. The\n"
"              non-RFC behavior is ubiquitous in web browsers, so curl does the\n"
"              conversion by default to maintain consistency. However, a server\n"
+
, stdout);
+
 fputs(
"              may  require  a  POST to remain a POST after such a redirection.\n"
"              This option is meaningful only when using -L, --location.\n"
"\n"
-
, stdout);
-
 fputs(
"              Providing --post301 multiple times has no extra effect.  Disable\n"
"              it again with --no-post301.\n"
"\n"
@@ -3714,33 +3787,33 @@ void hugehelp(void)
"              See also --post302, --post303 and -L, --location.\n"
"\n"
"       --post302\n"
-
"              (HTTP) Tells curl to respect RFC 7231/6.4.3 and not convert POST\n"
-
"              requests into GET requests when following a 302 redirection. The\n"
, stdout);
 fputs(
+
"              (HTTP) Tells curl to respect RFC 7231/6.4.3 and not convert POST\n"
+
"              requests into GET requests when following a 302 redirection. The\n"
"              non-RFC behavior is ubiquitous in web browsers, so curl does the\n"
"              conversion by default to maintain consistency. However, a server\n"
-
"              may  require  a  POST to remain a POST after such a redirection.\n"
+
"              may require a POST to remain a POST after  such  a  redirection.\n"
"              This option is meaningful only when using -L, --location.\n"
"\n"
+
, stdout);
+
 fputs(
"              Providing --post302 multiple times has no extra effect.  Disable\n"
"              it again with --no-post302.\n"
"\n"
"              Example:\n"
-
, stdout);
-
 fputs(
"               curl --post302 --location -d \"data\" https://example.com\n"
"\n"
"              See also --post301, --post303 and -L, --location.\n"
"\n"
"       --post303\n"
"              (HTTP) Tells curl to violate RFC 7231/6.4.4 and not convert POST\n"
-
"              requests into GET requests when following  303  redirections.  A\n"
-
"              server may require a POST to remain a POST after a 303 redirect-\n"
-
"              ion. This option is meaningful only when using -L, --location.\n"
-
"\n"
+
"              requests  into  GET  requests when following 303 redirections. A\n"
, stdout);
 fputs(
+
"              server may require a POST to remain a POST after a 303  redirec-\n"
+
"              tion. This option is meaningful only when using -L, --location.\n"
+
"\n"
"              Providing --post303 multiple times has no extra effect.  Disable\n"
"              it again with --no-post303.\n"
"\n"
@@ -3750,49 +3823,51 @@ void hugehelp(void)
"              See also --post302, --post301 and -L, --location.\n"
"\n"
"       --preproxy [protocol://]host[:port]\n"
-
"              Use  the  specified  SOCKS proxy before connecting to an HTTP or\n"
-
"              HTTPS -x, --proxy. In such a case curl  first  connects  to  the\n"
, stdout);
 fputs(
+
"              Use  the  specified  SOCKS proxy before connecting to an HTTP or\n"
+
"              HTTPS -x, --proxy. In such a case curl  first  connects  to  the\n"
"              SOCKS  proxy  and  then  connects (through SOCKS) to the HTTP or\n"
"              HTTPS proxy. Hence pre proxy.\n"
"\n"
"              The pre proxy string should be specified with a protocol:// pre-\n"
-
"              fix  to  specify  alternative  proxy  protocols.  Use socks4://,\n"
-
"              socks4a://, socks5:// or  socks5h://  to  request  the  specific\n"
-
"              SOCKS  version  to be used. No protocol specified will make curl\n"
-
"              default to SOCKS4.\n"
-
"\n"
+
"              fix to  specify  alternative  proxy  protocols.  Use  socks4://,\n"
, stdout);
 fputs(
-
"              If the port number is not specified in the proxy string,  it  is\n"
+
"              socks4a://,  socks5://  or  socks5h://  to  request the specific\n"
+
"              SOCKS version to be used. No protocol specified will  make  curl\n"
+
"              default to SOCKS4.\n"
+
"\n"
+
"              If  the  port number is not specified in the proxy string, it is\n"
"              assumed to be 1080.\n"
"\n"
"              User and password that might be provided in the proxy string are\n"
"              URL decoded by curl. This allows you to pass in special  charac-\n"
+
, stdout);
+
 fputs(
"              ters such as @ by using %40 or pass in a colon with %3a.\n"
"\n"
"              If --preproxy is provided several times, the last set value will\n"
"              be used.\n"
"              Example:\n"
-
, stdout);
-
 fputs(
"               curl --preproxy socks5://proxy.example -x http://http.example https://example.com\n"
"\n"
"              See also -x, --proxy and --socks5. Added in 7.52.0.\n"
"\n"
"       -#, --progress-bar\n"
"              Make curl display transfer progress as a simple progress bar in-\n"
+
, stdout);
+
 fputs(
"              stead of the standard, more informational, meter.\n"
"\n"
"              This  progress  bar draws a single line of '#' characters across\n"
"              the screen and shows a percentage if the transfer size is known.\n"
-
, stdout);
-
 fputs(
-
"              For  transfers  without  a  known size, there will be space ship\n"
-
"              (-=o=-) that moves back and forth but only while data  is  being\n"
+
"              For transfers without a known size, there  will  be  space  ship\n"
+
"              (-=o=-)  that  moves back and forth but only while data is being\n"
"              transferred, with a set of flying hash sign symbols on top.\n"
"\n"
+
, stdout);
+
 fputs(
"              This option is global and does not need to be specified for each\n"
"              use of --next.\n"
"\n"
@@ -3800,8 +3875,6 @@ void hugehelp(void)
"              Disable it again with --no-progress-bar.\n"
"\n"
"              Example:\n"
-
, stdout);
-
 fputs(
"               curl -# -O https://example.com\n"
"\n"
"              See also --styled-output.\n"
@@ -3809,47 +3882,49 @@ void hugehelp(void)
"       --proto-default <protocol>\n"
"              Tells curl to use protocol for any URL missing a scheme name.\n"
"\n"
-
"              An  unknown  or  unsupported  protocol causes error CURLE_UNSUP-\n"
+
, stdout);
+
 fputs(
+
"              An unknown or unsupported  protocol  causes  error  CURLE_UNSUP-\n"
"              PORTED_PROTOCOL (1).\n"
"\n"
"              This option does not change the default proxy protocol (http).\n"
"\n"
"              Without this option set, curl guesses protocol based on the host\n"
-
, stdout);
-
 fputs(
"              name, see --url for details.\n"
"\n"
"              If --proto-default is provided several times, the last set value\n"
"              will be used.\n"
"\n"
"              Example:\n"
+
, stdout);
+
 fputs(
"               curl --proto-default https ftp.example.com\n"
"\n"
"              See also --proto and --proto-redir. Added in 7.45.0.\n"
"\n"
"       --proto-redir <protocols>\n"
-
"              Tells curl to limit what protocols it may use on redirect.  Pro-\n"
-
"              tocols  denied by --proto are not overridden by this option. See\n"
-
, stdout);
-
 fputs(
+
"              Tells  curl to limit what protocols it may use on redirect. Pro-\n"
+
"              tocols denied by --proto are not overridden by this option.  See\n"
"              --proto for how protocols are represented.\n"
"\n"
"              Example, allow only HTTP and HTTPS on redirect:\n"
"\n"
+
, stdout);
+
 fputs(
"               curl --proto-redir -all,http,https http://example.com\n"
"\n"
-
"              By default curl will only allow HTTP, HTTPS, FTP and FTPS on re-\n"
-
"              direct (since 7.65.2). Specifying all or +all enables all proto-\n"
-
"              cols on redirects, which is not good for security.\n"
+
"              By  default  curl  will  only allow HTTP, HTTPS, FTP and FTPS on\n"
+
"              redirect (since 7.65.2). Specifying all or +all enables all pro-\n"
+
"              tocols on redirects, which is not good for security.\n"
"\n"
"              If --proto-redir is provided several times, the last  set  value\n"
-
, stdout);
-
 fputs(
"              will be used.\n"
"\n"
"              Example:\n"
"               curl --proto-redir =http,https https://example.com\n"
"\n"
+
, stdout);
+
 fputs(
"              See also --proto.\n"
"\n"
"       --proto <protocols>\n"
@@ -3858,37 +3933,37 @@ void hugehelp(void)
"              are  each  a protocol name or 'all', optionally prefixed by zero\n"
"              or more modifiers. Available modifiers are:\n"
"\n"
+
"              +  Permit this protocol in addition to protocols already permit-\n"
, stdout);
 fputs(
-
"              +  Permit this protocol in addition to protocols already permit-\n"
"                 ted (this is the default if no modifier is used).\n"
"\n"
-
"              -  Deny  this  protocol,  removing it from the list of protocols\n"
+
"              -  Deny this protocol, removing it from the  list  of  protocols\n"
"                 already permitted.\n"
"\n"
-
"              =  Permit only this protocol (ignoring the list already  permit-\n"
-
"                 ted),  though subject to later modification by subsequent en-\n"
+
"              =  Permit  only this protocol (ignoring the list already permit-\n"
+
"                 ted), though subject to later modification by subsequent  en-\n"
"                 tries in the comma separated list.\n"
"\n"
-
, stdout);
-
 fputs(
"              For example:\n"
"\n"
"              --proto -ftps  uses the default protocols, but disables ftps\n"
"\n"
+
, stdout);
+
 fputs(
"              --proto -all,https,+http\n"
"                             only enables http and https\n"
"\n"
"              --proto =http,https\n"
"                             also only enables http and https\n"
"\n"
-
"              Unknown and disabled protocols produce a  warning.  This  allows\n"
+
"              Unknown  and  disabled  protocols produce a warning. This allows\n"
"              scripts to safely rely on being able to disable potentially dan-\n"
-
, stdout);
-
 fputs(
"              gerous protocols, without relying upon support for that protocol\n"
"              being built into curl to avoid an error.\n"
"\n"
+
, stdout);
+
 fputs(
"              This option can be used multiple times, in which case the effect\n"
"              is the same as concatenating the protocols into one instance  of\n"
"              the option.\n"
@@ -3897,78 +3972,99 @@ void hugehelp(void)
"              used.\n"
"\n"
"              Example:\n"
-
, stdout);
-
 fputs(
"               curl --proto =http,https,sftp https://example.com\n"
"\n"
"              See also --proto-redir and --proto-default.\n"
"\n"
"       --proxy-anyauth\n"
-
"              Tells curl to pick a suitable authentication method when  commu-\n"
-
"              nicating  with  the  given HTTP proxy. This might cause an extra\n"
+
, stdout);
+
 fputs(
+
"              Tells  curl to pick a suitable authentication method when commu-\n"
+
"              nicating with the given HTTP proxy. This might  cause  an  extra\n"
"              request/response round-trip.\n"
"\n"
"              Providing --proxy-anyauth multiple times has no extra effect.\n"
"\n"
"              Example:\n"
-
, stdout);
-
 fputs(
"               curl --proxy-anyauth --proxy-user user:passwd -x proxy https://example.com\n"
"\n"
"              See also -x, --proxy, --proxy-basic and --proxy-digest.\n"
"\n"
"       --proxy-basic\n"
-
"              Tells curl to use HTTP Basic authentication  when  communicating\n"
+
, stdout);
+
 fputs(
+
"              Tells  curl  to use HTTP Basic authentication when communicating\n"
"              with the given proxy. Use --basic for enabling HTTP Basic with a\n"
"              remote host. Basic is the  default  authentication  method  curl\n"
"              uses with proxies.\n"
"\n"
-
, stdout);
-
 fputs(
"              Providing --proxy-basic multiple times has no extra effect.\n"
"\n"
"              Example:\n"
"               curl --proxy-basic --proxy-user user:passwd -x proxy https://example.com\n"
"\n"
+
, stdout);
+
 fputs(
"              See also -x, --proxy, --proxy-anyauth and --proxy-digest.\n"
"\n"
+
"       --proxy-ca-native\n"
+
"              (TLS)  Tells  curl to use the CA store from the native operating\n"
+
"              system to verify the HTTPS proxy. By default, curl  will  other-\n"
+
"              wise  use a CA store provided in a single file or directory, but\n"
+
"              when using this option it will interface the operating  system's\n"
+
"              own vault.\n"
+
"\n"
+
, stdout);
+
 fputs(
+
"              This  option  only  works  for curl on Windows when built to use\n"
+
"              OpenSSL. When curl on Windows is built  to  use  Schannel,  this\n"
+
"              feature is implied and curl then only uses the native CA store.\n"
+
"\n"
+
"              Providing  --proxy-ca-native multiple times has no extra effect.\n"
+
"              Disable it again with --no-proxy-ca-native.\n"
+
"\n"
+
"              Example:\n"
+
"               curl --ca-native https://example.com\n"
+
"\n"
+
, stdout);
+
 fputs(
+
"              See also --cacert, --capath and -k, --insecure. Added in 8.2.0.\n"
+
"\n"
"       --proxy-cacert <file>\n"
"              Same as --cacert but used in HTTPS proxy context.\n"
"\n"
-
"              If  --proxy-cacert is provided several times, the last set value\n"
+
"              If --proxy-cacert is provided several times, the last set  value\n"
"              will be used.\n"
"\n"
"              Example:\n"
-
, stdout);
-
 fputs(
"               curl --proxy-cacert CA-file.txt -x https://proxy https://example.com\n"
"\n"
-
"              See also --proxy-capath, --cacert,  --capath  and  -x,  --proxy.\n"
+
"              See  also  --proxy-capath,  --cacert,  --capath and -x, --proxy.\n"
"              Added in 7.52.0.\n"
"\n"
+
, stdout);
+
 fputs(
"       --proxy-capath <dir>\n"
"              Same as --capath but used in HTTPS proxy context.\n"
"\n"
-
"              If  --proxy-capath is provided several times, the last set value\n"
+
"              If --proxy-capath is provided several times, the last set  value\n"
"              will be used.\n"
"\n"
"              Example:\n"
-
, stdout);
-
 fputs(
"               curl --proxy-capath /local/directory -x https://proxy https://example.com\n"
"\n"
-
"              See also --proxy-cacert, -x,  --proxy  and  --capath.  Added  in\n"
+
"              See  also  --proxy-cacert,  -x,  --proxy  and --capath. Added in\n"
"              7.52.0.\n"
"\n"
"       --proxy-cert-type <type>\n"
+
, stdout);
+
 fputs(
"              Same as --cert-type but used in HTTPS proxy context.\n"
"\n"
-
"              If  --proxy-cert-type  is  provided  several times, the last set\n"
+
"              If --proxy-cert-type is provided several  times,  the  last  set\n"
"              value will be used.\n"
"\n"
"              Example:\n"
-
, stdout);
-
 fputs(
"               curl --proxy-cert-type PEM --proxy-cert file -x https://proxy https://example.com\n"
"\n"
"              See also --proxy-cert. Added in 7.52.0.\n"
@@ -3976,19 +4072,27 @@ void hugehelp(void)
"       --proxy-cert <cert[:passwd]>\n"
"              Same as -E, --cert but used in HTTPS proxy context.\n"
"\n"
-
"              If --proxy-cert is provided several times, the  last  set  value\n"
+
, stdout);
+
 fputs(
+
"              If  --proxy-cert  is  provided several times, the last set value\n"
"              will be used.\n"
"\n"
"              Example:\n"
"               curl --proxy-cert file -x https://proxy https://example.com\n"
"\n"
-
, stdout);
-
 fputs(
"              See also --proxy-cert-type. Added in 7.52.0.\n"
"\n"
"       --proxy-ciphers <list>\n"
"              Same as --ciphers but used in HTTPS proxy context.\n"
"\n"
+
"              Specifies which ciphers to use in the connection  to  the  HTTPS\n"
+
, stdout);
+
 fputs(
+
"              proxy.  The  list of ciphers must specify valid ciphers. Read up\n"
+
"              on SSL cipher list details on this URL:\n"
+
"\n"
+
"              https://curl.se/docs/ssl-ciphers.html\n"
+
"\n"
"              If --proxy-ciphers is provided several times, the last set value\n"
"              will be used.\n"
"\n"
@@ -3997,9 +4101,9 @@ void hugehelp(void)
"\n"
"              See also --ciphers, --curves and -x, --proxy. Added in 7.52.0.\n"
"\n"
-
"       --proxy-crlfile <file>\n"
, stdout);
 fputs(
+
"       --proxy-crlfile <file>\n"
"              Same as --crlfile but used in HTTPS proxy context.\n"
"\n"
"              If --proxy-crlfile is provided several times, the last set value\n"
@@ -4011,7 +4115,7 @@ void hugehelp(void)
"              See also --crlfile and -x, --proxy. Added in 7.52.0.\n"
"\n"
"       --proxy-digest\n"
-
"              Tells  curl to use HTTP Digest authentication when communicating\n"
+
"              Tells curl to use HTTP Digest authentication when  communicating\n"
, stdout);
 fputs(
"              with the given proxy. Use --digest for enabling HTTP Digest with\n"
@@ -4029,28 +4133,28 @@ void hugehelp(void)
, stdout);
 fputs(
"              to a proxy. You may specify any number of extra headers. This is\n"
-
"              the  equivalent option to -H, --header but is for proxy communi-\n"
-
"              cation only like in CONNECT requests when you  want  a  separate\n"
-
"              header  sent  to  the proxy to what is sent to the actual remote\n"
+
"              the equivalent option to -H, --header but is for proxy  communi-\n"
+
"              cation  only  like  in CONNECT requests when you want a separate\n"
+
"              header sent to the proxy to what is sent to  the  actual  remote\n"
"              host.\n"
"\n"
-
"              curl will make sure that each header  you  add/replace  is  sent\n"
+
"              curl  will  make  sure  that each header you add/replace is sent\n"
"              with the proper end-of-line marker, you should thus not add that\n"
, stdout);
 fputs(
"              as a part of the header content: do not add newlines or carriage\n"
"              returns, they will only mess things up for you.\n"
"\n"
-
"              Headers  specified  with this option will not be included in re-\n"
+
"              Headers specified with this option will not be included  in  re-\n"
"              quests that curl knows will not be sent to a proxy.\n"
"\n"
-
"              Starting in 7.55.0, this option can take an argument  in  @file-\n"
-
"              name  style, which then adds a header for each line in the input\n"
+
"              Starting  in  7.55.0, this option can take an argument in @file-\n"
+
"              name style, which then adds a header for each line in the  input\n"
, stdout);
 fputs(
"              file. Using @- will make curl read the header file from stdin.\n"
"\n"
-
"              This option can be used  multiple  times  to  add/replace/remove\n"
+
"              This  option  can  be  used multiple times to add/replace/remove\n"
"              multiple headers.\n"
"\n"
"              --proxy-header can be used several times in a command line\n"
@@ -4065,15 +4169,15 @@ void hugehelp(void)
"              See also -x, --proxy. Added in 7.37.0.\n"
"\n"
"       --proxy-http2\n"
-
"              (HTTP)  Tells curl to try negotiate HTTP version 2 with an HTTPS\n"
-
"              proxy. The proxy might still only offer  HTTP/1  and  then  curl\n"
+
"              (HTTP) Tells curl to try negotiate HTTP version 2 with an  HTTPS\n"
+
"              proxy.  The  proxy  might  still only offer HTTP/1 and then curl\n"
"              will stick to using that version.\n"
"\n"
"              This has no effect for any other kinds of proxies.\n"
"\n"
, stdout);
 fputs(
-
"              Providing  --proxy-http2  multiple  times  has  no extra effect.\n"
+
"              Providing --proxy-http2 multiple  times  has  no  extra  effect.\n"
"              Disable it again with --no-proxy-http2.\n"
"\n"
"              Example:\n"
@@ -4136,7 +4240,7 @@ void hugehelp(void)
"              See also --proxy-anyauth and --proxy-basic.\n"
"\n"
"       --proxy-ntlm\n"
-
"              Tells curl to use HTTP NTLM  authentication  when  communicating\n"
+
"              Tells  curl  to  use HTTP NTLM authentication when communicating\n"
"              with the given proxy. Use --ntlm for enabling NTLM with a remote\n"
"              host.\n"
"\n"
@@ -4219,7 +4323,7 @@ void hugehelp(void)
"              Same as --ssl-auto-client-cert but used in HTTPS proxy context.\n"
"\n"
"              Providing --proxy-ssl-auto-client-cert multiple times has no ex-\n"
-
"              tra effect.  Disable it again  with  --no-proxy-ssl-auto-client-\n"
+
"              tra  effect.   Disable it again with --no-proxy-ssl-auto-client-\n"
"              cert.\n"
"\n"
"              Example:\n"
@@ -4231,29 +4335,30 @@ void hugehelp(void)
"              7.77.0.\n"
"\n"
"       --proxy-tls13-ciphers <ciphersuite list>\n"
-
"              (TLS) Specifies which cipher suites to use in the connection  to\n"
+
"              (TLS)  Specifies which cipher suites to use in the connection to\n"
"              your HTTPS proxy when it negotiates TLS 1.3. The list of ciphers\n"
"              suites must specify valid ciphers. Read up  on  TLS  1.3  cipher\n"
, stdout);
 fputs(
"              suite details on this URL:\n"
"\n"
-
"               https://curl.se/docs/ssl-ciphers.html\n"
+
"              https://curl.se/docs/ssl-ciphers.html\n"
"\n"
"              This  option  is  currently  used only when curl is built to use\n"
"              OpenSSL 1.1.1 or later. If you are using a different SSL backend\n"
-
"              you  can try setting TLS 1.3 cipher suites by using the --proxy-\n"
+
"              you can try setting TLS 1.3 cipher suites by using the  --proxy-\n"
"              ciphers option.\n"
"\n"
"              If --proxy-tls13-ciphers is provided several times, the last set\n"
"              value will be used.\n"
"\n"
+
"              Example:\n"
, stdout);
 fputs(
-
"              Example:\n"
"               curl --proxy-tls13-ciphers TLS_AES_128_GCM_SHA256 -x proxy https://example.com\n"
"\n"
-
"              See also --tls13-ciphers and --curves. Added in 7.61.0.\n"
+
"              See also --tls13-ciphers, --curves and --proxy-ciphers. Added in\n"
+
"              7.61.0.\n"
"\n"
"       --proxy-tlsauthtype <type>\n"
"              Same as --tlsauthtype but used in HTTPS proxy context.\n"
@@ -4305,22 +4410,22 @@ void hugehelp(void)
"              See also -x, --proxy. Added in 7.52.0.\n"
"\n"
"       -U, --proxy-user <user:password>\n"
-
"              Specify the user name and password to use for proxy  authentica-\n"
+
"              Specify  the user name and password to use for proxy authentica-\n"
"              tion.\n"
"\n"
, stdout);
 fputs(
-
"              If  you use a Windows SSPI-enabled curl binary and do either Ne-\n"
-
"              gotiate or NTLM authentication then you can tell curl to  select\n"
+
"              If you use a Windows SSPI-enabled curl binary and do either  Ne-\n"
+
"              gotiate  or NTLM authentication then you can tell curl to select\n"
"              the user name and password from your environment by specifying a\n"
"              single colon with this option: \"-U :\".\n"
"\n"
"              On systems where it works, curl will hide the given option argu-\n"
-
"              ment  from  process listings. This is not enough to protect cre-\n"
+
"              ment from process listings. This is not enough to  protect  cre-\n"
, stdout);
 fputs(
-
"              dentials from possibly getting seen by other users on  the  same\n"
-
"              system  as  they  will  still  be  visible  for  a moment before\n"
+
"              dentials  from  possibly getting seen by other users on the same\n"
+
"              system as they  will  still  be  visible  for  a  moment  before\n"
"              cleared. Such sensitive data should be retrieved from a file in-\n"
"              stead or similar and never used in clear text in a command line.\n"
"              If  -U,  --proxy-user  is  provided  several times, the last set\n"
@@ -4346,22 +4451,22 @@ void hugehelp(void)
"              Unix domain sockets are supported for socks proxy. Set localhost\n"
"              for the host part. e.g. socks5h://localhost/path/to/socket.sock\n"
"\n"
-
"              HTTPS proxy support via https:// protocol prefix  was  added  in\n"
-
"              7.52.0  for OpenSSL, GnuTLS and NSS. Since 7.87.0, it also works\n"
-
"              for BearSSL, mbedTLS, rustls,  Schannel,  Secure  Transport  and\n"
+
"              HTTPS  proxy  support  via https:// protocol prefix was added in\n"
+
"              7.52.0 for OpenSSL, GnuTLS and NSS. Since 7.87.0, it also  works\n"
+
"              for  BearSSL,  mbedTLS,  rustls,  Schannel, Secure Transport and\n"
"              wolfSSL.\n"
"\n"
-
"              Unrecognized  and  unsupported  proxy  protocols  cause an error\n"
+
"              Unrecognized and unsupported  proxy  protocols  cause  an  error\n"
, stdout);
 fputs(
-
"              since 7.52.0.  Prior versions may ignore the  protocol  and  use\n"
+
"              since  7.52.0.   Prior  versions may ignore the protocol and use\n"
"              http:// instead.\n"
"\n"
-
"              If  the  port number is not specified in the proxy string, it is\n"
+
"              If the port number is not specified in the proxy string,  it  is\n"
"              assumed to be 1080.\n"
"\n"
-
"              This option overrides existing environment  variables  that  set\n"
-
"              the  proxy  to use. If there's an environment variable setting a\n"
+
"              This  option  overrides  existing environment variables that set\n"
+
"              the proxy to use. If there's an environment variable  setting  a\n"
"              proxy, you can set proxy to \"\" to override it.\n"
"\n"
, stdout);
@@ -4375,11 +4480,11 @@ void hugehelp(void)
"              User and password that might be provided in the proxy string are\n"
, stdout);
 fputs(
-
"              URL  decoded by curl. This allows you to pass in special charac-\n"
+
"              URL decoded by curl. This allows you to pass in special  charac-\n"
"              ters such as @ by using %40 or pass in a colon with %3a.\n"
"\n"
-
"              The proxy host can be specified the same way as the proxy  envi-\n"
-
"              ronment  variables,  including the protocol prefix (http://) and\n"
+
"              The  proxy host can be specified the same way as the proxy envi-\n"
+
"              ronment variables, including the protocol prefix  (http://)  and\n"
"              the embedded user + password.\n"
"\n"
"              When a proxy is used, the active FTP mode as set with -P, --ftp-\n"
@@ -4421,10 +4526,10 @@ void hugehelp(void)
"              lows direct connect to the remote port number curl wants to tun-\n"
"              nel through to.\n"
"\n"
-
"              To  suppress  proxy CONNECT response headers when curl is set to\n"
+
"              To suppress proxy CONNECT response headers when curl is  set  to\n"
"              output headers use --suppress-connect-headers.\n"
"\n"
-
"              Providing -p, --proxytunnel multiple times has no extra  effect.\n"
+
"              Providing  -p, --proxytunnel multiple times has no extra effect.\n"
, stdout);
 fputs(
"              Disable it again with --no-proxytunnel.\n"
@@ -4439,7 +4544,7 @@ void hugehelp(void)
"              lic key in this separate file.\n"
"\n"
"              (As of 7.39.0, curl attempts to automatically extract the public\n"
-
"              key  from the private key file, so passing this option is gener-\n"
+
"              key from the private key file, so passing this option is  gener-\n"
, stdout);
 fputs(
"              ally not required. Note that this public key extraction requires\n"
@@ -4462,33 +4567,31 @@ void hugehelp(void)
"              exact). To make commands take place after a successful transfer,\n"
"              prefix them with a dash '-'.\n"
"\n"
-
"              (FTP  only)  To make commands be sent after curl has changed the\n"
+
"              (FTP only) To make commands be sent after curl has  changed  the\n"
, stdout);
 fputs(
-
"              working directory, just before  the  file  transfer  command(s),\n"
-
"              prefix  the command with a '+'. This is not performed when a di-\n"
+
"              working  directory,  just  before  the file transfer command(s),\n"
+
"              prefix the command with a '+'. This is not performed when a  di-\n"
"              rectory listing is performed.\n"
"\n"
"              You may specify any number of commands.\n"
"\n"
-
"              By default curl will stop at first failure. To  make  curl  con-\n"
-
"              tinue  even if the command fails, prefix the command with an as-\n"
-
"              terisk (*). Otherwise, if the server returns failure for one  of\n"
+
"              By  default  curl  will stop at first failure. To make curl con-\n"
+
"              tinue even if the command fails, prefix the command with an  as-\n"
+
"              terisk  (*). Otherwise, if the server returns failure for one of\n"
, stdout);
 fputs(
"              the commands, the entire operation will be aborted.\n"
"\n"
-
"              You  must send syntactically correct FTP commands as RFC 959 de-\n"
-
"              fines to FTP servers, or one of the  commands  listed  below  to\n"
+
"              You must send syntactically correct FTP commands as RFC 959  de-\n"
+
"              fines  to  FTP  servers,  or one of the commands listed below to\n"
"              SFTP servers.\n"
"\n"
-
"              This option can be used multiple times.\n"
-
"\n"
-
"              SFTP  is a binary protocol. Unlike for FTP, curl interprets SFTP\n"
-
"              quote commands itself before sending them to  the  server.  File\n"
+
"              SFTP is a binary protocol. Unlike for FTP, curl interprets  SFTP\n"
+
"              quote  commands  itself  before sending them to the server. File\n"
+
"              names may be quoted shell-style to embed spaces or special char-\n"
, stdout);
 fputs(
-
"              names may be quoted shell-style to embed spaces or special char-\n"
"              acters. Following is the list of all supported SFTP  quote  com-\n"
"              mands:\n"
"\n"
@@ -4496,90 +4599,90 @@ void hugehelp(void)
"                     The  atime  command sets the last access time of the file\n"
"                     named by the file operand. The <date expression>  can  be\n"
"                     all  sorts  of  date strings, see the curl_getdate(3) man\n"
-
, stdout);
-
 fputs(
"                     page for date expression details. (Added in 7.73.0)\n"
"\n"
"              chgrp group file\n"
+
, stdout);
+
 fputs(
"                     The chgrp command sets the group ID of the file named  by\n"
"                     the  file  operand to the group ID specified by the group\n"
"                     operand. The group operand is a decimal integer group ID.\n"
"\n"
"              chmod mode file\n"
"                     The chmod command modifies the  file  mode  bits  of  the\n"
-
, stdout);
-
 fputs(
"                     specified file. The mode operand is an octal integer mode\n"
"                     number.\n"
"\n"
"              chown user file\n"
+
, stdout);
+
 fputs(
"                     The chown command sets the owner of the file named by the\n"
-
"                     file  operand  to the user ID specified by the user oper-\n"
-
"                     and. The user operand is a decimal integer user ID.\n"
+
"                     file  operand  to  the  user  ID  specified  by  the user\n"
+
"                     operand. The user operand is a decimal integer user ID.\n"
"\n"
"              ln source_file target_file\n"
"                     The ln and symlink commands create a symbolic link at the\n"
-
, stdout);
-
 fputs(
-
"                     target_file  location  pointing  to the source_file loca-\n"
+
"                     target_file location pointing to  the  source_file  loca-\n"
"                     tion.\n"
"\n"
"              mkdir directory_name\n"
-
"                     The mkdir command creates the directory named by the  di-\n"
+
, stdout);
+
 fputs(
+
"                     The  mkdir command creates the directory named by the di-\n"
"                     rectory_name operand.\n"
"\n"
"              mtime date file\n"
-
"                     The  mtime command sets the last modification time of the\n"
+
"                     The mtime command sets the last modification time of  the\n"
"                     file named by the file operand. The <date expression> can\n"
-
, stdout);
-
 fputs(
"                     be all sorts of date strings, see the curl_getdate(3) man\n"
"                     page for date expression details. (Added in 7.73.0)\n"
"\n"
+
, stdout);
+
 fputs(
"              pwd    The pwd command returns the absolute pathname of the cur-\n"
"                     rent working directory.\n"
"\n"
"              rename source target\n"
"                     The rename command renames the file or directory named by\n"
-
"                     the source operand to the destination path named  by  the\n"
-
, stdout);
-
 fputs(
+
"                     the  source  operand to the destination path named by the\n"
"                     target operand.\n"
"\n"
"              rm file\n"
-
"                     The rm command removes the file specified by the file op-\n"
-
"                     erand.\n"
+
"                     The rm command removes the file  specified  by  the  file\n"
+
"                     operand.\n"
"\n"
+
, stdout);
+
 fputs(
"              rmdir directory\n"
-
"                     The rmdir command removes the directory  entry  specified\n"
+
"                     The  rmdir  command removes the directory entry specified\n"
"                     by the directory operand, provided it is empty.\n"
"\n"
"              symlink source_file target_file\n"
"                     See ln.\n"
"\n"
-
"       -Q, --quote can be used several times in a command line\n"
+
"              -Q, --quote can be used several times in a command line\n"
"\n"
-
, stdout);
-
 fputs(
-
"       Example:\n"
-
"        curl --quote \"DELE file\" ftp://example.com/foo\n"
+
"              Example:\n"
+
"               curl --quote \"DELE file\" ftp://example.com/foo\n"
"\n"
-
"       See also -X, --request.\n"
+
"              See also -X, --request.\n"
"\n"
"       --random-file <file>\n"
-
"              Deprecated  option. This option is ignored by curl since 7.84.0.\n"
-
"              Prior to that it only had an effect on curl if built to use  old\n"
+
, stdout);
+
 fputs(
+
"              Deprecated option. This option is ignored by curl since  7.84.0.\n"
+
"              Prior  to that it only had an effect on curl if built to use old\n"
"              versions of OpenSSL.\n"
"\n"
"              Specify the path name to file containing what will be considered\n"
"              as random data. The data may be used to seed the  random  engine\n"
-
, stdout);
-
 fputs(
"              for SSL connections.\n"
"\n"
"              If  --random-file  is provided several times, the last set value\n"
"              will be used.\n"
"\n"
+
, stdout);
+
 fputs(
"              Example:\n"
"               curl --random-file rubbish https://example.com\n"
"\n"
@@ -4587,15 +4690,15 @@ void hugehelp(void)
"\n"
"       -r, --range <range>\n"
"              (HTTP FTP SFTP FILE) Retrieve a byte range (i.e. a partial docu-\n"
-
"              ment)  from  an  HTTP/1.1,  FTP  or SFTP server or a local FILE.\n"
-
, stdout);
-
 fputs(
+
"              ment) from an HTTP/1.1, FTP or SFTP  server  or  a  local  FILE.\n"
"              Ranges can be specified in a number of ways.\n"
"\n"
"              0-499     specifies the first 500 bytes\n"
"\n"
"              500-999   specifies the second 500 bytes\n"
"\n"
+
, stdout);
+
 fputs(
"              -500      specifies the last 500 bytes\n"
"\n"
"              9500-     specifies the bytes from offset 9500 and forward\n"
@@ -4605,93 +4708,93 @@ void hugehelp(void)
"              100-199,500-599\n"
"                        specifies two separate 100-byte ranges(*) (HTTP)\n"
"\n"
+
"              (*)  = NOTE that this will cause the server to reply with a mul-\n"
+
"              tipart response, which will be returned as-is by  curl!  Parsing\n"
, stdout);
 fputs(
-
"              (*) = NOTE that this will cause the server to reply with a  mul-\n"
-
"              tipart  response,  which will be returned as-is by curl! Parsing\n"
"              or otherwise transforming this response is the responsibility of\n"
"              the caller.\n"
"\n"
"              Only  digit characters (0-9) are valid in the 'start' and 'stop'\n"
"              fields of the 'start-stop' range syntax. If a non-digit  charac-\n"
-
, stdout);
-
 fputs(
"              ter is given in the range, the server's response will be unspec-\n"
"              ified, depending on the server's configuration.\n"
"\n"
-
"              You should also be aware that many HTTP/1.1 servers do not  have\n"
-
"              this  feature  enabled, so that when you attempt to get a range,\n"
-
"              you will instead get the whole document.\n"
-
"\n"
-
"              FTP and SFTP range downloads only  support  the  simple  'start-\n"
+
"              You  should also be aware that many HTTP/1.1 servers do not have\n"
, stdout);
 fputs(
-
"              stop'  syntax  (optionally with one of the numbers omitted). FTP\n"
+
"              this feature enabled, so that when you attempt to get  a  range,\n"
+
"              you will instead get the whole document.\n"
+
"\n"
+
"              FTP  and  SFTP  range  downloads only support the simple 'start-\n"
+
"              stop' syntax (optionally with one of the numbers  omitted).  FTP\n"
"              use depends on the extended FTP command SIZE.\n"
"\n"
-
"              If -r, --range is provided several times,  the  last  set  value\n"
+
"              If  -r,  --range  is  provided several times, the last set value\n"
"              will be used.\n"
"\n"
"              Example:\n"
+
, stdout);
+
 fputs(
"               curl --range 22-44 https://example.com\n"
"\n"
"              See also -C, --continue-at and -a, --append.\n"
"\n"
"       --rate <max request rate>\n"
-
"              Specify  the  maximum transfer frequency you allow curl to use -\n"
-
, stdout);
-
 fputs(
+
"              Specify the maximum transfer frequency you allow curl to  use  -\n"
"              in number of transfer starts per time unit (sometimes called re-\n"
"              quest  rate).  Without  this  option,  curl  will start the next\n"
"              transfer as fast as possible.\n"
"\n"
+
, stdout);
+
 fputs(
"              If given several URLs and a transfer completes faster  than  the\n"
"              allowed  rate, curl will wait until the next transfer is started\n"
"              to maintain the requested rate. This option has no  effect  when\n"
"              -Z, --parallel is used.\n"
"\n"
+
"              The request rate is provided as \"N/U\" where N is an integer num-\n"
+
"              ber  and U is a time unit. Supported units are 's' (second), 'm'\n"
, stdout);
 fputs(
-
"              The request rate is provided as \"N/U\" where N is an integer num-\n"
-
"              ber and U is a time unit. Supported units are 's' (second),  'm'\n"
-
"              (minute),  'h'  (hour) and 'd' /(day, as in a 24 hour unit). The\n"
-
"              default time unit, if no \"/U\" is provided, is number  of  trans-\n"
+
"              (minute), 'h' (hour) and 'd' /(day, as in a 24 hour  unit).  The\n"
+
"              default  time  unit, if no \"/U\" is provided, is number of trans-\n"
"              fers per hour.\n"
"\n"
-
"              If  curl  is  told  to allow 10 requests per minute, it will not\n"
-
, stdout);
-
 fputs(
-
"              start the next request until 6 seconds have  elapsed  since  the\n"
+
"              If curl is told to allow 10 requests per  minute,  it  will  not\n"
+
"              start  the  next  request until 6 seconds have elapsed since the\n"
"              previous transfer was started.\n"
"\n"
-
"              This  function  uses millisecond resolution. If the allowed fre-\n"
+
"              This function uses millisecond resolution. If the  allowed  fre-\n"
+
, stdout);
+
 fputs(
"              quency is set more than 1000 per second, it will instead run un-\n"
"              restricted.\n"
"\n"
"              When  retrying  transfers,  enabled  with  --retry, the separate\n"
"              retry delay logic is used and not this setting.\n"
"\n"
-
, stdout);
-
 fputs(
"              This option is global and does not need to be specified for each\n"
"              use of --next.\n"
"\n"
-
"              If  --rate is provided several times, the last set value will be\n"
+
"              If --rate is provided several times, the last set value will  be\n"
"              used.\n"
"\n"
"              Examples:\n"
+
, stdout);
+
 fputs(
"               curl --rate 2/s https://example.com ...\n"
"               curl --rate 3/h https://example.com ...\n"
"               curl --rate 14/m https://example.com ...\n"
"\n"
"              See also --limit-rate and --retry-delay. Added in 7.84.0.\n"
"\n"
-
, stdout);
-
 fputs(
"       --raw  (HTTP) When used, it disables all internal HTTP decoding of con-\n"
"              tent  or transfer encodings and instead makes them passed on un-\n"
"              altered, raw.\n"
"\n"
+
, stdout);
+
 fputs(
"              Providing --raw multiple times has no extra effect.  Disable  it\n"
"              again with --no-raw.\n"
"\n"
@@ -4701,136 +4804,134 @@ void hugehelp(void)
"              See also --tr-encoding.\n"
"\n"
"       -e, --referer <URL>\n"
+
"              (HTTP) Sends the \"Referrer Page\" information to the HTTP server.\n"
+
"              This  can also be set with the -H, --header flag of course. When\n"
+
"              used with -L, --location you  can  append  \";auto\"  to  the  -e,\n"
, stdout);
 fputs(
-
"              (HTTP) Sends the \"Referrer Page\" information to the HTTP server.\n"
-
"              This can also be set with the -H, --header flag of course.  When\n"
-
"              used  with  -L,  --location  you  can  append \";auto\" to the -e,\n"
-
"              --referer URL to make curl automatically set  the  previous  URL\n"
-
"              when  it  follows  a Location: header. The \";auto\" string can be\n"
+
"              --referer  URL  to  make curl automatically set the previous URL\n"
+
"              when it follows a Location: header. The \";auto\"  string  can  be\n"
"              used alone, even if you do not set an initial -e, --referer.\n"
"\n"
-
, stdout);
-
 fputs(
-
"              If -e, --referer is provided several times, the last  set  value\n"
+
"              If  -e,  --referer is provided several times, the last set value\n"
"              will be used.\n"
"\n"
"              Examples:\n"
"               curl --referer \"https://fake.example\" https://example.com\n"
+
, stdout);
+
 fputs(
"               curl --referer \"https://fake.example;auto\" -L https://example.com\n"
"               curl --referer \";auto\" -L https://example.com\n"
"\n"
"              See also -A, --user-agent and -H, --header.\n"
"\n"
"       -J, --remote-header-name\n"
-
, stdout);
-
 fputs(
"              (HTTP) This option tells the -O, --remote-name option to use the\n"
"              server-specified Content-Disposition  filename  instead  of  ex-\n"
"              tracting  a  filename  from the URL. If the server-provided file\n"
+
, stdout);
+
 fputs(
"              name contains a path, that will be stripped off before the  file\n"
"              name is used.\n"
"\n"
"              The  file is saved in the current directory, or in the directory\n"
"              specified with --output-dir.\n"
"\n"
-
, stdout);
-
 fputs(
"              If the server specifies a file name and a file  with  that  name\n"
"              already  exists  in  the  destination  directory, it will not be\n"
"              overwritten and an error will occur - unless you allow it by us-\n"
-
"              ing  the --clobber option. If the server does not specify a file\n"
-
"              name then this option has no effect.\n"
-
"\n"
-
"              There's no attempt to decode %-sequences (yet) in  the  provided\n"
, stdout);
 fputs(
+
"              ing the --clobber option. If the server does not specify a  file\n"
+
"              name then this option has no effect.\n"
+
"\n"
+
"              There's  no  attempt to decode %-sequences (yet) in the provided\n"
"              file name, so this option may provide you with rather unexpected\n"
"              file names.\n"
"\n"
"              This feature uses the name from the \"filename\"  field,  it  does\n"
"              not  yet  support the \"filename*\" field (filenames with explicit\n"
+
, stdout);
+
 fputs(
"              character sets).\n"
"\n"
"              WARNING: Exercise judicious use of this  option,  especially  on\n"
"              Windows.  A  rogue  server  could  send you the name of a DLL or\n"
-
, stdout);
-
 fputs(
"              other file that could be loaded automatically by Windows or some\n"
"              third party software.\n"
"\n"
-
"              Providing  -J,  --remote-header-name multiple times has no extra\n"
+
"              Providing -J, --remote-header-name multiple times has  no  extra\n"
"              effect.  Disable it again with --no-remote-header-name.\n"
"\n"
"              Example:\n"
+
, stdout);
+
 fputs(
"               curl -OJ https://example.com/file\n"
"\n"
"              See also -O, --remote-name.\n"
"\n"
"       --remote-name-all\n"
-
"              This option changes the default action for all given URLs to  be\n"
-
, stdout);
-
 fputs(
+
"              This  option changes the default action for all given URLs to be\n"
"              dealt with as if -O, --remote-name were used for each one. So if\n"
"              you want to disable that for a specific URL after --remote-name-\n"
"              all has been used, you must use \"-o -\" or --no-remote-name.\n"
"\n"
-
"              Providing  --remote-name-all multiple times has no extra effect.\n"
+
, stdout);
+
 fputs(
+
"              Providing --remote-name-all multiple times has no extra  effect.\n"
"              Disable it again with --no-remote-name-all.\n"
"\n"
"              Example:\n"
"               curl --remote-name-all ftp://example.com/file1 ftp://example.com/file2\n"
"\n"
-
, stdout);
-
 fputs(
"              See also -O, --remote-name.\n"
"\n"
"       -O, --remote-name\n"
-
"              Write output to a local file named like the remote file we  get.\n"
-
"              (Only  the file part of the remote file is used, the path is cut\n"
+
"              Write  output to a local file named like the remote file we get.\n"
+
"              (Only the file part of the remote file is used, the path is  cut\n"
"              off.)\n"
"\n"
-
"              The file will be saved in the current working directory. If  you\n"
-
"              want  the  file  saved  in  a different directory, make sure you\n"
-
"              change the current working directory before invoking  curl  with\n"
, stdout);
 fputs(
+
"              The  file will be saved in the current working directory. If you\n"
+
"              want the file saved in a  different  directory,  make  sure  you\n"
+
"              change  the  current working directory before invoking curl with\n"
"              this option or use --output-dir.\n"
"\n"
-
"              The  remote  file  name  to use for saving is extracted from the\n"
-
"              given URL, nothing else, and if it already  exists  it  will  be\n"
-
"              overwritten.  If  you  want  the server to be able to choose the\n"
-
"              file name refer to -J, --remote-header-name which can be used in\n"
-
"              addition  to  this option. If the server chooses a file name and\n"
+
"              The remote file name to use for saving  is  extracted  from  the\n"
+
"              given  URL,  nothing  else,  and if it already exists it will be\n"
, stdout);
 fputs(
+
"              overwritten. If you want the server to be  able  to  choose  the\n"
+
"              file name refer to -J, --remote-header-name which can be used in\n"
+
"              addition  to  this option. If the server chooses a file name and\n"
"              that name already exists it will not be overwritten.\n"
"\n"
"              There is no URL decoding done on the file name. If it has %20 or\n"
-
"              other  URL  encoded parts of the name, they will end up as-is as\n"
+
"              other URL encoded parts of the name, they will end up  as-is  as\n"
"              file name.\n"
"\n"
-
"              You may use this option as many times as the number of URLs  you\n"
+
, stdout);
+
 fputs(
+
"              You  may use this option as many times as the number of URLs you\n"
"              have.\n"
"\n"
"              -O, --remote-name can be used several times in a command line\n"
"\n"
"              Example:\n"
-
, stdout);
-
 fputs(
"               curl -O https://example.com/filename\n"
"\n"
"              See  also  --remote-name-all,  --output-dir  and  -J,  --remote-\n"
"              header-name.\n"
"\n"
"       -R, --remote-time\n"
-
"              When used, this will make curl attempt to figure out  the  time-\n"
-
"              stamp  of the remote file, and if that is available make the lo-\n"
-
"              cal file get that same timestamp.\n"
-
"\n"
-
"              Providing -R, --remote-time multiple times has no extra  effect.\n"
+
"              When  used,  this will make curl attempt to figure out the time-\n"
, stdout);
 fputs(
+
"              stamp of the remote file, and if that is available make the  lo-\n"
+
"              cal file get that same timestamp.\n"
+
"\n"
+
"              Providing  -R, --remote-time multiple times has no extra effect.\n"
"              Disable it again with --no-remote-time.\n"
"\n"
"              Example:\n"
@@ -4839,85 +4940,85 @@ void hugehelp(void)
"              See also -O, --remote-name and -z, --time-cond.\n"
"\n"
"       --remove-on-error\n"
-
"              When  curl  returns an error when told to save output in a local\n"
-
"              file, this option removes that saved file before  exiting.  This\n"
-
"              prevents  curl from leaving a partial file in the case of an er-\n"
-
"              ror during transfer.\n"
, stdout);
 fputs(
+
"              When curl returns an error when told to save output in  a  local\n"
+
"              file,  this  option removes that saved file before exiting. This\n"
+
"              prevents curl from leaving a partial file in the case of an  er-\n"
+
"              ror during transfer.\n"
"\n"
"              If the output is not a file, this option has no effect.\n"
"\n"
-
"              Providing --remove-on-error multiple times has no extra  effect.\n"
+
"              Providing  --remove-on-error multiple times has no extra effect.\n"
"              Disable it again with --no-remove-on-error.\n"
"\n"
+
, stdout);
+
 fputs(
"              Example:\n"
"               curl --remove-on-error -o output https://example.com\n"
"\n"
"              See also -f, --fail. Added in 7.83.0.\n"
"\n"
"       --request-target <path>\n"
-
"              (HTTP)  Tells curl to use an alternative \"target\" (path) instead\n"
+
"              (HTTP) Tells curl to use an alternative \"target\" (path)  instead\n"
+
"              of  using  the  path as provided in the URL. Particularly useful\n"
+
"              when wanting to issue HTTP requests  without  leading  slash  or\n"
+
"              other  data  that  does not follow the regular URL pattern, like\n"
, stdout);
 fputs(
-
"              of using the path as provided in the  URL.  Particularly  useful\n"
-
"              when  wanting  to  issue  HTTP requests without leading slash or\n"
-
"              other data that does not follow the regular  URL  pattern,  like\n"
"              \"OPTIONS *\".\n"
"\n"
-
"              If  --request-target  is  provided  several  times, the last set\n"
+
"              If --request-target is provided  several  times,  the  last  set\n"
"              value will be used.\n"
"\n"
"              Example:\n"
"               curl --request-target \"*\" -X OPTIONS https://example.com\n"
"\n"
-
, stdout);
-
 fputs(
"              See also -X, --request. Added in 7.55.0.\n"
"\n"
"       -X, --request <method>\n"
"              (HTTP) Specifies a custom request method to use when communicat-\n"
"              ing  with  the HTTP server. The specified request method will be\n"
+
, stdout);
+
 fputs(
"              used instead of the method otherwise  used  (which  defaults  to\n"
"              GET).  Read  the HTTP 1.1 specification for details and explana-\n"
"              tions. Common additional HTTP requests include PUT  and  DELETE,\n"
-
, stdout);
-
 fputs(
"              but related technologies like WebDAV offers PROPFIND, COPY, MOVE\n"
"              and more.\n"
"\n"
-
"              Normally you do not need this option. All sorts  of  GET,  HEAD,\n"
+
"              Normally  you  do  not need this option. All sorts of GET, HEAD,\n"
"              POST and PUT requests are rather invoked by using dedicated com-\n"
+
, stdout);
+
 fputs(
"              mand line options.\n"
"\n"
"              This option only changes the actual word used in  the  HTTP  re-\n"
"              quest, it does not alter the way curl behaves. So for example if\n"
-
, stdout);
-
 fputs(
-
"              you want to make a proper HEAD request, using -X HEAD  will  not\n"
+
"              you  want  to make a proper HEAD request, using -X HEAD will not\n"
"              suffice. You need to use the -I, --head option.\n"
"\n"
-
"              The  method  string  you set with -X, --request will be used for\n"
-
"              all requests, which if you for example use  -L,  --location  may\n"
-
"              cause  unintended side-effects when curl does not change request\n"
-
"              method according to the HTTP 30x response codes - and similar.\n"
-
"\n"
+
"              The method string you set with -X, --request will  be  used  for\n"
+
"              all  requests,  which  if you for example use -L, --location may\n"
, stdout);
 fputs(
+
"              cause unintended side-effects when curl does not change  request\n"
+
"              method according to the HTTP 30x response codes - and similar.\n"
+
"\n"
"              (FTP) Specifies a custom FTP command to use instead of LIST when\n"
"              doing file lists with FTP.\n"
"\n"
"              (POP3) Specifies a custom POP3 command to use instead of LIST or\n"
"              RETR.\n"
"\n"
-
"              (IMAP) Specifies a custom IMAP command to use instead  of  LIST.\n"
+
"              (IMAP)  Specifies  a custom IMAP command to use instead of LIST.\n"
"              (Added in 7.30.0)\n"
"\n"
+
, stdout);
+
 fputs(
"              (SMTP) Specifies a custom SMTP command to use instead of HELP or\n"
"              VRFY. (Added in 7.34.0)\n"
"\n"
-
, stdout);
-
 fputs(
"              If -X, --request is provided several times, the last  set  value\n"
"              will be used.\n"
"\n"
@@ -4928,38 +5029,38 @@ void hugehelp(void)
"              See also --request-target.\n"
"\n"
"       --resolve <[+]host:port:addr[,addr]...>\n"
-
"              Provide  a custom address for a specific host and port pair. Us-\n"
-
"              ing this, you can make the curl requests(s) use a specified  ad-\n"
, stdout);
 fputs(
+
"              Provide  a custom address for a specific host and port pair. Us-\n"
+
"              ing this, you can make the curl requests(s) use a specified  ad-\n"
"              dress  and prevent the otherwise normally resolved address to be\n"
"              used. Consider it a sort of /etc/hosts alternative  provided  on\n"
"              the  command line. The port number should be the number used for\n"
"              the specific protocol the host will be used for.  It  means  you\n"
+
, stdout);
+
 fputs(
"              need several entries if you want to provide address for the same\n"
"              host but different ports.\n"
"\n"
-
, stdout);
-
 fputs(
-
"              By specifying '*' as host you can tell curl to resolve any  host\n"
+
"              By  specifying '*' as host you can tell curl to resolve any host\n"
"              and specific port pair to the specified address. Wildcard is re-\n"
"              solved last so any --resolve with a specific host and port  will\n"
"              be used first.\n"
"\n"
"              The provided address set by this option will be used even if -4,\n"
-
"              --ipv4 or -6, --ipv6 is set to make curl use another IP version.\n"
, stdout);
 fputs(
+
"              --ipv4 or -6, --ipv6 is set to make curl use another IP version.\n"
"              By prefixing the host with a '+' you can make the entry time out\n"
"              after  curl's  default  timeout  (1 minute). Note that this will\n"
"              only make sense for long running parallel transfers with  a  lot\n"
"              of files. In such cases, if this option is used curl will try to\n"
-
"              resolve the host as it normally would once the timeout  has  ex-\n"
+
"              resolve  the  host as it normally would once the timeout has ex-\n"
"              pired.\n"
"\n"
-
"              Support for providing the IP address within [brackets] was added\n"
, stdout);
 fputs(
+
"              Support for providing the IP address within [brackets] was added\n"
"              in 7.57.0.\n"
"\n"
"              Support for providing multiple IP addresses per entry was  added\n"
@@ -4972,11 +5073,11 @@ void hugehelp(void)
"              This option can be used many times to add many host names to re-\n"
"              solve.\n"
"\n"
+
, stdout);
+
 fputs(
"              --resolve can be used several times in a command line\n"
"\n"
"              Example:\n"
-
, stdout);
-
 fputs(
"               curl --resolve example.com:443:127.0.0.1 https://example.com\n"
"\n"
"              See also --connect-to and --alt-svc.\n"
@@ -4984,39 +5085,39 @@ void hugehelp(void)
"       --retry-all-errors\n"
"              Retry on any error. This option is used together with --retry.\n"
"\n"
-
"              This option is the \"sledgehammer\" of retrying. Do not  use  this\n"
+
"              This  option  is the \"sledgehammer\" of retrying. Do not use this\n"
"              option by default (eg in curlrc), there may be unintended conse-\n"
-
"              quences such as sending or receiving duplicate data. Do not  use\n"
, stdout);
 fputs(
+
"              quences such as sending or receiving duplicate data. Do not  use\n"
"              with  redirected  input or output. You'd be much better off han-\n"
"              dling your unique problems in shell script. Please read the  ex-\n"
"              ample below.\n"
"\n"
"              WARNING:  For server compatibility curl attempts to retry failed\n"
"              flaky transfers as close as possible to how they  were  started,\n"
-
"              but  this  is  not possible with redirected input or output. For\n"
, stdout);
 fputs(
+
"              but  this  is  not possible with redirected input or output. For\n"
"              example, before retrying it removes output data  from  a  failed\n"
"              partial  transfer  that  was  written to an output file. However\n"
"              this is not true of data redirected to a | pipe or > file, which\n"
-
"              are  not  reset.  We strongly suggest you do not parse or record\n"
-
"              output via redirect in combination with this option,  since  you\n"
-
"              may receive duplicate data.\n"
-
"\n"
+
"              are not reset. We strongly suggest you do not  parse  or  record\n"
+
"              output  via  redirect in combination with this option, since you\n"
, stdout);
 fputs(
+
"              may receive duplicate data.\n"
+
"\n"
"              By default curl will not error on an HTTP response code that in-\n"
"              dicates an HTTP error, if the transfer was successful. For exam-\n"
-
"              ple,  if  a  server replies 404 Not Found and the reply is fully\n"
-
"              received then that is not an error. When --retry  is  used  then\n"
-
"              curl  will retry on some HTTP response codes that indicate tran-\n"
-
"              sient HTTP errors, but that does not include most  4xx  response\n"
+
"              ple, if a server replies 404 Not Found and the  reply  is  fully\n"
+
"              received  then  that  is not an error. When --retry is used then\n"
+
"              curl will retry on some HTTP response codes that indicate  tran-\n"
, stdout);
 fputs(
-
"              codes  such  as  404. If you want to retry on all response codes\n"
-
"              that indicate HTTP errors (4xx and 5xx) then  combine  with  -f,\n"
+
"              sient  HTTP  errors, but that does not include most 4xx response\n"
+
"              codes such as 404. If you want to retry on  all  response  codes\n"
+
"              that  indicate  HTTP  errors (4xx and 5xx) then combine with -f,\n"
"              --fail.\n"
"\n"
"              Providing --retry-all-errors multiple times has no extra effect.\n"
@@ -5025,11 +5126,11 @@ void hugehelp(void)
"              Example:\n"
"               curl --retry 5 --retry-all-errors https://example.com\n"
"\n"
+
, stdout);
+
 fputs(
"              See also --retry. Added in 7.71.0.\n"
"\n"
"       --retry-connrefused\n"
-
, stdout);
-
 fputs(
"              In addition to the other conditions, consider ECONNREFUSED as  a\n"
"              transient  error  too  for --retry. This option is used together\n"
"              with --retry.\n"
@@ -5038,22 +5139,22 @@ void hugehelp(void)
"              fect.  Disable it again with --no-retry-connrefused.\n"
"\n"
"              Example:\n"
+
, stdout);
+
 fputs(
"               curl --retry-connrefused --retry 7 https://example.com\n"
"\n"
"              See also --retry and --retry-all-errors. Added in 7.52.0.\n"
-
, stdout);
-
 fputs(
"\n"
"       --retry-delay <seconds>\n"
"              Make  curl  sleep  this  amount of time before each retry when a\n"
"              transfer has failed with a transient error (it changes  the  de-\n"
"              fault  backoff  time  algorithm between retries). This option is\n"
"              only interesting if --retry is also used. Setting this delay  to\n"
+
, stdout);
+
 fputs(
"              zero will make curl use the default backoff time.\n"
"\n"
"              If  --retry-delay  is provided several times, the last set value\n"
-
, stdout);
-
 fputs(
"              will be used.\n"
"\n"
"              Example:\n"
@@ -5064,9 +5165,9 @@ void hugehelp(void)
"       --retry-max-time <seconds>\n"
"              The retry timer is reset before the first transfer attempt.  Re-\n"
"              tries  will  be done as usual (see --retry) as long as the timer\n"
-
"              has not reached this given limit. Notice that if the  timer  has\n"
, stdout);
 fputs(
+
"              has not reached this given limit. Notice that if the  timer  has\n"
"              not  reached  the limit, the request will be made and while per-\n"
"              forming, it may take longer than  this  given  time  period.  To\n"
"              limit  a  single request's maximum time, use -m, --max-time. Set\n"
@@ -5075,9 +5176,9 @@ void hugehelp(void)
"              If --retry-max-time is provided  several  times,  the  last  set\n"
"              value will be used.\n"
"\n"
-
"              Example:\n"
, stdout);
 fputs(
+
"              Example:\n"
"               curl --retry-max-time 30 --retry 10 https://example.com\n"
"\n"
"              See also --retry.\n"
@@ -5092,17 +5193,17 @@ void hugehelp(void)
"              response code or an HTTP 408, 429, 500, 502, 503 or 504 response\n"
"              code.\n"
"\n"
-
"              When curl is about to retry a transfer, it will first  wait  one\n"
-
"              second  and  then for all forthcoming retries it will double the\n"
-
"              waiting time until it reaches 10 minutes which then will be  the\n"
-
"              delay  between  the  rest of the retries. By using --retry-delay\n"
-
"              you  disable  this  exponential  backoff  algorithm.  See   also\n"
+
"              When  curl  is about to retry a transfer, it will first wait one\n"
+
"              second and then for all forthcoming retries it will  double  the\n"
+
"              waiting  time until it reaches 10 minutes which then will be the\n"
+
"              delay between the rest of the retries.  By  using  --retry-delay\n"
+
"              you   disable  this  exponential  backoff  algorithm.  See  also\n"
, stdout);
 fputs(
"              --retry-max-time to limit the total time allowed for retries.\n"
"\n"
-
"              Since  curl  7.66.0,  curl will comply with the Retry-After: re-\n"
-
"              sponse header if one was present to know when to issue the  next\n"
+
"              Since curl 7.66.0, curl will comply with  the  Retry-After:  re-\n"
+
"              sponse  header if one was present to know when to issue the next\n"
"              retry.\n"
"\n"
"              If --retry is provided several times, the last set value will be\n"
@@ -5117,18 +5218,18 @@ void hugehelp(void)
 fputs(
"       --sasl-authzid <identity>\n"
"              Use this authorization identity (authzid), during SASL PLAIN au-\n"
-
"              thentication,  in addition to the authentication identity (auth-\n"
+
"              thentication, in addition to the authentication identity  (auth-\n"
"              cid) as specified by -u, --user.\n"
"\n"
-
"              If the option is not specified, the server will derive  the  au-\n"
-
"              thzid  from  the authcid, but if specified, and depending on the\n"
-
"              server implementation, it may be used to access  another  user's\n"
+
"              If  the  option is not specified, the server will derive the au-\n"
+
"              thzid from the authcid, but if specified, and depending  on  the\n"
+
"              server  implementation,  it may be used to access another user's\n"
, stdout);
 fputs(
-
"              inbox,  that  the  user  has been granted access to, or a shared\n"
+
"              inbox, that the user has been granted access  to,  or  a  shared\n"
"              mailbox for example.\n"
"\n"
-
"              If --sasl-authzid is provided several times, the last set  value\n"
+
"              If  --sasl-authzid is provided several times, the last set value\n"
"              will be used.\n"
"\n"
"              Example:\n"
@@ -5190,7 +5291,7 @@ void hugehelp(void)
"              for, potentially even to the terminal/stdout unless you redirect\n"
"              it.\n"
"\n"
-
"              Use -S, --show-error in  addition  to  this  option  to  disable\n"
+
"              Use  -S,  --show-error  in  addition  to  this option to disable\n"
"              progress meter but still show error messages.\n"
"\n"
"              Providing -s, --silent multiple times has no extra effect.  Dis-\n"
@@ -5205,19 +5306,19 @@ void hugehelp(void)
"\n"
"       --socks4 <host[:port]>\n"
"              Use the specified SOCKS4 proxy. If the port number is not speci-\n"
-
"              fied,  it  is  assumed at port 1080. Using this socket type make\n"
-
"              curl resolve the host name and passing the  address  on  to  the\n"
+
"              fied, it is assumed at port 1080. Using this  socket  type  make\n"
+
"              curl  resolve  the  host  name and passing the address on to the\n"
"              proxy.\n"
"\n"
-
"              To  specify  proxy  on  a  unix domain socket, use localhost for\n"
+
"              To specify proxy on a unix  domain  socket,  use  localhost  for\n"
, stdout);
 fputs(
"              host, e.g.  socks4://localhost/path/to/socket.sock\n"
"\n"
-
"              This option overrides any previous use of -x, --proxy,  as  they\n"
+
"              This  option  overrides any previous use of -x, --proxy, as they\n"
"              are mutually exclusive.\n"
"\n"
-
"              This  option is superfluous since you can specify a socks4 proxy\n"
+
"              This option is superfluous since you can specify a socks4  proxy\n"
"              with -x, --proxy using a socks4:// protocol prefix.\n"
"\n"
"              Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
@@ -5227,7 +5328,7 @@ void hugehelp(void)
"              such a case curl first connects to the SOCKS proxy and then con-\n"
"              nects (through SOCKS) to the HTTP or HTTPS proxy.\n"
"\n"
-
"              If  --socks4  is provided several times, the last set value will\n"
+
"              If --socks4 is provided several times, the last set  value  will\n"
"              be used.\n"
"              Example:\n"
"               curl --socks4 hostname:4096 https://example.com\n"
@@ -5259,7 +5360,7 @@ void hugehelp(void)
"\n"
, stdout);
 fputs(
-
"              If --socks4a is provided several times, the last set value  will\n"
+
"              If  --socks4a is provided several times, the last set value will\n"
"              be used.\n"
"              Example:\n"
"               curl --socks4a hostname:4096 https://example.com\n"
@@ -5304,14 +5405,14 @@ void hugehelp(void)
"              The default service name for a socks server is rcmd/server-fqdn.\n"
"              This option allows you to change it.\n"
"\n"
-
"              Examples:  --socks5  proxy-name  --socks5-gssapi-service   sockd\n"
-
"              would  use sockd/proxy-name --socks5 proxy-name --socks5-gssapi-\n"
+
"              Examples:   --socks5  proxy-name  --socks5-gssapi-service  sockd\n"
+
"              would use sockd/proxy-name --socks5 proxy-name  --socks5-gssapi-\n"
, stdout);
 fputs(
-
"              service sockd/real-name  would  use  sockd/real-name  for  cases\n"
+
"              service  sockd/real-name  would  use  sockd/real-name  for cases\n"
"              where the proxy-name does not match the principal name.\n"
"\n"
-
"              If  --socks5-gssapi-service  is provided several times, the last\n"
+
"              If --socks5-gssapi-service is provided several times,  the  last\n"
"              set value will be used.\n"
"\n"
"              Example:\n"
@@ -5322,12 +5423,12 @@ void hugehelp(void)
"       --socks5-gssapi\n"
, stdout);
 fputs(
-
"              Tells curl to use GSS-API authentication when  connecting  to  a\n"
-
"              SOCKS5  proxy.  The GSS-API authentication is enabled by default\n"
-
"              (if curl is compiled with GSS-API support).  Use  --socks5-basic\n"
+
"              Tells  curl  to  use GSS-API authentication when connecting to a\n"
+
"              SOCKS5 proxy.  The GSS-API authentication is enabled by  default\n"
+
"              (if  curl is compiled with GSS-API support).  Use --socks5-basic\n"
"              to force username/password authentication to SOCKS5 proxies.\n"
"\n"
-
"              Providing  --socks5-gssapi  multiple  times has no extra effect.\n"
+
"              Providing --socks5-gssapi multiple times has  no  extra  effect.\n"
"              Disable it again with --no-socks5-gssapi.\n"
"\n"
"              Example:\n"
@@ -5338,19 +5439,19 @@ void hugehelp(void)
"              See also --socks5. Added in 7.55.0.\n"
"\n"
"       --socks5-hostname <host[:port]>\n"
-
"              Use the specified SOCKS5 proxy (and let the  proxy  resolve  the\n"
-
"              host  name).  If the port number is not specified, it is assumed\n"
+
"              Use  the  specified  SOCKS5 proxy (and let the proxy resolve the\n"
+
"              host name). If the port number is not specified, it  is  assumed\n"
"              at port 1080.\n"
"\n"
-
"              To specify proxy on a unix  domain  socket,  use  localhost  for\n"
+
"              To  specify  proxy  on  a  unix domain socket, use localhost for\n"
, stdout);
 fputs(
"              host, e.g.  socks5h://localhost/path/to/socket.sock\n"
"\n"
-
"              This  option  overrides any previous use of -x, --proxy, as they\n"
+
"              This option overrides any previous use of -x, --proxy,  as  they\n"
"              are mutually exclusive.\n"
"\n"
-
"              This option is superfluous since you can specify a socks5  host-\n"
+
"              This  option is superfluous since you can specify a socks5 host-\n"
"              name proxy with -x, --proxy using a socks5h:// protocol prefix.\n"
"\n"
"              Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
@@ -5360,7 +5461,7 @@ void hugehelp(void)
"              such a case curl first connects to the SOCKS proxy and then con-\n"
"              nects (through SOCKS) to the HTTP or HTTPS proxy.\n"
"\n"
-
"              If --socks5-hostname is provided several  times,  the  last  set\n"
+
"              If  --socks5-hostname  is  provided  several times, the last set\n"
"              value will be used.\n"
"\n"
"              Example:\n"
@@ -5371,19 +5472,19 @@ void hugehelp(void)
, stdout);
 fputs(
"       --socks5 <host[:port]>\n"
-
"              Use  the  specified SOCKS5 proxy - but resolve the host name lo-\n"
-
"              cally. If the port number is not specified,  it  is  assumed  at\n"
+
"              Use the specified SOCKS5 proxy - but resolve the host  name  lo-\n"
+
"              cally.  If  the  port  number is not specified, it is assumed at\n"
"              port 1080.\n"
"\n"
-
"              To  specify  proxy  on  a  unix domain socket, use localhost for\n"
+
"              To specify proxy on a unix  domain  socket,  use  localhost  for\n"
"              host, e.g.  socks5://localhost/path/to/socket.sock\n"
"\n"
-
"              This option overrides any previous use of -x, --proxy,  as  they\n"
+
"              This  option  overrides any previous use of -x, --proxy, as they\n"
"              are mutually exclusive.\n"
"\n"
, stdout);
 fputs(
-
"              This  option is superfluous since you can specify a socks5 proxy\n"
+
"              This option is superfluous since you can specify a socks5  proxy\n"
"              with -x, --proxy using a socks5:// protocol prefix.\n"
"\n"
"              Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
@@ -5393,10 +5494,10 @@ void hugehelp(void)
"\n"
, stdout);
 fputs(
-
"              This  option (as well as --socks4) does not work with IPV6, FTPS\n"
+
"              This option (as well as --socks4) does not work with IPV6,  FTPS\n"
"              or LDAP.\n"
"\n"
-
"              If --socks5 is provided several times, the last set  value  will\n"
+
"              If  --socks5  is provided several times, the last set value will\n"
"              be used.\n"
"              Example:\n"
"               curl --socks5 proxy.example:7000 https://example.com\n"
@@ -5422,8 +5523,8 @@ void hugehelp(void)
, stdout);
 fputs(
"              If a transfer runs slower than speed-limit bytes per second dur-\n"
-
"              ing  a speed-time period, the transfer is aborted. If speed-time\n"
-
"              is used, the default speed-limit will be 1 unless set  with  -Y,\n"
+
"              ing a speed-time period, the transfer is aborted. If  speed-time\n"
+
"              is  used,  the default speed-limit will be 1 unless set with -Y,\n"
"              --speed-limit.\n"
"\n"
"              This option controls transfers (in both directions) but will not\n"
@@ -5451,7 +5552,7 @@ void hugehelp(void)
"              WARNING: this option loosens the SSL security, and by using this\n"
"              flag you ask for exactly that.\n"
"\n"
-
"              Providing --ssl-allow-beast multiple times has no extra  effect.\n"
+
"              Providing  --ssl-allow-beast multiple times has no extra effect.\n"
"              Disable it again with --no-ssl-allow-beast.\n"
"\n"
"              Example:\n"
@@ -5462,14 +5563,14 @@ void hugehelp(void)
"              See also --proxy-ssl-allow-beast and -k, --insecure.\n"
"\n"
"       --ssl-auto-client-cert\n"
-
"              Tell  libcurl  to automatically locate and use a client certifi-\n"
-
"              cate for authentication, when requested by the server. This  op-\n"
-
"              tion  is only supported for Schannel (the native Windows SSL li-\n"
+
"              Tell libcurl to automatically locate and use a  client  certifi-\n"
+
"              cate  for authentication, when requested by the server. This op-\n"
+
"              tion is only supported for Schannel (the native Windows SSL  li-\n"
"              brary). Prior to 7.77.0 this was the default behavior in libcurl\n"
"              with Schannel. Since the server can request any certificate that\n"
, stdout);
 fputs(
-
"              supports client authentication in the OS  certificate  store  it\n"
+
"              supports  client  authentication  in the OS certificate store it\n"
"              could be a privacy violation and unexpected.\n"
"\n"
"              Providing --ssl-auto-client-cert multiple times has no extra ef-\n"
@@ -5503,19 +5604,19 @@ void hugehelp(void)
"              use SSL/TLS.\n"
"\n"
"              This option is handled in LDAP since version 7.81.0. It is fully\n"
-
"              supported by the OpenLDAP backend and rejected  by  the  generic\n"
+
"              supported  by  the  OpenLDAP backend and rejected by the generic\n"
"              ldap backend if explicit TLS is required.\n"
"\n"
-
"              This  option  is unnecessary if you use a URL scheme that in it-\n"
+
"              This option is unnecessary if you use a URL scheme that  in  it-\n"
, stdout);
 fputs(
-
"              self implies immediate and implicit use of TLS, like  for  FTPS,\n"
-
"              IMAPS,  POP3S,  SMTPS and LDAPS. Such transfers will always fail\n"
+
"              self  implies  immediate and implicit use of TLS, like for FTPS,\n"
+
"              IMAPS, POP3S, SMTPS and LDAPS. Such transfers will  always  fail\n"
"              if the TLS handshake does not work.\n"
"\n"
"              This option was formerly known as --ftp-ssl-reqd.\n"
"\n"
-
"              Providing --ssl-reqd multiple times has no extra  effect.   Dis-\n"
+
"              Providing  --ssl-reqd  multiple times has no extra effect.  Dis-\n"
"              able it again with --no-ssl-reqd.\n"
"\n"
"              Example:\n"
@@ -5526,7 +5627,7 @@ void hugehelp(void)
"              See also --ssl and -k, --insecure.\n"
"\n"
"       --ssl-revoke-best-effort\n"
-
"              (Schannel)  This option tells curl to ignore certificate revoca-\n"
+
"              (Schannel) This option tells curl to ignore certificate  revoca-\n"
"              tion checks when they failed due to missing/offline distribution\n"
"              points for the revocation check lists.\n"
"\n"
@@ -5575,7 +5676,7 @@ void hugehelp(void)
, stdout);
 fputs(
"              (SSL) This option previously asked curl to use SSLv2, but start-\n"
-
"              ing  in curl 7.77.0 this instruction is ignored. SSLv2 is widely\n"
+
"              ing in curl 7.77.0 this instruction is ignored. SSLv2 is  widely\n"
"              considered insecure (see RFC 6176).\n"
"\n"
"              Providing -2, --sslv2 multiple times has no extra effect.\n"
@@ -5583,11 +5684,11 @@ void hugehelp(void)
"              Example:\n"
"               curl --sslv2 https://example.com\n"
"\n"
-
"              See also --http1.1 and --http2. -2, --sslv2  requires  that  the\n"
+
"              See  also  --http1.1  and --http2. -2, --sslv2 requires that the\n"
, stdout);
 fputs(
-
"              underlying  libcurl was built to support TLS. This option is mu-\n"
-
"              tually exclusive to -3, --sslv3 and -1,  --tlsv1  and  --tlsv1.1\n"
+
"              underlying libcurl was built to support TLS. This option is  mu-\n"
+
"              tually  exclusive  to  -3, --sslv3 and -1, --tlsv1 and --tlsv1.1\n"
"              and --tlsv1.2.\n"
"\n"
"       -3, --sslv3\n"
@@ -5616,7 +5717,7 @@ void hugehelp(void)
"              This option is global and does not need to be specified for each\n"
"              use of --next.\n"
"\n"
-
"              If --stderr is provided several times, the last set  value  will\n"
+
"              If  --stderr  is provided several times, the last set value will\n"
"              be used.\n"
"              Example:\n"
"               curl --stderr output.txt https://example.com\n"
@@ -5626,8 +5727,8 @@ void hugehelp(void)
"       --styled-output\n"
, stdout);
 fputs(
-
"              Enables  the automatic use of bold font styles when writing HTTP\n"
-
"              headers to the terminal. Use --no-styled-output to  switch  them\n"
+
"              Enables the automatic use of bold font styles when writing  HTTP\n"
+
"              headers  to  the terminal. Use --no-styled-output to switch them\n"
"              off.\n"
"\n"
"              Styled output requires a terminal that supports bold fonts. This\n"
@@ -5639,7 +5740,7 @@ void hugehelp(void)
"\n"
, stdout);
 fputs(
-
"              Providing --styled-output multiple times has  no  extra  effect.\n"
+
"              Providing  --styled-output  multiple  times has no extra effect.\n"
"              Disable it again with --no-styled-output.\n"
"\n"
"              Example:\n"
@@ -5648,11 +5749,11 @@ void hugehelp(void)
"              See also -I, --head and -v, --verbose. Added in 7.61.0.\n"
"\n"
"       --suppress-connect-headers\n"
-
"              When  -p, --proxytunnel is used and a CONNECT request is made do\n"
-
"              not output proxy CONNECT response headers. This option is  meant\n"
+
"              When -p, --proxytunnel is used and a CONNECT request is made  do\n"
+
"              not  output proxy CONNECT response headers. This option is meant\n"
, stdout);
 fputs(
-
"              to  be  used  with  -D, --dump-header or -i, --include which are\n"
+
"              to be used with -D, --dump-header or  -i,  --include  which  are\n"
"              used to show protocol headers in the output. It has no effect on\n"
"              debug  options  such as -v, --verbose or --trace, or any statis-\n"
"              tics.\n"
@@ -5669,36 +5770,42 @@ void hugehelp(void)
"              Added in 7.54.0.\n"
"\n"
"       --tcp-fastopen\n"
-
"              Enable use of TCP Fast Open (RFC7413).\n"
"\n"
-
"              Providing --tcp-fastopen multiple times  has  no  extra  effect.\n"
+
"              Enable use of TCP Fast Open (RFC 7413). TCP Fast Open is  a  TCP\n"
+
"              extension  that allows data to get sent earlier over the connec-\n"
+
"              tion (before the final handshake ACK) if the client  and  server\n"
+
, stdout);
+
 fputs(
+
"              have been connected previously.\n"
+
"\n"
+
"              Providing  --tcp-fastopen  multiple  times  has no extra effect.\n"
"              Disable it again with --no-tcp-fastopen.\n"
"\n"
"              Example:\n"
"               curl --tcp-fastopen https://example.com\n"
"\n"
-
, stdout);
-
 fputs(
"              See also --false-start. Added in 7.49.0.\n"
"\n"
"       --tcp-nodelay\n"
-
"              Turn  on the TCP_NODELAY option. See the curl_easy_setopt(3) man\n"
+
"              Turn on the TCP_NODELAY option. See the curl_easy_setopt(3)  man\n"
"              page for details about this option.\n"
"\n"
-
"              Since 7.50.2, curl sets this option by default and you  need  to\n"
+
, stdout);
+
 fputs(
+
"              Since  7.50.2,  curl sets this option by default and you need to\n"
"              explicitly switch it off if you do not want it on.\n"
"\n"
-
"              Providing  --tcp-nodelay  multiple  times  has  no extra effect.\n"
+
"              Providing --tcp-nodelay multiple  times  has  no  extra  effect.\n"
"              Disable it again with --no-tcp-nodelay.\n"
"\n"
-
, stdout);
-
 fputs(
"              Example:\n"
"               curl --tcp-nodelay https://example.com\n"
"\n"
"              See also -N, --no-buffer.\n"
"\n"
"       -t, --telnet-option <opt=val>\n"
+
, stdout);
+
 fputs(
"              Pass options to the telnet protocol. Supported options are:\n"
"\n"
"              TTYPE=<term> Sets the terminal type.\n"
@@ -5709,62 +5816,62 @@ void hugehelp(void)
"\n"
"              -t, --telnet-option can be used several times in a command line\n"
"\n"
-
, stdout);
-
 fputs(
"              Example:\n"
"               curl -t TTYPE=vt100 telnet://example.com/\n"
"\n"
"              See also -K, --config.\n"
"       --tftp-blksize <value>\n"
+
, stdout);
+
 fputs(
"              (TFTP) Set TFTP BLKSIZE option (must be >512). This is the block\n"
"              size that curl will try to use when transferring data to or from\n"
"              a TFTP server. By default 512 bytes will be used.\n"
"\n"
-
"              If --tftp-blksize is provided several times, the last set  value\n"
+
"              If  --tftp-blksize is provided several times, the last set value\n"
"              will be used.\n"
"\n"
-
, stdout);
-
 fputs(
"              Example:\n"
"               curl --tftp-blksize 1024 tftp://example.com/file\n"
"\n"
"              See also --tftp-no-options.\n"
"\n"
"       --tftp-no-options\n"
+
, stdout);
+
 fputs(
"              (TFTP) Tells curl not to send TFTP options requests.\n"
"\n"
-
"              This  option  improves  interop with some legacy servers that do\n"
-
"              not acknowledge or properly implement TFTP  options.  When  this\n"
+
"              This option improves interop with some legacy  servers  that  do\n"
+
"              not  acknowledge  or  properly implement TFTP options. When this\n"
"              option is used --tftp-blksize is ignored.\n"
"\n"
-
, stdout);
-
 fputs(
-
"              Providing  --tftp-no-options multiple times has no extra effect.\n"
+
"              Providing --tftp-no-options multiple times has no extra  effect.\n"
"              Disable it again with --no-tftp-no-options.\n"
"\n"
"              Example:\n"
+
, stdout);
+
 fputs(
"               curl --tftp-no-options tftp://192.168.0.1/\n"
"\n"
"              See also --tftp-blksize. Added in 7.48.0.\n"
"\n"
"       -z, --time-cond <time>\n"
-
"              (HTTP FTP) Request a file that has been modified later than  the\n"
-
"              given  time  and date, or one that has been modified before that\n"
+
"              (HTTP  FTP) Request a file that has been modified later than the\n"
+
"              given time and date, or one that has been modified  before  that\n"
+
"              time.  The <date expression> can be all sorts of date strings or\n"
+
"              if it does not match any internal ones, it is taken as  a  file-\n"
, stdout);
 fputs(
-
"              time. The <date expression> can be all sorts of date strings  or\n"
-
"              if  it  does not match any internal ones, it is taken as a file-\n"
-
"              name and tries to get the modification date (mtime) from  <file>\n"
-
"              instead.  See  the curl_getdate(3) man pages for date expression\n"
+
"              name  and tries to get the modification date (mtime) from <file>\n"
+
"              instead. See the curl_getdate(3) man pages for  date  expression\n"
"              details.\n"
"\n"
"              Start the date expression with a dash (-) to make it request for\n"
"              a  document that is older than the given date/time, default is a\n"
-
, stdout);
-
 fputs(
"              document that is newer than the specified date/time.\n"
"\n"
"              If -z, --time-cond is provided several times, the last set value\n"
+
, stdout);
+
 fputs(
"              will be used.\n"
"\n"
"              Examples:\n"
@@ -5775,10 +5882,10 @@ void hugehelp(void)
"              See also --etag-compare and -R, --remote-time.\n"
"\n"
"       --tls-max <VERSION>\n"
+
"              (TLS) VERSION defines maximum supported TLS version. The minimum\n"
+
"              acceptable version  is  set  by  tlsv1.0,  tlsv1.1,  tlsv1.2  or\n"
, stdout);
 fputs(
-
"              (SSL) VERSION defines maximum supported TLS version. The minimum\n"
-
"              acceptable version  is  set  by  tlsv1.0,  tlsv1.1,  tlsv1.2  or\n"
"              tlsv1.3.\n"
"\n"
"              If  the  connection  is done without TLS, this option has no ef-\n"
@@ -5789,38 +5896,38 @@ void hugehelp(void)
"\n"
"              1.0    Use up to TLSv1.0.\n"
"              1.1    Use up to TLSv1.1.\n"
-
, stdout);
-
 fputs(
"              1.2    Use up to TLSv1.2.\n"
"              1.3    Use up to TLSv1.3.\n"
"\n"
-
"       If --tls-max is provided several times, the  last  set  value  will  be\n"
-
"       used.\n"
+
"              If --tls-max is provided several times, the last set value  will\n"
+
, stdout);
+
 fputs(
+
"              be used.\n"
"\n"
-
"       Examples:\n"
-
"        curl --tls-max 1.2 https://example.com\n"
-
"        curl --tls-max 1.3 --tlsv1.2 https://example.com\n"
+
"              Examples:\n"
+
"               curl --tls-max 1.2 https://example.com\n"
+
"               curl --tls-max 1.3 --tlsv1.2 https://example.com\n"
"\n"
-
"       See  also  --tlsv1.0, --tlsv1.1, --tlsv1.2 and --tlsv1.3. --tls-max re-\n"
-
"       quires that the underlying libcurl was built to support TLS.  Added  in\n"
-
"       7.54.0.\n"
+
"              See  also  --tlsv1.0, --tlsv1.1, --tlsv1.2 and --tlsv1.3. --tls-\n"
+
"              max requires that the underlying libcurl was  built  to  support\n"
+
"              TLS. Added in 7.54.0.\n"
"\n"
-
, stdout);
-
 fputs(
"       --tls13-ciphers <ciphersuite list>\n"
"              (TLS)  Specifies which cipher suites to use in the connection if\n"
+
, stdout);
+
 fputs(
"              it negotiates TLS 1.3. The list of ciphers suites  must  specify\n"
"              valid  ciphers.  Read up on TLS 1.3 cipher suite details on this\n"
"              URL:\n"
"\n"
-
"               https://curl.se/docs/ssl-ciphers.html\n"
+
"              https://curl.se/docs/ssl-ciphers.html\n"
"\n"
"              This option is currently used only when curl  is  built  to  use\n"
+
"              OpenSSL 1.1.1 or later or Schannel. If you are using a different\n"
+
"              SSL  backend  you can try setting TLS 1.3 cipher suites by using\n"
, stdout);
 fputs(
-
"              OpenSSL 1.1.1 or later. If you are using a different SSL backend\n"
-
"              you can try setting TLS 1.3 cipher suites by using the --ciphers\n"
-
"              option.\n"
+
"              the --ciphers option.\n"
"\n"
"              If --tls13-ciphers is provided several times, the last set value\n"
"              will be used.\n"
@@ -5828,69 +5935,70 @@ void hugehelp(void)
"              Example:\n"
"               curl --tls13-ciphers TLS_AES_128_GCM_SHA256 https://example.com\n"
"\n"
-
"              See also --ciphers and --curves. Added in 7.61.0.\n"
+
"              See also --ciphers, --curves and --proxy-tls13-ciphers. Added in\n"
+
"              7.61.0.\n"
"\n"
"       --tlsauthtype <type>\n"
+
"              Set TLS authentication type. Currently, the only  supported  op-\n"
, stdout);
 fputs(
-
"              Set TLS authentication type. Currently, the only  supported  op-\n"
"              tion  is  \"SRP\",  for  TLS-SRP  (RFC  5054).  If  --tlsuser  and\n"
"              --tlspassword are specified but --tlsauthtype is not, then  this\n"
"              option defaults to \"SRP\". This option works only if the underly-\n"
-
"              ing libcurl  is  built  with  TLS-SRP  support,  which  requires\n"
+
"              ing  libcurl  is  built  with  TLS-SRP  support,  which requires\n"
"              OpenSSL or GnuTLS with TLS-SRP support.\n"
"\n"
-
, stdout);
-
 fputs(
-
"              If  --tlsauthtype  is provided several times, the last set value\n"
+
"              If --tlsauthtype is provided several times, the last  set  value\n"
"              will be used.\n"
"\n"
+
, stdout);
+
 fputs(
"              Example:\n"
"               curl --tlsauthtype SRP https://example.com\n"
"\n"
"              See also --tlsuser.\n"
"\n"
"       --tlspassword <string>\n"
-
"              Set password for use with the TLS authentication  method  speci-\n"
+
"              Set  password  for use with the TLS authentication method speci-\n"
"              fied with --tlsauthtype. Requires that --tlsuser also be set.\n"
"\n"
"              This option does not work with TLS 1.3.\n"
"\n"
-
, stdout);
-
 fputs(
-
"              If  --tlspassword  is provided several times, the last set value\n"
+
"              If --tlspassword is provided several times, the last  set  value\n"
"              will be used.\n"
"\n"
"              Example:\n"
+
, stdout);
+
 fputs(
"               curl --tlspassword pwd --tlsuser user https://example.com\n"
"\n"
"              See also --tlsuser.\n"
"\n"
"       --tlsuser <name>\n"
-
"              Set username for use with the TLS authentication  method  speci-\n"
-
"              fied  with  --tlsauthtype.  Requires  that --tlspassword also is\n"
+
"              Set  username  for use with the TLS authentication method speci-\n"
+
"              fied with --tlsauthtype. Requires  that  --tlspassword  also  is\n"
"              set.\n"
"\n"
"              This option does not work with TLS 1.3.\n"
"\n"
-
, stdout);
-
 fputs(
-
"              If --tlsuser is provided several times, the last set value  will\n"
+
"              If  --tlsuser is provided several times, the last set value will\n"
"              be used.\n"
"              Example:\n"
+
, stdout);
+
 fputs(
"               curl --tlspassword pwd --tlsuser user https://example.com\n"
"\n"
"              See also --tlspassword.\n"
"\n"
"       --tlsv1.0\n"
-
"              (TLS)  Forces curl to use TLS version 1.0 or later when connect-\n"
+
"              (TLS) Forces curl to use TLS version 1.0 or later when  connect-\n"
"              ing to a remote TLS server.\n"
"\n"
-
"              In old versions of curl this  option  was  documented  to  allow\n"
-
, stdout);
-
 fputs(
+
"              In  old  versions  of  curl  this option was documented to allow\n"
"              _only_ TLS 1.0.  That behavior was inconsistent depending on the\n"
"              TLS library. Use --tls-max if you want to set a maximum TLS ver-\n"
+
, stdout);
+
 fputs(
"              sion.\n"
"\n"
"              Providing --tlsv1.0 multiple times has no extra effect.\n"
@@ -5901,12 +6009,12 @@ void hugehelp(void)
"              See also --tlsv1.3. Added in 7.34.0.\n"
"\n"
"       --tlsv1.1\n"
-
"              (TLS)  Forces curl to use TLS version 1.1 or later when connect-\n"
-
, stdout);
-
 fputs(
+
"              (TLS) Forces curl to use TLS version 1.1 or later when  connect-\n"
"              ing to a remote TLS server.\n"
"\n"
-
"              In old versions of curl this  option  was  documented  to  allow\n"
+
"              In  old  versions  of  curl  this option was documented to allow\n"
+
, stdout);
+
 fputs(
"              _only_ TLS 1.1.  That behavior was inconsistent depending on the\n"
"              TLS library. Use --tls-max if you want to set a maximum TLS ver-\n"
"              sion.\n"
@@ -5916,68 +6024,68 @@ void hugehelp(void)
"              Example:\n"
"               curl --tlsv1.1 https://example.com\n"
"\n"
-
, stdout);
-
 fputs(
"              See also --tlsv1.3 and --tls-max. Added in 7.34.0.\n"
"\n"
"       --tlsv1.2\n"
-
"              (TLS)  Forces curl to use TLS version 1.2 or later when connect-\n"
+
"              (TLS) Forces curl to use TLS version 1.2 or later when  connect-\n"
+
, stdout);
+
 fputs(
"              ing to a remote TLS server.\n"
"\n"
-
"              In old versions of curl this  option  was  documented  to  allow\n"
+
"              In  old  versions  of  curl  this option was documented to allow\n"
"              _only_ TLS 1.2.  That behavior was inconsistent depending on the\n"
"              TLS library. Use --tls-max if you want to set a maximum TLS ver-\n"
"              sion.\n"
"\n"
-
, stdout);
-
 fputs(
"              Providing --tlsv1.2 multiple times has no extra effect.\n"
"\n"
"              Example:\n"
"               curl --tlsv1.2 https://example.com\n"
"\n"
+
, stdout);
+
 fputs(
"              See also --tlsv1.3 and --tls-max. Added in 7.34.0.\n"
"\n"
"       --tlsv1.3\n"
-
"              (TLS)  Forces curl to use TLS version 1.3 or later when connect-\n"
+
"              (TLS) Forces curl to use TLS version 1.3 or later when  connect-\n"
"              ing to a remote TLS server.\n"
"\n"
-
"              If the connection is done without TLS, this option  has  no  ef-\n"
+
"              If  the  connection  is done without TLS, this option has no ef-\n"
"              fect. This includes QUIC-using (HTTP/3) transfers.\n"
"\n"
-
, stdout);
-
 fputs(
"              Note that TLS 1.3 is not supported by all TLS backends.\n"
"              Providing --tlsv1.3 multiple times has no extra effect.\n"
"\n"
+
, stdout);
+
 fputs(
"              Example:\n"
"               curl --tlsv1.3 https://example.com\n"
"\n"
"              See also --tlsv1.2 and --tls-max. Added in 7.52.0.\n"
"\n"
"       -1, --tlsv1\n"
-
"              (SSL)  Tells curl to use at least TLS version 1.x when negotiat-\n"
-
"              ing with a remote TLS server. That  means  TLS  version  1.0  or\n"
+
"              (TLS) Tells curl to use at least TLS version 1.x when  negotiat-\n"
+
"              ing  with  a  remote  TLS  server. That means TLS version 1.0 or\n"
"              higher\n"
"\n"
-
, stdout);
-
 fputs(
"              Providing -1, --tlsv1 multiple times has no extra effect.\n"
"\n"
"              Example:\n"
"               curl --tlsv1 https://example.com\n"
"\n"
-
"              See  also  --http1.1  and --http2. -1, --tlsv1 requires that the\n"
-
"              underlying libcurl was built to support TLS. This option is  mu-\n"
+
, stdout);
+
 fputs(
+
"              See also --http1.1 and --http2. -1, --tlsv1  requires  that  the\n"
+
"              underlying  libcurl was built to support TLS. This option is mu-\n"
"              tually exclusive to --tlsv1.1 and --tlsv1.2 and --tlsv1.3.\n"
"\n"
"       --tr-encoding\n"
"              (HTTP) Request a compressed Transfer-Encoding response using one\n"
-
, stdout);
-
 fputs(
"              of the algorithms curl supports, and uncompress the  data  while\n"
"              receiving it.\n"
"\n"
+
, stdout);
+
 fputs(
"              Providing  --tr-encoding  multiple  times  has  no extra effect.\n"
"              Disable it again with --no-tr-encoding.\n"
"\n"
@@ -5988,9 +6096,9 @@ void hugehelp(void)
"\n"
"       --trace-ascii <file>\n"
"              Enables a full trace dump of all incoming and outgoing data, in-\n"
+
"              cluding descriptive information, to the given output  file.  Use\n"
, stdout);
 fputs(
-
"              cluding  descriptive  information, to the given output file. Use\n"
"              \"-\" as filename to have the output sent to stdout.\n"
"\n"
"              This is similar to --trace, but leaves out the hex part and only\n"
@@ -6000,19 +6108,36 @@ void hugehelp(void)
"              This option is global and does not need to be specified for each\n"
"              use of --next.\n"
"\n"
+
"              If --trace-ascii is provided several times, the last  set  value\n"
, stdout);
 fputs(
-
"              If  --trace-ascii  is provided several times, the last set value\n"
"              will be used.\n"
"\n"
"              Example:\n"
"               curl --trace-ascii log.txt https://example.com\n"
"\n"
-
"              See also -v, --verbose and --trace. This option is mutually  ex-\n"
+
"              See  also -v, --verbose and --trace. This option is mutually ex-\n"
"              clusive to --trace and -v, --verbose.\n"
"\n"
+
"       --trace-ids\n"
+
"              Prepends the transfer and connection identifiers to  each  trace\n"
+
"              or verbose line that curl displays.\n"
+
"\n"
+
"              This option is global and does not need to be specified for each\n"
+
, stdout);
+
 fputs(
+
"              use of --next.\n"
+
"\n"
+
"              Providing  --trace-ids multiple times has no extra effect.  Dis-\n"
+
"              able it again with --no-trace-ids.\n"
+
"\n"
+
"              Example:\n"
+
"               curl --trace-ids --trace-ascii output https://example.com\n"
+
"\n"
+
"              See also --trace and -v, --verbose. Added in 8.2.0.\n"
+
"\n"
"       --trace-time\n"
-
"              Prepends  a  time  stamp to each trace or verbose line that curl\n"
+
"              Prepends a time stamp to each trace or verbose  line  that  curl\n"
"              displays.\n"
"\n"
, stdout);
@@ -6047,14 +6172,14 @@ void hugehelp(void)
 fputs(
"               curl --trace log.txt https://example.com\n"
"\n"
-
"              See also --trace-ascii and --trace-time. This option is mutually\n"
-
"              exclusive to -v, --verbose and --trace-ascii.\n"
+
"              See  also  --trace-ascii, --trace-ids and --trace-time. This op-\n"
+
"              tion is mutually exclusive to -v, --verbose and --trace-ascii.\n"
"\n"
"       --unix-socket <path>\n"
"              (HTTP) Connect through this Unix domain socket, instead of using\n"
"              the network.\n"
"\n"
-
"              If  --unix-socket  is provided several times, the last set value\n"
+
"              If --unix-socket is provided several times, the last  set  value\n"
"              will be used.\n"
"\n"
"              Example:\n"
@@ -6065,10 +6190,10 @@ void hugehelp(void)
"              See also --abstract-unix-socket. Added in 7.40.0.\n"
"\n"
"       -T, --upload-file <file>\n"
-
"              This transfers the specified local file to the  remote  URL.  If\n"
+
"              This  transfers  the  specified local file to the remote URL. If\n"
"              there is no file part in the specified URL, curl will append the\n"
"              local file name. NOTE that you must use a trailing / on the last\n"
-
"              directory  to really prove to Curl that there is no file name or\n"
+
"              directory to really prove to Curl that there is no file name  or\n"
, stdout);
 fputs(
"              curl will think that your last directory name is the remote file\n"
@@ -6095,7 +6220,7 @@ void hugehelp(void)
"\n"
"              When uploading to an SMTP server: the uploaded data  is  assumed\n"
"              to be RFC 5322 formatted. It has to feature the necessary set of\n"
-
"              headers and mail body formatted correctly by the  user  as  curl\n"
+
"              headers  and  mail  body formatted correctly by the user as curl\n"
"              will not transcode nor encode it further in any way.\n"
"\n"
"              -T, --upload-file can be used several times in a command line\n"
@@ -6110,8 +6235,8 @@ void hugehelp(void)
"              See also -G, --get and -I, --head.\n"
"\n"
"       --url-query <data>\n"
-
"              (all)  This  option adds a piece of data, usually a name + value\n"
-
"              pair, to the end of the URL query part. The syntax is  identical\n"
+
"              (all) This option adds a piece of data, usually a name  +  value\n"
+
"              pair,  to the end of the URL query part. The syntax is identical\n"
"              to that used for --data-urlencode with one extension:\n"
"\n"
, stdout);
@@ -6148,12 +6273,12 @@ void hugehelp(void)
"              will be used. Since 7.45.0 guessing can be disabled by setting a\n"
"              default protocol, see --proto-default for details.\n"
"\n"
-
"              To  control  where  this URL is written, use the -o, --output or\n"
+
"              To control where this URL is written, use the  -o,  --output  or\n"
, stdout);
 fputs(
"              the -O, --remote-name options.\n"
"\n"
-
"              WARNING: On Windows, particular file://  accesses  can  be  con-\n"
+
"              WARNING:  On  Windows,  particular  file:// accesses can be con-\n"
"              verted to network accesses by the operating system. Beware!\n"
"\n"
"              --url can be used several times in a command line\n"
@@ -6164,12 +6289,12 @@ void hugehelp(void)
"              See also -:, --next and -K, --config.\n"
"\n"
"       -B, --use-ascii\n"
-
"              (FTP  LDAP) Enable ASCII transfer. For FTP, this can also be en-\n"
+
"              (FTP LDAP) Enable ASCII transfer. For FTP, this can also be  en-\n"
, stdout);
 fputs(
-
"              forced by using a URL that  ends  with  \";type=A\".  This  option\n"
+
"              forced  by  using  a  URL  that ends with \";type=A\". This option\n"
"              causes data sent to stdout to be in text mode for win32 systems.\n"
-
"              Providing  -B,  --use-ascii  multiple times has no extra effect.\n"
+
"              Providing -B, --use-ascii multiple times has  no  extra  effect.\n"
"              Disable it again with --no-use-ascii.\n"
"\n"
"              Example:\n"
@@ -6205,11 +6330,11 @@ void hugehelp(void)
"\n"
, stdout);
 fputs(
-
"              If  you  simply  specify  the  user name, curl will prompt for a\n"
+
"              If you simply specify the user name,  curl  will  prompt  for  a\n"
"              password.\n"
"\n"
-
"              The user name and passwords are split up  on  the  first  colon,\n"
-
"              which  makes  it impossible to use a colon in the user name with\n"
+
"              The  user  name  and  passwords are split up on the first colon,\n"
+
"              which makes it impossible to use a colon in the user  name  with\n"
"              this option. The password can, still.\n"
"\n"
"              On systems where it works, curl will hide the given option argu-\n"
@@ -6220,18 +6345,18 @@ void hugehelp(void)
"              system  as  they  will  still  be  visible  for  a moment before\n"
"              cleared. Such sensitive data should be retrieved from a file in-\n"
"              stead or similar and never used in clear text in a command line.\n"
-
"              When  using  Kerberos  V5 with a Windows based server you should\n"
-
"              include the Windows domain name in the user name, in  order  for\n"
+
"              When using Kerberos V5 with a Windows based  server  you  should\n"
+
"              include  the  Windows domain name in the user name, in order for\n"
, stdout);
 fputs(
-
"              the  server  to successfully obtain a Kerberos Ticket. If you do\n"
+
"              the server to successfully obtain a Kerberos Ticket. If  you  do\n"
"              not, then the initial authentication handshake may fail.\n"
"\n"
-
"              When using NTLM, the user name can be specified  simply  as  the\n"
-
"              user  name,  without the domain, if there is a single domain and\n"
+
"              When  using  NTLM,  the user name can be specified simply as the\n"
+
"              user name, without the domain, if there is a single  domain  and\n"
"              forest in your setup for example.\n"
"\n"
-
"              To specify the domain name use either Down-Level Logon  Name  or\n"
+
"              To  specify  the domain name use either Down-Level Logon Name or\n"
, stdout);
 fputs(
"              UPN (User Principal Name) formats. For example, EXAMPLE\\user and\n"
@@ -6252,15 +6377,15 @@ void hugehelp(void)
"              See also -n, --netrc and -K, --config.\n"
"\n"
"       -v, --verbose\n"
-
"              Makes curl verbose during the operation.  Useful  for  debugging\n"
-
"              and  seeing  what's  going  on \"under the hood\". A line starting\n"
-
"              with '>' means \"header data\" sent by  curl,  '<'  means  \"header\n"
+
"              Makes  curl  verbose  during the operation. Useful for debugging\n"
+
"              and seeing what's going on \"under the  hood\".  A  line  starting\n"
+
"              with  '>'  means  \"header  data\" sent by curl, '<' means \"header\n"
, stdout);
 fputs(
-
"              data\"  received  by  curl  that is hidden in normal cases, and a\n"
+
"              data\" received by curl that is hidden in  normal  cases,  and  a\n"
"              line starting with '*' means additional info provided by curl.\n"
"\n"
-
"              If you only want HTTP headers in the output,  -i,  --include  or\n"
+
"              If  you  only  want HTTP headers in the output, -i, --include or\n"
"              -D, --dump-header might be more suitable options.\n"
"\n"
"              If you think this option still does not give you enough details,\n"
@@ -6271,7 +6396,7 @@ void hugehelp(void)
"              This option is global and does not need to be specified for each\n"
"              use of --next.\n"
"\n"
-
"              Providing  -v,  --verbose  multiple  times  has no extra effect.\n"
+
"              Providing -v, --verbose multiple  times  has  no  extra  effect.\n"
"              Disable it again with --no-verbose.\n"
"\n"
"              Example:\n"
@@ -6299,8 +6424,8 @@ void hugehelp(void)
"                     Support for the Alt-Svc: header is provided.\n"
"\n"
"              AsynchDNS\n"
-
"                     This curl uses asynchronous name  resolves.  Asynchronous\n"
-
"                     name  resolves can be done using either the c-ares or the\n"
+
"                     This  curl  uses asynchronous name resolves. Asynchronous\n"
+
"                     name resolves can be done using either the c-ares or  the\n"
"                     threaded resolver backends.\n"
"\n"
"              brotli Support for automatic brotli compression over HTTP(S).\n"
@@ -6388,34 +6513,34 @@ void hugehelp(void)
"\n"
, stdout);
 fputs(
-
"       Example:\n"
-
"        curl --version\n"
+
"              Example:\n"
+
"               curl --version\n"
"\n"
-
"       See also -h, --help and -M, --manual.\n"
+
"              See also -h, --help and -M, --manual.\n"
"\n"
"       -w, --write-out <format>\n"
"              Make curl display information on stdout after a completed trans-\n"
-
"              fer. The format is a string that may contain  plain  text  mixed\n"
-
"              with  any  number of variables. The format can be specified as a\n"
-
"              literal \"string\", or you can have curl read the  format  from  a\n"
+
"              fer.  The  format  is a string that may contain plain text mixed\n"
+
"              with any number of variables. The format can be specified  as  a\n"
+
"              literal  \"string\",  or  you can have curl read the format from a\n"
, stdout);
 fputs(
-
"              file  with  \"@filename\" and to tell curl to read the format from\n"
+
"              file with \"@filename\" and to tell curl to read the  format  from\n"
"              stdin you write \"@-\".\n"
"\n"
-
"              The variables present in the output format will  be  substituted\n"
-
"              by  the  value or text that curl thinks fit, as described below.\n"
-
"              All variables are specified as %{variable_name} and to output  a\n"
-
"              normal  % you just write them as %%. You can output a newline by\n"
+
"              The  variables  present in the output format will be substituted\n"
+
"              by the value or text that curl thinks fit, as  described  below.\n"
+
"              All  variables are specified as %{variable_name} and to output a\n"
+
"              normal % you just write them as %%. You can output a newline  by\n"
, stdout);
 fputs(
"              using \\n, a carriage return with \\r and a tab space with \\t.\n"
"\n"
-
"              The output will be written to standard output, but this  can  be\n"
+
"              The  output  will be written to standard output, but this can be\n"
"              switched to standard error by using %{stderr}.\n"
"\n"
-
"              Output  HTTP  headers  from  the  most  recent  request by using\n"
-
"              %header{name} where name is the case  insensitive  name  of  the\n"
+
"              Output HTTP headers  from  the  most  recent  request  by  using\n"
+
"              %header{name}  where  name  is  the case insensitive name of the\n"
"              header (without the trailing colon). The header contents are ex-\n"
, stdout);
 fputs(
@@ -6448,19 +6573,19 @@ void hugehelp(void)
"                             7.75.0)\n"
"\n"
"              filename_effective\n"
-
"                             The ultimate filename that curl  writes  out  to.\n"
-
"                             This  is only meaningful if curl is told to write\n"
-
"                             to a file  with  the  -O,  --remote-name  or  -o,\n"
+
"                             The  ultimate  filename  that curl writes out to.\n"
+
"                             This is only meaningful if curl is told to  write\n"
+
"                             to  a  file  with  the  -O,  --remote-name or -o,\n"
, stdout);
 fputs(
-
"                             --output  option. It's most useful in combination\n"
+
"                             --output option. It's most useful in  combination\n"
"                             with the -J, --remote-header-name option.\n"
"\n"
"              ftp_entry_path The initial path curl ended up in when logging on\n"
"                             to the remote FTP server.\n"
"\n"
"              header_json    A JSON object with all HTTP response headers from\n"
-
"                             the recent transfer. Values are provided  as  ar-\n"
+
"                             the  recent  transfer. Values are provided as ar-\n"
, stdout);
 fputs(
"                             rays, since in the case of multiple headers there\n"
@@ -6510,8 +6635,8 @@ void hugehelp(void)
, stdout);
 fputs(
"              num_headers    The number of response headers in the most recent\n"
-
"                             request (restarted at each redirect).  Note  that\n"
-
"                             the  status  line  IS  NOT  a  header.  (Added in\n"
+
"                             request  (restarted  at each redirect). Note that\n"
+
"                             the status  line  IS  NOT  a  header.  (Added  in\n"
"                             7.73.0)\n"
"\n"
"              num_redirects  Number of redirects that were followed in the re-\n"
@@ -6549,37 +6674,37 @@ void hugehelp(void)
"              response_code  The numerical response code that was found in the\n"
"                             last transfer (formerly known as \"http_code\").\n"
"\n"
-
"              scheme         The URL scheme (sometimes called  protocol)  that\n"
+
"              scheme         The  URL  scheme (sometimes called protocol) that\n"
"                             was effectively used. (Added in 7.52.0)\n"
"\n"
, stdout);
 fputs(
-
"              size_download  The  total  amount of bytes that were downloaded.\n"
+
"              size_download  The total amount of bytes that  were  downloaded.\n"
"                             This is the size of the body/data that was trans-\n"
"                             ferred, excluding headers.\n"
"\n"
"              size_header    The total amount of bytes of the downloaded head-\n"
"                             ers.\n"
"\n"
-
"              size_request   The total amount of bytes that were sent  in  the\n"
+
"              size_request   The  total  amount of bytes that were sent in the\n"
"                             HTTP request.\n"
"\n"
, stdout);
 fputs(
-
"              size_upload    The  total  amount  of  bytes that were uploaded.\n"
+
"              size_upload    The total amount of  bytes  that  were  uploaded.\n"
"                             This is the size of the body/data that was trans-\n"
"                             ferred, excluding headers.\n"
"\n"
"              speed_download The average download speed that curl measured for\n"
"                             the complete download. Bytes per second.\n"
"\n"
-
"              speed_upload   The average upload speed that curl  measured  for\n"
+
"              speed_upload   The  average  upload speed that curl measured for\n"
, stdout);
 fputs(
"                             the complete upload. Bytes per second.\n"
"\n"
"              ssl_verify_result\n"
-
"                             The  result of the SSL peer certificate verifica-\n"
+
"                             The result of the SSL peer certificate  verifica-\n"
"                             tion that was requested. 0 means the verification\n"
"                             was successful.\n"
"\n"
@@ -6606,14 +6731,14 @@ void hugehelp(void)
"                             was completed.\n"
"\n"
"              time_namelookup\n"
-
"                             The time, in seconds, it took from the start  un-\n"
+
"                             The  time, in seconds, it took from the start un-\n"
"                             til the name resolving was completed.\n"
"\n"
"              time_pretransfer\n"
, stdout);
 fputs(
-
"                             The  time, in seconds, it took from the start un-\n"
-
"                             til the file transfer was just  about  to  begin.\n"
+
"                             The time, in seconds, it took from the start  un-\n"
+
"                             til  the  file  transfer was just about to begin.\n"
"                             This includes all pre-transfer commands and nego-\n"
"                             tiations that are specific to the particular pro-\n"
"                             tocol(s) involved.\n"
@@ -6622,25 +6747,25 @@ void hugehelp(void)
, stdout);
 fputs(
"                             steps including name lookup, connect, pretransfer\n"
-
"                             and  transfer  before  the  final transaction was\n"
-
"                             started. time_redirect shows the complete  execu-\n"
+
"                             and transfer before  the  final  transaction  was\n"
+
"                             started.  time_redirect shows the complete execu-\n"
"                             tion time for multiple redirections.\n"
"\n"
"              time_starttransfer\n"
-
"                             The  time, in seconds, it took from the start un-\n"
-
"                             til the first byte was just about  to  be  trans-\n"
+
"                             The time, in seconds, it took from the start  un-\n"
+
"                             til  the  first  byte was just about to be trans-\n"
, stdout);
 fputs(
-
"                             ferred.  This  includes time_pretransfer and also\n"
-
"                             the time the server needed to calculate  the  re-\n"
+
"                             ferred. This includes time_pretransfer  and  also\n"
+
"                             the  time  the server needed to calculate the re-\n"
"                             sult.\n"
"\n"
-
"              time_total     The  total time, in seconds, that the full opera-\n"
+
"              time_total     The total time, in seconds, that the full  opera-\n"
"                             tion lasted.\n"
"\n"
"              url            The URL that was fetched. (Added in 7.75.0)\n"
"\n"
-
"              url.scheme     The scheme part of  the  URL  that  was  fetched.\n"
+
"              url.scheme     The  scheme  part  of  the  URL that was fetched.\n"
, stdout);
 fputs(
"                             (Added in 8.1.0)\n"
@@ -6659,9 +6784,9 @@ void hugehelp(void)
 fputs(
"                             in 8.1.0)\n"
"\n"
-
"              url.port       The  port  number of the URL that was fetched. If\n"
-
"                             no port number was specified, but the URL  scheme\n"
-
"                             is  known,  that  scheme's default port number is\n"
+
"              url.port       The port number of the URL that was  fetched.  If\n"
+
"                             no  port number was specified, but the URL scheme\n"
+
"                             is known, that scheme's default  port  number  is\n"
"                             shown. (Added in 8.1.0)\n"
"\n"
"              url.path       The path part of the URL that was fetched. (Added\n"
@@ -6694,10 +6819,10 @@ void hugehelp(void)
"\n"
, stdout);
 fputs(
-
"              urle.host      The host part of the effective  (last)  URL  that\n"
+
"              urle.host      The  host  part  of the effective (last) URL that\n"
"                             was fetched. (Added in 8.1.0)\n"
"\n"
-
"              urle.port      The  port number of the effective (last) URL that\n"
+
"              urle.port      The port number of the effective (last) URL  that\n"
"                             was fetched. If no port number was specified, but\n"
"                             the  URL  scheme  is known, that scheme's default\n"
"                             port number is shown. (Added in 8.1.0)\n"
@@ -6719,7 +6844,7 @@ void hugehelp(void)
"                             was fetched. (Added in 8.1.0)\n"
"\n"
"              urlnum         The URL index number of this transfer, 0-indexed.\n"
-
"                             De-globbed  URLs  share  the same index number as\n"
+
"                             De-globbed URLs share the same  index  number  as\n"
"                             the origin globbed URL. (Added in 7.75.0)\n"
"\n"
"              url_effective  The URL that was fetched last. This is most mean-\n"
@@ -6737,10 +6862,10 @@ void hugehelp(void)
"              See also -v, --verbose and -I, --head.\n"
"\n"
"       --xattr\n"
-
"              When  saving  output  to a file, this option tells curl to store\n"
+
"              When saving output to a file, this option tells  curl  to  store\n"
, stdout);
 fputs(
-
"              certain file metadata in extended  file  attributes.  Currently,\n"
+
"              certain  file  metadata  in extended file attributes. Currently,\n"
"              the URL is stored in the xdg.origin.url attribute and, for HTTP,\n"
"              the content type is stored in the mime_type  attribute.  If  the\n"
"              file  system  does not support extended attributes, a warning is\n"
@@ -6804,8 +6929,8 @@ void hugehelp(void)
"              http://somewhere.example.com accesses the target URL through the\n"
"              proxy.\n"
"\n"
-
"              The list of host names can also  be  include  numerical  IP  ad-\n"
-
"              dresses,  and IPv6 versions should then be given without enclos-\n"
+
"              The  list  of  host  names  can also be include numerical IP ad-\n"
+
"              dresses, and IPv6 versions should then be given without  enclos-\n"
"              ing brackets.\n"
"\n"
"              Since 7.86.0, IP addresses can be specified using CIDR notation:\n"
@@ -6852,7 +6977,7 @@ void hugehelp(void)
"              ssl\n"
"\n"
"       HOME <dir>\n"
-
"              If set, this is used to find the home  directory  when  that  is\n"
+
"              If  set,  this  is  used to find the home directory when that is\n"
"              needed. Like when looking for the default .curlrc. CURL_HOME and\n"
"              XDG_CONFIG_HOME have preference.\n"
"\n"
@@ -6883,25 +7008,25 @@ void hugehelp(void)
, stdout);
 fputs(
"              work analyzing tools such as Wireshark. This works with the fol-\n"
-
"              lowing  TLS  backends: OpenSSL, libressl, BoringSSL, GnuTLS, NSS\n"
+
"              lowing TLS backends: OpenSSL, libressl, BoringSSL,  GnuTLS,  NSS\n"
"              and wolfSSL.\n"
"\n"
"       USERPROFILE <dir>\n"
-
"              On Windows, this variable is used when trying to find  the  home\n"
-
"              directory.  If  the  other,  primary, variable are all unset. If\n"
+
"              On  Windows,  this variable is used when trying to find the home\n"
+
"              directory. If the other, primary, variable  are  all  unset.  If\n"
"              set, curl will use the path \"$USERPROFILE\\Application Data\".\n"
"\n"
"       XDG_CONFIG_HOME <dir>\n"
, stdout);
 fputs(
-
"              If CURL_HOME is not set, this variable is checked  when  looking\n"
+
"              If  CURL_HOME  is not set, this variable is checked when looking\n"
"              for a default .curlrc file.\n"
"\n"
"PROXY PROTOCOL PREFIXES\n"
-
"       The  proxy string may be specified with a protocol:// prefix to specify\n"
+
"       The proxy string may be specified with a protocol:// prefix to  specify\n"
"       alternative proxy protocols.\n"
"\n"
-
"       If no protocol is specified in the proxy string or if the  string  does\n"
+
"       If  no  protocol is specified in the proxy string or if the string does\n"
"       not match a supported one, the proxy will be treated as an HTTP proxy.\n"
"\n"
"       The supported proxy protocol prefixes are as follows:\n"
@@ -6909,7 +7034,7 @@ void hugehelp(void)
"       http://\n"
, stdout);
 fputs(
-
"              Makes  it use it as an HTTP proxy. The default if no scheme pre-\n"
+
"              Makes it use it as an HTTP proxy. The default if no scheme  pre-\n"
"              fix is used.\n"
"\n"
"       https://\n"
@@ -6930,11 +7055,11 @@ void hugehelp(void)
"EXIT CODES\n"
, stdout);
 fputs(
-
"       There are a bunch of different error codes and their corresponding  er-\n"
-
"       ror  messages  that  may  appear under error conditions. At the time of\n"
+
"       There  are a bunch of different error codes and their corresponding er-\n"
+
"       ror messages that may appear under error conditions.  At  the  time  of\n"
"       this writing, the exit codes are:\n"
"\n"
-
"       0      Success. The operation completed successfully according  to  the\n"
+
"       0      Success.  The  operation completed successfully according to the\n"
"              instructions.\n"
"\n"
"       1      Unsupported protocol. This build of curl has no support for this\n"
@@ -6951,10 +7076,10 @@ void hugehelp(void)
"              To make curl able to do this, you probably need another build of\n"
"              libcurl.\n"
"\n"
-
"       5      Could  not  resolve proxy. The given proxy host could not be re-\n"
+
"       5      Could not resolve proxy. The given proxy host could not  be  re-\n"
"              solved.\n"
"\n"
-
"       6      Could not resolve host. The given remote host could not  be  re-\n"
+
"       6      Could  not  resolve host. The given remote host could not be re-\n"
, stdout);
 fputs(
"              solved.\n"
@@ -6963,15 +7088,15 @@ void hugehelp(void)
"\n"
"       8      Weird server reply. The server sent data curl could not parse.\n"
"\n"
-
"       9      FTP  access  denied. The server denied login or denied access to\n"
-
"              the particular resource or directory you wanted to  reach.  Most\n"
-
"              often  you tried to change to a directory that does not exist on\n"
+
"       9      FTP access denied. The server denied login or denied  access  to\n"
+
"              the  particular  resource or directory you wanted to reach. Most\n"
+
"              often you tried to change to a directory that does not exist  on\n"
"              the server.\n"
"\n"
-
"       10     FTP accept failed. While waiting for the server to connect  back\n"
+
"       10     FTP  accept failed. While waiting for the server to connect back\n"
, stdout);
 fputs(
-
"              when  an active FTP session is used, an error code was sent over\n"
+
"              when an active FTP session is used, an error code was sent  over\n"
"              the control connection or similar.\n"
"\n"
"       11     FTP weird PASS reply. Curl could not parse the reply sent to the\n"
@@ -6985,7 +7110,7 @@ void hugehelp(void)
"\n"
, stdout);
 fputs(
-
"       14     FTP  weird  227  format.  Curl  could not parse the 227-line the\n"
+
"       14     FTP weird 227 format. Curl could  not  parse  the  227-line  the\n"
"              server sent.\n"
"\n"
"       15     FTP cannot use host. Could not resolve the host IP we got in the\n"
@@ -7006,16 +7131,16 @@ void hugehelp(void)
"              lar) command failed.\n"
"\n"
"       21     FTP quote error. A quote command returned error from the server.\n"
-
"       22     HTTP  page not retrieved. The requested URL was not found or re-\n"
-
"              turned another error with the  HTTP  error  code  being  400  or\n"
+
"       22     HTTP page not retrieved. The requested URL was not found or  re-\n"
+
"              turned  another  error  with  the  HTTP  error code being 400 or\n"
, stdout);
 fputs(
"              above. This return code only appears if -f, --fail is used.\n"
"\n"
-
"       23     Write  error. Curl could not write data to a local filesystem or\n"
+
"       23     Write error. Curl could not write data to a local filesystem  or\n"
"              similar.\n"
"\n"
-
"       25     FTP could not STOR file. The server denied the  STOR  operation,\n"
+
"       25     FTP  could  not STOR file. The server denied the STOR operation,\n"
"              used for FTP uploading.\n"
"\n"
"       26     Read error. Various reading problems.\n"
@@ -7060,7 +7185,7 @@ void hugehelp(void)
"\n"
"       43     Internal error. A function was called with a bad parameter.\n"
"\n"
-
"       45     Interface  error.  A  specified  outgoing interface could not be\n"
+
"       45     Interface error. A specified outgoing  interface  could  not  be\n"
"              used.\n"
"\n"
"       47     Too many redirects. When following redirects, curl hit the maxi-\n"
@@ -7182,11 +7307,11 @@ void hugehelp(void)
"              ing ones are meant to never change.\n"
"\n"
"BUGS\n"
-
"       If  you  experience  any  problems  with  curl,  submit an issue in the\n"
+
"       If you experience any problems  with  curl,  submit  an  issue  in  the\n"
"       project's bug tracker on GitHub: https://github.com/curl/curl/issues\n"
"\n"
"AUTHORS / CONTRIBUTORS\n"
-
"       Daniel Stenberg is the main author, but the whole list of  contributors\n"
+
"       Daniel  Stenberg is the main author, but the whole list of contributors\n"
"       is found in the separate THANKS file.\n"
"\n"
"WWW\n"
@@ -7208,5514 +7333,5615 @@ void hugehelp(void)
#include "memdebug.h" /* keep this as LAST include */
static const unsigned char hugehelpgz[] = {
  /* This mumbo-jumbo is the huge help text compressed with gzip.
-
     Thanks to this operation, the size of this data shrank from 265397
-
     to 66058 bytes. You can disable the use of compressed help
+
     Thanks to this operation, the size of this data shrank from 270734
+
     to 67260 bytes. You can disable the use of compressed help
     texts by NOT passing -c to the mkhelp.pl tool. */
  0x1f, 0x8b, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0xec, 0xfd,
-
  0x7b, 0x7b, 0xdb, 0xc6, 0xd5, 0x2f, 0x0c, 0xff, 0x9f, 0x4f, 0x81, 0xcd,
-
  0xbe, 0xdd, 0x92, 0x5a, 0x82, 0x3a, 0xf9, 0x14, 0xc5, 0xc9, 0x13, 0x45,
-
  0x56, 0x62, 0xb7, 0xb6, 0xa5, 0x9a, 0x72, 0x92, 0xde, 0x4d, 0x2e, 0x5f,
-
  0x20, 0x09, 0x4a, 0x88, 0x49, 0x80, 0x05, 0x40, 0xc9, 0x4a, 0x77, 0xdf,
-
  0xcf, 0xfe, 0xae, 0xe3, 0xcc, 0x00, 0x33, 0xa0, 0x44, 0x59, 0xae, 0xef,
-
  0x7b, 0xbf, 0x4f, 0x0f, 0x96, 0x44, 0x02, 0x73, 0x5c, 0xb3, 0x66, 0x1d,
-
  0x7f, 0x2b, 0x8a, 0x6e, 0xfa, 0xcf, 0x3b, 0xfa, 0xff, 0x3b, 0xf8, 0x0f,
-
  0xfc, 0xfc, 0x22, 0x8a, 0x4e, 0xcb, 0xe2, 0xb7, 0x74, 0x5c, 0x87, 0x9f,
-
  0x7d, 0xf7, 0xee, 0xff, 0x44, 0xfc, 0x5f, 0x78, 0xe7, 0x17, 0xf8, 0xf9,
-
  0xc5, 0xca, 0xb6, 0xb7, 0x23, 0xfb, 0xc2, 0xff, 0x79, 0xb7, 0x15, 0xdd,
-
  0xf4, 0xc2, 0xff, 0x89, 0x36, 0xe9, 0x85, 0x77, 0xd2, 0xc3, 0x53, 0xfc,
-
  0xfd, 0xdd, 0xbb, 0xd5, 0x9d, 0xfc, 0x82, 0xa3, 0xc2, 0x7f, 0xb6, 0xf1,
-
  0xbd, 0x5f, 0xde, 0xe1, 0xaf, 0xf0, 0xc9, 0x17, 0x5f, 0xbc, 0x3e, 0x7c,
-
  0x75, 0xac, 0xaf, 0x8e, 0x97, 0xe5, 0x2c, 0x8a, 0xa3, 0xba, 0x4c, 0xf2,
-
  0x6a, 0x9a, 0x96, 0x51, 0x12, 0xbd, 0x7d, 0xf3, 0xf2, 0x8b, 0x2f, 0x86,
-
  0x7f, 0x7f, 0x7d, 0x72, 0x3a, 0x7c, 0x31, 0x6c, 0x3c, 0xf6, 0x8f, 0x62,
-
  0x51, 0x67, 0x45, 0x5e, 0xc1, 0xf0, 0xe1, 0xa1, 0xea, 0xd7, 0x2f, 0xbe,
-
  0x78, 0x76, 0x3c, 0x3c, 0x7a, 0xf3, 0xe2, 0xf4, 0xec, 0xc5, 0xc9, 0xeb,
-
  0xc6, 0x93, 0x51, 0x56, 0x45, 0xd0, 0x54, 0x5d, 0x14, 0xb3, 0x68, 0x5a,
-
  0x94, 0xa6, 0xf9, 0x32, 0xcb, 0xcf, 0xa3, 0x49, 0x52, 0x27, 0xd1, 0xb4,
-
  0x2c, 0xe6, 0x11, 0x7e, 0x53, 0xc0, 0x73, 0x55, 0x5a, 0x5e, 0xa6, 0xe5,
-
  0x20, 0x7a, 0x51, 0x47, 0xd5, 0x72, 0xb1, 0x28, 0xca, 0xba, 0xd2, 0xe6,
-
  0xea, 0x8b, 0xb4, 0x4a, 0xa3, 0x45, 0x59, 0xd4, 0xc5, 0xb8, 0x98, 0x55,
-
  0x07, 0xd1, 0xb3, 0x17, 0x47, 0x67, 0xfd, 0xe8, 0xfb, 0x17, 0x2f, 0x8f,
-
  0xe1, 0xdf, 0xb3, 0x53, 0xfa, 0x67, 0xd8, 0x8f, 0x7e, 0x38, 0x39, 0x7d,
-
  0x7e, 0xfc, 0x46, 0x7f, 0xc2, 0x07, 0xd1, 0xf3, 0x33, 0xfc, 0x96, 0x7e,
-
  0x0c, 0xfb, 0xda, 0xdc, 0x8b, 0x57, 0x87, 0xf8, 0x21, 0xfe, 0xc0, 0x67,
-
  0x5e, 0x3e, 0xa3, 0x3f, 0xf1, 0x07, 0xfc, 0xf9, 0xea, 0x6f, 0x67, 0xd0,
-
  0xf4, 0xe9, 0xc9, 0xe9, 0x3e, 0xff, 0x0b, 0x1f, 0xbd, 0x39, 0x7b, 0x75,
-
  0xca, 0xff, 0xd2, 0x1f, 0x43, 0xf8, 0x63, 0x78, 0x74, 0x6a, 0x9a, 0x1b,
-
  0xd2, 0x08, 0x86, 0xaf, 0xbe, 0xa3, 0x7f, 0x86, 0xf8, 0x2f, 0x7f, 0x40,
-
  0x63, 0x3a, 0x3b, 0x7e, 0xf9, 0xfa, 0x18, 0x5a, 0x3c, 0xa3, 0xa7, 0x7e,
-
  0x1a, 0x46, 0x49, 0x3e, 0x81, 0x1f, 0xc3, 0x41, 0x74, 0x76, 0x91, 0x46,
-
  0xe3, 0x62, 0x3e, 0xc7, 0x0f, 0x60, 0xad, 0xb4, 0xb9, 0x49, 0x5a, 0x65,
-
  0xe7, 0x79, 0x3a, 0xc1, 0x55, 0xb9, 0x2a, 0xca, 0xf7, 0xd1, 0x55, 0x56,
-
  0x5f, 0x14, 0xcb, 0x3a, 0x5a, 0xc2, 0x0a, 0x45, 0x59, 0x5e, 0xa7, 0x65,
-
  0x32, 0xc6, 0x2d, 0x18, 0x7c, 0xd1, 0x58, 0xee, 0x62, 0x0a, 0x6b, 0x5b,
-
  0xc1, 0x42, 0x8e, 0x96, 0xd5, 0xac, 0x48, 0x26, 0xf0, 0x01, 0xbe, 0x32,
-
  0x5d, 0xce, 0x60, 0xe5, 0xb3, 0xf1, 0xfb, 0x2a, 0x9a, 0x65, 0xef, 0x69,
-
  0x15, 0x3f, 0x5c, 0xeb, 0x0a, 0xf7, 0xb9, 0xd1, 0x64, 0x09, 0x2b, 0x9c,
-
  0xc7, 0x66, 0xb9, 0xb3, 0x71, 0x82, 0x1d, 0xd0, 0xb2, 0x46, 0xcb, 0x05,
-
  0xb6, 0xd6, 0xa7, 0x35, 0x8c, 0x16, 0x45, 0x05, 0x2f, 0x0d, 0x87, 0x2f,
-
  0x61, 0xe4, 0x79, 0x9e, 0xd2, 0x38, 0xaa, 0x3e, 0xfc, 0x51, 0xbc, 0xcf,
-
  0x52, 0xf8, 0x65, 0x9a, 0xcd, 0xd2, 0x88, 0x77, 0xda, 0x34, 0x87, 0x14,
-
  0x55, 0xa6, 0xd5, 0x72, 0x9e, 0xd2, 0xdc, 0xe7, 0x45, 0x99, 0x0e, 0xa2,
-
  0xc3, 0x2a, 0xba, 0x2e, 0x96, 0x30, 0xb7, 0xd9, 0x0c, 0x76, 0x3e, 0x8d,
-
  0x46, 0xe9, 0xac, 0xb8, 0xea, 0xe3, 0x4e, 0x47, 0xf9, 0x72, 0x3e, 0x82,
-
  0x57, 0x60, 0xf8, 0xd3, 0x34, 0xa9, 0x97, 0xf0, 0x2a, 0x3d, 0xa6, 0xcd,
-
  0xcd, 0x13, 0x98, 0x05, 0xbc, 0x5b, 0x46, 0x17, 0x29, 0xcc, 0xb2, 0x5a,
-
  0x64, 0xed, 0x95, 0x00, 0xba, 0x5b, 0x14, 0x57, 0x69, 0x09, 0x6b, 0x38,
-
  0xba, 0x8e, 0x60, 0xda, 0x23, 0xa6, 0x47, 0x24, 0xc2, 0x28, 0x81, 0x0e,
-
  0x0d, 0x29, 0xc6, 0x65, 0x3a, 0x4b, 0x6a, 0x78, 0xce, 0x74, 0x35, 0x80,
-
  0xfd, 0x4c, 0x53, 0x6d, 0x4e, 0x5e, 0xdd, 0xdc, 0xdf, 0xa2, 0x97, 0x27,
-
  0x69, 0x9d, 0x64, 0xb3, 0x0a, 0xba, 0xc3, 0xf3, 0x21, 0xcf, 0xe0, 0x36,
-
  0xe2, 0x51, 0x88, 0xa2, 0xea, 0x3a, 0xaf, 0x93, 0x0f, 0xd4, 0xbd, 0x90,
-
  0x6a, 0x3c, 0x49, 0x17, 0x69, 0x3e, 0x49, 0xf3, 0x7a, 0x10, 0xfd, 0x1d,
-
  0xa6, 0x3b, 0xcd, 0x60, 0x01, 0x12, 0x69, 0x07, 0xba, 0x85, 0xbd, 0x1e,
-
  0x97, 0x19, 0x1d, 0x28, 0x6d, 0x2e, 0xcb, 0xa3, 0x37, 0xdf, 0x1f, 0x45,
-
  0xfb, 0x5f, 0x3e, 0x79, 0x64, 0xa7, 0x85, 0xef, 0x8e, 0x93, 0x1c, 0x26,
-
  0x9b, 0x8e, 0xb3, 0xe9, 0x75, 0x34, 0x5f, 0xce, 0xea, 0x6c, 0x01, 0x4b,
-
  0x8d, 0x47, 0x10, 0x4f, 0xd0, 0x22, 0x81, 0xe3, 0x82, 0x4b, 0x46, 0x1f,
-
  0xd0, 0xb4, 0xaf, 0xca, 0xac, 0xc6, 0x93, 0x46, 0xdf, 0xc1, 0xe0, 0x52,
-
  0x7b, 0x9e, 0x90, 0xa2, 0xa0, 0x9f, 0x11, 0x10, 0x12, 0x2c, 0x2e, 0x6e,
-
  0xca, 0x3f, 0x97, 0x05, 0x3d, 0x8c, 0xeb, 0x8f, 0x73, 0x49, 0x2a, 0x18,
-
  0xc8, 0xc1, 0x17, 0x96, 0xb7, 0xf4, 0x2e, 0xea, 0x7a, 0x71, 0xb0, 0xbd,
-
  0x5d, 0x65, 0x75, 0x3a, 0xf8, 0x57, 0x91, 0xa7, 0xfd, 0xfa, 0xaa, 0xe8,
-
  0xd7, 0x17, 0x65, 0x9a, 0xfe, 0x7b, 0x00, 0x54, 0xdc, 0x33, 0xcf, 0xc2,
-
  0x68, 0xae, 0x65, 0xb8, 0xe7, 0x29, 0x9c, 0xe5, 0xf4, 0x9f, 0xcb, 0x34,
-
  0xc7, 0x7e, 0x60, 0x74, 0xc9, 0x6c, 0x71, 0x91, 0xc0, 0xfe, 0xa6, 0x40,
-
  0x90, 0x78, 0xe0, 0x81, 0x66, 0x70, 0xac, 0xcb, 0x0a, 0xfb, 0xfe, 0xc7,
-
  0xaf, 0x81, 0x6e, 0xa7, 0xd4, 0x2b, 0xfc, 0x3b, 0x48, 0x3f, 0x24, 0x73,
-
  0x98, 0x32, 0x76, 0xb6, 0x8d, 0x64, 0xf6, 0x8f, 0xdd, 0x78, 0x77, 0x67,
-
  0xe7, 0xd7, 0x41, 0xfd, 0xa1, 0xee, 0xdd, 0xf2, 0x8d, 0x9d, 0x1d, 0xe7,
-
  0x1d, 0x7c, 0x78, 0x13, 0x57, 0x22, 0x9a, 0x01, 0x1d, 0xe1, 0x00, 0x7e,
-
  0x4f, 0xcb, 0xa2, 0xda, 0xba, 0x65, 0x5b, 0x49, 0xfc, 0x7b, 0xab, 0xef,
-
  0xd7, 0x69, 0x45, 0xa4, 0x64, 0x67, 0x1c, 0x25, 0x25, 0x90, 0x73, 0x61,
-
  0x18, 0x5a, 0x0a, 0xc7, 0x68, 0x04, 0x27, 0x59, 0xd7, 0x07, 0x0e, 0x1f,
-
  0x3c, 0x0d, 0x5c, 0x2f, 0x81, 0xe3, 0x9b, 0xc3, 0x0b, 0x79, 0xfa, 0xa1,
-
  0x36, 0xa7, 0xb0, 0x88, 0xd2, 0x64, 0x7c, 0x11, 0x15, 0xb0, 0x27, 0x65,
-
  0x68, 0x2b, 0xdc, 0x21, 0x25, 0xe5, 0xf8, 0x22, 0xbb, 0x84, 0x35, 0xf9,
-
  0xf2, 0xcb, 0x47, 0x31, 0xfc, 0xf3, 0xe5, 0xaf, 0xdb, 0x97, 0xc5, 0x0c,
-
  0x96, 0xe8, 0xc1, 0xaf, 0xdb, 0xb8, 0xff, 0xff, 0x4a, 0xfa, 0xa3, 0xfe,
-
  0xf8, 0xdf, 0x83, 0x8b, 0x7a, 0x3e, 0xeb, 0x75, 0x92, 0x55, 0x92, 0xc3,
-
  0xff, 0xe7, 0xc5, 0x32, 0xaf, 0x0d, 0x29, 0x15, 0x39, 0xd1, 0x84, 0xf2,
-
  0xa9, 0x59, 0x96, 0xc3, 0xe1, 0x45, 0x9a, 0x47, 0x0a, 0xc3, 0xc3, 0x0b,
-
  0x27, 0xd7, 0x1e, 0xf4, 0x7a, 0x7c, 0x81, 0x2b, 0x00, 0xb4, 0x05, 0x54,
-
  0x2e, 0x0b, 0x51, 0x67, 0x30, 0x3b, 0x78, 0x39, 0x27, 0xee, 0x45, 0xad,
-
  0x71, 0x7f, 0x19, 0x3c, 0x5a, 0x94, 0x13, 0xf8, 0x78, 0x99, 0xcf, 0xd2,
-
  0x8a, 0x19, 0x02, 0x2c, 0x89, 0x36, 0x17, 0xff, 0x57, 0x3f, 0x8a, 0x63,
-
  0x18, 0x3d, 0x1c, 0xd9, 0x74, 0x36, 0xf0, 0x46, 0xeb, 0x8e, 0x29, 0xd2,
-
  0x5b, 0x09, 0x3f, 0xa0, 0x81, 0xcf, 0xb3, 0x0f, 0xd0, 0x3e, 0xfc, 0xe9,
-
  0x1c, 0x2c, 0x9c, 0x1f, 0xf7, 0x18, 0x9a, 0x56, 0x63, 0x59, 0xa8, 0x27,
-
  0xbb, 0x30, 0x11, 0x6c, 0xed, 0x02, 0x1e, 0x5f, 0x22, 0xfb, 0xe5, 0xdb,
-
  0x0c, 0x5e, 0x07, 0x2e, 0x72, 0x0e, 0xbb, 0x06, 0x3b, 0x85, 0x94, 0x8e,
-
  0x1b, 0x79, 0x1d, 0xbd, 0x06, 0x82, 0x62, 0x0e, 0xe6, 0x1c, 0x88, 0x59,
-
  0x5a, 0xd7, 0x37, 0x6f, 0xa2, 0xa5, 0xea, 0x83, 0xdd, 0x00, 0x61, 0x77,
-
  0xbd, 0x01, 0x94, 0x78, 0xb0, 0xd7, 0x7a, 0xfc, 0x27, 0xe0, 0xe7, 0xf6,
-
  0x58, 0xc1, 0x08, 0xfe, 0xf5, 0x6f, 0x87, 0x2e, 0xaf, 0xf0, 0xdb, 0x2c,
-
  0xbf, 0x2c, 0xde, 0xc3, 0x12, 0xd1, 0x25, 0x9c, 0x34, 0x57, 0x13, 0x19,
-
  0xd8, 0x7c, 0x51, 0x9b, 0x2b, 0x0e, 0x77, 0x06, 0x3e, 0x1a, 0x25, 0xa3,
-
  0xd9, 0x75, 0x74, 0x91, 0x5c, 0xa6, 0x38, 0xe7, 0x05, 0x50, 0x32, 0xae,
-
  0x02, 0xdc, 0x30, 0x33, 0x62, 0x1a, 0xc2, 0x56, 0x26, 0xc5, 0x72, 0x04,
-
  0xac, 0x09, 0x59, 0x0a, 0x2f, 0x4e, 0x72, 0x59, 0x64, 0x13, 0x7c, 0x54,
-
  0x9b, 0xab, 0x2e, 0x52, 0x78, 0x85, 0x3a, 0xa6, 0xfb, 0x0c, 0x38, 0x31,
-
  0x8e, 0x94, 0x0e, 0x63, 0x56, 0xe3, 0xcd, 0x08, 0x3c, 0x34, 0x99, 0x55,
-
  0x45, 0x14, 0x9d, 0x17, 0x78, 0x8e, 0x88, 0x73, 0xd3, 0x41, 0x80, 0x8d,
-
  0xb9, 0x48, 0xf0, 0x02, 0x84, 0xbb, 0xce, 0x9c, 0x94, 0x32, 0x25, 0x26,
-
  0x4e, 0xbb, 0x95, 0xcc, 0xfa, 0x7c, 0xd1, 0xe1, 0x3b, 0xb2, 0x56, 0xd1,
-
  0xc6, 0xff, 0xde, 0xe8, 0x47, 0x1b, 0xff, 0xcf, 0x06, 0x91, 0xc7, 0xc6,
-
  0x9f, 0x36, 0xec, 0x5e, 0x83, 0x40, 0x77, 0x99, 0x4d, 0x52, 0x92, 0x31,
-
  0xa2, 0x17, 0xa7, 0x97, 0x8f, 0xa2, 0xdf, 0xe1, 0x24, 0xc2, 0xb0, 0x26,
-
  0xe9, 0x07, 0x25, 0x57, 0x9d, 0x1b, 0xbc, 0x1d, 0x01, 0xc3, 0x4e, 0x16,
-
  0xd0, 0xd7, 0x22, 0x2d, 0xc7, 0x40, 0xdb, 0xc9, 0x39, 0x50, 0x33, 0x5c,
-
  0xd7, 0xda, 0x1c, 0xb6, 0x8f, 0xaf, 0xf0, 0xb4, 0x80, 0xbd, 0x46, 0x79,
-
  0x32, 0x87, 0x13, 0xf3, 0x12, 0x47, 0x94, 0xe5, 0x81, 0xed, 0xfc, 0xc7,
-
  0x34, 0x7d, 0xb2, 0x73, 0x70, 0xb0, 0xff, 0xc7, 0xbd, 0x87, 0x69, 0x7d,
-
  0xb1, 0xf3, 0xeb, 0xb6, 0xdd, 0xc4, 0x17, 0x53, 0x5a, 0x78, 0x4b, 0x84,
-
  0x3a, 0x10, 0x94, 0x06, 0x12, 0x73, 0xc9, 0x40, 0x23, 0x51, 0x05, 0x07,
-
  0x6f, 0x9e, 0xf6, 0x55, 0xf2, 0x3a, 0x5f, 0xc2, 0x79, 0xc2, 0x85, 0xbb,
-
  0xba, 0x48, 0x0c, 0x43, 0xd1, 0xe7, 0xf9, 0xe2, 0x4d, 0xf0, 0x4e, 0x7a,
-
  0x41, 0x3b, 0x08, 0x5b, 0x96, 0x4e, 0x13, 0xb8, 0x52, 0x68, 0xb7, 0xe8,
-
  0x9e, 0x47, 0x2e, 0x95, 0x54, 0x78, 0x67, 0x57, 0xbc, 0xee, 0xc0, 0xa7,
-
  0x93, 0x0a, 0x0f, 0xac, 0x99, 0x6a, 0x31, 0xad, 0x41, 0x66, 0x58, 0xe2,
-
  0x87, 0x17, 0x20, 0x15, 0xd0, 0x44, 0xa1, 0x8f, 0x74, 0x0a, 0x07, 0x0f,
-
  0xae, 0xd1, 0xef, 0xed, 0xf2, 0xf7, 0x65, 0x03, 0xe9, 0x31, 0x7a, 0x0e,
-
  0x46, 0x56, 0xd5, 0xc0, 0x96, 0x60, 0xd7, 0xdd, 0x3b, 0x89, 0x18, 0xee,
-
  0xa0, 0xc7, 0x93, 0xd0, 0xee, 0x75, 0xb4, 0x28, 0x8c, 0xb4, 0x2e, 0xfa,
-
  0x04, 0x4e, 0x15, 0x90, 0x29, 0x0d, 0xbb, 0x4c, 0x71, 0x2c, 0xae, 0x58,
-
  0xc2, 0x64, 0x3e, 0x29, 0x90, 0xb4, 0xcc, 0x85, 0x49, 0x02, 0x8a, 0x5e,
-
  0xff, 0x95, 0x21, 0x70, 0x20, 0xb5, 0x1a, 0x96, 0x0a, 0xcf, 0x31, 0xdd,
-
  0x83, 0x73, 0x64, 0x15, 0xf8, 0x6c, 0xc5, 0x64, 0x4a, 0x5c, 0x0b, 0x27,
-
  0xc8, 0x52, 0x2a, 0x48, 0x69, 0x40, 0x9b, 0xc8, 0xd9, 0x89, 0x87, 0x9b,
-
  0xe6, 0xcd, 0xe8, 0x78, 0x14, 0x15, 0x0a, 0xf9, 0x70, 0xe1, 0x4d, 0xaa,
-
  0x0b, 0x10, 0x5a, 0x2a, 0x21, 0xec, 0x6c, 0x0e, 0x3b, 0x71, 0x09, 0x2d,
-
  0xc3, 0xc6, 0xa6, 0x93, 0x41, 0x74, 0x64, 0x86, 0x6c, 0x26, 0x01, 0x84,
-
  0x56, 0xe4, 0xb3, 0x6b, 0x6d, 0x6e, 0x94, 0x42, 0x7f, 0x39, 0x93, 0x34,
-
  0x31, 0x37, 0xcb, 0x40, 0xf1, 0x23, 0xe0, 0x4e, 0x30, 0x66, 0x14, 0xbc,
-
  0x8c, 0x38, 0xc9, 0xa7, 0x18, 0x8f, 0x38, 0x8b, 0x72, 0x91, 0xcb, 0x09,
-
  0xa1, 0x79, 0x1c, 0x3a, 0xb4, 0x0a, 0x54, 0x0c, 0x0d, 0xcc, 0x51, 0x50,
-
  0x4a, 0xeb, 0xab, 0x14, 0x96, 0xab, 0x4a, 0x91, 0xe1, 0xd6, 0x29, 0x2f,
-
  0x70, 0xb9, 0xcc, 0x51, 0xda, 0x39, 0x79, 0x7b, 0x76, 0xfa, 0xf6, 0xcc,
-
  0x21, 0x4b, 0x9a, 0x7a, 0x5d, 0xcc, 0x26, 0x4c, 0x1c, 0x57, 0x59, 0x05,
-
  0x9b, 0x4c, 0x6f, 0xa0, 0xd4, 0x81, 0xa7, 0x1e, 0xb9, 0x63, 0x3a, 0x4e,
-
  0xe1, 0x4e, 0x9a, 0xb0, 0xac, 0x0f, 0x5b, 0x54, 0xd5, 0xc0, 0x1a, 0x98,
-
  0xea, 0x60, 0x08, 0xce, 0xe4, 0xb2, 0xbc, 0xaa, 0xcb, 0xe5, 0xb8, 0x66,
-
  0xa1, 0x17, 0xff, 0x22, 0xc9, 0x8e, 0xf8, 0x0c, 0xee, 0x0a, 0x35, 0x00,
-
  0x47, 0x0a, 0xd5, 0x84, 0x19, 0xcc, 0x08, 0x65, 0xb9, 0x8c, 0xe8, 0x8a,
-
  0x59, 0x9c, 0xcb, 0x5b, 0xe2, 0x02, 0x3e, 0x8e, 0x63, 0xe8, 0x08, 0xf9,
-
  0x13, 0xb2, 0xbe, 0x28, 0x3e, 0xc1, 0x8b, 0xa4, 0x4c, 0xe7, 0xc0, 0x90,
-
  0x62, 0x22, 0x53, 0xb9, 0x2d, 0x06, 0x38, 0x17, 0x15, 0x19, 0xcf, 0x61,
-
  0xac, 0xb9, 0xb7, 0x93, 0xb4, 0xdc, 0xd0, 0xb1, 0xd1, 0x8d, 0x02, 0x37,
-
  0x47, 0x1f, 0x98, 0x16, 0x6c, 0xc1, 0x3c, 0x9b, 0x25, 0x25, 0xf0, 0xc7,
-
  0x1c, 0x76, 0xb5, 0xb2, 0x34, 0x01, 0x63, 0x58, 0x38, 0xa2, 0x35, 0x12,
-
  0x26, 0x6e, 0x1a, 0x10, 0x67, 0x49, 0x6c, 0x54, 0xa6, 0x99, 0xce, 0x5b,
-
  0xc4, 0x0d, 0x5b, 0x8e, 0xe7, 0x84, 0x88, 0x0c, 0xf6, 0x04, 0xc8, 0x02,
-
  0xde, 0x32, 0xcb, 0x1d, 0xf5, 0x96, 0xc0, 0xa2, 0x4a, 0x38, 0x45, 0xf9,
-
  0xa4, 0x27, 0x23, 0x02, 0x9e, 0x03, 0xc7, 0x24, 0x23, 0x2a, 0x46, 0xa9,
-
  0xd0, 0x1c, 0x2d, 0xde, 0x13, 0x10, 0xae, 0x78, 0x55, 0x68, 0x07, 0xa8,
-
  0xf5, 0x1c, 0x64, 0x8c, 0x7c, 0x5c, 0x90, 0xf4, 0x83, 0x2b, 0x35, 0x49,
-
  0xf9, 0x0f, 0x5c, 0x59, 0xbe, 0x93, 0xe1, 0x0c, 0x2f, 0x66, 0xd9, 0x38,
-
  0xab, 0x2d, 0x35, 0x26, 0xd5, 0x7b, 0xd1, 0x4e, 0xf0, 0xc8, 0x4e, 0xd2,
-
  0x09, 0xaa, 0x0b, 0xf0, 0x49, 0xe8, 0x3e, 0x86, 0x39, 0x9d, 0xbe, 0x39,
-
  0x39, 0x3b, 0x39, 0x3a, 0x79, 0xd9, 0x54, 0x23, 0x8d, 0x8e, 0x17, 0x45,
-
  0x24, 0x0f, 0x16, 0xcb, 0xca, 0x72, 0x28, 0x50, 0x24, 0x50, 0xa6, 0x85,
-
  0xfd, 0x03, 0x0e, 0x8c, 0x4c, 0x0f, 0x98, 0xe9, 0x1c, 0xd4, 0x3e, 0xe6,
-
  0x72, 0x15, 0x89, 0x02, 0x66, 0x76, 0x28, 0xde, 0x64, 0xe3, 0x25, 0xac,
-
  0x3d, 0x70, 0xad, 0x0c, 0x48, 0x72, 0x9e, 0x5c, 0xbb, 0x42, 0x17, 0xad,
-
  0x2d, 0x8a, 0xfd, 0x76, 0x7d, 0x51, 0x7d, 0x84, 0x1f, 0x2f, 0x71, 0x99,
-
  0x90, 0xbd, 0xcc, 0x40, 0x7d, 0x59, 0x2e, 0x50, 0xdb, 0x82, 0x8d, 0x63,
-
  0x92, 0x82, 0xe3, 0x87, 0xd3, 0x80, 0xb9, 0xe1, 0x3c, 0x12, 0x94, 0x54,
-
  0xed, 0xfb, 0xa8, 0x78, 0xc2, 0x8f, 0x37, 0x48, 0xa5, 0xb8, 0x95, 0xb8,
-
  0xbe, 0x2e, 0x61, 0xa2, 0x16, 0xe1, 0xed, 0xa1, 0x0e, 0x27, 0x4a, 0xc6,
-
  0x70, 0x07, 0x57, 0x0e, 0xeb, 0x53, 0xf1, 0x09, 0xde, 0x44, 0x5e, 0x4e,
-
  0x33, 0x66, 0x6a, 0x9d, 0x5d, 0xb3, 0xc0, 0x48, 0x9c, 0x0c, 0x0e, 0x63,
-
  0xce, 0x43, 0x8b, 0x5e, 0x65, 0x63, 0x10, 0x55, 0x81, 0x03, 0x47, 0x3f,
-
  0xc1, 0x4d, 0x55, 0x5c, 0xe1, 0xa8, 0xe3, 0x56, 0x73, 0x2a, 0xce, 0xe7,
-
  0xc0, 0x00, 0x80, 0xc2, 0xde, 0xbe, 0x3e, 0x8a, 0x92, 0x05, 0xac, 0x30,
-
  0xca, 0x94, 0x24, 0xb9, 0xa1, 0x72, 0xe9, 0xcc, 0xe9, 0xec, 0x74, 0x73,
-
  0xb8, 0xc5, 0xc3, 0x36, 0x7b, 0x83, 0xef, 0x7f, 0x8f, 0x1c, 0xf3, 0x4c,
-
  0xc9, 0xff, 0x54, 0x2f, 0x11, 0xbe, 0x10, 0x81, 0xd3, 0xe0, 0xdc, 0x40,
-
  0x5a, 0x8c, 0x80, 0x7f, 0x24, 0xef, 0xab, 0xd6, 0x20, 0x88, 0x1e, 0x50,
-
  0x30, 0x82, 0x25, 0xf9, 0x09, 0xdf, 0xc0, 0xe5, 0x32, 0xfa, 0x2c, 0x0e,
-
  0xf1, 0xec, 0xe5, 0xd0, 0x0e, 0x82, 0x15, 0x77, 0x18, 0x47, 0xab, 0x99,
-
  0x37, 0x29, 0xa8, 0xb0, 0xd0, 0x8c, 0xac, 0xae, 0x79, 0x1e, 0xef, 0x2a,
-
  0xff, 0xe9, 0x16, 0x81, 0xd1, 0x85, 0x46, 0xc3, 0x35, 0x94, 0xe6, 0x4a,
-
  0x8b, 0x97, 0xb0, 0xb9, 0x89, 0xb2, 0x83, 0x06, 0x67, 0xd2, 0xbb, 0x61,
-
  0x01, 0x13, 0xe3, 0x56, 0x70, 0x22, 0xc8, 0x4d, 0x77, 0x06, 0x5f, 0xf6,
-
  0xa3, 0xdd, 0xc1, 0x0e, 0xfe, 0xb3, 0xdb, 0x8f, 0xf6, 0xa8, 0xa1, 0xfd,
-
  0x88, 0xb5, 0x3d, 0xd9, 0x23, 0x26, 0x46, 0xe7, 0xec, 0x37, 0x58, 0x80,
-
  0x0a, 0x0a, 0xe3, 0xa2, 0x2c, 0xd1, 0xa0, 0xd4, 0x71, 0x78, 0x1c, 0x8b,
-
  0x85, 0x3f, 0xcf, 0xb7, 0x86, 0xf9, 0x01, 0xcd, 0x67, 0xc0, 0xad, 0x45,
-
  0x8f, 0xd1, 0x63, 0x24, 0x2c, 0x19, 0x6f, 0x93, 0x1e, 0x10, 0x49, 0x8e,
-
  0x7a, 0x7c, 0x2f, 0x4a, 0xf1, 0x59, 0xe2, 0x41, 0xad, 0xe6, 0xe0, 0x24,
-
  0xdc, 0x6a, 0x93, 0xd0, 0x50, 0xd2, 0xb1, 0xe8, 0xd8, 0x15, 0xdc, 0x8c,
-
  0x93, 0x0c, 0xe7, 0x54, 0x80, 0x34, 0xcc, 0x27, 0x8b, 0x39, 0x1e, 0xb4,
-
  0xdf, 0xe7, 0x7d, 0x70, 0xda, 0x6f, 0xb4, 0x8c, 0xb6, 0x17, 0x6d, 0xca,
-
  0x6c, 0x1f, 0x7d, 0xa8, 0x0b, 0xbf, 0x3f, 0x88, 0x9e, 0xc9, 0x4c, 0x68,
-
  0x99, 0xf1, 0x2e, 0xa6, 0x07, 0x40, 0xb6, 0x05, 0x81, 0x31, 0xea, 0x55,
-
  0xcb, 0x51, 0x7b, 0xc1, 0x51, 0xc5, 0x1e, 0xa5, 0x3d, 0xb6, 0x32, 0xd5,
-
  0xc5, 0x02, 0x54, 0xcf, 0xab, 0x0b, 0x24, 0x6a, 0xb6, 0x6c, 0x40, 0x3b,
-
  0xdb, 0x68, 0xd6, 0xc0, 0xf6, 0xb4, 0x95, 0x05, 0x48, 0xb0, 0x59, 0x75,
-
  0xd1, 0xc3, 0x7d, 0x4c, 0xda, 0xfb, 0x87, 0x2d, 0x0c, 0xb8, 0x57, 0xea,
-
  0x1f, 0xa6, 0x80, 0xf7, 0x47, 0x43, 0xcf, 0x8b, 0x36, 0xaf, 0xd3, 0x7a,
-
  0xcb, 0x11, 0x33, 0x4f, 0x4e, 0xf7, 0xfd, 0x35, 0x73, 0xa7, 0x22, 0x62,
-
  0xf8, 0xa2, 0x58, 0xec, 0xab, 0x90, 0x31, 0x4f, 0xe1, 0xd0, 0x19, 0x91,
-
  0x04, 0x0f, 0x1b, 0x6e, 0x1d, 0xf0, 0x16, 0xda, 0xa4, 0xc8, 0xdb, 0xc0,
-
  0x15, 0x7b, 0x86, 0xc6, 0x2b, 0xbf, 0x7f, 0x32, 0x5d, 0x00, 0x17, 0x83,
-
  0x8b, 0x0a, 0x2e, 0xc5, 0xe8, 0x15, 0xb0, 0xa5, 0xe4, 0x9c, 0xfa, 0x32,
-
  0xc7, 0x9c, 0x8c, 0x78, 0x8b, 0x32, 0x9b, 0xc3, 0x29, 0x99, 0xa1, 0xa6,
-
  0xce, 0xac, 0x9f, 0x47, 0xd8, 0x5e, 0x68, 0x14, 0xc4, 0xe7, 0x24, 0x3e,
-
  0xc1, 0xa5, 0x90, 0x10, 0x8d, 0x3b, 0x64, 0xc1, 0x73, 0x45, 0x01, 0xdf,
-
  0x19, 0xd6, 0xf0, 0xd4, 0xdb, 0x70, 0xfa, 0x10, 0x0e, 0x97, 0x79, 0xc5,
-
  0x39, 0x08, 0xc3, 0xa3, 0xd3, 0xc8, 0x7b, 0x61, 0x38, 0x7c, 0x6e, 0x08,
-
  0x64, 0x0f, 0xb6, 0x7b, 0x61, 0x05, 0x3c, 0xe7, 0x4d, 0xb4, 0x65, 0x79,
-
  0x6f, 0xe2, 0x87, 0x9b, 0x93, 0x32, 0x01, 0x4e, 0xfa, 0x70, 0x8b, 0x85,
-
  0x2c, 0xda, 0xd3, 0x46, 0x93, 0x4e, 0x23, 0xaf, 0xbe, 0xf3, 0x99, 0x24,
-
  0x7c, 0x68, 0x9e, 0xdd, 0x25, 0x4a, 0x67, 0xc2, 0xa2, 0xf9, 0xeb, 0x1c,
-
  0xdc, 0x36, 0x42, 0x3c, 0xeb, 0xad, 0xd2, 0xa2, 0xde, 0xe3, 0xac, 0x39,
-
  0xe5, 0xf4, 0xb8, 0x91, 0x3a, 0x99, 0x22, 0xe0, 0x4f, 0xe6, 0x32, 0xf8,
-
  0x3d, 0x9f, 0xe7, 0x41, 0xab, 0xb9, 0x9f, 0x56, 0x1d, 0x33, 0x36, 0x49,
-
  0x46, 0x67, 0xa0, 0x84, 0x51, 0x87, 0x38, 0x1b, 0xe8, 0x8c, 0xd4, 0x77,
-
  0x3c, 0x22, 0xe9, 0x2c, 0x07, 0x75, 0x16, 0x6f, 0x21, 0x12, 0xd2, 0x91,
-
  0x59, 0x59, 0xbb, 0xe3, 0x25, 0xca, 0xc0, 0x55, 0xe5, 0x58, 0xac, 0x94,
-
  0xfa, 0x48, 0xa0, 0x41, 0x49, 0x08, 0x46, 0x57, 0x91, 0xe6, 0x81, 0x7f,
-
  0x21, 0x53, 0x82, 0x21, 0xa3, 0x08, 0x0a, 0xf2, 0x5f, 0xc6, 0x92, 0x68,
-
  0x24, 0x92, 0x88, 0x68, 0x28, 0x0d, 0x01, 0x4e, 0x89, 0x89, 0xa7, 0xcc,
-
  0x8d, 0xb9, 0x34, 0x73, 0xe6, 0x6c, 0xa4, 0xf0, 0x1b, 0xfa, 0xc8, 0x50,
-
  0x0b, 0x75, 0xc0, 0x5b, 0x20, 0xf2, 0xc7, 0x0f, 0x6f, 0x8e, 0x87, 0xc3,
-
  0xe8, 0xd5, 0xf1, 0xd9, 0xf1, 0x9b, 0xa6, 0x10, 0x92, 0x83, 0xf0, 0x0b,
-
  0x92, 0xc1, 0x35, 0x5c, 0xd4, 0x59, 0xb5, 0x98, 0x25, 0xd7, 0x15, 0xeb,
-
  0x55, 0xe7, 0x25, 0xca, 0x3e, 0xf3, 0x14, 0x95, 0xfd, 0xc9, 0x92, 0x94,
-
  0xd3, 0x02, 0x64, 0xe5, 0x44, 0xcc, 0x9d, 0x70, 0xe7, 0x92, 0x89, 0xd4,
-
  0x5e, 0xe1, 0xc8, 0x83, 0xad, 0xe5, 0xc4, 0x58, 0xba, 0x45, 0xf8, 0xed,
-
  0x5b, 0x8b, 0x63, 0xc4, 0x52, 0x7f, 0x25, 0xcb, 0x90, 0x02, 0xdf, 0x99,
-
  0xb3, 0x05, 0x12, 0xcf, 0xa0, 0xb1, 0x3b, 0xa6, 0xd3, 0x1a, 0x5e, 0x82,
-
  0x0d, 0x61, 0x63, 0x8b, 0x37, 0x26, 0x1d, 0x2d, 0xf6, 0x6b, 0x9a, 0x26,
-
  0xb9, 0x1d, 0xed, 0x7a, 0xd7, 0x28, 0xee, 0x2d, 0xec, 0xf9, 0xac, 0x40,
-
  0xac, 0xcb, 0x27, 0x6c, 0x71, 0xae, 0x96, 0x53, 0xd2, 0xd0, 0xa2, 0xcd,
-
  0xf7, 0xfd, 0xe8, 0x55, 0x3f, 0xfa, 0xa1, 0x1f, 0xa1, 0xbd, 0x7b, 0x8b,
-
  0x6c, 0x55, 0xbb, 0x3b, 0x7b, 0x0f, 0x58, 0xd1, 0x6b, 0x28, 0x70, 0xd1,
-
  0xee, 0x7b, 0xd7, 0x42, 0xcd, 0x4f, 0x61, 0x27, 0x83, 0x68, 0xf7, 0x15,
-
  0x72, 0x88, 0xdd, 0x9d, 0x07, 0x4f, 0x1e, 0x3e, 0x7e, 0x24, 0x1f, 0xb6,
-
  0xe5, 0x58, 0x1d, 0x2c, 0x8c, 0x16, 0xb9, 0x89, 0xaa, 0x03, 0x34, 0x76,
-
  0x10, 0xec, 0xb2, 0x1c, 0xe4, 0xa6, 0xd1, 0xb5, 0x2a, 0xa1, 0x7d, 0x54,
-
  0xc6, 0x32, 0x56, 0x7d, 0xd9, 0x46, 0xd1, 0x68, 0x0e, 0x5e, 0x9c, 0xd0,
-
  0xc1, 0x30, 0x1b, 0x42, 0x2b, 0x09, 0x94, 0x86, 0x36, 0x83, 0x11, 0x12,
-
  0x3b, 0x8a, 0xa6, 0x24, 0x92, 0xb9, 0x3d, 0x99, 0xae, 0x8c, 0xce, 0x07,
-
  0xaf, 0xc0, 0xd0, 0x92, 0xd1, 0x4c, 0xf4, 0x95, 0xd6, 0x1a, 0x27, 0x95,
-
  0x23, 0x6d, 0xc3, 0xb3, 0x57, 0xc5, 0x12, 0x85, 0x4b, 0x7c, 0x00, 0x64,
-
  0x45, 0x7c, 0x81, 0x69, 0xd8, 0xd8, 0xa5, 0xb3, 0x0f, 0x72, 0xf9, 0x36,
-
  0x5a, 0x81, 0xb1, 0xc1, 0x9f, 0x0b, 0xa0, 0x1b, 0x1e, 0xcf, 0xa0, 0xad,
-
  0xde, 0x93, 0x6e, 0xeb, 0x51, 0x1d, 0xb2, 0x11, 0x12, 0x39, 0x4e, 0x4f,
-
  0x86, 0x67, 0x78, 0x92, 0x41, 0x01, 0x83, 0x86, 0xfe, 0x09, 0x8a, 0x7d,
-
  0x0d, 0x14, 0x88, 0x2f, 0xa2, 0x9e, 0x01, 0xb3, 0xd3, 0xe6, 0x80, 0xd8,
-
  0xe8, 0xda, 0x65, 0x62, 0xb4, 0x9d, 0x8a, 0x26, 0x44, 0xb7, 0x1f, 0x6b,
-
  0x4d, 0x7c, 0x3f, 0xb0, 0x11, 0xc6, 0xbc, 0xb5, 0xf9, 0xcd, 0x56, 0x1f,
-
  0x95, 0x27, 0xa3, 0x47, 0xa9, 0x0a, 0x05, 0x7d, 0x8b, 0x6e, 0xe3, 0x9c,
-
  0x41, 0xdc, 0x48, 0xd1, 0x20, 0x6a, 0x14, 0x2b, 0xe1, 0x08, 0x41, 0x07,
-
  0xd6, 0x5d, 0x80, 0xab, 0x47, 0xaa, 0x9b, 0xdd, 0x25, 0xf3, 0x38, 0x9a,
-
  0xec, 0x6b, 0xe2, 0x00, 0xd6, 0x6a, 0x72, 0xdd, 0x5c, 0xa4, 0x36, 0x79,
-
  0x34, 0x16, 0x8d, 0x26, 0x4f, 0x96, 0x06, 0x3c, 0x4e, 0x49, 0x64, 0x97,
-
  0x2e, 0xea, 0x8d, 0x92, 0xb2, 0x17, 0x19, 0x0d, 0x92, 0xce, 0x22, 0x69,
-
  0xa2, 0xe7, 0xa4, 0x1f, 0xd0, 0xd2, 0xc2, 0x2c, 0xff, 0xe0, 0xcc, 0x52,
-
  0x5f, 0x8e, 0xe1, 0x55, 0x24, 0x21, 0xf2, 0x2c, 0x4c, 0x41, 0xda, 0xc4,
-
  0x03, 0xa3, 0x26, 0x47, 0xb2, 0x45, 0x09, 0xb1, 0x34, 0x69, 0x85, 0xdb,
-
  0xb4, 0x7a, 0x3f, 0x1e, 0x17, 0x94, 0xdb, 0x59, 0xd0, 0xc1, 0x47, 0xe3,
-
  0x0a, 0xb5, 0xcf, 0x0a, 0x56, 0x1e, 0x99, 0xc3, 0x42, 0x3c, 0x37, 0x3f,
-
  0x1e, 0xbf, 0x19, 0x3a, 0x0e, 0x33, 0x5a, 0x50, 0x10, 0x00, 0x41, 0x9b,
-
  0x39, 0x4f, 0xc5, 0x2d, 0x30, 0x82, 0xf5, 0x22, 0x92, 0x7f, 0x32, 0xd8,
-
  0x1d, 0xec, 0x0d, 0x94, 0x5e, 0xd0, 0x40, 0x00, 0x6a, 0x70, 0x82, 0x54,
-
  0x22, 0xd7, 0x4e, 0x1f, 0x8d, 0x62, 0x68, 0xd9, 0x33, 0x0b, 0x8a, 0xaa,
-
  0x65, 0xb3, 0x49, 0x5d, 0x7d, 0xb4, 0xd6, 0xc1, 0x59, 0x2b, 0xc6, 0x20,
-
  0x0b, 0x93, 0xb6, 0x38, 0xb0, 0x6b, 0x4a, 0xb6, 0x0c, 0xba, 0x53, 0x40,
-
  0x91, 0xcd, 0xec, 0xb4, 0x4c, 0x37, 0x35, 0xef, 0xbb, 0xbc, 0x5b, 0x93,
-
  0xfd, 0x9e, 0x34, 0xf6, 0xf1, 0x6c, 0x39, 0x49, 0xcd, 0x2d, 0x98, 0xe5,
-
  0x68, 0x55, 0x90, 0xc3, 0x49, 0x47, 0x12, 0x04, 0xae, 0xf1, 0xc5, 0x17,
-
  0x56, 0xa0, 0x46, 0xeb, 0xc5, 0xd8, 0x3c, 0x4f, 0x94, 0x02, 0x37, 0x4c,
-
  0x59, 0x4c, 0x96, 0x63, 0xd4, 0x24, 0x2f, 0xc8, 0xb0, 0xea, 0xfb, 0x3f,
-
  0x92, 0xd9, 0x15, 0x32, 0x92, 0x19, 0x8c, 0x2f, 0xe7, 0x36, 0x69, 0x89,
-
  0x71, 0x31, 0xaa, 0x9a, 0x17, 0xcb, 0x8c, 0x81, 0x3c, 0x0b, 0xa2, 0x33,
-
  0x35, 0x38, 0x08, 0x1a, 0xde, 0x2a, 0x50, 0xb4, 0xf0, 0x8f, 0x41, 0x95,
-
  0x6e, 0xe3, 0x68, 0xbf, 0xf8, 0xe2, 0x84, 0x1c, 0x98, 0x46, 0x49, 0x3d,
-
  0x11, 0x0d, 0x81, 0x6e, 0x40, 0x91, 0x5a, 0x73, 0x52, 0xc1, 0xeb, 0x2b,
-
  0x20, 0x85, 0x04, 0x4e, 0x0f, 0x70, 0xbf, 0x57, 0x64, 0x51, 0x66, 0x22,
-
  0x33, 0x4a, 0x05, 0x1d, 0x53, 0x38, 0x54, 0xb8, 0x94, 0x66, 0x43, 0x26,
-
  0x93, 0x8c, 0x14, 0x49, 0x18, 0x60, 0x32, 0x5b, 0xa6, 0x64, 0xe9, 0x17,
-
  0x2a, 0x9f, 0xbb, 0xe7, 0x2a, 0x45, 0xeb, 0x28, 0xa9, 0x89, 0x3d, 0x36,
-
  0xea, 0xc4, 0xd8, 0x57, 0x8f, 0x2c, 0x68, 0x73, 0x43, 0xd0, 0xd2, 0x15,
-
  0x10, 0xd6, 0xc4, 0xb5, 0x73, 0xf6, 0x49, 0xf7, 0xb5, 0x06, 0x79, 0x92,
-
  0xd6, 0xda, 0x12, 0x77, 0x02, 0xeb, 0x8f, 0x86, 0x49, 0xb5, 0xf8, 0xc0,
-
  0x59, 0x64, 0x06, 0x5a, 0xf1, 0xd0, 0xfa, 0xb0, 0xca, 0xf8, 0xe4, 0xf9,
-
  0x85, 0x3e, 0x6a, 0x18, 0x26, 0xde, 0x8e, 0xc0, 0x2c, 0x40, 0x55, 0x41,
-
  0xa7, 0xd6, 0x44, 0x8d, 0x45, 0x45, 0xc9, 0x57, 0xcb, 0xac, 0x00, 0xb6,
-
  0xd2, 0x63, 0xf3, 0xaf, 0x0c, 0x1b, 0x47, 0x8d, 0xa3, 0xc4, 0x23, 0xc0,
-
  0x2e, 0x5f, 0x2b, 0xb5, 0x9a, 0x41, 0xcb, 0x7a, 0x55, 0x37, 0x0e, 0xcd,
-
  0x11, 0xa2, 0x68, 0x8d, 0x74, 0xaf, 0x75, 0xe5, 0xd9, 0x58, 0x54, 0x10,
-
  0x9d, 0x13, 0x77, 0xc4, 0xed, 0x71, 0xd7, 0x9e, 0x9b, 0xa9, 0xc4, 0xba,
-
  0xdf, 0x5a, 0xa8, 0x28, 0x9b, 0x93, 0xdc, 0x4a, 0xc7, 0xd7, 0x6c, 0x90,
-
  0xf5, 0xc1, 0x04, 0xec, 0xca, 0xd7, 0x4d, 0x97, 0x84, 0xd9, 0x6d, 0x60,
-
  0xac, 0xce, 0x36, 0xb1, 0x01, 0xea, 0x25, 0xcd, 0x25, 0xbe, 0x8c, 0x90,
-
  0x2b, 0xc2, 0x61, 0x45, 0x16, 0x19, 0x9f, 0xbc, 0xbc, 0x74, 0x78, 0x1b,
-
  0x7a, 0xcc, 0x72, 0xf4, 0x06, 0xf5, 0xa9, 0x89, 0x51, 0x51, 0x00, 0xa5,
-
  0xdb, 0xe9, 0xe1, 0xa9, 0x4e, 0x73, 0xe4, 0x41, 0xb2, 0xab, 0xc0, 0xa3,
-
  0x17, 0xe6, 0x06, 0x04, 0x85, 0x23, 0x4a, 0xce, 0x93, 0xcc, 0xd0, 0x9c,
-
  0xf0, 0xab, 0x89, 0xd8, 0x56, 0xe1, 0xe9, 0xbc, 0x90, 0x17, 0x48, 0xaa,
-
  0xc0, 0x33, 0x27, 0x57, 0x09, 0x1e, 0x7c, 0x63, 0xe2, 0x94, 0x36, 0xc9,
-
  0x50, 0x36, 0x5a, 0x3a, 0xe6, 0x63, 0x34, 0xed, 0xd2, 0x4d, 0x48, 0xa6,
-
  0x5a, 0x68, 0xac, 0x37, 0x88, 0x9e, 0x17, 0x57, 0xa8, 0xde, 0xf7, 0xd9,
-
  0x56, 0x9e, 0xa1, 0x93, 0x19, 0x4e, 0xe2, 0x15, 0xda, 0x44, 0x41, 0xa7,
-
  0xc2, 0x85, 0x44, 0x43, 0x66, 0xc4, 0x1f, 0xbb, 0x46, 0x48, 0xa0, 0xf2,
-
  0x2b, 0xe6, 0x8f, 0x3a, 0x09, 0xb3, 0x9b, 0xd3, 0xd6, 0xa9, 0x20, 0x67,
-
  0x46, 0x7c, 0x80, 0x34, 0x44, 0xbb, 0x92, 0x55, 0xb4, 0x61, 0x7d, 0x16,
-
  0x2f, 0xd1, 0xb1, 0xc9, 0x3c, 0x19, 0x8d, 0x64, 0x25, 0x9e, 0xd8, 0x9a,
-
  0x3d, 0xcd, 0x64, 0x3c, 0xa7, 0xf3, 0xdb, 0x58, 0x17, 0xb1, 0x5c, 0x8c,
-
  0x9d, 0xb5, 0xe5, 0x97, 0xfa, 0xb0, 0xaf, 0xe3, 0x74, 0x51, 0x1b, 0xff,
-
  0x8e, 0x39, 0xd1, 0x44, 0x58, 0xb4, 0xfe, 0x51, 0xef, 0x7c, 0x56, 0x8c,
-
  0x92, 0x59, 0xcf, 0x48, 0xdc, 0x3f, 0xd0, 0xdf, 0xce, 0xf1, 0x67, 0xb7,
-
  0x58, 0x89, 0x3e, 0xde, 0x9c, 0x2e, 0xe3, 0xac, 0x34, 0x84, 0x47, 0x0e,
-
  0x70, 0xe8, 0x97, 0x94, 0x4d, 0xb4, 0x37, 0x82, 0xe6, 0x01, 0x63, 0x86,
-
  0xc9, 0xd9, 0x1b, 0x09, 0xe7, 0xd8, 0x64, 0x09, 0xd3, 0x62, 0x36, 0x2b,
-
  0xae, 0x58, 0x0a, 0xb5, 0xa4, 0xc0, 0x03, 0x39, 0x80, 0x37, 0xa6, 0xa0,
-
  0x01, 0xc4, 0xc8, 0xb3, 0xaf, 0x71, 0x8d, 0xc4, 0x69, 0x4d, 0x66, 0x50,
-
  0xf5, 0x9e, 0x19, 0x9d, 0xd8, 0xd0, 0x78, 0x9f, 0x1d, 0x6c, 0xce, 0x33,
-
  0x74, 0x31, 0xb6, 0x6e, 0x44, 0x32, 0x9c, 0xd2, 0xd3, 0xf1, 0x90, 0xae,
-
  0x31, 0xd8, 0xb5, 0x38, 0x2d, 0x4d, 0x73, 0x65, 0x41, 0x8f, 0x80, 0x64,
-
  0x0f, 0xd2, 0x2e, 0xff, 0x76, 0x0d, 0x24, 0x27, 0xb2, 0x03, 0x35, 0x5f,
-
  0xa3, 0x97, 0x39, 0x4e, 0xaa, 0x71, 0x96, 0x39, 0x7f, 0xa3, 0xb4, 0x6b,
-
  0xff, 0x74, 0xdd, 0x27, 0xf1, 0x25, 0xb6, 0x03, 0xc4, 0x30, 0x2a, 0x2a,
-
  0xe7, 0xc4, 0xc7, 0x71, 0x32, 0xaa, 0xf0, 0xe1, 0x3a, 0x5e, 0xe6, 0xd9,
-
  0x87, 0xb8, 0x2a, 0xc6, 0xef, 0x81, 0xe2, 0x9f, 0x2e, 0x92, 0xfa, 0xe2,
-
  0x9b, 0x96, 0xee, 0xb0, 0x89, 0x92, 0xd3, 0x56, 0xa4, 0x96, 0x75, 0xdc,
-
  0x84, 0x92, 0x19, 0x1a, 0xde, 0x47, 0xdc, 0x4a, 0xf4, 0x16, 0x5a, 0x01,
-
  0x66, 0x31, 0xc7, 0x5d, 0xe2, 0xc6, 0xfa, 0x2a, 0x38, 0xb4, 0x9a, 0xa3,
-
  0x40, 0x0a, 0x63, 0x4e, 0x03, 0xde, 0x84, 0x86, 0xb3, 0x28, 0x7a, 0x5d,
-
  0xd4, 0xe9, 0x01, 0xfe, 0x8d, 0xc4, 0x43, 0xf4, 0xac, 0x74, 0x48, 0xda,
-
  0xf9, 0x94, 0xaf, 0xd2, 0xc4, 0xb7, 0x47, 0x70, 0xff, 0xd2, 0xa9, 0x1e,
-
  0x2c, 0x7b, 0x4e, 0x37, 0xbe, 0xdd, 0xe8, 0x47, 0x17, 0x7c, 0xae, 0xa8,
-
  0x41, 0x9e, 0x23, 0xec, 0xf9, 0x39, 0xdd, 0xbb, 0xed, 0xe6, 0x2e, 0x48,
-
  0x30, 0x45, 0x9e, 0xc7, 0x9e, 0x39, 0x3a, 0x85, 0x62, 0x0a, 0x32, 0xce,
-
  0xb2, 0xc1, 0x17, 0xad, 0xd7, 0xe0, 0xd2, 0xef, 0x58, 0x52, 0x8e, 0x5f,
-
  0x40, 0xaf, 0xd8, 0xc4, 0x78, 0xa7, 0x49, 0x3b, 0xa9, 0xfa, 0x22, 0x5b,
-
  0xce, 0x92, 0xca, 0x1b, 0x05, 0xbc, 0xc8, 0x37, 0x1b, 0x91, 0xff, 0x28,
-
  0xa5, 0x23, 0xea, 0xf5, 0x7a, 0xcc, 0x8c, 0xf3, 0xa0, 0x1d, 0xb4, 0xc4,
-
  0x11, 0x48, 0xe1, 0xf1, 0xf0, 0x0f, 0x5a, 0x55, 0xbd, 0xba, 0x1d, 0x1f,
-
  0x68, 0xbb, 0x87, 0x61, 0x9a, 0xb2, 0xb8, 0x16, 0xbb, 0x8d, 0x0c, 0xa2,
-
  0xc3, 0x09, 0xce, 0x07, 0xf6, 0xfa, 0xf1, 0xe0, 0xe1, 0xfe, 0x60, 0xa7,
-
  0x41, 0x58, 0xb3, 0x3a, 0xae, 0x2e, 0xc7, 0xd1, 0x53, 0x72, 0x0e, 0x21,
-
  0xdf, 0x0b, 0x12, 0x14, 0x28, 0xfe, 0x2c, 0xa7, 0x29, 0xd3, 0x60, 0x5e,
-
  0xcc, 0x9b, 0xae, 0x6d, 0x08, 0x13, 0x82, 0x7e, 0x48, 0xbc, 0xc0, 0x65,
-
  0xf6, 0x75, 0x5b, 0xd3, 0x4f, 0xb4, 0x28, 0x32, 0xab, 0xea, 0xa7, 0x1f,
-
  0x32, 0x36, 0x43, 0x69, 0x63, 0x63, 0xb8, 0x7b, 0x52, 0x11, 0xda, 0x89,
-
  0x05, 0xc9, 0xda, 0xb6, 0x9a, 0xa3, 0x95, 0x8e, 0x0e, 0x89, 0x93, 0x24,
-
  0x46, 0x06, 0x9d, 0x18, 0xc5, 0x90, 0xc3, 0x6a, 0xb8, 0x31, 0xdd, 0x1d,
-
  0xf4, 0x3a, 0x4c, 0x44, 0x00, 0xe9, 0x1c, 0x1d, 0xb1, 0x4d, 0xd4, 0xc5,
-
  0x32, 0xa4, 0x2d, 0x10, 0xa8, 0xf0, 0x52, 0x9e, 0x17, 0x13, 0x72, 0x3d,
-
  0x79, 0x7b, 0x3b, 0x34, 0x7e, 0xca, 0x5e, 0xcf, 0x69, 0x64, 0x13, 0xc3,
-
  0x2a, 0x80, 0x20, 0xf3, 0xf3, 0xfa, 0x62, 0xcb, 0xba, 0x83, 0xd5, 0xf4,
-
  0x06, 0x03, 0xa1, 0x29, 0xe7, 0xed, 0x53, 0x47, 0x71, 0x3e, 0x44, 0x17,
-
  0xbf, 0x2d, 0xab, 0x9a, 0xdc, 0x68, 0x22, 0x7c, 0xf3, 0x4c, 0x60, 0x64,
-
  0xf3, 0x74, 0x5e, 0x94, 0xd7, 0x21, 0xd2, 0x16, 0x55, 0x53, 0x36, 0x4a,
-
  0x6f, 0x0c, 0x43, 0xce, 0x42, 0xcd, 0xec, 0xb1, 0xc2, 0x15, 0x21, 0x9d,
-
  0x45, 0x2d, 0x2f, 0xed, 0xf5, 0x20, 0xcb, 0x9c, 0x5c, 0xe9, 0xec, 0x13,
-
  0x1c, 0x89, 0xeb, 0x1b, 0x0f, 0x02, 0xc9, 0x85, 0x2e, 0xd1, 0xd3, 0xf5,
-
  0xc1, 0xd3, 0xf2, 0x86, 0x66, 0x89, 0x0d, 0xc5, 0x06, 0x7d, 0xa1, 0x31,
-
  0x2c, 0x0a, 0x54, 0x68, 0xd8, 0x83, 0xd7, 0x3d, 0x44, 0xd2, 0x03, 0xfc,
-
  0x1f, 0x83, 0x02, 0xd6, 0x3c, 0x34, 0xc0, 0xf9, 0x8b, 0xd9, 0x25, 0x5f,
-
  0xa0, 0x71, 0x2c, 0x8e, 0xcc, 0xb8, 0x2e, 0x1a, 0x27, 0xe8, 0xd1, 0x03,
-
  0x50, 0x49, 0xdc, 0x13, 0x94, 0x5f, 0x63, 0x0c, 0x59, 0x98, 0x0d, 0xa3,
-
  0x9d, 0xa9, 0xb2, 0x56, 0xa6, 0xec, 0x7c, 0x59, 0x92, 0x56, 0x2a, 0x61,
-
  0x67, 0x1a, 0x6d, 0x86, 0x9a, 0xd4, 0x45, 0x41, 0x21, 0x5b, 0x20, 0xf0,
-
  0xa5, 0xb3, 0x69, 0x3f, 0xe0, 0x4b, 0x60, 0x15, 0x85, 0x2c, 0xde, 0xe8,
-
  0x4c, 0xae, 0xd2, 0x31, 0x35, 0x96, 0xa7, 0xa2, 0xe7, 0xa1, 0xd3, 0x24,
-
  0xc2, 0x18, 0x25, 0xb8, 0xde, 0x93, 0x6c, 0x4e, 0x27, 0x4b, 0x0c, 0x75,
-
  0x03, 0xcf, 0xf8, 0x89, 0xbe, 0xd8, 0x8a, 0x8d, 0x7e, 0x23, 0xf4, 0xf6,
-
  0x96, 0x55, 0x2d, 0xee, 0xe2, 0x44, 0x55, 0x6d, 0xb6, 0x61, 0x5e, 0xa4,
-
  0xe3, 0xf7, 0xca, 0xff, 0x55, 0x4f, 0x6d, 0x73, 0x75, 0x0c, 0x46, 0x43,
-
  0x8f, 0x32, 0x8e, 0x8e, 0x7c, 0x59, 0x45, 0x55, 0x65, 0x18, 0x2e, 0x81,
-
  0xd6, 0xa2, 0xe5, 0x58, 0xcd, 0x75, 0x70, 0xb7, 0x97, 0x89, 0x5e, 0x22,
-
  0x70, 0x7d, 0x2e, 0xf3, 0x09, 0x5c, 0x81, 0xd9, 0xa2, 0x6b, 0x74, 0x2a,
-
  0x9a, 0x3a, 0x1a, 0x2d, 0xf2, 0x5a, 0x63, 0x11, 0x36, 0xba, 0x54, 0x6b,
-
  0x35, 0xdb, 0x87, 0x89, 0xd6, 0xb6, 0x1f, 0x89, 0xd2, 0xc4, 0xea, 0x1e,
-
  0x09, 0xc1, 0x93, 0x42, 0x65, 0xc9, 0x51, 0x52, 0x65, 0x63, 0x12, 0xd4,
-
  0x33, 0x50, 0xbe, 0x6a, 0x12, 0xb7, 0xea, 0x19, 0x88, 0xef, 0xfe, 0xd9,
-
  0x44, 0x21, 0xe5, 0xbc, 0xa8, 0x51, 0x8e, 0xf0, 0x48, 0x9c, 0xbd, 0x12,
-
  0x86, 0x26, 0xd4, 0x34, 0xee, 0xea, 0x0d, 0x62, 0xdd, 0x81, 0xae, 0xc5,
-
  0x4c, 0xc7, 0x67, 0x8c, 0xec, 0x83, 0xed, 0x5d, 0x87, 0xd6, 0xc6, 0x29,
-
  0x19, 0x6b, 0x48, 0xb9, 0x51, 0xdd, 0x4a, 0xad, 0x04, 0xc8, 0xca, 0x48,
-
  0x17, 0xbd, 0xca, 0xc6, 0xa9, 0x7a, 0x55, 0xc4, 0x45, 0x0b, 0x2a, 0xac,
-
  0x77, 0x5b, 0xce, 0x91, 0x97, 0xc0, 0x4b, 0xac, 0xc9, 0x63, 0xd8, 0x00,
-
  0xc8, 0x55, 0x13, 0xe5, 0xd3, 0xac, 0x35, 0xc8, 0x8d, 0x9a, 0x94, 0x68,
-
  0xf9, 0x21, 0xd7, 0x9b, 0x75, 0x15, 0x84, 0x78, 0x03, 0x8f, 0x9b, 0xde,
-
  0x17, 0xeb, 0x87, 0xb5, 0x7a, 0x10, 0x63, 0x98, 0x92, 0x85, 0xd6, 0x5b,
-
  0x27, 0x62, 0xc0, 0xe7, 0x29, 0x85, 0xb5, 0xf0, 0x1e, 0x2c, 0x71, 0xd1,
-
  0x31, 0x24, 0xd3, 0x7b, 0x9a, 0xe3, 0x54, 0x9a, 0x2b, 0x6b, 0x3c, 0xcc,
-
  0xcc, 0x37, 0x90, 0x43, 0xa3, 0x43, 0x97, 0x28, 0x2c, 0x9d, 0x4e, 0xe1,
-
  0xdc, 0xae, 0x7d, 0xff, 0x4a, 0xcb, 0x3c, 0x08, 0xa0, 0x9a, 0x83, 0xc5,
-
  0xd5, 0x64, 0x4d, 0x06, 0x42, 0x01, 0xa6, 0xda, 0x52, 0x5f, 0xe9, 0x4a,
-
  0xf8, 0x09, 0x93, 0x96, 0xc3, 0x3a, 0x12, 0x7c, 0x22, 0x59, 0xa0, 0xdf,
-
  0xac, 0xcd, 0x3d, 0xd0, 0x9a, 0x84, 0x06, 0xfa, 0x2d, 0x8d, 0x66, 0x62,
-
  0xee, 0x83, 0x71, 0x73, 0x12, 0x92, 0x2a, 0x26, 0x8e, 0xf7, 0x6a, 0x28,
-
  0xe1, 0x76, 0xc2, 0xb7, 0x1a, 0xe8, 0x01, 0x18, 0xa4, 0x45, 0xf7, 0x92,
-
  0x9e, 0x26, 0x38, 0x4c, 0x68, 0xed, 0xd7, 0x48, 0x49, 0xb1, 0x85, 0x38,
-
  0x9c, 0x44, 0xe2, 0x59, 0xd1, 0x78, 0xd2, 0x6a, 0x0e, 0x49, 0x9a, 0xee,
-
  0xeb, 0x3e, 0x6b, 0x44, 0xcc, 0xfe, 0xc7, 0x1c, 0x89, 0x34, 0x20, 0xd9,
-
  0x90, 0xaf, 0x6c, 0x1a, 0xe3, 0x74, 0x96, 0x9c, 0xe3, 0x41, 0xc8, 0xce,
-
  0xf3, 0x82, 0xc3, 0x52, 0xdb, 0x54, 0x5e, 0xc0, 0x4d, 0x49, 0xde, 0x08,
-
  0xb6, 0x7b, 0x57, 0xd1, 0x26, 0x1b, 0x55, 0x70, 0x5c, 0x27, 0x30, 0xab,
-
  0xe1, 0xf0, 0xf9, 0xd6, 0x2a, 0xa2, 0x70, 0xd6, 0xf1, 0x36, 0x74, 0x11,
-
  0x45, 0xcf, 0x32, 0xcf, 0x63, 0x4c, 0x67, 0x22, 0x13, 0x6d, 0x49, 0xb9,
-
  0x02, 0xa8, 0x79, 0xdc, 0xec, 0xba, 0xb4, 0xc4, 0x9b, 0x14, 0xd3, 0x0a,
-
  0xb2, 0x6f, 0xdc, 0x0c, 0x70, 0xea, 0x05, 0xb2, 0x75, 0xd3, 0x93, 0xa8,
-
  0x20, 0xf9, 0xb9, 0x5c, 0x49, 0x47, 0x7d, 0xbe, 0x96, 0x60, 0xc7, 0x96,
-
  0xa0, 0x56, 0xd4, 0x8d, 0x6b, 0xe8, 0xaa, 0x8a, 0xab, 0xec, 0xfc, 0xf2,
-
  0x01, 0x88, 0xcc, 0x2c, 0xc1, 0x96, 0xbb, 0xff, 0x38, 0xd0, 0x5f, 0xf7,
-
  0xfe, 0x71, 0x50, 0xa6, 0xe7, 0x70, 0x28, 0xff, 0x71, 0x80, 0x8b, 0x0c,
-
  0xfc, 0xe2, 0xd7, 0x5f, 0x7f, 0xfd, 0xc6, 0x3f, 0x95, 0xd1, 0xe1, 0x4f,
-
  0xc3, 0xe8, 0xc7, 0x07, 0x14, 0xd7, 0x45, 0x41, 0xc1, 0xed, 0x8b, 0x4a,
-
  0xc2, 0xc2, 0x54, 0xbc, 0xf2, 0x16, 0x86, 0xac, 0x38, 0xda, 0xab, 0x11,
-
  0xdb, 0xd9, 0x7c, 0x02, 0xf2, 0x2d, 0xdf, 0x24, 0x89, 0xd1, 0x63, 0xf1,
-
  0xf2, 0x61, 0x11, 0xf2, 0xbc, 0x00, 0x4a, 0xbc, 0x98, 0xfb, 0x8e, 0x95,
-
  0x9c, 0x29, 0x8b, 0x34, 0xc0, 0x65, 0x7d, 0xce, 0x77, 0x54, 0x73, 0x50,
-
  0x72, 0xff, 0x04, 0x07, 0xc3, 0xd3, 0x5e, 0x31, 0x12, 0x47, 0x0c, 0x8d,
-
  0xce, 0x53, 0x50, 0xff, 0x92, 0xc5, 0x05, 0x9e, 0x59, 0xe8, 0xd4, 0xd7,
-
  0x85, 0xe8, 0x76, 0xac, 0x8a, 0x65, 0x89, 0xa1, 0x84, 0x63, 0x50, 0x4d,
-
  0x25, 0x78, 0x69, 0x93, 0xbb, 0x81, 0xcd, 0x99, 0xa4, 0x5b, 0x3c, 0xea,
-
  0xda, 0x76, 0x4e, 0xb2, 0x60, 0xd6, 0x3e, 0x46, 0xc5, 0x3c, 0xab, 0x6b,
-
  0x0d, 0x42, 0xc4, 0xa7, 0x81, 0x3c, 0x68, 0x30, 0xc1, 0x79, 0xc8, 0xb6,
-
  0xdd, 0x72, 0x22, 0xd3, 0x65, 0xce, 0x03, 0xc3, 0xbd, 0x68, 0xd3, 0x3a,
-
  0xab, 0x37, 0xa3, 0x6b, 0x32, 0x04, 0x14, 0xcb, 0x49, 0xb4, 0x29, 0x8d,
-
  0xb7, 0x87, 0xaf, 0x7d, 0xca, 0xf8, 0x75, 0xc4, 0xa1, 0x7b, 0x60, 0xe5,
-
  0xf8, 0x59, 0xdf, 0x32, 0x04, 0x1a, 0x52, 0xb2, 0x3c, 0x1d, 0x8b, 0xd5,
-
  0x2a, 0xd6, 0xab, 0x3c, 0x5f, 0xef, 0x47, 0x68, 0x59, 0x66, 0x14, 0x3d,
-
  0xf8, 0xf5, 0x20, 0x99, 0xff, 0x7e, 0xb0, 0xac, 0xe2, 0x14, 0x3a, 0x8c,
-
  0xf7, 0x0e, 0xd2, 0xaa, 0xa7, 0xec, 0xbf, 0xf7, 0x3e, 0xbd, 0x86, 0xa3,
-
  0x02, 0xa4, 0x57, 0xf7, 0xd6, 0xbc, 0x04, 0x1c, 0x9e, 0x6f, 0xef, 0x34,
-
  0x57, 0x82, 0x7c, 0xfc, 0xb0, 0xa9, 0x83, 0xd1, 0x0b, 0x1d, 0x6a, 0x7c,
-
  0x53, 0x80, 0x44, 0x09, 0x90, 0x3c, 0x23, 0xdf, 0x71, 0x1f, 0xcd, 0x63,
-
  0x60, 0xcc, 0xee, 0xa5, 0x27, 0xa1, 0x11, 0x47, 0xc7, 0x18, 0xc4, 0x81,
-
  0x91, 0xae, 0xf0, 0x41, 0x71, 0x3b, 0x89, 0xec, 0x90, 0x69, 0x70, 0x08,
-
  0x9f, 0xce, 0x25, 0x79, 0x07, 0x69, 0x47, 0xdb, 0xcd, 0x61, 0x78, 0x54,
-
  0xbf, 0x15, 0xba, 0x8c, 0xdc, 0x13, 0x86, 0x88, 0x97, 0x4a, 0x89, 0x51,
-
  0xa5, 0xe8, 0xd6, 0x49, 0x2f, 0xb3, 0x62, 0x59, 0x41, 0x2b, 0xb8, 0x97,
-
  0xd2, 0x76, 0xed, 0x84, 0x65, 0x5a, 0x05, 0x1a, 0x89, 0x19, 0x74, 0x2b,
-
  0x60, 0x29, 0x48, 0xdb, 0x61, 0xe9, 0x78, 0xb3, 0x5a, 0xa2, 0xfc, 0x06,
-
  0x2c, 0xdd, 0x88, 0x67, 0x74, 0xad, 0xb6, 0x47, 0xc7, 0x12, 0x1c, 0x28,
-
  0x22, 0x8e, 0xa8, 0xb6, 0x75, 0x8f, 0x32, 0x08, 0x6f, 0xf0, 0xbd, 0x4b,
-
  0x20, 0x4b, 0x3a, 0x67, 0x07, 0x8b, 0xa4, 0xaa, 0x30, 0x1a, 0xcb, 0x74,
-
  0x74, 0x17, 0x11, 0x84, 0xde, 0x74, 0x69, 0x0c, 0xf4, 0xc6, 0xb4, 0xac,
-
  0x59, 0xcd, 0xf7, 0x34, 0xfc, 0xb3, 0x97, 0xc3, 0xad, 0x00, 0xa5, 0x35,
-
  0xc3, 0xd5, 0xf1, 0x7d, 0x94, 0xb6, 0xd1, 0xc2, 0xc8, 0x91, 0xa4, 0x05,
-
  0x9a, 0x2d, 0x1d, 0xd3, 0xaf, 0xe3, 0x0f, 0x5e, 0xa4, 0xa9, 0x18, 0xc6,
-
  0xe9, 0x51, 0x94, 0x5e, 0xf1, 0xde, 0x22, 0xab, 0xa0, 0x0d, 0x0e, 0x3c,
-
  0x3a, 0x8c, 0xdc, 0x66, 0x2b, 0x76, 0xf8, 0xb6, 0x83, 0x6b, 0xec, 0x03,
-
  0x9b, 0xd5, 0x96, 0x95, 0x62, 0xa1, 0xa9, 0xd3, 0xe3, 0x57, 0x11, 0x7b,
-
  0x5b, 0x50, 0xea, 0x10, 0x77, 0xb6, 0xc6, 0x34, 0x62, 0x0c, 0x52, 0xed,
-
  0xf8, 0x08, 0xad, 0xc1, 0x80, 0xb2, 0x50, 0x98, 0xf0, 0x69, 0x74, 0x6c,
-
  0xf2, 0x44, 0x7b, 0x30, 0x85, 0xc2, 0x36, 0x8e, 0x41, 0x7d, 0xbd, 0x80,
-
  0xae, 0x67, 0x36, 0xfc, 0xa3, 0x2d, 0x37, 0xcc, 0x6a, 0xb2, 0x54, 0xa1,
-
  0xf1, 0xdd, 0x69, 0xd3, 0xdb, 0x7a, 0x76, 0x07, 0xa3, 0x22, 0x70, 0x9e,
-
  0x67, 0xbf, 0x8b, 0xe1, 0x24, 0xcd, 0x2f, 0xb3, 0xb2, 0xc8, 0x89, 0x9d,
-
  0x53, 0x28, 0xd6, 0x48, 0x0c, 0x07, 0x93, 0x68, 0xe3, 0xe8, 0xed, 0x9b,
-
  0x97, 0xef, 0x8e, 0x0e, 0xdf, 0x7d, 0xf7, 0xf6, 0xf5, 0xb3, 0x97, 0xc7,
-
  0x1b, 0xed, 0x00, 0xb7, 0xa9, 0x78, 0x7d, 0x2b, 0x34, 0xdd, 0x91, 0xd3,
-
  0xbf, 0x92, 0x46, 0x39, 0x96, 0x93, 0x4c, 0x46, 0x09, 0xb9, 0xf4, 0xc9,
-
  0x24, 0x07, 0x9b, 0x85, 0x2a, 0x93, 0xae, 0x78, 0xab, 0xb9, 0xd1, 0x12,
-
  0x0d, 0x0c, 0xc2, 0x1b, 0x64, 0xf2, 0x7a, 0x90, 0xc5, 0xb5, 0xa0, 0xe3,
-
  0x0b, 0xdf, 0xf8, 0x57, 0x12, 0x8a, 0x67, 0x0c, 0xd9, 0x74, 0x59, 0x5a,
-
  0x1b, 0x03, 0x1c, 0xe8, 0x02, 0x9d, 0x62, 0xbc, 0x94, 0x18, 0x19, 0x25,
-
  0xd1, 0xbb, 0x47, 0x87, 0x81, 0xed, 0xae, 0xac, 0x09, 0x05, 0x56, 0x02,
-
  0x5b, 0x01, 0xfa, 0x8d, 0x65, 0x90, 0xe3, 0xb2, 0xde, 0xe8, 0x47, 0x69,
-
  0x46, 0xc7, 0x56, 0x93, 0x2a, 0xf0, 0x82, 0x22, 0x67, 0xae, 0x17, 0x71,
-
  0x86, 0x91, 0x58, 0x09, 0xd3, 0xf5, 0x20, 0xfd, 0x90, 0x12, 0x5f, 0x90,
-
  0xb7, 0x8e, 0x96, 0x25, 0x71, 0x9b, 0x9f, 0x40, 0x1d, 0xc5, 0x93, 0xfd,
-
  0x4c, 0x43, 0xb7, 0xf4, 0x21, 0x10, 0xe4, 0xdb, 0x77, 0x5d, 0x31, 0x23,
-
  0xb9, 0x86, 0xdc, 0x3d, 0xe4, 0x2e, 0x3d, 0x3d, 0x3c, 0x7b, 0x1e, 0xba,
-
  0xf0, 0x9a, 0x64, 0x48, 0x62, 0x65, 0xa5, 0xfe, 0xe9, 0xd7, 0xc3, 0x61,
-
  0x44, 0x89, 0x64, 0x98, 0x64, 0x55, 0x26, 0xd8, 0xa1, 0xf3, 0x05, 0x50,
-
  0x75, 0x9b, 0xf9, 0xfc, 0xf5, 0x68, 0xf8, 0x87, 0xdd, 0x5d, 0x34, 0x3f,
-
  0x2d, 0x61, 0x5d, 0x36, 0xe1, 0xad, 0xbc, 0x82, 0x93, 0x39, 0x1f, 0x54,
-
  0xc5, 0x96, 0xc4, 0xdc, 0xb2, 0x3e, 0x98, 0x5c, 0x82, 0xba, 0x45, 0x64,
-
  0xa4, 0x44, 0xdd, 0x11, 0x85, 0x67, 0x32, 0xec, 0x80, 0x5f, 0x80, 0xc2,
-
  0x36, 0xf3, 0x2d, 0x49, 0x9b, 0xd9, 0x09, 0x27, 0xec, 0xcd, 0x93, 0x31,
-
  0xfc, 0x86, 0xae, 0x8c, 0xad, 0xee, 0x89, 0x0d, 0xd9, 0x1a, 0xc1, 0xc1,
-
  0x92, 0x94, 0x5e, 0xe7, 0x73, 0x85, 0x3c, 0x60, 0x9a, 0xb2, 0x51, 0x63,
-
  0x38, 0xe0, 0x51, 0x32, 0x7e, 0x7f, 0x95, 0x94, 0x14, 0x4f, 0x0b, 0x74,
-
  0x9b, 0x8d, 0xb2, 0x59, 0x56, 0xb3, 0x3f, 0xb9, 0x2d, 0x3c, 0xd1, 0xf6,
-
  0xe3, 0x1a, 0xa6, 0xf9, 0x79, 0x96, 0xa3, 0xec, 0x80, 0x86, 0xa9, 0xac,
-
  0x76, 0x6d, 0xc2, 0xa4, 0x20, 0x8b, 0x93, 0xd7, 0x71, 0x53, 0x46, 0xbe,
-
  0x2c, 0xc6, 0xbe, 0x79, 0x3c, 0x4b, 0x3c, 0x50, 0x4b, 0xb9, 0xca, 0x08,
-
  0x5d, 0x3e, 0x65, 0xc8, 0xee, 0x1a, 0x74, 0xa9, 0x79, 0xc0, 0x46, 0x40,
-
  0x22, 0xc4, 0x5f, 0xd3, 0xeb, 0xf1, 0x05, 0x72, 0x3c, 0xc3, 0x28, 0x0d,
-
  0x6b, 0xec, 0x8b, 0x2d, 0x22, 0xd3, 0xe8, 0x8b, 0x54, 0x22, 0x66, 0xe4,
-
  0xaa, 0xf3, 0x05, 0x4f, 0x6e, 0x40, 0x0d, 0x31, 0xd8, 0xc6, 0x46, 0xd5,
-
  0x60, 0xc9, 0xd4, 0x95, 0xbf, 0x89, 0x43, 0xf4, 0x27, 0xe7, 0xe9, 0x4c,
-
  0xf6, 0xef, 0xac, 0xc9, 0xdd, 0x9a, 0xab, 0x6f, 0x9e, 0x85, 0x31, 0x4b,
-
  0x6c, 0x6d, 0xab, 0xb9, 0xc7, 0x94, 0xd0, 0x43, 0xee, 0x77, 0xce, 0x1e,
-
  0x93, 0xf4, 0xc2, 0xc7, 0x83, 0x47, 0x3b, 0xe6, 0xab, 0x41, 0xbb, 0x17,
-
  0xdb, 0x8d, 0x77, 0x9a, 0x56, 0x6e, 0xb9, 0xbf, 0xc9, 0x5f, 0x19, 0xf5,
-
  0x95, 0xb8, 0x5f, 0xab, 0x39, 0xd7, 0xcc, 0x22, 0x57, 0x98, 0x4c, 0x63,
-
  0x03, 0x04, 0xe5, 0x02, 0x8d, 0x65, 0xd3, 0xa8, 0x2c, 0x60, 0xab, 0x1b,
-
  0x9b, 0xb9, 0x49, 0xa4, 0x31, 0xf1, 0x64, 0x26, 0xe1, 0xe6, 0xce, 0xc2,
-
  0x6c, 0x05, 0xcd, 0xad, 0xe6, 0x72, 0x5d, 0x25, 0xd8, 0x1a, 0x8b, 0x69,
-
  0xd3, 0x59, 0xd0, 0xe6, 0xc3, 0x2a, 0xd4, 0xae, 0x25, 0xd3, 0x4a, 0xf7,
-
  0x47, 0x87, 0xa4, 0x70, 0xde, 0xc1, 0xee, 0x39, 0x4e, 0xf8, 0xba, 0x40,
-
  0x91, 0xf5, 0x3d, 0x8a, 0x40, 0xb0, 0xca, 0x74, 0x9e, 0x9b, 0x12, 0x04,
-
  0x3d, 0xf4, 0x14, 0xd8, 0xec, 0xc7, 0x0b, 0x10, 0x4e, 0x98, 0xac, 0x7f,
-
  0xa7, 0xca, 0x61, 0xe1, 0x23, 0xcb, 0x92, 0x44, 0xf4, 0x4a, 0x85, 0x06,
-
  0x1c, 0x44, 0xa5, 0x16, 0x64, 0xb3, 0xda, 0xa3, 0x6b, 0x75, 0xc8, 0xfb,
-
  0x76, 0x2a, 0x8a, 0x81, 0x67, 0xbf, 0xed, 0x41, 0x2f, 0xda, 0x4c, 0x07,
-
  0xe7, 0xd0, 0x5e, 0x0f, 0xdb, 0xd9, 0x3d, 0xc0, 0x7f, 0xf7, 0xe8, 0xdf,
-
  0xfd, 0xde, 0x96, 0xa4, 0x25, 0xbb, 0xb4, 0x81, 0xc2, 0x86, 0xbf, 0x47,
-
  0x4d, 0xd9, 0x83, 0xef, 0xdf, 0xac, 0x8b, 0x33, 0xb2, 0x05, 0xe3, 0x25,
-
  0x93, 0x80, 0x2f, 0xac, 0xea, 0x32, 0xcc, 0xd9, 0xd0, 0x7f, 0x99, 0xb2,
-
  0xa7, 0x01, 0x66, 0x86, 0x91, 0xf2, 0xe9, 0xc4, 0x71, 0xbf, 0x8d, 0xdf,
-
  0x95, 0x29, 0x88, 0x99, 0x17, 0xd1, 0xb2, 0xe6, 0x43, 0x02, 0xe7, 0xaa,
-
  0xdd, 0xdc, 0x62, 0x96, 0x59, 0x6f, 0x9a, 0x74, 0x3d, 0x30, 0xe1, 0xd2,
-
  0x66, 0x17, 0x39, 0xa0, 0x64, 0x56, 0x5c, 0xe9, 0x33, 0xb1, 0x64, 0x0d,
-
  0x87, 0xc4, 0x16, 0xd8, 0x4d, 0x72, 0x48, 0xe0, 0x63, 0x6e, 0x8e, 0xd1,
-
  0x1c, 0xc5, 0x71, 0x4c, 0x69, 0x8e, 0x50, 0xe0, 0xcd, 0xc6, 0x68, 0x72,
-
  0x9c, 0xd1, 0xbe, 0xa1, 0x71, 0x75, 0x19, 0x08, 0xf3, 0x37, 0xb4, 0x9a,
-
  0x4d, 0xc5, 0xff, 0x2d, 0x7f, 0xd3, 0x7d, 0x2f, 0x12, 0x62, 0xc5, 0x19,
-
  0x48, 0x20, 0xaa, 0x34, 0x64, 0xc3, 0xc0, 0xd1, 0x6b, 0xc9, 0x6a, 0xc4,
-
  0xbf, 0x5d, 0xb5, 0x46, 0x26, 0xdb, 0xf4, 0xcd, 0x89, 0x1d, 0x6a, 0xd0,
-
  0x71, 0x92, 0x59, 0x5c, 0xfa, 0x6c, 0x27, 0x99, 0xba, 0xdf, 0x26, 0x9b,
-
  0xd1, 0xb6, 0x3d, 0x23, 0xeb, 0x1e, 0x67, 0x5a, 0xd3, 0x1b, 0x8e, 0x33,
-
  0x3c, 0x12, 0xa3, 0xf7, 0x76, 0x59, 0xdd, 0xe2, 0x34, 0x3b, 0xf7, 0x17,
-
  0xbf, 0xa3, 0xd1, 0x38, 0x1a, 0x9d, 0xeb, 0x6c, 0x55, 0x7b, 0x25, 0xae,
-
  0x1d, 0x12, 0x3e, 0x72, 0x78, 0xc0, 0x90, 0x1b, 0x7a, 0x23, 0xde, 0x86,
-
  0xcd, 0xe4, 0x7d, 0x32, 0x88, 0x4e, 0x8e, 0x86, 0xa7, 0xd8, 0xc5, 0x02,
-
  0xc3, 0x73, 0xb7, 0x30, 0x76, 0xb7, 0xd5, 0x1c, 0x28, 0x58, 0x69, 0x5e,
-
  0x35, 0x20, 0x00, 0x3a, 0x09, 0x42, 0x03, 0x46, 0x34, 0xe1, 0xa0, 0x11,
-
  0x57, 0x4b, 0x81, 0xbd, 0xb0, 0x7f, 0x19, 0x1c, 0x17, 0x62, 0x0a, 0x5e,
-
  0x47, 0x0b, 0x58, 0xff, 0xc9, 0x96, 0xf1, 0x7a, 0xf4, 0x95, 0x6a, 0x4d,
-
  0xb8, 0x5e, 0xb5, 0x3c, 0x47, 0x5d, 0xb3, 0x52, 0x6b, 0xa7, 0xe9, 0x61,
-
  0xec, 0x84, 0x09, 0x18, 0xa1, 0x4b, 0xa6, 0x6d, 0x9c, 0x89, 0xa0, 0x1d,
-
  0x63, 0x12, 0x2a, 0x09, 0x9b, 0x79, 0x61, 0x5b, 0xa5, 0x70, 0x8b, 0x99,
-
  0x84, 0x9f, 0x6b, 0x22, 0x59, 0x40, 0x9c, 0xe2, 0x4d, 0x51, 0x1d, 0x79,
-
  0x2a, 0xd9, 0xf9, 0x01, 0x57, 0x0a, 0x35, 0x34, 0x66, 0x61, 0xd7, 0x44,
-
  0xa5, 0x64, 0x48, 0x48, 0xa8, 0x79, 0xb0, 0x55, 0x02, 0xdb, 0x33, 0x9c,
-
  0xea, 0x87, 0x7c, 0x89, 0x81, 0xfd, 0xbe, 0x5c, 0x83, 0xf2, 0x29, 0x5e,
-
  0xd8, 0xb8, 0x80, 0x2b, 0x55, 0x64, 0x87, 0xba, 0x1c, 0x7d, 0x8f, 0x35,
-
  0x65, 0x5a, 0x01, 0x9c, 0xb1, 0x28, 0xcb, 0x46, 0x5b, 0x6e, 0x25, 0x08,
-
  0x48, 0xc8, 0x61, 0xc0, 0x28, 0xeb, 0xb4, 0xbe, 0xae, 0xfd, 0xc7, 0x1d,
-
  0xd8, 0x9a, 0x8a, 0x75, 0x06, 0x9c, 0x6f, 0xb2, 0x58, 0x8e, 0xde, 0xa7,
-
  0xd7, 0x0d, 0x73, 0xce, 0x83, 0xdd, 0xa6, 0x39, 0x87, 0xba, 0x00, 0xbd,
-
  0x31, 0x8d, 0x9e, 0xe2, 0xbf, 0xe1, 0xcb, 0x52, 0xce, 0x97, 0xe8, 0x85,
-
  0x14, 0x08, 0x4e, 0xaf, 0x48, 0x80, 0x25, 0x73, 0x1e, 0xf6, 0xe2, 0x34,
-
  0x2e, 0x4e, 0x4f, 0xe8, 0xa1, 0xb3, 0x35, 0xc0, 0xeb, 0xa8, 0x1f, 0x3d,
-
  0x43, 0x00, 0x90, 0xe3, 0xd7, 0x3f, 0x10, 0xc1, 0x9f, 0xee, 0xee, 0x51,
-
  0xa8, 0x8c, 0xd1, 0x39, 0x27, 0xd4, 0x43, 0xd8, 0x4a, 0xaa, 0x1c, 0x93,
-
  0xc6, 0xc0, 0xa9, 0x3c, 0x26, 0xff, 0x1d, 0x49, 0x41, 0x36, 0x9d, 0x6f,
-
  0x3a, 0x6b, 0x1c, 0xa2, 0x6e, 0xdb, 0xce, 0x40, 0x89, 0xde, 0xe0, 0xbc,
-
  0x57, 0x4f, 0x2f, 0x10, 0x5f, 0xa6, 0x95, 0x35, 0x49, 0x8d, 0x85, 0xc1,
-
  0x92, 0x98, 0x1e, 0x1f, 0xf7, 0xfd, 0x2b, 0x83, 0x2e, 0x0c, 0x52, 0x65,
-
  0xdf, 0x8f, 0xab, 0xdd, 0xdd, 0x83, 0xe8, 0xed, 0x9b, 0x17, 0x2c, 0xa6,
-
  0xe3, 0x5c, 0x5b, 0xa6, 0x2c, 0x9c, 0x41, 0xd8, 0x00, 0x69, 0xf7, 0xe5,
-
  0x73, 0x1a, 0x20, 0xed, 0x28, 0x50, 0x82, 0x90, 0xd9, 0xd1, 0xf5, 0xb7,
-
  0x16, 0x39, 0x1e, 0xf7, 0xe5, 0x5d, 0xfc, 0x09, 0x14, 0x29, 0x3e, 0x26,
-
  0xf8, 0x2d, 0x6e, 0xae, 0x80, 0x7d, 0x32, 0x7a, 0xea, 0x10, 0xd2, 0x3f,
-
  0x8c, 0x9d, 0xe9, 0xd7, 0xdb, 0x10, 0x68, 0x58, 0xa0, 0xf3, 0xc9, 0x13,
-
  0x27, 0x12, 0x32, 0xe1, 0x6b, 0x22, 0x0f, 0x87, 0x61, 0xf3, 0x51, 0x66,
-
  0x60, 0x1a, 0x82, 0xaf, 0x41, 0x16, 0x98, 0xe4, 0x46, 0xdc, 0x8f, 0x39,
-
  0xdf, 0x9a, 0x72, 0xb9, 0xda, 0x7c, 0x74, 0x5c, 0xcc, 0x24, 0x2f, 0xa0,
-
  0xd1, 0xb1, 0x6b, 0x15, 0x22, 0x6d, 0x79, 0x4f, 0xa4, 0x33, 0x64, 0xda,
-
  0x7c, 0xff, 0x30, 0x29, 0xb6, 0x89, 0xdf, 0xe8, 0xab, 0x14, 0x68, 0x6e,
-
  0x84, 0x3a, 0xfb, 0x1a, 0x85, 0xb9, 0xd2, 0xc8, 0x58, 0x09, 0x69, 0xa8,
-
  0x93, 0x21, 0xd5, 0x1a, 0x43, 0x86, 0x8c, 0x11, 0x4f, 0x93, 0xa3, 0x74,
-
  0xd1, 0x1a, 0x2e, 0x33, 0xb8, 0xf8, 0x4a, 0x4d, 0x64, 0xe6, 0xc3, 0xd6,
-
  0x6e, 0x4e, 0x63, 0xc0, 0xdb, 0x4e, 0x35, 0x8d, 0x7d, 0x94, 0x3c, 0xf1,
-
  0xc4, 0xb7, 0xce, 0x85, 0xec, 0xac, 0x59, 0x25, 0xd6, 0xb9, 0x32, 0xbb,
-
  0xc4, 0x07, 0x95, 0x6e, 0xac, 0xc7, 0xb8, 0xa9, 0x52, 0x16, 0x39, 0xfe,
-
  0xcc, 0xd9, 0xad, 0xe7, 0x40, 0xc3, 0xf8, 0xa4, 0x65, 0xa8, 0x8f, 0x82,
-
  0x0e, 0x24, 0x18, 0x86, 0x04, 0x6f, 0x44, 0x13, 0x10, 0x1c, 0x98, 0x80,
-
  0x91, 0xe1, 0x05, 0xb3, 0x18, 0x97, 0x32, 0xbf, 0x89, 0x70, 0x3b, 0x6c,
-
  0x30, 0xa4, 0xf1, 0x78, 0xf4, 0xc5, 0x75, 0x4f, 0x5b, 0x2d, 0x60, 0x04,
-
  0x81, 0x5b, 0xd1, 0xc6, 0x7d, 0x45, 0x24, 0xf0, 0xa3, 0xf5, 0xa7, 0xf7,
-
  0x0b, 0xfc, 0xa2, 0x79, 0xee, 0xcc, 0x71, 0xd4, 0x2f, 0x2f, 0xac, 0x91,
-
  0x62, 0xf6, 0xdb, 0xcd, 0x99, 0x5d, 0x9c, 0xa4, 0xb3, 0x6c, 0x9e, 0x91,
-
  0x6e, 0x3b, 0xd4, 0x5c, 0x67, 0x8e, 0x1e, 0xa5, 0xc1, 0xf0, 0x58, 0x78,
-
  0x19, 0x4d, 0xe7, 0xbd, 0x5f, 0x7a, 0x6d, 0x5b, 0x21, 0x0e, 0xe4, 0x97,
-
  0x9b, 0x07, 0x62, 0xa0, 0x16, 0x56, 0x87, 0xb0, 0x39, 0x48, 0x53, 0x4d,
-
  0x8d, 0x03, 0xc7, 0x81, 0x37, 0x35, 0x2a, 0xce, 0x62, 0x60, 0xd2, 0xc8,
-
  0x00, 0x43, 0x3a, 0xed, 0x53, 0x05, 0x7d, 0xd6, 0x98, 0x13, 0xc1, 0x02,
-
  0x1f, 0x46, 0x03, 0x64, 0xe3, 0xf7, 0x9c, 0x2f, 0x3e, 0x6d, 0xdb, 0x3f,
-
  0x94, 0x1b, 0x08, 0xe6, 0x45, 0x60, 0xe1, 0xc8, 0x8e, 0x85, 0x61, 0x0a,
-
  0x78, 0x90, 0x91, 0x35, 0x67, 0xb9, 0xf5, 0xf5, 0x05, 0xad, 0x9e, 0x30,
-
  0xd6, 0x77, 0xcf, 0x5e, 0xbc, 0x89, 0x36, 0xd1, 0x24, 0xd0, 0xb6, 0xba,
-
  0x29, 0x6f, 0xdf, 0x4e, 0xeb, 0xf1, 0xf6, 0xe2, 0x7d, 0xb6, 0x9d, 0x57,
-
  0xd5, 0x64, 0xb4, 0x65, 0x3c, 0xd6, 0x6a, 0x36, 0xb3, 0x96, 0x32, 0x35,
-
  0x95, 0x91, 0xad, 0xac, 0x7d, 0x48, 0x1d, 0xdb, 0x19, 0x5e, 0x2b, 0xc6,
-
  0x64, 0x46, 0x6b, 0x44, 0x2c, 0x80, 0x02, 0x9d, 0x38, 0x9e, 0x9c, 0xc2,
-
  0xa3, 0x02, 0x6c, 0xde, 0x49, 0xc6, 0x10, 0x14, 0x0d, 0xcc, 0xc6, 0x40,
-
  0xe9, 0x9d, 0x70, 0x95, 0x32, 0xc6, 0x09, 0xa1, 0x95, 0x13, 0x33, 0xe3,
-
  0xc4, 0x9a, 0x17, 0xe1, 0xc5, 0x50, 0x6c, 0x86, 0x84, 0x19, 0x9b, 0x40,
-
  0x4a, 0x56, 0x5a, 0x07, 0xdb, 0x3d, 0x64, 0x6b, 0x0c, 0xde, 0x62, 0x62,
-
  0xc8, 0xe0, 0x70, 0x4e, 0x97, 0x6c, 0x6a, 0x0d, 0x98, 0xc7, 0x60, 0x3b,
-
  0x71, 0x51, 0xcc, 0x16, 0xe8, 0x6e, 0x76, 0xd3, 0x51, 0x97, 0xde, 0x6a,
-
  0x4d, 0x94, 0xca, 0x29, 0x98, 0x0d, 0xca, 0x65, 0xec, 0x73, 0x18, 0xb3,
-
  0x9e, 0x7d, 0x5e, 0xd0, 0xc4, 0x6c, 0x0a, 0x5e, 0xdb, 0x9b, 0x08, 0xf0,
-
  0xf4, 0xf8, 0xe1, 0xee, 0xde, 0x56, 0x23, 0x0a, 0x4c, 0xb8, 0x86, 0x97,
-
  0xc7, 0x8d, 0x66, 0x80, 0xa4, 0xc9, 0xe9, 0x51, 0x37, 0x12, 0xa1, 0xd5,
-
  0x36, 0x3d, 0x49, 0xd1, 0x51, 0x09, 0x62, 0x99, 0x7a, 0x44, 0x47, 0x29,
-
  0x0c, 0xd2, 0xdb, 0x78, 0x83, 0xb4, 0xd2, 0x13, 0x51, 0xa2, 0x67, 0xd5,
-
  0x42, 0x4c, 0xf2, 0x83, 0x0d, 0xa8, 0xe5, 0x0c, 0xba, 0xa3, 0x1e, 0xf0,
-
  0x3a, 0x25, 0x1d, 0x66, 0x59, 0x9c, 0x97, 0x23, 0x52, 0xf4, 0x6d, 0x18,
-
  0x4e, 0x1c, 0xcb, 0x62, 0x09, 0xbf, 0x36, 0x11, 0x88, 0x18, 0xaf, 0xde,
-
  0x96, 0xe4, 0x64, 0x4c, 0x3d, 0xbc, 0x7a, 0x72, 0x0a, 0xac, 0x4b, 0x1c,
-
  0x39, 0x45, 0x57, 0xdf, 0x95, 0x20, 0x9a, 0xad, 0x06, 0xa2, 0x52, 0x91,
-
  0xe3, 0x80, 0x8c, 0x14, 0x6e, 0x32, 0x6c, 0xf1, 0x5d, 0xdb, 0xe4, 0xbb,
-
  0xda, 0xe2, 0xdb, 0x66, 0x1d, 0xb2, 0x3d, 0xb8, 0xf7, 0x62, 0xc2, 0x1f,
-
  0xa5, 0x92, 0xaa, 0xcf, 0xbc, 0xc6, 0x5c, 0x65, 0xde, 0xc5, 0x0f, 0xaf,
-
  0x6f, 0xeb, 0xcd, 0x45, 0x57, 0x57, 0xd3, 0x0a, 0x8b, 0xb9, 0xa7, 0x68,
-
  0x76, 0x7d, 0x2f, 0x66, 0x57, 0xba, 0xd0, 0xcd, 0x51, 0xf2, 0x1d, 0x37,
-
  0x2a, 0x27, 0xc4, 0x84, 0x02, 0xd1, 0xb2, 0x4f, 0xe1, 0x22, 0x38, 0xb7,
-
  0xa4, 0x93, 0x27, 0x44, 0x29, 0x6b, 0x61, 0xb7, 0x12, 0x52, 0x2a, 0xdf,
-
  0xbd, 0xc6, 0x25, 0x1e, 0x38, 0xfb, 0x20, 0xda, 0x25, 0x84, 0xe8, 0x07,
-
  0x9a, 0xdd, 0x24, 0xd5, 0x9c, 0x82, 0x36, 0x2d, 0xe0, 0xa1, 0x67, 0x76,
-
  0xd0, 0x5f, 0x79, 0xf8, 0x25, 0xa0, 0xbf, 0xf3, 0x7c, 0xb7, 0x0d, 0xc0,
-
  0x47, 0xde, 0x35, 0x5f, 0x19, 0xd9, 0xc9, 0x4a, 0x76, 0x14, 0x1b, 0x40,
-
  0x0b, 0xe7, 0x2b, 0xc5, 0x25, 0x67, 0xc0, 0x1a, 0x97, 0x52, 0xc3, 0xac,
-
  0x47, 0x66, 0x56, 0x38, 0x2e, 0x9b, 0x2f, 0x25, 0xa3, 0xf7, 0xf4, 0xfb,
-
  0x9f, 0x9d, 0x04, 0x71, 0xcf, 0x5a, 0x45, 0x56, 0xe1, 0xaf, 0x4c, 0x2e,
-
  0x09, 0x28, 0xa5, 0xa8, 0x22, 0x64, 0x92, 0xb2, 0xc7, 0x46, 0x5b, 0x0a,
-
  0x4e, 0xdc, 0xb2, 0x09, 0x69, 0xb8, 0xd4, 0xbd, 0xa7, 0xf4, 0x5d, 0xdb,
-
  0x2d, 0x2d, 0x88, 0x2f, 0xdf, 0xfc, 0xc2, 0x5f, 0x33, 0xe0, 0x0e, 0xfc,
-
  0x55, 0x5f, 0x2c, 0xe7, 0x23, 0xd8, 0xcf, 0xbc, 0xfe, 0xa6, 0x17, 0x71,
-
  0xe8, 0xdb, 0x54, 0xd6, 0x73, 0x85, 0xe5, 0x42, 0xee, 0xb6, 0x48, 0x29,
-
  0xac, 0xb9, 0x6a, 0x3c, 0x3a, 0xc5, 0xf7, 0x71, 0xf0, 0x7e, 0xa2, 0x1e,
-
  0x3b, 0x96, 0x3c, 0xd9, 0xf0, 0x2d, 0x90, 0xe7, 0x2f, 0xaf, 0xfe, 0xfe,
-
  0xcb, 0x97, 0xfb, 0x0f, 0x92, 0xc7, 0xc9, 0xf8, 0xd1, 0xf4, 0x49, 0xf2,
-
  0x70, 0xf2, 0xf0, 0xf1, 0x97, 0x7b, 0x4f, 0x1e, 0x26, 0x8f, 0x1f, 0x4c,
-
  0x93, 0x47, 0xbb, 0xe9, 0xee, 0x97, 0xd3, 0xbd, 0xfd, 0xc9, 0x64, 0x9a,
-
  0x3e, 0x99, 0x3c, 0x4e, 0x7a, 0x03, 0xd2, 0xce, 0x74, 0xe8, 0x3e, 0xab,
-
  0x55, 0x35, 0x2c, 0x89, 0x86, 0xcf, 0x0f, 0xe3, 0xdd, 0xe8, 0x22, 0xfd,
-
  0xa0, 0x07, 0x8c, 0xfd, 0x0b, 0x26, 0x47, 0x27, 0x65, 0xa3, 0xe5, 0x8a,
-
  0xc9, 0x2a, 0xbe, 0x5f, 0x14, 0x7d, 0x6f, 0x32, 0x2e, 0x64, 0x03, 0x74,
-
  0x59, 0x39, 0xf5, 0xc2, 0x18, 0xf3, 0x0f, 0xd4, 0x81, 0x86, 0xf3, 0x6a,
-
  0x1f, 0xfe, 0x97, 0x68, 0xc1, 0x7a, 0x95, 0x8c, 0x2f, 0x08, 0x23, 0x46,
-
  0x1e, 0x1c, 0x72, 0x3c, 0x49, 0x3f, 0x92, 0x5f, 0x50, 0xdf, 0x72, 0xda,
-
  0xf8, 0xa1, 0x2c, 0x96, 0x8b, 0xd3, 0x62, 0x96, 0x8d, 0xaf, 0x57, 0x35,
-
  0xe7, 0x3e, 0xd6, 0xf8, 0xe2, 0x98, 0x59, 0x78, 0x56, 0x85, 0x15, 0x40,
-
  0x2b, 0xad, 0x7e, 0x2e, 0xeb, 0x1e, 0xf6, 0x8d, 0xff, 0x10, 0x93, 0x60,
-
  0x71, 0x19, 0xfe, 0xbf, 0xbe, 0xf2, 0x67, 0xaf, 0x80, 0x1b, 0xb5, 0xbf,
-
  0x78, 0x9c, 0x2d, 0x08, 0xc2, 0xea, 0x29, 0x65, 0x21, 0x01, 0x83, 0x95,
-
  0x0f, 0xc2, 0x5a, 0xdf, 0x50, 0x58, 0x40, 0x25, 0x04, 0xa4, 0x6f, 0x8b,
-
  0xc4, 0x97, 0x29, 0x00, 0x90, 0x1a, 0x81, 0x25, 0xf9, 0x2d, 0xf3, 0xac,
-
  0xe4, 0xe4, 0xfe, 0x95, 0x97, 0x45, 0x62, 0x57, 0xb5, 0x20, 0x62, 0xa3,
-
  0x9b, 0x7c, 0x3b, 0x60, 0x28, 0x99, 0xe5, 0x02, 0x35, 0x20, 0x02, 0xd7,
-
  0xa4, 0xcf, 0xdb, 0x27, 0x1b, 0x07, 0x2f, 0x24, 0xca, 0xaa, 0x12, 0xec,
-
  0xe1, 0xdb, 0x37, 0x2f, 0x0f, 0xda, 0x8b, 0xe4, 0x65, 0x38, 0x4e, 0x8a,
-
  0x71, 0xb5, 0x5d, 0x55, 0x33, 0x5d, 0x08, 0x82, 0x01, 0x0c, 0xdb, 0x07,
-
  0x64, 0xb8, 0xeb, 0x51, 0xc7, 0x3d, 0x92, 0x87, 0xf4, 0x7f, 0x7c, 0xf4,
-
  0xec, 0xf9, 0x71, 0x0c, 0xff, 0x0e, 0x0f, 0xe3, 0xc3, 0xe3, 0xe1, 0xde,
-
  0xc3, 0x47, 0xf1, 0xd1, 0xd1, 0xab, 0x27, 0x6b, 0x92, 0x48, 0x3d, 0xab,
-
  0x2e, 0x77, 0x07, 0xfb, 0x0d, 0x52, 0x28, 0xe6, 0xc4, 0xbd, 0xd3, 0x49,
-
  0x5c, 0x55, 0x5e, 0xc0, 0x3a, 0xc2, 0x4b, 0x70, 0xc8, 0xe9, 0xb1, 0xe4,
-
  0x76, 0xd0, 0x75, 0x1f, 0x67, 0x39, 0x21, 0x42, 0xe8, 0xcb, 0x9a, 0x41,
-
  0xc7, 0x41, 0x44, 0x26, 0x58, 0xbc, 0x1f, 0x70, 0xa8, 0x26, 0x72, 0x6f,
-
  0x7d, 0xe5, 0x9a, 0x46, 0x51, 0xaa, 0x2e, 0x4a, 0x03, 0x54, 0x34, 0x29,
-
  0x1a, 0x00, 0x07, 0x21, 0x53, 0x62, 0x63, 0xd4, 0x1d, 0x61, 0x37, 0x77,
-
  0x37, 0x25, 0x36, 0x5a, 0x5f, 0xdb, 0x98, 0xd3, 0x1c, 0x5b, 0xb5, 0x4e,
-
  0x70, 0xa7, 0xf3, 0x72, 0x33, 0x43, 0xe7, 0x51, 0xcb, 0x9c, 0x68, 0x1e,
-
  0x0b, 0x87, 0x88, 0xa9, 0xfd, 0x3c, 0x89, 0xec, 0x93, 0xd6, 0x98, 0xac,
-
  0x88, 0x4e, 0x46, 0x8f, 0x33, 0x91, 0x96, 0x55, 0xc8, 0xd5, 0xa3, 0xc0,
-
  0x1e, 0x2c, 0xed, 0x37, 0xa3, 0x36, 0x10, 0x20, 0x8b, 0x3b, 0x70, 0x31,
-
  0xb7, 0xbc, 0x25, 0x7b, 0xa3, 0x5d, 0x4b, 0x54, 0xa6, 0x01, 0x02, 0xd5,
-
  0xe4, 0x19, 0xb6, 0x08, 0x51, 0x12, 0x4e, 0x9f, 0xd0, 0xe7, 0x50, 0x3a,
-
  0xc5, 0x26, 0xaf, 0x29, 0xcd, 0xb0, 0x2d, 0x09, 0x39, 0x82, 0x79, 0x2f,
-
  0x32, 0x18, 0x6d, 0x68, 0x7c, 0xe4, 0xbd, 0x4c, 0x6a, 0x93, 0x12, 0x4e,
-
  0xb1, 0x6a, 0xdc, 0xd2, 0x3c, 0x3b, 0xbf, 0xc0, 0xec, 0x7c, 0x4f, 0xe2,
-
  0x48, 0x93, 0x52, 0x63, 0xe7, 0x93, 0x6b, 0x13, 0x3b, 0xd9, 0x00, 0x11,
-
  0xab, 0xa2, 0xcd, 0xaa, 0x86, 0x53, 0xbd, 0xe5, 0xac, 0xe8, 0x57, 0x11,
-
  0x03, 0xe7, 0xf8, 0x22, 0xc2, 0x14, 0x13, 0xda, 0x24, 0x49, 0x28, 0x99,
-
  0x21, 0xe4, 0xc7, 0x35, 0xdb, 0xf7, 0xed, 0x7a, 0x75, 0xa8, 0x8f, 0x8d,
-
  0x60, 0x08, 0x0d, 0x88, 0xed, 0xf2, 0x55, 0x2c, 0x73, 0xeb, 0xac, 0xf7,
-
  0x65, 0x0b, 0x85, 0x2e, 0xb3, 0x71, 0x0b, 0x65, 0x4a, 0xa2, 0x14, 0xca,
-
  0xd9, 0x65, 0x59, 0x94, 0x83, 0xc0, 0x91, 0xb5, 0x87, 0x34, 0xf6, 0x84,
-
  0x81, 0xd5, 0x87, 0x36, 0x9d, 0x65, 0xf8, 0x31, 0x25, 0x22, 0xac, 0x98,
-
  0x64, 0xf8, 0x18, 0xdf, 0x7b, 0x8c, 0xf6, 0x8a, 0x11, 0xdc, 0xfa, 0xfc,
-
  0xae, 0x7b, 0x01, 0x77, 0xb0, 0x8d, 0xf8, 0xaf, 0x12, 0xa2, 0x3d, 0xcd,
-
  0xce, 0xc3, 0xc1, 0x76, 0x36, 0x53, 0xac, 0xc6, 0x7c, 0x5e, 0x8d, 0xa4,
-
  0x43, 0xba, 0x11, 0x83, 0x8e, 0xda, 0xbb, 0x2a, 0xd6, 0x23, 0x8c, 0xb5,
-
  0x93, 0xb3, 0xa2, 0xbc, 0x8b, 0x11, 0xc1, 0x0e, 0xdd, 0x57, 0x30, 0xad,
-
  0x26, 0x32, 0x71, 0xda, 0xa6, 0x8f, 0x46, 0x96, 0x16, 0x62, 0x0d, 0x13,
-
  0x3b, 0x68, 0x5b, 0x5a, 0xd0, 0x07, 0x6c, 0x6f, 0xbf, 0x95, 0x48, 0xb1,
-
  0x2d, 0xb0, 0x00, 0xa1, 0xdb, 0x8c, 0xf0, 0x98, 0x13, 0x42, 0x86, 0x08,
-
  0x69, 0x16, 0x85, 0x13, 0xb0, 0xc5, 0x09, 0x5e, 0xde, 0x81, 0xaa, 0x4d,
-
  0xde, 0x9f, 0x1e, 0x76, 0x52, 0x48, 0xe0, 0xf8, 0x81, 0xd8, 0x8d, 0x39,
-
  0xf2, 0x88, 0xb9, 0x3d, 0x2b, 0xac, 0x82, 0x27, 0xc8, 0x55, 0x18, 0xb3,
-
  0x3e, 0xf0, 0xe4, 0x46, 0x93, 0x38, 0x2c, 0xe0, 0x9b, 0x63, 0x93, 0xf8,
-
  0x4c, 0x4c, 0x6d, 0xa4, 0x01, 0x73, 0x56, 0xda, 0x97, 0xdd, 0x0b, 0xda,
-
  0xb2, 0x05, 0x47, 0x80, 0x61, 0x4e, 0x33, 0x82, 0xf7, 0x15, 0xc8, 0x57,
-
  0x86, 0x45, 0xd0, 0x50, 0x80, 0xaa, 0x90, 0xc4, 0x43, 0x1c, 0x28, 0x8e,
-
  0x93, 0xc7, 0xd8, 0x3e, 0xb5, 0x06, 0xce, 0xb5, 0x61, 0x0c, 0x49, 0x2a,
-
  0x8b, 0x2e, 0x50, 0x19, 0x23, 0x97, 0xe3, 0xe7, 0xd6, 0xd5, 0x0c, 0x8c,
-
  0x2e, 0xf2, 0xa1, 0x1a, 0x68, 0x24, 0x65, 0xaa, 0x5d, 0xc0, 0x51, 0x6b,
-
  0x8d, 0x4a, 0xc6, 0x11, 0xfb, 0xc6, 0x67, 0x83, 0x46, 0xe0, 0x0c, 0x40,
-
  0x51, 0x09, 0xcc, 0x36, 0x87, 0x1d, 0xb1, 0xa9, 0x7d, 0xc0, 0x3a, 0xf6,
-
  0xed, 0x1e, 0x92, 0xa1, 0x4f, 0x20, 0x96, 0x78, 0xdc, 0x07, 0x0c, 0x58,
-
  0xf9, 0xf5, 0x56, 0xc8, 0xd5, 0xe9, 0x34, 0x26, 0xd2, 0x24, 0x86, 0x61,
-
  0x80, 0xe6, 0x3e, 0x2b, 0x2a, 0x8d, 0x77, 0x80, 0x0d, 0x64, 0xdc, 0x5d,
-
  0x46, 0x72, 0x33, 0x68, 0xbc, 0xad, 0xe6, 0xf8, 0x19, 0xde, 0x1e, 0x9b,
-
  0x5c, 0x2e, 0x06, 0x57, 0x8b, 0x13, 0x4c, 0x09, 0xef, 0xc6, 0x96, 0x05,
-
  0x83, 0xfb, 0xe5, 0x17, 0xb8, 0xad, 0x7e, 0xe9, 0xb5, 0x47, 0xf7, 0x0b,
-
  0xf0, 0xd1, 0x5f, 0x80, 0x16, 0x7f, 0x61, 0xbc, 0x9b, 0x5f, 0x2e, 0xd1,
-
  0x08, 0x85, 0xee, 0xb2, 0x6a, 0x86, 0xa1, 0x1a, 0xac, 0xe6, 0x37, 0xfd,
-
  0x08, 0x8c, 0x88, 0xcc, 0x39, 0x31, 0x9e, 0x89, 0x8a, 0x63, 0x13, 0xc2,
-
  0x2b, 0xca, 0x69, 0x7a, 0xb0, 0x7b, 0xcb, 0x79, 0x2e, 0xb6, 0x12, 0xa6,
-
  0x55, 0xe2, 0x02, 0x5c, 0x72, 0x20, 0xda, 0xf8, 0xc3, 0x86, 0x43, 0x59,
-
  0xfd, 0x90, 0x79, 0xb6, 0x4c, 0x59, 0x15, 0x20, 0x71, 0x36, 0x73, 0x52,
-
  0x38, 0x15, 0x4d, 0x98, 0x0c, 0x60, 0x1c, 0x4c, 0xe5, 0x5f, 0xf0, 0x27,
-
  0xe8, 0x3e, 0x66, 0x90, 0xa1, 0xc2, 0x9a, 0xb6, 0x16, 0x78, 0xff, 0x5e,
-
  0x5c, 0x57, 0x28, 0x2c, 0xc8, 0x78, 0x8c, 0xb2, 0x80, 0x43, 0x0c, 0x46,
-
  0xc5, 0x2a, 0x33, 0xe4, 0x3d, 0xc6, 0x47, 0xc8, 0x0c, 0x84, 0x0c, 0xb1,
-
  0xc1, 0x49, 0x61, 0x3c, 0x1b, 0xf1, 0x86, 0x09, 0x44, 0x61, 0x7c, 0x56,
-
  0x3f, 0x59, 0x5d, 0x39, 0x87, 0x93, 0x9a, 0xe6, 0x75, 0xe9, 0x38, 0x52,
-
  0x0a, 0x37, 0x19, 0xae, 0x89, 0x34, 0x2c, 0x63, 0x6f, 0xf0, 0x02, 0xf6,
-
  0x3f, 0xb4, 0xf7, 0x2b, 0x25, 0xfc, 0xaa, 0xc2, 0x51, 0x6f, 0xb2, 0x3a,
-
  0x72, 0x22, 0x1e, 0xe2, 0x98, 0x0a, 0x14, 0x2c, 0xb8, 0xa8, 0x00, 0x92,
-
  0x08, 0x45, 0x26, 0x5e, 0x23, 0xb0, 0xd0, 0x62, 0xe6, 0xf1, 0x5f, 0x49,
-
  0xc7, 0x52, 0xe8, 0x65, 0x3c, 0xf0, 0x88, 0x67, 0x7a, 0x95, 0x0b, 0xfc,
-
  0xf8, 0xb0, 0x20, 0x0f, 0xd2, 0x98, 0x62, 0x1c, 0x39, 0x90, 0x56, 0x21,
-
  0x8a, 0x02, 0x56, 0x29, 0x94, 0x30, 0x3c, 0x15, 0x09, 0xc7, 0xf3, 0x35,
-
  0x63, 0x30, 0x7b, 0x8a, 0x52, 0xcf, 0xd3, 0xa7, 0xfe, 0x00, 0x33, 0x88,
-
  0xf5, 0x1e, 0x8d, 0x44, 0x73, 0x8d, 0xfd, 0xa7, 0x6a, 0x23, 0x5e, 0x08,
-
  0xdd, 0xb4, 0x1f, 0x91, 0x6e, 0x9d, 0xfb, 0xb5, 0xed, 0x1f, 0x51, 0xb8,
-
  0x26, 0x78, 0x0a, 0x07, 0x85, 0x4c, 0x4b, 0x40, 0xdb, 0x23, 0x3f, 0xbc,
-
  0x32, 0x4e, 0xce, 0x51, 0x58, 0xfb, 0x1a, 0x61, 0x0f, 0x31, 0xe3, 0x10,
-
  0xff, 0xda, 0xde, 0x1d, 0xec, 0x84, 0x66, 0x80, 0xab, 0x2e, 0x08, 0x6f,
-
  0xe2, 0x64, 0x24, 0x60, 0xd5, 0xa2, 0xb8, 0x79, 0x8c, 0xbc, 0x2c, 0x70,
-
  0xfd, 0x21, 0x92, 0x50, 0x78, 0x34, 0xf1, 0x49, 0xfb, 0x13, 0xb2, 0x2e,
-
  0x41, 0x2f, 0x5f, 0x1b, 0xa4, 0xeb, 0xbc, 0x20, 0x88, 0x38, 0x90, 0x97,
-
  0x66, 0xb3, 0x06, 0x9e, 0x7e, 0xaf, 0x63, 0xbd, 0x73, 0xca, 0xd0, 0x4b,
-
  0xdb, 0xcb, 0xde, 0x86, 0xba, 0xa3, 0xa0, 0x5a, 0xe3, 0x07, 0x12, 0x58,
-
  0x73, 0xa2, 0x90, 0x4d, 0xc9, 0xce, 0x88, 0xff, 0xc9, 0x69, 0xad, 0xa2,
-
  0x01, 0xb1, 0x94, 0xb9, 0xc5, 0x79, 0xbd, 0x55, 0x20, 0x1e, 0xd3, 0xc6,
-
  0xc6, 0x3b, 0x07, 0xd7, 0x46, 0x98, 0x67, 0xe4, 0x19, 0x25, 0x21, 0x03,
-
  0x41, 0xda, 0xe8, 0xe6, 0xe4, 0x34, 0x51, 0x38, 0xb0, 0xbe, 0xeb, 0x5e,
-
  0x8e, 0x8f, 0x74, 0x3b, 0x68, 0xc4, 0x1a, 0xb8, 0xed, 0x67, 0x15, 0x8f,
-
  0x48, 0x9c, 0xa1, 0x59, 0xc8, 0x19, 0x6a, 0x99, 0xf5, 0x62, 0x46, 0xc5,
-
  0x1b, 0x14, 0x76, 0x85, 0x94, 0x4c, 0x8f, 0xcc, 0x77, 0xb7, 0xa2, 0xde,
-
  0xff, 0x87, 0xa2, 0xe8, 0x9f, 0x9f, 0xbc, 0x3a, 0xde, 0x1e, 0xe0, 0x2a,
-
  0x95, 0x63, 0x8f, 0x3c, 0xf6, 0xf0, 0xb1, 0x9f, 0x9f, 0xfd, 0xf0, 0xee,
-
  0xe8, 0xe4, 0xf5, 0xf7, 0x2f, 0x7e, 0xe0, 0x87, 0xe5, 0xd9, 0x68, 0xd3,
-
  0xcd, 0xda, 0xd9, 0x1f, 0xec, 0x6c, 0xb5, 0xdf, 0xde, 0xc7, 0xb7, 0x57,
-
  0xb6, 0xff, 0x60, 0x4b, 0x83, 0x50, 0x0f, 0xa2, 0xde, 0x1f, 0xdf, 0x0e,
-
  0x8f, 0xdf, 0x9c, 0xbe, 0x39, 0x41, 0x10, 0xdd, 0x3f, 0xfe, 0xd2, 0xf5,
-
  0xca, 0xc3, 0xc6, 0x2b, 0x87, 0xa7, 0xa7, 0xcf, 0x0e, 0xcf, 0x0e, 0xbb,
-
  0x1f, 0x7f, 0xd4, 0xdd, 0xc3, 0xe1, 0x02, 0x01, 0x8c, 0x39, 0x40, 0xe8,
-
  0x19, 0x10, 0x5f, 0x67, 0x1b, 0x8f, 0xb7, 0x80, 0x31, 0xe6, 0xb1, 0x69,
-
  0x07, 0x8d, 0x3d, 0xe7, 0x69, 0xbd, 0xb8, 0x5a, 0x66, 0x13, 0xce, 0x5c,
-
  0x17, 0xb5, 0xe4, 0xa2, 0xd0, 0x48, 0x7b, 0xb4, 0x66, 0xb7, 0x9b, 0x79,
-
  0xb2, 0x05, 0xb7, 0x83, 0x8e, 0xa6, 0x2f, 0x59, 0x0a, 0xf8, 0x2e, 0x49,
-
  0xf8, 0xd2, 0xb9, 0xe6, 0xa1, 0x8a, 0x6d, 0x55, 0x6e, 0xdc, 0x50, 0x04,
-
  0x2e, 0x23, 0x81, 0x4d, 0x50, 0xf2, 0x2f, 0x2e, 0x91, 0xff, 0x22, 0xe7,
-
  0x23, 0xc2, 0x15, 0x97, 0x79, 0xda, 0x4e, 0x00, 0x50, 0xa3, 0xfb, 0x0c,
-
  0x8e, 0x8e, 0xd7, 0xdc, 0x78, 0x59, 0xeb, 0x21, 0x20, 0x0a, 0x9a, 0x04,
-
  0xae, 0x36, 0x03, 0x2a, 0x8c, 0xf2, 0x93, 0x5e, 0x48, 0x2c, 0x0d, 0x28,
-
  0x81, 0xe2, 0x4d, 0xa7, 0x26, 0x51, 0x90, 0x0b, 0x74, 0x56, 0x81, 0x70,
-
  0xa9, 0x77, 0xfc, 0x55, 0x5f, 0x11, 0xdb, 0x4a, 0x83, 0x59, 0x4b, 0x51,
-
  0x06, 0x14, 0xd8, 0x7a, 0x42, 0x09, 0x05, 0x9a, 0x37, 0x21, 0x68, 0x91,
-
  0xe1, 0xe8, 0x6b, 0xf7, 0x84, 0x48, 0xd3, 0x64, 0xd5, 0xf7, 0x91, 0x16,
-
  0xdc, 0xbb, 0xf3, 0xd3, 0x81, 0x2d, 0xb8, 0x37, 0xfb, 0xda, 0x41, 0xc7,
-
  0x2e, 0x5b, 0x6a, 0x9a, 0x3b, 0x04, 0x75, 0x01, 0x86, 0x88, 0xa2, 0xf6,
-
  0xd3, 0xa9, 0x94, 0xfc, 0x49, 0x66, 0x82, 0xe5, 0xe8, 0x99, 0x2e, 0x5f,
-
  0x25, 0x1f, 0xb2, 0xf9, 0x72, 0x4e, 0xb3, 0xc2, 0x49, 0xc9, 0x63, 0x82,
-
  0x5c, 0x44, 0x5e, 0x1b, 0x8e, 0x75, 0xa5, 0x81, 0x6f, 0x54, 0x91, 0x63,
-
  0xc0, 0x0c, 0x5d, 0x9a, 0x20, 0x62, 0x0c, 0x4c, 0xec, 0x9c, 0x42, 0x38,
-
  0xcd, 0xb3, 0xba, 0x6a, 0x19, 0x3f, 0x41, 0xde, 0x49, 0x30, 0x2c, 0x90,
-
  0x31, 0x1b, 0x19, 0x94, 0xb3, 0xf0, 0x9d, 0x8e, 0x04, 0x86, 0x2f, 0x02,
-
  0xaa, 0x93, 0xa0, 0x93, 0x96, 0x59, 0x31, 0x31, 0xd1, 0x20, 0x9a, 0xd5,
-
  0x1b, 0xc5, 0xec, 0xab, 0x23, 0x93, 0x42, 0xc8, 0xb6, 0x98, 0x7e, 0xc0,
-
  0x54, 0xed, 0x68, 0x48, 0xd0, 0x00, 0x9a, 0x6d, 0xf3, 0x78, 0xb0, 0xbf,
-
  0x87, 0x88, 0xcc, 0x8d, 0xd8, 0x90, 0x31, 0xe2, 0x39, 0x55, 0x68, 0x86,
-
  0xc8, 0xe6, 0x8a, 0xbd, 0x56, 0x0d, 0x02, 0xc1, 0x5f, 0xbd, 0xf6, 0x94,
-
  0x7a, 0xc4, 0x8f, 0x81, 0x1a, 0x31, 0x89, 0x97, 0xd1, 0xcd, 0x09, 0x56,
-
  0xc5, 0x4d, 0x6c, 0x25, 0x13, 0x82, 0xa7, 0x82, 0x9c, 0x1d, 0x9d, 0xf6,
-
  0x29, 0x60, 0x0c, 0x48, 0xf4, 0x6f, 0x6f, 0x5f, 0x1c, 0x39, 0x15, 0x00,
-
  0xe8, 0x0c, 0x21, 0xe0, 0x44, 0x47, 0x00, 0x9a, 0x33, 0x4a, 0x9b, 0xd2,
-
  0x62, 0x54, 0x51, 0x89, 0xc5, 0x81, 0x06, 0xe0, 0x6a, 0x1b, 0x6c, 0x71,
-
  0x16, 0xa0, 0xbc, 0xe4, 0x39, 0x3e, 0x45, 0x77, 0x02, 0x72, 0x62, 0xb0,
-
  0xfe, 0x0b, 0xcd, 0xc2, 0xd6, 0xf5, 0xa2, 0x7b, 0x8b, 0xb9, 0x13, 0x1b,
-
  0x8a, 0x46, 0xa9, 0x89, 0xf6, 0x89, 0x83, 0x99, 0x26, 0x16, 0xee, 0x2d,
-
  0x6c, 0x3b, 0x6e, 0x51, 0xed, 0xed, 0x70, 0x84, 0xc8, 0x49, 0xdb, 0x0e,
-
  0x7e, 0xbf, 0x35, 0x90, 0x50, 0xb5, 0xe2, 0x5c, 0x36, 0x06, 0xb3, 0xb7,
-
  0x13, 0x3c, 0x9a, 0xb7, 0x7b, 0x79, 0x7f, 0xb0, 0xfb, 0x60, 0xbd, 0x93,
-
  0x8d, 0xa0, 0x77, 0xf1, 0x3c, 0xf9, 0x40, 0x4d, 0x04, 0x8f, 0x76, 0x11,
-
  0x3d, 0x7d, 0x7e, 0x32, 0x3c, 0xdb, 0x3d, 0x38, 0x3d, 0x79, 0x03, 0xff,
-
  0xe2, 0xef, 0x7b, 0xf4, 0xfb, 0xde, 0x37, 0xed, 0x66, 0xbf, 0x2f, 0x18,
-
  0xe7, 0x52, 0x31, 0x49, 0x48, 0xd4, 0xa6, 0x05, 0x14, 0xb5, 0xdd, 0x69,
-
  0x08, 0xb5, 0xc4, 0x0c, 0x35, 0x9e, 0xb1, 0xc1, 0xbe, 0x6a, 0x9f, 0x6d,
-
  0xa7, 0x2b, 0x4d, 0x25, 0x51, 0x6b, 0xb6, 0x9b, 0x15, 0x93, 0xd5, 0xaa,
-
  0x16, 0x08, 0x42, 0xa8, 0xa2, 0x8f, 0xb6, 0x2d, 0x52, 0x0c, 0x29, 0x28,
-
  0x30, 0x24, 0x6c, 0x2c, 0xeb, 0x47, 0x94, 0x61, 0xd0, 0xfc, 0x6a, 0x3c,
-
  0x03, 0xa5, 0x35, 0xc5, 0x38, 0xdf, 0x49, 0x2a, 0x7c, 0x77, 0xe6, 0xc3,
-
  0xd6, 0xd7, 0x5c, 0xfa, 0x4b, 0x60, 0x10, 0xbc, 0x3c, 0x1a, 0x62, 0x45,
-
  0x1a, 0x2e, 0x01, 0xa3, 0x49, 0x08, 0xa8, 0x5b, 0x96, 0x23, 0x4f, 0xbd,
-
  0x2c, 0x5d, 0xca, 0xef, 0x6a, 0x38, 0x6b, 0x10, 0xe4, 0x9d, 0xe1, 0x30,
-
  0x5f, 0x9f, 0x9c, 0x45, 0x09, 0xd9, 0xda, 0xe4, 0x5a, 0xaf, 0x6a, 0xbc,
-
  0xe9, 0xb6, 0xa5, 0x6a, 0x40, 0x52, 0x87, 0x22, 0x4d, 0xe5, 0xee, 0x81,
-
  0xf3, 0xbd, 0x8d, 0x9e, 0x1a, 0x4e, 0xa5, 0x18, 0xbe, 0x7e, 0xd1, 0x6f,
-
  0x38, 0x81, 0xdd, 0xb0, 0xe4, 0x2d, 0x64, 0x04, 0x02, 0x29, 0xd7, 0x5e,
-
  0x3b, 0x47, 0x36, 0xb1, 0xd5, 0x0f, 0x30, 0x35, 0x83, 0xb6, 0xb4, 0x27,
-
  0x81, 0xa2, 0x3d, 0xda, 0xda, 0x5e, 0xa4, 0xe1, 0x38, 0x64, 0xf0, 0x99,
-
  0x2f, 0xea, 0x6b, 0x1f, 0x59, 0x8c, 0x2c, 0xa0, 0x8a, 0x30, 0xd7, 0x43,
-
  0x7d, 0x1b, 0xa7, 0x45, 0x53, 0xea, 0x0d, 0xb8, 0xd9, 0xbd, 0x1e, 0xb5,
-
  0x4a, 0x8d, 0xc2, 0xef, 0xd8, 0x26, 0x11, 0xed, 0x28, 0x18, 0x49, 0xc6,
-
  0x1d, 0x39, 0x8d, 0x47, 0xa6, 0x79, 0x18, 0x98, 0x81, 0xe3, 0x51, 0xea,
-
  0xc0, 0x9b, 0xa5, 0x28, 0xb3, 0x73, 0x8c, 0xd8, 0xf3, 0x82, 0x62, 0xcd,
-
  0x40, 0xda, 0x14, 0x7e, 0x08, 0x4a, 0x02, 0x7c, 0xdb, 0x73, 0x8c, 0x64,
-
  0xb5, 0x97, 0x86, 0x4a, 0xc9, 0x51, 0xa5, 0x6a, 0xe6, 0x3a, 0x1c, 0xbc,
-
  0x78, 0xea, 0x80, 0x42, 0x5a, 0xf1, 0x31, 0x99, 0x27, 0xa8, 0xf2, 0xd8,
-
  0xe8, 0x0a, 0x45, 0x11, 0xd1, 0xb3, 0x04, 0xb2, 0xb1, 0xc2, 0xfe, 0xe3,
-
  0xca, 0x72, 0x3c, 0x46, 0xbb, 0x39, 0x2e, 0x58, 0x86, 0x97, 0x2f, 0x66,
-
  0x7b, 0x60, 0x40, 0xc9, 0xee, 0xde, 0xe3, 0xc1, 0x0e, 0xfc, 0x17, 0x36,
-
  0x45, 0x0c, 0x70, 0x54, 0x05, 0xc9, 0x16, 0xc2, 0x31, 0x4f, 0xa6, 0x1f,
-
  0x3c, 0x13, 0x2e, 0xb1, 0x8f, 0xa2, 0x3c, 0xef, 0x05, 0xe0, 0xa1, 0x1c,
-
  0xfe, 0xf0, 0x49, 0x85, 0x16, 0xed, 0xc4, 0xe1, 0x66, 0x07, 0x0f, 0x1e,
-
  0xec, 0x1f, 0xe8, 0xdf, 0x70, 0x94, 0x0e, 0x9e, 0xc0, 0x07, 0x1f, 0x83,
-
  0x1e, 0xf5, 0x1c, 0x99, 0x20, 0x7b, 0x40, 0x9a, 0xc1, 0xe2, 0x5f, 0x36,
-
  0xbc, 0x3b, 0x6d, 0x44, 0x8f, 0xe8, 0x69, 0x31, 0x9d, 0xc2, 0xa5, 0xd0,
-
  0x16, 0x71, 0x8e, 0xe4, 0x91, 0xed, 0x37, 0x5c, 0x4c, 0x90, 0xa1, 0x7f,
-
  0x39, 0xbd, 0x3e, 0x6a, 0x16, 0xf6, 0x89, 0xc4, 0x9d, 0xc1, 0xfc, 0x91,
-
  0x9b, 0x0b, 0xdd, 0xfa, 0xee, 0xf7, 0x1a, 0x44, 0x0d, 0x13, 0x45, 0xb6,
-
  0x29, 0x55, 0x08, 0xc9, 0x89, 0xcb, 0x80, 0xda, 0x22, 0x4b, 0xb5, 0xab,
-
  0x9e, 0xe9, 0xd9, 0x7b, 0x9f, 0x2d, 0x16, 0xe4, 0xcd, 0xa1, 0x2a, 0x61,
-
  0x74, 0x3e, 0x4c, 0x08, 0x0c, 0x45, 0x62, 0x71, 0xf1, 0x0e, 0x49, 0x19,
-
  0x21, 0xf8, 0x0c, 0x1e, 0xf4, 0x28, 0x9d, 0xfa, 0x61, 0x1c, 0x1c, 0x17,
-
  0xe9, 0x02, 0x89, 0x4b, 0x24, 0xdd, 0x04, 0x21, 0xc3, 0xf3, 0x84, 0x79,
-
  0xd9, 0x8b, 0xa9, 0x83, 0xf1, 0x2a, 0x58, 0x4a, 0x41, 0x6b, 0x97, 0x45,
-
  0x96, 0x31, 0x74, 0x33, 0x7c, 0xf1, 0x5f, 0xc7, 0x3c, 0x19, 0x49, 0x13,
-
  0x55, 0x2c, 0x12, 0x32, 0x86, 0x04, 0x90, 0x02, 0xe0, 0xb8, 0xc7, 0x47,
-
  0xb0, 0x5f, 0x54, 0x49, 0xc1, 0x09, 0x94, 0x2c, 0x5a, 0x3e, 0x32, 0xd2,
-
  0x93, 0x18, 0xf4, 0x17, 0x24, 0xa7, 0x6d, 0xc2, 0xf9, 0x2c, 0x7c, 0xeb,
-
  0x1b, 0x6e, 0x61, 0x03, 0x46, 0xc5, 0x54, 0xa3, 0x6a, 0xa5, 0x71, 0x8b,
-
  0x49, 0x64, 0x3b, 0xcb, 0xa9, 0xa2, 0x0f, 0x05, 0x26, 0x7a, 0x19, 0xce,
-
  0x8a, 0x2b, 0xc6, 0xa0, 0xd3, 0xcb, 0x3a, 0x9c, 0xa5, 0x78, 0xd4, 0x8f,
-
  0x5a, 0xb4, 0x26, 0xf5, 0x0d, 0x6e, 0x76, 0x75, 0xdf, 0xbb, 0x88, 0x72,
-
  0x04, 0x92, 0xd9, 0xad, 0x45, 0x92, 0xa3, 0xe8, 0xc1, 0xce, 0xce, 0x7a,
-
  0x67, 0xd1, 0x02, 0xe7, 0x38, 0x67, 0x6d, 0xcc, 0x67, 0x0d, 0xab, 0x75,
-
  0xc6, 0xbf, 0x25, 0x25, 0xbb, 0x67, 0x3a, 0x11, 0x0f, 0xb7, 0x8c, 0x71,
-
  0x12, 0x33, 0xa5, 0x29, 0x18, 0x82, 0x28, 0xd6, 0xc0, 0x96, 0x2b, 0x01,
-
  0xb0, 0x25, 0x94, 0x12, 0x76, 0xa4, 0x14, 0x68, 0x9b, 0xe7, 0x11, 0x38,
-
  0x21, 0x85, 0x4a, 0x19, 0x78, 0x42, 0x8b, 0x92, 0x35, 0xc0, 0x08, 0x18,
-
  0x53, 0x3b, 0x2a, 0x21, 0x55, 0x80, 0x5a, 0x91, 0x1a, 0x71, 0x9e, 0xcc,
-
  0x91, 0xe5, 0x31, 0x63, 0xff, 0xc9, 0x83, 0x14, 0xa4, 0x83, 0x30, 0xd7,
-
  0x72, 0x48, 0x98, 0x70, 0xd8, 0x6a, 0x53, 0x2b, 0x2e, 0x0b, 0x1d, 0x65,
-
  0xea, 0x33, 0x58, 0x92, 0x65, 0xa0, 0x95, 0xad, 0xcc, 0x1c, 0x18, 0xf1,
-
  0xf5, 0x7d, 0x5e, 0x5c, 0xe5, 0xe8, 0x27, 0x64, 0x57, 0x9f, 0x6e, 0x39,
-
  0x0e, 0xb6, 0x4e, 0x39, 0xf8, 0x23, 0x04, 0xa0, 0xd8, 0x7a, 0xce, 0xb1,
-
  0x86, 0xbe, 0x4e, 0x6b, 0x89, 0x6c, 0xe6, 0xb1, 0x4b, 0xb8, 0x9c, 0x60,
-
  0x38, 0xc0, 0x20, 0xfc, 0xba, 0x2c, 0x14, 0x6b, 0x61, 0x2c, 0xbb, 0x74,
-
  0xc1, 0x70, 0x70, 0x18, 0xd7, 0xfd, 0x42, 0x1f, 0x47, 0x1f, 0x4e, 0x67,
-
  0x4f, 0x1d, 0x2e, 0x3c, 0xfc, 0x70, 0x4c, 0xa4, 0x0e, 0xc8, 0x16, 0xe4,
-
  0x0a, 0x26, 0x4c, 0x05, 0x0a, 0xd2, 0x08, 0x8c, 0x01, 0x16, 0x81, 0xa0,
-
  0x08, 0x68, 0x36, 0x0e, 0xd3, 0x1c, 0x34, 0x20, 0x36, 0x14, 0x71, 0xef,
-
  0x00, 0x74, 0x61, 0x8c, 0x77, 0x39, 0x51, 0x4b, 0x9a, 0x0e, 0x14, 0x2e,
-
  0x07, 0x31, 0x49, 0x5e, 0x25, 0x44, 0x6a, 0xa6, 0x8b, 0x50, 0x86, 0xb3,
-
  0x93, 0x86, 0x11, 0x8f, 0x2c, 0x39, 0x5b, 0x68, 0xf5, 0xa0, 0xdb, 0x40,
-
  0x1e, 0x42, 0x9a, 0xb7, 0xe5, 0xcf, 0x04, 0xae, 0x8b, 0x7c, 0x2e, 0xba,
-
  0x2c, 0xd0, 0xbe, 0xaa, 0x27, 0x57, 0x17, 0x85, 0xe7, 0x39, 0x61, 0x3b,
-
  0xa3, 0xc5, 0x77, 0x93, 0xeb, 0x80, 0x90, 0xd5, 0xb1, 0x06, 0x0f, 0x3a,
-
  0x94, 0x2e, 0x29, 0xb1, 0xad, 0xe1, 0x7a, 0x26, 0xb4, 0x61, 0x42, 0x18,
-
  0x08, 0x82, 0xe5, 0xb9, 0x90, 0xb7, 0xdc, 0x22, 0x62, 0x95, 0x01, 0xb1,
-
  0x25, 0x25, 0xdd, 0x1a, 0x52, 0x42, 0x81, 0xae, 0x17, 0x4c, 0xf1, 0x97,
-
  0xab, 0xc8, 0x5f, 0x1b, 0xca, 0xc8, 0x20, 0x6d, 0xfd, 0x32, 0x43, 0xf8,
-
  0x41, 0x24, 0x2c, 0x10, 0x86, 0xd0, 0x17, 0xc3, 0x84, 0x44, 0xed, 0x72,
-
  0x95, 0x84, 0x0b, 0xaa, 0x93, 0x2b, 0x28, 0x85, 0x70, 0x24, 0x2f, 0x7c,
-
  0x2d, 0x32, 0xab, 0x97, 0x49, 0xd7, 0xaa, 0x7a, 0xbc, 0xc4, 0xd5, 0xf7,
-
  0xfe, 0xe3, 0x0a, 0xdf, 0x98, 0xe3, 0xf4, 0x62, 0x32, 0x98, 0x77, 0x19,
-
  0x62, 0x6e, 0xf7, 0x66, 0x3c, 0x22, 0xbf, 0x4a, 0xcc, 0x55, 0xa7, 0xd7,
-
  0xe2, 0xb9, 0x0e, 0x3d, 0x3a, 0x4c, 0xd7, 0xa5, 0xd2, 0xa7, 0xc8, 0x44,
-
  0xfe, 0xcf, 0x0d, 0x5c, 0xf7, 0x34, 0x91, 0xf8, 0x12, 0xb7, 0x16, 0x02,
-
  0x61, 0x1e, 0xc9, 0x1d, 0xae, 0xe0, 0x1d, 0xdc, 0xa6, 0x8a, 0x58, 0x2f,
-
  0x02, 0xe1, 0x91, 0x14, 0x30, 0x01, 0xeb, 0x39, 0xbb, 0xb6, 0x0d, 0x3a,
-
  0x98, 0x44, 0xa6, 0x46, 0x9f, 0xad, 0x72, 0x68, 0x7a, 0xf0, 0x62, 0xbd,
-
  0x7b, 0x43, 0xd0, 0xaf, 0xb8, 0x4f, 0xcc, 0x29, 0xd1, 0x62, 0xb0, 0xec,
-
  0x9a, 0xe7, 0xa6, 0x0d, 0x1c, 0xb1, 0xa6, 0x88, 0x5b, 0x4b, 0x9f, 0xc7,
-
  0x17, 0x7a, 0x58, 0x82, 0x7c, 0xf7, 0xeb, 0x1f, 0x0f, 0x5f, 0xbe, 0x3d,
-
  0xde, 0xfd, 0x2a, 0xc2, 0xbf, 0xf6, 0xf8, 0xaf, 0xbd, 0xde, 0x40, 0x2b,
-
  0x22, 0xbc, 0x4f, 0x4d, 0xfe, 0x95, 0xd5, 0x35, 0x78, 0x2d, 0x83, 0x00,
-
  0x9c, 0x91, 0x22, 0x40, 0xb1, 0xf5, 0x86, 0x82, 0x59, 0x6c, 0x09, 0x3b,
-
  0x92, 0x9c, 0x81, 0xc8, 0x0c, 0x88, 0x9a, 0xa8, 0x01, 0x9b, 0xd5, 0x56,
-
  0x20, 0x17, 0xda, 0xc4, 0x68, 0xa8, 0xe6, 0x6b, 0xcc, 0x37, 0xd1, 0x64,
-
  0x99, 0x4a, 0xf0, 0x6f, 0x03, 0xa5, 0xa9, 0xaf, 0x16, 0x7a, 0xcf, 0x28,
-
  0xa4, 0x75, 0x36, 0x2a, 0xa7, 0x9e, 0x46, 0x9f, 0xc3, 0x74, 0x98, 0xab,
-
  0xca, 0x99, 0x97, 0x81, 0xd3, 0xbe, 0x62, 0xea, 0x0d, 0x85, 0x0b, 0x04,
-
  0x85, 0x19, 0xb8, 0x90, 0x36, 0xbe, 0xde, 0x88, 0xaa, 0xeb, 0xf9, 0xa8,
-
  0x98, 0x99, 0xd0, 0x19, 0xa1, 0x0c, 0x9b, 0x2f, 0xc4, 0x82, 0xa4, 0x42,
-
  0x46, 0x88, 0x73, 0xd3, 0x4f, 0xca, 0x49, 0xac, 0xe7, 0x51, 0x23, 0x31,
-
  0x5c, 0xe8, 0xaa, 0xba, 0x60, 0x1b, 0x18, 0x5f, 0x58, 0x14, 0x91, 0x71,
-
  0xd6, 0x99, 0x48, 0x43, 0x67, 0x41, 0x79, 0x78, 0xe5, 0xb2, 0x5f, 0xb9,
-
  0x25, 0x58, 0x94, 0xa0, 0x79, 0xbb, 0xbe, 0x4c, 0xba, 0x1b, 0xb2, 0x40,
-
  0x5c, 0xcf, 0x9c, 0xeb, 0x22, 0x49, 0x8d, 0x71, 0x7e, 0x5b, 0x54, 0x61,
-
  0xb4, 0xad, 0x5d, 0x2b, 0xa0, 0x28, 0x6e, 0x8f, 0xde, 0xb3, 0x34, 0x69,
-
  0x7c, 0xb7, 0xdd, 0xdc, 0x48, 0xa4, 0x67, 0x8d, 0x15, 0x20, 0x8a, 0x8a,
-
  0x5f, 0x92, 0x64, 0x38, 0x33, 0xe5, 0x32, 0x15, 0x25, 0x05, 0xab, 0x7e,
-
  0x17, 0x8d, 0x7a, 0xdb, 0x6d, 0x96, 0xab, 0xa5, 0xa6, 0x1a, 0x61, 0x1d,
-
  0xec, 0x85, 0x1a, 0x58, 0xa7, 0xf5, 0xcc, 0x22, 0xc8, 0x91, 0x82, 0x41,
-
  0x11, 0xcb, 0xd1, 0xdc, 0x8b, 0xf0, 0xcf, 0x41, 0x97, 0xd9, 0x84, 0x9b,
-
  0x7c, 0xcb, 0x8d, 0x63, 0xd2, 0xdd, 0xa3, 0x6d, 0x71, 0xc2, 0xb4, 0xaa,
-
  0x55, 0x4e, 0x5e, 0x03, 0x3c, 0x25, 0xc9, 0x7c, 0x85, 0x33, 0x14, 0x13,
-
  0x6c, 0xe3, 0x8a, 0x59, 0x72, 0x72, 0x11, 0x52, 0x62, 0xe6, 0xc0, 0xe5,
-
  0xab, 0xd5, 0x08, 0xd9, 0x8f, 0x86, 0xb3, 0x6d, 0x5a, 0x4e, 0x10, 0x11,
-
  0xe2, 0xfb, 0x96, 0xaa, 0xc1, 0x46, 0xba, 0xd9, 0x7e, 0x55, 0xfc, 0x0e,
-
  0x63, 0x4f, 0x3a, 0x4e, 0xab, 0x33, 0xb2, 0x30, 0x9a, 0x12, 0x4b, 0x45,
-
  0xd6, 0x1e, 0xc0, 0xa1, 0x4e, 0x2e, 0x2b, 0x6d, 0x58, 0x83, 0xa8, 0x72,
-
  0x38, 0xd5, 0xb6, 0x7c, 0x5d, 0x78, 0xf4, 0xd3, 0x10, 0x87, 0x5c, 0x01,
-
  0x48, 0x17, 0x04, 0xa8, 0xb9, 0x90, 0x40, 0x6f, 0x43, 0x66, 0x86, 0xdf,
-
  0xb4, 0x75, 0xf4, 0xf6, 0xbd, 0xd7, 0x2d, 0x78, 0xd8, 0xaa, 0x2a, 0xd8,
-
  0x91, 0xb3, 0x66, 0xee, 0xbe, 0x70, 0x95, 0x30, 0x27, 0x43, 0xf2, 0x9a,
-
  0x4c, 0xbc, 0x1e, 0x7a, 0x5d, 0xc2, 0x47, 0x3b, 0x77, 0xcf, 0x93, 0x66,
-
  0x15, 0x20, 0x97, 0x13, 0xa0, 0x5c, 0x06, 0x72, 0x61, 0x58, 0x7b, 0x15,
-
  0x4e, 0x52, 0xbf, 0x56, 0x1b, 0xd9, 0x45, 0xd0, 0xec, 0x57, 0x50, 0x81,
-
  0x0c, 0x89, 0x68, 0x24, 0xfc, 0x2f, 0x92, 0x3c, 0xa4, 0x05, 0x0c, 0x7c,
-
  0xb5, 0xc3, 0x26, 0x59, 0x70, 0x93, 0x20, 0x92, 0x3d, 0xc1, 0x43, 0xd1,
-
  0xc9, 0xb5, 0x16, 0x0c, 0x16, 0xe2, 0xe3, 0x46, 0x2a, 0x22, 0x0e, 0xf6,
-
  0xfe, 0x60, 0x01, 0xe9, 0x03, 0x87, 0x93, 0x2b, 0xb5, 0xf8, 0x4e, 0xd8,
-
  0x10, 0x61, 0x60, 0x80, 0x7c, 0x25, 0x95, 0x87, 0x59, 0x01, 0xc1, 0xf8,
-
  0x85, 0x82, 0xf2, 0xcd, 0xda, 0xd4, 0x9c, 0x58, 0xa7, 0x2d, 0x6b, 0x27,
-
  0x7e, 0xe6, 0xc5, 0x44, 0xca, 0x96, 0xf2, 0x5b, 0x24, 0x23, 0x39, 0x55,
-
  0x92, 0xaa, 0x42, 0x78, 0x09, 0x75, 0xd0, 0xa0, 0x3c, 0xb2, 0x6e, 0x8c,
-
  0x43, 0xae, 0x5e, 0x2b, 0x0c, 0x39, 0xcc, 0xa0, 0x21, 0x4a, 0x8b, 0x68,
-
  0x1d, 0x20, 0x98, 0x46, 0x17, 0x1f, 0x6f, 0xfc, 0xe9, 0x92, 0x94, 0x46,
-
  0x32, 0xe3, 0xce, 0x90, 0xfb, 0x9b, 0xdf, 0x02, 0x99, 0xe9, 0x86, 0x36,
-
  0x3a, 0x25, 0xa4, 0xf6, 0xe1, 0xa1, 0xa5, 0xfc, 0x0d, 0x3f, 0xfc, 0x6d,
-
  0x99, 0xbf, 0x8f, 0xa5, 0xb4, 0x5c, 0xac, 0x9a, 0x81, 0x6b, 0x39, 0xa7,
-
  0xab, 0x2b, 0x86, 0x6b, 0xb4, 0x0a, 0x45, 0x00, 0xe8, 0xed, 0x07, 0xac,
-
  0xf1, 0x37, 0x05, 0xfe, 0xb4, 0x35, 0x98, 0x8a, 0xbe, 0x53, 0xd0, 0x4a,
-
  0xe2, 0x50, 0x0c, 0x7f, 0x6d, 0xf3, 0x0b, 0xea, 0x48, 0xe0, 0xa0, 0x11,
-
  0x80, 0x26, 0xa1, 0x42, 0x96, 0x68, 0xff, 0x73, 0xd0, 0x48, 0x32, 0xd8,
-
  0x92, 0x72, 0x7c, 0x41, 0xc0, 0x6a, 0x64, 0x70, 0x4c, 0xd5, 0x8a, 0xde,
-
  0xf6, 0x9d, 0xc8, 0x4d, 0xc2, 0xcd, 0x4a, 0xf6, 0xb1, 0x36, 0x84, 0x84,
-
  0x87, 0xf7, 0x34, 0x3c, 0xa1, 0x3c, 0xae, 0x3d, 0xde, 0x60, 0x73, 0x14,
-
  0xb7, 0x7a, 0x41, 0x41, 0x5b, 0xb3, 0xca, 0xde, 0x33, 0x8d, 0x79, 0xda,
-
  0x4b, 0x87, 0x0c, 0x2a, 0xa8, 0xd8, 0x76, 0x42, 0xef, 0x30, 0xda, 0xdb,
-
  0xd4, 0x1b, 0x1b, 0x3a, 0x87, 0x78, 0x78, 0x36, 0xb0, 0x57, 0x60, 0x8f,
-
  0x51, 0x21, 0xee, 0x68, 0xce, 0xe5, 0xb6, 0x0a, 0x89, 0xdc, 0x26, 0x89,
-
  0x23, 0xd1, 0xbd, 0x70, 0x3f, 0xe9, 0xe2, 0x9e, 0xc3, 0xd5, 0xc2, 0x2b,
-
  0x30, 0x47, 0x07, 0xc1, 0xce, 0xe3, 0x87, 0x3b, 0x78, 0xa5, 0x62, 0x11,
-
  0x07, 0xbe, 0x63, 0x78, 0x42, 0x9c, 0x87, 0xe4, 0xfb, 0xf0, 0x0a, 0xdd,
-
  0x37, 0x81, 0x6e, 0x76, 0x67, 0x71, 0x75, 0x61, 0x14, 0x70, 0x34, 0x84,
-
  0x21, 0x9a, 0x15, 0xfc, 0x04, 0xf1, 0x0b, 0xa1, 0x97, 0xe2, 0x78, 0x5a,
-
  0x7b, 0xac, 0xc1, 0x21, 0xb6, 0x15, 0x11, 0xbd, 0x4d, 0xaa, 0x8c, 0xba,
-
  0x51, 0x3e, 0x9a, 0x88, 0x98, 0xb7, 0x0f, 0xcc, 0x5f, 0x31, 0x8a, 0x9b,
-
  0x4c, 0xbc, 0xce, 0xb8, 0x0c, 0x45, 0x18, 0x48, 0x9d, 0xed, 0x3b, 0xe4,
-
  0xdb, 0xe0, 0x2a, 0xb9, 0xad, 0x72, 0xba, 0x0d, 0xb7, 0x8c, 0x9f, 0x04,
-
  0xce, 0x2a, 0xf6, 0x12, 0xd3, 0x6e, 0x3e, 0xc5, 0x7f, 0x3d, 0x6d, 0x87,
-
  0x00, 0xaf, 0x31, 0xe7, 0x02, 0x23, 0x35, 0x04, 0xe6, 0x5b, 0xf3, 0x2c,
-
  0xd5, 0xc7, 0x23, 0xbb, 0xca, 0xe9, 0xc8, 0x5a, 0x15, 0x39, 0x08, 0xac,
-
  0x84, 0x72, 0x39, 0x57, 0x22, 0xbe, 0x70, 0x32, 0xb4, 0xdc, 0xa2, 0xd2,
-
  0x0d, 0xd7, 0x30, 0x8a, 0xe9, 0x2c, 0x9c, 0x52, 0xca, 0xa4, 0x67, 0xa2,
-
  0xc4, 0x7b, 0x90, 0x45, 0xcd, 0x0d, 0x1c, 0xfc, 0x06, 0x97, 0x3d, 0xad,
-
  0x55, 0xcc, 0x53, 0xe3, 0x12, 0x03, 0x33, 0xe3, 0x87, 0x54, 0xd1, 0xc6,
-
  0x42, 0x8b, 0x07, 0x54, 0x73, 0x8d, 0xfa, 0xd9, 0x79, 0xf4, 0xe0, 0x41,
-
  0xd8, 0xea, 0xa2, 0xf8, 0xb0, 0xec, 0x2c, 0xce, 0xa3, 0x62, 0x5c, 0x03,
-
  0xdb, 0x11, 0x5b, 0x34, 0x8a, 0xe9, 0x22, 0xd7, 0x77, 0x81, 0xb0, 0xb5,
-
  0xd7, 0xfd, 0xd3, 0x9b, 0x37, 0x6f, 0x20, 0x40, 0x3b, 0x94, 0x9d, 0xc7,
-
  0x8f, 0x1f, 0x47, 0xf1, 0x19, 0x13, 0x21, 0x1f, 0x65, 0x3f, 0x55, 0x24,
-
  0x4f, 0xaf, 0x6e, 0x4f, 0x82, 0x2b, 0x01, 0x85, 0xc7, 0xe5, 0x6c, 0x2a,
-
  0x18, 0xf2, 0xaf, 0xb4, 0x18, 0xd0, 0x25, 0x21, 0xd4, 0xbd, 0xfc, 0x9e,
-
  0x55, 0xb7, 0xa3, 0x37, 0xf8, 0x5b, 0x66, 0xd0, 0xfd, 0x09, 0x22, 0x2c,
-
  0x9d, 0x2e, 0x67, 0x92, 0xce, 0xf8, 0xea, 0xc7, 0x36, 0xee, 0xd2, 0xe6,
-
  0xc9, 0x70, 0x7b, 0xff, 0xcb, 0x9d, 0xad, 0x40, 0x86, 0x29, 0x56, 0x69,
-
  0x4d, 0x1c, 0x17, 0xc7, 0x4e, 0x20, 0x50, 0xaa, 0x91, 0x0a, 0x80, 0xc3,
-
  0xbb, 0x6d, 0x12, 0x80, 0xf0, 0x87, 0xb6, 0x9a, 0xe5, 0x71, 0x8b, 0xd9,
-
  0x74, 0xfd, 0x5d, 0x82, 0x61, 0xc0, 0xa6, 0xb0, 0x40, 0xba, 0x46, 0xe6,
-
  0xce, 0x77, 0x82, 0x12, 0xcc, 0x85, 0x9d, 0xda, 0x0b, 0x8f, 0xad, 0xad,
-
  0x80, 0xd9, 0x3d, 0x15, 0xb8, 0x00, 0x91, 0xd1, 0x98, 0x33, 0x3b, 0xb8,
-
  0x23, 0x92, 0xd0, 0xeb, 0x02, 0x65, 0xbd, 0x49, 0x2f, 0x81, 0x6e, 0x82,
-
  0x28, 0x9e, 0x2f, 0xb3, 0x4a, 0xdc, 0xb5, 0xa8, 0x13, 0xaa, 0x0c, 0x8d,
-
  0x98, 0x79, 0xcd, 0x64, 0x55, 0x7a, 0x84, 0x2a, 0x23, 0x52, 0xd0, 0x6b,
-
  0x20, 0x4c, 0x45, 0x63, 0x3d, 0x04, 0x95, 0xaa, 0x23, 0xcc, 0x41, 0xe6,
-
  0xf7, 0xd9, 0x52, 0xe4, 0xa4, 0xff, 0x32, 0xfd, 0x0d, 0xed, 0x09, 0x77,
-
  0x82, 0x3a, 0x74, 0xf0, 0x4a, 0x18, 0x6e, 0xad, 0xb1, 0x81, 0xcb, 0xf2,
-
  0x12, 0x96, 0xeb, 0xa9, 0xc9, 0x92, 0xa2, 0xcc, 0xc3, 0x5b, 0x22, 0xe4,
-
  0xa8, 0x5f, 0xd5, 0x7a, 0xfd, 0xb9, 0x35, 0xb1, 0xda, 0x4a, 0x31, 0xdd,
-
  0xe1, 0xf0, 0xa5, 0xc7, 0x6d, 0x39, 0xa3, 0xda, 0xb8, 0xf4, 0x09, 0x1a,
-
  0x23, 0x19, 0xa3, 0x4d, 0x80, 0x14, 0xfa, 0x22, 0x42, 0xd4, 0x84, 0x27,
-
  0x0f, 0xf6, 0xf6, 0xfa, 0xd1, 0xc3, 0xc1, 0xae, 0x0b, 0x87, 0x08, 0xf3,
-
  0xf2, 0xe0, 0xaf, 0x25, 0xbf, 0xcb, 0x54, 0xfa, 0x73, 0xb8, 0x20, 0xfa,
-
  0xb8, 0x1c, 0xa4, 0xc4, 0x20, 0x38, 0x62, 0xdb, 0x54, 0xf5, 0xf3, 0xde,
-
  0xc3, 0x87, 0xbb, 0x5f, 0x1e, 0x9c, 0xc6, 0x0f, 0xf7, 0x76, 0x11, 0x24,
-
  0x91, 0x8b, 0xf2, 0x9a, 0x78, 0xfc, 0x06, 0x84, 0x46, 0x36, 0x61, 0x83,
-
  0xd0, 0x8c, 0xed, 0x4d, 0x01, 0x15, 0xb2, 0x57, 0x2c, 0xd2, 0xbc, 0xaa,
-
  0x66, 0x51, 0xf5, 0x8e, 0x21, 0x67, 0xb6, 0xab, 0x77, 0x6c, 0x77, 0xeb,
-
  0x09, 0xae, 0x61, 0x16, 0xc0, 0xa8, 0x32, 0x3b, 0xa3, 0x77, 0x17, 0x1c,
-
  0x11, 0x05, 0xa8, 0x10, 0xe4, 0xc2, 0x95, 0x58, 0x85, 0xa1, 0x4c, 0x09,
-
  0xb5, 0x45, 0x20, 0xc5, 0x6e, 0x1e, 0x1f, 0x6d, 0xf1, 0x76, 0xd9, 0xd0,
-
  0x26, 0x5a, 0x2b, 0xb6, 0xb9, 0xd1, 0x40, 0xfb, 0x11, 0x67, 0xdf, 0xfb,
-
  0xb7, 0x6f, 0x5e, 0xe4, 0x64, 0x0a, 0x41, 0x17, 0x3d, 0x7a, 0x86, 0x64,
-
  0x5e, 0x6c, 0x4d, 0x54, 0x08, 0xf2, 0x66, 0x55, 0xfb, 0xae, 0x34, 0x30,
-
  0xc6, 0x4b, 0x55, 0x20, 0x5a, 0x0b, 0x7d, 0xa2, 0xb4, 0x44, 0x89, 0xb0,
-
  0x8c, 0xc3, 0x90, 0xe5, 0xde, 0xbd, 0xad, 0x6b, 0xeb, 0x61, 0x1d, 0x06,
-
  0x0f, 0x33, 0xb7, 0x78, 0xdb, 0xb3, 0x7c, 0xff, 0x87, 0x99, 0xfb, 0x67,
-
  0xf2, 0x5a, 0xf7, 0x18, 0x6b, 0xf2, 0x70, 0x2b, 0x40, 0xd7, 0x3d, 0xcb,
-
  0x68, 0x94, 0x65, 0x16, 0xcd, 0x96, 0xe7, 0x0e, 0x83, 0xb3, 0xe6, 0xc5,
-
  0x51, 0xa5, 0x2d, 0x82, 0xc5, 0xcc, 0x12, 0x8e, 0x2f, 0xb5, 0xa5, 0x3b,
-
  0x03, 0xf4, 0xe8, 0xb4, 0xfe, 0xe9, 0x82, 0x15, 0x9c, 0x4e, 0xbe, 0xbd,
-
  0x83, 0xd8, 0x4a, 0xaf, 0xa3, 0xcd, 0xaf, 0xbc, 0xd6, 0x99, 0xc4, 0x65,
-
  0x72, 0xa5, 0xf5, 0x68, 0xf0, 0x4f, 0xe8, 0x87, 0xf1, 0x2f, 0xbc, 0x95,
-
  0xe3, 0xf7, 0x56, 0x2e, 0x9d, 0x84, 0x48, 0x2e, 0x0a, 0xb4, 0x0f, 0x93,
-
  0x0d, 0xdc, 0xd8, 0xf7, 0xaa, 0xb6, 0xf9, 0xca, 0x5c, 0xee, 0x81, 0x82,
-
  0x14, 0xa8, 0x68, 0x32, 0x68, 0x41, 0x52, 0x57, 0x05, 0xae, 0x60, 0x88,
-
  0x62, 0x6d, 0x49, 0x4b, 0x63, 0xcd, 0x37, 0x4a, 0xa3, 0xa4, 0xd4, 0x7c,
-
  0xdb, 0x57, 0x80, 0xc6, 0xba, 0x69, 0x8d, 0x4f, 0x02, 0x26, 0x38, 0xc2,
-
  0xcb, 0xa0, 0xb0, 0xe8, 0x88, 0xbd, 0x41, 0x06, 0x55, 0x46, 0x13, 0x2a,
-
  0xe6, 0x88, 0x9c, 0x41, 0xb2, 0xa7, 0x53, 0xc5, 0x15, 0xc3, 0xa7, 0xfa,
-
  0x5e, 0x50, 0x26, 0xd5, 0xce, 0xa4, 0x5b, 0x16, 0xc4, 0x38, 0xdc, 0x69,
-
  0x56, 0x12, 0xc6, 0x49, 0x59, 0x66, 0xe8, 0x9c, 0x2d, 0xd3, 0x7a, 0x59,
-
  0x0a, 0x82, 0x02, 0x66, 0x0e, 0x22, 0x6f, 0x60, 0x67, 0x60, 0xe0, 0x2e,
-
  0x36, 0xc1, 0xc0, 0x94, 0x3a, 0x4b, 0x68, 0x7a, 0xc1, 0xc0, 0xc9, 0x97,
-
  0x58, 0x93, 0x95, 0xc6, 0xa6, 0x83, 0xab, 0x9b, 0xf1, 0xf5, 0x68, 0x28,
-
  0x65, 0xa8, 0x18, 0x2e, 0x14, 0x55, 0x34, 0xdc, 0x1c, 0x55, 0x77, 0x44,
-
  0xd6, 0xf6, 0x87, 0xf8, 0xea, 0xea, 0x2a, 0x46, 0x99, 0xc4, 0x92, 0xc8,
-
  0x64, 0xd0, 0xa8, 0xdb, 0xcd, 0xfc, 0x89, 0x3c, 0x1f, 0x28, 0x52, 0xfa,
-
  0x21, 0x54, 0x4e, 0x32, 0x51, 0x39, 0xca, 0x6a, 0xc2, 0xa1, 0x12, 0xaa,
-
  0xa2, 0xd7, 0x04, 0x0f, 0x4a, 0x86, 0x43, 0xf6, 0x3d, 0xf5, 0xf5, 0x06,
-
  0x16, 0xc5, 0xce, 0x05, 0xab, 0x4c, 0x8c, 0xeb, 0x14, 0x71, 0x1c, 0xa1,
-
  0x8b, 0xf9, 0x41, 0x14, 0x3f, 0x8f, 0x7a, 0x47, 0x32, 0xdb, 0x33, 0x78,
-
  0xe2, 0xa0, 0x39, 0x17, 0x7e, 0xd8, 0x8f, 0x17, 0x83, 0x77, 0x7b, 0xb7,
-
  0xe4, 0xc8, 0xa1, 0x0a, 0x7a, 0x94, 0x13, 0x87, 0x1b, 0x6d, 0x13, 0x13,
-
  0x42, 0x05, 0x05, 0x31, 0x65, 0x8b, 0xdd, 0x1c, 0x5c, 0x00, 0x88, 0xa6,
-
  0x9e, 0x54, 0xa6, 0xd0, 0x35, 0xd1, 0xdc, 0xcd, 0xac, 0x46, 0x16, 0xee,
-
  0x13, 0xf3, 0x1a, 0xe9, 0xe5, 0x5b, 0xe3, 0x10, 0xb9, 0x03, 0xc3, 0xf1,
-
  0xa4, 0x62, 0xc3, 0x77, 0x6e, 0x64, 0xc3, 0x0e, 0x27, 0xa9, 0x14, 0x67,
-
  0x8d, 0x92, 0xc1, 0xec, 0xf1, 0x23, 0x17, 0xb0, 0xe6, 0x61, 0x06, 0x16,
-
  0x9c, 0xd8, 0x4e, 0x32, 0xb3, 0x78, 0x4e, 0x89, 0x8b, 0x25, 0xf7, 0xed,
-
  0x0a, 0x48, 0x35, 0x67, 0xa0, 0x9f, 0xce, 0x02, 0x69, 0xfb, 0xe8, 0x61,
-
  0x0d, 0xfa, 0xa2, 0xb7, 0x46, 0x68, 0xae, 0x7d, 0xf5, 0xdb, 0xa4, 0xc6,
-
  0xff, 0xad, 0x59, 0x99, 0xc6, 0xd2, 0x58, 0x23, 0x22, 0x2d, 0x74, 0x6d,
-
  0x9a, 0x33, 0x7f, 0x0b, 0xfe, 0x6f, 0x37, 0xad, 0x6f, 0x38, 0xa7, 0x70,
-
  0x1a, 0x8e, 0x6c, 0x70, 0x76, 0x4f, 0x6a, 0xf8, 0x86, 0xc4, 0x31, 0x8e,
-
  0x3f, 0x43, 0x3e, 0x6a, 0xca, 0xa2, 0xb3, 0x9b, 0x3e, 0x2d, 0x91, 0x0d,
-
  0x11, 0xdc, 0x07, 0x63, 0x35, 0x85, 0x8a, 0x4b, 0x9e, 0x91, 0x5e, 0x73,
-
  0xf4, 0xc3, 0x0b, 0x4a, 0xcd, 0x86, 0x2b, 0x3c, 0x17, 0x2c, 0x68, 0x1e,
-
  0x3f, 0xca, 0xab, 0xb5, 0xf5, 0xf2, 0x9c, 0x67, 0xc6, 0x05, 0x96, 0x30,
-
  0x48, 0x50, 0x30, 0xd7, 0x48, 0x04, 0xe6, 0xc4, 0x09, 0x29, 0x27, 0x58,
-
  0x04, 0xe3, 0x5d, 0x55, 0x49, 0x3f, 0xb1, 0x58, 0x28, 0xc1, 0xf5, 0xa2,
-
  0xde, 0x15, 0xb3, 0x9c, 0x3d, 0x9b, 0x68, 0xde, 0xc1, 0x6d, 0xf5, 0x00,
-
  0x1a, 0x2c, 0x37, 0xa9, 0xae, 0xf3, 0x3a, 0xf9, 0x90, 0xfa, 0x19, 0x7c,
-
  0xd2, 0x7d, 0x9b, 0x4c, 0x1c, 0x5b, 0x4a, 0xcb, 0xbf, 0x68, 0x96, 0x2e,
-
  0x6d, 0x20, 0x1d, 0x10, 0xca, 0x15, 0xfa, 0xdb, 0x43, 0xa1, 0x2b, 0xc6,
-
  0xb2, 0x04, 0x12, 0xff, 0x5f, 0x24, 0x8f, 0x1b, 0xae, 0x33, 0x32, 0x12,
-
  0x28, 0x82, 0xa1, 0xdb, 0x18, 0x85, 0x15, 0xa3, 0x47, 0x46, 0xb2, 0x7d,
-
  0xc3, 0xcd, 0x61, 0x54, 0xee, 0xd7, 0x68, 0x85, 0xfc, 0x56, 0xbc, 0xb7,
-
  0x08, 0x35, 0x51, 0x39, 0x3e, 0x14, 0x29, 0x14, 0x41, 0x63, 0x57, 0xf4,
-
  0x25, 0x5c, 0x86, 0x70, 0x73, 0x1c, 0xe2, 0xea, 0xac, 0x1e, 0x53, 0xdc,
-
  0x38, 0x41, 0xab, 0xef, 0x28, 0x85, 0x85, 0xfc, 0x5f, 0xed, 0xc5, 0xfb,
-
  0xfa, 0xe6, 0xd5, 0x5b, 0x77, 0xf9, 0x56, 0xaf, 0xde, 0xd9, 0x45, 0xea,
-
  0xa4, 0x01, 0x7f, 0xed, 0x78, 0xad, 0x29, 0xcd, 0x83, 0x7d, 0x46, 0xc6,
-
  0x7b, 0x1d, 0xbc, 0x03, 0x90, 0x42, 0xbf, 0xbe, 0xaf, 0x5d, 0x27, 0x62,
-
  0xa4, 0xd8, 0x6a, 0x1c, 0x7c, 0xb8, 0x39, 0x8e, 0xb1, 0xa1, 0xbd, 0x77,
-
  0x91, 0x47, 0xb5, 0x72, 0x6f, 0xc2, 0x20, 0x4a, 0xe9, 0x07, 0xa0, 0xff,
-
  0x9a, 0x89, 0x79, 0x44, 0x0e, 0xe2, 0x38, 0xdc, 0x9c, 0x42, 0xac, 0x89,
-
  0x19, 0xdd, 0x9b, 0x9f, 0xb9, 0x6f, 0x6e, 0x3f, 0x39, 0xaa, 0x35, 0x49,
-
  0x3c, 0xc5, 0x84, 0x6f, 0x68, 0xcc, 0x24, 0xbb, 0x4f, 0x37, 0x7d, 0x6f,
-
  0xba, 0x1e, 0x1f, 0xa9, 0x2d, 0x48, 0xc4, 0x68, 0xe4, 0xb5, 0xad, 0x7e,
-
  0x73, 0xc1, 0xb0, 0xa2, 0x0f, 0x5d, 0xd5, 0xba, 0xcb, 0x59, 0xe7, 0x1e,
-
  0xeb, 0xde, 0x9d, 0x9e, 0x0c, 0xcf, 0x82, 0x7b, 0xf7, 0x7f, 0xd3, 0xfc,
-
  0x88, 0x9e, 0x2d, 0x19, 0x60, 0xe4, 0x46, 0xc5, 0xe5, 0xbe, 0x09, 0x4d,
-
  0x20, 0x22, 0x1c, 0x86, 0x28, 0x00, 0xbd, 0x62, 0x10, 0x58, 0x72, 0x02,
-
  0x49, 0xa4, 0x38, 0xd8, 0x19, 0x5b, 0x21, 0x32, 0x46, 0x67, 0xf8, 0xda,
-
  0x8a, 0x9a, 0x6c, 0x3c, 0x55, 0x8c, 0x19, 0x22, 0xc2, 0x15, 0x94, 0x6a,
-
  0x28, 0x33, 0x4c, 0x94, 0x9d, 0xe4, 0xe7, 0xdd, 0x76, 0x77, 0xb9, 0xf8,
-
  0xfd, 0x1b, 0xdf, 0xbd, 0xaf, 0x6d, 0xdb, 0x34, 0x43, 0x50, 0xa2, 0x57,
-
  0xde, 0xf8, 0xe1, 0x57, 0xbf, 0xe6, 0x9f, 0x74, 0x1f, 0xae, 0xff, 0xb6,
-
  0xa1, 0xc0, 0x3b, 0xbc, 0x4b, 0xef, 0x51, 0xa8, 0xc1, 0x2a, 0x51, 0x23,
-
  0x20, 0x63, 0xb8, 0x4a, 0x26, 0xc8, 0x2c, 0xce, 0x9a, 0xdb, 0x47, 0xba,
-
  0x65, 0x8b, 0xe8, 0xd5, 0xdf, 0xce, 0xce, 0xb6, 0xa0, 0x5d, 0xce, 0xe3,
-
  0x73, 0x11, 0x44, 0xe8, 0x4d, 0x06, 0xff, 0x04, 0x72, 0xf4, 0x33, 0x83,
-
  0x42, 0xb1, 0x1b, 0x9a, 0x99, 0xe3, 0x7a, 0xa6, 0x29, 0xde, 0x92, 0xcc,
-
  0xa2, 0xd1, 0xa8, 0x2c, 0xae, 0x2a, 0x52, 0xb2, 0xd4, 0x61, 0x96, 0xb0,
-
  0x63, 0xe4, 0xc2, 0x03, 0xe9, 0x84, 0xe5, 0x98, 0x99, 0x5a, 0xac, 0xcf,
-
  0xcf, 0x5e, 0xbd, 0x24, 0xbb, 0xad, 0xe0, 0x45, 0x22, 0x20, 0x8c, 0x0c,
-
  0x77, 0x39, 0x9a, 0x67, 0x68, 0xa8, 0xa9, 0x6b, 0xbe, 0x02, 0xf4, 0x56,
-
  0xf1, 0x40, 0x2d, 0x29, 0x16, 0x54, 0x2c, 0x57, 0x8b, 0x50, 0xec, 0x9b,
-
  0xa8, 0x47, 0x4e, 0x19, 0x10, 0x47, 0xaf, 0x5b, 0x5f, 0x83, 0x3b, 0xe2,
-
  0x4c, 0x12, 0x92, 0xaa, 0xbf, 0xc7, 0x9d, 0xc0, 0x27, 0x56, 0xc9, 0xc2,
-
  0x68, 0xdf, 0x9b, 0x51, 0xc5, 0x69, 0xb3, 0x74, 0x28, 0x83, 0x9b, 0xeb,
-
  0x9e, 0x6a, 0x96, 0x24, 0x4d, 0xb9, 0xdb, 0x43, 0x5d, 0x32, 0x72, 0xb8,
-
  0x71, 0x52, 0x35, 0x44, 0x71, 0x14, 0xdf, 0x50, 0x8c, 0x94, 0x18, 0xbd,
-
  0x65, 0x89, 0x7e, 0x2e, 0x35, 0x5c, 0xf8, 0xa0, 0x0b, 0x22, 0xc7, 0xa9,
-
  0xbf, 0xc9, 0x84, 0xc4, 0x36, 0x74, 0x18, 0x09, 0x4d, 0xa1, 0x28, 0x0f,
-
  0x87, 0xf1, 0x05, 0x48, 0x84, 0x0d, 0x5b, 0x84, 0xa7, 0x41, 0x9b, 0x09,
-
  0x64, 0x06, 0xad, 0x13, 0xba, 0x73, 0x42, 0x21, 0x36, 0x2b, 0x8c, 0x25,
-
  0x8e, 0xd6, 0x48, 0x00, 0x1f, 0x24, 0x85, 0x54, 0x1a, 0x91, 0x5b, 0x19,
-
  0x6f, 0x1e, 0x95, 0x49, 0xa1, 0xc2, 0x28, 0x05, 0x86, 0xaa, 0x14, 0xcd,
-
  0x10, 0x09, 0x3f, 0xe0, 0x45, 0x98, 0x4c, 0xdf, 0x89, 0x5c, 0xcc, 0xd0,
-
  0x21, 0xdf, 0x30, 0xab, 0xb0, 0x91, 0x6f, 0x9e, 0x96, 0xe7, 0x6a, 0x65,
-
  0x61, 0x51, 0xd5, 0xf3, 0x4c, 0x8b, 0xb1, 0xf7, 0x7f, 0xc7, 0x2c, 0x7b,
-
  0x90, 0x0d, 0x77, 0xc9, 0x71, 0x3e, 0xf4, 0xc5, 0x46, 0x3c, 0x61, 0xf6,
-
  0x34, 0x49, 0x72, 0x98, 0x3c, 0x9c, 0x51, 0xcc, 0xe9, 0x98, 0xcd, 0xbe,
-
  0x9e, 0x15, 0xcb, 0xea, 0x7a, 0xc3, 0xcb, 0x2b, 0x23, 0xbb, 0x0a, 0xb2,
-
  0xfe, 0x1c, 0x63, 0x81, 0x53, 0x22, 0x3d, 0xda, 0x67, 0xdc, 0x43, 0xca,
-
  0x54, 0x5e, 0xe6, 0xef, 0xad, 0x1c, 0xc1, 0x40, 0x15, 0x15, 0xe3, 0x15,
-
  0xbd, 0x6f, 0x2f, 0xff, 0x86, 0xd3, 0xf3, 0xff, 0x76, 0xbb, 0xed, 0x0e,
-
  0x2b, 0x62, 0x33, 0xd0, 0xed, 0xec, 0x40, 0x36, 0xb4, 0x2b, 0x64, 0x04,
-
  0x8a, 0x1a, 0x61, 0x7f, 0xa6, 0x41, 0xbc, 0x73, 0xb9, 0x84, 0xa4, 0xc6,
-
  0xd7, 0xd9, 0x98, 0x7f, 0x62, 0x34, 0x1d, 0xe8, 0x23, 0x62, 0x0f, 0xa1,
-
  0x2b, 0x5b, 0x62, 0xd3, 0xa2, 0xe8, 0xb4, 0xa8, 0x68, 0xfd, 0xed, 0x6d,
-
  0x9e, 0x34, 0x0a, 0xdc, 0x4d, 0x8b, 0x62, 0x94, 0x94, 0xe1, 0x55, 0xa6,
-
  0x82, 0xea, 0x23, 0x89, 0xbc, 0x64, 0x7f, 0x97, 0xe5, 0x9f, 0xdf, 0xf2,
-
  0x9b, 0x03, 0xf6, 0x1e, 0xbb, 0x76, 0xa0, 0x50, 0xe8, 0xf8, 0x6c, 0x62,
-
  0x87, 0x1e, 0x35, 0xc6, 0x81, 0x9b, 0x42, 0x5b, 0xd5, 0x0f, 0x18, 0xac,
-
  0x10, 0xb1, 0x24, 0xbd, 0x8a, 0x03, 0xb8, 0x53, 0x36, 0xd0, 0x01, 0x13,
-
  0xd2, 0x30, 0x03, 0x88, 0xb2, 0x4f, 0xd4, 0x48, 0x24, 0x81, 0x5d, 0xd6,
-
  0x56, 0xf4, 0xad, 0x83, 0x4b, 0xe3, 0x07, 0xb6, 0x87, 0xf8, 0x88, 0xe5,
-
  0x1b, 0xce, 0x29, 0x24, 0xa6, 0x24, 0xb9, 0x9b, 0xc1, 0xf0, 0x39, 0xd9,
-
  0x03, 0x5b, 0x00, 0x4f, 0xb3, 0xe8, 0x4c, 0x50, 0x69, 0x8b, 0xb7, 0x5a,
-
  0xab, 0xa5, 0xc7, 0xb7, 0x56, 0x20, 0x61, 0x39, 0x41, 0x8a, 0xa2, 0xf6,
-
  0xb0, 0x8f, 0x35, 0x43, 0xe3, 0x3d, 0xa2, 0xee, 0x9e, 0x07, 0x12, 0x9b,
-
  0x28, 0xde, 0x3e, 0x9b, 0x63, 0xc3, 0x54, 0xd9, 0x9d, 0x32, 0x7f, 0x90,
-
  0x49, 0x2c, 0x74, 0x4c, 0xe2, 0x91, 0x37, 0xb8, 0xe2, 0x86, 0x26, 0x3d,
-
  0x95, 0x8a, 0x47, 0x54, 0x52, 0x82, 0x6a, 0x98, 0x8b, 0x5b, 0x52, 0xf9,
-
  0x74, 0x16, 0x8d, 0x49, 0xd4, 0x63, 0xf5, 0x04, 0xfe, 0x5a, 0xc3, 0x9a,
-
  0xd1, 0x7c, 0x0d, 0xff, 0xac, 0x8b, 0x62, 0xf6, 0xf5, 0x78, 0x3e, 0xc1,
-
  0x31, 0xac, 0xd5, 0xd0, 0x47, 0x59, 0xab, 0x5a, 0xe6, 0x71, 0x2b, 0xf9,
-
  0xb0, 0x8a, 0xe4, 0x48, 0x30, 0x2b, 0x23, 0x9c, 0x32, 0x0a, 0x81, 0xa9,
-
  0xa5, 0x2c, 0x4a, 0xfa, 0x01, 0xd3, 0x7b, 0x05, 0x03, 0xde, 0x5e, 0xb3,
-
  0x2c, 0x13, 0xbd, 0xd0, 0xd4, 0xc0, 0x00, 0x62, 0x44, 0x7c, 0xd6, 0x6f,
-
  0x96, 0x0f, 0x6f, 0xc8, 0xaa, 0xe9, 0x2c, 0x3d, 0xe7, 0xe3, 0xf0, 0xf4,
-
  0xe5, 0xf1, 0x8f, 0xc7, 0x2f, 0x3d, 0xd1, 0xe9, 0x87, 0xe1, 0x70, 0xfb,
-
  0x7d, 0x5a, 0x8e, 0xd2, 0xb2, 0xa8, 0x50, 0x7a, 0xaa, 0x23, 0x7a, 0xce,
-
  0x24, 0xad, 0x39, 0x34, 0x7f, 0x25, 0x15, 0x08, 0x18, 0x36, 0x2a, 0x18,
-
  0xb7, 0x8d, 0xe9, 0xcf, 0xdc, 0xa5, 0x64, 0xfe, 0x13, 0xf0, 0xd0, 0xdc,
-
  0x78, 0x34, 0x4b, 0x0c, 0x00, 0x21, 0x87, 0x5f, 0x12, 0x28, 0x3d, 0x44,
-
  0x78, 0xe3, 0x51, 0xf4, 0x8c, 0xb9, 0x00, 0x03, 0x30, 0xe0, 0x15, 0x69,
-
  0x67, 0xe1, 0xbd, 0xb2, 0x20, 0x50, 0xdf, 0xe8, 0x99, 0x74, 0x5a, 0x31,
-
  0x32, 0x24, 0x2e, 0x1a, 0x97, 0x2c, 0x62, 0x15, 0xff, 0xe4, 0xaf, 0xf1,
-
  0xe1, 0x30, 0x7e, 0x76, 0xfc, 0xf2, 0xf8, 0x87, 0xc3, 0xb3, 0x63, 0x53,
-
  0x5f, 0xde, 0x0f, 0xe4, 0x68, 0x42, 0xca, 0xfd, 0x55, 0xd6, 0xc5, 0x54,
-
  0xb5, 0xae, 0xb3, 0xf1, 0x7b, 0x72, 0xb4, 0x71, 0xa4, 0x8b, 0xe2, 0x67,
-
  0xcd, 0x13, 0xba, 0x42, 0xfc, 0x28, 0x16, 0x13, 0xe6, 0x05, 0xe2, 0x90,
-
  0x0c, 0xd5, 0x9b, 0x41, 0x32, 0x03, 0xb1, 0xb2, 0x8a, 0xde, 0xe6, 0x88,
-
  0x40, 0x91, 0x19, 0x94, 0x39, 0x9e, 0xbd, 0x6b, 0xec, 0xb6, 0x4b, 0x6b,
-
  0xdb, 0xe0, 0x38, 0x16, 0x67, 0x97, 0xef, 0x00, 0x54, 0xec, 0x98, 0xe1,
-
  0x9b, 0x91, 0x2b, 0x9e, 0xf5, 0x57, 0xe5, 0x7d, 0xdb, 0x5d, 0x0f, 0xb7,
-
  0xac, 0x77, 0x4b, 0x41, 0xbf, 0x51, 0x58, 0x4c, 0x84, 0xfd, 0xaa, 0x9a,
-
  0x35, 0xe8, 0x35, 0xc3, 0xea, 0x58, 0x61, 0xd3, 0xa1, 0x62, 0xcc, 0x92,
-
  0x78, 0xfe, 0x8c, 0x1e, 0x6c, 0xe5, 0x13, 0x38, 0x88, 0x95, 0xb9, 0xcd,
-
  0x35, 0x08, 0xa0, 0xc2, 0xd3, 0x4a, 0x55, 0xe3, 0x8b, 0x74, 0x9e, 0xaa,
-
  0xc0, 0x81, 0xe1, 0xfb, 0x14, 0x23, 0xce, 0x38, 0x74, 0x52, 0xc5, 0x83,
-
  0xae, 0xbc, 0x51, 0x4a, 0xa6, 0x35, 0x34, 0x84, 0x14, 0x7e, 0x68, 0x30,
-
  0x3e, 0x7f, 0x95, 0x95, 0x94, 0xa3, 0x4f, 0x69, 0x4b, 0x84, 0xa0, 0x38,
-
  0xa0, 0x14, 0x50, 0x27, 0xae, 0xde, 0xc4, 0xd1, 0x1b, 0xc1, 0x03, 0x81,
-
  0xdb, 0x7c, 0x28, 0x0a, 0x5b, 0x50, 0xda, 0x44, 0x37, 0x71, 0x20, 0x15,
-
  0x7d, 0x44, 0x2c, 0x4b, 0xd5, 0x6f, 0x1c, 0xe1, 0xea, 0x70, 0x3b, 0x5e,
-
  0xce, 0xb5, 0x02, 0x67, 0xfc, 0xfb, 0xa7, 0x1d, 0x38, 0xc3, 0x8d, 0x7e,
-
  0x74, 0xa5, 0x6a, 0x19, 0xdb, 0x5a, 0xfc, 0xd7, 0xac, 0x4d, 0xdf, 0x94,
-
  0xad, 0x96, 0x66, 0x98, 0x9a, 0x80, 0x59, 0xe0, 0xae, 0x0f, 0x0c, 0x12,
-
  0x4b, 0x28, 0xdf, 0x02, 0x13, 0x65, 0x94, 0xed, 0x36, 0xb9, 0xae, 0x5b,
-
  0x87, 0x9d, 0xaa, 0x85, 0xeb, 0xaf, 0x5a, 0x12, 0xbc, 0x49, 0xaa, 0xb4,
-
  0x5e, 0x71, 0xba, 0xf0, 0x6a, 0x23, 0x6f, 0x12, 0x26, 0xf2, 0x99, 0x9b,
-
  0xf3, 0xab, 0x68, 0x5a, 0x72, 0x5d, 0xab, 0xed, 0xf1, 0xf8, 0xf4, 0xcd,
-
  0x19, 0x75, 0xf2, 0x12, 0x7f, 0x91, 0x2b, 0xb5, 0x0a, 0x95, 0x43, 0xa2,
-
  0x30, 0x72, 0x4e, 0x13, 0x49, 0x29, 0x2c, 0xd3, 0x64, 0x52, 0x68, 0x3a,
-
  0x28, 0x4b, 0x15, 0x52, 0xd2, 0x5a, 0xb8, 0x0a, 0xf9, 0x92, 0x3c, 0x04,
-
  0x8a, 0x1a, 0x41, 0x0a, 0x4c, 0x6a, 0x20, 0x8e, 0x41, 0x0a, 0x50, 0xd0,
-
  0x28, 0x38, 0xc1, 0x5a, 0xc3, 0x8c, 0x4e, 0xf0, 0x4b, 0xd4, 0xde, 0x4c,
-
  0xa2, 0x50, 0x47, 0x84, 0xad, 0xc2, 0xd2, 0x60, 0x93, 0xf8, 0x56, 0x54,
-
  0x32, 0x9e, 0x2e, 0x8c, 0x63, 0x60, 0xe7, 0xc9, 0x5d, 0x30, 0x54, 0x22,
-
  0xd5, 0xe5, 0xf3, 0x83, 0x8a, 0x08, 0xd2, 0xc8, 0x60, 0x76, 0x28, 0x3a,
-
  0x02, 0x27, 0x65, 0x9b, 0xf0, 0xc4, 0xbe, 0x14, 0x9d, 0x60, 0x74, 0x59,
-
  0x82, 0xad, 0xe0, 0x28, 0x45, 0x2f, 0x50, 0x86, 0x80, 0x31, 0x78, 0x0a,
-
  0x94, 0x3f, 0xc4, 0x15, 0xfe, 0x58, 0xbb, 0x9a, 0x4a, 0xe8, 0x73, 0x42,
-
  0xb5, 0x31, 0x49, 0xac, 0x19, 0xb1, 0x3a, 0x20, 0xaa, 0x7e, 0x48, 0x7e,
-
  0x82, 0x85, 0x57, 0x3e, 0xcd, 0x13, 0x95, 0x6d, 0x0b, 0x68, 0xc4, 0x48,
-
  0x1b, 0xed, 0xa2, 0x25, 0x4e, 0x7a, 0x95, 0x0c, 0x85, 0x17, 0x87, 0x91,
-
  0x89, 0x99, 0xde, 0x8a, 0x10, 0x55, 0x31, 0x5b, 0x73, 0x62, 0x0d, 0x1a,
-
  0x24, 0xd8, 0x95, 0xc9, 0x69, 0x3c, 0xb7, 0x84, 0xee, 0xe3, 0x94, 0x07,
-
  0x7d, 0x71, 0x7a, 0xf9, 0xa8, 0x19, 0xe3, 0xc9, 0xc6, 0x74, 0x12, 0xaa,
-
  0x61, 0x55, 0xdb, 0xfe, 0x6a, 0x46, 0xfe, 0x80, 0xbe, 0x69, 0xb8, 0x68,
-
  0x8a, 0x36, 0xd1, 0xde, 0x48, 0x3b, 0x5e, 0xff, 0xcc, 0x4f, 0x88, 0x11,
-
  0xd1, 0x1b, 0x74, 0x1f, 0xb3, 0x8c, 0xcb, 0x4c, 0x56, 0x68, 0x79, 0x94,
-
  0x42, 0x8f, 0x19, 0xc2, 0x0d, 0x37, 0x3c, 0xc5, 0x5e, 0x7c, 0x29, 0xd0,
-
  0xdf, 0xf8, 0x42, 0x4d, 0x1e, 0xf8, 0x22, 0x85, 0x49, 0xe2, 0x0b, 0x04,
-
  0xa8, 0x58, 0xb3, 0xd0, 0xc0, 0xc9, 0x12, 0xf1, 0x69, 0x5f, 0x23, 0x95,
-
  0xb9, 0x80, 0x5c, 0x51, 0xfa, 0x29, 0x13, 0x63, 0x53, 0x49, 0x43, 0x1f,
-
  0x4d, 0xaa, 0xcb, 0x9b, 0xf8, 0xa9, 0x5d, 0xf0, 0x8e, 0xf8, 0xe5, 0xbb,
-
  0x87, 0x2f, 0xaf, 0xdc, 0xcd, 0x9b, 0x3c, 0xb1, 0xee, 0xc0, 0xd6, 0x82,
-
  0x14, 0xb7, 0x6f, 0x56, 0x97, 0x4c, 0x7e, 0xa7, 0x7d, 0x67, 0xe9, 0xc2,
-
  0x1c, 0xaf, 0xba, 0xfc, 0x08, 0x8e, 0x37, 0xfc, 0xd1, 0xe8, 0x0e, 0x0c,
-
  0x03, 0xe8, 0x67, 0xef, 0xd0, 0x72, 0xeb, 0x3e, 0xaf, 0xc9, 0xed, 0x80,
-
  0xbf, 0xf9, 0x71, 0x00, 0xc8, 0xef, 0x0c, 0xbb, 0x83, 0x01, 0x08, 0x8f,
-
  0x3b, 0x3d, 0x1c, 0xfe, 0xd8, 0xe2, 0x6e, 0x1e, 0x3f, 0x03, 0xaa, 0xf2,
-
  0xa2, 0x14, 0xb4, 0x3e, 0x29, 0xb6, 0x15, 0x3c, 0xf6, 0xb0, 0x96, 0xb7,
-
  0x38, 0xf6, 0x30, 0x10, 0xef, 0xd8, 0x7b, 0x4b, 0xbb, 0xea, 0xd8, 0x07,
-
  0xe8, 0xd5, 0x3f, 0xf6, 0x39, 0x1d, 0x75, 0x02, 0x5b, 0x09, 0x9c, 0x77,
-
  0x3d, 0xee, 0x7a, 0xc2, 0xfd, 0x5c, 0x47, 0x1a, 0xe7, 0x3a, 0xe7, 0x9d,
-
  0x5e, 0xf0, 0x8e, 0xbb, 0x6e, 0xe7, 0xda, 0xe7, 0x5d, 0xf8, 0x84, 0x77,
-
  0xdc, 0x49, 0xbf, 0xef, 0x20, 0xd6, 0x40, 0x08, 0x71, 0x83, 0xd0, 0x5b,
-
  0x12, 0xd1, 0xc7, 0xd7, 0x17, 0x5d, 0xb9, 0x27, 0xb7, 0x3e, 0xbc, 0x30,
-
  0xb2, 0x3b, 0x1e, 0x5e, 0x0d, 0x50, 0xed, 0x3a, 0xbc, 0x2e, 0x76, 0x5e,
-
  0xc0, 0x44, 0x46, 0x54, 0x2a, 0x15, 0xed, 0xe4, 0x18, 0xd9, 0x70, 0xcd,
-
  0x80, 0x25, 0xa3, 0x6f, 0x50, 0x13, 0xcb, 0xb1, 0xef, 0x69, 0x36, 0x18,
-
  0x9d, 0x2e, 0x5e, 0x4a, 0x29, 0xea, 0xab, 0xc0, 0x7a, 0xe2, 0x2c, 0xc8,
-
  0x02, 0xeb, 0x02, 0x0f, 0x22, 0x81, 0x87, 0x8b, 0xcc, 0xe8, 0x20, 0x42,
-
  0x48, 0xa0, 0x55, 0x8a, 0xa9, 0x45, 0x51, 0x33, 0x30, 0x37, 0xc0, 0xbe,
-
  0xff, 0xd9, 0x77, 0xb8, 0xd8, 0xa7, 0x62, 0xdf, 0x6b, 0x6e, 0xfe, 0x3f,
-
  0xd7, 0x13, 0x80, 0x9d, 0xc5, 0x6a, 0x73, 0x66, 0xd4, 0x17, 0x49, 0x36,
-
  0x46, 0x41, 0x1b, 0xd4, 0x2c, 0xb4, 0x4b, 0xac, 0x88, 0x9b, 0xa9, 0x1b,
-
  0xc5, 0x9a, 0x11, 0x22, 0x90, 0x34, 0x67, 0xb1, 0x77, 0xa1, 0x56, 0x8b,
-
  0x80, 0xb7, 0xea, 0x99, 0x67, 0xdf, 0xa0, 0x8f, 0xee, 0x55, 0x72, 0x44,
-
  0x9c, 0x53, 0x34, 0x18, 0x04, 0xb4, 0x11, 0xa6, 0x2d, 0x62, 0x3d, 0xbd,
-
  0x8a, 0xb4, 0x16, 0xf4, 0xfe, 0x1b, 0x14, 0x40, 0x42, 0x4a, 0xae, 0x58,
-
  0xa5, 0xea, 0xb2, 0x9c, 0x81, 0x3a, 0x56, 0x22, 0x26, 0xd0, 0x3c, 0x75,
-
  0xb2, 0xbf, 0x6f, 0x3c, 0xdb, 0xa1, 0xf9, 0xaf, 0xd2, 0x7c, 0x82, 0xf2,
-
  0xcd, 0xe0, 0xc6, 0x2d, 0x0e, 0x75, 0x73, 0x97, 0x03, 0x1f, 0x1c, 0xee,
-
  0x9a, 0xe5, 0x85, 0x51, 0x16, 0x6e, 0x04, 0xe6, 0x3c, 0x6a, 0xd5, 0x15,
-
  0x9e, 0xe4, 0x55, 0x4c, 0x56, 0xd1, 0x29, 0xe2, 0xa7, 0x3f, 0x35, 0xbf,
-
  0x7a, 0x56, 0xa0, 0x67, 0xaf, 0x35, 0x3a, 0xdd, 0x09, 0x4e, 0xaf, 0x52,
-
  0x46, 0x26, 0xe2, 0xdc, 0x7f, 0x78, 0xc4, 0x66, 0xf6, 0xd7, 0x17, 0x65,
-
  0xb1, 0x3c, 0xbf, 0x90, 0x26, 0xdb, 0xf7, 0x2d, 0x75, 0xe1, 0x61, 0xd1,
-
  0x25, 0x0c, 0xf5, 0x94, 0x96, 0xe4, 0x04, 0x26, 0x7d, 0xcb, 0x8e, 0x2d,
-
  0xda, 0x14, 0x93, 0x0a, 0x3a, 0x89, 0x02, 0x85, 0x61, 0x14, 0x79, 0x0e,
-
  0x87, 0xb1, 0xc5, 0x0e, 0x65, 0xcc, 0x59, 0xa2, 0xd2, 0xf5, 0x52, 0xbf,
-
  0x4a, 0x2b, 0x07, 0x50, 0x95, 0x6e, 0x6d, 0x37, 0xe0, 0x41, 0xdf, 0x94,
-
  0x1a, 0x16, 0x92, 0xc7, 0xbb, 0x15, 0x0e, 0x75, 0x6e, 0x2e, 0xdd, 0x5a,
-
  0x56, 0x95, 0x7b, 0x2c, 0xfd, 0xdb, 0x1c, 0x45, 0x5a, 0x5f, 0xdc, 0x1a,
-
  0xd5, 0x88, 0x89, 0x44, 0x9b, 0x58, 0x5c, 0x3e, 0x88, 0x71, 0xbe, 0x91,
-
  0xfa, 0x58, 0xf9, 0xc3, 0x47, 0xf4, 0xe1, 0xa0, 0xdd, 0x91, 0x97, 0xa5,
-
  0xf8, 0xcf, 0x65, 0x56, 0xa6, 0x4e, 0xcd, 0xf2, 0x65, 0x3e, 0x49, 0xcb,
-
  0x19, 0xd5, 0x42, 0x99, 0x65, 0x23, 0x36, 0x6a, 0x27, 0xa6, 0xa8, 0x28,
-
  0x63, 0x9b, 0x73, 0x46, 0x19, 0xcc, 0xc4, 0x03, 0x74, 0x2b, 0xd3, 0x66,
-
  0x14, 0xf6, 0xfe, 0x7e, 0x80, 0x6a, 0xcd, 0x88, 0x9f, 0xca, 0x3e, 0x85,
-
  0x69, 0xb6, 0x21, 0x72, 0x8e, 0x08, 0x72, 0xb8, 0x00, 0xaa, 0x5c, 0xc4,
-
  0xfa, 0x16, 0xb3, 0x9e, 0x79, 0xf2, 0x5e, 0x74, 0x9e, 0x07, 0x42, 0xc8,
-
  0xb1, 0x87, 0xf1, 0x8f, 0x84, 0xdd, 0x6f, 0xc4, 0x29, 0x35, 0x48, 0x5e,
-
  0x14, 0xd1, 0x5a, 0x6b, 0xf5, 0x49, 0xc8, 0xa7, 0xf4, 0x13, 0x82, 0x4b,
-
  0xd3, 0xec, 0x33, 0xd7, 0x9f, 0xa4, 0x18, 0x44, 0x34, 0x12, 0xf3, 0x6e,
-
  0x27, 0x01, 0x9a, 0x55, 0xf8, 0xac, 0x04, 0x68, 0x46, 0xb1, 0xbb, 0x33,
-
  0xd8, 0x1d, 0xec, 0x0d, 0xd6, 0x85, 0xb9, 0x6b, 0x52, 0xb1, 0xb1, 0x92,
-
  0x37, 0x69, 0xb0, 0xdd, 0x59, 0x17, 0x11, 0x8a, 0xbd, 0x8e, 0x8c, 0x03,
-
  0x0e, 0x1d, 0x36, 0x08, 0x91, 0xe9, 0x10, 0x59, 0x98, 0x50, 0xe1, 0x9d,
-
  0x89, 0xf0, 0xd1, 0x27, 0x21, 0xc2, 0x47, 0x37, 0x10, 0x21, 0x95, 0x38,
-
  0xb2, 0xf3, 0xec, 0xa0, 0x43, 0x89, 0xf2, 0x41, 0xd6, 0x7a, 0x67, 0x22,
-
  0x7c, 0x74, 0x2b, 0x22, 0x7c, 0xf4, 0xdf, 0x82, 0x08, 0x65, 0x14, 0x7b,
-
  0xc9, 0xce, 0x83, 0x83, 0x07, 0xe9, 0x83, 0xbd, 0x83, 0x83, 0x87, 0x8f,
-
  0x76, 0xef, 0xc6, 0x0f, 0x9b, 0xc4, 0xd8, 0xa2, 0xbc, 0x41, 0xbb, 0xcb,
-
  0xff, 0x06, 0xfc, 0x50, 0xec, 0x58, 0x86, 0x10, 0x53, 0x8f, 0x14, 0x87,
-
  0x12, 0x07, 0xaf, 0x45, 0xfb, 0x90, 0x68, 0xf4, 0x2d, 0x8e, 0x6b, 0x92,
-
  0x9c, 0x7f, 0xcd, 0xb8, 0x75, 0x2b, 0xa1, 0xfa, 0x40, 0xea, 0x24, 0x66,
-
  0x4b, 0xe6, 0x96, 0x36, 0xf9, 0xe2, 0x34, 0x32, 0xdd, 0x3b, 0xf4, 0x64,
-
  0x6b, 0xee, 0x48, 0x80, 0x6c, 0x30, 0x3c, 0x01, 0xe6, 0x78, 0x8a, 0x0b,
-
  0xc0, 0xd9, 0xb9, 0x95, 0x05, 0x52, 0x0d, 0x95, 0xd6, 0x81, 0xc5, 0x3b,
-
  0x78, 0x8a, 0xeb, 0x15, 0xf3, 0xe3, 0xdf, 0x04, 0x01, 0xf2, 0xd2, 0x04,
-
  0x24, 0x06, 0x3b, 0xa8, 0x6e, 0x12, 0xd6, 0x75, 0xb8, 0x0d, 0x01, 0x3b,
-
  0x99, 0x4b, 0xf7, 0x4c, 0xc2, 0x3a, 0x8a, 0xdd, 0x2f, 0xf7, 0x06, 0xbb,
-
  0x8f, 0x9e, 0x20, 0x1e, 0x6a, 0xdf, 0xfe, 0xbe, 0xb7, 0x1e, 0x25, 0xb7,
-
  0x09, 0x79, 0x05, 0x1d, 0x6b, 0xbf, 0x21, 0x7e, 0x73, 0x2b, 0x3a, 0xf6,
-
  0xd8, 0x29, 0x10, 0x31, 0x51, 0x6d, 0x1b, 0x97, 0x76, 0x05, 0x0d, 0x17,
-
  0x17, 0x5c, 0x82, 0xb2, 0xaa, 0x93, 0x7a, 0xd9, 0x96, 0xf0, 0x86, 0xe4,
-
  0xd6, 0xa8, 0xb4, 0x4c, 0x25, 0x3f, 0x43, 0x76, 0x19, 0x83, 0x20, 0xfc,
-
  0xac, 0x78, 0x4e, 0xdc, 0x36, 0x46, 0x17, 0x4c, 0x8c, 0x8a, 0xcc, 0x70,
-
  0xeb, 0x06, 0x63, 0x5d, 0xb3, 0xcb, 0xdb, 0x78, 0x41, 0xd6, 0xd0, 0xf6,
-
  0x9a, 0x8d, 0xaf, 0x4d, 0x0e, 0xad, 0xb1, 0xf1, 0x27, 0xae, 0x0a, 0x00,
-
  0x7f, 0x6b, 0xd5, 0x8f, 0x75, 0x6f, 0x5b, 0x68, 0x49, 0xbd, 0x6c, 0xcd,
-
  0x6c, 0xb7, 0x47, 0xfe, 0x9e, 0xe8, 0x83, 0x5d, 0x1b, 0xd2, 0xf4, 0xd9,
-
  0x7d, 0xcc, 0x8e, 0x34, 0xfb, 0xfb, 0x04, 0x16, 0x18, 0x77, 0xda, 0x77,
-
  0xd8, 0x0e, 0x33, 0xb2, 0xfb, 0xde, 0x0b, 0x54, 0x10, 0x6f, 0xda, 0x06,
-
  0xec, 0xed, 0x29, 0xe8, 0xc6, 0xe1, 0xd2, 0x6f, 0x04, 0xae, 0x29, 0xfa,
-
  0x51, 0x73, 0xc1, 0x51, 0x02, 0x29, 0x9e, 0x6f, 0x39, 0x3e, 0x62, 0x8a,
-
  0x6c, 0xc3, 0xd8, 0x24, 0x42, 0x16, 0x0e, 0x60, 0x4a, 0x53, 0x75, 0x0a,
-
  0x17, 0x79, 0xc1, 0x89, 0x13, 0x54, 0xeb, 0x0a, 0xb9, 0x19, 0xa5, 0x89,
-
  0x32, 0x9a, 0xa7, 0x68, 0xc7, 0xcb, 0xaa, 0x79, 0x48, 0xbe, 0x40, 0x85,
-
  0x5e, 0x35, 0x2f, 0x1a, 0x92, 0x5f, 0xb1, 0x09, 0xeb, 0x7f, 0x50, 0x9d,
-
  0x56, 0x13, 0xe2, 0xc6, 0x1c, 0x47, 0x91, 0x3a, 0x91, 0x98, 0xe0, 0xf7,
-
  0xd2, 0xe2, 0x11, 0x6b, 0xf2, 0x13, 0xa5, 0xf2, 0xb4, 0x49, 0x00, 0xc8,
-
  0x8e, 0xc1, 0x9b, 0x4c, 0x08, 0x2f, 0x86, 0x8a, 0x2d, 0x17, 0x15, 0xe1,
-
  0x40, 0x70, 0x9d, 0x8e, 0x88, 0x3c, 0xb5, 0xd4, 0x2b, 0xdc, 0x61, 0xcf,
-
  0x8b, 0xab, 0xf4, 0xb2, 0xa3, 0xb0, 0x55, 0xa3, 0x16, 0xb5, 0x8b, 0x43,
-
  0x4e, 0x17, 0x01, 0x06, 0x61, 0xd9, 0x72, 0x94, 0x59, 0x7e, 0x91, 0x22,
-
  0x38, 0x92, 0x64, 0xe1, 0x91, 0x81, 0x37, 0x90, 0x67, 0x51, 0x16, 0x14,
-
  0xf0, 0xe9, 0xd4, 0x9d, 0xbc, 0xcc, 0x92, 0x36, 0x95, 0x09, 0xbf, 0xbe,
-
  0x81, 0x8d, 0xb4, 0x54, 0xe8, 0x65, 0x4e, 0xc8, 0xcb, 0x53, 0x02, 0xca,
-
  0x24, 0xa0, 0x71, 0xd1, 0x7d, 0x7b, 0x3d, 0x5b, 0x0d, 0x52, 0x30, 0x73,
-
  0x08, 0xab, 0xbb, 0x2d, 0xae, 0x3a, 0x64, 0xf8, 0xe4, 0x61, 0x00, 0x73,
-
  0x41, 0xe2, 0x09, 0x84, 0x22, 0x3f, 0x53, 0xd1, 0xe3, 0xff, 0x00, 0x2b,
-
  0x7c, 0xb4, 0xd7, 0x38, 0x83, 0xcf, 0xc8, 0x3a, 0xba, 0x9c, 0x2f, 0x04,
-
  0x7f, 0xfb, 0x06, 0xa0, 0xdf, 0x88, 0xbc, 0x1d, 0x3f, 0x11, 0x4e, 0x16,
-
  0x07, 0x0d, 0x0a, 0x2c, 0xa4, 0x7a, 0x27, 0x0d, 0xf2, 0x9b, 0x04, 0x68,
-
  0x75, 0xd6, 0xdf, 0x63, 0x34, 0x35, 0x83, 0xa4, 0xeb, 0xd6, 0x3f, 0xd5,
-
  0x46, 0xfb, 0x4d, 0x0f, 0x4a, 0xd3, 0x7c, 0x1f, 0xc6, 0x62, 0x32, 0xd4,
-
  0x11, 0xac, 0xa0, 0xd6, 0xc0, 0x7f, 0x62, 0x60, 0x9f, 0x8b, 0xd4, 0x85,
-
  0xbc, 0x36, 0x95, 0x60, 0x39, 0x62, 0x8f, 0x9d, 0xb5, 0xb6, 0xb6, 0x87,
-
  0xb7, 0xc7, 0x44, 0x80, 0x32, 0xf4, 0x9e, 0x54, 0x75, 0x5c, 0x4a, 0xe5,
-
  0x6f, 0x2c, 0xd9, 0xca, 0xc5, 0x04, 0xbd, 0x71, 0x3c, 0x4f, 0x2e, 0xe9,
-
  0xa6, 0x76, 0xec, 0xb0, 0x06, 0x1c, 0x90, 0x90, 0x00, 0x30, 0x1a, 0x88,
-
  0x20, 0x64, 0xa6, 0x16, 0x41, 0xb6, 0x8a, 0x36, 0xb3, 0x01, 0x2c, 0x99,
-
  0x7f, 0x90, 0x81, 0xdc, 0x29, 0xd6, 0x02, 0xdf, 0x8a, 0x0f, 0xfa, 0xe4,
-
  0xb6, 0xff, 0x80, 0x99, 0xf5, 0x18, 0x2f, 0xbd, 0xd5, 0x6f, 0x24, 0x54,
-
  0x32, 0x86, 0x81, 0x75, 0x32, 0x57, 0x81, 0x74, 0x2e, 0xbf, 0x9c, 0x64,
-
  0x12, 0x8d, 0x66, 0x49, 0xfe, 0x3e, 0x5c, 0xd4, 0x92, 0x4e, 0xce, 0x33,
-
  0xb6, 0x30, 0x3b, 0x84, 0xf4, 0xf9, 0x10, 0x65, 0xdc, 0x51, 0x10, 0x56,
-
  0xdf, 0xfa, 0xd0, 0x17, 0x0e, 0x3c, 0x96, 0x7b, 0x61, 0xa5, 0xe7, 0x1c,
-
  0x68, 0xb6, 0x0a, 0xb3, 0xe4, 0x59, 0x8a, 0xf9, 0x4b, 0x0c, 0x17, 0xbc,
-
  0x70, 0x62, 0x73, 0x2c, 0x2f, 0x13, 0xa0, 0x01, 0xc6, 0x97, 0x60, 0x9b,
-
  0x23, 0xb1, 0xf5, 0x76, 0x99, 0xa9, 0xc1, 0x93, 0x07, 0x70, 0x56, 0x51,
-
  0x92, 0xc8, 0x0a, 0xc9, 0x12, 0xe4, 0x30, 0x34, 0x4e, 0x31, 0x20, 0xa7,
-
  0x82, 0x7a, 0xa7, 0x0b, 0x05, 0x44, 0x9a, 0x1a, 0x99, 0xd5, 0xb7, 0x59,
-
  0x47, 0x18, 0xd6, 0x6a, 0xf2, 0xa5, 0x81, 0xb8, 0x04, 0x15, 0xa2, 0xb3,
-
  0xd4, 0x20, 0x7b, 0xaf, 0x30, 0x21, 0x5d, 0x02, 0x7f, 0xc9, 0x8f, 0x89,
-
  0x7c, 0x7e, 0x01, 0x43, 0xff, 0x21, 0x41, 0xf2, 0x26, 0x4a, 0x7e, 0x96,
-
  0xa4, 0x73, 0xba, 0x38, 0x0a, 0x0c, 0x13, 0x0b, 0xdd, 0x96, 0xf2, 0x95,
-
  0x93, 0x21, 0xcc, 0x86, 0x56, 0x3e, 0x24, 0x11, 0xd0, 0xff, 0x04, 0x74,
-
  0x7a, 0xc1, 0xfd, 0xc4, 0x7b, 0x91, 0xca, 0x9b, 0x13, 0x28, 0x45, 0x18,
-
  0x85, 0x3b, 0xa8, 0xf2, 0x98, 0x0d, 0xfa, 0x4c, 0x0c, 0xdc, 0xf4, 0xbf,
-
  0xcd, 0x13, 0xda, 0xa6, 0x62, 0xa2, 0x6b, 0x96, 0x46, 0xa0, 0x37, 0xbd,
-
  0x80, 0x46, 0x59, 0x9a, 0xa7, 0x41, 0xde, 0xcc, 0x18, 0x2b, 0xc3, 0x74,
-
  0xa6, 0x35, 0x4a, 0x14, 0xef, 0x63, 0x5c, 0x5e, 0x2f, 0xd0, 0xcb, 0xc1,
-
  0x2f, 0x8b, 0x94, 0x84, 0xcb, 0xcb, 0xa0, 0x10, 0x2b, 0x61, 0xce, 0xdf,
-
  0x52, 0x18, 0xb1, 0xbc, 0x4a, 0x9a, 0x30, 0x45, 0xda, 0x62, 0xd9, 0xe8,
-
  0xc4, 0x68, 0xc6, 0x48, 0x6d, 0x13, 0xaa, 0x5e, 0x63, 0xa1, 0xb4, 0xda,
-
  0x0e, 0x06, 0x6a, 0xa1, 0xd2, 0xf4, 0x38, 0x31, 0xef, 0x48, 0xa0, 0x63,
-
  0xb4, 0x49, 0x41, 0x5d, 0x0a, 0x2f, 0x8d, 0x51, 0x75, 0x5b, 0xaa, 0xa2,
-
  0xcb, 0x8b, 0x9e, 0x42, 0x4d, 0xea, 0xb2, 0xc5, 0x51, 0xb1, 0x5e, 0x93,
-
  0x0e, 0xa2, 0xe0, 0x19, 0x7c, 0x36, 0xec, 0x0e, 0x25, 0xea, 0x59, 0x72,
-
  0x09, 0x0b, 0x7f, 0x27, 0xec, 0x0e, 0xc5, 0xe0, 0x21, 0x14, 0x90, 0x06,
-
  0x55, 0xd4, 0xc9, 0x79, 0x2c, 0x05, 0x4f, 0x3a, 0xb8, 0x92, 0xe3, 0xfa,
-
  0x12, 0x1e, 0xc4, 0x68, 0xc9, 0x94, 0x99, 0x6b, 0xe2, 0x79, 0xe8, 0x76,
-
  0xd7, 0xf4, 0x20, 0x29, 0x42, 0x83, 0x97, 0xb7, 0x17, 0x43, 0x48, 0x60,
-
  0x3d, 0xc7, 0x67, 0xc9, 0x39, 0xfb, 0x35, 0x4d, 0xc2, 0x9d, 0x03, 0xa5,
-
  0x8f, 0x05, 0x3b, 0xe1, 0xb2, 0xe1, 0x22, 0x54, 0x63, 0x10, 0x91, 0xe1,
-
  0x91, 0x17, 0xd3, 0xf8, 0x35, 0xec, 0x6d, 0xec, 0x95, 0x23, 0x43, 0x5f,
-
  0xb7, 0x30, 0x6b, 0x2b, 0x8e, 0x0b, 0x8e, 0x30, 0x76, 0x33, 0x08, 0x56,
-
  0x39, 0xd2, 0x50, 0x6e, 0xce, 0x8b, 0x83, 0x2d, 0xa4, 0x64, 0xc0, 0xca,
-
  0x54, 0x76, 0x68, 0xa6, 0x41, 0xd1, 0xa8, 0xb4, 0xb0, 0xae, 0x87, 0x06,
-
  0x47, 0x10, 0xbb, 0x62, 0x18, 0x94, 0x0a, 0xaf, 0x1a, 0xa8, 0x38, 0x49,
-
  0xab, 0x8c, 0x58, 0x35, 0x8d, 0x04, 0xf4, 0xfc, 0xdc, 0xd4, 0xb9, 0xe1,
-
  0xc4, 0x42, 0x2f, 0x28, 0x0c, 0x36, 0x42, 0x64, 0x51, 0x23, 0x8b, 0x04,
-
  0x67, 0xf1, 0xd6, 0x40, 0x9b, 0x6a, 0x54, 0xb4, 0x6c, 0x66, 0x45, 0x61,
-
  0x09, 0x54, 0xa8, 0x02, 0x9d, 0xd1, 0xf4, 0x27, 0xb1, 0x5d, 0x5c, 0x72,
-
  0x49, 0x44, 0xf0, 0xed, 0x19, 0x2c, 0xb7, 0xf4, 0xb5, 0xb2, 0x74, 0x2e,
-
  0x79, 0x3e, 0x0e, 0x52, 0x5c, 0xa1, 0x75, 0x71, 0x04, 0x10, 0xac, 0xaa,
-
  0x8d, 0x08, 0x70, 0xe9, 0x1d, 0x59, 0xea, 0x8c, 0xe1, 0x3d, 0x96, 0x23,
-
  0xae, 0x3a, 0x68, 0xea, 0x3a, 0x75, 0x40, 0xca, 0x35, 0x28, 0xf1, 0x73,
-
  0xd9, 0x4b, 0x1b, 0x83, 0xc0, 0x3f, 0xee, 0x80, 0x7a, 0x65, 0x77, 0x81,
-
  0x0e, 0xdd, 0xef, 0x28, 0x0a, 0xe0, 0xd8, 0xd1, 0xfb, 0x3c, 0x69, 0xca,
-
  0xd2, 0x4f, 0x9a, 0xfa, 0xac, 0x7d, 0xf3, 0xb6, 0x27, 0x11, 0x1f, 0xae,
-
  0x38, 0x3b, 0x0e, 0x8e, 0x1f, 0xad, 0xba, 0x66, 0x5b, 0x34, 0x88, 0x97,
-
  0x48, 0x2f, 0xb4, 0x47, 0x1a, 0x88, 0x3d, 0x4e, 0xc6, 0x84, 0xf2, 0x09,
-
  0x9b, 0x34, 0x63, 0x83, 0x24, 0x9f, 0xa9, 0x3e, 0x2c, 0x23, 0x07, 0x7c,
-
  0x72, 0x8e, 0x8a, 0xa2, 0xb6, 0x74, 0x51, 0x50, 0x68, 0x73, 0x41, 0x3e,
-
  0x67, 0x7a, 0xa8, 0x38, 0x14, 0xb8, 0x01, 0x45, 0xd2, 0x6f, 0xca, 0xdc,
-
  0x04, 0x5b, 0xdb, 0x81, 0xe4, 0xc9, 0xcc, 0xd8, 0xac, 0xd1, 0x0a, 0x1a,
-
  0x69, 0x15, 0x01, 0x88, 0x3e, 0x0d, 0x9d, 0xd0, 0x28, 0x88, 0xd3, 0x7c,
-
  0x04, 0xa1, 0x08, 0xb1, 0xad, 0xa6, 0x0b, 0xca, 0xb2, 0xdd, 0xdd, 0xd9,
-
  0xb1, 0x85, 0x1a, 0x3b, 0xaa, 0x33, 0x0a, 0x89, 0xac, 0x2c, 0xd2, 0x48,
-
  0x00, 0xe6, 0x14, 0x23, 0x6f, 0xaa, 0xaa, 0x24, 0x19, 0xf3, 0xec, 0xb6,
-
  0x6b, 0x1f, 0xbb, 0x34, 0xc5, 0x12, 0x8d, 0x72, 0x73, 0x65, 0xe0, 0x33,
-
  0x53, 0x2a, 0xd4, 0x88, 0x21, 0xe3, 0xc7, 0x34, 0xc4, 0xea, 0xa0, 0xf9,
-
  0x4e, 0x07, 0x72, 0x3e, 0xaa, 0x28, 0xf8, 0xa2, 0xe1, 0x08, 0x51, 0xf4,
-
  0xdd, 0xb5, 0x0d, 0x50, 0x31, 0x51, 0x6a, 0x34, 0x2e, 0xd6, 0x65, 0xe8,
-
  0xec, 0xac, 0x50, 0xf1, 0xc3, 0x05, 0x18, 0xff, 0x97, 0x03, 0xf5, 0x09,
-
  0x1b, 0xb5, 0xa8, 0xa8, 0x49, 0xae, 0x2e, 0xe6, 0x65, 0x60, 0x37, 0x4b,
-
  0x43, 0x22, 0xce, 0xf7, 0x54, 0x13, 0xdb, 0x78, 0xde, 0x68, 0x68, 0x1b,
-
  0xa5, 0x54, 0x73, 0x83, 0x15, 0xcc, 0x8e, 0x8c, 0x28, 0x19, 0xc2, 0xad,
-
  0xcb, 0x2b, 0x26, 0xd5, 0x8d, 0xc5, 0x15, 0xd7, 0xaf, 0xad, 0x78, 0xb7,
-
  0xe2, 0x8a, 0x41, 0x62, 0xbb, 0x2d, 0x37, 0xbe, 0x77, 0x45, 0xcc, 0x1f,
-
  0xca, 0xde, 0xe0, 0xa1, 0x41, 0x91, 0x5c, 0x53, 0x10, 0x6a, 0x96, 0x5a,
-
  0x6c, 0xa2, 0xb2, 0x3c, 0x6e, 0x9e, 0x37, 0x2c, 0xb0, 0x12, 0x53, 0x19,
-
  0x95, 0xb6, 0xe8, 0x80, 0x95, 0x57, 0x90, 0xab, 0x53, 0xd4, 0x8f, 0x01,
-
  0x68, 0xc5, 0x7b, 0x76, 0x92, 0xd6, 0x92, 0x09, 0xaf, 0xa6, 0x38, 0xaa,
-
  0xc7, 0x12, 0xb6, 0x21, 0xb4, 0xb1, 0x67, 0x5d, 0xe4, 0x7f, 0x0f, 0xe7,
-
  0x5f, 0xa3, 0xc7, 0x38, 0x7c, 0xcc, 0xcf, 0x32, 0x60, 0xf5, 0xbc, 0x36,
-
  0xa1, 0x9a, 0xac, 0xf1, 0x53, 0xda, 0x2b, 0xb9, 0x79, 0x58, 0xb0, 0x02,
-
  0x25, 0xbf, 0x4f, 0x67, 0x09, 0xb8, 0x2f, 0xc2, 0x5b, 0xf1, 0x89, 0x0b,
-
  0xfa, 0xae, 0x6c, 0x04, 0x27, 0x6b, 0x9a, 0x3c, 0x13, 0x3d, 0x0f, 0x68,
-
  0x81, 0x2b, 0x25, 0x0a, 0x9c, 0x4d, 0x07, 0x0a, 0x95, 0xe0, 0x67, 0x58,
-
  0x39, 0x6c, 0x18, 0x9e, 0xc4, 0x92, 0x7d, 0xd5, 0x92, 0x62, 0xa9, 0xb9,
-
  0x79, 0x5c, 0xb3, 0x72, 0x4e, 0x8a, 0xc5, 0x45, 0xaa, 0xf5, 0x6b, 0x08,
-
  0x19, 0x80, 0xeb, 0x34, 0x78, 0x7a, 0x05, 0x26, 0x49, 0x62, 0x59, 0xf6,
-
  0x88, 0x36, 0x87, 0x0a, 0xe1, 0x2c, 0x4b, 0x27, 0x35, 0xb2, 0x77, 0x91,
-
  0xc1, 0xae, 0xe6, 0x3d, 0x92, 0x20, 0xad, 0xe0, 0x21, 0x9d, 0x7a, 0x93,
-
  0x5d, 0xce, 0x9c, 0xe8, 0xd8, 0x2f, 0x82, 0x15, 0x73, 0x1a, 0xf0, 0x54,
-
  0x7d, 0x55, 0xb7, 0x39, 0xde, 0xdb, 0x56, 0x4b, 0xc0, 0x81, 0xd9, 0x12,
-
  0x3c, 0x45, 0xde, 0x89, 0x4d, 0x65, 0x88, 0x83, 0x38, 0x31, 0x8e, 0x9f,
-
  0x0c, 0xca, 0x93, 0x94, 0x80, 0x1a, 0xf2, 0xda, 0x66, 0x6c, 0x27, 0x73,
-
  0x0c, 0xf9, 0xe1, 0x14, 0x6e, 0x5c, 0xe5, 0x10, 0x0e, 0x3e, 0x6d, 0x84,
-
  0x94, 0x96, 0x0b, 0xe5, 0x4c, 0x32, 0xd4, 0x45, 0x72, 0x4d, 0x18, 0xda,
-
  0xa6, 0x6b, 0xa2, 0x6e, 0xaf, 0x4c, 0x3d, 0xac, 0xe2, 0x79, 0x41, 0x6e,
-
  0x2c, 0xa1, 0x63, 0x5c, 0xc2, 0x71, 0x99, 0x2d, 0x6a, 0x56, 0x1e, 0xba,
-
  0x82, 0xc9, 0x5c, 0x26, 0x6c, 0xd2, 0xd4, 0xb3, 0x39, 0x1a, 0xa0, 0xe3,
-
  0x69, 0x5f, 0x0e, 0x93, 0xd6, 0xd2, 0xa0, 0x0c, 0xfc, 0xca, 0x21, 0x71,
-
  0xcf, 0xca, 0x40, 0xb5, 0x8d, 0x4c, 0xd5, 0x13, 0x2b, 0x26, 0x6c, 0x48,
-
  0xf6, 0x92, 0x78, 0x7d, 0x28, 0x2f, 0x3c, 0xfa, 0x3b, 0xdc, 0x64, 0x68,
-
  0x4b, 0xe6, 0x24, 0xa1, 0x34, 0xb0, 0xea, 0x58, 0x58, 0x5a, 0x4c, 0xe7,
-
  0xfd, 0xe8, 0x82, 0x8d, 0xd9, 0x38, 0xc2, 0xd4, 0x19, 0x9c, 0x82, 0xc3,
-
  0x9c, 0xcf, 0x8a, 0x51, 0xc2, 0xc7, 0x9b, 0x2b, 0xf4, 0xf9, 0x04, 0x38,
-
  0xe5, 0xc2, 0x0d, 0xa4, 0x07, 0xf0, 0x12, 0x59, 0x7b, 0xd9, 0x4d, 0x16,
-
  0x68, 0xa7, 0x79, 0xb3, 0x4e, 0x1a, 0x90, 0x3b, 0x6a, 0xc8, 0x6b, 0x05,
-
  0xfb, 0x67, 0x43, 0xf6, 0x97, 0x69, 0x57, 0x67, 0xae, 0xb7, 0xc8, 0xb2,
-
  0xaf, 0x5b, 0xe7, 0x2f, 0x79, 0x9e, 0xf5, 0x0e, 0x57, 0x91, 0x6d, 0x7a,
-
  0x5d, 0x5e, 0xee, 0x0c, 0x2a, 0xc0, 0xb8, 0xcd, 0x67, 0xb0, 0x61, 0x6a,
-
  0xb1, 0xee, 0x66, 0xe6, 0x76, 0xeb, 0x58, 0xad, 0xa5, 0xb6, 0x71, 0x90,
-
  0xf1, 0xa8, 0x98, 0x5c, 0x37, 0x58, 0xfb, 0xc3, 0xbd, 0x00, 0x6b, 0x37,
-
  0x8f, 0x76, 0x20, 0x6d, 0xbd, 0xf1, 0x0f, 0xb4, 0x26, 0x2f, 0x33, 0x27,
-
  0xa4, 0x82, 0x83, 0xb6, 0x58, 0x92, 0x4a, 0x08, 0x9e, 0x47, 0x63, 0x42,
-
  0x52, 0x2a, 0x56, 0xd4, 0x83, 0x56, 0xce, 0x49, 0xac, 0x2d, 0xb7, 0x06,
-
  0xd1, 0x8b, 0x5c, 0x02, 0xf0, 0x05, 0x3b, 0x49, 0xa2, 0xf9, 0x51, 0x8e,
-
  0xa2, 0xf6, 0xa4, 0xb7, 0xc0, 0xd1, 0xa8, 0x24, 0x99, 0x31, 0xc3, 0xc1,
-
  0xa0, 0x04, 0x31, 0xb6, 0xd5, 0x77, 0x6c, 0x12, 0x39, 0x63, 0x65, 0xe8,
-
  0x97, 0x74, 0x66, 0xfc, 0xa0, 0x51, 0x58, 0x48, 0x89, 0x1c, 0xe4, 0x32,
-
  0x17, 0xb4, 0xb4, 0x8a, 0x93, 0x87, 0x53, 0xbc, 0xe6, 0x70, 0x23, 0x64,
-
  0xf4, 0x5b, 0x26, 0x50, 0x95, 0x12, 0x40, 0x43, 0xa6, 0x8d, 0xaa, 0x96,
-
  0xea, 0x42, 0x8e, 0x5c, 0x29, 0x68, 0xf0, 0xc4, 0x3e, 0x58, 0x0d, 0x4d,
-
  0x0c, 0x52, 0x22, 0x79, 0x44, 0xa9, 0x4f, 0xf2, 0xb9, 0x85, 0x58, 0xbd,
-
  0xac, 0xfe, 0xde, 0x5e, 0xf8, 0x68, 0x69, 0x78, 0x7f, 0x8d, 0x91, 0xa0,
-
  0x14, 0xe8, 0x6e, 0x55, 0x55, 0x24, 0x11, 0xa5, 0x11, 0xf5, 0xff, 0x39,
-
  0x35, 0x9e, 0x42, 0x4c, 0xc7, 0xd8, 0x2c, 0x08, 0x26, 0x22, 0x2b, 0x61,
-
  0xf1, 0x60, 0xe1, 0x72, 0x84, 0x81, 0xd0, 0x34, 0x07, 0x94, 0x40, 0x2a,
-
  0xb6, 0xbd, 0x3b, 0xd8, 0x20, 0xab, 0x7d, 0xe9, 0x4d, 0x82, 0x8b, 0xee,
-
  0xd7, 0x97, 0xde, 0x22, 0xfc, 0xbb, 0x1c, 0x49, 0x3b, 0xb4, 0xb5, 0xe4,
-
  0x29, 0x73, 0x04, 0x3d, 0xeb, 0x74, 0x28, 0x31, 0x9b, 0xfc, 0x05, 0xf0,
-
  0x8e, 0x97, 0xef, 0xc1, 0x2d, 0x74, 0xbb, 0x78, 0x4d, 0x37, 0xe1, 0x93,
-
  0x4a, 0xf2, 0xd8, 0x34, 0xa9, 0x6a, 0x03, 0x7b, 0xaa, 0x24, 0xc7, 0xb6,
-
  0xc1, 0xf6, 0xc1, 0x35, 0x69, 0xae, 0x3e, 0x6f, 0x25, 0x61, 0xa0, 0xd0,
-
  0x0c, 0x13, 0xf7, 0xe6, 0x5b, 0x56, 0x26, 0x10, 0x88, 0x93, 0x95, 0x27,
-
  0x69, 0x32, 0xd3, 0x80, 0x1d, 0x1c, 0x9b, 0x5f, 0xe6, 0x8a, 0x85, 0xb1,
-
  0xca, 0x3f, 0xe9, 0x8c, 0x77, 0x93, 0x37, 0x6a, 0xac, 0xf9, 0xe7, 0xba,
-
  0x1d, 0xc8, 0xbf, 0xce, 0x29, 0xe7, 0x08, 0x38, 0x8d, 0x09, 0xa6, 0xa3,
-
  0x1d, 0xaa, 0x9a, 0xe5, 0x9c, 0x74, 0x73, 0xd4, 0xe5, 0xa4, 0xd3, 0x12,
-
  0xd1, 0x39, 0x27, 0x31, 0x47, 0xd2, 0x7b, 0x99, 0x68, 0xd0, 0x7e, 0xd4,
-
  0xd6, 0x2a, 0x68, 0xc5, 0x6b, 0x3e, 0x14, 0x52, 0x66, 0x48, 0x24, 0xa2,
-
  0xd5, 0xe7, 0x77, 0x9e, 0xc2, 0x89, 0x9a, 0xe8, 0xed, 0x4b, 0xc4, 0x58,
-
  0x25, 0xd3, 0x54, 0x4d, 0x50, 0x22, 0x67, 0x16, 0x63, 0x58, 0x39, 0xf2,
-
  0x37, 0x30, 0xd3, 0x45, 0x0b, 0xaf, 0x67, 0x7a, 0x60, 0xf9, 0x0e, 0xb7,
-
  0xd0, 0x28, 0x6b, 0xc8, 0x7c, 0x45, 0x30, 0xac, 0x66, 0xd9, 0x42, 0xe3,
-
  0xae, 0xfb, 0x51, 0x2a, 0xa0, 0x17, 0x40, 0xa1, 0xbc, 0x1b, 0xcb, 0xd8,
-
  0x97, 0x5a, 0x4d, 0x62, 0x34, 0xd7, 0x34, 0xbb, 0x44, 0x77, 0xfe, 0x24,
-
  0xda, 0x6c, 0xb5, 0xfe, 0x60, 0x67, 0x97, 0x46, 0xfb, 0x60, 0xe7, 0xf1,
-
  0xca, 0xf8, 0x0d, 0x7b, 0x5f, 0xad, 0x3a, 0xfd, 0xf6, 0x42, 0x5e, 0xf7,
-
  0x46, 0xbe, 0xcb, 0xc1, 0x5f, 0x37, 0x66, 0xaa, 0x7d, 0xc7, 0x76, 0x9d,
-
  0x7a, 0x37, 0x2f, 0x38, 0x78, 0xdc, 0x43, 0xfc, 0x0a, 0xbf, 0x99, 0x55,
-
  0x69, 0x4c, 0x50, 0x33, 0x41, 0xdf, 0xc4, 0x59, 0x23, 0xe9, 0x82, 0x9c,
-
  0x10, 0xf8, 0x86, 0x80, 0xd3, 0x08, 0xda, 0x3b, 0x4b, 0xce, 0xf0, 0x7c,
-
  0x44, 0xe5, 0xda, 0xaa, 0x0b, 0xe0, 0xf8, 0x03, 0x4f, 0x85, 0xc3, 0xd7,
-
  0xe4, 0x3d, 0x8a, 0xad, 0xa7, 0xf4, 0x28, 0x26, 0xae, 0x84, 0x5e, 0x66,
-
  0x48, 0x71, 0xa1, 0x1d, 0x7a, 0xce, 0x58, 0xa3, 0x3d, 0x9c, 0x35, 0x5b,
-
  0x56, 0x9d, 0x01, 0x53, 0x39, 0x3b, 0x8e, 0xa2, 0x21, 0xae, 0x8d, 0x31,
-
  0x5a, 0x25, 0xd8, 0xe8, 0xfb, 0x2c, 0xcf, 0xaa, 0x0b, 0xb4, 0xae, 0xcd,
-
  0x31, 0x21, 0xec, 0xdc, 0x53, 0xe7, 0xc8, 0xfd, 0x2b, 0x57, 0x4c, 0x12,
-
  0x01, 0xc5, 0xe2, 0x59, 0x00, 0x56, 0xc4, 0xa4, 0x2a, 0xe8, 0x9c, 0xfc,
-
  0x25, 0xd7, 0x01, 0xb7, 0xd3, 0x0c, 0x1d, 0x31, 0xb2, 0xa6, 0x2d, 0x4b,
-
  0x04, 0x4a, 0x9f, 0x5d, 0x0b, 0xae, 0x03, 0x6e, 0x36, 0x32, 0x0c, 0x8b,
-
  0x82, 0xf8, 0x7a, 0x38, 0x24, 0x32, 0x1e, 0x72, 0x7c, 0xc5, 0x19, 0x4a,
-
  0xe7, 0xde, 0x3c, 0x31, 0x78, 0x6d, 0x13, 0xf7, 0xfa, 0x64, 0x08, 0x6c,
-
  0x9a, 0x04, 0x1a, 0x34, 0x14, 0x96, 0x04, 0xdc, 0x03, 0x9f, 0xfd, 0x8c,
-
  0x21, 0xce, 0x5f, 0x9a, 0x8f, 0xb7, 0xa8, 0xcc, 0x15, 0x22, 0x8a, 0xdd,
-
  0x20, 0xaa, 0x9a, 0x6d, 0xef, 0x2e, 0x6a, 0x73, 0xe7, 0xc0, 0x26, 0xa7,
-
  0xf5, 0xf5, 0x8f, 0x88, 0x1d, 0xd8, 0x7a, 0x86, 0x86, 0x7a, 0xbc, 0x88,
-
  0xf1, 0x4a, 0x42, 0x78, 0xf8, 0xa6, 0x95, 0xa1, 0x2d, 0x8a, 0x22, 0x5a,
-
  0x58, 0x1a, 0xaa, 0x4a, 0x66, 0x10, 0x5f, 0x1b, 0x44, 0x4f, 0x80, 0x65,
-
  0x05, 0x83, 0xf7, 0x91, 0xf7, 0x95, 0x17, 0x0c, 0x47, 0x68, 0x91, 0xb4,
-
  0xaa, 0x80, 0x16, 0xce, 0x25, 0x6d, 0xa4, 0xc6, 0x18, 0xec, 0x4a, 0x05,
-
  0x1a, 0xf9, 0x05, 0xf7, 0x8c, 0x1f, 0x39, 0xf1, 0x4c, 0x40, 0x60, 0x63,
-
  0x44, 0x3b, 0xeb, 0x44, 0x7e, 0x25, 0x13, 0xac, 0x33, 0xf0, 0xcf, 0x18,
-
  0x17, 0xea, 0x8e, 0x22, 0xfe, 0x3e, 0xda, 0xa0, 0xe9, 0xff, 0x62, 0x60,
-
  0x6e, 0x36, 0xe4, 0xc3, 0x59, 0xfa, 0xf5, 0xb7, 0x08, 0xf0, 0xd2, 0x43,
-
  0x45, 0x7e, 0x63, 0xbd, 0xbd, 0xb4, 0x90, 0x6d, 0xee, 0x3e, 0x3e, 0xd9,
-
  0x0d, 0xec, 0xa3, 0x44, 0x13, 0x91, 0x77, 0xf5, 0x6b, 0xfe, 0x23, 0x1c,
-
  0x00, 0x43, 0x55, 0x62, 0x60, 0x21, 0x5f, 0x1d, 0xe2, 0x0e, 0x0f, 0x05,
-
  0xc2, 0xb7, 0x05, 0x5d, 0xe3, 0x42, 0x9c, 0xe3, 0x32, 0x86, 0xd6, 0x4e,
-
  0x7a, 0x54, 0xb1, 0x95, 0xe1, 0xad, 0x1a, 0x95, 0x22, 0xd8, 0x4b, 0x3e,
-
  0xcb, 0x6a, 0xdc, 0x15, 0xd0, 0xd8, 0xa2, 0xe8, 0x25, 0xec, 0x33, 0x63,
-
  0x90, 0x7d, 0xdb, 0x46, 0xc0, 0x42, 0x06, 0xb0, 0xf1, 0x74, 0xc3, 0x82,
-
  0x46, 0x55, 0xc6, 0x19, 0x14, 0x6d, 0x7c, 0x85, 0xf0, 0x77, 0x58, 0x03,
-
  0x94, 0xfb, 0x14, 0xbe, 0xc1, 0x06, 0x3e, 0x4a, 0x83, 0xf5, 0x92, 0xde,
-
  0x15, 0x59, 0x6a, 0x9e, 0x26, 0x98, 0x02, 0xd7, 0x04, 0xf5, 0xe0, 0x12,
-
  0x7d, 0x29, 0x45, 0xa2, 0x35, 0xe6, 0xad, 0x16, 0xa6, 0x0d, 0x0f, 0x2d,
-
  0x1d, 0xc1, 0x35, 0xd9, 0xc9, 0x9b, 0x11, 0xe2, 0x80, 0xe3, 0xa5, 0xe3,
-
  0x31, 0xf1, 0x60, 0x28, 0x34, 0x7a, 0x3c, 0xa6, 0xca, 0x18, 0x74, 0x1d,
-
  0xc1, 0x97, 0xe7, 0xe7, 0x41, 0xe4, 0x11, 0x58, 0x02, 0xe4, 0x56, 0x38,
-
  0xe7, 0x29, 0x28, 0x66, 0x64, 0x01, 0x41, 0xfd, 0x7a, 0x15, 0x4e, 0x9f,
-
  0xbb, 0xd5, 0x9f, 0x0e, 0x1c, 0xdc, 0xed, 0xa5, 0x87, 0xd7, 0x4a, 0xef,
-
  0xae, 0x64, 0x6b, 0xa9, 0xd4, 0xae, 0xf1, 0x53, 0x17, 0xdf, 0x36, 0x4c,
-
  0xa3, 0x44, 0xa2, 0x4c, 0xa1, 0xe8, 0x2c, 0xa5, 0xcf, 0x4c, 0x80, 0xd6,
-
  0x34, 0x01, 0x92, 0xbd, 0x96, 0x7c, 0xe8, 0x19, 0xe1, 0x91, 0xb2, 0x51,
-
  0x2c, 0x9d, 0x7b, 0x92, 0xd4, 0x8c, 0x62, 0x03, 0x13, 0x45, 0x72, 0x8c,
-
  0xd1, 0xf0, 0x4f, 0x83, 0xc0, 0x35, 0x62, 0x11, 0xd5, 0x82, 0x3f, 0x0a,
-
  0xa6, 0xe3, 0xc4, 0xc1, 0x74, 0x6c, 0xbb, 0xcf, 0x5d, 0x84, 0x47, 0xb1,
-
  0x25, 0x29, 0x77, 0x64, 0x7c, 0x4a, 0x46, 0x23, 0x5b, 0x56, 0x56, 0x1a,
-
  0x70, 0xa1, 0xea, 0xdb, 0x81, 0x00, 0xca, 0x3f, 0xb7, 0x69, 0xc5, 0x19,
-
  0x48, 0xb3, 0x5d, 0x08, 0x66, 0x6f, 0xff, 0xc9, 0x93, 0xa0, 0x0b, 0x99,
-
  0x2b, 0x31, 0xc1, 0x0e, 0xe3, 0x42, 0x79, 0xc5, 0xbf, 0xd8, 0x82, 0x44,
-
  0xe4, 0x5f, 0xa9, 0xef, 0x14, 0x6b, 0x6e, 0x27, 0xd8, 0xab, 0x1f, 0x2f,
-
  0x41, 0x5c, 0x7c, 0x4e, 0x12, 0x22, 0x0b, 0x06, 0x64, 0xfd, 0xc2, 0x8b,
-
  0x18, 0x56, 0x21, 0x7c, 0xb7, 0xa7, 0x02, 0xea, 0xc3, 0xf8, 0x55, 0x84,
-
  0x6b, 0x3d, 0x55, 0xc4, 0x7f, 0xe6, 0xf8, 0x69, 0x3d, 0x26, 0x44, 0x46,
-
  0x46, 0x6c, 0xe0, 0xe5, 0xd8, 0xe8, 0x00, 0xfb, 0xdf, 0x88, 0x34, 0xb7,
-
  0x70, 0x94, 0x9a, 0xca, 0x94, 0x78, 0x4e, 0xb3, 0x0f, 0xad, 0xc2, 0xb2,
-
  0x0c, 0x7d, 0x98, 0x23, 0xa6, 0x74, 0x76, 0x4e, 0x90, 0x8f, 0xad, 0xe6,
-
  0xa8, 0xb6, 0xc7, 0x79, 0x5a, 0xfb, 0x38, 0xc8, 0x0e, 0x0c, 0xde, 0x8a,
-
  0xc6, 0x43, 0x36, 0x64, 0x81, 0x71, 0x8e, 0x9e, 0x0e, 0xd4, 0xc9, 0x92,
-
  0x4d, 0x95, 0x85, 0xa0, 0x5e, 0x76, 0x85, 0x6e, 0x99, 0x6f, 0x69, 0x3b,
-
  0x9e, 0xca, 0xda, 0x0b, 0xac, 0xf9, 0xb7, 0xc1, 0x22, 0xf1, 0x82, 0xc5,
-
  0x47, 0x45, 0xca, 0xeb, 0x3a, 0x19, 0x5f, 0x58, 0x69, 0x88, 0x60, 0x15,
-
  0xa9, 0x50, 0xb1, 0xb8, 0xe8, 0x79, 0x81, 0x19, 0xba, 0xca, 0x4b, 0x01,
-
  0x27, 0xd4, 0x73, 0xd3, 0x28, 0xe2, 0x17, 0x09, 0xa2, 0x25, 0x0e, 0x25,
-
  0xb4, 0x12, 0x95, 0x70, 0x6c, 0xe4, 0x5e, 0xf0, 0xb4, 0x77, 0x55, 0xe3,
-
  0xbb, 0xce, 0x3a, 0xf9, 0x7b, 0xef, 0x66, 0x4c, 0x49, 0x35, 0x52, 0x5e,
-
  0x62, 0x5b, 0xa2, 0xd7, 0xbd, 0xd2, 0x13, 0x13, 0x52, 0x11, 0xac, 0x65,
-
  0x17, 0xe3, 0x54, 0x6d, 0x81, 0x0e, 0xa2, 0xac, 0xf3, 0x22, 0xe5, 0x51,
-
  0x52, 0x41, 0x52, 0x5d, 0x55, 0x0c, 0x63, 0xac, 0xcb, 0x25, 0x56, 0x82,
-
  0x62, 0x27, 0x06, 0x75, 0xe5, 0x43, 0x2e, 0x20, 0x43, 0xec, 0x37, 0x67,
-
  0x8c, 0x69, 0xcb, 0x4b, 0xda, 0x2f, 0x5a, 0xe5, 0x79, 0x3a, 0x2f, 0x88,
-
  0x48, 0xd1, 0x22, 0x0e, 0x03, 0x33, 0xb8, 0x17, 0xbe, 0x15, 0x48, 0xdc,
-
  0x03, 0xe4, 0x2d, 0xac, 0xb2, 0xdf, 0x59, 0x39, 0x14, 0x78, 0x33, 0x0d,
-
  0xfa, 0x21, 0x0f, 0x5d, 0x8a, 0xae, 0xf5, 0x67, 0x40, 0x51, 0x39, 0x4b,
-
  0xc7, 0x48, 0x6f, 0xde, 0x2d, 0xe2, 0x62, 0x42, 0xf2, 0x7d, 0x89, 0xca,
-
  0x64, 0x99, 0x9e, 0x2f, 0xf1, 0x0e, 0xa6, 0x75, 0xda, 0x04, 0x5d, 0xf2,
-
  0x82, 0xb7, 0x5f, 0x6e, 0xd4, 0x6c, 0xa1, 0xc9, 0xd4, 0x1e, 0xd6, 0x06,
-
  0xbc, 0xb5, 0xc5, 0x73, 0xce, 0x61, 0xb9, 0xea, 0x65, 0xce, 0x31, 0xcb,
-
  0x54, 0x29, 0x77, 0x39, 0xfa, 0x8d, 0x62, 0xa9, 0x0a, 0x99, 0x3a, 0x0d,
-
  0x2b, 0xb7, 0x40, 0xa2, 0xe9, 0xd4, 0x33, 0x2e, 0xa7, 0x04, 0xd7, 0x40,
-
  0xae, 0xf6, 0x84, 0x72, 0xb9, 0x85, 0x01, 0x70, 0xc1, 0x2a, 0xbc, 0x5b,
-
  0xbe, 0x72, 0xe2, 0xb7, 0x49, 0xfe, 0xa7, 0x35, 0xa1, 0x88, 0x38, 0xef,
-
  0x54, 0xbf, 0xcf, 0x8b, 0xab, 0x5c, 0x15, 0x12, 0x41, 0xdf, 0x61, 0x07,
-
  0x00, 0x49, 0xb5, 0x98, 0xb0, 0x89, 0x53, 0x9d, 0x48, 0x49, 0x16, 0xf2,
-
  0xcc, 0xc3, 0xbc, 0x09, 0x4d, 0x14, 0xf6, 0xeb, 0x3a, 0x04, 0xed, 0xcb,
-
  0xba, 0xfd, 0x6f, 0xc6, 0x41, 0x80, 0xac, 0xaf, 0x53, 0x6e, 0xe3, 0x2c,
-
  0x68, 0xcc, 0x29, 0x9e, 0x0b, 0x43, 0x6b, 0x1a, 0x3e, 0xfa, 0xa2, 0x74,
-
  0x6d, 0x00, 0xef, 0xc4, 0xb5, 0xdf, 0x90, 0x83, 0x1b, 0x80, 0xf4, 0x76,
-
  0x90, 0x6c, 0x89, 0x55, 0xf3, 0x31, 0x41, 0xcf, 0x35, 0xdd, 0x21, 0x86,
-
  0x87, 0xa0, 0x96, 0x52, 0x26, 0xc0, 0x31, 0x7f, 0x5b, 0x9c, 0xb7, 0x11,
-
  0xda, 0x9c, 0x03, 0x4b, 0x05, 0x9c, 0x3d, 0xa0, 0x7f, 0xb9, 0x7e, 0xbf,
-
  0x8f, 0x64, 0x3c, 0x5f, 0x7f, 0xdb, 0x68, 0x2e, 0x70, 0x05, 0x6f, 0x4b,
-
  0x3d, 0xbf, 0xf1, 0x79, 0xb6, 0x7a, 0x11, 0x28, 0x46, 0xdf, 0x20, 0x90,
-
  0x55, 0x17, 0x45, 0x2a, 0x3b, 0x97, 0x93, 0x87, 0xc2, 0xb2, 0x8d, 0xaa,
-
  0x03, 0x58, 0x99, 0x57, 0xac, 0x7b, 0xc8, 0x74, 0xa7, 0xff, 0xa5, 0xb8,
-
  0xc8, 0xf1, 0x0f, 0x6c, 0x1f, 0x9b, 0xff, 0x7a, 0x37, 0x98, 0xe3, 0xb7,
-
  0xdd, 0x39, 0x56, 0x67, 0xb0, 0x78, 0x0b, 0x09, 0xae, 0x93, 0xc3, 0xd4,
-
  0x1a, 0x2e, 0x99, 0x01, 0x21, 0x46, 0x07, 0xca, 0x05, 0xe2, 0xe1, 0xa1,
-
  0xca, 0xde, 0xce, 0xab, 0x8c, 0x15, 0x13, 0xe4, 0x85, 0x99, 0xb9, 0x18,
-
  0xd8, 0xb9, 0x1d, 0xd0, 0x5e, 0xba, 0x27, 0xde, 0xc3, 0xf8, 0x8b, 0xeb,
-
  0xaf, 0x9f, 0x5e, 0x2c, 0xcf, 0xa9, 0x48, 0x30, 0x86, 0x61, 0xf4, 0x6e,
-
  0x35, 0x6b, 0x74, 0x1e, 0x71, 0xd1, 0x36, 0x36, 0x88, 0xd5, 0x4e, 0x0a,
-
  0x3f, 0xe1, 0x35, 0x36, 0x44, 0x07, 0x36, 0x61, 0xa2, 0xdd, 0x61, 0x14,
-
  0x2e, 0x0a, 0xba, 0xc1, 0x22, 0x72, 0x9f, 0xd7, 0x4c, 0x8a, 0x19, 0xd9,
-
  0x0a, 0x1d, 0x2b, 0x66, 0x70, 0x95, 0x8e, 0xbe, 0xfe, 0x16, 0x7d, 0x80,
-
  0x1f, 0x06, 0x17, 0xf5, 0x7c, 0xc6, 0xb2, 0x36, 0xae, 0xdc, 0x36, 0xfe,
-
  0xd9, 0x8b, 0x56, 0xc8, 0x7c, 0x45, 0xd9, 0xdd, 0xac, 0x03, 0xf4, 0xeb,
-
  0x34, 0x39, 0x2d, 0x8a, 0x95, 0x2d, 0xaa, 0x4b, 0x8d, 0xd6, 0xc4, 0x41,
-
  0xde, 0x61, 0x3c, 0x1a, 0x9b, 0x38, 0xc2, 0xf4, 0x40, 0xf7, 0x4b, 0xe3,
-
  0x9a, 0x0c, 0xd5, 0xe2, 0xa0, 0x70, 0x3e, 0xb6, 0x10, 0xea, 0x4d, 0xf3,
-
  0x75, 0x5f, 0x71, 0x70, 0xb3, 0x6a, 0xc5, 0xd2, 0xa8, 0xfa, 0x26, 0x85,
-
  0x3c, 0xbf, 0x32, 0xaf, 0xe3, 0x3f, 0x70, 0x8a, 0xe1, 0xaa, 0x5e, 0x39,
-
  0x1b, 0x8c, 0x68, 0xd0, 0x77, 0xb6, 0x29, 0x10, 0x59, 0x83, 0xf8, 0xa2,
-
  0x8d, 0x3e, 0x8b, 0xff, 0x5f, 0x6d, 0x90, 0x59, 0x55, 0x13, 0x71, 0xfe,
-
  0xb9, 0x2c, 0x84, 0xb7, 0x4d, 0x0a, 0x4f, 0x9c, 0x45, 0xc0, 0x18, 0x7a,
-
  0xa0, 0xa2, 0xd1, 0xdf, 0x38, 0xf0, 0x5f, 0x7a, 0x34, 0xf4, 0x3e, 0xfe,
-
  0xf5, 0x4b, 0xcf, 0x8e, 0xfe, 0x17, 0xda, 0x9c, 0xaf, 0xb2, 0xfc, 0x2b,
-
  0x9c, 0xc1, 0x2f, 0xbd, 0xbb, 0xee, 0xb1, 0xa8, 0xb7, 0x4e, 0x2f, 0x4e,
-
  0x27, 0x8d, 0x3e, 0x7a, 0x1b, 0x51, 0x37, 0xb6, 0xab, 0x2d, 0x3a, 0x91,
-
  0xa9, 0xbc, 0x60, 0x17, 0x0c, 0x2f, 0x17, 0x59, 0x14, 0x12, 0x22, 0x60,
-
  0x59, 0xec, 0x32, 0xf4, 0x49, 0x33, 0xf3, 0xcc, 0xd5, 0xf6, 0x09, 0x5c,
-
  0x62, 0x63, 0x72, 0x20, 0xe9, 0x2e, 0xb3, 0x55, 0x6d, 0x89, 0x90, 0x74,
-
  0xe1, 0x59, 0x93, 0x9f, 0xf8, 0x17, 0x8f, 0x79, 0xdd, 0xbb, 0x68, 0xfe,
-
  0x06, 0x3d, 0x18, 0xf8, 0x0a, 0x22, 0x58, 0x94, 0x5d, 0x05, 0xda, 0x82,
-
  0x50, 0xcd, 0x72, 0x0e, 0xa6, 0x16, 0xb5, 0x00, 0x51, 0x5a, 0x10, 0x84,
-
  0xb5, 0x23, 0x90, 0xb3, 0x4a, 0xe7, 0x19, 0x48, 0xf0, 0xe4, 0x2a, 0x9e,
-
  0xb1, 0xa2, 0xbc, 0x8d, 0xec, 0x9f, 0x90, 0x99, 0xaa, 0x45, 0x82, 0x9e,
-
  0x20, 0x34, 0x6f, 0x89, 0x0e, 0xcd, 0xd3, 0xe4, 0xb5, 0x59, 0x41, 0xc3,
-
  0x1b, 0xd8, 0x64, 0x59, 0x7d, 0xdd, 0x03, 0xe1, 0xe7, 0x2b, 0xf4, 0x01,
-
  0xa6, 0xf9, 0x57, 0x40, 0x48, 0x4b, 0xd8, 0x2a, 0x7b, 0x2a, 0x3f, 0xc4,
-
  0xf3, 0x6b, 0x18, 0xf8, 0xc6, 0x4d, 0x27, 0x53, 0xf8, 0xd5, 0x64, 0x12,
-
  0x69, 0x58, 0x6c, 0x3b, 0x5f, 0x86, 0xcf, 0xa5, 0x73, 0xe2, 0xe4, 0xfb,
-
  0xaf, 0xfb, 0x1e, 0xa6, 0xf4, 0x7b, 0x4f, 0x2f, 0x75, 0xd9, 0x2a, 0xe9,
-
  0x5f, 0x5f, 0x9f, 0xfc, 0xf5, 0x2b, 0x6d, 0xe0, 0x97, 0xde, 0xcf, 0x31,
-
  0x7f, 0x4a, 0x60, 0xf8, 0x07, 0xd1, 0xc9, 0x5f, 0xd7, 0xa7, 0xdc, 0x55,
-
  0x1d, 0x7c, 0xcb, 0xbf, 0x10, 0x19, 0xaf, 0x6a, 0x16, 0xe5, 0x7f, 0x7d,
-
  0x27, 0x7a, 0x9f, 0x5e, 0x13, 0x2a, 0x26, 0x29, 0xfe, 0x8b, 0x05, 0x82,
-
  0x88, 0x2a, 0xfa, 0x7b, 0xcd, 0xe8, 0xef, 0xe4, 0xc4, 0x4c, 0x46, 0x05,
-
  0x83, 0x75, 0xd5, 0x5e, 0x38, 0x38, 0x7c, 0x85, 0x31, 0x4e, 0xff, 0x14,
-
  0x62, 0xe2, 0xe4, 0xb9, 0x81, 0x04, 0xea, 0x34, 0xd3, 0x8a, 0x92, 0x49,
-
  0x53, 0x85, 0x39, 0xc6, 0xb0, 0xc5, 0x20, 0x56, 0xb7, 0x6a, 0xfe, 0x15,
-
  0x0b, 0x5b, 0x54, 0x6f, 0x0f, 0xf5, 0xa6, 0x8d, 0x3f, 0x6c, 0x50, 0x5b,
-
  0x68, 0x1d, 0xa0, 0x0b, 0x90, 0xa2, 0x0d, 0x38, 0x9f, 0xe3, 0xab, 0x90,
-
  0xd7, 0x5f, 0x42, 0xe6, 0xc4, 0xd8, 0x30, 0x2d, 0x66, 0x13, 0x09, 0xcd,
-
  0x00, 0x2a, 0xe7, 0x0d, 0x56, 0xed, 0x07, 0x05, 0x09, 0x5c, 0x0a, 0x09,
-
  0xd7, 0x90, 0x6e, 0x83, 0x28, 0xd6, 0x14, 0xe2, 0xc6, 0x56, 0x6b, 0x1b,
-
  0xaf, 0x9c, 0x44, 0x4c, 0xe4, 0x5f, 0xa1, 0x26, 0x3f, 0x4a, 0xc9, 0xde,
-
  0x65, 0x10, 0xca, 0x63, 0x71, 0x3b, 0x05, 0x8c, 0x46, 0x91, 0x39, 0x23,
-
  0x7a, 0x48, 0x38, 0xed, 0x49, 0x61, 0xca, 0xd1, 0x9f, 0xf1, 0x9c, 0x3c,
-
  0x37, 0xec, 0xb0, 0xd5, 0x7c, 0x34, 0xbc, 0x3b, 0xc2, 0x93, 0x35, 0xd1,
-
  0xd6, 0xb8, 0x42, 0xfe, 0xc9, 0x8a, 0xfe, 0x20, 0x2e, 0x2a, 0x27, 0x28,
-
  0x9b, 0x66, 0x2f, 0x9b, 0x35, 0xf0, 0x5e, 0xf8, 0x59, 0xb2, 0x79, 0xe2,
-
  0xdd, 0x03, 0xa3, 0x9d, 0x27, 0xf2, 0x78, 0xb8, 0x79, 0xb7, 0x32, 0x94,
-
  0x8c, 0x2a, 0xab, 0x64, 0xf9, 0x57, 0xb4, 0xbf, 0x67, 0xda, 0xf7, 0xe1,
-
  0x8c, 0x93, 0x9c, 0xe3, 0xef, 0xc2, 0xdd, 0x9e, 0xd9, 0x14, 0x71, 0x75,
-
  0x36, 0x58, 0xf3, 0xae, 0x6b, 0x18, 0x10, 0xc3, 0xaa, 0x14, 0x6a, 0xe2,
-
  0xf8, 0xdd, 0xf4, 0x43, 0x40, 0xa5, 0x9f, 0x70, 0x14, 0x39, 0xcf, 0xc3,
-
  0xc3, 0x13, 0x8f, 0x45, 0xb0, 0x16, 0xc2, 0x2a, 0xe0, 0x2c, 0x02, 0x8b,
-
  0x3f, 0xe0, 0x40, 0x2c, 0x2a, 0x2d, 0x43, 0x95, 0x65, 0x32, 0x17, 0xd7,
-
  0xcc, 0x98, 0x06, 0xc3, 0x45, 0xc7, 0x15, 0x2f, 0xc3, 0xf3, 0xf2, 0x22,
-
  0xe3, 0xe5, 0x32, 0x73, 0xa4, 0x78, 0xc8, 0x49, 0xd8, 0xdc, 0x10, 0x53,
-
  0x09, 0x76, 0x94, 0xb0, 0x07, 0x54, 0x4a, 0x0d, 0x24, 0x54, 0x48, 0x47,
-
  0x0c, 0x34, 0x71, 0x40, 0xa4, 0x38, 0x20, 0x74, 0x6c, 0x73, 0x26, 0xb8,
-
  0x7a, 0x18, 0xe5, 0x99, 0xa9, 0x32, 0xcc, 0x75, 0x18, 0x1b, 0x15, 0xc3,
-
  0x7c, 0xcd, 0xd7, 0x59, 0x62, 0x69, 0x8c, 0x15, 0x4e, 0x0a, 0x80, 0x96,
-
  0x43, 0xb1, 0xf1, 0xf5, 0xd6, 0x46, 0x77, 0x35, 0x74, 0x23, 0x3a, 0x37,
-
  0x8b, 0x89, 0xa9, 0xf1, 0xaf, 0xa2, 0x92, 0x2a, 0xd0, 0x34, 0x19, 0x8b,
-
  0xe6, 0x18, 0x8d, 0x9b, 0xd2, 0x66, 0x52, 0x4e, 0x60, 0x55, 0x87, 0xd0,
-
  0x1b, 0xb9, 0xda, 0x49, 0x96, 0xd3, 0xc9, 0xe4, 0xe2, 0x4f, 0x4c, 0xde,
-
  0x6e, 0xa4, 0x03, 0xd7, 0xaf, 0xae, 0x0e, 0x5c, 0x39, 0xdb, 0x37, 0xfc,
-
  0xa3, 0x83, 0x98, 0x30, 0xef, 0xc5, 0xc6, 0xe1, 0x98, 0x28, 0x56, 0xc9,
-
  0xd4, 0x1b, 0x5f, 0x6f, 0xf2, 0xdd, 0x64, 0x0d, 0x64, 0x4e, 0xdf, 0x1b,
-
  0xd1, 0x2f, 0x41, 0xac, 0x6e, 0x7a, 0xd1, 0x19, 0x8e, 0xd0, 0xeb, 0xca,
-
  0xc7, 0xa3, 0xa7, 0xe8, 0x07, 0xfc, 0x86, 0x1c, 0xd9, 0xf2, 0xfc, 0xd3,
-
  0x6d, 0xfa, 0xa8, 0x25, 0x05, 0xaf, 0x6c, 0x65, 0x8b, 0x6d, 0xfd, 0x5f,
-
  0x7f, 0x8b, 0x8f, 0xab, 0x12, 0xb0, 0x11, 0x0d, 0x06, 0xc0, 0x7a, 0xaa,
-
  0x79, 0x1b, 0x15, 0xd0, 0x43, 0x5f, 0x24, 0xd9, 0x40, 0xab, 0x37, 0x6b,
-
  0xf5, 0x22, 0x32, 0xd2, 0xa8, 0xc2, 0xcc, 0xf6, 0x44, 0xfe, 0xaa, 0xfc,
-
  0x7a, 0x10, 0x1d, 0x9a, 0xd4, 0x21, 0x1f, 0x85, 0x97, 0x1d, 0x27, 0x7c,
-
  0x63, 0x88, 0x35, 0x0e, 0x29, 0xe1, 0xc9, 0x28, 0x13, 0x7b, 0x3e, 0x57,
-
  0x6a, 0xa0, 0x60, 0xfb, 0x74, 0x56, 0x49, 0x9d, 0x12, 0xb8, 0xd2, 0xc3,
-
  0x25, 0x2d, 0x29, 0x4f, 0x05, 0x9d, 0xce, 0x6c, 0xb7, 0x37, 0x2a, 0x89,
-
  0x0c, 0x2d, 0x3e, 0x16, 0x4f, 0x8d, 0x8d, 0xd7, 0x7f, 0x6c, 0x7a, 0x42,
-
  0x7f, 0x9f, 0x07, 0xc0, 0x42, 0xb5, 0xbc, 0xa3, 0x27, 0x31, 0x3e, 0x65,
-
  0x6d, 0xfd, 0x4a, 0xed, 0xcd, 0xe0, 0xd5, 0xbe, 0x48, 0x7e, 0x31, 0x25,
-
  0x6d, 0x05, 0x00, 0x10, 0x89, 0xff, 0x8f, 0x92, 0x2a, 0x7d, 0xf4, 0x40,
-
  0x43, 0x12, 0x79, 0x95, 0x2a, 0x95, 0xb9, 0x1a, 0xf6, 0x54, 0x53, 0x43,
-
  0x41, 0x27, 0xd4, 0x96, 0xc0, 0x08, 0x57, 0x1c, 0xc5, 0x2f, 0xd0, 0x9b,
-
  0x6a, 0xc6, 0xd2, 0xc0, 0x3b, 0x14, 0x44, 0xc5, 0xf3, 0x9a, 0x10, 0x2d,
-
  0x1f, 0x3f, 0x72, 0x06, 0x7d, 0x83, 0xe5, 0xa1, 0xc5, 0x3f, 0x65, 0x86,
-
  0xed, 0x19, 0x45, 0x4c, 0xad, 0x48, 0x7e, 0x5e, 0x58, 0x01, 0x9a, 0x2d,
-
  0xb8, 0x06, 0xa1, 0xcc, 0xd1, 0xd8, 0x0a, 0x6f, 0x3a, 0x40, 0xee, 0x09,
-
  0xf8, 0x4a, 0x09, 0xa7, 0xdd, 0xf5, 0x4a, 0xa2, 0x76, 0xb4, 0x1e, 0x7d,
-
  0x9f, 0x07, 0xc1, 0x84, 0x7d, 0x33, 0x5d, 0xa3, 0x3f, 0x60, 0xba, 0x2c,
-
  0xe9, 0xce, 0x91, 0xc7, 0x58, 0x34, 0x50, 0x5c, 0x48, 0x91, 0xc4, 0x5f,
-
  0x1d, 0xbe, 0x7e, 0x7b, 0xe8, 0xa7, 0x70, 0x3a, 0x1e, 0x83, 0x4f, 0xeb,
-
  0xe9, 0x68, 0x96, 0xa6, 0x90, 0x8f, 0xac, 0xdf, 0x0e, 0xaf, 0x88, 0xde,
-
  0xba, 0x50, 0x45, 0xa6, 0x14, 0x47, 0xbf, 0xe5, 0x4e, 0x91, 0x78, 0x41,
-
  0xeb, 0x3a, 0x34, 0x81, 0x0c, 0xa1, 0x1c, 0xc6, 0x15, 0x80, 0xe7, 0xad,
-
  0xd2, 0x5b, 0x8d, 0x32, 0x13, 0x54, 0x59, 0xc2, 0xf3, 0x1d, 0x75, 0xd4,
-
  0x99, 0x40, 0xc4, 0x51, 0x3c, 0x24, 0x18, 0xec, 0x1b, 0x2e, 0xd1, 0xc5,
-
  0x29, 0xf3, 0x12, 0x38, 0xe4, 0x24, 0x9b, 0x27, 0xd5, 0x7b, 0x36, 0xa0,
-
  0xf4, 0xf4, 0x7d, 0xf6, 0x15, 0x31, 0xc2, 0x8f, 0x01, 0xbd, 0x0f, 0x1c,
-
  0x59, 0x83, 0x25, 0x6f, 0x32, 0x1a, 0xd4, 0x87, 0x2b, 0x57, 0x72, 0xc3,
-
  0x28, 0x58, 0x4c, 0xa7, 0x8e, 0x47, 0xa5, 0x0d, 0x5c, 0x73, 0x74, 0xd4,
-
  0x0d, 0xe3, 0xcd, 0x09, 0x05, 0xee, 0x0c, 0x3f, 0x5b, 0x62, 0x97, 0x3b,
-
  0x88, 0xde, 0xbc, 0x1c, 0x94, 0xc5, 0xa8, 0xa8, 0x7b, 0x6b, 0x61, 0xc6,
-
  0x1a, 0x08, 0x7d, 0x6f, 0xfb, 0xec, 0xe5, 0x18, 0xd7, 0x05, 0x57, 0x20,
-
  0x78, 0x2a, 0x6b, 0x12, 0xde, 0x4d, 0x58, 0x18, 0xb7, 0xfe, 0x82, 0x6a,
-
  0x07, 0x04, 0xf3, 0x39, 0x3c, 0x7e, 0x43, 0x9b, 0x74, 0x7a, 0x38, 0x1c,
-
  0x46, 0x06, 0xd8, 0x5e, 0xc2, 0x3f, 0xfb, 0x9e, 0xce, 0xca, 0x39, 0xf9,
-
  0x28, 0x05, 0xea, 0x2e, 0x68, 0x92, 0x81, 0x64, 0x3f, 0xb3, 0x56, 0x83,
-
  0xd6, 0xab, 0xb3, 0xe5, 0x1c, 0xb8, 0x0e, 0x28, 0x0b, 0x93, 0x8d, 0x4a,
-
  0x82, 0x3d, 0xda, 0x52, 0x28, 0xb2, 0x7f, 0x11, 0x42, 0x89, 0xc6, 0x08,
-
  0x0b, 0xe4, 0x7b, 0x84, 0x4b, 0xd1, 0xac, 0x92, 0x48, 0xc3, 0x63, 0x5c,
-
  0xfc, 0x8f, 0x7e, 0xd8, 0xb9, 0xd0, 0x1b, 0xbe, 0x38, 0x3b, 0x06, 0x1a,
-
  0x79, 0x7b, 0xf6, 0xbc, 0x27, 0xdb, 0xd7, 0xae, 0x8c, 0x42, 0x4e, 0x0c,
-
  0x38, 0x9b, 0xe9, 0xa5, 0xc1, 0xbb, 0x2e, 0xd9, 0xc0, 0xe4, 0x47, 0x9a,
-
  0xd1, 0xf5, 0x61, 0x3b, 0xed, 0x08, 0x4e, 0xe8, 0xd8, 0x90, 0x5b, 0x10,
-
  0x9e, 0xb7, 0xb6, 0xf5, 0x3d, 0xe4, 0xb0, 0x74, 0x8d, 0xa7, 0xf7, 0xf6,
-
  0xe1, 0x7e, 0x19, 0x20, 0xc0, 0x15, 0x91, 0x25, 0x2e, 0x0d, 0x13, 0xd7,
-
  0xe9, 0xa4, 0x48, 0xce, 0xa0, 0x8b, 0x27, 0x20, 0xb6, 0x07, 0xe8, 0x0f,
-
  0x1a, 0x25, 0x2a, 0x14, 0x32, 0x11, 0xae, 0x82, 0x2e, 0x4d, 0xfc, 0xf9,
-
  0xf6, 0xcd, 0xcb, 0x6d, 0x03, 0x1a, 0x11, 0x91, 0x8f, 0x35, 0xe1, 0x24,
-
  0xfe, 0x40, 0xe5, 0x55, 0x5b, 0x87, 0xd6, 0x44, 0x19, 0xa5, 0x1f, 0x28,
-
  0xb3, 0x3b, 0x6f, 0xe4, 0xf8, 0xb1, 0xa3, 0x1e, 0x06, 0x9d, 0x94, 0x13,
-
  0x83, 0x63, 0xed, 0xab, 0x11, 0x9a, 0x17, 0x83, 0xd9, 0xab, 0x14, 0x19,
-
  0xfa, 0x56, 0x32, 0x7a, 0x1d, 0x74, 0x71, 0x9b, 0x1e, 0xa6, 0x5e, 0x2e,
-
  0x9b, 0xfb, 0x12, 0x06, 0xf5, 0x20, 0x0f, 0x0a, 0x5a, 0x6c, 0x32, 0x4c,
-
  0xf9, 0x2d, 0x80, 0xd8, 0x6e, 0x08, 0x4a, 0x6a, 0xae, 0xe0, 0xad, 0x82,
-
  0xf6, 0xd6, 0x08, 0x4a, 0x6a, 0xb6, 0x7e, 0x17, 0x7a, 0x72, 0x07, 0xa7,
-
  0xd9, 0x50, 0x3e, 0x27, 0x2b, 0xd3, 0x39, 0xc8, 0x1b, 0x64, 0xc5, 0xdb,
-
  0xc6, 0x47, 0x56, 0x25, 0x47, 0x85, 0xc6, 0xc3, 0x7d, 0x49, 0x94, 0xe6,
-
  0x53, 0xfe, 0x19, 0x66, 0x67, 0x24, 0x96, 0x96, 0xc5, 0x8c, 0xed, 0xe6,
-
  0xf2, 0x06, 0x27, 0xdd, 0x31, 0xd4, 0x9d, 0x81, 0x56, 0x4a, 0xc8, 0xe3,
-
  0x4f, 0x03, 0xc6, 0xa4, 0xbd, 0xb6, 0xfb, 0x10, 0x5a, 0xdb, 0x1c, 0x6e,
-
  0x19, 0xff, 0xc2, 0x19, 0x79, 0xd0, 0xa9, 0xb5, 0x00, 0x18, 0xa3, 0x53,
-
  0x88, 0x58, 0x54, 0xaf, 0x90, 0x3a, 0xe5, 0x9c, 0x3d, 0xdf, 0x96, 0x40,
-
  0x3b, 0x3b, 0xbe, 0x9a, 0x74, 0x94, 0x76, 0x25, 0x5f, 0x00, 0x91, 0x38,
-
  0x59, 0x47, 0x38, 0xc3, 0xfb, 0xe8, 0xa7, 0x67, 0x16, 0x54, 0xc5, 0x24,
-
  0x6b, 0xf0, 0x09, 0x11, 0x75, 0xad, 0xab, 0x78, 0x6a, 0x6a, 0x73, 0xb1,
-
  0x06, 0x14, 0x43, 0x30, 0x49, 0xd3, 0x45, 0x74, 0x91, 0x41, 0x63, 0xe5,
-
  0xf8, 0x22, 0x23, 0x3c, 0x39, 0x0a, 0x8c, 0xc5, 0xa0, 0x81, 0x39, 0xc5,
-
  0xbc, 0x04, 0x00, 0x01, 0x8d, 0x23, 0x1b, 0x83, 0xeb, 0x6c, 0x2c, 0xfc,
-
  0x45, 0x71, 0x45, 0x01, 0x0b, 0xbb, 0x8f, 0xf7, 0x9f, 0x80, 0xe8, 0x7a,
-
  0x8d, 0x35, 0x66, 0x9d, 0xd5, 0x9a, 0x14, 0x9a, 0x11, 0xd4, 0x51, 0xb8,
-
  0xa9, 0x6a, 0xe0, 0x58, 0x49, 0xd1, 0x8f, 0xa8, 0x42, 0xdd, 0x9a, 0x2c,
-
  0xb4, 0x82, 0x3d, 0xef, 0x57, 0x9e, 0x82, 0xf5, 0x93, 0xb5, 0x12, 0x6e,
-
  0x40, 0x4b, 0xc4, 0x11, 0xd8, 0x6e, 0xdd, 0x36, 0x50, 0x7c, 0xa2, 0xe1,
-
  0x8b, 0xff, 0x3a, 0x86, 0xcb, 0xe2, 0xcd, 0xf1, 0xd9, 0x1b, 0xf8, 0x31,
-
  0x3c, 0x3b, 0x79, 0xd3, 0x51, 0xc3, 0xb8, 0xe6, 0x62, 0x32, 0xb8, 0x5e,
-
  0x1a, 0xeb, 0xc8, 0x3c, 0xa8, 0x51, 0x4b, 0x8e, 0x72, 0x56, 0xf9, 0x42,
-
  0xa9, 0xd2, 0x9b, 0xd7, 0xea, 0xcc, 0x89, 0xcc, 0xc0, 0x10, 0xbd, 0x95,
-
  0x13, 0xe3, 0xed, 0x5e, 0x4d, 0x1c, 0x34, 0x61, 0xa4, 0x43, 0x9c, 0xb1,
-
  0xb9, 0xc2, 0x69, 0xb4, 0x35, 0x50, 0x2c, 0x5c, 0x20, 0xca, 0x73, 0xae,
-
  0x4d, 0x66, 0x7d, 0x47, 0xdd, 0x5f, 0x4e, 0xda, 0xab, 0xa8, 0x02, 0xb0,
-
  0xd0, 0x34, 0x99, 0xae, 0x7b, 0x5a, 0xaa, 0xa1, 0x17, 0x6d, 0x92, 0xcb,
-
  0x44, 0xc4, 0xf6, 0x1b, 0x48, 0x17, 0x54, 0x85, 0x2d, 0x3b, 0xe1, 0xaa,
-
  0x98, 0xa7, 0xec, 0xd3, 0xe2, 0xb4, 0x3d, 0x65, 0xc5, 0x2c, 0x35, 0x70,
-
  0x05, 0xf7, 0x28, 0x54, 0xb5, 0x45, 0x9d, 0x5b, 0xb4, 0xcb, 0x1b, 0x8d,
-
  0x44, 0x08, 0x33, 0xd3, 0x45, 0x9a, 0xc3, 0x21, 0xa3, 0x72, 0x9c, 0x1b,
-
  0x3a, 0xaa, 0x8d, 0x76, 0xa1, 0x2d, 0x87, 0x95, 0x7c, 0x82, 0x42, 0x5b,
-
  0x7e, 0x39, 0x60, 0xa7, 0x3f, 0x1d, 0x53, 0x80, 0x45, 0xc2, 0xee, 0xec,
-
  0xe2, 0x3f, 0x7b, 0xcc, 0x20, 0xbb, 0xdb, 0x60, 0x2a, 0xff, 0x88, 0x06,
-
  0x0c, 0x35, 0xdd, 0xdc, 0x88, 0x5f, 0xfe, 0x6b, 0x86, 0xf7, 0x3c, 0x02,
-
  0xa6, 0xc4, 0xa8, 0xd2, 0xb7, 0x39, 0x34, 0x16, 0x5f, 0x09, 0xb2, 0x65,
-
  0x0c, 0xb9, 0x6b, 0x94, 0x7c, 0xd1, 0x58, 0x41, 0x2e, 0x52, 0x28, 0xd2,
-
  0x21, 0x06, 0x54, 0x9d, 0x6a, 0xc1, 0x90, 0xac, 0x0a, 0x09, 0xf9, 0x84,
-
  0x95, 0x49, 0x95, 0x84, 0x0c, 0x7b, 0x90, 0x53, 0xd3, 0x17, 0x60, 0xc3,
-
  0xd6, 0x2d, 0xdd, 0x2a, 0xe1, 0xd1, 0xf6, 0x0b, 0xc0, 0x96, 0x97, 0x58,
-
  0x6d, 0x31, 0xa1, 0xe4, 0x82, 0xac, 0x40, 0x18, 0xc7, 0x46, 0xf9, 0x05,
-
  0x45, 0x3e, 0x6a, 0x9f, 0xc9, 0x37, 0x29, 0x25, 0x3e, 0x93, 0x22, 0x17,
-
  0xa5, 0x39, 0x05, 0x36, 0x4d, 0xcc, 0x1c, 0xb1, 0x58, 0x1c, 0x46, 0x38,
-
  0xb3, 0x44, 0x32, 0x29, 0xe8, 0x06, 0xc6, 0xf1, 0x51, 0x19, 0x53, 0xf4,
-
  0x12, 0x05, 0x02, 0xfd, 0x8d, 0x14, 0x21, 0xcd, 0x35, 0x0a, 0x3d, 0xb6,
-
  0x46, 0x45, 0x57, 0xb9, 0x2f, 0x3a, 0xb8, 0x4b, 0x2c, 0x01, 0x5f, 0x94,
-
  0xe8, 0x64, 0x38, 0x5f, 0xcd, 0x95, 0x3f, 0x9a, 0x15, 0x5c, 0xa4, 0xe4,
-
  0x4a, 0x28, 0x67, 0x36, 0x97, 0xf2, 0x2a, 0xcb, 0x7c, 0x86, 0xb9, 0xb2,
-
  0xad, 0x3a, 0x17, 0x12, 0x63, 0x73, 0xa3, 0x08, 0x83, 0x74, 0xf1, 0x29,
-
  0x12, 0x0e, 0xba, 0xea, 0xfd, 0xdc, 0x42, 0x70, 0xa1, 0x21, 0xdd, 0xb9,
-
  0xc8, 0x8e, 0x11, 0xb2, 0x5a, 0xdb, 0xd2, 0x09, 0x31, 0xfd, 0xbd, 0x64,
-
  0xf3, 0x21, 0xd1, 0xa4, 0x0a, 0xee, 0xa7, 0x24, 0x9c, 0xe5, 0x19, 0x56,
-
  0x26, 0x2b, 0xca, 0x6d, 0x3c, 0x59, 0x58, 0x5c, 0x37, 0x02, 0x11, 0x46,
-
  0x73, 0x74, 0x02, 0x61, 0x72, 0xaa, 0x4b, 0xd1, 0x52, 0x40, 0xd3, 0x83,
-
  0x00, 0x26, 0x0e, 0xcd, 0x15, 0xa5, 0x1d, 0x29, 0xbd, 0x42, 0x44, 0x31,
-
  0x08, 0x26, 0x9d, 0xd1, 0x3e, 0x4b, 0x31, 0x89, 0xa6, 0x42, 0x24, 0x27,
-
  0x93, 0x3c, 0x9f, 0xc6, 0x6c, 0x46, 0x4a, 0xd7, 0x46, 0xd5, 0x89, 0x87,
-
  0x27, 0x6b, 0xc0, 0xfa, 0x3d, 0xac, 0x4a, 0x9f, 0xc3, 0xd5, 0x9a, 0x0c,
-
  0x80, 0x4c, 0x06, 0xcd, 0xce, 0x80, 0xd1, 0x2e, 0x17, 0xbe, 0x24, 0xf6,
-
  0xe2, 0xd4, 0x36, 0xc9, 0x36, 0x0d, 0x5a, 0x6a, 0x89, 0xd7, 0x70, 0x06,
-
  0x89, 0x75, 0x14, 0xcc, 0x06, 0x58, 0x79, 0xc3, 0x03, 0xc9, 0x41, 0x59,
-
  0xcd, 0x93, 0xbf, 0xba, 0x70, 0xf3, 0x55, 0x0a, 0x18, 0x9c, 0x0f, 0xa2,
-
  0x1e, 0x62, 0xf7, 0xf7, 0x68, 0xa8, 0x82, 0x2a, 0xc6, 0x41, 0x3f, 0xe6,
-
  0x5d, 0x58, 0x94, 0xc6, 0x68, 0xfd, 0x12, 0xd6, 0x6a, 0x3f, 0xe0, 0x72,
-
  0x39, 0xb4, 0x3f, 0x9b, 0x6f, 0xf3, 0xec, 0x03, 0x59, 0x48, 0x7d, 0x24,
-
  0x47, 0x03, 0x8b, 0xbc, 0x6a, 0x54, 0x0a, 0x3f, 0x8c, 0xc0, 0xee, 0x8d,
-
  0xd1, 0x91, 0x07, 0x05, 0x6b, 0xdc, 0xba, 0x0d, 0x05, 0xd0, 0x44, 0x43,
-
  0xc6, 0x99, 0x46, 0x0f, 0xf3, 0xeb, 0x01, 0x3e, 0x37, 0x98, 0x14, 0x73,
-
  0x38, 0x81, 0x5e, 0x1f, 0x73, 0x42, 0x6c, 0xf1, 0xa4, 0xfa, 0xd8, 0x86,
-
  0x39, 0xaa, 0x04, 0xbb, 0xc8, 0x90, 0x8e, 0x34, 0xb5, 0xd1, 0x8e, 0x4a,
-
  0x7c, 0xfe, 0x58, 0x72, 0x1c, 0x7d, 0x9b, 0x54, 0x7d, 0xbb, 0x43, 0x9e,
-
  0xd0, 0x9b, 0x43, 0x40, 0x3a, 0x9d, 0xcb, 0xc3, 0xf4, 0xff, 0xcc, 0xaf,
-
  0x5a, 0x45, 0x35, 0xde, 0xda, 0x65, 0xc2, 0x1a, 0x0f, 0x3a, 0xb0, 0x05,
-
  0x52, 0x58, 0xdc, 0xdc, 0xec, 0x54, 0xed, 0xce, 0x60, 0x1f, 0x28, 0x97,
-
  0x36, 0xcd, 0x6a, 0x18, 0x4e, 0xbb, 0x98, 0x9b, 0x29, 0xb2, 0xc6, 0xb7,
-
  0x81, 0x36, 0x87, 0xef, 0xfc, 0xf9, 0xcf, 0x96, 0x67, 0x35, 0xe2, 0x5c,
-
  0x04, 0xdb, 0xb0, 0x77, 0xf0, 0x0f, 0x72, 0x40, 0xfd, 0x1a, 0xff, 0x03,
-
  0xfe, 0xfc, 0xb5, 0xa7, 0x67, 0x8f, 0xcb, 0xf1, 0xd9, 0xcc, 0x7c, 0x5e,
-
  0x3d, 0x44, 0x99, 0x31, 0x37, 0x9b, 0x1f, 0x3c, 0x74, 0x76, 0x74, 0x2a,
-
  0x67, 0xa6, 0xe4, 0xc8, 0x19, 0x9a, 0x21, 0xf2, 0x0c, 0x52, 0x91, 0xf0,
-
  0x96, 0x20, 0x14, 0x57, 0xd9, 0xd1, 0x84, 0x9e, 0xd5, 0xe6, 0xe8, 0x95,
-
  0xbe, 0x3a, 0x9b, 0x51, 0x04, 0xa7, 0xb3, 0x9a, 0x80, 0xae, 0x70, 0x8e,
-
  0xf6, 0x5c, 0x86, 0xf6, 0x1e, 0x44, 0x87, 0xaa, 0x94, 0xf0, 0x07, 0x54,
-
  0xcd, 0xaf, 0x22, 0x1c, 0xd3, 0x2b, 0x18, 0x90, 0x31, 0x16, 0xe1, 0x1d,
-
  0x48, 0xe2, 0x77, 0x6e, 0xf1, 0xd3, 0xb0, 0x6a, 0x4d, 0x8e, 0x7a, 0x5f,
-
  0x25, 0x55, 0xa6, 0xca, 0xac, 0x7a, 0x8f, 0x93, 0x14, 0x50, 0x05, 0x27,
-
  0xd2, 0x90, 0x66, 0x31, 0x4f, 0xcc, 0x5a, 0x4a, 0x59, 0x22, 0x03, 0xa0,
-
  0xd6, 0x90, 0xf5, 0x5a, 0xbc, 0xf9, 0x3f, 0x20, 0xeb, 0x9d, 0x02, 0xcd,
-
  0xd3, 0x9d, 0x12, 0x8a, 0x70, 0xd1, 0x47, 0xa8, 0x00, 0xc8, 0x8d, 0x4f,
-
  0xb9, 0x98, 0xe2, 0xde, 0xc3, 0x5f, 0x84, 0x2d, 0x32, 0x74, 0xa7, 0x09,
-
  0x26, 0x6d, 0xb0, 0x0e, 0x9d, 0x3c, 0x56, 0xa6, 0xe1, 0x62, 0x97, 0x6e,
-
  0xed, 0x18, 0x2d, 0x1d, 0x93, 0x44, 0xa7, 0xa0, 0x22, 0x19, 0xea, 0x77,
-
  0x6a, 0xae, 0x31, 0xdc, 0x1d, 0x0a, 0x12, 0x5b, 0x6d, 0x9b, 0xc3, 0x51,
-
  0x5a, 0x92, 0x2b, 0xdc, 0x9a, 0x88, 0x09, 0xd6, 0x2c, 0xc3, 0xac, 0xaf,
-
  0x49, 0x09, 0x63, 0xc0, 0x18, 0x66, 0x41, 0xe0, 0x57, 0x9b, 0x21, 0x86,
-
  0xc8, 0xa8, 0x32, 0xe0, 0x79, 0x9e, 0xe4, 0xe8, 0xe1, 0xd9, 0x77, 0xf4,
-
  0x18, 0x42, 0xee, 0x63, 0x17, 0x57, 0x45, 0x64, 0x86, 0x3f, 0xe9, 0x0a,
-
  0x41, 0x60, 0x83, 0xab, 0x1c, 0xad, 0xdc, 0x95, 0xaf, 0x04, 0xd3, 0xe0,
-
  0xe9, 0x36, 0xbc, 0x51, 0x6e, 0x81, 0x95, 0xfa, 0x54, 0x72, 0x4b, 0x99,
-
  0xd6, 0x77, 0x92, 0x5b, 0x70, 0x48, 0xeb, 0xc8, 0x2d, 0x2d, 0xb9, 0x91,
-
  0xbd, 0x0e, 0x9e, 0xe0, 0xc4, 0x9f, 0x55, 0xef, 0x33, 0xfe, 0x22, 0xce,
-
  0x16, 0x37, 0x17, 0x07, 0xc4, 0xc3, 0x27, 0xac, 0xb2, 0xc9, 0xca, 0xcd,
-
  0xa5, 0x5e, 0x2d, 0xcf, 0xcf, 0xa9, 0xde, 0x85, 0x1f, 0x9d, 0x5d, 0x57,
-
  0x36, 0x41, 0x16, 0xef, 0x70, 0xcc, 0x93, 0xaa, 0x78, 0x6b, 0x1a, 0x85,
-
  0x05, 0xa9, 0x33, 0xe1, 0xf1, 0x95, 0x88, 0x4d, 0xa0, 0x33, 0xf8, 0x88,
-
  0xcd, 0x46, 0x83, 0x88, 0x5e, 0x08, 0x83, 0xb6, 0x52, 0x6f, 0x99, 0xc6,
-
  0x3a, 0xd0, 0xf6, 0xc5, 0x83, 0xdb, 0xe3, 0x65, 0x41, 0x98, 0x3b, 0xa8,
-
  0x5a, 0x71, 0xdd, 0xf8, 0x50, 0xa3, 0xc4, 0xa6, 0xa8, 0xd7, 0xc7, 0x83,
-
  0xc7, 0x0f, 0x06, 0x3b, 0xed, 0x3a, 0xf4, 0x9c, 0x27, 0xc1, 0x21, 0x7d,
-
  0x2c, 0xfa, 0xad, 0x44, 0xea, 0x50, 0x4a, 0x63, 0x58, 0xd4, 0x6c, 0x2a,
-
  0x75, 0x5c, 0xb9, 0x10, 0x67, 0x69, 0x4a, 0xfa, 0x71, 0x6e, 0x95, 0xdc,
-
  0x4a, 0x6d, 0x61, 0x67, 0x4a, 0x4b, 0x7a, 0x23, 0xa1, 0xbb, 0x1b, 0x7f,
-
  0xcf, 0xb8, 0x00, 0xad, 0xd6, 0xef, 0x42, 0xf3, 0x8d, 0xd1, 0xad, 0x25,
-
  0xb3, 0x77, 0x12, 0x7a, 0x35, 0x8b, 0xc7, 0xe3, 0x71, 0x4c, 0xa2, 0xe8,
-
  0x53, 0x96, 0x90, 0xb7, 0x45, 0x3e, 0x0d, 0xcb, 0xee, 0xc3, 0x54, 0xc8,
-
  0xef, 0xe8, 0xe8, 0x48, 0x44, 0xe9, 0xb3, 0x8b, 0x96, 0x4c, 0x6b, 0x2a,
-
  0xe5, 0x89, 0x40, 0x9f, 0x06, 0xe3, 0xa7, 0x2f, 0x96, 0x35, 0x32, 0x27,
-
  0xd6, 0x57, 0x55, 0x98, 0x30, 0xb8, 0x67, 0xad, 0x62, 0xe1, 0x05, 0xac,
-
  0x69, 0xdf, 0x46, 0xeb, 0xfb, 0x75, 0x2c, 0xcb, 0x94, 0x01, 0xd6, 0xf9,
-
  0x45, 0x69, 0xdb, 0x42, 0x59, 0xba, 0xf6, 0x4b, 0xb7, 0x06, 0xa3, 0x8e,
-
  0xb0, 0x0a, 0x38, 0x36, 0x4c, 0x2b, 0xd4, 0x6d, 0x92, 0x49, 0x70, 0x74,
-
  0x22, 0x7d, 0xb5, 0xdb, 0xbe, 0x91, 0xb6, 0xdc, 0xb5, 0xbe, 0x7f, 0xda,
-
  0x72, 0x5a, 0xbf, 0x13, 0x6d, 0xb9, 0xa3, 0x93, 0x15, 0x6a, 0x7c, 0x83,
-
  0x04, 0x57, 0xad, 0x47, 0x71, 0xf2, 0x66, 0x07, 0xd1, 0x75, 0x1a, 0x48,
-
  0x90, 0xb2, 0x36, 0x8f, 0xa8, 0xfa, 0xf8, 0x91, 0xb0, 0xc0, 0xa3, 0x0b,
-
  0x8c, 0xde, 0x9e, 0x61, 0x7a, 0x26, 0x6c, 0x0a, 0x86, 0x32, 0xe0, 0xbe,
-
  0x30, 0x1b, 0x1c, 0x0e, 0x5f, 0x6e, 0x9f, 0xbd, 0x1c, 0x7a, 0x79, 0x6e,
-
  0xd7, 0xe8, 0x90, 0x25, 0xc7, 0x6b, 0xd3, 0xb1, 0xc7, 0x44, 0x50, 0xa6,
-
  0x0c, 0x76, 0xdb, 0xe0, 0x69, 0xdc, 0x4b, 0xb0, 0xe4, 0xcb, 0x32, 0xd7,
-
  0xac, 0x72, 0xe3, 0x7a, 0xca, 0xd3, 0x9c, 0xb0, 0x78, 0x31, 0xa0, 0x8e,
-
  0xf8, 0x15, 0x65, 0xc1, 0x54, 0xd1, 0xeb, 0xc3, 0x33, 0xcc, 0x13, 0xaf,
-
  0x25, 0x06, 0x14, 0x2d, 0xe1, 0x5e, 0x16, 0x5e, 0x71, 0x65, 0x80, 0xca,
-
  0x29, 0xc0, 0x23, 0x19, 0x2b, 0xae, 0xb4, 0x35, 0xf8, 0xce, 0x05, 0xac,
-
  0x46, 0xce, 0xd6, 0x0d, 0xa0, 0x26, 0xce, 0x4e, 0x75, 0xe7, 0x6d, 0x7f,
-
  0x3c, 0x81, 0x7d, 0x04, 0x6d, 0x05, 0x29, 0xa8, 0x93, 0x80, 0xe0, 0x25,
-
  0xe7, 0x96, 0x0e, 0x93, 0xb7, 0xf3, 0x1d, 0x6f, 0x61, 0x90, 0xa6, 0xde,
-
  0x88, 0x80, 0x25, 0x84, 0x62, 0xd8, 0x0b, 0xf9, 0xdd, 0x66, 0xc5, 0x79,
-
  0x46, 0x28, 0x62, 0x44, 0x6f, 0x2c, 0x59, 0x69, 0xc8, 0x8d, 0x57, 0x12,
-
  0x86, 0xf7, 0x37, 0x92, 0xaa, 0x07, 0x0d, 0xba, 0x2a, 0x84, 0x91, 0xa1,
-
  0xf8, 0x66, 0xe8, 0x82, 0xcd, 0x7a, 0x06, 0x5b, 0xcb, 0x87, 0xae, 0xc2,
-
  0xad, 0xc8, 0xc6, 0x19, 0xbc, 0x80, 0xf1, 0xad, 0xdf, 0x33, 0xec, 0x88,
-
  0x9b, 0x18, 0x94, 0x35, 0x2a, 0xe0, 0x1a, 0xdf, 0x1e, 0x46, 0x26, 0x06,
-
  0xf1, 0x00, 0x64, 0x8e, 0xb7, 0xa4, 0x15, 0xa1, 0xfb, 0x4f, 0xc3, 0x8c,
-
  0xb8, 0xf1, 0x3b, 0xd3, 0x8b, 0x8c, 0x6d, 0x1d, 0x6f, 0x2c, 0xbc, 0xe7,
-
  0xd0, 0xc6, 0x0f, 0x28, 0xf0, 0x9d, 0x7b, 0x22, 0xbe, 0xa9, 0x18, 0x10,
-
  0xa8, 0x1f, 0x4c, 0x2a, 0x3a, 0x7a, 0x2f, 0x24, 0x54, 0xca, 0x22, 0x80,
-
  0x09, 0xb6, 0x4c, 0x3c, 0xf1, 0xa3, 0x48, 0x38, 0xa8, 0x45, 0x7e, 0x89,
-
  0x25, 0xc0, 0x8c, 0x6b, 0x1b, 0xe3, 0x07, 0x30, 0x2d, 0x8e, 0x16, 0x6a,
-
  0x16, 0xae, 0xd2, 0xcc, 0xab, 0x56, 0x73, 0x3f, 0x80, 0x8e, 0xa1, 0x90,
-
  0xcd, 0xad, 0xea, 0x56, 0x94, 0x4e, 0xab, 0xdf, 0x71, 0x34, 0x19, 0x46,
-
  0x12, 0x5d, 0x65, 0x88, 0xff, 0x49, 0x36, 0x1e, 0xdf, 0xc8, 0xc3, 0xe5,
-
  0x69, 0xcf, 0xd4, 0xc0, 0xac, 0xac, 0x8b, 0xb5, 0xeb, 0xd4, 0x64, 0x0f,
-
  0x61, 0xdd, 0x13, 0x0d, 0xae, 0xfc, 0x7f, 0x36, 0x5c, 0x3c, 0x4a, 0x3f,
-
  0x7a, 0x44, 0xc5, 0x2c, 0x81, 0x78, 0x53, 0x9e, 0x88, 0xdb, 0x6f, 0x42,
-
  0x6e, 0xfa, 0x76, 0xc0, 0xb6, 0xdf, 0xcc, 0x07, 0x89, 0xa1, 0xe9, 0xad,
-
  0x1e, 0xcf, 0xf3, 0xe3, 0xc3, 0x67, 0x9d, 0x30, 0xc5, 0xce, 0x15, 0xab,
-
  0xbb, 0x7d, 0x6b, 0x7c, 0xb5, 0x40, 0xec, 0x5c, 0x80, 0x9a, 0xcf, 0xbb,
-
  0xb5, 0x93, 0xaa, 0x8b, 0x84, 0x71, 0x14, 0xa1, 0xe8, 0xa8, 0xee, 0xa7,
-
  0xe3, 0x49, 0xd4, 0xab, 0x8b, 0x62, 0xa6, 0x21, 0x57, 0xf0, 0x67, 0x72,
-
  0x9e, 0x7e, 0x5d, 0xcc, 0x26, 0xbd, 0x75, 0x5b, 0x7a, 0xd1, 0x6e, 0x6c,
-
  0xad, 0x3c, 0xf5, 0x56, 0x0c, 0xd5, 0xcf, 0xf8, 0xa7, 0xb7, 0xf8, 0xf1,
-
  0x39, 0xad, 0xf5, 0xac, 0x18, 0x15, 0xd3, 0xe9, 0x0a, 0xb9, 0x9d, 0xab,
-
  0x5e, 0x53, 0x0e, 0x3f, 0x53, 0x70, 0x0f, 0xf7, 0x15, 0xdf, 0x1b, 0xe1,
-
  0x96, 0x11, 0xac, 0x76, 0xd9, 0x93, 0xd4, 0x55, 0xa9, 0x9f, 0xe3, 0x89,
-
  0x61, 0x4e, 0x98, 0xc1, 0xb5, 0x18, 0x88, 0xd4, 0x40, 0x43, 0x48, 0x97,
-
  0x06, 0xc0, 0x2c, 0x11, 0x2f, 0xdc, 0x8c, 0x20, 0xa1, 0x80, 0x4b, 0xff,
-
  0xeb, 0xdf, 0xff, 0xf8, 0xd5, 0x0b, 0x57, 0x62, 0x47, 0x19, 0x22, 0x24,
-
  0x50, 0x50, 0x30, 0x05, 0x37, 0xd4, 0x55, 0x3a, 0x9b, 0xb2, 0xf1, 0x92,
-
  0xb4, 0x4a, 0xac, 0xa7, 0x31, 0x70, 0x52, 0x70, 0xd8, 0x95, 0x09, 0xed,
-
  0x06, 0x72, 0x61, 0x6d, 0x3d, 0x1d, 0x01, 0x95, 0x9a, 0xa5, 0xe7, 0xf0,
-
  0x2f, 0x4e, 0xd4, 0x64, 0xd4, 0x89, 0xe3, 0xf6, 0x3a, 0x52, 0x5b, 0x2c,
-
  0x92, 0x7c, 0x38, 0x4e, 0x15, 0x03, 0xc4, 0xdb, 0xe1, 0x99, 0x6f, 0xdf,
-
  0xbc, 0x30, 0xde, 0xc1, 0x95, 0x7c, 0xfd, 0x9c, 0xb8, 0x90, 0xec, 0xcb,
-
  0xbd, 0x97, 0x84, 0x96, 0x76, 0xd7, 0xe4, 0xe7, 0x58, 0x4c, 0x25, 0x90,
-
  0xf9, 0xf7, 0xaf, 0x7f, 0xfc, 0xfa, 0x6f, 0xf8, 0x4f, 0xef, 0x56, 0xc5,
-
  0xa1, 0x99, 0x16, 0xdd, 0xa2, 0xdf, 0xae, 0x04, 0x70, 0x01, 0xcc, 0xe3,
-
  0x3a, 0x4e, 0xaf, 0xd3, 0x11, 0x30, 0xee, 0x4a, 0xc1, 0x64, 0xe3, 0x79,
-
  0x15, 0x3d, 0x9d, 0x03, 0xdb, 0xc9, 0x3a, 0x60, 0x99, 0x9f, 0xe3, 0x6b,
-
  0xd1, 0xb1, 0xbc, 0x66, 0x90, 0xeb, 0xce, 0x8b, 0x12, 0x66, 0x3c, 0x17,
-
  0xdc, 0x2c, 0x01, 0x0d, 0x6b, 0x1a, 0xd7, 0x23, 0x4a, 0xc2, 0xf6, 0x2c,
-
  0xd4, 0x97, 0x0f, 0xc4, 0x2a, 0x4f, 0x85, 0x28, 0x9d, 0xda, 0x82, 0x62,
-
  0xad, 0x59, 0x82, 0x7a, 0x0d, 0xdb, 0x38, 0x7e, 0x4f, 0xa6, 0xe6, 0xaa,
-
  0x8f, 0x8e, 0x74, 0x53, 0x41, 0x33, 0x94, 0x76, 0x21, 0x50, 0x37, 0x5a,
-
  0xdb, 0xd0, 0x5c, 0x45, 0x62, 0x58, 0x44, 0xb4, 0x19, 0x67, 0x7e, 0x54,
-
  0x81, 0x9e, 0xe4, 0x61, 0x6c, 0xb0, 0xc3, 0x13, 0x81, 0xc7, 0x47, 0x4c,
-
  0x85, 0x32, 0x1f, 0xe6, 0xb9, 0x26, 0x0b, 0x0c, 0xa9, 0x1d, 0x16, 0xb0,
-
  0xcf, 0xae, 0x90, 0x64, 0x45, 0xb5, 0x0e, 0x63, 0x27, 0xc6, 0xe8, 0x88,
-
  0x64, 0x62, 0x4a, 0x89, 0xb8, 0xb5, 0x60, 0x09, 0x58, 0x24, 0x41, 0xa4,
-
  0x93, 0x74, 0xc6, 0xb7, 0x10, 0xbb, 0xd8, 0x3a, 0x8d, 0x16, 0x72, 0x45,
-
  0x02, 0xb7, 0x81, 0x5d, 0x66, 0x58, 0x26, 0x89, 0x0d, 0x28, 0xf2, 0xd4,
-
  0xd8, 0xc6, 0x83, 0xae, 0x36, 0x6a, 0x9d, 0xed, 0xba, 0xb0, 0x32, 0x62,
-
  0x70, 0x21, 0x64, 0x67, 0xc2, 0x91, 0x63, 0xf0, 0x69, 0x7c, 0x9b, 0x02,
-
  0x99, 0xf1, 0x56, 0x6c, 0x52, 0x40, 0xdb, 0xad, 0xf9, 0xfd, 0x51, 0xf4,
-
  0xe8, 0xe1, 0xc3, 0x87, 0x1c, 0xb6, 0xd1, 0x7b, 0x41, 0x1d, 0xbf, 0x39,
-
  0x3e, 0x3a, 0x79, 0xf5, 0xea, 0xf8, 0xf5, 0xb3, 0xe3, 0x67, 0x1a, 0x5b,
-
  0xed, 0x8c, 0xdd, 0x92, 0x8b, 0x7f, 0x0f, 0x63, 0x16, 0x0e, 0x90, 0xc6,
-
  0xee, 0xc3, 0x9d, 0x78, 0xef, 0xe1, 0x4e, 0x04, 0xc4, 0x99, 0x18, 0x70,
-
  0x87, 0x64, 0x86, 0x90, 0x86, 0xd1, 0xc5, 0x12, 0x34, 0x1d, 0xac, 0x36,
-
  0x5d, 0x23, 0x9c, 0xa5, 0xe2, 0xf9, 0xe7, 0x69, 0x8d, 0x16, 0x64, 0x4f,
-
  0x7d, 0x48, 0x26, 0x83, 0x9e, 0x29, 0x6b, 0x68, 0x23, 0xbd, 0x44, 0x75,
-
  0x20, 0x8a, 0xdd, 0xdb, 0xc1, 0x8e, 0x06, 0xd1, 0xf7, 0x20, 0xfb, 0x4e,
-
  0x8b, 0x0f, 0x4c, 0x9c, 0x47, 0x17, 0xa0, 0xb5, 0xa6, 0x7e, 0x8c, 0x57,
-
  0xf3, 0x7d, 0x7c, 0x7d, 0x9f, 0x5f, 0x0f, 0x07, 0x90, 0x76, 0x1f, 0xba,
-
  0x9b, 0x6a, 0x04, 0x79, 0x6a, 0x5a, 0xc8, 0xda, 0x7c, 0xa7, 0xb0, 0xbe,
-
  0xee, 0x31, 0x3d, 0xdc, 0xd9, 0x59, 0xef, 0x1a, 0x9c, 0x23, 0xaf, 0x99,
-
  0x27, 0x1f, 0xb8, 0x08, 0x8a, 0x14, 0xea, 0x58, 0x81, 0x56, 0xfd, 0xf0,
-
  0xcb, 0x26, 0xfe, 0x10, 0x0c, 0xa5, 0x2c, 0x3e, 0x5c, 0xc7, 0x0a, 0x41,
-
  0x12, 0x06, 0x93, 0x1a, 0xb2, 0x5d, 0xf9, 0xf9, 0xe1, 0x29, 0x3e, 0x1c,
-
  0x9d, 0xbe, 0x39, 0xf9, 0xf9, 0xef, 0x16, 0xd4, 0xe5, 0x72, 0x57, 0xd3,
-
  0x9c, 0x04, 0x55, 0x07, 0xd6, 0x05, 0x54, 0x95, 0xdc, 0x8f, 0xe9, 0x34,
-
  0x6e, 0x10, 0xd7, 0xfa, 0xa7, 0x71, 0x26, 0x24, 0xae, 0x61, 0x76, 0x5a,
-
  0x41, 0xb5, 0xe5, 0x50, 0xde, 0x62, 0x82, 0x93, 0x0a, 0x24, 0x3e, 0xce,
-
  0x27, 0xb9, 0x66, 0x71, 0x1c, 0x1f, 0x28, 0xfc, 0xa9, 0x40, 0x30, 0x64,
-
  0x2e, 0x29, 0xd7, 0xf0, 0x7a, 0xd6, 0xe5, 0xb2, 0x61, 0x40, 0x54, 0x2f,
-
  0xe7, 0x60, 0x35, 0xe6, 0xee, 0xa2, 0xcc, 0xe6, 0x49, 0x99, 0xcd, 0xae,
-
  0xf5, 0x64, 0x92, 0x75, 0x53, 0x13, 0xac, 0x28, 0xfe, 0xc7, 0x16, 0x66,
-
  0x07, 0x5e, 0x9b, 0x04, 0xd2, 0xee, 0xb3, 0xb1, 0x30, 0x03, 0x46, 0x23,
-
  0x97, 0x18, 0x2d, 0x5e, 0xad, 0x95, 0x66, 0x98, 0xf6, 0xbe, 0xdc, 0xaf,
-
  0xe6, 0xd3, 0x6e, 0xfd, 0x0e, 0x04, 0xdc, 0x1c, 0xdd, 0x5a, 0x34, 0xfb,
-
  0x01, 0x69, 0x96, 0x1a, 0x68, 0x16, 0x2e, 0xd8, 0x69, 0x90, 0xa6, 0x11,
-
  0xd1, 0xbb, 0x4a, 0xc1, 0x45, 0xdf, 0xbf, 0x78, 0x79, 0xbc, 0x15, 0x7d,
-
  0x9f, 0xd6, 0x82, 0xe2, 0xa0, 0xf9, 0x96, 0xe8, 0x98, 0xfd, 0x5f, 0xa4,
-
  0xb2, 0x98, 0x1a, 0xac, 0x02, 0xd2, 0x14, 0xcc, 0x91, 0x11, 0x4f, 0x05,
-
  0x89, 0xef, 0x0a, 0x09, 0xc1, 0xe4, 0x48, 0xfb, 0x8a, 0xb2, 0xaa, 0xe6,
-
  0xdc, 0x68, 0x60, 0x9b, 0x90, 0x7b, 0x20, 0x0b, 0x51, 0x11, 0x35, 0x07,
-
  0x4e, 0xbd, 0xb7, 0x22, 0x77, 0xc2, 0x64, 0x71, 0xd0, 0x92, 0x01, 0xaa,
-
  0x31, 0x82, 0x59, 0xb5, 0x98, 0x21, 0xef, 0x0e, 0x02, 0x7f, 0xcf, 0x52,
-
  0x8b, 0x5d, 0x42, 0x2c, 0x68, 0x5e, 0x4c, 0x6c, 0xb1, 0x44, 0x3a, 0xf5,
-
  0xcd, 0xb8, 0x9e, 0x80, 0xb8, 0xf5, 0x82, 0xc4, 0x2d, 0xca, 0x30, 0xb8,
-
  0x6f, 0x4c, 0x67, 0x6c, 0x74, 0x4d, 0xea, 0x79, 0xb1, 0x1e, 0xb5, 0xa8,
-
  0xba, 0x04, 0x3f, 0x2e, 0xf1, 0x57, 0xd8, 0xcf, 0x11, 0x81, 0x21, 0x11,
-
  0xaf, 0x83, 0x71, 0x8f, 0xd3, 0x38, 0xa9, 0xc6, 0x59, 0xe6, 0xd0, 0xce,
-
  0x73, 0xa5, 0x1d, 0x0c, 0xa6, 0xe7, 0x9f, 0xdb, 0xdf, 0x76, 0x56, 0x45,
-
  0x61, 0x10, 0x26, 0xcc, 0xb2, 0xdb, 0x82, 0xa1, 0xe3, 0x4a, 0xc8, 0xab,
-
  0xc4, 0x51, 0xc6, 0xb3, 0xe5, 0x24, 0x95, 0xb2, 0x13, 0x39, 0xa7, 0xce,
-
  0x49, 0x99, 0xca, 0xdc, 0x3b, 0x72, 0x76, 0xcf, 0x45, 0x4e, 0x51, 0xd0,
-
  0x12, 0x61, 0x14, 0x84, 0x16, 0xc0, 0x85, 0xc3, 0xad, 0x0a, 0xa9, 0x10,
-
  0x32, 0x1d, 0x75, 0xc9, 0x6d, 0x66, 0x6a, 0x00, 0x47, 0x0a, 0xda, 0xa7,
-
  0xc1, 0x2b, 0xa4, 0xd4, 0xab, 0x17, 0xaf, 0x8e, 0x05, 0x4c, 0x21, 0x9d,
-
  0x70, 0xea, 0x12, 0x57, 0x64, 0xe3, 0x1d, 0xb3, 0x69, 0x39, 0xe1, 0x9c,
-
  0x95, 0xaa, 0xcf, 0x49, 0xee, 0x7c, 0x33, 0xa6, 0x4d, 0x55, 0x97, 0xab,
-
  0x1d, 0x21, 0x45, 0x51, 0x2f, 0x16, 0x58, 0x96, 0xe8, 0xc6, 0x6f, 0x8e,
-
  0xd0, 0x68, 0x78, 0xfd, 0x28, 0x35, 0xb1, 0xd6, 0xeb, 0x81, 0x86, 0x25,
-
  0x88, 0xe6, 0x33, 0xb8, 0x76, 0x67, 0x94, 0x66, 0x68, 0x2c, 0x46, 0x09,
-
  0x91, 0x61, 0xdb, 0x68, 0x9e, 0x5c, 0x35, 0xe7, 0x55, 0x35, 0xaa, 0x6a,
-
  0x3e, 0x7c, 0x34, 0xd8, 0xf1, 0x51, 0x54, 0x29, 0xeb, 0x1d, 0x93, 0xbb,
-
  0x8d, 0x22, 0x46, 0x58, 0x70, 0x56, 0x2c, 0x4d, 0x9d, 0xdd, 0xae, 0x06,
-
  0x4d, 0x2c, 0x03, 0x3f, 0x12, 0x44, 0x74, 0x22, 0xcc, 0xa0, 0x37, 0x95,
-
  0xa5, 0x94, 0x52, 0xf0, 0x25, 0x3c, 0x4c, 0xc6, 0x61, 0x95, 0x4b, 0x29,
-
  0x5f, 0x09, 0x34, 0x5e, 0x15, 0x18, 0x57, 0xe4, 0x1a, 0xfc, 0x73, 0xa5,
-
  0x01, 0xcf, 0x7d, 0x01, 0x52, 0xf9, 0xc0, 0x8f, 0xcc, 0x28, 0x25, 0x5f,
-
  0x3b, 0x0b, 0x63, 0xd3, 0x84, 0xca, 0x8c, 0xbb, 0x5d, 0x68, 0xb4, 0xaf,
-
  0x98, 0x7e, 0x51, 0x45, 0x85, 0x8d, 0xe5, 0x50, 0x0f, 0x04, 0xe9, 0x6d,
-
  0xef, 0x5f, 0x99, 0x8d, 0xdf, 0x67, 0x88, 0x58, 0x5c, 0xd5, 0xcb, 0xe9,
-
  0x94, 0x03, 0x3c, 0xdd, 0x51, 0x6a, 0x68, 0x29, 0x6c, 0x1c, 0x83, 0xe9,
-
  0xcb, 0xf2, 0xe0, 0x16, 0xfa, 0xa4, 0xcc, 0xe5, 0x61, 0x75, 0x3c, 0x8d,
-
  0xf9, 0x54, 0x46, 0xd9, 0x45, 0xd4, 0x21, 0xd2, 0xb7, 0xd3, 0x12, 0x49,
-
  0x00, 0x41, 0x76, 0xd1, 0x7b, 0x79, 0xe5, 0xa7, 0x0e, 0x50, 0x19, 0x9a,
-
  0x12, 0x03, 0x93, 0xc9, 0x4c, 0xfe, 0x26, 0x9d, 0x17, 0x54, 0x32, 0xc9,
-
  0xce, 0x58, 0xd6, 0x0a, 0xe4, 0x09, 0xd1, 0x5e, 0xd8, 0x19, 0x02, 0xa3,
-
  0x40, 0xa2, 0xed, 0xd0, 0xb6, 0x35, 0x01, 0x58, 0x12, 0x10, 0x38, 0x76,
-
  0x23, 0xc2, 0x02, 0x9c, 0x0d, 0xd9, 0x65, 0x46, 0xd5, 0x1c, 0x12, 0xaa,
-
  0x97, 0x79, 0x80, 0xec, 0xa6, 0x9d, 0xba, 0xf2, 0x1c, 0xf4, 0xa6, 0x83,
-
  0x9e, 0x54, 0x18, 0xa5, 0x00, 0x42, 0xf2, 0xcc, 0x93, 0x54, 0xd2, 0xa0,
-
  0x1b, 0x41, 0x9e, 0x8e, 0x59, 0xa6, 0xe4, 0x90, 0xc2, 0xba, 0x0a, 0x67,
-
  0xb6, 0x2b, 0xd8, 0x85, 0x9f, 0x66, 0x6c, 0xc0, 0x27, 0x04, 0x96, 0x09,
-
  0x47, 0x16, 0x3f, 0x87, 0x71, 0xfc, 0x1c, 0x1f, 0x2d, 0x3d, 0x56, 0x0e,
-
  0xdd, 0xc7, 0xcf, 0xa9, 0xc9, 0xaf, 0x7a, 0x26, 0x68, 0x80, 0x1f, 0xb5,
-
  0x5f, 0xc1, 0xe8, 0xbf, 0x08, 0xe5, 0x57, 0x48, 0xf5, 0x0a, 0x26, 0x1b,
-
  0xaa, 0x78, 0x26, 0xf2, 0x4d, 0x62, 0x2b, 0xa9, 0xd1, 0xe6, 0x4c, 0x26,
-
  0xdb, 0xb2, 0xde, 0x9a, 0x0b, 0x16, 0x58, 0x73, 0x8e, 0x10, 0x29, 0x31,
-
  0x7e, 0x39, 0x82, 0x51, 0xc4, 0xc5, 0x34, 0xa6, 0xcc, 0x65, 0x90, 0xbb,
-
  0xde, 0x63, 0xe6, 0xc7, 0xb5, 0x25, 0x2b, 0x02, 0xb7, 0x25, 0xf6, 0x30,
-
  0x99, 0x84, 0x92, 0x49, 0x18, 0x38, 0xc8, 0x51, 0x43, 0x15, 0xfc, 0x80,
-
  0xb7, 0xf4, 0x40, 0x52, 0x67, 0xe9, 0xf5, 0x3c, 0xbd, 0xe2, 0xdc, 0x50,
-
  0x2c, 0x19, 0x22, 0x20, 0x05, 0x9e, 0x93, 0x8e, 0x20, 0x0b, 0xfa, 0x6c,
-
  0x0e, 0xa1, 0x49, 0x13, 0x02, 0xee, 0x9c, 0xfd, 0xe5, 0x14, 0xc2, 0xb0,
-
  0x5c, 0x68, 0x0d, 0xe5, 0x95, 0x4e, 0x61, 0x34, 0x04, 0x51, 0x89, 0x64,
-
  0x54, 0xdb, 0x35, 0x13, 0x01, 0xb8, 0xd6, 0xb7, 0x06, 0xc6, 0xa4, 0xaa,
-
  0xaf, 0x51, 0x1e, 0x10, 0xd8, 0xed, 0x40, 0x9c, 0x37, 0x0c, 0x9a, 0xd3,
-
  0x08, 0xb4, 0x08, 0x12, 0x29, 0xea, 0xb4, 0xe6, 0xb4, 0x5e, 0x62, 0x50,
-
  0x22, 0x68, 0x2a, 0x29, 0xd9, 0xc5, 0xc9, 0x2f, 0xdf, 0xc6, 0x21, 0xb8,
-
  0x7d, 0xda, 0x3d, 0x29, 0x93, 0x92, 0x4c, 0xdc, 0xd5, 0xe2, 0x6c, 0x10,
-
  0x83, 0x05, 0xd7, 0x54, 0x1d, 0x1e, 0xba, 0xf2, 0x99, 0x8a, 0x19, 0x33,
-
  0x0c, 0x02, 0xe2, 0xd8, 0x20, 0x22, 0x84, 0x39, 0x21, 0xe0, 0xe5, 0x75,
-
  0x16, 0x57, 0x8b, 0x64, 0x1e, 0x2d, 0x6b, 0x84, 0xdc, 0x44, 0xf1, 0x7c,
-
  0x7c, 0x91, 0x4a, 0x24, 0xd9, 0x82, 0x20, 0xd7, 0x18, 0x5d, 0x23, 0x58,
-
  0xf6, 0x87, 0xce, 0x9a, 0x2a, 0x64, 0x7c, 0xdb, 0xd0, 0x9d, 0x21, 0xfc,
-
  0xe2, 0x40, 0xec, 0x5c, 0xc8, 0x00, 0x7a, 0xdf, 0xc3, 0x60, 0x0f, 0x7a,
-
  0xfd, 0xa8, 0x77, 0x56, 0xc0, 0x8f, 0xf6, 0x41, 0x7c, 0x06, 0xc7, 0xe4,
-
  0x80, 0x8b, 0xe3, 0xf6, 0x86, 0x8c, 0xaa, 0x86, 0x7f, 0xce, 0x0b, 0x44,
-
  0x3c, 0xac, 0x4d, 0x71, 0xc3, 0x86, 0xb9, 0x8b, 0x2f, 0xe7, 0x30, 0x9a,
-
  0xa0, 0xd9, 0xd5, 0xf0, 0x5d, 0x43, 0x25, 0x39, 0x54, 0xb8, 0x8d, 0xad,
-
  0x14, 0x41, 0x47, 0xac, 0x71, 0xf2, 0x2b, 0xe2, 0x54, 0xb9, 0x66, 0x8b,
-
  0x7b, 0x21, 0x94, 0x0a, 0x9b, 0xd9, 0x92, 0x91, 0xf7, 0x1f, 0x87, 0xf6,
-
  0x20, 0xe1, 0x14, 0x25, 0x94, 0x33, 0x61, 0x1d, 0xda, 0xd9, 0xdd, 0x07,
-
  0x0c, 0xcb, 0x96, 0xa2, 0x85, 0x56, 0xb8, 0x0e, 0x45, 0x8f, 0x12, 0xef,
-
  0x8c, 0x3a, 0xba, 0x36, 0xe6, 0x7b, 0xe5, 0x31, 0xfa, 0x37, 0x26, 0xd8,
-
  0xf7, 0x1d, 0x1f, 0x04, 0x67, 0xea, 0x28, 0x77, 0x0b, 0x04, 0x7a, 0x70,
-
  0xa0, 0x9d, 0x0c, 0x21, 0xea, 0x04, 0x07, 0xfe, 0xe9, 0xf0, 0xcd, 0xeb,
-
  0x17, 0xaf, 0x7f, 0x38, 0x30, 0xeb, 0x83, 0x17, 0x84, 0xf0, 0x88, 0x96,
-
  0xef, 0x63, 0xc4, 0xf5, 0x89, 0x49, 0x24, 0x23, 0x17, 0x48, 0xc0, 0x3b,
-
  0x61, 0x34, 0x33, 0x8c, 0x69, 0x4c, 0xb9, 0xc2, 0x10, 0x79, 0x58, 0xe1,
-
  0x1b, 0x0e, 0x47, 0x62, 0x7b, 0xa8, 0x02, 0x40, 0x08, 0xa4, 0x14, 0xad,
-
  0x4c, 0x5d, 0xcc, 0x26, 0x21, 0x66, 0x15, 0xbf, 0xa4, 0x50, 0xfa, 0x42,
-
  0x20, 0x21, 0x14, 0x49, 0x34, 0x27, 0x54, 0x1f, 0x95, 0x92, 0xf4, 0xde,
-
  0x49, 0x19, 0xd4, 0x84, 0x92, 0x1d, 0xfd, 0x20, 0x76, 0x4a, 0xac, 0x66,
-
  0xf3, 0x1a, 0x5f, 0xac, 0x64, 0x39, 0x82, 0xfb, 0x26, 0xa3, 0xbb, 0xab,
-
  0x40, 0x51, 0xb1, 0x22, 0xba, 0xa9, 0x32, 0x72, 0x70, 0x9b, 0x55, 0x21,
-
  0x42, 0x0d, 0x57, 0x06, 0xe5, 0x51, 0x8e, 0x93, 0x25, 0xb3, 0x1d, 0xae,
-
  0x6b, 0x23, 0x9f, 0x5a, 0x78, 0x09, 0x33, 0x7f, 0x3f, 0x6b, 0xdb, 0x15,
-
  0x9b, 0x3f, 0x3e, 0x6f, 0xbb, 0xcb, 0xeb, 0xf0, 0x1c, 0x2f, 0x9b, 0xef,
-
  0xd1, 0xba, 0x16, 0xbf, 0x06, 0xee, 0x77, 0x10, 0xfd, 0xa5, 0x48, 0xd7,
-
  0x70, 0x1e, 0xc0, 0xeb, 0x6f, 0x41, 0xad, 0x8b, 0x0f, 0xcf, 0x89, 0xad,
-
  0x5f, 0xa7, 0x55, 0xbc, 0x20, 0x26, 0xb4, 0xbd, 0xb7, 0xb3, 0xb3, 0xb3,
-
  0x5e, 0x43, 0x7c, 0x4f, 0xaf, 0xf3, 0xca, 0xb7, 0x2a, 0x2c, 0xae, 0x5d,
-
  0xb1, 0xef, 0x50, 0xf3, 0x2d, 0xe3, 0xe4, 0x3c, 0xd5, 0x24, 0xcc, 0x94,
-
  0xdd, 0x16, 0x88, 0x6e, 0xe9, 0xe6, 0x61, 0x5e, 0xf0, 0x46, 0xcc, 0x16,
-
  0xd1, 0x53, 0x34, 0x67, 0x9c, 0x17, 0xe5, 0xf5, 0x37, 0x5e, 0x85, 0x29,
-
  0x04, 0x18, 0xc0, 0x67, 0x84, 0x10, 0x31, 0xb2, 0x8e, 0xa4, 0x3b, 0x9b,
-
  0xf6, 0xab, 0x09, 0x6e, 0xb6, 0x91, 0x41, 0xa4, 0x55, 0xcf, 0xdb, 0x37,
-
  0x4c, 0x89, 0x95, 0x59, 0x12, 0xc7, 0x22, 0xe6, 0x26, 0x4b, 0x8a, 0x8a,
-
  0xca, 0xd2, 0x3b, 0x32, 0xf8, 0x6c, 0x8e, 0x06, 0x14, 0x0c, 0x89, 0x96,
-
  0xce, 0x02, 0x40, 0x46, 0xe6, 0xb2, 0xab, 0x58, 0x10, 0x72, 0x61, 0x5e,
-
  0xa2, 0x1e, 0x0c, 0xb4, 0x47, 0x1d, 0xda, 0xfe, 0x1c, 0x09, 0xa3, 0xad,
-
  0x55, 0x4b, 0xff, 0x7c, 0xdc, 0xa5, 0x26, 0x93, 0x13, 0x43, 0x1a, 0x68,
-
  0x5f, 0xa7, 0x4c, 0x9d, 0xb4, 0x85, 0xd1, 0x15, 0x53, 0xa4, 0x05, 0xe4,
-
  0x77, 0x33, 0xc1, 0x3c, 0x80, 0x86, 0xb3, 0x52, 0xc1, 0xa8, 0xd7, 0xce,
-
  0xb9, 0xa4, 0x6d, 0x84, 0x56, 0xbb, 0x29, 0xc3, 0x55, 0x6b, 0x1b, 0xb6,
-
  0x39, 0x58, 0xe9, 0xc5, 0x72, 0x34, 0x9f, 0x3c, 0x8c, 0x9e, 0xc2, 0x3f,
-
  0x9e, 0xee, 0x4a, 0x19, 0xb7, 0xc3, 0x23, 0xd0, 0x5a, 0xf1, 0x06, 0x40,
-
  0x39, 0x50, 0xc0, 0xa5, 0xd9, 0xc7, 0x84, 0xbf, 0xee, 0xef, 0x01, 0x89,
-
  0x7c, 0x48, 0x4c, 0x55, 0xc1, 0x09, 0x70, 0x98, 0x9a, 0x13, 0xff, 0x3a,
-
  0x20, 0xc1, 0xdd, 0xab, 0x10, 0x57, 0x74, 0x77, 0xef, 0x49, 0x84, 0x70,
-
  0x1f, 0xaf, 0x9e, 0x3d, 0xe4, 0x2b, 0xbc, 0x5a, 0xce, 0x95, 0xb0, 0x38,
-
  0x49, 0x94, 0xd8, 0x95, 0x07, 0x97, 0x0a, 0x03, 0x9f, 0x65, 0x63, 0x84,
-
  0xd8, 0xea, 0x37, 0xc2, 0xfa, 0xa6, 0x1a, 0xd6, 0xe7, 0xd8, 0xa3, 0x8d,
-
  0x28, 0x48, 0xa1, 0xed, 0x9c, 0xb8, 0x12, 0x88, 0x72, 0x82, 0x35, 0x80,
-
  0xce, 0xd1, 0x88, 0x5f, 0x8f, 0x2f, 0xba, 0xcc, 0xbd, 0x76, 0xcd, 0x6e,
-
  0x5d, 0x03, 0xfe, 0xde, 0xf1, 0x02, 0x9c, 0x41, 0xa4, 0x0f, 0xc7, 0xbb,
-
  0xe3, 0x07, 0x5f, 0xee, 0xec, 0xed, 0x3c, 0x7a, 0xb0, 0x93, 0x3c, 0x4c,
-
  0x46, 0x3b, 0xd3, 0xbd, 0x9d, 0xfd, 0x07, 0x4f, 0x1e, 0x3e, 0x18, 0xef,
-
  0xef, 0xed, 0x26, 0x4f, 0xa2, 0x6a, 0xad, 0xe8, 0x38, 0x69, 0xb9, 0xba,
-
  0x48, 0xf6, 0x40, 0xe5, 0xf5, 0x69, 0x85, 0xbf, 0x88, 0x9e, 0xf2, 0xcf,
-
  0xbb, 0x50, 0x4c, 0x12, 0x7d, 0x47, 0x48, 0x21, 0xb1, 0x82, 0xd9, 0x0c,
-
  0x9f, 0x1f, 0x62, 0x93, 0xa0, 0xdc, 0x5e, 0xf8, 0xd6, 0x5c, 0x8f, 0x0a,
-
  0x9c, 0x7d, 0x1f, 0x44, 0x47, 0xab, 0xf7, 0xbd, 0x4b, 0x21, 0x70, 0xa8,
-
  0x80, 0xff, 0x86, 0xae, 0xd3, 0xae, 0x6d, 0x67, 0x34, 0x2f, 0x31, 0xef,
-
  0x49, 0x80, 0x72, 0x65, 0xfc, 0x0d, 0xec, 0xa5, 0x71, 0x4c, 0x20, 0xf0,
-
  0x45, 0x55, 0x5d, 0xec, 0xb1, 0xd4, 0x87, 0x26, 0x07, 0x2f, 0x23, 0xb5,
-
  0xa6, 0x40, 0x78, 0x7e, 0x9a, 0xef, 0xe9, 0xe1, 0xf0, 0x79, 0x77, 0x41,
-
  0x0a, 0xc2, 0x0d, 0x68, 0xae, 0xfe, 0xe7, 0x82, 0xa9, 0x68, 0x8e, 0xe2,
-
  0xf5, 0xb3, 0x1f, 0xdf, 0xbf, 0x3a, 0xfb, 0xdb, 0x87, 0x57, 0x3f, 0xfc,
-
  0x6d, 0xf7, 0xe4, 0xd9, 0x64, 0xfe, 0xea, 0xb7, 0xbf, 0xed, 0xbf, 0xfa,
-
  0x6d, 0xfc, 0xfb, 0xdf, 0x7f, 0x3b, 0xbc, 0x3e, 0x39, 0xfb, 0xfb, 0xc3,
-
  0x57, 0xf3, 0x37, 0xef, 0x5f, 0xfd, 0xf6, 0xe3, 0xfc, 0xf5, 0xb3, 0xbf,
-
  0x7d, 0x7d, 0x37, 0x2a, 0x04, 0xfa, 0x6e, 0xd6, 0x36, 0xd8, 0x69, 0xf9,
-
  0x16, 0xf0, 0x42, 0x7a, 0x6a, 0xf0, 0xb9, 0x83, 0xb6, 0xb7, 0x61, 0xb3,
-
  0x24, 0xb1, 0xe2, 0x92, 0x3f, 0x1f, 0x9e, 0xd9, 0xe8, 0x27, 0x13, 0xe4,
-
  0x44, 0x67, 0xdc, 0xa4, 0xb7, 0x06, 0xa1, 0x7e, 0x17, 0x20, 0xd4, 0xa2,
-
  0xd4, 0xc7, 0x80, 0xc1, 0x04, 0x27, 0x80, 0x54, 0x4d, 0xed, 0x61, 0x99,
-
  0xe2, 0x54, 0x6c, 0xaf, 0xa4, 0xab, 0x34, 0x17, 0xbb, 0x15, 0x41, 0xc5,
-
  0xf1, 0x78, 0x9c, 0xe2, 0x9a, 0xba, 0xb5, 0x39, 0x05, 0x9f, 0x9a, 0x1a,
-
  0x33, 0xf2, 0x28, 0x96, 0xb1, 0x56, 0x11, 0xb0, 0x73, 0x74, 0x6c, 0x3c,
-
  0xe5, 0x8a, 0xab, 0x06, 0x3d, 0x85, 0xed, 0xb9, 0xe1, 0x8a, 0xc5, 0x72,
-
  0x23, 0x12, 0xa8, 0x01, 0x23, 0xe8, 0xe2, 0x29, 0xc2, 0x75, 0x83, 0xcd,
-
  0x92, 0x10, 0x4f, 0x1b, 0x80, 0x45, 0x95, 0x86, 0xf8, 0x0c, 0xe3, 0x0e,
-
  0x85, 0x46, 0x20, 0xbe, 0x88, 0x8c, 0x23, 0xbc, 0xb9, 0x08, 0x9d, 0x59,
-
  0x1a, 0xb2, 0x4e, 0x2e, 0x17, 0xe7, 0x65, 0x32, 0x49, 0x5b, 0xc1, 0x5d,
-
  0xbe, 0x08, 0xab, 0x03, 0x19, 0x0e, 0xa2, 0x63, 0xd4, 0x43, 0x9d, 0x15,
-
  0x86, 0xfb, 0xb7, 0xbc, 0xa6, 0x09, 0x92, 0x41, 0x66, 0x92, 0xc1, 0x51,
-
  0x40, 0x50, 0xb8, 0x59, 0x36, 0x65, 0xbb, 0x33, 0x88, 0xe2, 0x81, 0x00,
-
  0x05, 0x07, 0x8f, 0x59, 0x06, 0xc1, 0xd9, 0x98, 0xd1, 0x0c, 0xb4, 0x35,
-
  0xf8, 0x5a, 0x0a, 0xd8, 0x04, 0x56, 0x6a, 0x68, 0xf2, 0x60, 0x7a, 0x3d,
-
  0x07, 0x0f, 0x7e, 0xf3, 0xf7, 0xb4, 0x2c, 0x04, 0xff, 0x69, 0x8b, 0x28,
-
  0xe2, 0xb2, 0xc8, 0x26, 0x91, 0x20, 0xde, 0x6f, 0x6b, 0xa5, 0x1c, 0x4f,
-
  0x78, 0xb1, 0x7a, 0x0d, 0x61, 0xb0, 0x63, 0x99, 0x9c, 0x99, 0xac, 0x93,
-
  0x01, 0x20, 0x0f, 0xee, 0x96, 0x5b, 0xee, 0xd3, 0xc0, 0x99, 0xb7, 0x59,
-
  0x80, 0xbd, 0x0c, 0xc9, 0xc7, 0xa5, 0xb1, 0x17, 0x6d, 0xc3, 0x3f, 0x65,
-
  0xef, 0x08, 0xdc, 0x09, 0x23, 0xf2, 0xab, 0xf3, 0x81, 0xf8, 0x47, 0x91,
-
  0x37, 0x5d, 0x90, 0x44, 0x0c, 0x3c, 0xa3, 0x40, 0xe9, 0x09, 0x3a, 0x89,
-
  0x9f, 0x0e, 0x89, 0x49, 0x9a, 0x87, 0xbd, 0xbf, 0x43, 0x21, 0x6b, 0xf2,
-
  0x21, 0x35, 0xcb, 0xb8, 0x3d, 0x68, 0xf1, 0x11, 0x68, 0x6f, 0x67, 0xf0,
-
  0x65, 0x47, 0x41, 0xf3, 0x46, 0x99, 0x1b, 0x84, 0xf4, 0x33, 0xa0, 0x94,
-
  0xa4, 0xc8, 0x6a, 0xb1, 0x63, 0xac, 0x2f, 0xa4, 0xe9, 0x0b, 0xde, 0x0a,
-
  0xe1, 0x93, 0xdb, 0xf8, 0x04, 0x61, 0x3b, 0xea, 0x91, 0xc7, 0x6a, 0x93,
-
  0x24, 0xed, 0xd3, 0x4d, 0x64, 0x72, 0x1f, 0x18, 0xb7, 0x12, 0xd1, 0xc7,
-
  0x29, 0xb1, 0x26, 0x60, 0x28, 0x76, 0x80, 0xa1, 0x35, 0x18, 0xc3, 0x6a,
-
  0xb2, 0x82, 0x2d, 0xeb, 0x60, 0x99, 0x2b, 0xe8, 0x26, 0x6e, 0x27, 0x15,
-
  0x15, 0xf0, 0x74, 0x59, 0xe9, 0xb9, 0xb2, 0xe9, 0x0a, 0x5c, 0x5f, 0x8a,
-
  0x4b, 0xa5, 0xd2, 0x29, 0xc5, 0x3a, 0xe0, 0xec, 0x18, 0x2f, 0xae, 0x72,
-
  0x3e, 0x3d, 0x84, 0x9d, 0x98, 0x84, 0x22, 0x7a, 0x43, 0x67, 0xc8, 0x4d,
-
  0x85, 0x78, 0xf4, 0x68, 0xb0, 0xd3, 0x6f, 0xac, 0x8a, 0x84, 0xb3, 0xac,
-
  0xcc, 0x84, 0x68, 0xf8, 0x2f, 0x79, 0xcf, 0xee, 0x39, 0xc6, 0x4d, 0x5a,
-
  0x5d, 0xfb, 0x62, 0x94, 0xc1, 0xac, 0x47, 0x98, 0xf8, 0xf4, 0xee, 0x60,
-
  0xb7, 0x2f, 0xbf, 0xee, 0x89, 0xc7, 0x09, 0x7f, 0xdf, 0x6f, 0x3a, 0x2e,
-
  0x9b, 0xf4, 0xba, 0xd3, 0x37, 0x2f, 0xef, 0xdc, 0x86, 0x66, 0x95, 0x93,
-
  0x1a, 0x52, 0x85, 0xf7, 0x5c, 0x43, 0xbe, 0xa2, 0x27, 0xf9, 0x86, 0x61,
-
  0xc7, 0x9c, 0xce, 0x55, 0x71, 0xb0, 0x46, 0x82, 0xdb, 0xd4, 0xaa, 0x2d,
-
  0x72, 0x87, 0x79, 0x2b, 0xef, 0xf2, 0xfa, 0x6b, 0x8e, 0x2d, 0xaf, 0xbf,
-
  0xe6, 0xb8, 0x53, 0x76, 0xa9, 0x61, 0x07, 0x6e, 0xa8, 0x17, 0xe7, 0xc5,
-
  0x6a, 0x2a, 0xcc, 0x9a, 0xbe, 0xef, 0xb4, 0xb6, 0x27, 0x91, 0x4f, 0xf2,
-
  0x17, 0xc2, 0xe9, 0x15, 0x65, 0x8c, 0x7e, 0x07, 0xa0, 0xed, 0xf3, 0x34,
-
  0x54, 0x86, 0x5a, 0x77, 0xbc, 0xc5, 0x90, 0xa0, 0xdd, 0x3b, 0x6e, 0xee,
-
  0xee, 0x8d, 0x07, 0x07, 0xc7, 0xfc, 0xa9, 0x76, 0x64, 0x77, 0x5d, 0x38,
-
  0xbc, 0x9d, 0x7e, 0xe4, 0x6c, 0xa7, 0x5d, 0x4a, 0x3c, 0x87, 0x5d, 0x1b,
-
  0xd3, 0x6a, 0xae, 0x89, 0x7e, 0xd7, 0x20, 0x3c, 0x77, 0x6b, 0xba, 0x76,
-
  0xa6, 0xbd, 0xc1, 0xb4, 0x53, 0x5d, 0x87, 0x71, 0x7f, 0xdf, 0xbf, 0x3c,
-
  0xbc, 0x7d, 0x5e, 0x59, 0x32, 0x4d, 0x84, 0x2e, 0x0c, 0xe9, 0xc8, 0xaa,
-
  0x6a, 0x29, 0x05, 0x44, 0x88, 0x69, 0x63, 0x4c, 0xbe, 0xeb, 0xcf, 0xad,
-
  0x82, 0xc8, 0x65, 0xc4, 0x37, 0xf7, 0x8c, 0x53, 0x89, 0xfe, 0xc4, 0x85,
-
  0x7f, 0xcb, 0x52, 0x0d, 0x5a, 0x2b, 0xea, 0xc8, 0xea, 0x2a, 0x11, 0x0d,
-
  0x8e, 0x6b, 0x6e, 0x84, 0x46, 0xc7, 0xe1, 0x5b, 0x8c, 0xdb, 0xcb, 0xc1,
-
  0xf5, 0x8a, 0xf6, 0x5b, 0x69, 0x57, 0x15, 0xc2, 0x28, 0xa3, 0xaf, 0x2a,
-
  0xb9, 0x4a, 0x40, 0xef, 0x22, 0xb9, 0xcc, 0x8c, 0x31, 0xa4, 0x61, 0xf0,
-
  0x65, 0x33, 0x29, 0xb4, 0x81, 0x06, 0xc4, 0x16, 0xb4, 0x21, 0x41, 0xe4,
-
  0x79, 0x7a, 0x5e, 0x50, 0xd2, 0xd1, 0x24, 0x8a, 0x3a, 0x22, 0x84, 0x94,
-
  0xae, 0x45, 0x9a, 0xc4, 0x15, 0xea, 0xae, 0x2b, 0xd8, 0x88, 0xed, 0xef,
-
  0x38, 0x81, 0xed, 0x60, 0x50, 0x97, 0xf2, 0xdb, 0x84, 0xd0, 0xba, 0x40,
-
  0xba, 0xae, 0x0c, 0xaf, 0x97, 0xbb, 0x1c, 0x1d, 0x7f, 0xa8, 0xeb, 0xb3,
-
  0xb6, 0xd6, 0x1d, 0xd2, 0xbd, 0x08, 0x4a, 0x1c, 0xdd, 0xa4, 0x80, 0xc5,
-
  0xd6, 0xcb, 0x19, 0x95, 0x89, 0x34, 0xda, 0x2e, 0x9a, 0xd3, 0x58, 0xd7,
-
  0xad, 0x2d, 0x22, 0x34, 0xef, 0x70, 0x10, 0xbd, 0xe9, 0x86, 0x0a, 0x9c,
-
  0x6d, 0x0e, 0xda, 0x38, 0xb8, 0x9d, 0x9c, 0xb2, 0xfb, 0x9e, 0x7c, 0xf0,
-
  0x65, 0xe0, 0x68, 0xde, 0x89, 0x89, 0xee, 0x05, 0x83, 0x21, 0x98, 0xee,
-
  0xfb, 0x91, 0x0b, 0x84, 0x65, 0x85, 0x25, 0x07, 0x2d, 0xc0, 0x90, 0xb5,
-
  0x92, 0xbf, 0x97, 0xec, 0xea, 0x93, 0xb2, 0x83, 0xd9, 0x44, 0xcd, 0xaf,
-
  0x90, 0x83, 0xb4, 0xec, 0x59, 0xff, 0xc6, 0x81, 0xa8, 0x9e, 0xc3, 0x66,
-
  0x14, 0xc9, 0x97, 0x28, 0xc2, 0xec, 0x44, 0x71, 0x72, 0x52, 0xe5, 0x23,
-
  0x07, 0xe6, 0x95, 0x8e, 0x78, 0x32, 0x01, 0x72, 0x24, 0x6e, 0x46, 0xd1,
-
  0x4c, 0xd2, 0x12, 0xe1, 0x32, 0xca, 0x5a, 0x65, 0x4e, 0xe0, 0x85, 0x09,
-
  0x2f, 0xaf, 0x18, 0x84, 0xaf, 0x6d, 0x69, 0x81, 0xf5, 0xd8, 0x1d, 0xec,
-
  0xa1, 0xd3, 0x54, 0x90, 0x04, 0xc8, 0xaf, 0x82, 0x4c, 0xee, 0xfc, 0xc2,
-
  0x84, 0xbc, 0x0a, 0xe5, 0x92, 0xa0, 0xe8, 0x44, 0x03, 0x8f, 0x93, 0x50,
-
  0xbc, 0x09, 0x82, 0x10, 0x10, 0xa0, 0xe1, 0x98, 0x61, 0x8c, 0x79, 0xc1,
-
  0x74, 0x97, 0xa5, 0xa9, 0x39, 0xd7, 0x53, 0xa5, 0x03, 0x5d, 0xcf, 0xaa,
-
  0x4b, 0x18, 0xc3, 0x8d, 0x37, 0xe8, 0xde, 0x27, 0xba, 0x3f, 0xf7, 0x3e,
-
  0x4e, 0x86, 0xdc, 0x97, 0xb3, 0x01, 0x7c, 0x29, 0x99, 0x2d, 0x60, 0xfa,
-
  0xda, 0xaa, 0xb9, 0x0c, 0x02, 0x9e, 0x6d, 0x52, 0x88, 0xed, 0x69, 0xbf,
-
  0xf5, 0x61, 0xd7, 0xf3, 0xed, 0x57, 0xd9, 0x5a, 0x51, 0x66, 0xdb, 0x9c,
-
  0x78, 0xb9, 0x8d, 0x9b, 0xb7, 0x7f, 0xf7, 0xa1, 0xf7, 0x58, 0xd8, 0x3a,
-
  0xf7, 0xf3, 0x7e, 0x1c, 0x40, 0x9b, 0x16, 0x4e, 0xf0, 0xa7, 0x3f, 0x89,
-
  0x67, 0xf0, 0x4f, 0x7f, 0x3a, 0xf0, 0xb2, 0xb3, 0x3f, 0x2c, 0xd2, 0x32,
-
  0x9b, 0x53, 0xb9, 0xc6, 0x41, 0xf4, 0x8c, 0x1d, 0xfc, 0xc4, 0x2d, 0xfc,
-
  0x13, 0x0d, 0xd7, 0xd7, 0x64, 0x19, 0xce, 0x02, 0x7f, 0xa1, 0xb5, 0xc9,
-
  0xdc, 0xab, 0x9f, 0x5a, 0xa1, 0xe5, 0xdc, 0x37, 0xae, 0x3d, 0xf2, 0x7c,
-
  0xe4, 0x9a, 0xf7, 0xd3, 0xd7, 0xe8, 0x0d, 0xaf, 0x20, 0xfc, 0x6c, 0xa6,
-
  0xe8, 0x3b, 0x69, 0x52, 0xce, 0x32, 0x39, 0x6d, 0x4a, 0xd7, 0xd5, 0x40,
-
  0xdb, 0x45, 0xaa, 0xa7, 0xa8, 0x02, 0x74, 0x3b, 0x73, 0xb6, 0x12, 0xa8,
-
  0x94, 0x81, 0xe3, 0x3f, 0xe4, 0xed, 0xa0, 0x52, 0xd7, 0x5a, 0x53, 0x11,
-
  0x73, 0x4a, 0x06, 0x6d, 0x5e, 0xe3, 0xba, 0x49, 0xc3, 0xd5, 0x2b, 0x13,
-
  0xa9, 0xac, 0xbd, 0x32, 0x64, 0x41, 0x62, 0x84, 0xa4, 0xbc, 0xa2, 0xb1,
-
  0x9c, 0x58, 0x16, 0x74, 0x38, 0xab, 0xe3, 0xe1, 0x25, 0xe6, 0x6f, 0x0a,
-
  0x2c, 0x9b, 0x87, 0xc6, 0xc9, 0xac, 0x4d, 0xe1, 0x63, 0x65, 0xc2, 0x57,
-
  0x9a, 0x3f, 0x83, 0x74, 0x62, 0xab, 0x70, 0x0a, 0xdc, 0x1d, 0xb0, 0x8a,
-
  0xe4, 0xbd, 0x70, 0xa9, 0x7d, 0x0f, 0x03, 0xc8, 0x81, 0x40, 0xbc, 0xe0,
-
  0x18, 0x03, 0x8d, 0xe2, 0x5d, 0x31, 0x91, 0x96, 0x9f, 0x9a, 0x6a, 0x57,
-
  0x53, 0x9d, 0x9a, 0xbf, 0xbd, 0x7d, 0x71, 0xd4, 0x08, 0x89, 0x97, 0x7c,
-
  0x03, 0x3f, 0xae, 0xca, 0x09, 0xf1, 0x97, 0xe8, 0x38, 0x93, 0x34, 0xae,
-
  0x9c, 0x1c, 0x83, 0xca, 0xd8, 0x54, 0xdc, 0xb8, 0xa5, 0x8a, 0x50, 0x30,
-
  0x0f, 0x68, 0xe7, 0x5c, 0xcf, 0x54, 0x39, 0xc2, 0xb4, 0xb0, 0xa5, 0x9e,
-
  0xa6, 0xcb, 0x9c, 0x86, 0x93, 0x50, 0x99, 0x52, 0xf1, 0xbc, 0x2b, 0x3d,
-
  0xdd, 0xc8, 0xf4, 0xf8, 0x18, 0x7d, 0x22, 0xce, 0x27, 0x8d, 0xdf, 0xa7,
-
  0x0a, 0xdd, 0x6c, 0xf9, 0xde, 0x65, 0x9e, 0xfd, 0xff, 0xa4, 0xcc, 0x73,
-
  0x0b, 0xbd, 0x32, 0x72, 0x66, 0xce, 0x0c, 0xd1, 0xe7, 0x52, 0x8f, 0x07,
-
  0x4f, 0x10, 0x40, 0xa6, 0xc5, 0x1e, 0x3f, 0x1b, 0x67, 0x6c, 0x8a, 0x61,
-
  0x68, 0xd5, 0xbd, 0x81, 0x23, 0xa2, 0x8d, 0xd2, 0xe1, 0x7f, 0xed, 0xa3,
-
  0x14, 0xe2, 0x86, 0x54, 0x59, 0x89, 0xb6, 0x57, 0xda, 0x6e, 0x1c, 0x4b,
-
  0x73, 0xfa, 0x02, 0x51, 0x7b, 0x04, 0x6a, 0x6d, 0x98, 0x69, 0xc6, 0x81,
-
  0xdf, 0xd6, 0x2b, 0x6c, 0x58, 0xe5, 0xb0, 0x83, 0x79, 0x06, 0x8b, 0x9e,
-
  0xab, 0xf5, 0xf6, 0xd6, 0x2c, 0x50, 0x38, 0xe0, 0x0a, 0x06, 0xb8, 0x26,
-
  0xff, 0xfb, 0x68, 0x06, 0x28, 0xc8, 0xcc, 0xd5, 0xfb, 0xb4, 0xe1, 0x32,
-
  0xd8, 0xde, 0x6f, 0xe0, 0x1f, 0x93, 0x6a, 0x9b, 0x68, 0x06, 0x6d, 0xda,
-
  0x0d, 0x84, 0x4c, 0x78, 0x5c, 0xb3, 0x89, 0xb7, 0x6f, 0x1a, 0x7c, 0x38,
-
  0x23, 0xcd, 0x73, 0x92, 0xce, 0x92, 0x6b, 0x0a, 0x5a, 0x69, 0x6f, 0xa8,
-
  0x17, 0x58, 0xaa, 0x3e, 0x05, 0xda, 0x3f, 0xac, 0xf4, 0x14, 0xb1, 0xd0,
-
  0x77, 0x4d, 0x80, 0xb1, 0xee, 0x20, 0x59, 0x4d, 0x25, 0x04, 0xc4, 0x02,
-
  0xe9, 0x74, 0x9c, 0xa6, 0xc1, 0xc8, 0x1c, 0xbc, 0x47, 0xbd, 0x11, 0x7a,
-
  0xeb, 0xe2, 0x70, 0x5d, 0x66, 0x39, 0xab, 0x59, 0x2f, 0xea, 0xee, 0xeb,
-
  0x70, 0xdf, 0x4f, 0xc5, 0x78, 0xef, 0xc6, 0x73, 0x5d, 0xcb, 0xca, 0xc0,
-
  0x34, 0xd5, 0x90, 0x33, 0xad, 0x64, 0xe9, 0x99, 0x88, 0xd7, 0xe4, 0xb1,
-
  0x2d, 0xae, 0xea, 0x25, 0x0f, 0xac, 0xcd, 0x65, 0xa3, 0x86, 0xbd, 0x6e,
-
  0x7d, 0x91, 0x93, 0xb1, 0x4e, 0x1b, 0x46, 0xda, 0x47, 0x4d, 0xb9, 0x93,
-
  0xeb, 0x66, 0xc5, 0xe2, 0x7e, 0x89, 0xd9, 0x4b, 0x14, 0xc4, 0x3b, 0x17,
-
  0xe3, 0x90, 0x95, 0xb4, 0x5e, 0xd0, 0xab, 0x0c, 0x2d, 0x23, 0xaf, 0xbf,
-
  0xe4, 0x22, 0x23, 0xa2, 0x88, 0x69, 0x4a, 0x53, 0xa0, 0xf8, 0x50, 0x36,
-
  0xc6, 0x58, 0x7f, 0x9b, 0x53, 0x44, 0x24, 0x28, 0x5e, 0x80, 0x72, 0x49,
-
  0x39, 0x53, 0xd1, 0xe1, 0x82, 0xdc, 0x68, 0xbb, 0x83, 0x0f, 0x5c, 0x37,
-
  0x18, 0x83, 0x42, 0x03, 0x41, 0x31, 0x65, 0x4a, 0xfb, 0x80, 0x21, 0xf6,
-
  0x82, 0x38, 0xda, 0x1e, 0x0e, 0xb5, 0xce, 0xce, 0xa3, 0x19, 0xb2, 0x98,
-
  0x92, 0x63, 0xcd, 0xf6, 0x80, 0x8b, 0x9c, 0x7b, 0xfa, 0xd8, 0xe8, 0xba,
-
  0x4e, 0xc3, 0x49, 0x06, 0xb8, 0x0a, 0x9b, 0xec, 0x7b, 0x00, 0x25, 0x1e,
-
  0x23, 0xed, 0xe1, 0x9c, 0xbf, 0xcf, 0x16, 0xb4, 0x02, 0x88, 0xc6, 0x6c,
-
  0x7c, 0x47, 0x08, 0xbd, 0x9e, 0x9d, 0xa3, 0x27, 0x9e, 0x72, 0x97, 0x03,
-
  0x50, 0x3a, 0x98, 0xca, 0x22, 0x88, 0x64, 0x8a, 0xf7, 0xc5, 0x1e, 0xcb,
-
  0x70, 0xbd, 0xe2, 0x06, 0x4b, 0x36, 0x8a, 0x2a, 0x39, 0xe8, 0x0d, 0x2f,
-
  0x07, 0x76, 0x13, 0x24, 0x54, 0x58, 0xe1, 0x76, 0x20, 0xf5, 0xf5, 0xe2,
-
  0x86, 0xb4, 0xab, 0x20, 0x55, 0xb4, 0x0f, 0xb6, 0xc1, 0x28, 0xb9, 0xb3,
-
  0x51, 0x2a, 0xd8, 0xcd, 0xba, 0xcc, 0x21, 0x3c, 0xd6, 0xf5, 0x98, 0x45,
-
  0x37, 0xd6, 0x53, 0x9c, 0xe1, 0x99, 0x94, 0xf4, 0x17, 0x4f, 0x61, 0x92,
-
  0xa4, 0x18, 0xc3, 0xe5, 0x1d, 0x27, 0x95, 0x8d, 0x6f, 0xe5, 0xa0, 0xc6,
-
  0x65, 0xbd, 0xc0, 0x1c, 0x44, 0xcc, 0x7a, 0x15, 0xd3, 0xa9, 0x67, 0xb0,
-
  0x6f, 0xbe, 0x38, 0x26, 0xaf, 0x31, 0xf7, 0x20, 0x91, 0xd6, 0x1c, 0x9c,
-
  0x69, 0xcc, 0x9f, 0xe8, 0xdd, 0xc5, 0x70, 0xb1, 0xa2, 0x78, 0x9f, 0xa5,
-
  0x5e, 0x59, 0x8b, 0x09, 0xde, 0x66, 0x12, 0x9b, 0x62, 0x93, 0x54, 0x1a,
-
  0x92, 0x39, 0xd2, 0x2a, 0x82, 0x59, 0x0f, 0x06, 0x83, 0x40, 0x2d, 0xb5,
-
  0xcb, 0x2c, 0xbd, 0x6a, 0x98, 0x64, 0x64, 0x64, 0x7d, 0xae, 0xbc, 0xc5,
-
  0xf9, 0x1e, 0x69, 0x2b, 0x1d, 0xa9, 0x23, 0x2c, 0xd8, 0xb5, 0x78, 0x66,
-
  0xa4, 0x4b, 0x9b, 0x8c, 0xa2, 0x7b, 0xce, 0x7a, 0x97, 0x76, 0xd7, 0xa4,
-
  0xa2, 0x6c, 0x3d, 0x82, 0xe9, 0x08, 0x55, 0x7b, 0xcf, 0xb4, 0x52, 0x85,
-
  0xca, 0x82, 0x6c, 0xa2, 0xdd, 0xc8, 0x06, 0x1e, 0x7d, 0x67, 0xec, 0x66,
-
  0x7d, 0xb4, 0x1f, 0xe1, 0xa5, 0xcf, 0x18, 0x35, 0x8e, 0xd4, 0x47, 0x43,
-
  0x63, 0x4c, 0x5c, 0x8f, 0x89, 0xc2, 0x2b, 0x82, 0x73, 0xc2, 0xee, 0x5e,
-
  0x79, 0x3b, 0x54, 0xaa, 0xba, 0xa6, 0x16, 0x28, 0x07, 0x61, 0x75, 0xa5,
-
  0x1e, 0x07, 0x7e, 0xd7, 0xf0, 0x35, 0xee, 0x47, 0xd2, 0xec, 0xaa, 0x3a,
-
  0x5d, 0x08, 0x90, 0x2d, 0x0b, 0x21, 0x26, 0x65, 0xa4, 0xed, 0xf9, 0xc5,
-
  0x08, 0xb9, 0x60, 0x78, 0x33, 0xd7, 0x94, 0x6f, 0x5c, 0x95, 0x82, 0xc6,
-
  0xc7, 0xbe, 0x7b, 0x35, 0xaf, 0x8b, 0x4b, 0x01, 0xad, 0x6d, 0x22, 0x09,
-
  0xe1, 0x48, 0x62, 0xbf, 0xd4, 0xbb, 0x0b, 0xdb, 0xb7, 0x51, 0x91, 0x75,
-
  0xce, 0xa9, 0x6f, 0xa2, 0x0b, 0x92, 0xd5, 0x5a, 0xb2, 0x31, 0xa5, 0xb8,
-
  0xf9, 0x24, 0xc8, 0x96, 0xdd, 0x17, 0x6d, 0x95, 0x5b, 0x9b, 0x02, 0x43,
-
  0xe1, 0x14, 0x7c, 0x13, 0x51, 0x14, 0x96, 0x74, 0xde, 0x85, 0x44, 0xab,
-
  0xc0, 0x31, 0x0a, 0x90, 0xc2, 0x41, 0x94, 0x22, 0x70, 0xb8, 0x7d, 0x99,
-
  0x20, 0x18, 0x2c, 0xe3, 0xa7, 0x55, 0xf8, 0x8e, 0x0e, 0x57, 0x8c, 0x8e,
-
  0x73, 0x07, 0x8c, 0xd2, 0x81, 0x5f, 0x45, 0x58, 0xc5, 0x19, 0xbd, 0x2a,
-
  0x48, 0xa6, 0xbc, 0xc4, 0x5c, 0xff, 0x0e, 0x1e, 0x2d, 0x96, 0xa5, 0x87,
-
  0x0f, 0x4c, 0x97, 0xa2, 0xd4, 0xb6, 0x92, 0x72, 0x56, 0xde, 0xe1, 0xd0,
-
  0x43, 0x81, 0x1b, 0x30, 0xa8, 0xd2, 0x6d, 0xe0, 0x23, 0xd5, 0x76, 0x55,
-
  0xcd, 0xb0, 0xbf, 0x8a, 0x2a, 0x2d, 0x87, 0x2e, 0x4a, 0xa2, 0x72, 0x9c,
-
  0x2c, 0x50, 0x7a, 0xd3, 0x20, 0xe3, 0x50, 0x18, 0x93, 0x18, 0xb3, 0x4e,
-
  0x2a, 0xb3, 0xfe, 0x8e, 0xc2, 0xc0, 0x83, 0x64, 0xae, 0x91, 0xe6, 0x8d,
-
  0x27, 0xd9, 0x84, 0x67, 0x4a, 0x27, 0x9b, 0x3c, 0x2c, 0x5a, 0x06, 0x5d,
-
  0x77, 0x7f, 0x47, 0x90, 0x48, 0x2e, 0x30, 0xb5, 0xda, 0xa2, 0x71, 0xca,
-
  0x22, 0xf6, 0x06, 0x55, 0x75, 0xd1, 0xc3, 0xaa, 0xf3, 0xe6, 0x2b, 0x4d,
-
  0x46, 0xe9, 0xa8, 0x76, 0x6b, 0x36, 0xde, 0x0d, 0x90, 0xb5, 0x91, 0x7f,
-
  0x55, 0x77, 0x74, 0xbf, 0x8f, 0xf6, 0xce, 0x4b, 0xd3, 0x84, 0x92, 0x12,
-
  0x4e, 0x72, 0xb3, 0x45, 0x5b, 0x4e, 0xbf, 0x3d, 0x3c, 0x88, 0x2f, 0x5d,
-
  0x2e, 0x2b, 0x07, 0xab, 0x92, 0x87, 0xc8, 0xea, 0x5c, 0x08, 0xd6, 0x4a,
-
  0x2a, 0x8a, 0x52, 0x78, 0x0f, 0x3e, 0xa9, 0x7a, 0x9d, 0x9b, 0xec, 0x29,
-
  0xac, 0x86, 0x17, 0x98, 0x19, 0x41, 0x00, 0xee, 0x18, 0x16, 0xb0, 0xc2,
-
  0x1b, 0x03, 0xc3, 0x30, 0x06, 0x91, 0x64, 0xe0, 0xb4, 0x98, 0x23, 0xdd,
-
  0x6e, 0xd6, 0x20, 0x45, 0x63, 0xa5, 0x06, 0x7d, 0x69, 0x85, 0x52, 0xb9,
-
  0xdc, 0x51, 0x50, 0x4c, 0x10, 0xec, 0x75, 0x36, 0x26, 0xd4, 0x7b, 0x11,
-
  0x1b, 0x57, 0xc9, 0x33, 0xcd, 0xae, 0x57, 0x8b, 0x31, 0xd1, 0x5d, 0xae,
-
  0x9c, 0x8e, 0x7d, 0xba, 0x49, 0x72, 0xd1, 0x11, 0xad, 0x1d, 0x29, 0xf4,
-
  0xe1, 0xda, 0xbc, 0x4c, 0xa8, 0x2b, 0x09, 0x31, 0x00, 0x81, 0x3d, 0x48,
-
  0xb0, 0xc8, 0x47, 0x43, 0xc6, 0x57, 0x94, 0xef, 0xe8, 0x69, 0x28, 0x00,
-
  0xf1, 0x94, 0x03, 0xca, 0xc8, 0x26, 0xea, 0x16, 0x2d, 0x62, 0x81, 0xd4,
-
  0xc2, 0x98, 0x98, 0x66, 0x06, 0x06, 0xf9, 0x39, 0xc5, 0x8f, 0xba, 0xf0,
-
  0xc8, 0x45, 0x3e, 0x71, 0x10, 0x07, 0xd0, 0x65, 0xa2, 0x47, 0x06, 0xb4,
-
  0x12, 0x5b, 0xc7, 0x16, 0x0e, 0x18, 0x05, 0x5b, 0xcf, 0x40, 0x94, 0x09,
-
  0xd4, 0x58, 0xee, 0xaa, 0x12, 0xe8, 0xcc, 0x0c, 0xb1, 0x89, 0x0f, 0xac,
-
  0x53, 0xff, 0xea, 0xea, 0x6a, 0xb0, 0x2a, 0x8a, 0xf3, 0x04, 0xce, 0xcf,
-
  0x4b, 0xb8, 0x0d, 0x3e, 0x44, 0x4e, 0x15, 0x54, 0xa9, 0xb4, 0xe0, 0xe0,
-
  0x49, 0xff, 0xf8, 0xe6, 0xfb, 0xbe, 0x09, 0x38, 0x13, 0xa0, 0x30, 0x4c,
-
  0x6e, 0xf2, 0x8c, 0x73, 0x20, 0xae, 0x64, 0x5c, 0x99, 0x36, 0x01, 0xcd,
-
  0xee, 0xe8, 0xf0, 0xf4, 0xdd, 0xeb, 0xe3, 0xb3, 0x77, 0x6f, 0x0e, 0x7f,
-
  0xc2, 0x39, 0xf3, 0xb1, 0x01, 0xb5, 0x06, 0xb3, 0xf3, 0xca, 0xa2, 0x40,
-
  0xa9, 0xf8, 0x15, 0xc5, 0x4c, 0x09, 0x59, 0x07, 0x6f, 0x63, 0x53, 0x55,
-
  0x59, 0xc6, 0x09, 0x63, 0x39, 0x88, 0x1a, 0x13, 0x7c, 0x9f, 0x96, 0x79,
-
  0x3a, 0x1b, 0x14, 0xe5, 0x39, 0x32, 0xe6, 0xed, 0x67, 0x22, 0xe4, 0x05,
-
  0x9b, 0xdb, 0x16, 0x5c, 0x12, 0x8c, 0xf8, 0xbb, 0x2c, 0xa7, 0x18, 0xa0,
-
  0x16, 0x0c, 0xe1, 0xb5, 0x2b, 0xba, 0x22, 0x7c, 0x97, 0xb9, 0x36, 0x05,
-
  0xe0, 0x71, 0x0a, 0xd2, 0x7d, 0x87, 0xf0, 0x36, 0xf7, 0x75, 0xcd, 0xf3,
-
  0x31, 0xc9, 0x2b, 0xdb, 0x80, 0x73, 0x0e, 0x1e, 0x10, 0x17, 0x58, 0x5c,
-
  0x3e, 0x58, 0x61, 0x28, 0xaf, 0x3d, 0x87, 0xab, 0x0b, 0x8f, 0x93, 0x8a,
-
  0x6d, 0x8d, 0xec, 0x57, 0x78, 0xad, 0x52, 0x9c, 0x69, 0xe7, 0xa5, 0xd0,
-
  0x6f, 0x18, 0xdc, 0x94, 0xd6, 0xd1, 0x8c, 0x83, 0x88, 0x3f, 0xab, 0x18,
-
  0x96, 0x19, 0xea, 0x27, 0x30, 0xa6, 0x50, 0xb3, 0xf7, 0x60, 0x4b, 0x69,
-
  0x19, 0x3c, 0xda, 0xce, 0xb4, 0xce, 0x70, 0xa4, 0x47, 0x32, 0x37, 0x37,
-
  0x6e, 0xdf, 0x7c, 0xb6, 0xee, 0xd6, 0x3c, 0xfa, 0x14, 0x5b, 0xf3, 0x60,
-
  0xd5, 0xd6, 0x98, 0xa1, 0x7e, 0x9a, 0xad, 0x79, 0xf4, 0x39, 0xb7, 0xc6,
-
  0x90, 0x9d, 0x7b, 0x7b, 0xfc, 0x56, 0x41, 0x2b, 0xe1, 0xaa, 0x9a, 0x62,
-
  0x12, 0x1a, 0x52, 0x85, 0x66, 0x09, 0xcd, 0x31, 0xd7, 0xc5, 0x5f, 0x86,
-
  0x27, 0xaf, 0xa5, 0x08, 0x26, 0xc6, 0xd5, 0x36, 0xc1, 0x10, 0x8b, 0x80,
-
  0x70, 0xe6, 0x84, 0x82, 0x0e, 0xb4, 0x5f, 0x03, 0xc6, 0x9f, 0x60, 0x42,
-
  0x4e, 0x59, 0x8f, 0x91, 0x21, 0x52, 0xd6, 0xef, 0x42, 0xb2, 0x3d, 0xb5,
-
  0xd6, 0x53, 0xe5, 0xc7, 0x0b, 0x95, 0xa9, 0xea, 0xa3, 0x81, 0x0a, 0xe8,
-
  0x82, 0x9a, 0xf7, 0x8f, 0xa4, 0x3c, 0xff, 0xd5, 0xff, 0x4e, 0xb2, 0xff,
-
  0x7a, 0xa6, 0x56, 0xf0, 0xf5, 0x22, 0x3d, 0xa0, 0xb2, 0xf6, 0x22, 0x8c,
-
  0x6e, 0xe3, 0xf0, 0x7a, 0xdd, 0x2f, 0x1e, 0x8e, 0xc7, 0xe9, 0xa2, 0x0e,
-
  0xbd, 0xe2, 0xc3, 0x60, 0x49, 0x5d, 0x77, 0x20, 0x9e, 0x86, 0xb6, 0x65,
-
  0x54, 0x05, 0x9c, 0x2a, 0x4b, 0xb4, 0x5a, 0x53, 0x34, 0x19, 0xe3, 0x86,
-
  0xd2, 0x12, 0xb7, 0xed, 0xe3, 0xa5, 0x7d, 0x4f, 0xca, 0x9b, 0x63, 0x76,
-
  0x26, 0x5b, 0xc6, 0x42, 0xd1, 0xda, 0x94, 0x5b, 0x4e, 0xb8, 0x65, 0xb5,
-
  0x05, 0x9d, 0x94, 0x0c, 0x14, 0x46, 0xe6, 0x8b, 0xbe, 0xed, 0x2b, 0xf0,
-
  0x45, 0xdd, 0x4a, 0x11, 0x0e, 0xc1, 0xb4, 0x48, 0x06, 0x02, 0x3a, 0x8f,
-
  0x29, 0xad, 0xda, 0xb6, 0x8b, 0x82, 0x5b, 0x3f, 0xa2, 0x68, 0x7d, 0x29,
-
  0xb9, 0x30, 0x49, 0xaa, 0x8b, 0x68, 0x33, 0xde, 0x0a, 0x03, 0x4d, 0x50,
-
  0xad, 0x11, 0x3d, 0xf0, 0x26, 0x45, 0xdb, 0x34, 0xa5, 0xb9, 0xd9, 0xa7,
-
  0x05, 0x27, 0x37, 0xd8, 0x2f, 0x92, 0xce, 0xdc, 0x83, 0x49, 0xb4, 0x31,
-
  0x2d, 0x8a, 0x51, 0x52, 0x6e, 0x08, 0x7c, 0x03, 0xe5, 0xd3, 0x4b, 0x69,
-
  0x37, 0x15, 0xe9, 0x88, 0xf2, 0xbe, 0xe5, 0xe7, 0x22, 0xb1, 0xe7, 0x75,
-
  0x61, 0x61, 0x76, 0x0d, 0xab, 0x4f, 0x1c, 0x4a, 0xdb, 0x8a, 0x43, 0x2b,
-
  0xdf, 0x52, 0x83, 0x49, 0xfa, 0x98, 0xb3, 0xf6, 0x4e, 0x0e, 0xf1, 0x71,
-
  0x6a, 0x2a, 0x40, 0x52, 0x95, 0x79, 0x45, 0xe8, 0x41, 0xa5, 0xae, 0x1f,
-
  0x08, 0x8e, 0xa0, 0x02, 0xd8, 0x6c, 0xbb, 0xe7, 0xd1, 0x2c, 0xb2, 0x74,
-
  0x8c, 0xb5, 0x78, 0xe4, 0x22, 0x06, 0x25, 0x06, 0x75, 0x47, 0x86, 0x4c,
-
  0x10, 0xcf, 0x95, 0xd6, 0x8e, 0xf2, 0x32, 0x69, 0x49, 0x6b, 0x16, 0x90,
-
  0xa7, 0x20, 0x74, 0x9b, 0x9a, 0xa9, 0xdc, 0x59, 0x54, 0xa9, 0x8d, 0xaf,
-
  0x97, 0x02, 0x55, 0x93, 0x54, 0x25, 0x65, 0x27, 0xab, 0xd6, 0xc7, 0x2c,
-
  0x58, 0x56, 0x40, 0xcf, 0x81, 0x88, 0x7d, 0x5a, 0xbe, 0x4f, 0x97, 0x83,
-
  0xcb, 0xed, 0x6f, 0xfc, 0x2b, 0xea, 0x4d, 0xca, 0x2c, 0x7f, 0xdf, 0x3b,
-
  0x88, 0x7a, 0xe3, 0x02, 0x58, 0x77, 0x2f, 0xfa, 0xf7, 0xc6, 0x1a, 0x38,
-
  0x9e, 0xed, 0x56, 0x36, 0xcc, 0x67, 0x1f, 0xd1, 0xde, 0xb7, 0x88, 0x3c,
-
  0x93, 0xa0, 0xa6, 0xb5, 0xee, 0x8b, 0x71, 0xe8, 0x8d, 0xe8, 0x69, 0x84,
-
  0xdf, 0x86, 0x04, 0x3f, 0x37, 0xcc, 0xb5, 0x81, 0x89, 0x2b, 0x15, 0x39,
-
  0xf0, 0x93, 0x32, 0xb9, 0xba, 0x5b, 0x98, 0xab, 0xc5, 0xda, 0x69, 0x15,
-
  0x79, 0x36, 0x55, 0x9e, 0xbd, 0xc2, 0xce, 0xad, 0x0c, 0x24, 0x27, 0xb3,
-
  0x6a, 0xaf, 0xe1, 0xbc, 0xf8, 0x0d, 0xdb, 0xfa, 0x6d, 0x99, 0xbf, 0x8f,
-
  0xe1, 0xfa, 0x47, 0x83, 0x66, 0x2c, 0xa6, 0xd0, 0xf0, 0x3d, 0xf5, 0x93,
-
  0xa9, 0xca, 0xe0, 0x24, 0x12, 0xd1, 0xf9, 0x95, 0xd7, 0x94, 0x79, 0xb0,
-
  0x73, 0x51, 0x13, 0xa4, 0xba, 0x5c, 0xe7, 0x36, 0xa6, 0x02, 0x83, 0xc7,
-
  0xb2, 0x6a, 0x8c, 0x31, 0xa3, 0x98, 0xaa, 0xd2, 0x93, 0xd1, 0x68, 0xb3,
-
  0x3d, 0x59, 0x38, 0x3e, 0x87, 0x89, 0x7f, 0xfb, 0x8e, 0xf9, 0x6e, 0x26,
-
  0xd5, 0x41, 0x6e, 0x51, 0x62, 0xa1, 0x52, 0x3f, 0x21, 0xa9, 0x38, 0x56,
-
  0x23, 0x4f, 0xaf, 0x22, 0x6d, 0x1a, 0xb1, 0x44, 0x90, 0x69, 0xfb, 0x09,
-
  0x5b, 0x70, 0x53, 0x61, 0x83, 0xd1, 0xa8, 0x04, 0x45, 0x9f, 0x92, 0x2a,
-
  0x66, 0x57, 0x88, 0xaa, 0xa5, 0x23, 0x6c, 0x0d, 0x2e, 0x12, 0x14, 0x04,
-
  0x86, 0x3b, 0x4d, 0x3c, 0xb3, 0xe5, 0x78, 0x56, 0xe0, 0xb1, 0x43, 0x27,
-
  0xc5, 0x2a, 0xa9, 0xa8, 0x73, 0x2b, 0x56, 0x49, 0x49, 0x77, 0xf0, 0x18,
-
  0x84, 0xba, 0x58, 0x57, 0xca, 0x0a, 0x0e, 0x33, 0x1e, 0xe9, 0x8a, 0xac,
-
  0x9f, 0xbb, 0x33, 0x62, 0xe4, 0x53, 0x7c, 0x9b, 0x89, 0x7c, 0x6c, 0x3f,
-
  0x88, 0x7f, 0x4b, 0x1a, 0x95, 0x85, 0xdf, 0xa7, 0x70, 0xa8, 0x67, 0x54,
-
  0xc4, 0x18, 0x33, 0xc0, 0x9e, 0x76, 0x80, 0x9d, 0x9e, 0xb5, 0xb9, 0x2a,
-
  0x19, 0x86, 0x28, 0x67, 0xcc, 0xb5, 0x10, 0x93, 0x2e, 0xca, 0x64, 0x3c,
-
  0xa7, 0x9c, 0x3a, 0xcc, 0xd0, 0x02, 0x5e, 0x19, 0xfb, 0x16, 0x9e, 0x34,
-
  0x32, 0x98, 0x7d, 0x91, 0x19, 0x04, 0x19, 0x72, 0x47, 0xd6, 0x7c, 0xc5,
-
  0x5d, 0x8c, 0x40, 0x55, 0x4c, 0x53, 0x37, 0x67, 0xad, 0xd5, 0x9c, 0x7d,
-
  0x9f, 0x5f, 0x27, 0xe0, 0xaa, 0xac, 0x72, 0x0b, 0x18, 0xd3, 0x5e, 0xe2,
-
  0x13, 0x85, 0x31, 0x2a, 0x40, 0xcf, 0xd5, 0x35, 0xdc, 0x9a, 0x73, 0xef,
-
  0x40, 0xc1, 0xc3, 0xa5, 0xd6, 0x46, 0xa7, 0xaa, 0x4f, 0xef, 0xfe, 0x7a,
-
  0x7c, 0x7c, 0xfa, 0xe2, 0xd9, 0xcb, 0x63, 0xe1, 0x12, 0xe6, 0xa3, 0xd7,
-
  0x67, 0x3f, 0xbe, 0x84, 0x89, 0x14, 0xe3, 0xf7, 0xa8, 0x76, 0x8a, 0x70,
-
  0xd7, 0x3e, 0xee, 0x92, 0xa2, 0xce, 0x8a, 0x73, 0x1f, 0xd6, 0x66, 0x8c,
-
  0xa6, 0xd2, 0xc3, 0x17, 0x3f, 0xf7, 0xa3, 0xe7, 0xa7, 0xf1, 0xdb, 0x9f,
-
  0xa5, 0x51, 0xbc, 0x6b, 0xb7, 0xd0, 0xa8, 0xf8, 0x57, 0x9d, 0x4e, 0x15,
-
  0x3a, 0x01, 0x1c, 0x90, 0x26, 0x61, 0x9c, 0x58, 0x91, 0x8a, 0x31, 0x61,
-
  0xb1, 0xc6, 0x45, 0x5a, 0x53, 0x89, 0xb9, 0xb2, 0x78, 0x9f, 0xe6, 0x0a,
-
  0xfc, 0x59, 0x51, 0xbc, 0x13, 0xee, 0x43, 0x37, 0x14, 0x6b, 0xc5, 0x7e,
-
  0x20, 0x17, 0x17, 0x96, 0x24, 0x3c, 0x7f, 0x5f, 0xf4, 0x26, 0x86, 0xbe,
-
  0xc6, 0xb3, 0xa4, 0xf4, 0x55, 0x9a, 0x16, 0x8c, 0xa4, 0xd6, 0x59, 0x40,
-
  0xa9, 0xff, 0x64, 0x08, 0x6f, 0x11, 0x76, 0x99, 0xc0, 0x2c, 0x90, 0x20,
-
  0x38, 0x9f, 0x93, 0x9e, 0xf4, 0x25, 0xca, 0x61, 0xbb, 0x3b, 0x83, 0x75,
-
  0xaa, 0xb8, 0xd0, 0x09, 0xb4, 0x63, 0xec, 0x02, 0x76, 0x05, 0xd1, 0x66,
-
  0x99, 0x1b, 0x3d, 0x80, 0x65, 0x47, 0x69, 0xd2, 0x45, 0x3b, 0x7d, 0xb4,
-
  0x13, 0x29, 0x12, 0x6e, 0xd0, 0x12, 0xd1, 0x3a, 0x29, 0xae, 0x39, 0xc2,
-
  0x82, 0xe2, 0x84, 0x0d, 0x12, 0x41, 0x34, 0x9d, 0x8f, 0xb1, 0x47, 0xb4,
-
  0xc6, 0xb2, 0xb7, 0xae, 0x49, 0xa2, 0xb1, 0x6e, 0xc4, 0x22, 0x1a, 0x80,
-
  0xa5, 0x4d, 0x06, 0x71, 0x1d, 0xd7, 0xa0, 0x6d, 0x44, 0x4f, 0xf1, 0xdf,
-
  0x6f, 0x02, 0x5e, 0xa4, 0x2d, 0xe4, 0xbc, 0xd9, 0x25, 0xba, 0x01, 0xe0,
-
  0x61, 0x16, 0xba, 0xf1, 0xd9, 0x81, 0x49, 0x00, 0x95, 0x0c, 0x52, 0x6c,
-
  0x85, 0xf0, 0xd3, 0xa8, 0x55, 0x5c, 0x3e, 0x0f, 0x39, 0x94, 0x96, 0x73,
-
  0xe1, 0xb4, 0x96, 0x01, 0x6d, 0x3e, 0x3b, 0x7e, 0xd3, 0x8f, 0x4e, 0x8f,
-
  0x5f, 0xb1, 0x92, 0x7c, 0xfc, 0xfa, 0x07, 0x82, 0x88, 0xd1, 0x88, 0x07,
-
  0x44, 0xe2, 0x15, 0xf0, 0x0c, 0xaf, 0xda, 0xbb, 0xdd, 0x74, 0x78, 0x9d,
-
  0x14, 0x95, 0xaa, 0x5a, 0xce, 0xc3, 0x34, 0xe2, 0x4c, 0x75, 0xfd, 0x02,
-
  0x67, 0x61, 0xe4, 0x97, 0xc1, 0xba, 0xbb, 0x2a, 0xfd, 0xc3, 0x84, 0x65,
-
  0x8d, 0x48, 0x19, 0x5b, 0x6f, 0x6f, 0x31, 0xc5, 0xbf, 0xb9, 0x7f, 0xd1,
-
  0x53, 0xf8, 0xe7, 0x9b, 0xa0, 0xff, 0x6f, 0xf8, 0x7c, 0xcb, 0xdf, 0x3c,
-
  0x31, 0x87, 0x36, 0x00, 0xe9, 0x64, 0x3d, 0x78, 0xff, 0x16, 0xbe, 0xe7,
-
  0x8b, 0x5a, 0xe0, 0x1d, 0x13, 0x87, 0x9a, 0x89, 0x60, 0x62, 0xe0, 0x2b,
-
  0x72, 0xc4, 0x0c, 0x41, 0xe8, 0x86, 0x83, 0x8b, 0x76, 0x0e, 0x67, 0x6f,
-
  0x42, 0x85, 0x34, 0x09, 0xe5, 0xc3, 0xad, 0x03, 0x4e, 0xfc, 0x18, 0x24,
-
  0xef, 0x49, 0x36, 0xe1, 0x9a, 0xca, 0x08, 0x33, 0x54, 0x94, 0x88, 0x89,
-
  0x06, 0xcf, 0x6f, 0xfc, 0x7f, 0xb7, 0xd1, 0x5b, 0xb2, 0x9d, 0x4d, 0xde,
-
  0x95, 0x55, 0xb2, 0xd1, 0x56, 0x47, 0x9c, 0xaf, 0x27, 0xf8, 0x75, 0xb4,
-
  0x31, 0x30, 0x8f, 0xca, 0xef, 0xf8, 0x79, 0x77, 0xae, 0x77, 0xa6, 0x01,
-
  0x0c, 0x0a, 0xab, 0x7c, 0x02, 0x8c, 0x6c, 0x38, 0x7c, 0x89, 0x21, 0x0e,
-
  0x65, 0x82, 0x8e, 0x19, 0xbd, 0xb1, 0xd2, 0xfc, 0x1c, 0x9d, 0x5c, 0x8b,
-
  0xf7, 0xe3, 0x6a, 0x77, 0xd7, 0x8f, 0xf1, 0x36, 0x61, 0x70, 0x06, 0x21,
-
  0xfb, 0xf4, 0xaf, 0x47, 0xc3, 0x3f, 0xec, 0xee, 0x12, 0x4a, 0xfb, 0x26,
-
  0xa2, 0x46, 0x3f, 0x7e, 0xb8, 0xbb, 0xb7, 0x15, 0xb2, 0x01, 0x7b, 0xa5,
-
  0xd0, 0x09, 0x39, 0x31, 0x6a, 0x9c, 0x17, 0x82, 0x41, 0x92, 0xfa, 0x10,
-
  0xa6, 0xe9, 0x49, 0x8a, 0x88, 0xb7, 0x54, 0x5a, 0x90, 0x81, 0x25, 0x08,
-
  0x08, 0xd8, 0xab, 0x85, 0x6a, 0x0a, 0xa1, 0xf6, 0x78, 0xf4, 0x07, 0x3d,
-
  0xc3, 0xa4, 0x0c, 0xb6, 0x3d, 0xe2, 0xcb, 0x57, 0xcd, 0x51, 0xcb, 0xf1,
-
  0x6b, 0x8b, 0x4f, 0xee, 0xbc, 0x32, 0x17, 0x4f, 0xa6, 0x66, 0x9f, 0x2b,
-
  0x6a, 0xa3, 0xb2, 0x58, 0x01, 0x14, 0x29, 0x0f, 0x1c, 0x46, 0xc6, 0xd4,
-
  0x63, 0xfa, 0x41, 0xe5, 0xd8, 0x01, 0xa9, 0x31, 0xab, 0xef, 0x1c, 0x22,
-
  0xb7, 0x51, 0x3f, 0x7c, 0x98, 0xfb, 0x88, 0x7a, 0xc0, 0x4d, 0xc2, 0x4d,
-
  0xae, 0x41, 0x0b, 0x43, 0xf6, 0x9a, 0x10, 0xc2, 0x17, 0x57, 0x3a, 0x06,
-
  0x52, 0xd7, 0x52, 0x40, 0xb5, 0x7a, 0x98, 0x3b, 0x03, 0x5e, 0x39, 0x60,
-
  0x84, 0xdd, 0xcd, 0x78, 0x28, 0xad, 0xd7, 0x6c, 0x53, 0xb2, 0x41, 0xd2,
-
  0x7a, 0x4c, 0x85, 0xbf, 0x31, 0xa0, 0x41, 0x11, 0x2f, 0x3c, 0x25, 0x67,
-
  0x41, 0xa1, 0x46, 0xac, 0x44, 0x5b, 0x7a, 0x60, 0x5b, 0xbf, 0x16, 0x03,
-
  0x6d, 0xb9, 0x69, 0xe1, 0x01, 0x18, 0x26, 0xfc, 0xe1, 0x45, 0xb7, 0xf3,
-
  0xe6, 0xed, 0x31, 0x3f, 0x70, 0x60, 0x48, 0x5a, 0x9e, 0xe2, 0x4e, 0x3e,
-
  0xba, 0x26, 0x0b, 0xed, 0xda, 0xa5, 0xbb, 0xdc, 0x8d, 0xe4, 0x7a, 0x72,
-
  0x7d, 0xd3, 0x1f, 0xc3, 0x49, 0x99, 0x94, 0xe8, 0x86, 0x3c, 0xee, 0x4b,
-
  0xe3, 0x0d, 0xee, 0x5a, 0x8e, 0xa2, 0xa7, 0x04, 0x96, 0xda, 0x51, 0xa8,
-
  0xf8, 0x98, 0x90, 0x33, 0x40, 0xa4, 0x2b, 0x41, 0xb4, 0x2a, 0xaa, 0x56,
-
  0xc5, 0x1f, 0x75, 0x31, 0xb2, 0xfc, 0x45, 0xed, 0x28, 0x9e, 0x64, 0x7b,
-
  0x7f, 0xf1, 0x00, 0x0a, 0xa1, 0x9b, 0x82, 0xbc, 0x8a, 0x62, 0xba, 0x41,
-
  0xb5, 0x87, 0x90, 0x95, 0x55, 0xc9, 0x34, 0xc5, 0x9f, 0x54, 0xf7, 0x00,
-
  0x05, 0xad, 0x2c, 0x99, 0x6d, 0xf4, 0xfd, 0xfd, 0xdd, 0x10, 0x1a, 0xd9,
-
  0x40, 0xff, 0xbc, 0x58, 0xd0, 0x08, 0x10, 0x93, 0x62, 0x91, 0x81, 0xa7,
-
  0xf0, 0x58, 0x34, 0x7b, 0x08, 0x19, 0xb6, 0xf4, 0x45, 0xa6, 0xcd, 0x7e,
-
  0x57, 0x73, 0x5a, 0xa8, 0xc5, 0x14, 0x66, 0xe9, 0x92, 0xc8, 0x78, 0xe9,
-
  0x3e, 0x1f, 0x95, 0x60, 0xef, 0x5c, 0xb1, 0xe9, 0x76, 0x10, 0x2b, 0xc6,
-
  0x99, 0x93, 0x62, 0x7d, 0x0e, 0xb3, 0x77, 0x5c, 0x32, 0x48, 0xda, 0x5b,
-
  0x2b, 0x8a, 0x73, 0x65, 0x10, 0xa7, 0x92, 0x8b, 0x4b, 0x6a, 0xfa, 0xc2,
-
  0xd3, 0x10, 0x60, 0xf2, 0x21, 0x57, 0xbb, 0x75, 0x8d, 0x5f, 0x04, 0xb5,
-
  0x82, 0x75, 0x84, 0x26, 0x6c, 0x3c, 0x91, 0xfa, 0x8f, 0xae, 0xd1, 0x4e,
-
  0x14, 0x8f, 0x80, 0xa5, 0x93, 0x16, 0x1a, 0x83, 0x9f, 0x75, 0x9c, 0xb1,
-
  0x64, 0xbb, 0x1f, 0x45, 0x1c, 0xbc, 0x41, 0xb5, 0x46, 0xa2, 0xab, 0x32,
-
  0xab, 0x6b, 0x82, 0xe6, 0x33, 0x80, 0x18, 0xa1, 0x54, 0x29, 0x49, 0xcf,
-
  0x83, 0xcb, 0x11, 0x16, 0x08, 0xf6, 0x92, 0xb0, 0x5c, 0xa7, 0x5c, 0x54,
-
  0x97, 0x04, 0x0a, 0x19, 0x16, 0xa3, 0x8c, 0x5a, 0x9f, 0x2f, 0xbe, 0xf7,
-
  0xbf, 0xbe, 0x58, 0x0d, 0x07, 0x2f, 0x80, 0xc5, 0x5c, 0xa9, 0x54, 0x02,
-
  0x11, 0x09, 0xef, 0x51, 0x82, 0x03, 0x8c, 0xfd, 0x9f, 0x1c, 0x2b, 0xc9,
-
  0xf8, 0x22, 0x14, 0x46, 0x4d, 0xba, 0x44, 0xfa, 0xa1, 0xee, 0x40, 0xaf,
-
  0xd2, 0xa5, 0xff, 0x4c, 0x72, 0xa1, 0xa9, 0xd2, 0x40, 0xc8, 0xf9, 0x83,
-
  0xf1, 0xbd, 0xc4, 0x86, 0xc5, 0x54, 0xc6, 0x22, 0x26, 0x09, 0xed, 0x29,
-
  0xac, 0x52, 0x3a, 0xf9, 0xa6, 0x03, 0xbe, 0x85, 0xb1, 0xa1, 0x3f, 0x64,
-
  0xf3, 0xe5, 0xdc, 0xc6, 0x82, 0xd0, 0x7b, 0xc8, 0x31, 0xac, 0x51, 0xdc,
-
  0xe6, 0x67, 0xc5, 0xa1, 0x84, 0x29, 0xac, 0x79, 0xe2, 0x14, 0x93, 0x25,
-
  0xce, 0x47, 0x56, 0xb6, 0x6a, 0xd0, 0x44, 0x8b, 0x62, 0x3d, 0x0e, 0xa3,
-
  0x70, 0xd9, 0x0a, 0xcf, 0x86, 0xa8, 0xc4, 0xf3, 0xc3, 0x53, 0x15, 0x8e,
-
  0x68, 0x91, 0x09, 0x83, 0xa6, 0xc1, 0x10, 0x27, 0xa3, 0xa8, 0x44, 0xa2,
-
  0x2b, 0x33, 0x5c, 0xca, 0xb3, 0x30, 0xe3, 0xc3, 0xef, 0x7c, 0xfe, 0x8a,
-
  0x15, 0xde, 0x46, 0xd0, 0xd2, 0x55, 0x36, 0xa9, 0x2f, 0x06, 0x18, 0x71,
-
  0xa8, 0xd6, 0xb4, 0x4a, 0xaa, 0x35, 0xa3, 0x1d, 0x3c, 0xf3, 0xab, 0x66,
-
  0x8d, 0xd2, 0x70, 0x31, 0x11, 0xb6, 0xdb, 0xd1, 0xda, 0x46, 0x9c, 0x70,
-
  0x8a, 0xc8, 0xbc, 0x24, 0x9b, 0x51, 0x54, 0xef, 0x36, 0xeb, 0x9b, 0x7d,
-
  0x05, 0xd5, 0x4a, 0xe0, 0xfc, 0x4f, 0xa7, 0xd9, 0x07, 0x3f, 0xba, 0x4e,
-
  0xcb, 0x5b, 0x0d, 0xf4, 0xa4, 0xe3, 0x59, 0xdc, 0x78, 0xbf, 0x81, 0x92,
-
  0xc6, 0xc6, 0x5f, 0x85, 0xeb, 0x8e, 0x8b, 0x65, 0xce, 0x6c, 0x47, 0x14,
-
  0x79, 0x02, 0x1c, 0x7e, 0x9f, 0xcd, 0x8a, 0x60, 0x4c, 0x31, 0x9c, 0xfe,
-
  0x8d, 0x39, 0xb7, 0xf0, 0x6a, 0x43, 0xc3, 0xfa, 0xb0, 0x8c, 0xf5, 0x79,
-
  0x22, 0xdf, 0x73, 0xb1, 0xf9, 0x8d, 0x73, 0x7e, 0xe8, 0x07, 0xfb, 0x50,
-
  0xab, 0x39, 0x0c, 0x5b, 0xe6, 0x30, 0x65, 0x9a, 0x37, 0x4f, 0x02, 0x1e,
-
  0xdc, 0x7c, 0xdf, 0x8f, 0x40, 0x69, 0xfb, 0xa1, 0x1f, 0x9d, 0x81, 0x02,
-
  0xb6, 0x45, 0x5a, 0xdb, 0xee, 0xce, 0xde, 0x03, 0x58, 0x65, 0xaa, 0x2a,
-
  0x46, 0xc9, 0xc1, 0xe9, 0x07, 0x2f, 0x2c, 0x9d, 0x7c, 0x9f, 0xbb, 0xef,
-
  0x71, 0xcd, 0xf0, 0xf1, 0x81, 0xb5, 0x9a, 0x63, 0x49, 0x92, 0xbf, 0xf6,
-
  0xa3, 0x7d, 0x36, 0xde, 0xee, 0xfe, 0x10, 0x5c, 0x77, 0x22, 0x4d, 0x22,
-
  0x0f, 0xe2, 0xb3, 0xc5, 0x79, 0x36, 0x8e, 0x8c, 0x25, 0x24, 0xc1, 0x53,
-
  0x7b, 0xae, 0xa2, 0x8c, 0xa1, 0x0f, 0xde, 0x24, 0x2f, 0xc7, 0x22, 0x2f,
-
  0x1c, 0x0f, 0x08, 0xc7, 0xf5, 0xd5, 0xe4, 0xc8, 0x83, 0x2b, 0x18, 0x36,
-
  0x9e, 0x32, 0x76, 0x13, 0x44, 0x40, 0xca, 0x38, 0xd9, 0xce, 0x8d, 0x1e,
-
  0xad, 0x7c, 0x81, 0xbd, 0xcb, 0xb8, 0xc0, 0x57, 0x2f, 0x1d, 0x57, 0x85,
-
  0x63, 0x8b, 0xff, 0x8e, 0xc7, 0x96, 0x86, 0xc5, 0x27, 0xd5, 0x14, 0xb1,
-
  0xe2, 0xc2, 0x6d, 0x56, 0xb8, 0x6d, 0x6b, 0x4e, 0x48, 0xb3, 0x0b, 0xb4,
-
  0x31, 0x4d, 0x14, 0xcc, 0x37, 0x9a, 0x53, 0xb4, 0xe0, 0xb8, 0xcc, 0x16,
-
  0x0b, 0xa9, 0xd1, 0x8e, 0x6b, 0x14, 0x9b, 0x35, 0xe2, 0x5c, 0x91, 0x19,
-
  0x68, 0x31, 0xde, 0x0a, 0x10, 0x4c, 0x22, 0xda, 0x0a, 0x74, 0xc9, 0xdc,
-
  0x21, 0xd9, 0xb5, 0x0d, 0x79, 0x65, 0x94, 0x77, 0x1a, 0x36, 0xf3, 0xe9,
-
  0x91, 0xff, 0xaa, 0x6e, 0x16, 0x6a, 0x46, 0xb1, 0x0b, 0x24, 0xb4, 0x86,
-
  0x0b, 0xa3, 0xf9, 0xe6, 0xce, 0x5d, 0xdf, 0x7c, 0xb5, 0xa6, 0xec, 0x89,
-
  0xaf, 0xf5, 0x03, 0x54, 0x40, 0x42, 0xc7, 0xb5, 0xfd, 0xb4, 0x65, 0xae,
-
  0x99, 0x11, 0x14, 0x6e, 0x56, 0xd5, 0xc1, 0xd4, 0x5d, 0x8c, 0x83, 0x3c,
-
  0x3d, 0x39, 0xdd, 0xdf, 0x12, 0xe9, 0x94, 0x3c, 0x10, 0x52, 0xfa, 0x9b,
-
  0xc2, 0xad, 0xb8, 0xa2, 0xa5, 0x13, 0x6e, 0x28, 0xd8, 0x59, 0x5c, 0x88,
-
  0xcd, 0x37, 0xe2, 0x8e, 0x53, 0x0e, 0x79, 0x44, 0x8b, 0x01, 0xe7, 0xee,
-
  0x60, 0x90, 0xb6, 0xad, 0x1d, 0x93, 0xd2, 0xf5, 0x4b, 0xee, 0x04, 0xcb,
-
  0xd2, 0x49, 0x30, 0xaa, 0x3c, 0xaf, 0x1b, 0x5e, 0x24, 0x15, 0x63, 0xdf,
-
  0x8f, 0x2f, 0x40, 0x0e, 0x88, 0xa9, 0xbc, 0x9b, 0x29, 0xaf, 0x4a, 0x85,
-
  0xd0, 0xb0, 0xb2, 0x87, 0x37, 0xca, 0x88, 0x01, 0x98, 0x42, 0x86, 0x48,
-
  0x29, 0xa9, 0xe6, 0x3c, 0x4b, 0x41, 0xe4, 0x46, 0x50, 0xc0, 0xd3, 0x96,
-
  0x58, 0x84, 0x0d, 0x0c, 0xf7, 0x42, 0x5e, 0x07, 0x33, 0xf3, 0xca, 0xb7,
-
  0x26, 0x8d, 0xda, 0x21, 0x74, 0xc5, 0xe0, 0xda, 0x34, 0xcc, 0x89, 0xe3,
-
  0x64, 0xc9, 0x81, 0x8d, 0xd1, 0xeb, 0x97, 0xc3, 0x33, 0xa7, 0x88, 0x89,
-
  0x77, 0xac, 0x48, 0xcb, 0xcd, 0x6b, 0x53, 0x6e, 0x98, 0x23, 0xe8, 0x1d,
-
  0x74, 0xa1, 0x97, 0x2f, 0x86, 0x67, 0x1e, 0x95, 0x63, 0x21, 0x84, 0x03,
-
  0x20, 0x13, 0x0c, 0x17, 0xe5, 0x45, 0xd0, 0x1c, 0x15, 0xda, 0xc5, 0x88,
-
  0x43, 0x4e, 0x38, 0xb3, 0x84, 0x55, 0xbc, 0xac, 0x74, 0x8b, 0x83, 0xb7,
-
  0x9b, 0x83, 0x41, 0x7e, 0xc5, 0x9e, 0x16, 0x41, 0x61, 0xd7, 0x20, 0xf8,
-
  0x6a, 0x39, 0x8a, 0x75, 0xcd, 0x14, 0x6e, 0xb5, 0xba, 0x9e, 0x8f, 0x0a,
-
  0x8c, 0x24, 0x05, 0x21, 0xed, 0xbd, 0xcf, 0xc6, 0x36, 0x99, 0xb0, 0x7e,
-
  0xe2, 0x78, 0x17, 0xb4, 0xdf, 0x5c, 0x36, 0x02, 0xf6, 0xc6, 0x51, 0x4a,
-
  0x60, 0xe1, 0xe4, 0xd3, 0xc2, 0x67, 0x6f, 0x4d, 0x5c, 0xb8, 0x14, 0x6e,
-
  0x2a, 0x0b, 0xac, 0x9d, 0xc1, 0x9c, 0x73, 0x97, 0x0c, 0x53, 0x5e, 0xd6,
-
  0xc9, 0xf1, 0x71, 0x48, 0xd1, 0x12, 0x5f, 0x05, 0x47, 0x90, 0xbc, 0x5b,
-
  0x66, 0xd8, 0x88, 0x2d, 0xef, 0xf9, 0xc8, 0x92, 0xf3, 0x34, 0xce, 0x26,
-
  0x0a, 0xd9, 0xa7, 0x6e, 0x71, 0xde, 0x45, 0xae, 0xb8, 0x0e, 0x4c, 0x9a,
-
  0xb2, 0x6a, 0xa8, 0xb2, 0x48, 0xd7, 0x4e, 0xb2, 0x0b, 0xb0, 0x81, 0x08,
-
  0xdd, 0x28, 0x99, 0xd8, 0x8c, 0x56, 0x76, 0x4c, 0x42, 0x7e, 0xbc, 0x5f,
-
  0xc5, 0xb5, 0xa0, 0xde, 0xbe, 0x78, 0xf6, 0xd2, 0x2c, 0x96, 0x2c, 0x0e,
-
  0xa5, 0xff, 0x99, 0xa9, 0x62, 0xe1, 0x0d, 0xbd, 0x65, 0x78, 0x4f, 0x3c,
-
  0x90, 0xd8, 0x65, 0x9e, 0xfd, 0x93, 0x00, 0x76, 0x48, 0x83, 0x9c, 0x52,
-
  0xb9, 0x09, 0x60, 0x48, 0x04, 0x8e, 0x4d, 0x57, 0x21, 0x41, 0xef, 0x20,
-
  0xe6, 0xbe, 0xac, 0x83, 0x56, 0xac, 0xe0, 0xb0, 0x8c, 0x60, 0xbd, 0x94,
-
  0x55, 0xde, 0xba, 0x26, 0xd7, 0x0a, 0xb9, 0xe8, 0x3e, 0x2a, 0x1e, 0xd6,
-
  0xb4, 0xbc, 0xae, 0x92, 0x68, 0x87, 0xe4, 0x2b, 0x89, 0x70, 0x3c, 0xba,
-
  0x6b, 0x0f, 0xff, 0x0d, 0x27, 0xf4, 0xcf, 0x25, 0xe2, 0xaf, 0xae, 0x2a,
-
  0x83, 0x49, 0xa0, 0xe5, 0xb3, 0x98, 0x54, 0xbe, 0xa7, 0x20, 0xb4, 0x6d,
-
  0x53, 0xf9, 0x39, 0x4f, 0x0e, 0x47, 0x35, 0x8c, 0xcc, 0x7c, 0x8a, 0x25,
-
  0x26, 0xd1, 0x2a, 0xea, 0xaf, 0x29, 0xa5, 0x6c, 0xdd, 0xe6, 0xf7, 0x6f,
-
  0x4e, 0x5e, 0xc5, 0x67, 0x27, 0x5b, 0x78, 0x1a, 0xa8, 0x69, 0x4a, 0x44,
-
  0x6d, 0xcb, 0x34, 0xf4, 0x56, 0xa5, 0x41, 0x6b, 0x8a, 0xe6, 0x69, 0x7d,
-
  0x36, 0x9b, 0x15, 0x7a, 0xa1, 0x6c, 0xd1, 0x15, 0x1a, 0x9e, 0xbe, 0x35,
-
  0xba, 0xf6, 0xa2, 0x58, 0x6a, 0x2e, 0x65, 0x5c, 0x12, 0x2b, 0x1d, 0x27,
-
  0xa8, 0x1c, 0x6a, 0x88, 0x7f, 0x13, 0xcf, 0x73, 0xb4, 0xac, 0xae, 0x23,
-
  0x29, 0x10, 0x58, 0x31, 0x8e, 0xba, 0x5f, 0x11, 0xd3, 0xc4, 0xa1, 0xf3,
-
  0x9c, 0x90, 0xb2, 0x0b, 0xcc, 0xe5, 0xe5, 0x8c, 0x5d, 0x60, 0x53, 0x49,
-
  0x59, 0x16, 0x57, 0x2a, 0xd2, 0x24, 0x24, 0xcf, 0x2f, 0x71, 0xe8, 0x48,
-
  0x8d, 0xe5, 0x75, 0x77, 0x65, 0x40, 0xe8, 0x0c, 0x2b, 0x43, 0x00, 0xbd,
-
  0xc3, 0x78, 0xbb, 0xca, 0xd2, 0x39, 0x1b, 0xf2, 0xf9, 0x70, 0x8a, 0x9d,
-
  0x41, 0xa0, 0xc8, 0x11, 0xef, 0xef, 0xac, 0x5b, 0x7e, 0xce, 0xad, 0xaf,
-
  0xda, 0xa6, 0x37, 0x5c, 0x8c, 0x98, 0x02, 0xdc, 0xd3, 0x49, 0x38, 0x30,
-
  0xe1, 0x25, 0x5e, 0x6e, 0x4d, 0x54, 0x7d, 0x8e, 0x3a, 0x66, 0x9c, 0x1c,
-
  0xb4, 0xc6, 0x5b, 0xdf, 0x2d, 0xdf, 0xb3, 0x14, 0x1f, 0xf0, 0x67, 0x8f,
-
  0xe9, 0x56, 0x15, 0x08, 0x87, 0xc4, 0x1e, 0x30, 0x10, 0xc1, 0xe0, 0xea,
-
  0x4b, 0x38, 0x18, 0xe8, 0x6f, 0xc4, 0x8d, 0x14, 0xfa, 0x3e, 0x42, 0xc0,
-
  0x49, 0xe2, 0xdf, 0xf8, 0xa9, 0xa7, 0x40, 0xe2, 0x87, 0x7c, 0x49, 0xd5,
-
  0x94, 0x1a, 0xcf, 0x69, 0xd2, 0xb0, 0x66, 0x98, 0x19, 0x3c, 0x2a, 0xa9,
-
  0xec, 0x86, 0x56, 0xbb, 0xc6, 0xa6, 0x6d, 0x45, 0x01, 0xf6, 0x61, 0xb4,
-
  0xd5, 0x0c, 0x7e, 0x0a, 0x8b, 0x57, 0x92, 0x7b, 0x8a, 0xf4, 0x47, 0xca,
-
  0x6e, 0x4e, 0x59, 0x9b, 0x2c, 0xdb, 0xc6, 0x3a, 0x8c, 0x8e, 0x8e, 0x36,
-
  0xf9, 0x69, 0xff, 0x86, 0x99, 0x25, 0x68, 0x24, 0xff, 0x60, 0x73, 0x60,
-
  0x12, 0xb6, 0x2c, 0x50, 0x18, 0xe1, 0x77, 0x49, 0x05, 0x57, 0x49, 0xb3,
-
  0xbd, 0xad, 0x95, 0x29, 0x8f, 0xed, 0xad, 0xba, 0xdf, 0x4a, 0x73, 0xed,
-
  0xd6, 0xef, 0x42, 0xa2, 0x8d, 0xd1, 0xc5, 0x4b, 0xba, 0x5d, 0x0e, 0xcc,
-
  0x9e, 0xaf, 0x45, 0xaf, 0x4b, 0x05, 0xe1, 0x77, 0x88, 0xb5, 0x41, 0x7f,
-
  0x1d, 0x91, 0x9e, 0x0a, 0x3c, 0x2c, 0x37, 0x2f, 0xa7, 0xde, 0x3a, 0x24,
-
  0x26, 0x2c, 0x17, 0xcd, 0x04, 0x04, 0xcb, 0x0f, 0x6b, 0x86, 0x15, 0x89,
-
  0x02, 0xd7, 0x67, 0x02, 0x32, 0x22, 0xba, 0xfd, 0x51, 0x28, 0xd3, 0x4e,
-
  0xa3, 0x4d, 0x2d, 0x5c, 0x68, 0x4a, 0xfa, 0xbc, 0x94, 0xaf, 0x0e, 0x4c,
-
  0x69, 0x45, 0xbc, 0x75, 0x5b, 0xcd, 0xed, 0xff, 0xfc, 0xb3, 0x93, 0x78,
-
  0x89, 0x86, 0xb2, 0xad, 0xae, 0x52, 0xe1, 0x52, 0xed, 0x65, 0x52, 0xb8,
-
  0xc3, 0x0d, 0x43, 0x0c, 0x60, 0xb8, 0x8d, 0x24, 0xcd, 0xa1, 0x47, 0x9b,
-
  0xfd, 0x42, 0xe7, 0x29, 0xdd, 0xca, 0x52, 0x5b, 0xbc, 0x95, 0xc9, 0x88,
-
  0xea, 0x75, 0xfc, 0xc2, 0xaf, 0x37, 0xce, 0x05, 0xb6, 0x35, 0x60, 0xce,
-
  0x40, 0xda, 0x36, 0x17, 0xcb, 0xc6, 0xe9, 0x81, 0xae, 0x8b, 0xe0, 0x28,
-
  0x24, 0xab, 0x24, 0x5e, 0xb0, 0x6e, 0xf3, 0x84, 0x54, 0x52, 0x18, 0x9d,
-
  0xe6, 0x45, 0x37, 0x67, 0xc5, 0xc1, 0xb8, 0x84, 0xd5, 0x37, 0x2e, 0x53,
-
  0xb1, 0x49, 0x33, 0x14, 0x74, 0xb0, 0xfa, 0x56, 0x86, 0xdf, 0x73, 0x6c,
-
  0x34, 0x7b, 0x96, 0x12, 0x87, 0x41, 0xd8, 0x7c, 0xad, 0xd6, 0x9e, 0x71,
-
  0x6d, 0x8e, 0xac, 0x0e, 0xb1, 0x61, 0x29, 0x58, 0x4b, 0x67, 0x81, 0x42,
-
  0x27, 0xeb, 0xb4, 0xc4, 0x68, 0x58, 0x23, 0x13, 0xfd, 0x59, 0xa9, 0x76,
-
  0x60, 0x69, 0x92, 0x88, 0xcf, 0x2b, 0xb0, 0xdc, 0x24, 0x7a, 0x8a, 0xf5,
-
  0xbd, 0x40, 0xc8, 0x88, 0x22, 0x42, 0x7f, 0xcf, 0x39, 0xeb, 0x04, 0x36,
-
  0x1f, 0x85, 0x75, 0x36, 0xaa, 0x80, 0x30, 0x47, 0xeb, 0x8c, 0x8f, 0xd4,
-
  0x6e, 0x99, 0x14, 0x26, 0x69, 0x93, 0xa7, 0x13, 0x63, 0x3b, 0x2c, 0x9e,
-
  0x05, 0x7b, 0xe5, 0xe9, 0xb1, 0xce, 0x22, 0x37, 0x36, 0x92, 0x8c, 0x5b,
-
  0xa8, 0xdc, 0x35, 0x23, 0x41, 0x70, 0xda, 0x48, 0x9c, 0x95, 0x44, 0x35,
-
  0x0c, 0x81, 0x26, 0xec, 0x9c, 0xa0, 0xf5, 0xd7, 0x14, 0x8f, 0x71, 0x6b,
-
  0x94, 0xf0, 0xfb, 0x72, 0x18, 0xb0, 0xd4, 0xbc, 0xb4, 0x2c, 0x29, 0xc4,
-
  0x4c, 0xf2, 0x9e, 0x62, 0x57, 0x45, 0xfb, 0x3b, 0xbb, 0x7d, 0xf8, 0x67,
-
  0x8f, 0xc2, 0x6d, 0xf7, 0x77, 0xf6, 0x4d, 0xb1, 0xe1, 0xc6, 0x31, 0x91,
-
  0x52, 0x17, 0x68, 0xb6, 0xd6, 0x5a, 0x2c, 0xfb, 0x1f, 0x3e, 0x04, 0x8a,
-
  0x5c, 0x37, 0x6b, 0x17, 0xc4, 0x2b, 0x86, 0x6a, 0x17, 0x92, 0x62, 0xd8,
-
  0x96, 0x9e, 0xd7, 0x53, 0x71, 0xbe, 0x05, 0x30, 0x24, 0x58, 0x40, 0x88,
-
  0x4a, 0x45, 0x61, 0xc9, 0x33, 0xa5, 0x3c, 0xa4, 0x28, 0xd9, 0x70, 0x37,
-
  0x8e, 0x9c, 0x36, 0x11, 0x57, 0x25, 0x11, 0x94, 0xf2, 0xfd, 0x9d, 0x0f,
-
  0x5d, 0xa0, 0xc1, 0xb8, 0xcb, 0x0a, 0x21, 0x4b, 0x77, 0x28, 0x48, 0x19,
-
  0xc2, 0x6b, 0xb4, 0x90, 0xc6, 0x54, 0x82, 0xa7, 0x0f, 0x30, 0xc9, 0x0a,
-
  0xe8, 0x1b, 0x17, 0xd1, 0x3b, 0xcc, 0xfc, 0x85, 0x42, 0xf8, 0xf0, 0x5f,
-
  0xfb, 0x41, 0xbb, 0x98, 0x20, 0xa2, 0x98, 0x02, 0x3e, 0x28, 0x95, 0x5a,
-
  0xb1, 0x34, 0xd2, 0x08, 0x59, 0xe3, 0x77, 0x57, 0x0c, 0xa9, 0x80, 0x7b,
-
  0x9e, 0xed, 0x9e, 0xd6, 0x0e, 0x5a, 0xa5, 0x33, 0x29, 0x6d, 0xbd, 0xac,
-
  0x56, 0xc3, 0x4b, 0xbe, 0xec, 0xbb, 0x72, 0xc8, 0x6a, 0x58, 0xc9, 0xbb,
-
  0x5f, 0x6b, 0x6b, 0x5e, 0x67, 0x2f, 0xd7, 0x35, 0xce, 0x50, 0x3e, 0x87,
-
  0x22, 0x5b, 0x24, 0xb3, 0x3a, 0xae, 0x2e, 0xc7, 0x4d, 0x39, 0x0b, 0xfd,
-
  0xeb, 0xba, 0x8f, 0x4f, 0xe5, 0x17, 0xcf, 0x45, 0x48, 0x35, 0x22, 0x5f,
-
  0x3e, 0x3b, 0x64, 0xab, 0x8c, 0x94, 0xba, 0x74, 0xcd, 0xee, 0xd4, 0x8e,
-
  0xa1, 0x07, 0x6b, 0xc0, 0x9e, 0x2c, 0x03, 0xa1, 0x57, 0xaa, 0x7e, 0x36,
-
  0x84, 0x8c, 0x70, 0x41, 0x2c, 0x42, 0xc2, 0xc6, 0x96, 0x9a, 0x1d, 0x38,
-
  0xb9, 0x66, 0xa6, 0x84, 0xac, 0xd1, 0x83, 0xc3, 0xc1, 0x6d, 0x5c, 0x5c,
-
  0x2c, 0xb9, 0x36, 0xb1, 0x0a, 0x3c, 0xb4, 0xf6, 0x28, 0xa2, 0xc3, 0x3a,
-
  0x32, 0xde, 0x67, 0xbe, 0x18, 0xa8, 0x42, 0x66, 0x9b, 0x9e, 0x69, 0x1d,
-
  0x38, 0x57, 0x17, 0xeb, 0x66, 0xaa, 0x3f, 0xac, 0x31, 0x4c, 0x36, 0x1c,
-
  0x93, 0x5d, 0xd6, 0x4d, 0xc3, 0xa4, 0xec, 0x34, 0x0f, 0x53, 0xdb, 0x9d,
-
  0x1e, 0xd7, 0x23, 0x22, 0x15, 0x1f, 0xe3, 0x2c, 0xa2, 0xbd, 0xfd, 0x27,
-
  0x0f, 0xfa, 0x5c, 0xa9, 0x3b, 0x7a, 0xb8, 0xf3, 0xa5, 0x82, 0x10, 0xbf,
-
  0x38, 0x3e, 0xfb, 0x1e, 0x96, 0xb8, 0x84, 0x43, 0xdc, 0xf6, 0x63, 0xe1,
-
  0x67, 0x71, 0x9a, 0x94, 0x17, 0x49, 0x59, 0xc7, 0xe8, 0x15, 0xab, 0xe6,
-
  0xf5, 0x22, 0xde, 0xd9, 0xe9, 0x4c, 0x5f, 0x6b, 0x12, 0xc2, 0xe7, 0xaa,
-
  0x40, 0xd1, 0x1c, 0xc5, 0xc6, 0xe1, 0xdb, 0xb3, 0xe7, 0x5f, 0xff, 0x69,
-
  0x23, 0xca, 0xe6, 0xc9, 0x62, 0x7d, 0x09, 0xad, 0x81, 0x1a, 0xd8, 0x82,
-
  0x84, 0x47, 0x6b, 0x42, 0x8c, 0x5b, 0x1f, 0x3d, 0x95, 0x3c, 0x28, 0xbf,
-
  0xd6, 0x49, 0x83, 0xc8, 0x4d, 0xe6, 0x85, 0x3c, 0xde, 0x08, 0x4d, 0x36,
-
  0xe8, 0x7b, 0x48, 0xf7, 0x42, 0x98, 0xc1, 0x3c, 0x83, 0xa6, 0x98, 0x6e,
-
  0x8b, 0xd5, 0x6f, 0xb2, 0x01, 0xa3, 0xbe, 0xde, 0xa2, 0xbb, 0x16, 0xfd,
-
  0x2b, 0xa3, 0x39, 0x7a, 0x2c, 0x27, 0x6a, 0xbc, 0x08, 0x51, 0x33, 0xc6,
-
  0x77, 0xa4, 0x7c, 0x87, 0xcc, 0x92, 0x6b, 0xf6, 0x24, 0x26, 0x39, 0xdf,
-
  0x47, 0x92, 0x0e, 0x14, 0xdc, 0x6b, 0x3b, 0xf9, 0xcf, 0x99, 0xaa, 0x68,
-
  0x47, 0x81, 0xbb, 0xf5, 0xad, 0xb3, 0xb9, 0x20, 0x4b, 0x9c, 0x71, 0xc1,
-
  0x3e, 0xa4, 0xda, 0xdb, 0x97, 0x15, 0xa1, 0x16, 0xcb, 0xf1, 0x42, 0x13,
-
  0x7a, 0xe9, 0x6f, 0x94, 0x1a, 0xbd, 0x9d, 0x27, 0x51, 0xf2, 0x86, 0x9d,
-
  0x37, 0x5b, 0xef, 0xed, 0xbd, 0x15, 0xdb, 0xd9, 0x71, 0xc6, 0x43, 0xe5,
-
  0xe0, 0x84, 0x73, 0x2f, 0x88, 0x92, 0x38, 0x49, 0x73, 0x14, 0xde, 0x66,
-
  0xd0, 0x78, 0x3e, 0xfb, 0x66, 0xd0, 0x28, 0xda, 0x9b, 0x71, 0x9f, 0x7b,
-
  0x81, 0xbb, 0xed, 0xed, 0x05, 0x3e, 0x14, 0x93, 0xae, 0x4e, 0x78, 0x5e,
-
  0xe1, 0xcd, 0xf8, 0xc9, 0x2d, 0x9d, 0x4e, 0x39, 0x3a, 0x68, 0xc9, 0xd3,
-
  0x2b, 0x19, 0xc4, 0xc7, 0x6c, 0x81, 0x2e, 0x67, 0x58, 0x2a, 0x8b, 0xab,
-
  0x1b, 0x94, 0x07, 0xc8, 0x30, 0x30, 0x42, 0x56, 0x4d, 0x7c, 0x7b, 0x5c,
-
  0xe4, 0x68, 0x96, 0x16, 0xa5, 0x60, 0x8a, 0x46, 0x1f, 0xe4, 0xbd, 0xb5,
-
  0x5b, 0x76, 0x37, 0x72, 0xda, 0xf7, 0xc4, 0x6c, 0xb2, 0xa3, 0xbf, 0x39,
-
  0x3a, 0x3d, 0x8b, 0xce, 0x4e, 0x5c, 0xdb, 0x2f, 0xd7, 0xff, 0x5c, 0x85,
-
  0x96, 0x49, 0x92, 0x14, 0x0f, 0x14, 0x76, 0xed, 0x22, 0xb9, 0xcc, 0x0a,
-
  0x53, 0x35, 0x8f, 0x45, 0x36, 0xc2, 0xb3, 0xd0, 0x74, 0xbd, 0xe6, 0x6a,
-
  0x05, 0x6a, 0x32, 0x30, 0x1a, 0x5a, 0x2b, 0x40, 0x81, 0xb5, 0x38, 0x32,
-
  0x04, 0xb4, 0x74, 0x39, 0x0e, 0xe6, 0x8a, 0x78, 0x78, 0x9e, 0x1b, 0x17,
-
  0xa1, 0xe1, 0x04, 0xa9, 0xc4, 0x24, 0xb5, 0x71, 0xa8, 0x3c, 0x8e, 0x05,
-
  0xa8, 0x2f, 0x9b, 0x38, 0xab, 0x12, 0xb4, 0x51, 0x51, 0xa9, 0x35, 0xfb,
-
  0x4c, 0xa4, 0x78, 0xa2, 0x11, 0x2f, 0x17, 0xae, 0x97, 0xda, 0xb8, 0x24,
-
  0x2a, 0x0e, 0x5d, 0xeb, 0xb3, 0xe4, 0xdc, 0x37, 0x59, 0xb4, 0x42, 0x30,
-
  0x5d, 0x6c, 0x37, 0xde, 0x4b, 0x1c, 0x9e, 0xbf, 0x9f, 0x7c, 0x4b, 0xfa,
-
  0x66, 0x5e, 0xda, 0x19, 0x8a, 0xf2, 0xc0, 0xb9, 0x53, 0x98, 0x7b, 0x86,
-
  0xe5, 0x77, 0x88, 0xfe, 0xc5, 0xd1, 0x41, 0x67, 0xad, 0xb5, 0xaf, 0x2b,
-
  0xcd, 0x20, 0x21, 0x5a, 0xbe, 0xc1, 0x14, 0xe2, 0x25, 0x1b, 0xdc, 0x98,
-
  0xc5, 0x11, 0xea, 0xe4, 0x4e, 0x47, 0xbd, 0x3d, 0x50, 0xf7, 0xc0, 0x82,
-
  0x60, 0x5d, 0x37, 0x38, 0x80, 0x7f, 0xf2, 0x6f, 0x73, 0xf0, 0x9b, 0xe8,
-
  0x69, 0x5f, 0x06, 0xee, 0x5f, 0xea, 0x6d, 0xdd, 0xfb, 0x97, 0x9d, 0x33,
-
  0xf2, 0x52, 0x9f, 0x3d, 0x05, 0x64, 0xd5, 0x43, 0x51, 0x0b, 0xbe, 0xe2,
-
  0x90, 0xa5, 0x60, 0xf5, 0x22, 0x58, 0xdb, 0x37, 0xe9, 0x22, 0x65, 0x08,
-
  0x1b, 0x37, 0x4d, 0xc4, 0xcd, 0x8c, 0x53, 0x0f, 0x45, 0x93, 0xbf, 0x78,
-
  0xfa, 0x75, 0x17, 0xe5, 0x13, 0xa3, 0x12, 0xaf, 0x0f, 0x57, 0x07, 0x32,
-
  0xb7, 0x46, 0x23, 0x47, 0x75, 0xf3, 0xc7, 0x37, 0xdf, 0xff, 0x5d, 0x09,
-
  0x6b, 0xab, 0xaf, 0x7c, 0xa6, 0xa3, 0x9f, 0x66, 0xf6, 0xa8, 0x0d, 0x15,
-
  0x92, 0x82, 0xe1, 0x8d, 0x45, 0xb0, 0x7f, 0xf8, 0xc8, 0x77, 0x93, 0x82,
-
  0xb2, 0x5d, 0x36, 0x31, 0x7c, 0x14, 0x0b, 0x93, 0x89, 0xc5, 0x79, 0x7f,
-
  0xf0, 0x90, 0xfc, 0x52, 0xdf, 0x1f, 0x3d, 0xdc, 0xdf, 0xdb, 0xdd, 0x1a,
-
  0x34, 0x4a, 0xa3, 0xa3, 0xe8, 0xb4, 0x75, 0xe3, 0x34, 0x1b, 0x6b, 0x8f,
-
  0x41, 0x9e, 0x78, 0xf6, 0x36, 0x8f, 0x7f, 0x3e, 0x7d, 0xdd, 0x9a, 0x24,
-
  0x71, 0x04, 0x2f, 0x40, 0x78, 0xc5, 0x1c, 0xad, 0x62, 0xdc, 0xe8, 0x82,
-
  0x31, 0x32, 0xa4, 0x5c, 0x75, 0x3b, 0x04, 0xf7, 0xfb, 0x32, 0x43, 0x6b,
-
  0x4e, 0x0f, 0xd7, 0xa3, 0xf7, 0xb2, 0xc8, 0x27, 0x45, 0x1e, 0x9f, 0x4c,
-
  0x61, 0xf1, 0x53, 0x2c, 0xaa, 0x7d, 0xe3, 0xec, 0x5c, 0xfa, 0xfc, 0x74,
-
  0x55, 0x8f, 0x6c, 0x1f, 0x8d, 0x3b, 0x37, 0x47, 0x24, 0xcf, 0x3b, 0x9d,
-
  0xb8, 0x20, 0x53, 0x88, 0x5f, 0x71, 0xc2, 0x44, 0xee, 0x67, 0x23, 0xbd,
-
  0xa2, 0x0f, 0x07, 0xc8, 0x70, 0x4c, 0x75, 0xce, 0x8b, 0xa5, 0x54, 0x05,
-
  0x8d, 0xea, 0x50, 0x98, 0xd9, 0x8d, 0x53, 0xa2, 0x6e, 0x6e, 0x15, 0xe2,
-
  0xd5, 0x77, 0x02, 0xc6, 0x58, 0x46, 0x00, 0xae, 0xd8, 0xc0, 0x9d, 0x20,
-
  0x83, 0x12, 0x39, 0x89, 0xd1, 0x3f, 0xf9, 0x94, 0x22, 0x77, 0x42, 0xd1,
-
  0xab, 0x6c, 0xd4, 0x79, 0xf5, 0xb7, 0xb3, 0xb3, 0xad, 0x60, 0x2c, 0x18,
-
  0xbd, 0xbe, 0xa9, 0xc1, 0x4c, 0x5b, 0x2c, 0x61, 0x73, 0x08, 0x60, 0xe1,
-
  0x1d, 0x10, 0x0e, 0xfb, 0x1a, 0x58, 0x93, 0x2d, 0x3d, 0x68, 0x4d, 0x8e,
-
  0x59, 0x13, 0x0b, 0x91, 0x01, 0xe7, 0x51, 0x1a, 0xeb, 0x07, 0x8c, 0x84,
-
  0x26, 0x6c, 0xc7, 0x98, 0xf7, 0x38, 0x63, 0x3c, 0xa1, 0x72, 0xce, 0xd6,
-
  0x30, 0x44, 0x37, 0x12, 0xb1, 0xf9, 0xf4, 0x03, 0x21, 0x6e, 0x4d, 0xd2,
-
  0xe8, 0x91, 0x6f, 0x1c, 0x39, 0xe4, 0xa9, 0x88, 0x25, 0xa8, 0x74, 0xd5,
-
  0x59, 0xd6, 0x35, 0x85, 0x60, 0xfa, 0xad, 0xe0, 0x2b, 0x32, 0xb0, 0x6e,
-
  0xfc, 0x75, 0x23, 0x68, 0x3e, 0xe3, 0x68, 0x2c, 0x71, 0x8f, 0xb4, 0xe2,
-
  0xb1, 0xdc, 0xf8, 0x2b, 0x6e, 0xe4, 0xd5, 0x46, 0xd4, 0x15, 0x5d, 0x75,
-
  0x9b, 0x80, 0x2c, 0x37, 0x04, 0xcb, 0x06, 0x4b, 0x71, 0xb4, 0x54, 0xdb,
-
  0x38, 0x6d, 0x62, 0xa7, 0x1a, 0x07, 0xf6, 0xe1, 0x93, 0xc0, 0x81, 0x7d,
-
  0x7d, 0x72, 0x76, 0x7c, 0x20, 0x42, 0x15, 0xed, 0x17, 0x7b, 0xb4, 0xa5,
-
  0xe0, 0x3b, 0xe7, 0x71, 0x12, 0x02, 0x96, 0xd4, 0x4a, 0xc1, 0x1c, 0x34,
-
  0xd9, 0xe9, 0x7e, 0x80, 0x4d, 0x12, 0xa8, 0x26, 0x72, 0x16, 0x8e, 0x50,
-
  0xa8, 0x3b, 0x73, 0xbb, 0xa8, 0x80, 0x81, 0x58, 0x16, 0x99, 0xa0, 0x70,
-
  0xc3, 0xfd, 0x7b, 0x1d, 0xc3, 0xc7, 0xd0, 0xba, 0xbc, 0x5c, 0x88, 0xc6,
-
  0xe6, 0x91, 0x10, 0x6b, 0x12, 0x64, 0x86, 0x1d, 0x18, 0xcd, 0x80, 0xa9,
-
  0x3f, 0x0e, 0x61, 0x60, 0xae, 0x1f, 0xe1, 0x79, 0x77, 0xd5, 0xc0, 0x39,
-
  0x84, 0x9d, 0x31, 0x49, 0xdd, 0xec, 0xc9, 0x46, 0x17, 0xb5, 0x8f, 0xb6,
-
  0xd8, 0x8a, 0xd1, 0xa1, 0xdc, 0x81, 0x90, 0x81, 0x1e, 0x65, 0x3d, 0xc5,
-
  0x36, 0xe9, 0x4f, 0x2d, 0xc6, 0x6a, 0x0a, 0x12, 0x6b, 0xea, 0x40, 0xf1,
-
  0xbd, 0xe2, 0x97, 0xbe, 0xf5, 0xd1, 0x1a, 0xf2, 0xd0, 0xa6, 0xcc, 0xb6,
-
  0x7f, 0x7a, 0x17, 0x13, 0xf9, 0xe9, 0xf6, 0x61, 0xb3, 0x34, 0x8a, 0x80,
-
  0xd6, 0x38, 0x8b, 0x7e, 0x5c, 0xe0, 0x69, 0xd7, 0x9e, 0x6d, 0x54, 0x6c,
-
  0xe1, 0xae, 0xba, 0x21, 0x0b, 0x4f, 0x86, 0xf4, 0x8c, 0xcb, 0x8f, 0x53,
-
  0x07, 0x0f, 0x77, 0x9c, 0x17, 0x08, 0x65, 0xae, 0xee, 0x2e, 0x0b, 0x4f,
-
  0x99, 0xdf, 0xbb, 0x26, 0x4c, 0x21, 0xa3, 0x3a, 0xa6, 0x1c, 0x40, 0xda,
-
  0xe1, 0x08, 0x76, 0x16, 0xf2, 0xf3, 0x39, 0x82, 0x9d, 0x41, 0xec, 0xbb,
-
  0x8b, 0xbd, 0x16, 0xa5, 0x34, 0xab, 0xa3, 0x5b, 0x5a, 0x69, 0x64, 0xfc,
-
  0x45, 0x4f, 0xa7, 0x70, 0x4b, 0x08, 0x58, 0x43, 0x47, 0x0e, 0xf0, 0x2b,
-
  0x8d, 0x01, 0xa6, 0xf4, 0xc7, 0x5c, 0x1f, 0x63, 0xb5, 0x1d, 0xbd, 0xa7,
-
  0xec, 0x19, 0x26, 0x3f, 0x6c, 0xa3, 0x44, 0x25, 0x07, 0x25, 0x86, 0x71,
-
  0xbd, 0x85, 0x6c, 0x14, 0x73, 0x57, 0xc8, 0x06, 0x89, 0x84, 0x3c, 0xb0,
-
  0x23, 0x84, 0x35, 0x8c, 0x7e, 0x2b, 0x46, 0xe2, 0xa7, 0x42, 0x05, 0x0e,
-
  0xbf, 0xf4, 0xc3, 0x8b, 0x41, 0xc8, 0x81, 0x65, 0x9a, 0x2c, 0x39, 0x64,
-
  0x00, 0x07, 0x62, 0x13, 0x60, 0x4b, 0x8e, 0x59, 0x8a, 0xce, 0x0b, 0xd2,
-
  0x73, 0xc9, 0x9d, 0xa5, 0xa5, 0xf5, 0x50, 0x58, 0xd9, 0x1b, 0xec, 0xf4,
-
  0x43, 0xc4, 0x63, 0xea, 0x2e, 0x10, 0x78, 0x4a, 0x15, 0x69, 0xbd, 0x66,
-
  0xda, 0xe7, 0xca, 0x22, 0x71, 0x09, 0xfc, 0x09, 0x2e, 0x4c, 0x21, 0x6e,
-
  0xf2, 0xf6, 0x05, 0x98, 0x8e, 0x4b, 0x32, 0x3e, 0x66, 0xd4, 0xda, 0x12,
-
  0x16, 0xfb, 0x5a, 0xc5, 0x4c, 0x2b, 0x93, 0x69, 0x03, 0x30, 0x30, 0x7a,
-
  0x9a, 0x84, 0x21, 0xec, 0xd4, 0x8f, 0x46, 0x9b, 0x51, 0x8c, 0x67, 0x16,
-
  0x04, 0xd4, 0x36, 0x11, 0xa5, 0x5c, 0xb6, 0x95, 0xc2, 0xb1, 0xae, 0xbd,
-
  0x90, 0xd7, 0x4d, 0xb4, 0x63, 0xc3, 0x17, 0x5b, 0x36, 0x21, 0x4b, 0x78,
-
  0x82, 0x17, 0x92, 0x41, 0x68, 0x1f, 0x4b, 0x74, 0x9b, 0x71, 0x29, 0x19,
-
  0xa4, 0x75, 0xda, 0x66, 0xfa, 0xaa, 0x89, 0x11, 0x58, 0x49, 0xf4, 0xd7,
-
  0xc4, 0x78, 0xc1, 0x02, 0x01, 0xf7, 0xd2, 0xb5, 0x25, 0x3f, 0xd8, 0x33,
-
  0xeb, 0x2b, 0xa3, 0xef, 0xa2, 0x66, 0x64, 0x63, 0x53, 0xbf, 0x97, 0xb2,
-
  0xd9, 0xcc, 0x85, 0x4d, 0xd2, 0xb9, 0x39, 0xa3, 0x8a, 0x15, 0x37, 0x81,
-
  0x6b, 0x6a, 0x73, 0xb0, 0x85, 0x0b, 0x2d, 0xef, 0x78, 0x46, 0x24, 0xca,
-
  0x51, 0x04, 0x02, 0x89, 0xe9, 0x4e, 0x63, 0x9b, 0x3b, 0x06, 0xce, 0x28,
-
  0x24, 0xad, 0x5e, 0x45, 0x18, 0x19, 0x4d, 0x21, 0x27, 0x74, 0x94, 0x25,
-
  0x5e, 0xd2, 0x8b, 0xef, 0x15, 0x1b, 0xa1, 0x34, 0x1a, 0x66, 0x2d, 0xcd,
-
  0x73, 0xf7, 0xa9, 0x4d, 0xc2, 0xd5, 0x2a, 0xde, 0x42, 0x23, 0xd8, 0x5d,
-
  0x27, 0xa6, 0xd5, 0xbc, 0xb5, 0x37, 0xf8, 0x72, 0xdd, 0xa2, 0x3b, 0x12,
-
  0x8b, 0x13, 0x2b, 0x95, 0xb3, 0x74, 0xda, 0x24, 0x84, 0xc6, 0x5d, 0x96,
-
  0xd6, 0x09, 0x9e, 0xdb, 0x55, 0x75, 0x44, 0x28, 0x61, 0x8f, 0x21, 0x63,
-
  0x38, 0xb0, 0xaf, 0x05, 0x98, 0xa7, 0x6d, 0x44, 0x26, 0x24, 0xa9, 0xcd,
-
  0x86, 0x5e, 0x99, 0x27, 0xd4, 0xd9, 0x60, 0xd0, 0x4f, 0x4d, 0x71, 0xcd,
-
  0x4c, 0xbc, 0xab, 0x0a, 0xb6, 0xfd, 0x18, 0x84, 0x25, 0x81, 0x08, 0xf7,
-
  0x34, 0x4b, 0x0e, 0x47, 0xc1, 0xe3, 0x8b, 0xae, 0x8a, 0xb0, 0x6d, 0x52,
-
  0xbb, 0xfc, 0x4c, 0xf9, 0x24, 0xa6, 0x7f, 0x92, 0xad, 0xd6, 0xda, 0xc4,
-
  0xff, 0x42, 0xe2, 0x45, 0xf2, 0x9e, 0xcd, 0xd2, 0x99, 0xbb, 0x59, 0xa6,
-
  0x76, 0x57, 0x58, 0xe2, 0x38, 0x96, 0x02, 0xd2, 0xaf, 0x4d, 0x89, 0xaf,
-
  0xcd, 0xe1, 0xe9, 0xeb, 0xe3, 0x1f, 0x4e, 0xb6, 0x6e, 0xf2, 0x57, 0x35,
-
  0xb1, 0xc6, 0x4d, 0x8a, 0x55, 0xa2, 0x99, 0xb7, 0x6e, 0x15, 0xf1, 0x1f,
-
  0x86, 0xc3, 0xf8, 0xf0, 0xf4, 0x05, 0xe5, 0x5f, 0x0e, 0xe1, 0x27, 0xec,
-
  0x68, 0x7b, 0x7f, 0xa8, 0x32, 0x03, 0x97, 0x1c, 0xf8, 0x51, 0xb4, 0x26,
-
  0x3a, 0xe7, 0xec, 0x63, 0xc0, 0x44, 0xaf, 0x8c, 0xb9, 0x67, 0xa9, 0x80,
-
  0xa6, 0xa6, 0xa8, 0x1f, 0x35, 0xdf, 0x56, 0x1d, 0x4e, 0x5f, 0x6c, 0x53,
-
  0x57, 0xd8, 0x25, 0x4d, 0xa8, 0x03, 0x1c, 0xd5, 0x03, 0x58, 0xed, 0x13,
-
  0x8b, 0xa6, 0x64, 0x3f, 0x5a, 0x5a, 0x4d, 0xb0, 0xc6, 0xd2, 0x06, 0x18,
-
  0x7e, 0x65, 0x1c, 0x2e, 0xe1, 0xbc, 0x51, 0xf4, 0x49, 0x20, 0xa0, 0x45,
-
  0x52, 0x33, 0x03, 0x6e, 0xf9, 0x40, 0x48, 0xd5, 0x81, 0x26, 0x17, 0x58,
-
  0x98, 0x65, 0xc0, 0x90, 0x68, 0xcc, 0xb4, 0xda, 0x99, 0x7b, 0x31, 0xdc,
-
  0x13, 0x07, 0x1b, 0x7c, 0x11, 0xa7, 0x39, 0xd5, 0x0c, 0x23, 0x3d, 0xa5,
-
  0x69, 0x00, 0x21, 0xcb, 0xa5, 0x86, 0xf6, 0xb0, 0x41, 0xef, 0x82, 0x06,
-
  0xe9, 0x49, 0x84, 0xf4, 0x8e, 0xde, 0x9b, 0x65, 0xca, 0xaa, 0xc2, 0x58,
-
  0xf0, 0xde, 0xba, 0xb2, 0x01, 0x43, 0xd0, 0x53, 0x6d, 0x5b, 0x3d, 0x3b,
-
  0x0d, 0xa5, 0x90, 0x77, 0xc9, 0xd1, 0xce, 0x94, 0x53, 0x70, 0x9b, 0x6c,
-
  0x40, 0xd7, 0xa4, 0x68, 0xcb, 0xcc, 0xdd, 0x3f, 0x62, 0x9e, 0x6d, 0x1b,
-
  0xd6, 0xf5, 0x60, 0x4d, 0x06, 0x39, 0xc2, 0x20, 0x31, 0xdc, 0xf6, 0xbc,
-
  0x9e, 0xd1, 0x2d, 0x01, 0x22, 0x32, 0x79, 0x72, 0xc4, 0xb7, 0x4f, 0x38,
-
  0xab, 0xa6, 0x87, 0xe6, 0xe9, 0xab, 0xcb, 0x31, 0xa9, 0x13, 0x9c, 0x1e,
-
  0x18, 0x82, 0x55, 0x3d, 0x6b, 0x57, 0xc1, 0xd6, 0x12, 0x1b, 0x28, 0x1b,
-
  0xe7, 0x7d, 0x6d, 0xa5, 0x8f, 0x78, 0x49, 0x1c, 0x1c, 0x23, 0x62, 0x9d,
-
  0x50, 0x66, 0xc0, 0xf3, 0x86, 0xc0, 0xae, 0xd1, 0x66, 0x32, 0xaa, 0x8a,
-
  0xd9, 0xb2, 0x26, 0x2b, 0x19, 0xba, 0xcc, 0x10, 0x66, 0x65, 0x4b, 0xc3,
-
  0x7b, 0xb0, 0x58, 0x25, 0xb4, 0xaa, 0x58, 0x6c, 0x8c, 0x74, 0x1d, 0xf0,
-
  0x20, 0x88, 0x91, 0x8a, 0x72, 0x61, 0x35, 0xe4, 0x82, 0xe3, 0x87, 0x84,
-
  0x97, 0xe3, 0x66, 0x73, 0x53, 0xd4, 0xd2, 0x42, 0x2a, 0xab, 0x77, 0x70,
-
  0x8d, 0x17, 0x1a, 0xac, 0x38, 0xc2, 0x33, 0x05, 0xda, 0x84, 0xae, 0x11,
-
  0xcf, 0x3f, 0xa1, 0xe8, 0x6f, 0x23, 0x78, 0x75, 0xe8, 0x00, 0xce, 0xaa,
-
  0x7e, 0x3e, 0x1d, 0xc0, 0x19, 0x04, 0x4f, 0x7f, 0x2d, 0x9a, 0x72, 0xf7,
-
  0xd5, 0xb2, 0x14, 0x26, 0xa8, 0xbf, 0x32, 0x2a, 0x50, 0x3e, 0xcd, 0xce,
-
  0x07, 0xd1, 0x0d, 0xa5, 0xe9, 0x3a, 0x8a, 0x32, 0xd9, 0xe6, 0x7d, 0x6a,
-
  0xd4, 0x95, 0xf6, 0x0a, 0x5a, 0x33, 0xd5, 0x71, 0x5d, 0x3b, 0x77, 0x7c,
-
  0x2c, 0x4d, 0x87, 0x10, 0xa8, 0x07, 0x3c, 0xf3, 0x65, 0xc0, 0x63, 0x6b,
-
  0xf6, 0x53, 0xf1, 0x33, 0xd1, 0x6c, 0x98, 0x50, 0xaa, 0x87, 0x88, 0xd7,
-
  0x4e, 0x1f, 0x06, 0xf6, 0xa5, 0x48, 0xab, 0x1b, 0x58, 0x44, 0x83, 0x56,
-
  0xc2, 0x7c, 0xe2, 0xce, 0xf1, 0xe8, 0xcd, 0xd6, 0xef, 0x46, 0x10, 0x66,
-
  0x6c, 0x6b, 0x95, 0x0d, 0x76, 0xc9, 0xe9, 0x86, 0xf2, 0xcd, 0xce, 0x1e,
-
  0x7b, 0x3c, 0xbe, 0xbd, 0xe3, 0x76, 0x85, 0x3d, 0x95, 0xd1, 0x22, 0xf8,
-
  0x8f, 0x25, 0x85, 0x4e, 0x36, 0x33, 0xda, 0x7c, 0x27, 0xbf, 0x20, 0x3b,
-
  0xfa, 0x29, 0xcb, 0x41, 0x2d, 0xab, 0xb6, 0x94, 0x4f, 0x64, 0x79, 0x74,
-
  0x6b, 0xb8, 0x74, 0x14, 0xc4, 0x38, 0xd0, 0xc3, 0xbb, 0xaa, 0x6c, 0x26,
-
  0x52, 0x7d, 0xbd, 0xc8, 0xfc, 0x68, 0x3e, 0xbd, 0x93, 0xa8, 0x0d, 0x34,
-
  0x79, 0xc2, 0x58, 0xde, 0xe6, 0xd9, 0x07, 0x1b, 0x62, 0x69, 0x2a, 0xd6,
-
  0xbb, 0x3e, 0x32, 0x51, 0xac, 0x02, 0xa3, 0x8b, 0xbc, 0xc0, 0x17, 0x5c,
-
  0x7c, 0x9a, 0xe8, 0xe6, 0xc3, 0x2d, 0x1a, 0xdb, 0xb4, 0x5e, 0x6c, 0xee,
-
  0x6e, 0x51, 0x8f, 0x02, 0x73, 0x2f, 0x11, 0x9e, 0x21, 0xf0, 0x4a, 0x0e,
-
  0x6f, 0x19, 0x44, 0x47, 0xa6, 0x6f, 0x0a, 0x3d, 0x2b, 0xe6, 0x14, 0x6e,
-
  0xcc, 0x36, 0x32, 0xe0, 0xa8, 0xf4, 0x2c, 0x65, 0x35, 0x71, 0xa6, 0x2b,
-
  0x66, 0xcc, 0x86, 0x22, 0x25, 0xb8, 0x6c, 0x00, 0x32, 0x4f, 0x44, 0x78,
-
  0xe2, 0xa0, 0xa2, 0x4d, 0x4c, 0x70, 0x35, 0x88, 0x02, 0xb9, 0xe0, 0x46,
-
  0xc3, 0xea, 0xcd, 0x26, 0xa8, 0x14, 0x95, 0xd1, 0x79, 0x59, 0xf8, 0x72,
-
  0x14, 0xe2, 0x49, 0xe0, 0x1a, 0x6c, 0x71, 0xce, 0x67, 0x9a, 0x5f, 0x66,
-
  0x65, 0x91, 0x53, 0x4d, 0xd0, 0xcb, 0xa4, 0xcc, 0x88, 0xf4, 0x7b, 0xcf,
-
  0x4f, 0x5e, 0x1d, 0xf7, 0xcc, 0x85, 0x4e, 0x26, 0xa5, 0x2c, 0x9f, 0x84,
-
  0x76, 0xb6, 0xb9, 0xa5, 0x01, 0x0b, 0x6d, 0x04, 0x72, 0xdf, 0xf8, 0xbd,
-
  0xf8, 0x1e, 0xe1, 0xe6, 0xa2, 0x90, 0x31, 0xc5, 0xc9, 0x2d, 0xa6, 0x1a,
-
  0x85, 0xc9, 0x41, 0xfe, 0x89, 0x12, 0x19, 0x07, 0x9e, 0x17, 0x57, 0x5f,
-
  0x04, 0x4e, 0x12, 0x7c, 0x87, 0x3b, 0x2e, 0x8e, 0x49, 0x49, 0x3a, 0xe3,
-
  0xb0, 0x53, 0xf6, 0xe7, 0x90, 0x93, 0x8e, 0xf6, 0x9f, 0x77, 0x96, 0x83,
-
  0xdc, 0x37, 0xe6, 0xd7, 0x9e, 0xe5, 0x30, 0x9d, 0x4d, 0x37, 0x9a, 0x22,
-
  0xd2, 0x46, 0x85, 0x0a, 0x7f, 0xbd, 0x21, 0x40, 0xe2, 0x94, 0x58, 0x66,
-
  0xef, 0x5b, 0x1f, 0xfd, 0xb5, 0xa3, 0xfb, 0xf6, 0x63, 0x4c, 0xe6, 0xf3,
-
  0x6b, 0xec, 0xb1, 0xfd, 0x9d, 0xe9, 0x9b, 0xbb, 0x5e, 0x15, 0x84, 0xe7,
-
  0x70, 0xc4, 0x5b, 0x88, 0x40, 0xc4, 0xcb, 0xbc, 0x24, 0xdd, 0x55, 0xbc,
-
  0xed, 0x4e, 0x2c, 0x6d, 0x5d, 0x08, 0x2b, 0xc3, 0xc8, 0xfa, 0x8d, 0xab,
-
  0x8c, 0xef, 0x36, 0x27, 0x5c, 0xe9, 0x4e, 0x17, 0x9b, 0x7b, 0xed, 0x4a,
-
  0x6d, 0xd8, 0x0e, 0xa6, 0x1d, 0x1f, 0xf4, 0x05, 0x3c, 0x60, 0x65, 0x91,
-
  0x3e, 0xc9, 0x34, 0x54, 0x4c, 0x24, 0x8b, 0x71, 0xa0, 0xf9, 0x37, 0xd6,
-
  0x3a, 0x2a, 0xa5, 0x39, 0x3c, 0x50, 0xd2, 0xaa, 0x18, 0x67, 0x6e, 0x7c,
-
  0xa8, 0x4c, 0x2d, 0xb1, 0x38, 0x4d, 0xa2, 0xc4, 0xe4, 0x2e, 0x22, 0x19,
-
  0xb6, 0xd6, 0x95, 0x93, 0x85, 0x62, 0x35, 0xd9, 0x71, 0x34, 0x18, 0x21,
-
  0x2b, 0xb1, 0x10, 0xa6, 0x17, 0xf3, 0xd7, 0x77, 0x51, 0xa9, 0xd9, 0x3b,
-
  0xe8, 0x43, 0xa6, 0xda, 0x58, 0x6c, 0xa3, 0x36, 0x90, 0xe9, 0x6d, 0x0c,
-
  0x2a, 0x0e, 0x1c, 0x24, 0x13, 0x22, 0xab, 0x38, 0x0c, 0x3e, 0xba, 0xaa,
-
  0x59, 0x49, 0xf5, 0xdf, 0x10, 0x48, 0x0f, 0xfc, 0xc6, 0x26, 0x19, 0x13,
-
  0x06, 0x49, 0x3c, 0x80, 0xd5, 0x01, 0x41, 0x7f, 0x40, 0xe9, 0x30, 0x58,
-
  0x50, 0xdd, 0x82, 0x58, 0xc2, 0xd4, 0xd8, 0x6c, 0x07, 0xc3, 0x2f, 0x2f,
-
  0x09, 0x09, 0xf0, 0x92, 0x2b, 0x08, 0x72, 0x02, 0xa7, 0xdd, 0x0f, 0xd9,
-
  0x87, 0x00, 0xff, 0x74, 0x46, 0x98, 0x49, 0x71, 0x5a, 0xe2, 0xf1, 0x3f,
-
  0xf0, 0x28, 0xcc, 0x00, 0x4d, 0x04, 0x3e, 0x7a, 0xe6, 0x58, 0xc9, 0xf4,
-
  0x52, 0xf0, 0xc5, 0x55, 0x47, 0xce, 0x39, 0xf3, 0x4b, 0x9c, 0x54, 0xe3,
-
  0x2c, 0x13, 0x8a, 0x43, 0x8f, 0x23, 0x06, 0x1b, 0x06, 0xf2, 0xd6, 0x24,
-
  0x73, 0x5e, 0xf6, 0x83, 0xf6, 0x1e, 0xaf, 0xd7, 0x49, 0xc1, 0x28, 0x0b,
-
  0x1c, 0x9a, 0x4d, 0xa9, 0x09, 0x1c, 0x9f, 0x4c, 0x3e, 0x55, 0xf1, 0xf4,
-
  0xc3, 0xb1, 0xf2, 0xcd, 0x89, 0xe2, 0x6a, 0xed, 0x28, 0x6c, 0x70, 0x75,
-
  0x75, 0xb5, 0x3b, 0x68, 0x04, 0x2f, 0xf1, 0x22, 0xc4, 0x58, 0xe9, 0xb0,
-
  0xaa, 0x49, 0x68, 0x83, 0x67, 0xf6, 0x06, 0x2b, 0x8e, 0xae, 0xb3, 0x76,
-
  0x9f, 0x0c, 0x3f, 0x37, 0x04, 0x33, 0x7b, 0x9b, 0xa1, 0x06, 0xb9, 0xd2,
-
  0x8b, 0x55, 0xcd, 0xb5, 0xbf, 0x02, 0xee, 0xb0, 0x7d, 0x4b, 0xab, 0x49,
-
  0x40, 0xf8, 0x76, 0x1d, 0xe7, 0xad, 0x7a, 0x78, 0x52, 0x92, 0x3a, 0x64,
-
  0x55, 0x19, 0x6e, 0x19, 0x21, 0x93, 0x0a, 0x5f, 0xbe, 0x3c, 0x7d, 0x4d,
-
  0xf8, 0x51, 0x30, 0xbe, 0x34, 0xaf, 0x38, 0xea, 0x16, 0x3f, 0xc3, 0x3c,
-
  0xec, 0x9c, 0x0d, 0x59, 0x14, 0x74, 0x3e, 0xf1, 0xe1, 0x38, 0x39, 0x5c,
-
  0x0a, 0x2d, 0x1f, 0xea, 0x3a, 0xe6, 0x48, 0x7c, 0xc7, 0xb6, 0x02, 0x7b,
-
  0xe6, 0xe0, 0x9d, 0xb1, 0xd8, 0xa1, 0xa6, 0x91, 0xf6, 0x6d, 0x0d, 0xbd,
-
  0xda, 0xbe, 0x69, 0x9b, 0xa9, 0x82, 0x90, 0xb6, 0xdd, 0x78, 0x57, 0xab,
-
  0x9f, 0x23, 0xeb, 0x62, 0xdd, 0xd6, 0xbb, 0x6a, 0x6c, 0x41, 0x78, 0x35,
-
  0xd1, 0x99, 0xe0, 0x29, 0x89, 0x79, 0x96, 0xa0, 0x63, 0xda, 0x15, 0x45,
-
  0x94, 0xbd, 0x41, 0xc2, 0xe7, 0x75, 0xbd, 0xf5, 0xfd, 0x17, 0x90, 0xf7,
-
  0xda, 0xb7, 0x1f, 0x95, 0x0e, 0x5f, 0xf7, 0xe6, 0x93, 0x61, 0xac, 0x0d,
-
  0xdf, 0x98, 0x2f, 0xf2, 0x76, 0x29, 0x49, 0x6d, 0xab, 0x09, 0x43, 0xa4,
-
  0x25, 0x7a, 0x63, 0xcf, 0x23, 0x71, 0x9b, 0xc2, 0xe5, 0x40, 0x4f, 0xab,
-
  0xc8, 0xf3, 0x75, 0x9f, 0xfb, 0x1d, 0x2d, 0x91, 0xf7, 0x87, 0x35, 0x20,
-
  0xd6, 0xc2, 0xf8, 0x09, 0xec, 0x4f, 0x4a, 0xc0, 0x71, 0x01, 0x3a, 0x04,
-
  0xa4, 0x4b, 0x93, 0x39, 0xc8, 0xdb, 0xb9, 0x26, 0xeb, 0x53, 0x15, 0xc1,
-
  0x2a, 0xf3, 0x32, 0x43, 0x97, 0x89, 0xdc, 0x45, 0x56, 0x0e, 0x6f, 0xa5,
-
  0xef, 0x73, 0x1f, 0x94, 0x97, 0xc3, 0x8d, 0x4b, 0xeb, 0x51, 0x08, 0x93,
-
  0x88, 0x1a, 0xa0, 0xdb, 0x81, 0x42, 0xd6, 0xd8, 0xf1, 0xcc, 0xf1, 0xbf,
-
  0x72, 0xff, 0x48, 0x23, 0x06, 0x4c, 0x1d, 0xad, 0xc0, 0x17, 0xcb, 0xfc,
-
  0x3d, 0x0c, 0xc1, 0x87, 0x9a, 0xd4, 0x04, 0xd4, 0x8c, 0x44, 0x89, 0x64,
-
  0x5c, 0x6b, 0xed, 0x07, 0xf3, 0x7a, 0x52, 0x96, 0x08, 0xe9, 0x8a, 0x9e,
-
  0xa7, 0xb7, 0x9a, 0xf6, 0xd1, 0x29, 0x99, 0xd0, 0x00, 0x26, 0xe6, 0x74,
-
  0xc3, 0xa8, 0xcc, 0x02, 0xae, 0x4c, 0xaf, 0x78, 0xdd, 0x8f, 0xdc, 0x1d,
-
  0x89, 0xee, 0x31, 0x6b, 0x90, 0x5b, 0xbc, 0x03, 0x81, 0xcb, 0x50, 0xd6,
-
  0x22, 0xf1, 0x3f, 0xf4, 0xd9, 0xe0, 0x75, 0x8e, 0x21, 0x5e, 0xf1, 0xa8,
-
  0x89, 0x59, 0x0c, 0x6d, 0x8e, 0xe1, 0xc6, 0x1d, 0x79, 0x14, 0x67, 0xf1,
-
  0x19, 0x70, 0xaf, 0x8a, 0xfc, 0x37, 0x29, 0x1e, 0x6b, 0xf9, 0x45, 0x5c,
-
  0xd0, 0x02, 0xf1, 0xd6, 0xe2, 0xaf, 0x7f, 0x91, 0x1c, 0x98, 0x79, 0x51,
-
  0x7b, 0x6c, 0x91, 0x33, 0xe4, 0x62, 0x29, 0x6b, 0x18, 0x9f, 0xb8, 0x8f,
-
  0xca, 0x87, 0xe8, 0x39, 0x72, 0x3f, 0xc2, 0x58, 0x21, 0x23, 0x35, 0x85,
-
  0xb4, 0x0e, 0x2a, 0x57, 0x5c, 0x91, 0xec, 0x81, 0xe0, 0x59, 0xe4, 0xcb,
-
  0x94, 0x68, 0x88, 0xa4, 0x36, 0x38, 0x7d, 0x84, 0x2b, 0x80, 0x87, 0x42,
-
  0xf2, 0xf7, 0xc9, 0x95, 0x15, 0x08, 0x26, 0x4d, 0xd4, 0x7d, 0x7f, 0x8e,
-
  0x98, 0xcc, 0x8a, 0x12, 0xa4, 0x42, 0x0d, 0x87, 0xae, 0x4d, 0x9b, 0xd0,
-
  0x5c, 0x06, 0xb3, 0xa8, 0x3d, 0x3a, 0xe8, 0xb9, 0x46, 0xf7, 0x3d, 0xe8,
-
  0x4f, 0x54, 0x2f, 0x94, 0xad, 0x88, 0x83, 0xdd, 0x9d, 0x1d, 0x49, 0x67,
-
  0x92, 0xc4, 0xd7, 0xda, 0xea, 0xa1, 0xf2, 0x12, 0x65, 0x6c, 0x05, 0xb4,
-
  0xd7, 0x20, 0xea, 0x81, 0xad, 0x1c, 0x2e, 0x8a, 0x39, 0xa5, 0x36, 0x9e,
-
  0x3b, 0x82, 0x2d, 0x8f, 0x5b, 0x4b, 0x44, 0x12, 0xe8, 0x51, 0xd8, 0x93,
-
  0x48, 0xb5, 0x12, 0xd8, 0x9d, 0x28, 0xf4, 0x40, 0x85, 0x8f, 0x72, 0xc2,
-
  0x8e, 0xe0, 0x1c, 0x5c, 0xfe, 0x18, 0x56, 0xb9, 0x6f, 0x3c, 0x79, 0x66,
-
  0xcb, 0xfd, 0x4c, 0x30, 0xd8, 0x44, 0x67, 0xcf, 0xc9, 0x46, 0xda, 0x69,
-
  0x22, 0x6c, 0x5d, 0x26, 0x3a, 0x80, 0x7b, 0xd5, 0xa7, 0xa4, 0xd1, 0x3b,
-
  0x9c, 0x39, 0x1d, 0x8e, 0x92, 0x3a, 0x8b, 0xd0, 0x04, 0x5a, 0xd0, 0xe9,
-
  0xf4, 0xe9, 0x3a, 0x8b, 0x45, 0xdf, 0x36, 0x43, 0x57, 0xce, 0x49, 0xbf,
-
  0x49, 0xf4, 0x8d, 0x1b, 0xe2, 0xc9, 0xbe, 0x27, 0xc0, 0x18, 0xa8, 0xe1,
-
  0x55, 0x17, 0x84, 0xe0, 0xb0, 0x59, 0x58, 0x62, 0xc9, 0xd0, 0xa8, 0xb4,
-
  0xa0, 0x0a, 0xa1, 0x6e, 0xbb, 0x19, 0xfd, 0x83, 0xd0, 0xf9, 0xb2, 0x39,
-
  0x69, 0x69, 0x6e, 0x1a, 0x9f, 0x3b, 0xf1, 0x24, 0x37, 0x13, 0xe5, 0x6d,
-
  0xa9, 0xf2, 0x46, 0xa2, 0xb4, 0x73, 0x71, 0xc8, 0xd2, 0x7c, 0x78, 0x13,
-
  0x45, 0x39, 0x2b, 0x71, 0xaf, 0x05, 0xe2, 0xba, 0x07, 0x70, 0x33, 0x59,
-
  0xd9, 0x31, 0xad, 0x8b, 0xa4, 0xe9, 0xe2, 0x55, 0xb7, 0xc8, 0x23, 0xef,
-
  0x14, 0x6f, 0x5f, 0x88, 0xdf, 0x15, 0xa8, 0x0a, 0xe4, 0x0e, 0x22, 0xbe,
-
  0x19, 0x6c, 0x49, 0x29, 0x32, 0x40, 0x8e, 0xba, 0x03, 0x17, 0x1c, 0x7c,
-
  0x0d, 0x12, 0xe7, 0x17, 0x1d, 0x0b, 0xc0, 0xc4, 0x03, 0x4f, 0x44, 0x24,
-
  0x1e, 0xbb, 0xf2, 0x31, 0x7d, 0xea, 0xc8, 0xc7, 0x4e, 0x96, 0x43, 0x36,
-
  0xf5, 0x00, 0xe7, 0xda, 0x72, 0xd2, 0x8d, 0x72, 0x31, 0x0d, 0x8b, 0x7b,
-
  0x0e, 0xba, 0xa9, 0xa2, 0xdb, 0xc9, 0xc5, 0xd6, 0xa9, 0x64, 0xc5, 0xe0,
-
  0x90, 0x5f, 0xf3, 0x7e, 0xc4, 0xe2, 0xfc, 0xb6, 0x52, 0xf1, 0x2d, 0xc5,
-
  0xe2, 0xfc, 0x4e, 0x52, 0x71, 0x7e, 0x7b, 0xa1, 0xd8, 0xe4, 0x6b, 0xab,
-
  0x00, 0xec, 0xcb, 0xc5, 0xb9, 0x27, 0x16, 0x33, 0x3a, 0xe7, 0x27, 0x11,
-
  0x8a, 0xb1, 0x43, 0x23, 0xba, 0xcc, 0x53, 0xbf, 0x22, 0xe1, 0x89, 0x71,
-
  0xe1, 0x32, 0xf4, 0x11, 0x16, 0x1c, 0x10, 0xe0, 0x5e, 0x7e, 0x2b, 0xa2,
-
  0xb7, 0x54, 0x00, 0xd5, 0xa2, 0xf7, 0xf3, 0x25, 0x89, 0x0b, 0x5e, 0xe4,
-
  0x93, 0x65, 0x79, 0x70, 0x51, 0x53, 0x99, 0x03, 0xc4, 0x71, 0x4e, 0xca,
-
  0x9c, 0x03, 0xe5, 0x27, 0x6e, 0x96, 0x24, 0x3a, 0x33, 0x94, 0xaf, 0x12,
-
  0x86, 0x55, 0x5c, 0xf9, 0xe6, 0xfd, 0x2a, 0x23, 0x84, 0xce, 0xa0, 0x97,
-
  0xc4, 0xc2, 0xc2, 0xdc, 0x74, 0x81, 0xfb, 0x37, 0xf8, 0x6a, 0x6e, 0xd9,
-
  0x5c, 0x32, 0x66, 0x99, 0x46, 0xb9, 0x6d, 0xad, 0x0c, 0x11, 0xd8, 0x4a,
-
  0x41, 0xd8, 0xdf, 0x84, 0x1b, 0x73, 0x8d, 0xd7, 0xcc, 0x1b, 0x69, 0xb6,
-
  0x7e, 0x07, 0x12, 0x6f, 0x0d, 0x2f, 0x2e, 0xb8, 0x92, 0xe9, 0xdd, 0xd1,
-
  0x3d, 0x99, 0xf0, 0xab, 0xbe, 0xd9, 0xc2, 0x66, 0xae, 0xc8, 0x63, 0x8f,
-
  0x4a, 0x85, 0x25, 0x64, 0x93, 0x20, 0xaa, 0xbf, 0x4e, 0x1c, 0x47, 0xbc,
-
  0x51, 0xe9, 0x05, 0x8d, 0xcc, 0x4e, 0x8b, 0x95, 0xbc, 0x78, 0x06, 0x5b,
-
  0x8a, 0x86, 0x6b, 0x74, 0x20, 0x7e, 0x77, 0x6d, 0x32, 0xaf, 0xda, 0xb2,
-
  0x0d, 0x1a, 0xe2, 0x34, 0x42, 0xac, 0xa2, 0xa8, 0x00, 0x2a, 0x6f, 0x65,
-
  0x53, 0x10, 0xb0, 0x15, 0x10, 0x23, 0x2c, 0x71, 0x71, 0xa4, 0x33, 0x26,
-
  0x5d, 0x06, 0xf2, 0x9c, 0xd9, 0x59, 0x41, 0xcc, 0x1f, 0x21, 0x6a, 0x2f,
-
  0x96, 0x70, 0x26, 0x91, 0x91, 0xd6, 0x75, 0x3a, 0x5f, 0x30, 0x96, 0x1d,
-
  0x57, 0xfb, 0xa2, 0x5c, 0x69, 0x1c, 0xb0, 0x33, 0xe2, 0x2a, 0x50, 0xaa,
-
  0x8a, 0x4a, 0x4b, 0xa5, 0x73, 0x01, 0x17, 0x93, 0xfa, 0x19, 0xf8, 0x1e,
-
  0xf9, 0x19, 0xa8, 0x86, 0xa5, 0x24, 0xf0, 0xb2, 0x3e, 0x07, 0x02, 0xf0,
-
  0xc4, 0x64, 0x3e, 0x7b, 0x8e, 0x11, 0x62, 0x33, 0x8a, 0x9b, 0x6f, 0x75,
-
  0xb8, 0x8c, 0x5e, 0x27, 0xc4, 0x7a, 0xb2, 0x81, 0xca, 0x03, 0xd5, 0x72,
-
  0x8c, 0xf9, 0x60, 0xff, 0xc1, 0x83, 0x66, 0x76, 0xdd, 0x15, 0x4b, 0x02,
-
  0x5b, 0x7a, 0xd3, 0xf1, 0xb2, 0xed, 0xdc, 0x6b, 0xcd, 0x74, 0xd3, 0xec,
-
  0x1d, 0x8e, 0x94, 0x1d, 0xd2, 0x5a, 0x87, 0xa8, 0x51, 0x8f, 0xb7, 0x79,
-
  0x46, 0x28, 0xe8, 0x22, 0x7a, 0xca, 0xc7, 0xf5, 0xc3, 0x35, 0x41, 0x82,
-
  0xb5, 0x23, 0x2b, 0x8e, 0xd0, 0x60, 0x19, 0xab, 0x6d, 0x7f, 0xc2, 0x89,
-
  0x34, 0xe4, 0x93, 0x52, 0x7b, 0x37, 0xab, 0x4e, 0x14, 0x61, 0xa8, 0xae,
-
  0x80, 0x88, 0xda, 0x43, 0xf8, 0x8d, 0xa9, 0x87, 0xf7, 0x22, 0xf1, 0x06,
-
  0x56, 0xf9, 0x90, 0xc0, 0x47, 0xae, 0x28, 0x09, 0xc4, 0x47, 0x95, 0x93,
-
  0xb2, 0xca, 0x1a, 0x75, 0xff, 0x84, 0xb9, 0x8d, 0x18, 0xc1, 0x0b, 0xc2,
-
  0x51, 0xdb, 0x94, 0xd0, 0xa8, 0x0f, 0x6e, 0x70, 0x98, 0xb8, 0x62, 0x81,
-
  0x2d, 0x8c, 0x83, 0xd6, 0xf4, 0x89, 0x0a, 0xe4, 0x2c, 0x32, 0xd1, 0x08,
-
  0xbd, 0xd8, 0x32, 0x0a, 0xef, 0x65, 0xfd, 0x48, 0x82, 0xec, 0x69, 0xbe,
-
  0x84, 0xda, 0x84, 0x7d, 0x50, 0xfa, 0x94, 0x78, 0x11, 0x13, 0x4d, 0x8d,
-
  0x32, 0x65, 0xab, 0xbd, 0xa4, 0x41, 0x53, 0xd2, 0x1c, 0x47, 0xc5, 0x5a,
-
  0xb5, 0x78, 0x44, 0xf4, 0x03, 0x02, 0x8f, 0x49, 0x67, 0xd3, 0x81, 0x67,
-
  0xf7, 0x0e, 0x01, 0xb4, 0xcc, 0xc8, 0x4c, 0x2b, 0x5a, 0x2e, 0x8d, 0x88,
-
  0x75, 0x1f, 0xfc, 0xb8, 0x6f, 0x7f, 0x3d, 0x78, 0xb2, 0xc3, 0x2b, 0x80,
-
  0x85, 0x6b, 0xed, 0x03, 0x6d, 0x2b, 0x3d, 0x5c, 0xbb, 0xb8, 0x6b, 0xf8,
-
  0x10, 0xfc, 0x34, 0xcf, 0x79, 0xa4, 0x39, 0x94, 0xc8, 0xc0, 0x87, 0xa0,
-
  0xfd, 0xf4, 0x1b, 0x8e, 0xf5, 0x36, 0xaa, 0x86, 0xeb, 0x29, 0x35, 0xae,
-
  0xd2, 0x20, 0xaa, 0x82, 0xe1, 0x1d, 0x7a, 0x03, 0x02, 0x21, 0x6e, 0x6e,
-
  0xe4, 0xc5, 0x3b, 0xfa, 0x95, 0x1d, 0x8e, 0x1b, 0xaf, 0x4f, 0xde, 0x9d,
-
  0xbe, 0x39, 0xf9, 0xf9, 0xef, 0x1b, 0x5b, 0x0a, 0xa9, 0x52, 0xa6, 0x1b,
-
  0x7e, 0xde, 0x69, 0xd8, 0x41, 0xcb, 0x1d, 0x70, 0xac, 0xac, 0x90, 0xa3,
-
  0xba, 0x12, 0x38, 0xce, 0x9e, 0x31, 0x34, 0x3d, 0x59, 0x93, 0x86, 0x42,
-
  0xbb, 0x0e, 0xe4, 0xdc, 0xeb, 0xe1, 0xbf, 0x3a, 0x4d, 0xd8, 0xab, 0x8e,
-
  0xc5, 0x11, 0x29, 0xde, 0x2d, 0xc0, 0x9c, 0x56, 0x6e, 0xf0, 0x73, 0x11,
-
  0x02, 0x3b, 0xec, 0x2c, 0x12, 0xc3, 0x97, 0xc7, 0xd1, 0x8b, 0x67, 0x6f,
-
  0x70, 0x87, 0x04, 0x94, 0x09, 0xd3, 0x02, 0xd5, 0x08, 0x52, 0xcd, 0xb0,
-
  0x98, 0x23, 0x11, 0xb9, 0xe6, 0xdf, 0x50, 0x67, 0xde, 0x35, 0x6f, 0x2b,
-
  0x8d, 0xd8, 0x5c, 0x88, 0x9e, 0x04, 0x8f, 0x47, 0x23, 0xa0, 0xbd, 0x1e,
-
  0x4a, 0x62, 0x6a, 0x48, 0x31, 0xc9, 0xea, 0x7c, 0x90, 0xb3, 0x3c, 0xe0,
-
  0x27, 0x42, 0xff, 0x3c, 0xac, 0x31, 0x96, 0xb7, 0x73, 0xf3, 0x87, 0xa2,
-
  0xde, 0xee, 0x97, 0x7b, 0x83, 0xdd, 0x47, 0x4f, 0xe0, 0x22, 0xde, 0xd9,
-
  0xde, 0x7d, 0xd4, 0x6b, 0x50, 0x29, 0x9e, 0xcc, 0x64, 0xe2, 0x49, 0xa4,
-
  0xba, 0x4e, 0x98, 0xe0, 0x64, 0x0b, 0x74, 0x48, 0x43, 0xbd, 0xae, 0xc8,
-
  0x25, 0xe1, 0x5b, 0x9f, 0x29, 0xc0, 0x54, 0xbb, 0xef, 0x39, 0x65, 0xaf,
-
  0x7b, 0xeb, 0xb1, 0xe4, 0x0f, 0x7d, 0x8d, 0x78, 0x6b, 0xf0, 0xe3, 0x7a,
-
  0x36, 0x8f, 0xaf, 0x46, 0x37, 0xc4, 0x98, 0x9e, 0xbd, 0x7c, 0x05, 0x37,
-
  0x12, 0x55, 0x69, 0x67, 0x6d, 0xa8, 0xbe, 0x9e, 0xa5, 0xf2, 0x36, 0x49,
-
  0xb5, 0x1c, 0x6b, 0x74, 0x81, 0xb4, 0x81, 0x74, 0x7b, 0x1b, 0x4c, 0x09,
-
  0x03, 0xd4, 0x2a, 0x0e, 0x5c, 0x2d, 0xbe, 0x0d, 0x4d, 0x72, 0x88, 0x9e,
-
  0xad, 0xab, 0xda, 0x81, 0x29, 0x91, 0x7e, 0x80, 0xeb, 0x85, 0xa0, 0xc4,
-
  0x2e, 0x52, 0xae, 0x94, 0x76, 0x93, 0x55, 0x89, 0x27, 0xfb, 0x29, 0xa2,
-
  0x14, 0xa5, 0xe5, 0x8f, 0x03, 0x6d, 0xe3, 0xf5, 0x6c, 0xc4, 0x26, 0xc2,
-
  0x07, 0xed, 0xed, 0x6a, 0xef, 0x0e, 0x6f, 0x8f, 0x17, 0x26, 0xc3, 0x17,
-
  0x5c, 0xe8, 0x3b, 0x2f, 0x1d, 0x8e, 0x50, 0x89, 0xae, 0x28, 0xa6, 0xbf,
-
  0xca, 0xce, 0x73, 0x56, 0xdb, 0x5f, 0x65, 0xe3, 0xb2, 0xa8, 0x8a, 0xa9,
-
  0xa9, 0x2c, 0xa6, 0x6e, 0xa7, 0x17, 0x2f, 0x86, 0xd1, 0x55, 0x3a, 0x52,
-
  0xa4, 0xdc, 0x81, 0x1f, 0x28, 0x48, 0xf7, 0x28, 0xc6, 0xca, 0x96, 0x59,
-
  0x5a, 0xe3, 0xa6, 0x2a, 0xf6, 0x0d, 0x96, 0x6a, 0xc3, 0x77, 0x52, 0xa9,
-
  0x53, 0x43, 0xbe, 0x05, 0x68, 0x72, 0x3c, 0x23, 0xd9, 0x33, 0x5a, 0xa4,
-
  0x3e, 0x6b, 0x94, 0x78, 0x01, 0x23, 0x38, 0x3a, 0xd1, 0xe3, 0x84, 0x7a,
-
  0x2e, 0xb1, 0x3e, 0x59, 0x89, 0x5b, 0x87, 0x7a, 0xbe, 0x78, 0xf1, 0xdf,
-
  0x63, 0x60, 0x4c, 0x31, 0xf5, 0x8e, 0x9f, 0x00, 0x18, 0x88, 0xcc, 0x2b,
-
  0x48, 0x66, 0xc0, 0xe0, 0x8a, 0x92, 0x72, 0xad, 0xa8, 0x5a, 0xae, 0xe4,
-
  0xf7, 0xa6, 0xf9, 0xb8, 0x58, 0x96, 0x88, 0x73, 0x47, 0xb2, 0xf1, 0x35,
-
  0xc8, 0x11, 0x9e, 0x28, 0xc0, 0x00, 0x42, 0xba, 0x0b, 0x56, 0x03, 0x25,
-
  0x34, 0xb5, 0xc5, 0x72, 0x84, 0xf8, 0xbe, 0x5c, 0x4a, 0x41, 0x45, 0x4a,
-
  0x67, 0x37, 0x82, 0x65, 0xe1, 0x65, 0x3f, 0x2c, 0xd4, 0x2c, 0xa7, 0x0e,
-
  0x83, 0x78, 0x77, 0x1e, 0x42, 0x7d, 0x95, 0x0a, 0xbf, 0x54, 0x35, 0xc0,
-
  0xaa, 0x78, 0x34, 0x1a, 0x11, 0x8a, 0x4b, 0xb9, 0x5f, 0x5a, 0x64, 0xc0,
-
  0x68, 0x1d, 0xe1, 0x64, 0x92, 0x10, 0xf5, 0x39, 0xfc, 0xb0, 0x6e, 0x47,
-
  0xbe, 0x8a, 0xf1, 0xa5, 0xc5, 0x11, 0x49, 0xba, 0x62, 0x5b, 0x79, 0x29,
-
  0x50, 0x15, 0x77, 0x08, 0x2e, 0x46, 0x92, 0xff, 0x34, 0x27, 0xf6, 0xe3,
-
  0x8e, 0x6b, 0x73, 0x99, 0xcc, 0xe9, 0xb4, 0x66, 0x91, 0xa6, 0xbb, 0x50,
-
  0x2d, 0x21, 0x37, 0x1a, 0xc1, 0xda, 0x76, 0x91, 0x95, 0x41, 0x85, 0x9d,
-
  0x95, 0xbe, 0x39, 0xf6, 0xd9, 0x84, 0xda, 0xa8, 0xbd, 0x4b, 0x0a, 0xbe,
-
  0x12, 0x29, 0x29, 0xda, 0x16, 0xc7, 0x44, 0xbb, 0x6c, 0xa6, 0xc0, 0x0f,
-
  0xf6, 0xe2, 0x51, 0x0a, 0x9a, 0x65, 0x19, 0x3d, 0xad, 0x51, 0x7d, 0xbb,
-
  0x0d, 0xd6, 0x56, 0x24, 0xd9, 0x90, 0x4e, 0x6e, 0xf3, 0x77, 0xdc, 0x46,
-
  0x74, 0x46, 0x2a, 0x20, 0x57, 0xf6, 0x3e, 0x41, 0xbc, 0xa4, 0x56, 0x73,
-
  0x7b, 0x83, 0x9d, 0x2e, 0xc0, 0x2d, 0xe2, 0x64, 0xd2, 0x0e, 0x37, 0xa3,
-
  0xdc, 0xc8, 0x3a, 0xa5, 0x82, 0x27, 0xc9, 0x58, 0xef, 0x6c, 0xd8, 0xbd,
-
  0x88, 0xcd, 0x2c, 0x0a, 0x35, 0xf0, 0x09, 0x08, 0xd1, 0x3a, 0x52, 0x2c,
-
  0x15, 0x3f, 0x0a, 0x1f, 0x4d, 0xe1, 0xa5, 0x1b, 0xf2, 0xab, 0x41, 0x43,
-
  0xc1, 0x8c, 0xaa, 0xd6, 0xb4, 0xa5, 0x2a, 0x91, 0xc6, 0xfe, 0x97, 0x1a,
-
  0x87, 0x48, 0xec, 0x60, 0x3c, 0xa6, 0x92, 0x32, 0x98, 0xc5, 0x89, 0xd0,
-
  0x06, 0xad, 0xe6, 0x1e, 0x3d, 0x7e, 0xb8, 0x13, 0xce, 0x7a, 0x69, 0xee,
-
  0xd2, 0xe7, 0x82, 0xc2, 0x6a, 0x8e, 0xa2, 0x37, 0xff, 0xfe, 0xdd, 0x97,
-
  0x83, 0xef, 0x1e, 0x4e, 0xe3, 0x07, 0x83, 0xdd, 0xbf, 0xfc, 0xf3, 0x55,
-
  0xef, 0x63, 0x22, 0xf6, 0x1b, 0xd4, 0xda, 0x34, 0x10, 0xb6, 0x7c, 0x22,
-
  0x6c, 0xd8, 0x43, 0x84, 0xf5, 0xe8, 0x29, 0xfc, 0xb3, 0x3a, 0x52, 0x5f,
-
  0xb7, 0x5d, 0x85, 0x54, 0x1b, 0xf8, 0x6a, 0xf4, 0x2a, 0xf6, 0x20, 0x9a,
-
  0x20, 0x4e, 0xaf, 0x30, 0x38, 0x96, 0x17, 0xeb, 0xb3, 0xdc, 0xe1, 0x39,
-
  0x6f, 0x88, 0x4c, 0x1a, 0x2e, 0x9e, 0xb2, 0x63, 0x65, 0xcf, 0x0c, 0x32,
-
  0x93, 0x3c, 0xe9, 0x8c, 0xa4, 0xb2, 0x61, 0xb4, 0x28, 0xc7, 0xbe, 0x7d,
-
  0xf3, 0xb2, 0x92, 0x30, 0x2d, 0xf1, 0xc4, 0x17, 0x8b, 0x60, 0xe1, 0x51,
-
  0x05, 0x37, 0x75, 0x63, 0x7e, 0xc8, 0x05, 0xb9, 0x84, 0x03, 0x35, 0x73,
-
  0xb8, 0xb1, 0x0d, 0x1f, 0xea, 0x60, 0xf1, 0x8d, 0x3c, 0x4a, 0x4c, 0x03,
-
  0x77, 0xc7, 0x67, 0x00, 0xff, 0xc9, 0xb1, 0xda, 0x6f, 0x86, 0x7c, 0x85,
-
  0xa8, 0x0b, 0x63, 0xaf, 0xb4, 0x2c, 0x4b, 0x1c, 0xb3, 0x9b, 0x33, 0xa6,
-
  0x44, 0x5c, 0x8a, 0xb8, 0xe3, 0x42, 0x1d, 0x1d, 0x85, 0xad, 0x9c, 0xdd,
-
  0xbd, 0x81, 0xca, 0x3f, 0x25, 0xf4, 0x94, 0x33, 0x8a, 0x5e, 0x3d, 0x5f,
-
  0xf4, 0x60, 0xe7, 0xd7, 0x35, 0xa8, 0x7b, 0xa4, 0x42, 0x04, 0xfe, 0x17,
-
  0xe7, 0x53, 0xc7, 0x5b, 0x2a, 0x04, 0xef, 0xc1, 0xb9, 0x62, 0xba, 0x5c,
-
  0x93, 0xfc, 0x5d, 0x62, 0x0b, 0x16, 0xb3, 0xfa, 0xa9, 0x44, 0x60, 0x66,
-
  0x0d, 0xbf, 0x28, 0xe4, 0x21, 0x17, 0xea, 0xbf, 0xaa, 0x27, 0xf0, 0xf5,
-
  0x40, 0xa5, 0x09, 0x26, 0x59, 0xe4, 0x49, 0xff, 0xfa, 0xb7, 0x6f, 0x1f,
-
  0xff, 0xc7, 0xaf, 0xe4, 0xd0, 0x4e, 0x51, 0xce, 0x31, 0x37, 0xb3, 0x0a,
-
  0x38, 0x55, 0x43, 0x86, 0x62, 0xc8, 0x76, 0xdc, 0x1a, 0x09, 0xc2, 0x0c,
-
  0xd4, 0xc6, 0x42, 0x6e, 0x8c, 0x62, 0xc7, 0xc6, 0x1f, 0x36, 0x24, 0x58,
-
  0x50, 0xe3, 0x9b, 0x44, 0x7d, 0x14, 0xad, 0x43, 0x46, 0x6d, 0xc8, 0xb2,
-
  0x24, 0x21, 0x37, 0xf1, 0x8b, 0xc1, 0x8a, 0x32, 0x6e, 0xaa, 0x9b, 0xe1,
-
  0x9d, 0x4c, 0x40, 0xbf, 0x0e, 0x48, 0x94, 0x54, 0x32, 0xd6, 0xfa, 0x8d,
-
  0x1a, 0x34, 0x0a, 0xa3, 0xf4, 0x24, 0x46, 0xfa, 0x3e, 0x25, 0x4b, 0xcc,
-
  0x80, 0xa1, 0xbc, 0xb3, 0xbc, 0x23, 0xae, 0xaf, 0x87, 0x04, 0x01, 0xf4,
-
  0xf0, 0x2f, 0x90, 0x75, 0xfa, 0xa0, 0xef, 0xfe, 0xdb, 0x8d, 0x8a, 0xeb,
-
  0xa1, 0x45, 0xba, 0x87, 0x93, 0x78, 0xf7, 0x87, 0x5d, 0x04, 0x38, 0xec,
-
  0xb5, 0x1b, 0x61, 0x54, 0x1c, 0x43, 0xd8, 0xc6, 0x98, 0x41, 0x9e, 0x85,
-
  0x9b, 0xba, 0x44, 0xf0, 0xed, 0x3e, 0x9a, 0x78, 0xfe, 0x3d, 0xc0, 0x7f,
-
  0xff, 0xb1, 0x1b, 0x3f, 0xfc, 0xd5, 0x76, 0xfb, 0x87, 0xdd, 0x77, 0x7f,
-
  0xd8, 0xeb, 0x85, 0xb0, 0x2b, 0x6d, 0xf9, 0x02, 0x2b, 0x67, 0x20, 0xac,
-
  0x33, 0x82, 0xc6, 0xb2, 0xb8, 0x25, 0x79, 0x1f, 0x56, 0x99, 0x27, 0x6e,
-
  0x14, 0xd8, 0x49, 0x8c, 0xfe, 0xf1, 0x8c, 0x4a, 0x52, 0x73, 0x4a, 0xd3,
-
  0x8e, 0x60, 0x55, 0xf8, 0x7d, 0xad, 0xf1, 0x90, 0xcc, 0x0d, 0xb7, 0xf2,
-
  0x64, 0x23, 0xe4, 0x5d, 0x6a, 0x40, 0x21, 0xe3, 0x40, 0x6d, 0x0b, 0x85,
-
  0xf8, 0xeb, 0x21, 0x27, 0x15, 0x24, 0xef, 0x24, 0x6a, 0x84, 0x18, 0x16,
-
  0xd1, 0x68, 0x14, 0x39, 0x91, 0x85, 0x5f, 0x04, 0x22, 0x3f, 0x88, 0x83,
-
  0x91, 0x2d, 0x59, 0xec, 0x12, 0xf0, 0x96, 0xc6, 0x9f, 0xea, 0xf7, 0x3c,
-
  0x6f, 0x27, 0x2d, 0x80, 0xae, 0x70, 0xcf, 0x40, 0xf8, 0x1b, 0xe6, 0x20,
-
  0xba, 0xd2, 0x9f, 0x70, 0xdc, 0x02, 0xd9, 0x97, 0x09, 0x4f, 0xa6, 0xcf,
-
  0xf4, 0x54, 0x00, 0x7b, 0x40, 0x89, 0x9c, 0xcb, 0x4a, 0x78, 0x91, 0x0c,
-
  0xa0, 0x53, 0x37, 0x18, 0x3a, 0xad, 0x07, 0xf1, 0x94, 0x91, 0x2d, 0x19,
-
  0x97, 0x54, 0x1d, 0x0b, 0xe2, 0x2e, 0x85, 0x0b, 0xde, 0xc3, 0x0b, 0x45,
-
  0x8b, 0xd3, 0x79, 0x23, 0x33, 0x60, 0xb2, 0xcb, 0xae, 0x6d, 0xba, 0xa4,
-
  0xc4, 0xaa, 0x30, 0xdf, 0xa5, 0x80, 0x62, 0xbd, 0x20, 0xbc, 0xdc, 0x06,
-
  0xba, 0x6c, 0x27, 0xd7, 0xc0, 0xd6, 0x32, 0xca, 0x11, 0x19, 0x18, 0xd4,
-
  0x42, 0x75, 0x58, 0xe8, 0x5d, 0x59, 0x45, 0x1b, 0xf1, 0x46, 0xb4, 0x69,
-
  0xec, 0xb0, 0x93, 0xa4, 0xba, 0xd8, 0x0a, 0x5e, 0x28, 0x26, 0x26, 0xc5,
-
  0xf2, 0xb5, 0x91, 0xf8, 0x41, 0x50, 0x84, 0x66, 0x86, 0xe6, 0x5d, 0xb9,
-
  0x05, 0xe7, 0x9f, 0x32, 0x9c, 0xa5, 0x83, 0x1d, 0x5c, 0x4c, 0x32, 0x4a,
-
  0x8a, 0xbc, 0x36, 0x68, 0xae, 0x06, 0xef, 0xd9, 0x5c, 0xb9, 0x3e, 0x0c,
-
  0xcf, 0xf6, 0x24, 0xbd, 0xdc, 0xce, 0x97, 0xb3, 0xd9, 0xc1, 0x2d, 0xd6,
-
  0x1e, 0x56, 0xda, 0x3c, 0xdf, 0x7e, 0xfc, 0x84, 0x5d, 0x18, 0x92, 0xb5,
-
  0x43, 0xb4, 0x0e, 0x8f, 0x1d, 0xdc, 0xaa, 0x51, 0x78, 0xd0, 0x8b, 0x0d,
-
  0x76, 0xaf, 0x84, 0x4f, 0x16, 0x1d, 0x1c, 0x17, 0xd1, 0x2d, 0x63, 0x5f,
-
  0xee, 0xc6, 0x1d, 0x3f, 0x9e, 0xdd, 0xad, 0x39, 0x6a, 0xfd, 0x6e, 0x2f,
-
  0x14, 0x8e, 0xbc, 0x22, 0x09, 0xac, 0x7d, 0xaf, 0xf7, 0x03, 0x31, 0x6c,
-
  0xde, 0x55, 0xdf, 0x1d, 0x1b, 0xe7, 0x4a, 0xb6, 0x1a, 0xe4, 0x1c, 0x67,
-
  0xf3, 0x39, 0x10, 0xa4, 0x9f, 0x0f, 0x4e, 0x21, 0x7a, 0x13, 0xc2, 0xe1,
-
  0x30, 0x01, 0xd1, 0xc6, 0x35, 0xd8, 0x44, 0xc9, 0x97, 0x0b, 0x51, 0x23,
-
  0xed, 0x83, 0x69, 0xa3, 0x1a, 0xb0, 0x29, 0xf7, 0xb7, 0x14, 0xa9, 0xe1,
-
  0x4a, 0x29, 0x28, 0xe1, 0x91, 0x0f, 0x1c, 0xc4, 0x49, 0x42, 0x0b, 0xb6,
-
  0xa1, 0x43, 0x44, 0x4b, 0xd0, 0x7f, 0xec, 0x7b, 0x2a, 0x31, 0x40, 0x1b,
-
  0x95, 0xff, 0x71, 0xaa, 0xad, 0x11, 0x9a, 0xd0, 0x55, 0xc2, 0xc1, 0x7a,
-
  0xb6, 0x44, 0x10, 0xe2, 0xf1, 0x5b, 0xa7, 0x26, 0x53, 0x6d, 0xbb, 0x39,
-
  0x52, 0x01, 0x12, 0x0b, 0x58, 0xf8, 0x01, 0x69, 0x9a, 0x62, 0x52, 0xb9,
-
  0x18, 0x9d, 0xa0, 0xca, 0xba, 0x31, 0x4d, 0x9f, 0xb3, 0xda, 0xa5, 0x6b,
-
  0xc8, 0xf0, 0x77, 0xf2, 0xc6, 0x34, 0xc8, 0xf5, 0x81, 0x17, 0xfd, 0x4e,
-
  0xd6, 0x15, 0x73, 0x03, 0xc3, 0x8c, 0xff, 0x6b, 0xd5, 0x61, 0xd9, 0x5d,
-
  0x79, 0x92, 0xd6, 0x8a, 0xe1, 0xb7, 0x9d, 0xcf, 0x93, 0x0f, 0x4d, 0x5f,
-
  0xfb, 0x93, 0xa6, 0xc2, 0xe7, 0x3e, 0x18, 0x04, 0x66, 0x62, 0x90, 0x80,
-
  0xa4, 0x7a, 0xcf, 0x5b, 0x39, 0x29, 0x82, 0xa7, 0x83, 0x65, 0xdc, 0xe6,
-
  0x50, 0xfa, 0x2b, 0x8a, 0x4b, 0x63, 0xdd, 0xb4, 0x12, 0x0b, 0x49, 0xbb,
-
  0xb0, 0x6d, 0x5c, 0x89, 0x80, 0xc4, 0x06, 0x43, 0xbd, 0xdc, 0x65, 0x95,
-
  0xe1, 0x0e, 0x27, 0xb9, 0x77, 0xd8, 0x09, 0x5d, 0xe3, 0x3f, 0x45, 0x9a,
-
  0x8e, 0xa2, 0xe7, 0xeb, 0x9f, 0x26, 0x3a, 0xab, 0x8a, 0xba, 0xec, 0x0c,
-
  0x8d, 0xb5, 0xbe, 0xad, 0x99, 0xe1, 0xde, 0xd5, 0xaf, 0xc6, 0x28, 0x30,
-
  0x86, 0xb6, 0x83, 0x2a, 0xa7, 0x6b, 0xa0, 0xff, 0x36, 0xc1, 0x37, 0x1a,
-
  0xf4, 0xd6, 0x8c, 0x40, 0x6a, 0x3c, 0x18, 0x4c, 0xc9, 0xe5, 0x61, 0x0a,
-
  0xd2, 0x24, 0x15, 0xe7, 0xb0, 0xc4, 0xc0, 0xac, 0x51, 0xe8, 0xbc, 0x12,
-
  0x67, 0x96, 0x89, 0x2a, 0xf6, 0xc2, 0x1d, 0xce, 0xb1, 0xaa, 0x1a, 0xda,
-
  0xc2, 0xb0, 0x6c, 0xc7, 0x1c, 0x8b, 0x9e, 0x97, 0xff, 0x5d, 0xb8, 0x18,
-
  0xad, 0x84, 0x7b, 0x6c, 0xef, 0xb9, 0xdc, 0x80, 0x0f, 0x84, 0xb2, 0x1e,
-
  0x71, 0x7c, 0x0a, 0x3e, 0x65, 0xd3, 0xac, 0x88, 0x47, 0x35, 0xaa, 0xff,
-
  0xae, 0x20, 0x99, 0x18, 0x8d, 0xca, 0xd1, 0xd3, 0xc5, 0x45, 0x99, 0x54,
-
  0xa9, 0x0f, 0x1a, 0x3b, 0x7c, 0x1e, 0x51, 0x4c, 0xd0, 0x29, 0x3c, 0xc5,
-
  0xcf, 0x18, 0xcd, 0xc0, 0xa9, 0x36, 0xdf, 0x75, 0x20, 0xab, 0xea, 0x2e,
-
  0xc0, 0x7a, 0xf7, 0x53, 0xe8, 0x9b, 0x7a, 0xe7, 0x94, 0x58, 0xa9, 0x04,
-
  0xbf, 0x3e, 0xea, 0x0d, 0xbd, 0xd6, 0xca, 0x2b, 0x6d, 0x2c, 0x5d, 0x7d,
-
  0x11, 0x27, 0x55, 0xec, 0xb1, 0x61, 0x4c, 0x01, 0x8d, 0x9c, 0xe2, 0xc8,
-
  0x48, 0xe7, 0xe8, 0x75, 0x44, 0x24, 0x45, 0x4c, 0x87, 0xcc, 0xb1, 0xc4,
-
  0x21, 0x10, 0xf2, 0xf6, 0x60, 0xb0, 0x8d, 0xda, 0xf4, 0x36, 0xfc, 0x10,
-
  0xeb, 0x01, 0x19, 0xda, 0x5a, 0xcd, 0xa1, 0xf6, 0x85, 0x7d, 0x61, 0xa0,
-
  0x14, 0xa6, 0xca, 0xcc, 0xae, 0x5d, 0xdc, 0xe6, 0x7f, 0x2e, 0xd1, 0xdf,
-
  0x8d, 0x70, 0xbd, 0x69, 0x49, 0x85, 0x68, 0xd2, 0x79, 0xe4, 0x58, 0x6b,
-
  0x7d, 0x6d, 0x40, 0xf3, 0x66, 0x2a, 0xa9, 0xed, 0x45, 0xa6, 0x06, 0x17,
-
  0xbf, 0x97, 0xe1, 0x3f, 0xa8, 0xf0, 0x49, 0x56, 0x6b, 0xf4, 0x0a, 0x95,
-
  0x2a, 0x4a, 0x6e, 0x92, 0x1d, 0x74, 0x41, 0xee, 0x3d, 0xbf, 0xd8, 0x36,
-
  0xbd, 0x3e, 0x21, 0x98, 0x41, 0x05, 0x36, 0x1f, 0xb7, 0x00, 0xfe, 0x97,
-
  0xd6, 0xe3, 0x6d, 0x72, 0xaf, 0x4c, 0x56, 0x96, 0xff, 0xa0, 0x54, 0xd6,
-
  0x98, 0xcd, 0x8c, 0x8d, 0x53, 0xf5, 0x60, 0xaf, 0x75, 0xaa, 0x32, 0xe0,
-
  0x87, 0x93, 0xc5, 0x72, 0x84, 0x14, 0xf4, 0x14, 0x66, 0x7f, 0x11, 0xc0,
-
  0x5a, 0xa5, 0x93, 0xd5, 0x4c, 0x17, 0xe6, 0x32, 0x1f, 0xa4, 0xab, 0x5a,
-
  0x6e, 0xa8, 0x0e, 0x3a, 0x3c, 0x6a, 0x0a, 0x94, 0xb0, 0xe9, 0x03, 0xe1,
-
  0x51, 0x27, 0x5b, 0x4c, 0x71, 0x04, 0x8e, 0xcc, 0xae, 0x8d, 0x45, 0x6a,
-
  0xb2, 0xa1, 0x45, 0xc5, 0x4a, 0x18, 0xc0, 0x85, 0x7c, 0x7f, 0xd4, 0x1a,
-
  0x59, 0x93, 0xfd, 0x0a, 0x7a, 0x1c, 0xa3, 0x63, 0x74, 0x5c, 0x19, 0x05,
-
  0x0e, 0x02, 0xe6, 0x7c, 0x7a, 0xfc, 0x0a, 0x89, 0xee, 0xd9, 0xf1, 0x1b,
-
  0x71, 0x12, 0x50, 0xfc, 0x0e, 0x5a, 0x63, 0xd8, 0x00, 0xe3, 0x97, 0x3c,
-
  0x42, 0x3f, 0xe8, 0xa3, 0x07, 0xe4, 0xae, 0x24, 0x6e, 0x70, 0x91, 0xec,
-
  0x3d, 0x7c, 0x24, 0xc3, 0xd6, 0xca, 0xc5, 0x64, 0x51, 0xdb, 0xe0, 0xaf,
-
  0xb6, 0xb7, 0x39, 0xd6, 0x05, 0x7d, 0xef, 0x9e, 0xaa, 0x4e, 0x01, 0x57,
-
  0xf8, 0xec, 0x57, 0x1b, 0x61, 0xe4, 0x25, 0x75, 0x26, 0x71, 0x94, 0x0b,
-
  0x06, 0x80, 0x13, 0x3a, 0xd4, 0x4b, 0x47, 0xe8, 0xd6, 0x42, 0x00, 0xe2,
-
  0xcf, 0xd1, 0x92, 0x55, 0x6d, 0xa8, 0xa4, 0x71, 0x5a, 0xd6, 0x8c, 0x34,
-
  0x4d, 0x00, 0x15, 0x54, 0xad, 0x87, 0x4e, 0x16, 0x5e, 0x9f, 0x5a, 0x69,
-
  0x02, 0xa8, 0xa1, 0xb1, 0x40, 0x15, 0xd3, 0xfa, 0xd8, 0x2f, 0xb6, 0x27,
-
  0x28, 0x4a, 0xb8, 0x1d, 0x4e, 0xc3, 0x52, 0xad, 0x29, 0xab, 0x5d, 0x9b,
-
  0x35, 0xa7, 0x93, 0x71, 0x98, 0x08, 0x47, 0x66, 0x2d, 0x47, 0x1e, 0x54,
-
  0xbd, 0x12, 0x86, 0x61, 0xb3, 0xcd, 0x80, 0x1a, 0x37, 0x6f, 0xce, 0xa2,
-
  0xbb, 0xdb, 0x45, 0xf0, 0xec, 0x88, 0xd3, 0x82, 0xc2, 0x22, 0x19, 0x37,
-
  0xca, 0xe0, 0xb9, 0x73, 0x4c, 0xf1, 0x35, 0xa5, 0xb4, 0xf9, 0x3c, 0xe0,
-
  0xf8, 0xd5, 0x36, 0x12, 0x82, 0x38, 0x04, 0x3d, 0x2b, 0xc3, 0xe3, 0xc1,
-
  0xfe, 0x97, 0x83, 0x9d, 0x83, 0xe8, 0x04, 0x14, 0x33, 0xd8, 0x82, 0x7e,
-
  0xf4, 0x43, 0xbe, 0xc4, 0x1d, 0xc1, 0x49, 0xff, 0x30, 0xfc, 0x6b, 0x56,
-
  0xfb, 0x2f, 0x3c, 0xd8, 0xc7, 0x17, 0x5e, 0x0f, 0xf9, 0xa1, 0xab, 0x62,
-
  0x36, 0x85, 0x17, 0x03, 0x8f, 0x3d, 0xc6, 0xc7, 0x80, 0xde, 0x26, 0xb5,
-
  0x57, 0xeb, 0x40, 0x08, 0xac, 0x7b, 0x50, 0x0f, 0x1e, 0x04, 0x06, 0xd5,
-
  0x5f, 0xb7, 0xd3, 0xb6, 0x89, 0x84, 0x34, 0x3b, 0x24, 0xb4, 0x51, 0x32,
-
  0x7e, 0x4f, 0x14, 0x45, 0x40, 0xc5, 0x3c, 0x8a, 0x2e, 0xdf, 0x41, 0x83,
-
  0x5f, 0x7c, 0x72, 0xe1, 0xb5, 0x13, 0x1c, 0xb0, 0x31, 0x0c, 0xf8, 0xff,
-
  0x5a, 0x76, 0x93, 0xd6, 0xeb, 0xe6, 0x14, 0x8f, 0xd3, 0xdd, 0xdd, 0x27,
-
  0xa3, 0x87, 0xbb, 0x4f, 0xbe, 0x7c, 0x3c, 0x7d, 0xf0, 0xe0, 0xe1, 0xde,
-
  0x64, 0xbc, 0xb1, 0xe6, 0x35, 0x8c, 0x96, 0x13, 0x68, 0x95, 0x1b, 0x6c,
-
  0x7a, 0xd8, 0x5a, 0x40, 0xf8, 0x52, 0x2e, 0x2b, 0x1c, 0x28, 0xd4, 0x64,
-
  0xb5, 0x25, 0x15, 0xa9, 0xae, 0xa9, 0x0c, 0xd0, 0xe3, 0xbd, 0xfd, 0xdd,
-
  0xed, 0x47, 0x83, 0x07, 0x83, 0x3d, 0x83, 0x27, 0xc4, 0xa5, 0x0f, 0x6a,
-
  0xca, 0xa3, 0x0f, 0x84, 0xfa, 0x12, 0xa4, 0x41, 0x96, 0x4b, 0xdd, 0x2f,
-
  0xf3, 0x09, 0xf9, 0xda, 0x2c, 0xa4, 0x03, 0x56, 0x02, 0xdb, 0x75, 0x01,
-
  0x76, 0xc9, 0x4b, 0xec, 0x15, 0x9b, 0xcf, 0x63, 0x1c, 0x84, 0x09, 0xfa,
-
  0x40, 0xaf, 0xda, 0x28, 0xfb, 0xe7, 0x32, 0xab, 0x41, 0x01, 0x23, 0x6f,
-
  0x5f, 0x3a, 0xc2, 0xe8, 0xe4, 0xab, 0x8a, 0xb4, 0x41, 0x58, 0x12, 0x9a,
-
  0x03, 0x31, 0x0a, 0x5f, 0x32, 0x97, 0x9a, 0x0d, 0x78, 0x95, 0x3b, 0x69,
-
  0x2d, 0x04, 0x81, 0x9b, 0x11, 0x4b, 0xc7, 0x27, 0xaa, 0xac, 0xaa, 0x81,
-
  0x11, 0x03, 0xdb, 0x7a, 0x5e, 0x5c, 0x21, 0x89, 0xf5, 0x09, 0xa5, 0xa2,
-
  0xf4, 0xa3, 0xa2, 0xd0, 0xee, 0x6e, 0x82, 0x9b, 0xb5, 0x7a, 0x1c, 0xaf,
-
  0x1f, 0x45, 0x78, 0x0a, 0xd2, 0x00, 0xa7, 0x0a, 0x72, 0x10, 0x48, 0x63,
-
  0xc2, 0xab, 0x35, 0x82, 0x79, 0x9a, 0xa0, 0xa9, 0x06, 0x61, 0x60, 0x39,
-
  0xc8, 0x95, 0x33, 0x39, 0x49, 0x9c, 0xe8, 0x00, 0xb0, 0x0d, 0xc9, 0x1d,
-
  0xbc, 0xeb, 0xf7, 0x99, 0xd4, 0x8d, 0x22, 0x07, 0xb7, 0xba, 0xb6, 0xbc,
-
  0x21, 0x83, 0x71, 0x70, 0x7b, 0xe3, 0x49, 0xd4, 0x43, 0xc6, 0xb9, 0xae,
-
  0x9b, 0x59, 0x6a, 0xbc, 0xf5, 0x6d, 0x81, 0x37, 0x96, 0x46, 0xbb, 0xa0,
-
  0x7d, 0xf5, 0x85, 0x3b, 0x93, 0xff, 0xfe, 0xfd, 0x93, 0xff, 0xde, 0xff,
-
  0x4b, 0xfe, 0xff, 0x19, 0xf2, 0xdf, 0xfb, 0x24, 0xe4, 0xbf, 0x77, 0x37,
-
  0xf2, 0xdf, 0xbb, 0x3f, 0xf2, 0xdf, 0x5d, 0x97, 0xfc, 0xf7, 0x6f, 0x43,
-
  0xfe, 0x40, 0x69, 0x98, 0x52, 0xd8, 0x24, 0xff, 0x07, 0xf7, 0x4b, 0xfe,
-
  0x58, 0xf0, 0x32, 0x6a, 0xc0, 0xab, 0xc3, 0xfa, 0x1f, 0x86, 0xab, 0xf7,
-
  0x71, 0x3d, 0x64, 0x26, 0xb3, 0x64, 0x25, 0x91, 0x25, 0xd4, 0xac, 0xb6,
-
  0xea, 0x95, 0xfe, 0xe0, 0x43, 0xf6, 0xc9, 0xa8, 0x6c, 0xff, 0x93, 0x50,
-
  0xd9, 0xfe, 0xdd, 0xa8, 0x6c, 0xff, 0x93, 0x30, 0xd9, 0xdd, 0x9b, 0xa8,
-
  0xac, 0x4c, 0x39, 0x52, 0xf1, 0x1f, 0x1a, 0x30, 0x0a, 0x7d, 0xfd, 0x4a,
-
  0xde, 0x9d, 0x03, 0x94, 0xf1, 0x7e, 0x6d, 0xab, 0xef, 0x21, 0x95, 0x6e,
-
  0x78, 0x72, 0xf4, 0xd7, 0xa1, 0x44, 0x3c, 0x8a, 0xcc, 0xad, 0x32, 0x39,
-
  0x7b, 0x1b, 0x40, 0x55, 0xa3, 0x3a, 0x1c, 0x9e, 0x9e, 0x47, 0x39, 0xb2,
-
  0x8d, 0x40, 0x69, 0xcc, 0x97, 0x15, 0xd6, 0x43, 0xc5, 0xa7, 0xd9, 0xf0,
-
  0x20, 0x60, 0xa9, 0xd2, 0x6a, 0x67, 0xe1, 0x5d, 0x1e, 0x88, 0x89, 0xbd,
-
  0x14, 0x98, 0xb6, 0xdc, 0x79, 0x71, 0xb3, 0xbe, 0x28, 0x09, 0x1f, 0x96,
-
  0x1e, 0xdd, 0xd2, 0x90, 0xe8, 0x55, 0xa3, 0x93, 0x71, 0x3d, 0x47, 0x4b,
-
  0x07, 0xaa, 0x76, 0x51, 0x2b, 0xa2, 0xdb, 0xb1, 0xec, 0x9a, 0x6f, 0x35,
-
  0xc6, 0xc1, 0x62, 0xd2, 0xd9, 0xe5, 0x92, 0xc2, 0xb3, 0xce, 0x7a, 0xe3,
-
  0x7b, 0x7e, 0x44, 0xff, 0x87, 0x46, 0xcd, 0x40, 0xf4, 0xeb, 0xc0, 0x89,
-
  0xc9, 0x09, 0x99, 0xd4, 0x4c, 0x51, 0x1b, 0xc1, 0xc3, 0x88, 0x5b, 0x53,
-
  0x15, 0xe3, 0xf7, 0xd5, 0x03, 0x68, 0xb2, 0xed, 0x1f, 0xe7, 0x2f, 0x12,
-
  0xfc, 0x86, 0x7f, 0x7f, 0x88, 0xfd, 0x62, 0xd0, 0x00, 0xff, 0x75, 0x81,
-
  0x7f, 0x4a, 0xc6, 0x99, 0x94, 0x52, 0x75, 0x77, 0x79, 0x1c, 0x5e, 0x68,
-
  0x17, 0x78, 0xd8, 0x14, 0x1b, 0x79, 0x5d, 0x78, 0x85, 0x37, 0x69, 0xd6,
-
  0x6e, 0x89, 0x31, 0x2f, 0x65, 0xd5, 0xdc, 0x6c, 0xd4, 0xf2, 0x83, 0x30,
-
  0xbe, 0x6e, 0xca, 0x19, 0xc2, 0x1a, 0xa2, 0x22, 0xca, 0x88, 0xe9, 0x42,
-
  0xac, 0x4e, 0xee, 0x06, 0x50, 0x65, 0xe0, 0x40, 0xe2, 0x72, 0x52, 0x55,
-
  0xcb, 0xb9, 0xb1, 0xd5, 0xee, 0xee, 0x3c, 0xf1, 0xed, 0xf0, 0x6f, 0x15,
-
  0x63, 0xd4, 0x56, 0x80, 0xa7, 0x64, 0x39, 0x05, 0x50, 0x37, 0x5a, 0x4d,
-
  0xa0, 0x5b, 0x0c, 0xe6, 0x09, 0xd8, 0xbd, 0x26, 0x29, 0x5b, 0x0b, 0x46,
-
  0x6c, 0xf3, 0xf2, 0xb1, 0xcf, 0x10, 0xff, 0x9d, 0x0c, 0x8d, 0x02, 0x5f,
-
  0x86, 0xfe, 0x7d, 0xce, 0x89, 0xf2, 0x02, 0xcf, 0xd0, 0xc8, 0xad, 0x61,
-
  0xca, 0xdf, 0xda, 0x6a, 0xcb, 0x7f, 0x7c, 0xb0, 0x83, 0xbb, 0xaa, 0xad,
-
  0xa0, 0xab, 0x79, 0xa6, 0x61, 0x99, 0x7f, 0xdc, 0x4f, 0x3a, 0x14, 0x36,
-
  0x65, 0x02, 0x9f, 0x29, 0xd5, 0xc2, 0xf4, 0x6f, 0x28, 0x93, 0x8f, 0x98,
-
  0xa6, 0x9c, 0xc4, 0x1f, 0x22, 0x71, 0x41, 0xe3, 0x0f, 0xf3, 0xf1, 0x1d,
-
  0x73, 0x31, 0xc4, 0xef, 0xc5, 0x7d, 0x35, 0x14, 0xb0, 0x87, 0x4d, 0xc3,
-
  0x97, 0x87, 0xdf, 0x12, 0xf0, 0x42, 0x88, 0xf8, 0xa6, 0x55, 0x92, 0xb4,
-
  0x82, 0x80, 0x49, 0xf5, 0x4d, 0xd8, 0xe6, 0x44, 0xe3, 0x35, 0x1f, 0x42,
-
  0x53, 0xd0, 0xa1, 0x17, 0x47, 0xac, 0x81, 0x61, 0x9c, 0xee, 0xc1, 0x76,
-
  0xcd, 0xbe, 0x57, 0x23, 0x36, 0x99, 0xf5, 0xa3, 0x70, 0xb6, 0x2e, 0x87,
-
  0x5c, 0x9a, 0x5e, 0xa8, 0x9b, 0x49, 0x99, 0x5c, 0x39, 0x66, 0x2f, 0x2e,
-
  0xfd, 0x37, 0xa5, 0xb8, 0x2f, 0x93, 0x6c, 0x07, 0xdf, 0x63, 0xde, 0x41,
-
  0x15, 0x48, 0x21, 0xa9, 0xc6, 0x25, 0x82, 0xc8, 0x93, 0xe5, 0xea, 0x82,
-
  0x6b, 0x72, 0x2f, 0xb0, 0xee, 0x38, 0x08, 0x9f, 0xe7, 0xa9, 0x56, 0xb7,
-
  0x31, 0xb3, 0xd6, 0xea, 0x33, 0x54, 0x4e, 0x67, 0x10, 0x82, 0x7b, 0xb3,
-
  0x0e, 0x1a, 0x93, 0x11, 0x8e, 0x72, 0x28, 0xd7, 0xdf, 0xc1, 0xd7, 0xfb,
-
  0x92, 0xca, 0x6a, 0xea, 0xb6, 0x2f, 0x12, 0x4c, 0xec, 0xbc, 0xc8, 0x16,
-
  0x6d, 0x41, 0x28, 0xfe, 0xba, 0xf8, 0x3a, 0xde, 0x92, 0x43, 0x59, 0x5c,
-
  0xa6, 0x15, 0xd9, 0x28, 0x18, 0x9d, 0x14, 0xb8, 0xc4, 0x05, 0x19, 0x84,
-
  0x45, 0x44, 0x20, 0x64, 0x51, 0xc4, 0x2f, 0xa2, 0xc0, 0x79, 0x0a, 0x2f,
-
  0xeb, 0xa8, 0xc6, 0xc4, 0x41, 0xa6, 0xcc, 0xa1, 0x91, 0xd2, 0x61, 0xad,
-
  0xa6, 0x9c, 0x4d, 0x8f, 0xb6, 0xbd, 0x08, 0x73, 0x35, 0xa2, 0xea, 0x7a,
-
  0x3e, 0x2a, 0x04, 0xf1, 0xb4, 0x58, 0xfc, 0xb7, 0xf1, 0x76, 0x7b, 0xe4,
-
  0x7a, 0x8f, 0xb8, 0x49, 0x6e, 0xa6, 0x77, 0x03, 0xc8, 0xe8, 0x56, 0x07,
-
  0xfc, 0x0f, 0x6b, 0xc4, 0x6d, 0x8a, 0x20, 0x43, 0xe9, 0x4e, 0x13, 0x09,
-
  0xa7, 0x69, 0x0a, 0x2c, 0x70, 0xb5, 0xc4, 0x7a, 0x61, 0x3c, 0xd5, 0x9b,
-
  0xe6, 0x9b, 0x1b, 0x81, 0x2b, 0xcd, 0x9d, 0x34, 0x15, 0xd3, 0x2e, 0x72,
-
  0x64, 0x42, 0x90, 0x25, 0xe5, 0xae, 0x1a, 0x5f, 0xa4, 0x73, 0x86, 0x1b,
-
  0xf2, 0x91, 0x5b, 0x11, 0xfb, 0x3e, 0x67, 0x22, 0xa5, 0x3b, 0x73, 0x99,
-
  0x1b, 0x13, 0x98, 0xbd, 0x83, 0xb5, 0xe2, 0x27, 0x57, 0x8e, 0x3c, 0x82,
-
  0xe6, 0x8f, 0xdf, 0xbd, 0x7d, 0x3d, 0x7c, 0x7b, 0x1a, 0x7b, 0xf5, 0xa1,
-
  0xdf, 0x9c, 0x1d, 0x3f, 0xc3, 0x94, 0xc7, 0xb3, 0x93, 0xa3, 0x93, 0x97,
-
  0xd1, 0xe6, 0xee, 0xd6, 0x4a, 0x22, 0x32, 0x64, 0x23, 0xd5, 0xda, 0x6b,
-
  0xc7, 0x87, 0xcc, 0x1c, 0xcd, 0x0c, 0x61, 0x13, 0x57, 0xd9, 0x6f, 0xed,
-
  0x27, 0x39, 0x6b, 0x2d, 0xd7, 0x88, 0x98, 0x53, 0xcf, 0x97, 0x9c, 0x9e,
-
  0x67, 0x5a, 0x71, 0x93, 0x7c, 0x28, 0x83, 0x35, 0x50, 0x30, 0xb1, 0x4f,
-
  0x21, 0x24, 0x1c, 0xa4, 0xef, 0xc0, 0x00, 0x77, 0x5d, 0x30, 0xee, 0xa6,
-
  0x7d, 0xae, 0xb0, 0xf9, 0xe6, 0x28, 0x18, 0x50, 0x64, 0x6a, 0xef, 0x93,
-
  0x9b, 0x44, 0x6b, 0x7c, 0xdb, 0x66, 0x8a, 0x41, 0x4b, 0xa4, 0xb6, 0x34,
-
  0x3d, 0x27, 0x0f, 0x5b, 0x16, 0x3c, 0xfb, 0x9c, 0x25, 0xd5, 0x6a, 0x35,
-
  0xad, 0x72, 0x09, 0x99, 0x2b, 0x64, 0x6b, 0xe6, 0x0d, 0xaa, 0xdc, 0x22,
-
  0x31, 0xa3, 0x45, 0x6e, 0xf4, 0xa5, 0x01, 0x9d, 0x7f, 0x4f, 0x34, 0xe0,
-
  0x57, 0x60, 0x47, 0xf2, 0x8c, 0x85, 0x0d, 0x33, 0x78, 0x29, 0x65, 0x20,
-
  0x79, 0xae, 0xf0, 0x00, 0x7e, 0xeb, 0x10, 0x05, 0x21, 0x3d, 0x7b, 0x79,
-
  0x18, 0xfc, 0x32, 0x6e, 0x32, 0x02, 0x14, 0xdb, 0x41, 0x61, 0x73, 0x78,
-
  0x73, 0x53, 0x41, 0xf4, 0xee, 0xed, 0xe8, 0x4b, 0x4d, 0x25, 0xe2, 0xc5,
-
  0x24, 0x68, 0xe3, 0x22, 0xb2, 0x6c, 0xed, 0x4c, 0xa6, 0x23, 0xd6, 0xb6,
-
  0xb9, 0x88, 0x18, 0xd6, 0xd5, 0xc7, 0x9d, 0xeb, 0xf3, 0xf6, 0x89, 0x58,
-
  0xb0, 0x62, 0x07, 0xbf, 0x6b, 0xd6, 0xfc, 0x15, 0x54, 0x3c, 0x1c, 0x0a,
-
  0x8f, 0x8a, 0x61, 0xb1, 0x69, 0x34, 0x7d, 0xc2, 0x52, 0xc6, 0xc1, 0x7d,
-
  0x6f, 0xc6, 0xe6, 0xa5, 0xb2, 0x72, 0x7c, 0xe2, 0xa6, 0x56, 0x51, 0x79,
-
  0xf4, 0x70, 0xb0, 0xb7, 0x35, 0x70, 0x23, 0x2b, 0x09, 0x3c, 0xad, 0x8c,
-
  0xfe, 0x8c, 0x3f, 0x15, 0xbe, 0x09, 0x7f, 0xe7, 0x69, 0x78, 0x06, 0x1e,
-
  0xbe, 0x47, 0x9c, 0xaa, 0x61, 0x82, 0x50, 0xc6, 0x27, 0xfe, 0xbc, 0x28,
-
  0x26, 0x52, 0xa4, 0x85, 0x8b, 0xb2, 0xac, 0x3a, 0x5f, 0xbc, 0x44, 0xb7,
-
  0x39, 0x5d, 0x9f, 0x28, 0x5c, 0xc4, 0x19, 0xc5, 0xd7, 0xad, 0x4d, 0x5a,
-
  0x43, 0x85, 0xc5, 0x56, 0xbc, 0x43, 0x74, 0xe3, 0xf1, 0x71, 0x3c, 0xd4,
-
  0x7c, 0x82, 0x56, 0x1c, 0x21, 0xf2, 0xfa, 0xab, 0x24, 0x32, 0xf0, 0x6f,
-
  0x54, 0x87, 0xbe, 0x53, 0x5c, 0x24, 0x06, 0x44, 0x48, 0xa7, 0xa4, 0xa0,
-
  0x10, 0xfc, 0x78, 0x9f, 0xbe, 0xa4, 0x30, 0x4e, 0x93, 0x4e, 0x8b, 0x55,
-
  0xe3, 0x02, 0x90, 0xc7, 0x54, 0x48, 0x99, 0xf0, 0x06, 0xac, 0xce, 0x67,
-
  0x0a, 0xb2, 0x6e, 0x00, 0x65, 0x6c, 0xf4, 0x4d, 0x01, 0x80, 0xd9, 0x35,
-
  0x85, 0xfd, 0x65, 0x1f, 0xf8, 0xdc, 0xfe, 0x9e, 0x96, 0x85, 0x1f, 0xae,
-
  0x4e, 0x02, 0xa1, 0xd6, 0x79, 0x04, 0xc5, 0xef, 0xf0, 0x12, 0x18, 0x2f,
-
  0xdd, 0xda, 0xe6, 0x43, 0xec, 0xd5, 0x3b, 0x4f, 0x7f, 0x86, 0xb9, 0x21,
-
  0x66, 0xba, 0x5c, 0x03, 0x66, 0x2c, 0x19, 0x95, 0xa1, 0xcd, 0x34, 0xc4,
-
  0xd8, 0x39, 0xdf, 0x02, 0xe4, 0x47, 0x48, 0xeb, 0x9e, 0x71, 0x86, 0x94,
-
  0x90, 0x09, 0x2a, 0xd4, 0x16, 0xd9, 0xc3, 0xe2, 0x4e, 0xa1, 0xa0, 0x61,
-
  0x6a, 0x51, 0x4a, 0x66, 0x8d, 0x7f, 0x2f, 0xc5, 0x20, 0x71, 0xa4, 0xf9,
-
  0xb5, 0x66, 0x37, 0xda, 0x9c, 0x55, 0x34, 0x16, 0x15, 0xe4, 0xa7, 0xcb,
-
  0x6a, 0x5b, 0xaa, 0x45, 0x31, 0x29, 0xcc, 0x10, 0xfd, 0x21, 0x35, 0xc7,
-
  0x1c, 0xe2, 0x4a, 0x5f, 0x9b, 0x65, 0x90, 0x5c, 0x49, 0x77, 0x2d, 0x36,
-
  0xa9, 0xf4, 0xb5, 0x06, 0x48, 0x53, 0x7f, 0xda, 0xe2, 0xca, 0x65, 0xd8,
-
  0x22, 0xf7, 0x2b, 0x19, 0x16, 0xaa, 0xe5, 0xe8, 0x37, 0x82, 0xe1, 0x2c,
-
  0x18, 0xe7, 0x4b, 0x96, 0x41, 0x0c, 0x3b, 0xb0, 0xab, 0xf0, 0x00, 0x07,
-
  0x4e, 0xd4, 0xc0, 0x1f, 0x42, 0xcd, 0x51, 0xe8, 0x76, 0xe6, 0xe4, 0x14,
-
  0x45, 0x4d, 0x58, 0x8e, 0x20, 0x92, 0x72, 0xaa, 0x67, 0xb3, 0x83, 0x7d,
-
  0xc7, 0x53, 0x3c, 0x8a, 0x9c, 0x38, 0xdb, 0x12, 0x20, 0x78, 0x2d, 0x39,
-
  0x9f, 0xdc, 0xa0, 0x67, 0xe0, 0xe3, 0x9d, 0x6d, 0x29, 0x17, 0xae, 0xfa,
-
  0x7f, 0xc6, 0x1f, 0xfe, 0x1c, 0x9a, 0x50, 0x20, 0x98, 0x39, 0x29, 0x9c,
-
  0x10, 0x1f, 0x27, 0x16, 0x4b, 0xaf, 0x77, 0x75, 0xe0, 0x70, 0x8f, 0xd5,
-
  0x6d, 0x13, 0xcf, 0x58, 0xa3, 0x83, 0xb7, 0x22, 0xc5, 0x91, 0x34, 0xae,
-
  0x95, 0xb1, 0x2c, 0xc5, 0xc3, 0x6f, 0x93, 0xe5, 0x98, 0x90, 0x4d, 0x04,
-
  0x7b, 0xca, 0x14, 0x15, 0x61, 0x2d, 0xbd, 0xad, 0xb2, 0x8d, 0xcb, 0x0c,
-
  0x6b, 0xea, 0x61, 0x40, 0x6d, 0x32, 0x45, 0xf8, 0x91, 0x12, 0xff, 0xc1,
-
  0x7d, 0xa6, 0x14, 0x16, 0x46, 0xcd, 0xb1, 0x00, 0x3a, 0x8b, 0xa2, 0x46,
-
  0x0f, 0x3b, 0x1d, 0xf4, 0x89, 0x5f, 0x7a, 0xed, 0x1c, 0xce, 0xfb, 0xb2,
-
  0x72, 0xb7, 0x44, 0x95, 0x24, 0x6c, 0x96, 0xa3, 0x80, 0x51, 0x72, 0x93,
-
  0x54, 0x55, 0x0e, 0x5e, 0x72, 0x98, 0x5c, 0x30, 0x8d, 0x86, 0x33, 0x5c,
-
  0xc9, 0xbe, 0xab, 0x22, 0x06, 0xe1, 0x77, 0xae, 0xaa, 0x3f, 0xef, 0x21,
-
  0x58, 0x50, 0x20, 0x7b, 0x53, 0x9d, 0xe8, 0xdb, 0xd4, 0x3d, 0x32, 0xd4,
-
  0x59, 0x04, 0x5a, 0x1f, 0xa0, 0xde, 0x24, 0x9d, 0x50, 0x28, 0x5e, 0x8e,
-
  0x41, 0x02, 0x39, 0xc7, 0x1d, 0x88, 0xe5, 0x44, 0x79, 0x34, 0x8e, 0x92,
-
  0x72, 0x96, 0x73, 0x54, 0x80, 0x11, 0x70, 0xc3, 0x4b, 0x27, 0xe7, 0xb4,
-
  0xb7, 0xba, 0xa3, 0x66, 0xa0, 0x52, 0xd0, 0x9d, 0x6a, 0xa0, 0xde, 0x47,
-
  0xa4, 0x56, 0x9b, 0x7e, 0xfb, 0x15, 0x9c, 0xa4, 0xbb, 0x5c, 0x81, 0x72,
-
  0x91, 0xba, 0x02, 0xa7, 0x87, 0xfe, 0xa8, 0xe9, 0xd0, 0x92, 0x4f, 0xbc,
-
  0x52, 0xae, 0x5c, 0x60, 0xe9, 0x09, 0x60, 0x25, 0xcb, 0xac, 0x26, 0x5a,
-
  0x6c, 0x81, 0x43, 0x28, 0x24, 0x81, 0x98, 0x4b, 0xe7, 0x73, 0x2f, 0xcf,
-
  0x39, 0x37, 0xb1, 0x22, 0xa4, 0x14, 0xb2, 0x7d, 0x90, 0x73, 0x29, 0x49,
-
  0xaa, 0x13, 0x3b, 0x29, 0x51, 0x0f, 0x5b, 0xc9, 0x48, 0x21, 0x22, 0x3a,
-
  0x43, 0x95, 0x33, 0xec, 0x7a, 0xd8, 0x36, 0x09, 0x21, 0x40, 0xfb, 0xf9,
-
  0x24, 0x06, 0xee, 0xb7, 0x58, 0x6d, 0xba, 0x77, 0x67, 0xfc, 0x09, 0xb2,
-
  0xd4, 0x9b, 0xed, 0xeb, 0xdf, 0x94, 0x49, 0x6c, 0x13, 0xd7, 0x27, 0x68,
-
  0x93, 0x62, 0xdd, 0xeb, 0x8e, 0x56, 0x28, 0xf3, 0x4b, 0x23, 0x6b, 0x9c,
-
  0x3f, 0x99, 0xb4, 0x60, 0x07, 0x1a, 0x4f, 0xde, 0xa8, 0xe8, 0xd2, 0x66,
-
  0x7c, 0xc7, 0x8d, 0xb6, 0x00, 0x40, 0x9c, 0xdd, 0xd5, 0xdd, 0xf4, 0xe4,
-
  0x3f, 0x49, 0xd6, 0xe3, 0x8d, 0x95, 0x3d, 0xa5, 0x52, 0x73, 0x32, 0x50,
-
  0x32, 0x53, 0xe4, 0x02, 0xb9, 0xe3, 0xf4, 0xc5, 0x46, 0x13, 0x6f, 0x93,
-
  0x31, 0xef, 0x82, 0x2b, 0x82, 0xc8, 0x73, 0xc2, 0x0e, 0xcc, 0x05, 0xe4,
-
  0x0d, 0x52, 0x28, 0x31, 0x64, 0x27, 0xa6, 0xdb, 0x8b, 0x3a, 0xc2, 0x81,
-
  0x65, 0x37, 0x14, 0x40, 0x72, 0x97, 0xf7, 0x53, 0xd1, 0x09, 0xb7, 0xfe,
-
  0x1f, 0xa0, 0x92, 0x50, 0x19, 0xb5, 0x2e, 0x3a, 0x19, 0x27, 0x18, 0x8d,
-
  0x15, 0xce, 0x4b, 0x1d, 0x0a, 0x1b, 0x8e, 0xf5, 0x29, 0xbc, 0xf5, 0x35,
-
  0xb3, 0xdf, 0x71, 0x78, 0x50, 0xcc, 0x5c, 0x57, 0xa6, 0x72, 0xab, 0xa3,
-
  0xcf, 0xa8, 0xd0, 0xdb, 0x41, 0x1c, 0x1d, 0x72, 0x45, 0xa8, 0x1a, 0x0b,
-
  0x25, 0x7c, 0x30, 0x0b, 0x7e, 0x87, 0xe5, 0x37, 0xed, 0x62, 0x64, 0x61,
-
  0xdf, 0xac, 0x14, 0x45, 0x61, 0xf3, 0x87, 0xe2, 0x5b, 0xc2, 0x8d, 0xb2,
-
  0x08, 0x3f, 0x2d, 0x9b, 0x51, 0xa7, 0x59, 0xb9, 0xd1, 0x7c, 0x30, 0x77,
-
  0xde, 0xdd, 0x23, 0x7a, 0xe8, 0xe3, 0xf6, 0x88, 0x9a, 0xf8, 0xdc, 0x7b,
-
  0x44, 0x83, 0xd8, 0x36, 0x08, 0xce, 0x92, 0xd3, 0x7e, 0x4f, 0x1b, 0xc5,
-
  0xdb, 0xe3, 0x6e, 0x87, 0xee, 0x90, 0xf4, 0x3c, 0xd0, 0x0d, 0xf1, 0xb1,
-
  0xae, 0x3a, 0xf7, 0x07, 0xda, 0x8c, 0xeb, 0xeb, 0x45, 0x1a, 0x3d, 0xc5,
-
  0x7f, 0x57, 0xec, 0x91, 0x79, 0xf0, 0xa3, 0xb6, 0xc9, 0xb4, 0xd2, 0x2c,
-
  0xd3, 0xb7, 0x6a, 0xb3, 0xbc, 0x2c, 0xec, 0x8f, 0xad, 0xe7, 0xde, 0x1e,
-
  0x0a, 0xc6, 0xc5, 0xba, 0x9f, 0x72, 0x84, 0xed, 0xfd, 0x6c, 0x5a, 0x5a,
-
  0xd6, 0x83, 0x5b, 0x9c, 0x12, 0x62, 0x64, 0xf8, 0xef, 0x3f, 0x84, 0xa7,
-
  0xfe, 0xda, 0xb9, 0x13, 0xc7, 0x7d, 0xd9, 0x8d, 0xbb, 0x6c, 0x44, 0xa3,
-
  0xc3, 0xcf, 0x08, 0x79, 0xf0, 0xc9, 0x16, 0x9b, 0x76, 0xf4, 0x36, 0x2b,
-
  0x9e, 0x2d, 0x2e, 0xd0, 0x84, 0xf0, 0x34, 0x84, 0x12, 0xe9, 0x50, 0xbd,
-
  0x3c, 0xf6, 0x31, 0x4b, 0x2d, 0x4d, 0x7c, 0x66, 0xd6, 0x24, 0xa3, 0x38,
-
  0x3e, 0x7a, 0xf6, 0xfc, 0x38, 0x86, 0x7f, 0x87, 0x87, 0xf1, 0xe1, 0xf1,
-
  0x70, 0xef, 0xe1, 0xa3, 0xf8, 0xe8, 0xe8, 0xd5, 0x93, 0x8f, 0xdd, 0x00,
-
  0x69, 0x9e, 0x48, 0x73, 0x59, 0xa2, 0x9b, 0x8a, 0x6e, 0x70, 0x37, 0xe2,
-
  0xe1, 0xe6, 0x2d, 0x29, 0x67, 0xb6, 0x2c, 0xea, 0x8a, 0x2d, 0x91, 0xc7,
-
  0x3e, 0x66, 0x4b, 0xa4, 0x89, 0xcf, 0xbc, 0x25, 0x32, 0x8a, 0x32, 0x45,
-
  0x4b, 0x4a, 0x75, 0x1f, 0x57, 0xba, 0x36, 0xb9, 0xfe, 0xe2, 0xb3, 0x90,
-
  0xb5, 0xc2, 0xe6, 0xe8, 0x8a, 0xdd, 0xcf, 0x04, 0xe5, 0xa9, 0x29, 0xd2,
-
  0x92, 0xd8, 0x7d, 0x57, 0xa9, 0x5b, 0x80, 0xa3, 0x7c, 0xb1, 0x5b, 0xfa,
-
  0xc2, 0x77, 0xdb, 0x36, 0xc7, 0x86, 0xdc, 0x7d, 0xb3, 0x88, 0x2c, 0x5d,
-
  0x7c, 0x2a, 0x19, 0x59, 0x9a, 0xff, 0x4c, 0x42, 0x32, 0x49, 0xe8, 0xfe,
-
  0xb6, 0x72, 0xee, 0x77, 0xf4, 0x94, 0x7f, 0x6e, 0x7f, 0x1b, 0x3a, 0x5a,
-
  0x12, 0x6c, 0x07, 0xb3, 0xc4, 0x25, 0x90, 0x37, 0xd0, 0xb8, 0x20, 0xa5,
-
  0xd1, 0xc4, 0x46, 0xa7, 0x11, 0x33, 0xb4, 0xcd, 0x9a, 0x6c, 0x80, 0xaf,
-
  0x7a, 0x8e, 0x19, 0x85, 0x28, 0x1d, 0x18, 0x14, 0x10, 0x53, 0xe5, 0xdd,
-
  0xe4, 0x9a, 0xa0, 0x81, 0x33, 0x75, 0x3a, 0xac, 0x4c, 0xfd, 0xcf, 0x10,
-
  0xc4, 0x23, 0x46, 0xd9, 0xc1, 0x21, 0x44, 0x63, 0xa2, 0x45, 0x89, 0x88,
-
  0x9f, 0xe3, 0x92, 0xc8, 0x78, 0x91, 0x1b, 0x08, 0x06, 0x86, 0xb2, 0x01,
-
  0x22, 0x44, 0x1f, 0x75, 0x96, 0xa1, 0x5e, 0xd1, 0x98, 0x36, 0x63, 0xc4,
-
  0x95, 0xe8, 0xe8, 0xe4, 0xf5, 0xeb, 0xe3, 0xa3, 0x76, 0x50, 0x20, 0xe1,
-
  0x35, 0x10, 0xf8, 0x1d, 0x1a, 0xca, 0xd4, 0x36, 0x19, 0xcc, 0xad, 0xa7,
-
  0x3c, 0x94, 0xda, 0x84, 0x6b, 0xc9, 0x08, 0xe0, 0xaf, 0x2b, 0x01, 0x94,
-
  0xa4, 0xaf, 0x25, 0x08, 0x8b, 0x2b, 0x6c, 0x0b, 0xed, 0x7a, 0xb5, 0x35,
-
  0x03, 0x94, 0x6c, 0x1d, 0x3a, 0x14, 0x58, 0x54, 0x2d, 0x4b, 0x41, 0x9b,
-
  0x26, 0x7b, 0xbb, 0x8e, 0x80, 0x86, 0x9b, 0x4c, 0x26, 0xdb, 0x82, 0x48,
-
  0x23, 0xb8, 0xc4, 0xd0, 0x71, 0xd7, 0x29, 0xe4, 0x9a, 0xe3, 0x88, 0x50,
-
  0x18, 0x17, 0xd3, 0x98, 0x62, 0x26, 0xe6, 0x49, 0xf9, 0x1e, 0x23, 0x6b,
-
  0x1d, 0x9c, 0x1d, 0x42, 0xa3, 0xa6, 0xca, 0xe0, 0x93, 0x49, 0xa8, 0x38,
-
  0x13, 0x85, 0x7e, 0x10, 0xc2, 0x99, 0xc4, 0x74, 0xc8, 0x80, 0x88, 0x0d,
-
  0xe7, 0xf5, 0x01, 0x66, 0xa1, 0xe9, 0xeb, 0x79, 0x7a, 0x85, 0xdd, 0x70,
-
  0xad, 0x41, 0x2c, 0xb2, 0xe4, 0x17, 0x09, 0x2e, 0xd3, 0x7a, 0x59, 0xe6,
-
  0xcc, 0x80, 0xaf, 0x1d, 0x37, 0xd6, 0x9c, 0x80, 0x5c, 0x11, 0xec, 0xba,
-
  0x42, 0x90, 0x00, 0x01, 0x20, 0xf4, 0xd6, 0xea, 0x39, 0x13, 0x53, 0x23,
-
  0x6e, 0xcf, 0x4b, 0x97, 0x33, 0x45, 0x71, 0x46, 0xa9, 0x12, 0x39, 0xf1,
-
  0xc6, 0xae, 0xd2, 0x8b, 0xbc, 0xda, 0xb4, 0x0d, 0x68, 0x57, 0xad, 0x1a,
-
  0x0d, 0xe8, 0xd6, 0x26, 0x1d, 0x01, 0x73, 0x43, 0x45, 0x83, 0x65, 0xe6,
-
  0xfb, 0x10, 0x61, 0x75, 0xdb, 0xe0, 0xb9, 0x35, 0xee, 0x2b, 0x02, 0xaf,
-
  0x94, 0xe7, 0x4b, 0x46, 0x1b, 0xc6, 0xa2, 0xba, 0x74, 0x58, 0xe3, 0x80,
-
  0x53, 0x3a, 0x62, 0x98, 0x54, 0x75, 0xa2, 0x51, 0xec, 0x1f, 0x2c, 0x2f,
-
  0x6e, 0x84, 0x2c, 0xbe, 0x06, 0x59, 0x70, 0x24, 0x8c, 0x1c, 0xe0, 0x2c,
-
  0x5f, 0x2c, 0xeb, 0x50, 0xed, 0x1f, 0x29, 0x72, 0xf5, 0x6d, 0xdc, 0x0a,
-
  0x5f, 0xa3, 0xca, 0xb1, 0xee, 0x9e, 0x72, 0x9d, 0x5b, 0xf4, 0x53, 0x54,
-
  0xf5, 0x24, 0xcb, 0x6f, 0x6d, 0x52, 0xf5, 0x41, 0xc7, 0xf1, 0xa4, 0x38,
-
  0xc4, 0xba, 0x4d, 0x8e, 0x90, 0x36, 0x2d, 0x98, 0xb7, 0x94, 0x45, 0x04,
-
  0x0d, 0xe9, 0x96, 0xcb, 0x7d, 0x3a, 0x38, 0x92, 0x66, 0x3f, 0xbd, 0x9f,
-
  0xe3, 0xef, 0x31, 0x52, 0x33, 0x7e, 0x0d, 0x9b, 0x71, 0x10, 0xfd, 0xa5,
-
  0x48, 0x7b, 0x4e, 0xf0, 0x56, 0x37, 0x93, 0xbf, 0x4d, 0xd3, 0x18, 0x8f,
-
  0x17, 0x1f, 0x9e, 0xd3, 0xc9, 0x81, 0x93, 0xbe, 0x28, 0xb3, 0xea, 0x1e,
-
  0x5b, 0x7f, 0x0e, 0xfc, 0xe5, 0xe0, 0x76, 0xcd, 0xdd, 0x06, 0xee, 0xb7,
-
  0x91, 0xd6, 0xf3, 0x38, 0x24, 0x56, 0x50, 0x65, 0x8f, 0x8e, 0xfb, 0xa6,
-
  0x69, 0xd3, 0xab, 0x11, 0xa2, 0xb7, 0x51, 0x3d, 0xc5, 0xc4, 0x5d, 0xee,
-
  0x99, 0xf2, 0x2d, 0x24, 0xe7, 0x85, 0x20, 0xae, 0x07, 0x12, 0x98, 0x8a,
-
  0xb3, 0x61, 0xab, 0x6c, 0x55, 0x1b, 0xde, 0x51, 0x70, 0x7d, 0x35, 0xaa,
-
  0xc8, 0xb2, 0xdb, 0x0c, 0x98, 0xf5, 0x8d, 0x6f, 0x9c, 0xa1, 0x5b, 0xa3,
-
  0x19, 0x99, 0x44, 0x1e, 0x36, 0xdf, 0xc3, 0xf9, 0x97, 0xd1, 0x84, 0x89,
-
  0x5e, 0xa5, 0x08, 0xae, 0x4d, 0xa7, 0xb1, 0x37, 0x0c, 0x19, 0x82, 0x78,
-
  0xb1, 0x95, 0x38, 0xf4, 0x6e, 0xb0, 0xe6, 0x35, 0xd7, 0xad, 0x03, 0xac,
-
  0xff, 0xe3, 0xa2, 0x9b, 0xb4, 0xf1, 0xbb, 0x09, 0x39, 0x3c, 0xae, 0x8f,
-
  0x15, 0x65, 0x06, 0xad, 0xf6, 0x42, 0xf5, 0x5e, 0xee, 0x82, 0x6a, 0xca,
-
  0x35, 0x77, 0x1c, 0xb2, 0x7c, 0x32, 0xd8, 0x0d, 0x51, 0xa5, 0xd6, 0x0f,
-
  0xe8, 0xd2, 0x31, 0x1a, 0x45, 0x06, 0xd6, 0x56, 0x34, 0x02, 0xdb, 0x69,
-
  0xda, 0xba, 0xf7, 0x60, 0x35, 0xa7, 0xf1, 0xbb, 0xed, 0xa8, 0x19, 0xda,
-
  0xc7, 0xa9, 0x1e, 0xed, 0xc0, 0xd3, 0x66, 0x9d, 0x86, 0x9b, 0xf5, 0x8f,
-
  0xf7, 0xe9, 0xf5, 0xad, 0xcc, 0x50, 0xe6, 0xb9, 0x8f, 0x50, 0xff, 0x4c,
-
  0x1b, 0xae, 0xfe, 0x67, 0xcb, 0x30, 0x8b, 0x06, 0xd8, 0xb2, 0x81, 0x7c,
-
  0x22, 0x2b, 0x94, 0x19, 0x0b, 0x26, 0xe3, 0x3a, 0x1f, 0x46, 0x14, 0x1f,
-
  0x7a, 0x2f, 0x66, 0x11, 0x83, 0x88, 0xb0, 0x96, 0x42, 0x48, 0x59, 0xf0,
-
  0xf0, 0xcf, 0xca, 0xad, 0xf8, 0x28, 0x5b, 0x20, 0xa5, 0xc6, 0xdf, 0xda,
-
  0x0a, 0xf8, 0x89, 0x94, 0xf0, 0x7b, 0x5f, 0x6a, 0xde, 0xcd, 0xf5, 0xd7,
-
  0xdb, 0xdc, 0x7d, 0xb7, 0xf3, 0x7c, 0xbd, 0x36, 0x57, 0x65, 0xb4, 0x39,
-
  0x3c, 0x7d, 0x7d, 0xfc, 0xc3, 0xc9, 0x56, 0x14, 0x74, 0x84, 0x79, 0xa1,
-
  0x58, 0x8e, 0x7e, 0xbe, 0x52, 0x23, 0xb7, 0x97, 0xb1, 0xab, 0x94, 0x07,
-
  0x72, 0x47, 0x9c, 0xb1, 0x98, 0xa1, 0x48, 0x6c, 0xf1, 0x7a, 0x0a, 0xba,
-
  0xed, 0xf1, 0x53, 0xe9, 0xe8, 0xb6, 0x87, 0x7b, 0x56, 0xd3, 0xd7, 0xd7,
-
  0xcc, 0x11, 0x86, 0xf8, 0x96, 0x5b, 0x1d, 0x40, 0xda, 0xff, 0x58, 0x27,
-
  0x27, 0x81, 0x20, 0x37, 0x8c, 0x2d, 0xd4, 0x4b, 0x63, 0xdb, 0x6e, 0xa3,
-
  0x9b, 0x06, 0x36, 0xf1, 0xd3, 0xa0, 0xaa, 0x3b, 0x8d, 0xaf, 0xda, 0xba,
-
  0xbb, 0x8b, 0xb5, 0x1e, 0x85, 0xb8, 0x7b, 0x18, 0x40, 0x32, 0xe7, 0x2f,
-
  0x56, 0x41, 0xf1, 0x58, 0x4e, 0x49, 0x4f, 0x7d, 0xc4, 0x85, 0x75, 0x1b,
-
  0x58, 0x9e, 0x4f, 0x6f, 0xad, 0x6f, 0xc2, 0xf3, 0xdc, 0x2b, 0xfb, 0xf4,
-
  0xd2, 0x56, 0x4c, 0xeb, 0xb7, 0xe0, 0x9c, 0xb7, 0x07, 0x6e, 0xf1, 0x83,
-
  0x28, 0x57, 0x61, 0xb7, 0x18, 0x00, 0xa2, 0x6e, 0xe0, 0x16, 0xcc, 0x4a,
-
  0x75, 0x60, 0x5b, 0x9c, 0xd0, 0x90, 0x2e, 0xdc, 0x96, 0xff, 0x2b, 0x81,
-
  0x5b, 0x1a, 0xc8, 0x2d, 0x68, 0x2d, 0xa3, 0xe2, 0x9d, 0x01, 0xf0, 0x16,
-
  0xa7, 0xe0, 0x25, 0x23, 0xb7, 0xac, 0x02, 0x6e, 0x71, 0x70, 0x5b, 0x56,
-
  0xc0, 0xb6, 0x90, 0x04, 0xb1, 0x12, 0xb8, 0xe5, 0x8e, 0xc8, 0x2d, 0x1d,
-
  0xc0, 0x2d, 0x6b, 0xe3, 0xb6, 0xdc, 0x33, 0x70, 0x8b, 0x2b, 0x41, 0xdd,
-
  0x05, 0x82, 0xe4, 0xce, 0x72, 0xec, 0x0d, 0xb6, 0x91, 0x8f, 0xc5, 0x21,
-
  0xf1, 0x1b, 0xb9, 0x47, 0x34, 0x92, 0x46, 0xbb, 0x2b, 0x65, 0xb3, 0x2f,
-
  0x43, 0x1c, 0x06, 0x49, 0x36, 0x1b, 0x0b, 0xb2, 0xfa, 0x53, 0xfc, 0xf7,
-
  0x9b, 0x15, 0x96, 0xaf, 0x66, 0xa6, 0xa3, 0x93, 0xcd, 0x22, 0xcd, 0xb0,
-
  0x0d, 0xcf, 0x5a, 0xaa, 0x23, 0x1f, 0xc5, 0x51, 0x4e, 0x53, 0x38, 0xf8,
-
  0x2f, 0x3c, 0xac, 0x4f, 0xbd, 0xfd, 0xab, 0x77, 0xbf, 0x31, 0x94, 0x5e,
-
  0x75, 0x51, 0x2e, 0xb1, 0xa6, 0xf5, 0x75, 0xef, 0xae, 0xe2, 0x54, 0xa3,
-
  0xbd, 0x55, 0x1b, 0xf6, 0x60, 0x3f, 0xb8, 0x61, 0xd5, 0x2c, 0xa6, 0x6d,
-
  0xc0, 0xea, 0x11, 0x9e, 0x5b, 0xcb, 0x5e, 0xcc, 0xad, 0xe7, 0x3e, 0x42,
-
  0xd5, 0xef, 0xe8, 0xf9, 0x86, 0x82, 0xd0, 0xad, 0xe6, 0xda, 0xb9, 0xf8,
-
  0xdd, 0x3a, 0x7f, 0xab, 0x9b, 0x3b, 0x6e, 0x5a, 0x6b, 0xac, 0x1f, 0xa9,
-
  0x02, 0xb5, 0x9b, 0x5b, 0x5f, 0x07, 0xa2, 0x16, 0x96, 0x35, 0xd6, 0x44,
-
  0xcf, 0x80, 0xd9, 0x93, 0x43, 0x7f, 0xf5, 0xde, 0xb5, 0x1e, 0xbe, 0xaf,
-
  0x0d, 0x6c, 0x37, 0xdb, 0x25, 0xcf, 0xc6, 0x7e, 0x7e, 0xe5, 0x8a, 0x4d,
-
  0x94, 0x88, 0xd2, 0xf6, 0x36, 0x3a, 0x9d, 0x05, 0x6e, 0xc3, 0x8f, 0xd8,
-
  0xda, 0xf6, 0x2c, 0xee, 0xba, 0xbf, 0xa6, 0x2a, 0x51, 0xb0, 0xd5, 0x40,
-
  0x90, 0xd8, 0xaa, 0x30, 0xa4, 0xc7, 0x41, 0x3b, 0x71, 0x3d, 0xab, 0x76,
-
  0xf7, 0x6d, 0x50, 0x86, 0xfc, 0xb2, 0xc4, 0xe2, 0x12, 0xa1, 0x00, 0x0d,
-
  0x16, 0xe7, 0x86, 0xa6, 0xdc, 0x8a, 0x04, 0x68, 0xd3, 0x5b, 0x14, 0xfb,
-
  0x9b, 0x3a, 0x55, 0xff, 0x5a, 0xe8, 0x69, 0x01, 0x78, 0x45, 0x2a, 0x65,
-
  0xe5, 0x92, 0x0b, 0x29, 0x57, 0x08, 0xa4, 0xa8, 0xda, 0x40, 0x45, 0x22,
-
  0xcd, 0xee, 0x60, 0x9f, 0x0d, 0xcd, 0x9a, 0xa2, 0x21, 0xe3, 0x6c, 0xc7,
-
  0xcb, 0xf3, 0x00, 0xe6, 0x08, 0xd6, 0xaf, 0x9e, 0x4f, 0x60, 0xb4, 0xd9,
-
  0x44, 0x9f, 0x1f, 0x44, 0x6f, 0xd0, 0xb3, 0xb2, 0x5c, 0x60, 0xda, 0x80,
-
  0x48, 0x4b, 0xd0, 0x76, 0x24, 0xdf, 0x87, 0x9a, 0xd3, 0xcc, 0x43, 0xce,
-
  0x57, 0x04, 0x66, 0xff, 0xf6, 0xcd, 0x4b, 0x3f, 0x97, 0x4c, 0x37, 0x94,
-
  0xf2, 0xee, 0xab, 0x74, 0x7b, 0x52, 0x8c, 0xab, 0x6d, 0xdc, 0x35, 0xed,
-
  0xf8, 0xa2, 0x9e, 0xcf, 0xbe, 0x58, 0x59, 0xc3, 0x26, 0x63, 0xf9, 0x18,
-
  0x4b, 0x58, 0x60, 0x9d, 0xd1, 0x25, 0xe7, 0x48, 0x2a, 0x04, 0x09, 0x11,
-
  0x59, 0xe6, 0x98, 0x5e, 0xe1, 0x7b, 0xaf, 0x64, 0x36, 0x81, 0xb3, 0xc1,
-
  0x84, 0xe0, 0xbf, 0x28, 0xd4, 0x50, 0x7e, 0x48, 0xa0, 0x00, 0x48, 0x12,
-
  0x4d, 0x32, 0xb4, 0xcc, 0xa3, 0xc3, 0xcb, 0x01, 0x5f, 0xf3, 0xf7, 0x86,
-
  0x61, 0xf3, 0xd1, 0x41, 0x00, 0x17, 0x18, 0xc9, 0x83, 0xb2, 0x19, 0xad,
-
  0x1d, 0x37, 0xf0, 0x00, 0x5c, 0x5b, 0x80, 0x29, 0xab, 0x7d, 0xa4, 0x84,
-
  0xc4, 0x6e, 0x88, 0xad, 0xf7, 0x48, 0xf2, 0xf3, 0x5e, 0xaf, 0xcd, 0xb1,
-
  0xc0, 0xec, 0xdf, 0x1d, 0x1e, 0x0f, 0xdf, 0xed, 0xee, 0x3d, 0x79, 0xf7,
-
  0xc3, 0xd1, 0xab, 0x77, 0xc3, 0xe7, 0x87, 0x28, 0xdd, 0xdf, 0xf1, 0xaa,
-
  0x6d, 0xb6, 0xcd, 0xea, 0x17, 0xc7, 0xf0, 0x34, 0x41, 0x68, 0x77, 0x3b,
-
  0xce, 0x2d, 0x2a, 0xc6, 0xb7, 0xb1, 0xdc, 0xba, 0x8f, 0x7e, 0x8c, 0xd9,
-
  0xd0, 0x6d, 0xe7, 0xf3, 0x6f, 0x8b, 0x19, 0xca, 0xf0, 0xcd, 0xe9, 0xa7,
-
  0x51, 0x82, 0xa1, 0x13, 0x42, 0xb1, 0xbd, 0xf9, 0xfa, 0x84, 0x27, 0x0d,
-
  0x8a, 0xc7, 0x53, 0x86, 0xe8, 0x58, 0xb9, 0x1d, 0xe6, 0xe1, 0x8f, 0x30,
-
  0x4d, 0xb8, 0xcd, 0xdc, 0xda, 0x42, 0xf1, 0xe9, 0xb6, 0xc3, 0x8c, 0xa5,
-
  0x69, 0x12, 0xfa, 0x8c, 0x3b, 0x42, 0x56, 0xaa, 0xa0, 0xce, 0xd0, 0xd8,
-
  0x0b, 0x7a, 0xec, 0xe3, 0xf6, 0x81, 0x9a, 0xf8, 0xbc, 0x21, 0x6d, 0x3a,
-
  0x8a, 0x6a, 0x4e, 0xf2, 0xea, 0x27, 0x5a, 0x7c, 0xdd, 0xe4, 0xdb, 0x6d,
-
  0xc0, 0xe5, 0x6e, 0xd7, 0xba, 0x13, 0x4c, 0x19, 0x3d, 0x71, 0x0f, 0x72,
-
  0x23, 0xb7, 0xf3, 0xa9, 0x0c, 0x9f, 0xdc, 0xfa, 0x7d, 0x2d, 0xe8, 0xaa,
-
  0x85, 0x7b, 0xdb, 0x6f, 0x1a, 0x58, 0x9f, 0x36, 0xea, 0x58, 0x7a, 0x34,
-
  0xec, 0x14, 0x64, 0x74, 0xca, 0x10, 0x36, 0xf0, 0x84, 0x0a, 0x93, 0x8d,
-
  0xec, 0x55, 0x0b, 0x0d, 0x15, 0x9a, 0x0b, 0x32, 0x7f, 0x94, 0x02, 0xb8,
-
  0x18, 0xbb, 0x16, 0xb2, 0x19, 0x0e, 0x4f, 0x5f, 0xc4, 0x9c, 0x0e, 0x39,
-
  0x91, 0xa2, 0xad, 0x5c, 0xe7, 0x97, 0x21, 0x48, 0xb4, 0xac, 0xf9, 0xeb,
-
  0x0e, 0xdd, 0x9a, 0xf2, 0x92, 0xc9, 0xe6, 0xdd, 0x32, 0xac, 0xd7, 0x1a,
-
  0xfb, 0x45, 0x32, 0x07, 0x02, 0x6a, 0x1b, 0xa0, 0xe7, 0x2a, 0x9d, 0xf9,
-
  0x79, 0x7f, 0x2b, 0x66, 0x4e, 0xd6, 0x27, 0x92, 0x2d, 0xdd, 0x92, 0xde,
-
  0x23, 0x13, 0x0e, 0x47, 0x42, 0x90, 0x57, 0x66, 0x93, 0xec, 0x7f, 0x0e,
-
  0x9e, 0x91, 0x63, 0x60, 0x3a, 0x88, 0x7a, 0xf1, 0xdb, 0xe8, 0xc0, 0x2f,
-
  0x25, 0x7d, 0x82, 0x70, 0x2d, 0x55, 0x9d, 0xce, 0x29, 0x76, 0xad, 0x24,
-
  0x9d, 0x03, 0x6b, 0x62, 0x57, 0xae, 0x49, 0xea, 0x02, 0x6b, 0x7e, 0x5b,
-
  0x7f, 0x80, 0x5a, 0x2b, 0xca, 0x73, 0x2f, 0x07, 0x8e, 0x63, 0x90, 0xd8,
-
  0x78, 0x06, 0x7b, 0x36, 0xc6, 0xd8, 0x2b, 0x14, 0x79, 0x31, 0xfa, 0xca,
-
  0xc4, 0xe9, 0xb1, 0xd9, 0x2c, 0xa7, 0x6c, 0x60, 0x49, 0xa8, 0xc6, 0xd8,
-
  0x87, 0x71, 0x00, 0x4d, 0x80, 0xb3, 0x41, 0x2b, 0x6e, 0x71, 0x51, 0x54,
-
  0x55, 0x36, 0x02, 0x81, 0xf2, 0x5c, 0x84, 0xb9, 0x2a, 0x65, 0x84, 0x06,
-
  0x8e, 0x96, 0xc0, 0xb5, 0x24, 0x29, 0x57, 0xcc, 0xb2, 0xb0, 0xaa, 0xed,
-
  0x25, 0xa2, 0x99, 0x52, 0xe4, 0x19, 0x47, 0x89, 0x09, 0x06, 0x3d, 0x47,
-
  0x7c, 0x50, 0x55, 0xb6, 0xcb, 0x0c, 0xbb, 0x48, 0xa5, 0x2a, 0x68, 0x12,
-
  0xcd, 0x0b, 0x5e, 0x7a, 0x32, 0xb8, 0xb5, 0x25, 0xc2, 0x19, 0x16, 0x98,
-
  0x04, 0x66, 0x32, 0x44, 0x9c, 0xa9, 0x2a, 0xcd, 0xab, 0x8c, 0xc0, 0xc7,
-
  0x08, 0x49, 0xc7, 0x22, 0x9b, 0x95, 0x29, 0x66, 0x2c, 0x5f, 0xa6, 0xb2,
-
  0xad, 0x62, 0xce, 0xed, 0xc4, 0x37, 0x42, 0x98, 0xa0, 0x79, 0x86, 0xe5,
-
  0x16, 0x08, 0x9f, 0x90, 0xaa, 0x10, 0x9b, 0xca, 0xa2, 0xd8, 0x63, 0x84,
-
  0x7c, 0xc5, 0x0f, 0x4c, 0x1a, 0x84, 0x24, 0x9f, 0xb7, 0x56, 0xb7, 0xe2,
-
  0x43, 0xf9, 0xd9, 0x93, 0x27, 0x0c, 0xc5, 0x1f, 0x2c, 0x3e, 0xd6, 0x67,
-
  0x86, 0xc7, 0xc5, 0xe1, 0x3f, 0x0e, 0xdb, 0x5f, 0x03, 0xac, 0xaf, 0x59,
-
  0x54, 0x72, 0x15, 0x74, 0x9d, 0x03, 0x5f, 0xe6, 0x15, 0x6b, 0x0d, 0x63,
-
  0xd6, 0x4d, 0xb3, 0x0f, 0xa0, 0xd1, 0xbe, 0x2e, 0xfc, 0xb8, 0xa3, 0x36,
-
  0xfa, 0x1b, 0x62, 0x87, 0xb0, 0x03, 0xca, 0x2c, 0x71, 0x4d, 0xa5, 0xcc,
-
  0xa8, 0xb2, 0x90, 0x9b, 0x3e, 0xfa, 0xd6, 0x53, 0x9b, 0x2c, 0xa6, 0x5d,
-
  0x37, 0x8a, 0x9d, 0x03, 0x62, 0x47, 0x48, 0x93, 0x1c, 0x90, 0x9b, 0xe0,
-
  0x08, 0x7c, 0x3d, 0x67, 0x9a, 0x8d, 0x05, 0xc0, 0x4e, 0xe3, 0xa8, 0x1c,
-
  0xf8, 0x3a, 0x3f, 0x63, 0x3c, 0xfb, 0x00, 0x5c, 0x93, 0xa0, 0x2b, 0xb1,
-
  0x97, 0xb4, 0x66, 0x60, 0x08, 0x0b, 0x00, 0x34, 0xd5, 0xfe, 0x75, 0x0a,
-
  0x43, 0x90, 0x22, 0x28, 0xd1, 0x29, 0x00, 0x9d, 0xa3, 0x05, 0x27, 0xf0,
-
  0x2b, 0x0a, 0x0e, 0x1d, 0x44, 0xe9, 0xe0, 0x7c, 0xe0, 0x4c, 0xc0, 0xbc,
-
  0xb9, 0x8d, 0x0e, 0x92, 0xed, 0xba, 0xd8, 0xe6, 0x6e, 0x07, 0xf8, 0xe3,
-
  0x8b, 0x6e, 0x84, 0x42, 0x13, 0xeb, 0x73, 0x99, 0x25, 0x86, 0xdc, 0xec,
-
  0x5e, 0xf0, 0x76, 0x45, 0x14, 0x1e, 0x24, 0x35, 0x9d, 0xba, 0x72, 0xa1,
-
  0x78, 0x94, 0x21, 0x7c, 0xf3, 0xd7, 0xc3, 0x21, 0x4c, 0x4f, 0xa0, 0x4f,
-
  0x9e, 0x3c, 0xc6, 0x88, 0x4d, 0xb4, 0xe1, 0x20, 0xd1, 0x12, 0x53, 0x0d,
-
  0x4c, 0x16, 0xab, 0xf2, 0x52, 0x33, 0x08, 0x31, 0x4e, 0x90, 0xe4, 0x25,
-
  0x68, 0xff, 0x98, 0xdb, 0x1e, 0x0d, 0xd1, 0x02, 0x9c, 0x63, 0xf5, 0x1f,
-
  0x58, 0x32, 0x0e, 0x02, 0x3a, 0x43, 0x54, 0x0e, 0x9a, 0x45, 0x00, 0x4a,
-
  0x43, 0x30, 0xcc, 0x03, 0x5b, 0x54, 0xa6, 0xe3, 0xe2, 0x3c, 0xcf, 0x7e,
-
  0xc7, 0x49, 0x91, 0xd1, 0xa5, 0x0d, 0xd0, 0xd4, 0xc0, 0x4a, 0x8c, 0x9c,
-
  0xc4, 0x64, 0x4c, 0x80, 0xf7, 0x2f, 0x1a, 0x9a, 0x1f, 0x5d, 0xff, 0x28,
-
  0xd0, 0x20, 0x8e, 0xaf, 0x50, 0x4a, 0x45, 0x41, 0xdb, 0x04, 0x12, 0x21,
-
  0x55, 0xf8, 0xcc, 0x02, 0x4b, 0xc7, 0x1e, 0xf9, 0x2a, 0xdd, 0x4b, 0xe5,
-
  0xcf, 0xce, 0xca, 0xaf, 0x77, 0xc0, 0x36, 0xcc, 0xea, 0x3b, 0x21, 0x1b,
-
  0xba, 0x26, 0x79, 0x81, 0x02, 0x42, 0xd8, 0xaa, 0x0f, 0x7c, 0x8f, 0x35,
-
  0xae, 0x64, 0xa7, 0x1e, 0xa6, 0x14, 0x57, 0xf4, 0x39, 0xa7, 0x2e, 0x03,
-
  0xae, 0x31, 0x8b, 0x34, 0x03, 0x81, 0x6b, 0x2c, 0xd3, 0x8d, 0x8a, 0x56,
-
  0xd9, 0x69, 0xd1, 0x94, 0x0a, 0x55, 0x8b, 0x45, 0x12, 0x8a, 0x5a, 0xb4,
-
  0x25, 0x28, 0x51, 0x24, 0x37, 0x51, 0xe3, 0xbd, 0x1e, 0xfe, 0xab, 0x63,
-
  0x86, 0xf9, 0xfb, 0x50, 0x5d, 0x18, 0xda, 0xa8, 0x45, 0x71, 0x25, 0x6c,
-
  0x0e, 0x8f, 0xab, 0x54, 0x09, 0x42, 0x56, 0x44, 0xe5, 0xae, 0xdd, 0x9c,
-
  0x75, 0x66, 0x49, 0x04, 0x08, 0xd3, 0x66, 0x16, 0x58, 0x34, 0x88, 0xcd,
-
  0x3d, 0xa3, 0x54, 0xe1, 0x98, 0x89, 0xa6, 0x60, 0x18, 0xd8, 0x00, 0xcc,
-
  0xb4, 0x26, 0x48, 0x5a, 0x0d, 0x85, 0x86, 0xaf, 0x91, 0x53, 0x74, 0x20,
-
  0x32, 0x28, 0x9a, 0xa6, 0x3b, 0x44, 0x0e, 0xca, 0x94, 0x98, 0xe9, 0x44,
-
  0xb1, 0x5c, 0x9a, 0xc2, 0x04, 0xd9, 0xe9, 0x12, 0x8f, 0xb4, 0xa4, 0xcc,
-
  0x27, 0xc9, 0x63, 0x4b, 0x3c, 0x49, 0x91, 0xa2, 0x9b, 0x1a, 0x5a, 0xe9,
-
  0x23, 0x7f, 0x45, 0x44, 0x05, 0x13, 0xf3, 0x10, 0x2f, 0xf4, 0x1e, 0x69,
-
  0x4f, 0xf6, 0x5a, 0x1a, 0xe9, 0xb0, 0x00, 0x7d, 0x02, 0x40, 0xcc, 0x3b,
-
  0x21, 0x62, 0x7e, 0x5a, 0x40, 0x4c, 0x7b, 0x17, 0x12, 0x8b, 0xf6, 0x6e,
-
  0x42, 0x03, 0x65, 0x71, 0x05, 0x8c, 0x40, 0xaa, 0xb4, 0x0a, 0xf1, 0x23,
-
  0x99, 0x7b, 0x2e, 0x62, 0xef, 0x20, 0x21, 0x24, 0x29, 0x85, 0xd6, 0xb7,
-
  0xe1, 0x2f, 0x94, 0x45, 0x6f, 0x0a, 0xc7, 0xd8, 0x0a, 0xb0, 0x40, 0x02,
-
  0xd9, 0x40, 0x4e, 0x8a, 0x8b, 0x46, 0xa2, 0xc6, 0x9f, 0xcd, 0x76, 0x84,
-
  0x3d, 0xd0, 0x12, 0x7d, 0xaf, 0x18, 0x3c, 0x7d, 0xcd, 0xb4, 0x40, 0x41,
-
  0x0e, 0xe1, 0xae, 0xe6, 0xb0, 0xfe, 0x38, 0x0f, 0x3c, 0x67, 0xec, 0x4b,
-
  0x39, 0x45, 0xfa, 0x98, 0xd6, 0x5e, 0xad, 0x6b, 0xe4, 0x4f, 0x7d, 0x5c,
-
  0x10, 0xa1, 0xd5, 0xae, 0xe2, 0xd1, 0xad, 0x3c, 0xdc, 0x86, 0x40, 0xf6,
-
  0x1f, 0x57, 0xbc, 0x1b, 0x71, 0x2f, 0x77, 0x43, 0x0e, 0x15, 0xa4, 0xd0,
-
  0x5b, 0x84, 0x2e, 0xed, 0xc2, 0xdd, 0xf9, 0xd4, 0x11, 0xc7, 0xbe, 0xb9,
-
  0x51, 0x1e, 0x23, 0x26, 0x84, 0xaf, 0x29, 0xf8, 0x71, 0xe3, 0x32, 0xd0,
-
  0xdb, 0x80, 0xd6, 0x10, 0x56, 0x3d, 0xcc, 0x4d, 0x70, 0x53, 0xe9, 0x26,
-
  0x30, 0xbc, 0x1f, 0x21, 0x61, 0xf0, 0xfd, 0x0e, 0xee, 0x9f, 0x0a, 0x26,
-
  0x8f, 0xb1, 0x32, 0xc3, 0x75, 0x37, 0x4a, 0xeb, 0x2b, 0xd4, 0x36, 0x48,
-
  0xa7, 0xd2, 0xda, 0xbb, 0x0e, 0x8b, 0x94, 0xeb, 0x02, 0xb6, 0x36, 0x9c,
-
  0x69, 0xd0, 0x67, 0x5c, 0x07, 0xe4, 0xb6, 0x35, 0xe8, 0x20, 0x02, 0x8a,
-
  0x83, 0xb7, 0xac, 0xe6, 0x10, 0x79, 0xac, 0x29, 0x0a, 0x01, 0xc8, 0xda,
-
  0x7c, 0xa8, 0xc6, 0xda, 0x28, 0x52, 0x55, 0x03, 0x23, 0x55, 0x11, 0x24,
-
  0xe4, 0xc1, 0xdd, 0x9b, 0x6d, 0x11, 0xd8, 0xda, 0x27, 0x32, 0x44, 0x60,
-
  0xd3, 0xf7, 0x94, 0x3d, 0xd0, 0xf7, 0x69, 0x2e, 0x6d, 0x09, 0xee, 0x96,
-
  0x89, 0x0b, 0xd3, 0x0e, 0x97, 0x62, 0xcc, 0x25, 0x0e, 0xb1, 0xc9, 0x03,
-
  0x9a, 0x7d, 0x79, 0xf9, 0x3f, 0x98, 0xe5, 0x12, 0x4a, 0xb4, 0xea, 0xba,
-
  0x62, 0xd8, 0xf1, 0x23, 0xdf, 0x26, 0x0b, 0xf8, 0x2c, 0x61, 0x00, 0xbb,
-
  0x79, 0x32, 0x49, 0xa3, 0x50, 0x7e, 0x22, 0x51, 0xb8, 0x3b, 0xb0, 0x56,
-
  0x9e, 0x19, 0x4d, 0xdb, 0x0f, 0x7d, 0x17, 0x93, 0xd7, 0xcc, 0x0b, 0x3e,
-
  0xc1, 0xcb, 0x42, 0x80, 0xf9, 0xc4, 0x9b, 0xa5, 0x29, 0x65, 0x12, 0x66,
-
  0xe9, 0x8a, 0x56, 0x12, 0x24, 0x9f, 0x33, 0x85, 0xc2, 0xb0, 0xbd, 0x44,
-
  0x22, 0x77, 0x92, 0xc5, 0x0d, 0xe5, 0x8c, 0xdb, 0xe3, 0x17, 0x2c, 0x1b,
-
  0xc9, 0xcb, 0x69, 0xba, 0x86, 0x90, 0xc9, 0x79, 0x1e, 0x36, 0x29, 0x18,
-
  0xac, 0x2f, 0x2c, 0x29, 0x08, 0x51, 0xdb, 0x8f, 0x65, 0x3a, 0x71, 0x57,
-
  0x9e, 0x8f, 0x43, 0xe1, 0x6d, 0x8a, 0x58, 0x49, 0xe8, 0x77, 0x8c, 0xa8,
-
  0xe7, 0x96, 0xef, 0x74, 0x3e, 0x64, 0x50, 0xf7, 0x95, 0x60, 0xe3, 0xb2,
-
  0x5e, 0x89, 0x6f, 0x0b, 0x84, 0x64, 0x6f, 0x0e, 0xf1, 0x8a, 0x1b, 0x1e,
-
  0x9d, 0x6e, 0x45, 0xa7, 0xad, 0xd0, 0x35, 0x02, 0x7a, 0x45, 0x71, 0xd1,
-
  0x95, 0x34, 0xf8, 0x9a, 0x62, 0xcb, 0xd4, 0x8a, 0x28, 0xa7, 0x4c, 0xf8,
-
  0xa4, 0xa6, 0x3e, 0x72, 0xb2, 0x58, 0x7b, 0xdc, 0x9b, 0x87, 0x94, 0xdb,
-
  0xc2, 0x75, 0x7d, 0xc4, 0xdc, 0xe4, 0x32, 0x47, 0xf4, 0x17, 0x23, 0xa4,
-
  0x33, 0x55, 0xe7, 0xd6, 0x40, 0x2d, 0x0d, 0xb0, 0x9a, 0x79, 0x40, 0x3f,
-
  0x5c, 0x2f, 0x4d, 0xa1, 0xf0, 0x9c, 0x82, 0x85, 0xd4, 0x3b, 0x95, 0x12,
-
  0x41, 0x49, 0x80, 0xa5, 0x8a, 0x26, 0x02, 0x71, 0x9a, 0xa7, 0xa1, 0x2a,
-
  0xc1, 0xd7, 0x24, 0x5b, 0xca, 0x39, 0x23, 0xe0, 0xf6, 0x3a, 0xd5, 0xd3,
-
  0x86, 0xd6, 0x72, 0xbb, 0x62, 0x32, 0xb8, 0x8c, 0x90, 0x2a, 0xf9, 0x58,
-
  0x76, 0x64, 0x9f, 0x90, 0x39, 0x70, 0x44, 0x40, 0xd3, 0x58, 0x06, 0x96,
-
  0xa8, 0x88, 0x34, 0xf1, 0x71, 0xb1, 0xc0, 0x7c, 0x23, 0x7c, 0xb0, 0xaa,
-
  0x2e, 0xf6, 0x80, 0x5f, 0xef, 0x0d, 0x9e, 0x90, 0x5d, 0x00, 0xe4, 0x47,
-
  0xcf, 0xb3, 0x5b, 0x4b, 0x7a, 0x68, 0x56, 0x57, 0xe9, 0x6c, 0xda, 0x6e,
-
  0x4d, 0x54, 0xd3, 0xc1, 0x56, 0xd8, 0xec, 0x7f, 0x97, 0xc2, 0x53, 0xd1,
-
  0x3d, 0xa2, 0x99, 0x73, 0xff, 0x44, 0x13, 0xf0, 0x7b, 0x54, 0xad, 0x53,
-
  0x1e, 0xb5, 0x6d, 0xf4, 0xf9, 0x1b, 0x92, 0xfc, 0x3f, 0x97, 0xb8, 0x33,
-
  0x4f, 0xc5, 0x1a, 0xe6, 0x11, 0x39, 0xd2, 0x78, 0x84, 0x94, 0xbe, 0x85,
-
  0x2d, 0xe5, 0x13, 0x4e, 0x98, 0x1c, 0x65, 0xb0, 0x67, 0xe5, 0xb5, 0xb1,
-
  0xa1, 0x35, 0x39, 0xe2, 0xf7, 0x54, 0xef, 0x80, 0xde, 0x0a, 0xd6, 0xf0,
-
  0x18, 0x44, 0x7f, 0xa3, 0x4e, 0xe5, 0x6d, 0xb1, 0x79, 0xa0, 0x24, 0xfb,
-
  0xdd, 0xf1, 0xf7, 0x27, 0x6f, 0x8e, 0x9b, 0xc0, 0xdf, 0x35, 0xd7, 0x63,
-
  0xa5, 0x8c, 0xc5, 0xf6, 0xe8, 0x7e, 0x43, 0x67, 0xbf, 0x94, 0xfb, 0x60,
-
  0xce, 0x9f, 0xe5, 0x19, 0x5a, 0x3d, 0xa3, 0xd3, 0x9f, 0x9e, 0x99, 0xd1,
-
  0xa1, 0x68, 0x9e, 0xd3, 0xa8, 0xb4, 0xd1, 0x3e, 0xab, 0xb0, 0xed, 0x40,
-
  0x20, 0x8c, 0x46, 0xdc, 0x1a, 0x20, 0x17, 0xe6, 0x6c, 0x4c, 0x1d, 0x1f,
-
  0x65, 0x8a, 0x72, 0x7e, 0xaf, 0x96, 0x16, 0x01, 0x6d, 0x00, 0x0d, 0xb4,
-
  0x58, 0x2a, 0xc4, 0x34, 0xea, 0x29, 0x9b, 0x24, 0x72, 0x53, 0x9d, 0x49,
-
  0xb1, 0x71, 0x4d, 0x10, 0xe7, 0x7b, 0x23, 0xf6, 0x03, 0x3a, 0x79, 0x9d,
-
  0x51, 0x72, 0xda, 0x8a, 0xfc, 0xfe, 0x35, 0xe1, 0x95, 0x3b, 0x27, 0x52,
-
  0x40, 0x8e, 0xcb, 0x41, 0x6e, 0x93, 0x40, 0xad, 0x0a, 0x34, 0x98, 0xe0,
-
  0x61, 0x35, 0x60, 0x38, 0xfd, 0x88, 0x96, 0x4a, 0x62, 0x1f, 0x79, 0xa9,
-
  0x38, 0x32, 0xd6, 0xac, 0xb3, 0x76, 0xb7, 0x59, 0x6d, 0x75, 0xcc, 0xc4,
-
  0x82, 0x46, 0xe6, 0xc6, 0x6a, 0xb7, 0xf1, 0xe7, 0x8d, 0xa6, 0x3a, 0x69,
-
  0x95, 0xe1, 0x2b, 0x56, 0x11, 0x26, 0xbe, 0xde, 0x22, 0x00, 0x3d, 0x62,
-
  0xdc, 0xa6, 0xd3, 0xa4, 0x6f, 0x79, 0x2b, 0xb3, 0x3a, 0x99, 0x5d, 0x97,
-
  0x68, 0x70, 0x2b, 0x68, 0xde, 0xaa, 0x2e, 0x16, 0x28, 0xc0, 0x72, 0xc5,
-
  0x8f, 0x29, 0xa8, 0xc3, 0x94, 0x26, 0x85, 0xb7, 0x2e, 0x2d, 0xb8, 0x84,
-
  0x28, 0xc3, 0xc5, 0xe8, 0xbb, 0x48, 0x72, 0x3c, 0xc7, 0x29, 0x9a, 0xf0,
-
  0x05, 0x99, 0x5e, 0x17, 0x02, 0x9b, 0x81, 0x73, 0x6f, 0x77, 0xbb, 0xb5,
-
  0x44, 0xb0, 0x06, 0x55, 0x40, 0xa1, 0xcc, 0xaa, 0xf7, 0xd1, 0xe6, 0x9f,
-
  0x80, 0xda, 0xa8, 0x0e, 0xde, 0x55, 0x56, 0x01, 0x9b, 0x95, 0x96, 0x25,
-
  0x56, 0x57, 0x92, 0xb2, 0x75, 0x9c, 0x64, 0xf1, 0x42, 0x6d, 0x3b, 0x0c,
-
  0x5b, 0xa8, 0x2b, 0xc1, 0x1c, 0x08, 0x6d, 0xff, 0x65, 0x6a, 0x4d, 0x01,
-
  0x46, 0xd9, 0xa1, 0x08, 0xd9, 0x8e, 0x65, 0x96, 0xd8, 0x19, 0x3c, 0xe5,
-
  0xd5, 0x75, 0x5e, 0x23, 0x53, 0xe6, 0xfb, 0x63, 0x5c, 0x94, 0x24, 0x00,
-
  0x21, 0x91, 0xda, 0x43, 0x5b, 0x51, 0x4d, 0xa0, 0x2f, 0x1f, 0x7e, 0x09,
-
  0x2b, 0xed, 0x57, 0x18, 0xc9, 0x39, 0x18, 0x08, 0x5f, 0xe1, 0xf9, 0x54,
-
  0x14, 0x3e, 0x5d, 0x70, 0x8d, 0x00, 0x09, 0xd1, 0x95, 0xa6, 0x88, 0x12,
-
  0xd0, 0xf2, 0x31, 0x4a, 0x11, 0x36, 0xd9, 0x17, 0x64, 0x86, 0x4e, 0x33,
-
  0x77, 0x84, 0x94, 0xf4, 0x53, 0xc4, 0xe9, 0xc8, 0xa1, 0x46, 0xa2, 0x3e,
-
  0x2c, 0xd5, 0x05, 0x06, 0xd1, 0xdb, 0x9c, 0x50, 0x0a, 0x70, 0xc5, 0xbf,
-
  0x47, 0x08, 0x67, 0x96, 0xb2, 0x72, 0xd8, 0x36, 0xd8, 0x66, 0xb8, 0x61,
-
  0x03, 0xac, 0xed, 0x9f, 0x4d, 0x96, 0x26, 0x97, 0x4b, 0x2b, 0xd8, 0x98,
-
  0x78, 0x81, 0xe2, 0x15, 0x18, 0x6e, 0x18, 0x7d, 0x9f, 0x79, 0x15, 0x80,
-
  0x50, 0x84, 0x60, 0x83, 0x20, 0x4c, 0x87, 0xda, 0xc6, 0x78, 0xf2, 0x74,
-
  0x36, 0x63, 0xf4, 0x7a, 0x6c, 0x84, 0x74, 0x75, 0x2e, 0x62, 0x40, 0xb9,
-
  0xfd, 0xae, 0x0d, 0xc3, 0xbb, 0x91, 0xa9, 0x16, 0xc3, 0x20, 0xfa, 0xde,
-
  0xd4, 0x5c, 0x12, 0xa8, 0x3c, 0x8d, 0xa9, 0x42, 0x14, 0x69, 0x6b, 0xd6,
-
  0xe4, 0xb5, 0xe1, 0x29, 0xe1, 0x9c, 0x3c, 0x57, 0x15, 0xce, 0xd1, 0x0b,
-
  0x84, 0x4a, 0x70, 0xa1, 0xd1, 0x83, 0xc3, 0x42, 0x4b, 0x18, 0x5d, 0x95,
-
  0x54, 0x44, 0x7e, 0xd2, 0x1c, 0x94, 0x2a, 0xad, 0x2b, 0x7b, 0x71, 0x26,
-
  0xc4, 0x59, 0x69, 0xd7, 0x94, 0x54, 0xba, 0x9b, 0xc3, 0x75, 0x9a, 0x30,
-
  0xd2, 0x38, 0x3f, 0xc6, 0x34, 0x9f, 0x4f, 0x58, 0x73, 0x78, 0x4a, 0xa3,
-
  0x49, 0x3f, 0x90, 0xc4, 0x0b, 0x04, 0xf2, 0x0d, 0x47, 0x35, 0xf9, 0xbc,
-
  0xdf, 0x4a, 0x2e, 0xe8, 0x14, 0x28, 0xb1, 0x0c, 0x10, 0xf4, 0xcd, 0x93,
-
  0x61, 0x33, 0x53, 0xc5, 0xa8, 0xf4, 0x74, 0xd6, 0x80, 0x1c, 0xde, 0x9d,
-
  0xa7, 0x35, 0x7e, 0xbb, 0xb9, 0xbf, 0x85, 0xcb, 0x11, 0x6e, 0x6e, 0x81,
-
  0x95, 0x2c, 0x08, 0xc1, 0xbe, 0x39, 0x0c, 0x83, 0x68, 0x0f, 0x82, 0x9c,
-
  0xf5, 0x09, 0x3f, 0xde, 0x1f, 0xec, 0x78, 0x62, 0xc7, 0xf8, 0xe2, 0xbc,
-
  0x5c, 0x44, 0xe7, 0xa0, 0x32, 0x2c, 0x6e, 0x58, 0x55, 0x7e, 0xd2, 0x5b,
-
  0x53, 0x7e, 0xf5, 0xc5, 0x33, 0x77, 0x2d, 0x65, 0xd9, 0x60, 0xdd, 0xc2,
-
  0xcd, 0x39, 0xf7, 0x83, 0x2c, 0xa7, 0x5e, 0xf1, 0xa6, 0x35, 0x6b, 0x67,
-
  0x90, 0xc5, 0xa7, 0x6f, 0xc2, 0xcd, 0x35, 0xb6, 0x84, 0x5b, 0xd0, 0x66,
-
  0xe9, 0xfc, 0x4d, 0xa0, 0xa9, 0x79, 0xc2, 0x27, 0xec, 0x1c, 0x38, 0x9f,
-
  0x76, 0xe2, 0x83, 0x72, 0x5c, 0xcc, 0x8b, 0x09, 0x9b, 0x95, 0x6e, 0x5a,
-
  0x0b, 0x7c, 0x50, 0xd7, 0x42, 0xc0, 0xa2, 0x2b, 0x77, 0x5e, 0xd4, 0x08,
-
  0x9c, 0x7c, 0xdd, 0x69, 0xff, 0x12, 0x6d, 0x5b, 0x42, 0x04, 0xb6, 0x01,
-
  0x9b, 0xa7, 0x97, 0xdd, 0x29, 0xe4, 0x51, 0x31, 0xae, 0x9d, 0x19, 0xe0,
-
  0x03, 0x1d, 0x04, 0x4b, 0x77, 0x57, 0x60, 0x66, 0x08, 0x1d, 0x4c, 0x56,
-
  0xb7, 0x9b, 0x66, 0x86, 0x0f, 0x7a, 0xbb, 0x0c, 0x1f, 0xf2, 0x8d, 0xd8,
-
  0xda, 0x62, 0xde, 0x9c, 0x70, 0x73, 0xcd, 0x0d, 0xd6, 0x1d, 0xa6, 0x31,
-
  0x84, 0x36, 0x98, 0xbe, 0xc0, 0xa7, 0xe3, 0x8e, 0xb3, 0xa3, 0x3b, 0x6c,
-
  0x1e, 0xec, 0xdc, 0x60, 0xe9, 0xc3, 0x5b, 0x85, 0x19, 0xfa, 0xc1, 0x96,
-
  0xe5, 0x38, 0x7d, 0x47, 0x63, 0xe3, 0xfa, 0xd1, 0xef, 0x56, 0x2f, 0xc8,
-
  0x4c, 0x4a, 0xc8, 0x5c, 0xcf, 0x51, 0x92, 0xb7, 0x1c, 0x78, 0x4c, 0x3e,
-
  0x40, 0x14, 0xd5, 0xa8, 0xa4, 0x0a, 0x68, 0x1b, 0xf4, 0x3d, 0xeb, 0xfb,
-
  0x1d, 0x64, 0x6f, 0xfb, 0x8b, 0x22, 0x53, 0x2f, 0x0d, 0x34, 0x7c, 0x18,
-
  0xb7, 0x94, 0x08, 0xe7, 0x0b, 0xda, 0x19, 0x23, 0x3e, 0xd6, 0xb1, 0x20,
-
  0x41, 0x4b, 0xf7, 0xfc, 0x3d, 0x22, 0xef, 0x1a, 0xc1, 0xec, 0x5d, 0xee,
-
  0xbb, 0xda, 0x9d, 0xc9, 0xf1, 0xd3, 0xba, 0xdb, 0x3c, 0x25, 0xc1, 0xd8,
-
  0x36, 0x38, 0x87, 0x0d, 0x16, 0x18, 0x10, 0xb7, 0x9a, 0x52, 0xd7, 0x3b,
-
  0x86, 0x87, 0x97, 0x13, 0xe9, 0x8d, 0xee, 0xd6, 0x2c, 0x9c, 0x9f, 0x0c,
-
  0x73, 0xf0, 0x06, 0x2a, 0xb9, 0xc3, 0xc7, 0x57, 0x90, 0xe1, 0xda, 0x7c,
-
  0x7c, 0xdc, 0xc5, 0x73, 0x51, 0xc8, 0xc1, 0xcb, 0x8c, 0x98, 0x38, 0xf4,
-
  0xfb, 0xf9, 0x59, 0x38, 0x3a, 0xeb, 0xd5, 0xfa, 0x7f, 0x65, 0xb9, 0x92,
-
  0xca, 0x77, 0x64, 0x34, 0x1f, 0x55, 0xc5, 0x6c, 0x89, 0xd6, 0xa4, 0xa4,
-
  0xbe, 0xe0, 0x1d, 0x9a, 0xea, 0x38, 0x3b, 0xf7, 0x33, 0xaf, 0x7d, 0x41,
-
  0xdf, 0xdb, 0x51, 0x78, 0x0c, 0x9b, 0x63, 0x92, 0x15, 0x0a, 0xef, 0xde,
-
  0x56, 0x79, 0xda, 0x0e, 0x91, 0xe5, 0x10, 0xbb, 0x29, 0x65, 0x80, 0xf0,
-
  0xba, 0xef, 0x10, 0xe9, 0xb5, 0x75, 0x87, 0x4c, 0x52, 0x94, 0xfb, 0x99,
-
  0x3a, 0x28, 0x51, 0xcf, 0xdc, 0x46, 0xd1, 0x4d, 0x67, 0xb3, 0x93, 0x70,
-
  0xcb, 0xf9, 0x0d, 0x04, 0x0b, 0x0f, 0xd8, 0x59, 0x71, 0x4d, 0x27, 0x33,
-
  0x2b, 0x8f, 0xd5, 0x09, 0x01, 0x76, 0xac, 0x7c, 0xd7, 0x08, 0x1a, 0x07,
-
  0x7b, 0xd5, 0x48, 0xdc, 0x33, 0xed, 0x0e, 0xc6, 0x2e, 0x2d, 0x0a, 0xf0,
-
  0xf8, 0xc3, 0x8c, 0xac, 0x83, 0xd6, 0xaf, 0x5b, 0xef, 0xc9, 0xf2, 0xf4,
-
  0x1d, 0x87, 0x19, 0xd9, 0x3a, 0xd0, 0x30, 0xe4, 0xd3, 0x86, 0xf2, 0xcc,
-
  0xb5, 0x78, 0x2e, 0xda, 0x13, 0x66, 0x79, 0xd8, 0x8c, 0x70, 0x17, 0x2c,
-
  0x20, 0xcf, 0xe2, 0x21, 0xa6, 0x0e, 0x6e, 0xb1, 0xf7, 0xec, 0xf8, 0xe5,
-
  0x31, 0xed, 0x47, 0x2f, 0xf2, 0x6d, 0x1d, 0xd3, 0xa2, 0x30, 0xed, 0x58,
-
  0x3b, 0xc7, 0xcf, 0x38, 0x20, 0x31, 0xf7, 0xba, 0xc6, 0x3c, 0x5c, 0x19,
-
  0x90, 0x65, 0xbb, 0xe1, 0x0e, 0x9f, 0x61, 0xc1, 0x99, 0x31, 0x45, 0x8e,
-
  0x98, 0xa2, 0x35, 0xad, 0x8a, 0x5b, 0xec, 0x9e, 0x37, 0x4e, 0x45, 0xe3,
-
  0xd0, 0x7f, 0xf2, 0x00, 0xe3, 0xf9, 0xda, 0x06, 0x54, 0xf4, 0xee, 0x13,
-
  0xd1, 0xa3, 0xc5, 0x49, 0x8a, 0x42, 0x5c, 0x24, 0x0c, 0x8f, 0xcf, 0xa0,
-
  0x35, 0x85, 0x9a, 0x70, 0xa7, 0x8d, 0xe8, 0x7e, 0xe8, 0x7f, 0xd6, 0xde,
-
  0x73, 0x13, 0x26, 0x00, 0xac, 0x41, 0xad, 0x54, 0x5f, 0xac, 0x88, 0x0c,
-
  0x34, 0x47, 0x0b, 0xdb, 0xa4, 0x49, 0x4b, 0xc6, 0x2b, 0x61, 0x10, 0xe0,
-
  0x90, 0x54, 0x29, 0xa4, 0x42, 0xbf, 0x93, 0xb4, 0xf4, 0xc8, 0x0c, 0x74,
-
  0x3c, 0x5e, 0x34, 0xce, 0x8a, 0x24, 0xf2, 0xa5, 0x08, 0x2d, 0x51, 0x4c,
-
  0x68, 0xa3, 0x11, 0x0a, 0x26, 0x15, 0xef, 0xa5, 0x3e, 0x0e, 0xf4, 0x7b,
-
  0x8e, 0x9b, 0xec, 0xc7, 0x6c, 0x34, 0x93, 0x53, 0xab, 0x8e, 0xa0, 0x73,
-
  0x77, 0xab, 0x3e, 0x5b, 0x74, 0xad, 0x3b, 0x08, 0x4c, 0xad, 0xcb, 0xaa,
-
  0x8b, 0x35, 0xbd, 0x7b, 0xe9, 0xf9, 0x24, 0x6e, 0xda, 0x6f, 0xe3, 0xb2,
-
  0xcf, 0x2d, 0xc3, 0xad, 0xf2, 0x94, 0x7e, 0x04, 0x81, 0x01, 0x49, 0x6f,
-
  0x26, 0x2d, 0xec, 0xfb, 0x17, 0x2f, 0x8f, 0xb7, 0xa2, 0x37, 0x12, 0x07,
-
  0x87, 0xca, 0xea, 0x35, 0x1c, 0x0b, 0x6e, 0x60, 0x33, 0x1b, 0x80, 0x40,
-
  0xca, 0x40, 0x70, 0xa8, 0xf9, 0x4d, 0x8a, 0x71, 0x30, 0xaa, 0x70, 0x4b,
-
  0xc3, 0x0a, 0xd5, 0x69, 0xb3, 0xbd, 0x3b, 0xd8, 0xed, 0x47, 0x11, 0x1b,
-
  0x9d, 0x4a, 0x57, 0xbd, 0xa6, 0x14, 0x67, 0x8e, 0x30, 0xa2, 0xae, 0xdb,
-
  0x34, 0xfd, 0x06, 0x3b, 0xae, 0x7c, 0xd7, 0x35, 0x9d, 0x6f, 0x6b, 0x97,
-
  0xb9, 0x4a, 0xae, 0xfd, 0xad, 0xdd, 0x89, 0x1f, 0x7c, 0xf9, 0x65, 0x43,
-
  0xa6, 0x56, 0x1e, 0x8c, 0xe6, 0x98, 0x87, 0x3b, 0x3b, 0x34, 0x37, 0xaf,
-
  0xae, 0x06, 0x7c, 0x11, 0x7f, 0x49, 0x2f, 0x36, 0x5f, 0xab, 0x52, 0xa0,
-
  0xa3, 0x49, 0xf7, 0x7b, 0x31, 0x7e, 0x13, 0xe8, 0x8e, 0xe8, 0xa5, 0xf3,
-
  0xad, 0x2f, 0xb1, 0xbb, 0xc0, 0x5b, 0xf4, 0x30, 0x2f, 0x63, 0x31, 0x9d,
-
  0x22, 0xb9, 0xe1, 0x93, 0x5a, 0x12, 0xf0, 0x2a, 0x29, 0x27, 0xfe, 0x74,
-
  0x77, 0xfa, 0xf1, 0x6e, 0xd7, 0x74, 0x89, 0x0f, 0x52, 0xf6, 0x23, 0xee,
-
  0x27, 0x72, 0x86, 0xcd, 0x3f, 0x6d, 0x31, 0x48, 0x57, 0xbb, 0xa1, 0x5d,
-
  0x18, 0xd1, 0xee, 0x97, 0x5f, 0xf6, 0x71, 0x64, 0x0f, 0xbf, 0xfc, 0xb2,
-
  0xb3, 0x6a, 0x89, 0xd3, 0xcd, 0x55, 0x61, 0x1d, 0x08, 0xf8, 0xba, 0x25,
-
  0x9a, 0x0a, 0xba, 0x89, 0xc2, 0xfd, 0xe0, 0x37, 0x5f, 0x47, 0xaf, 0x4f,
-
  0xce, 0x8e, 0x1d, 0x4b, 0x3d, 0x1d, 0x20, 0x8e, 0x69, 0x72, 0x6c, 0x53,
-
  0x14, 0x08, 0xb7, 0xc0, 0xfc, 0x24, 0x36, 0x03, 0xa2, 0xb1, 0xc5, 0xb7,
-
  0x99, 0x11, 0x40, 0xa1, 0x71, 0x5c, 0xf5, 0x25, 0x0d, 0xdf, 0x9c, 0x49,
-
  0x16, 0x80, 0x28, 0x4c, 0x2f, 0xce, 0x2a, 0x65, 0xa9, 0xff, 0x2b, 0x3a,
-
  0x4d, 0xca, 0xca, 0x07, 0xd6, 0x40, 0xe3, 0x91, 0x9a, 0xca, 0xc4, 0x6a,
-
  0x59, 0x94, 0x73, 0xe3, 0x92, 0x30, 0xee, 0x31, 0x31, 0x6c, 0xc8, 0xdf,
-
  0xd9, 0x28, 0x9b, 0x65, 0xf5, 0x75, 0x87, 0xcd, 0x0c, 0x04, 0xc5, 0x80,
-
  0x2e, 0x76, 0x22, 0x0e, 0xec, 0xf3, 0xac, 0x76, 0x0b, 0x59, 0x6e, 0x02,
-
  0x19, 0x6e, 0x91, 0xad, 0x9a, 0xd3, 0xca, 0x24, 0x14, 0x65, 0xa3, 0x42,
-
  0xac, 0x41, 0x4e, 0xe4, 0xdf, 0x40, 0x0b, 0xe3, 0x86, 0x67, 0x0b, 0x4b,
-
  0x67, 0x0c, 0x45, 0x66, 0x1f, 0x8f, 0xe9, 0x41, 0x39, 0xc6, 0x64, 0x6c,
-
  0xfb, 0x40, 0x0e, 0xfa, 0x84, 0xaa, 0xbc, 0x73, 0xd7, 0xdd, 0xc1, 0x28,
-
  0xe4, 0x78, 0xa1, 0x70, 0x62, 0x45, 0x09, 0xc5, 0x76, 0xdc, 0x44, 0xff,
-
  0x0d, 0x67, 0x41, 0x0c, 0x0b, 0xcc, 0x91, 0x40, 0xbc, 0x3a, 0xd8, 0xec,
-
  0xe4, 0x9f, 0xa4, 0x0b, 0x4d, 0x88, 0xcf, 0x9b, 0xed, 0xc0, 0x21, 0x9b,
-
  0x66, 0xe7, 0xcb, 0x32, 0x9c, 0x19, 0xfd, 0x77, 0x8b, 0x59, 0x49, 0x3c,
-
  0x0f, 0xa5, 0xef, 0xab, 0x44, 0xb1, 0x32, 0xe7, 0x68, 0xad, 0x55, 0x86,
-
  0xa3, 0x06, 0x3c, 0xc5, 0xa6, 0x84, 0x9b, 0xd0, 0x03, 0x1f, 0xe4, 0x5a,
-
  0x4d, 0x53, 0x50, 0x73, 0x28, 0x64, 0x4f, 0x22, 0xcd, 0xc9, 0x01, 0x45,
-
  0x0d, 0x1a, 0x8c, 0x50, 0x71, 0x76, 0x21, 0x21, 0xa2, 0x58, 0x98, 0xc8,
-
  0x12, 0x04, 0xd2, 0xd8, 0x68, 0xfa, 0xea, 0xdd, 0xc7, 0x67, 0x71, 0x76,
-
  0x57, 0x17, 0x05, 0x96, 0xed, 0x04, 0x7e, 0x89, 0xfc, 0xd1, 0x2f, 0x7a,
-
  0x24, 0xb5, 0xda, 0x88, 0x31, 0xf2, 0x26, 0x4d, 0x40, 0xc3, 0x9e, 0x15,
-
  0x09, 0x6e, 0x24, 0x91, 0x87, 0x46, 0x44, 0x8a, 0x29, 0x8f, 0xab, 0xb0,
-
  0xea, 0xee, 0x7a, 0xd1, 0xc9, 0xb8, 0xd9, 0xb2, 0xcf, 0x70, 0xce, 0x9c,
-
  0x92, 0x5c, 0x74, 0x7e, 0x1c, 0xa3, 0x28, 0xb3, 0x50, 0xe8, 0x84, 0x2b,
-
  0x4c, 0x6d, 0x0d, 0x22, 0xdf, 0xd4, 0x88, 0x67, 0x91, 0xf7, 0xab, 0xd2,
-
  0xdd, 0x4a, 0x3f, 0xd4, 0xf0, 0x67, 0x3a, 0x71, 0x4d, 0xb4, 0xd1, 0xf0,
-
  0xc5, 0x7f, 0x1d, 0x07, 0xb3, 0x57, 0x9c, 0x3b, 0x68, 0xc5, 0xdd, 0xfa,
-
  0xc9, 0x01, 0x4e, 0x78, 0x04, 0x7b, 0x7b, 0xf1, 0x83, 0x07, 0xeb, 0xdd,
-
  0xab, 0x47, 0x84, 0x78, 0x5d, 0xe4, 0x64, 0x95, 0x8f, 0x13, 0x49, 0x7a,
-
  0x4e, 0xf0, 0xd3, 0x64, 0x81, 0xeb, 0xd2, 0x94, 0xfa, 0xd0, 0xbf, 0x35,
-
  0x87, 0x85, 0xd7, 0x08, 0x00, 0xfc, 0xa4, 0x2b, 0xa5, 0x82, 0x27, 0x0d,
-
  0x4f, 0x67, 0xf3, 0xe5, 0xdc, 0x3a, 0x47, 0xa6, 0xf4, 0x6e, 0x3e, 0xbe,
-
  0x66, 0xe2, 0xa3, 0xea, 0x7e, 0x2e, 0x64, 0x90, 0x77, 0xaa, 0x72, 0xe7,
-
  0x32, 0xb4, 0x35, 0x6c, 0x91, 0x38, 0xc8, 0xd9, 0xc1, 0x5a, 0xf1, 0x32,
-
  0xcf, 0xb0, 0xdc, 0x5f, 0x31, 0x4f, 0x59, 0x48, 0x26, 0x7e, 0x34, 0xe9,
-
  0x42, 0x44, 0x65, 0x4c, 0x10, 0xa0, 0x08, 0x53, 0x72, 0x53, 0x8e, 0x8b,
-
  0xe2, 0x60, 0x88, 0xfb, 0x42, 0x5c, 0x1d, 0x89, 0x20, 0x61, 0x60, 0x69,
-
  0xd7, 0x8e, 0x82, 0xb4, 0x28, 0xdf, 0x4d, 0xc9, 0xe4, 0x5a, 0x69, 0x82,
-
  0x40, 0x1a, 0x22, 0x18, 0xe6, 0x35, 0x4a, 0x1e, 0x6f, 0xdf, 0xbc, 0xe4,
-
  0x30, 0x9e, 0xc4, 0x36, 0x04, 0xdb, 0x05, 0xbb, 0x46, 0x37, 0x24, 0xb4,
-
  0xc7, 0xde, 0xb8, 0x24, 0x0f, 0xa9, 0x73, 0xb4, 0x76, 0x28, 0x60, 0xe3,
-
  0x64, 0xdc, 0x44, 0x89, 0xab, 0x04, 0x16, 0x63, 0x09, 0x7b, 0x3a, 0x33,
-
  0xc3, 0xb6, 0xed, 0xa3, 0x43, 0x1c, 0x67, 0xe4, 0x49, 0xa8, 0x35, 0xfa,
-
  0xca, 0x32, 0x12, 0x6b, 0x5d, 0xbc, 0x64, 0x5c, 0x45, 0x68, 0xbf, 0x29,
-
  0xbe, 0x4b, 0x94, 0x82, 0x8a, 0xde, 0x21, 0xa0, 0xae, 0xf8, 0xbf, 0x28,
-
  0x0c, 0x00, 0xf8, 0x2e, 0xec, 0xc4, 0x4c, 0x83, 0x5a, 0x82, 0x71, 0x4e,
-
  0x2e, 0x35, 0x35, 0x8e, 0x11, 0xf4, 0xd2, 0x7b, 0xbd, 0xfd, 0xb6, 0x27,
-
  0x49, 0x21, 0xaf, 0xc5, 0x40, 0xa8, 0xb6, 0x2f, 0xa0, 0x8b, 0xd8, 0xf3,
-
  0x05, 0x73, 0xf0, 0xe3, 0x5b, 0xb6, 0x96, 0x19, 0xda, 0xc0, 0xec, 0x08,
-
  0x35, 0xc9, 0xe3, 0xdf, 0xec, 0x29, 0xdd, 0xa8, 0x36, 0x80, 0x68, 0x48,
-
  0xf8, 0xc1, 0xd2, 0x70, 0x1b, 0xf3, 0xf6, 0x85, 0xb3, 0x09, 0xb7, 0xe2,
-
  0x12, 0x28, 0x05, 0xbf, 0xbc, 0x00, 0xbe, 0xb3, 0x09, 0xc4, 0x52, 0x6e,
-
  0xf1, 0x05, 0x35, 0xd9, 0x88, 0xb6, 0x37, 0x27, 0x09, 0xc7, 0x6e, 0x92,
-
  0xd0, 0xb6, 0x07, 0x87, 0x0f, 0x63, 0x12, 0xb0, 0x83, 0x2d, 0x12, 0xf1,
-
  0xbb, 0x0a, 0xa8, 0xeb, 0xb0, 0xfa, 0x52, 0x83, 0xaf, 0x87, 0x93, 0x74,
-
  0x66, 0x4e, 0x71, 0x5a, 0x1a, 0x56, 0x46, 0x36, 0xd5, 0x50, 0xd8, 0x2b,
-
  0x55, 0x68, 0xc6, 0x23, 0x80, 0xbd, 0x06, 0xc5, 0x7f, 0x26, 0xe3, 0x8c,
-
  0x00, 0x6b, 0x67, 0x6c, 0x98, 0xe4, 0x13, 0xb7, 0xbb, 0x63, 0xd1, 0xa2,
-
  0xb1, 0x05, 0x9e, 0x27, 0x45, 0xa8, 0x29, 0x38, 0xb0, 0xc7, 0x79, 0xdd,
-
  0x63, 0x60, 0xf6, 0x8c, 0xc9, 0xec, 0x91, 0x88, 0x90, 0x15, 0xdd, 0x44,
-
  0x40, 0x17, 0xb3, 0x64, 0x41, 0xc0, 0xb9, 0xac, 0xd4, 0x05, 0x88, 0x17,
-
  0xd4, 0xc3, 0xcb, 0x0c, 0xcb, 0xa8, 0x19, 0xc2, 0xc4, 0x90, 0x77, 0xa1,
-
  0xcc, 0x8e, 0x9a, 0xd9, 0xd3, 0x65, 0x2e, 0x19, 0xf0, 0x54, 0x61, 0x68,
-
  0x0e, 0x03, 0xcd, 0x44, 0x74, 0x85, 0x2b, 0x1a, 0xad, 0x3e, 0xa4, 0x67,
-
  0x4a, 0x11, 0x7a, 0x3d, 0x1e, 0xd3, 0x20, 0x13, 0x40, 0x06, 0x24, 0xc1,
-
  0x3e, 0x73, 0x8e, 0x12, 0x07, 0xc2, 0x02, 0xf9, 0x6e, 0x87, 0x96, 0x83,
-
  0x5b, 0xb5, 0xcb, 0xa1, 0x97, 0x5e, 0xb9, 0xcc, 0x23, 0x3f, 0x14, 0x09,
-
  0x3a, 0x07, 0x9d, 0x62, 0x1c, 0x1a, 0x38, 0x47, 0x78, 0x61, 0xee, 0xcd,
-
  0x35, 0x9b, 0x3d, 0xb5, 0x9e, 0x65, 0xdf, 0x5c, 0xc9, 0x16, 0x56, 0x81,
-
  0x1e, 0x53, 0xd9, 0x23, 0x08, 0xd7, 0x4d, 0x4f, 0x00, 0x19, 0x61, 0x15,
-
  0xf3, 0x59, 0x71, 0xce, 0x75, 0x9a, 0x48, 0x75, 0xa4, 0x2c, 0x9d, 0xa2,
-
  0xd6, 0x88, 0x17, 0x0a, 0xda, 0xfe, 0xbc, 0x35, 0xaf, 0x55, 0xfd, 0xac,
-
  0xd3, 0x4f, 0x5e, 0xe6, 0xad, 0xea, 0xbe, 0x17, 0xa1, 0xf7, 0xbd, 0xed,
-
  0x60, 0x71, 0xd3, 0x68, 0x30, 0x18, 0xac, 0x7a, 0x6d, 0x7f, 0xfb, 0xe2,
-
  0x2e, 0xaf, 0xed, 0x3e, 0xd8, 0x9e, 0x77, 0xbe, 0xd7, 0xad, 0xdf, 0x52,
-
  0x35, 0x54, 0x6e, 0x81, 0xa3, 0x09, 0x69, 0xab, 0x63, 0xda, 0xea, 0x46,
-
  0xba, 0x23, 0x9b, 0x47, 0xdc, 0x4b, 0xf9, 0xca, 0x40, 0x12, 0x13, 0xb5,
-
  0x71, 0xfc, 0x70, 0xe6, 0x14, 0x89, 0x4c, 0x66, 0xe2, 0x72, 0x05, 0x41,
-
  0x89, 0x03, 0xfa, 0x28, 0xa0, 0x9b, 0x44, 0xd4, 0x69, 0xd0, 0x47, 0x4f,
-
  0xb1, 0xd0, 0x4e, 0xf9, 0x55, 0x06, 0xe2, 0x22, 0xf0, 0x72, 0x0e, 0x03,
-
  0xe1, 0xe3, 0x30, 0xa7, 0x80, 0x12, 0x72, 0xc5, 0x62, 0x40, 0x0c, 0x57,
-
  0xa3, 0xf6, 0xcf, 0x47, 0x32, 0xab, 0x53, 0xaa, 0xd8, 0x0e, 0x63, 0x5d,
-
  0x19, 0xfd, 0x89, 0x73, 0xb9, 0x45, 0xe0, 0xa7, 0x8d, 0x80, 0x83, 0x69,
-
  0xb6, 0xfb, 0x6a, 0x05, 0xc4, 0x85, 0xba, 0xbc, 0x51, 0x98, 0xba, 0x5a,
-
  0x17, 0x82, 0xa0, 0x8c, 0x75, 0x81, 0x9c, 0xad, 0x49, 0xd9, 0x78, 0x86,
-
  0xb1, 0xbb, 0x65, 0xf4, 0x14, 0xee, 0xfa, 0x8e, 0xc2, 0x05, 0x43, 0x12,
-
  0x3f, 0xf1, 0x20, 0xf4, 0xde, 0xa4, 0x54, 0xdc, 0xbe, 0x04, 0xc5, 0xed,
-
  0x3c, 0x85, 0x1b, 0x21, 0x67, 0xb8, 0x34, 0x49, 0x7e, 0x32, 0xc1, 0xbe,
-
  0xe2, 0xee, 0x0e, 0x9d, 0x6e, 0x34, 0x27, 0xa8, 0xfa, 0x60, 0x82, 0xc5,
-
  0x29, 0xa1, 0xc0, 0xad, 0x36, 0x30, 0x9d, 0x25, 0xb2, 0xf7, 0xcb, 0x12,
-
  0x13, 0x41, 0x88, 0x72, 0x02, 0x07, 0xce, 0xf0, 0xa6, 0x97, 0x14, 0x2b,
-
  0x6e, 0x1d, 0x39, 0x06, 0xd5, 0x22, 0x62, 0x31, 0x31, 0xea, 0x7d, 0x85,
-
  0x81, 0x72, 0x3d, 0x1d, 0x66, 0x9c, 0xfa, 0x11, 0xc8, 0xba, 0x14, 0x98,
-
  0x52, 0x50, 0x17, 0x0e, 0x4c, 0x7b, 0x33, 0xc4, 0x8e, 0x04, 0x64, 0xc9,
-
  0x56, 0x91, 0x3b, 0x02, 0x5f, 0x69, 0x4b, 0xcb, 0xc4, 0x58, 0x51, 0xb7,
-
  0x9b, 0x16, 0x1c, 0x1d, 0x08, 0x17, 0xf0, 0x4b, 0x19, 0xdf, 0x81, 0x04,
-
  0x6a, 0xb2, 0x99, 0x4d, 0x87, 0xd6, 0xc8, 0x9a, 0x0b, 0x4d, 0x36, 0x99,
-
  0x81, 0xfa, 0xd0, 0x37, 0xa1, 0x29, 0x38, 0x47, 0x51, 0xb0, 0x70, 0x4c,
-
  0x24, 0x78, 0x70, 0x48, 0x54, 0x63, 0x6b, 0x83, 0x7a, 0x41, 0x63, 0xef,
-
  0x3f, 0x7d, 0xad, 0xe7, 0x6e, 0x06, 0x28, 0x43, 0xe8, 0x29, 0x41, 0x4f,
-
  0x61, 0xd5, 0x35, 0xc0, 0xbe, 0xb7, 0x06, 0xbe, 0xd9, 0xca, 0x86, 0x64,
-
  0x81, 0xe3, 0x97, 0x77, 0x69, 0x70, 0xf5, 0xcb, 0x9d, 0x87, 0xee, 0x10,
-
  0x57, 0x18, 0xbd, 0x9f, 0x71, 0x72, 0x4e, 0x11, 0x5d, 0xc8, 0x35, 0x1d,
-
  0x1a, 0x77, 0x0e, 0xe2, 0x5f, 0x78, 0x33, 0x30, 0xa2, 0x4e, 0xbe, 0x8c,
-
  0x03, 0xbe, 0x42, 0x39, 0x8d, 0xee, 0x1d, 0x59, 0x13, 0xdc, 0x22, 0xd1,
-
  0xf3, 0x89, 0xd3, 0x86, 0xf8, 0xfd, 0xf4, 0x58, 0x8a, 0x41, 0x27, 0x18,
-
  0xa0, 0x17, 0xdb, 0x4b, 0xf4, 0x88, 0x0b, 0x4a, 0xc4, 0xc0, 0xbb, 0x40,
-
  0x43, 0xe0, 0x42, 0xce, 0x64, 0x4c, 0xe6, 0x92, 0x08, 0xca, 0x53, 0x49,
-
  0xdc, 0x0b, 0x22, 0x33, 0x8d, 0x0d, 0x3c, 0xa1, 0x7d, 0xcb, 0x44, 0x9a,
-
  0xc2, 0x09, 0x31, 0x92, 0x8f, 0x74, 0x6d, 0x68, 0x6e, 0x1a, 0x0e, 0x8a,
-
  0x71, 0x61, 0x1b, 0xb9, 0x86, 0x5e, 0xed, 0x9a, 0xb2, 0xf1, 0xb8, 0xc0,
-
  0xd9, 0xc6, 0x38, 0x7e, 0x13, 0x7d, 0x63, 0xbc, 0xfe, 0xa1, 0xe6, 0x56,
-
  0x89, 0xf8, 0x91, 0xd6, 0x2b, 0xaa, 0x92, 0x4b, 0x9b, 0x7b, 0x24, 0x38,
-
  0x3d, 0x6e, 0x70, 0x1d, 0x5c, 0x3a, 0xf2, 0x65, 0x97, 0xff, 0xa7, 0x95,
-
  0xee, 0x1a, 0xc7, 0x1c, 0x9b, 0x1d, 0xc3, 0xf3, 0xa1, 0xa3, 0xe8, 0x42,
-
  0x36, 0x1a, 0xab, 0x5e, 0x62, 0x5d, 0xa5, 0xa2, 0x7f, 0x09, 0xb8, 0xa5,
-
  0x94, 0x4c, 0xc5, 0x14, 0xba, 0x00, 0x89, 0x98, 0x22, 0xd3, 0x94, 0x85,
-
  0x57, 0x71, 0x99, 0x0b, 0x29, 0x93, 0x69, 0x1d, 0x71, 0xee, 0x74, 0x1c,
-
  0x79, 0xda, 0x67, 0x3a, 0x98, 0xe3, 0x76, 0x55, 0xa2, 0x75, 0x82, 0x1d,
-
  0xef, 0x9a, 0xe9, 0x28, 0x65, 0x43, 0xc6, 0xb0, 0x3c, 0x51, 0x0c, 0xf7,
-
  0xe9, 0x0c, 0x83, 0x78, 0xac, 0xb6, 0x9c, 0xd5, 0x9c, 0x37, 0xe5, 0x6b,
-
  0xca, 0xe7, 0x91, 0x40, 0x07, 0x8d, 0x41, 0xb2, 0x23, 0x95, 0x79, 0xd1,
-
  0x10, 0x89, 0x65, 0x1d, 0x8c, 0xb0, 0x67, 0x22, 0x01, 0x3b, 0xf7, 0x94,
-
  0xd0, 0x04, 0x6a, 0x5f, 0xf3, 0xeb, 0x48, 0xc1, 0x38, 0x93, 0x6c, 0x42,
-
  0x78, 0xc2, 0x31, 0x2b, 0x71, 0xfa, 0x58, 0xf4, 0xc7, 0x98, 0x0b, 0x6a,
-
  0x63, 0x90, 0xd5, 0xe6, 0x75, 0x5a, 0x6f, 0xd9, 0xe5, 0x53, 0x52, 0xfd,
-
  0xa2, 0xc3, 0x9f, 0x2d, 0x66, 0x2b, 0x3b, 0x0c, 0xf4, 0x9a, 0x38, 0x71,
-
  0xe0, 0xbc, 0x71, 0x20, 0x3d, 0x51, 0x06, 0x3e, 0x88, 0xa3, 0x30, 0xb1,
-
  0xba, 0xbb, 0xb9, 0x8e, 0xc8, 0x37, 0x35, 0x96, 0x99, 0xea, 0xdb, 0x0c,
-
  0x74, 0xa8, 0x47, 0xac, 0xa7, 0xc7, 0xae, 0x27, 0x96, 0xc8, 0x3e, 0x5f,
-
  0x40, 0xb8, 0x9c, 0xed, 0xb5, 0x43, 0xa3, 0xdc, 0x35, 0x72, 0x74, 0x35,
-
  0x6e, 0x35, 0x1a, 0xf8, 0x53, 0x8f, 0x1b, 0x88, 0x36, 0xf5, 0x13, 0xa9,
-
  0x97, 0x0a, 0x03, 0x9f, 0x65, 0x63, 0x4f, 0xa8, 0x31, 0xa6, 0x53, 0x8a,
-
  0x0e, 0xf0, 0x0b, 0xb4, 0xff, 0x74, 0xf8, 0xe6, 0xf5, 0x8b, 0xd7, 0x3f,
-
  0x1c, 0xc0, 0x75, 0x90, 0x96, 0x63, 0xb4, 0xea, 0xfe, 0xb6, 0x9c, 0x40,
-
  0x3b, 0x78, 0x77, 0x8a, 0x90, 0xde, 0xb2, 0x6f, 0xa4, 0x12, 0xe2, 0x86,
-
  0xf6, 0x37, 0x0f, 0xd7, 0x53, 0x20, 0x2a, 0x10, 0x06, 0x0d, 0x53, 0xe3,
-
  0xce, 0x97, 0x26, 0xc2, 0x0e, 0x03, 0xcd, 0xd0, 0x40, 0xc9, 0xa1, 0x8d,
-
  0x14, 0x8f, 0xaf, 0xcb, 0x84, 0x91, 0x6f, 0xd1, 0xb3, 0x97, 0x2f, 0x23,
-
  0x2f, 0x53, 0x97, 0x71, 0x11, 0xd8, 0x25, 0x4a, 0xd9, 0x97, 0x0a, 0x49,
-
  0x80, 0x46, 0x40, 0xbc, 0x76, 0x1b, 0xd7, 0x3f, 0x90, 0xb6, 0x42, 0x64,
-
  0x50, 0xc6, 0xf6, 0x3c, 0x60, 0xd8, 0x24, 0x7c, 0x9c, 0xb2, 0x06, 0x59,
-
  0xa1, 0x98, 0xd6, 0x68, 0x23, 0x5d, 0x59, 0xc3, 0xe0, 0x2f, 0xfd, 0x28,
-
  0xc8, 0xff, 0x57, 0x89, 0x9a, 0x77, 0x00, 0x36, 0xf4, 0x3b, 0x58, 0x53,
-
  0xf0, 0x3c, 0xf9, 0x4b, 0xe8, 0x06, 0xdc, 0xa6, 0xa3, 0xd9, 0x79, 0x0d,
-
  0xb6, 0xef, 0xa5, 0x86, 0x6a, 0x60, 0x3f, 0x46, 0x60, 0xc3, 0x55, 0xc1,
-
  0x9e, 0x17, 0xec, 0x8c, 0x72, 0xf3, 0xb5, 0x24, 0x93, 0x80, 0x6a, 0x81,
-
  0x00, 0x3b, 0x62, 0xcb, 0x15, 0x59, 0xac, 0x38, 0x79, 0xc0, 0xb3, 0x6d,
-
  0x80, 0x98, 0x2f, 0x4e, 0x8c, 0x0a, 0xc5, 0x27, 0xff, 0xca, 0xbc, 0x4a,
-
  0x4b, 0x71, 0x74, 0x9a, 0xfa, 0x3e, 0x20, 0x70, 0x0d, 0xa2, 0x61, 0x01,
-
  0xcf, 0x87, 0xec, 0xcd, 0x09, 0x97, 0x26, 0xd2, 0xba, 0xec, 0x44, 0x3d,
-
  0x34, 0x1e, 0x9b, 0xa2, 0x8b, 0xc2, 0x24, 0x07, 0x73, 0x37, 0xe7, 0xeb,
-
  0xdb, 0xca, 0x68, 0x7f, 0x47, 0xa9, 0xd1, 0x90, 0xb0, 0x07, 0x0a, 0xd3,
-
  0xc5, 0x13, 0xd2, 0x8b, 0x61, 0x2d, 0x7b, 0x48, 0x71, 0xee, 0x5e, 0x06,
-
  0x37, 0xb1, 0x51, 0x1e, 0xa3, 0xb5, 0xc4, 0xf7, 0x5b, 0x1e, 0xa3, 0xd5,
-
  0xf8, 0xda, 0x7a, 0x4c, 0x6b, 0x6c, 0x01, 0xa7, 0x3f, 0x90, 0xd6, 0x6e,
-
  0xc7, 0xe7, 0x7b, 0x77, 0xa2, 0xb9, 0xf6, 0x57, 0x6d, 0xce, 0x52, 0x22,
-
  0x14, 0xa0, 0x24, 0x53, 0x11, 0xa8, 0x34, 0xfb, 0x47, 0x9d, 0xc0, 0x25,
-
  0x0a, 0x17, 0x76, 0x52, 0x20, 0xe8, 0xab, 0x2b, 0xac, 0x61, 0x9e, 0x7a,
-
  0x6b, 0xb7, 0xc9, 0xfe, 0x25, 0x13, 0x67, 0xe2, 0x96, 0xf1, 0x72, 0x5f,
-
  0x6f, 0x64, 0xd5, 0x6a, 0x9d, 0xdd, 0xb1, 0x57, 0x4c, 0x0a, 0x04, 0x1d,
-
  0x3f, 0x59, 0xe5, 0x4c, 0x1b, 0x37, 0x72, 0x51, 0x48, 0x82, 0xf1, 0xa3,
-
  0x87, 0x14, 0xf6, 0xa7, 0x2d, 0xcd, 0x53, 0x41, 0x36, 0x27, 0x7a, 0x92,
-
  0x9b, 0xa3, 0xab, 0xd0, 0x05, 0x14, 0x74, 0x64, 0x08, 0x5b, 0x35, 0xcd,
-
  0x6f, 0xce, 0x41, 0xe7, 0xed, 0x1c, 0x8a, 0x0a, 0x6f, 0x59, 0x7e, 0x59,
-
  0xd0, 0x37, 0xc6, 0xba, 0x1d, 0x48, 0xf9, 0x73, 0x30, 0x07, 0x4a, 0x49,
-
  0x73, 0x5b, 0x21, 0x5f, 0x91, 0x68, 0x27, 0x2b, 0x2d, 0xf3, 0x61, 0xb9,
-
  0xd4, 0x01, 0x4d, 0x82, 0x09, 0x4a, 0x94, 0xb4, 0x41, 0xb9, 0x36, 0x77,
-
  0x6a, 0x1b, 0xda, 0x48, 0x79, 0x4c, 0x1f, 0x6f, 0xd0, 0x0b, 0x82, 0x39,
-
  0x98, 0xa1, 0xbb, 0xd3, 0x02, 0x5e, 0xfb, 0x22, 0x58, 0xad, 0xf8, 0x39,
-
  0xab, 0xe4, 0xab, 0x81, 0x85, 0x61, 0x72, 0xb6, 0xc0, 0xba, 0x60, 0x29,
-
  0x9e, 0x9f, 0x83, 0xc1, 0xc7, 0x17, 0x45, 0x11, 0x94, 0xe8, 0xad, 0xc8,
-
  0x48, 0xba, 0x0b, 0x95, 0xf0, 0xeb, 0x50, 0x2d, 0x14, 0xd0, 0xd3, 0x09,
-
  0xe2, 0xf1, 0x50, 0x3c, 0x92, 0xc9, 0x24, 0x53, 0x3c, 0xcf, 0xc6, 0xca,
-
  0xb7, 0xc5, 0x35, 0x1e, 0x90, 0x27, 0xb4, 0x86, 0x72, 0xb1, 0xf8, 0x3b,
-
  0x59, 0x22, 0x59, 0xa1, 0xa6, 0x08, 0xda, 0x58, 0x94, 0xa0, 0xf8, 0xc6,
-
  0xe9, 0x27, 0xc4, 0x58, 0x8d, 0x99, 0x68, 0x42, 0x7e, 0xb5, 0xbc, 0x19,
-
  0x12, 0x4b, 0xe3, 0x84, 0xd6, 0x91, 0xc9, 0xfd, 0x71, 0x6f, 0xa7, 0xeb,
-
  0xe2, 0x67, 0x08, 0x01, 0x45, 0x72, 0x5f, 0x24, 0x12, 0x4c, 0xa8, 0x82,
-
  0x83, 0x5b, 0x29, 0x0f, 0x85, 0x8a, 0xe5, 0x42, 0x9c, 0xd8, 0x49, 0xd5,
-
  0xb5, 0xfe, 0x9d, 0x99, 0x2d, 0xac, 0x89, 0x39, 0x48, 0xd6, 0x15, 0xfb,
-
  0x4d, 0x99, 0x19, 0x0b, 0x0c, 0x80, 0xf5, 0x26, 0xd1, 0x65, 0x16, 0x38,
-
  0x54, 0x68, 0xc3, 0xf6, 0x6b, 0xb5, 0x79, 0xd7, 0xd9, 0xc7, 0x97, 0x6b,
-
  0xeb, 0x12, 0x04, 0x3a, 0xe5, 0x00, 0x62, 0xa9, 0xab, 0x10, 0x6e, 0x5b,
-
  0x3c, 0x9f, 0x24, 0x1f, 0x7b, 0x7e, 0x15, 0xeb, 0xb6, 0x21, 0x11, 0x05,
-
  0x2b, 0x42, 0xb6, 0xf9, 0xfa, 0x1b, 0x67, 0xf2, 0x38, 0xc7, 0x90, 0x99,
-
  0x5b, 0x59, 0xac, 0x86, 0x3a, 0x38, 0x06, 0x1e, 0xab, 0x0b, 0x90, 0x03,
-
  0x9c, 0xae, 0x00, 0xe1, 0x82, 0xd8, 0x9a, 0xef, 0xe5, 0x85, 0x69, 0x47,
-
  0x01, 0x4e, 0x6e, 0x38, 0x81, 0x66, 0x1e, 0x1a, 0x24, 0x0e, 0xee, 0x8d,
-
  0xcc, 0x29, 0x85, 0x5f, 0x33, 0x53, 0x6e, 0x18, 0xf6, 0x59, 0xc3, 0x9b,
-
  0x04, 0x0d, 0x41, 0x7b, 0x85, 0x3d, 0xad, 0xb2, 0x49, 0xb6, 0x27, 0x7e,
-
  0xcf, 0xf9, 0xba, 0x4e, 0xcb, 0x77, 0xbc, 0xde, 0x69, 0x50, 0x20, 0xbd,
-
  0x4c, 0x8b, 0x62, 0x3d, 0x03, 0x8a, 0x47, 0xcf, 0x64, 0x41, 0xf9, 0x9d,
-
  0x30, 0x05, 0x71, 0x4f, 0xd0, 0x03, 0xd2, 0x96, 0x26, 0x2f, 0xd3, 0xb8,
-
  0xc8, 0xe3, 0x10, 0x1c, 0xcf, 0x4f, 0xa6, 0x1e, 0x9d, 0xa9, 0x81, 0xe9,
-
  0xe8, 0xb3, 0xa4, 0x45, 0xa2, 0x07, 0x0a, 0x23, 0xdc, 0xd0, 0x43, 0x24,
-
  0x22, 0x00, 0x1d, 0x14, 0x12, 0x01, 0x02, 0x67, 0xbd, 0x99, 0xf4, 0x6e,
-
  0xa3, 0x3b, 0x69, 0xff, 0x2e, 0xc5, 0xae, 0x61, 0x12, 0xf1, 0x80, 0xdb,
-
  0x91, 0xcf, 0x83, 0x05, 0xdb, 0x80, 0xb7, 0x29, 0xc5, 0x5c, 0x72, 0x1e,
-
  0x21, 0x5d, 0x3f, 0xb3, 0x94, 0x2f, 0x26, 0x1b, 0xf4, 0x25, 0x88, 0x68,
-
  0x06, 0xc7, 0x85, 0x74, 0x1a, 0x9c, 0x83, 0x0f, 0x17, 0x02, 0x4a, 0xf4,
-
  0x92, 0xac, 0x89, 0x6a, 0x21, 0xef, 0x32, 0x3d, 0xe8, 0x44, 0xa5, 0x06,
-
  0x69, 0x60, 0x62, 0xab, 0x35, 0xea, 0x86, 0x79, 0xbc, 0xb9, 0x03, 0x9f,
-
  0x80, 0x14, 0x9d, 0xd6, 0xef, 0x42, 0x8e, 0xee, 0xe0, 0x80, 0x24, 0x35,
-
  0x69, 0x7e, 0x1d, 0xaa, 0x9c, 0x12, 0xac, 0x09, 0x1c, 0xea, 0xa6, 0xd3,
-
  0xa3, 0x85, 0x92, 0x2f, 0xde, 0xc7, 0x58, 0x42, 0x99, 0x9f, 0xa2, 0x4c,
-
  0xf7, 0xcd, 0xad, 0xca, 0x34, 0x0a, 0xa2, 0x14, 0xb9, 0x24, 0xd0, 0x5e,
-
  0x03, 0xb4, 0xd8, 0xe3, 0x56, 0x7a, 0xd1, 0x26, 0x36, 0xb3, 0xa5, 0x96,
-
  0x38, 0xbf, 0x28, 0x89, 0x05, 0x67, 0x26, 0x19, 0x32, 0xa9, 0x3c, 0x30,
-
  0x1d, 0x36, 0xc3, 0x61, 0xd8, 0x15, 0xa8, 0xb3, 0xcb, 0x59, 0x52, 0x0a,
-
  0x04, 0xf5, 0x74, 0x39, 0x0b, 0xda, 0xaf, 0x51, 0x14, 0xd1, 0x74, 0x08,
-
  0xa0, 0x91, 0x6a, 0xa9, 0x88, 0x0b, 0xb6, 0x94, 0xaf, 0x04, 0x28, 0x00,
-
  0xb5, 0x12, 0x15, 0x54, 0x33, 0x4c, 0x7c, 0xed, 0xb8, 0x6a, 0x29, 0xa0,
-
  0x94, 0x0e, 0x88, 0x31, 0xf1, 0xb0, 0x75, 0x5c, 0xf8, 0xe8, 0x39, 0x0e,
-
  0x49, 0x2e, 0xe4, 0x05, 0x32, 0xe5, 0x12, 0x6d, 0x01, 0x28, 0x71, 0xb7,
-
  0x9a, 0xeb, 0x9d, 0x9c, 0x9e, 0xbd, 0x38, 0x79, 0x3d, 0x8c, 0xfe, 0xd4,
-
  0xeb, 0xf2, 0xeb, 0x35, 0x77, 0xa0, 0x03, 0xd0, 0xef, 0x3f, 0x82, 0xe8,
-
  0xd7, 0x1a, 0x4a, 0xef, 0x4f, 0xbd, 0x28, 0xfe, 0x39, 0xd2, 0x19, 0xac,
-
  0x45, 0x7d, 0x8d, 0x78, 0xe7, 0x06, 0xc8, 0xe8, 0xc3, 0x06, 0x01, 0xba,
-
  0xcf, 0x45, 0x4f, 0xe7, 0x29, 0xec, 0xd1, 0xa4, 0xcb, 0xbb, 0xe3, 0x18,
-
  0x1d, 0xc7, 0xa0, 0x6e, 0x02, 0xe7, 0xd1, 0x17, 0xf9, 0x3d, 0xa5, 0xca,
-
  0x56, 0xf9, 0xf1, 0xa0, 0x75, 0x4f, 0xed, 0x93, 0x4d, 0x3f, 0x10, 0x89,
-
  0xe1, 0xd6, 0x2c, 0xda, 0x6a, 0xbe, 0xdb, 0x9d, 0xda, 0x46, 0x6a, 0x91,
-
  0x17, 0x6c, 0x6c, 0xa0, 0xf8, 0x80, 0x36, 0x59, 0x9a, 0x55, 0xcb, 0x40,
-
  0x15, 0x48, 0x2b, 0xfd, 0xe1, 0xf8, 0x0c, 0xc3, 0x69, 0x08, 0x16, 0xde,
-
  0x8e, 0x8f, 0x42, 0xd5, 0x44, 0x53, 0x4f, 0x8c, 0x35, 0x41, 0x91, 0xe0,
-
  0xf1, 0xbe, 0x41, 0x83, 0x57, 0x92, 0x07, 0x71, 0x54, 0xab, 0x41, 0x74,
-
  0x04, 0xab, 0x51, 0xe4, 0x46, 0x52, 0x56, 0xef, 0xa5, 0x39, 0x1c, 0x5a,
-
  0xe1, 0xfb, 0xf4, 0xed, 0x99, 0x88, 0x36, 0x18, 0xe3, 0x7e, 0x76, 0xdc,
-
  0xf6, 0x3d, 0x21, 0x3a, 0x6e, 0x99, 0xce, 0x28, 0x1c, 0xbd, 0x4e, 0xc7,
-
  0x17, 0x79, 0x81, 0xce, 0xf3, 0xb4, 0x62, 0x65, 0xf3, 0xa7, 0x74, 0xf4,
-
  0xec, 0xf0, 0x47, 0xae, 0xb2, 0x5a, 0x45, 0xa7, 0x6f, 0x4e, 0x4e, 0xbf,
-
  0x7f, 0xf1, 0xfa, 0x59, 0x3f, 0x3a, 0x3a, 0x39, 0xfd, 0x7b, 0x3f, 0x7a,
-
  0x75, 0xf2, 0xe3, 0xf1, 0x17, 0x5e, 0x7a, 0x16, 0x05, 0x0d, 0x78, 0x84,
-
  0xfa, 0x1a, 0xbd, 0x75, 0x68, 0xc4, 0x72, 0x5c, 0x47, 0xec, 0x50, 0x77,
-
  0xa5, 0xfb, 0x43, 0x93, 0x53, 0x43, 0xb6, 0x7e, 0x58, 0x3a, 0x38, 0x84,
-
  0xcf, 0x8f, 0x0f, 0x9f, 0xb5, 0x87, 0x7d, 0x7a, 0x32, 0x3c, 0xa3, 0xce,
-
  0x70, 0x7e, 0x66, 0xd2, 0x18, 0xb8, 0x22, 0x96, 0x4e, 0xd2, 0xe8, 0x38,
-
  0x84, 0x9e, 0x79, 0x13, 0xd0, 0x6b, 0xc6, 0x51, 0xf7, 0x1d, 0xa9, 0xa6,
-
  0x5c, 0x50, 0x99, 0x47, 0xb2, 0x3a, 0xff, 0x97, 0x62, 0xf3, 0x5c, 0xbb,
-
  0x90, 0xd4, 0xfd, 0x26, 0x48, 0x31, 0x45, 0x02, 0x75, 0x31, 0x62, 0x3a,
-
  0x62, 0xad, 0xfa, 0x8d, 0x32, 0x45, 0xc4, 0x77, 0x39, 0x6e, 0x30, 0x91,
-
  0xb8, 0xff, 0x51, 0x8a, 0xf2, 0x76, 0x45, 0x66, 0x20, 0xb2, 0x0b, 0x09,
-
  0xfa, 0xd3, 0x4a, 0x93, 0x10, 0x49, 0x7b, 0x89, 0x96, 0x00, 0xc7, 0xc5,
-
  0xd3, 0x05, 0xea, 0xcb, 0x52, 0x00, 0x0b, 0xa0, 0x8f, 0x45, 0x39, 0x0c,
-
  0x04, 0xb4, 0x2c, 0xa7, 0x40, 0x96, 0x29, 0x17, 0x79, 0xd7, 0xb0, 0x07,
-
  0x0d, 0xce, 0x8d, 0x5f, 0xa8, 0x27, 0xa9, 0x0b, 0x67, 0x8d, 0x53, 0xb7,
-
  0xf8, 0xc4, 0xa8, 0x6b, 0x91, 0xeb, 0x8e, 0x1b, 0x88, 0xae, 0x06, 0x97,
-
  0x70, 0x39, 0x1c, 0xce, 0x33, 0x60, 0xa0, 0xd2, 0x2d, 0xd6, 0xc2, 0xd8,
-
  0xe2, 0x83, 0x74, 0x17, 0x85, 0x12, 0x1a, 0x3c, 0x6f, 0x2c, 0xe8, 0x3e,
-
  0x9e, 0xc8, 0x4b, 0x4f, 0x02, 0x2b, 0xc9, 0x25, 0x9c, 0x11, 0xd3, 0x12,
-
  0x62, 0x16, 0x0a, 0x5c, 0xc0, 0x1b, 0xb3, 0x33, 0x62, 0x49, 0x90, 0x31,
-
  0x78, 0xa1, 0xef, 0x34, 0xcf, 0x64, 0x3c, 0x86, 0xdd, 0xa7, 0x4b, 0xd0,
-
  0xf1, 0x46, 0xef, 0xef, 0x7c, 0xb0, 0x21, 0xb2, 0xa8, 0xe5, 0x55, 0x51,
-
  0xcc, 0x89, 0x84, 0x8c, 0x20, 0x1b, 0x84, 0x68, 0x08, 0x32, 0x46, 0x37,
-
  0xe4, 0xd2, 0x94, 0xbf, 0x30, 0x2c, 0xea, 0xe5, 0x0b, 0x38, 0x0e, 0x81,
-
  0x48, 0xb3, 0x49, 0x81, 0x23, 0xe2, 0x14, 0xc2, 0x4c, 0xef, 0x4c, 0x6c,
-
  0xcb, 0xef, 0xf8, 0xf4, 0xe4, 0x74, 0x3f, 0xd8, 0x33, 0x7e, 0x71, 0x53,
-
  0xd7, 0xde, 0x9e, 0xbd, 0x39, 0x3e, 0x7b, 0xe3, 0xf7, 0xf1, 0xe2, 0xd5,
-
  0x61, 0x78, 0x76, 0xf8, 0x45, 0x57, 0x1f, 0xc4, 0x09, 0xb0, 0x17, 0xcf,
-
  0xc4, 0xe5, 0x96, 0xa8, 0xde, 0x09, 0xa4, 0xc4, 0x6d, 0x0e, 0x5f, 0x75,
-
  0xac, 0x26, 0x7e, 0xb1, 0x62, 0x4e, 0xcf, 0x8f, 0x5f, 0x9e, 0xfa, 0x73,
-
  0xfa, 0xf1, 0xcd, 0xf7, 0x7f, 0x6f, 0x26, 0xe2, 0xed, 0x3f, 0x08, 0xf4,
-
  0x8a, 0x3e, 0xee, 0x06, 0x79, 0x7f, 0x3e, 0x1f, 0xf7, 0xcf, 0x9c, 0xd9,
-
  0x74, 0x76, 0xbc, 0x86, 0x3b, 0xfb, 0xe7, 0xe8, 0xf5, 0x4b, 0xd8, 0xd1,
-
  0xb5, 0x20, 0x5f, 0x9a, 0x62, 0x46, 0x53, 0x1a, 0xad, 0x8a, 0x19, 0x08,
-
  0x92, 0x4f, 0xff, 0xf1, 0x67, 0x82, 0xf9, 0x25, 0x58, 0xb9, 0x03, 0xb8,
-
  0xb5, 0xca, 0x7f, 0xf4, 0xf1, 0xdf, 0x5f, 0x07, 0x83, 0xc1, 0x37, 0x41,
-
  0xb9, 0x1e, 0x35, 0x77, 0xdd, 0x2e, 0x7c, 0x12, 0x1d, 0x7d, 0x2d, 0x03,
-
  0x37, 0xe1, 0x1b, 0x12, 0x9e, 0x23, 0xba, 0x91, 0x16, 0x49, 0x56, 0x22,
-
  0xfa, 0x6e, 0x48, 0x3a, 0xc0, 0x4b, 0xc6, 0x22, 0x72, 0x1a, 0x7d, 0x98,
-
  0x66, 0xac, 0xac, 0x65, 0xb3, 0xda, 0x12, 0x1c, 0x72, 0xa7, 0x5e, 0x60,
-
  0x32, 0xf1, 0x10, 0xaf, 0x19, 0x36, 0x8b, 0xba, 0x65, 0xd5, 0x89, 0x95,
-
  0x19, 0x23, 0x19, 0xe4, 0x7a, 0xd3, 0xc9, 0xdc, 0x27, 0x66, 0xf8, 0x21,
-
  0x38, 0x18, 0xda, 0x56, 0x74, 0x80, 0x53, 0x6e, 0x14, 0x29, 0x1f, 0x74,
-
  0x03, 0x22, 0x19, 0x6e, 0xa7, 0xf5, 0x78, 0x1b, 0x27, 0x59, 0x35, 0x84,
-
  0x72, 0x47, 0x98, 0xf4, 0xfc, 0x53, 0x2e, 0xe4, 0x05, 0x83, 0x4e, 0x73,
-
  0x46, 0xa8, 0x03, 0x1f, 0x66, 0x71, 0xaf, 0x1d, 0x93, 0x4f, 0x07, 0xeb,
-
  0x75, 0xb0, 0xfe, 0xc6, 0x16, 0xc5, 0xce, 0xc0, 0xff, 0xb6, 0x19, 0x37,
-
  0x9a, 0x12, 0xeb, 0x48, 0xe0, 0x44, 0x03, 0xd6, 0x23, 0xba, 0x4a, 0xf4,
-
  0x08, 0x60, 0xf2, 0x21, 0x1e, 0x4a, 0x61, 0xe5, 0x7a, 0x7d, 0xa9, 0xeb,
-
  0xd2, 0xdd, 0x73, 0x85, 0xac, 0x0c, 0x94, 0x2d, 0x25, 0x01, 0xc6, 0xda,
-
  0x86, 0x71, 0xa2, 0x41, 0x9c, 0x16, 0x07, 0x97, 0x7d, 0xe3, 0x4f, 0x1b,
-
  0xa8, 0xa0, 0xd0, 0xdb, 0x41, 0x34, 0x78, 0x25, 0x5a, 0xb4, 0x8f, 0x45,
-
  0x01, 0x08, 0x64, 0x62, 0xe0, 0x66, 0x55, 0x94, 0xf6, 0x4c, 0xde, 0xb6,
-
  0xa1, 0x1e, 0x99, 0xc2, 0x20, 0xfa, 0x29, 0x9b, 0x4d, 0xc6, 0x09, 0x97,
-
  0xd1, 0xf0, 0x65, 0x01, 0xa1, 0x12, 0x56, 0x02, 0x0a, 0xea, 0xd5, 0x1e,
-
  0x1c, 0x49, 0x7d, 0xe9, 0xa0, 0xf9, 0x15, 0x98, 0x4f, 0x9c, 0x01, 0xd4,
-
  0x85, 0x0e, 0x2a, 0x41, 0xc4, 0xb2, 0xc6, 0xc8, 0x7c, 0x28, 0xcb, 0xb3,
-
  0x05, 0xa4, 0xa7, 0x4d, 0x69, 0xd8, 0x4f, 0xfc, 0xc0, 0x0f, 0x5d, 0xca,
-
  0x16, 0x97, 0x0f, 0xc8, 0x39, 0xf4, 0xa8, 0xcf, 0x7f, 0x3d, 0xb2, 0x48,
-
  0x71, 0x8e, 0x9d, 0x8b, 0x95, 0x4b, 0xd6, 0xc5, 0x5e, 0x9c, 0x6a, 0x9a,
-
  0xe1, 0xc0, 0xdf, 0x28, 0x86, 0xb8, 0x51, 0x6d, 0x52, 0xc8, 0x4c, 0x51,
-
  0x80, 0xfc, 0x23, 0xcc, 0x29, 0xac, 0x9c, 0xfe, 0xed, 0x79, 0x2d, 0x04,
-
  0xb3, 0x09, 0x07, 0xb0, 0x51, 0xd9, 0x18, 0x63, 0x7a, 0x9c, 0xcc, 0x6c,
-
  0x9b, 0xbb, 0x12, 0xde, 0xbb, 0xe5, 0x81, 0x87, 0x05, 0x56, 0x96, 0xe4,
-
  0x3e, 0x76, 0x39, 0xa4, 0xb9, 0x98, 0xf0, 0x67, 0x05, 0x8c, 0xb4, 0x5c,
-
  0xe6, 0x94, 0xef, 0x68, 0x42, 0xba, 0x4d, 0x2c, 0xab, 0xa8, 0x25, 0x09,
-
  0x66, 0xfa, 0xfb, 0x3e, 0x15, 0xba, 0x99, 0x81, 0x3e, 0x5e, 0xe4, 0x0c,
-
  0xfc, 0x8a, 0x96, 0x95, 0x4a, 0x10, 0x7a, 0x1a, 0xe1, 0xa8, 0xb4, 0x0b,
-
  0x36, 0x8a, 0x9d, 0xa6, 0x5c, 0xf8, 0xa1, 0xb6, 0x44, 0x31, 0x66, 0xd9,
-
  0x12, 0x32, 0x70, 0x1b, 0x76, 0x74, 0x45, 0xc7, 0xbe, 0xc0, 0xa0, 0x63,
-
  0x82, 0xbe, 0xd2, 0x35, 0xa0, 0xb2, 0x75, 0x7e, 0x54, 0xcd, 0x82, 0x20,
-
  0xd5, 0x3c, 0xa6, 0x2f, 0x3e, 0x7b, 0x29, 0xf9, 0x20, 0xf6, 0x17, 0x6c,
-
  0x0f, 0x36, 0x55, 0xc9, 0x09, 0xe7, 0x0c, 0xf7, 0xe3, 0x3f, 0x46, 0x65,
-
  0x42, 0x70, 0xe3, 0xbf, 0x52, 0x00, 0x33, 0x41, 0x76, 0xfb, 0x19, 0x0c,
-
  0xa0, 0x40, 0x36, 0xca, 0x86, 0xad, 0xec, 0xc8, 0x98, 0x75, 0x6c, 0x6f,
-
  0x29, 0x47, 0x69, 0x33, 0x1d, 0x58, 0x6c, 0xf0, 0x60, 0x47, 0x5f, 0xde,
-
  0xd0, 0x11, 0x2f, 0xa1, 0xa9, 0x9e, 0x7d, 0xa5, 0xc7, 0xd6, 0x0c, 0x5f,
-
  0xea, 0x25, 0x3d, 0xb8, 0xa1, 0x1d, 0x4a, 0xc1, 0x02, 0x6a, 0x15, 0xb8,
-
  0x26, 0x7c, 0xbd, 0xd5, 0xc4, 0xe3, 0x87, 0x83, 0x9d, 0xdb, 0x63, 0x0c,
-
  0x59, 0x43, 0x3d, 0x3a, 0x06, 0x27, 0xf2, 0x09, 0x6d, 0xb2, 0xa4, 0xce,
-
  0x17, 0x5d, 0x7c, 0xc5, 0x37, 0xd6, 0x1b, 0xd6, 0xf2, 0xc9, 0x8c, 0xf4,
-
  0xa6, 0x07, 0x47, 0x7c, 0x38, 0x78, 0xf0, 0x60, 0xff, 0x60, 0x77, 0x0f,
-
  0xb7, 0x7a, 0x07, 0x54, 0xdf, 0xf5, 0x82, 0x48, 0x15, 0x44, 0x12, 0x67,
-
  0x4f, 0x11, 0xc0, 0x70, 0x1d, 0xc6, 0xd5, 0xe5, 0xb8, 0x29, 0x69, 0x60,
-
  0x50, 0x30, 0x50, 0x3a, 0x1b, 0xd9, 0xda, 0x66, 0xce, 0x37, 0x14, 0x1e,
-
  0x8e, 0x1a, 0x33, 0xac, 0x1c, 0x5b, 0xf1, 0xda, 0x31, 0xdf, 0x92, 0x67,
-
  0x0c, 0x12, 0x0c, 0x32, 0x29, 0xb1, 0xfe, 0x51, 0xb3, 0x37, 0x45, 0x8b,
-
  0x53, 0x04, 0x4b, 0x35, 0x4b, 0x27, 0xe7, 0xa0, 0xb0, 0xcd, 0xe7, 0x69,
-
  0xd9, 0xc3, 0xc3, 0xad, 0xa1, 0xed, 0x83, 0xe8, 0x99, 0xe4, 0xa2, 0x49,
-
  0x49, 0x62, 0xcf, 0x06, 0x2b, 0x2d, 0x8d, 0x2c, 0x9c, 0xd8, 0x66, 0x7a,
-
  0x4e, 0xe5, 0x24, 0x60, 0x3d, 0xcb, 0xf1, 0x56, 0x9f, 0xb1, 0xc8, 0x4d,
-
  0x42, 0xb4, 0x55, 0x5d, 0x30, 0xa9, 0x3a, 0x1c, 0xc3, 0x9f, 0x5a, 0x30,
-
  0xe9, 0x60, 0x15, 0xda, 0xc9, 0x12, 0xe3, 0x69, 0x30, 0xa8, 0x9a, 0xb3,
-
  0xae, 0x9d, 0x31, 0x86, 0x8a, 0x8d, 0xc3, 0x9b, 0xec, 0x35, 0x65, 0x8f,
-
  0x2c, 0x1a, 0x2f, 0x31, 0x57, 0x92, 0xcc, 0x98, 0xa4, 0x27, 0x6e, 0x90,
-
  0x48, 0x31, 0xc7, 0x2e, 0x47, 0x29, 0xda, 0xcf, 0x28, 0x38, 0x0e, 0x34,
-
  0x27, 0x4f, 0x80, 0xa2, 0x9a, 0xe4, 0xd7, 0x92, 0x0d, 0x02, 0x63, 0xc5,
-
  0xf3, 0x3d, 0x9a, 0x61, 0x81, 0x13, 0xc4, 0xc8, 0x46, 0xf8, 0xa9, 0xa8,
-
  0x1a, 0x97, 0xd9, 0x02, 0xda, 0x3d, 0x9d, 0xa5, 0x68, 0x6c, 0x46, 0xa7,
-
  0x1d, 0x8b, 0x36, 0x3e, 0x9f, 0x62, 0xe5, 0x8f, 0x30, 0xbd, 0xba, 0x83,
-
  0x7f, 0xa2, 0xef, 0xd1, 0xdb, 0x2a, 0x3e, 0xc3, 0x62, 0xbe, 0x00, 0x41,
-
  0x4a, 0x52, 0x36, 0x3d, 0x50, 0x4b, 0xce, 0x23, 0x40, 0x33, 0xab, 0x1f,
-
  0x24, 0x35, 0x4b, 0xde, 0x5f, 0x3b, 0xbc, 0x1d, 0xd1, 0xf1, 0x66, 0xe8,
-
  0x10, 0x75, 0x32, 0x9b, 0xb0, 0x89, 0x0b, 0xb6, 0x2a, 0x22, 0x3e, 0x30,
-
  0xee, 0x9a, 0xa6, 0x6e, 0x84, 0x4c, 0x2f, 0x12, 0x7c, 0x24, 0xf0, 0xc8,
-
  0xb6, 0x15, 0x0e, 0xda, 0xb2, 0x4b, 0xee, 0xad, 0xf8, 0xf7, 0x9e, 0xac,
-
  0x26, 0x47, 0xa9, 0xaf, 0x66, 0x7f, 0x93, 0x59, 0x91, 0xd5, 0xc6, 0x43,
-
  0x20, 0x66, 0x67, 0x32, 0x86, 0x6a, 0xb6, 0x76, 0x14, 0x9e, 0xac, 0x5a,
-
  0xfe, 0x1d, 0xec, 0x3e, 0x0e, 0xfe, 0x23, 0x1e, 0xab, 0xb1, 0x79, 0x74,
-
  0x22, 0xb5, 0x59, 0x86, 0x2e, 0x7a, 0x5e, 0x5c, 0x21, 0x33, 0x09, 0xb9,
-
  0xcf, 0x15, 0x0c, 0xbe, 0x5c, 0xa6, 0x02, 0x9a, 0x92, 0xb8, 0x93, 0xa4,
-
  0xa8, 0x87, 0xff, 0x03, 0x37, 0xcf, 0x82, 0x30, 0x40, 0xbe, 0x11, 0x8f,
-
  0x40, 0xa8, 0xac, 0x36, 0x5a, 0x7a, 0x98, 0x5e, 0x81, 0xd7, 0xa4, 0x18,
-
  0x7e, 0xf4, 0x13, 0x85, 0x65, 0xc2, 0x6d, 0x8c, 0x71, 0xd2, 0xcb, 0xf3,
-
  0xf3, 0x54, 0xa4, 0x3b, 0xb1, 0x35, 0xc1, 0x74, 0xaa, 0x54, 0x4e, 0x00,
-
  0x28, 0xea, 0x61, 0x0c, 0x5b, 0x2c, 0x3c, 0xa1, 0xe3, 0xa1, 0xe3, 0x57,
-
  0xcc, 0x47, 0x1a, 0xba, 0xd8, 0x2e, 0xd8, 0xd3, 0x37, 0x19, 0x3c, 0xbe,
-
  0x9c, 0x8b, 0xe7, 0x94, 0x4f, 0x5a, 0xda, 0x3e, 0x67, 0xb7, 0x82, 0x10,
-
  0xa4, 0xf2, 0x3b, 0xe4, 0x2a, 0x20, 0x86, 0xa5, 0xa6, 0x3d, 0xc7, 0x8e,
-
  0x20, 0x5e, 0x3e, 0xff, 0x70, 0x51, 0x57, 0x95, 0x79, 0x89, 0x5a, 0x31,
-
  0x98, 0x7f, 0xcd, 0x84, 0x22, 0x03, 0x2e, 0x49, 0xd4, 0x44, 0xf4, 0xe3,
-
  0x09, 0x01, 0xb8, 0xfe, 0xf8, 0x36, 0x92, 0x89, 0x41, 0x0c, 0x84, 0x09,
-
  0x41, 0x17, 0x0f, 0x76, 0x1e, 0xa0, 0xcc, 0x04, 0xef, 0x2e, 0xf3, 0x89,
-
  0x41, 0xdc, 0xe6, 0x84, 0x6d, 0x8c, 0x18, 0x5c, 0x82, 0xd0, 0xe1, 0x63,
-
  0x32, 0xe2, 0x9a, 0x4c, 0x34, 0x76, 0x32, 0xb1, 0xde, 0x9f, 0x5c, 0x99,
-
  0x32, 0x79, 0xcb, 0x84, 0xef, 0xf2, 0xc1, 0x60, 0x4b, 0x6b, 0xed, 0x5b,
-
  0x37, 0x9c, 0x4c, 0xc4, 0x52, 0xd9, 0x3b, 0x46, 0xc5, 0x05, 0xd6, 0xab,
-
  0xd2, 0x05, 0xe3, 0x05, 0xa2, 0x95, 0xf0, 0xee, 0x4b, 0x2c, 0x7c, 0xea,
-
  0x2c, 0x1b, 0x48, 0x62, 0x78, 0x44, 0x9b, 0x4e, 0x03, 0xb5, 0xab, 0xce,
-
  0xf1, 0xf2, 0x8d, 0x1e, 0x7c, 0xf8, 0x60, 0x53, 0xcf, 0xbd, 0xca, 0xef,
-
  0xd8, 0x2d, 0x33, 0x61, 0x2a, 0x68, 0x04, 0x0b, 0x66, 0x4a, 0x65, 0xaa,
-
  0xb6, 0x63, 0xc6, 0xcd, 0x46, 0x2e, 0x77, 0xc4, 0x41, 0x40, 0x59, 0x1d,
-
  0xbf, 0x33, 0xca, 0x68, 0x13, 0x47, 0x81, 0xeb, 0xff, 0xf0, 0xc3, 0x87,
-
  0x2d, 0x5e, 0x5a, 0xa1, 0x5c, 0x13, 0xb6, 0x1b, 0x4f, 0x7d, 0xc1, 0x9d,
-
  0x3c, 0x49, 0xab, 0x7d, 0x6a, 0xcd, 0x1b, 0xf5, 0xbe, 0x23, 0xb8, 0x9a,
-
  0xad, 0xaf, 0xef, 0xda, 0xc0, 0x95, 0x7b, 0x18, 0x1a, 0xe7, 0x7a, 0xc2,
-
  0x05, 0xdf, 0xf0, 0xae, 0x47, 0xe3, 0xf1, 0x6e, 0xdb, 0xa5, 0x86, 0x1d,
-
  0xa0, 0x10, 0x02, 0xf2, 0x1c, 0x52, 0x63, 0xdb, 0xe2, 0x63, 0xed, 0xf0,
-
  0xaa, 0x04, 0xb2, 0xa2, 0x83, 0x7e, 0x62, 0xfa, 0x18, 0x8b, 0x75, 0xa9,
-
  0x8a, 0x7f, 0x8c, 0x58, 0xdb, 0x6f, 0x8e, 0xbf, 0x7f, 0x3b, 0x3c, 0x7e,
-
  0x46, 0x74, 0x91, 0x84, 0x12, 0x67, 0x89, 0x16, 0x85, 0x09, 0x40, 0xa3,
-
  0x05, 0xe3, 0x9a, 0x98, 0xd1, 0xae, 0x12, 0x5d, 0x42, 0xd7, 0x77, 0x97,
-
  0x20, 0xe3, 0xef, 0xb7, 0x33, 0xcd, 0xd0, 0x86, 0xdb, 0x02, 0xd7, 0xe8,
-
  0x47, 0xf5, 0xd3, 0x2e, 0x6f, 0x0e, 0x05, 0x6d, 0x75, 0x72, 0xa7, 0x7d,
-
  0x6f, 0x8c, 0x52, 0x69, 0xe1, 0xf1, 0x5d, 0x36, 0xbe, 0x91, 0x52, 0xe6,
-
  0x50, 0xe3, 0xaa, 0xfa, 0x83, 0x4e, 0xfe, 0x59, 0xf4, 0x54, 0xb2, 0x3b,
-
  0xdb, 0x46, 0xac, 0x57, 0x0e, 0xd4, 0x2b, 0x48, 0x86, 0xe9, 0x42, 0xaf,
-
  0xfa, 0x64, 0x0e, 0xfc, 0x92, 0x43, 0xf1, 0x50, 0x69, 0x95, 0xcb, 0x9a,
-
  0x22, 0x3e, 0x79, 0x40, 0x8c, 0x68, 0xdb, 0x95, 0x4c, 0x7d, 0x91, 0x54,
-
  0x72, 0x5f, 0xab, 0x5a, 0x6c, 0xc9, 0x85, 0xa9, 0x65, 0x33, 0xab, 0x8d,
-
  0x73, 0x42, 0x23, 0xf0, 0xbd, 0x7d, 0x62, 0x3d, 0x18, 0xcb, 0xf2, 0xa2,
-
  0x94, 0xc6, 0x43, 0x81, 0x75, 0x39, 0x2f, 0xe0, 0x5e, 0xbf, 0x98, 0x9b,
-
  0x62, 0x0a, 0x5c, 0x19, 0xad, 0xda, 0x6a, 0x13, 0x5c, 0x48, 0x31, 0xa6,
-
  0x34, 0xba, 0x54, 0xc0, 0x76, 0xa7, 0x66, 0x7d, 0xa9, 0x1a, 0x4a, 0x55,
-
  0x88, 0xa1, 0x6b, 0x28, 0x35, 0x73, 0x68, 0x2d, 0x78, 0x05, 0x7d, 0x4d,
-
  0xf6, 0xf7, 0xb4, 0x2c, 0xda, 0x71, 0x32, 0xea, 0x7d, 0xd0, 0xcb, 0x52,
-
  0x87, 0x1e, 0x0c, 0x0f, 0x51, 0x3f, 0xac, 0xdd, 0xa6, 0xcf, 0x07, 0xef,
-
  0xe3, 0x0c, 0xe2, 0xe1, 0xc7, 0x91, 0xaa, 0x4f, 0x82, 0xf3, 0xe4, 0x03,
-
  0x07, 0xb9, 0x74, 0x51, 0x21, 0xa7, 0x90, 0xab, 0x85, 0xa4, 0x64, 0xfb,
-
  0x13, 0x59, 0x7b, 0x6c, 0xd2, 0x0a, 0x23, 0xc5, 0xd8, 0x6c, 0x7d, 0x96,
-
  0x85, 0xc9, 0x63, 0xe9, 0x67, 0xda, 0xe0, 0xc5, 0x6f, 0x62, 0x0a, 0x39,
-
  0xf6, 0x2d, 0x41, 0xf6, 0x83, 0xee, 0xaf, 0x4d, 0x84, 0xbd, 0x93, 0xa1,
-
  0x6d, 0xe1, 0xc7, 0x64, 0x1b, 0x91, 0xd0, 0x32, 0xea, 0xdf, 0x0b, 0x26,
-
  0xab, 0x04, 0xc0, 0x1d, 0xa8, 0x5f, 0x5d, 0x81, 0x1c, 0xe8, 0x48, 0x39,
-
  0x9f, 0x64, 0x93, 0xc9, 0xc6, 0x2a, 0xec, 0x4c, 0x6d, 0x54, 0x54, 0x49,
-
  0x2f, 0x87, 0x32, 0x0b, 0xb4, 0x2d, 0xc1, 0x9d, 0x9d, 0x63, 0x22, 0xb9,
-
  0x93, 0xb2, 0x6f, 0xf6, 0x92, 0x4a, 0x3b, 0x10, 0x7e, 0xf2, 0x05, 0x85,
-
  0xc7, 0xfa, 0x91, 0x2c, 0x02, 0xfc, 0x42, 0x4e, 0x3a, 0x14, 0xe8, 0x08,
-
  0x9f, 0x1b, 0xa7, 0x44, 0x5e, 0x3a, 0xc6, 0x1d, 0xc0, 0x03, 0xcd, 0x03,
-
  0x96, 0x23, 0x04, 0xed, 0x64, 0xc5, 0x04, 0x23, 0x6d, 0x0a, 0x0f, 0x5f,
-
  0x7e, 0x8e, 0xf1, 0x98, 0x89, 0xa9, 0x03, 0x29, 0x23, 0xda, 0xa8, 0x2c,
-
  0x10, 0x44, 0x86, 0x31, 0x7f, 0x14, 0x59, 0x3a, 0x47, 0x63, 0x9a, 0x6e,
-
  0x2f, 0x1d, 0x9b, 0x15, 0xe1, 0xa8, 0x70, 0xe7, 0xd0, 0x91, 0xa9, 0x59,
-
  0xd4, 0x55, 0xcb, 0x8e, 0x1c, 0xde, 0x70, 0x69, 0xd9, 0x16, 0x01, 0xb9,
-
  0xc7, 0xc3, 0x0b, 0x51, 0xf8, 0xd4, 0x25, 0x7e, 0x5b, 0x63, 0xd9, 0xdf,
-
  0x31, 0xe7, 0x64, 0x77, 0xe7, 0x5e, 0x0e, 0x4a, 0xf4, 0x34, 0x5f, 0xce,
-
  0xbf, 0x09, 0x30, 0x89, 0x24, 0x70, 0xdb, 0xd2, 0x19, 0x11, 0xcc, 0x20,
-
  0xeb, 0x0c, 0x64, 0xd2, 0x47, 0xfb, 0x34, 0x83, 0x88, 0x77, 0x72, 0x68,
-
  0x9b, 0xd8, 0x24, 0x07, 0xef, 0xc2, 0xe2, 0x15, 0x08, 0xd3, 0xaf, 0x4c,
-
  0x64, 0xd6, 0x39, 0xeb, 0xe2, 0xd1, 0x72, 0x31, 0xf0, 0xe6, 0x54, 0xd7,
-
  0x26, 0x6b, 0x49, 0xdf, 0x87, 0xee, 0x77, 0x24, 0xb3, 0x58, 0x3c, 0x94,
-
  0x78, 0x1d, 0xcb, 0x3e, 0x6b, 0x2c, 0x02, 0xdb, 0x23, 0xc2, 0xf0, 0x0a,
-
  0xc8, 0xc8, 0x5b, 0xd7, 0x05, 0x1b, 0xeb, 0xb9, 0xa4, 0xea, 0x81, 0xe0,
-
  0x42, 0x00, 0xf5, 0xf4, 0x19, 0xc7, 0x8b, 0xc0, 0xbb, 0x40, 0xbe, 0xf4,
-
  0x6d, 0x8d, 0x8e, 0x2e, 0x52, 0xd8, 0x72, 0x64, 0x0f, 0x76, 0x9e, 0xf4,
-
  0xa3, 0x07, 0x7b, 0x5f, 0xf6, 0x11, 0xfb, 0x0a, 0xff, 0xd9, 0xc3, 0x7f,
-
  0xf6, 0xf1, 0x91, 0x87, 0xa0, 0x2f, 0xac, 0x10, 0x95, 0xc3, 0xf8, 0x00,
-
  0x5a, 0x79, 0x24, 0x19, 0x15, 0x4b, 0x47, 0x60, 0x4e, 0x02, 0xcb, 0xcd,
-
  0x7c, 0x8c, 0x11, 0x3e, 0x30, 0x79, 0xc2, 0x4b, 0x3a, 0x24, 0x34, 0x04,
-
  0x8e, 0x85, 0x20, 0x21, 0x59, 0xd3, 0x37, 0xe0, 0x67, 0x7d, 0x01, 0x64,
-
  0x85, 0xcb, 0xad, 0x6b, 0xa9, 0x8d, 0x4e, 0x8a, 0x25, 0xa7, 0x57, 0x78,
-
  0x77, 0x42, 0x92, 0xf1, 0x45, 0xc6, 0x78, 0x15, 0x88, 0xf4, 0x90, 0x29,
-
  0x27, 0xab, 0x90, 0x6e, 0xd9, 0xae, 0x5c, 0x89, 0xbf, 0x9a, 0x3a, 0xd4,
-
  0x33, 0x12, 0xdc, 0x1f, 0xba, 0xa5, 0xf4, 0xde, 0x15, 0x98, 0xbb, 0xb4,
-
  0x72, 0x62, 0xf6, 0xf9, 0x30, 0xa3, 0xc2, 0x28, 0x5e, 0x7c, 0xf7, 0x6e,
-
  0x09, 0xc4, 0x03, 0x98, 0xdc, 0x10, 0xe1, 0x53, 0xe9, 0x07, 0x58, 0x7a,
-
  0x2e, 0xd7, 0xea, 0xdc, 0xfc, 0xe6, 0xce, 0x1f, 0x48, 0xb8, 0x2c, 0x9d,
-
  0xa4, 0x80, 0xcd, 0xb0, 0x71, 0x44, 0x61, 0x23, 0x98, 0x9f, 0x11, 0x6b,
-
  0x2f, 0x6a, 0xb9, 0x4c, 0x2d, 0xb0, 0x04, 0x29, 0xda, 0x61, 0xf6, 0xc3,
-
  0xd5, 0x17, 0x45, 0x34, 0x7a, 0x3c, 0x78, 0xf4, 0x08, 0x6b, 0x8b, 0x38,
-
  0xca, 0x2f, 0xa1, 0xbc, 0x5c, 0xdb, 0xec, 0x6c, 0xb2, 0xdc, 0xc5, 0x87,
-
  0x68, 0xca, 0x3f, 0x08, 0x59, 0x39, 0xdd, 0x7a, 0x35, 0x78, 0x49, 0x50,
-
  0xad, 0x38, 0x0a, 0x40, 0x4b, 0xa9, 0x9e, 0x01, 0x8c, 0xf5, 0x7d, 0x5e,
-
  0x5c, 0x69, 0xa4, 0xa5, 0xc4, 0x92, 0xf1, 0xb1, 0xf2, 0x51, 0x6b, 0xc2,
-
  0x62, 0xf2, 0x8b, 0x86, 0x3c, 0xf3, 0x49, 0x01, 0x1b, 0x56, 0xeb, 0x3b,
-
  0x77, 0x12, 0x1c, 0xec, 0x45, 0xe2, 0x30, 0xc6, 0x2a, 0xa9, 0x66, 0x31,
-
  0x16, 0x48, 0xfe, 0x3d, 0x9b, 0x44, 0x4f, 0x33, 0x2a, 0xe4, 0x5b, 0x5f,
-
  0x87, 0x0b, 0x7e, 0xe1, 0x01, 0x84, 0x27, 0x81, 0x50, 0x7e, 0x67, 0x63,
-
  0x88, 0x3e, 0x1e, 0x6d, 0x4a, 0x0b, 0x5b, 0x7d, 0x8d, 0xfa, 0x1c, 0x1e,
-
  0x0e, 0x5f, 0x46, 0xa7, 0x2f, 0x0f, 0x5f, 0xbc, 0x86, 0x77, 0x62, 0xdf,
-
  0x9f, 0x68, 0xca, 0x31, 0x53, 0x19, 0x39, 0x4f, 0x71, 0x6a, 0x95, 0x6c,
-
  0x6e, 0x76, 0xe4, 0x57, 0x42, 0x9d, 0x90, 0xa0, 0xd1, 0x80, 0x56, 0x8d,
-
  0x97, 0x9a, 0xfe, 0xdc, 0x19, 0x78, 0x6a, 0xf4, 0xa6, 0x46, 0x89, 0x4a,
-
  0x17, 0xda, 0x4c, 0x4e, 0x3f, 0xdc, 0xe6, 0x97, 0x5a, 0xc9, 0x22, 0x34,
-
  0x1b, 0x5c, 0x3b, 0xb1, 0xa3, 0xe9, 0xe0, 0x61, 0x4c, 0x6c, 0x37, 0x00,
-
  0x52, 0x74, 0x9a, 0x26, 0x24, 0x91, 0x16, 0xfc, 0x59, 0x30, 0x2d, 0x3a,
-
  0x22, 0x90, 0x2f, 0x04, 0x0c, 0x93, 0x55, 0x12, 0xf1, 0xc3, 0x01, 0xc2,
-
  0x14, 0xec, 0x7a, 0xe3, 0x4f, 0x23, 0xa4, 0xeb, 0x8d, 0xca, 0x73, 0x79,
-
  0x8c, 0x8a, 0x0f, 0x7d, 0xb5, 0xda, 0xd1, 0x14, 0xb8, 0xc0, 0xb0, 0x49,
-
  0xf6, 0x3a, 0x07, 0x1e, 0x4a, 0x05, 0x6c, 0x05, 0x0b, 0xbf, 0xe8, 0x33,
-
  0x30, 0x63, 0x75, 0x91, 0xf8, 0x28, 0x9d, 0x73, 0x50, 0x3a, 0xa0, 0x41,
-
  0x37, 0xe4, 0x26, 0x7c, 0x4c, 0x1a, 0x84, 0xb5, 0x5e, 0x0d, 0x9b, 0x7b,
-
  0x94, 0xbb, 0x1b, 0xa3, 0xa0, 0x91, 0xcc, 0x93, 0x35, 0x22, 0x1a, 0x30,
-
  0x08, 0x2e, 0x8f, 0x35, 0x18, 0xcc, 0x55, 0x06, 0x91, 0x5f, 0x79, 0xe7,
-
  0x28, 0x6b, 0x8b, 0xb6, 0xc7, 0x39, 0x2b, 0xc0, 0x82, 0x8a, 0x60, 0x71,
-
  0x03, 0x73, 0x3e, 0x20, 0x4d, 0x32, 0x5f, 0xa9, 0x96, 0x4b, 0x07, 0x6b,
-
  0xa1, 0x7f, 0xb4, 0x49, 0xc1, 0xd7, 0xc3, 0xa5, 0xd5, 0x3b, 0x2d, 0x6b,
-
  0x56, 0xae, 0xb9, 0x9a, 0xee, 0x66, 0x34, 0x16, 0x73, 0xbf, 0x65, 0x69,
-
  0xc1, 0x23, 0x00, 0x02, 0x3f, 0x07, 0xdd, 0x3f, 0xc5, 0x7f, 0xbf, 0x59,
-
  0xe1, 0x79, 0x69, 0x56, 0xd9, 0x74, 0xf2, 0xbd, 0xa4, 0x19, 0x49, 0x52,
-
  0x46, 0xec, 0xd1, 0xd3, 0xd7, 0xc7, 0x3f, 0x9c, 0x74, 0x87, 0xcf, 0x50,
-
  0xe7, 0x79, 0xaa, 0xf5, 0xe3, 0xbd, 0xa1, 0x70, 0x0d, 0x67, 0x02, 0xd8,
-
  0x66, 0x37, 0x6a, 0x14, 0x72, 0x94, 0xd0, 0x33, 0xdb, 0x02, 0x31, 0x10,
-
  0xcc, 0xc6, 0x61, 0xc5, 0xb4, 0xd1, 0xf4, 0xe7, 0x52, 0x4c, 0x1b, 0x83,
-
  0x70, 0x47, 0xbe, 0xe6, 0x0d, 0x63, 0x57, 0xcd, 0x2d, 0x2f, 0xe9, 0xb6,
-
  0xde, 0xd8, 0xf1, 0x07, 0xcd, 0x70, 0xf5, 0x21, 0x95, 0x0a, 0xbc, 0x28,
-
  0xae, 0xba, 0x33, 0x27, 0x88, 0xeb, 0x31, 0xe1, 0x56, 0xf4, 0x34, 0x26,
-
  0xfb, 0xd4, 0xc2, 0x17, 0x8d, 0x28, 0x8c, 0x6d, 0xd8, 0xac, 0x0a, 0x58,
-
  0xbe, 0x2a, 0x39, 0x0f, 0x54, 0x9b, 0xcd, 0xb8, 0x22, 0x4f, 0xf5, 0x79,
-
  0xf1, 0x9f, 0x9c, 0xe3, 0xdd, 0x5a, 0x80, 0x8e, 0x53, 0x7e, 0xe7, 0xcc,
-
  0x05, 0xdb, 0xf2, 0xda, 0xf4, 0x61, 0xc7, 0xa4, 0x6b, 0xbe, 0x2e, 0x65,
-
  0x50, 0xcd, 0xbd, 0x73, 0x2a, 0x03, 0x38, 0x4f, 0xeb, 0x06, 0xee, 0x88,
-
  0xb3, 0x93, 0x9e, 0x78, 0x38, 0x53, 0x88, 0xa5, 0xe8, 0x9f, 0xcb, 0x8c,
-
  0x40, 0xc8, 0x40, 0x3b, 0x50, 0xff, 0x24, 0xed, 0xb3, 0x36, 0x1b, 0x51,
-
  0xb3, 0xf8, 0xa8, 0xd9, 0x76, 0x4f, 0x3c, 0x04, 0x32, 0x00, 0x06, 0xfe,
-
  0x8a, 0x28, 0xe5, 0x08, 0xa7, 0x36, 0x5f, 0x22, 0x64, 0xdf, 0x8b, 0x5a,
-
  0x21, 0x0c, 0x09, 0x50, 0x42, 0xd2, 0x6e, 0xc9, 0x5a, 0x46, 0xce, 0x31,
-
  0x92, 0xa0, 0x93, 0xea, 0xbd, 0x6f, 0x14, 0xe8, 0x47, 0x8b, 0xa2, 0x66,
-
  0x39, 0x1a, 0xab, 0xde, 0x5d, 0xa6, 0x46, 0x76, 0x81, 0xb1, 0x80, 0xd4,
-
  0x9f, 0xcc, 0xb6, 0xab, 0x7a, 0x82, 0xea, 0x8a, 0x03, 0x4f, 0xa1, 0x5e,
-
  0x25, 0x8f, 0x31, 0x87, 0x8a, 0x14, 0xfb, 0x54, 0x41, 0x29, 0xb0, 0x7e,
-
  0x52, 0xa4, 0x12, 0x2c, 0x7d, 0x32, 0x09, 0xb2, 0xfe, 0xd6, 0x52, 0xa1,
-
  0x60, 0xc2, 0x53, 0xa6, 0x85, 0x6c, 0x9c, 0x96, 0x95, 0xc5, 0x19, 0x9d,
-
  0x0d, 0xbb, 0xf5, 0x4d, 0xe4, 0xb9, 0x6a, 0xbb, 0x88, 0x94, 0x9a, 0x5d,
-
  0x93, 0x40, 0xd7, 0x34, 0xf3, 0x5f, 0xe2, 0xf8, 0x81, 0xbb, 0x8d, 0x8a,
-
  0x8a, 0x00, 0x88, 0x60, 0x8b, 0x60, 0xf2, 0xc2, 0xb3, 0x56, 0x51, 0x2a,
-
  0x17, 0x32, 0x7d, 0xb0, 0x66, 0x59, 0xdc, 0xe1, 0xc9, 0xd1, 0x5f, 0x87,
-
  0x0f, 0x9c, 0xa2, 0xb8, 0x75, 0x2b, 0x0a, 0xcf, 0x15, 0x3e, 0xfd, 0xba,
-
  0x56, 0xa9, 0x02, 0x68, 0x90, 0xc5, 0x38, 0x54, 0x14, 0x17, 0xfa, 0x34,
-
  0x76, 0x54, 0x1c, 0x21, 0xc6, 0x5b, 0x5d, 0x2f, 0xd2, 0xce, 0xda, 0xa7,
-
  0x5e, 0x74, 0x90, 0xc9, 0x6b, 0xb3, 0x35, 0x17, 0xd3, 0xc8, 0x84, 0xf0,
-
  0x44, 0x96, 0xce, 0xd2, 0x50, 0x79, 0xf3, 0x70, 0x51, 0x51, 0x85, 0x37,
-
  0x95, 0xea, 0xb8, 0x05, 0x25, 0x6e, 0xa3, 0x97, 0xff, 0x03, 0x70, 0x51,
-
  0x44, 0xd0, 0x94, 0xa1, 0xb2, 0x91, 0x8b, 0x92, 0xdb, 0x68, 0x2c, 0x7e,
-
  0xe0, 0x21, 0x7e, 0xdc, 0x8f, 0xd2, 0x01, 0x26, 0xad, 0xf1, 0x06, 0xc0,
-
  0x46, 0x9b, 0x17, 0xb6, 0x31, 0xc9, 0x68, 0xbb, 0x2e, 0xb6, 0xb9, 0xb9,
-
  0x01, 0xfe, 0xb8, 0x5d, 0x8d, 0x78, 0x8c, 0xfe, 0x30, 0xd8, 0x59, 0xca,
-
  0xa4, 0xdd, 0x62, 0xb2, 0xe4, 0x91, 0x41, 0xe7, 0x7d, 0xc0, 0xe1, 0x0c,
-
  0x9c, 0x63, 0x29, 0xa5, 0x2e, 0xc7, 0x33, 0x50, 0xc2, 0x03, 0xd1, 0x35,
-
  0x67, 0xee, 0xb1, 0xc4, 0xad, 0x59, 0xa2, 0xbd, 0x68, 0xb6, 0xc4, 0xee,
-
  0xd8, 0x5d, 0x6c, 0xca, 0xc2, 0x1b, 0x80, 0x19, 0x21, 0x30, 0x1a, 0x40,
-
  0xd0, 0x77, 0x63, 0xc7, 0x27, 0xaa, 0x7f, 0x62, 0xd7, 0xa4, 0x5d, 0x7c,
-
  0xbb, 0x43, 0xdd, 0x66, 0x27, 0x46, 0xdf, 0x29, 0xc5, 0xdb, 0x08, 0xff,
-
  0xc1, 0xdc, 0x43, 0x33, 0x1e, 0xa2, 0x5d, 0xad, 0x55, 0x5b, 0x87, 0x02,
-
  0x4c, 0x2b, 0x4e, 0x64, 0xa7, 0xf4, 0x4a, 0x67, 0x70, 0xea, 0x88, 0xd2,
-
  0x92, 0x74, 0x84, 0xc9, 0x8c, 0xff, 0x0c, 0xcd, 0x41, 0xc8, 0xbd, 0x4c,
-
  0x03, 0x0c, 0x51, 0xe1, 0x94, 0x42, 0xce, 0x3f, 0x24, 0x2b, 0x8e, 0x04,
-
  0xfc, 0x54, 0xca, 0x59, 0x1b, 0x43, 0xca, 0xc5, 0x7f, 0x1c, 0x40, 0xe7,
-
  0xe3, 0x97, 0x36, 0xb5, 0xf8, 0x2d, 0xbd, 0xb6, 0xd5, 0x88, 0xc8, 0x07,
-
  0x76, 0xe7, 0x8e, 0xa8, 0x43, 0x40, 0xe3, 0x1d, 0xb9, 0x83, 0xae, 0x7f,
-
  0x2f, 0xf5, 0x37, 0xa5, 0x7b, 0xa4, 0x74, 0x3c, 0xa5, 0x07, 0x0f, 0x76,
-
  0xbe, 0x7c, 0x74, 0x97, 0x8a, 0xdf, 0x0f, 0x12, 0xaf, 0x10, 0x33, 0xff,
-
  0x11, 0x6b, 0xd3, 0x3e, 0x9f, 0x4b, 0xee, 0xc4, 0xe8, 0x92, 0xdb, 0x71,
-
  0xba, 0x0e, 0x58, 0xf0, 0x1b, 0x38, 0x1d, 0x9d, 0x29, 0xb8, 0x8a, 0xdd,
-
  0x52, 0xf5, 0xdd, 0x01, 0x6f, 0x4d, 0x0e, 0x17, 0xe2, 0x53, 0x4a, 0xe9,
-
  0x52, 0x17, 0x1c, 0x63, 0xdd, 0x88, 0x45, 0x29, 0x8f, 0x32, 0x4c, 0x8a,
-
  0xe3, 0xb5, 0x2c, 0x9b, 0xba, 0x15, 0x9f, 0x4a, 0xee, 0xc4, 0xa8, 0xcc,
-
  0x4d, 0xbe, 0x06, 0xab, 0x62, 0xcf, 0xca, 0xc7, 0x30, 0xaa, 0xbb, 0xf0,
-
  0xa9, 0xe4, 0x2e, 0x8c, 0x2a, 0xf9, 0x4c, 0x9c, 0xca, 0x24, 0xb3, 0xdf,
-
  0x96, 0x4f, 0x29, 0x1d, 0xff, 0x8f, 0xe0, 0x54, 0xf6, 0xcc, 0xae, 0xc7,
-
  0xa8, 0xee, 0x9b, 0x53, 0x25, 0xf7, 0xc0, 0xaa, 0xd6, 0xe6, 0x54, 0x0f,
-
  0xe3, 0x51, 0x52, 0x79, 0x35, 0xa6, 0xfd, 0x8c, 0x66, 0xb4, 0x79, 0x61,
-
  0x03, 0xdb, 0x28, 0xe7, 0x50, 0x86, 0x5e, 0xcb, 0xc4, 0x28, 0xc9, 0xa5,
-
  0x1c, 0x61, 0x1a, 0xca, 0x1d, 0x29, 0x94, 0xd2, 0x1e, 0x1a, 0xea, 0xd0,
-
  0x02, 0x74, 0x2b, 0x1b, 0xf6, 0xfd, 0xe4, 0x06, 0xd6, 0x18, 0x8b, 0x50,
-
  0x89, 0x4b, 0x66, 0xa0, 0x32, 0xbf, 0x4e, 0xeb, 0x1c, 0x84, 0xf1, 0x45,
-
  0x46, 0x80, 0x10, 0x05, 0xd6, 0xb5, 0xfa, 0x61, 0x38, 0x8c, 0x0f, 0x4f,
-
  0x5f, 0xdc, 0x60, 0x4d, 0xc5, 0xe7, 0x9d, 0x41, 0x66, 0xab, 0xa5, 0xf9,
-
  0xc6, 0x12, 0xde, 0x2a, 0xae, 0xe7, 0x0e, 0x74, 0xa1, 0xcd, 0x9b, 0x8d,
-
  0xfd, 0x68, 0x2a, 0x79, 0xb8, 0x2a, 0xf1, 0xb8, 0xb9, 0x7e, 0xa0, 0x78,
-
  0xb7, 0x69, 0xe3, 0xb0, 0x6a, 0xa0, 0x20, 0xe9, 0xba, 0xaa, 0x01, 0x83,
-
  0x2c, 0x4a, 0xc4, 0xa4, 0xb8, 0x6a, 0x10, 0xd7, 0x5f, 0xa4, 0xc8, 0x4c,
-
  0x7a, 0xc2, 0xd3, 0x66, 0x10, 0xd4, 0x3a, 0xa2, 0xf2, 0xb4, 0xd1, 0xee,
-
  0x97, 0x8f, 0x76, 0x81, 0xd9, 0x5c, 0x73, 0x08, 0xab, 0xbc, 0xff, 0x60,
-
  0xb0, 0xbf, 0xfd, 0x60, 0xf0, 0x00, 0x6f, 0x37, 0x9b, 0x73, 0x23, 0xed,
-
  0x87, 0xa3, 0x41, 0x49, 0xb8, 0x7a, 0x7d, 0x7c, 0x14, 0x31, 0x8c, 0x4e,
-
  0x4a, 0x8e, 0x92, 0xa6, 0x3d, 0x98, 0x31, 0xf5, 0xc8, 0xd9, 0x2d, 0x74,
-
  0x28, 0x5c, 0xdc, 0x73, 0xd9, 0x78, 0xcb, 0x11, 0xa9, 0xc1, 0x8c, 0xea,
-
  0x2c, 0xe6, 0x66, 0x24, 0x78, 0x4b, 0xb0, 0xed, 0x4c, 0x56, 0x06, 0xbe,
-
  0xf1, 0x61, 0x8f, 0x9d, 0x35, 0x71, 0x56, 0xec, 0x36, 0x44, 0xe6, 0x8c,
-
  0xe0, 0x13, 0x04, 0x14, 0x79, 0x9d, 0xdc, 0x91, 0x56, 0x9d, 0x51, 0xde,
-
  0x27, 0xc1, 0x76, 0xd2, 0xa7, 0xda, 0x28, 0x3b, 0xac, 0x9c, 0x36, 0xd2,
-
  0xc5, 0x33, 0x66, 0xca, 0xa5, 0x6a, 0xfc, 0x05, 0x55, 0x54, 0x8e, 0xe7,
-
  0xc6, 0xee, 0x38, 0xfd, 0xe7, 0x24, 0x1f, 0xac, 0x6b, 0x34, 0xcd, 0xea,
-
  0x55, 0xb6, 0x51, 0xb3, 0x1e, 0xcc, 0xff, 0xc4, 0x24, 0xda, 0x35, 0x21,
-
  0xb1, 0x83, 0x7a, 0xc5, 0xc2, 0xc9, 0x6c, 0x8a, 0x1c, 0x99, 0x8d, 0x8d,
-
  0x4e, 0x53, 0xa6, 0xfd, 0xc0, 0x67, 0xda, 0x7a, 0xc0, 0x57, 0x82, 0x9d,
-
  0x71, 0x5b, 0x65, 0x9a, 0xcc, 0x64, 0x54, 0x4e, 0x3f, 0xfe, 0x97, 0xb8,
-
  0x7a, 0x9c, 0x64, 0xe3, 0x43, 0x4e, 0x48, 0x34, 0x8c, 0x33, 0x04, 0x63,
-
  0xf8, 0x9b, 0x27, 0x35, 0xbb, 0x70, 0xe1, 0x5b, 0x90, 0x51, 0xb2, 0x05,
-
  0xdc, 0xae, 0xab, 0xcc, 0xbb, 0xe1, 0x65, 0xb9, 0xc5, 0x1d, 0xed, 0x4d,
-
  0xb2, 0xbe, 0x87, 0xe8, 0x8a, 0xf0, 0x70, 0xd8, 0x9e, 0xfd, 0x9f, 0xa0,
-
  0xf4, 0x1b, 0x6f, 0x68, 0x7b, 0xc1, 0xf9, 0xf7, 0xb2, 0xa9, 0xe2, 0xa6,
-
  0x48, 0x20, 0xed, 0xb0, 0x0b, 0xb9, 0xf3, 0x1a, 0x37, 0x73, 0x47, 0x83,
-
  0x08, 0xb3, 0x26, 0x17, 0xb0, 0xcd, 0xb4, 0x68, 0xa7, 0x0c, 0x67, 0x53,
-
  0x13, 0x73, 0x80, 0x8e, 0x68, 0x1b, 0x68, 0xa7, 0x8d, 0x0a, 0x6a, 0x29,
-
  0x42, 0x3a, 0xbc, 0xad, 0xd2, 0x1b, 0xc4, 0x11, 0x73, 0x89, 0xdf, 0x28,
-
  0x2c, 0xac, 0x73, 0x7d, 0x7b, 0xb2, 0x82, 0xe5, 0xab, 0xf7, 0x12, 0x9a,
-
  0xdb, 0x68, 0xfc, 0xa3, 0xc8, 0xed, 0x3f, 0x7d, 0xf7, 0x6b, 0x2f, 0x77,
-
  0x51, 0x62, 0x85, 0xfd, 0x44, 0x9b, 0x94, 0xf4, 0x24, 0x25, 0x9c, 0xd4,
-
  0x94, 0xa5, 0xe6, 0xb3, 0x80, 0x3d, 0x8c, 0x55, 0x43, 0xec, 0x75, 0x6b,
-
  0x10, 0xdd, 0x64, 0xea, 0x63, 0x85, 0x97, 0xcb, 0x65, 0x8a, 0xb6, 0xeb,
-
  0x89, 0x15, 0x8e, 0xee, 0xfb, 0x9f, 0xd6, 0x5e, 0x1f, 0x5e, 0xfc, 0xdf,
-
  0xad, 0xbd, 0x3e, 0xe4, 0x39, 0xc7, 0x21, 0x3c, 0x67, 0x5e, 0xd0, 0xd5,
-
  0x8a, 0x2c, 0xad, 0xcf, 0xff, 0xab, 0xc8, 0x7e, 0x22, 0x45, 0xd6, 0x39,
-
  0xbf, 0xa1, 0xcb, 0xf2, 0x3f, 0x15, 0x8e, 0xd8, 0x1e, 0x0b, 0x0f, 0x5b,
-
  0x58, 0xd5, 0xc1, 0x63, 0x2c, 0x84, 0x73, 0x17, 0xfe, 0xe5, 0xea, 0xb5,
-
  0x0f, 0x12, 0x9f, 0x79, 0xdd, 0xc8, 0xb3, 0xc4, 0xf6, 0x1a, 0xe6, 0x5a,
-
  0xb1, 0x20, 0xf9, 0x84, 0xac, 0xfc, 0x41, 0xd8, 0xbf, 0xd9, 0xcd, 0x7e,
-
  0x89, 0x0e, 0xeb, 0x9c, 0x4f, 0xa1, 0x2b, 0x19, 0xd6, 0x27, 0x75, 0x0b,
-
  0x3c, 0xfc, 0xbf, 0xdc, 0x2d, 0xf0, 0xf0, 0x0e, 0xd6, 0xb6, 0x87, 0xff,
-
  0xaf, 0x5b, 0xe0, 0xbe, 0x79, 0x54, 0x63, 0xff, 0x36, 0x31, 0x9d, 0x1b,
-
  0xb3, 0x54, 0xe1, 0xa7, 0x9e, 0xe7, 0x2d, 0xab, 0x2d, 0x20, 0xc8, 0x30,
-
  0xcf, 0xf5, 0xc5, 0xe9, 0x8f, 0x8f, 0xfa, 0x18, 0x42, 0x3b, 0xf4, 0xab,
-
  0x8c, 0xbe, 0x7c, 0x76, 0x78, 0xba, 0x8a, 0x15, 0xae, 0x19, 0x39, 0x75,
-
  0xdf, 0x36, 0xbd, 0x87, 0xf7, 0xc5, 0xf5, 0x2c, 0x1b, 0xed, 0x62, 0x7f,
-
  0x7f, 0x27, 0xd3, 0xdf, 0x22, 0x4d, 0x27, 0x5c, 0xe9, 0x29, 0x7a, 0x4a,
-
  0x7f, 0x04, 0xc2, 0xb5, 0x93, 0x66, 0xa9, 0x3e, 0x0c, 0x35, 0x95, 0x50,
-
  0x7c, 0x27, 0x73, 0x80, 0x5e, 0x06, 0x39, 0x3e, 0x97, 0x62, 0xba, 0x52,
-
  0xb3, 0x2c, 0xf6, 0x52, 0x56, 0x26, 0x5b, 0x8c, 0xc1, 0x4c, 0x3d, 0x13,
-
  0xd1, 0x6a, 0xa1, 0x36, 0x18, 0xc3, 0x79, 0x5a, 0x53, 0xd0, 0x31, 0x95,
-
  0x5c, 0x73, 0x9f, 0x21, 0x4e, 0xe8, 0xdf, 0x3a, 0x7c, 0x22, 0xaf, 0xed,
-
  0x54, 0x38, 0x1c, 0x36, 0xa7, 0x08, 0xb8, 0xfd, 0x1d, 0xae, 0x65, 0x47,
-
  0x1b, 0x16, 0x56, 0x1a, 0xff, 0x4e, 0xb0, 0x55, 0xee, 0x2a, 0x34, 0x61,
-
  0x03, 0x57, 0x50, 0xc0, 0xfd, 0xdf, 0x7f, 0xce, 0x28, 0xf6, 0x77, 0x76,
-
  0x9a, 0x53, 0x5a, 0x37, 0x22, 0xbf, 0xb5, 0x24, 0xfd, 0x40, 0x3d, 0xaf,
-
  0x66, 0xae, 0x83, 0x25, 0x8c, 0xf6, 0x6a, 0x76, 0x25, 0xb9, 0x34, 0x29,
-
  0xa3, 0x5c, 0xe6, 0x4d, 0xda, 0x70, 0xa7, 0xd3, 0x20, 0x09, 0x0c, 0x07,
-
  0x9f, 0x2c, 0xcb, 0x20, 0x9a, 0x60, 0xe2, 0xee, 0x39, 0x27, 0x75, 0xf4,
-
  0x9b, 0x29, 0xb4, 0x99, 0x43, 0x1f, 0x2f, 0xa6, 0xce, 0xe3, 0xed, 0xe6,
-
  0x5c, 0x80, 0x75, 0x63, 0xd3, 0x71, 0xc6, 0xa4, 0x5b, 0xb5, 0xab, 0xf1,
-
  0x22, 0x74, 0xaa, 0x25, 0x6f, 0xf3, 0xef, 0x7e, 0xde, 0xa6, 0xf3, 0xee,
-
  0x6a, 0x04, 0x89, 0x22, 0xaf, 0xcb, 0x62, 0x56, 0x39, 0x09, 0xeb, 0x74,
-
  0x2a, 0x0a, 0x68, 0x98, 0x83, 0x51, 0x30, 0xb6, 0x71, 0x8b, 0xe4, 0x86,
-
  0x8e, 0xc2, 0x86, 0x09, 0xd7, 0xb0, 0xac, 0xa8, 0x10, 0xa9, 0xf2, 0xde,
-
  0xb4, 0x1e, 0x8b, 0xe4, 0xc0, 0x19, 0xdd, 0x88, 0x14, 0x01, 0x77, 0x49,
-
  0xc9, 0x01, 0xf5, 0x70, 0x8f, 0xf5, 0x09, 0x9f, 0x24, 0xa0, 0x29, 0x39,
-
  0x40, 0x0e, 0x92, 0xa2, 0xd2, 0x01, 0x20, 0x47, 0x47, 0xe2, 0xda, 0x39,
-
  0x12, 0xf6, 0xe8, 0xf9, 0x59, 0x2a, 0xff, 0xe3, 0x8e, 0x84, 0xc7, 0xf0,
-
  0x98, 0x33, 0xda, 0x63, 0xd1, 0x90, 0x0d, 0x31, 0x72, 0x12, 0x4d, 0x76,
-
  0xf1, 0x28, 0xf5, 0x2d, 0x44, 0x7e, 0x45, 0x26, 0x35, 0xac, 0x98, 0x9b,
-
  0x28, 0x29, 0x39, 0x3f, 0x1b, 0x29, 0x7e, 0x59, 0x62, 0x28, 0xf5, 0x74,
-
  0x96, 0x5c, 0x09, 0x2a, 0x6b, 0x7b, 0x8c, 0xc3, 0x97, 0xfb, 0x34, 0x9a,
-
  0xb3, 0x97, 0xc3, 0xdd, 0xc1, 0x8e, 0x11, 0x22, 0x2a, 0x8a, 0xa0, 0x27,
-
  0xd0, 0xf0, 0xef, 0x8e, 0x0f, 0x87, 0x67, 0xaa, 0xe7, 0x36, 0x94, 0x30,
-
  0x9f, 0x7c, 0x2c, 0xdd, 0x43, 0xc3, 0xb0, 0x39, 0xd7, 0x58, 0x4d, 0x53,
-
  0xb0, 0xc8, 0x71, 0x6c, 0x3c, 0x34, 0x6d, 0x1c, 0xad, 0x91, 0x0c, 0xcd,
-
  0x47, 0x99, 0x84, 0xc5, 0xa2, 0x7d, 0x30, 0x61, 0xb7, 0x05, 0xb4, 0xc1,
-
  0x00, 0x46, 0xd0, 0x29, 0xa1, 0x94, 0xef, 0x62, 0x86, 0xe1, 0xff, 0xd8,
-
  0x4f, 0xd3, 0x5e, 0x5e, 0x75, 0x83, 0x42, 0xb8, 0xe3, 0x9f, 0x21, 0x8e,
-
  0x7c, 0x5e, 0x99, 0xc1, 0xea, 0x62, 0x71, 0xe0, 0xb6, 0x01, 0x91, 0x0c,
-
  0x60, 0x77, 0x50, 0xbd, 0x38, 0xaa, 0x40, 0x54, 0xbd, 0xd7, 0xe0, 0xe8,
-
  0x71, 0x3d, 0xbb, 0xa6, 0xb8, 0xeb, 0xd5, 0xe6, 0xf1, 0xe6, 0xd6, 0xde,
-
  0x33, 0x66, 0x71, 0xab, 0xf5, 0xb5, 0x29, 0xbe, 0x35, 0xb8, 0xf5, 0xee,
-
  0x7e, 0x09, 0x02, 0x6d, 0xb5, 0x41, 0x74, 0xfe, 0x9e, 0x60, 0xa2, 0x72,
-
  0x5a, 0x60, 0x9f, 0xd2, 0x97, 0x75, 0x11, 0x8f, 0x67, 0x98, 0x9e, 0x14,
-
  0x03, 0x4b, 0xa9, 0x03, 0xb6, 0x43, 0xcc, 0xa4, 0x1b, 0x71, 0xf2, 0x08,
-
  0x7a, 0xe6, 0x1a, 0x05, 0x72, 0x08, 0xf6, 0x91, 0x6f, 0x15, 0x46, 0x72,
-
  0xe3, 0xa6, 0x22, 0x6c, 0x0a, 0xb4, 0x19, 0x5f, 0x0b, 0xaa, 0xc5, 0xa2,
-
  0xbe, 0x6c, 0x26, 0x26, 0x90, 0xe9, 0xd1, 0x16, 0xf9, 0x25, 0x68, 0xac,
-
  0xd4, 0x81, 0x94, 0x65, 0x61, 0x30, 0x84, 0xcc, 0x4a, 0x4c, 0x8a, 0xd2,
-
  0x61, 0x2b, 0x53, 0x54, 0x97, 0x02, 0x90, 0xd1, 0xd0, 0x9e, 0xa7, 0x33,
-
  0x14, 0x42, 0xd1, 0x94, 0x4f, 0x40, 0x6e, 0x5a, 0xcc, 0x87, 0x4e, 0x87,
-
  0x37, 0xba, 0x51, 0x99, 0x94, 0xd7, 0x5b, 0x03, 0x20, 0x99, 0xac, 0xa0,
-
  0xd4, 0xaf, 0xc7, 0x83, 0xc7, 0x8f, 0xe1, 0x50, 0x32, 0x3a, 0x55, 0xd2,
-
  0xac, 0x48, 0x43, 0x48, 0xa1, 0x19, 0x47, 0x0a, 0xca, 0xfa, 0x84, 0x24,
-
  0x14, 0x1d, 0xc6, 0x40, 0xe4, 0x7f, 0xb7, 0x94, 0x42, 0x62, 0xa6, 0x4c,
-
  0xea, 0x90, 0xac, 0x19, 0xa3, 0x25, 0x5c, 0x24, 0x3e, 0x44, 0x28, 0x4d,
-
  0xaf, 0xd2, 0x25, 0x6e, 0xdb, 0x5a, 0x19, 0xf4, 0xf9, 0x64, 0x18, 0x35,
-
  0x1a, 0xc2, 0x22, 0xe5, 0x65, 0xa8, 0x36, 0xa5, 0x29, 0x7c, 0x84, 0x1e,
-
  0xb8, 0xec, 0x32, 0x19, 0x5f, 0x47, 0x30, 0x9d, 0x99, 0x78, 0xe5, 0x70,
-
  0x3f, 0x4d, 0xe5, 0xaa, 0x9b, 0xcf, 0x54, 0x8b, 0x88, 0x6e, 0xf0, 0x6f,
-
  0xde, 0xc1, 0xe5, 0x14, 0xe8, 0xe4, 0x4e, 0xe7, 0xab, 0x3d, 0xd0, 0x3b,
-
  0x1f, 0xb2, 0xf6, 0x60, 0x1a, 0x68, 0x06, 0x8f, 0x5b, 0xa6, 0x52, 0x78,
-
  0x81, 0x12, 0xf1, 0x11, 0x20, 0xd7, 0x43, 0xcc, 0x14, 0x02, 0xd9, 0x5a,
-
  0x71, 0xb5, 0x68, 0x5e, 0x99, 0xbb, 0xb1, 0xd8, 0xda, 0x38, 0x88, 0x55,
-
  0x1c, 0x8d, 0x2f, 0x52, 0x10, 0xf9, 0x07, 0x77, 0x61, 0xbc, 0xed, 0x13,
-
  0xe1, 0xb2, 0xe1, 0x8f, 0x64, 0xbc, 0x66, 0x05, 0x6e, 0xf6, 0x49, 0xde,
-
  0x81, 0xf1, 0x9a, 0xd6, 0xef, 0x42, 0x16, 0x76, 0x68, 0x6b, 0xa2, 0x64,
-
  0x95, 0x33, 0x46, 0xe0, 0x71, 0xc3, 0xed, 0x1f, 0xf8, 0x9b, 0x0f, 0xa7,
-
  0x7c, 0x12, 0x80, 0x9d, 0x8d, 0x18, 0x85, 0x95, 0xf1, 0x5e, 0x19, 0x21,
-
  0x15, 0x95, 0xd4, 0xad, 0xe8, 0x0d, 0x70, 0x05, 0x90, 0x17, 0x71, 0x7b,
-
  0xb6, 0x41, 0x30, 0x30, 0x08, 0x67, 0xea, 0x9a, 0xf1, 0x61, 0xfc, 0xce,
-
  0x38, 0x10, 0xba, 0x16, 0x78, 0x64, 0xfb, 0xa0, 0x07, 0x44, 0x03, 0x5c,
-
  0x47, 0x8a, 0xaf, 0x2c, 0x17, 0xe7, 0x25, 0xd5, 0x3c, 0xf3, 0xf1, 0x00,
-
  0x90, 0x97, 0x4b, 0xe7, 0x37, 0x59, 0x82, 0x81, 0x7a, 0x27, 0x33, 0x9e,
-
  0x3c, 0x0e, 0x5e, 0x8c, 0x2b, 0x82, 0x36, 0x88, 0x68, 0xf9, 0x98, 0x70,
-
  0x82, 0xc1, 0xdf, 0x1d, 0x08, 0x35, 0x96, 0x6b, 0x0b, 0xd3, 0x3f, 0x59,
-
  0xa4, 0x39, 0xb5, 0x84, 0x19, 0x93, 0xa9, 0x00, 0xdd, 0x94, 0xe9, 0x6f,
-
  0x82, 0x84, 0x35, 0x92, 0x1a, 0x4b, 0xa0, 0x30, 0xe6, 0xa0, 0x25, 0xb4,
-
  0xfd, 0x3f, 0xb3, 0x49, 0xb2, 0x30, 0x6f, 0xc2, 0xdc, 0xb5, 0x88, 0x1d,
-
  0x0a, 0x58, 0x9c, 0x68, 0x4c, 0x4b, 0x3b, 0x59, 0x6d, 0x70, 0x20, 0x1d,
-
  0x02, 0x97, 0x10, 0xe3, 0xb4, 0x31, 0x05, 0x91, 0x31, 0x64, 0xf8, 0x8a,
-
  0x43, 0xc4, 0xfa, 0x0a, 0xce, 0xd8, 0xdc, 0x60, 0x02, 0x01, 0x51, 0xfa,
-
  0xee, 0xd2, 0xd9, 0x94, 0x04, 0x23, 0xca, 0x6d, 0x9d, 0xcf, 0xd3, 0x89,
-
  0xc9, 0xd8, 0xa0, 0x4f, 0x71, 0x48, 0x62, 0xf6, 0x82, 0x91, 0xf5, 0x19,
-
  0xfc, 0x9b, 0xdd, 0xa5, 0x68, 0xbe, 0x68, 0x2b, 0x21, 0x48, 0x28, 0xf0,
-
  0x14, 0x91, 0x0a, 0xfe, 0x44, 0x62, 0x19, 0x52, 0x6b, 0xb8, 0x54, 0x43,
-
  0xac, 0x28, 0x8f, 0x0e, 0x53, 0x07, 0x04, 0x11, 0xad, 0x25, 0xb3, 0x2b,
-
  0x0c, 0x90, 0xc0, 0xf4, 0x0b, 0x3f, 0x2f, 0x03, 0xd7, 0x10, 0xd7, 0x04,
-
  0xf7, 0xaf, 0xba, 0xc0, 0x4c, 0xfb, 0x86, 0x3d, 0x65, 0xe5, 0xb6, 0xe3,
-
  0x5d, 0x88, 0x29, 0xd9, 0x29, 0x96, 0x14, 0x30, 0x82, 0x6a, 0x1c, 0x4f,
-
  0xeb, 0x85, 0xa1, 0xf7, 0x1b, 0xf9, 0x01, 0x3e, 0x74, 0x2b, 0x09, 0x2c,
-
  0x5a, 0x2f, 0xb4, 0xbd, 0xab, 0xff, 0x5b, 0xf0, 0x01, 0x1a, 0x92, 0x87,
-
  0xc3, 0xbb, 0xca, 0xe2, 0x52, 0xcd, 0x6e, 0x21, 0x63, 0x31, 0x6f, 0x01,
-
  0x91, 0xac, 0xaa, 0x11, 0xf4, 0xba, 0xf0, 0xa4, 0x2c, 0xe7, 0x12, 0x58,
-
  0x71, 0x0b, 0x64, 0xe7, 0x39, 0x5e, 0xe5, 0x6b, 0x5d, 0x02, 0x92, 0x83,
-
  0x8b, 0xd0, 0x68, 0x82, 0x61, 0x32, 0x59, 0x52, 0x32, 0xf1, 0x3c, 0xa3,
-
  0x18, 0xf4, 0xed, 0x62, 0x3a, 0x25, 0x14, 0x76, 0xb8, 0x62, 0xea, 0x32,
-
  0x1b, 0x2d, 0x03, 0x81, 0x2d, 0x8b, 0x22, 0xc3, 0x6a, 0x25, 0xca, 0x84,
-
  0xb8, 0x4f, 0xdb, 0x07, 0xe3, 0x5c, 0xdf, 0xe0, 0x3c, 0x0d, 0xae, 0x42,
-
  0x74, 0xcf, 0x45, 0x0f, 0xc3, 0xbd, 0xdc, 0x8d, 0x10, 0xbc, 0xb1, 0xde,
-
  0xe9, 0x66, 0x08, 0x11, 0x47, 0x43, 0x52, 0xd8, 0xf1, 0x2e, 0x0b, 0xb9,
-
  0x1a, 0xe8, 0x66, 0xa0, 0x8b, 0xc1, 0xb9, 0x17, 0x7e, 0x4a, 0x4a, 0x44,
-
  0x3d, 0x3d, 0x30, 0x96, 0x00, 0x85, 0x38, 0x22, 0x1f, 0x41, 0x4e, 0x75,
-
  0x7b, 0xbd, 0x18, 0x5d, 0xec, 0x34, 0x32, 0x78, 0xff, 0x16, 0xf8, 0x58,
-
  0x73, 0xda, 0x0d, 0xe1, 0x2b, 0x1c, 0xb7, 0x24, 0x5c, 0xe1, 0x6b, 0x01,
-
  0xa9, 0x56, 0x6e, 0x0d, 0x06, 0xc6, 0x64, 0xe1, 0xa1, 0x79, 0x31, 0xb5,
-
  0xf9, 0x06, 0x21, 0xa7, 0xba, 0x37, 0x4a, 0xe8, 0x3a, 0x83, 0x2b, 0x0f,
-
  0xae, 0x0c, 0xb6, 0x33, 0xa3, 0xab, 0x22, 0x2f, 0xf2, 0x98, 0xdb, 0xf6,
-
  0xc4, 0x56, 0x73, 0xb3, 0x11, 0x4a, 0x1a, 0x9b, 0xc1, 0xa5, 0x1e, 0xa8,
-
  0x09, 0xd4, 0x32, 0x95, 0x4e, 0xf5, 0x12, 0x33, 0x7b, 0xe3, 0x83, 0x72,
-
  0x09, 0xcf, 0x12, 0xe3, 0x8d, 0x1a, 0x4d, 0x0d, 0x37, 0xc0, 0x1a, 0x11,
-
  0x06, 0xec, 0x78, 0x06, 0xa3, 0x9c, 0x51, 0xc5, 0xb0, 0x34, 0x1f, 0x97,
-
  0xd7, 0x61, 0x85, 0x64, 0xf5, 0x15, 0xf3, 0x9f, 0xbe, 0x39, 0x85, 0x6d,
-
  0xac, 0x77, 0x73, 0xfa, 0xa7, 0x99, 0x61, 0x21, 0x71, 0x6d, 0xe5, 0xd6,
-
  0x4b, 0x74, 0xd5, 0xd1, 0xbe, 0xc0, 0xa0, 0x8c, 0x61, 0xc9, 0x03, 0x63,
-
  0xd7, 0xfc, 0x75, 0x62, 0x06, 0x62, 0x8b, 0xff, 0x22, 0x34, 0xde, 0x0d,
-
  0x4b, 0x76, 0xc3, 0xad, 0x43, 0xa1, 0x28, 0x98, 0x78, 0xad, 0x77, 0x78,
-
  0xa0, 0xe4, 0x23, 0xf9, 0x7b, 0x6a, 0x17, 0x68, 0xd9, 0xd8, 0xe2, 0x46,
-
  0xa9, 0x60, 0x36, 0x4e, 0x18, 0x8c, 0x75, 0xba, 0xa4, 0xf2, 0xbb, 0x06,
-
  0x36, 0xf9, 0x06, 0xf6, 0xb6, 0x56, 0xb2, 0xb0, 0xaf, 0x8d, 0x05, 0x58,
-
  0xd9, 0x1d, 0xf8, 0x16, 0xb0, 0xea, 0xc5, 0xfe, 0x1a, 0x49, 0xc2, 0x42,
-
  0xe4, 0xfd, 0x16, 0x8b, 0x92, 0x33, 0x30, 0xce, 0x16, 0x17, 0xa9, 0x0b,
-
  0x13, 0x17, 0xef, 0xf5, 0xf9, 0xad, 0xcb, 0x3d, 0xef, 0x02, 0x1b, 0xbe,
-
  0x6c, 0x2a, 0x30, 0xea, 0xdb, 0x83, 0xad, 0x02, 0x6d, 0x41, 0xb1, 0x94,
-
  0x2d, 0x23, 0xb8, 0xdc, 0xeb, 0x4b, 0x6a, 0x5c, 0x52, 0x86, 0xcb, 0xcb,
-
  0x08, 0x18, 0x6b, 0x43, 0x09, 0x47, 0x16, 0x55, 0x2e, 0xc7, 0x7a, 0x82,
-
  0x84, 0xb4, 0x07, 0xdc, 0x60, 0x44, 0x18, 0xd2, 0x93, 0xd4, 0x3b, 0x28,
-
  0x0e, 0x97, 0x34, 0x53, 0x24, 0xe8, 0x24, 0x8c, 0x24, 0x7d, 0xb4, 0xfb,
-
  0xf8, 0xd1, 0xd6, 0x2a, 0x61, 0xc5, 0x4e, 0xfa, 0x53, 0x84, 0xed, 0x52,
-
  0xbb, 0xeb, 0xdd, 0x2d, 0xf8, 0x34, 0x16, 0xb3, 0xe1, 0x5d, 0xc2, 0xbf,
-
  0xf6, 0x06, 0x8d, 0x61, 0x2a, 0x07, 0xaa, 0x1c, 0x28, 0x82, 0x36, 0x17,
-
  0xcf, 0x27, 0x78, 0x8c, 0x68, 0xa1, 0xd5, 0xba, 0x83, 0xe7, 0x6b, 0xb4,
-
  0xcc, 0x66, 0x04, 0xe0, 0xa1, 0x0c, 0x94, 0x98, 0x67, 0x8b, 0x71, 0xcd,
-
  0xfd, 0xb8, 0xe8, 0x96, 0x3b, 0x96, 0xca, 0x51, 0xee, 0xeb, 0x88, 0xd8,
-
  0xc2, 0x19, 0xef, 0x92, 0x79, 0xb9, 0x9e, 0x55, 0x97, 0xbb, 0x5a, 0xfb,
-
  0x8f, 0xff, 0x1a, 0xec, 0x06, 0xe0, 0xde, 0xf5, 0xbb, 0x3d, 0x87, 0xfe,
-
  0x6c, 0x8b, 0x1f, 0x4f, 0x7f, 0xfb, 0x37, 0xd0, 0xdf, 0xba, 0xe4, 0xb7,
-
  0x4f, 0xc6, 0xf2, 0xf5, 0xe9, 0xef, 0xf1, 0xc3, 0x47, 0x4f, 0x56, 0xd2,
-
  0x9f, 0xb3, 0x8c, 0x9f, 0x86, 0xfe, 0xf6, 0x6f, 0x4b, 0x7f, 0xa6, 0xb0,
-
  0xa3, 0x52, 0x60, 0x8b, 0x04, 0x9d, 0x91, 0x1a, 0x0a, 0x14, 0x78, 0xf7,
-
  0x15, 0xf4, 0xb7, 0x36, 0xf9, 0x75, 0xd3, 0x9f, 0x43, 0x80, 0x24, 0x48,
-
  0xb8, 0x87, 0x42, 0x49, 0x50, 0x29, 0xd0, 0xa5, 0xb1, 0xdb, 0xd2, 0x9f,
-
  0xe6, 0xb0, 0x3e, 0x45, 0xd9, 0xee, 0x1b, 0x0f, 0xef, 0x5a, 0x60, 0x6c,
-
  0x11, 0xe1, 0x08, 0xd1, 0x7a, 0x59, 0x46, 0x92, 0x57, 0xbc, 0x52, 0x05,
-
  0x52, 0xdf, 0x8f, 0x44, 0x2e, 0xb2, 0xee, 0x07, 0xfc, 0xfb, 0xb6, 0xc4,
-
  0x2a, 0x79, 0x7d, 0x16, 0x33, 0xbc, 0x24, 0x36, 0xe2, 0x0d, 0x8d, 0x67,
-
  0x53, 0x89, 0xcd, 0xc1, 0x06, 0xe6, 0x44, 0xe8, 0xcf, 0x9b, 0x6c, 0xcf,
-
  0x4e, 0x75, 0x9e, 0xf7, 0xe7, 0x73, 0xaa, 0x73, 0xff, 0x82, 0xde, 0x5c,
-
  0x7f, 0xa8, 0xef, 0x9e, 0xbd, 0xcc, 0xf4, 0xe0, 0xe4, 0x63, 0x37, 0x49,
-
  0xe2, 0x1a, 0x84, 0x38, 0xa9, 0x6b, 0x1a, 0xc4, 0x24, 0xa9, 0x0c, 0x54,
-
  0x0d, 0x1b, 0xce, 0x75, 0xf5, 0x46, 0x58, 0x83, 0x72, 0x0a, 0x62, 0x67,
-
  0x44, 0x6d, 0x88, 0xae, 0x86, 0x7b, 0x89, 0xc7, 0x02, 0x83, 0x23, 0x82,
-
  0xd5, 0x50, 0xab, 0x76, 0xf2, 0xfb, 0x40, 0xb2, 0x59, 0x50, 0x6c, 0x70,
-
  0x07, 0x43, 0x47, 0xa0, 0x02, 0x99, 0x62, 0xcc, 0x65, 0xda, 0xe6, 0x81,
-
  0x0a, 0xd3, 0xde, 0x02, 0x50, 0x03, 0x9a, 0x9d, 0x6f, 0x4e, 0x71, 0x62,
-
  0x3a, 0x93, 0x92, 0x97, 0x6a, 0x8b, 0x36, 0x73, 0xa8, 0x06, 0xa1, 0x52,
-
  0x97, 0xd3, 0x34, 0x21, 0x29, 0x4a, 0x62, 0x9c, 0x14, 0x20, 0xaa, 0x10,
-
  0xde, 0x8a, 0xd4, 0xa5, 0x26, 0x79, 0xd1, 0x4b, 0x67, 0x20, 0x80, 0x72,
-
  0x01, 0xa2, 0x80, 0xe7, 0x67, 0x9c, 0x2c, 0xc4, 0x21, 0xf5, 0xdf, 0x06,
-
  0x4d, 0xa2, 0xb5, 0xe4, 0xf7, 0x6e, 0xda, 0x74, 0x5b, 0x5f, 0x9b, 0xb9,
-
  0x37, 0x86, 0x16, 0xbf, 0x58, 0xef, 0x04, 0xd8, 0xa2, 0x63, 0x44, 0xfe,
-
  0xee, 0x81, 0x68, 0xc2, 0xf3, 0xb4, 0x11, 0x65, 0x80, 0x36, 0x28, 0xaf,
-
  0x5f, 0x5d, 0xcf, 0x42, 0xb6, 0xc1, 0x1a, 0xad, 0xf1, 0xc2, 0x44, 0x2d,
-
  0xd5, 0x4b, 0x72, 0xd7, 0x68, 0xec, 0x52, 0x42, 0x2e, 0x54, 0x44, 0xee,
-
  0x3d, 0x3e, 0x32, 0x05, 0xe7, 0x48, 0xfa, 0x40, 0x1c, 0xc9, 0x49, 0x11,
-
  0x80, 0xa2, 0x94, 0x89, 0x72, 0x74, 0x92, 0x7d, 0xb3, 0x81, 0x57, 0x56,
-
  0x05, 0xae, 0x93, 0x34, 0xf1, 0x30, 0x31, 0xf0, 0xe8, 0x8c, 0x4c, 0xcd,
-
  0x41, 0x09, 0x0d, 0x78, 0x86, 0x63, 0x9d, 0x2c, 0xe7, 0x0b, 0x99, 0x12,
-
  0x15, 0x61, 0xc9, 0x58, 0x72, 0x66, 0x8c, 0x6a, 0x86, 0x9e, 0x4b, 0xca,
-
  0x60, 0x81, 0x43, 0xe4, 0xce, 0x82, 0xa5, 0xc1, 0x81, 0x62, 0x7a, 0x9e,
-
  0xc5, 0x75, 0xa3, 0x40, 0xf3, 0x2f, 0xea, 0x66, 0x19, 0x56, 0xbf, 0xe6,
-
  0xd0, 0x24, 0x1d, 0x2d, 0xcf, 0x55, 0xd1, 0x51, 0xc4, 0x6b, 0xd4, 0x85,
-
  0x1a, 0x5c, 0x8b, 0x70, 0x44, 0xb0, 0xc8, 0x79, 0xca, 0x28, 0x53, 0xf9,
-
  0x35, 0x4a, 0x3b, 0xb5, 0x6f, 0x4a, 0x03, 0x9e, 0x74, 0x43, 0xee, 0x5a,
-
  0xc7, 0x96, 0xde, 0xb7, 0xfd, 0xa6, 0xa3, 0x9b, 0xb5, 0xe9, 0xbe, 0x6b,
-
  0xb8, 0x76, 0xa3, 0xe2, 0x0f, 0x42, 0x26, 0x6b, 0x1d, 0x89, 0x36, 0x01,
-
  0xf4, 0x5b, 0xdb, 0x4f, 0x07, 0xa5, 0x4d, 0xd1, 0xed, 0xd3, 0xee, 0xc6,
-
  0xd4, 0xb7, 0x7c, 0x05, 0xf5, 0x78, 0x11, 0x4f, 0xe1, 0x46, 0x2c, 0x16,
-
  0x1e, 0xf2, 0xba, 0xc0, 0x5b, 0xa9, 0xc9, 0xf8, 0xe8, 0x34, 0xfa, 0x1e,
-
  0xaf, 0x4e, 0x54, 0xf9, 0xa3, 0x4d, 0x90, 0x23, 0x1f, 0x3f, 0xd8, 0xdd,
-
  0x5f, 0x29, 0x46, 0x36, 0x1a, 0x6f, 0x6f, 0xdc, 0xc7, 0x33, 0x2a, 0xb7,
-
  0xf5, 0x75, 0xf7, 0xab, 0x31, 0xb2, 0xf5, 0x74, 0xa1, 0x29, 0xfc, 0x4c,
-
  0x63, 0x12, 0xe2, 0x9b, 0x5e, 0x98, 0x2f, 0xfd, 0x95, 0xcd, 0x8b, 0x10,
-
  0x70, 0xe3, 0xd9, 0xb2, 0xcc, 0x23, 0x2d, 0x27, 0x0f, 0xeb, 0xfa, 0xee,
-
  0xf5, 0xc9, 0xb3, 0xe3, 0x97, 0x87, 0x7f, 0x37, 0x16, 0x33, 0xec, 0x4d,
-
  0x4b, 0x97, 0xbd, 0x4b, 0x93, 0xea, 0xfa, 0x1d, 0xc8, 0x2b, 0xf0, 0xe5,
-
  0xe6, 0xfe, 0x16, 0x56, 0x85, 0xf1, 0x8a, 0x38, 0x9c, 0xa7, 0xcd, 0xc2,
-
  0xa2, 0x8c, 0xa3, 0xe9, 0xd4, 0xdc, 0xec, 0x0c, 0x0c, 0xdd, 0x19, 0x80,
-
  0xbc, 0xca, 0xd8, 0x4a, 0x18, 0x0c, 0xe7, 0x3a, 0xed, 0x9c, 0x42, 0x25,
-
  0x48, 0x64, 0x84, 0x95, 0x43, 0xf7, 0x99, 0xef, 0xbb, 0x51, 0x8f, 0x07,
-
  0x7a, 0xc4, 0xf9, 0xf2, 0xcf, 0x6a, 0xaa, 0x0c, 0x22, 0x4e, 0x0c, 0x29,
-
  0xcf, 0x40, 0x78, 0xf8, 0xf8, 0xcd, 0x0d, 0xb6, 0x0d, 0x67, 0xe5, 0xfc,
-
  0xac, 0x17, 0x43, 0x37, 0x77, 0xcc, 0x7b, 0x71, 0x1a, 0xbf, 0x0b, 0xd1,
-
  0xe8, 0xb8, 0xd6, 0xa2, 0x99, 0xd7, 0x7d, 0xee, 0x7b, 0xb4, 0x9c, 0x36,
-
  0x4a, 0x65, 0xc7, 0x35, 0x29, 0x07, 0xe9, 0x2c, 0x4f, 0x6b, 0xc1, 0xa1,
-
  0x8b, 0x9e, 0xc2, 0xcf, 0xaf, 0x41, 0x32, 0xf5, 0x0a, 0xe6, 0x25, 0x55,
-
  0x65, 0xd8, 0xaf, 0x11, 0xc7, 0xf0, 0x4d, 0xc3, 0xdd, 0x07, 0x5a, 0x9f,
-
  0x28, 0x9d, 0x98, 0x27, 0xe1, 0x62, 0x38, 0xf0, 0x04, 0x97, 0xb3, 0xbf,
-
  0x9f, 0x1e, 0x7f, 0xfd, 0x14, 0xe5, 0xab, 0x6f, 0x10, 0x83, 0xb6, 0x6a,
-
  0xc8, 0x76, 0x04, 0x31, 0xe3, 0x2d, 0xcd, 0xcf, 0xcf, 0x5e, 0x0c, 0x4f,
-
  0x5f, 0x9e, 0x1c, 0x7d, 0xfd, 0xf4, 0x67, 0x34, 0xdc, 0x83, 0x5e, 0x70,
-
  0xed, 0xbc, 0x6b, 0x3e, 0x8b, 0xb4, 0x28, 0xa7, 0x5f, 0x1b, 0xf6, 0xf8,
-
  0xa7, 0x77, 0xc7, 0xaf, 0x7f, 0xfc, 0xfa, 0xe9, 0x65, 0x52, 0xf6, 0x71,
-
  0x7e, 0xfc, 0x36, 0xa2, 0x79, 0xe5, 0x97, 0x59, 0x59, 0xe4, 0x18, 0xcd,
-
  0x03, 0x22, 0x79, 0x99, 0xe1, 0xce, 0xf9, 0x15, 0x8d, 0x02, 0x4b, 0xf5,
-
  0xc9, 0x6a, 0x1b, 0xd5, 0xb2, 0x44, 0x97, 0xf5, 0xee, 0xce, 0x8e, 0xac,
-
  0xf2, 0xad, 0x6d, 0x5c, 0x7f, 0xed, 0x73, 0x0c, 0xdc, 0x34, 0x3b, 0x1f,
-
  0x38, 0xdc, 0x00, 0x4d, 0x86, 0xa3, 0xd9, 0xfb, 0x2a, 0xfb, 0x3d, 0x8d,
-
  0x9e, 0x92, 0xe6, 0xe1, 0x15, 0x4c, 0x3e, 0xe3, 0xba, 0xa0, 0xb0, 0xa3,
-
  0xf8, 0x5b, 0xf4, 0xdd, 0xcb, 0xbf, 0x0e, 0x5f, 0xfc, 0xd7, 0xb1, 0x89,
-
  0x48, 0x9e, 0x2f, 0x2b, 0x72, 0xa2, 0x7e, 0xf3, 0x70, 0x77, 0x4f, 0xc1,
-
  0xda, 0xa5, 0x2e, 0xd1, 0x68, 0x86, 0x51, 0xf0, 0x2d, 0x5b, 0x2d, 0xf6,
-
  0x44, 0xa2, 0x73, 0xbb, 0xa6, 0x98, 0x2d, 0xb7, 0xac, 0xde, 0x3b, 0x02,
-
  0xf5, 0xe4, 0xea, 0xd9, 0x05, 0x5e, 0xdc, 0x88, 0x76, 0xd9, 0x56, 0x50,
-
  0x79, 0x50, 0x1a, 0x1f, 0xe3, 0x94, 0x34, 0x81, 0xe1, 0x48, 0xcc, 0xe5,
-
  0xca, 0xe8, 0x3b, 0x52, 0xd1, 0x1a, 0xcb, 0xf0, 0xd9, 0x70, 0x23, 0x1b,
-
  0xa3, 0xd8, 0xdd, 0xd9, 0x7b, 0x10, 0xd5, 0x7e, 0x29, 0x4c, 0xd4, 0x84,
-
  0x57, 0x5c, 0x03, 0xd4, 0x06, 0x9c, 0x69, 0xaf, 0x96, 0xb0, 0xf7, 0x55,
-
  0x78, 0x9b, 0x9d, 0x14, 0x49, 0xc2, 0xf3, 0x2e, 0xa8, 0x82, 0x13, 0x2f,
-
  0xb2, 0x1e, 0x5e, 0xad, 0x5a, 0x79, 0x93, 0xe7, 0x78, 0x8e, 0xcb, 0x88,
-
  0xbc, 0x51, 0x82, 0xea, 0x9c, 0x90, 0xb9, 0x59, 0x7a, 0x8e, 0x71, 0x36,
-
  0xbc, 0x6d, 0x95, 0xd6, 0x39, 0x09, 0x48, 0xb2, 0xa0, 0x04, 0xe5, 0xc5,
-
  0x15, 0x95, 0xb7, 0x8a, 0xb8, 0x1c, 0xdb, 0x82, 0xac, 0xde, 0x26, 0xd2,
-
  0x8e, 0x87, 0x66, 0x6a, 0x27, 0xab, 0x38, 0xdd, 0x5d, 0xe9, 0x4a, 0xc5,
-
  0x6a, 0x7f, 0xd7, 0xd5, 0x8a, 0xb5, 0xfa, 0x16, 0x68, 0xae, 0xe2, 0xfd,
-
  0x16, 0x26, 0xe9, 0xdc, 0xbd, 0x35, 0x08, 0xc8, 0x19, 0x9b, 0x90, 0xcf,
-
  0xee, 0x97, 0x7b, 0x83, 0xdd, 0x47, 0x4f, 0xb0, 0xf8, 0xd9, 0xf6, 0x4d,
-
  0xa4, 0x23, 0xcb, 0xd1, 0x14, 0x21, 0x9e, 0x34, 0x44, 0x88, 0xdf, 0x89,
-
  0xe5, 0xc1, 0x6c, 0x63, 0x0a, 0x63, 0x7e, 0x8a, 0xbf, 0x06, 0xab, 0xac,
-
  0x47, 0x44, 0x51, 0x6f, 0x34, 0xb0, 0x8b, 0x8d, 0x38, 0xb4, 0xd5, 0x06,
-
  0x06, 0x76, 0x5e, 0x4c, 0x58, 0xfb, 0xc4, 0x2a, 0xe0, 0x16, 0xdb, 0xbe,
-
  0x7d, 0xaa, 0x1a, 0x38, 0xf7, 0xa4, 0xca, 0xc2, 0xe3, 0x24, 0xcb, 0x23,
-
  0xe2, 0x72, 0x47, 0x93, 0xa6, 0xce, 0x80, 0x9f, 0x31, 0x42, 0xc0, 0xf6,
-
  0x98, 0xae, 0xfb, 0x14, 0x1b, 0x42, 0x41, 0x01, 0xa5, 0x64, 0x58, 0xb3,
-
  0x6f, 0x94, 0x7b, 0x27, 0xa6, 0x1a, 0x38, 0x17, 0x8b, 0x4a, 0xa5, 0x98,
-
  0x34, 0xd2, 0x77, 0xe9, 0xc7, 0x10, 0x50, 0xa2, 0x52, 0x2b, 0x69, 0x1b,
-
  0xd5, 0x0c, 0xa2, 0x7c, 0xbc, 0xbd, 0x60, 0x9c, 0x95, 0x1a, 0xab, 0x10,
-
  0xcd, 0x9f, 0x3c, 0x36, 0xbc, 0x24, 0xc1, 0x8c, 0x40, 0x4a, 0x29, 0x51,
-
  0xdc, 0xf7, 0x73, 0xc9, 0x08, 0xe5, 0xa9, 0x89, 0xcb, 0x99, 0x06, 0xb5,
-
  0x39, 0xc7, 0xb9, 0x6c, 0x09, 0x0e, 0x70, 0xd0, 0x1a, 0x67, 0x2d, 0x6b,
-
  0x64, 0xb9, 0x34, 0x02, 0x1c, 0x34, 0x8a, 0x4d, 0x88, 0xf0, 0x46, 0xe2,
-
  0x1a, 0xbb, 0xb6, 0x5b, 0x4b, 0xe2, 0x69, 0x5c, 0x75, 0x10, 0xc4, 0x72,
-
  0x88, 0x92, 0x27, 0xc7, 0x05, 0x36, 0xdf, 0xd7, 0x5a, 0x21, 0x93, 0xa4,
-
  0xba, 0x88, 0x36, 0xe3, 0x2d, 0x53, 0x9b, 0x33, 0xab, 0x8d, 0x32, 0x1b,
-
  0x28, 0xbc, 0x8d, 0xcb, 0x39, 0x5e, 0xce, 0xb9, 0xc6, 0x2d, 0x17, 0x6b,
-
  0xe2, 0x38, 0x5b, 0x49, 0xba, 0x48, 0x85, 0x28, 0xb0, 0xb7, 0x6d, 0x0e,
-
  0xef, 0x57, 0xce, 0x8f, 0x26, 0x42, 0xaf, 0x18, 0x75, 0xab, 0xad, 0x3c,
-
  0xbd, 0x72, 0xdb, 0xb2, 0x66, 0x10, 0xd3, 0x5e, 0xf0, 0xa6, 0x68, 0xd1,
-
  0xfe, 0xa7, 0x06, 0x50, 0xed, 0x2a, 0xae, 0xfc, 0x7b, 0xd4, 0xfb, 0x09,
-
  0xba, 0xdc, 0xd9, 0x85, 0x3d, 0x5d, 0x44, 0x7b, 0x3b, 0x7b, 0xbb, 0xd1,
-
  0xee, 0xde, 0xc1, 0xee, 0x93, 0x83, 0x9d, 0x9d, 0x35, 0xca, 0x2d, 0x43,
-
  0x2b, 0xf1, 0xbd, 0x34, 0x43, 0x07, 0x7b, 0x3d, 0x75, 0x05, 0xa8, 0xe8,
-
  0x3c, 0xa6, 0x72, 0x78, 0xea, 0x65, 0x7b, 0xc3, 0x75, 0xab, 0xe7, 0x45,
-
  0x9d, 0x7a, 0x80, 0xe1, 0xf5, 0xac, 0xc2, 0x2c, 0x8d, 0xe8, 0xe9, 0x8f,
-
  0xc7, 0x6f, 0x86, 0x2f, 0x4e, 0x5e, 0x7f, 0x13, 0xf4, 0x7a, 0xc8, 0x97,
-
  0x48, 0x07, 0x20, 0x5b, 0xd9, 0xda, 0x16, 0xd6, 0x3d, 0x8c, 0x3e, 0x77,
-
  0xf5, 0x63, 0xd2, 0xf9, 0x07, 0xd1, 0x12, 0x1f, 0x69, 0x13, 0xdf, 0x78,
-
  0x9c, 0x2e, 0x6a, 0x62, 0xd2, 0xea, 0x84, 0xd6, 0xdc, 0x1b, 0x71, 0x1e,
-
  0x93, 0x41, 0x1c, 0xb1, 0xe3, 0xc5, 0x6c, 0x6e, 0x7e, 0xdb, 0x0b, 0xf0,
-
  0x07, 0xfe, 0x66, 0x3f, 0x98, 0x6a, 0x20, 0x45, 0x93, 0x1d, 0x57, 0x7e,
-
  0xc5, 0xa5, 0x4d, 0xf0, 0xd4, 0xa0, 0xbe, 0x44, 0x31, 0x51, 0xae, 0x02,
-
  0x64, 0x2c, 0x22, 0xe1, 0xe0, 0x51, 0x96, 0xbf, 0x58, 0x0d, 0xaf, 0xa2,
-
  0xbf, 0xbd, 0x7d, 0x71, 0x14, 0x73, 0x7c, 0x03, 0xb1, 0xe4, 0x6d, 0x38,
-
  0xed, 0x26, 0x36, 0xca, 0x1b, 0x50, 0x18, 0x97, 0xc0, 0x49, 0x03, 0x5d,
-
  0x2e, 0x18, 0xfd, 0x0c, 0x65, 0x58, 0x2e, 0x02, 0xe9, 0xae, 0x68, 0xbb,
-
  0x39, 0x0c, 0xe3, 0x6f, 0xbc, 0x08, 0x0f, 0x5f, 0x92, 0x8d, 0xac, 0xfd,
-
  0xdc, 0x6e, 0xe8, 0xb9, 0x5d, 0xff, 0xb9, 0xbd, 0xd0, 0x73, 0x7b, 0xfe,
-
  0x73, 0xfb, 0xa1, 0xe7, 0x9c, 0x0d, 0x60, 0xa1, 0x4f, 0x88, 0xea, 0x86,
-
  0x43, 0xec, 0x15, 0x49, 0xb7, 0x45, 0x68, 0xbe, 0x70, 0x8c, 0x5a, 0xb6,
-
  0x71, 0xff, 0xec, 0xea, 0xf5, 0x2c, 0x1d, 0xe2, 0x3c, 0x56, 0x9d, 0x2e,
-
  0xef, 0xf1, 0x7d, 0xeb, 0x83, 0x59, 0x79, 0xcc, 0x1a, 0xae, 0x29, 0x43,
-
  0xa3, 0xc6, 0xb7, 0xd3, 0x77, 0x9a, 0x71, 0x1d, 0x3b, 0xfb, 0x03, 0xa7,
-
  0x37, 0x07, 0xda, 0xae, 0xe5, 0xb8, 0x5a, 0xcf, 0x55, 0x25, 0x02, 0x04,
-
  0x90, 0xa2, 0x36, 0x17, 0xb0, 0xf2, 0xcc, 0xaa, 0xdd, 0x7d, 0xf5, 0xae,
-
  0x47, 0x4f, 0xe5, 0x97, 0x65, 0x56, 0xa7, 0x14, 0x4a, 0xe5, 0x6b, 0x22,
-
  0x2f, 0x87, 0x5b, 0x30, 0x4b, 0xe1, 0xd5, 0x5a, 0xdf, 0x82, 0x5f, 0x8b,
-
  0xe8, 0xbd, 0x4a, 0xf5, 0x08, 0xb1, 0x24, 0x36, 0x82, 0x30, 0x7c, 0x64,
-
  0x72, 0x03, 0x20, 0x5d, 0x11, 0x21, 0xd3, 0x52, 0x9c, 0x5d, 0x70, 0xef,
-
  0x78, 0xf1, 0xeb, 0xd0, 0xa4, 0xed, 0x88, 0x74, 0x1d, 0xcd, 0x4b, 0xf5,
-
  0x33, 0x7d, 0x10, 0x91, 0x5f, 0x63, 0x05, 0xd0, 0x0d, 0x96, 0x4c, 0x90,
-
  0x00, 0xa1, 0x6f, 0x69, 0xbc, 0x31, 0x54, 0x63, 0x17, 0x29, 0xf2, 0x90,
-
  0xb4, 0xfa, 0xf6, 0xcd, 0x4b, 0x4f, 0x43, 0x36, 0x9b, 0x8f, 0x6b, 0x3f,
-
  0xa8, 0xd2, 0x6d, 0xb8, 0xd6, 0xaa, 0x6d, 0x8a, 0xd9, 0x91, 0x5e, 0x2f,
-
  0xea, 0xf9, 0xec, 0x06, 0x87, 0x00, 0xbc, 0x8b, 0x11, 0x3c, 0xb3, 0x6b,
-
  0x16, 0x83, 0x29, 0x61, 0xc0, 0xd6, 0x9a, 0x21, 0x3e, 0xc7, 0x3b, 0x4a,
-
  0xa6, 0x5f, 0x1f, 0x69, 0x1c, 0x0d, 0x6d, 0x18, 0x2d, 0x8d, 0x07, 0x74,
-
  0x17, 0x45, 0x30, 0x12, 0xdd, 0x4c, 0x75, 0x41, 0xe4, 0xe7, 0x9a, 0x12,
-
  0x6c, 0xc3, 0x85, 0xf0, 0x05, 0x89, 0xa8, 0x09, 0x94, 0x0b, 0xa1, 0x2a,
-
  0xe8, 0x25, 0xaa, 0x03, 0x5c, 0x78, 0x26, 0xb4, 0x5c, 0x95, 0x1b, 0x82,
-
  0x9d, 0xda, 0xa0, 0x8c, 0xa0, 0x90, 0xdf, 0xa1, 0xe5, 0x35, 0xc8, 0xed,
-
  0x73, 0x81, 0x9f, 0x37, 0x47, 0x01, 0x53, 0x7d, 0x77, 0x78, 0x3c, 0x7c,
-
  0xb7, 0xbb, 0xf7, 0xe4, 0xdd, 0x0f, 0x47, 0xaf, 0xde, 0x0d, 0x9f, 0x1f,
-
  0xee, 0x3d, 0x5c, 0x17, 0xa4, 0x44, 0x1b, 0x93, 0x68, 0x95, 0x25, 0x28,
-
  0x55, 0xd5, 0x4a, 0xcf, 0x04, 0x8c, 0x01, 0x93, 0x26, 0x08, 0xb5, 0xf7,
-
  0x29, 0xfe, 0xfb, 0x8d, 0x5f, 0x02, 0x88, 0x76, 0xa1, 0x8d, 0x14, 0x83,
-
  0x36, 0x18, 0x84, 0xb2, 0x66, 0x0a, 0xe2, 0x95, 0x22, 0x0a, 0x72, 0x2e,
-
  0xd9, 0x55, 0xe9, 0x29, 0x51, 0x6f, 0xf8, 0xe6, 0xb4, 0xd7, 0x97, 0xf8,
-
  0x5e, 0xe8, 0x21, 0x86, 0xbf, 0x23, 0xb2, 0xdb, 0x46, 0xd1, 0xc3, 0x9d,
-
  0x87, 0x0f, 0x04, 0xc7, 0x84, 0xc7, 0xc8, 0x35, 0x23, 0xfc, 0x60, 0x7c,
-
  0xfa, 0xd2, 0xa2, 0xd9, 0x94, 0xae, 0xfc, 0x86, 0xa1, 0x0c, 0xcd, 0x09,
-
  0xb2, 0xcb, 0xad, 0x2f, 0xd5, 0x29, 0xbb, 0x15, 0x43, 0xb9, 0xfd, 0x88,
-
  0x85, 0xd0, 0x30, 0x9b, 0x0e, 0x12, 0x8c, 0x05, 0x96, 0xfc, 0x1a, 0x89,
-
  0xe7, 0x12, 0x7e, 0x18, 0x8a, 0x99, 0x30, 0x79, 0x42, 0xce, 0x71, 0x62,
-
  0xdf, 0x89, 0x99, 0xb3, 0x2c, 0x58, 0x3f, 0x12, 0x36, 0x66, 0x7c, 0x8c,
-
  0x1d, 0xe7, 0x0d, 0x16, 0xec, 0x87, 0x7c, 0x89, 0x9b, 0x42, 0x0d, 0x69,
-
  0x3b, 0xd2, 0x4c, 0x07, 0x1e, 0x94, 0xbb, 0x0e, 0x9f, 0x93, 0xe2, 0xcd,
-
  0x20, 0x70, 0xc8, 0xeb, 0x11, 0xb7, 0xd0, 0x41, 0x8b, 0x7c, 0xcd, 0xee,
-
  0x3f, 0x65, 0xbd, 0x2c, 0x44, 0xc0, 0xe6, 0x19, 0x24, 0x36, 0x32, 0x2e,
-
  0x69, 0x5d, 0x9f, 0x00, 0x69, 0x23, 0x48, 0xf9, 0x45, 0x31, 0x89, 0xba,
-
  0x61, 0xb1, 0x55, 0x4f, 0x77, 0xa6, 0x33, 0xd0, 0x04, 0x05, 0xb9, 0x25,
-
  0x2d, 0xd5, 0xd2, 0xe0, 0xd1, 0xbf, 0x9a, 0xae, 0x0e, 0x41, 0x08, 0xa4,
-
  0xee, 0xeb, 0x4d, 0xd4, 0xb9, 0xa3, 0x66, 0x5e, 0x9f, 0x73, 0x47, 0xcd,
-
  0x20, 0x16, 0x57, 0x13, 0x67, 0xde, 0xf4, 0xcf, 0x7d, 0x6c, 0x30, 0x35,
-
  0x14, 0x04, 0xa8, 0xc3, 0xad, 0x55, 0x4c, 0xab, 0xfb, 0xda, 0x5a, 0x75,
-
  0x6c, 0x36, 0x37, 0xd7, 0xee, 0xae, 0xb3, 0xbd, 0x96, 0xef, 0xe0, 0xf0,
-
  0x3d, 0x66, 0x72, 0xbf, 0x1b, 0x6e, 0x97, 0xe2, 0x73, 0xc1, 0xac, 0xde,
-
  0xf7, 0x56, 0x6b, 0x63, 0xad, 0xed, 0x46, 0x51, 0x35, 0x2c, 0xee, 0x7d,
-
  0x8f, 0x20, 0x66, 0x4d, 0xd4, 0x36, 0x47, 0xe9, 0x20, 0x25, 0x43, 0x85,
-
  0x90, 0xdb, 0xe1, 0xa9, 0xb2, 0x8e, 0x49, 0x8d, 0x88, 0xd9, 0xf8, 0x0b,
-
  0xbf, 0xa8, 0x2e, 0x46, 0x73, 0x48, 0x17, 0x64, 0x02, 0xe2, 0xee, 0x1b,
-
  0xf6, 0x4d, 0x2a, 0x46, 0xae, 0x86, 0x05, 0x76, 0x40, 0x09, 0xcc, 0x65,
-
  0xab, 0xb9, 0x77, 0x78, 0x69, 0xbc, 0x93, 0x6d, 0xde, 0xd1, 0xe8, 0x5c,
-
  0x93, 0x36, 0x89, 0xed, 0x80, 0xc2, 0x86, 0xa1, 0x71, 0x15, 0x16, 0x77,
-
  0xb8, 0xa9, 0x56, 0x13, 0xb6, 0x03, 0xf7, 0x0b, 0xa6, 0x68, 0x6a, 0xc0,
-
  0x8b, 0x51, 0x65, 0x9a, 0x15, 0x9e, 0x91, 0x1e, 0x12, 0xa3, 0x06, 0xcb,
-
  0xaa, 0xf9, 0xa5, 0xa7, 0x6f, 0x80, 0xd2, 0x94, 0xdd, 0xf9, 0x04, 0x31,
-
  0x77, 0xda, 0xf2, 0xda, 0x44, 0xc4, 0x4a, 0x8b, 0x5b, 0xcc, 0xc7, 0xd7,
-
  0x2c, 0x02, 0xd1, 0x6c, 0xb7, 0xa5, 0xa8, 0xdd, 0xff, 0x51, 0x14, 0xb5,
-
  0xfb, 0x3f, 0x94, 0xa2, 0x76, 0x3f, 0x19, 0x45, 0xed, 0xde, 0x8d, 0xa2,
-
  0xac, 0x52, 0x8c, 0x53, 0xbf, 0x05, 0x7d, 0xed, 0xdd, 0x91, 0xbe, 0xf6,
-
  0xfe, 0x47, 0xd1, 0xd7, 0xde, 0xff, 0x50, 0xfa, 0xda, 0xfb, 0x64, 0xf4,
-
  0xb5, 0xf7, 0x1f, 0xa2, 0xaf, 0xfd, 0x3b, 0xd2, 0xd7, 0xfe, 0xfd, 0xd3,
-
  0xd7, 0xd4, 0x33, 0xa7, 0xdc, 0x64, 0xa7, 0x74, 0x22, 0x69, 0x3e, 0x81,
-
  0xa9, 0xf2, 0xb5, 0x49, 0xbf, 0x51, 0x63, 0x81, 0xa2, 0xc7, 0xb9, 0xb9,
-
  0x40, 0xe8, 0xc5, 0xc1, 0xef, 0xc5, 0xf4, 0x50, 0x0d, 0x6e, 0x24, 0x9a,
-
  0xfd, 0x4f, 0x46, 0x34, 0xfb, 0x77, 0x22, 0x9a, 0xbd, 0x15, 0x44, 0xd3,
-
  0xaa, 0x0d, 0x6f, 0xed, 0x7b, 0x41, 0xeb, 0x78, 0x00, 0xfd, 0x36, 0xc1,
-
  0x3c, 0x2e, 0x14, 0x1c, 0x9b, 0xe4, 0xf3, 0x81, 0xa9, 0x46, 0x8d, 0x63,
-
  0x21, 0xb2, 0x11, 0x9f, 0x8e, 0x4f, 0x38, 0x92, 0x79, 0xc4, 0x95, 0x7d,
-
  0xe9, 0x0b, 0x6b, 0x42, 0x27, 0x7b, 0xb0, 0x8f, 0xab, 0x97, 0x9d, 0x5f,
-
  0xa4, 0xe5, 0x8a, 0xe3, 0xec, 0x84, 0xaa, 0x7f, 0xa2, 0xbd, 0xb9, 0xaf,
-
  0xb0, 0x7f, 0x67, 0xa4, 0x9f, 0x27, 0xec, 0xbf, 0x99, 0x76, 0x62, 0x6e,
-
  0xc3, 0x46, 0x14, 0x7f, 0xcb, 0xf4, 0xeb, 0x32, 0x9d, 0x32, 0x4e, 0x81,
-
  0xab, 0xe3, 0xaa, 0x87, 0xdc, 0xb9, 0xae, 0x2b, 0x17, 0x3d, 0x37, 0xe8,
-
  0xdf, 0x43, 0x0f, 0x80, 0x9c, 0xd1, 0xf8, 0x58, 0xde, 0xb5, 0x81, 0xa6,
-
  0x7c, 0x9a, 0xfd, 0x7a, 0xc8, 0x82, 0xf5, 0x6e, 0xea, 0xff, 0x6a, 0x1d,
-
  0x3d, 0x89, 0xa5, 0xee, 0x0b, 0xea, 0x86, 0x76, 0xe2, 0xd6, 0x46, 0xa3,
-
  0x92, 0xe9, 0x5e, 0xdd, 0xdc, 0x71, 0xca, 0xc5, 0xac, 0xb3, 0xfa, 0x06,
-
  0xe7, 0xbd, 0x9d, 0xe1, 0x27, 0x08, 0xe1, 0xb2, 0x8d, 0xaf, 0x4d, 0x85,
-
  0xce, 0xb8, 0xd6, 0x34, 0xfd, 0x99, 0x8d, 0x68, 0xee, 0x64, 0x32, 0x4e,
-
  0xe3, 0xa4, 0x1a, 0x67, 0x59, 0xd8, 0x29, 0xac, 0xf1, 0xf8, 0x09, 0xe5,
-
  0x53, 0x46, 0xf4, 0x7c, 0x84, 0xf1, 0x9c, 0xb8, 0x37, 0xc8, 0x35, 0xf1,
-
  0x7a, 0xa7, 0xaa, 0xd4, 0xb8, 0x15, 0xc0, 0xdf, 0xcf, 0x0b, 0x8d, 0xc5,
-
  0xe9, 0xc3, 0x77, 0x5e, 0x66, 0x2d, 0xb0, 0x70, 0x5a, 0x53, 0x60, 0xe4,
-
  0xe3, 0x32, 0x5b, 0x10, 0xc4, 0x0c, 0x3c, 0x87, 0x49, 0x8a, 0x82, 0x6b,
-
  0x23, 0xb1, 0x61, 0xec, 0xb4, 0x95, 0xf8, 0x64, 0x86, 0x8c, 0x78, 0xeb,
-
  0x99, 0x98, 0x7b, 0x71, 0x0f, 0xdd, 0xe3, 0xf8, 0x35, 0x29, 0xf9, 0xf0,
-
  0x2e, 0x48, 0x1e, 0xa9, 0x13, 0x1b, 0x1c, 0x69, 0x79, 0xe5, 0x55, 0x59,
-
  0x1e, 0x08, 0xd4, 0x97, 0xcd, 0xb3, 0x59, 0x52, 0xca, 0x71, 0xe0, 0x08,
-
  0x60, 0xb4, 0x10, 0x02, 0xdb, 0xc3, 0xc8, 0x94, 0x42, 0x0a, 0x1f, 0x5c,
-
  0xa4, 0x1f, 0xb8, 0x3e, 0x03, 0xcd, 0x36, 0xf7, 0x13, 0x4c, 0x2f, 0x30,
-
  0x30, 0x9f, 0xe9, 0xf0, 0x70, 0x78, 0xf4, 0xe2, 0x45, 0xa3, 0x9a, 0x03,
-
  0xae, 0x1b, 0x05, 0x2b, 0x73, 0x4d, 0xc8, 0x6a, 0x0e, 0x0b, 0x98, 0x96,
-
  0xb6, 0xb0, 0x9f, 0x17, 0x7f, 0x30, 0x07, 0x96, 0x47, 0x31, 0x53, 0xc0,
-
  0x7c, 0x33, 0xae, 0xad, 0x5e, 0xa2, 0xb3, 0x80, 0x8c, 0x19, 0x39, 0x0c,
-
  0x33, 0xc3, 0x02, 0xf0, 0x17, 0xcb, 0x79, 0x92, 0x57, 0x9f, 0x3d, 0x81,
-
  0xa5, 0x45, 0x4e, 0x9f, 0xcf, 0xe6, 0xe4, 0x0c, 0x62, 0x56, 0x9c, 0xdf,
-
  0x47, 0x22, 0x0b, 0xb7, 0x19, 0xc8, 0xea, 0xb3, 0x59, 0x54, 0x01, 0x4a,
-
  0x77, 0xf8, 0x2b, 0x1d, 0x1b, 0x3f, 0x29, 0xc0, 0x3b, 0x89, 0x01, 0x6c,
-
  0xbe, 0xd3, 0x92, 0x64, 0xe6, 0x8a, 0x42, 0x1d, 0x38, 0xb0, 0xa5, 0xaa,
-
  0x61, 0x16, 0xd8, 0x32, 0x6e, 0x93, 0x9c, 0x49, 0xd8, 0x34, 0x1d, 0x32,
-
  0xa1, 0x13, 0x98, 0xc8, 0xb9, 0xb6, 0xeb, 0x96, 0x03, 0x1d, 0xff, 0xfb,
-
  0x14, 0x17, 0x75, 0x66, 0x7e, 0xef, 0x45, 0x1b, 0x6d, 0xd3, 0x77, 0x23,
-
  0x22, 0x86, 0x89, 0x6d, 0x50, 0x94, 0x1c, 0xd6, 0x35, 0x45, 0xb4, 0x5b,
-
  0xee, 0xff, 0xff, 0x7f, 0xf0, 0x60, 0x41, 0x8a, 0xee, 0xfd, 0xb1, 0x87,
-
  0x90, 0xc5, 0x9e, 0x95, 0xf5, 0x56, 0xed, 0xa4, 0x65, 0xf9, 0xdf, 0x20,
-
  0x63, 0x8f, 0xb7, 0x62, 0xfd, 0x0a, 0x7c, 0x4e, 0x48, 0x40, 0x30, 0x32,
-
  0x60, 0x0d, 0x1a, 0xbd, 0x1b, 0x8b, 0x6b, 0x90, 0xb4, 0xc3, 0xe2, 0x62,
-
  0x8d, 0x78, 0x0b, 0xf2, 0x39, 0x2f, 0x6c, 0xde, 0x65, 0x72, 0x5d, 0x5c,
-
  0x93, 0x3b, 0x71, 0x49, 0x1d, 0x41, 0xb5, 0x63, 0xa9, 0x07, 0xfa, 0x14,
-
  0xe1, 0xb0, 0xbf, 0x09, 0x4b, 0x91, 0x47, 0xac, 0x44, 0x46, 0x0a, 0x89,
-
  0x4c, 0x4a, 0xe3, 0xdb, 0x00, 0x22, 0xb7, 0x26, 0x75, 0xc2, 0x6e, 0x91,
-
  0x24, 0x19, 0xc8, 0x0b, 0xcd, 0xd3, 0x3a, 0x88, 0xd1, 0xc3, 0xf7, 0x96,
-
  0x3b, 0xa2, 0xcf, 0x76, 0x6f, 0xb9, 0x83, 0xe0, 0x1f, 0x31, 0x2e, 0xce,
-
  0x9a, 0x1b, 0x9b, 0x8c, 0x2a, 0x5c, 0xf6, 0xda, 0x6d, 0xae, 0x19, 0xa4,
-
  0xd9, 0x04, 0x50, 0x39, 0xc3, 0x6d, 0x5b, 0x2e, 0x66, 0x45, 0x32, 0x89,
-
  0x29, 0x3c, 0x2b, 0xc8, 0x82, 0x88, 0x20, 0x2c, 0x56, 0x52, 0x33, 0x12,
-
  0x8e, 0xb0, 0xcd, 0x25, 0x68, 0x93, 0x19, 0x87, 0xea, 0x7b, 0x18, 0x9c,
-
  0xd0, 0x91, 0xa9, 0xab, 0x29, 0x8e, 0xfc, 0x1e, 0x49, 0x49, 0x59, 0x3b,
-
  0xc4, 0x0e, 0xde, 0xee, 0x3b, 0xd1, 0xdf, 0xc9, 0x02, 0x2f, 0xc2, 0x80,
-
  0x8e, 0xe4, 0x0c, 0x80, 0x6b, 0x79, 0xbf, 0x3e, 0x39, 0x3b, 0xe6, 0x1b,
-
  0x10, 0x6d, 0x46, 0x14, 0x8c, 0xc1, 0x40, 0x54, 0x28, 0x32, 0xcd, 0x90,
-
  0xf9, 0x6d, 0x6b, 0xfe, 0x4a, 0xa0, 0xa4, 0x0d, 0x27, 0x25, 0x17, 0x84,
-
  0x0f, 0x4b, 0x02, 0x17, 0x5e, 0xf1, 0x14, 0xa2, 0x8c, 0x7f, 0x1f, 0xb1,
-
  0xb9, 0x8c, 0x95, 0xb5, 0xe6, 0x2c, 0x88, 0x6f, 0x79, 0x7a, 0xab, 0x13,
-
  0xbe, 0x7e, 0x91, 0xe5, 0xef, 0xcd, 0xb8, 0x4a, 0x26, 0x25, 0xdb, 0x9b,
-
  0xa6, 0x2d, 0x33, 0x64, 0x10, 0x2d, 0xe0, 0xd4, 0x57, 0x62, 0x94, 0x39,
-
  0x2e, 0xab, 0x54, 0x94, 0x68, 0x6a, 0x7b, 0x8e, 0x60, 0xf4, 0x08, 0x89,
-
  0x35, 0xbb, 0x16, 0x88, 0x52, 0xf2, 0x3c, 0xd3, 0xc6, 0x46, 0x18, 0x0b,
-
  0xad, 0x25, 0x5c, 0xda, 0xfc, 0x16, 0x16, 0xa4, 0x01, 0x95, 0x2b, 0xc1,
-
  0x1e, 0x0a, 0x82, 0xbe, 0x39, 0xdc, 0x12, 0x95, 0x9d, 0xc9, 0xff, 0xf4,
-
  0xed, 0x99, 0xc9, 0x4c, 0x58, 0xe5, 0x3b, 0xea, 0xaa, 0x0d, 0x60, 0x17,
-
  0x0a, 0x2f, 0x8e, 0xcd, 0x04, 0x31, 0x5c, 0xce, 0x67, 0x29, 0x45, 0x7d,
-
  0x6e, 0xa9, 0xbd, 0x01, 0x18, 0x3c, 0x42, 0x84, 0xd9, 0x63, 0x9d, 0x04,
-
  0xe3, 0x7c, 0xf9, 0x4a, 0x8a, 0x0e, 0x67, 0x14, 0x3b, 0x5b, 0xa7, 0x1a,
-
  0x68, 0xe0, 0xf4, 0x31, 0x80, 0x3b, 0x06, 0x3a, 0xd1, 0x5e, 0x04, 0x26,
-
  0x79, 0xab, 0x2d, 0x67, 0x63, 0xa6, 0xce, 0xa8, 0x51, 0xb8, 0xc0, 0xf4,
-
  0x8e, 0xdd, 0xe3, 0x50, 0x5b, 0x43, 0x23, 0xbc, 0x1d, 0xca, 0x5b, 0xf0,
-
  0x19, 0x0e, 0x15, 0x20, 0x43, 0x83, 0x19, 0x5a, 0x4c, 0x49, 0x62, 0x47,
-
  0x92, 0x13, 0xf0, 0x17, 0xb9, 0xcb, 0x48, 0x3f, 0x8d, 0xa4, 0x39, 0xf6,
-
  0xfe, 0xa7, 0x74, 0x2b, 0x2f, 0xbd, 0xa0, 0x08, 0xdc, 0xc2, 0xc0, 0x92,
-
  0xfe, 0x1d, 0x33, 0x9a, 0x30, 0x22, 0xc6, 0xe0, 0xdf, 0xa3, 0x99, 0xcd,
-
  0x3f, 0xd0, 0x7a, 0xbd, 0x11, 0x0a, 0x5b, 0xa1, 0xe1, 0x4e, 0xf3, 0xd8,
-
  0x5b, 0x03, 0xc9, 0x35, 0x19, 0x44, 0xc7, 0xf8, 0xb4, 0xdf, 0xd0, 0x9f,
-
  0xa9, 0x85, 0x45, 0x92, 0x95, 0x66, 0x9d, 0x10, 0xbf, 0x81, 0xf1, 0x32,
-
  0x3c, 0x3c, 0x3c, 0xa6, 0x3c, 0x46, 0xad, 0x40, 0xf3, 0x31, 0x95, 0xaf,
-
  0x1a, 0xf0, 0x69, 0x20, 0x5e, 0x65, 0x32, 0xa2, 0x7b, 0x78, 0x53, 0x8f,
-
  0x60, 0xf2, 0x3d, 0x55, 0x94, 0xa0, 0x6f, 0x2f, 0x92, 0xc3, 0x1d, 0x49,
-
  0x52, 0x9e, 0x93, 0x69, 0xba, 0x4f, 0xf6, 0x23, 0x0e, 0xf5, 0xc1, 0x51,
-
  0x5c, 0x9b, 0x25, 0xd1, 0xee, 0x55, 0xa2, 0x0c, 0x48, 0x19, 0x55, 0x24,
-
  0x80, 0x4c, 0x4c, 0x1a, 0x38, 0xb7, 0x46, 0xe4, 0x10, 0x55, 0x0a, 0xc0,
-
  0x4f, 0x75, 0x78, 0x9c, 0x74, 0x8e, 0xe3, 0x8e, 0x03, 0xb5, 0x25, 0x98,
-
  0xbf, 0xe2, 0x8b, 0xc8, 0xf4, 0xbe, 0x08, 0xe5, 0xee, 0xf2, 0xa0, 0xd4,
-
  0x9a, 0x9a, 0x33, 0x4e, 0x15, 0x93, 0xc5, 0x81, 0x73, 0x5c, 0x39, 0xb8,
-
  0x38, 0x69, 0x14, 0xb4, 0xf0, 0x93, 0x6d, 0x47, 0x0c, 0x86, 0xf1, 0x70,
-
  0x7f, 0x6f, 0x2f, 0x62, 0xd1, 0x8d, 0x61, 0xbe, 0x39, 0xc2, 0x1d, 0x8b,
-
  0x3a, 0x49, 0x26, 0x39, 0x5f, 0x7f, 0x8a, 0xcb, 0x87, 0x37, 0x57, 0x31,
-
  0xed, 0x48, 0x93, 0xc7, 0xcd, 0x82, 0x9b, 0x15, 0xae, 0xb0, 0x62, 0x72,
-
  0x6d, 0x5b, 0x05, 0x72, 0x29, 0x91, 0x49, 0x01, 0x6b, 0x11, 0xdc, 0xa4,
-
  0x48, 0x22, 0x6e, 0xaa, 0x28, 0x0a, 0xc2, 0xb8, 0xce, 0x24, 0x2b, 0x04,
-
  0x6f, 0x8c, 0x31, 0x95, 0xe3, 0x43, 0x22, 0xcc, 0xe9, 0x57, 0x90, 0xd3,
-
  0xa7, 0xcb, 0x12, 0x99, 0x27, 0xe5, 0x39, 0xe5, 0xd7, 0xd1, 0x55, 0x20,
-
  0x97, 0xcd, 0x27, 0xbf, 0x8f, 0x4f, 0x97, 0xea, 0x8a, 0x92, 0x3e, 0xeb,
-
  0x0e, 0x4c, 0xee, 0x78, 0xbe, 0x97, 0xcd, 0xcf, 0xff, 0xb1, 0x1b, 0xef,
-
  0xee, 0xec, 0xec, 0xfc, 0x3a, 0x58, 0x20, 0xe5, 0x72, 0x06, 0x05, 0xfc,
-
  0x3b, 0x68, 0xa4, 0x59, 0x75, 0x5c, 0xf5, 0xce, 0xb4, 0x7a, 0xff, 0xc2,
-
  0x1f, 0xbb, 0x7d, 0xfc, 0x77, 0xef, 0xdf, 0xbd, 0xf5, 0xae, 0xfb, 0x1f,
-
  0x70, 0x91, 0x30, 0xea, 0x9f, 0x04, 0x2e, 0x93, 0x7f, 0xde, 0x90, 0xb6,
-
  0xca, 0x59, 0xfc, 0xcf, 0x65, 0x0a, 0x5b, 0x8f, 0x39, 0x0c, 0x89, 0x27,
-
  0x6b, 0x01, 0x93, 0xda, 0x6a, 0x65, 0xe4, 0x24, 0x93, 0x09, 0x81, 0x67,
-
  0x64, 0xe9, 0x38, 0x95, 0xb4, 0x86, 0x04, 0xeb, 0x9e, 0xb0, 0xb2, 0x9b,
-
  0x30, 0x6b, 0xfd, 0x73, 0x50, 0x00, 0x42, 0xee, 0x60, 0xf4, 0x07, 0xbc,
-
  0xad, 0xe5, 0x44, 0xe3, 0x39, 0xe2, 0x51, 0x2c, 0x28, 0xf1, 0x14, 0x83,
-
  0x27, 0xab, 0xeb, 0xbc, 0xe6, 0xb0, 0xda, 0x08, 0x84, 0x2d, 0x0a, 0xc3,
-
  0x98, 0xf9, 0x74, 0x4e, 0x27, 0x9b, 0x36, 0x7d, 0x4a, 0xe9, 0xd9, 0x38,
-
  0x18, 0x9c, 0x94, 0x50, 0x13, 0x29, 0x7b, 0xc8, 0xf8, 0x40, 0x48, 0x4f,
-
  0x73, 0xb4, 0x1f, 0x1f, 0x74, 0xf8, 0x24, 0x94, 0x69, 0x30, 0x80, 0x4d,
-
  0xa5, 0xa6, 0xe9, 0x8d, 0x3f, 0x6f, 0x44, 0x9b, 0x0b, 0x10, 0x64, 0xb7,
-
  0xfa, 0x72, 0xf3, 0x56, 0xc6, 0x60, 0xc3, 0x21, 0x43, 0x3e, 0x58, 0xbe,
-
  0x91, 0x0f, 0x93, 0x2a, 0x26, 0xdc, 0x4b, 0x1e, 0x4c, 0x08, 0x8c, 0x2b,
-
  0x75, 0xa6, 0x4d, 0x37, 0x19, 0x2d, 0x85, 0xdc, 0xf2, 0x38, 0xee, 0x69,
-
  0x81, 0xb7, 0x84, 0x29, 0x6e, 0x4f, 0x86, 0x53, 0x0e, 0x46, 0x49, 0xca,
-
  0xf7, 0x5e, 0x41, 0x08, 0x1e, 0x22, 0x99, 0x85, 0x42, 0xa0, 0x63, 0xee,
-
  0x76, 0x7f, 0xba, 0xf3, 0xe2, 0x74, 0x82, 0xa4, 0x80, 0xe9, 0x9e, 0xb7,
-
  0x3f, 0x3c, 0xce, 0xcb, 0x5f, 0xf3, 0xb2, 0x91, 0xe4, 0x81, 0xef, 0x3b,
-
  0xaf, 0x83, 0xbc, 0xbe, 0x3d, 0x2d, 0x8a, 0x5b, 0xf5, 0xff, 0xed, 0x7a,
-
  0xa7, 0xd7, 0x79, 0x9b, 0xde, 0xa4, 0x48, 0xbd, 0xbb, 0xbc, 0xdd, 0xfb,
-
  0x33, 0xcd, 0xfe, 0x8f, 0x7b, 0x3b, 0x30, 0xd2, 0x35, 0x0f, 0x6e, 0x9b,
-
  0x8c, 0xe9, 0xfc, 0xea, 0x69, 0x6e, 0xc8, 0xeb, 0x4f, 0x5a, 0xd0, 0xc8,
-
  0x38, 0x8a, 0xa7, 0xf0, 0x8f, 0x17, 0xed, 0xa4, 0x15, 0x8c, 0x12, 0x12,
-
  0xbb, 0xf9, 0xd2, 0x9d, 0xa6, 0xf5, 0xf8, 0xc2, 0xd7, 0xe7, 0x40, 0x56,
-
  0xc4, 0x39, 0x43, 0xa7, 0x12, 0xd2, 0x0b, 0x17, 0x67, 0x9b, 0x87, 0xab,
-
  0xa3, 0x55, 0x9a, 0x85, 0x26, 0x37, 0xab, 0x2d, 0x25, 0x1d, 0xcc, 0x0e,
-
  0x65, 0xf1, 0xab, 0xe3, 0xb0, 0xb1, 0x80, 0x26, 0xa4, 0x2e, 0xc8, 0x99,
-
  0x78, 0xd7, 0x32, 0x08, 0x2c, 0x31, 0x90, 0x4d, 0xc5, 0x60, 0xe8, 0xc9,
-
  0xde, 0xf7, 0x02, 0x4e, 0x9f, 0xde, 0x54, 0xbf, 0x82, 0x99, 0x6c, 0x49,
-
  0xf1, 0x1c, 0x23, 0x50, 0x53, 0x7a, 0x50, 0x12, 0x9d, 0x2f, 0xd1, 0xf8,
-
  0x3f, 0x4a, 0x44, 0x72, 0xd5, 0xc2, 0x52, 0x83, 0x30, 0x44, 0x10, 0x08,
-
  0x60, 0x69, 0x49, 0xe2, 0x72, 0xb5, 0x1c, 0xc5, 0xa2, 0x4a, 0xd2, 0x88,
-
  0x28, 0x1d, 0x0b, 0xe5, 0x82, 0x67, 0x2f, 0x8e, 0xe0, 0xfa, 0xc1, 0xb4,
-
  0xb4, 0x3e, 0x03, 0xc9, 0xc2, 0x0f, 0x84, 0x09, 0x6c, 0x4b, 0x25, 0x0c,
-
  0x43, 0x8c, 0x11, 0xaa, 0x74, 0x95, 0x9b, 0xc8, 0xd1, 0xc4, 0x26, 0x35,
-
  0x37, 0x54, 0xc2, 0x7e, 0x54, 0xe0, 0xbd, 0x77, 0x95, 0x55, 0x69, 0x08,
-
  0xad, 0xa6, 0xa1, 0x3d, 0x9a, 0x24, 0xf7, 0x07, 0x0f, 0x07, 0x3b, 0x3c,
-
  0x45, 0x5c, 0x43, 0x39, 0xd5, 0x82, 0x6f, 0x4d, 0xce, 0x4b, 0x8d, 0x86,
-
  0x4e, 0xc2, 0x59, 0x1a, 0x66, 0x28, 0xfd, 0x08, 0x11, 0xb4, 0x08, 0x69,
-
  0xa1, 0x2e, 0x62, 0xfd, 0xd6, 0xc9, 0xbc, 0x0f, 0x56, 0xc6, 0x52, 0x94,
-
  0x47, 0xa9, 0x3f, 0x2a, 0x5a, 0x38, 0x6f, 0xac, 0xa0, 0x28, 0x71, 0x4d,
-
  0x2c, 0x12, 0xdc, 0x0a, 0x24, 0x61, 0x11, 0x71, 0xfd, 0xfc, 0x16, 0x7c,
-
  0xe2, 0xc4, 0x49, 0xdf, 0x61, 0x85, 0x69, 0x71, 0x43, 0x0d, 0x84, 0x93,
-
  0x5c, 0x21, 0x6f, 0xfa, 0xc4, 0x46, 0xb3, 0xf1, 0x12, 0x4d, 0xf5, 0x48,
-
  0x7e, 0x58, 0x45, 0x8a, 0xb2, 0x70, 0xaa, 0x0a, 0xf7, 0x8d, 0x44, 0xbf,
-
  0x11, 0x27, 0xca, 0xb4, 0x65, 0x34, 0x04, 0xcb, 0x64, 0xe3, 0x8f, 0xd8,
-
  0x02, 0xec, 0x7b, 0x22, 0xd4, 0x88, 0x96, 0x84, 0x82, 0xde, 0x35, 0xc8,
-
  0xfe, 0xf3, 0x41, 0xf4, 0x5d, 0x7a, 0x95, 0x94, 0xe9, 0xff, 0x0a, 0x72,
-
  0xd9, 0x4f, 0x97, 0xbe, 0x4d, 0xad, 0xaf, 0xc5, 0x4d, 0x0e, 0xfa, 0x62,
-
  0xa6, 0x62, 0x3e, 0xd2, 0x48, 0xe1, 0x36, 0x9c, 0xe3, 0x3b, 0x12, 0xa8,
-
  0x2a, 0x31, 0xc8, 0x04, 0xc1, 0xb5, 0x19, 0x33, 0x55, 0x80, 0x33, 0xd8,
-
  0x7f, 0xa1, 0x4a, 0xff, 0x00, 0xa3, 0x09, 0xf8, 0x44, 0x10, 0x05, 0xe0,
-
  0xec, 0x35, 0x76, 0x35, 0xf5, 0x16, 0x9b, 0x0a, 0x8a, 0x3a, 0x35, 0x29,
-
  0xf8, 0xd6, 0x63, 0x21, 0x9d, 0x8d, 0xd9, 0x1c, 0x47, 0xd9, 0xfb, 0x0a,
-
  0x03, 0x28, 0xbf, 0x3e, 0xec, 0x0d, 0x9a, 0x22, 0x88, 0x87, 0x62, 0xb4,
-
  0xc4, 0x7d, 0x22, 0xa9, 0xb8, 0x69, 0x4c, 0x14, 0x49, 0x18, 0x25, 0x6f,
-
  0x9c, 0x3e, 0x69, 0x5e, 0x48, 0xd1, 0x70, 0xa1, 0xee, 0xef, 0xc9, 0x3e,
-
  0xae, 0xf0, 0xe6, 0xd3, 0xaa, 0xb8, 0xcb, 0x12, 0xdd, 0x6f, 0x9e, 0xae,
-
  0x69, 0x77, 0x4d, 0x63, 0xd0, 0x77, 0x3e, 0xa6, 0xf2, 0xf6, 0x9b, 0xe3,
-
  0xc3, 0x67, 0xaf, 0x8e, 0x6f, 0x40, 0xd0, 0x15, 0xcb, 0x1b, 0xdd, 0x2e,
-
  0x6d, 0xc3, 0xdb, 0xa1, 0x10, 0x40, 0x19, 0x27, 0xe7, 0xb8, 0x88, 0xc1,
-
  0xa0, 0x59, 0xb1, 0xbd, 0xe9, 0x6d, 0x42, 0xb2, 0x1b, 0xbe, 0x72, 0x78,
-
  0xce, 0xa2, 0x53, 0x29, 0xea, 0x0b, 0x65, 0x7b, 0xbb, 0xd5, 0xc9, 0x34,
-
  0x20, 0xc4, 0xe7, 0x20, 0x72, 0xc5, 0x8d, 0x66, 0x49, 0xfe, 0xde, 0x40,
-
  0xf7, 0x70, 0x4b, 0x7d, 0x04, 0xcd, 0xe5, 0xe2, 0x2f, 0xf6, 0x43, 0x49,
-
  0xff, 0x26, 0xb5, 0xac, 0xd5, 0xdc, 0x3f, 0x97, 0x68, 0x15, 0x41, 0xc9,
-
  0x48, 0x51, 0x89, 0x04, 0x57, 0xc8, 0x25, 0x47, 0x54, 0x71, 0x4c, 0x98,
-
  0x6f, 0x14, 0x3f, 0xa7, 0x1d, 0xe6, 0xe7, 0xfc, 0x1a, 0x67, 0x9c, 0x23,
-
  0xc2, 0x65, 0x0a, 0x14, 0xa3, 0xa8, 0x83, 0x21, 0xa1, 0xad, 0x10, 0x35,
-
  0x4c, 0xbc, 0xdb, 0x08, 0xf8, 0x61, 0xbe, 0xa8, 0xaf, 0xad, 0x58, 0x89,
-
  0x46, 0xd0, 0xf6, 0x12, 0x6f, 0xf6, 0x7a, 0x5b, 0x94, 0xcd, 0x1b, 0x30,
-
  0x95, 0x30, 0x76, 0xaa, 0xb8, 0x15, 0x79, 0x12, 0x05, 0x6e, 0x36, 0xda,
-
  0x31, 0x38, 0x4f, 0x97, 0xc5, 0x51, 0x92, 0x08, 0x4d, 0xda, 0x0c, 0xd5,
-
  0xca, 0x23, 0xdd, 0xab, 0x6d, 0x79, 0xc1, 0xe5, 0x8d, 0x14, 0x65, 0xc7,
-
  0x94, 0xea, 0x4b, 0x09, 0xb2, 0xc4, 0x55, 0x74, 0xab, 0x05, 0x9a, 0x8d,
-
  0x37, 0x7b, 0x51, 0x6f, 0x2b, 0x6c, 0x0e, 0x3d, 0xd4, 0x23, 0xa1, 0xb3,
-
  0xf8, 0x7c, 0x45, 0x8d, 0x0e, 0xa3, 0x1e, 0x13, 0xde, 0xce, 0xce, 0xe3,
-
  0x35, 0x25, 0xac, 0xe7, 0x7d, 0xb3, 0xeb, 0x72, 0x28, 0xdc, 0x4d, 0x76,
-
  0x8e, 0xc5, 0x52, 0xf7, 0x0c, 0xc4, 0x2a, 0xf8, 0xf7, 0x40, 0x03, 0x8f,
-
  0xbb, 0x04, 0x2c, 0x52, 0xd4, 0xf1, 0x71, 0x93, 0x7f, 0x6d, 0xe2, 0x9e,
-
  0xc5, 0x46, 0x44, 0x25, 0xdb, 0xd8, 0xda, 0x63, 0x23, 0xcc, 0x43, 0xa9,
-
  0x2e, 0x83, 0xe8, 0xc4, 0x94, 0x77, 0x8c, 0x73, 0x66, 0xe2, 0x75, 0x39,
-
  0x96, 0xf1, 0xd2, 0xef, 0x92, 0xa3, 0x9f, 0xcc, 0x3a, 0xc9, 0x11, 0x7d,
-
  0xd7, 0x0b, 0xca, 0xac, 0x51, 0x09, 0xd0, 0x6a, 0xe8, 0x38, 0x44, 0xd7,
-
  0x84, 0x0a, 0x4b, 0x00, 0x44, 0xcb, 0xf5, 0x64, 0x3c, 0xcd, 0xad, 0x1d,
-
  0x6f, 0xed, 0xe8, 0x30, 0xe1, 0xf9, 0x56, 0x92, 0x52, 0x33, 0x43, 0x64,
-
  0xfe, 0x05, 0x17, 0xcd, 0xa4, 0xbe, 0xb9, 0x12, 0x22, 0xd0, 0xf3, 0xac,
-
  0xc8, 0xfb, 0x5e, 0x19, 0x73, 0x4a, 0x62, 0x61, 0x17, 0x38, 0x25, 0xba,
-
  0xcf, 0x17, 0x05, 0xc8, 0x36, 0xa3, 0x59, 0x6a, 0xc2, 0x8d, 0xf8, 0x4d,
-
  0x65, 0x15, 0xb6, 0x73, 0x3c, 0xd5, 0x9e, 0x4c, 0x61, 0x61, 0x82, 0x68,
-
  0xa8, 0x66, 0x33, 0x80, 0xfc, 0xfb, 0x0c, 0x5d, 0xec, 0x4d, 0x09, 0x24,
-
  0x0a, 0xb9, 0x1a, 0x44, 0xaa, 0xc9, 0x38, 0xcc, 0xbe, 0x72, 0xd7, 0xea,
-
  0x22, 0x9b, 0xa4, 0xae, 0x1b, 0x4c, 0x74, 0x63, 0x38, 0xee, 0x9e, 0xe9,
-
  0x8c, 0x0e, 0x09, 0xa7, 0xd6, 0xc3, 0x0a, 0xa3, 0x54, 0x41, 0x99, 0x81,
-
  0x08, 0x03, 0x60, 0x81, 0x4e, 0xd0, 0x20, 0x92, 0xe6, 0xec, 0xc9, 0x28,
-
  0x48, 0x28, 0x43, 0xe7, 0xc6, 0xb8, 0xf4, 0xf2, 0xfa, 0x49, 0x17, 0x06,
-
  0x22, 0xe6, 0x16, 0x65, 0x71, 0xae, 0x31, 0xb9, 0x9f, 0x85, 0x13, 0x04,
-
  0x2f, 0x80, 0x9b, 0x95, 0x44, 0x49, 0x5a, 0x9c, 0xca, 0xae, 0x7c, 0xe5,
-
  0x23, 0x38, 0xf3, 0x4c, 0x6d, 0x75, 0x50, 0x4d, 0x4b, 0x65, 0x54, 0x67,
-
  0x12, 0x97, 0x2e, 0x33, 0x5e, 0x7f, 0xce, 0xb6, 0x4a, 0xe0, 0x1a, 0xa5,
-
  0x29, 0x31, 0x30, 0x82, 0xe7, 0x3e, 0x4c, 0x13, 0x86, 0x70, 0x45, 0xf1,
-
  0x1d, 0xeb, 0xa2, 0x64, 0xe4, 0x41, 0xe4, 0xcb, 0xf9, 0x42, 0x6b, 0xe4,
-
  0x94, 0x29, 0xa2, 0x12, 0x20, 0x36, 0x34, 0xcd, 0x22, 0x51, 0xf4, 0x4e,
-
  0x2f, 0x46, 0x93, 0x4d, 0xbc, 0xa5, 0x89, 0xc0, 0x40, 0x02, 0xcb, 0x91,
-
  0xc3, 0xb0, 0x64, 0x85, 0xa0, 0xb2, 0xd8, 0x23, 0xdf, 0xef, 0x9e, 0x64,
-
  0x35, 0x08, 0x62, 0xe4, 0xb1, 0xd0, 0x11, 0xfd, 0x35, 0x2d, 0x47, 0x69,
-
  0x59, 0xc0, 0xbc, 0x7f, 0x7c, 0xa8, 0xea, 0xbe, 0x82, 0x27, 0xb2, 0xb6,
-
  0x20, 0xa7, 0x14, 0x8f, 0x11, 0x0f, 0xdd, 0x0b, 0x61, 0x63, 0x98, 0x32,
-
  0x5c, 0x5b, 0x03, 0xbb, 0xe8, 0x68, 0x0c, 0x6d, 0x0a, 0x45, 0x5f, 0x14,
-
  0x5e, 0x2b, 0xc8, 0x74, 0x02, 0x60, 0x05, 0x0d, 0xe8, 0x75, 0x0a, 0xde,
-
  0x22, 0x11, 0x94, 0xa0, 0xca, 0xa3, 0x62, 0x54, 0x27, 0x34, 0x3f, 0x33,
-
  0xec, 0xb3, 0x8c, 0xbd, 0x37, 0x2f, 0x14, 0x86, 0xca, 0xc7, 0x3d, 0x91,
-
  0x6c, 0x35, 0x6c, 0x38, 0xcb, 0x33, 0x24, 0x9b, 0x76, 0x52, 0x8b, 0xad,
-
  0x56, 0x81, 0x56, 0x6e, 0x32, 0xf7, 0x87, 0x8d, 0x93, 0xb4, 0x66, 0xaf,
-
  0xcf, 0x5e, 0xbe, 0xea, 0xb7, 0x4e, 0x9d, 0x08, 0xba, 0x8e, 0x6d, 0x5c,
-
  0x39, 0x8e, 0x90, 0x94, 0xef, 0xcb, 0x2c, 0x23, 0x59, 0x0e, 0x13, 0xf6,
-
  0x49, 0xf1, 0x2f, 0xb4, 0x72, 0x7d, 0x49, 0x8b, 0x2b, 0x05, 0xa3, 0x55,
-
  0x1d, 0x00, 0xbc, 0xac, 0x7e, 0x12, 0x1f, 0xd2, 0x60, 0x45, 0x5b, 0x4f,
-
  0x4e, 0x13, 0xb8, 0x65, 0x80, 0xd7, 0x48, 0x2d, 0x1d, 0xba, 0x06, 0x56,
-
  0x14, 0x20, 0xb7, 0xbd, 0xf2, 0x54, 0x90, 0xbb, 0xa4, 0x19, 0x1d, 0x9c,
-
  0x67, 0xc5, 0x55, 0x1e, 0xbf, 0x44, 0x74, 0xfa, 0xe8, 0x65, 0x71, 0x8e,
-
  0x07, 0xe8, 0x35, 0x95, 0x86, 0xf5, 0x36, 0xed, 0xed, 0xe9, 0xeb, 0x68,
-
  0x13, 0x65, 0x20, 0xac, 0x72, 0x95, 0x8f, 0xb3, 0x05, 0xac, 0x31, 0x3e,
-
  0xba, 0x25, 0x06, 0xd2, 0x8a, 0x45, 0x63, 0x19, 0x4d, 0x3f, 0x3a, 0xfe,
-
  0xf9, 0xf0, 0xd5, 0xe9, 0xcb, 0xe3, 0x5f, 0x38, 0xbd, 0xcb, 0x9b, 0x0e,
-
  0x7e, 0xfc, 0xad, 0x73, 0x83, 0x51, 0x14, 0x1c, 0xc6, 0xca, 0xc2, 0x48,
-
  0x82, 0x85, 0xa7, 0x6d, 0x19, 0x15, 0x5b, 0x8b, 0xeb, 0xf4, 0x45, 0x9c,
-
  0xe6, 0xac, 0x00, 0x12, 0xc3, 0x1a, 0x65, 0x39, 0x1a, 0x77, 0xc9, 0xd8,
-
  0x8e, 0x55, 0x7b, 0x61, 0x60, 0x44, 0xfe, 0x5e, 0xbd, 0x2e, 0x3d, 0x0e,
-
  0xfd, 0xe8, 0xb5, 0xa6, 0x34, 0xf7, 0x69, 0xd3, 0xf1, 0x08, 0x3e, 0xcb,
-
  0xce, 0x29, 0x6a, 0xaf, 0x95, 0xcb, 0x29, 0x06, 0x02, 0xa4, 0x83, 0x36,
-
  0x3d, 0x63, 0xad, 0x33, 0x0d, 0x14, 0xad, 0xd2, 0x19, 0x7b, 0x6b, 0x3b,
-
  0xaf, 0x47, 0xe6, 0x90, 0xb4, 0x8b, 0x84, 0x9a, 0xd5, 0x1e, 0x9d, 0xa2,
-
  0x68, 0xa1, 0x4e, 0xcb, 0x1b, 0x28, 0x56, 0x03, 0xa6, 0x10, 0xbe, 0x14,
-
  0x44, 0xb2, 0x33, 0x5c, 0xff, 0x20, 0xea, 0xc5, 0xcb, 0xe8, 0xa0, 0x17,
-
  0xf4, 0xd0, 0xdb, 0xbb, 0x7d, 0x7d, 0x27, 0xfd, 0x7d, 0x64, 0x45, 0xd1,
-
  0xce, 0x95, 0x07, 0x55, 0x0a, 0x6c, 0x7e, 0x4d, 0x17, 0x7d, 0x5b, 0x1c,
-
  0x08, 0x2b, 0x75, 0xae, 0xd7, 0xbd, 0xd5, 0xd4, 0x2b, 0xba, 0x61, 0x69,
-
  0x1c, 0xea, 0x96, 0x9f, 0x2c, 0x4b, 0x35, 0x34, 0x1a, 0x97, 0x20, 0x87,
-
  0x63, 0x00, 0x0b, 0x12, 0xee, 0x4f, 0x48, 0x99, 0xe7, 0xbe, 0xd9, 0x93,
-
  0x68, 0x0b, 0xee, 0x1e, 0xe2, 0xac, 0xe8, 0xf4, 0xd9, 0x00, 0x42, 0xe2,
-
  0x48, 0x13, 0xbc, 0x7e, 0x7a, 0x14, 0xa8, 0x2a, 0xb6, 0x97, 0x62, 0x02,
-
  0x0a, 0xdd, 0x21, 0x07, 0x22, 0x91, 0xb5, 0xd5, 0x6f, 0x8e, 0xb6, 0x71,
-
  0xe3, 0x9b, 0x0d, 0x89, 0x00, 0xee, 0x89, 0xa4, 0x86, 0xb7, 0x48, 0x8f,
-
  0x75, 0x3c, 0xc4, 0xcf, 0xc0, 0xd1, 0x03, 0x13, 0xd9, 0x78, 0xba, 0x61,
-
  0x42, 0x85, 0x7b, 0x41, 0x49, 0x9e, 0xdf, 0x93, 0x08, 0x4f, 0x2d, 0xdd,
-
  0x20, 0x15, 0xf8, 0x04, 0xc9, 0x05, 0xee, 0x73, 0xb8, 0x59, 0xd9, 0x75,
-
  0x07, 0xe7, 0x76, 0x46, 0x95, 0x9b, 0x25, 0x86, 0xb4, 0x2d, 0x0c, 0x35,
-
  0x46, 0x2e, 0x63, 0xfd, 0x93, 0x8e, 0x35, 0x99, 0x4c, 0x32, 0x96, 0xc9,
-
  0x28, 0x6a, 0xc6, 0xd2, 0x15, 0xf4, 0x49, 0x09, 0xf7, 0x1d, 0x87, 0x98,
-
  0x33, 0xe8, 0xd1, 0xae, 0x46, 0x0a, 0x53, 0x10, 0xcb, 0x14, 0x45, 0xef,
-
  0x8c, 0xe4, 0x6f, 0xbd, 0x7a, 0x7c, 0x86, 0xe4, 0xa3, 0xaa, 0x9a, 0x38,
-
  0xc1, 0x39, 0x02, 0x19, 0x61, 0x1a, 0x3c, 0x29, 0xa4, 0x2b, 0x14, 0x19,
-
  0x1c, 0x8f, 0xba, 0xa3, 0xad, 0x6d, 0x90, 0x45, 0x02, 0x13, 0x2d, 0x43,
-
  0x8a, 0x0e, 0x3e, 0x29, 0x62, 0x8b, 0x98, 0x89, 0xfa, 0x1d, 0x60, 0xed,
-
  0xa6, 0x3e, 0x8a, 0x89, 0x48, 0x6b, 0xc6, 0x99, 0x28, 0xc0, 0xd0, 0x7f,
-
  0x93, 0xc8, 0x33, 0x3a, 0x3c, 0x4e, 0xcc, 0x4a, 0x38, 0xce, 0xf7, 0xee,
-
  0xba, 0xbf, 0x17, 0xe4, 0x75, 0x3b, 0xe3, 0x8f, 0x0e, 0x67, 0x2d, 0x66,
-
  0xe1, 0x62, 0xaa, 0xf6, 0x1b, 0xc0, 0xdb, 0xfd, 0x66, 0xf8, 0x59, 0x33,
-
  0x26, 0x67, 0xe5, 0x3e, 0xf8, 0x25, 0xe3, 0xbd, 0x60, 0xc6, 0x8e, 0x08,
-
  0x9f, 0x1f, 0x85, 0x29, 0x05, 0x50, 0xa1, 0x9e, 0x49, 0xf8, 0xa1, 0x1b,
-
  0x6f, 0x26, 0x80, 0x9f, 0xec, 0x19, 0x16, 0x4b, 0x80, 0xc6, 0xba, 0x6b,
-
  0x4e, 0x00, 0xd7, 0xfe, 0xaa, 0x06, 0x01, 0xdd, 0x44, 0xb5, 0x0d, 0x3a,
-
  0xb3, 0x36, 0x4d, 0x84, 0x02, 0x01, 0x30, 0x5e, 0x4e, 0x9b, 0x90, 0x54,
-
  0xa7, 0xbe, 0x69, 0xdb, 0xbf, 0x9b, 0x59, 0xa4, 0xde, 0xc7, 0x0c, 0x56,
-
  0x38, 0xfa, 0xd7, 0x92, 0x8b, 0x84, 0x6e, 0x6e, 0x68, 0xfc, 0xbd, 0x66,
-
  0x76, 0x93, 0x6b, 0xeb, 0x43, 0x3a, 0x5e, 0xd6, 0x41, 0xa8, 0x47, 0x72,
-
  0x6d, 0x71, 0xe5, 0x66, 0x1a, 0xd2, 0xa6, 0xeb, 0x6f, 0xea, 0x9d, 0x6a,
-
  0xb9, 0xda, 0x83, 0xde, 0x96, 0x86, 0x0b, 0x63, 0x0c, 0x9f, 0xad, 0x63,
-
  0xeb, 0xc9, 0x8c, 0x98, 0x7d, 0x21, 0x43, 0x2e, 0x53, 0x76, 0x99, 0xdb,
-
  0xc0, 0xff, 0x60, 0xf7, 0x70, 0xa6, 0xcb, 0x60, 0xef, 0xdf, 0xb3, 0x4f,
-
  0xd8, 0xe9, 0x5c, 0x8e, 0xd3, 0x58, 0xdd, 0xc5, 0x95, 0xc7, 0x09, 0xbd,
-
  0x9e, 0x0b, 0x42, 0x01, 0x8d, 0x0e, 0x2f, 0x81, 0x19, 0x10, 0xf1, 0xeb,
-
  0xab, 0xba, 0xf8, 0x9e, 0x07, 0x2e, 0x99, 0xd5, 0x71, 0x75, 0x39, 0x0e,
-
  0xe3, 0x05, 0x09, 0xe8, 0xa7, 0xa9, 0x71, 0x74, 0x08, 0x0f, 0x0f, 0x2f,
-
  0xc7, 0x07, 0x6a, 0x15, 0x71, 0x6e, 0x6e, 0x6f, 0xb2, 0x87, 0xd5, 0x75,
-
  0x3e, 0xbe, 0x78, 0xf6, 0x7a, 0x18, 0x6e, 0x9a, 0x28, 0x9a, 0x86, 0x4f,
-
  0xf6, 0xc3, 0x84, 0x9e, 0x06, 0x29, 0xa3, 0x58, 0x56, 0x2c, 0x9e, 0xa0,
-
  0xf0, 0x55, 0xcc, 0x08, 0x05, 0x43, 0xda, 0xe2, 0x6f, 0xc3, 0xcd, 0x35,
-
  0x5f, 0x31, 0xa6, 0x78, 0xf4, 0xe2, 0x31, 0xeb, 0x13, 0xd1, 0x92, 0x22,
-
  0x2c, 0xe2, 0x04, 0x57, 0x84, 0xe7, 0x14, 0x6e, 0xae, 0xbe, 0xc0, 0xd0,
-
  0x90, 0x74, 0xa2, 0x2d, 0x96, 0x4e, 0xfa, 0x91, 0x57, 0x67, 0xb5, 0xa8,
-
  0x67, 0x59, 0x63, 0xa9, 0x2c, 0x38, 0xbe, 0x7c, 0xa9, 0x11, 0xfe, 0x44,
-
  0xeb, 0xd8, 0x9a, 0x84, 0xef, 0x78, 0x8d, 0x1d, 0x5d, 0x24, 0xe5, 0x51,
-
  0x91, 0x5f, 0x86, 0x47, 0xd5, 0x4a, 0x31, 0x61, 0x5b, 0x9c, 0xd3, 0xef,
-
  0x18, 0xde, 0x4e, 0xc6, 0x35, 0x95, 0x27, 0xaf, 0x91, 0xf7, 0x6b, 0x2e,
-
  0x61, 0xb8, 0xb9, 0x4d, 0x2a, 0xd3, 0x77, 0xfc, 0xdd, 0xd1, 0xb3, 0x17,
-
  0x47, 0x5b, 0xed, 0x91, 0x3c, 0x63, 0x54, 0x6e, 0xb6, 0xfc, 0xf2, 0x6d,
-
  0xcd, 0x1b, 0x65, 0xc8, 0xce, 0x19, 0x04, 0x3d, 0x2c, 0xea, 0x34, 0x0b,
-
  0xbf, 0x1d, 0x5d, 0xd2, 0x25, 0x98, 0x96, 0x65, 0x51, 0x12, 0x7f, 0x7a,
-
  0xaf, 0x91, 0xb1, 0xf3, 0x74, 0x8e, 0x61, 0x56, 0x46, 0xc0, 0xe1, 0x2a,
-
  0xe1, 0x24, 0xbc, 0x53, 0xe7, 0x71, 0xb8, 0xb9, 0x09, 0xea, 0x08, 0x28,
-
  0x2e, 0x31, 0xa8, 0x87, 0xe7, 0x0d, 0x38, 0xaf, 0x12, 0xac, 0x41, 0x46,
-
  0xac, 0x88, 0x86, 0x1b, 0xa3, 0x0e, 0x38, 0x3c, 0x1c, 0xbe, 0xf4, 0x0b,
-
  0xce, 0x0a, 0x6f, 0x32, 0xbe, 0xea, 0xca, 0x0f, 0x9c, 0x51, 0xbd, 0x58,
-
  0xcb, 0x71, 0x1d, 0xbd, 0x39, 0x7c, 0x05, 0x64, 0xc6, 0x31, 0x5d, 0x7e,
-
  0x0a, 0x10, 0x2d, 0x0d, 0x7c, 0x4c, 0xa3, 0xf0, 0xb6, 0xfa, 0x87, 0xe1,
-
  0x30, 0x3e, 0x3c, 0x7d, 0x11, 0xee, 0x42, 0xbe, 0xa4, 0xf4, 0x07, 0x4d,
-
  0x86, 0xf3, 0x5a, 0x78, 0x3e, 0x3c, 0x1b, 0xea, 0x0f, 0x1d, 0x13, 0x9d,
-
  0x48, 0xaa, 0x4b, 0xe0, 0x3f, 0x0e, 0x34, 0xb7, 0xc7, 0x3f, 0xb6, 0xf7,
-
  0xcc, 0x0b, 0x06, 0x73, 0x51, 0xd7, 0x67, 0x10, 0x78, 0x6d, 0x5f, 0x5e,
-
  0xdb, 0x5f, 0xf5, 0x5a, 0xe0, 0xbd, 0x21, 0x1b, 0xf6, 0x6e, 0xe2, 0x00,
-
  0x59, 0x20, 0x69, 0x8a, 0x5e, 0x67, 0x58, 0x73, 0x5f, 0x48, 0x7a, 0xf6,
-
  0xba, 0xd9, 0x80, 0x89, 0x57, 0xc2, 0x6f, 0x62, 0x45, 0x6c, 0x14, 0x41,
-
  0xd0, 0x51, 0x32, 0x03, 0xf2, 0xd6, 0xe9, 0xe5, 0x23, 0x09, 0xd8, 0x42,
-
  0x9e, 0x81, 0x1b, 0x49, 0x1f, 0x19, 0x55, 0xc6, 0x7b, 0x43, 0x4d, 0x00,
-
  0xe1, 0x49, 0x19, 0x03, 0xc1, 0x8f, 0x0f, 0x3d, 0x12, 0x5b, 0xb5, 0x97,
-
  0x2f, 0x93, 0xf2, 0x3c, 0x0d, 0x84, 0x14, 0x7a, 0x6b, 0x65, 0xa6, 0x6a,
-
  0x43, 0x3e, 0xe1, 0xf6, 0x9c, 0xe1, 0xeb, 0x1c, 0x3a, 0xd5, 0x97, 0x08,
-
  0x2a, 0xfa, 0xa8, 0xec, 0x62, 0x6f, 0x30, 0xd7, 0xbd, 0x1f, 0xbe, 0xf3,
-
  0x86, 0x01, 0xd4, 0xfa, 0x3b, 0xf2, 0x6e, 0xc3, 0xc0, 0x26, 0xa9, 0xcb,
-
  0xbb, 0x36, 0x2f, 0xb3, 0x24, 0x3a, 0xff, 0x3d, 0x5b, 0x10, 0x50, 0x23,
-
  0x66, 0xa7, 0x6e, 0xd1, 0xdd, 0x6d, 0x12, 0x98, 0xc2, 0xdd, 0xf1, 0x80,
-
  0x0c, 0xe3, 0x5b, 0xbd, 0x12, 0xaf, 0x50, 0xd4, 0x1b, 0x0e, 0x5f, 0xde,
-
  0x7a, 0x21, 0x8c, 0x6c, 0xd8, 0xcc, 0x12, 0x6d, 0x27, 0x9b, 0xa2, 0x22,
-
  0x2d, 0x3f, 0xd6, 0xd9, 0x18, 0x7c, 0xe1, 0xdd, 0x4f, 0xdf, 0x85, 0x47,
-
  0x43, 0xad, 0x4d, 0x52, 0x44, 0xc2, 0x95, 0x10, 0x4e, 0xf4, 0x6e, 0x81,
-
  0xc6, 0x3f, 0x81, 0x1b, 0x72, 0xb6, 0xe0, 0x1b, 0xb2, 0xbb, 0xed, 0x53,
-
  0xe0, 0x43, 0xf2, 0x03, 0x9f, 0xbb, 0x50, 0x3e, 0x7e, 0xba, 0x1c, 0xcd,
-
  0x60, 0xed, 0x87, 0xcb, 0xe9, 0x34, 0xfb, 0x10, 0xbd, 0xcc, 0xa4, 0xf6,
-
  0xb9, 0x68, 0x59, 0x5a, 0x05, 0x2b, 0xab, 0x56, 0xdc, 0x12, 0x9c, 0x08,
-
  0x47, 0x27, 0xb4, 0x81, 0x5d, 0x64, 0x91, 0x78, 0x59, 0xb2, 0xeb, 0x2d,
-
  0xb8, 0xaf, 0x6a, 0x39, 0x8d, 0xbb, 0x36, 0xef, 0x43, 0x5a, 0xf9, 0x2a,
-
  0xfc, 0xf0, 0xf4, 0xf5, 0xf1, 0x0f, 0x27, 0xfa, 0x63, 0x9d, 0x15, 0x1d,
-
  0xf2, 0xac, 0xf1, 0x87, 0x9b, 0xeb, 0x8e, 0xf8, 0xdc, 0x78, 0xf9, 0x1b,
-
  0x61, 0x8b, 0x2d, 0xd8, 0xda, 0x4c, 0x9f, 0xeb, 0x42, 0xf8, 0x59, 0x09,
-
  0x2e, 0xbb, 0xe9, 0x73, 0xb9, 0x59, 0x2e, 0x2c, 0x4b, 0x6b, 0x06, 0x12,
-
  0x78, 0x08, 0xa4, 0x7e, 0x08, 0xbc, 0x55, 0x7e, 0xac, 0x1c, 0xab, 0x20,
-
  0x34, 0x75, 0x48, 0x47, 0x04, 0x7b, 0x35, 0xe4, 0x12, 0x58, 0x6f, 0x38,
-
  0x2a, 0xf8, 0x54, 0x0c, 0x2a, 0x5b, 0xab, 0x96, 0xa4, 0x63, 0xa1, 0x61,
-
  0xe7, 0x83, 0x25, 0x8a, 0xf1, 0xa2, 0x7c, 0x45, 0x17, 0x64, 0xf8, 0x45,
-
  0xbe, 0xaa, 0xe5, 0x0a, 0x35, 0xd7, 0xea, 0xca, 0x79, 0xbd, 0xcd, 0x33,
-
  0x74, 0xfc, 0x75, 0xa0, 0x44, 0xf2, 0x97, 0x86, 0x15, 0x17, 0xc6, 0xc9,
-
  0x1f, 0x6a, 0xe7, 0xc3, 0x90, 0x02, 0xd9, 0xab, 0xce, 0xb6, 0x3e, 0x48,
-
  0xc8, 0x7c, 0xd5, 0xbc, 0xa4, 0x3a, 0xc4, 0xc6, 0xdf, 0xab, 0x7a, 0x72,
-
  0x13, 0x07, 0xc2, 0x67, 0xb6, 0xb8, 0xae, 0x8e, 0x93, 0xc4, 0xca, 0x6c,
-
  0x26, 0x3c, 0x8c, 0x9b, 0x78, 0x8f, 0xa7, 0xf8, 0x59, 0x8d, 0x8f, 0x34,
-
  0xa5, 0x2f, 0x3c, 0xb5, 0xee, 0x82, 0x7d, 0x58, 0xb3, 0x05, 0xab, 0x5b,
-
  0xaf, 0xf0, 0xcf, 0x79, 0x92, 0x2f, 0x5d, 0x6f, 0x50, 0x7c, 0x85, 0x9f,
-
  0x52, 0xf5, 0x2c, 0x0c, 0xbc, 0x88, 0x9e, 0xb2, 0x5e, 0xf5, 0x4d, 0xc0,
-
  0x1a, 0xc4, 0x1d, 0x2a, 0xd4, 0xbd, 0xab, 0x81, 0x91, 0xee, 0x4f, 0xfe,
-
  0xf4, 0x64, 0x8a, 0xa2, 0x5d, 0x62, 0x7c, 0x91, 0x13, 0xbe, 0x03, 0xfc,
-
  0xc4, 0xfc, 0x92, 0xdd, 0x2d, 0xdc, 0x86, 0x58, 0x72, 0xc5, 0x3b, 0x8c,
-
  0xbc, 0x83, 0x6a, 0x5c, 0x16, 0x39, 0x99, 0xb4, 0xa5, 0x0c, 0x17, 0x9b,
-
  0xf0, 0xa3, 0x39, 0x9c, 0xf5, 0x49, 0xc8, 0x1a, 0x44, 0xb1, 0xa0, 0x51,
-
  0xbe, 0x9c, 0x8f, 0xd0, 0x09, 0x3b, 0x35, 0x60, 0xfa, 0x55, 0xa3, 0x27,
-
  0xcf, 0x1a, 0x9d, 0x54, 0x01, 0xf3, 0x4d, 0x4d, 0x06, 0xbe, 0x1e, 0x8f,
-
  0xa8, 0x47, 0x08, 0xd0, 0xea, 0x12, 0xa5, 0xac, 0x22, 0xd1, 0x69, 0x92,
-
  0x89, 0x38, 0xac, 0xb8, 0x6d, 0xb1, 0x50, 0x26, 0x81, 0x68, 0x61, 0x13,
-
  0xb1, 0xf0, 0xad, 0x66, 0x28, 0xf5, 0x58, 0x59, 0x2d, 0x9a, 0x56, 0x50,
-
  0xd3, 0xa6, 0x34, 0x19, 0x80, 0xa2, 0xe7, 0x98, 0x6f, 0x42, 0xb3, 0xc0,
-
  0x5d, 0x83, 0x26, 0xe3, 0x5e, 0x50, 0x8d, 0x33, 0x0b, 0x60, 0xca, 0x40,
-
  0x35, 0x6c, 0x45, 0xda, 0xc5, 0x95, 0xf1, 0xe3, 0x54, 0xcb, 0x51, 0x55,
-
  0x67, 0xf5, 0xd2, 0x3f, 0xfe, 0xa6, 0x92, 0x29, 0xdb, 0x37, 0x0b, 0xf1,
-
  0xa7, 0x58, 0x7c, 0x7d, 0x32, 0x06, 0x61, 0x1a, 0x57, 0xdd, 0xc7, 0x15,
-
  0xe5, 0xdc, 0xb0, 0x11, 0xa1, 0x63, 0xcf, 0x8a, 0x2b, 0xaf, 0x22, 0x0b,
-
  0xea, 0xd5, 0x66, 0x74, 0x4d, 0x60, 0x3d, 0x78, 0xfb, 0x8f, 0xff, 0xd2,
-
  0x2f, 0xdf, 0xe1, 0x4a, 0xfd, 0x5b, 0x57, 0x4a, 0xc6, 0xed, 0x2d, 0xb0,
-
  0x18, 0xe4, 0xa2, 0x3f, 0xd2, 0xaa, 0xfc, 0x86, 0xf9, 0x1a, 0xbc, 0x34,
-
  0x58, 0x83, 0x8b, 0x1a, 0xfc, 0xe3, 0xc0, 0x88, 0x4f, 0xd2, 0x48, 0x82,
-
  0xd0, 0xcc, 0xa4, 0xe2, 0x8e, 0xae, 0x3d, 0x0b, 0x10, 0x92, 0xe1, 0x2f,
-
  0x79, 0x1f, 0xe9, 0x38, 0x29, 0x61, 0x24, 0xe7, 0xe4, 0x90, 0xc2, 0xba,
-
  0x25, 0xb4, 0x8b, 0xbf, 0x94, 0x52, 0x2c, 0x09, 0x34, 0x78, 0xf1, 0x87,
-
  0xf3, 0xe7, 0x61, 0x75, 0x5a, 0x43, 0xf6, 0xc5, 0x8f, 0xdd, 0xa8, 0x1d,
-
  0x07, 0xed, 0x24, 0xe5, 0xc4, 0x58, 0xef, 0x46, 0x5a, 0xb9, 0x44, 0x63,
-
  0x91, 0xda, 0x7b, 0x4f, 0xf5, 0x45, 0xa4, 0xb4, 0x91, 0xbe, 0x4c, 0xba,
-
  0x8a, 0x0d, 0x96, 0xf9, 0xe3, 0xbf, 0x38, 0xc1, 0xed, 0xdf, 0xbe, 0xdf,
-
  0x52, 0xd6, 0x8f, 0x98, 0x8c, 0x31, 0x20, 0x0a, 0xd5, 0xd2, 0xf6, 0x52,
-
  0x5c, 0x1b, 0x99, 0x41, 0xf3, 0x3a, 0x32, 0xb0, 0xd9, 0xda, 0x74, 0xab,
-
  0xb9, 0x3f, 0x72, 0x0b, 0xff, 0xe2, 0x3d, 0x62, 0x4f, 0xa8, 0x9b, 0x84,
-
  0x32, 0xa6, 0x02, 0xb6, 0x58, 0x80, 0x51, 0x9d, 0x7c, 0xa2, 0x02, 0x73,
-
  0xb1, 0xb1, 0x34, 0x18, 0x45, 0x1e, 0x6d, 0xba, 0x2e, 0x1f, 0x93, 0x70,
-
  0x43, 0xc6, 0xfb, 0x2d, 0x3e, 0xc9, 0x26, 0xdc, 0x21, 0x47, 0x50, 0x18,
-
  0xa6, 0x1f, 0x3f, 0x83, 0x36, 0xa1, 0x80, 0x73, 0xd8, 0x7c, 0x2e, 0x80,
-
  0x76, 0x29, 0x8a, 0xb5, 0x44, 0x6f, 0xf5, 0x45, 0xf3, 0x91, 0xe4, 0x0a,
-
  0x86, 0x41, 0x97, 0xbe, 0xae, 0x2e, 0x90, 0x19, 0xb6, 0x57, 0x9e, 0xb6,
-
  0x19, 0xf8, 0x01, 0x56, 0x96, 0x77, 0x22, 0x2c, 0xa5, 0x64, 0xe5, 0x93,
-
  0x06, 0xb0, 0x8a, 0x8a, 0x5e, 0x27, 0x67, 0xc7, 0x07, 0x88, 0x99, 0xa3,
-
  0x9e, 0x17, 0x1c, 0xc0, 0x1f, 0xe3, 0xea, 0x7a, 0x3e, 0x2a, 0x66, 0xc2,
-
  0xf3, 0x90, 0xee, 0x81, 0x76, 0xe5, 0x33, 0x2d, 0x5b, 0x95, 0x7e, 0x58,
-
  0xf8, 0xe6, 0xa5, 0x50, 0xa5, 0x10, 0x60, 0x6e, 0xd0, 0xfe, 0x88, 0x80,
-
  0xe0, 0x59, 0x84, 0x45, 0x6b, 0x50, 0x31, 0x66, 0xf4, 0x55, 0x84, 0x6f,
-
  0x81, 0xc5, 0xfe, 0x23, 0x23, 0xca, 0xfa, 0x1e, 0x09, 0xd0, 0x3b, 0x96,
-
  0xe4, 0x05, 0xe2, 0x30, 0x4e, 0x93, 0xbd, 0xe0, 0x14, 0x44, 0x2f, 0x6c,
-
  0x2d, 0x04, 0x38, 0xd3, 0x09, 0xc2, 0xd5, 0x49, 0xb6, 0xcf, 0xea, 0xb2,
-
  0x07, 0x82, 0xe5, 0xab, 0xce, 0x56, 0x89, 0x1c, 0x30, 0xde, 0xc6, 0x3f,
-
  0x12, 0x85, 0xa3, 0x6d, 0x96, 0xc6, 0x91, 0x7a, 0x37, 0x04, 0x76, 0x35,
-
  0x11, 0x80, 0x06, 0xd4, 0x95, 0x08, 0x05, 0x9a, 0x96, 0xa5, 0x92, 0x6e,
-
  0xd4, 0xed, 0x7f, 0x03, 0xef, 0x4b, 0x8c, 0x9d, 0x29, 0x54, 0x0c, 0x66,
-
  0x4c, 0x35, 0xb0, 0xbd, 0x13, 0xc2, 0x70, 0xd9, 0x4e, 0xdd, 0xf7, 0xf1,
-
  0x85, 0xb1, 0xce, 0x6a, 0xb4, 0x23, 0x9a, 0x53, 0x3a, 0xe4, 0xd1, 0x56,
-
  0x62, 0x07, 0x59, 0xee, 0x0d, 0x0b, 0x15, 0xa0, 0xcd, 0x7e, 0x24, 0x38,
-
  0x9b, 0xf0, 0x8b, 0x56, 0xa3, 0xef, 0xaf, 0x6e, 0xee, 0xf5, 0x10, 0x1f,
-
  0xfe, 0x61, 0xf8, 0xd7, 0x8c, 0x85, 0x6d, 0x11, 0xeb, 0x08, 0x19, 0x83,
-
  0x84, 0x16, 0xa3, 0x59, 0x44, 0x9b, 0x44, 0xa0, 0xab, 0x9b, 0xe3, 0xf8,
-
  0xe0, 0x27, 0x83, 0x1d, 0xcf, 0xb0, 0x22, 0x47, 0xeb, 0x1d, 0xe3, 0x79,
-
  0xd2, 0x82, 0x1e, 0xf1, 0x47, 0xf1, 0x19, 0x7e, 0x24, 0xf1, 0xed, 0xca,
-
  0x20, 0x90, 0x80, 0x14, 0xee, 0xa9, 0x1f, 0xf9, 0x08, 0xc8, 0x51, 0x28,
-
  0x7d, 0x0f, 0x6d, 0x10, 0x70, 0x63, 0x7b, 0xbb, 0x47, 0xdc, 0x6c, 0x5e,
-
  0x9d, 0x3b, 0x9b, 0xc9, 0x0c, 0x6e, 0x8e, 0x29, 0x28, 0xe7, 0xa9, 0xce,
-
  0x4d, 0xea, 0xb9, 0x3f, 0x0c, 0x0c, 0x3f, 0xfd, 0x00, 0x5c, 0x12, 0xa5,
-
  0x43, 0xdb, 0x04, 0x88, 0x05, 0x58, 0x81, 0x1b, 0x4e, 0x9a, 0xf9, 0x52,
-
  0x26, 0x61, 0x23, 0x14, 0x4d, 0xbb, 0xab, 0x87, 0xdf, 0xd1, 0xa9, 0xde,
-
  0xeb, 0xef, 0xd8, 0xd2, 0x0f, 0xec, 0x6e, 0x75, 0x33, 0x14, 0x17, 0x03,
-
  0x5a, 0xe1, 0x3c, 0x91, 0x44, 0x3d, 0xce, 0xcc, 0x33, 0x37, 0xaa, 0x56,
-
  0x34, 0x25, 0xf0, 0x08, 0x38, 0x87, 0x83, 0x9b, 0x9a, 0xa3, 0x44, 0x08,
-
  0x41, 0x8e, 0x95, 0xbc, 0x26, 0x74, 0xcb, 0x65, 0x53, 0x63, 0xc0, 0xa8,
-
  0x11, 0xbb, 0x0b, 0xf5, 0x3f, 0x6c, 0xf9, 0x86, 0x3d, 0x2a, 0x34, 0xe6,
-
  0x42, 0x04, 0x17, 0x0e, 0x86, 0x3b, 0x21, 0x97, 0x87, 0x1b, 0x7e, 0x4b,
-
  0xe1, 0xcb, 0x71, 0x71, 0x03, 0xe5, 0x9a, 0xa0, 0x5e, 0x13, 0x6b, 0xf3,
-
  0x02, 0x1d, 0x80, 0x74, 0xdd, 0x2c, 0xd9, 0x7d, 0x88, 0xbc, 0xb4, 0x98,
-
  0xa3, 0x27, 0x3a, 0x10, 0xc1, 0x19, 0x05, 0xe4, 0x3d, 0x0a, 0xbd, 0xfb,
-
  0x8b, 0x13, 0x0e, 0xcc, 0xf7, 0x82, 0x1b, 0x15, 0xec, 0x11, 0xd7, 0xb4,
-
  0x5e, 0xbc, 0x03, 0x22, 0x2d, 0xaf, 0xdf, 0x51, 0x6e, 0xec, 0x99, 0x13,
-
  0xf7, 0x40, 0x1f, 0xd0, 0x4a, 0x31, 0xaf, 0x59, 0x2e, 0x70, 0x48, 0xc4,
-
  0x17, 0x67, 0x05, 0x1b, 0xfc, 0x6e, 0x1a, 0x96, 0xc4, 0x33, 0x4a, 0xf2,
-
  0xa5, 0x53, 0x2f, 0xe8, 0x8b, 0xe0, 0x55, 0xf7, 0xee, 0xb7, 0x0a, 0xe3,
-
  0x06, 0x40, 0x1c, 0x8a, 0xfe, 0x32, 0x3c, 0x79, 0x1d, 0x15, 0xa3, 0xdf,
-
  0xd0, 0x03, 0xce, 0x91, 0x26, 0xc0, 0xc5, 0xe9, 0x9a, 0x6e, 0x57, 0x53,
-
  0x0c, 0x49, 0x84, 0xfe, 0xf9, 0xd2, 0x2b, 0xdc, 0x12, 0xf7, 0x8f, 0x28,
-
  0xb8, 0xf1, 0x5d, 0x69, 0x43, 0xf1, 0x50, 0xff, 0x4e, 0xca, 0x1b, 0x98,
-
  0x58, 0x99, 0x5c, 0x57, 0x7d, 0x74, 0xa2, 0x8f, 0x2d, 0xdc, 0x79, 0xc2,
-
  0x4e, 0x32, 0x63, 0xd6, 0x30, 0x85, 0x52, 0xf1, 0x68, 0xaf, 0x6e, 0x4e,
-
  0x04, 0x70, 0xf3, 0x2a, 0x49, 0x94, 0x55, 0xf3, 0x54, 0x3f, 0xd9, 0x0f,
-
  0x1c, 0xb0, 0xc0, 0xf9, 0x11, 0x49, 0x80, 0xcc, 0x66, 0x76, 0x5a, 0x19,
-
  0xee, 0xd8, 0x55, 0x5a, 0xe2, 0x28, 0xfb, 0x14, 0x49, 0x75, 0x8b, 0x53,
-
  0xcd, 0x41, 0x37, 0x98, 0x61, 0xb3, 0x58, 0xa4, 0x09, 0x2c, 0x1b, 0xba,
-
  0x20, 0x55, 0x68, 0xb8, 0xca, 0x30, 0xf7, 0xf0, 0xf8, 0x03, 0x96, 0x6b,
-
  0xe0, 0x88, 0xf7, 0xe5, 0x4d, 0x9c, 0x7f, 0x46, 0xf7, 0xc6, 0xc4, 0x2d,
-
  0x82, 0x99, 0x5e, 0xd3, 0xf2, 0x9f, 0x97, 0xc5, 0x72, 0xc1, 0xa9, 0x06,
-
  0x4e, 0xb8, 0xdb, 0x0d, 0xa3, 0x33, 0x17, 0xba, 0x4a, 0x4f, 0xa8, 0x6e,
-
  0x68, 0xb4, 0x26, 0xe7, 0x67, 0xb2, 0x68, 0xce, 0xc6, 0xd5, 0x1b, 0x46,
-
  0x57, 0x31, 0x2e, 0x9f, 0xec, 0x26, 0x11, 0x1f, 0xc8, 0xb9, 0x81, 0x34,
-
  0x3a, 0xf4, 0x22, 0xbe, 0xb3, 0xac, 0xb4, 0xc9, 0x49, 0x0d, 0x69, 0xd2,
-
  0x03, 0x34, 0x24, 0x64, 0xea, 0x53, 0x8a, 0xc7, 0xcd, 0xf2, 0x6e, 0xcf,
-
  0x85, 0xd1, 0xb3, 0x30, 0x6a, 0xc2, 0x46, 0x7a, 0x69, 0xbe, 0x30, 0x07,
-
  0x8a, 0x63, 0xba, 0x88, 0x21, 0xdf, 0x8e, 0x71, 0x71, 0x82, 0x7f, 0x7b,
-
  0x5c, 0xdd, 0xc3, 0xd1, 0x1e, 0x6f, 0x5a, 0x1e, 0x9e, 0xd6, 0xa6, 0x84,
-
  0x9e, 0x91, 0x81, 0x77, 0x8b, 0x59, 0x22, 0x31, 0x88, 0x56, 0x8d, 0xd4,
-
  0xf0, 0xe8, 0x0c, 0x1c, 0x19, 0x9b, 0xf6, 0xf1, 0x33, 0x07, 0xa3, 0x8c,
-
  0x37, 0x90, 0x80, 0x12, 0xcd, 0x7d, 0x81, 0x21, 0x51, 0xa1, 0x18, 0x91,
-
  0xb6, 0x4b, 0xc4, 0x85, 0x66, 0xdb, 0x09, 0x1c, 0x14, 0x65, 0x2b, 0xaa,
-
  0x6c, 0x85, 0xb9, 0x8b, 0x95, 0x8b, 0xde, 0xa7, 0x01, 0x3c, 0x17, 0x4a,
-
  0x8a, 0x7f, 0x97, 0x2d, 0x5c, 0x4f, 0xe9, 0x0b, 0xd0, 0x1a, 0x92, 0xc9,
-
  0x84, 0xb0, 0xb2, 0xe4, 0xf6, 0xe4, 0xdc, 0x79, 0x27, 0x53, 0x8f, 0x58,
-
  0xfa, 0x8d, 0x2b, 0x3c, 0xe6, 0xca, 0x00, 0xe4, 0xfb, 0x72, 0xc0, 0xfe,
-
  0x62, 0xe5, 0x0e, 0xea, 0x0a, 0x43, 0x43, 0xf7, 0x83, 0x40, 0x0c, 0x43,
-
  0xe4, 0x5b, 0xc8, 0x3b, 0x66, 0x40, 0x72, 0x91, 0x99, 0x01, 0x0f, 0x97,
-
  0xe4, 0x32, 0xc7, 0x52, 0xe0, 0x8c, 0xdb, 0x19, 0xd8, 0x0d, 0x33, 0x30,
-
  0xa3, 0xf6, 0x3a, 0x56, 0x18, 0x68, 0x97, 0x51, 0xe1, 0xee, 0xcb, 0xe7,
-
  0x1a, 0x97, 0xd8, 0xea, 0x55, 0xb4, 0xb2, 0x1b, 0x97, 0x4e, 0xe2, 0xb9,
-
  0x1b, 0x42, 0xd0, 0x5e, 0x80, 0x0a, 0x60, 0x7a, 0xef, 0x1c, 0xe9, 0xf6,
-
  0xb5, 0x99, 0xad, 0x04, 0x10, 0x3a, 0xd2, 0x6d, 0x65, 0x03, 0x5f, 0x64,
-
  0x5c, 0x20, 0x96, 0xae, 0x1e, 0x85, 0x09, 0x0b, 0x6c, 0x54, 0x5d, 0xcc,
-
  0x6d, 0x8a, 0xaf, 0x91, 0x72, 0x45, 0xc8, 0x5d, 0xdd, 0x9c, 0x11, 0x80,
-
  0x6f, 0x29, 0xe4, 0xde, 0xb0, 0x46, 0xae, 0x0c, 0xbc, 0x42, 0xcc, 0xa5,
-
  0x25, 0xe2, 0x7d, 0xac, 0x1a, 0x4b, 0x94, 0xa7, 0x57, 0x91, 0xf9, 0x82,
-
  0xca, 0x1f, 0xcb, 0xba, 0xa8, 0x66, 0x1c, 0x34, 0x6a, 0x45, 0xbe, 0x8d,
-
  0x2b, 0xd4, 0xa3, 0xd1, 0xbb, 0x0d, 0xdf, 0x92, 0x5e, 0xbd, 0xab, 0xde,
-
  0x27, 0x92, 0x1b, 0x6e, 0x6a, 0xd1, 0xd7, 0x37, 0x31, 0xe2, 0x31, 0xa1,
-
  0x2d, 0x01, 0x2e, 0x43, 0x97, 0x43, 0x99, 0x32, 0x50, 0x04, 0xd6, 0x3d,
-
  0x20, 0x4c, 0xcb, 0x10, 0x5e, 0x58, 0x14, 0x0a, 0x37, 0xad, 0x93, 0x7a,
-
  0x59, 0x69, 0x78, 0xc4, 0x8b, 0x21, 0x69, 0xb5, 0x94, 0x25, 0x28, 0x91,
-
  0xf0, 0xd1, 0x1a, 0x72, 0xf3, 0x7e, 0xc7, 0x26, 0xe8, 0xe8, 0x2a, 0x77,
-
  0x13, 0xec, 0x87, 0xcc, 0xcb, 0x51, 0x69, 0xe0, 0x6c, 0x57, 0x4b, 0xa7,
-
  0xb7, 0x3c, 0x2d, 0x5f, 0x78, 0x89, 0xb0, 0xac, 0x52, 0xb8, 0xcc, 0x8d,
-
  0xa2, 0x44, 0xd5, 0x34, 0x11, 0x19, 0x5b, 0x13, 0x25, 0x15, 0x21, 0x5d,
-
  0x63, 0xbc, 0x43, 0x2e, 0xb1, 0xa7, 0x37, 0xac, 0x9b, 0xdc, 0x5a, 0x62,
-
  0x33, 0xc2, 0x5d, 0x20, 0xb8, 0x87, 0xdf, 0xd3, 0xb2, 0x10, 0xfd, 0x66,
-
  0x60, 0xf9, 0xf8, 0x5d, 0xf5, 0x0d, 0xba, 0x95, 0xde, 0x55, 0xd5, 0x0c,
-
  0x6f, 0x9a, 0x6c, 0x7a, 0x0d, 0x8b, 0x58, 0x75, 0x16, 0x55, 0x72, 0x67,
-
  0xca, 0xcf, 0x29, 0xdf, 0x73, 0x7c, 0x98, 0x1b, 0x15, 0x39, 0x3c, 0x16,
-
  0xa9, 0xe5, 0x0e, 0x37, 0xb1, 0x71, 0xd4, 0x5d, 0xa8, 0x7b, 0x1b, 0xed,
-
  0x29, 0xd7, 0xae, 0x51, 0x0d, 0x07, 0xd1, 0x8e, 0x78, 0x85, 0x6e, 0x5c,
-
  0xb8, 0x46, 0x4b, 0xd8, 0x88, 0x0d, 0x70, 0x6e, 0x9e, 0xe6, 0x87, 0x21,
-
  0x86, 0xa7, 0xf4, 0xf2, 0x8e, 0xb4, 0x27, 0x8e, 0x4a, 0x16, 0x14, 0x12,
-
  0x73, 0x32, 0xb0, 0x51, 0x3a, 0xcf, 0x6a, 0x64, 0x8a, 0x5f, 0xa2, 0x02,
-
  0x81, 0xd7, 0xc2, 0x0d, 0x53, 0x55, 0x6b, 0x08, 0x53, 0xa0, 0x43, 0x9c,
-
  0x9b, 0x85, 0xa0, 0xdf, 0xa2, 0x6d, 0xfd, 0x43, 0x4c, 0x5f, 0x54, 0x51,
-
  0x97, 0xe3, 0xcb, 0xb9, 0x23, 0xb6, 0xfa, 0x92, 0x7e, 0x60, 0x8c, 0x15,
-
  0x12, 0x5a, 0x4f, 0x35, 0xcb, 0x29, 0xe5, 0x7c, 0x8c, 0x21, 0x54, 0x94,
-
  0xfb, 0x96, 0xdc, 0x74, 0xf2, 0x79, 0x38, 0xd1, 0x15, 0x05, 0xd0, 0x93,
-
  0x8d, 0xfa, 0x9c, 0x6a, 0x16, 0x16, 0x03, 0x7f, 0x9d, 0xb0, 0x58, 0x4e,
-
  0x83, 0xf8, 0xdf, 0xf0, 0x47, 0x07, 0x46, 0xa2, 0x34, 0x21, 0xd6, 0xaa,
-
  0xa5, 0xaf, 0x43, 0xad, 0x8f, 0x82, 0x9b, 0x83, 0x3a, 0x91, 0x91, 0x27,
-
  0xce, 0x5c, 0x94, 0x1f, 0x10, 0x2b, 0x5a, 0x52, 0xc5, 0xdd, 0x2f, 0x63,
-
  0x2b, 0x42, 0x88, 0x04, 0x41, 0x02, 0x44, 0x51, 0x86, 0x45, 0x04, 0x19,
-
  0x95, 0xca, 0x08, 0x67, 0x56, 0x79, 0xbb, 0x51, 0x42, 0xf8, 0x38, 0x11,
-
  0x41, 0x59, 0xbd, 0xc8, 0xd6, 0x9f, 0x42, 0xae, 0x36, 0x5c, 0x68, 0x13,
-
  0xed, 0xfc, 0xff, 0xbf, 0xe6, 0xae, 0xb5, 0x29, 0x6e, 0x23, 0x6b, 0x7f,
-
  0xe7, 0x57, 0xa8, 0xa8, 0xdd, 0x8a, 0x5d, 0x35, 0x33, 0xdc, 0x6f, 0x2e,
-
  0xbf, 0x49, 0x61, 0xc0, 0x36, 0x15, 0x0c, 0x2c, 0x33, 0xbe, 0x6c, 0x65,
-
  0x53, 0x94, 0x60, 0xc4, 0xa0, 0x65, 0xd0, 0x10, 0x69, 0x08, 0x90, 0xad,
-
  0xf7, 0xfd, 0xed, 0xdb, 0xcf, 0xb9, 0x74, 0xb7, 0xd4, 0x3d, 0x08, 0x27,
-
  0x0e, 0x79, 0xbf, 0xb8, 0xac, 0x41, 0xea, 0xeb, 0xe9, 0xd3, 0xe7, 0xfa,
-
  0x1c, 0x32, 0xe0, 0xc1, 0xb1, 0x5a, 0xd8, 0x94, 0x69, 0xea, 0x3b, 0x92,
-
  0xc4, 0x25, 0x49, 0xd6, 0x3e, 0x7d, 0x80, 0x02, 0xe5, 0xe7, 0x17, 0xa8,
-
  0xab, 0xca, 0x01, 0x8e, 0xe7, 0xc0, 0x9f, 0x1c, 0xba, 0xd0, 0xb3, 0x97,
-
  0x4f, 0xb9, 0x54, 0x30, 0x13, 0x5f, 0xe2, 0xe5, 0x64, 0xe5, 0xd6, 0xc3,
-
  0x8d, 0x62, 0xa1, 0xa7, 0x43, 0x33, 0x7c, 0xc6, 0x65, 0x21, 0xfa, 0x99,
-
  0x4e, 0xa6, 0x10, 0xe6, 0xd2, 0x6b, 0xb3, 0x30, 0xc4, 0xcf, 0xb8, 0x0c,
-
  0xaf, 0xbb, 0x2d, 0xf4, 0xfd, 0x56, 0x91, 0xda, 0x2f, 0x26, 0x4c, 0x55,
-
  0x5a, 0x65, 0xcb, 0x81, 0x63, 0xb2, 0xc0, 0x85, 0x81, 0x75, 0x17, 0x9e,
-
  0x78, 0xf3, 0x97, 0xf0, 0x06, 0x53, 0xe4, 0x23, 0x83, 0xad, 0x8a, 0x16,
-
  0x18, 0x9d, 0x96, 0x68, 0xb1, 0x1a, 0x7c, 0x47, 0xb3, 0x6a, 0x4e, 0x4a,
-
  0x21, 0x40, 0xed, 0x8c, 0xa8, 0xc9, 0x36, 0x31, 0x68, 0x56, 0x8f, 0xca,
-
  0x0e, 0x1f, 0xeb, 0xd1, 0x2d, 0x63, 0xc5, 0x49, 0x7c, 0xd1, 0x8a, 0xa9,
-
  0x11, 0x0f, 0xf7, 0x4c, 0xb5, 0x88, 0xba, 0x56, 0x64, 0x9d, 0xe8, 0x1e,
-
  0xd2, 0xf5, 0xdb, 0xec, 0x5e, 0x51, 0x6d, 0xfe, 0xdf, 0xee, 0xa1, 0xb9,
-
  0x30, 0x87, 0x8e, 0x36, 0x31, 0xad, 0x14, 0x09, 0x02, 0x23, 0xb7, 0x5d,
-
  0xfc, 0x8e, 0x67, 0xdc, 0x33, 0x17, 0x62, 0x65, 0xa4, 0xda, 0x61, 0x24,
-
  0xc9, 0x27, 0x22, 0x84, 0xa9, 0x33, 0xd5, 0xb6, 0x87, 0x02, 0xd4, 0x58,
-
  0xa4, 0x1b, 0x0a, 0xa3, 0x43, 0xac, 0xe8, 0x8c, 0x51, 0xd9, 0xd5, 0xf6,
-
  0x47, 0x25, 0x3f, 0x36, 0xc7, 0xe4, 0x06, 0xf5, 0x95, 0xa3, 0xe2, 0xf6,
-
  0x9e, 0x32, 0xa6, 0xaf, 0x17, 0x56, 0x1a, 0xd2, 0x4a, 0x53, 0x3e, 0xa9,
-
  0x09, 0x20, 0x4f, 0xba, 0xc1, 0x1f, 0x97, 0x4f, 0x6a, 0x22, 0x48, 0x3b,
-
  0x23, 0xf3, 0xe4, 0x93, 0xb9, 0xd0, 0x4b, 0x6b, 0x28, 0xc8, 0x3e, 0xbe,
-
  0x15, 0x1f, 0x1b, 0xa5, 0xc2, 0x4e, 0x72, 0xa2, 0xf5, 0x82, 0x73, 0x47,
-
  0x9a, 0x1e, 0x78, 0x96, 0x3c, 0xdb, 0x0c, 0xa0, 0x75, 0x5f, 0x22, 0xa1,
-
  0x75, 0x58, 0x87, 0xa0, 0x95, 0x31, 0x9f, 0x7e, 0x69, 0xaf, 0xc7, 0x44,
-
  0x73, 0xf1, 0xe9, 0x3f, 0xd3, 0x1c, 0x42, 0x7f, 0x68, 0xcf, 0x9d, 0xea,
-
  0x76, 0xd6, 0x23, 0x80, 0x14, 0x9d, 0x84, 0x9c, 0xa8, 0x0e, 0xcb, 0x41,
-
  0x5d, 0x6a, 0xec, 0x3a, 0x25, 0xed, 0x91, 0xa3, 0x14, 0x5a, 0x6c, 0x40,
-
  0xf4, 0xba, 0x66, 0xab, 0x33, 0x62, 0x68, 0xdd, 0xf6, 0x12, 0x5d, 0x32,
-
  0xdc, 0x8c, 0xa7, 0xe9, 0xcd, 0x8d, 0xdc, 0xfd, 0xed, 0x04, 0xce, 0x25,
-
  0x85, 0x81, 0x46, 0x49, 0x67, 0x86, 0x8b, 0x37, 0x4f, 0x27, 0x93, 0x2b,
-
  0x97, 0xc3, 0x4d, 0xba, 0x1c, 0xa0, 0xdc, 0x5b, 0x09, 0x7c, 0x9c, 0xe8,
-
  0x29, 0x59, 0xe8, 0xf7, 0xdf, 0x2f, 0x64, 0xd3, 0x73, 0x15, 0x42, 0x16,
-
  0x5c, 0x1e, 0x9f, 0xb5, 0x52, 0xb7, 0x34, 0x47, 0x72, 0x10, 0x80, 0x50,
-
  0x88, 0xd4, 0x6d, 0x40, 0x47, 0x2f, 0x3a, 0xe5, 0xba, 0x2d, 0xee, 0x1b,
-
  0x4f, 0x8a, 0x2c, 0x12, 0x3b, 0xc7, 0x3a, 0x97, 0x86, 0x9d, 0x9d, 0x86,
-
  0xf8, 0x82, 0x8b, 0xb6, 0xdf, 0x3f, 0xbc, 0x6c, 0x3f, 0xb5, 0x2d, 0x53,
-
  0x81, 0x35, 0x79, 0x6c, 0xc6, 0x7a, 0x7b, 0xf3, 0xec, 0xbb, 0x47, 0x0e,
-
  0x6a, 0xb8, 0x2f, 0x38, 0xa4, 0x9b, 0x9c, 0xd1, 0xed, 0x03, 0xbe, 0x81,
-
  0x09, 0x95, 0x85, 0xbd, 0x27, 0x30, 0xd4, 0x27, 0x0f, 0xf9, 0xc9, 0x23,
-
  0x66, 0xe8, 0x4e, 0x15, 0x37, 0x31, 0x60, 0x0a, 0xc1, 0x90, 0xe8, 0x3d,
-
  0x62, 0x4d, 0x67, 0xd9, 0x28, 0x8c, 0xda, 0x8d, 0x5e, 0xe0, 0x1a, 0xe3,
-
  0x9c, 0x52, 0xba, 0x79, 0xd6, 0xb5, 0xed, 0x8a, 0x27, 0xb9, 0x92, 0x0c,
-
  0xdf, 0xd1, 0xa4, 0x75, 0x74, 0xa9, 0x54, 0xa7, 0x07, 0xcb, 0xf7, 0x62,
-
  0x4c, 0xce, 0x95, 0x7e, 0x3c, 0x30, 0x18, 0x43, 0x3a, 0x6d, 0xcd, 0x41,
-
  0xc2, 0x65, 0x08, 0xa3, 0x5f, 0x11, 0x6d, 0x3f, 0x63, 0x2f, 0xac, 0x22,
-
  0xd6, 0x46, 0x1e, 0x08, 0xc1, 0x1f, 0x8f, 0xad, 0xe2, 0xd6, 0x7a, 0xdd,
-
  0x98, 0xab, 0xea, 0x46, 0x97, 0x07, 0x74, 0x41, 0x64, 0xc2, 0x64, 0xda,
-
  0xd1, 0x83, 0xd1, 0x49, 0x9e, 0x4c, 0x0a, 0x8c, 0xab, 0xa8, 0x6b, 0xab,
-
  0x35, 0xec, 0xd5, 0x1f, 0x81, 0x90, 0x64, 0xfa, 0x63, 0x7a, 0xae, 0xba,
-
  0x78, 0xdb, 0xe8, 0xc8, 0xdc, 0xd4, 0x6b, 0x2c, 0x02, 0xe7, 0x88, 0xd4,
-
  0x84, 0x05, 0x4e, 0x7d, 0x79, 0xd2, 0x55, 0x9d, 0x4b, 0xdd, 0x3d, 0xeb,
-
  0x2a, 0xf2, 0x16, 0xab, 0x8a, 0x2f, 0x3f, 0x8d, 0xe3, 0x2f, 0x3e, 0x0c,
-
  0x25, 0x45, 0xcc, 0x4c, 0x33, 0x77, 0x12, 0x6a, 0x07, 0x21, 0xf9, 0x0a,
-
  0xf1, 0xd3, 0xc2, 0xda, 0xb8, 0xb4, 0xa4, 0xc6, 0x81, 0xe7, 0x40, 0xa4,
-
  0x71, 0x35, 0x69, 0x97, 0xd7, 0x68, 0x3d, 0x69, 0x46, 0x6c, 0x00, 0x46,
-
  0x52, 0x1c, 0x5f, 0x8d, 0x46, 0x91, 0xc3, 0x31, 0x98, 0x2a, 0x01, 0xb4,
-
  0x3b, 0x48, 0xcc, 0x8e, 0xc4, 0x37, 0x40, 0xe4, 0xf9, 0xba, 0x78, 0x1f,
-
  0xae, 0xb2, 0xad, 0xf5, 0x4c, 0x29, 0x56, 0x94, 0x4c, 0xfa, 0x14, 0x92,
-
  0x80, 0x62, 0x1b, 0x39, 0x79, 0x6c, 0xf0, 0x09, 0x34, 0x56, 0xa7, 0x39,
-
  0x67, 0x14, 0x34, 0xf5, 0x84, 0xc8, 0x01, 0xaa, 0x77, 0xec, 0xf4, 0x5f,
-
  0xca, 0xc5, 0xe2, 0x47, 0x05, 0xe0, 0xe3, 0x15, 0x62, 0x84, 0x34, 0xe7,
-
  0xc3, 0xd1, 0x1e, 0x9e, 0xea, 0xb9, 0xd9, 0xec, 0x2d, 0xcd, 0xe8, 0x9d,
-
  0xb3, 0xdf, 0x5d, 0x84, 0x00, 0x1e, 0xfd, 0x22, 0x10, 0x8f, 0x4d, 0xac,
-
  0x35, 0xdc, 0x63, 0x76, 0xb7, 0xae, 0xd6, 0x67, 0x1d, 0x05, 0xa3, 0xd9,
-
  0xf5, 0x9f, 0x33, 0x69, 0xc9, 0x34, 0xb5, 0x64, 0x63, 0x9f, 0xa9, 0x7b,
-
  0xbb, 0xec, 0xd1, 0xb9, 0xff, 0xf1, 0xde, 0x49, 0x80, 0xf0, 0x7c, 0x35,
-
  0x78, 0x7c, 0x8e, 0x25, 0x57, 0xcf, 0x94, 0x4c, 0x9a, 0x9f, 0xeb, 0x36,
-
  0xa7, 0x78, 0xd7, 0xfb, 0x2d, 0x01, 0x36, 0xc5, 0xa4, 0x66, 0xbf, 0x22,
-
  0x4d, 0x45, 0xe3, 0x2b, 0x35, 0xc6, 0x50, 0xb6, 0x93, 0xa9, 0xbb, 0x65,
-
  0x16, 0x66, 0x23, 0xc8, 0x74, 0xd4, 0xd1, 0xed, 0xe7, 0xaf, 0xbe, 0xab,
-
  0x1c, 0x46, 0x9c, 0xd7, 0x5d, 0x9b, 0xe9, 0x93, 0x0c, 0xe9, 0xbd, 0x27,
-
  0xed, 0x0c, 0xc5, 0x64, 0xb8, 0x25, 0xa2, 0xc7, 0x67, 0xd8, 0x19, 0xc6,
-
  0x67, 0x74, 0x3b, 0x23, 0xcf, 0x75, 0x62, 0xf4, 0x8e, 0xc3, 0xb7, 0x25,
-
  0xc7, 0x0b, 0xa3, 0xa4, 0x33, 0x24, 0x0c, 0xc7, 0x2d, 0xeb, 0xe3, 0xf3,
-
  0x1c, 0xc5, 0xdf, 0x26, 0x45, 0x96, 0x0f, 0xdd, 0xdc, 0xf5, 0x39, 0x32,
-
  0xf9, 0x6f, 0x3f, 0xf7, 0xcc, 0x63, 0xbe, 0x11, 0xde, 0x4b, 0x99, 0xb3,
-
  0x6a, 0x3b, 0x4c, 0x5e, 0xe0, 0x36, 0x78, 0xe9, 0x96, 0xa2, 0x5d, 0xf0,
-
  0x8f, 0xdc, 0x03, 0x8f, 0x0c, 0xc5, 0x71, 0xe2, 0x81, 0x83, 0x2c, 0xb6,
-
  0xcb, 0x30, 0x73, 0x2c, 0x7f, 0xc6, 0x50, 0x1c, 0x77, 0x8e, 0x32, 0x67,
-
  0xde, 0x12, 0x37, 0x1a, 0x1d, 0x0e, 0xc6, 0xd3, 0x26, 0x17, 0xcc, 0xbe,
-
  0x22, 0x1f, 0x19, 0x8f, 0xe3, 0xd7, 0x14, 0xdf, 0x2c, 0x4f, 0xad, 0xdb,
-
  0xf4, 0x67, 0x2c, 0x8d, 0x63, 0xde, 0x51, 0xde, 0x1d, 0x5f, 0x94, 0x3f,
-
  0x87, 0x60, 0x1c, 0x43, 0x77, 0xfc, 0xbc, 0xce, 0xce, 0xbf, 0xc5, 0xaa,
-
  0xec, 0x5f, 0xb4, 0xf3, 0xf7, 0x27, 0xf8, 0x75, 0x3d, 0xee, 0x4f, 0x1c,
-
  0x5e, 0x18, 0x3c, 0x11, 0x44, 0x93, 0xbd, 0xb7, 0x07, 0xb9, 0x3a, 0xde,
-
  0xff, 0x15, 0xec, 0x3d, 0xf3, 0xf8, 0x7b, 0x94, 0xbd, 0x3f, 0xe7, 0xe6,
-
  0x39, 0x9e, 0x1f, 0xb0, 0xfc, 0xe7, 0x26, 0x69, 0x77, 0x01, 0x44, 0xf9,
-
  0xff, 0xb3, 0x9f, 0x76, 0x77, 0x25, 0xf8, 0x37, 0xc2, 0x5f, 0xb0, 0x34,
-
  0x86, 0xc8, 0x02, 0x21, 0x3f, 0x2f, 0x86, 0xd9, 0x7d, 0xed, 0x98, 0x79,
-
  0xa5, 0x46, 0x3a, 0xc9, 0x62, 0x97, 0x5e, 0x68, 0xbd, 0x9c, 0x76, 0xb3,
-
  0x2e, 0xe1, 0xf4, 0xc3, 0x5a, 0x6a, 0x9a, 0xad, 0x20, 0xa6, 0xa4, 0xaa,
-
  0x11, 0x57, 0x8c, 0xd5, 0xe5, 0x75, 0xd4, 0xa6, 0x0f, 0x53, 0x96, 0x4d,
-
  0x99, 0x8f, 0xcc, 0x6c, 0xb4, 0x59, 0xaa, 0x65, 0xf2, 0x14, 0x05, 0xe4,
-
  0xd4, 0xdb, 0xda, 0x59, 0xaa, 0x0c, 0x69, 0x42, 0x0e, 0x1b, 0x8e, 0x5c,
-
  0x93, 0x30, 0x62, 0x77, 0xdb, 0xa4, 0x1e, 0x0a, 0x09, 0xd6, 0x6a, 0xb8,
-
  0x5c, 0x20, 0x09, 0x41, 0xc1, 0x9a, 0x7e, 0x24, 0xde, 0x6d, 0xf8, 0xc3,
-
  0x09, 0x1c, 0xa9, 0x25, 0x08, 0x68, 0x86, 0x47, 0x04, 0xd0, 0x49, 0x0d,
-
  0x83, 0xf0, 0x5f, 0x54, 0x15, 0xe7, 0x2e, 0xf9, 0xee, 0xef, 0xff, 0xa9,
-
  0x39, 0x5b, 0xff, 0xf7, 0x5f, 0xc5, 0x77, 0x7f, 0xb4, 0x9e, 0x5b, 0x14,
-
  0x28, 0xff, 0x3e, 0x9d, 0x4e, 0xcb, 0x28, 0x9c, 0x5c, 0x95, 0xfe, 0xca,
-
  0x30, 0x47, 0x9a, 0x5c, 0xa0, 0xb1, 0xd5, 0xf5, 0x42, 0xb6, 0xd3, 0x5a,
-
  0xdd, 0xd4, 0x6a, 0x1a, 0xc1, 0xce, 0xcb, 0x4a, 0x4a, 0x88, 0x23, 0x83,
-
  0xdb, 0x75, 0x36, 0x4d, 0xc9, 0xad, 0x65, 0x7e, 0x20, 0x40, 0x80, 0xa1,
-
  0xe6, 0x17, 0x26, 0x09, 0x86, 0x92, 0x9b, 0x7b, 0x80, 0x80, 0x29, 0x76,
-
  0x28, 0x72, 0x74, 0x3a, 0x7e, 0xe8, 0x44, 0xe0, 0xe4, 0x04, 0x89, 0x99,
-
  0x7a, 0xb3, 0x51, 0x35, 0xf7, 0xc3, 0x51, 0x8f, 0xa9, 0xb7, 0x47, 0x40,
-
  0x27, 0xda, 0x1a, 0x66, 0xdf, 0x21, 0x93, 0x0c, 0xfc, 0x7c, 0xb1, 0xe6,
-
  0x24, 0x71, 0x20, 0xa1, 0xc4, 0x81, 0xa0, 0xdd, 0x6b, 0xb2, 0x10, 0x50,
-
  0x4e, 0x81, 0x6d, 0xb3, 0xc7, 0x48, 0x94, 0xa1, 0x79, 0x9f, 0x67, 0xa2,
-
  0xe8, 0x83, 0x16, 0xca, 0x47, 0xf3, 0x33, 0xed, 0x94, 0xdd, 0x5c, 0x91,
-
  0xaf, 0x75, 0x97, 0x96, 0x05, 0x67, 0x96, 0x06, 0xb0, 0xfb, 0xd5, 0x6d,
-
  0x2c, 0xbd, 0xd9, 0xab, 0x24, 0x47, 0x3b, 0xf8, 0x28, 0x80, 0xaf, 0xab,
-
  0x22, 0xa7, 0xc8, 0x3d, 0xcd, 0x5e, 0x42, 0x1c, 0x1f, 0x6a, 0xf5, 0x6b,
-
  0x51, 0x7c, 0x78, 0x28, 0x5d, 0x26, 0x03, 0xf8, 0xec, 0xbe, 0x8a, 0x62,
-
  0x4f, 0xbc, 0xa0, 0x78, 0xb6, 0xbd, 0x34, 0x8f, 0x63, 0xac, 0x96, 0xdc,
-
  0xdb, 0xfd, 0x83, 0x3d, 0x1b, 0xf5, 0xf7, 0x7f, 0x0b, 0x3d, 0x0c, 0xa5,
-
  0x3c, 0x0f, 0x20, 0x37, 0x58, 0xe1, 0xf3, 0x30, 0xdc, 0x05, 0x17, 0xdc,
-
  0x03, 0x18, 0x6b, 0x80, 0x82, 0xef, 0x1d, 0x7e, 0xda, 0x3f, 0x39, 0x3a,
-
  0xfc, 0xb0, 0x77, 0x38, 0x98, 0xf3, 0xb3, 0x3a, 0x62, 0xe9, 0x4c, 0x61,
-
  0x7e, 0xa6, 0x46, 0x73, 0x4b, 0xd0, 0x79, 0x99, 0x18, 0x02, 0x90, 0xa7,
-
  0x9e, 0xdf, 0x9c, 0xf7, 0x92, 0x46, 0xd9, 0x62, 0xef, 0x6e, 0x10, 0xb1,
-
  0x31, 0x44, 0xe4, 0x74, 0x8f, 0xe3, 0x72, 0xc9, 0x4b, 0x40, 0xc9, 0x57,
-
  0x38, 0x37, 0x88, 0xe8, 0x26, 0x0c, 0x21, 0xc3, 0x47, 0xed, 0x6d, 0xa5,
-
  0x59, 0x14, 0x2e, 0x44, 0xb6, 0x36, 0x08, 0xb7, 0x99, 0x1f, 0x19, 0x28,
-
  0x12, 0xae, 0xa6, 0xd8, 0x6c, 0xb4, 0xd2, 0x38, 0x19, 0x9b, 0xa9, 0x5b,
-
  0xaa, 0xad, 0xa2, 0x37, 0x0a, 0x13, 0x93, 0x77, 0x97, 0xb8, 0xe2, 0x31,
-
  0xdd, 0xfb, 0x8e, 0x22, 0xce, 0x06, 0xa9, 0x0c, 0xde, 0x2c, 0x7e, 0xd2,
-
  0xd0, 0x0b, 0x43, 0x19, 0x3f, 0xbf, 0x86, 0xf0, 0xfb, 0xfd, 0x4f, 0xaf,
-
  0x70, 0x3c, 0x7e, 0x0e, 0x68, 0x63, 0x5a, 0x79, 0xc3, 0x10, 0x0b, 0xa0,
-
  0x87, 0x37, 0x8b, 0x03, 0x6d, 0x97, 0x93, 0x62, 0xc2, 0x4e, 0x8f, 0x4f,
-
  0x8e, 0xbe, 0xfc, 0xf3, 0x1b, 0x77, 0xe1, 0x65, 0x8e, 0xff, 0x04, 0xc8,
-
  0x14, 0x6d, 0xfc, 0xe7, 0x6f, 0xde, 0x5b, 0xbd, 0xf9, 0x8e, 0xa4, 0x27,
-
  0x92, 0xe8, 0x14, 0x31, 0xf6, 0x33, 0xd6, 0x3e, 0x57, 0xcc, 0x71, 0x01,
-
  0x2d, 0x89, 0xe7, 0x1d, 0xb7, 0x50, 0x0e, 0x64, 0x70, 0xad, 0xea, 0x04,
-
  0xda, 0x8c, 0xce, 0xa2, 0xbb, 0x9e, 0xc0, 0xce, 0x5d, 0xae, 0x7f, 0x47,
-
  0x2a, 0x01, 0x00, 0xea, 0xbf, 0xc3, 0xe5, 0x00, 0x08, 0x41, 0xc6, 0x2e,
-
  0xc8, 0xf6, 0xc1, 0xc1, 0x37, 0x5d, 0x85, 0x9c, 0x14, 0x05, 0x3b, 0x99,
-
  0xae, 0x75, 0x7f, 0xc8, 0xdb, 0x21, 0x8f, 0x34, 0xb4, 0xea, 0x86, 0x73,
-
  0x78, 0x24, 0xa3, 0x79, 0x4d, 0x9e, 0x97, 0x6e, 0x95, 0x19, 0x89, 0x8f,
-
  0x52, 0x1a, 0x90, 0x51, 0x01, 0x51, 0x0b, 0x03, 0xab, 0x16, 0x18, 0xba,
-
  0xa4, 0xfa, 0x3e, 0xc8, 0xa1, 0x96, 0x70, 0x4a, 0x52, 0xc9, 0x38, 0x43,
-
  0x83, 0x95, 0x0b, 0xc6, 0x78, 0x25, 0x80, 0xb8, 0x89, 0x2d, 0xce, 0x87,
-
  0xdc, 0x6d, 0x06, 0x52, 0xc1, 0x75, 0x10, 0x42, 0x41, 0x73, 0xc5, 0x23,
-
  0x98, 0x7f, 0xcb, 0xbc, 0xba, 0x22, 0x34, 0x3d, 0x1c, 0x51, 0xb2, 0xd7,
-
  0x6b, 0xdd, 0x05, 0xf8, 0x53, 0x68, 0x4c, 0x52, 0x82, 0xca, 0x41, 0xac,
-
  0xe6, 0x55, 0x6c, 0x74, 0x10, 0x9c, 0x52, 0x16, 0xa7, 0x10, 0x94, 0xc4,
-
  0xf1, 0x62, 0x69, 0x0d, 0xf0, 0x93, 0xd1, 0x86, 0x25, 0x11, 0xbd, 0xb2,
-
  0xa5, 0x21, 0xba, 0x91, 0xa2, 0x6a, 0x1d, 0x85, 0x03, 0xc7, 0x0b, 0xdc,
-
  0xf5, 0xb4, 0xca, 0xc6, 0x17, 0x71, 0xbc, 0xba, 0x28, 0xbb, 0x90, 0xaa,
-
  0x0c, 0x95, 0x62, 0xd0, 0x29, 0xb5, 0x62, 0xb3, 0x32, 0x80, 0x08, 0x53,
-
  0xa0, 0x61, 0x18, 0xe8, 0xa1, 0xb8, 0xaa, 0x7e, 0xa6, 0xd6, 0x3d, 0x65,
-
  0x6a, 0xc9, 0xc7, 0x0e, 0xe0, 0x98, 0x73, 0xed, 0x75, 0x6f, 0xff, 0x67,
-
  0x18, 0x82, 0x68, 0xe2, 0x7e, 0xf3, 0xf1, 0x45, 0x25, 0x38, 0xa4, 0x7b,
-
  0x9f, 0x68, 0x91, 0x15, 0xde, 0xa7, 0xda, 0x3b, 0xf2, 0x97, 0xa7, 0x34,
-
  0xe7, 0xd5, 0x5b, 0xe0, 0xa1, 0x26, 0x53, 0xa0, 0xc0, 0x4c, 0x13, 0x51,
-
  0xee, 0xd8, 0xc5, 0x83, 0xad, 0x8d, 0x20, 0xac, 0x79, 0x03, 0x7f, 0x6c,
-
  0xa0, 0x33, 0x47, 0x1a, 0x49, 0xd4, 0x30, 0xaf, 0x21, 0xa4, 0x8d, 0xeb,
-
  0x8b, 0xf9, 0xed, 0xd9, 0x71, 0x92, 0xf3, 0x84, 0xc7, 0xc8, 0xb2, 0xb8,
-
  0xd6, 0x93, 0xcc, 0x62, 0x21, 0xb9, 0xd1, 0x74, 0x54, 0xff, 0xc8, 0xc8,
-
  0x61, 0xb0, 0x90, 0xf3, 0xe4, 0x13, 0xb2, 0x70, 0x8d, 0x2e, 0x0c, 0x50,
-
  0xd2, 0x2d, 0x02, 0x78, 0x67, 0x82, 0x92, 0xa8, 0x78, 0x79, 0x18, 0x08,
-
  0xc8, 0x42, 0x94, 0xc8, 0xd9, 0xa2, 0x2c, 0xdb, 0x33, 0x45, 0x9e, 0xd6,
-
  0x50, 0x57, 0x73, 0x07, 0x8e, 0x27, 0x81, 0xdf, 0x09, 0x37, 0xce, 0x19,
-
  0xf0, 0x38, 0x0c, 0x2b, 0x09, 0x31, 0x48, 0xa4, 0x86, 0xc8, 0xe6, 0x7a,
-
  0x6f, 0xb1, 0xe3, 0xc5, 0x69, 0xc6, 0xee, 0x69, 0xbe, 0xbc, 0x76, 0xf6,
-
  0x77, 0x4f, 0x70, 0xb6, 0xa3, 0xea, 0x03, 0xee, 0x49, 0xae, 0xc2, 0x48,
-
  0x28, 0xc0, 0x46, 0xe8, 0xbf, 0xe4, 0x59, 0x88, 0x56, 0xe5, 0xca, 0xc2,
-
  0x4d, 0x6b, 0x81, 0xf1, 0xf3, 0x92, 0xb4, 0xdd, 0x4c, 0x60, 0x36, 0x07,
-
  0x6c, 0x9e, 0xd2, 0x23, 0xb5, 0xd0, 0xbb, 0x44, 0x91, 0x2a, 0x03, 0xb4,
-
  0xc5, 0xea, 0x0c, 0xe7, 0xca, 0x2b, 0xc2, 0x2a, 0x25, 0xb4, 0x2e, 0xd9,
-
  0xe5, 0x66, 0xad, 0x98, 0xa5, 0xad, 0xe5, 0xde, 0xd2, 0xfa, 0x66, 0x6f,
-
  0xb1, 0xb7, 0xb8, 0xb0, 0xb4, 0x3e, 0x0f, 0xcd, 0x83, 0x96, 0x33, 0x61,
-
  0x36, 0x21, 0x40, 0x7b, 0x6e, 0x09, 0x1c, 0xc2, 0x67, 0x0c, 0x59, 0x5c,
-
  0x9b, 0xf3, 0xb0, 0x19, 0xb6, 0x8f, 0x8f, 0x77, 0xb7, 0x07, 0xdb, 0xc9,
-
  0x6b, 0x43, 0xbd, 0xdf, 0x87, 0x98, 0xe2, 0xb6, 0x4a, 0x09, 0x69, 0x05,
-
  0x96, 0x2b, 0x68, 0x46, 0x35, 0x05, 0x19, 0x4f, 0xcb, 0x07, 0x89, 0x49,
-
  0xb9, 0xc8, 0xc9, 0x85, 0x4b, 0xb9, 0x45, 0x93, 0xc0, 0x84, 0x6f, 0xcb,
-
  0x42, 0xf6, 0xb4, 0xa4, 0xce, 0x4d, 0x99, 0x5f, 0x03, 0xe4, 0x17, 0x2f,
-
  0xbb, 0xc6, 0xa1, 0xe3, 0x62, 0x5a, 0xb7, 0x45, 0x8d, 0xf9, 0xef, 0x1c,
-
  0x1d, 0x7c, 0xfc, 0x70, 0xd8, 0x4f, 0x5e, 0xa3, 0xd6, 0x0d, 0xb9, 0x83,
-
  0xef, 0xf2, 0x61, 0x58, 0x69, 0x15, 0x92, 0x7b, 0x85, 0x12, 0xaa, 0x8d,
-
  0xca, 0x9b, 0x6e, 0xeb, 0x2c, 0xdc, 0x5b, 0x55, 0x53, 0xe3, 0x92, 0x34,
-
  0x16, 0x0e, 0x5e, 0xef, 0x4c, 0x26, 0x8c, 0x7d, 0x95, 0x0a, 0x8d, 0x50,
-
  0x89, 0xcd, 0x19, 0x1b, 0x61, 0xfd, 0xbb, 0x67, 0x69, 0xc9, 0x17, 0xb6,
-
  0x18, 0x9c, 0x42, 0xaf, 0x08, 0xa9, 0x0b, 0x18, 0x9d, 0x57, 0x42, 0x13,
-
  0xe8, 0x33, 0x58, 0xbb, 0xd1, 0x2d, 0xc3, 0xb6, 0x83, 0x7a, 0x98, 0x72,
-
  0x19, 0xbc, 0xf1, 0xae, 0x56, 0xdb, 0x7a, 0xc7, 0x9c, 0xf7, 0xd3, 0x9d,
-
  0xed, 0xd3, 0x37, 0x1f, 0x0f, 0x77, 0x0f, 0xf6, 0xe2, 0xb5, 0x4d, 0xf9,
-
  0xba, 0xea, 0xc4, 0xa6, 0x07, 0x81, 0x38, 0x85, 0xd2, 0xc6, 0x6a, 0x6d,
-
  0xa3, 0xdd, 0xf7, 0x47, 0x1f, 0xf6, 0xa2, 0xa4, 0xe0, 0x56, 0x55, 0x02,
-
  0x9f, 0xc4, 0xa9, 0x6c, 0x37, 0x8d, 0xe6, 0x63, 0xee, 0xad, 0xf3, 0xab,
-
  0x2a, 0x46, 0x15, 0x81, 0x4e, 0x52, 0xf1, 0xa6, 0xd7, 0x69, 0xc2, 0xae,
-
  0x4e, 0x4e, 0xd2, 0xbc, 0xa1, 0x63, 0xe4, 0x87, 0xc2, 0x47, 0x4d, 0x2d,
-
  0x27, 0xc9, 0x97, 0xdd, 0x77, 0xa7, 0x3b, 0x47, 0x87, 0x4d, 0x86, 0xf1,
-
  0x76, 0xff, 0x1d, 0x0d, 0xbd, 0x3e, 0x99, 0x7e, 0xff, 0xe0, 0xf4, 0xcd,
-
  0xf6, 0xce, 0x8f, 0x7b, 0x87, 0xbb, 0xc9, 0x6b, 0x0f, 0xe4, 0x2a, 0x36,
-
  0x37, 0x49, 0x6f, 0x9e, 0x8d, 0x11, 0x38, 0xaf, 0xf8, 0x5a, 0xf3, 0x8d,
-
  0x0a, 0x8d, 0x79, 0x53, 0x2c, 0xb8, 0xd4, 0x46, 0x00, 0x9a, 0xe7, 0x37,
-
  0x41, 0x20, 0x7e, 0x04, 0x21, 0x86, 0x28, 0x78, 0x6f, 0x40, 0x36, 0xe8,
-
  0xfe, 0x31, 0x04, 0x69, 0x6f, 0xa9, 0x85, 0xcd, 0x65, 0x36, 0xea, 0x88,
-
  0x34, 0x0c, 0x1f, 0xd4, 0x82, 0xf3, 0x8d, 0x63, 0x79, 0x21, 0x5e, 0x80,
-
  0x89, 0xf4, 0xae, 0xac, 0xe9, 0xce, 0x16, 0xa2, 0xa2, 0x98, 0x97, 0x5f,
-
  0x27, 0x57, 0x04, 0x89, 0x2f, 0x10, 0xfd, 0x90, 0x41, 0x8b, 0x10, 0x89,
-
  0x9f, 0xfd, 0x3d, 0x52, 0x0a, 0x20, 0x75, 0xf3, 0xf6, 0x8f, 0x87, 0xab,
-
  0x6b, 0xc5, 0x52, 0xeb, 0x34, 0x7d, 0xb0, 0xd9, 0xd2, 0xf1, 0xfa, 0x4e,
-
  0x51, 0xec, 0x2b, 0x1d, 0x2e, 0x5f, 0x55, 0x2f, 0x30, 0xe7, 0xae, 0x37,
-
  0xe7, 0x97, 0xaf, 0x70, 0x6b, 0xa5, 0x65, 0x55, 0x21, 0x63, 0x6b, 0x54,
-
  0xdc, 0x4e, 0xc7, 0xb8, 0x90, 0x46, 0xd5, 0x55, 0x3e, 0x6d, 0x9a, 0x05,
-
  0x0c, 0x27, 0x18, 0xd2, 0x9f, 0x8b, 0xca, 0xfc, 0x33, 0x31, 0xdc, 0x9f,
-
  0xbe, 0x2a, 0x6f, 0x2b, 0xfa, 0xb5, 0xb2, 0x99, 0x5f, 0x15, 0x25, 0x7a,
-
  0x71, 0xc0, 0x0f, 0xf6, 0xd1, 0x1c, 0xa9, 0xc9, 0x38, 0x40, 0xfc, 0x32,
-
  0x1f, 0xdb, 0x01, 0x3f, 0x76, 0x82, 0x88, 0xb4, 0x6b, 0x45, 0x69, 0x95,
-
  0x67, 0xb2, 0x8c, 0x06, 0xb3, 0xb7, 0x57, 0xa9, 0xf7, 0xce, 0x95, 0xde,
-
  0x0a, 0xe5, 0x62, 0x8e, 0x94, 0xe8, 0x25, 0x07, 0xc0, 0xa2, 0x94, 0x8c,
-
  0xf0, 0x09, 0x01, 0x58, 0x29, 0xe8, 0xa8, 0xfa, 0x41, 0x45, 0x69, 0xee,
-
  0x79, 0x27, 0x3c, 0x14, 0x62, 0xe4, 0x60, 0xe9, 0x41, 0x62, 0x33, 0x1c,
-
  0xd7, 0x65, 0x21, 0x3d, 0xd5, 0xce, 0xef, 0x1f, 0x07, 0x47, 0xef, 0x76,
-
  0xf7, 0x4f, 0x68, 0x8a, 0x5e, 0x91, 0xdf, 0xc8, 0x6c, 0x63, 0xa8, 0x8e,
-
  0x75, 0x34, 0xc4, 0x8e, 0xad, 0xf3, 0xe5, 0xc8, 0x5f, 0xc8, 0x3d, 0xa8,
-
  0xba, 0xa2, 0xd9, 0x28, 0x60, 0x06, 0xa9, 0x26, 0x4d, 0xba, 0x31, 0x34,
-
  0x68, 0xcc, 0x70, 0xe4, 0xe1, 0xad, 0x11, 0x13, 0x7e, 0x19, 0x4f, 0x46,
-
  0x55, 0x18, 0x6a, 0x4a, 0x6b, 0x6a, 0x3f, 0xee, 0x08, 0xb7, 0xb5, 0x35,
-
  0x76, 0x2b, 0x26, 0x75, 0x24, 0xa3, 0x13, 0x74, 0x14, 0xdf, 0x68, 0x43,
-
  0x54, 0x31, 0x8c, 0x22, 0x01, 0x78, 0xa9, 0x1e, 0x09, 0x8c, 0xd2, 0x2f,
-
  0x10, 0x97, 0x7e, 0x99, 0xdd, 0x23, 0xb1, 0x6d, 0x77, 0x42, 0x4c, 0x3f,
-
  0xb3, 0xe1, 0x25, 0x95, 0xe0, 0x0d, 0xca, 0x31, 0x3e, 0x0f, 0xef, 0x49,
-
  0xa3, 0xd1, 0x80, 0xed, 0x13, 0x10, 0x61, 0x2f, 0xf9, 0x8c, 0x22, 0x1e,
-
  0xbc, 0x7a, 0x67, 0xe6, 0x3e, 0x48, 0xfe, 0xf1, 0x71, 0x7f, 0x27, 0x02,
-
  0xd7, 0xd7, 0x7f, 0xbf, 0x77, 0x70, 0x40, 0xb8, 0xe7, 0x94, 0xc5, 0xfd,
-
  0xe9, 0x43, 0xbf, 0xc9, 0x86, 0x87, 0x19, 0x55, 0xe7, 0xc8, 0x2f, 0x6c,
-
  0x01, 0xab, 0x64, 0x77, 0xe7, 0x80, 0xc1, 0x12, 0xcc, 0xff, 0xe7, 0x51,
-
  0x5d, 0x7b, 0xbe, 0x49, 0xd9, 0x97, 0x99, 0x5f, 0x6b, 0x04, 0x1c, 0x75,
-
  0x67, 0xef, 0x64, 0x70, 0xaa, 0x14, 0xf0, 0xb5, 0x17, 0x0f, 0xb9, 0x53,
-
  0x1a, 0x17, 0x8f, 0x6d, 0x14, 0xc6, 0x9e, 0x78, 0xf5, 0xf4, 0xdf, 0x73,
-
  0x9f, 0x99, 0x66, 0x7f, 0xdc, 0xfb, 0xa7, 0xa1, 0x56, 0x6e, 0xd6, 0x6e,
-
  0xee, 0xf7, 0x33, 0x6b, 0xce, 0x64, 0x82, 0x73, 0x34, 0xcb, 0x6c, 0x92,
-
  0x3a, 0x0a, 0xf1, 0xee, 0xef, 0x20, 0x3e, 0x19, 0x5c, 0x1e, 0xcc, 0x9d,
-
  0x11, 0xf2, 0xa5, 0xe4, 0x09, 0x2e, 0x3c, 0x47, 0x26, 0x92, 0x46, 0x09,
-
  0x2c, 0x2d, 0xb4, 0x48, 0x1b, 0x25, 0x1c, 0x37, 0xd4, 0x31, 0x19, 0x18,
-
  0x96, 0xe1, 0xcd, 0xa1, 0x71, 0xa6, 0xe3, 0x87, 0xdf, 0x32, 0xcd, 0x88,
-
  0x85, 0x5b, 0xe1, 0x02, 0x0a, 0xb4, 0x69, 0x10, 0x65, 0xbd, 0x39, 0xa2,
-
  0x8a, 0x37, 0xd8, 0x48, 0xa8, 0x4d, 0x4e, 0xc5, 0x45, 0xe2, 0xa8, 0x09,
-
  0xa6, 0x0a, 0xe0, 0x05, 0x6a, 0xd1, 0xc2, 0xcf, 0xe6, 0x40, 0xc0, 0xc3,
-
  0x70, 0x25, 0x46, 0xfc, 0x3b, 0x47, 0x79, 0x8c, 0xfe, 0x35, 0x0e, 0xcb,
-
  0x38, 0x53, 0x95, 0x4f, 0x1a, 0x88, 0xa5, 0xc9, 0x57, 0x2e, 0xcf, 0x16,
-
  0x60, 0xd3, 0x19, 0xb1, 0xd6, 0x37, 0x13, 0xa0, 0x96, 0xf9, 0xc9, 0xb7,
-
  0x48, 0xaa, 0x8d, 0xe0, 0xf1, 0x83, 0xbf, 0x9a, 0xd7, 0x3c, 0x7b, 0x56,
-
  0x7f, 0xef, 0xc4, 0xe8, 0x57, 0xbc, 0x8b, 0xcf, 0x2a, 0xa4, 0xaa, 0x11,
-
  0x58, 0x40, 0xb4, 0x3b, 0x89, 0xca, 0xab, 0x9d, 0x59, 0xb2, 0x6a, 0x28,
-
  0xef, 0x35, 0x64, 0x3d, 0x2d, 0x2a, 0x48, 0xe7, 0x60, 0xfe, 0x6f, 0xde,
-
  0xdc, 0xfe, 0xb5, 0x7d, 0xc3, 0xf8, 0x0c, 0xe0, 0x22, 0xbb, 0x80, 0xfe,
-
  0x77, 0x4b, 0xd0, 0x64, 0xce, 0x33, 0x4e, 0x9e, 0xe3, 0xef, 0x72, 0x1f,
-
  0xbb, 0xfb, 0xc6, 0x5f, 0x13, 0x12, 0xa5, 0x1c, 0xbe, 0x92, 0x5c, 0x1b,
-
  0x61, 0x85, 0x12, 0x98, 0x1d, 0xea, 0x57, 0x88, 0x96, 0xc7, 0x64, 0x1b,
-
  0x8c, 0xf9, 0x77, 0x70, 0x64, 0x84, 0x72, 0xf3, 0x9f, 0xbd, 0xb7, 0xfb,
-
  0x5f, 0x9c, 0x9d, 0x76, 0xe0, 0x4c, 0x04, 0x02, 0x9f, 0x07, 0xe4, 0xbc,
-
  0x9a, 0x62, 0x26, 0x95, 0x6b, 0x3c, 0x9b, 0x12, 0x5d, 0x36, 0xf9, 0xbd,
-
  0x57, 0x9f, 0x53, 0x9b, 0x6b, 0x48, 0xda, 0xf7, 0x0f, 0x0e, 0xea, 0xd2,
-
  0x2d, 0x91, 0x78, 0xa0, 0xd5, 0x48, 0x96, 0x37, 0x8c, 0x61, 0x9e, 0x3d,
-
  0x8a, 0x47, 0x64, 0xa6, 0x97, 0x5f, 0x68, 0x36, 0x31, 0xfd, 0x42, 0xe6,
-
  0xfc, 0x39, 0x4f, 0x4c, 0x67, 0x05, 0x2b, 0x75, 0xb0, 0x87, 0x10, 0xdb,
-
  0x3a, 0x5e, 0x53, 0xca, 0x8d, 0xa6, 0xe6, 0xe0, 0x4d, 0x05, 0xb5, 0x4f,
-
  0x72, 0x3b, 0x1b, 0x5a, 0x37, 0xc5, 0x8d, 0xd8, 0x66, 0xea, 0x93, 0x90,
-
  0x89, 0x0b, 0x0e, 0x0a, 0xe5, 0xd4, 0xc1, 0xdf, 0x55, 0xbd, 0xaa, 0x19,
-
  0x57, 0xcd, 0x0a, 0x45, 0x6b, 0x61, 0x08, 0x8a, 0x3c, 0x19, 0xf9, 0x9b,
-
  0xdd, 0x53, 0xb7, 0xba, 0x85, 0x6c, 0x79, 0xd3, 0xe0, 0x95, 0x30, 0x9a,
-
  0x12, 0x6b, 0x2f, 0x07, 0xa6, 0x6e, 0xd6, 0xad, 0x66, 0x75, 0x8d, 0xa8,
-
  0xd4, 0x60, 0xe6, 0x01, 0xf4, 0x30, 0x30, 0x2c, 0xab, 0xd5, 0xc7, 0xda,
-
  0x80, 0xd9, 0xfd, 0x97, 0xdb, 0xdc, 0xb0, 0xef, 0x8c, 0x73, 0xbd, 0xba,
-
  0x5d, 0xfe, 0xa8, 0xd1, 0x46, 0xfa, 0xbb, 0x1a, 0x49, 0xeb, 0xad, 0xac,
-
  0xfd, 0x9e, 0x46, 0xd6, 0x1a, 0x6d, 0x5c, 0xfe, 0xae, 0x46, 0xba, 0x6a,
-
  0x84, 0x9b, 0x9b, 0xdb, 0xfb, 0xb2, 0x3f, 0x30, 0xfa, 0xec, 0x6e, 0xed,
-
  0xcc, 0x94, 0xc2, 0x4d, 0x8c, 0xbc, 0x54, 0x18, 0xc2, 0x43, 0x91, 0xea,
-
  0xfc, 0x82, 0xe4, 0xaf, 0xa9, 0xa0, 0x4d, 0xc1, 0x57, 0x58, 0x69, 0x3d,
-
  0x81, 0xbc, 0xe4, 0x1a, 0xe6, 0xf0, 0x23, 0x72, 0xf1, 0x07, 0xaf, 0x36,
-
  0x0e, 0x25, 0x92, 0x0b, 0x38, 0x95, 0x85, 0xbe, 0xc5, 0x29, 0x14, 0x28,
-
  0x99, 0x84, 0x4b, 0x9b, 0x68, 0xb3, 0x05, 0x57, 0xff, 0xa8, 0x7a, 0xc9,
-
  0xf6, 0xd4, 0xc5, 0xe5, 0xba, 0x9a, 0xea, 0xc4, 0x43, 0xe0, 0xa9, 0xa1,
-
  0xfa, 0x86, 0x5c, 0x2c, 0x80, 0x54, 0xb4, 0x21, 0x93, 0xad, 0xa3, 0xd5,
-
  0x45, 0xb9, 0x7c, 0x39, 0x09, 0xa9, 0x27, 0xb1, 0x38, 0x52, 0x97, 0xc5,
-
  0x43, 0xe0, 0xac, 0x95, 0x89, 0x4a, 0xcf, 0xcd, 0x4c, 0x78, 0x0e, 0x10,
-
  0xef, 0x42, 0xb5, 0x00, 0x65, 0x36, 0xca, 0xdb, 0x66, 0x90, 0xf5, 0x92,
-
  0x5c, 0x10, 0x45, 0xed, 0x68, 0xd1, 0xa1, 0x92, 0x1b, 0x0c, 0x92, 0xe7,
-
  0x50, 0xab, 0x24, 0xa8, 0xdb, 0xac, 0xaa, 0x81, 0xf3, 0x07, 0x82, 0xb5,
-
  0x6d, 0xc2, 0xf6, 0xb3, 0x2c, 0x4a, 0x66, 0x9a, 0x8f, 0x59, 0x64, 0x17,
-
  0x78, 0xa6, 0xfc, 0x37, 0x4f, 0xdc, 0x58, 0xb1, 0x56, 0x76, 0xb3, 0xce,
-
  0x63, 0x4a, 0x6f, 0x1d, 0xd6, 0x6a, 0x82, 0xdf, 0xa5, 0xcc, 0x94, 0xa5,
-
  0xf0, 0xbc, 0xfb, 0x72, 0x55, 0x0c, 0x31, 0xb6, 0xba, 0xfd, 0xa4, 0xb4,
-
  0xee, 0x57, 0x75, 0xb1, 0xbb, 0xb8, 0x68, 0x2d, 0x85, 0xa4, 0x22, 0x69,
-
  0x4e, 0xc9, 0x71, 0xe1, 0x79, 0x96, 0x64, 0x4a, 0xed, 0x55, 0x4b, 0x2b,
-
  0x4d, 0x38, 0x34, 0x27, 0xbb, 0xc7, 0x65, 0x93, 0x53, 0x26, 0xb3, 0x96,
-
  0xdd, 0x35, 0x5d, 0xd1, 0x7a, 0x91, 0x7b, 0x2e, 0x52, 0xf4, 0xd2, 0x49,
-
  0xd7, 0x2a, 0x10, 0x0d, 0x27, 0xb4, 0x80, 0x5c, 0x9a, 0xd1, 0xac, 0xdb,
-
  0x59, 0x8a, 0xa2, 0x6e, 0x54, 0xd8, 0x24, 0x2d, 0xd8, 0x76, 0xa1, 0x3b,
-
  0x10, 0x2f, 0xc1, 0xe0, 0x16, 0x61, 0x4d, 0xf4, 0x76, 0x36, 0x6e, 0x11,
-
  0x06, 0x9f, 0x94, 0x10, 0xf0, 0x99, 0x19, 0x1b, 0x0f, 0xc5, 0x6d, 0x05,
-
  0xb3, 0xe5, 0xb9, 0xb5, 0xdb, 0x9f, 0xc5, 0xb2, 0x87, 0xaa, 0x46, 0x56,
-
  0xc4, 0xba, 0xdf, 0x0b, 0xbe, 0xd2, 0x3e, 0xb8, 0xb6, 0xb2, 0xeb, 0xc2,
-
  0x4f, 0xe3, 0x71, 0x7d, 0x90, 0x55, 0xb4, 0xbd, 0x97, 0x8d, 0x26, 0xbd,
-
  0x78, 0x39, 0x42, 0xd4, 0x91, 0x7d, 0x73, 0x53, 0x5c, 0xf2, 0x19, 0x6a,
-
  0x5b, 0x88, 0xa7, 0xa4, 0xcc, 0x6e, 0xc6, 0x32, 0x5d, 0xf9, 0x85, 0x72,
-
  0x5d, 0xc9, 0xad, 0xce, 0x46, 0x16, 0x3b, 0x1e, 0xa3, 0xcb, 0xfb, 0x9e,
-
  0xbf, 0x2d, 0xe9, 0x17, 0x90, 0x2d, 0x6c, 0x28, 0xa6, 0xc2, 0x7b, 0xb9,
-
  0x25, 0x44, 0x6e, 0x8e, 0x7f, 0x02, 0x80, 0x98, 0xb9, 0x18, 0x27, 0xf6,
-
  0x59, 0xbe, 0x08, 0xc0, 0xfb, 0x1b, 0x59, 0x29, 0x58, 0xb1, 0xdb, 0x92,
-
  0x6b, 0xe1, 0x38, 0xf5, 0x8b, 0x90, 0x5f, 0xd3, 0x42, 0xaa, 0x11, 0x43,
-
  0x12, 0x45, 0x8d, 0xee, 0xe4, 0xc3, 0x24, 0x00, 0x91, 0x9a, 0x5c, 0x50,
-
  0x6e, 0x20, 0x49, 0xb3, 0x65, 0x2e, 0xeb, 0x63, 0xd4, 0xed, 0x91, 0x88,
-
  0xd8, 0xae, 0x4d, 0x56, 0xd2, 0xd4, 0xc7, 0x6e, 0x18, 0x0e, 0xcc, 0xd5,
-
  0x45, 0x64, 0x74, 0x4d, 0x40, 0xb3, 0xa5, 0x45, 0xbb, 0x0e, 0x98, 0x14,
-
  0xe0, 0xb1, 0x68, 0x2b, 0x8c, 0x2e, 0x75, 0x49, 0xe2, 0x76, 0x4a, 0x8c,
-
  0xcc, 0x2a, 0xca, 0xce, 0x45, 0x65, 0x33, 0xc6, 0x20, 0xcb, 0x06, 0x45,
-
  0x1e, 0x31, 0x6e, 0x18, 0xc8, 0x39, 0x0e, 0x86, 0xa1, 0xd4, 0xaa, 0xca,
-
  0x03, 0x98, 0xec, 0x90, 0xff, 0xd6, 0xb2, 0x6a, 0x0e, 0x82, 0x53, 0xa4,
-
  0xcf, 0x19, 0x91, 0x09, 0xa8, 0x43, 0xed, 0xe9, 0x8f, 0xae, 0x6a, 0xa0,
-
  0x37, 0x9f, 0x25, 0x3b, 0x9f, 0x3b, 0xa2, 0x94, 0xe3, 0xed, 0x7e, 0x5f,
-
  0xe9, 0x64, 0x27, 0x42, 0x12, 0x92, 0x89, 0x86, 0x7a, 0x76, 0x5a, 0x5a,
-
  0x38, 0xe4, 0xa9, 0xd2, 0x48, 0x23, 0x2d, 0x7a, 0x89, 0x99, 0xdd, 0x2e,
-
  0x57, 0xd5, 0x62, 0xeb, 0xb8, 0xc4, 0xfd, 0x10, 0x5d, 0xe9, 0x8c, 0xef,
-
  0x1e, 0x5f, 0xc9, 0xb8, 0x82, 0xcc, 0x89, 0x8e, 0x58, 0x67, 0x2a, 0x5a,
-
  0xa3, 0x17, 0x0d, 0x39, 0x02, 0xee, 0x6f, 0xc0, 0xc9, 0xbc, 0x81, 0xac,
-
  0x84, 0x93, 0xfe, 0xc4, 0x93, 0xea, 0xfc, 0xa1, 0x49, 0x7f, 0x8a, 0x4c,
-
  0x7a, 0xd5, 0x1d, 0x1c, 0xee, 0x2c, 0x59, 0x5e, 0xde, 0x50, 0x08, 0x65,
-
  0x0e, 0x57, 0x19, 0x27, 0xd1, 0x0e, 0xcd, 0x7b, 0x5d, 0x82, 0xa1, 0x09,
-
  0xfb, 0xf2, 0x4e, 0xaf, 0xd7, 0xd5, 0x9a, 0xed, 0x4a, 0xb0, 0x46, 0x21,
-
  0xbd, 0x31, 0xfb, 0x09, 0xd9, 0x92, 0xba, 0xee, 0xe0, 0xe6, 0xb8, 0x03,
-
  0x7a, 0xc6, 0x34, 0x8e, 0xb5, 0xa0, 0xa3, 0xf0, 0xfa, 0x59, 0xb7, 0x5e,
-
  0xf3, 0x85, 0x65, 0xcd, 0xbd, 0xdd, 0x26, 0x26, 0x3d, 0xce, 0xae, 0x89,
-
  0x32, 0xd9, 0x1e, 0xe0, 0xe4, 0x63, 0xae, 0x73, 0x71, 0x51, 0xa6, 0xd7,
-
  0xd8, 0xd2, 0x71, 0xfa, 0x10, 0x29, 0x7d, 0x2c, 0xb6, 0x2b, 0x76, 0x4e,
-
  0x99, 0xe3, 0x39, 0xca, 0x0a, 0x78, 0x86, 0x48, 0x26, 0x11, 0xb3, 0x24,
-
  0x6c, 0x9b, 0xe2, 0xff, 0xd0, 0xa0, 0x2a, 0xe9, 0x35, 0xa8, 0xb2, 0x85,
-
  0x18, 0x8d, 0x69, 0x13, 0x4b, 0x33, 0x5e, 0xbd, 0x7d, 0x69, 0xc3, 0x6d,
-
  0xd1, 0xb9, 0x77, 0x49, 0x40, 0x69, 0xe7, 0x4a, 0x81, 0xfe, 0xfa, 0x29,
-
  0x43, 0xd1, 0x84, 0x24, 0x41, 0xb9, 0x0a, 0xe8, 0x52, 0xbe, 0x74, 0xbd,
-
  0x30, 0x43, 0x3e, 0x06, 0xbb, 0x33, 0xe3, 0x26, 0x75, 0xc7, 0x28, 0x98,
-
  0x10, 0x51, 0x6a, 0xb1, 0x85, 0xac, 0xb5, 0xa7, 0x2e, 0xa8, 0xaf, 0x4e,
-
  0xba, 0x5b, 0x6e, 0x8f, 0xed, 0x90, 0x34, 0x4d, 0x7e, 0x41, 0xf9, 0xac,
-
  0xbd, 0x6b, 0x34, 0xea, 0x2a, 0x4b, 0x4e, 0xf6, 0x06, 0x27, 0x94, 0x35,
-
  0x0a, 0x16, 0x10, 0xe8, 0xda, 0x69, 0xf9, 0xd2, 0x42, 0xd7, 0x0a, 0x43,
-
  0x73, 0x22, 0x8a, 0x63, 0x11, 0x5c, 0x4f, 0xda, 0xee, 0x38, 0x3f, 0xea,
-
  0x77, 0x16, 0xfd, 0x87, 0x97, 0xdc, 0x25, 0x94, 0xd5, 0x2b, 0x5d, 0x2f,
-
  0x2f, 0x3b, 0xe4, 0x04, 0x33, 0x71, 0xb3, 0x94, 0x4c, 0x95, 0x82, 0x8a,
-
  0xd7, 0x13, 0x54, 0x12, 0x05, 0x5a, 0x85, 0xd0, 0xa3, 0x82, 0x06, 0x23,
-
  0x82, 0x4c, 0xca, 0xc8, 0x3d, 0xa9, 0xc0, 0x43, 0x22, 0x1a, 0xf0, 0x10,
-
  0x5c, 0x55, 0x6b, 0xee, 0x4d, 0x40, 0x90, 0x18, 0x83, 0xe4, 0x8c, 0x4b,
-
  0xf3, 0xad, 0x2e, 0x2e, 0x46, 0xf0, 0xd6, 0xd2, 0x33, 0xc3, 0x56, 0x45,
-
  0xd0, 0x13, 0x24, 0x6c, 0xc6, 0x50, 0xa5, 0xfd, 0x22, 0x31, 0xb7, 0x82,
-
  0xda, 0xd3, 0xbd, 0x40, 0xdc, 0x0a, 0x56, 0x2c, 0x54, 0x70, 0x96, 0x99,
-
  0xcb, 0x7c, 0x26, 0x64, 0x6e, 0x5d, 0xb4, 0x06, 0x77, 0x61, 0xd8, 0x6e,
-
  0x46, 0x6b, 0xc0, 0x0d, 0xc5, 0xa6, 0x47, 0xb2, 0xe1, 0x71, 0x20, 0x58,
-
  0x30, 0xb2, 0x80, 0x83, 0x2f, 0xaf, 0x45, 0x28, 0xa2, 0x3f, 0x38, 0x3a,
-
  0x11, 0x12, 0x0b, 0x6f, 0x67, 0x5a, 0x11, 0x7a, 0xc3, 0x89, 0xcf, 0x9d,
-
  0xb0, 0x2a, 0x1c, 0x57, 0x8c, 0x43, 0xbb, 0x0c, 0x78, 0x60, 0x96, 0xcb,
-
  0xeb, 0x95, 0x79, 0xc0, 0x09, 0xe0, 0xdb, 0x65, 0x6a, 0x9f, 0xa4, 0x58,
-
  0x44, 0x29, 0x18, 0xd3, 0x7a, 0x32, 0xbd, 0x8f, 0xf8, 0xa0, 0x1d, 0xf1,
-
  0x09, 0xe6, 0xe2, 0x08, 0xa0, 0x23, 0x29, 0x93, 0x90, 0x8e, 0x35, 0x0e,
-
  0xd3, 0xe2, 0x17, 0x05, 0xb4, 0xc8, 0x87, 0xe8, 0xc8, 0x4a, 0xfd, 0xc2,
-
  0xe3, 0x65, 0x9a, 0x56, 0x2d, 0xc7, 0xcf, 0x14, 0xf8, 0x65, 0x5e, 0xcc,
-
  0xcd, 0xe9, 0x64, 0x04, 0x84, 0x94, 0x63, 0x1f, 0xce, 0x03, 0xec, 0x65,
-
  0xd1, 0x10, 0xd4, 0xe3, 0xe1, 0x74, 0x16, 0x27, 0x82, 0xbb, 0x7b, 0xff,
-
  0xf8, 0xe8, 0x64, 0x60, 0x6f, 0x7d, 0x74, 0x4b, 0x3f, 0x34, 0x4e, 0x0f,
-
  0x40, 0xc7, 0xc4, 0x81, 0x2a, 0x77, 0x1b, 0x76, 0x20, 0x08, 0x40, 0x11,
-
  0x75, 0x81, 0xb7, 0x84, 0xda, 0xd1, 0x86, 0x3a, 0xe4, 0xbb, 0x1b, 0x4e,
-
  0xd8, 0x9a, 0x6a, 0xb9, 0x0d, 0x5b, 0xdf, 0xe8, 0xaa, 0x99, 0x51, 0x1c,
-
  0xd8, 0x15, 0x5c, 0x5a, 0x59, 0x8a, 0x50, 0x06, 0xae, 0x84, 0x93, 0xbd,
-
  0xfe, 0x80, 0x87, 0x8e, 0xff, 0x05, 0x43, 0xe7, 0x7a, 0x2e, 0xf2, 0x63,
-
  0xa0, 0xc3, 0x58, 0xca, 0x00, 0x52, 0x05, 0x0c, 0xd9, 0x68, 0xdf, 0x16,
-
  0xbe, 0xf1, 0x56, 0x6c, 0xc5, 0x9d, 0xf3, 0x92, 0x58, 0xa6, 0xd0, 0x09,
-
  0x9d, 0x6f, 0xfa, 0x61, 0x5e, 0x3a, 0x99, 0x37, 0x92, 0x99, 0x9c, 0x87,
-
  0x49, 0x79, 0xe5, 0x35, 0xb1, 0xea, 0x9a, 0xb8, 0xc1, 0x55, 0x25, 0x2d,
-
  0xec, 0x73, 0x2d, 0xa1, 0x31, 0xfd, 0xd8, 0x55, 0x5a, 0xa1, 0xfb, 0x82,
-
  0xa9, 0x82, 0xdf, 0x73, 0xed, 0xac, 0x59, 0x47, 0x8f, 0x4a, 0x0b, 0xde,
-
  0x58, 0xf0, 0xb3, 0xa2, 0x05, 0x90, 0xc0, 0xd1, 0xa0, 0xb9, 0x15, 0x26,
-
  0xf5, 0x37, 0xe9, 0xd0, 0xe1, 0x9b, 0xf0, 0xdc, 0x6b, 0xd7, 0x82, 0xb8,
-
  0x14, 0x49, 0x4c, 0x4b, 0xcb, 0x71, 0x8e, 0xd8, 0x9a, 0x33, 0xd6, 0x1c,
-
  0xf1, 0x59, 0x68, 0xde, 0xf4, 0xc3, 0x69, 0x57, 0xe4, 0x0a, 0x82, 0x21,
-
  0xf2, 0xdc, 0xbb, 0xaa, 0x4d, 0x57, 0x7c, 0x8a, 0x9d, 0xc0, 0x0f, 0x8f,
-
  0x92, 0xbd, 0x28, 0x7a, 0xc9, 0x31, 0x7c, 0xc8, 0x24, 0x37, 0x55, 0x3f,
-
  0xb8, 0xe6, 0xf8, 0x98, 0x20, 0xe8, 0x4a, 0x45, 0x01, 0x14, 0xc0, 0xe9,
-
  0xf1, 0x2f, 0x54, 0x0b, 0xc7, 0x29, 0xce, 0xc1, 0x7c, 0xb7, 0xdc, 0xc7,
-
  0x95, 0x99, 0x0a, 0x90, 0xd6, 0x1b, 0xaf, 0xac, 0x0a, 0x65, 0xdd, 0x16,
-
  0x2c, 0x59, 0x5a, 0xe6, 0x8c, 0xd3, 0x8c, 0xfd, 0x20, 0xcd, 0x91, 0x5a,
-
  0xb8, 0xd0, 0x77, 0x6a, 0x4c, 0xdc, 0x6b, 0x8a, 0xaf, 0x83, 0x6d, 0x59,
-
  0x2a, 0xd4, 0x04, 0x35, 0xa7, 0x06, 0xc2, 0x9c, 0x69, 0xab, 0x00, 0xaf,
-
  0xb5, 0x96, 0xcb, 0x5a, 0xe4, 0x36, 0xad, 0xad, 0x2d, 0xcd, 0x1a, 0x80,
-
  0xe1, 0xd7, 0x43, 0x08, 0x57, 0x99, 0x16, 0x2d, 0xdd, 0xd8, 0x1b, 0xac,
-
  0x36, 0x3a, 0xc1, 0x77, 0x12, 0xfb, 0xe1, 0x59, 0x4a, 0x31, 0xff, 0xa9,
-
  0xb9, 0xdf, 0x7d, 0x05, 0x60, 0x75, 0xcd, 0x35, 0x75, 0x01, 0x88, 0x7c,
-
  0x0b, 0x3e, 0xb2, 0x5d, 0x8b, 0x4d, 0x32, 0xcc, 0x87, 0xab, 0xbd, 0xe6,
-
  0xf6, 0x4d, 0x5f, 0xa1, 0x8c, 0x1c, 0x2a, 0xaf, 0x8f, 0x0d, 0xd1, 0x8b,
-
  0xa1, 0x18, 0x17, 0x0f, 0x0e, 0x7c, 0xad, 0xc7, 0x11, 0xd6, 0x6c, 0xc5,
-
  0x43, 0xe3, 0xf6, 0x2f, 0x62, 0x08, 0xbe, 0x14, 0x2b, 0xd1, 0x75, 0x7a,
-
  0x1f, 0x5c, 0xf2, 0xd7, 0xb7, 0xd7, 0x82, 0x3b, 0xe4, 0xf5, 0xb4, 0x29,
-
  0x66, 0x0e, 0x86, 0xca, 0x52, 0xdb, 0x80, 0x3f, 0x11, 0xe8, 0x5c, 0xaa,
-
  0x52, 0x2b, 0x66, 0xc1, 0x50, 0x60, 0x34, 0x49, 0x8d, 0x32, 0xea, 0x56,
-
  0xe0, 0x07, 0xa6, 0xe2, 0x2f, 0xa9, 0x08, 0xbc, 0x0e, 0x5a, 0x5f, 0x4a,
-
  0x67, 0x88, 0xe1, 0x41, 0x5e, 0xe3, 0x3f, 0x69, 0xa9, 0xb6, 0x88, 0xff,
-
  0xb0, 0xcc, 0xfe, 0x4d, 0xc2, 0x64, 0x8f, 0xaf, 0x1b, 0x06, 0xaa, 0xe6,
-
  0x59, 0xa2, 0xb6, 0x8b, 0x63, 0x78, 0xab, 0x5b, 0x62, 0x2f, 0x13, 0x1b,
-
  0x09, 0x42, 0xcc, 0x0b, 0x23, 0xc4, 0x35, 0x23, 0x4a, 0xd7, 0x96, 0x9d,
-
  0x2d, 0x59, 0xcb, 0x8b, 0x2b, 0x07, 0x62, 0x29, 0xdf, 0xac, 0x3a, 0x2a,
-
  0x7c, 0x8c, 0x3a, 0x12, 0x11, 0xa7, 0xe5, 0xb7, 0xb5, 0x76, 0x2b, 0x89,
-
  0x1a, 0x31, 0x20, 0x77, 0xaf, 0x93, 0x15, 0xc7, 0x74, 0xca, 0x87, 0x1b,
-
  0x72, 0xb6, 0x8c, 0x20, 0xcd, 0x47, 0x0e, 0xc1, 0x1a, 0x33, 0xba, 0x1d,
-
  0x3e, 0xaa, 0x90, 0x3b, 0xc3, 0xcf, 0xd2, 0x2a, 0xf4, 0x60, 0xaf, 0xad,
-
  0xf9, 0xd6, 0x00, 0xa3, 0x0d, 0x0c, 0xc5, 0x37, 0x43, 0xbe, 0x18, 0x88,
-
  0x15, 0xde, 0xbb, 0xeb, 0xf6, 0x5d, 0x8a, 0x05, 0x29, 0x04, 0x04, 0xf5,
-
  0x91, 0x2f, 0x36, 0x35, 0x64, 0x9c, 0xe5, 0x7a, 0x95, 0xa6, 0x58, 0x48,
-
  0xf1, 0x10, 0x89, 0xac, 0x6c, 0xb7, 0xb6, 0xd5, 0xb0, 0x81, 0xe0, 0xb6,
-
  0x71, 0xb4, 0x44, 0x93, 0xca, 0x6f, 0x2e, 0xfd, 0xf3, 0xb4, 0xce, 0x17,
-
  0xeb, 0x71, 0x13, 0xe4, 0x48, 0xd9, 0x56, 0xe6, 0x17, 0x6d, 0xd2, 0xd3,
-
  0xc9, 0xd4, 0xba, 0xb3, 0x9d, 0xcc, 0xc2, 0x6d, 0x24, 0xf2, 0xf4, 0x3a,
-
  0x59, 0x12, 0x32, 0x37, 0x53, 0x9e, 0x8c, 0x8a, 0xfc, 0x37, 0xad, 0xd3,
-
  0x83, 0x2b, 0x35, 0x2b, 0x8c, 0x68, 0x57, 0x13, 0x6e, 0xd6, 0x57, 0x84,
-
  0x8e, 0xee, 0x73, 0x1c, 0x1a, 0x92, 0xc8, 0x09, 0x62, 0x0b, 0xf1, 0xd3,
-
  0x59, 0xad, 0x42, 0xd2, 0xfa, 0xaa, 0xc8, 0x41, 0x2a, 0xaf, 0xe2, 0x36,
-
  0xc4, 0x3c, 0xc7, 0x54, 0x2a, 0xbd, 0xc9, 0x38, 0xd7, 0xe5, 0x26, 0x92,
-
  0x9d, 0x22, 0x57, 0x3a, 0x84, 0x3f, 0xe1, 0x99, 0xa8, 0x90, 0x51, 0x66,
-
  0x77, 0xec, 0xb5, 0x4f, 0x43, 0xf1, 0x67, 0x7d, 0x7d, 0x86, 0xb5, 0xb0,
-
  0xe2, 0x6b, 0x6c, 0x8f, 0x48, 0xc5, 0x7b, 0x7f, 0xa3, 0x99, 0xcf, 0x29,
-
  0x65, 0xe6, 0x35, 0xa5, 0xb2, 0xe3, 0x19, 0x05, 0x2c, 0x87, 0x66, 0xc3,
-
  0x86, 0x54, 0xa3, 0xc0, 0xa1, 0x6c, 0x9a, 0xf3, 0x6d, 0xf7, 0xe3, 0x09,
-
  0xf8, 0x9b, 0xd7, 0x1f, 0x53, 0xcc, 0x5b, 0x72, 0x65, 0x3a, 0x81, 0xbd,
-
  0x48, 0x06, 0x31, 0x70, 0xf8, 0xf5, 0x2d, 0xd9, 0x7a, 0xbd, 0xc1, 0xac,
-
  0x0a, 0x39, 0xeb, 0x8b, 0x8d, 0x45, 0x5f, 0x80, 0x1c, 0x22, 0x32, 0x96,
-
  0xeb, 0x94, 0xcc, 0xfc, 0x80, 0x37, 0x7e, 0x7f, 0x8c, 0x72, 0x70, 0x63,
-
  0x7e, 0xc7, 0x95, 0xf2, 0x76, 0xaf, 0x2d, 0xd7, 0xd8, 0xe0, 0xc0, 0x17,
-
  0x69, 0x92, 0xfd, 0x5d, 0xef, 0xc5, 0x15, 0x37, 0xc1, 0x74, 0x8c, 0xfb,
-
  0xf9, 0x81, 0xad, 0x47, 0x55, 0xf2, 0x02, 0x5f, 0x79, 0xe8, 0x82, 0x1b,
-
  0x4c, 0x19, 0x87, 0x13, 0xf6, 0x81, 0xd2, 0xf2, 0x07, 0xef, 0x6c, 0xd4,
-
  0x4e, 0x98, 0x4a, 0xce, 0x8a, 0xfc, 0x65, 0x08, 0x9c, 0xbc, 0xcf, 0x2f,
-
  0xe0, 0xd2, 0xfb, 0x41, 0xad, 0x68, 0x25, 0xaa, 0x57, 0x57, 0x3f, 0xf8,
-
  0xcd, 0x6c, 0xda, 0x6d, 0xb6, 0x26, 0x34, 0x1b, 0x5e, 0x61, 0x75, 0x70,
-
  0x68, 0x52, 0x75, 0x93, 0x97, 0xd7, 0x02, 0x6f, 0x85, 0xb9, 0x70, 0x6f,
-
  0x0b, 0x77, 0x5e, 0x59, 0x5f, 0x12, 0x2c, 0xf6, 0xa1, 0x5f, 0x0e, 0xbd,
-
  0xdf, 0x7f, 0xaf, 0xe6, 0x1a, 0xcf, 0xe2, 0xb8, 0xd8, 0xa0, 0xce, 0xea,
-
  0xf2, 0x96, 0x95, 0x53, 0x3b, 0xa3, 0x18, 0x44, 0xe4, 0xe6, 0x72, 0x83,
-
  0x69, 0x90, 0x84, 0xb5, 0x63, 0x46, 0xcb, 0xda, 0x2b, 0x11, 0x07, 0xbb,
-
  0xd5, 0xee, 0xca, 0x09, 0x5b, 0x84, 0x60, 0x3a, 0x71, 0x0d, 0xc8, 0xed,
-
  0x8e, 0x8c, 0x97, 0x52, 0xa2, 0xb9, 0x9a, 0x27, 0x67, 0x73, 0xd5, 0x2e,
-
  0x11, 0xc9, 0xf0, 0x46, 0x1d, 0x9e, 0xa9, 0xf0, 0x6e, 0xf2, 0x21, 0xfd,
-
  0x90, 0x57, 0xec, 0xa6, 0x33, 0xa4, 0x76, 0x32, 0xe8, 0x1f, 0x27, 0x3b,
-
  0xfd, 0xec, 0x17, 0x09, 0xf5, 0xf3, 0x78, 0xcb, 0xe6, 0x7a, 0xfc, 0xed,
-
  0xbe, 0x58, 0xb3, 0xf6, 0x87, 0x60, 0x5e, 0x66, 0x3d, 0x6b, 0x1f, 0x6d,
-
  0x08, 0xc1, 0xa9, 0xb9, 0x9b, 0xad, 0x3e, 0x18, 0x1a, 0x71, 0x9b, 0x71,
-
  0x6d, 0x77, 0x36, 0x37, 0x9d, 0x20, 0x7f, 0x79, 0x5b, 0x5c, 0x59, 0x11,
-
  0x49, 0xca, 0x0c, 0xeb, 0x56, 0x79, 0x5f, 0x6c, 0x29, 0xf1, 0x79, 0xf6,
-
  0x3f, 0x9b, 0xde, 0xd1, 0x11, 0xbd, 0x5c, 0xcc, 0x6d, 0xe2, 0x6a, 0x34,
-
  0x1c, 0xac, 0x96, 0x31, 0xb4, 0xb5, 0x68, 0x2f, 0x30, 0x29, 0x48, 0x78,
-
  0x95, 0x3d, 0x38, 0x0a, 0xd2, 0x50, 0xf2, 0x9b, 0xbc, 0x80, 0xe6, 0xed,
-
  0x5e, 0xf1, 0x5a, 0x90, 0xd3, 0x57, 0xfc, 0x6a, 0x58, 0x94, 0xb0, 0x7f,
-
  0x8f, 0xc5, 0x33, 0xd4, 0xb2, 0xf7, 0x3a, 0x13, 0x42, 0x1f, 0x9e, 0xbf,
-
  0x6b, 0x21, 0xbe, 0xbc, 0x50, 0x3b, 0x53, 0xc3, 0x78, 0x64, 0x3f, 0x5a,
-
  0x51, 0xca, 0x45, 0x6d, 0xd6, 0x98, 0x3c, 0xc7, 0x31, 0x12, 0x74, 0x6f,
-
  0x53, 0x81, 0x2b, 0x91, 0x2e, 0x5d, 0x0b, 0xab, 0xda, 0x42, 0xa3, 0x3c,
-
  0xa0, 0x6d, 0xcc, 0xe1, 0x1a, 0x07, 0xaa, 0xc5, 0xd6, 0x9a, 0x38, 0x58,
-
  0xda, 0xac, 0x5f, 0x0b, 0x2b, 0x89, 0x0c, 0xdd, 0xab, 0x5d, 0x62, 0x8d,
-
  0x5d, 0xcd, 0x1a, 0xb9, 0x62, 0xfa, 0x62, 0xd8, 0x22, 0x85, 0x76, 0x7b,
-
  0xcc, 0xfa, 0x55, 0xb7, 0x77, 0x05, 0x00, 0xed, 0x8f, 0x58, 0xbf, 0xb6,
-
  0x98, 0x7e, 0x29, 0xf4, 0xc7, 0x23, 0x16, 0xab, 0x20, 0x21, 0x68, 0x85,
-
  0x6d, 0x68, 0xec, 0x68, 0xa7, 0xca, 0xba, 0x24, 0xa8, 0x93, 0x05, 0x97,
-
  0x2a, 0x47, 0x8e, 0x83, 0x0b, 0x18, 0x85, 0xc0, 0x1f, 0xb4, 0x11, 0x6a,
-
  0x3b, 0xb7, 0x99, 0x1b, 0xec, 0x9a, 0xb6, 0x7a, 0xa4, 0xac, 0x4e, 0x44,
-
  0x85, 0xdc, 0xb2, 0xec, 0x91, 0x52, 0x89, 0x14, 0xd0, 0xad, 0xb9, 0x05,
-
  0x9b, 0xb2, 0x05, 0xc9, 0xb9, 0xd1, 0xba, 0x8a, 0x69, 0x97, 0x76, 0xda,
-
  0x27, 0xb4, 0xbc, 0x72, 0x4a, 0x09, 0x59, 0xe2, 0x05, 0x9b, 0x49, 0xe3,
-
  0x5c, 0xd0, 0x74, 0xa0, 0x4b, 0x13, 0xd8, 0xbb, 0xeb, 0x44, 0xee, 0xaa,
-
  0x09, 0xe0, 0x7b, 0x60, 0x78, 0x1d, 0x43, 0x8b, 0xb4, 0x84, 0x71, 0x91,
-
  0x4e, 0xad, 0x5a, 0xe1, 0x42, 0x2b, 0xbe, 0x30, 0x67, 0xb0, 0xf5, 0x95,
-
  0xc5, 0xa9, 0x49, 0x07, 0x4e, 0x7c, 0xa5, 0x2c, 0x58, 0x82, 0xd6, 0xc8,
-
  0x3d, 0x57, 0x9a, 0x76, 0xd3, 0x4a, 0x4b, 0xf8, 0x11, 0x93, 0x8e, 0x05,
-
  0xb0, 0x1b, 0x4a, 0x60, 0x97, 0x3e, 0xa2, 0x45, 0xc9, 0x1c, 0x5d, 0x64,
-
  0x84, 0x71, 0x4f, 0xb6, 0x49, 0x33, 0x82, 0x37, 0x1f, 0xdf, 0xf5, 0xe7,
-
  0x9a, 0x41, 0x48, 0xd9, 0x3d, 0xac, 0x21, 0x5c, 0x54, 0x83, 0x6a, 0x07,
-
  0x2a, 0xf5, 0x68, 0x26, 0x05, 0x9b, 0xce, 0x51, 0x16, 0xef, 0x9a, 0xc0,
-
  0xe8, 0x39, 0x89, 0xb0, 0x61, 0x16, 0x36, 0x1f, 0x41, 0x1c, 0xff, 0x0e,
-
  0x1e, 0xd0, 0x11, 0x97, 0xb6, 0x44, 0xe8, 0x73, 0x91, 0xbc, 0xcb, 0xa7,
-
  0xef, 0x6f, 0xcf, 0x5e, 0x59, 0xc7, 0xfe, 0xc8, 0xb4, 0x79, 0x7b, 0x86,
-
  0xd4, 0x82, 0x05, 0x34, 0xcc, 0xff, 0x50, 0x8b, 0xd5, 0xdc, 0xdc, 0xf6,
-
  0xc7, 0xc1, 0xfb, 0xa3, 0x93, 0x7e, 0xb2, 0x80, 0xe2, 0x12, 0x83, 0x93,
-
  0xfd, 0x37, 0x1f, 0x07, 0xe6, 0x51, 0xfb, 0xd8, 0x4d, 0x8b, 0xdc, 0x48,
-
  0x4f, 0xfd, 0x69, 0x56, 0x18, 0x66, 0x3b, 0x52, 0xda, 0xa1, 0x3c, 0x15,
-
  0x1c, 0xd2, 0x49, 0xe9, 0x60, 0x5d, 0xee, 0x2e, 0x27, 0x63, 0x97, 0x70,
-
  0xc0, 0x7e, 0x0f, 0xe4, 0x47, 0x4e, 0x9c, 0xb5, 0x25, 0x6f, 0x54, 0xc5,
-
  0xd0, 0xd4, 0x9e, 0x64, 0xf0, 0x7e, 0xfb, 0xf0, 0xc7, 0xbe, 0x86, 0x9e,
-
  0x7c, 0xfe, 0xfc, 0xb9, 0x19, 0x9c, 0x40, 0x5a, 0x4f, 0x95, 0xcd, 0xcd,
-
  0xf5, 0xf7, 0xf6, 0x92, 0xed, 0x83, 0xfe, 0x91, 0xbe, 0x70, 0x31, 0xbd,
-
  0x79, 0xb1, 0xf4, 0xd2, 0xa8, 0x07, 0xa3, 0x6c, 0x6a, 0xfe, 0x33, 0x37,
-
  0xf7, 0x5f, 0x97, 0xf1, 0x83, 0x5f, 0xb5, 0x0c, 0x04, 0x00,
+
  0x7b, 0x7f, 0xdb, 0xc6, 0xb5, 0x3f, 0x0a, 0xff, 0x9f, 0x57, 0x81, 0xcd,
+
  0x9e, 0xfe, 0x24, 0xb5, 0x04, 0x75, 0xf3, 0x2d, 0x8a, 0x93, 0x13, 0x45,
+
  0x56, 0x62, 0xef, 0xda, 0x96, 0x6a, 0xca, 0x4d, 0xba, 0x9b, 0x7c, 0x7c,
+
  0x40, 0x12, 0x94, 0x10, 0x93, 0x00, 0x0b, 0x80, 0x92, 0x95, 0xee, 0x9e,
+
  0xd7, 0xfe, 0xac, 0xeb, 0xcc, 0x00, 0x33, 0xa0, 0x44, 0x59, 0xae, 0xbb,
+
  0xf7, 0x73, 0x76, 0x77, 0x2c, 0x89, 0x04, 0x06, 0x83, 0x99, 0x35, 0xeb,
+
  0xbe, 0xbe, 0x2b, 0x8a, 0x6e, 0xfa, 0xbf, 0x77, 0xf4, 0xdf, 0x3b, 0xf8,
+
  0x3f, 0xf8, 0xf9, 0x45, 0x14, 0x9d, 0x96, 0xc5, 0xaf, 0xe9, 0xb8, 0x0e,
+
  0x5f, 0xfb, 0xee, 0xdd, 0x7f, 0x47, 0xfc, 0x3f, 0xb8, 0xe7, 0x67, 0xf8,
+
  0xf9, 0xc5, 0xca, 0xb1, 0xb7, 0x23, 0x7b, 0xc3, 0x7f, 0xbf, 0xdb, 0x8a,
+
  0x6e, 0xba, 0xe1, 0xbf, 0xa3, 0x4d, 0xba, 0xe1, 0x9d, 0x3c, 0xe1, 0x29,
+
  0xfe, 0xfe, 0xee, 0xdd, 0xea, 0x87, 0xfc, 0x8c, 0xb3, 0xc2, 0x7f, 0xb6,
+
  0xf1, 0xbe, 0x9f, 0xdf, 0xe1, 0xaf, 0xf0, 0xc9, 0x17, 0x5f, 0xbc, 0x3e,
+
  0x7c, 0x75, 0xac, 0xb7, 0x8e, 0x97, 0xe5, 0x2c, 0x8a, 0xa3, 0xba, 0x4c,
+
  0xf2, 0x6a, 0x9a, 0x96, 0x51, 0x12, 0xbd, 0x7d, 0xf3, 0xf2, 0x8b, 0x2f,
+
  0x86, 0x7f, 0x7d, 0x7d, 0x72, 0x3a, 0x7c, 0x31, 0x6c, 0x5c, 0xf6, 0xb7,
+
  0x62, 0x51, 0x67, 0x45, 0x5e, 0xc1, 0xf4, 0xe1, 0xa2, 0xea, 0x97, 0x2f,
+
  0xbe, 0x78, 0x76, 0x3c, 0x3c, 0x7a, 0xf3, 0xe2, 0xf4, 0xec, 0xc5, 0xc9,
+
  0xeb, 0xc6, 0x95, 0x51, 0x56, 0x45, 0x30, 0x54, 0x5d, 0x14, 0xb3, 0x68,
+
  0x5a, 0x94, 0x66, 0xf8, 0x32, 0xcb, 0xcf, 0xa3, 0x49, 0x52, 0x27, 0xd1,
+
  0xb4, 0x2c, 0xe6, 0x11, 0x7e, 0x53, 0xc0, 0x75, 0x55, 0x5a, 0x5e, 0xa6,
+
  0xe5, 0x20, 0x7a, 0x51, 0x47, 0xd5, 0x72, 0xb1, 0x28, 0xca, 0xba, 0xd2,
+
  0xe1, 0xea, 0x8b, 0xb4, 0x4a, 0xa3, 0x45, 0x59, 0xd4, 0xc5, 0xb8, 0x98,
+
  0x55, 0x07, 0xd1, 0xb3, 0x17, 0x47, 0x67, 0xfd, 0xe8, 0xfb, 0x17, 0x2f,
+
  0x8f, 0xe1, 0xdf, 0xb3, 0x53, 0xfa, 0x67, 0xd8, 0x8f, 0x7e, 0x38, 0x39,
+
  0x7d, 0x7e, 0xfc, 0x46, 0x7f, 0xc2, 0x07, 0xd1, 0xf3, 0x33, 0xfc, 0x96,
+
  0x7e, 0x0c, 0xfb, 0x3a, 0xdc, 0x8b, 0x57, 0x87, 0xf8, 0x21, 0xfe, 0xc0,
+
  0x6b, 0x5e, 0x3e, 0xa3, 0x3f, 0xf1, 0x07, 0xfc, 0xf9, 0xea, 0xcf, 0x67,
+
  0x30, 0xf4, 0xe9, 0xc9, 0xe9, 0x3e, 0xff, 0x0b, 0x1f, 0xbd, 0x39, 0x7b,
+
  0x75, 0xca, 0xff, 0xd2, 0x1f, 0x43, 0xf8, 0x63, 0x78, 0x74, 0x6a, 0x86,
+
  0x1b, 0xd2, 0x0c, 0x86, 0xaf, 0xbe, 0xa3, 0x7f, 0x86, 0xf8, 0x2f, 0x7f,
+
  0x40, 0x73, 0x3a, 0x3b, 0x7e, 0xf9, 0xfa, 0x18, 0x46, 0x3c, 0xa3, 0xab,
+
  0x7e, 0x1c, 0x46, 0x49, 0x3e, 0x81, 0x1f, 0xc3, 0x41, 0x74, 0x76, 0x91,
+
  0x46, 0xe3, 0x62, 0x3e, 0xc7, 0x0f, 0x60, 0xad, 0x74, 0xb8, 0x49, 0x5a,
+
  0x65, 0xe7, 0x79, 0x3a, 0xc1, 0x55, 0xb9, 0x2a, 0xca, 0xf7, 0xd1, 0x55,
+
  0x56, 0x5f, 0x14, 0xcb, 0x3a, 0x5a, 0xc2, 0x0a, 0x45, 0x59, 0x5e, 0xa7,
+
  0x65, 0x32, 0xc6, 0x2d, 0x18, 0x7c, 0xd1, 0x58, 0xee, 0x62, 0x0a, 0x6b,
+
  0x5b, 0xc1, 0x42, 0x8e, 0x96, 0xd5, 0xac, 0x48, 0x26, 0xf0, 0x01, 0xde,
+
  0x32, 0x5d, 0xce, 0x60, 0xe5, 0xb3, 0xf1, 0xfb, 0x2a, 0x9a, 0x65, 0xef,
+
  0x69, 0x15, 0x3f, 0x5c, 0xeb, 0x0a, 0xf7, 0x79, 0xd0, 0x64, 0x09, 0x2b,
+
  0x9c, 0xc7, 0x66, 0xb9, 0xb3, 0x71, 0x82, 0x0f, 0x80, 0x45, 0x81, 0x49,
+
  0x47, 0xcb, 0x05, 0x0e, 0xd7, 0xa7, 0x45, 0x8c, 0x16, 0x45, 0x05, 0x77,
+
  0x0d, 0x87, 0x2f, 0x61, 0xea, 0x79, 0x9e, 0xd2, 0x44, 0xaa, 0x3e, 0xfc,
+
  0x51, 0xbc, 0xcf, 0x52, 0xf8, 0x65, 0x9a, 0xcd, 0x52, 0xde, 0x69, 0x33,
+
  0x1c, 0x52, 0x54, 0x99, 0x56, 0xcb, 0x79, 0x4a, 0xef, 0x3e, 0x2f, 0xca,
+
  0x74, 0x10, 0x1d, 0x56, 0xd1, 0x75, 0xb1, 0x84, 0x77, 0x9b, 0xcd, 0x60,
+
  0xe7, 0xd3, 0x68, 0x94, 0xce, 0x8a, 0xab, 0x3e, 0xee, 0x74, 0x94, 0x2f,
+
  0xe7, 0x23, 0xb8, 0x05, 0xa6, 0x3f, 0x4d, 0x93, 0x7a, 0x09, 0xb7, 0xd2,
+
  0x65, 0x3a, 0xdc, 0x3c, 0x81, 0xb7, 0x80, 0x7b, 0xcb, 0xe8, 0x22, 0x85,
+
  0xb7, 0xac, 0x16, 0x59, 0x7b, 0x25, 0x80, 0xee, 0x16, 0xc5, 0x55, 0x5a,
+
  0xc2, 0x1a, 0x8e, 0xae, 0x23, 0x78, 0xed, 0x11, 0xd3, 0x23, 0x12, 0x61,
+
  0x94, 0xc0, 0x03, 0x0d, 0x29, 0xc6, 0x65, 0x3a, 0x4b, 0x6a, 0xb8, 0xce,
+
  0x3c, 0x6a, 0x00, 0xfb, 0x99, 0xa6, 0x3a, 0x9c, 0xdc, 0xba, 0xb9, 0xbf,
+
  0x45, 0x37, 0x4f, 0xd2, 0x3a, 0xc9, 0x66, 0x15, 0x3c, 0x0e, 0xcf, 0x87,
+
  0x5c, 0x83, 0xdb, 0x88, 0x47, 0x21, 0x8a, 0xaa, 0xeb, 0xbc, 0x4e, 0x3e,
+
  0xd0, 0xe3, 0x85, 0x54, 0xe3, 0x49, 0xba, 0x48, 0xf3, 0x49, 0x9a, 0xd7,
+
  0x83, 0xe8, 0xaf, 0xf0, 0xba, 0xd3, 0x0c, 0x16, 0x20, 0x91, 0x71, 0xe0,
+
  0xb1, 0xb0, 0xd7, 0xe3, 0x32, 0xa3, 0x03, 0xa5, 0xc3, 0x65, 0x79, 0xf4,
+
  0xe6, 0xfb, 0xa3, 0x68, 0xff, 0xcb, 0x27, 0x8f, 0xec, 0x6b, 0xe1, 0xbd,
+
  0xe3, 0x24, 0x87, 0x97, 0x4d, 0xc7, 0xd9, 0xf4, 0x3a, 0x9a, 0x2f, 0x67,
+
  0x75, 0xb6, 0x80, 0x95, 0xc6, 0x23, 0x88, 0x27, 0x68, 0x91, 0xc0, 0x71,
+
  0xc1, 0x25, 0xa3, 0x0f, 0xe8, 0xb5, 0xaf, 0xca, 0xac, 0xc6, 0x93, 0x46,
+
  0xdf, 0xc1, 0xe4, 0x52, 0x7b, 0x9e, 0x90, 0xa2, 0xe0, 0x39, 0x23, 0x20,
+
  0x24, 0x58, 0x5c, 0xdc, 0x94, 0xbf, 0x2f, 0x0b, 0xba, 0x18, 0xd7, 0x1f,
+
  0xdf, 0x25, 0xa9, 0x60, 0x22, 0x07, 0x5f, 0x58, 0xde, 0xd2, 0xbb, 0xa8,
+
  0xeb, 0xc5, 0xc1, 0xf6, 0x76, 0x95, 0xd5, 0xe9, 0xe0, 0x1f, 0x45, 0x9e,
+
  0xf6, 0xeb, 0xab, 0xa2, 0x5f, 0x5f, 0x94, 0x69, 0xfa, 0xcf, 0x01, 0x50,
+
  0x71, 0xcf, 0x5c, 0x0b, 0xb3, 0xb9, 0x96, 0xe9, 0x9e, 0xa7, 0x70, 0x96,
+
  0xd3, 0xbf, 0x2f, 0xd3, 0x1c, 0x9f, 0x03, 0xb3, 0x4b, 0x66, 0x8b, 0x8b,
+
  0x04, 0xf6, 0x37, 0x05, 0x82, 0xc4, 0x03, 0x0f, 0x24, 0x83, 0x73, 0x5d,
+
  0x56, 0xf8, 0xec, 0xbf, 0xfd, 0x12, 0x78, 0xec, 0x94, 0x9e, 0x0a, 0xff,
+
  0x0e, 0xd2, 0x0f, 0xc9, 0x1c, 0x5e, 0x19, 0x1f, 0xb6, 0x8d, 0x54, 0xf6,
+
  0xb7, 0xdd, 0x78, 0x77, 0x67, 0xe7, 0x97, 0x41, 0xfd, 0xa1, 0xee, 0xdd,
+
  0xf2, 0x8e, 0x9d, 0x1d, 0xe7, 0x1e, 0xbc, 0x78, 0x13, 0x57, 0x22, 0x9a,
+
  0x01, 0x1d, 0xe1, 0x04, 0x7e, 0x4b, 0xcb, 0xa2, 0xda, 0xba, 0xe5, 0x58,
+
  0x49, 0xfc, 0x5b, 0xeb, 0xd9, 0xaf, 0xd3, 0x8a, 0x48, 0xc9, 0xbe, 0x71,
+
  0x94, 0x94, 0x40, 0xce, 0x85, 0x61, 0x68, 0x29, 0x9c, 0xa2, 0x11, 0x9c,
+
  0x64, 0x5d, 0x1f, 0x38, 0x7c, 0x70, 0x35, 0x70, 0xbd, 0x04, 0x8e, 0x6f,
+
  0x0e, 0x37, 0xe4, 0xe9, 0x87, 0xda, 0x9c, 0xc2, 0x22, 0x4a, 0x93, 0xf1,
+
  0x45, 0x54, 0xc0, 0x9e, 0x94, 0xa1, 0xad, 0x70, 0xa7, 0x94, 0x94, 0xe3,
+
  0x8b, 0xec, 0x12, 0xd6, 0xe4, 0xcb, 0x2f, 0x1f, 0xc5, 0xf0, 0xcf, 0x97,
+
  0xbf, 0x6c, 0x5f, 0x16, 0x33, 0x58, 0xa2, 0x07, 0xbf, 0x6c, 0xe3, 0xfe,
+
  0xff, 0x23, 0xe9, 0x8f, 0xfa, 0xe3, 0x7f, 0x0e, 0x2e, 0xea, 0xf9, 0xac,
+
  0xd7, 0x49, 0x56, 0x49, 0x0e, 0xff, 0xcd, 0x8b, 0x65, 0x5e, 0x1b, 0x52,
+
  0x2a, 0x72, 0xa2, 0x09, 0xe5, 0x53, 0xb3, 0x2c, 0x87, 0xc3, 0x8b, 0x34,
+
  0x8f, 0x14, 0x86, 0x87, 0x17, 0x4e, 0xae, 0x3d, 0xe8, 0xf5, 0xf8, 0x02,
+
  0x57, 0x00, 0x68, 0x0b, 0xa8, 0x5c, 0x16, 0xa2, 0xce, 0xe0, 0xed, 0xe0,
+
  0xe6, 0x9c, 0xb8, 0x17, 0x8d, 0xc6, 0xcf, 0xcb, 0xe0, 0xd2, 0xa2, 0x9c,
+
  0xc0, 0xc7, 0xcb, 0x7c, 0x96, 0x56, 0xcc, 0x10, 0x60, 0x49, 0x74, 0xb8,
+
  0xf8, 0xbf, 0xfa, 0x51, 0x1c, 0xc3, 0xec, 0xe1, 0xc8, 0xa6, 0xb3, 0x81,
+
  0x37, 0x5b, 0x77, 0x4e, 0x91, 0x4a, 0x25, 0xfc, 0x80, 0x26, 0x3e, 0xcf,
+
  0x3e, 0xc0, 0xf8, 0xf0, 0xa7, 0x73, 0xb0, 0xf0, 0xfd, 0xf8, 0x89, 0xa1,
+
  0xd7, 0xea, 0x5e, 0x96, 0x08, 0x36, 0x76, 0x01, 0x17, 0x2f, 0x91, 0xf9,
+
  0xb2, 0x2c, 0x83, 0x9b, 0x81, 0x87, 0x9c, 0xc3, 0x9e, 0xc1, 0x3e, 0x21,
+
  0x9d, 0xe3, 0x36, 0xc2, 0x9a, 0xbc, 0x06, 0x7a, 0x12, 0x0e, 0xe6, 0x1c,
+
  0x88, 0x59, 0x5a, 0xd7, 0x37, 0x6f, 0xa2, 0xa5, 0xea, 0x83, 0xdd, 0x00,
+
  0x61, 0x77, 0xdd, 0x01, 0x94, 0x78, 0xb0, 0xd7, 0xba, 0xfc, 0x47, 0xe0,
+
  0xe7, 0x91, 0x3d, 0x57, 0x30, 0x85, 0x7f, 0xfc, 0xd3, 0x21, 0xcc, 0x2b,
+
  0xfc, 0x3a, 0xcb, 0x2f, 0x8b, 0xf7, 0xb0, 0x46, 0x24, 0x85, 0x93, 0xe6,
+
  0x72, 0x02, 0x03, 0x9b, 0x2f, 0x6a, 0x23, 0xe2, 0x70, 0x67, 0xe0, 0xa3,
+
  0x51, 0x32, 0x9a, 0x5d, 0x47, 0x17, 0xc9, 0x65, 0x8a, 0x6f, 0xbd, 0x00,
+
  0x4a, 0xc6, 0x75, 0x00, 0x09, 0x33, 0x23, 0xa6, 0x21, 0x6c, 0x65, 0x52,
+
  0x2c, 0x47, 0xc0, 0x9a, 0x90, 0xa5, 0xf0, 0xf2, 0x24, 0x97, 0x45, 0x36,
+
  0xc1, 0x4b, 0x75, 0xb8, 0xea, 0x22, 0x85, 0x5b, 0xe8, 0xb9, 0x24, 0xcf,
+
  0x80, 0x13, 0xe3, 0x44, 0xe9, 0x30, 0x66, 0x35, 0x4a, 0x46, 0xe0, 0xa1,
+
  0xc9, 0xac, 0x2a, 0xa2, 0xe8, 0xbc, 0xc0, 0x73, 0x44, 0x9c, 0x9b, 0x0e,
+
  0x02, 0xb0, 0xf8, 0x8b, 0x04, 0x05, 0x20, 0xc8, 0x3a, 0x73, 0x52, 0xca,
+
  0x94, 0x98, 0x38, 0xed, 0x57, 0x32, 0xeb, 0xb3, 0xa0, 0xc3, 0x7b, 0x64,
+
  0xad, 0xa2, 0x8d, 0xff, 0xb3, 0xd1, 0x8f, 0x36, 0xfe, 0xef, 0x0d, 0x22,
+
  0x8f, 0x8d, 0x3f, 0x6c, 0xd8, 0xbd, 0x06, 0x85, 0xee, 0x32, 0x9b, 0xa4,
+
  0xa4, 0x63, 0x44, 0x2f, 0x4e, 0x2f, 0x1f, 0x45, 0xbf, 0xc1, 0x49, 0x84,
+
  0x69, 0x4d, 0xd2, 0x0f, 0x4a, 0xae, 0xfa, 0x6e, 0x70, 0x77, 0x04, 0x0c,
+
  0x3b, 0x59, 0xc0, 0xb3, 0x16, 0x69, 0x39, 0x06, 0xda, 0x4e, 0xce, 0x81,
+
  0x9a, 0x41, 0x5c, 0xeb, 0x70, 0x38, 0x3e, 0xde, 0xc2, 0xaf, 0x05, 0xec,
+
  0x35, 0xca, 0x93, 0x39, 0x9c, 0x98, 0x97, 0x38, 0xa3, 0x2c, 0x0f, 0x6c,
+
  0xe7, 0xdf, 0xa6, 0xe9, 0x93, 0x9d, 0x83, 0x83, 0xfd, 0xdf, 0xef, 0x3d,
+
  0x4c, 0xeb, 0x8b, 0x9d, 0x5f, 0xb6, 0xed, 0x26, 0xbe, 0x98, 0xd2, 0xc2,
+
  0x5b, 0x32, 0xd4, 0x89, 0xa0, 0x36, 0x90, 0x18, 0x21, 0x03, 0x83, 0x44,
+
  0x15, 0x1c, 0xbc, 0x79, 0xda, 0x57, 0xcd, 0xeb, 0x7c, 0x09, 0xe7, 0x09,
+
  0x17, 0xee, 0xea, 0x22, 0x31, 0x0c, 0x45, 0xaf, 0x67, 0xc1, 0x9b, 0xa0,
+
  0x4c, 0x7a, 0x41, 0x3b, 0x08, 0x5b, 0x96, 0x4e, 0x13, 0x10, 0x29, 0xb4,
+
  0x5b, 0x24, 0xe6, 0x91, 0x4b, 0x25, 0x15, 0xca, 0xec, 0x8a, 0xd7, 0x1d,
+
  0xf8, 0x74, 0x52, 0xe1, 0x81, 0x35, 0xaf, 0x5a, 0x4c, 0x6b, 0xd0, 0x19,
+
  0x96, 0xf8, 0x61, 0x74, 0x01, 0x5a, 0x41, 0x44, 0xaf, 0x8a, 0x8f, 0x49,
+
  0xa7, 0x70, 0xf6, 0x50, 0x92, 0x7e, 0x6f, 0xb7, 0xa0, 0x4f, 0xfb, 0x41,
+
  0xd7, 0xe1, 0x65, 0x15, 0x1c, 0x29, 0x60, 0x4b, 0xb0, 0xeb, 0xae, 0x4c,
+
  0x22, 0x86, 0x3b, 0xe8, 0xf1, 0x4b, 0xe8, 0xe3, 0x75, 0xb6, 0xa8, 0x8b,
+
  0xb4, 0x04, 0x7d, 0x02, 0xa7, 0x0a, 0xc8, 0x94, 0xa6, 0x5d, 0xa6, 0x38,
+
  0x17, 0x57, 0x2b, 0x61, 0x2a, 0x9f, 0x14, 0x48, 0x5a, 0x46, 0x60, 0x5a,
+
  0xfd, 0x04, 0xb5, 0x25, 0x43, 0xe0, 0x40, 0x6a, 0x35, 0x2c, 0x15, 0x9e,
+
  0x64, 0x92, 0x83, 0x73, 0x64, 0x15, 0x78, 0x6d, 0xc5, 0x64, 0x4a, 0x5c,
+
  0x0b, 0x5f, 0x8f, 0xb5, 0x54, 0xd0, 0xd2, 0x80, 0x36, 0x91, 0xb3, 0x13,
+
  0x0f, 0x37, 0xc3, 0x9b, 0xd9, 0xf1, 0x2c, 0x2a, 0x54, 0xf2, 0x41, 0xe0,
+
  0x4d, 0xaa, 0x0b, 0x50, 0x5a, 0x2a, 0x21, 0xec, 0x6c, 0x0e, 0x3b, 0x71,
+
  0x89, 0x4b, 0xb0, 0x48, 0xd3, 0xc9, 0x20, 0x3a, 0x32, 0x53, 0x36, 0x2f,
+
  0x01, 0x84, 0x56, 0xe4, 0xb3, 0x6b, 0x1d, 0x6e, 0x94, 0xc2, 0xf3, 0x72,
+
  0x26, 0x69, 0x62, 0x6e, 0x96, 0x81, 0xe2, 0x47, 0xc0, 0x9f, 0x60, 0xce,
+
  0xf0, 0x5e, 0x56, 0x9d, 0xa4, 0x43, 0x4c, 0x27, 0x9c, 0x55, 0xb9, 0xc8,
+
  0xe5, 0x84, 0x30, 0x3c, 0x4e, 0x1d, 0x46, 0x05, 0x2a, 0x86, 0x01, 0xe6,
+
  0xa8, 0x28, 0xa5, 0xf5, 0x55, 0x0a, 0xcb, 0x55, 0xa5, 0xc8, 0x70, 0xeb,
+
  0x94, 0x17, 0xb8, 0x5c, 0xe6, 0xa8, 0xed, 0x9c, 0xbc, 0x3d, 0x3b, 0x7d,
+
  0x7b, 0xe6, 0x90, 0x25, 0xbd, 0x7a, 0x5d, 0xcc, 0x26, 0x4c, 0x1c, 0x57,
+
  0x59, 0x05, 0x1b, 0x4c, 0x77, 0xa0, 0xd6, 0x81, 0xa7, 0x1e, 0xf9, 0x63,
+
  0x3a, 0x4e, 0x41, 0x26, 0x4d, 0x58, 0xd7, 0x87, 0x2d, 0xaa, 0x6a, 0x60,
+
  0x0d, 0x4c, 0x75, 0x30, 0x05, 0xe7, 0xe5, 0xb2, 0xbc, 0xaa, 0xcb, 0xe5,
+
  0xb8, 0x66, 0xa5, 0x17, 0xff, 0x22, 0xcd, 0x8e, 0xf8, 0x0c, 0xee, 0x0a,
+
  0x0d, 0x00, 0x47, 0x0a, 0xcd, 0x84, 0x19, 0xbc, 0x11, 0xea, 0x72, 0x19,
+
  0xd2, 0x94, 0x70, 0x38, 0x97, 0xb7, 0xc4, 0x05, 0x7c, 0x1c, 0xc7, 0xf0,
+
  0x20, 0xe4, 0x4f, 0xc8, 0xf9, 0xa2, 0xf8, 0x04, 0x05, 0x49, 0x99, 0xce,
+
  0x81, 0x21, 0xc5, 0x44, 0xa4, 0x22, 0x2d, 0x06, 0xf8, 0x2e, 0xaa, 0x32,
+
  0x9e, 0xc3, 0x5c, 0x73, 0x6f, 0x27, 0x69, 0xb9, 0xe1, 0xc1, 0xc6, 0x36,
+
  0x0a, 0x48, 0x8e, 0x3e, 0x30, 0x2d, 0xd8, 0x82, 0x79, 0x36, 0x4b, 0x4a,
+
  0xe0, 0x8f, 0x39, 0xec, 0x6a, 0x65, 0x69, 0x02, 0xe6, 0xb0, 0x70, 0x54,
+
  0x6b, 0x24, 0x4c, 0xdc, 0x34, 0x20, 0xce, 0x92, 0xd8, 0xa8, 0xbc, 0x66,
+
  0x3a, 0x6f, 0x11, 0x37, 0x6c, 0x39, 0x9e, 0x60, 0x22, 0x32, 0xd8, 0x13,
+
  0x20, 0x0b, 0xb8, 0xcb, 0x2c, 0x77, 0xd4, 0x5b, 0x02, 0x8b, 0x2a, 0xe1,
+
  0x14, 0xe5, 0x93, 0x9e, 0xcc, 0x08, 0x78, 0x0e, 0x1c, 0x93, 0x8c, 0xa8,
+
  0x18, 0xb5, 0x42, 0x73, 0xb4, 0x78, 0x4f, 0x40, 0xb9, 0xe2, 0x55, 0xa1,
+
  0x1d, 0xa0, 0xd1, 0x73, 0xd0, 0x31, 0xf2, 0x71, 0x41, 0xda, 0x0f, 0xae,
+
  0xd4, 0x24, 0xe5, 0x3f, 0x70, 0x65, 0x59, 0x26, 0xc3, 0xf9, 0x5d, 0xcc,
+
  0xb2, 0x71, 0x56, 0x5b, 0x6a, 0x4c, 0xaa, 0xf7, 0x62, 0x9d, 0xe0, 0x91,
+
  0x9d, 0xa4, 0x13, 0x34, 0x17, 0xe0, 0x93, 0x90, 0x3c, 0x86, 0x77, 0x3a,
+
  0x7d, 0x73, 0x72, 0x76, 0x72, 0x74, 0xf2, 0xb2, 0x69, 0x46, 0x1a, 0x1b,
+
  0x8f, 0xa4, 0x25, 0x28, 0x5e, 0xcb, 0xca, 0x72, 0x28, 0xb0, 0x23, 0x50,
+
  0xa7, 0x85, 0xfd, 0x03, 0x0e, 0x8c, 0x4c, 0x0f, 0x98, 0xe9, 0x1c, 0xcc,
+
  0x3e, 0xe6, 0x72, 0x15, 0xa9, 0x02, 0xe6, 0xed, 0x50, 0xbd, 0xc9, 0xc6,
+
  0x4b, 0x58, 0x7b, 0xe0, 0x5a, 0x19, 0x90, 0xe4, 0x3c, 0xb9, 0x76, 0x95,
+
  0x2e, 0x5a, 0x5b, 0x54, 0xfb, 0xed, 0xfa, 0xa2, 0xf9, 0x08, 0x3f, 0x5e,
+
  0xe2, 0x32, 0x21, 0x7b, 0x99, 0x81, 0xf5, 0xb2, 0x5c, 0xa0, 0xb5, 0x05,
+
  0x1b, 0xc7, 0x24, 0x05, 0xc7, 0x0f, 0x5f, 0x03, 0xde, 0x0d, 0xdf, 0x23,
+
  0x41, 0x4d, 0xd5, 0xde, 0x8f, 0x86, 0x27, 0xfc, 0x78, 0x83, 0x54, 0x8a,
+
  0x5b, 0x89, 0xeb, 0xeb, 0x12, 0x26, 0xf2, 0x3e, 0x6f, 0x0f, 0x75, 0x3a,
+
  0x51, 0x32, 0x06, 0x11, 0x5c, 0x39, 0xac, 0x4f, 0xd5, 0x27, 0xb8, 0x13,
+
  0x79, 0x39, 0xbd, 0x31, 0x53, 0xeb, 0xec, 0x9a, 0x15, 0x46, 0xe2, 0x64,
+
  0x70, 0x18, 0x73, 0x9e, 0x5a, 0xf4, 0x2a, 0x1b, 0x83, 0xaa, 0x0a, 0x1c,
+
  0x38, 0xfa, 0x11, 0x24, 0x55, 0x71, 0x85, 0xb3, 0x8e, 0x5b, 0xc3, 0xa9,
+
  0x3a, 0x9f, 0x03, 0x03, 0x00, 0x0a, 0x7b, 0xfb, 0xfa, 0x28, 0x4a, 0x16,
+
  0xb0, 0xc2, 0xa8, 0x53, 0x92, 0xe6, 0x86, 0xc6, 0xa5, 0xf3, 0x4e, 0x67,
+
  0xa7, 0x9b, 0xc3, 0x2d, 0x9e, 0xb6, 0xd9, 0x1b, 0xbc, 0xff, 0x7b, 0xe4,
+
  0x98, 0x67, 0x4a, 0xfe, 0xa7, 0x2a, 0x44, 0x58, 0x20, 0x02, 0xa7, 0xc1,
+
  0x77, 0x03, 0x6d, 0x31, 0x02, 0xfe, 0x91, 0xbc, 0xaf, 0x5a, 0x93, 0x20,
+
  0x7a, 0x40, 0xd5, 0x08, 0x96, 0xe4, 0x47, 0xbc, 0x03, 0x97, 0xcb, 0xd8,
+
  0xb3, 0x38, 0xc5, 0xb3, 0x97, 0x43, 0x3b, 0x09, 0x36, 0xdc, 0x61, 0x1e,
+
  0xad, 0x61, 0xde, 0xa4, 0x60, 0xc2, 0xc2, 0x30, 0xb2, 0xba, 0xe6, 0x7a,
+
  0x94, 0x55, 0xfe, 0xd5, 0x2d, 0x02, 0x23, 0x81, 0x46, 0xd3, 0x35, 0x94,
+
  0xe6, 0x6a, 0x8b, 0x97, 0xb0, 0xb9, 0x89, 0xb2, 0x83, 0x06, 0x67, 0x52,
+
  0xd9, 0xb0, 0x80, 0x17, 0xe3, 0x51, 0xf0, 0x45, 0x90, 0x9b, 0xee, 0x0c,
+
  0xbe, 0xec, 0x47, 0xbb, 0x83, 0x1d, 0xfc, 0x67, 0xb7, 0x1f, 0xed, 0xd1,
+
  0x40, 0xfb, 0x11, 0x5b, 0x7b, 0xb2, 0x47, 0x4c, 0x8c, 0xce, 0xd9, 0x6f,
+
  0xb0, 0x00, 0x55, 0x14, 0xc6, 0x45, 0x59, 0xa2, 0x43, 0xa9, 0xe3, 0xf0,
+
  0x38, 0x1e, 0x0b, 0xff, 0x3d, 0xdf, 0x56, 0xba, 0xc7, 0x73, 0x30, 0x27,
+
  0x81, 0x64, 0xd8, 0x8c, 0xd1, 0x53, 0x24, 0x1c, 0x19, 0x85, 0x49, 0x0f,
+
  0x68, 0x24, 0x47, 0x2b, 0xbe, 0x17, 0xa5, 0x78, 0x2d, 0xab, 0x54, 0xad,
+
  0xe1, 0xe0, 0x24, 0xdc, 0x6a, 0x93, 0xd0, 0x51, 0xd2, 0xb1, 0xe8, 0xf8,
+
  0x2c, 0x90, 0x8c, 0x93, 0x0c, 0xdf, 0xa9, 0x00, 0x7d, 0x98, 0x4f, 0x16,
+
  0x73, 0x3c, 0x18, 0xbf, 0xcf, 0xfb, 0xe0, 0x8c, 0xdf, 0x18, 0x19, 0x7d,
+
  0x2f, 0x3a, 0x94, 0xd9, 0x3e, 0xfa, 0x50, 0x17, 0x7e, 0x7f, 0x10, 0x3d,
+
  0x93, 0x57, 0xa1, 0x65, 0x46, 0x59, 0x4c, 0x17, 0x80, 0x6a, 0x0b, 0x0a,
+
  0x63, 0xd4, 0xab, 0x96, 0xa3, 0xf6, 0x82, 0xa3, 0x89, 0x3d, 0x4a, 0x7b,
+
  0xec, 0x65, 0xaa, 0x8b, 0x05, 0x98, 0x9e, 0x57, 0x17, 0x48, 0xd4, 0xec,
+
  0xd8, 0x80, 0x71, 0xb6, 0xd1, 0xab, 0x81, 0xe3, 0xe9, 0x28, 0x0b, 0xd0,
+
  0x60, 0xb3, 0xea, 0xa2, 0x87, 0xfb, 0x98, 0xb4, 0xf7, 0x0f, 0x47, 0x18,
+
  0xf0, 0x53, 0xe9, 0xf9, 0xf0, 0x0a, 0x28, 0x3f, 0x1a, 0x76, 0x5e, 0xb4,
+
  0x79, 0x9d, 0xd6, 0x5b, 0x8e, 0x9a, 0x79, 0x72, 0xba, 0xef, 0xaf, 0x99,
+
  0xfb, 0x2a, 0xac, 0x67, 0xe0, 0x89, 0x5a, 0x14, 0x8b, 0xfd, 0x48, 0x15,
+
  0x8d, 0x79, 0x0a, 0x07, 0xcf, 0xa8, 0x25, 0x09, 0xed, 0xb4, 0xd9, 0xa5,
+
  0xd6, 0x70, 0x2b, 0xf6, 0x0c, 0x9d, 0x57, 0xfe, 0xf3, 0xd1, 0x75, 0x01,
+
  0x4c, 0x0c, 0xe4, 0x14, 0xc8, 0xc4, 0x57, 0xc0, 0x94, 0x92, 0x73, 0xbc,
+
  0xd3, 0x9c, 0x71, 0xf2, 0xe0, 0x2d, 0xca, 0x6c, 0x0e, 0x47, 0x04, 0x04,
+
  0x5b, 0xc4, 0xca, 0x1e, 0xac, 0xa3, 0xcc, 0xae, 0xbd, 0xd0, 0xa8, 0x88,
+
  0xcf, 0x49, 0x7d, 0x02, 0xa1, 0x90, 0x10, 0x8d, 0x3b, 0x64, 0xc1, 0xef,
+
  0x8a, 0x0a, 0xbe, 0x33, 0xad, 0xe1, 0xa9, 0xb7, 0xe1, 0xf4, 0x21, 0x1c,
+
  0x2e, 0x73, 0x8b, 0x73, 0x10, 0x86, 0x47, 0xa7, 0x91, 0x77, 0xc3, 0x70,
+
  0xf8, 0xdc, 0x10, 0xc8, 0x1e, 0x6c, 0xf7, 0xc2, 0x2a, 0x78, 0xce, 0x9d,
+
  0xe8, 0xca, 0xf2, 0xee, 0xc4, 0x0f, 0x37, 0x27, 0x65, 0x02, 0x9c, 0xf4,
+
  0xe1, 0x16, 0x2b, 0x59, 0xb4, 0xa7, 0x8d, 0x21, 0x9d, 0x41, 0x5e, 0x7d,
+
  0xe7, 0x33, 0x49, 0xf8, 0xd0, 0x5c, 0xbb, 0x4b, 0x94, 0xce, 0x84, 0x45,
+
  0xef, 0xaf, 0xef, 0xe0, 0x8e, 0x11, 0xe2, 0x59, 0x6f, 0x17, 0x86, 0x10,
+
  0x44, 0x90, 0x57, 0xbc, 0xd2, 0xb0, 0x74, 0x74, 0x4b, 0x93, 0x20, 0x2a,
+
  0xe1, 0x33, 0x68, 0x91, 0x10, 0x49, 0xb4, 0x86, 0xfb, 0x71, 0xd5, 0x31,
+
  0x63, 0x97, 0x64, 0x74, 0x06, 0x46, 0x18, 0x8e, 0x41, 0x6f, 0x03, 0x8f,
+
  0x22, 0xf3, 0x1d, 0x8f, 0x48, 0x3a, 0xcb, 0xc1, 0xa0, 0x45, 0x29, 0x44,
+
  0x4a, 0x3a, 0x32, 0x2b, 0xeb, 0x77, 0xbc, 0x44, 0x1d, 0xb8, 0xaa, 0x1c,
+
  0x8f, 0x95, 0x52, 0x1f, 0x29, 0x34, 0xa8, 0x09, 0xc1, 0xdc, 0x2a, 0xb2,
+
  0x3c, 0xf0, 0x2f, 0xe4, 0x4a, 0xf0, 0x2a, 0xa8, 0x82, 0x82, 0xfe, 0x97,
+
  0xb1, 0x26, 0x1a, 0x89, 0x26, 0x22, 0x16, 0x4a, 0x43, 0x81, 0x53, 0x62,
+
  0xe2, 0xd7, 0xe5, 0xc1, 0x5c, 0x9a, 0x39, 0x73, 0x36, 0x52, 0xf8, 0x0d,
+
  0x7d, 0x64, 0xa8, 0x85, 0x1e, 0xc0, 0x5b, 0x20, 0xfa, 0xc7, 0x0f, 0x6f,
+
  0x8e, 0x87, 0xc3, 0xe8, 0xd5, 0xf1, 0xd9, 0xf1, 0x9b, 0xa6, 0x12, 0x92,
+
  0x83, 0xf2, 0x0b, 0x9a, 0x01, 0x90, 0xf6, 0x24, 0xab, 0x16, 0xb3, 0xe4,
+
  0xba, 0x62, 0xbb, 0xea, 0xbc, 0x44, 0xdd, 0x67, 0x9e, 0xa2, 0xb9, 0x3f,
+
  0x59, 0x92, 0x71, 0x5a, 0x80, 0xae, 0x9c, 0x88, 0xb7, 0x13, 0x64, 0x2e,
+
  0xb9, 0x48, 0xad, 0x08, 0x47, 0x26, 0x6c, 0x3d, 0x27, 0xc6, 0xd3, 0x2d,
+
  0xca, 0x6f, 0xdf, 0x7a, 0x1c, 0x23, 0xd6, 0xfa, 0x2b, 0x59, 0x86, 0x14,
+
  0xf8, 0xce, 0x9c, 0x3d, 0x90, 0x78, 0x08, 0x8d, 0xdf, 0x31, 0x9d, 0xd6,
+
  0x70, 0x13, 0x6c, 0x08, 0x3b, 0x5b, 0xbc, 0x39, 0xe9, 0x6c, 0xf1, 0xb9,
+
  0x66, 0x68, 0xd2, 0xdb, 0xd1, 0xaf, 0x77, 0x8d, 0xea, 0xde, 0xc2, 0x9e,
+
  0xcf, 0x0a, 0xd4, 0xba, 0x7c, 0xc2, 0x1e, 0xe7, 0x6a, 0x39, 0x25, 0xf3,
+
  0x2c, 0xda, 0x7c, 0xdf, 0x8f, 0x5e, 0xf5, 0xa3, 0x1f, 0xfa, 0x11, 0xfa,
+
  0xbb, 0xb7, 0xc8, 0x57, 0xb5, 0xbb, 0xb3, 0xf7, 0x80, 0x0d, 0xbd, 0x81,
+
  0x6b, 0xbc, 0x45, 0xbb, 0xef, 0x5d, 0x0f, 0x35, 0x5f, 0x85, 0x0f, 0x19,
+
  0x44, 0xbb, 0xaf, 0x90, 0x49, 0xec, 0xee, 0x3c, 0x78, 0xf2, 0xf0, 0xf1,
+
  0x23, 0xf9, 0xb0, 0xad, 0xc7, 0xea, 0x64, 0x61, 0xb6, 0xc8, 0x50, 0xd4,
+
  0x1c, 0xa0, 0xb9, 0x83, 0x62, 0x97, 0xe5, 0xa0, 0x37, 0x8d, 0xae, 0xd5,
+
  0x08, 0xed, 0xa3, 0x31, 0x96, 0xb1, 0xe9, 0xcb, 0x2e, 0x8a, 0xc6, 0x70,
+
  0x70, 0x23, 0xec, 0x38, 0x1a, 0x48, 0xba, 0x21, 0xb4, 0x92, 0x40, 0x69,
+
  0xe8, 0x33, 0x18, 0x21, 0xb1, 0xa3, 0x6a, 0x4a, 0x2a, 0x99, 0xfb, 0x24,
+
  0xf3, 0x28, 0x63, 0xf3, 0xc1, 0x2d, 0x30, 0xb5, 0x64, 0x34, 0x13, 0x7b,
+
  0xa5, 0xb5, 0xc6, 0x49, 0xe5, 0x68, 0xdb, 0x70, 0xed, 0x55, 0xb1, 0x44,
+
  0xe5, 0x12, 0x2f, 0x00, 0x5d, 0x11, 0x6f, 0x60, 0x1a, 0x36, 0x7e, 0xe9,
+
  0xec, 0x83, 0x48, 0xdf, 0xc6, 0x28, 0x30, 0x37, 0xf8, 0x73, 0x01, 0x74,
+
  0xc3, 0xf3, 0x19, 0xb4, 0xcd, 0x7b, 0xb2, 0x6d, 0x3d, 0xaa, 0x43, 0x36,
+
  0x42, 0x2a, 0xc7, 0xe9, 0xc9, 0xf0, 0x0c, 0x4f, 0x32, 0x18, 0x60, 0x30,
+
  0xd0, 0xdf, 0xc1, 0xb0, 0xaf, 0x81, 0x02, 0xf1, 0x46, 0xb4, 0x33, 0xe0,
+
  0xed, 0x74, 0x38, 0x20, 0x36, 0x12, 0xbb, 0x4c, 0x8c, 0xf6, 0xa1, 0x62,
+
  0x09, 0x91, 0xf4, 0x63, 0xab, 0x89, 0xe5, 0x03, 0x3b, 0x61, 0xcc, 0x5d,
+
  0x9b, 0xdf, 0x6c, 0xf5, 0xd1, 0x78, 0x32, 0x76, 0x94, 0x9a, 0x50, 0xf0,
+
  0x6c, 0xb1, 0x6d, 0x9c, 0x33, 0x88, 0x1b, 0x29, 0x16, 0x44, 0x8d, 0x6a,
+
  0x25, 0x1c, 0x21, 0x78, 0x80, 0x8d, 0x16, 0xe0, 0xea, 0x91, 0xe9, 0x66,
+
  0x77, 0xc9, 0x5c, 0x8e, 0x2e, 0xfb, 0x9a, 0x38, 0x80, 0xf5, 0x9a, 0x5c,
+
  0x37, 0x17, 0xa9, 0x4d, 0x1e, 0x8d, 0x45, 0xa3, 0x97, 0x27, 0x37, 0x03,
+
  0x1e, 0xa7, 0x24, 0xb2, 0x4b, 0x17, 0xf5, 0x46, 0x49, 0xd9, 0x8b, 0x8c,
+
  0x05, 0x49, 0x67, 0x91, 0x2c, 0xd1, 0x73, 0xb2, 0x0f, 0x68, 0x69, 0xe1,
+
  0x2d, 0x7f, 0xe7, 0xbc, 0xa5, 0xde, 0x1c, 0xc3, 0xad, 0x48, 0x42, 0x14,
+
  0x59, 0x98, 0x82, 0xb6, 0x89, 0x07, 0x46, 0x3d, 0x81, 0xe4, 0x8b, 0x12,
+
  0x62, 0x69, 0xd2, 0x0a, 0x8f, 0x69, 0xed, 0x7e, 0x3c, 0x2e, 0xa8, 0xb7,
+
  0xb3, 0xa2, 0x83, 0x97, 0xc6, 0x15, 0x5a, 0x9f, 0x15, 0xac, 0x3c, 0x32,
+
  0x87, 0x85, 0x44, 0x6e, 0xfe, 0x72, 0xfc, 0x66, 0xe8, 0x04, 0xcc, 0x68,
+
  0x41, 0x41, 0x01, 0x04, 0x6b, 0xe6, 0x3c, 0x95, 0xb0, 0xc0, 0x08, 0xd6,
+
  0x8b, 0x48, 0xfe, 0xc9, 0x60, 0x6f, 0xb0, 0x3b, 0x50, 0x7a, 0x41, 0x07,
+
  0x01, 0x98, 0xc1, 0x09, 0x52, 0x89, 0x88, 0x9d, 0x3e, 0x3a, 0xc5, 0xd0,
+
  0xb1, 0x67, 0x16, 0xb4, 0x4c, 0xf5, 0xb4, 0xe1, 0xa0, 0x3c, 0xaa, 0xdd,
+
  0x01, 0xf4, 0xd8, 0xc1, 0x79, 0x2b, 0xc6, 0xa0, 0x0f, 0x93, 0xc5, 0xd8,
+
  0x1c, 0x1c, 0x64, 0x0a, 0x18, 0xb2, 0x99, 0x7d, 0x2d, 0xf3, 0x98, 0x9a,
+
  0xf7, 0x5d, 0xee, 0xab, 0xc9, 0x7f, 0x4f, 0x16, 0xfb, 0x78, 0xb6, 0x9c,
+
  0xa4, 0x46, 0x0a, 0x66, 0x39, 0x7a, 0x15, 0xe4, 0x70, 0xd2, 0x91, 0x04,
+
  0x85, 0x6b, 0x7c, 0xf1, 0x85, 0x55, 0xa8, 0xd1, 0x7b, 0x31, 0x36, 0xd7,
+
  0x13, 0xa5, 0x80, 0x84, 0x29, 0x8b, 0xc9, 0x72, 0x8c, 0x96, 0xe4, 0x05,
+
  0xb9, 0x56, 0x7d, 0x8f, 0x6c, 0x32, 0xbb, 0x42, 0x46, 0x32, 0x83, 0xf9,
+
  0xe5, 0x3c, 0x26, 0x2d, 0x31, 0x2e, 0x46, 0x55, 0xf3, 0x62, 0x99, 0x39,
+
  0x50, 0x64, 0x41, 0x6c, 0xa6, 0x06, 0x07, 0x41, 0xc7, 0x5b, 0x05, 0x86,
+
  0x16, 0xfe, 0x31, 0xa8, 0xd2, 0x6d, 0x9c, 0xed, 0x17, 0x5f, 0x9c, 0x50,
+
  0x00, 0xd3, 0x18, 0xa9, 0x27, 0x62, 0x21, 0x90, 0x04, 0x14, 0xad, 0x35,
+
  0x27, 0x13, 0xbc, 0xbe, 0x02, 0x52, 0x48, 0xe0, 0xf4, 0x00, 0xf7, 0x7b,
+
  0x45, 0x1e, 0x65, 0x26, 0x32, 0x63, 0x54, 0xd0, 0x31, 0xcd, 0x70, 0x07,
+
  0xac, 0x29, 0x91, 0x4c, 0x26, 0x19, 0x19, 0x92, 0x30, 0xc1, 0x64, 0xb6,
+
  0x4c, 0xc9, 0xd3, 0x2f, 0x54, 0x3e, 0x77, 0xcf, 0x55, 0x8a, 0xde, 0x51,
+
  0x32, 0x13, 0x7b, 0xec, 0xd4, 0x89, 0xf1, 0x59, 0x3d, 0xd2, 0xd7, 0xe7,
+
  0x86, 0xa0, 0xe5, 0x51, 0x40, 0x58, 0x13, 0xd7, 0xcf, 0xd9, 0x27, 0xdb,
+
  0xd7, 0x3a, 0xe4, 0x49, 0x5f, 0x6b, 0x6b, 0xdc, 0x09, 0xac, 0x3f, 0x3a,
+
  0x26, 0xd5, 0xe3, 0x03, 0x67, 0x91, 0x19, 0x68, 0xc5, 0x53, 0xeb, 0xc3,
+
  0x2a, 0xe3, 0x95, 0xe7, 0x17, 0x7a, 0xa9, 0x61, 0x98, 0x28, 0x1d, 0x81,
+
  0x59, 0x80, 0xa9, 0x82, 0x41, 0xad, 0x89, 0x3a, 0x8b, 0x8a, 0x92, 0x45,
+
  0xcb, 0xac, 0x00, 0xb6, 0xd2, 0x63, 0xf7, 0xaf, 0x4c, 0x1b, 0x67, 0x8d,
+
  0xb3, 0xc4, 0x23, 0xc0, 0x21, 0x5f, 0xab, 0xb5, 0x9a, 0x49, 0xcb, 0x7a,
+
  0x55, 0x37, 0x4e, 0xcd, 0x51, 0xa2, 0x68, 0x8d, 0x74, 0xaf, 0x75, 0xe5,
+
  0xd9, 0x59, 0x54, 0x10, 0x8d, 0x13, 0x77, 0xc4, 0xed, 0x71, 0xd7, 0x9e,
+
  0x87, 0xa9, 0xc8, 0x05, 0x16, 0xb5, 0x17, 0x2a, 0xca, 0xe6, 0xa4, 0xb7,
+
  0xd2, 0xf1, 0x35, 0x1b, 0x64, 0x63, 0x30, 0x01, 0xbf, 0xf2, 0x75, 0x33,
+
  0x52, 0x60, 0x76, 0x1b, 0x18, 0xab, 0xb3, 0x4d, 0xec, 0x80, 0x7a, 0x49,
+
  0xef, 0x12, 0x5f, 0x46, 0xc8, 0x15, 0xe1, 0xb0, 0x22, 0x8b, 0x8c, 0x4f,
+
  0x5e, 0x5e, 0x3a, 0xbc, 0x0d, 0x23, 0x66, 0x39, 0x46, 0x83, 0xfa, 0x34,
+
  0xc4, 0xa8, 0x28, 0x80, 0xd2, 0xed, 0xeb, 0xe1, 0xa9, 0x4e, 0x73, 0xe4,
+
  0x41, 0xb2, 0xab, 0xc0, 0xa3, 0x17, 0x46, 0x02, 0x82, 0xc1, 0x11, 0x25,
+
  0xe7, 0x49, 0x66, 0x68, 0x4e, 0xf8, 0x95, 0xb9, 0x36, 0x2f, 0xe4, 0x72,
+
  0xdc, 0x2d, 0x3c, 0x70, 0x22, 0x47, 0xf0, 0xcc, 0x1b, 0xff, 0xa6, 0x3c,
+
  0x4c, 0x9d, 0xb9, 0xa3, 0xa5, 0xe3, 0x3e, 0x46, 0xbf, 0x2e, 0x89, 0x4d,
+
  0x1e, 0x31, 0xea, 0xc1, 0x88, 0x3d, 0x50, 0x50, 0x9e, 0x17, 0x57, 0x68,
+
  0xe2, 0xf7, 0xd9, 0x5f, 0x9e, 0x61, 0xa0, 0x19, 0x4e, 0xe3, 0x15, 0x98,
+
  0xa5, 0x60, 0x56, 0xc1, 0x5a, 0xa2, 0x2b, 0x93, 0x3f, 0x73, 0x9c, 0x90,
+
  0x40, 0xe5, 0x57, 0xcc, 0x1f, 0xf5, 0x25, 0xcc, 0x6e, 0x4e, 0x5b, 0xa7,
+
  0x82, 0x82, 0x19, 0xf1, 0x01, 0xd2, 0x10, 0xed, 0x4a, 0x56, 0xd1, 0x86,
+
  0xf5, 0x59, 0xbd, 0xc4, 0xc0, 0x26, 0xf3, 0x64, 0x74, 0x92, 0x95, 0x78,
+
  0x62, 0x6b, 0x8e, 0x34, 0x93, 0xf3, 0x9c, 0xce, 0x6f, 0x63, 0x5d, 0xc4,
+
  0x73, 0x31, 0x76, 0xd6, 0x96, 0x6f, 0xea, 0xc3, 0xbe, 0x8e, 0xd3, 0x45,
+
  0x6d, 0x22, 0x3c, 0xe6, 0x44, 0x13, 0x61, 0x31, 0x57, 0xed, 0x9d, 0xcf,
+
  0x8a, 0x51, 0x32, 0xeb, 0x19, 0x8d, 0xfb, 0x07, 0xfa, 0xdb, 0x39, 0xfe,
+
  0x1c, 0x16, 0x2b, 0x31, 0xc6, 0x9b, 0x93, 0x30, 0xce, 0x4a, 0x43, 0x78,
+
  0x14, 0x00, 0x87, 0xe7, 0x92, 0xb1, 0x89, 0xfe, 0x46, 0xb0, 0x3c, 0x60,
+
  0xce, 0xf0, 0x72, 0x56, 0x22, 0xe1, 0x3b, 0x36, 0x59, 0xc2, 0xb4, 0x98,
+
  0xcd, 0x8a, 0x2b, 0xd6, 0x42, 0x2d, 0x29, 0xf0, 0x44, 0x0e, 0xe0, 0x8e,
+
  0x29, 0x58, 0x00, 0x31, 0xf2, 0xec, 0x6b, 0x5c, 0x23, 0x09, 0x5a, 0x93,
+
  0x1b, 0x54, 0xa3, 0x67, 0xc6, 0x26, 0x36, 0x34, 0xde, 0xe7, 0x00, 0x9b,
+
  0x73, 0x0d, 0x09, 0xc6, 0x96, 0x44, 0x24, 0xc7, 0x29, 0x5d, 0x1d, 0x0f,
+
  0x49, 0x8c, 0xc1, 0xae, 0xc5, 0x69, 0x69, 0x86, 0x2b, 0x0b, 0xba, 0x04,
+
  0x34, 0x7b, 0xd0, 0x76, 0xf9, 0xb7, 0x6b, 0x20, 0x39, 0xd1, 0x1d, 0x68,
+
  0xf8, 0x1a, 0xa3, 0xcc, 0x71, 0x52, 0x8d, 0xb3, 0xcc, 0xf9, 0x3b, 0x9b,
+
  0x54, 0xce, 0x5f, 0xd6, 0x3d, 0x8a, 0x41, 0x0c, 0xf9, 0x54, 0xce, 0x0b,
+
  0xfe, 0x0d, 0xa4, 0x31, 0x2a, 0x2a, 0xe7, 0xfc, 0xc7, 0x71, 0x32, 0xaa,
+
  0xf0, 0xaa, 0x3a, 0x5e, 0xe6, 0xd9, 0x87, 0xb8, 0x2a, 0xc6, 0xef, 0x81,
+
  0xfe, 0x9f, 0x2e, 0x92, 0xfa, 0xe2, 0x9b, 0x96, 0x25, 0xb1, 0x89, 0x7a,
+
  0xd4, 0x56, 0xa4, 0x7e, 0x76, 0xdc, 0x92, 0x92, 0xd9, 0x1b, 0x4a, 0x27,
+
  0x1e, 0x25, 0x7a, 0x0b, 0xa3, 0x00, 0xeb, 0x98, 0xe3, 0x9e, 0xf1, 0x60,
+
  0x7d, 0x55, 0x23, 0x5a, 0xc3, 0x51, 0x5a, 0x85, 0x71, 0xae, 0x01, 0xa7,
+
  0x42, 0x37, 0x5a, 0x14, 0xbd, 0x2e, 0xea, 0xf4, 0x00, 0xff, 0x46, 0x52,
+
  0x22, 0xea, 0x56, 0xaa, 0xc4, 0xa3, 0x82, 0x0e, 0x32, 0x64, 0x39, 0x89,
+
  0xef, 0x9d, 0xe0, 0xe7, 0xcb, 0x43, 0x4d, 0xf8, 0x64, 0xa2, 0x87, 0x6c,
+
  0xe3, 0xdb, 0x8d, 0x7e, 0x74, 0xc1, 0x27, 0x8c, 0x06, 0xe4, 0x77, 0x04,
+
  0x0a, 0x38, 0x27, 0x29, 0xdc, 0x1e, 0xee, 0x82, 0xd4, 0x54, 0xe4, 0x80,
+
  0x1c, 0xa7, 0xa3, 0xf3, 0x28, 0x9e, 0x21, 0x13, 0x3a, 0x1b, 0x7c, 0xd1,
+
  0xba, 0x0d, 0xc4, 0x7f, 0xc7, 0x92, 0x72, 0x36, 0x03, 0xc6, 0xc8, 0x26,
+
  0x26, 0x56, 0x4d, 0xfb, 0x84, 0xfb, 0x47, 0x72, 0x6f, 0x96, 0x54, 0xde,
+
  0x2c, 0xe0, 0x46, 0x96, 0x73, 0x74, 0x18, 0x46, 0x29, 0x1d, 0x58, 0xef,
+
  0xa9, 0xc7, 0xcc, 0x46, 0x0f, 0xda, 0x29, 0x4c, 0x9c, 0x8f, 0x14, 0x9e,
+
  0x0f, 0xff, 0xa0, 0x55, 0x55, 0x41, 0xee, 0x44, 0x44, 0xdb, 0x4f, 0x18,
+
  0xa6, 0x29, 0x2b, 0x6f, 0xb1, 0x3b, 0xc8, 0x20, 0x3a, 0x9c, 0xe0, 0xfb,
+
  0xc0, 0x5e, 0x3f, 0x1e, 0x3c, 0xdc, 0x1f, 0xec, 0x34, 0x08, 0x6b, 0x56,
+
  0xc7, 0xd5, 0xe5, 0x38, 0x7a, 0x4a, 0xa1, 0x22, 0x64, 0x83, 0x41, 0x82,
+
  0x1a, 0x6e, 0x89, 0xd6, 0xa6, 0x2c, 0x84, 0x39, 0x33, 0x6f, 0xba, 0x8e,
+
  0x21, 0x2c, 0x09, 0x9e, 0x43, 0xca, 0x06, 0x2e, 0xb3, 0x6f, 0xe9, 0x9a,
+
  0xe7, 0x44, 0x8b, 0x22, 0xcb, 0x39, 0x9a, 0x85, 0x3a, 0xd8, 0x87, 0x8c,
+
  0x9d, 0x52, 0x3a, 0xd8, 0x18, 0x24, 0x51, 0x2a, 0x2a, 0x3c, 0x31, 0x24,
+
  0x59, 0xdb, 0xd6, 0x70, 0xb4, 0xd2, 0xd1, 0x21, 0xf1, 0x95, 0xc4, 0x68,
+
  0xa4, 0x13, 0x63, 0x26, 0x72, 0x92, 0x0d, 0x0f, 0xa6, 0xbb, 0x83, 0x31,
+
  0x88, 0x89, 0xa8, 0x23, 0x9d, 0xb3, 0x23, 0x26, 0x8a, 0x96, 0x59, 0x86,
+
  0xb4, 0x05, 0xea, 0x15, 0x8a, 0xe8, 0x79, 0x31, 0xa1, 0x40, 0x94, 0xb7,
+
  0xb7, 0x43, 0x13, 0xb5, 0xec, 0xf5, 0x9c, 0x41, 0x36, 0x31, 0xc9, 0x02,
+
  0x08, 0x32, 0x3f, 0xaf, 0x2f, 0xb6, 0x6c, 0x70, 0x58, 0x1d, 0x71, 0x30,
+
  0x11, 0x76, 0x6b, 0xb4, 0x4f, 0x1d, 0x65, 0xfd, 0x10, 0x5d, 0xfc, 0xba,
+
  0xac, 0x6a, 0x0a, 0xaa, 0x89, 0x2a, 0xce, 0x6f, 0x02, 0x33, 0x9b, 0xa7,
+
  0xf3, 0xa2, 0xbc, 0x0e, 0x91, 0x36, 0x1d, 0x02, 0xd9, 0x26, 0x11, 0x1e,
+
  0x86, 0x96, 0x85, 0x94, 0xd9, 0x54, 0x65, 0xd6, 0x4d, 0x06, 0x8c, 0x71,
+
  0xc3, 0xb4, 0xd7, 0x83, 0xa2, 0xe5, 0x22, 0xe0, 0x39, 0x42, 0x38, 0x92,
+
  0x40, 0x38, 0x1e, 0x04, 0xd2, 0x12, 0x5d, 0xa2, 0x27, 0x61, 0xc2, 0xaf,
+
  0xe5, 0x4d, 0xcd, 0x12, 0x1b, 0x2a, 0x11, 0x7a, 0x43, 0x63, 0x66, 0x94,
+
  0xb6, 0xd0, 0xf0, 0x0e, 0xaf, 0x7b, 0x88, 0xe4, 0x09, 0xf0, 0x1f, 0xa6,
+
  0x08, 0xac, 0x79, 0x68, 0x40, 0x0e, 0x14, 0xb3, 0x4b, 0x61, 0xc5, 0xb1,
+
  0x84, 0x35, 0xe3, 0xba, 0x68, 0x9c, 0xa0, 0x47, 0x0f, 0xc0, 0x3c, 0x71,
+
  0x4f, 0x50, 0x7e, 0x8d, 0x19, 0x65, 0x61, 0x36, 0x8c, 0x5e, 0xa7, 0xca,
+
  0xfa, 0x9c, 0xb2, 0xf3, 0x65, 0x49, 0x36, 0xaa, 0x24, 0xa1, 0x69, 0xee,
+
  0x19, 0xda, 0x55, 0x17, 0x05, 0x25, 0x70, 0x81, 0xfa, 0x97, 0xce, 0xa6,
+
  0xfd, 0x40, 0x64, 0x81, 0x83, 0xaf, 0xe4, 0x00, 0xc7, 0xc0, 0x72, 0x95,
+
  0x8e, 0x69, 0xb0, 0x3c, 0x15, 0xab, 0x0f, 0x43, 0x28, 0x11, 0x66, 0x2c,
+
  0x81, 0xb0, 0x4f, 0xb2, 0x39, 0x9d, 0x2c, 0x71, 0xdb, 0x0d, 0x3c, 0x57,
+
  0x28, 0x46, 0x66, 0x2b, 0x76, 0x01, 0x8e, 0x30, 0xf6, 0x5b, 0x56, 0xb5,
+
  0x04, 0x8f, 0x13, 0x35, 0xbc, 0xd9, 0xa3, 0x79, 0x91, 0x8e, 0xdf, 0x2b,
+
  0xff, 0x57, 0xab, 0xb5, 0xcd, 0xd5, 0x31, 0x35, 0x0d, 0xe3, 0xcb, 0x70,
+
  0xd1, 0x12, 0xb3, 0xd1, 0xaa, 0x2a, 0xc3, 0xd4, 0x89, 0x2c, 0x07, 0x03,
+
  0x87, 0x9c, 0x7c, 0x28, 0x0c, 0x40, 0xce, 0x97, 0x49, 0xa4, 0x32, 0x04,
+
  0x85, 0xe9, 0x32, 0x9f, 0x80, 0xec, 0xcb, 0x16, 0xc1, 0xd9, 0x91, 0x37,
+
  0x56, 0x34, 0x55, 0xc7, 0xc0, 0x45, 0x66, 0xcb, 0x89, 0x5e, 0x89, 0x63,
+
  0x5a, 0x35, 0x57, 0xb3, 0x7d, 0x98, 0x68, 0x6d, 0xfb, 0x62, 0x41, 0xa9,
+
  0x12, 0x3b, 0x91, 0x88, 0x1e, 0xec, 0xe0, 0x28, 0xa9, 0xb2, 0x31, 0xc9,
+
  0xe7, 0x49, 0x06, 0x86, 0x18, 0x0b, 0xf2, 0xbc, 0x9e, 0x81, 0x2e, 0x1f,
+
  0x38, 0x9b, 0xa8, 0xb2, 0x9c, 0x17, 0x35, 0x6a, 0x15, 0x1e, 0x89, 0x73,
+
  0x8c, 0xc2, 0xd0, 0x84, 0x3a, 0xca, 0x5d, 0x2b, 0x42, 0x7c, 0x3d, 0xf0,
+
  0x78, 0x71, 0xda, 0xf1, 0x19, 0x23, 0x6f, 0x61, 0x7b, 0xd7, 0x61, 0xb4,
+
  0x71, 0xca, 0x3a, 0x28, 0x9a, 0x3a, 0x6a, 0x69, 0xa9, 0xcf, 0x00, 0x59,
+
  0x19, 0x59, 0xa6, 0x57, 0x99, 0xe8, 0x0f, 0x94, 0xde, 0x40, 0x6c, 0x02,
+
  0x0c, 0x5a, 0x4f, 0x5a, 0xce, 0x91, 0x97, 0xc0, 0x4d, 0x6c, 0xd7, 0x63,
+
  0x12, 0x01, 0x68, 0x59, 0x13, 0xe5, 0xd3, 0x6c, 0x43, 0x88, 0x44, 0x4d,
+
  0x4a, 0xf4, 0x03, 0x5d, 0x71, 0x5e, 0x8d, 0x3a, 0x6b, 0x43, 0xbc, 0x81,
+
  0xe7, 0x4d, 0xf7, 0x8b, 0x2f, 0xc4, 0xfa, 0x40, 0x88, 0x31, 0x4c, 0xc9,
+
  0x5f, 0xeb, 0xad, 0x13, 0x31, 0xe0, 0xf3, 0x94, 0x92, 0x5c, 0x58, 0x63,
+
  0x5f, 0xa2, 0xea, 0x83, 0x09, 0x9a, 0xde, 0xd5, 0x9c, 0xb5, 0xd2, 0x5c,
+
  0x59, 0x13, 0x6f, 0x66, 0xbe, 0x81, 0x1c, 0x1a, 0xc3, 0xbb, 0x44, 0x63,
+
  0xe9, 0x74, 0x0a, 0xe7, 0x76, 0x6d, 0xf9, 0x2b, 0x23, 0xf3, 0x24, 0x80,
+
  0x6a, 0x0e, 0x16, 0x57, 0x93, 0x35, 0x19, 0x08, 0xa5, 0x9b, 0xea, 0x48,
+
  0x7d, 0x25, 0x2d, 0xe1, 0x27, 0x4c, 0x5c, 0x0e, 0xeb, 0x48, 0xf0, 0x8a,
+
  0x64, 0x81, 0x51, 0xb4, 0x36, 0xf7, 0x40, 0xdf, 0x12, 0xba, 0xeb, 0xb7,
+
  0xd8, 0x1c, 0xa0, 0x73, 0x40, 0x29, 0x5d, 0x26, 0x3f, 0xb5, 0x66, 0x1f,
+
  0xca, 0x7b, 0x75, 0x9b, 0xf0, 0x38, 0x61, 0xa9, 0x06, 0x56, 0x01, 0x26,
+
  0x6d, 0xb1, 0x60, 0x32, 0xc7, 0x09, 0x4e, 0x13, 0x7a, 0xff, 0x35, 0x73,
+
  0x52, 0xfc, 0x22, 0x0e, 0x2f, 0xa1, 0xcb, 0xd1, 0x8d, 0xd2, 0x1a, 0x0e,
+
  0x49, 0x9a, 0xe4, 0x35, 0xd9, 0x24, 0xca, 0xfe, 0xc7, 0x9c, 0x97, 0x34,
+
  0x20, 0xdd, 0x90, 0x45, 0x36, 0xcd, 0x71, 0x3a, 0x4b, 0xce, 0xf1, 0x20,
+
  0x64, 0xe7, 0x79, 0xc1, 0x49, 0xaa, 0x6d, 0x2a, 0x2f, 0x40, 0x52, 0x52,
+
  0x6c, 0x82, 0xbd, 0xe0, 0x55, 0xb4, 0xc9, 0x2e, 0x16, 0x9c, 0xd5, 0x09,
+
  0xbc, 0xd5, 0x70, 0xf8, 0x7c, 0x6b, 0x15, 0x51, 0x38, 0xeb, 0x78, 0x1b,
+
  0xba, 0x88, 0xa2, 0x67, 0x99, 0x17, 0x3f, 0xa6, 0x33, 0x91, 0x89, 0xed,
+
  0xe4, 0xd8, 0x90, 0x3c, 0xec, 0xba, 0xb4, 0xc4, 0x9b, 0x14, 0xd3, 0x02,
+
  0x72, 0xa4, 0xdc, 0x4c, 0x70, 0xea, 0xa5, 0xb5, 0x75, 0xd3, 0x93, 0x18,
+
  0x24, 0xf9, 0xb9, 0x88, 0xa4, 0xa3, 0x3e, 0x8b, 0x25, 0xd8, 0xaf, 0x25,
+
  0x18, 0x19, 0x75, 0x43, 0x0c, 0x5d, 0x55, 0x71, 0x95, 0x9d, 0x5f, 0x3e,
+
  0x00, 0x95, 0x99, 0x35, 0xd8, 0x72, 0xf7, 0x6f, 0x07, 0xfa, 0xeb, 0xde,
+
  0xdf, 0x0e, 0xca, 0xf4, 0x1c, 0x0e, 0xe5, 0xdf, 0x0e, 0x70, 0x91, 0x81,
+
  0x5f, 0xfc, 0xf2, 0xcb, 0x2f, 0xdf, 0xf8, 0xa7, 0x32, 0x3a, 0xfc, 0x71,
+
  0x18, 0xfd, 0xe5, 0x01, 0x65, 0x79, 0x51, 0x8a, 0x70, 0x5b, 0x50, 0x49,
+
  0x92, 0x98, 0xaa, 0x57, 0xde, 0xc2, 0x88, 0xfb, 0x9e, 0x1e, 0x6a, 0xb4,
+
  0x76, 0xf6, 0xa5, 0x80, 0x7a, 0xcb, 0x82, 0x24, 0x31, 0x46, 0x2d, 0xca,
+
  0x1e, 0xd2, 0xaa, 0x93, 0xd9, 0x79, 0x01, 0x74, 0x78, 0x31, 0xf7, 0xc3,
+
  0x2c, 0x39, 0x53, 0x16, 0xd9, 0x83, 0xcb, 0xfa, 0x9c, 0x65, 0x54, 0x73,
+
  0x52, 0x22, 0x7f, 0x82, 0x93, 0xe1, 0xd7, 0x5e, 0x31, 0x15, 0x47, 0x0d,
+
  0x8d, 0xce, 0x53, 0x30, 0x06, 0x93, 0xc5, 0x05, 0x9e, 0x59, 0x78, 0xa8,
+
  0x6f, 0x0b, 0x91, 0x74, 0xac, 0x8a, 0x65, 0x89, 0x79, 0x85, 0x63, 0x30,
+
  0x54, 0x25, 0x95, 0x69, 0x93, 0x1f, 0x03, 0x9b, 0x33, 0x49, 0xb7, 0x78,
+
  0xd6, 0xb5, 0x7d, 0x38, 0xe9, 0x82, 0x59, 0xfb, 0x18, 0x15, 0xf3, 0xac,
+
  0xae, 0x35, 0x23, 0x11, 0xaf, 0x06, 0xf2, 0xa0, 0xc9, 0x04, 0xdf, 0x43,
+
  0xb6, 0xed, 0x96, 0x2f, 0x32, 0x5d, 0xe6, 0x3c, 0x31, 0xdc, 0x8c, 0x36,
+
  0xad, 0xb3, 0x79, 0x33, 0xba, 0x26, 0xb7, 0x40, 0xb1, 0x9c, 0x44, 0x9b,
+
  0x32, 0x78, 0x7b, 0xfa, 0xfa, 0x4c, 0x99, 0xbf, 0xce, 0x38, 0x24, 0x07,
+
  0x56, 0xce, 0x1f, 0xdd, 0xd8, 0x2e, 0x85, 0x4a, 0xa4, 0x55, 0xec, 0xac,
+
  0xb6, 0x72, 0x6a, 0x94, 0x4b, 0x63, 0x57, 0x79, 0x91, 0xdf, 0x8f, 0xb0,
+
  0xb2, 0xcc, 0x24, 0x7a, 0xf0, 0xeb, 0x41, 0x32, 0xff, 0xed, 0x60, 0x59,
+
  0xc5, 0x29, 0x3c, 0x2e, 0xde, 0x3b, 0x48, 0xab, 0x9e, 0xb2, 0xff, 0xde,
+
  0xfb, 0xf4, 0x1a, 0x8e, 0x0a, 0x90, 0x5e, 0xdd, 0x5b, 0x53, 0x08, 0x38,
+
  0x3c, 0xdf, 0xca, 0x34, 0x57, 0x83, 0x7c, 0xfc, 0xb0, 0x69, 0x83, 0xd1,
+
  0x0d, 0xb7, 0xd1, 0x1f, 0x51, 0x01, 0xa4, 0x30, 0xc9, 0x77, 0xfc, 0x88,
+
  0xe6, 0x29, 0x30, 0x3e, 0x78, 0x4c, 0xac, 0x6b, 0x8b, 0x7e, 0xe4, 0xc9,
+
  0x98, 0x8f, 0x38, 0x30, 0xba, 0x1f, 0x5e, 0x29, 0x41, 0x28, 0xd1, 0x1d,
+
  0x5a, 0x66, 0xc3, 0x92, 0x62, 0x85, 0xb4, 0xa3, 0xed, 0xe1, 0x30, 0x59,
+
  0xaa, 0xdf, 0x4a, 0x64, 0x46, 0xee, 0x09, 0x73, 0x44, 0x91, 0x52, 0x62,
+
  0x8e, 0x29, 0x06, 0x79, 0xd2, 0xcb, 0xac, 0x58, 0x56, 0x30, 0x0a, 0x6e,
+
  0xa5, 0x8c, 0x5d, 0x3b, 0x49, 0x9a, 0xd6, 0x80, 0xa6, 0xe2, 0x99, 0x08,
+
  0xac, 0x2b, 0x60, 0x2a, 0x48, 0xdd, 0x1d, 0x0a, 0xf2, 0x66, 0xb5, 0xc4,
+
  0xa8, 0x6d, 0x65, 0x14, 0x34, 0x14, 0xab, 0xed, 0xd9, 0xb1, 0x0e, 0x07,
+
  0x86, 0x88, 0xa3, 0xaa, 0x6d, 0xdd, 0xa3, 0x0e, 0xc2, 0x1b, 0x7c, 0xef,
+
  0x1a, 0xc8, 0x92, 0xce, 0xd9, 0xc1, 0x22, 0xa9, 0x2a, 0xcc, 0xcd, 0x32,
+
  0x0f, 0xba, 0x8b, 0x0a, 0x42, 0x77, 0xba, 0x34, 0x36, 0x4e, 0x62, 0x4e,
+
  0x8d, 0x6a, 0xd3, 0xd9, 0xd9, 0xcb, 0x61, 0x88, 0xcc, 0x90, 0x3a, 0x8e,
+
  0x0e, 0x81, 0xbf, 0x80, 0xcc, 0xb6, 0x27, 0x5c, 0xd3, 0xab, 0x54, 0xc9,
+
  0xf3, 0x74, 0xc2, 0xea, 0x1a, 0x74, 0x8b, 0x39, 0x0e, 0x02, 0x64, 0x80,
+
  0x06, 0x31, 0x39, 0x85, 0x52, 0x3c, 0x00, 0xdf, 0x39, 0x31, 0x4f, 0x4e,
+
  0x9e, 0xc4, 0x63, 0x6c, 0x83, 0x8e, 0x14, 0x8c, 0x69, 0x0d, 0x07, 0x33,
+
  0x90, 0x29, 0x18, 0x6e, 0x41, 0x16, 0xa2, 0x64, 0x80, 0x92, 0x7c, 0xc5,
+
  0x4a, 0x15, 0xcd, 0xc0, 0x71, 0xf2, 0xc7, 0x96, 0x81, 0x9c, 0xb3, 0x06,
+
  0x89, 0x8b, 0xe6, 0x62, 0x73, 0x97, 0xd9, 0x07, 0x2a, 0xef, 0x25, 0x6f,
+
  0xb2, 0x01, 0xd7, 0x5f, 0xe5, 0xc0, 0x85, 0x60, 0xda, 0x01, 0xb6, 0x6c,
+
  0x87, 0x23, 0xaf, 0x2f, 0x1a, 0x36, 0x9c, 0xfd, 0xc3, 0x35, 0x4a, 0xb9,
+
  0x49, 0x58, 0x13, 0x55, 0x1a, 0xb3, 0xa4, 0x6a, 0xce, 0x74, 0x70, 0x52,
+
  0xff, 0x4d, 0x10, 0x06, 0x55, 0x9d, 0x97, 0x03, 0xcd, 0x67, 0x67, 0x23,
+
  0x1d, 0x79, 0xb8, 0x8e, 0x82, 0x51, 0x1e, 0x1a, 0x41, 0x36, 0x69, 0x88,
+
  0xa1, 0xa3, 0x1c, 0x7d, 0x99, 0xf8, 0x66, 0x6d, 0xb6, 0xcc, 0x35, 0x3e,
+
  0x11, 0xe7, 0xe0, 0xce, 0x32, 0xae, 0x0f, 0x90, 0x4d, 0xc6, 0x07, 0xd0,
+
  0x94, 0x97, 0x95, 0x38, 0x71, 0x64, 0x67, 0x75, 0xcf, 0x57, 0x1e, 0x00,
+
  0x43, 0x4c, 0xb7, 0x53, 0xb7, 0xd6, 0xd1, 0xb7, 0xcc, 0xd0, 0xeb, 0x32,
+
  0x76, 0x3b, 0xa7, 0xf5, 0xce, 0xcb, 0x18, 0xb6, 0x1e, 0x4b, 0xc3, 0xf0,
+
  0x37, 0xf2, 0xb3, 0x11, 0xe3, 0x7e, 0x8f, 0x1f, 0x80, 0xa2, 0x4c, 0x36,
+
  0xb6, 0xc3, 0xbc, 0x31, 0x38, 0xb9, 0xd3, 0x3c, 0x57, 0x78, 0x3b, 0xbb,
+
  0xcf, 0xbe, 0x59, 0xe3, 0x6c, 0xd9, 0x9c, 0x66, 0xbc, 0x1f, 0x8d, 0xd8,
+
  0x44, 0x35, 0x6e, 0x73, 0x78, 0x3c, 0xea, 0xc5, 0x7c, 0x73, 0x3a, 0x4b,
+
  0x1c, 0x3a, 0x63, 0x75, 0x1e, 0x2d, 0x43, 0xd4, 0x09, 0x71, 0x1d, 0xcd,
+
  0x76, 0xc0, 0x36, 0x3a, 0xe3, 0x52, 0x2e, 0x76, 0x9b, 0xdc, 0x9c, 0xef,
+
  0x37, 0xab, 0x2d, 0x63, 0x1c, 0xc2, 0x28, 0xa7, 0xc7, 0xaf, 0x22, 0x0e,
+
  0x69, 0xa2, 0x32, 0x2f, 0x39, 0x23, 0x9a, 0x38, 0x6c, 0x48, 0xd8, 0x77,
+
  0xc4, 0x51, 0xad, 0x17, 0x0b, 0x14, 0x9a, 0x1a, 0x07, 0x16, 0x30, 0xf0,
+
  0x42, 0x09, 0xe7, 0x0d, 0xf1, 0x52, 0x5f, 0x2f, 0xe0, 0xd1, 0x33, 0xa6,
+
  0xc0, 0x89, 0x3f, 0x5c, 0x32, 0xab, 0xc9, 0x03, 0x8c, 0x21, 0x2e, 0x67,
+
  0x4c, 0x8f, 0x2a, 0xf8, 0x90, 0xa0, 0x81, 0x7d, 0x9e, 0x67, 0xbf, 0x09,
+
  0x2d, 0xa7, 0xf9, 0x65, 0x56, 0x16, 0x39, 0xa9, 0x49, 0x94, 0xf0, 0x38,
+
  0x12, 0x87, 0xdc, 0x24, 0xda, 0x38, 0x7a, 0xfb, 0xe6, 0xe5, 0xbb, 0xa3,
+
  0xc3, 0x77, 0xdf, 0xbd, 0x7d, 0xfd, 0xec, 0xe5, 0xf1, 0x46, 0x3b, 0x8d,
+
  0x74, 0x2a, 0xb9, 0x15, 0x15, 0xba, 0xc4, 0x29, 0xb5, 0x46, 0x0f, 0x08,
+
  0x67, 0x4c, 0x33, 0x89, 0x50, 0xe2, 0x0c, 0xb9, 0xba, 0x29, 0x69, 0x89,
+
  0x19, 0x15, 0x2e, 0x68, 0x6b, 0xb8, 0xd1, 0x12, 0x1d, 0x77, 0x83, 0x26,
+
  0xa7, 0x10, 0x01, 0x29, 0x01, 0x3c, 0x9d, 0x5f, 0x50, 0xe9, 0x8b, 0xae,
+
  0x94, 0x7f, 0x68, 0xb8, 0x88, 0x94, 0x50, 0xcb, 0x3e, 0x41, 0x4a, 0x16,
+
  0x18, 0x7a, 0xe6, 0xa5, 0xc4, 0xfc, 0x43, 0xc9, 0x91, 0x3f, 0x3a, 0x0c,
+
  0x6c, 0x77, 0x65, 0x5d, 0x93, 0xb0, 0x12, 0x38, 0x0a, 0x1e, 0x1b, 0x99,
+
  0xe4, 0xb8, 0xac, 0x37, 0xfa, 0x51, 0x9a, 0x91, 0x38, 0xd4, 0xd2, 0x25,
+
  0x54, 0xfc, 0x88, 0xbb, 0x7a, 0x79, 0x9d, 0x98, 0xef, 0x98, 0x30, 0x5d,
+
  0x0f, 0xd2, 0x0f, 0x29, 0xc9, 0x5b, 0xb9, 0xeb, 0x68, 0x59, 0x92, 0x0c,
+
  0xff, 0x11, 0xd8, 0x21, 0x32, 0x8c, 0x67, 0x96, 0x3d, 0xf3, 0x45, 0x60,
+
  0x20, 0xb7, 0x99, 0x55, 0x31, 0x23, 0x83, 0x81, 0x82, 0xaa, 0x94, 0x94,
+
  0x70, 0x7a, 0x78, 0xf6, 0x3c, 0xa4, 0x48, 0x36, 0xe9, 0x90, 0xd8, 0x47,
+
  0xa5, 0x59, 0x20, 0xaf, 0x87, 0xc3, 0x88, 0xaa, 0x35, 0xb1, 0x94, 0xb1,
+
  0x4c, 0xf0, 0x81, 0xce, 0x17, 0x40, 0xd6, 0x6d, 0x9e, 0xf6, 0xa7, 0xa3,
+
  0xe1, 0xef, 0x76, 0x77, 0xd1, 0xad, 0xbb, 0x84, 0x75, 0xd9, 0x84, 0xbb,
+
  0xf2, 0x0a, 0x4e, 0xe6, 0x7c, 0x50, 0x15, 0x5b, 0x92, 0xd9, 0xce, 0x7e,
+
  0x96, 0xe4, 0x32, 0xc9, 0x66, 0x44, 0x46, 0x4a, 0xd4, 0x1d, 0xb9, 0xae,
+
  0xa6, 0x8e, 0x15, 0x04, 0x16, 0xc8, 0x92, 0x99, 0xef, 0xa1, 0xdd, 0xcc,
+
  0x4e, 0x86, 0xec, 0xd0, 0x9b, 0x27, 0x63, 0xf8, 0x15, 0xd9, 0xf0, 0x56,
+
  0xf7, 0x9b, 0x0d, 0xd9, 0xcd, 0x47, 0x29, 0xc9, 0x54, 0xc4, 0xea, 0x73,
+
  0x85, 0xbc, 0x7d, 0xb8, 0x6c, 0x62, 0x26, 0x95, 0x12, 0x8d, 0x92, 0xf1,
+
  0xfb, 0xab, 0xa4, 0x9c, 0x70, 0xc6, 0x06, 0x50, 0xcb, 0x28, 0x9b, 0x65,
+
  0xf5, 0x35, 0xc7, 0x5c, 0xda, 0x46, 0x09, 0x97, 0x1d, 0xd1, 0x22, 0xa6,
+
  0xf9, 0x79, 0x96, 0x53, 0xe4, 0x03, 0xa5, 0x6a, 0x56, 0xbb, 0xe1, 0x16,
+
  0xf2, 0x3d, 0x59, 0x8f, 0x81, 0x79, 0x76, 0xc0, 0x55, 0x40, 0x47, 0x89,
+
  0xa6, 0x69, 0xe9, 0x56, 0xd9, 0xa0, 0xcb, 0xa4, 0x94, 0x7c, 0x54, 0x89,
+
  0x08, 0xf8, 0xde, 0x48, 0x35, 0x8f, 0xfe, 0x94, 0x5e, 0x83, 0xe0, 0xcb,
+
  0xf2, 0x80, 0x9a, 0xa1, 0x5e, 0xbe, 0x4c, 0x93, 0x9c, 0x52, 0x49, 0x4c,
+
  0x63, 0xfd, 0xd1, 0x37, 0xe8, 0xf8, 0x7e, 0x75, 0x70, 0xe2, 0x10, 0x20,
+
  0xf2, 0x5d, 0x96, 0x4c, 0x4f, 0xf2, 0x37, 0x51, 0x45, 0xaf, 0x6c, 0xdf,
+
  0xd9, 0xaa, 0x0d, 0x30, 0xd7, 0x66, 0x46, 0x21, 0x68, 0x0d, 0xf7, 0x98,
+
  0xca, 0xe6, 0x28, 0xc9, 0x85, 0x6b, 0x34, 0xa5, 0x88, 0xf7, 0xf1, 0xe0,
+
  0xd1, 0x8e, 0xf9, 0x6a, 0xd0, 0x7e, 0x8a, 0x7d, 0x8c, 0x77, 0x9a, 0x4a,
+
  0xbb, 0xe9, 0xcd, 0x3d, 0xe7, 0xfc, 0x08, 0xda, 0x64, 0xdc, 0x63, 0xd9,
+
  0xe2, 0xaf, 0x8c, 0x53, 0x88, 0xb8, 0x5f, 0x6b, 0x38, 0xd7, 0x7d, 0xa9,
+
  0x32, 0x4c, 0xde, 0x63, 0x43, 0xd4, 0x33, 0x58, 0xc9, 0xb2, 0x80, 0xbd,
+
  0x6e, 0xec, 0xe7, 0x26, 0x9b, 0x18, 0xed, 0x63, 0x22, 0xdc, 0xdc, 0x59,
+
  0x98, 0xad, 0x70, 0x84, 0x4e, 0x64, 0x6b, 0x28, 0x26, 0x17, 0x32, 0x15,
+
  0x25, 0x06, 0xd7, 0x28, 0x9f, 0xb6, 0x55, 0x37, 0x6c, 0x2c, 0xae, 0xa9,
+
  0x52, 0xd0, 0xf3, 0x8f, 0x0e, 0xc9, 0x91, 0x73, 0x87, 0x78, 0x42, 0xb7,
+
  0x46, 0xd1, 0xd0, 0x20, 0xe8, 0xa2, 0xa7, 0xc0, 0x66, 0xc3, 0x0a, 0x84,
+
  0x68, 0x10, 0xb7, 0x54, 0x21, 0x6c, 0x36, 0xba, 0x27, 0x53, 0x3d, 0x95,
+
  0xfc, 0x95, 0xaa, 0x0b, 0x38, 0x83, 0x4a, 0xc3, 0x32, 0x8e, 0x65, 0x8e,
+
  0x95, 0xd5, 0x92, 0xf6, 0x12, 0xd2, 0xa6, 0xe1, 0x90, 0x72, 0x21, 0xdb,
+
  0x41, 0x2f, 0xda, 0x4c, 0x07, 0xe7, 0xa0, 0x98, 0xf4, 0x70, 0xa8, 0xdd,
+
  0x03, 0xfc, 0x77, 0x8f, 0xfe, 0xdd, 0xef, 0x6d, 0x49, 0xf1, 0xbf, 0x4b,
+
  0x1a, 0xa8, 0x6d, 0xf8, 0x7b, 0xd4, 0x54, 0x3e, 0x58, 0xfe, 0x66, 0x5d,
+
  0x8c, 0x51, 0xd4, 0x65, 0x26, 0x02, 0xdf, 0x08, 0xd4, 0x55, 0x98, 0x73,
+
  0x00, 0xed, 0x32, 0xe5, 0x08, 0x1e, 0xbc, 0x1b, 0xd6, 0xa3, 0xa4, 0x13,
+
  0x27, 0xac, 0x3d, 0x7e, 0x57, 0xa6, 0xa0, 0xb9, 0x5e, 0x44, 0xcb, 0x9a,
+
  0x0f, 0x09, 0x9c, 0xab, 0xf6, 0x70, 0xac, 0x40, 0xd3, 0xdb, 0x1a, 0x3d,
+
  0x9d, 0xbd, 0xfd, 0x76, 0x0b, 0x39, 0xcf, 0x26, 0xc1, 0xec, 0x05, 0xa3,
+
  0xcd, 0xc7, 0x52, 0x9b, 0x1f, 0x54, 0x5b, 0x50, 0x79, 0xa0, 0x50, 0x1f,
+
  0x9e, 0xc5, 0xd8, 0x2d, 0xe6, 0x9b, 0xa3, 0x99, 0x8b, 0xd8, 0x01, 0xa8,
+
  0x45, 0x67, 0x63, 0x74, 0xe6, 0x63, 0xd2, 0xe1, 0x45, 0x12, 0x36, 0x6c,
+
  0xec, 0x59, 0x99, 0x4a, 0x96, 0x89, 0xfc, 0x4d, 0xf2, 0x5e, 0xb4, 0xc3,
+
  0x8a, 0xeb, 0xfc, 0xda, 0xaa, 0xe1, 0xcd, 0x11, 0x44, 0x65, 0xe0, 0x46,
+
  0x13, 0x93, 0xf7, 0x6d, 0xc6, 0xbc, 0xc5, 0xbf, 0x3b, 0x08, 0x9f, 0x64,
+
  0xba, 0xe1, 0x33, 0x9e, 0x64, 0x7a, 0xfe, 0x36, 0xf9, 0x62, 0xb7, 0xed,
+
  0x11, 0xb9, 0x8b, 0xa9, 0x70, 0xd3, 0x71, 0x86, 0x4b, 0x62, 0xcc, 0x8a,
+
  0x58, 0x56, 0xab, 0x4e, 0xb3, 0x1e, 0x66, 0xe7, 0x4c, 0xf2, 0x4d, 0x9a,
+
  0xf4, 0x26, 0x19, 0xe1, 0xce, 0x56, 0xb5, 0x57, 0xe2, 0xda, 0x21, 0xe1,
+
  0x23, 0x87, 0x03, 0x0c, 0x79, 0x9c, 0x37, 0x12, 0xc5, 0xdb, 0x4c, 0xde,
+
  0x27, 0x83, 0xe8, 0xe4, 0x68, 0x78, 0x8a, 0x4f, 0x58, 0x60, 0x12, 0xfc,
+
  0x16, 0x66, 0xc8, 0xb7, 0x86, 0x03, 0x9b, 0x2d, 0xcd, 0xab, 0x06, 0xd0,
+
  0x46, 0x27, 0x41, 0x68, 0x5a, 0x96, 0x96, 0xf5, 0x34, 0xb2, 0xd7, 0x29,
+
  0x7d, 0x1e, 0x36, 0x30, 0x03, 0xfe, 0x41, 0x4c, 0xc1, 0x7b, 0xd0, 0x02,
+
  0xd6, 0x7f, 0xb2, 0x65, 0xa2, 0x89, 0x7d, 0xa5, 0x5a, 0x93, 0x14, 0x5b,
+
  0x2d, 0xcf, 0xd1, 0x87, 0x53, 0x69, 0x14, 0xc1, 0x5d, 0x0d, 0x5f, 0xe9,
+
  0x92, 0xd7, 0x26, 0xe3, 0x93, 0x0f, 0x39, 0x8c, 0x44, 0xc5, 0xde, 0xa4,
+
  0x6f, 0xe6, 0x85, 0x1d, 0x18, 0x46, 0xc3, 0x60, 0x36, 0xbc, 0x82, 0x96,
+
  0x6b, 0x06, 0xd4, 0x29, 0xde, 0x13, 0x75, 0x3c, 0x4d, 0x05, 0x03, 0x23,
+
  0x1c, 0x40, 0x1d, 0xb3, 0xaa, 0xab, 0x69, 0x5f, 0x68, 0x68, 0xa7, 0x68,
+
  0x76, 0xb0, 0xb5, 0x48, 0xda, 0x8c, 0xe1, 0x53, 0xd1, 0x0f, 0xf9, 0x12,
+
  0xab, 0x67, 0x02, 0x7a, 0x0d, 0xea, 0xa7, 0x28, 0xb0, 0x71, 0x01, 0x57,
+
  0x58, 0xde, 0x4d, 0xf2, 0x72, 0x8b, 0x2e, 0xd9, 0xfc, 0xe6, 0x25, 0xf0,
+
  0xbc, 0x50, 0xad, 0x32, 0x1c, 0x49, 0xec, 0x0d, 0x19, 0xdf, 0x76, 0xf0,
+
  0xb5, 0xcd, 0x6f, 0x67, 0x5e, 0x6b, 0x3a, 0xac, 0x32, 0x60, 0x7b, 0x93,
+
  0xc5, 0x72, 0xf4, 0x3e, 0xbd, 0x6e, 0xb8, 0x49, 0x1f, 0xec, 0xb6, 0x4c,
+
  0x6d, 0x7c, 0x04, 0xd8, 0x8d, 0x69, 0xf4, 0x14, 0xff, 0xbd, 0xd1, 0xda,
+
  0xa6, 0x5a, 0x0b, 0xba, 0xbe, 0xbe, 0x70, 0x1c, 0x48, 0x12, 0x1b, 0x6d,
+
  0x18, 0xc0, 0x91, 0xaf, 0xf4, 0xd0, 0xd9, 0x1a, 0xa0, 0x38, 0xea, 0x47,
+
  0xcf, 0x10, 0x66, 0xe7, 0xf8, 0xf5, 0x0f, 0x44, 0xf0, 0xa7, 0xbb, 0x7b,
+
  0x94, 0x90, 0x66, 0x6c, 0xce, 0x09, 0x3d, 0x24, 0x1c, 0x7d, 0x30, 0x2c,
+
  0x93, 0xe6, 0xc1, 0x15, 0x73, 0x06, 0x66, 0x02, 0x89, 0x41, 0x76, 0x9d,
+
  0x45, 0x9d, 0xf5, 0xba, 0xe2, 0x63, 0xdb, 0x41, 0x76, 0xc9, 0x8a, 0x22,
+
  0xc5, 0xa9, 0x65, 0x14, 0xd0, 0xed, 0x46, 0xcd, 0xa4, 0x80, 0x31, 0xea,
+
  0x87, 0x30, 0xd5, 0x81, 0x78, 0xdf, 0x8f, 0xfb, 0xbe, 0xc8, 0x10, 0xe5,
+
  0x0a, 0x4c, 0xd9, 0xf7, 0xe3, 0x6a, 0x77, 0xf7, 0x20, 0x7a, 0xfb, 0xe6,
+
  0x05, 0x2b, 0xea, 0xf8, 0xae, 0x2d, 0x17, 0x31, 0xbe, 0x40, 0x87, 0x63,
+
  0xdf, 0x6e, 0xcc, 0x67, 0x74, 0xec, 0xdb, 0x49, 0xa0, 0x06, 0x21, 0x6f,
+
  0x47, 0xe2, 0x6f, 0x2d, 0x72, 0x3c, 0xee, 0xcb, 0xbd, 0xf8, 0x13, 0x28,
+
  0x52, 0x62, 0xb7, 0xf0, 0x5b, 0xdc, 0x5c, 0x01, 0x7b, 0x65, 0xf4, 0xd4,
+
  0xa1, 0xa4, 0xbf, 0x19, 0xff, 0xed, 0x2f, 0x77, 0x73, 0x07, 0x85, 0xc9,
+
  0x13, 0x5f, 0x24, 0x14, 0x1a, 0xb3, 0xa5, 0x72, 0xf4, 0xaa, 0x74, 0x94,
+
  0x19, 0xfe, 0x89, 0x40, 0xa2, 0x90, 0xff, 0x25, 0xb9, 0x51, 0xf7, 0x63,
+
  0x46, 0x35, 0xa0, 0x92, 0xc9, 0x36, 0x1f, 0x1d, 0x17, 0x33, 0xf5, 0x2b,
+
  0xb9, 0x4f, 0x76, 0xdd, 0x42, 0x64, 0x2d, 0xef, 0x89, 0x76, 0x86, 0x4c,
+
  0x9b, 0xe5, 0x0f, 0x13, 0x63, 0x9b, 0xf8, 0x8d, 0xbd, 0x4a, 0xe5, 0x1c,
+
  0x46, 0xa9, 0xb3, 0xb7, 0x51, 0x32, 0x39, 0xcd, 0x8c, 0x8d, 0x10, 0xb2,
+
  0x25, 0x35, 0xb7, 0x3c, 0x64, 0x5a, 0x63, 0x2a, 0x9e, 0x71, 0x8e, 0x6b,
+
  0x09, 0xa2, 0xae, 0x5b, 0x23, 0x14, 0x0d, 0x82, 0xaf, 0x54, 0xb8, 0x00,
+
  0x3e, 0x6b, 0xed, 0xe1, 0xb4, 0xd2, 0xa2, 0x1d, 0xac, 0xd6, 0x0c, 0x63,
+
  0x41, 0x63, 0x48, 0x7c, 0xef, 0x5c, 0x28, 0x7e, 0x91, 0x55, 0x91, 0xf0,
+
  0x98, 0xec, 0x12, 0x2f, 0x54, 0xba, 0xb1, 0x99, 0x18, 0x4d, 0x93, 0xb2,
+
  0xc8, 0xf1, 0x67, 0xce, 0xe1, 0x72, 0x07, 0x80, 0xc9, 0x27, 0x2d, 0x43,
+
  0x7d, 0x94, 0xcc, 0x23, 0x49, 0x66, 0xa4, 0x78, 0x23, 0x66, 0x87, 0xa0,
+
  0x2d, 0x05, 0x9c, 0x0c, 0x2f, 0x98, 0xc3, 0xb8, 0x94, 0xf9, 0x4d, 0x84,
+
  0xdb, 0x61, 0x53, 0x8e, 0x4d, 0x24, 0xb1, 0x2f, 0x35, 0x26, 0xb4, 0xd5,
+
  0x02, 0xf9, 0x11, 0x72, 0x3d, 0x9a, 0x7c, 0xca, 0x88, 0x14, 0x7e, 0xf4,
+
  0xfe, 0xf4, 0x7e, 0x86, 0x5f, 0x14, 0x4d, 0x82, 0x1d, 0x67, 0x9a, 0xef,
+
  0x22, 0xac, 0x91, 0x2a, 0x63, 0xda, 0xc3, 0x99, 0x5d, 0x9c, 0xa4, 0xb3,
+
  0x6c, 0x9e, 0x91, 0x6d, 0x3b, 0x54, 0x44, 0x01, 0x4e, 0xd3, 0xa6, 0xc9,
+
  0xf0, 0x5c, 0x78, 0x19, 0xcd, 0xc3, 0x7b, 0x3f, 0xf7, 0xda, 0xbe, 0x42,
+
  0x9c, 0xc8, 0xcf, 0x37, 0x4f, 0xc4, 0x00, 0x9a, 0xac, 0x4e, 0x0d, 0x0d,
+
  0x9b, 0x1b, 0x38, 0x09, 0x14, 0xd3, 0x68, 0x35, 0x8b, 0x77, 0x49, 0x9c,
+
  0x2f, 0x52, 0x7a, 0x52, 0x2c, 0x02, 0xb9, 0x47, 0x64, 0x11, 0xd4, 0x58,
+
  0x7a, 0xa4, 0x7e, 0xf7, 0x28, 0xcf, 0xc6, 0xef, 0x19, 0x96, 0x61, 0xda,
+
  0x76, 0x81, 0x28, 0x47, 0x10, 0x68, 0x19, 0x7f, 0xe1, 0x70, 0x02, 0x98,
+
  0xfd, 0x83, 0xe7, 0x18, 0x39, 0x73, 0x96, 0xdb, 0x18, 0x7a, 0xd0, 0xe9,
+
  0x09, 0xb3, 0x7d, 0xf7, 0xec, 0xc5, 0x9b, 0x68, 0x93, 0xfc, 0x40, 0x6d,
+
  0xaf, 0x9b, 0xf2, 0xf6, 0x68, 0x3b, 0xad, 0xc7, 0xdb, 0x8b, 0xf7, 0xd9,
+
  0x76, 0x5e, 0x55, 0x93, 0xd1, 0x96, 0x08, 0x0d, 0xe3, 0x3a, 0xc3, 0xe3,
+
  0x1b, 0xf0, 0x95, 0xb5, 0x0f, 0xa9, 0xe3, 0x3b, 0x43, 0xb1, 0x62, 0x5c,
+
  0x66, 0xb4, 0x4a, 0xc4, 0x02, 0x28, 0x81, 0x90, 0xab, 0x36, 0x28, 0xef,
+
  0x30, 0xc0, 0xe6, 0xa5, 0x34, 0x47, 0x84, 0x88, 0xfa, 0x59, 0x09, 0xb9,
+
  0x2c, 0x63, 0x24, 0x1e, 0xa1, 0x46, 0x71, 0x32, 0xba, 0xc1, 0x1f, 0xbc,
+
  0x33, 0x94, 0xf3, 0xa4, 0xd9, 0xfc, 0x26, 0x43, 0x99, 0xad, 0xd6, 0xc1,
+
  0x76, 0x0f, 0xf9, 0x1a, 0x63, 0x24, 0x99, 0xe4, 0x4c, 0x38, 0x9d, 0xd3,
+
  0x65, 0xa5, 0x01, 0x55, 0x2f, 0x0f, 0xaf, 0xb9, 0x07, 0xba, 0x99, 0xb7,
+
  0xa7, 0x23, 0x51, 0x07, 0xad, 0x87, 0x52, 0x19, 0x05, 0x73, 0xc1, 0x48,
+
  0x84, 0xb1, 0xcf, 0x61, 0xcc, 0x7a, 0x8a, 0x33, 0x2d, 0x31, 0x5b, 0x82,
+
  0x62, 0x7b, 0x13, 0x61, 0xd4, 0x1e, 0x3f, 0xdc, 0xdd, 0xdb, 0x6a, 0x64,
+
  0x57, 0x0a, 0xd7, 0xf0, 0xd0, 0x12, 0xa6, 0xd7, 0xe4, 0xb6, 0x76, 0x69,
+
  0x0f, 0x6d, 0xa3, 0x5a, 0x03, 0x6c, 0x3a, 0xf4, 0x24, 0xc5, 0x04, 0x00,
+
  0x50, 0xcb, 0x34, 0xd3, 0x60, 0x94, 0xc2, 0x2c, 0xbd, 0x8d, 0x37, 0x78,
+
  0x46, 0x3d, 0x51, 0x25, 0x7a, 0xd6, 0x2c, 0xc4, 0xf8, 0x1a, 0xac, 0x7f,
+
  0x2d, 0x67, 0xd0, 0x9d, 0xb5, 0xd0, 0x59, 0xd2, 0xe1, 0x96, 0xc5, 0xf7,
+
  0x72, 0x4c, 0xc6, 0xbe, 0x4d, 0x6f, 0x8b, 0x63, 0x59, 0x2d, 0xe1, 0xd7,
+
  0x26, 0xb3, 0x17, 0xab, 0x42, 0xda, 0x9a, 0x9c, 0xcc, 0xa9, 0x87, 0xa2,
+
  0x27, 0xa7, 0x84, 0xd5, 0xc4, 0xb1, 0x43, 0x75, 0xf9, 0x5d, 0x0d, 0xa2,
+
  0x39, 0x6a, 0x20, 0xdb, 0x1b, 0x39, 0x0e, 0xe8, 0x48, 0xe1, 0x21, 0xff,
+
  0x45, 0x1e, 0xdf, 0x26, 0xe7, 0x90, 0xed, 0xc1, 0xbd, 0x17, 0x17, 0xfe,
+
  0x28, 0x95, 0xb8, 0x1e, 0xb3, 0x1a, 0x23, 0xca, 0x3c, 0xc1, 0x0f, 0xb7,
+
  0x6f, 0xbb, 0x92, 0x4b, 0x7d, 0xff, 0xec, 0x85, 0xc5, 0x02, 0x6f, 0xf4,
+
  0xba, 0xbe, 0x17, 0xa7, 0x2b, 0xc9, 0x73, 0x9b, 0xea, 0xef, 0x07, 0x6e,
+
  0x74, 0xff, 0xf6, 0x62, 0x02, 0x5b, 0x21, 0x95, 0xc6, 0x55, 0x65, 0x70,
+
  0x1d, 0x9c, 0xc7, 0x0d, 0x1a, 0x95, 0xa1, 0x1d, 0x61, 0x25, 0x0e, 0x27,
+
  0x69, 0x14, 0x5a, 0x8f, 0xbe, 0x73, 0xf2, 0x41, 0xaf, 0xc3, 0xe3, 0x88,
+
  0x07, 0x7d, 0x9c, 0x4e, 0x52, 0x5b, 0xb7, 0xd3, 0xa6, 0x05, 0x3c, 0xf3,
+
  0xcc, 0x0d, 0xfa, 0x37, 0x9e, 0x7d, 0x78, 0x70, 0xe7, 0xf9, 0xb6, 0x0e,
+
  0x60, 0xd9, 0xce, 0x23, 0x4f, 0xce, 0x57, 0x46, 0x79, 0xb2, 0xda, 0x1d,
+
  0x25, 0xdd, 0xe0, 0xca, 0xf9, 0x46, 0x71, 0xc9, 0x75, 0xe6, 0x9c, 0xbf,
+
  0xd3, 0xdc, 0x5a, 0xc2, 0x90, 0x8c, 0x36, 0x5f, 0x6a, 0xcd, 0xfc, 0xe9,
+
  0xf7, 0x3f, 0xb1, 0xd2, 0xa1, 0x50, 0x2b, 0x9e, 0xb7, 0x8a, 0xbc, 0xc2,
+
  0x5f, 0x99, 0x64, 0x57, 0xb0, 0x4b, 0xd1, 0x4a, 0xc8, 0xa4, 0x30, 0x56,
+
  0xa2, 0xfa, 0x98, 0xf4, 0xbb, 0x65, 0xcb, 0x3e, 0x71, 0xa9, 0x7b, 0x4f,
+
  0xe9, 0xbb, 0x76, 0xba, 0x87, 0xe0, 0x2a, 0x7d, 0xf3, 0x33, 0x7f, 0xcd,
+
  0xf5, 0x52, 0xf0, 0x57, 0x7d, 0xb1, 0x9c, 0x8f, 0x60, 0x33, 0xf3, 0xfa,
+
  0x9b, 0x5e, 0xc4, 0x29, 0xa5, 0x53, 0x59, 0xcf, 0x15, 0x9e, 0x0b, 0x29,
+
  0x14, 0xb2, 0x8e, 0xfe, 0xc6, 0xa2, 0xf1, 0xec, 0xfa, 0x02, 0x83, 0x66,
+
  0xeb, 0xe6, 0x60, 0xf3, 0x38, 0xb0, 0xe4, 0xe9, 0x86, 0x6f, 0x81, 0x3e,
+
  0x7f, 0x7e, 0xf5, 0xd7, 0x9f, 0xbf, 0xdc, 0x7f, 0x90, 0x3c, 0x4e, 0xc6,
+
  0x8f, 0xa6, 0x4f, 0x92, 0x87, 0x93, 0x87, 0x8f, 0xbf, 0xdc, 0x7b, 0xf2,
+
  0x30, 0x79, 0xfc, 0x60, 0x9a, 0x3c, 0xda, 0x4d, 0x77, 0xbf, 0x9c, 0xee,
+
  0xed, 0x4f, 0x26, 0xd3, 0xf4, 0xc9, 0xe4, 0x71, 0x82, 0x55, 0x5c, 0xa0,
+
  0xe9, 0xea, 0xd4, 0x7d, 0x56, 0xab, 0x56, 0x58, 0x12, 0x0d, 0x9f, 0x1f,
+
  0xc6, 0xbb, 0xd1, 0x45, 0xfa, 0x41, 0x0f, 0x58, 0x33, 0x89, 0x18, 0xb1,
+
  0x3c, 0xe9, 0x75, 0xba, 0x5f, 0x56, 0x51, 0x34, 0x11, 0x1f, 0x4c, 0xeb,
+
  0x9a, 0x64, 0x03, 0x74, 0x59, 0xb9, 0xc0, 0xc9, 0x38, 0xf3, 0x0f, 0x34,
+
  0x80, 0x86, 0xef, 0xd5, 0x3e, 0xfc, 0x2f, 0xd1, 0x83, 0xf5, 0x2a, 0x19,
+
  0x5f, 0x10, 0x12, 0x93, 0x5c, 0x38, 0xe4, 0x3c, 0xad, 0x7e, 0x24, 0xbf,
+
  0x60, 0xc8, 0xc6, 0x19, 0xe3, 0x87, 0xb2, 0x58, 0x2e, 0x4e, 0x8b, 0x59,
+
  0x36, 0xbe, 0x5e, 0x35, 0x9c, 0x7b, 0x59, 0xe3, 0x8b, 0x63, 0x66, 0xe1,
+
  0x59, 0x15, 0x14, 0x73, 0x8e, 0xb6, 0x7a, 0x5b, 0xff, 0x9e, 0x75, 0x1c,
+
  0xde, 0x8f, 0x77, 0x0f, 0x9f, 0x8d, 0xff, 0x10, 0x9b, 0x60, 0x75, 0x19,
+
  0xfe, 0x5b, 0xdf, 0xf8, 0xb3, 0x22, 0xe0, 0x46, 0xeb, 0x2f, 0x1e, 0x67,
+
  0x0b, 0x02, 0x8a, 0x7b, 0x4a, 0xa5, 0x7e, 0xc0, 0x60, 0xe5, 0x83, 0xb0,
+
  0xd5, 0x37, 0x14, 0x0e, 0x50, 0x09, 0x01, 0xe9, 0xdd, 0xa2, 0xf0, 0x65,
+
  0x0a, 0xb3, 0xa5, 0x1e, 0x60, 0x29, 0x31, 0xcd, 0x3c, 0x2f, 0x39, 0x85,
+
  0x7f, 0xe5, 0x66, 0x51, 0x6e, 0xd4, 0x2c, 0x88, 0xd8, 0xe9, 0x26, 0xdf,
+
  0x0e, 0x18, 0xb0, 0x69, 0xb9, 0x40, 0x0b, 0x88, 0x10, 0x6c, 0xe9, 0xf3,
+
  0xf6, 0xc9, 0xc6, 0xc9, 0x0b, 0x89, 0xb2, 0xa9, 0x04, 0x7b, 0xf8, 0xf6,
+
  0xcd, 0xcb, 0x83, 0xf6, 0x22, 0xb5, 0xcb, 0x88, 0x27, 0xc5, 0xb8, 0xda,
+
  0xae, 0xaa, 0x99, 0xae, 0x03, 0x61, 0x6d, 0x86, 0xa3, 0x38, 0x32, 0xdb,
+
  0xf5, 0x88, 0xe3, 0x1e, 0xa9, 0x43, 0x9e, 0x7f, 0x7c, 0xf4, 0xec, 0xf9,
+
  0x71, 0x0c, 0xff, 0x0e, 0x0f, 0xe3, 0xc3, 0xe3, 0xe1, 0xde, 0xc3, 0x47,
+
  0xf1, 0xd1, 0xd1, 0xab, 0x27, 0x6b, 0x52, 0x48, 0x3d, 0xab, 0x2e, 0x77,
+
  0x07, 0xfb, 0x7d, 0xfe, 0x75, 0x77, 0xdf, 0x0c, 0xcf, 0x94, 0xc2, 0xd9,
+
  0x57, 0xba, 0x26, 0x2e, 0xb9, 0x14, 0x73, 0xe2, 0xf0, 0xe9, 0x24, 0xae,
+
  0x2a, 0xaf, 0x58, 0x04, 0x81, 0x5e, 0x38, 0xdd, 0xfb, 0x58, 0xea, 0xaa,
+
  0x48, 0x25, 0x88, 0xb3, 0x9c, 0xb0, 0x59, 0xf4, 0x66, 0x22, 0x0c, 0xe3,
+
  0x7b, 0x34, 0x85, 0x1a, 0xfd, 0x40, 0xd0, 0x35, 0x11, 0xd9, 0xf6, 0x95,
+
  0xeb, 0x3e, 0x45, 0xcd, 0xbb, 0x28, 0x0d, 0x64, 0xd8, 0xa4, 0x68, 0x40,
+
  0x8d, 0x04, 0xdd, 0x8d, 0x8d, 0x69, 0x47, 0xb7, 0x4a, 0x7a, 0xbb, 0xbd,
+
  0xbb, 0xb1, 0x31, 0xf8, 0xda, 0x0e, 0x9f, 0xe6, 0xd4, 0xaa, 0x75, 0x12,
+
  0xab, 0x9d, 0x9b, 0x9b, 0xd5, 0x71, 0x8f, 0x5a, 0x2e, 0x47, 0x73, 0x59,
+
  0x38, 0x3d, 0x53, 0x7d, 0xec, 0x49, 0x64, 0xaf, 0xb4, 0xde, 0x66, 0xc5,
+
  0x56, 0x33, 0xa6, 0x9e, 0xc9, 0x72, 0xae, 0x42, 0xe1, 0x20, 0x85, 0xd8,
+
  0x61, 0x93, 0xa0, 0x99, 0xd9, 0x81, 0x50, 0x75, 0xfc, 0x00, 0x17, 0xfd,
+
  0xce, 0x5b, 0xb2, 0x37, 0xfa, 0x68, 0xc9, 0x88, 0x36, 0x90, 0xbc, 0x5a,
+
  0xb8, 0xc6, 0x5e, 0x23, 0x2a, 0x80, 0xeb, 0x13, 0x0e, 0x24, 0x6a, 0xb0,
+
  0x38, 0xe4, 0x35, 0x15, 0xfc, 0xb6, 0xb5, 0x25, 0x47, 0x79, 0xef, 0x99,
+
  0x48, 0x20, 0x15, 0x8c, 0xf3, 0x5e, 0xa2, 0x3f, 0x5d, 0xe2, 0xd6, 0x94,
+
  0x27, 0xca, 0x23, 0xcd, 0xb3, 0xf3, 0x0b, 0xc4, 0xc9, 0xf0, 0xb4, 0x92,
+
  0x34, 0x29, 0xb5, 0x6e, 0x25, 0xb9, 0x36, 0x79, 0xcb, 0x0d, 0x38, 0xbf,
+
  0x2a, 0xda, 0xac, 0x6a, 0x38, 0xfa, 0x5b, 0xce, 0x8a, 0x7e, 0x15, 0x31,
+
  0x84, 0x95, 0xaf, 0x46, 0x4c, 0xb1, 0x98, 0x54, 0x0a, 0xf4, 0x92, 0x19,
+
  0x82, 0xef, 0x5c, 0x73, 0x04, 0xc0, 0xae, 0x57, 0xd8, 0xc4, 0x6c, 0xd8,
+
  0xec, 0x26, 0x1b, 0xbd, 0x2b, 0x9e, 0xb1, 0xcc, 0x6d, 0x40, 0xdf, 0xd7,
+
  0x3f, 0x14, 0x44, 0xd0, 0x66, 0x37, 0x94, 0xa9, 0x38, 0x65, 0xa3, 0xb4,
+
  0x2c, 0x8b, 0x72, 0x10, 0x38, 0xb2, 0xf6, 0x90, 0xc6, 0x9e, 0xc2, 0xb0,
+
  0xfa, 0xd0, 0xa6, 0xb3, 0x0c, 0x3f, 0xa6, 0x22, 0xa0, 0x15, 0x2f, 0xd9,
+
  0xc8, 0xd7, 0xb3, 0xc4, 0x79, 0xdf, 0xf5, 0x11, 0x2b, 0x66, 0x70, 0xeb,
+
  0xf3, 0xbb, 0xae, 0x90, 0xee, 0x60, 0x1b, 0xf1, 0x9f, 0xa4, 0x3c, 0x62,
+
  0x9a, 0x9d, 0x87, 0x13, 0xf2, 0x6c, 0x95, 0x66, 0x8d, 0x95, 0xf5, 0x9a,
+
  0x6d, 0x87, 0x74, 0x23, 0x11, 0x59, 0xf5, 0x89, 0x55, 0x9c, 0xd6, 0x6e,
+
  0x3c, 0xa2, 0x5c, 0x91, 0xe8, 0x09, 0x4f, 0xb4, 0xd7, 0xdd, 0x5b, 0xb0,
+
  0xa4, 0x2d, 0x32, 0x35, 0x12, 0xe6, 0x19, 0x8d, 0x0a, 0x49, 0x44, 0xfd,
+
  0x26, 0x76, 0xd0, 0xf6, 0xc6, 0x60, 0x9c, 0xd8, 0x8a, 0xc8, 0x95, 0x98,
+
  0xcd, 0x2d, 0xd8, 0x0e, 0xa1, 0xdb, 0x8c, 0x90, 0xd1, 0x13, 0xc2, 0x68,
+
  0x09, 0x19, 0x1f, 0x85, 0x93, 0xd4, 0xc5, 0xc5, 0x95, 0xde, 0x81, 0xaa,
+
  0x4d, 0xcd, 0xad, 0x1e, 0x76, 0xb2, 0x59, 0xe0, 0xf8, 0x81, 0x6a, 0x8e,
+
  0x68, 0x15, 0x08, 0x7e, 0x3f, 0x2b, 0xac, 0x15, 0x28, 0x18, 0x72, 0x58,
+
  0x2f, 0x32, 0xf0, 0x74, 0x4b, 0x94, 0x21, 0x2e, 0xc2, 0x82, 0x42, 0x51,
+
  0xf0, 0x67, 0xc4, 0xd8, 0x46, 0x9a, 0x58, 0x67, 0x55, 0x20, 0xdc, 0xbe,
+
  0x90, 0xbf, 0x5b, 0x10, 0x3d, 0x18, 0x70, 0x38, 0x23, 0xa0, 0x6d, 0x01,
+
  0x5f, 0x66, 0x80, 0x12, 0x4d, 0x17, 0xa8, 0x0a, 0x29, 0xfa, 0xc5, 0x89,
+
  0xe2, 0x3c, 0x79, 0x8e, 0xed, 0x53, 0x6b, 0x80, 0x95, 0x1b, 0x0e, 0x93,
+
  0xa4, 0xb2, 0x38, 0x1f, 0x95, 0x9f, 0xde, 0x64, 0x57, 0x33, 0x30, 0x3b,
+
  0x1f, 0x33, 0x85, 0x26, 0x52, 0xa6, 0xfa, 0x04, 0x38, 0x69, 0xad, 0x49,
+
  0xe9, 0x3c, 0x62, 0xdf, 0x41, 0x6d, 0x70, 0x41, 0x9c, 0x09, 0x28, 0x3e,
+
  0x88, 0xd9, 0xe6, 0x0e, 0xde, 0x96, 0x46, 0xf6, 0x92, 0xc8, 0xc6, 0xff,
+
  0xed, 0x36, 0x92, 0x43, 0x50, 0xf0, 0xce, 0x68, 0xea, 0x07, 0x38, 0xa7,
+
  0xaf, 0xb7, 0x42, 0xe1, 0x50, 0x3b, 0x92, 0x92, 0x14, 0xc2, 0xa8, 0xce,
+
  0x8a, 0x4a, 0xcb, 0xf6, 0xd1, 0x00, 0x62, 0xfc, 0xeb, 0x01, 0x63, 0xb1,
+
  0xe1, 0x07, 0xbc, 0x35, 0xad, 0xe1, 0xf8, 0x2a, 0xcd, 0xca, 0xb3, 0x40,
+
  0x0f, 0xea, 0x97, 0xb5, 0x98, 0xdd, 0x28, 0xb8, 0x8c, 0xc7, 0xeb, 0x20,
+
  0xfa, 0xf9, 0xe7, 0x7e, 0xf4, 0x73, 0xaf, 0x3d, 0xbb, 0x9f, 0x81, 0x8f,
+
  0xfe, 0x0c, 0xb4, 0xf8, 0x33, 0x23, 0x4f, 0xfd, 0x7c, 0x89, 0x8e, 0x2a,
+
  0x8c, 0xa8, 0x55, 0x33, 0x4c, 0xe7, 0x60, 0x67, 0x40, 0x33, 0xd6, 0xc0,
+
  0xd8, 0xe4, 0x5c, 0x8f, 0xe6, 0xb9, 0xb1, 0x38, 0x7f, 0x21, 0x14, 0xfe,
+
  0x16, 0x6b, 0x19, 0xb7, 0x6f, 0x39, 0xcf, 0xc5, 0x9f, 0xc2, 0xa4, 0x4a,
+
  0x5c, 0x80, 0x9b, 0x7f, 0x44, 0x1b, 0xbf, 0xdb, 0x70, 0x28, 0xab, 0x1f,
+
  0x42, 0x7a, 0x2b, 0x53, 0x36, 0x17, 0x48, 0xe7, 0xcd, 0x9c, 0xf2, 0x69,
+
  0xc5, 0xf5, 0x26, 0x27, 0x19, 0x27, 0x5c, 0xf9, 0x02, 0xfe, 0x04, 0xa3,
+
  0xcc, 0x82, 0xf7, 0x45, 0xe4, 0xa6, 0x94, 0xb1, 0x40, 0x11, 0x7c, 0x71,
+
  0x5d, 0xa1, 0xbe, 0x20, 0x53, 0xf2, 0x0e, 0x14, 0xac, 0x8e, 0x5f, 0x60,
+
  0x8a, 0x79, 0xf4, 0xfa, 0x0a, 0x52, 0x60, 0x3a, 0x11, 0x21, 0x0d, 0xe4,
+
  0x4a, 0x29, 0x28, 0x94, 0x76, 0xb2, 0xbb, 0x83, 0x95, 0xb4, 0xe7, 0x09,
+
  0xc3, 0xad, 0x81, 0x94, 0xc6, 0xda, 0xd4, 0xd6, 0x70, 0x94, 0x1d, 0xbd,
+
  0xd5, 0x59, 0x1c, 0x2f, 0xbb, 0x8e, 0xd8, 0x50, 0xc4, 0x82, 0xe0, 0x29,
+
  0x0d, 0x9e, 0x0d, 0x6f, 0xbe, 0x11, 0x6f, 0xe0, 0xc7, 0xb6, 0xfe, 0xbd,
+
  0xf4, 0x21, 0x29, 0x94, 0x47, 0x39, 0x05, 0xa8, 0xde, 0x23, 0x9d, 0xb0,
+
  0x4e, 0xe1, 0x96, 0xbc, 0x36, 0xd1, 0xc5, 0x35, 0x44, 0x2f, 0xcf, 0x57,
+
  0x98, 0x65, 0xdf, 0x8b, 0x4c, 0xa5, 0xb1, 0x0c, 0x05, 0xa9, 0xef, 0x92,
+
  0xd5, 0x91, 0x93, 0x7f, 0x11, 0xc7, 0x94, 0xf0, 0xbf, 0xe0, 0x46, 0x22,
+
  0x48, 0x8c, 0x94, 0x24, 0x79, 0x8d, 0x60, 0x62, 0x8b, 0x99, 0xc7, 0xe9,
+
  0xa5, 0xe4, 0x52, 0xe1, 0xd6, 0xa9, 0x1c, 0x81, 0x2b, 0x0d, 0xb8, 0xe5,
+
  0xc0, 0xb0, 0xa0, 0x78, 0xd6, 0x98, 0xd2, 0x2d, 0x39, 0xad, 0x57, 0x61,
+
  0xc9, 0x02, 0x2e, 0x37, 0xd4, 0x65, 0x3c, 0x83, 0x0d, 0xe7, 0xf3, 0x35,
+
  0xe3, 0xae, 0x7b, 0x76, 0x5b, 0xaf, 0x7d, 0x71, 0xf4, 0x3b, 0x78, 0x83,
+
  0x58, 0x25, 0x76, 0x24, 0x76, 0x74, 0xec, 0x5f, 0x55, 0x1b, 0x45, 0x46,
+
  0x28, 0xb4, 0x7d, 0x89, 0x3c, 0xd6, 0x91, 0xe4, 0xed, 0x68, 0x8d, 0x42,
+
  0xb4, 0xc1, 0x55, 0x38, 0x29, 0xe4, 0x8f, 0xd2, 0xa8, 0x21, 0xf2, 0x93,
+
  0x3d, 0xe3, 0xe4, 0x1c, 0xd5, 0xc2, 0xaf, 0x11, 0xea, 0x14, 0x4b, 0x33,
+
  0xf0, 0xaf, 0xed, 0xdd, 0xc1, 0x4e, 0xe8, 0x0d, 0x70, 0xd5, 0x05, 0xd5,
+
  0x51, 0x42, 0x9e, 0x04, 0xa6, 0x5c, 0x14, 0x37, 0xcf, 0x91, 0x97, 0x05,
+
  0x04, 0x2d, 0x42, 0x87, 0x85, 0x67, 0x13, 0x9f, 0xb4, 0x3f, 0x21, 0x5f,
+
  0x17, 0x3c, 0xe5, 0x6b, 0x83, 0x6e, 0x9f, 0x17, 0x04, 0x0b, 0x09, 0x9a,
+
  0xd9, 0x6c, 0xd6, 0xe8, 0xa1, 0xd1, 0xeb, 0x58, 0xef, 0x9c, 0xaa, 0x70,
+
  0xd3, 0xf6, 0xb2, 0xb7, 0xe1, 0x2d, 0x9d, 0x72, 0x10, 0x5c, 0xfe, 0x5c,
+
  0x92, 0x5b, 0x80, 0x42, 0x36, 0xa5, 0x06, 0x2b, 0xfe, 0x3b, 0x97, 0x42,
+
  0x89, 0xad, 0xc5, 0xfa, 0xec, 0x16, 0x57, 0xef, 0x57, 0x81, 0xec, 0x50,
+
  0x9b, 0xa9, 0xef, 0xf0, 0x07, 0x9b, 0xef, 0x9e, 0x51, 0x9c, 0x96, 0xd4,
+
  0x19, 0x04, 0x66, 0x44, 0xf9, 0x2c, 0x15, 0x2c, 0x70, 0x60, 0xfd, 0x44,
+
  0x02, 0x39, 0x3e, 0xf2, 0x58, 0xf6, 0x5d, 0x84, 0xc6, 0xc7, 0x84, 0x19,
+
  0x9c, 0x91, 0x84, 0x66, 0x83, 0x21, 0x2e, 0x2b, 0x14, 0x16, 0x33, 0x6a,
+
  0xd8, 0xa2, 0x30, 0x4b, 0x64, 0xce, 0x7a, 0x64, 0xbe, 0xbb, 0x15, 0xf5,
+
  0xfe, 0x2f, 0xca, 0xe9, 0x7f, 0x7e, 0xf2, 0xea, 0x78, 0x7b, 0x80, 0xab,
+
  0x54, 0x8e, 0x3d, 0xf2, 0xd8, 0xc3, 0xcb, 0x7e, 0x7a, 0xf6, 0xc3, 0xbb,
+
  0xa3, 0x93, 0xd7, 0xdf, 0xbf, 0xf8, 0x81, 0x2f, 0x96, 0x6b, 0xa3, 0x4d,
+
  0xb7, 0x36, 0x6f, 0x1f, 0x38, 0x58, 0xfb, 0xee, 0x7d, 0xbc, 0x7b, 0xe5,
+
  0xf8, 0x0f, 0xb6, 0x34, 0x23, 0xf6, 0x20, 0xea, 0xfd, 0xfe, 0xed, 0xf0,
+
  0xf8, 0xcd, 0xe9, 0x9b, 0x13, 0x04, 0xce, 0xfe, 0xfd, 0xcf, 0x5d, 0xb7,
+
  0x3c, 0x6c, 0xdc, 0x72, 0x78, 0x7a, 0xfa, 0xec, 0xf0, 0xec, 0xb0, 0xfb,
+
  0xf2, 0x47, 0xdd, 0x4f, 0x38, 0x5c, 0x20, 0x68, 0x39, 0xa7, 0x2b, 0x3d,
+
  0x03, 0xe2, 0xeb, 0x1c, 0xe3, 0xf1, 0x16, 0x30, 0xc6, 0x3c, 0x36, 0xe3,
+
  0xa0, 0xeb, 0xe9, 0x3c, 0xad, 0x17, 0x57, 0xcb, 0x6c, 0xc2, 0xf8, 0x14,
+
  0x62, 0x00, 0x5d, 0x14, 0x73, 0x27, 0x93, 0xb4, 0x3d, 0xcc, 0x93, 0x2d,
+
  0x90, 0x43, 0x3a, 0x9b, 0xbe, 0xd4, 0x4c, 0xe0, 0xbd, 0x64, 0x4b, 0xc8,
+
  0xc3, 0x65, 0xc7, 0x35, 0xa5, 0x5b, 0x04, 0x7b, 0x14, 0xc8, 0x07, 0x66,
+
  0xf4, 0xbf, 0x09, 0xda, 0x18, 0xc5, 0x25, 0xf2, 0x5f, 0xe4, 0x7c, 0x44,
+
  0xb8, 0x12, 0xc0, 0x4f, 0xdb, 0xe5, 0x08, 0x1a, 0x05, 0x98, 0xc1, 0xd1,
+
  0xf1, 0x86, 0x1b, 0x2f, 0x6b, 0x3d, 0x04, 0x44, 0x41, 0x93, 0x80, 0x10,
+
  0x35, 0x15, 0x55, 0xa8, 0xaa, 0xa9, 0x40, 0x62, 0xa5, 0x43, 0x09, 0x14,
+
  0x05, 0xaa, 0x3a, 0x68, 0x0f, 0x22, 0xf3, 0x56, 0x81, 0xe4, 0xad, 0x77,
+
  0xfc, 0x55, 0x5f, 0x51, 0x1a, 0x4b, 0x05, 0xe9, 0x67, 0x18, 0x3b, 0xaa,
+
  0xd7, 0x39, 0xa1, 0xf2, 0x06, 0xad, 0xe2, 0xa8, 0x1a, 0x65, 0x5d, 0x9e,
+
  0x62, 0x6a, 0x4f, 0x88, 0x0c, 0x4d, 0x21, 0x06, 0x1f, 0x4f, 0xc5, 0x95,
+
  0x9d, 0x9f, 0x0e, 0x52, 0xc5, 0x55, 0x20, 0xd6, 0x4e, 0x81, 0x76, 0xd9,
+
  0x52, 0xd3, 0xb1, 0x22, 0xd8, 0x2a, 0x30, 0x45, 0x54, 0xea, 0x9f, 0x4e,
+
  0xa5, 0xcd, 0x57, 0x32, 0x13, 0xfc, 0x56, 0xcf, 0x91, 0xfa, 0x2a, 0xf9,
+
  0x90, 0xcd, 0x97, 0x73, 0x7a, 0x2b, 0x7c, 0x29, 0xb9, 0x4c, 0xd0, 0xca,
+
  0x28, 0x83, 0x41, 0x52, 0x6f, 0x71, 0xe2, 0x1b, 0x55, 0xe4, 0xb8, 0x53,
+
  0x43, 0x42, 0x13, 0x54, 0x8c, 0x81, 0x01, 0x1b, 0xa1, 0xec, 0xbd, 0x88,
+
  0x92, 0x11, 0xaa, 0x96, 0x2b, 0x16, 0xd4, 0xaa, 0x04, 0x93, 0x14, 0x19,
+
  0xa7, 0x95, 0x81, 0x78, 0x0b, 0x3f, 0x04, 0x4a, 0x0d, 0x30, 0x6c, 0xe0,
+
  0x5e, 0xcb, 0x85, 0xd2, 0x32, 0x2b, 0x26, 0x26, 0x37, 0x45, 0x6b, 0xf7,
+
  0xa3, 0x98, 0x23, 0x87, 0xb5, 0xc4, 0xa9, 0x3c, 0x57, 0x67, 0xfa, 0x01,
+
  0xe1, 0x18, 0xa2, 0x21, 0x01, 0x80, 0x68, 0xed, 0xcf, 0xe3, 0xc1, 0xfe,
+
  0x1e, 0xa2, 0xb0, 0x37, 0x32, 0x55, 0xc6, 0x88, 0xe1, 0x56, 0xa1, 0xc3,
+
  0x23, 0x9b, 0x2b, 0xde, 0x62, 0x35, 0x08, 0xa5, 0xa2, 0xf5, 0xdc, 0xf5,
+
  0xa0, 0x97, 0xea, 0x71, 0x14, 0x09, 0x3e, 0xaf, 0xb0, 0x5e, 0x3f, 0x9d,
+
  0x58, 0x4c, 0xcf, 0xc8, 0x56, 0x81, 0x3f, 0x7b, 0x3d, 0xf4, 0xe2, 0x41,
+
  0xd4, 0x41, 0x80, 0xd1, 0x5e, 0xc9, 0x9f, 0x01, 0xb7, 0x9e, 0x1d, 0x9d,
+
  0xf6, 0x29, 0xa5, 0x0d, 0xe8, 0xf6, 0xcf, 0x6f, 0x5f, 0x1c, 0x39, 0xad,
+
  0x40, 0xe8, 0x60, 0x21, 0xd6, 0x4c, 0x30, 0x47, 0xae, 0x31, 0x75, 0x5b,
+
  0x75, 0x63, 0x2c, 0x61, 0x49, 0x17, 0x82, 0x01, 0x40, 0xde, 0x0d, 0xb6,
+
  0x28, 0xdf, 0x43, 0x6f, 0xf2, 0x62, 0xb3, 0x62, 0xba, 0x01, 0x8d, 0x71,
+
  0xd7, 0x8e, 0x0b, 0x05, 0x60, 0xd0, 0x45, 0x24, 0x61, 0xc6, 0x2c, 0x8b,
+
  0xfd, 0x54, 0xa3, 0xd4, 0x24, 0x24, 0xc5, 0xc1, 0x62, 0x18, 0x8b, 0xfb,
+
  0x18, 0xf6, 0x6f, 0xb7, 0x48, 0xf9, 0x76, 0x10, 0x62, 0x14, 0x47, 0x6e,
+
  0xe7, 0xe7, 0xdf, 0x1a, 0x43, 0xac, 0x5a, 0x71, 0x58, 0x1b, 0x93, 0xd9,
+
  0xdb, 0x09, 0x9e, 0xd7, 0xdb, 0xdd, 0xbc, 0x3f, 0xd8, 0x7d, 0xb0, 0xde,
+
  0x71, 0xa7, 0x82, 0xec, 0x79, 0xf2, 0x81, 0x86, 0x08, 0x9e, 0xf7, 0x22,
+
  0x7a, 0xfa, 0xfc, 0x64, 0x78, 0xb6, 0x7b, 0x70, 0x7a, 0xf2, 0x06, 0xfe,
+
  0xc5, 0xdf, 0xf7, 0xe8, 0xf7, 0xbd, 0x6f, 0xda, 0xc3, 0x7e, 0x5f, 0x30,
+
  0xe0, 0xad, 0xc2, 0x11, 0xd9, 0xdc, 0x0f, 0x3e, 0x5b, 0x91, 0x33, 0x10,
+
  0xda, 0xbb, 0x19, 0x1a, 0x5c, 0x63, 0x03, 0x7b, 0xd7, 0x3e, 0xf0, 0xce,
+
  0xa3, 0xb4, 0xda, 0x65, 0x10, 0xf9, 0x85, 0x3b, 0x59, 0xad, 0xb6, 0x82,
+
  0x40, 0x05, 0x2b, 0x0c, 0x71, 0xdb, 0x21, 0xc6, 0xd8, 0xa2, 0x02, 0x40,
+
  0xc4, 0xbe, 0xba, 0x7e, 0x44, 0x45, 0x10, 0xcd, 0xaf, 0xc6, 0x33, 0xb0,
+
  0x9a, 0x53, 0xcc, 0x43, 0x9e, 0xa4, 0xc2, 0x8c, 0x67, 0x7e, 0xff, 0x8a,
+
  0x9a, 0x7b, 0x00, 0x0a, 0x02, 0x8a, 0x57, 0xea, 0xa3, 0xb5, 0xba, 0x24,
+
  0xa6, 0x61, 0x36, 0x09, 0x21, 0xf6, 0xcb, 0x72, 0xe4, 0xa9, 0x57, 0xa0,
+
  0xcf, 0x10, 0x4b, 0x6e, 0x3c, 0x09, 0xbb, 0x3d, 0x30, 0x26, 0xee, 0xeb,
+
  0x93, 0xb3, 0x28, 0x21, 0x57, 0x9f, 0xc8, 0xfa, 0xaa, 0x46, 0xf1, 0xb7,
+
  0x2d, 0xed, 0x43, 0x92, 0x3a, 0x94, 0x0c, 0x2b, 0x02, 0x09, 0xce, 0xf7,
+
  0x36, 0x06, 0x93, 0xb8, 0xda, 0x63, 0xf8, 0xfa, 0x45, 0xbf, 0x11, 0xaa,
+
  0x76, 0x33, 0xa7, 0xb7, 0x90, 0x11, 0x08, 0xb6, 0x64, 0x7b, 0xed, 0x1c,
+
  0x85, 0xc5, 0x74, 0x41, 0x19, 0x44, 0x3d, 0xda, 0xd0, 0x1e, 0x83, 0x5d,
+
  0xf5, 0x68, 0x5f, 0x7b, 0x5c, 0xdf, 0x4a, 0x4e, 0x07, 0x7a, 0x57, 0xec,
+
  0x80, 0x74, 0xed, 0x83, 0x0a, 0x92, 0x03, 0x56, 0xa1, 0x26, 0x7b, 0x68,
+
  0xee, 0xe3, 0x6b, 0xd1, 0x2b, 0xf5, 0x64, 0xe0, 0x3d, 0x1e, 0x98, 0xc6,
+
  0x85, 0xdf, 0x71, 0x58, 0x22, 0xda, 0x51, 0x30, 0xd9, 0x8d, 0x1f, 0xe4,
+
  0x0c, 0x1e, 0x99, 0xe1, 0x61, 0x6e, 0x06, 0x89, 0x4b, 0xa9, 0x03, 0xc5,
+
  0x4d, 0x51, 0x66, 0xe7, 0x98, 0x54, 0xe8, 0xe5, 0xed, 0x9a, 0x89, 0xb4,
+
  0x29, 0xfc, 0x10, 0x2c, 0x07, 0xf8, 0xb6, 0xe7, 0xf8, 0xe8, 0x6a, 0xaf,
+
  0x52, 0x96, 0xea, 0xb7, 0x4a, 0x75, 0x0c, 0xe8, 0x74, 0x50, 0x1a, 0xd5,
+
  0x01, 0x2b, 0xb5, 0x62, 0xf3, 0xb9, 0x16, 0xac, 0x60, 0x32, 0xb4, 0x15,
+
  0x3d, 0x48, 0x0f, 0x12, 0x68, 0xcb, 0xd4, 0xfc, 0x43, 0x71, 0x61, 0x23,
+
  0x49, 0x19, 0x69, 0x0f, 0xc7, 0x9d, 0x0b, 0x51, 0x22, 0x0b, 0xe8, 0x42,
+
  0x6f, 0x77, 0xef, 0xf1, 0x60, 0x07, 0xfe, 0x07, 0xfb, 0x22, 0xfe, 0x3f,
+
  0x6a, 0x87, 0x66, 0x1a, 0x5d, 0xd9, 0x2b, 0xd3, 0x0f, 0x9e, 0x07, 0x99,
+
  0xd8, 0x47, 0x51, 0x9e, 0xf7, 0x02, 0xc8, 0x70, 0x0e, 0x7f, 0xf8, 0xa4,
+
  0x9a, 0x8c, 0x3e, 0xc4, 0xe1, 0x66, 0x07, 0x0f, 0x1e, 0xec, 0x1f, 0xe8,
+
  0xdf, 0x70, 0x94, 0x0e, 0x9e, 0xc0, 0x07, 0x1f, 0x03, 0x1c, 0xf7, 0x1c,
+
  0x99, 0x20, 0x07, 0x60, 0x9a, 0xf9, 0xec, 0x5f, 0x36, 0x82, 0x4b, 0x6d,
+
  0x30, 0x9f, 0xe8, 0x69, 0x31, 0x9d, 0x82, 0x50, 0x68, 0xeb, 0x3d, 0x47,
+
  0x72, 0xc9, 0xf6, 0x1b, 0xee, 0x2a, 0xca, 0x18, 0xe0, 0x8c, 0xac, 0x11,
+
  0x35, 0x3b, 0x7c, 0x45, 0x12, 0x4d, 0x61, 0xfe, 0xc8, 0xc3, 0x85, 0x54,
+
  0x01, 0xf7, 0x7b, 0xcd, 0xf3, 0x86, 0x17, 0x45, 0xb6, 0x29, 0xed, 0x48,
+
  0x29, 0xce, 0x2c, 0xae, 0x1e, 0x56, 0xb0, 0xda, 0xed, 0x0f, 0xf5, 0xec,
+
  0xbd, 0xcf, 0x16, 0x0b, 0x0a, 0x26, 0x51, 0xc3, 0x40, 0xdb, 0xdb, 0x03,
+
  0xc7, 0xa4, 0x64, 0x31, 0xee, 0xe2, 0x23, 0x45, 0x2d, 0x84, 0x9c, 0xc3,
+
  0x93, 0x1e, 0xa5, 0x53, 0x3f, 0xd3, 0x84, 0x53, 0x37, 0xdd, 0x8e, 0x02,
+
  0x82, 0x8d, 0x3e, 0xc1, 0xde, 0x01, 0x79, 0xc2, 0xbc, 0xec, 0xc5, 0xd4,
+
  0x01, 0x7b, 0x16, 0x18, 0xb5, 0xa0, 0xb3, 0xcd, 0x82, 0x4a, 0x19, 0xba,
+
  0x19, 0xbe, 0xf8, 0xaf, 0x63, 0x7e, 0x19, 0x29, 0x63, 0x55, 0x1c, 0x22,
+
  0xf2, 0x90, 0x04, 0x40, 0x42, 0xe0, 0xb8, 0xc7, 0x47, 0xb0, 0x5f, 0xd4,
+
  0x52, 0xc5, 0x49, 0xe5, 0x2c, 0x5a, 0x21, 0x3a, 0x32, 0x9e, 0x18, 0xfd,
+
  0x1b, 0x54, 0xa9, 0x6d, 0x02, 0xfc, 0x2d, 0x7c, 0xe7, 0x1f, 0x6e, 0x61,
+
  0x03, 0x41, 0xc9, 0xb4, 0xa5, 0x6b, 0x55, 0x9a, 0x8b, 0x9f, 0x64, 0x3b,
+
  0xcb, 0xa9, 0xb5, 0x17, 0xe5, 0x4e, 0x7a, 0x45, 0xd8, 0x0a, 0x29, 0xc8,
+
  0xe8, 0xf3, 0xcb, 0x0e, 0xe8, 0x9d, 0xa3, 0x7e, 0xd4, 0xa2, 0xb5, 0x66,
+
  0xa2, 0xfe, 0x8a, 0x70, 0xfc, 0xbd, 0xab, 0x28, 0x47, 0xa0, 0x99, 0xdd,
+
  0x5a, 0x25, 0x39, 0x8a, 0x1e, 0xec, 0xec, 0xac, 0x77, 0x16, 0x2d, 0x66,
+
  0x96, 0x73, 0xd6, 0xc6, 0x7c, 0xd6, 0xb0, 0x6b, 0x6f, 0xfc, 0x6b, 0x52,
+
  0x72, 0x74, 0xa8, 0x13, 0xec, 0x74, 0xcb, 0x78, 0x2c, 0xb1, 0x98, 0x9b,
+
  0xf2, 0x35, 0x88, 0x62, 0x4d, 0x96, 0x9a, 0x12, 0x00, 0xfb, 0x61, 0xa9,
+
  0xc7, 0xae, 0xb4, 0x04, 0x6e, 0xf3, 0x3c, 0xc2, 0x25, 0xa5, 0x4c, 0x4b,
+
  0x83, 0x4c, 0x6a, 0x01, 0xf2, 0x06, 0x98, 0xa4, 0x63, 0x9a, 0xc8, 0x25,
+
  0x64, 0x1f, 0xd0, 0x28, 0xd2, 0x2c, 0xd2, 0xd3, 0x39, 0xb2, 0x3c, 0x66,
+
  0xd8, 0x4f, 0xb9, 0x90, 0xf2, 0x88, 0x10, 0xec, 0x5e, 0x0e, 0x09, 0x13,
+
  0x0e, 0xbb, 0x72, 0x6a, 0x85, 0x64, 0xa2, 0xa3, 0x4c, 0xcf, 0x0c, 0xf6,
+
  0x66, 0x1a, 0x68, 0x8b, 0x3b, 0xf3, 0x0e, 0x0c, 0xfd, 0xfc, 0x3e, 0x2f,
+
  0xae, 0x72, 0x0c, 0x53, 0x72, 0xa4, 0x51, 0xb7, 0x1c, 0x27, 0x5b, 0xa7,
+
  0x79, 0x08, 0x50, 0xa2, 0x11, 0xea, 0x92, 0xeb, 0x1c, 0x17, 0xe9, 0xeb,
+
  0xb4, 0x96, 0xe4, 0x6b, 0x9e, 0x3b, 0x67, 0xd3, 0x2b, 0xce, 0x04, 0x4c,
+
  0xc2, 0x6f, 0xd0, 0x44, 0xf9, 0x20, 0xc6, 0xdd, 0x4b, 0x02, 0x86, 0xf3,
+
  0xd7, 0xd8, 0x6d, 0x8d, 0x31, 0x96, 0x3e, 0x9c, 0xce, 0x9e, 0xc6, 0x7b,
+
  0x78, 0xfa, 0xe1, 0xb4, 0x4d, 0x9d, 0x90, 0xed, 0xcc, 0x17, 0xac, 0xe9,
+
  0x6a, 0x37, 0x15, 0x74, 0x53, 0x41, 0xa9, 0x21, 0x0c, 0xa5, 0x69, 0x9b,
+
  0xa7, 0x69, 0xd6, 0x6e, 0xa0, 0x28, 0xc0, 0xc1, 0xe6, 0xc3, 0x34, 0xf4,
+
  0x72, 0xa2, 0xee, 0x35, 0x9d, 0x28, 0x08, 0x07, 0xf1, 0x53, 0x5e, 0x25,
+
  0x44, 0x6a, 0x66, 0xfc, 0x50, 0x11, 0xb6, 0x53, 0x2c, 0x12, 0x8f, 0x2c,
+
  0x39, 0xdb, 0x1e, 0x0b, 0xc1, 0xa8, 0x85, 0x5c, 0x84, 0x34, 0x6f, 0xfb,
+
  0x20, 0x0a, 0x52, 0x1f, 0xf5, 0xc0, 0xd3, 0x65, 0x81, 0xf1, 0xd5, 0x3c,
+
  0xb9, 0xba, 0x28, 0xbc, 0xc0, 0x8d, 0x60, 0xd1, 0x18, 0x68, 0x47, 0x11,
+
  0x07, 0xd4, 0x5e, 0x01, 0xbb, 0x71, 0x61, 0x40, 0x0b, 0x69, 0xaf, 0x15,
+
  0xf9, 0x26, 0xd8, 0x71, 0x02, 0x41, 0x08, 0xe2, 0x64, 0xba, 0x68, 0xd7,
+
  0x3c, 0x22, 0xc2, 0x14, 0x02, 0xb1, 0x25, 0x25, 0x49, 0x0d, 0xe9, 0xa5,
+
  0x42, 0xe2, 0x05, 0x21, 0x08, 0x44, 0x14, 0xf9, 0x6b, 0x43, 0x45, 0x23,
+
  0x64, 0xc2, 0x5f, 0x66, 0x88, 0x3d, 0x8a, 0x84, 0x05, 0xca, 0x10, 0x86,
+
  0x82, 0x98, 0x90, 0x68, 0x5c, 0x6e, 0x97, 0x72, 0x91, 0x39, 0x10, 0xa5,
+
  0x70, 0x24, 0x2f, 0x7c, 0x2b, 0x32, 0xab, 0x97, 0x49, 0xd7, 0xaa, 0x7a,
+
  0xbc, 0xc4, 0xb5, 0xf7, 0xfe, 0xe5, 0x06, 0xdf, 0x98, 0x53, 0x09, 0x63,
+
  0xf2, 0xa2, 0x77, 0x79, 0x67, 0x6e, 0x77, 0x67, 0x3c, 0xa2, 0x60, 0x4b,
+
  0xcc, 0xed, 0xe7, 0xd7, 0xe2, 0xb9, 0x0e, 0x3d, 0x3a, 0x4c, 0xd7, 0xa5,
+
  0xd2, 0xa7, 0xc8, 0x44, 0xfe, 0xfb, 0x06, 0xae, 0x7b, 0x9a, 0x48, 0x7a,
+
  0x8b, 0xdb, 0x14, 0x85, 0xf0, 0xce, 0x44, 0x86, 0x2b, 0xbe, 0x08, 0x8f,
+
  0xa9, 0x2a, 0xd6, 0x8b, 0x50, 0x39, 0x0e, 0x25, 0x6c, 0xc0, 0x82, 0xce,
+
  0xae, 0xed, 0x88, 0x0e, 0x1e, 0x99, 0xe9, 0xd6, 0x69, 0xfb, 0x9d, 0x9a,
+
  0x47, 0xb4, 0xd3, 0xd1, 0x7b, 0x43, 0xb0, 0xaf, 0xf8, 0x99, 0x58, 0xf6,
+
  0x62, 0x9b, 0x42, 0x4b, 0x73, 0x1f, 0x85, 0xc5, 0x60, 0x55, 0x9a, 0xd2,
+
  0x41, 0xc5, 0x86, 0x60, 0xe6, 0xd6, 0x1e, 0xee, 0xf5, 0xe1, 0xab, 0xe3,
+
  0xdd, 0xaf, 0xff, 0x72, 0xf8, 0xf2, 0xed, 0xf1, 0xee, 0x57, 0x51, 0x84,
+
  0x7f, 0xee, 0xf1, 0x9f, 0x7b, 0x3d, 0xb5, 0x48, 0x85, 0x7b, 0xf0, 0x5e,
+
  0x19, 0xb0, 0x0c, 0x9a, 0x43, 0x10, 0x7b, 0x57, 0xc1, 0xdf, 0xc8, 0x5e,
+
  0xe0, 0x54, 0x1a, 0xdb, 0xca, 0x92, 0x5e, 0x0a, 0xb1, 0xb6, 0x14, 0x3e,
+
  0x51, 0x2d, 0x81, 0xcd, 0x6a, 0x2b, 0x50, 0xae, 0xed, 0x94, 0x95, 0xaa,
+
  0xed, 0x1b, 0x19, 0x0f, 0x4e, 0x34, 0x59, 0xa6, 0xa2, 0xfb, 0x38, 0xf0,
+
  0x6c, 0x7d, 0x71, 0xdb, 0x7b, 0x61, 0x71, 0x6d, 0xb8, 0x53, 0x39, 0x8d,
+
  0x75, 0xfa, 0x9c, 0x25, 0xc4, 0x2c, 0x55, 0xce, 0xbc, 0xcc, 0x9c, 0xf6,
+
  0x15, 0xab, 0x83, 0x28, 0x5b, 0x21, 0x74, 0xfc, 0x40, 0x1e, 0x6d, 0x7c,
+
  0xbd, 0x11, 0x55, 0xd7, 0xf3, 0x51, 0x31, 0x33, 0x89, 0x3b, 0x42, 0x18,
+
  0xb6, 0xa2, 0x89, 0xf5, 0x48, 0x03, 0x1c, 0x2c, 0xb1, 0x55, 0xbf, 0x6e,
+
  0x28, 0xb1, 0xe1, 0x48, 0x4d, 0x04, 0x71, 0x51, 0xeb, 0x6a, 0x42, 0x2c,
+
  0x55, 0x81, 0x45, 0x09, 0x21, 0x8e, 0x61, 0xee, 0x41, 0x16, 0x55, 0x96,
+
  0x87, 0x57, 0x01, 0x21, 0xc1, 0xaa, 0x04, 0xbd, 0xb7, 0x1b, 0xe0, 0x24,
+
  0xd9, 0x90, 0x05, 0xd2, 0x8a, 0xa8, 0xb9, 0x9c, 0x08, 0x0b, 0x05, 0x36,
+
  0x91, 0xe2, 0x19, 0xf4, 0xad, 0x5d, 0x2b, 0x96, 0x30, 0xee, 0x8d, 0xca,
+
  0x59, 0x7a, 0x6b, 0xbc, 0xb7, 0x3d, 0xdc, 0x48, 0xb4, 0x67, 0x45, 0xda,
+
  0x27, 0x0a, 0x8d, 0x5f, 0x92, 0x66, 0x38, 0x33, 0x7d, 0x73, 0x35, 0x5b,
+
  0x03, 0x41, 0xd5, 0x0a, 0x4b, 0x08, 0x60, 0x31, 0xb6, 0x59, 0xae, 0xf6,
+
  0x9c, 0x6b, 0x64, 0x95, 0x70, 0x68, 0x6a, 0x60, 0x63, 0xe6, 0x33, 0x0b,
+
  0x1e, 0x49, 0x06, 0x06, 0x25, 0x55, 0x47, 0x73, 0xaf, 0x08, 0x21, 0x07,
+
  0x5b, 0x66, 0x13, 0x24, 0xf9, 0x96, 0x9b, 0x46, 0xa5, 0xdb, 0x47, 0xdb,
+
  0xe2, 0x64, 0x89, 0x55, 0xab, 0x22, 0xbf, 0x67, 0x26, 0x3a, 0xcc, 0xf5,
+
  0x86, 0x85, 0x33, 0x15, 0x93, 0xeb, 0xe3, 0xaa, 0x59, 0x72, 0x7a, 0xb1,
+
  0x3f, 0xf0, 0xcc, 0xe9, 0x9b, 0xa1, 0x5e, 0x23, 0x64, 0x3f, 0x26, 0x9d,
+
  0x2e, 0xda, 0xb4, 0xbc, 0x20, 0xa2, 0xe6, 0x0f, 0x5b, 0x6a, 0x08, 0xab,
+
  0x7a, 0xb3, 0xfd, 0xaa, 0xf8, 0x0d, 0x26, 0x9f, 0x84, 0x4f, 0xab, 0x33,
+
  0xb3, 0xee, 0x99, 0x5b, 0x6f, 0x00, 0xe7, 0x59, 0xb9, 0x8c, 0xb4, 0xe1,
+
  0x0b, 0x42, 0x47, 0x28, 0x99, 0x07, 0xd4, 0x91, 0xc1, 0xa3, 0x1f, 0xd1,
+
  0xe6, 0xd4, 0x72, 0x73, 0x55, 0x20, 0x5d, 0x12, 0xa0, 0xe7, 0x42, 0xb2,
+
  0xd1, 0x0d, 0xa1, 0x09, 0xbb, 0x69, 0xdb, 0xe8, 0x6d, 0xb9, 0xd7, 0xad,
+
  0x78, 0xb8, 0x6d, 0x56, 0x9c, 0xf5, 0x72, 0x77, 0x85, 0x9b, 0x05, 0x3a,
+
  0x25, 0x9c, 0x5c, 0x8f, 0x34, 0xf1, 0xca, 0x52, 0xe7, 0xda, 0x56, 0x44,
+
  0x6b, 0x06, 0x64, 0x1d, 0x4c, 0x01, 0x28, 0xb2, 0x3a, 0xc6, 0xc9, 0x26,
+
  0x3e, 0xcf, 0x3d, 0x2d, 0xd8, 0xbe, 0x4b, 0xfd, 0xa6, 0x8d, 0xe4, 0x19,
+
  0xa1, 0x97, 0x4e, 0x26, 0x13, 0x49, 0xa7, 0x24, 0x80, 0x32, 0xd2, 0x3b,
+
  0xe4, 0x6e, 0xcc, 0xba, 0xb5, 0xd3, 0x16, 0x45, 0x70, 0x93, 0xd0, 0xd1,
+
  0x3d, 0xc5, 0xc3, 0x9a, 0xc6, 0xda, 0x16, 0x0a, 0x7b, 0x72, 0xf2, 0x40,
+
  0x15, 0x11, 0x07, 0x07, 0x85, 0xb0, 0x97, 0xfc, 0x81, 0x59, 0x15, 0x25,
+
  0x16, 0x3f, 0x32, 0x1b, 0x22, 0x0c, 0xcc, 0xe1, 0xaf, 0xb8, 0x03, 0xb9,
+
  0x56, 0xc9, 0x44, 0xa3, 0x82, 0xaa, 0xe2, 0xda, 0xc4, 0x9c, 0xd8, 0x40,
+
  0xae, 0x24, 0x89, 0xf8, 0xc5, 0x21, 0x13, 0xe9, 0x5f, 0xcc, 0xb7, 0x91,
+
  0x8e, 0xe4, 0xb4, 0x4b, 0xab, 0x0a, 0xe1, 0x25, 0xf4, 0x84, 0x06, 0xed,
+
  0x91, 0x77, 0x63, 0x1c, 0x8a, 0xff, 0x5a, 0x65, 0xc8, 0x61, 0x06, 0x8d,
+
  0x26, 0xaf, 0xec, 0xc8, 0x9a, 0x07, 0x08, 0xa6, 0xf1, 0x88, 0x8f, 0x77,
+
  0xfe, 0x74, 0x69, 0x4a, 0x23, 0x79, 0xe3, 0xce, 0xaa, 0x80, 0x9b, 0xef,
+
  0x02, 0x9d, 0xe9, 0x86, 0x31, 0x3a, 0x35, 0xa4, 0xf6, 0xe1, 0xa1, 0xa5,
+
  0xfc, 0x15, 0x3f, 0xfc, 0x75, 0x99, 0xbf, 0x8f, 0xa5, 0xc7, 0x64, 0xac,
+
  0x96, 0x81, 0xeb, 0x39, 0x27, 0xd1, 0x15, 0x83, 0x18, 0xad, 0x42, 0x69,
+
  0x01, 0x2a, 0xfe, 0x80, 0x35, 0xfe, 0xaa, 0x98, 0xbf, 0xb6, 0x19, 0x5b,
+
  0xd1, 0x77, 0x3a, 0xdb, 0x49, 0x72, 0x8a, 0xe1, 0xaf, 0x6d, 0x7e, 0x41,
+
  0x0f, 0x32, 0x2e, 0x65, 0x44, 0xc9, 0x49, 0xa8, 0xa7, 0x2d, 0x7a, 0x00,
+
  0x1d, 0xc8, 0x94, 0x0c, 0x36, 0xa5, 0x1c, 0x5f, 0x10, 0xfa, 0x1b, 0x7a,
+
  0x1c, 0x39, 0xe0, 0xef, 0xa3, 0x1b, 0xb3, 0x24, 0xe1, 0x51, 0x45, 0xad,
+
  0x93, 0x41, 0x90, 0xec, 0x50, 0x4c, 0xc3, 0xf7, 0xca, 0xe3, 0x58, 0x1a,
+
  0xb9, 0xcd, 0xcc, 0x83, 0xc3, 0xf5, 0xc9, 0xe4, 0xb8, 0xa0, 0x7e, 0x42,
+
  0xb3, 0xca, 0x0a, 0x9a, 0xc6, 0x8b, 0x5a, 0xa9, 0x43, 0x1e, 0x15, 0xb4,
+
  0x60, 0xbb, 0xd0, 0x81, 0x18, 0x90, 0x6e, 0xea, 0xcd, 0x0e, 0x83, 0x43,
+
  0x3c, 0x41, 0x9b, 0x57, 0x2c, 0x88, 0xe7, 0x2b, 0x86, 0x73, 0x8c, 0x4f,
+
  0x83, 0x86, 0xde, 0x26, 0x89, 0x23, 0xb1, 0xbd, 0x70, 0x3f, 0x49, 0x70,
+
  0xcf, 0x41, 0xb2, 0xf0, 0x1a, 0xcc, 0x31, 0x40, 0xb0, 0xf3, 0xf8, 0xe1,
+
  0x0e, 0x8a, 0x54, 0xec, 0xdf, 0xc2, 0x12, 0x46, 0x64, 0x02, 0x95, 0x4a,
+
  0xf9, 0x81, 0xbd, 0x42, 0xf7, 0x4d, 0x30, 0xdb, 0xdd, 0xb7, 0xb0, 0x38,
+
  0xa8, 0xe4, 0x08, 0x43, 0xdc, 0x08, 0xf8, 0x09, 0xea, 0x17, 0x96, 0x2e,
+
  0xc7, 0xf1, 0xb4, 0xf6, 0x58, 0x83, 0x43, 0x6c, 0x37, 0xd4, 0x05, 0xd8,
+
  0x0b, 0x3f, 0x01, 0x0c, 0xc9, 0x8a, 0x59, 0xdc, 0xe4, 0xe2, 0x75, 0xe6,
+
  0x65, 0x08, 0xc2, 0xa0, 0xfe, 0x6c, 0xdf, 0xa1, 0x24, 0x08, 0x57, 0xc9,
+
  0x1d, 0x95, 0xeb, 0x3c, 0x78, 0x64, 0xfc, 0x24, 0x70, 0x56, 0xf1, 0x29,
+
  0x31, 0xed, 0xe6, 0x53, 0xfc, 0xd7, 0xb3, 0x76, 0x08, 0xeb, 0x1e, 0x4b,
+
  0x3e, 0x30, 0x7d, 0x43, 0x10, 0xfe, 0xb5, 0x14, 0x54, 0x63, 0x3c, 0xb2,
+
  0xab, 0x5c, 0x31, 0xad, 0xed, 0xd1, 0x83, 0xd8, 0x4f, 0x4e, 0x7d, 0x81,
+
  0xcd, 0x52, 0x77, 0x7a, 0xcb, 0x37, 0xa2, 0xc5, 0xa8, 0xa4, 0xf3, 0x61,
+
  0x14, 0x2c, 0x3d, 0xcf, 0x45, 0x89, 0x92, 0x90, 0x55, 0xcd, 0x0d, 0x9c,
+
  0x3c, 0xa5, 0xe3, 0x11, 0x7a, 0xb3, 0x4d, 0x0e, 0x46, 0xe7, 0x12, 0x63,
+
  0xb2, 0xe3, 0x87, 0xd4, 0xc4, 0xca, 0xf6, 0x14, 0x08, 0x98, 0xe6, 0x9a,
+
  0x0a, 0xb4, 0xf3, 0xe8, 0xc1, 0x83, 0x95, 0x20, 0xba, 0x35, 0x07, 0x8b,
+
  0xf3, 0xa8, 0x18, 0xd7, 0xc0, 0x74, 0xc4, 0x17, 0x8d, 0x6a, 0xba, 0x28,
+
  0xf6, 0x5d, 0x00, 0x24, 0xed, 0x75, 0xff, 0xf4, 0xee, 0xcd, 0x1b, 0x08,
+
  0xd0, 0x4e, 0x65, 0xe7, 0xf1, 0xe3, 0xc7, 0x51, 0x7c, 0xc6, 0x44, 0xc8,
+
  0x47, 0xd9, 0xaf, 0x54, 0xc9, 0xd3, 0xab, 0xdb, 0x93, 0xe0, 0x4a, 0x2c,
+
  0xf1, 0x71, 0x39, 0x9b, 0x4a, 0xfb, 0x88, 0x57, 0xda, 0x07, 0xec, 0x12,
+
  0xeb, 0xe3, 0xa2, 0x97, 0xdf, 0x73, 0x04, 0xf5, 0xe8, 0x0d, 0xfe, 0x96,
+
  0x99, 0xc6, 0x1e, 0x03, 0x52, 0x30, 0xa6, 0xcb, 0x99, 0x54, 0x5c, 0xbe,
+
  0xfa, 0x4b, 0x3b, 0xdc, 0xbf, 0x79, 0x32, 0xdc, 0xde, 0xff, 0x32, 0x90,
+
  0xd8, 0xb9, 0x49, 0xad, 0x9a, 0x13, 0x27, 0xc4, 0xb1, 0x13, 0xc8, 0x9e,
+
  0x6a, 0x54, 0x22, 0xe0, 0xf4, 0x6e, 0x5b, 0x83, 0x20, 0xfc, 0xa1, 0x6d,
+
  0x66, 0x79, 0xdc, 0x62, 0x36, 0x5d, 0x7f, 0x97, 0x60, 0x1a, 0xb0, 0x29,
+
  0xac, 0x92, 0xae, 0x51, 0x38, 0xf4, 0x9d, 0x00, 0x84, 0x73, 0x87, 0xb7,
+
  0xf6, 0xc2, 0xe3, 0x68, 0x2b, 0x90, 0x80, 0x4f, 0x0d, 0xa6, 0x01, 0x5d,
+
  0xc9, 0x9c, 0xd9, 0x81, 0x46, 0x91, 0x9a, 0x63, 0x17, 0xcb, 0xeb, 0x4d,
+
  0x7a, 0x09, 0x74, 0x13, 0x04, 0x1a, 0x7d, 0x99, 0x55, 0x12, 0xae, 0x45,
+
  0x9b, 0x50, 0xb5, 0x68, 0x04, 0xf6, 0x6b, 0xd6, 0xd3, 0xd2, 0x25, 0x28,
+
  0x69, 0x38, 0x13, 0x36, 0x90, 0xbb, 0xa2, 0xc9, 0x1f, 0x82, 0x9a, 0xd5,
+
  0x79, 0xc8, 0x66, 0x9a, 0xc4, 0xf7, 0x59, 0x8a, 0x3c, 0xe5, 0xf1, 0x65,
+
  0xfa, 0x2b, 0xfa, 0x13, 0xee, 0x84, 0xc6, 0xe8, 0x40, 0xaa, 0x30, 0x22,
+
  0x5c, 0x63, 0x03, 0x97, 0xe5, 0x25, 0x2c, 0xd7, 0x53, 0x53, 0xa4, 0x45,
+
  0xc5, 0x91, 0xb7, 0x01, 0xf1, 0xd1, 0xb8, 0xaa, 0x0d, 0xf9, 0xf3, 0x50,
+
  0x02, 0xf3, 0x1d, 0x69, 0x53, 0x6d, 0x2c, 0xc3, 0xf4, 0xb8, 0x2d, 0x17,
+
  0x7d, 0xdb, 0x98, 0x3e, 0xe1, 0x77, 0x24, 0x63, 0x74, 0x0a, 0x90, 0x45,
+
  0x5f, 0x44, 0x88, 0xec, 0xf0, 0xe4, 0xc1, 0xde, 0x5e, 0x3f, 0x7a, 0x88,
+
  0x8d, 0x71, 0x2d, 0x6a, 0x63, 0x32, 0xf3, 0x90, 0xef, 0xa5, 0xbc, 0x4c,
+
  0xf5, 0xe8, 0x2e, 0x24, 0x47, 0x01, 0x6f, 0xd4, 0xce, 0x96, 0xe8, 0xd6,
+
  0x0a, 0x41, 0xb5, 0xf5, 0x7e, 0xda, 0x7b, 0xf8, 0x70, 0xf7, 0xcb, 0x83,
+
  0xd3, 0xf8, 0xe1, 0xde, 0x2e, 0xe2, 0x38, 0x4a, 0x7f, 0x0f, 0x53, 0x10,
+
  0xd0, 0x80, 0xf9, 0xc8, 0x26, 0xec, 0x10, 0x9a, 0xcd, 0xae, 0xc3, 0xa9,
+
  0x9d, 0xbd, 0x62, 0x91, 0xe6, 0x55, 0x35, 0x8b, 0xaa, 0x77, 0x8c, 0x8a,
+
  0xb3, 0x5d, 0xbd, 0x63, 0xb7, 0x5b, 0x4f, 0xa0, 0x17, 0xb3, 0x00, 0x8c,
+
  0x96, 0xd9, 0x19, 0x11, 0x5e, 0x89, 0x81, 0xd0, 0x10, 0x68, 0x45, 0xb3,
+
  0x0f, 0x61, 0x2c, 0xc5, 0x50, 0xa1, 0x86, 0x71, 0x46, 0xb0, 0x28, 0xdc,
+
  0x3c, 0x3e, 0xda, 0xe2, 0x4d, 0x73, 0xf2, 0x99, 0x04, 0x56, 0x85, 0x67,
+
  0xda, 0x67, 0x80, 0x00, 0x5f, 0xfa, 0xe6, 0x45, 0x4e, 0xae, 0x10, 0x0c,
+
  0xd1, 0x63, 0x64, 0x48, 0xde, 0x8b, 0x9d, 0x89, 0xda, 0x7d, 0x80, 0xe2,
+
  0x2c, 0x37, 0xc3, 0xea, 0x31, 0xd0, 0x22, 0x4f, 0xc9, 0x40, 0xb3, 0xc8,
+
  0xcb, 0x73, 0xa5, 0xae, 0xa2, 0x6f, 0x67, 0xb9, 0x27, 0xb7, 0x75, 0x6d,
+
  0x3d, 0x38, 0xc6, 0xf0, 0x61, 0x96, 0x51, 0x3f, 0xd7, 0x61, 0xe6, 0xc7,
+
  0x33, 0x79, 0xad, 0x7b, 0x8c, 0xb5, 0xbe, 0xb9, 0x95, 0xb5, 0xeb, 0x9e,
+
  0x65, 0xf4, 0xcb, 0x32, 0x8b, 0x66, 0xcf, 0x73, 0x87, 0xc3, 0x59, 0xcb,
+
  0xf2, 0xa8, 0xc9, 0x1e, 0x35, 0x5c, 0xce, 0x12, 0x4e, 0x3a, 0xb5, 0x3d,
+
  0x7c, 0x03, 0xf4, 0xe8, 0x8c, 0xfe, 0xe9, 0x92, 0x15, 0x9c, 0x87, 0x7c,
+
  0x7b, 0x07, 0xb5, 0x95, 0x6e, 0x47, 0x9f, 0x5f, 0x79, 0xad, 0x6f, 0x12,
+
  0x97, 0xc9, 0x95, 0xb6, 0xa2, 0xc2, 0x3f, 0xe1, 0x39, 0x8c, 0xd0, 0xe1,
+
  0xad, 0x1c, 0xdf, 0x77, 0xf3, 0xd2, 0x2d, 0x0a, 0xf4, 0x0d, 0x93, 0x13,
+
  0xdc, 0x78, 0xf7, 0xaa, 0xb6, 0xfb, 0x0a, 0x23, 0x8b, 0xd2, 0xfb, 0x2d,
+
  0xd0, 0x8b, 0x06, 0xcd, 0x4c, 0xc6, 0x55, 0x48, 0xea, 0xaa, 0xc0, 0x15,
+
  0x0c, 0x52, 0x2c, 0xa5, 0x77, 0x72, 0x77, 0x5b, 0xeb, 0xcf, 0x37, 0x96,
+
  0xa3, 0x14, 0xf5, 0x7c, 0xdb, 0x57, 0x18, 0xc9, 0xda, 0xf1, 0xea, 0x25,
+
  0x01, 0x17, 0x1c, 0x41, 0x7a, 0x50, 0xae, 0x74, 0x24, 0xaf, 0x61, 0x3b,
+
  0x4b, 0x70, 0x95, 0xc5, 0x1c, 0xc1, 0x3d, 0x48, 0xf7, 0x74, 0xda, 0x39,
+
  0x63, 0xfa, 0x54, 0xdf, 0xcb, 0xd4, 0xa4, 0x26, 0xba, 0x24, 0x65, 0x41,
+
  0x8d, 0xc3, 0x9d, 0x66, 0x23, 0x61, 0x9c, 0x94, 0x65, 0x86, 0xc1, 0xd9,
+
  0x32, 0xad, 0x97, 0xa5, 0x80, 0x3c, 0x60, 0xe1, 0x22, 0xf2, 0x06, 0xe9,
+
  0xc5, 0xe0, 0xcb, 0x62, 0x93, 0x21, 0x4c, 0x95, 0xbb, 0x04, 0xf8, 0x17,
+
  0x4c, 0x9c, 0x7c, 0x89, 0xcd, 0x99, 0x9d, 0xa9, 0xd5, 0xcd, 0x94, 0x7b,
+
  0x74, 0x93, 0x32, 0x96, 0x0d, 0x77, 0x88, 0x2b, 0x34, 0x0d, 0x9b, 0xf8,
+
  0x92, 0x1f, 0x41, 0x73, 0x32, 0xb2, 0xb6, 0x3f, 0xc4, 0x57, 0x57, 0x57,
+
  0x31, 0xea, 0x24, 0x96, 0x44, 0x26, 0x03, 0x67, 0x1f, 0xd8, 0x07, 0x75,
+
  0xe1, 0x36, 0xa2, 0xf3, 0xbc, 0xc3, 0xb6, 0x96, 0xa9, 0x1c, 0x65, 0x35,
+
  0xa1, 0x65, 0x09, 0x55, 0xd1, 0x4d, 0xc2, 0x5c, 0x65, 0x3e, 0xe4, 0xde,
+
  0xd3, 0x58, 0x6f, 0x60, 0x51, 0xec, 0xdb, 0x60, 0x83, 0x99, 0x71, 0x9d,
+
  0x22, 0xd4, 0x24, 0x3c, 0x62, 0x7e, 0x10, 0xc5, 0xcf, 0xa3, 0xde, 0x91,
+
  0xbc, 0xef, 0x19, 0x5c, 0x71, 0xd0, 0x7c, 0x17, 0xbe, 0xd8, 0xcf, 0x17,
+
  0x83, 0x7b, 0x7b, 0x37, 0xd7, 0x05, 0xdb, 0x1e, 0x84, 0x01, 0xde, 0x58,
+
  0xe0, 0x46, 0xdb, 0x6a, 0x85, 0x50, 0x2f, 0x51, 0xac, 0x18, 0xe3, 0x30,
+
  0x07, 0xf7, 0xfe, 0xa2, 0x57, 0x4f, 0x2a, 0xd3, 0xf1, 0x9e, 0x68, 0xee,
+
  0x66, 0x56, 0x23, 0x0b, 0xf7, 0x89, 0x79, 0x8d, 0x3c, 0xe5, 0x5b, 0x13,
+
  0x10, 0xb9, 0x03, 0xc3, 0xf1, 0xb4, 0x62, 0xc3, 0x77, 0xd6, 0xe1, 0x25,
+
  0x95, 0x42, 0xc1, 0x51, 0x85, 0x98, 0xa5, 0x71, 0x0a, 0x01, 0x6b, 0x19,
+
  0x68, 0x60, 0xc1, 0x89, 0xf1, 0x24, 0x33, 0x0b, 0x39, 0x95, 0xb8, 0x70,
+
  0x77, 0xdf, 0xae, 0x40, 0x7d, 0x73, 0x26, 0xfa, 0xe9, 0x3c, 0x90, 0xf6,
+
  0x19, 0xbd, 0x0b, 0xd0, 0x1f, 0x8b, 0xde, 0x1a, 0xa9, 0xb9, 0xf6, 0xd6,
+
  0x6f, 0x93, 0x1a, 0xff, 0x7f, 0xcd, 0xa6, 0x54, 0x96, 0xc6, 0x1a, 0x19,
+
  0x69, 0x21, 0xb1, 0x69, 0xce, 0xfc, 0xca, 0x3d, 0x6b, 0x6f, 0x5a, 0xdf,
+
  0x70, 0x4e, 0xe1, 0x35, 0x9c, 0xd9, 0xe0, 0xec, 0x9e, 0x34, 0xf3, 0x0e,
+
  0xa9, 0x63, 0x9c, 0x7f, 0x86, 0x7c, 0x54, 0x1b, 0x44, 0x49, 0x98, 0x3e,
+
  0x2d, 0x91, 0x0d, 0x11, 0x22, 0x09, 0xa3, 0x49, 0x85, 0xfa, 0xca, 0x9e,
+
  0x91, 0x5d, 0x73, 0xf4, 0xc3, 0x0b, 0xaa, 0x0c, 0x07, 0x11, 0x9e, 0x0b,
+
  0x5c, 0x35, 0xcf, 0x1f, 0xd5, 0x55, 0x47, 0x1e, 0x9c, 0x67, 0x26, 0x04,
+
  0x96, 0x70, 0x55, 0x72, 0xb0, 0x00, 0x49, 0x74, 0xe6, 0xc4, 0x49, 0x29,
+
  0x27, 0x54, 0x06, 0x13, 0x5e, 0x55, 0x65, 0x3f, 0xb1, 0x70, 0x2d, 0xc1,
+
  0xf5, 0xa2, 0xa7, 0xab, 0x3a, 0xce, 0x91, 0x4d, 0x74, 0xef, 0x70, 0x5c,
+
  0xb7, 0x85, 0x0f, 0x61, 0xb9, 0x49, 0x75, 0x9d, 0xd7, 0xc9, 0x87, 0xd4,
+
  0x2f, 0xeb, 0x93, 0xc7, 0xb7, 0xc9, 0xc4, 0xf1, 0xa5, 0xb4, 0xe2, 0x8b,
+
  0x66, 0xe9, 0xd2, 0x06, 0xd0, 0x02, 0xa1, 0x70, 0x61, 0xbc, 0x3d, 0x94,
+
  0xba, 0x62, 0x3c, 0x4b, 0xc0, 0xf5, 0xff, 0x53, 0x6a, 0x7e, 0x41, 0x9c,
+
  0x91, 0x93, 0x40, 0x41, 0x16, 0xdd, 0xc1, 0x28, 0xad, 0x18, 0xa3, 0x31,
+
  0x52, 0x69, 0x1c, 0x1e, 0x0e, 0xb3, 0x72, 0xbf, 0x46, 0x2f, 0xe4, 0xb7,
+
  0x12, 0xbe, 0x45, 0xa4, 0x8b, 0xca, 0x69, 0xee, 0x2c, 0x61, 0x1e, 0xd6,
+
  0xe2, 0x05, 0x20, 0x0a, 0x97, 0x21, 0x3c, 0x1c, 0x27, 0xb9, 0x3a, 0xab,
+
  0xc7, 0x14, 0x37, 0x4e, 0xd0, 0xe9, 0x3b, 0x4a, 0x61, 0x21, 0xff, 0xa3,
+
  0xbd, 0x78, 0x5f, 0xdf, 0xbc, 0x7a, 0xeb, 0x2e, 0xdf, 0xea, 0xd5, 0xe3,
+
  0x6e, 0x88, 0x5a, 0x85, 0xfc, 0xb5, 0x13, 0xb6, 0xa6, 0xda, 0x0f, 0x8e,
+
  0x18, 0x99, 0xf0, 0x75, 0x50, 0x06, 0x20, 0x85, 0x7e, 0x7d, 0x5f, 0xbb,
+
  0x4e, 0xc4, 0x48, 0xd9, 0x4d, 0x38, 0xf9, 0xf0, 0x70, 0x1c, 0xd3, 0xa2,
+
  0xbd, 0x77, 0xc1, 0x51, 0xb5, 0x69, 0x77, 0xc2, 0x38, 0x4f, 0xe9, 0x07,
+
  0xa0, 0xff, 0xda, 0x94, 0x0a, 0xe3, 0xf3, 0xc2, 0xc3, 0x29, 0x08, 0x9c,
+
  0xb8, 0xd1, 0xbd, 0xf7, 0x33, 0xf2, 0xe6, 0xf6, 0x2f, 0x47, 0x6d, 0x66,
+
  0x89, 0xa7, 0xd8, 0xc6, 0x64, 0x92, 0x33, 0xc9, 0x49, 0x65, 0x9b, 0x7e,
+
  0x34, 0x5d, 0x8f, 0x8f, 0xb4, 0x15, 0x25, 0x62, 0x34, 0xfa, 0xda, 0x56,
+
  0xbf, 0xb9, 0x60, 0xd8, 0x74, 0x88, 0x44, 0xb5, 0xee, 0x72, 0xd6, 0xb9,
+
  0xc7, 0xba, 0x77, 0xa7, 0x27, 0xc3, 0xb3, 0xe0, 0xde, 0xfd, 0x6f, 0x7a,
+
  0x3f, 0xa2, 0x67, 0x4b, 0x06, 0x98, 0xb9, 0x51, 0x49, 0x73, 0x67, 0x44,
+
  0x33, 0x88, 0x08, 0x06, 0x22, 0x0a, 0x20, 0xbf, 0x18, 0x00, 0x98, 0x9c,
+
  0x70, 0x1c, 0x29, 0x0f, 0x76, 0xc6, 0x8e, 0x88, 0x8c, 0xdb, 0x63, 0x7e,
+
  0x6d, 0x55, 0x4d, 0x76, 0x9e, 0x2a, 0xc4, 0x0d, 0x11, 0xe1, 0x0a, 0x4a,
+
  0x35, 0x94, 0x19, 0x26, 0xca, 0x9b, 0xc8, 0xcf, 0x13, 0x7a, 0x9f, 0x5a,
+
  0xfe, 0xdb, 0x27, 0xd1, 0x6b, 0x83, 0x61, 0xbd, 0xae, 0x1a, 0x60, 0x47,
+
  0xf8, 0x9a, 0x7f, 0x92, 0xac, 0xbc, 0xf3, 0x20, 0x86, 0x48, 0xef, 0x3e,
+
  0x04, 0xdd, 0x4e, 0x69, 0x09, 0x77, 0x53, 0x4a, 0x5c, 0xab, 0x14, 0x94,
+
  0x1c, 0x47, 0x25, 0xb1, 0x97, 0x74, 0x2b, 0x23, 0xd1, 0xab, 0x3f, 0x9f,
+
  0x9d, 0x6d, 0xc1, 0xb8, 0x5c, 0x0d, 0xe8, 0xe6, 0x4f, 0xd0, 0x9d, 0x0c,
+
  0x68, 0x0a, 0xf4, 0xeb, 0x97, 0x12, 0x85, 0x92, 0x3d, 0xb4, 0x94, 0xc7,
+
  0x0d, 0x65, 0x53, 0x82, 0x26, 0xf9, 0x51, 0xa3, 0x51, 0x59, 0x5c, 0x55,
+
  0x64, 0x95, 0x69, 0x84, 0x2d, 0xe1, 0x50, 0xca, 0x85, 0x07, 0x3c, 0x0a,
+
  0xab, 0x32, 0xe3, 0xfe, 0xe5, 0x78, 0x46, 0x9e, 0x9f, 0xbd, 0x7a, 0x49,
+
  0x9e, 0x5e, 0x41, 0xc0, 0x44, 0x04, 0x1b, 0x99, 0xef, 0x72, 0x34, 0xcf,
+
  0x6a, 0x54, 0x6f, 0x6b, 0x16, 0x1a, 0xc2, 0x12, 0x3c, 0xa0, 0x4e, 0x4a,
+
  0x1e, 0x15, 0x67, 0xd7, 0x22, 0x94, 0x2c, 0x27, 0xf6, 0x94, 0xd3, 0xda,
+
  0xc4, 0x31, 0x05, 0xd7, 0x37, 0xf9, 0x8e, 0xb8, 0xf4, 0x84, 0xd4, 0xf0,
+
  0xef, 0x71, 0x27, 0xf0, 0x8a, 0x55, 0xca, 0x33, 0xfa, 0x03, 0x67, 0xd4,
+
  0x9d, 0xde, 0x2c, 0x1d, 0x2a, 0xed, 0x46, 0x3f, 0xa0, 0x3e, 0x2c, 0x49,
+
  0x53, 0x51, 0xf7, 0x50, 0xa2, 0x56, 0x29, 0xee, 0xa8, 0xec, 0xa1, 0xd2,
+
  0x29, 0x99, 0x77, 0x8b, 0x65, 0x49, 0x68, 0x54, 0xea, 0xe8, 0x08, 0x40,
+
  0x37, 0x68, 0x72, 0x9e, 0xc9, 0x05, 0x33, 0x59, 0xb4, 0x0d, 0xb3, 0x47,
+
  0xb2, 0x59, 0x70, 0xfc, 0xa6, 0xec, 0x0c, 0x46, 0x88, 0x08, 0xff, 0x83,
+
  0xf6, 0x12, 0xc8, 0x0c, 0x46, 0x27, 0xc4, 0xea, 0x84, 0xb2, 0x72, 0x56,
+
  0x78, 0x57, 0xac, 0x99, 0x49, 0x78, 0x24, 0xf4, 0x76, 0x95, 0x66, 0xf0,
+
  0x56, 0x26, 0xfa, 0x67, 0x31, 0x37, 0x0a, 0x4c, 0x6b, 0x69, 0xa0, 0xf6,
+
  0x04, 0x12, 0xbb, 0x0c, 0x3b, 0xea, 0x3b, 0x99, 0x8e, 0x19, 0xc6, 0xef,
+
  0x1b, 0x9e, 0x18, 0xf6, 0x0a, 0xce, 0xd3, 0xf2, 0x5c, 0x1d, 0x33, 0xac,
+
  0xdb, 0x7a, 0xa1, 0x6c, 0x71, 0x10, 0xff, 0x9f, 0x98, 0x95, 0x15, 0xca,
+
  0x48, 0x5c, 0x62, 0x2a, 0x2b, 0x53, 0x55, 0xb4, 0x11, 0x4f, 0x98, 0x75,
+
  0x4d, 0x92, 0x1c, 0x5e, 0x1e, 0xce, 0x28, 0x16, 0x81, 0xcc, 0x66, 0x5f,
+
  0xcf, 0x8a, 0x65, 0x75, 0xbd, 0xe1, 0x15, 0xa2, 0x71, 0x6a, 0x24, 0xc8,
+
  0x8a, 0x1c, 0x93, 0x87, 0x53, 0x22, 0x3d, 0xda, 0x67, 0xdc, 0x46, 0xaa,
+
  0x77, 0x5e, 0xe6, 0xef, 0xad, 0xe2, 0xc1, 0xd5, 0xa5, 0x15, 0xe3, 0x2b,
+
  0xbd, 0x6f, 0x2f, 0xff, 0x86, 0xf3, 0xe4, 0xff, 0xe3, 0x3e, 0xf6, 0x5f,
+
  0xe1, 0x35, 0x8a, 0x1a, 0x79, 0x82, 0x66, 0x40, 0x14, 0xd2, 0xdc, 0x6e,
+
  0x56, 0x13, 0xf2, 0x6c, 0x91, 0x00, 0x31, 0x9a, 0x0e, 0x0c, 0x13, 0xa1,
+
  0x61, 0x92, 0xf1, 0x92, 0xcc, 0x16, 0x45, 0xa7, 0x45, 0x45, 0xeb, 0x6f,
+
  0xc5, 0x7f, 0xd2, 0x68, 0xda, 0x37, 0x2d, 0x8a, 0x51, 0x52, 0x86, 0x57,
+
  0xb9, 0x86, 0x7d, 0xc2, 0xb9, 0x53, 0x9e, 0x26, 0x07, 0xc8, 0x2c, 0xff,
+
  0xfc, 0x96, 0xef, 0x1c, 0x70, 0xb8, 0x19, 0xbf, 0xd0, 0x6f, 0x42, 0xb9,
+
  0xe6, 0xb3, 0x89, 0x9d, 0x7a, 0xd4, 0x98, 0x07, 0x6e, 0x0a, 0x6d, 0x55,
+
  0x3f, 0xe0, 0xe1, 0x42, 0xdc, 0x93, 0xf4, 0x2a, 0x0e, 0xe0, 0x64, 0xd9,
+
  0xcc, 0x08, 0xac, 0x60, 0xc3, 0x92, 0x21, 0x2a, 0x57, 0xd1, 0x74, 0x31,
+
  0xc9, 0x05, 0x33, 0x9e, 0x25, 0x38, 0xf4, 0xf6, 0xd4, 0xfb, 0x99, 0xf0,
+
  0x21, 0x3e, 0x62, 0xf9, 0x86, 0x73, 0x0a, 0x89, 0x29, 0x49, 0xb1, 0x67,
+
  0xb8, 0x3f, 0x07, 0xef, 0x81, 0x6d, 0xea, 0xa7, 0xce, 0x78, 0x93, 0x85,
+
  0xda, 0xe2, 0xad, 0xd6, 0xd1, 0xe9, 0xf1, 0xad, 0x15, 0xc8, 0x5d, 0x4e,
+
  0x56, 0xa3, 0xd8, 0x49, 0x1c, 0x94, 0xcd, 0xd0, 0xe1, 0x8f, 0x48, 0xc2,
+
  0xe7, 0x81, 0x4a, 0x28, 0x4a, 0xd0, 0xcf, 0xe6, 0x38, 0x30, 0x21, 0x1a,
+
  0x53, 0xa9, 0x10, 0x72, 0x89, 0x85, 0xce, 0x89, 0x04, 0x8f, 0xad, 0x95,
+
  0xb6, 0x34, 0xe9, 0xd9, 0x60, 0x3c, 0xa3, 0x92, 0x2a, 0x5a, 0xc3, 0x5c,
+
  0xdc, 0x92, 0xca, 0xa7, 0x53, 0x81, 0x26, 0x51, 0x8f, 0xed, 0x19, 0xf8,
+
  0x6b, 0x0d, 0xf7, 0x47, 0xf3, 0x36, 0xfc, 0xb3, 0x2e, 0x8a, 0xd9, 0xd7,
+
  0xe3, 0xf9, 0x04, 0xe7, 0xb0, 0xd6, 0x40, 0x1f, 0xe5, 0xde, 0x6a, 0xf9,
+
  0xd3, 0xad, 0x02, 0xc4, 0x36, 0x95, 0xa3, 0xc1, 0x44, 0x2b, 0x52, 0xa2,
+
  0xc8, 0xab, 0x38, 0x5f, 0xd6, 0x8c, 0x31, 0x8c, 0x8e, 0x8f, 0x19, 0xb0,
+
  0xd6, 0xcb, 0x96, 0x98, 0x65, 0x9d, 0xe8, 0x85, 0xd6, 0x12, 0x06, 0x70,
+
  0x27, 0xe2, 0x33, 0x0a, 0x46, 0x53, 0x10, 0x3f, 0x6e, 0x36, 0x47, 0x85,
+
  0x99, 0xa4, 0xb3, 0xf4, 0x9c, 0x8f, 0xc3, 0xd3, 0x97, 0xc7, 0x7f, 0x39,
+
  0x7e, 0xe9, 0xa9, 0x4e, 0x3f, 0x0c, 0x87, 0xdb, 0xef, 0xd3, 0x72, 0x94,
+
  0x96, 0x45, 0x85, 0xda, 0x53, 0x1d, 0xd1, 0x75, 0xa6, 0xca, 0xcd, 0xa1,
+
  0xf9, 0x2b, 0xe9, 0xaa, 0xc0, 0x30, 0x57, 0xc1, 0x44, 0x6f, 0xac, 0x97,
+
  0xe6, 0x47, 0xa6, 0xac, 0x15, 0x11, 0x7c, 0xd1, 0x3c, 0x55, 0x88, 0xdb,
+
  0x12, 0x33, 0x46, 0x28, 0x40, 0x98, 0x04, 0xda, 0x29, 0x11, 0x86, 0x7a,
+
  0x14, 0x3d, 0x63, 0x2e, 0xc0, 0x30, 0x0e, 0x28, 0x23, 0xed, 0x5b, 0x78,
+
  0xb7, 0x2c, 0x08, 0xa8, 0x38, 0x7a, 0x26, 0x0f, 0xad, 0x18, 0xc9, 0x12,
+
  0x17, 0x8d, 0x3b, 0x31, 0xb1, 0xee, 0x70, 0xf2, 0xa7, 0xf8, 0x70, 0x18,
+
  0x3f, 0x3b, 0x7e, 0x79, 0xfc, 0xc3, 0xe1, 0xd9, 0x71, 0x34, 0x9d, 0x25,
+
  0xe7, 0xd2, 0xd1, 0x2c, 0x6c, 0x52, 0x88, 0xd2, 0xf7, 0x27, 0x59, 0x17,
+
  0x5a, 0x80, 0x0c, 0x73, 0x4b, 0xb3, 0xf1, 0x7b, 0x0a, 0xce, 0x71, 0x6a,
+
  0x8c, 0xe2, 0x7d, 0xcd, 0x13, 0x12, 0x21, 0x7e, 0xda, 0x8b, 0xc9, 0x0b,
+
  0x03, 0x75, 0x48, 0xa6, 0xea, 0xbd, 0x41, 0x32, 0x03, 0xb5, 0xb2, 0x8a,
+
  0xde, 0xe6, 0x88, 0x63, 0x91, 0x19, 0x44, 0x3c, 0x7e, 0x7b, 0xd7, 0x3b,
+
  0x6e, 0x97, 0xb6, 0x23, 0x9a, 0xe7, 0x6c, 0xf6, 0xad, 0x33, 0x5f, 0xee,
+
  0xbd, 0x01, 0x8f, 0x33, 0x89, 0x1e, 0xee, 0xe7, 0x9a, 0x1e, 0xca, 0x46,
+
  0x43, 0x35, 0x31, 0x08, 0xaa, 0x6a, 0xd6, 0xa0, 0xe9, 0x0c, 0xbb, 0x82,
+
  0x85, 0xfd, 0x91, 0x8a, 0x9b, 0x4b, 0x2a, 0xfc, 0x33, 0xba, 0xb0, 0x55,
+
  0xa3, 0xe0, 0xa0, 0x70, 0xe6, 0xb6, 0xbd, 0x7c, 0x00, 0x0d, 0x9f, 0x96,
+
  0xb1, 0x1a, 0x5f, 0xa4, 0xf3, 0x54, 0x95, 0x12, 0xac, 0x09, 0xa0, 0xc4,
+
  0x73, 0xc6, 0xc3, 0x93, 0xee, 0x25, 0x24, 0x16, 0x47, 0x29, 0xf9, 0xeb,
+
  0xd0, 0xbb, 0x52, 0xf8, 0xf9, 0xc6, 0x78, 0xfd, 0x55, 0x56, 0x52, 0xe1,
+
  0x3f, 0xd5, 0x42, 0x11, 0x2a, 0xe4, 0x80, 0xea, 0x4a, 0x9d, 0x64, 0x7d,
+
  0x93, 0x9c, 0x6f, 0x93, 0x21, 0x73, 0x6a, 0xbc, 0xdc, 0x3e, 0xf2, 0xa6,
+
  0x41, 0xbd, 0x49, 0x99, 0xe2, 0xec, 0x2c, 0xfa, 0x88, 0xd8, 0x9a, 0xda,
+
  0xf4, 0x38, 0xc3, 0xd5, 0x39, 0x7c, 0xbc, 0x9c, 0x6b, 0x65, 0xe3, 0xf8,
+
  0x32, 0xaa, 0x9d, 0x8d, 0xc3, 0x83, 0xae, 0x49, 0x3b, 0x4b, 0x9a, 0xba,
+
  0xe9, 0x9c, 0x64, 0xe7, 0xb6, 0x16, 0x05, 0x99, 0xb5, 0xe9, 0x1b, 0x20,
+
  0x66, 0x19, 0x86, 0xa9, 0x09, 0x18, 0x0a, 0xee, 0xba, 0x29, 0xb1, 0x09,
+
  0x16, 0x71, 0x64, 0x95, 0x65, 0xcd, 0x4d, 0xce, 0x8c, 0xcd, 0x93, 0xb2,
+
  0xb1, 0x8c, 0x95, 0xd7, 0xb3, 0xb9, 0xfe, 0x2a, 0x41, 0xfe, 0x26, 0xfb,
+
  0xe5, 0xf5, 0x8a, 0xd3, 0x85, 0xd7, 0x13, 0x7a, 0x93, 0x70, 0x9e, 0xcf,
+
  0xdc, 0x42, 0x62, 0xc5, 0xed, 0x12, 0x91, 0xae, 0x86, 0xcf, 0xf1, 0xe9,
+
  0x9b, 0x33, 0x7a, 0xc8, 0x4b, 0xfc, 0x45, 0xc4, 0x6e, 0x15, 0x6a, 0x03,
+
  0x45, 0xb9, 0xe9, 0x5c, 0x7b, 0x92, 0x52, 0xae, 0xa7, 0x29, 0xcf, 0xd0,
+
  0x1a, 0x53, 0xd6, 0x3c, 0xa4, 0x97, 0xb7, 0x70, 0x1e, 0x0a, 0x50, 0x79,
+
  0xb0, 0x16, 0x35, 0x22, 0x1f, 0x98, 0x7a, 0x43, 0x9c, 0x83, 0x34, 0xde,
+
  0xa0, 0x59, 0x70, 0xd5, 0xb6, 0xe6, 0x2e, 0x9d, 0xe0, 0x97, 0x68, 0xe1,
+
  0x99, 0xf2, 0xa3, 0x8e, 0xb4, 0x5d, 0x05, 0xc0, 0xc1, 0x21, 0xf1, 0xae,
+
  0xa8, 0x64, 0x8c, 0x60, 0x98, 0xc7, 0xc0, 0xbe, 0x27, 0x3f, 0x82, 0x42,
+
  0x9f, 0xdc, 0x8f, 0xd0, 0xcf, 0x54, 0x22, 0xf0, 0x24, 0x03, 0x04, 0xa2,
+
  0x90, 0x0b, 0x5c, 0xe9, 0x6d, 0xb2, 0x1e, 0xfb, 0xd2, 0x6c, 0x83, 0x11,
+
  0x73, 0x09, 0x0b, 0x83, 0x93, 0x1f, 0xbd, 0xec, 0x1b, 0x42, 0xdb, 0xe0,
+
  0x57, 0xa0, 0xa2, 0x24, 0xee, 0x6c, 0xc8, 0x26, 0xd8, 0x54, 0xf2, 0xa9,
+
  0x13, 0xea, 0x09, 0x4a, 0xaa, 0xcf, 0x88, 0x4d, 0x06, 0x71, 0x07, 0x84,
+
  0x74, 0x2c, 0x58, 0x78, 0xe5, 0xe5, 0xfc, 0xa2, 0xb2, 0x6d, 0x01, 0xab,
+
  0x19, 0x69, 0xa3, 0xdd, 0xac, 0xc5, 0x29, 0xda, 0x92, 0xa9, 0xf0, 0xe2,
+
  0x30, 0xda, 0x32, 0xd3, 0x5b, 0x11, 0xa2, 0x2a, 0x66, 0x6b, 0x4e, 0x02,
+
  0x43, 0x83, 0x04, 0xbb, 0xca, 0x43, 0xb5, 0xe8, 0xad, 0x22, 0x1c, 0x21,
+
  0xa7, 0x2d, 0xea, 0x8b, 0xd3, 0xcb, 0x47, 0xcd, 0xd4, 0x51, 0xf6, 0xd0,
+
  0x93, 0xe2, 0x0d, 0xab, 0xda, 0x0e, 0x82, 0x33, 0x9c, 0x08, 0x3c, 0x9b,
+
  0xa6, 0x8b, 0xfe, 0x6d, 0x93, 0x40, 0x8e, 0xb4, 0xe3, 0x3d, 0x9f, 0xf9,
+
  0x09, 0x31, 0x22, 0xba, 0x83, 0x64, 0x36, 0xeb, 0xc1, 0xcc, 0x64, 0x85,
+
  0x96, 0x47, 0x29, 0x3c, 0x31, 0x43, 0x08, 0xe5, 0x95, 0x5d, 0x42, 0x2a,
+
  0xa0, 0x3f, 0x44, 0xbc, 0x60, 0xb7, 0x08, 0xde, 0x48, 0xb9, 0x97, 0x78,
+
  0x03, 0x41, 0x37, 0xd6, 0xac, 0x58, 0x70, 0x36, 0x56, 0x7c, 0xda, 0xd7,
+
  0xf4, 0x67, 0x2a, 0x56, 0x05, 0x2a, 0xf2, 0xeb, 0x30, 0xc6, 0x29, 0xd3,
+
  0x2c, 0xf1, 0x35, 0xba, 0x34, 0xa9, 0x2e, 0x6f, 0xe2, 0xa7, 0x76, 0xc1,
+
  0x3b, 0x92, 0xa2, 0xef, 0x9e, 0x13, 0xbd, 0x72, 0x37, 0x6f, 0x92, 0xcc,
+
  0xee, 0xc4, 0xd6, 0x82, 0x49, 0xb7, 0x77, 0x56, 0x97, 0x4c, 0x7e, 0xa7,
+
  0x7d, 0x67, 0xe9, 0xc2, 0x1c, 0xaf, 0xba, 0xfc, 0x08, 0x8e, 0x37, 0xfc,
+
  0x8b, 0xb1, 0x2f, 0x18, 0x70, 0xd0, 0x2f, 0x09, 0xa2, 0xe5, 0xd6, 0x7d,
+
  0x5e, 0x93, 0xdb, 0x01, 0x7f, 0xf3, 0x93, 0x0b, 0x90, 0xdf, 0x19, 0x76,
+
  0x07, 0x13, 0x10, 0x1e, 0x77, 0x7a, 0x38, 0xfc, 0x4b, 0x8b, 0xbb, 0x79,
+
  0xfc, 0x0c, 0xa8, 0xca, 0x4b, 0x7d, 0xd0, 0xbe, 0xac, 0x38, 0x56, 0xf0,
+
  0xd8, 0xc3, 0x5a, 0xde, 0xe2, 0xd8, 0xc3, 0x44, 0xbc, 0x63, 0xef, 0x2d,
+
  0xed, 0xaa, 0x63, 0x1f, 0xa0, 0x57, 0xff, 0xd8, 0xe7, 0x74, 0xd4, 0x09,
+
  0xc1, 0x25, 0x70, 0xde, 0xf5, 0xb8, 0xeb, 0x09, 0xf7, 0x0b, 0x28, 0x69,
+
  0x9e, 0xeb, 0x9c, 0x77, 0xba, 0xc1, 0x3b, 0xee, 0xba, 0x9d, 0x6b, 0x9f,
+
  0x77, 0xe1, 0x13, 0xde, 0x71, 0x27, 0x1f, 0x40, 0x07, 0xb1, 0xae, 0x3e,
+
  0xbc, 0xb0, 0x3b, 0x9f, 0xee, 0xf0, 0x06, 0xf6, 0xe4, 0xd6, 0x87, 0x17,
+
  0x26, 0x76, 0xc7, 0xc3, 0xab, 0x59, 0xaf, 0x5d, 0x87, 0xd7, 0x45, 0xe9,
+
  0xf3, 0x29, 0x46, 0x4b, 0x0d, 0x2d, 0x0a, 0xb2, 0x4d, 0x00, 0x0d, 0xf8,
+
  0x3a, 0xfa, 0xb6, 0x41, 0xdb, 0xac, 0x1c, 0xfb, 0xe1, 0x6b, 0x83, 0xb4,
+
  0xdb, 0x40, 0x61, 0x29, 0xc5, 0xc6, 0x15, 0x04, 0x51, 0x7c, 0x0d, 0x72,
+
  0xd2, 0xba, 0x18, 0x87, 0x53, 0x8f, 0x51, 0x37, 0x3a, 0x97, 0x84, 0x31,
+
  0x47, 0xab, 0x14, 0xab, 0x95, 0xa2, 0x66, 0xb6, 0xaf, 0x9f, 0x99, 0xde,
+
  0xc0, 0x4f, 0xed, 0x2c, 0x68, 0xd1, 0x44, 0xb6, 0xbb, 0x52, 0xc0, 0x9a,
+
  0x9b, 0xff, 0xf7, 0xf5, 0x14, 0x60, 0x67, 0xad, 0xda, 0x9c, 0x19, 0x6d,
+
  0x4a, 0xd2, 0x8d, 0x51, 0xd1, 0x06, 0x33, 0x0b, 0x7d, 0x17, 0xab, 0x12,
+
  0x3b, 0xc8, 0x05, 0x50, 0xb9, 0x7d, 0xca, 0x11, 0x91, 0x10, 0xad, 0x6a,
+
  0xf1, 0x8b, 0x31, 0x80, 0xb2, 0xc4, 0xfb, 0x49, 0xf9, 0xf4, 0x21, 0xc3,
+
  0x4a, 0x4e, 0xb3, 0x53, 0xb3, 0x0b, 0xb4, 0xb3, 0x11, 0x96, 0x41, 0x46,
+
  0x14, 0x20, 0x58, 0x72, 0xcd, 0xc1, 0x95, 0xad, 0xec, 0xc4, 0x01, 0xc9,
+
  0x7c, 0x25, 0x93, 0xaa, 0xcb, 0xbb, 0x06, 0xe6, 0x58, 0x89, 0x40, 0x43,
+
  0xf3, 0xd4, 0x29, 0x29, 0x5f, 0xd9, 0xfd, 0xa0, 0xeb, 0xfd, 0x57, 0x59,
+
  0x3e, 0x41, 0xfd, 0x66, 0x70, 0xe3, 0x16, 0x87, 0x1e, 0x73, 0x97, 0x03,
+
  0x1f, 0x9c, 0xee, 0x9a, 0x6d, 0x95, 0x51, 0x17, 0x6e, 0x64, 0xfb, 0x3c,
+
  0x6a, 0xf5, 0x53, 0x9e, 0xe4, 0x55, 0x4c, 0x9e, 0xd3, 0x29, 0x02, 0xc2,
+
  0x3f, 0x35, 0xbf, 0x7a, 0x9e, 0xa2, 0x67, 0xaf, 0xb5, 0x6f, 0xb9, 0x43,
+
  0x10, 0x55, 0xca, 0x70, 0x47, 0x8c, 0x28, 0x00, 0x97, 0x58, 0xb0, 0x80,
+
  0xfa, 0xa2, 0x2c, 0x96, 0xe7, 0x17, 0x32, 0x64, 0x5b, 0xde, 0xd2, 0x23,
+
  0x3c, 0x80, 0xbb, 0x84, 0xf1, 0xa3, 0xd2, 0x92, 0x22, 0xcb, 0x64, 0x6f,
+
  0xd9, 0xb9, 0x45, 0x9b, 0xe2, 0x76, 0xc1, 0x40, 0x52, 0xa0, 0xd9, 0x8d,
+
  0xc2, 0xd9, 0xe1, 0x34, 0xb6, 0x38, 0x4a, 0x8d, 0xa5, 0x50, 0x33, 0x8c,
+
  0x7c, 0x48, 0xdf, 0x2e, 0x85, 0xae, 0xa7, 0xee, 0xe4, 0x3a, 0x6e, 0x20,
+
  0x2c, 0xbf, 0x29, 0x7d, 0x39, 0xa4, 0x3c, 0x78, 0x2b, 0x8c, 0xf9, 0xd8,
+
  0x5c, 0xba, 0xb5, 0x92, 0xa8, 0xef, 0xd3, 0xe3, 0xd2, 0x98, 0x45, 0x5a,
+
  0x5f, 0xec, 0xac, 0xeb, 0xd4, 0xc4, 0x01, 0x16, 0x97, 0x0f, 0x62, 0x7c,
+
  0x5b, 0xeb, 0xc4, 0xe4, 0x4f, 0x1f, 0xd1, 0xa7, 0x03, 0x8f, 0x52, 0xbc,
+
  0xd2, 0x47, 0xc2, 0x8c, 0x37, 0x38, 0x61, 0x5c, 0x5b, 0x96, 0x4f, 0xd2,
+
  0x72, 0x46, 0x2d, 0x5e, 0xb0, 0xd1, 0x25, 0x3b, 0xbf, 0x13, 0x6d, 0x74,
+
  0x88, 0xd4, 0xc3, 0x95, 0x6a, 0x91, 0xd7, 0xf8, 0x00, 0x6c, 0xbf, 0x66,
+
  0x6a, 0xf7, 0xfe, 0x7e, 0x80, 0x6a, 0xcd, 0x9c, 0x9f, 0xca, 0x3e, 0x85,
+
  0x69, 0xb6, 0xa1, 0x72, 0x8e, 0x08, 0xdc, 0xb8, 0x00, 0xaa, 0x5c, 0xc4,
+
  0x7a, 0x17, 0xb3, 0x9f, 0x79, 0xf2, 0x5e, 0x6c, 0x9e, 0x07, 0x42, 0xc8,
+
  0xb1, 0xd7, 0xb7, 0x00, 0x09, 0xbb, 0xdf, 0x48, 0x7e, 0x6a, 0x90, 0xbc,
+
  0x18, 0xa2, 0xd4, 0xaa, 0x99, 0xe2, 0x39, 0x9c, 0x47, 0x2a, 0xcf, 0x09,
+
  0x61, 0xb0, 0x69, 0x49, 0x9b, 0x1b, 0x73, 0x52, 0x60, 0x23, 0x9a, 0x89,
+
  0xb9, 0xb7, 0x93, 0x00, 0xcd, 0x2a, 0x7c, 0x56, 0x02, 0x34, 0xb3, 0xd8,
+
  0xdd, 0x19, 0xec, 0x0e, 0xf6, 0x06, 0xb7, 0xc6, 0xce, 0x63, 0x2a, 0xf4,
+
  0xe8, 0x58, 0x93, 0x01, 0x9a, 0x54, 0xd8, 0x7a, 0x58, 0x17, 0x11, 0x9a,
+
  0xdd, 0x71, 0x28, 0xd0, 0x25, 0x40, 0x2d, 0xa0, 0x20, 0x28, 0x7f, 0xa1,
+
  0xc1, 0xbb, 0x13, 0xe1, 0xa3, 0x4f, 0x42, 0x84, 0x8f, 0x6e, 0x20, 0x42,
+
  0x6a, 0xdb, 0x64, 0x0f, 0x5b, 0x07, 0x1d, 0x4a, 0xea, 0x10, 0xb2, 0xd6,
+
  0x3b, 0x13, 0xe1, 0xa3, 0x5b, 0x11, 0xe1, 0xa3, 0x7f, 0x0b, 0x22, 0x94,
+
  0x59, 0xec, 0x25, 0x3b, 0x0f, 0x0e, 0x1e, 0xa4, 0x0f, 0xf6, 0x0e, 0x0e,
+
  0x1e, 0x3e, 0xda, 0xbd, 0x0b, 0x3f, 0x6c, 0x12, 0x62, 0x9b, 0xf0, 0x06,
+
  0xde, 0xf6, 0xff, 0x1b, 0xf0, 0x43, 0xf1, 0x63, 0x19, 0x42, 0x4c, 0x3d,
+
  0x52, 0x1c, 0x4a, 0x72, 0xbd, 0x36, 0x2b, 0x44, 0xa2, 0xd1, 0xbb, 0x38,
+
  0x59, 0x4a, 0x80, 0x04, 0xb4, 0x8c, 0xd7, 0x6d, 0x01, 0xeb, 0x43, 0xb6,
+
  0x93, 0x9a, 0x2d, 0x20, 0x48, 0x3a, 0xe4, 0x8b, 0xd3, 0xc8, 0x3c, 0xde,
+
  0xa1, 0x27, 0xdb, 0x47, 0x48, 0xb2, 0x6e, 0x83, 0x29, 0x0c, 0xf0, 0x8e,
+
  0xa7, 0xf8, 0xfe, 0x5c, 0xf2, 0x5b, 0x59, 0x74, 0xd6, 0x50, 0xab, 0x20,
+
  0x58, 0xb8, 0x83, 0xa7, 0xb8, 0x5c, 0x31, 0x5f, 0xfe, 0x4d, 0x10, 0x75,
+
  0x2f, 0x4d, 0x40, 0x63, 0xb0, 0x93, 0xea, 0x0a, 0x9d, 0x38, 0xcb, 0xf7,
+
  0x59, 0x49, 0x58, 0x27, 0xb1, 0xfb, 0xe5, 0xde, 0x60, 0xf7, 0xd1, 0x13,
+
  0x04, 0x59, 0xed, 0xdb, 0xdf, 0xf7, 0x3e, 0x8a, 0x92, 0x1b, 0x1c, 0xf5,
+
  0x41, 0x83, 0xa3, 0x9a, 0x77, 0x0f, 0xf1, 0x1b, 0x87, 0x8e, 0x57, 0xf0,
+
  0xd4, 0x00, 0x11, 0x13, 0xd5, 0xb6, 0xc1, 0x6e, 0x57, 0xd0, 0x70, 0x71,
+
  0xc1, 0xad, 0x37, 0xab, 0x3a, 0xa9, 0x97, 0x6d, 0x0d, 0x6f, 0x48, 0x61,
+
  0x8d, 0x4a, 0xdb, 0x73, 0xf2, 0x35, 0xe4, 0x97, 0x31, 0xb0, 0xc4, 0xcf,
+
  0x8a, 0xe7, 0xc4, 0x6d, 0x63, 0x0c, 0xc1, 0xc4, 0x68, 0xc8, 0x0c, 0xb7,
+
  0x56, 0xdb, 0x04, 0xcd, 0x27, 0xae, 0x0c, 0x82, 0xdc, 0xc1, 0xda, 0x6b,
+
  0x8e, 0xbe, 0x36, 0x39, 0xb4, 0x26, 0xc7, 0x9f, 0xb8, 0x26, 0x00, 0xfc,
+
  0xad, 0xfd, 0x45, 0xd6, 0x25, 0x0c, 0x18, 0x49, 0xa3, 0x6c, 0xcd, 0x12,
+
  0xba, 0x47, 0xfe, 0x9e, 0xe8, 0x85, 0x5d, 0x1b, 0xd2, 0x8c, 0xd9, 0x7d,
+
  0xcc, 0x8e, 0xb4, 0x1e, 0x78, 0xff, 0x1e, 0x18, 0xf7, 0xb5, 0xef, 0xb0,
+
  0x1d, 0x66, 0x62, 0xf7, 0xbd, 0x17, 0x68, 0x20, 0xde, 0xb4, 0x0d, 0xf8,
+
  0xb4, 0xa7, 0x60, 0x1d, 0x87, 0xdb, 0xd9, 0xd9, 0xa6, 0xb2, 0xcd, 0xe5,
+
  0x86, 0xe5, 0x2f, 0x9e, 0x6f, 0x39, 0x41, 0x64, 0xf6, 0x7e, 0x73, 0x56,
+
  0x0f, 0xc1, 0x15, 0x07, 0x80, 0xaa, 0xa9, 0x0f, 0x86, 0x0b, 0xe7, 0xe0,
+
  0xe4, 0x12, 0xaa, 0x77, 0x85, 0xc2, 0x8c, 0x32, 0x44, 0x19, 0xcd, 0x53,
+
  0xf4, 0xe3, 0x65, 0xd5, 0x3c, 0xa4, 0x5f, 0xa0, 0x49, 0xaf, 0x96, 0x17,
+
  0x4d, 0xca, 0xef, 0x0d, 0x85, 0x9d, 0x46, 0xa8, 0x3f, 0xad, 0xc9, 0x83,
+
  0x63, 0x86, 0xa3, 0xf0, 0x9f, 0x48, 0x4c, 0xf0, 0x7b, 0x69, 0x41, 0x8e,
+
  0xb5, 0xa2, 0x8a, 0xea, 0x83, 0xda, 0x24, 0x00, 0x64, 0x67, 0xd1, 0xa0,
+
  0x68, 0xa6, 0xdc, 0xac, 0xa0, 0x22, 0x70, 0x09, 0xee, 0x08, 0x12, 0x51,
+
  0xa4, 0x96, 0x9e, 0x0a, 0x32, 0xec, 0x79, 0x71, 0x95, 0x5e, 0x76, 0x34,
+
  0xeb, 0x6a, 0x34, 0x2e, 0x77, 0xc1, 0xcd, 0xa9, 0x56, 0x17, 0x13, 0xb5,
+
  0x6c, 0x8b, 0xcd, 0x2c, 0xbf, 0x48, 0x11, 0x72, 0x49, 0x4a, 0xfb, 0xc8,
+
  0xc1, 0x1b, 0x28, 0xde, 0x28, 0x0b, 0x4a, 0x0a, 0x75, 0x7a, 0x69, 0x5e,
+
  0x66, 0x49, 0x9b, 0xca, 0x84, 0x61, 0xdf, 0xc0, 0x46, 0x5a, 0x26, 0xf4,
+
  0x32, 0x27, 0x38, 0xe7, 0x29, 0xa1, 0x6f, 0x12, 0x7a, 0xb9, 0xd8, 0xbe,
+
  0xbd, 0x9e, 0xed, 0x70, 0x59, 0x59, 0x67, 0x4b, 0x7b, 0xc3, 0xdc, 0x36,
+
  0x38, 0x4f, 0x1e, 0x06, 0x80, 0x1c, 0x44, 0x62, 0x0a, 0x45, 0x7e, 0xa6,
+
  0xd2, 0xe1, 0x7f, 0x01, 0x2b, 0x7c, 0xb4, 0xd7, 0x38, 0x83, 0xcf, 0xc8,
+
  0x35, 0xb8, 0x9c, 0x2f, 0x04, 0xd4, 0xfb, 0x06, 0xf4, 0xe0, 0x88, 0xa2,
+
  0x1d, 0x3f, 0x12, 0xfa, 0x16, 0x27, 0x16, 0x0a, 0xd4, 0xa4, 0x46, 0x27,
+
  0x0d, 0x9a, 0x9c, 0xa9, 0xca, 0xec, 0xe8, 0x29, 0xc8, 0x00, 0x6d, 0x06,
+
  0x9e, 0xd7, 0xed, 0xe9, 0xaa, 0x83, 0xf6, 0x9b, 0x11, 0x94, 0xa6, 0xfb,
+
  0x3e, 0x0c, 0xf0, 0x64, 0xa8, 0xa3, 0x99, 0x32, 0x14, 0x02, 0x95, 0x62,
+
  0xb4, 0xa0, 0x8b, 0xd4, 0xc5, 0xd1, 0x36, 0xdd, 0x6d, 0x39, 0xab, 0x8f,
+
  0x83, 0xb5, 0xb6, 0x83, 0x88, 0xb7, 0xc7, 0x44, 0x80, 0x32, 0xf5, 0x9e,
+
  0x74, 0xaa, 0x5c, 0x4a, 0xc7, 0x73, 0x6c, 0x43, 0xcb, 0x1d, 0x12, 0xbd,
+
  0x79, 0x3c, 0x4f, 0x2e, 0x49, 0x2e, 0x38, 0x72, 0xc0, 0x20, 0x0e, 0x12,
+
  0x78, 0x09, 0x66, 0x0c, 0x11, 0x2e, 0xcd, 0xd4, 0xc2, 0xd2, 0x56, 0xd1,
+
  0x66, 0x36, 0x80, 0x25, 0xf3, 0x0f, 0x32, 0x90, 0x3b, 0xe5, 0x5a, 0xe0,
+
  0x5d, 0xf1, 0x41, 0x9f, 0xc2, 0xf6, 0x1f, 0xb0, 0x5c, 0x1f, 0x73, 0xaa,
+
  0xb7, 0xfa, 0x8d, 0x2a, 0x4d, 0xc1, 0x46, 0x30, 0x41, 0xe6, 0x2a, 0x50,
+
  0x23, 0xe6, 0xb7, 0xc8, 0x4c, 0xa2, 0xd1, 0x2c, 0xc9, 0xdf, 0x87, 0x1b,
+
  0x75, 0xd2, 0xc9, 0x79, 0xc6, 0x29, 0x97, 0x0e, 0x21, 0x7d, 0x3e, 0x98,
+
  0x1a, 0x77, 0x16, 0x04, 0xff, 0xb7, 0x3e, 0x9e, 0x86, 0x03, 0xb9, 0xe5,
+
  0x0a, 0xac, 0xf4, 0x9c, 0x93, 0xd1, 0x56, 0x01, 0xa1, 0x3c, 0x4b, 0xb1,
+
  0x28, 0x8a, 0x31, 0x88, 0x17, 0x4e, 0x6e, 0x8e, 0xe5, 0x65, 0x82, 0x5e,
+
  0xc0, 0xb8, 0x15, 0xec, 0x73, 0x0c, 0x35, 0x1c, 0x04, 0x46, 0xf5, 0x00,
+
  0xce, 0x2a, 0x6a, 0x12, 0x59, 0x21, 0xa5, 0x87, 0x9c, 0xaa, 0xc6, 0xd5,
+
  0x08, 0x14, 0x53, 0xd0, 0xe8, 0x74, 0xa1, 0x28, 0x4b, 0x53, 0xa3, 0xb2,
+
  0xfa, 0x3e, 0xeb, 0x08, 0x53, 0x5f, 0x4d, 0x11, 0x36, 0x10, 0x97, 0x80,
+
  0x4d, 0x74, 0x36, 0x35, 0xe4, 0xe8, 0x15, 0xd6, 0xb9, 0x4b, 0x72, 0x30,
+
  0xc5, 0x31, 0x91, 0xcf, 0x2f, 0x60, 0xea, 0x3f, 0x24, 0x48, 0xde, 0x44,
+
  0xc9, 0xcf, 0x92, 0x74, 0x4e, 0x82, 0xa3, 0xc0, 0x54, 0xb2, 0x60, 0x87,
+
  0x1e, 0xfe, 0xca, 0x29, 0x3b, 0x66, 0x47, 0x2b, 0x1f, 0x92, 0x08, 0xe8,
+
  0x7f, 0x02, 0x36, 0xbd, 0x80, 0x89, 0xa2, 0x5c, 0xa4, 0xb6, 0xee, 0x84,
+
  0x74, 0x11, 0x86, 0xf6, 0x0e, 0x5a, 0xed, 0x66, 0x83, 0x3e, 0x13, 0x03,
+
  0x37, 0xcf, 0xdf, 0xe6, 0x17, 0xda, 0xa6, 0x0e, 0xa9, 0x6b, 0xf6, 0x5b,
+
  0xa0, 0x3b, 0xbd, 0xa4, 0x47, 0x59, 0x9a, 0xa7, 0x41, 0xde, 0x4c, 0x94,
+
  0x37, 0x4c, 0x67, 0xda, 0xf7, 0x44, 0x51, 0x44, 0xc6, 0xe5, 0xf5, 0x02,
+
  0x43, 0xb0, 0x02, 0xe4, 0xcd, 0xa1, 0x43, 0x5c, 0x5d, 0x06, 0x9a, 0x58,
+
  0x8d, 0x9d, 0xfe, 0x96, 0x52, 0x8d, 0xe5, 0x5e, 0xb2, 0x84, 0x29, 0x1b,
+
  0x17, 0x5b, 0x61, 0x27, 0xc6, 0x32, 0x46, 0x6a, 0x9b, 0x50, 0x4b, 0x1c,
+
  0x8b, 0xd0, 0xd5, 0x0e, 0x30, 0xd0, 0x08, 0x95, 0xd6, 0xdc, 0x89, 0xef,
+
  0x40, 0x92, 0x21, 0xa3, 0x4d, 0x4a, 0xea, 0x52, 0xcc, 0x6a, 0x4c, 0xae,
+
  0xdb, 0x52, 0x13, 0x5d, 0x6e, 0xf4, 0x0c, 0x6a, 0x32, 0x97, 0x2d, 0x36,
+
  0x8b, 0x8d, 0x9a, 0x74, 0x10, 0x05, 0xbf, 0xc1, 0x6d, 0x49, 0x42, 0x68,
+
  0xe2, 0x1e, 0x89, 0x42, 0x88, 0x7a, 0x96, 0x5c, 0xc2, 0xca, 0xdf, 0x09,
+
  0x10, 0x44, 0x81, 0x7d, 0x08, 0x5a, 0xa4, 0x41, 0x15, 0x75, 0x72, 0x1e,
+
  0x4b, 0x17, 0x95, 0x0e, 0xae, 0xe4, 0xd4, 0xa1, 0x0b, 0x0f, 0x62, 0xfc,
+
  0x65, 0x2a, 0xf7, 0x35, 0xf9, 0x3c, 0x24, 0xdd, 0xb5, 0x84, 0x48, 0x3a,
+
  0xdb, 0xa0, 0xf0, 0xf6, 0x72, 0x08, 0x09, 0x04, 0xe8, 0xf8, 0x2c, 0x39,
+
  0xe7, 0xb0, 0xa6, 0xa9, 0xe2, 0x73, 0xf0, 0xf9, 0xb1, 0x35, 0x28, 0x08,
+
  0x1b, 0xee, 0x6c, 0x35, 0x06, 0x15, 0x19, 0x2e, 0x79, 0x31, 0x8d, 0x5f,
+
  0xc3, 0xde, 0xc6, 0x5e, 0xe3, 0x33, 0x8c, 0x75, 0x0b, 0xb3, 0xb6, 0xea,
+
  0xb8, 0x80, 0x13, 0xe3, 0x63, 0x06, 0xc1, 0xd6, 0x49, 0x9a, 0xee, 0xcd,
+
  0xc5, 0x76, 0xb0, 0x85, 0x54, 0x61, 0x58, 0x99, 0x76, 0x11, 0xcd, 0x52,
+
  0x29, 0x9a, 0x95, 0x76, 0x0a, 0xf6, 0x20, 0xe6, 0x08, 0xb7, 0xd7, 0xed,
+
  0x16, 0x6b, 0x13, 0x15, 0x27, 0x69, 0x45, 0x3d, 0x63, 0x79, 0x26, 0x60,
+
  0xe7, 0xe7, 0xa6, 0x79, 0x0e, 0x57, 0x2b, 0x7a, 0x49, 0x61, 0xb0, 0x11,
+
  0xa2, 0x8b, 0x1a, 0x5d, 0x24, 0xf8, 0x16, 0x6f, 0x4d, 0x97, 0x1d, 0xcd,
+
  0x9c, 0x96, 0xcd, 0xac, 0x28, 0x2d, 0x81, 0xba, 0x5f, 0x60, 0x38, 0x9a,
+
  0xfe, 0x24, 0xb6, 0x8b, 0x4b, 0x2e, 0xc5, 0x0a, 0xbe, 0x3f, 0x83, 0xf5,
+
  0x96, 0xbe, 0x76, 0xcb, 0xce, 0xa5, 0x12, 0xc8, 0x81, 0x9f, 0x2b, 0xb4,
+
  0xd9, 0x8e, 0xa0, 0x8c, 0x55, 0xb5, 0x51, 0x01, 0x2e, 0xbd, 0x23, 0x4b,
+
  0x0f, 0x63, 0xcc, 0x90, 0xe5, 0x88, 0xfb, 0x1b, 0x9a, 0x66, 0x51, 0x1d,
+
  0xce, 0xa6, 0x06, 0x25, 0x7e, 0x2e, 0x67, 0x53, 0x63, 0x12, 0xf8, 0xc7,
+
  0x1d, 0xa0, 0xb4, 0xec, 0x2e, 0xd0, 0xa1, 0xfb, 0x0d, 0x55, 0x01, 0x9c,
+
  0x3b, 0x46, 0x9f, 0x27, 0x4d, 0x5d, 0xfa, 0x49, 0xd3, 0x9e, 0xb5, 0x77,
+
  0xde, 0xf6, 0x24, 0xe2, 0xc5, 0x15, 0x17, 0xd0, 0xc1, 0xf1, 0xa3, 0x55,
+
  0xd7, 0x8a, 0x8c, 0x06, 0xf1, 0x12, 0xe9, 0x85, 0xf6, 0x48, 0x93, 0xb5,
+
  0xc7, 0xc9, 0xf8, 0x42, 0xd0, 0xcf, 0x67, 0xec, 0x90, 0xe4, 0x33, 0x85,
+
  0x88, 0xc7, 0x9c, 0xf0, 0xc9, 0x75, 0x2c, 0x0a, 0x05, 0xd3, 0x45, 0x41,
+
  0x1d, 0xb0, 0xe4, 0x4c, 0x0f, 0x15, 0xa7, 0x02, 0x37, 0xf0, 0x4d, 0xfa,
+
  0x4d, 0x9d, 0x9b, 0xb0, 0x70, 0x3b, 0xe0, 0x41, 0x99, 0x19, 0x9b, 0x35,
+
  0x5a, 0x41, 0x23, 0xad, 0xce, 0x02, 0xd1, 0xa7, 0xa1, 0x13, 0x9a, 0x05,
+
  0x71, 0x9a, 0x8f, 0x20, 0x14, 0x21, 0xb6, 0xd5, 0x74, 0x41, 0xa5, 0xbb,
+
  0xbb, 0x3b, 0x3b, 0xb6, 0x25, 0x64, 0x47, 0x1f, 0x48, 0x21, 0x91, 0x95,
+
  0xed, 0x20, 0x09, 0x15, 0x9d, 0xf2, 0xe8, 0x4d, 0xab, 0x96, 0x24, 0x63,
+
  0x9e, 0xdd, 0x0e, 0xed, 0xe3, 0x23, 0x4d, 0x5b, 0x46, 0x6b, 0xdd, 0x70,
+
  0x50, 0x86, 0x7b, 0x8c, 0x52, 0x53, 0x48, 0xd8, 0xc2, 0x63, 0x9a, 0x63,
+
  0x75, 0xd0, 0xb8, 0x27, 0x0c, 0xc7, 0x9f, 0x71, 0x47, 0x67, 0x65, 0x07,
+
  0xd1, 0x77, 0xd7, 0x36, 0x39, 0x85, 0xb4, 0x59, 0x4e, 0xa7, 0xa4, 0x59,
+
  0x71, 0x1f, 0x6f, 0x9e, 0xff, 0x20, 0xd8, 0x93, 0x64, 0x65, 0xaf, 0xc7,
+
  0xff, 0x70, 0x00, 0x44, 0x61, 0xa7, 0x16, 0x15, 0x8d, 0x4a, 0x4d, 0xc2,
+
  0xbc, 0xb2, 0xee, 0x66, 0x13, 0x4a, 0x60, 0xc0, 0x52, 0x26, 0x61, 0x5e,
+
  0x1b, 0xbd, 0x6c, 0xa3, 0x94, 0x1a, 0x79, 0xb0, 0x81, 0xf9, 0xbf, 0xb1,
+
  0x63, 0xa3, 0x4f, 0x6b, 0x37, 0xf0, 0xe2, 0x7b, 0x68, 0xe0, 0xd1, 0x79,
+
  0xca, 0xbc, 0xb9, 0xec, 0x0d, 0x1e, 0x1a, 0x68, 0xca, 0x35, 0x15, 0xa1,
+
  0x66, 0xff, 0xc6, 0x26, 0xd4, 0xcb, 0xe3, 0xe6, 0x79, 0xc3, 0xae, 0x2d,
+
  0x31, 0xf5, 0x66, 0x69, 0xab, 0x0e, 0xd8, 0xce, 0x05, 0xb9, 0x3a, 0x25,
+
  0xfc, 0x18, 0xd4, 0x57, 0x94, 0xb3, 0x93, 0xb4, 0x96, 0xf2, 0x7a, 0x75,
+
  0xc5, 0x51, 0x93, 0x97, 0xc1, 0x8a, 0x7e, 0xd5, 0x0e, 0xa2, 0xad, 0xdb,
+
  0x4f, 0xc0, 0xeb, 0x1e, 0xd0, 0x48, 0x20, 0xf3, 0xab, 0x0c, 0xd8, 0x3c,
+
  0xaf, 0x4d, 0xaa, 0x26, 0x5b, 0xfc, 0x54, 0x1b, 0x4b, 0x61, 0x1e, 0x56,
+
  0xac, 0xc0, 0xc8, 0xef, 0xd3, 0x61, 0x02, 0xee, 0x8b, 0x98, 0x59, 0x7c,
+
  0xea, 0x82, 0xb1, 0x2b, 0x9b, 0xc1, 0xc9, 0x96, 0x26, 0xbf, 0x89, 0x9e,
+
  0x07, 0xf4, 0xc0, 0x95, 0x92, 0x05, 0xce, 0xae, 0x03, 0xc5, 0x5f, 0xf0,
+
  0xab, 0xb0, 0x1c, 0xfa, 0x80, 0x2b, 0x37, 0xa8, 0xf5, 0x08, 0xe5, 0x52,
+
  0xf3, 0xf0, 0xb8, 0x66, 0xe5, 0x9c, 0x5b, 0x04, 0xa5, 0xda, 0x14, 0x87,
+
  0x70, 0x06, 0xb8, 0xf9, 0x83, 0x67, 0x57, 0x60, 0x21, 0x25, 0x36, 0x80,
+
  0x8f, 0x68, 0x73, 0xa8, 0xbb, 0xce, 0xb2, 0x74, 0xca, 0x27, 0x7b, 0x17,
+
  0x19, 0xec, 0x6a, 0xde, 0x23, 0x0d, 0xd2, 0x2a, 0x1e, 0xf2, 0x50, 0xef,
+
  0x65, 0x97, 0x33, 0x27, 0x3b, 0xf6, 0x8b, 0x60, 0x1b, 0x9e, 0x46, 0x62,
+
  0xab, 0xdf, 0x7d, 0x41, 0xa4, 0xa2, 0xe0, 0x3c, 0xd0, 0x0b, 0x50, 0xf7,
+
  0xe2, 0x2e, 0xc0, 0x2b, 0x4b, 0x1d, 0x62, 0xc5, 0xe0, 0x2b, 0xa0, 0xc0,
+
  0xca, 0xf2, 0x49, 0x4a, 0x08, 0x10, 0xb9, 0xe9, 0xca, 0x90, 0xcc, 0x31,
+
  0xe9, 0x07, 0xff, 0xc2, 0x55, 0x0e, 0x81, 0xeb, 0xe3, 0x3e, 0x48, 0xbb,
+
  0xba, 0x50, 0x59, 0x25, 0xd7, 0xca, 0x27, 0xd7, 0x84, 0xcb, 0x6d, 0x1f,
+
  0x4c, 0xd4, 0xdd, 0x36, 0xee, 0x71, 0x15, 0xcf, 0x0b, 0x8a, 0x62, 0x09,
+
  0x1d, 0xe3, 0x12, 0x8e, 0xcb, 0x6c, 0x51, 0xb3, 0xf1, 0xd0, 0x95, 0x4c,
+
  0xe6, 0x6a, 0x23, 0xa6, 0x94, 0x3d, 0x9b, 0xa3, 0x03, 0x3a, 0x9e, 0xf6,
+
  0xe5, 0x30, 0x69, 0x83, 0x0e, 0xaa, 0xd2, 0xaf, 0x1c, 0x0a, 0xf7, 0xbc,
+
  0x0c, 0xd4, 0x30, 0x89, 0xfa, 0xa8, 0x34, 0x4b, 0x4b, 0x37, 0xa4, 0x7a,
+
  0x49, 0xa2, 0x3e, 0x54, 0x3b, 0x1e, 0xfd, 0x15, 0x24, 0x19, 0xfa, 0x92,
+
  0xb9, 0x48, 0x28, 0x54, 0x91, 0x8e, 0x2d, 0xac, 0xc5, 0x75, 0xde, 0x8f,
+
  0x2e, 0xd8, 0x99, 0x8d, 0x33, 0x4c, 0x9d, 0xc9, 0x29, 0xe2, 0xcc, 0xf9,
+
  0xac, 0x18, 0x25, 0x7c, 0xbc, 0xb9, 0xed, 0x9f, 0x4f, 0x80, 0x53, 0xee,
+
  0x05, 0x41, 0x76, 0x00, 0x2f, 0x91, 0xf5, 0x97, 0xdd, 0xe4, 0x81, 0x76,
+
  0x86, 0x37, 0xeb, 0xa4, 0x09, 0xb9, 0xa3, 0x86, 0xbe, 0x56, 0x70, 0x7c,
+
  0x36, 0xe4, 0x7f, 0x99, 0x76, 0x3d, 0xcc, 0x8d, 0xdf, 0x59, 0xf6, 0x75,
+
  0xeb, 0xfa, 0x25, 0x2f, 0xb2, 0xde, 0x11, 0x2a, 0xb2, 0x43, 0xaf, 0xcb,
+
  0xcb, 0x9d, 0x49, 0x05, 0x18, 0xb7, 0xf9, 0x0c, 0x36, 0x4c, 0x3d, 0xd6,
+
  0xdd, 0xcc, 0xdc, 0x6e, 0x1d, 0x9b, 0xb5, 0x34, 0x36, 0x4e, 0x32, 0x1e,
+
  0x15, 0x93, 0xeb, 0x06, 0x6b, 0x7f, 0xb8, 0x17, 0x60, 0xed, 0xe6, 0xd2,
+
  0xb0, 0xf6, 0xf4, 0x86, 0xcf, 0xb4, 0xe9, 0xd3, 0x85, 0x7a, 0xb6, 0xd4,
+
  0x37, 0x33, 0x23, 0xa4, 0x26, 0x86, 0xb6, 0x01, 0x93, 0xd1, 0x10, 0xbc,
+
  0x88, 0x86, 0xa2, 0x6d, 0x63, 0xa3, 0x3e, 0x2a, 0x58, 0x3e, 0x27, 0xd5,
+
  0xb6, 0xdc, 0x1a, 0x44, 0x2f, 0x72, 0x49, 0xc2, 0x17, 0x50, 0x26, 0x46,
+
  0xcb, 0xc8, 0x5d, 0x98, 0x8d, 0xc0, 0xd1, 0xa8, 0xa4, 0xe0, 0x31, 0xc3,
+
  0xd9, 0xa0, 0x0e, 0x31, 0xb6, 0x3d, 0x7d, 0x6c, 0xa1, 0x39, 0xc3, 0x69,
+
  0xe8, 0x97, 0x74, 0x66, 0xfc, 0xa4, 0x51, 0x58, 0x48, 0xc9, 0x1c, 0xe4,
+
  0xe6, 0x19, 0xb4, 0xb4, 0x0a, 0xbe, 0x87, 0xf3, 0xb9, 0xe6, 0x1c, 0x0f,
+
  0x64, 0xf4, 0x5b, 0xa6, 0x2e, 0x8c, 0x8a, 0x44, 0x43, 0xae, 0x8d, 0xaa,
+
  0x96, 0x96, 0x45, 0x8e, 0x5e, 0x29, 0x10, 0xf3, 0xc4, 0x3e, 0xd8, 0x0c,
+
  0x4d, 0x0c, 0x00, 0x23, 0x45, 0x44, 0xe9, 0x99, 0x84, 0x19, 0x10, 0x62,
+
  0xf5, 0xb2, 0xfc, 0x7b, 0x7b, 0x1d, 0xdd, 0xe8, 0x32, 0xc1, 0xd7, 0x49,
+
  0x66, 0x35, 0x26, 0x83, 0x52, 0xae, 0xbb, 0x63, 0xae, 0x3a, 0x64, 0xa2,
+
  0xed, 0x81, 0xb4, 0xe9, 0x5c, 0x88, 0xe9, 0x18, 0x9f, 0x05, 0xb5, 0xe7,
+
  0xc8, 0x4a, 0x58, 0x3c, 0x58, 0xb8, 0x1c, 0xa1, 0x22, 0xb4, 0xcc, 0x01,
+
  0x35, 0x90, 0x8a, 0x7d, 0xef, 0x0e, 0x7e, 0xc8, 0xcd, 0x67, 0xd1, 0xd0,
+
  0x5b, 0xc7, 0x79, 0xbc, 0x73, 0x2c, 0xbd, 0x45, 0xf8, 0x77, 0x39, 0x92,
+
  0x76, 0x6e, 0x6b, 0x66, 0xa6, 0x4d, 0xfb, 0x7a, 0x9e, 0x3c, 0x07, 0x75,
+
  0x47, 0x91, 0xe0, 0xd4, 0xef, 0x8e, 0xc2, 0xb7, 0x77, 0x87, 0x78, 0xcd,
+
  0x16, 0x86, 0x4f, 0x2a, 0xe9, 0x63, 0xd3, 0xa4, 0xaa, 0x0d, 0x9a, 0xaa,
+
  0x92, 0x1c, 0xfb, 0x06, 0xdb, 0x27, 0xd7, 0xe4, 0x5b, 0xfb, 0xbc, 0x95,
+
  0x94, 0x81, 0x42, 0x2b, 0x4c, 0x5c, 0xc9, 0xb7, 0xac, 0x4c, 0x22, 0x10,
+
  0x17, 0x34, 0x4f, 0xd2, 0x64, 0xa6, 0x09, 0x3b, 0x38, 0x37, 0xbf, 0x77,
+
  0x16, 0x2b, 0x63, 0xd5, 0xad, 0x4e, 0x79, 0xe0, 0x5c, 0xb7, 0x13, 0xf9,
+
  0xcd, 0x29, 0xa7, 0x3a, 0x73, 0x3d, 0xe7, 0x9d, 0x07, 0xbd, 0x7d, 0xb4,
+
  0x43, 0xad, 0xb8, 0xfc, 0x83, 0x2e, 0xe7, 0x9c, 0x16, 0x88, 0x4e, 0x39,
+
  0x29, 0x3a, 0x52, 0xdc, 0xab, 0x71, 0x06, 0xf4, 0x1f, 0xb5, 0xad, 0x0a,
+
  0x5a, 0xf1, 0x9a, 0x0f, 0x85, 0x74, 0x2f, 0x12, 0xad, 0xe8, 0x86, 0xf3,
+
  0x3b, 0x4f, 0xe1, 0x48, 0x4d, 0x54, 0xfc, 0x12, 0x35, 0x56, 0xc9, 0x34,
+
  0x55, 0x1f, 0x94, 0x28, 0x9a, 0xc5, 0x18, 0x96, 0x8e, 0x02, 0x0e, 0xcc,
+
  0x76, 0xf3, 0x00, 0x46, 0x3b, 0xeb, 0x77, 0xb8, 0x85, 0xc6, 0x58, 0x43,
+
  0xe6, 0x2b, 0x8a, 0x61, 0x35, 0xcb, 0x16, 0x9a, 0x77, 0xdd, 0x8f, 0x52,
+
  0x01, 0xc6, 0x00, 0xf2, 0xe4, 0xdd, 0x58, 0xc6, 0xbe, 0xd6, 0x6a, 0x0a,
+
  0xa3, 0xb9, 0x53, 0xda, 0x25, 0x86, 0xf3, 0x27, 0xd1, 0x66, 0x6b, 0xf4,
+
  0x07, 0x3b, 0xbb, 0x34, 0xd9, 0x07, 0x3b, 0x8f, 0x57, 0x66, 0xd4, 0x58,
+
  0x46, 0x74, 0x9b, 0x54, 0x9a, 0x68, 0x6d, 0x89, 0x7c, 0x97, 0x83, 0xbf,
+
  0xde, 0x71, 0xf7, 0x65, 0xec, 0x6d, 0x8e, 0x7c, 0xf0, 0xb8, 0x87, 0xf8,
+
  0x15, 0x7e, 0x33, 0xab, 0xd2, 0x98, 0xe0, 0x68, 0x6e, 0x01, 0x2a, 0x4f,
+
  0x51, 0x08, 0xbc, 0x43, 0x00, 0x6c, 0x14, 0x43, 0x9e, 0xec, 0x0d, 0xb8,
+
  0x3e, 0xa2, 0x1e, 0x70, 0xd5, 0x05, 0x30, 0xfc, 0x81, 0x67, 0xc2, 0xe1,
+
  0x6d, 0x72, 0x1f, 0xe5, 0xd6, 0x53, 0x79, 0x14, 0xd3, 0x56, 0x42, 0x37,
+
  0x33, 0x4e, 0xb9, 0xd0, 0x0e, 0x5d, 0x67, 0xbc, 0xd1, 0x1e, 0x78, 0x9b,
+
  0xed, 0xd5, 0xce, 0x28, 0xac, 0x5c, 0x1d, 0x47, 0xd9, 0x10, 0xd7, 0xc6,
+
  0x19, 0xad, 0x1a, 0x6c, 0xf4, 0x7d, 0x96, 0x67, 0xd5, 0x05, 0x7a, 0xd7,
+
  0xe6, 0x58, 0x10, 0x76, 0xee, 0x99, 0x73, 0x14, 0xfe, 0x15, 0x11, 0x93,
+
  0x44, 0x40, 0xb1, 0x78, 0x14, 0x80, 0x15, 0x31, 0xa9, 0x0a, 0xe4, 0x27,
+
  0x7f, 0xc9, 0xcd, 0xc5, 0xed, 0x6b, 0x76, 0x89, 0x48, 0x58, 0x33, 0x44,
+
  0x5f, 0x9f, 0x5d, 0x0b, 0xf6, 0x03, 0x6e, 0x36, 0x72, 0x0b, 0x0b, 0xad,
+
  0xf8, 0x7a, 0x38, 0x24, 0x32, 0x1e, 0x72, 0x7e, 0xc5, 0x19, 0x6a, 0xe7,
+
  0xde, 0x7b, 0x62, 0xee, 0xda, 0x26, 0xee, 0xf5, 0xc9, 0x10, 0xd8, 0xf4,
+
  0x0e, 0x6a, 0x33, 0xe8, 0x28, 0x2c, 0x09, 0xdc, 0x07, 0x3e, 0xfb, 0x09,
+
  0x53, 0x9c, 0xbf, 0x34, 0x1f, 0x6f, 0x51, 0xef, 0x2c, 0x44, 0x1d, 0xbb,
+
  0x41, 0x3c, 0x9a, 0x6d, 0xff, 0x04, 0x85, 0x45, 0xce, 0xe8, 0xeb, 0x1f,
+
  0x11, 0x3b, 0xb1, 0xf5, 0x1c, 0x0d, 0xf5, 0x78, 0x11, 0xa3, 0x48, 0x42,
+
  0xcc, 0xf9, 0xa6, 0x97, 0xa1, 0xad, 0x8a, 0x22, 0xa2, 0x58, 0x1a, 0x6a,
+
  0x75, 0x66, 0xaa, 0x8d, 0x1a, 0x44, 0x4f, 0xa0, 0x66, 0x05, 0x23, 0x02,
+
  0x52, 0xf4, 0x95, 0x17, 0x0c, 0x67, 0x68, 0xd1, 0xb6, 0xaa, 0x80, 0x15,
+
  0xce, 0x7d, 0x72, 0xa4, 0x71, 0x19, 0xec, 0x4a, 0x05, 0x16, 0xf9, 0x05,
+
  0x3f, 0x19, 0x3f, 0x72, 0xf2, 0x99, 0x80, 0xc0, 0xc6, 0x88, 0x88, 0xd6,
+
  0x09, 0x27, 0x4b, 0x2e, 0x22, 0x67, 0xe2, 0xb7, 0x72, 0xd4, 0x7f, 0x1a,
+
  0x17, 0xac, 0x3b, 0x8b, 0xf8, 0xfb, 0x68, 0x83, 0x5e, 0xff, 0x67, 0x03,
+
  0x85, 0xb3, 0x21, 0x1f, 0xce, 0xd2, 0xaf, 0xbf, 0x45, 0x10, 0x98, 0x1e,
+
  0x5a, 0xf2, 0x1b, 0xeb, 0xed, 0xa5, 0x85, 0x75, 0x73, 0xf7, 0xf1, 0xc9,
+
  0x6e, 0x60, 0x1f, 0x25, 0x9b, 0x88, 0xa2, 0xab, 0x5f, 0xf3, 0x1f, 0xe1,
+
  0x04, 0x18, 0x6a, 0x3d, 0x03, 0x0b, 0xf9, 0xea, 0x10, 0x77, 0x78, 0x28,
+
  0xb8, 0xc0, 0x2d, 0x78, 0x1b, 0x17, 0x37, 0x1d, 0x97, 0x31, 0xb4, 0x76,
+
  0xf2, 0x44, 0x55, 0x5b, 0x19, 0x02, 0xab, 0xd1, 0x7d, 0x82, 0xa3, 0xe4,
+
  0xb3, 0xac, 0xc6, 0x5d, 0x01, 0x8b, 0x2d, 0x8a, 0x5e, 0xc2, 0x3e, 0x33,
+
  0x4e, 0xd9, 0xb7, 0x6d, 0x94, 0x2c, 0x64, 0x00, 0x1b, 0x4f, 0x37, 0x2c,
+
  0xb0, 0x54, 0x65, 0x82, 0x41, 0xd1, 0xc6, 0x57, 0x08, 0x91, 0x87, 0x9d,
+
  0x45, 0xf9, 0x99, 0xc2, 0x37, 0xd8, 0xc1, 0x47, 0x65, 0xb0, 0x5e, 0xd1,
+
  0xbb, 0xa2, 0x4f, 0xcd, 0xd3, 0x04, 0x2b, 0xe0, 0x9a, 0xa0, 0x1e, 0xdc,
+
  0xf5, 0x2f, 0xa5, 0x4c, 0xb4, 0xc6, 0x7b, 0xab, 0x87, 0x69, 0xc3, 0x83,
+
  0x60, 0x47, 0xc4, 0x4e, 0x0e, 0xf2, 0x66, 0x84, 0x38, 0xe0, 0x44, 0xe9,
+
  0x78, 0x4e, 0x3c, 0x19, 0x4a, 0x8d, 0x1e, 0x8f, 0xa9, 0xdb, 0x06, 0x89,
+
  0x23, 0xf8, 0xf2, 0xfc, 0x3c, 0x88, 0x3c, 0x02, 0x4b, 0x80, 0xdc, 0x0a,
+
  0xdf, 0x79, 0x0a, 0x46, 0x19, 0x79, 0x40, 0xd0, 0xbe, 0x5e, 0x85, 0xe5,
+
  0xe7, 0x6e, 0xf5, 0xa7, 0x43, 0x1c, 0x77, 0x9f, 0xd2, 0x43, 0xb1, 0xd2,
+
  0xbb, 0x2b, 0xd9, 0x5a, 0x2a, 0xb5, 0x6b, 0xfc, 0xd4, 0x05, 0xcd, 0x0d,
+
  0xd3, 0x28, 0x91, 0x28, 0x53, 0x28, 0x06, 0x4b, 0xe9, 0x33, 0x93, 0xa0,
+
  0x35, 0x4d, 0x80, 0x64, 0xaf, 0xa5, 0x1e, 0x7a, 0x46, 0x20, 0xa7, 0xac,
+
  0x1b, 0xa6, 0x73, 0x4f, 0x93, 0x9a, 0x51, 0x6e, 0x60, 0xa2, 0x68, 0x8f,
+
  0x31, 0xe6, 0x26, 0xd1, 0x24, 0x70, 0x8d, 0x58, 0x43, 0xb5, 0x00, 0x91,
+
  0x02, 0xfb, 0x38, 0x71, 0x60, 0x1f, 0xdb, 0xe1, 0x73, 0x17, 0x04, 0x52,
+
  0x7c, 0x49, 0xca, 0x1d, 0x19, 0xc3, 0x92, 0x11, 0xcb, 0x04, 0x8c, 0x8f,
+
  0xb4, 0x01, 0x17, 0xff, 0xbe, 0x9d, 0x08, 0xa0, 0xfc, 0x73, 0x9b, 0x56,
+
  0x9c, 0xc1, 0x36, 0xdb, 0xcd, 0x65, 0xf6, 0xf6, 0x9f, 0x3c, 0x09, 0x86,
+
  0x90, 0xb9, 0xbd, 0x13, 0xec, 0x30, 0x2e, 0x94, 0xd7, 0x53, 0x8c, 0x3d,
+
  0x48, 0x44, 0xfe, 0x95, 0xc6, 0x4e, 0xb1, 0x91, 0x77, 0x82, 0x4f, 0xf5,
+
  0xf3, 0x25, 0x88, 0x8b, 0xcf, 0x49, 0x43, 0x64, 0xc5, 0x80, 0xbc, 0x5f,
+
  0x28, 0x88, 0x61, 0x15, 0x3a, 0x64, 0x7b, 0x2a, 0xa8, 0x3e, 0xd2, 0xaa,
+
  0x8a, 0xe0, 0xb2, 0xa7, 0xda, 0x48, 0x80, 0x79, 0x7e, 0x5a, 0x8f, 0x09,
+
  0xb5, 0x91, 0x31, 0x1b, 0x88, 0xea, 0x3b, 0x3a, 0x08, 0x6c, 0x44, 0x5a,
+
  0x5b, 0x38, 0x4a, 0x4d, 0xbb, 0x4b, 0x3c, 0xa7, 0xd9, 0x87, 0x56, 0xb7,
+
  0x5a, 0x86, 0x47, 0xcc, 0x11, 0xa8, 0x3a, 0x3b, 0x27, 0x50, 0xc8, 0xd6,
+
  0x70, 0xd4, 0x30, 0xe4, 0x3c, 0xad, 0x7d, 0x70, 0x65, 0x07, 0x2a, 0x6f,
+
  0xc5, 0xe0, 0x81, 0xb3, 0x2a, 0xd0, 0xd0, 0x4f, 0xb9, 0x7c, 0x71, 0x92,
+
  0x4d, 0x95, 0x7d, 0x80, 0x49, 0x76, 0x85, 0x11, 0x99, 0x6f, 0xd9, 0x57,
+
  0xf1, 0x94, 0x9d, 0x02, 0xda, 0x11, 0x15, 0x1d, 0xac, 0xdf, 0x06, 0x3b,
+
  0xcf, 0x0b, 0x4d, 0xa6, 0x11, 0x37, 0x3f, 0xaf, 0xeb, 0x64, 0x7c, 0x61,
+
  0x15, 0x22, 0x42, 0x5f, 0x34, 0x0d, 0x90, 0x65, 0x7d, 0xc9, 0x87, 0xe9,
+
  0x95, 0x80, 0x13, 0x94, 0xba, 0x49, 0x88, 0x40, 0xfc, 0x22, 0x41, 0xbd,
+
  0xc4, 0xf9, 0x84, 0x56, 0xa2, 0x12, 0x8e, 0x8d, 0xdc, 0x0b, 0xae, 0xf6,
+
  0x44, 0x35, 0xde, 0xeb, 0xac, 0x93, 0xbf, 0xf7, 0x6e, 0xc5, 0x94, 0xf4,
+
  0x38, 0xe5, 0x25, 0xb6, 0x7d, 0x7f, 0x5d, 0x91, 0x9e, 0x98, 0x94, 0x8a,
+
  0x60, 0x83, 0xbc, 0x18, 0xdf, 0xd3, 0x76, 0xfd, 0x20, 0xca, 0x3a, 0x2f,
+
  0x52, 0x9e, 0x25, 0x75, 0x39, 0xe5, 0xa5, 0x7d, 0x4a, 0x69, 0x8c, 0x75,
+
  0xb9, 0xc4, 0xf6, 0x52, 0x1c, 0xc4, 0xa0, 0x47, 0xf9, 0x90, 0x0b, 0xc8,
+
  0x10, 0xfb, 0xcd, 0x37, 0xce, 0xd0, 0x85, 0x42, 0x7b, 0x46, 0x4b, 0x3c,
+
  0x4f, 0xe7, 0x05, 0x91, 0x28, 0x7a, 0xc4, 0x61, 0x62, 0x06, 0xf7, 0xc2,
+
  0xf7, 0x02, 0x49, 0x78, 0x80, 0xe2, 0x85, 0x55, 0xf6, 0x1b, 0xdb, 0x86,
+
  0x02, 0x81, 0xa6, 0x49, 0x3f, 0x14, 0xa1, 0x4b, 0x31, 0xb4, 0xfe, 0x0c,
+
  0x28, 0x8a, 0xeb, 0xad, 0x89, 0xde, 0x3c, 0x29, 0xe2, 0xe2, 0x46, 0xb2,
+
  0xbc, 0x44, 0x63, 0xb2, 0x4c, 0xcf, 0x97, 0x28, 0x83, 0x69, 0x9d, 0x36,
+
  0xc1, 0x96, 0xbc, 0xe0, 0xbd, 0x17, 0x89, 0x9a, 0x2d, 0xb4, 0x98, 0xda,
+
  0xc3, 0xda, 0x80, 0xbb, 0xb6, 0x38, 0xb9, 0x18, 0x56, 0xab, 0x5e, 0xe6,
+
  0x9c, 0xb2, 0x4c, 0x9d, 0x77, 0x97, 0xa3, 0x5f, 0x29, 0x97, 0xaa, 0x90,
+
  0x37, 0xe7, 0x88, 0x9c, 0xc5, 0x1a, 0x05, 0x65, 0xd6, 0x73, 0x2e, 0xa7,
+
  0x04, 0xd7, 0x80, 0xb0, 0x77, 0x5c, 0xf0, 0x5f, 0x2b, 0x07, 0xe0, 0x36,
+
  0x58, 0x28, 0x5c, 0xbe, 0x72, 0x12, 0xb8, 0xc9, 0x00, 0xa0, 0x45, 0xa1,
+
  0x29, 0xb4, 0x87, 0x7b, 0x9f, 0x17, 0x57, 0xb9, 0x1a, 0x24, 0x82, 0xbe,
+
  0xc3, 0x11, 0x00, 0xd2, 0x6a, 0xb1, 0x60, 0x13, 0x5f, 0x75, 0x22, 0x7d,
+
  0x5e, 0x28, 0x32, 0x0f, 0xef, 0x4d, 0x88, 0xa3, 0xb0, 0x5f, 0xd7, 0x21,
+
  0xf8, 0x5f, 0xb6, 0xed, 0x7f, 0x35, 0x01, 0x02, 0x64, 0x7d, 0x9d, 0x7a,
+
  0x1b, 0x57, 0x41, 0x63, 0x4d, 0xf1, 0x5c, 0x18, 0x5a, 0xd3, 0xf1, 0xd1,
+
  0x17, 0xa3, 0x6b, 0x03, 0x78, 0x27, 0xae, 0xfd, 0x86, 0x30, 0xcd, 0x00,
+
  0x4e, 0xb8, 0xed, 0x01, 0x50, 0x62, 0x62, 0x1b, 0x9e, 0x11, 0x0c, 0x5b,
+
  0x93, 0x00, 0x31, 0x0c, 0x84, 0x6c, 0x94, 0x32, 0x01, 0x7e, 0xf9, 0xeb,
+
  0xe2, 0xdc, 0x76, 0x76, 0x0e, 0x1c, 0x58, 0x6a, 0x0b, 0xed, 0x75, 0x0f,
+
  0x10, 0xf1, 0xfb, 0x7d, 0x24, 0xf3, 0xf9, 0xfa, 0xdb, 0xc6, 0x80, 0x01,
+
  0x11, 0xbc, 0x2d, 0x4d, 0x02, 0xc7, 0xe7, 0x59, 0xe7, 0x22, 0xf0, 0x2a,
+
  0x50, 0x92, 0xbe, 0x81, 0x20, 0xab, 0x2e, 0x8a, 0x54, 0x76, 0x2e, 0xa7,
+
  0x10, 0x85, 0xe5, 0x1b, 0x9a, 0xf8, 0x1c, 0x04, 0x63, 0xea, 0x9e, 0x32,
+
  0xc9, 0xf4, 0xff, 0x2c, 0x2e, 0x72, 0xfc, 0x03, 0x87, 0xc7, 0xd1, 0xbf,
+
  0xde, 0x0d, 0xd6, 0xf8, 0x6d, 0xaf, 0xde, 0x30, 0x9a, 0x2a, 0x0a, 0x21,
+
  0x81, 0x75, 0x72, 0x78, 0x5a, 0x23, 0x22, 0x33, 0x20, 0x50, 0xe9, 0x28,
+
  0xd0, 0x83, 0x90, 0xd8, 0x2b, 0xf5, 0x0b, 0x77, 0x6e, 0x66, 0xb0, 0x98,
+
  0x20, 0x33, 0xcc, 0x8c, 0x64, 0xa0, 0xd8, 0x76, 0xc0, 0x7a, 0xe9, 0x7e,
+
  0xf1, 0x1e, 0xe6, 0x5f, 0x5c, 0x7f, 0xfd, 0xf4, 0x62, 0x79, 0x4e, 0x9d,
+
  0x87, 0x31, 0x0d, 0xa3, 0x77, 0xab, 0xb7, 0xd6, 0xe0, 0x11, 0xbb, 0x33,
+
  0x6b, 0xa7, 0x80, 0x9f, 0x10, 0x1d, 0x1b, 0x8a, 0x43, 0x64, 0x4b, 0x44,
+
  0xba, 0x18, 0xe9, 0x06, 0xab, 0xc8, 0x7d, 0x5e, 0x34, 0xe9, 0x90, 0x64,
+
  0xdb, 0x7e, 0xac, 0x78, 0x83, 0xab, 0x74, 0xf4, 0xf5, 0xb7, 0x18, 0xff,
+
  0xfb, 0x30, 0xb8, 0xa8, 0xe7, 0x33, 0xd6, 0xb5, 0x71, 0xe1, 0xb6, 0xf1,
+
  0xcf, 0x5e, 0xb4, 0x42, 0xe7, 0x2b, 0xca, 0xee, 0x61, 0x1d, 0x30, 0x60,
+
  0x67, 0xc8, 0x69, 0x51, 0xac, 0x1c, 0x11, 0x57, 0x85, 0x96, 0x85, 0xd7,
+
  0xc5, 0xc1, 0xde, 0x61, 0x44, 0x1a, 0x5b, 0x3a, 0xc2, 0x24, 0x61, 0x25,
+
  0x0c, 0x9f, 0x85, 0x50, 0x83, 0x0f, 0x4a, 0xe7, 0x63, 0x0f, 0xa1, 0x4a,
+
  0x9a, 0xaf, 0xfb, 0x8a, 0x95, 0x9b, 0x55, 0x2b, 0x96, 0x46, 0xcd, 0x37,
+
  0xe9, 0x0e, 0xfa, 0x95, 0xb9, 0x1d, 0xff, 0x81, 0x53, 0x0c, 0x72, 0x7a,
+
  0xe5, 0xdb, 0x80, 0xb9, 0xaa, 0xb7, 0x6c, 0x53, 0x1e, 0xb2, 0xe6, 0xf0,
+
  0x45, 0x1b, 0x7d, 0xd6, 0xfe, 0xbf, 0xda, 0xa0, 0xd8, 0x89, 0xd6, 0xe1,
+
  0xfc, 0x7d, 0x59, 0x08, 0x6b, 0x8b, 0x26, 0x85, 0xa7, 0xce, 0x22, 0x60,
+
  0x0c, 0x5d, 0x51, 0xd1, 0xec, 0x6f, 0x9c, 0xf8, 0xcf, 0x3d, 0x9a, 0x7a,
+
  0x1f, 0xff, 0xfa, 0xb9, 0x67, 0x67, 0xff, 0x33, 0x6d, 0xce, 0x57, 0x59,
+
  0xfe, 0x15, 0xbe, 0xc1, 0xcf, 0xbd, 0xbb, 0xee, 0xb1, 0x98, 0xb7, 0xce,
+
  0x53, 0x9c, 0x87, 0x34, 0x9e, 0xd1, 0xdb, 0x88, 0xba, 0xf1, 0x5f, 0xdd,
+
  0xac, 0x5a, 0xc2, 0x09, 0x8d, 0x5a, 0xab, 0x06, 0x7c, 0xd9, 0x2e, 0x0c,
+
  0xac, 0x8b, 0x5d, 0x07, 0xb4, 0x11, 0xaf, 0x3d, 0x77, 0xb5, 0xbd, 0x00,
+
  0xd7, 0xd8, 0xb8, 0x1c, 0x48, 0xbb, 0xcb, 0x6c, 0xab, 0x5c, 0x22, 0x23,
+
  0x5d, 0x79, 0xb6, 0xe4, 0x27, 0xbe, 0xe0, 0x31, 0xb7, 0x7b, 0x82, 0xe6,
+
  0xcf, 0xf0, 0x04, 0x03, 0x5f, 0x41, 0xe4, 0x8a, 0xba, 0xab, 0x40, 0x5b,
+
  0x10, 0xaa, 0x59, 0xce, 0xc9, 0xd4, 0x62, 0x16, 0xe0, 0xbb, 0xa1, 0x03,
+
  0xbd, 0x23, 0x91, 0xb3, 0x4a, 0xe7, 0x19, 0x68, 0xf0, 0x14, 0x2a, 0x9e,
+
  0xb1, 0xa1, 0xbc, 0x8d, 0xec, 0x9f, 0x90, 0x99, 0xaa, 0x45, 0x82, 0x91,
+
  0x20, 0x74, 0x6f, 0x89, 0x0d, 0xcd, 0xaf, 0xc9, 0x0b, 0xb3, 0x82, 0x86,
+
  0x37, 0x70, 0xc8, 0xb2, 0xfa, 0xba, 0x07, 0xca, 0xcf, 0x57, 0x18, 0xff,
+
  0x4b, 0xf3, 0xaf, 0x80, 0x90, 0x96, 0xb0, 0x55, 0xf6, 0x54, 0x7e, 0x88,
+
  0xe7, 0xd7, 0x30, 0xf1, 0x8d, 0x5b, 0x9e, 0xcc, 0xc9, 0x24, 0xd2, 0xb4,
+
  0xd8, 0x76, 0xbd, 0x0c, 0x9f, 0x4a, 0xe7, 0xc4, 0xc9, 0xf7, 0x5f, 0xf7,
+
  0x3d, 0xdc, 0xe9, 0xf7, 0x9e, 0x5d, 0xea, 0xb2, 0x55, 0xb2, 0xbf, 0xbe,
+
  0x3e, 0xf9, 0xd3, 0x57, 0x3a, 0xc0, 0xcf, 0xbd, 0x9f, 0x62, 0xfe, 0x94,
+
  0x00, 0xf3, 0x0f, 0xa2, 0x93, 0x3f, 0xad, 0x4f, 0xb9, 0xab, 0x1e, 0xf0,
+
  0x2d, 0xff, 0x42, 0x64, 0xbc, 0x6a, 0x58, 0x34, 0x01, 0xf4, 0x9e, 0xe8,
+
  0x7d, 0x7a, 0x4d, 0xa8, 0x98, 0x64, 0xf8, 0x2f, 0x16, 0x08, 0x22, 0xaa,
+
  0x10, 0xf1, 0x35, 0x43, 0xc4, 0x93, 0x61, 0x90, 0x8c, 0x0a, 0x06, 0xeb,
+
  0xaa, 0xbd, 0x74, 0x70, 0xf8, 0x0a, 0x3b, 0x66, 0xfd, 0x5d, 0x88, 0x89,
+
  0x8b, 0xe7, 0x06, 0x92, 0xa8, 0xd3, 0x2c, 0x2b, 0x4a, 0x26, 0x4d, 0x13,
+
  0xe6, 0x18, 0xd3, 0x16, 0x83, 0x78, 0xde, 0x6a, 0xf9, 0x57, 0xac, 0x6c,
+
  0x51, 0x13, 0x3f, 0xb4, 0x9b, 0x36, 0x7e, 0xb7, 0x41, 0x63, 0xa1, 0x77,
+
  0x80, 0xe4, 0x1f, 0x65, 0x1b, 0x70, 0x3d, 0xc7, 0x57, 0xa1, 0xa8, 0xbf,
+
  0xa4, 0xcc, 0x89, 0xb3, 0x61, 0x5a, 0xcc, 0x26, 0x92, 0x9a, 0x01, 0x54,
+
  0xce, 0x1b, 0xac, 0x26, 0x10, 0xea, 0x11, 0xb8, 0x14, 0x92, 0xae, 0x21,
+
  0x8f, 0x0d, 0x22, 0x5d, 0x53, 0x8a, 0x1b, 0x7b, 0xad, 0x6d, 0xbe, 0x72,
+
  0x12, 0x31, 0x91, 0x7f, 0x85, 0x96, 0xfc, 0x28, 0x25, 0x7f, 0x97, 0x41,
+
  0x31, 0x8f, 0x25, 0xe8, 0x14, 0x70, 0x1a, 0x45, 0xe6, 0x8c, 0xe8, 0x21,
+
  0xe1, 0xb2, 0x27, 0x85, 0x32, 0xc7, 0x78, 0xc6, 0x73, 0xd4, 0xf3, 0x04,
+
  0x52, 0x4d, 0xeb, 0xd1, 0x50, 0x72, 0x84, 0x5f, 0xd6, 0x64, 0x5b, 0xe3,
+
  0x0a, 0xf9, 0x27, 0x2b, 0xfa, 0x9d, 0x04, 0xa9, 0x9c, 0xa4, 0x6c, 0x7a,
+
  0x7b, 0xd9, 0xac, 0x81, 0x77, 0xc3, 0x4f, 0x52, 0xcd, 0x13, 0xef, 0x1e,
+
  0x18, 0xeb, 0x3c, 0x91, 0xcb, 0xc3, 0xc3, 0xbb, 0xed, 0xa6, 0x34, 0x6b,
+
  0xb1, 0x92, 0xe5, 0x5f, 0x31, 0xfe, 0x9e, 0x19, 0xdf, 0x87, 0x3c, 0x4e,
+
  0x72, 0xce, 0xbf, 0x0b, 0x3f, 0xf6, 0xcc, 0x56, 0x88, 0x6b, 0xb0, 0xc1,
+
  0xba, 0x77, 0x5d, 0xc7, 0x80, 0x66, 0xdd, 0x71, 0xf7, 0x27, 0xb6, 0x77,
+
  0xd3, 0x0f, 0x01, 0x93, 0x7e, 0xc2, 0x59, 0xe4, 0xfc, 0x1e, 0x1e, 0xe6,
+
  0x78, 0x2c, 0x8a, 0xb5, 0x10, 0x56, 0x01, 0x67, 0x11, 0xf8, 0xfb, 0x01,
+
  0x27, 0x62, 0x51, 0xbf, 0x1a, 0x6a, 0x57, 0x93, 0xb9, 0xc8, 0x66, 0xc6,
+
  0x35, 0x18, 0xee, 0x64, 0xae, 0x78, 0x19, 0x5e, 0x94, 0x17, 0x19, 0x2f,
+
  0xf7, 0xae, 0x23, 0xc3, 0x43, 0x4e, 0xc2, 0xe6, 0x86, 0xb8, 0x4a, 0xf0,
+
  0x41, 0x09, 0x47, 0x40, 0xa5, 0x1d, 0x41, 0x42, 0xdd, 0x79, 0xc4, 0x41,
+
  0x13, 0x07, 0x54, 0x8a, 0x03, 0x42, 0xd0, 0x36, 0x67, 0x82, 0x5b, 0x92,
+
  0x51, 0x9d, 0x99, 0x1a, 0xc3, 0xdc, 0xde, 0xb1, 0xd1, 0x86, 0xcc, 0xb7,
+
  0x7c, 0x9d, 0x25, 0x96, 0xc1, 0xd8, 0xe0, 0xa4, 0x04, 0x68, 0x39, 0x14,
+
  0x1b, 0x5f, 0x6f, 0x6d, 0x74, 0xb7, 0x58, 0x37, 0xaa, 0x73, 0xb3, 0x43,
+
  0x99, 0x3a, 0xff, 0x2a, 0x6a, 0xbb, 0x02, 0x43, 0x93, 0xb3, 0x68, 0x8e,
+
  0xd9, 0xb8, 0x29, 0x6d, 0x26, 0xd5, 0x04, 0x56, 0x75, 0x08, 0xbd, 0x91,
+
  0x1b, 0xa2, 0x64, 0x39, 0x9d, 0x4c, 0xee, 0x28, 0xc5, 0xe4, 0xed, 0xa6,
+
  0x39, 0x70, 0x53, 0xec, 0xea, 0xc0, 0x55, 0xb3, 0x7d, 0xc7, 0x3f, 0x46,
+
  0x87, 0x09, 0x17, 0x5f, 0x1c, 0x1c, 0x8e, 0x8b, 0x62, 0x95, 0x4e, 0xbd,
+
  0xf1, 0xf5, 0x26, 0xcb, 0x26, 0xeb, 0x20, 0x73, 0x9e, 0xbd, 0x11, 0xfd,
+
  0x1c, 0xc4, 0xf3, 0xa6, 0x1b, 0x9d, 0xe9, 0x08, 0xbd, 0xae, 0xbc, 0x3c,
+
  0x7a, 0x8a, 0x71, 0xc0, 0x6f, 0x28, 0x8a, 0x2d, 0xd7, 0x3f, 0xdd, 0xa6,
+
  0x8f, 0x5a, 0x5a, 0xf0, 0xca, 0x51, 0xb6, 0xd8, 0xd7, 0xff, 0xf5, 0xb7,
+
  0x78, 0xb9, 0x1a, 0x01, 0x1b, 0xd1, 0x60, 0x00, 0xac, 0xa7, 0x9a, 0xb7,
+
  0x51, 0x01, 0x3d, 0xf4, 0x45, 0xd2, 0x0d, 0x48, 0xb0, 0xa2, 0x1a, 0x22,
+
  0x2d, 0x91, 0xc8, 0x49, 0xa3, 0x06, 0x33, 0xfb, 0x13, 0xf9, 0xab, 0xf2,
+
  0xeb, 0x41, 0x74, 0x68, 0x4a, 0x87, 0x7c, 0x14, 0x5e, 0x0e, 0x9c, 0xb0,
+
  0xc4, 0x10, 0x5f, 0x1c, 0x52, 0xc2, 0x93, 0x51, 0x26, 0xfe, 0x7c, 0xee,
+
  0xe6, 0x40, 0xc9, 0xf6, 0xe9, 0xac, 0x92, 0x66, 0x26, 0x20, 0xd2, 0xc3,
+
  0x7d, 0x32, 0xa9, 0x4e, 0x05, 0x83, 0xce, 0xf4, 0xbd, 0xb1, 0x49, 0x64,
+
  0x66, 0xf1, 0xb1, 0x04, 0x6a, 0x4c, 0xb6, 0xfe, 0x63, 0x7c, 0x8e, 0x69,
+
  0x53, 0xe6, 0x25, 0xb0, 0x4a, 0x83, 0xf0, 0xe8, 0x49, 0x8c, 0xd7, 0x59,
+
  0x5f, 0xbf, 0x52, 0x7b, 0x33, 0x79, 0xb5, 0x2f, 0x6a, 0x5f, 0x4c, 0x45,
+
  0x5b, 0x01, 0x00, 0x44, 0xe2, 0xff, 0xa3, 0xa4, 0x4a, 0x1f, 0x3d, 0xd0,
+
  0x87, 0xf2, 0x2a, 0x55, 0xaa, 0x73, 0x35, 0xfc, 0xa9, 0xa6, 0xcf, 0x82,
+
  0xbe, 0x50, 0x5b, 0x03, 0x23, 0x5c, 0x71, 0x54, 0xbf, 0xc0, 0x6e, 0xaa,
+
  0x19, 0x4a, 0x03, 0x65, 0x28, 0xa8, 0x8a, 0xe7, 0x35, 0x21, 0x5a, 0x3e,
+
  0x7e, 0xe4, 0x4c, 0xfa, 0x06, 0xcf, 0x43, 0x8b, 0x7f, 0xca, 0x1b, 0xb6,
+
  0xdf, 0x28, 0x62, 0x6a, 0x45, 0xf2, 0xf3, 0xd2, 0x0a, 0xd0, 0x6d, 0xc1,
+
  0x8d, 0x0d, 0xe5, 0x1d, 0x8d, 0xa3, 0xf0, 0xa6, 0x03, 0xe4, 0x9e, 0x80,
+
  0xaf, 0x94, 0x70, 0xda, 0x8f, 0x5e, 0x49, 0xd4, 0x8e, 0xd5, 0xa3, 0xf7,
+
  0xf3, 0x24, 0x98, 0xb0, 0x6f, 0xa6, 0x6b, 0x8c, 0x07, 0x4c, 0x97, 0x25,
+
  0xc9, 0x1c, 0xb9, 0x8c, 0x55, 0x03, 0xc5, 0x85, 0x14, 0x4d, 0xfc, 0xd5,
+
  0xe1, 0xeb, 0xb7, 0x87, 0x7e, 0x09, 0xa7, 0x13, 0x31, 0xf8, 0xb4, 0x91,
+
  0x8e, 0x66, 0xfb, 0x0a, 0xf9, 0xc8, 0xc6, 0xed, 0x50, 0x44, 0xf4, 0xd6,
+
  0xcd, 0x4d, 0x32, 0xed, 0x3a, 0xfa, 0xad, 0x70, 0x8a, 0xe4, 0x0b, 0xda,
+
  0xd0, 0xa1, 0x49, 0x64, 0x08, 0xd5, 0x30, 0xae, 0xc8, 0x65, 0x6a, 0xb5,
+
  0xe7, 0x6a, 0xb4, 0xa2, 0xa0, 0xee, 0x13, 0x5e, 0xec, 0xa8, 0xa3, 0x17,
+
  0x05, 0x22, 0x8e, 0xe2, 0x21, 0xc1, 0x54, 0xdf, 0x70, 0x1b, 0x2f, 0x2e,
+
  0x99, 0x97, 0xc4, 0x21, 0xa7, 0xd8, 0x3c, 0xa9, 0xde, 0xb3, 0xff, 0xa4,
+
  0xa7, 0xf7, 0x73, 0xac, 0x88, 0x11, 0x7e, 0x0c, 0xe8, 0x7d, 0xe8, 0xc8,
+
  0x1a, 0x30, 0x79, 0x53, 0xd2, 0xa0, 0x41, 0x5c, 0x91, 0xc9, 0x0d, 0xaf,
+
  0x60, 0x31, 0x75, 0x90, 0x2e, 0xda, 0xc0, 0x35, 0x47, 0x47, 0xdd, 0x30,
+
  0xde, 0x1c, 0x2d, 0x76, 0x5e, 0xf0, 0x33, 0x46, 0x8b, 0x9d, 0x59, 0xf4,
+
  0xe6, 0xe5, 0xa0, 0x2c, 0x46, 0x45, 0xdd, 0x5b, 0x0b, 0x33, 0xd6, 0x40,
+
  0xe8, 0x7b, 0xdb, 0x67, 0x85, 0x63, 0x5c, 0x17, 0xdc, 0x81, 0xe0, 0xa9,
+
  0xac, 0x49, 0x78, 0x37, 0xa9, 0xe4, 0xcd, 0xed, 0xc0, 0xa0, 0xf6, 0x01,
+
  0xae, 0xc2, 0xdb, 0xe1, 0xf1, 0x1b, 0xda, 0xa6, 0xd3, 0xc3, 0xe1, 0xd0,
+
  0x20, 0xdb, 0x4b, 0xa6, 0xb8, 0x67, 0xb3, 0x52, 0x88, 0x16, 0x95, 0x40,
+
  0xdd, 0x04, 0x5b, 0x63, 0xc0, 0x15, 0x0f, 0x1c, 0x0a, 0x83, 0x53, 0x71,
+
  0xb6, 0x9c, 0x03, 0xd3, 0x01, 0x5b, 0x61, 0x82, 0xa9, 0x28, 0xc3, 0x10,
+
  0x78, 0x0d, 0xc9, 0x15, 0xc6, 0x7d, 0xd3, 0x6e, 0xd8, 0x8c, 0x06, 0xf2,
+
  0x3d, 0x62, 0xa6, 0x98, 0xd2, 0x15, 0x49, 0x90, 0x71, 0x00, 0x40, 0xfa,
+
  0x41, 0x9f, 0x58, 0x6f, 0xf8, 0xe2, 0xec, 0x38, 0x3a, 0x7c, 0x7b, 0xf6,
+
  0xbc, 0xc7, 0x9b, 0xd7, 0xee, 0x9d, 0x42, 0x21, 0x0c, 0x38, 0x99, 0xa9,
+
  0xd4, 0x28, 0x1a, 0x60, 0xd4, 0x60, 0xa6, 0x19, 0x89, 0x0f, 0xfb, 0xcc,
+
  0x15, 0xe4, 0x16, 0xd8, 0x90, 0x5b, 0x90, 0x9e, 0xb7, 0xb6, 0xf5, 0x3d,
+
  0xd4, 0xb0, 0x74, 0xcd, 0xa7, 0xf7, 0xf6, 0xe1, 0x7e, 0x19, 0x20, 0xc0,
+
  0x15, 0x99, 0x25, 0x2e, 0x0d, 0x13, 0xd7, 0xe9, 0xa4, 0x48, 0xae, 0xa0,
+
  0x8b, 0x27, 0xa0, 0xb6, 0x07, 0xe8, 0x0f, 0x06, 0x65, 0x2a, 0x64, 0x3a,
+
  0x11, 0xae, 0x82, 0x21, 0x4d, 0xfc, 0xf9, 0xf6, 0xcd, 0xcb, 0x6d, 0x03,
+
  0x1a, 0x11, 0x51, 0x8c, 0x35, 0xe1, 0x22, 0xfe, 0x40, 0x3b, 0x57, 0xdb,
+
  0xdc, 0xd6, 0x64, 0x19, 0xa5, 0x1f, 0xa8, 0xb2, 0x3b, 0x6f, 0xd4, 0xf8,
+
  0x71, 0xa0, 0x1e, 0x26, 0x9d, 0x94, 0x13, 0x83, 0x63, 0xed, 0x9b, 0x11,
+
  0x5a, 0x16, 0x83, 0xd5, 0xab, 0x94, 0x19, 0x7a, 0xab, 0x22, 0x0c, 0x5b,
+
  0xfb, 0x12, 0x06, 0xf5, 0xa0, 0x00, 0x0a, 0x7a, 0x6c, 0x32, 0x2c, 0xf9,
+
  0x2d, 0x80, 0xdc, 0x6e, 0x48, 0x4a, 0x6a, 0xae, 0xe0, 0x3d, 0xe3, 0x5f,
+
  0xb5, 0x46, 0xbf, 0x0b, 0x3d, 0xb9, 0x93, 0xd3, 0x6a, 0x28, 0x9f, 0x93,
+
  0x95, 0xe9, 0x1c, 0xf4, 0x0d, 0xf2, 0xe0, 0x6d, 0xe3, 0x25, 0xab, 0x8a,
+
  0xa3, 0x42, 0xf3, 0xe1, 0x67, 0x49, 0x92, 0xe6, 0x53, 0xfe, 0xd9, 0xc1,
+
  0xce, 0x8e, 0x18, 0xbb, 0x87, 0x3d, 0xe7, 0x72, 0x07, 0xd7, 0xdc, 0x31,
+
  0xd4, 0x1d, 0x15, 0x13, 0x53, 0xb8, 0x92, 0x22, 0xfe, 0x34, 0x61, 0xac,
+
  0xd9, 0x6b, 0x87, 0x0f, 0x61, 0xb4, 0xcd, 0xe1, 0x96, 0x09, 0x30, 0x9c,
+
  0x51, 0x04, 0x9d, 0x46, 0x0b, 0x80, 0x31, 0x3a, 0xdd, 0x8d, 0xc5, 0xf4,
+
  0x0a, 0x99, 0x53, 0xce, 0xd9, 0xf3, 0x7d, 0x09, 0xb4, 0xb3, 0xe3, 0xab,
+
  0x49, 0x47, 0xbf, 0x58, 0x8a, 0x06, 0x10, 0x89, 0x93, 0x77, 0x84, 0x2b,
+
  0xbc, 0x8f, 0x7e, 0x7c, 0x66, 0x41, 0x55, 0x4c, 0xb1, 0x06, 0x9f, 0x10,
+
  0x31, 0xd7, 0xba, 0x3a, 0xb2, 0xa6, 0xb6, 0x16, 0x6b, 0x40, 0x39, 0x04,
+
  0x93, 0x34, 0x5d, 0x44, 0x17, 0x19, 0x0c, 0x56, 0x8e, 0x2f, 0x32, 0x82,
+
  0xe8, 0x44, 0x95, 0x83, 0x92, 0x06, 0xe6, 0x94, 0xf3, 0x12, 0x00, 0x04,
+
  0x34, 0x81, 0x6c, 0x4c, 0xae, 0x8b, 0x0c, 0x82, 0xf4, 0x45, 0x71, 0x45,
+
  0x09, 0x0b, 0xbb, 0x8f, 0xf7, 0x9f, 0x80, 0xea, 0x7a, 0x8d, 0x8d, 0x6b,
+
  0x9d, 0xd5, 0x9a, 0x14, 0x5a, 0x12, 0xd4, 0xd1, 0xdc, 0xa9, 0x6a, 0xe0,
+
  0x58, 0x49, 0xd3, 0x8f, 0xa8, 0x42, 0xdb, 0x9a, 0x3c, 0xb4, 0x82, 0x3d,
+
  0xef, 0x77, 0xa7, 0x82, 0xf5, 0x93, 0xb5, 0x12, 0x6e, 0x40, 0x4b, 0xc4,
+
  0x19, 0xd8, 0x6e, 0x6f, 0x37, 0x30, 0x7c, 0xa2, 0xe1, 0x8b, 0xff, 0x3a,
+
  0xee, 0x47, 0xd1, 0x9b, 0xe3, 0xb3, 0x37, 0xf0, 0x63, 0x78, 0x76, 0xf2,
+
  0xa6, 0xa3, 0x31, 0x72, 0xcd, 0xcd, 0x64, 0x70, 0xbd, 0x34, 0xd7, 0x91,
+
  0x79, 0x50, 0xa3, 0xdf, 0x1c, 0xd5, 0xac, 0xb2, 0x48, 0xa1, 0xa4, 0xdc,
+
  0x1b, 0xd6, 0xea, 0xcc, 0xc9, 0xcc, 0xc0, 0x14, 0xbd, 0x95, 0x2f, 0xc6,
+
  0xdb, 0xbd, 0x9a, 0x38, 0xe8, 0x85, 0x91, 0x0e, 0xf1, 0x8d, 0x8d, 0x00,
+
  0xa7, 0xd9, 0xd6, 0x40, 0xb1, 0x20, 0x40, 0x94, 0xe7, 0x5c, 0x9b, 0xca,
+
  0xfa, 0x8e, 0x66, 0xc2, 0x5c, 0xb4, 0x57, 0x99, 0xf2, 0x31, 0xcd, 0x4f,
+
  0xe8, 0x69, 0xab, 0x86, 0x5e, 0xb4, 0x49, 0x21, 0x13, 0x51, 0xdb, 0x6f,
+
  0x20, 0x5d, 0x30, 0x15, 0xb6, 0xec, 0x0b, 0x57, 0xc5, 0x3c, 0xe5, 0xa8,
+
  0x16, 0x97, 0xed, 0x29, 0x2b, 0x66, 0xb5, 0x81, 0xdb, 0xc2, 0x47, 0xa1,
+
  0xae, 0x2d, 0x1a, 0xdc, 0xa2, 0x5d, 0xde, 0x68, 0x14, 0x42, 0x98, 0x37,
+
  0x5d, 0xa4, 0x39, 0x1c, 0x32, 0xea, 0xd9, 0xb9, 0xa1, 0xb3, 0xda, 0xe8,
+
  0x28, 0xf2, 0x77, 0x38, 0xca, 0xa7, 0x6f, 0xc6, 0x55, 0xad, 0xe2, 0xa1,
+
  0x32, 0x0b, 0x9d, 0x70, 0x80, 0x7f, 0xc2, 0xd6, 0xed, 0xe2, 0x3f, 0x7b,
+
  0xcc, 0x3d, 0x6f, 0x1c, 0x8a, 0x4f, 0xc2, 0xc7, 0x8f, 0x63, 0x08, 0xef,
+
  0xe6, 0xb1, 0x3a, 0x39, 0xfa, 0x0c, 0x35, 0x03, 0x84, 0x58, 0x89, 0xd1,
+
  0x09, 0xd0, 0xe6, 0xe9, 0xd8, 0xae, 0x25, 0xc8, 0xc8, 0x31, 0x49, 0xaf,
+
  0xd1, 0x24, 0x46, 0xb3, 0x0b, 0xb9, 0xf5, 0xa1, 0x28, 0x94, 0x98, 0x82,
+
  0x75, 0xaa, 0x2d, 0x46, 0x24, 0xdf, 0xc6, 0xe3, 0xbc, 0xc4, 0x75, 0x91,
+
  0x7d, 0x2a, 0x43, 0x91, 0x73, 0xd6, 0x17, 0x28, 0xc4, 0x96, 0x5c, 0x6f,
+
  0x35, 0xfd, 0x68, 0x47, 0x12, 0x80, 0x38, 0x4a, 0xec, 0xe1, 0x98, 0x50,
+
  0x41, 0x42, 0x56, 0x20, 0xf0, 0x63, 0xa3, 0x61, 0x83, 0x62, 0x25, 0xb5,
+
  0x97, 0xe4, 0x4d, 0x4a, 0x95, 0xd2, 0x64, 0xfa, 0x45, 0x69, 0x4e, 0x89,
+
  0x50, 0x13, 0xf3, 0x8e, 0xd8, 0x82, 0x0e, 0x73, 0xa2, 0x59, 0x87, 0x99,
+
  0x14, 0x24, 0xb3, 0x71, 0x7e, 0xd4, 0x1c, 0x15, 0xe3, 0x4a, 0x81, 0xd2,
+
  0x00, 0xa3, 0x77, 0xc8, 0x70, 0x8d, 0xf6, 0x91, 0xad, 0x59, 0x91, 0xf0,
+
  0xf7, 0x95, 0x0d, 0x77, 0x89, 0x25, 0x45, 0x8c, 0x4a, 0xa3, 0x0c, 0xaf,
+
  0xac, 0xb9, 0x57, 0x48, 0xb3, 0xe7, 0x8b, 0x34, 0x69, 0x09, 0x55, 0xd9,
+
  0xe6, 0xd2, 0x90, 0x65, 0x99, 0xcf, 0xb0, 0xba, 0xb6, 0xd5, 0x19, 0x43,
+
  0xb2, 0x72, 0x56, 0x43, 0x4c, 0x2a, 0x61, 0x44, 0xf7, 0x5f, 0x34, 0xd8,
+
  0xd5, 0x21, 0xe8, 0x16, 0xaa, 0x0e, 0xcd, 0xe8, 0xce, 0x6d, 0x79, 0x8c,
+
  0x5a, 0xd6, 0xda, 0x96, 0x4e, 0x50, 0xea, 0xef, 0xb9, 0xfe, 0x0f, 0x69,
+
  0x26, 0x6d, 0x0a, 0xc4, 0x2c, 0xcf, 0xb0, 0x91, 0x59, 0x51, 0x6e, 0xe3,
+
  0xb1, 0xc2, 0x7e, 0xbd, 0x51, 0x04, 0x2a, 0x0f, 0x72, 0xec, 0x2b, 0x35,
+
  0xb7, 0xda, 0x0b, 0x62, 0xcc, 0x2f, 0xae, 0x15, 0x82, 0xc1, 0x07, 0x01,
+
  0x1c, 0x1d, 0x7a, 0x5b, 0xd4, 0x90, 0x9c, 0x76, 0x2d, 0x83, 0x50, 0x99,
+
  0x1a, 0xed, 0x33, 0xf7, 0x9e, 0x68, 0xda, 0x50, 0x72, 0x30, 0x29, 0x54,
+
  0x6a, 0xfc, 0x6c, 0x64, 0xa3, 0x51, 0xc9, 0x75, 0x07, 0x82, 0x9e, 0xac,
+
  0x01, 0x37, 0xc5, 0x83, 0x55, 0x91, 0x04, 0xb7, 0x26, 0x03, 0x20, 0x27,
+
  0x43, 0xf3, 0x69, 0xc0, 0x92, 0x97, 0x0b, 0x5f, 0x77, 0x7b, 0x71, 0x6a,
+
  0x87, 0x14, 0x2f, 0x43, 0xc1, 0xa9, 0xe9, 0x48, 0x13, 0xce, 0x2c, 0xb1,
+
  0xf3, 0x82, 0xd9, 0x00, 0xab, 0xa1, 0x78, 0xb0, 0x3a, 0xa8, 0xdd, 0x79,
+
  0x1a, 0x5b, 0x17, 0xd2, 0xbe, 0xea, 0x0d, 0x83, 0xf3, 0x41, 0xd4, 0x43,
+
  0xb4, 0xff, 0x1e, 0x4d, 0x55, 0x70, 0xc8, 0x38, 0x53, 0xc8, 0xdc, 0x0b,
+
  0xab, 0xd2, 0x98, 0xad, 0xdf, 0x18, 0x5b, 0xa5, 0x0c, 0x37, 0xd8, 0xa1,
+
  0xdd, 0xd9, 0x7c, 0x9b, 0x67, 0x1f, 0xc8, 0xa7, 0xea, 0x63, 0x3f, 0x1a,
+
  0x20, 0xe5, 0x55, 0xb3, 0x52, 0xc0, 0x62, 0x84, 0x82, 0x6f, 0xcc, 0x8e,
+
  0x62, 0x2e, 0xd8, 0x39, 0xd7, 0x1d, 0x28, 0x80, 0x3f, 0x1a, 0x72, 0xe7,
+
  0x34, 0x9e, 0x30, 0xbf, 0x1e, 0xe0, 0x75, 0x83, 0x49, 0x31, 0x87, 0x13,
+
  0xe8, 0x3d, 0x63, 0x4e, 0x18, 0x2f, 0x9e, 0xd4, 0x88, 0x6d, 0x62, 0xa4,
+
  0xea, 0xbc, 0x8b, 0x0c, 0x09, 0x49, 0x8b, 0x21, 0xed, 0xac, 0x04, 0x41,
+
  0x0e, 0x1b, 0x99, 0x63, 0x34, 0x94, 0x7a, 0x7a, 0x77, 0x68, 0x20, 0x2a,
+
  0x39, 0x04, 0xd6, 0xd3, 0x11, 0x1e, 0x5f, 0x74, 0xd8, 0x4a, 0x0e, 0x58,
+
  0x23, 0x35, 0x87, 0x6b, 0xf7, 0x17, 0x6b, 0x5c, 0xe8, 0xb4, 0xe2, 0x0b,
+
  0xd4, 0x49, 0xb3, 0x02, 0x45, 0xcd, 0xd3, 0x0c, 0xf7, 0x74, 0x72, 0x22,
+
  0x69, 0xf8, 0x91, 0xb6, 0xa2, 0x6a, 0x77, 0x83, 0x6b, 0xf1, 0x28, 0xe9,
+
  0xd9, 0x26, 0xa2, 0x02, 0x6f, 0xfd, 0xe3, 0x1f, 0x07, 0x2b, 0x93, 0x89,
+
  0x04, 0x2a, 0xb1, 0x77, 0xf0, 0x37, 0x8a, 0x67, 0xfd, 0x12, 0xff, 0x0d,
+
  0xfe, 0xfc, 0xa5, 0x67, 0x20, 0x2d, 0xb9, 0xbd, 0x1f, 0x4e, 0x84, 0xff,
+
  0x4e, 0x26, 0x6d, 0xc6, 0x41, 0x8b, 0xdd, 0x17, 0x98, 0x45, 0x93, 0xf0,
+
  0x49, 0x1a, 0xdc, 0xd9, 0xd1, 0x29, 0x1f, 0xac, 0x92, 0xd3, 0x71, 0x88,
+
  0x38, 0x91, 0xad, 0x90, 0xe5, 0x85, 0xa2, 0x24, 0xd0, 0xe6, 0x5d, 0x88,
+
  0x20, 0x71, 0xee, 0xec, 0xdb, 0x9c, 0xab, 0x2b, 0x3e, 0xd7, 0x09, 0x58,
+
  0x22, 0xe7, 0xe8, 0x2d, 0x66, 0xe0, 0xf0, 0x41, 0x74, 0xa8, 0x4a, 0x70,
+
  0x9b, 0xad, 0xd1, 0xf7, 0x11, 0xf5, 0x0e, 0xac, 0x30, 0xc6, 0x78, 0x05,
+
  0x53, 0xec, 0x4b, 0x33, 0x7b, 0xae, 0xae, 0x57, 0xa4, 0xc1, 0x2c, 0x47,
+
  0xd3, 0x52, 0x79, 0x69, 0x99, 0x55, 0xef, 0x7d, 0xa3, 0x5f, 0x50, 0x1c,
+
  0x9c, 0xcc, 0x46, 0x9a, 0xa5, 0x76, 0x28, 0x74, 0xa1, 0xda, 0x82, 0x2e,
+
  0x9f, 0x26, 0x6b, 0x5f, 0x0f, 0xa5, 0xed, 0x1e, 0xb5, 0xca, 0x53, 0x38,
+
  0x48, 0x24, 0xa8, 0x6e, 0x6c, 0xb4, 0x7c, 0xca, 0xed, 0x48, 0x6e, 0x7b,
+
  0xb1, 0x0b, 0x74, 0xee, 0xdd, 0xb3, 0xda, 0x5b, 0x44, 0xd2, 0x53, 0xf0,
+
  0x72, 0x83, 0x3d, 0xf2, 0xe4, 0xb2, 0x32, 0x0d, 0x37, 0xe2, 0x74, 0xfb,
+
  0xda, 0x68, 0x5b, 0x9b, 0x24, 0x3a, 0x05, 0xf3, 0xcd, 0x1c, 0x2b, 0xa7,
+
  0x1f, 0x1c, 0x43, 0xf1, 0xa1, 0xca, 0xb2, 0xd5, 0x3e, 0x45, 0x47, 0x69,
+
  0x49, 0x61, 0x7a, 0xeb, 0xbe, 0x26, 0xc8, 0xb5, 0x0c, 0x2b, 0xd2, 0x26,
+
  0x25, 0xcc, 0x01, 0x5b, 0xae, 0x4b, 0x77, 0x00, 0xed, 0x0f, 0x82, 0xe9,
+
  0x3b, 0x6a, 0xa8, 0x78, 0x51, 0x31, 0x7e, 0x38, 0x71, 0x19, 0xc7, 0xc6,
+
  0x22, 0x54, 0x41, 0x0e, 0xbf, 0x31, 0x55, 0xe2, 0x4f, 0x12, 0x56, 0x08,
+
  0xba, 0x70, 0x95, 0xa3, 0x07, 0xbe, 0xf2, 0x0d, 0x74, 0x9a, 0x3c, 0x89,
+
  0xdd, 0x9b, 0xdc, 0x42, 0xb8, 0x52, 0x9f, 0xa2, 0x88, 0x53, 0x86, 0xbe,
+
  0x93, 0x86, 0x84, 0x53, 0x5a, 0x47, 0x43, 0x6a, 0x69, 0xa8, 0x1c, 0x11,
+
  0xf1, 0x54, 0x34, 0xfe, 0xac, 0x7a, 0x9f, 0xf1, 0x17, 0x71, 0xb6, 0xb8,
+
  0xb9, 0x71, 0x21, 0x1e, 0x57, 0xc6, 0x8d, 0x6b, 0x09, 0x0d, 0xa3, 0x3e,
+
  0x54, 0xcb, 0xf3, 0x73, 0xea, 0xc5, 0xe1, 0x67, 0x8e, 0xd7, 0x95, 0x83,
+
  0x30, 0x85, 0xea, 0x02, 0x16, 0x71, 0x55, 0xbc, 0x37, 0x8d, 0xae, 0x87,
+
  0xf4, 0x34, 0x11, 0x27, 0x95, 0xb1, 0x4e, 0x7c, 0x34, 0x69, 0x63, 0xab,
+
  0xbc, 0x10, 0xce, 0x6f, 0xd5, 0xeb, 0x32, 0x8d, 0x75, 0x9e, 0x6d, 0x09,
+
  0x87, 0xe1, 0xd3, 0xc4, 0xab, 0xd0, 0x30, 0xd2, 0xae, 0x5a, 0x21, 0xd8,
+
  0x7c, 0x18, 0x54, 0xe2, 0x68, 0xf4, 0xd8, 0xc7, 0x83, 0xc7, 0x0f, 0x06,
+
  0x3b, 0x0d, 0x8b, 0x07, 0x7e, 0xe3, 0x12, 0x0e, 0x4e, 0xab, 0x63, 0x3d,
+
  0xb3, 0xa3, 0xd6, 0x43, 0x6e, 0x51, 0x52, 0x63, 0xcc, 0xd6, 0x6c, 0x2a,
+
  0x4d, 0x66, 0xb9, 0x4b, 0x68, 0x69, 0xfa, 0x0d, 0xba, 0xed, 0x2a, 0xda,
+
  0x6a, 0xd5, 0x94, 0x56, 0xf4, 0x46, 0x42, 0x77, 0x37, 0xfe, 0x36, 0x06,
+
  0xc1, 0x7a, 0xfe, 0x4f, 0x77, 0xf4, 0xbb, 0xd0, 0x7c, 0x63, 0x76, 0x6b,
+
  0x59, 0x07, 0x9d, 0x84, 0x5e, 0xcd, 0xe2, 0xf1, 0x78, 0x1c, 0x93, 0xd2,
+
  0xfb, 0x94, 0x35, 0xf1, 0x6d, 0xd1, 0x84, 0xc3, 0x56, 0xc2, 0x30, 0x15,
+
  0xea, 0x3b, 0x3a, 0x3a, 0x12, 0x9d, 0xfd, 0xec, 0xa2, 0xa5, 0x3d, 0x9b,
+
  0x26, 0x7e, 0x62, 0x3d, 0xa4, 0x21, 0x5b, 0xb9, 0xba, 0x58, 0xd6, 0xc8,
+
  0x9c, 0x58, 0x82, 0xaa, 0x9a, 0x62, 0x30, 0xd9, 0x5a, 0xcd, 0xce, 0x0b,
+
  0x58, 0xd3, 0xbe, 0x2d, 0x25, 0xf0, 0x7b, 0x6c, 0x96, 0x29, 0x83, 0xbf,
+
  0xf3, 0x8d, 0x32, 0xb6, 0x85, 0xd9, 0x74, 0x7d, 0xab, 0x6e, 0x7f, 0x48,
+
  0x9d, 0x61, 0x15, 0x2a, 0xbf, 0xd1, 0x51, 0xe8, 0xb1, 0x49, 0x26, 0x79,
+
  0xdb, 0x89, 0x3c, 0xab, 0x3d, 0xf6, 0x8d, 0xb4, 0xe5, 0xae, 0xf5, 0xfd,
+
  0xd3, 0x96, 0x33, 0xfa, 0x9d, 0x68, 0xcb, 0x9d, 0x9d, 0xac, 0x50, 0xe3,
+
  0x1b, 0x24, 0xb8, 0x6a, 0x3d, 0x8a, 0x93, 0x3b, 0x3b, 0x88, 0x2e, 0x2c,
+
  0x7a, 0x09, 0xe0, 0x13, 0x69, 0x2b, 0xda, 0x3c, 0xa2, 0xe6, 0xe8, 0xd1,
+
  0x91, 0x70, 0xc1, 0xa3, 0x0b, 0xcc, 0x2e, 0x9f, 0x01, 0x09, 0xc2, 0xbe,
+
  0x54, 0x24, 0xd8, 0x68, 0xf9, 0x87, 0xc3, 0x97, 0xdb, 0x67, 0x2f, 0x87,
+
  0x5e, 0x0d, 0xde, 0x35, 0x06, 0x8b, 0x29, 0x28, 0xdc, 0x0c, 0x39, 0x32,
+
  0x11, 0x94, 0x69, 0x65, 0x20, 0xa7, 0x0c, 0x4f, 0xe3, 0x27, 0x04, 0xdb,
+
  0xd1, 0x2c, 0x73, 0xad, 0x78, 0x37, 0xda, 0x52, 0x9e, 0xe6, 0x04, 0x14,
+
  0x8c, 0xc9, 0x7e, 0xc4, 0xaf, 0xa8, 0x42, 0xa7, 0x8a, 0x5e, 0x1f, 0x9e,
+
  0x61, 0x0d, 0x7b, 0x2d, 0xf9, 0xa9, 0xe8, 0xa5, 0xf7, 0x2a, 0x04, 0x8b,
+
  0x2b, 0x03, 0xa2, 0x4e, 0xc9, 0x27, 0xc9, 0x58, 0x31, 0xaf, 0xad, 0xed,
+
  0xcd, 0x04, 0x5a, 0xe9, 0xd9, 0xba, 0xd9, 0x8f, 0xa1, 0x3b, 0xd5, 0x5d,
+
  0x53, 0xfe, 0xf1, 0x04, 0xf6, 0x11, 0xb4, 0x15, 0xa4, 0xa0, 0x4e, 0x02,
+
  0x82, 0x9b, 0x1c, 0x29, 0x1d, 0x26, 0x6f, 0xe7, 0x3b, 0xde, 0xc2, 0x0e,
+
  0xc7, 0x06, 0x2b, 0x58, 0x42, 0x28, 0x86, 0xbd, 0x50, 0x4c, 0x70, 0x56,
+
  0x9c, 0x67, 0xc0, 0x83, 0xa2, 0x31, 0x13, 0x1b, 0x69, 0x56, 0x9a, 0x0e,
+
  0xe4, 0xb5, 0xab, 0xe1, 0xfd, 0x8d, 0xb4, 0x21, 0x89, 0x4b, 0x57, 0x85,
+
  0x30, 0x32, 0x54, 0xdf, 0x0c, 0x5d, 0xb0, 0x03, 0xd1, 0xe0, 0x7e, 0xf9,
+
  0xb0, 0x5a, 0xb8, 0x15, 0xd9, 0x38, 0x83, 0x1b, 0x30, 0xf7, 0xf6, 0x7b,
+
  0x86, 0x44, 0x71, 0x8b, 0x96, 0xb2, 0x46, 0x77, 0x5e, 0x13, 0x77, 0xc4,
+
  0xac, 0xc9, 0x20, 0x56, 0x81, 0xbc, 0xe3, 0x2d, 0x69, 0x45, 0xe8, 0xfe,
+
  0xd3, 0x30, 0x23, 0x1e, 0xfc, 0xce, 0xf4, 0x22, 0x73, 0x5b, 0x27, 0x52,
+
  0x0c, 0xf7, 0x39, 0xb4, 0xf1, 0x03, 0x2a, 0x7c, 0xe7, 0x9e, 0x8a, 0x6f,
+
  0xba, 0x19, 0x04, 0x7a, 0x1b, 0x93, 0x33, 0x00, 0x23, 0x2b, 0x92, 0xc6,
+
  0x65, 0xd1, 0xc9, 0xc4, 0x97, 0x15, 0x4f, 0xfc, 0x0c, 0x17, 0x4e, 0xb8,
+
  0x91, 0x5f, 0x62, 0x49, 0x7e, 0xe3, 0xbe, 0xcb, 0xf8, 0x01, 0xbc, 0x16,
+
  0x67, 0x32, 0x35, 0x9b, 0x6a, 0x69, 0x55, 0x58, 0x6b, 0xb8, 0x1f, 0xc0,
+
  0xc6, 0x50, 0x38, 0xe9, 0x56, 0xe7, 0x2d, 0x2a, 0xf5, 0xd5, 0xef, 0x38,
+
  0xd1, 0x1b, 0xb3, 0x9c, 0xae, 0x32, 0xe0, 0x98, 0x57, 0xe4, 0x4d, 0xf2,
+
  0xdd, 0x49, 0xdc, 0x39, 0xf7, 0x4c, 0x5d, 0xd9, 0xca, 0xba, 0xd8, 0x54,
+
  0x4f, 0x4d, 0x69, 0x13, 0xf6, 0x64, 0xd1, 0xc4, 0xcf, 0xff, 0x7b, 0xc3,
+
  0xc5, 0xca, 0xf4, 0xa3, 0x19, 0x5c, 0x5e, 0x9f, 0x29, 0xfc, 0x9c, 0xf2,
+
  0x44, 0xdc, 0x7e, 0x93, 0x0e, 0xd4, 0xb7, 0x13, 0xb6, 0xcf, 0xcd, 0x7c,
+
  0x00, 0x1b, 0x7a, 0xbd, 0xd5, 0xf3, 0x79, 0x7e, 0x7c, 0xf8, 0xac, 0x13,
+
  0x42, 0xd9, 0x11, 0xb1, 0xba, 0xdb, 0xb7, 0x76, 0xe3, 0x06, 0xf2, 0xfa,
+
  0x02, 0xd4, 0x7c, 0xde, 0x6d, 0x9d, 0x74, 0xc6, 0x59, 0x70, 0x16, 0xa1,
+
  0xcc, 0xad, 0xee, 0xab, 0xe3, 0x49, 0xd4, 0xab, 0x8b, 0x62, 0xa6, 0xe9,
+
  0x60, 0xf0, 0x67, 0x72, 0x9e, 0x7e, 0x5d, 0xcc, 0x26, 0xbd, 0x75, 0x47,
+
  0x7a, 0xd1, 0x1e, 0x6c, 0xad, 0x1a, 0xfa, 0x56, 0x7e, 0xd7, 0x4f, 0xf8,
+
  0xa7, 0xb7, 0xf8, 0xf1, 0x39, 0xad, 0xf5, 0xac, 0x18, 0x15, 0xd3, 0xe9,
+
  0x0a, 0xf4, 0x3f, 0xee, 0xc8, 0x4d, 0xf8, 0x02, 0x4c, 0xc1, 0x3d, 0xdc,
+
  0x57, 0xbc, 0x6f, 0x84, 0x5b, 0x46, 0x90, 0xdf, 0x65, 0x4f, 0xca, 0x6a,
+
  0xa5, 0xb7, 0x8f, 0xa7, 0x86, 0x39, 0x29, 0x10, 0xd7, 0xe2, 0x6d, 0x52,
+
  0xbf, 0x0e, 0xa1, 0x70, 0x1a, 0x70, 0xb5, 0x44, 0x22, 0x84, 0x33, 0x82,
+
  0xab, 0x02, 0x2e, 0xfd, 0x8f, 0x7f, 0xfe, 0xed, 0x17, 0xcf, 0xd1, 0xc1,
+
  0x41, 0x3c, 0x44, 0x6f, 0xa0, 0x84, 0x65, 0x4a, 0xbc, 0xa8, 0xab, 0x74,
+
  0x36, 0x65, 0x37, 0x29, 0x59, 0x95, 0xd8, 0xeb, 0x63, 0xc0, 0xe5, 0x41,
+
  0x0a, 0xb7, 0x50, 0xd1, 0xb8, 0x81, 0x3a, 0x5d, 0xdb, 0xeb, 0x47, 0x00,
+
  0xaf, 0x66, 0xe9, 0x39, 0xfc, 0xab, 0x8d, 0x90, 0xa9, 0xd8, 0x41, 0x82,
+
  0xca, 0xd7, 0x91, 0x7a, 0x7d, 0xb9, 0x12, 0x36, 0x94, 0x43, 0x8b, 0xc9,
+
  0xeb, 0xed, 0xd4, 0xd1, 0xb7, 0x6f, 0x5e, 0x98, 0xc8, 0xe5, 0x4a, 0xbe,
+
  0x7e, 0x4e, 0x5c, 0x48, 0xf6, 0xe5, 0xde, 0xdb, 0x65, 0xc9, 0xb8, 0x6b,
+
  0xf2, 0x73, 0x6c, 0xf4, 0x12, 0xa8, 0x4a, 0xfc, 0xc7, 0xdf, 0x7e, 0xf9,
+
  0x27, 0xfc, 0x5f, 0xef, 0x56, 0x8d, 0xab, 0x99, 0x16, 0xdd, 0x6e, 0xdc,
+
  0xae, 0x06, 0x70, 0x01, 0xcc, 0xe3, 0x3a, 0x4e, 0xaf, 0xd3, 0x11, 0x30,
+
  0xee, 0x4a, 0x81, 0x6e, 0xe3, 0x79, 0x15, 0x3d, 0x9d, 0x03, 0xdb, 0xc9,
+
  0x3a, 0x20, 0xa3, 0x9f, 0xe3, 0x6d, 0xd1, 0xb1, 0xdc, 0x26, 0x45, 0x1a,
+
  0xc9, 0xec, 0xbc, 0x28, 0xe1, 0x8d, 0xe7, 0x82, 0xe9, 0x25, 0x80, 0x66,
+
  0x4d, 0x37, 0x7e, 0x44, 0x05, 0xe2, 0x9e, 0x2f, 0xfc, 0xf2, 0x81, 0xf8,
+
  0xff, 0xa9, 0x49, 0xa6, 0xd3, 0xf7, 0x50, 0xbc, 0x35, 0x4b, 0x30, 0xaf,
+
  0x61, 0x1b, 0xc7, 0xef, 0xc9, 0xa9, 0x5d, 0xf5, 0x31, 0xc8, 0x6f, 0xba,
+
  0x7b, 0x86, 0x4a, 0x42, 0x04, 0x86, 0x47, 0xfb, 0x2e, 0x1a, 0x51, 0x24,
+
  0x7e, 0x48, 0x44, 0xc2, 0x71, 0xde, 0x6f, 0x80, 0xcc, 0x99, 0xfc, 0xaa,
+
  0x38, 0x60, 0x47, 0xcc, 0x03, 0x8f, 0x8f, 0x38, 0x17, 0xe5, 0x7d, 0x98,
+
  0xe7, 0x9a, 0x0a, 0x35, 0xa4, 0x76, 0x58, 0xc0, 0x3e, 0x07, 0x5d, 0x92,
+
  0x15, 0x9d, 0x44, 0x8c, 0x2b, 0x1a, 0x33, 0x37, 0x92, 0x89, 0x69, 0x73,
+
  0xe2, 0xf6, 0xa9, 0x25, 0xd0, 0x93, 0x04, 0x51, 0x58, 0xd2, 0x19, 0x4b,
+
  0x21, 0x0e, 0xe6, 0x75, 0x3a, 0x2d, 0x44, 0x44, 0x02, 0xb7, 0x81, 0x5d,
+
  0x66, 0xc8, 0x28, 0xc9, 0x5b, 0x28, 0xf2, 0xd4, 0x78, 0xe1, 0x83, 0x6e,
+
  0x4a, 0x1a, 0x9d, 0x9d, 0xc3, 0xb0, 0x32, 0xe2, 0x70, 0x21, 0xdc, 0x69,
+
  0xc2, 0xb8, 0x63, 0x5c, 0x6c, 0xbc, 0x9b, 0x92, 0xac, 0x51, 0x2a, 0x36,
+
  0x29, 0xa0, 0x1d, 0x40, 0xfd, 0xfe, 0x28, 0x7a, 0xf4, 0xf0, 0xe1, 0x43,
+
  0x4e, 0x29, 0xe9, 0xbd, 0xa0, 0x07, 0xbf, 0x39, 0x3e, 0x3a, 0x79, 0xf5,
+
  0xea, 0xf8, 0xf5, 0xb3, 0xe3, 0x67, 0x9a, 0xf7, 0xed, 0xcc, 0xdd, 0x92,
+
  0x8b, 0x2f, 0x87, 0xb1, 0x42, 0x08, 0x48, 0x63, 0xf7, 0xe1, 0x4e, 0xbc,
+
  0xf7, 0x70, 0x27, 0x02, 0xe2, 0x4c, 0x0c, 0xf0, 0x44, 0x32, 0x43, 0xb8,
+
  0xc5, 0xe8, 0x62, 0x09, 0x56, 0x0e, 0x76, 0xc2, 0xae, 0x11, 0x6b, 0x53,
+
  0x7b, 0x0d, 0xe4, 0x69, 0x8d, 0xfe, 0x66, 0xcf, 0x7c, 0x48, 0x26, 0x83,
+
  0x9e, 0xe9, 0xb8, 0x68, 0xb3, 0xd0, 0xc4, 0x74, 0x20, 0x8a, 0xdd, 0xdb,
+
  0xc1, 0x07, 0x0d, 0xa2, 0xef, 0x41, 0xf7, 0x9d, 0x16, 0x1f, 0x98, 0x38,
+
  0x8f, 0x2e, 0xc0, 0x6a, 0x4d, 0xfd, 0xfc, 0xb3, 0xe6, 0xfd, 0x78, 0xfb,
+
  0x3e, 0xdf, 0x1e, 0x4e, 0x68, 0xe8, 0x3e, 0x74, 0x37, 0xe5, 0x37, 0x78,
+
  0x66, 0x9a, 0xd7, 0x51, 0xe6, 0xae, 0x29, 0x87, 0xdd, 0x73, 0x7a, 0xb8,
+
  0xb3, 0x66, 0x17, 0xec, 0x39, 0xf2, 0x9a, 0x79, 0xf2, 0x81, 0x1b, 0xb4,
+
  0x48, 0x13, 0x91, 0x15, 0x48, 0xda, 0x0f, 0xbf, 0x6c, 0x62, 0x23, 0xc1,
+
  0x54, 0xca, 0xe2, 0xc3, 0x75, 0xcc, 0xd1, 0x48, 0xdf, 0x87, 0xc8, 0x40,
+
  0x57, 0xe4, 0x4a, 0x31, 0x69, 0xa5, 0x2f, 0x4e, 0x71, 0xac, 0xe7, 0x87,
+
  0xa7, 0x78, 0x67, 0x74, 0xfa, 0xe6, 0xe4, 0xa7, 0xbf, 0x5a, 0xf4, 0x99,
+
  0xcb, 0x5d, 0x53, 0x26, 0x16, 0x25, 0x81, 0xe8, 0x3c, 0xac, 0x19, 0x98,
+
  0x31, 0xb9, 0x80, 0xa1, 0x88, 0x4d, 0xdb, 0xe5, 0x9f, 0xc3, 0x14, 0x2c,
+
  0x58, 0xee, 0x6c, 0x62, 0x7a, 0x04, 0xf7, 0x1b, 0xc7, 0x36, 0xad, 0x4c,
+
  0x79, 0x6a, 0x96, 0x4f, 0x32, 0x6e, 0xca, 0x44, 0xd8, 0x10, 0x20, 0xaf,
+
  0x33, 0xcf, 0x55, 0x02, 0x0f, 0xa4, 0x30, 0x1e, 0x90, 0xcf, 0x03, 0x92,
+
  0xa2, 0xe7, 0x28, 0x16, 0x45, 0x1a, 0xf3, 0x89, 0xfc, 0xdb, 0xce, 0x60,
+
  0xb0, 0xf7, 0xf0, 0xe1, 0x2f, 0x18, 0x18, 0x91, 0x6c, 0xf2, 0xab, 0x12,
+
  0x4b, 0xaf, 0x72, 0xdf, 0x23, 0xaa, 0x40, 0xf2, 0x25, 0x36, 0x84, 0xc2,
+
  0x44, 0x6c, 0xd6, 0x30, 0x1b, 0x8d, 0xb5, 0xf4, 0x79, 0xc8, 0x15, 0x26,
+
  0xc4, 0xcf, 0xb8, 0x18, 0x30, 0x50, 0x49, 0x48, 0x3a, 0x32, 0xb6, 0xf4,
+
  0x53, 0x0c, 0xa8, 0xdf, 0xd2, 0x12, 0xad, 0x28, 0x15, 0xdb, 0x0b, 0x2c,
+
  0x7d, 0xaa, 0x05, 0x16, 0x6e, 0x5a, 0x16, 0x0c, 0x3d, 0xad, 0x3d, 0x67,
+
  0xbd, 0xd9, 0x81, 0x68, 0x96, 0xb0, 0xd1, 0x65, 0x91, 0x4d, 0x08, 0xa0,
+
  0xc9, 0xe0, 0x71, 0xa0, 0xb4, 0x5a, 0x56, 0x46, 0x1d, 0x2e, 0xc6, 0x35,
+
  0x66, 0x82, 0xc8, 0x50, 0x83, 0x55, 0x8c, 0x19, 0xa5, 0x04, 0x2d, 0x39,
+
  0x69, 0x06, 0x8d, 0x45, 0xe7, 0x25, 0xc7, 0x39, 0x3d, 0x00, 0x0a, 0xf8,
+
  0x90, 0xe8, 0xf2, 0x4c, 0xb2, 0x73, 0x50, 0x5c, 0xda, 0x84, 0xb5, 0x04,
+
  0x45, 0xba, 0xa4, 0x72, 0x5d, 0x0a, 0x6f, 0x51, 0x3e, 0x14, 0x01, 0x6c,
+
  0x12, 0xcf, 0x23, 0xd4, 0x11, 0x2a, 0xf5, 0x8d, 0xcc, 0x92, 0x71, 0x1a,
+
  0x1f, 0x2f, 0x53, 0x3f, 0xa0, 0x2e, 0x49, 0x91, 0x1b, 0xb5, 0x19, 0x20,
+
  0x3e, 0x85, 0xcd, 0xd5, 0x68, 0xd9, 0x97, 0xfc, 0xce, 0x33, 0xda, 0x1c,
+
  0x44, 0x1c, 0x1f, 0x4b, 0xb6, 0x23, 0x37, 0x54, 0x0c, 0x9d, 0xf5, 0x12,
+
  0x99, 0xb2, 0x0e, 0x46, 0x10, 0x26, 0xca, 0xb0, 0xb1, 0x32, 0x0c, 0xac,
+
  0x6a, 0x72, 0x3b, 0xf1, 0x0e, 0xb1, 0xc0, 0xa8, 0x0b, 0x5c, 0x44, 0x5e,
+
  0x43, 0x9f, 0xee, 0x60, 0x31, 0x48, 0x67, 0x1a, 0xa1, 0x6f, 0x8e, 0x16,
+
  0x50, 0x29, 0x03, 0xd6, 0x71, 0x77, 0xcf, 0x47, 0x30, 0x3a, 0x51, 0x8b,
+
  0x89, 0x2a, 0xb8, 0xa3, 0x26, 0xa6, 0x15, 0xcf, 0x4b, 0xab, 0xa0, 0x4c,
+
  0x32, 0x01, 0xb9, 0xc9, 0xc5, 0xf1, 0xe8, 0x37, 0x36, 0xaa, 0x42, 0xf5,
+
  0x71, 0x2f, 0x6a, 0x5d, 0x86, 0x2a, 0xfa, 0x7f, 0x2c, 0x3b, 0xd0, 0xe3,
+
  0xfc, 0xff, 0xa0, 0x59, 0xcf, 0x26, 0x68, 0x56, 0x6b, 0x1a, 0x0e, 0x9c,
+
  0x56, 0x2c, 0x9c, 0x29, 0x03, 0x1d, 0x2c, 0x55, 0xe1, 0x25, 0x60, 0x1a,
+
  0x04, 0x29, 0xbd, 0xb1, 0xef, 0xe3, 0xa2, 0x04, 0x22, 0x29, 0xb3, 0xd9,
+
  0xb5, 0xca, 0x3f, 0x0a, 0x21, 0x68, 0x89, 0x65, 0x44, 0x29, 0x80, 0xb6,
+
  0x43, 0xb8, 0xff, 0x44, 0x46, 0x72, 0xe4, 0x13, 0x7f, 0x99, 0x8d, 0xc9,
+
  0x0d, 0x85, 0x72, 0x88, 0x32, 0x8a, 0x2a, 0x3a, 0xe5, 0xf9, 0x24, 0xdc,
+
  0xab, 0x24, 0xc0, 0xfe, 0x3e, 0x63, 0x53, 0x3b, 0x6f, 0x2a, 0xff, 0xd7,
+
  0x8b, 0xd3, 0x6e, 0xbe, 0xff, 0x01, 0xf9, 0x3e, 0xdd, 0xe0, 0xb0, 0xf7,
+
  0x27, 0x83, 0xbd, 0x30, 0x77, 0xd7, 0xed, 0xec, 0xe2, 0xee, 0x14, 0x35,
+
  0xec, 0x66, 0xe8, 0xc2, 0xcf, 0x05, 0xcf, 0xcd, 0x72, 0x70, 0x9f, 0xcc,
+
  0xf9, 0x02, 0x37, 0xb6, 0xa3, 0x19, 0x8e, 0x64, 0x8c, 0x63, 0x5d, 0x74,
+
  0x41, 0x5d, 0x4d, 0xd1, 0x9a, 0x66, 0x75, 0x42, 0x7a, 0x5f, 0xf9, 0x08,
+
  0xd3, 0x94, 0xe3, 0x83, 0xf3, 0xf8, 0x40, 0x89, 0xb7, 0x85, 0xe1, 0x36,
+
  0xcd, 0xf4, 0x99, 0xba, 0x5c, 0x36, 0xe2, 0x43, 0x9a, 0x2d, 0x33, 0xf8,
+
  0x18, 0xba, 0x23, 0xb2, 0x33, 0x54, 0x87, 0x9a, 0x74, 0x12, 0x00, 0x7c,
+
  0xc9, 0xc6, 0xa2, 0xea, 0x71, 0x1f, 0x0c, 0xc9, 0x0e, 0xe6, 0xd5, 0x5a,
+
  0xe9, 0x64, 0x6f, 0xef, 0xcb, 0xfd, 0xfa, 0xb5, 0xda, 0xa3, 0xdf, 0x95,
+
  0x12, 0x6d, 0xcb, 0xcf, 0x75, 0x34, 0x92, 0x20, 0x65, 0x3e, 0x1e, 0x3c,
+
  0xda, 0x69, 0x90, 0xa6, 0x71, 0xc0, 0x74, 0x35, 0x21, 0x8d, 0xbe, 0x7f,
+
  0xf1, 0xf2, 0x78, 0x2b, 0xfa, 0x3e, 0xad, 0x05, 0x42, 0x48, 0x2b, 0xfd,
+
  0x31, 0xc1, 0xe7, 0x3f, 0xc8, 0x21, 0x65, 0xda, 0x7f, 0x0b, 0x3c, 0x60,
+
  0xb0, 0x3a, 0x53, 0xe2, 0xd0, 0xe4, 0x9c, 0x51, 0x3c, 0x22, 0x26, 0x47,
+
  0xda, 0x57, 0xf4, 0x44, 0x68, 0xb5, 0xa7, 0xa6, 0x54, 0x0b, 0xb9, 0x07,
+
  0xea, 0xdf, 0x15, 0xc8, 0x79, 0xe0, 0x74, 0x1a, 0x2d, 0x72, 0xa7, 0x40,
+
  0x03, 0x27, 0x2d, 0xd8, 0x03, 0x9a, 0x9d, 0x9e, 0x55, 0xc0, 0x5e, 0xaf,
+
  0xab, 0x70, 0xcb, 0x89, 0x59, 0x6a, 0x51, 0xb3, 0x88, 0xb3, 0xcc, 0x8b,
+
  0x89, 0x6d, 0xd3, 0x4b, 0x3a, 0x5d, 0x33, 0x3f, 0x34, 0x60, 0x4c, 0xbf,
+
  0x20, 0x63, 0x9a, 0x6a, 0xdb, 0xee, 0x3b, 0x31, 0x10, 0x07, 0x5d, 0x93,
+
  0x7a, 0x5e, 0xac, 0x47, 0x2d, 0xea, 0x0c, 0x83, 0x1f, 0x97, 0xf8, 0x2b,
+
  0xec, 0xe7, 0x88, 0x60, 0xf8, 0x48, 0x93, 0x85, 0x79, 0x8f, 0xd3, 0x38,
+
  0xa9, 0xc6, 0x59, 0xe6, 0xd0, 0xce, 0x73, 0xa5, 0x1d, 0x2c, 0xe3, 0xe2,
+
  0x9f, 0xdb, 0xdf, 0x76, 0xf6, 0xe3, 0x62, 0xf8, 0x3f, 0xac, 0xef, 0xde,
+
  0x82, 0xa9, 0xe3, 0x4a, 0xc8, 0xad, 0xc4, 0x51, 0x40, 0xc9, 0xa3, 0x1e,
+
  0x00, 0x39, 0xfe, 0xc7, 0x45, 0xdb, 0xd2, 0x20, 0x39, 0xf7, 0x8e, 0x9c,
+
  0xdd, 0x73, 0xb1, 0x42, 0x15, 0x2e, 0x4b, 0x18, 0x85, 0xca, 0xc8, 0x64,
+
  0xe2, 0x38, 0x08, 0x15, 0xbc, 0x2c, 0xd4, 0xa1, 0x1e, 0x99, 0x8c, 0xc1,
+
  0x44, 0x08, 0xa8, 0xbe, 0x30, 0x3e, 0x4d, 0x5e, 0xc1, 0x0c, 0x5f, 0xbd,
+
  0x78, 0x75, 0x2c, 0x30, 0x3e, 0xe9, 0x84, 0x8b, 0x66, 0xb9, 0x17, 0x28,
+
  0xef, 0x98, 0x2d, 0x08, 0x0d, 0x57, 0x4b, 0x56, 0x82, 0x4f, 0xce, 0x22,
+
  0x2e, 0x6d, 0x3a, 0x32, 0xb9, 0xcf, 0x1e, 0x52, 0x14, 0x3d, 0xc5, 0x42,
+
  0x9a, 0x13, 0xdd, 0xf8, 0xc3, 0x11, 0x0e, 0x1a, 0xaf, 0x1f, 0x15, 0xc5,
+
  0xd7, 0x2a, 0x1e, 0x68, 0x5a, 0xd2, 0x4b, 0x63, 0x06, 0xf2, 0x73, 0x46,
+
  0x05, 0xee, 0x26, 0x1e, 0x90, 0x10, 0x19, 0xb6, 0x43, 0xa2, 0xc9, 0x55,
+
  0xf3, 0xbd, 0xaa, 0x46, 0x3f, 0xe7, 0x87, 0x8f, 0x06, 0x3b, 0x5b, 0xc1,
+
  0x94, 0x2e, 0xcc, 0x41, 0x32, 0xc9, 0x53, 0xa0, 0x26, 0x59, 0x8f, 0x43,
+
  0xea, 0x6c, 0x75, 0x35, 0xf0, 0x20, 0x74, 0x02, 0x39, 0x58, 0xe2, 0xf1,
+
  0x42, 0xf0, 0x16, 0xd3, 0xd4, 0x50, 0x49, 0x05, 0xef, 0xc3, 0xd3, 0x64,
+
  0x12, 0x12, 0x72, 0xe9, 0x22, 0x6f, 0x6b, 0x5c, 0xba, 0x12, 0xac, 0x8b,
+
  0x5c, 0x53, 0x48, 0xaf, 0xb4, 0xd4, 0xa6, 0x2f, 0x18, 0x5e, 0x1f, 0xf8,
+
  0x92, 0x19, 0x81, 0xc1, 0xe8, 0xb3, 0x44, 0x87, 0x08, 0xb8, 0xc7, 0xdb,
+
  0x6e, 0x76, 0xf7, 0x11, 0x5a, 0x67, 0x22, 0x81, 0x3d, 0x74, 0x40, 0xc2,
+
  0xc6, 0x72, 0xca, 0x20, 0x02, 0xc4, 0xb7, 0xf7, 0xaf, 0xcc, 0xc6, 0xef,
+
  0x33, 0xb4, 0xd1, 0xaa, 0x7a, 0x39, 0x9d, 0x72, 0x69, 0x81, 0x3b, 0x4b,
+
  0x2d, 0x6a, 0x80, 0x8d, 0xe3, 0x36, 0x2e, 0xb2, 0x3c, 0xb8, 0x85, 0x3e,
+
  0x29, 0xb3, 0x1e, 0xad, 0xf3, 0x69, 0xbc, 0x4f, 0x65, 0x5c, 0x99, 0x88,
+
  0x77, 0x47, 0xde, 0xd4, 0xb4, 0x44, 0x12, 0x40, 0x78, 0x77, 0xcc, 0x4d,
+
  0xb9, 0xf2, 0x8b, 0xd6, 0xa8, 0x01, 0x5a, 0x89, 0x9a, 0x3b, 0x05, 0x41,
+
  0xdf, 0xa4, 0xf3, 0x82, 0x9a, 0xf5, 0xd9, 0x37, 0x96, 0xb5, 0x02, 0x7d,
+
  0x42, 0x7c, 0x53, 0x89, 0xaa, 0xb1, 0x48, 0xb4, 0x1d, 0xbe, 0x54, 0x85,
+
  0x9e, 0x90, 0xd2, 0x37, 0xc9, 0xf2, 0xc3, 0xd6, 0xcf, 0x0d, 0xdd, 0x65,
+
  0x86, 0x1e, 0x5c, 0x02, 0x49, 0xcb, 0xf2, 0x03, 0x64, 0x37, 0xed, 0xa2,
+
  0xc9, 0xe7, 0x45, 0x55, 0x1f, 0xf4, 0xa4, 0xb7, 0x35, 0x25, 0xa2, 0x4b,
+
  0x95, 0x67, 0xda, 0x22, 0x1b, 0xe9, 0x79, 0x10, 0xb3, 0x72, 0xc8, 0xa9,
+
  0xe9, 0x9e, 0x25, 0x24, 0xd7, 0xaa, 0x1d, 0xeb, 0x03, 0x5c, 0x18, 0xd8,
+
  0x23, 0x01, 0x04, 0xc4, 0x99, 0xc5, 0xcf, 0x61, 0x1e, 0x3f, 0xc5, 0x47,
+
  0x4b, 0x8f, 0x95, 0xc3, 0xe3, 0xe3, 0xe7, 0x34, 0xe4, 0x57, 0x3d, 0x93,
+
  0x12, 0xc6, 0x97, 0xda, 0xaf, 0x60, 0xf6, 0x5f, 0x84, 0x2a, 0xfb, 0x04,
+
  0x93, 0x8f, 0xc9, 0x86, 0x7a, 0x6d, 0x8a, 0x7e, 0x93, 0xd8, 0x1e, 0x9e,
+
  0xb4, 0x39, 0x93, 0xc9, 0xb6, 0x5a, 0x4f, 0x52, 0x84, 0x1c, 0x32, 0xc8,
+
  0x28, 0x55, 0xb0, 0xc4, 0xca, 0x99, 0x08, 0x66, 0x11, 0x17, 0xd3, 0x98,
+
  0x30, 0x33, 0x40, 0xef, 0x7a, 0x8f, 0x35, 0x87, 0xd7, 0x96, 0xac, 0x08,
+
  0x56, 0x9d, 0xd8, 0xc3, 0x64, 0x12, 0x2a, 0x63, 0x4c, 0x2a, 0x81, 0x8c,
+
  0x54, 0xda, 0x57, 0xd8, 0x1d, 0xde, 0xd2, 0x03, 0xc9, 0x6b, 0xa4, 0xdb,
+
  0xf3, 0xf4, 0x8a, 0x51, 0x09, 0xb0, 0x59, 0x95, 0xc0, 0xe3, 0x78, 0x29,
+
  0x18, 0x04, 0x96, 0xd3, 0x67, 0x67, 0x37, 0xbd, 0x34, 0x61, 0xaf, 0xcf,
+
  0x39, 0x1b, 0x8a, 0x12, 0xd4, 0x96, 0x0b, 0xb2, 0xae, 0x60, 0x92, 0x2b,
+
  0x4d, 0x18, 0xb4, 0xc8, 0x6a, 0x0a, 0xc6, 0xe5, 0xb6, 0x06, 0x0e, 0xb8,
+
  0xd6, 0xb7, 0x06, 0x40, 0xab, 0xaa, 0xaf, 0x51, 0x1f, 0x60, 0xe5, 0x23,
+
  0x54, 0x61, 0x04, 0x93, 0xe6, 0x02, 0x36, 0xf5, 0x9b, 0x90, 0x1b, 0x96,
+
  0xd6, 0x9c, 0xd6, 0x4b, 0x1c, 0x14, 0x04, 0x8a, 0x28, 0xcd, 0x22, 0xb9,
+
  0xec, 0xf2, 0xdb, 0x38, 0x64, 0xea, 0xd1, 0xee, 0x49, 0x83, 0xae, 0x64,
+
  0xe2, 0xae, 0x16, 0xd7, 0x21, 0x1a, 0x14, 0xd2, 0xa6, 0x63, 0xe8, 0xa1,
+
  0xab, 0x9f, 0xa9, 0x9a, 0x31, 0xc3, 0xdc, 0x50, 0x27, 0x63, 0x74, 0x4e,
+
  0xc0, 0xab, 0x60, 0x9e, 0xc4, 0xd5, 0x22, 0x99, 0x47, 0x60, 0x05, 0xcf,
+
  0xb2, 0x1a, 0xd5, 0xf3, 0xf1, 0x45, 0x2a, 0x19, 0xc9, 0xec, 0x0b, 0x61,
+
  0x5c, 0xa7, 0xa0, 0x91, 0x84, 0x4e, 0x4f, 0xb1, 0xab, 0x48, 0xd4, 0x90,
+
  0xc0, 0x10, 0x66, 0x71, 0x20, 0x21, 0x0c, 0x46, 0x28, 0xea, 0x7d, 0x0f,
+
  0x73, 0x3d, 0xe8, 0xc1, 0x69, 0xec, 0x9d, 0x15, 0xf0, 0xb3, 0x7d, 0x10,
+
  0x9f, 0xc1, 0x31, 0x39, 0xe8, 0x89, 0x33, 0xbb, 0x37, 0x64, 0x48, 0x4f,
+
  0xfa, 0x60, 0x5e, 0xa0, 0x6a, 0x44, 0xae, 0x82, 0x4a, 0x11, 0x1d, 0xa5,
+
  0xce, 0x8e, 0xa5, 0x73, 0x10, 0xc7, 0xd6, 0xec, 0x6a, 0x50, 0xd6, 0x50,
+
  0x2f, 0x28, 0x51, 0x6d, 0x63, 0xab, 0x43, 0xd0, 0x01, 0x6b, 0x9c, 0x7b,
+
  0x6b, 0x75, 0xca, 0x56, 0x7a, 0xa9, 0xf8, 0x0a, 0xd8, 0xdc, 0xd2, 0x91,
+
  0xf7, 0x1f, 0x87, 0xf6, 0x20, 0xe1, 0xe2, 0x58, 0xaa, 0x3b, 0x4b, 0x60,
+
  0x25, 0xda, 0xd0, 0x22, 0x07, 0x0c, 0x09, 0x9a, 0x62, 0x04, 0x4e, 0xf8,
+
  0x0e, 0x72, 0x1a, 0x62, 0x9e, 0x1d, 0x8f, 0xd6, 0xd8, 0xac, 0x70, 0x18,
+
  0xfd, 0x13, 0x81, 0x5d, 0xfa, 0x4e, 0x7c, 0x99, 0x2b, 0x44, 0xb5, 0xab,
+
  0x7c, 0x14, 0x4a, 0xe3, 0xe3, 0x0c, 0x6d, 0x99, 0x40, 0xd4, 0x09, 0x4b,
+
  0xff, 0xe3, 0xe1, 0x9b, 0xd7, 0x2f, 0x5e, 0xff, 0x70, 0x60, 0xe1, 0xd0,
+
  0x38, 0xc7, 0x57, 0xd8, 0x44, 0x2b, 0xb8, 0x4d, 0xce, 0x0a, 0x3a, 0x45,
+
  0x18, 0xe1, 0x0e, 0xc4, 0x9e, 0x8d, 0x65, 0x16, 0x73, 0x7f, 0x45, 0x4e,
+
  0x9e, 0x29, 0x53, 0x4e, 0x34, 0x65, 0x97, 0x99, 0xc1, 0x1d, 0xea, 0x33,
+
  0x96, 0x9a, 0x96, 0x81, 0xd4, 0xc5, 0x6c, 0x12, 0xf4, 0x1e, 0xc5, 0x2f,
+
  0x49, 0x91, 0x46, 0x58, 0x0f, 0xc7, 0x74, 0xc5, 0xf3, 0x3d, 0xa3, 0x73,
+
  0x54, 0xb8, 0x47, 0x69, 0x94, 0x12, 0xe8, 0x1c, 0x21, 0x19, 0x15, 0xc1,
+
  0x36, 0x8e, 0x14, 0x3b, 0x61, 0xb9, 0x4a, 0x61, 0x01, 0x10, 0x37, 0x19,
+
  0x89, 0xae, 0x02, 0x35, 0xc5, 0x8a, 0x08, 0xa7, 0xca, 0xc8, 0x8d, 0x64,
+
  0xd7, 0x84, 0xa8, 0x34, 0xdc, 0x93, 0x9a, 0x67, 0x39, 0x4e, 0x96, 0xcc,
+
  0x76, 0xb8, 0xa3, 0x9a, 0x7c, 0x6a, 0x81, 0x8d, 0xcc, 0x1a, 0xf8, 0x78,
+
  0x21, 0xae, 0xda, 0xfc, 0xf1, 0x88, 0x21, 0x5d, 0x31, 0xe5, 0xe7, 0x28,
+
  0x6c, 0xbe, 0xc7, 0xd8, 0x49, 0xfc, 0x1a, 0xb8, 0xdf, 0x41, 0xf4, 0x9f,
+
  0x45, 0xba, 0x46, 0x68, 0x18, 0x6e, 0x7f, 0x0b, 0x66, 0x5d, 0x7c, 0x78,
+
  0x4e, 0x6c, 0xfd, 0x3a, 0xad, 0xe2, 0x05, 0x31, 0xa1, 0xed, 0xbd, 0x9d,
+
  0x9d, 0x9d, 0xf5, 0x06, 0x62, 0x39, 0xbd, 0xce, 0x2d, 0xdf, 0xaa, 0xbe,
+
  0xb8, 0x76, 0xaf, 0xd8, 0x43, 0xad, 0xf4, 0x8f, 0x93, 0xf3, 0x54, 0xcb,
+
  0xff, 0x53, 0x0e, 0x4a, 0x23, 0xae, 0xb2, 0x8b, 0x00, 0x70, 0xc1, 0x1b,
+
  0x31, 0x5b, 0x44, 0x4f, 0xd1, 0x9d, 0x71, 0x5e, 0x94, 0xd7, 0xdf, 0x78,
+
  0xbd, 0x0d, 0x11, 0xda, 0x26, 0xc2, 0x8b, 0x4c, 0x67, 0x2f, 0x4c, 0x9d,
+
  0x26, 0x05, 0xcf, 0x42, 0x4e, 0x88, 0x30, 0xb4, 0xc3, 0x0c, 0xa4, 0x9f,
+
  0x6f, 0x5b, 0xc2, 0x94, 0xe7, 0xd1, 0x55, 0x52, 0x39, 0x20, 0x22, 0x4e,
+
  0xd5, 0x2f, 0x1b, 0xa8, 0xac, 0xbb, 0x23, 0x7b, 0xc7, 0x0e, 0x24, 0x45,
+
  0x59, 0x53, 0xc5, 0xa9, 0x3c, 0x29, 0x00, 0xa1, 0x17, 0x19, 0x69, 0x87,
+
  0x0e, 0x63, 0x0d, 0xe9, 0x19, 0x09, 0xd8, 0x83, 0x79, 0xf6, 0xba, 0x9e,
+
  0xd9, 0xb6, 0xaa, 0x65, 0x06, 0xd4, 0x10, 0x8a, 0x7b, 0x01, 0x3a, 0x15,
+
  0x05, 0xfe, 0xd8, 0x51, 0x4f, 0xdf, 0xb7, 0x87, 0x15, 0x40, 0x5e, 0x83,
+
  0xee, 0x15, 0x2f, 0x49, 0xab, 0xc7, 0x37, 0x67, 0x82, 0xb6, 0x03, 0x43,
+
  0x67, 0xa5, 0xb6, 0x41, 0x58, 0xbb, 0xda, 0x9f, 0xb6, 0x11, 0x46, 0xed,
+
  0xa6, 0x0c, 0xd7, 0xac, 0x6d, 0xf8, 0xe6, 0x60, 0xad, 0x17, 0xcb, 0xd1,
+
  0x7c, 0xf2, 0x30, 0x7a, 0x0a, 0xff, 0x78, 0xb6, 0xeb, 0x90, 0x81, 0x20,
+
  0x8e, 0x30, 0xd5, 0x10, 0x65, 0x00, 0x6a, 0x82, 0xe2, 0x04, 0xe6, 0x1c,
+
  0x02, 0xfc, 0x75, 0x7f, 0x2f, 0xe0, 0x6a, 0x27, 0x7f, 0x74, 0xb8, 0x19,
+
  0x85, 0x15, 0x83, 0xb8, 0xa2, 0xbb, 0x7b, 0x4f, 0xd0, 0x21, 0x1d, 0xbd,
+
  0x7a, 0xf6, 0x90, 0x05, 0x78, 0xb5, 0x9c, 0x9b, 0x8a, 0x7d, 0x46, 0x27,
+
  0xe0, 0xc2, 0x26, 0x0f, 0xa8, 0x1b, 0x26, 0x3e, 0xcb, 0xc6, 0x08, 0xee,
+
  0xd8, 0x6f, 0x64, 0x6d, 0x4f, 0x35, 0x6b, 0xdb, 0x89, 0x36, 0x1a, 0x55,
+
  0x90, 0x4a, 0xa4, 0xb8, 0x00, 0x32, 0x10, 0x17, 0x82, 0x35, 0x80, 0xc7,
+
  0x63, 0x88, 0xb6, 0x1e, 0x5f, 0x74, 0xb9, 0x6b, 0xed, 0x9a, 0x7d, 0xfa,
+
  0xea, 0xe4, 0xce, 0x2d, 0xb7, 0x93, 0x48, 0x1f, 0x8e, 0x77, 0xc7, 0x0f,
+
  0xbe, 0xdc, 0xd9, 0xdb, 0x79, 0xf4, 0x60, 0x27, 0x79, 0x98, 0x8c, 0x76,
+
  0xa6, 0x7b, 0x3b, 0xfb, 0x0f, 0x9e, 0x3c, 0x7c, 0x30, 0xde, 0xdf, 0xdb,
+
  0x4d, 0x9e, 0x44, 0xd5, 0x5a, 0xb9, 0xcf, 0x32, 0x72, 0x75, 0x91, 0xec,
+
  0x81, 0xc9, 0xeb, 0xd3, 0x0a, 0x7f, 0x11, 0x3d, 0xe5, 0x9f, 0x61, 0x8a,
+
  0x21, 0x82, 0xe9, 0xa4, 0x97, 0x24, 0xfa, 0x8e, 0x30, 0xaa, 0x62, 0x85,
+
  0x51, 0x1b, 0x3e, 0x3f, 0xc4, 0x21, 0xc1, 0xb6, 0xbd, 0xf0, 0xbd, 0xb9,
+
  0xec, 0x17, 0x20, 0x32, 0x60, 0x2a, 0x70, 0xf6, 0x7d, 0x10, 0x1d, 0xad,
+
  0xde, 0xf7, 0x2e, 0x83, 0xc0, 0xa1, 0x02, 0xfe, 0x1b, 0x1e, 0x9d, 0x76,
+
  0x6d, 0x3b, 0xe3, 0x48, 0x8a, 0x7b, 0x4f, 0xca, 0x4f, 0x2a, 0x13, 0x4d,
+
  0xe6, 0x18, 0xbc, 0xe3, 0x02, 0x81, 0x2f, 0xaa, 0xea, 0x62, 0x8f, 0x15,
+
  0x42, 0x74, 0x39, 0x78, 0x58, 0x08, 0x35, 0x05, 0x07, 0x24, 0xec, 0x45,
+
  0x72, 0x7a, 0x38, 0x7c, 0xde, 0xdd, 0x0a, 0x89, 0x10, 0x6b, 0x9a, 0xab,
+
  0x7f, 0xdb, 0xfa, 0xa5, 0x4f, 0x44, 0x76, 0x32, 0x8b, 0xd7, 0xcf, 0xfe,
+
  0xf2, 0xfe, 0xd5, 0xd9, 0x9f, 0x3f, 0xbc, 0xfa, 0xe1, 0xcf, 0xbb, 0x27,
+
  0xcf, 0x26, 0xf3, 0x57, 0xbf, 0xfe, 0x79, 0xff, 0xd5, 0xaf, 0xe3, 0xdf,
+
  0xfe, 0xfa, 0xeb, 0xe1, 0xf5, 0xc9, 0xd9, 0x5f, 0x1f, 0xbe, 0x9a, 0xbf,
+
  0x79, 0xff, 0xea, 0xd7, 0xbf, 0xcc, 0x5f, 0x3f, 0xfb, 0xf3, 0xd7, 0x77,
+
  0xa3, 0x42, 0xa0, 0xef, 0x66, 0x57, 0x9d, 0x9d, 0x56, 0x6c, 0x01, 0xa5,
+
  0xd1, 0x53, 0xd3, 0x19, 0x22, 0xe8, 0x7b, 0x1b, 0x6e, 0xb5, 0xea, 0x23,
+
  0xb4, 0x25, 0xc6, 0xf3, 0xe1, 0x99, 0xcd, 0x6e, 0x35, 0x49, 0xac, 0xca,
+
  0xe9, 0x03, 0x65, 0xf8, 0x64, 0x49, 0x2d, 0x40, 0xa5, 0x65, 0x77, 0x3c,
+
  0xc1, 0x94, 0x72, 0x29, 0x11, 0x8f, 0x35, 0x46, 0xd8, 0x37, 0xf1, 0xbc,
+
  0x92, 0xa5, 0xa2, 0xe8, 0xf2, 0x92, 0x59, 0xd8, 0xce, 0x8f, 0x25, 0x85,
+
  0x91, 0x35, 0x1d, 0x58, 0x12, 0xb7, 0x2d, 0xb4, 0xb4, 0x46, 0xa0, 0xf1,
+
  0x8c, 0x36, 0x9a, 0x5c, 0x5a, 0x4f, 0x59, 0xd7, 0xec, 0xd8, 0x79, 0xca,
+
  0xad, 0xbe, 0x0d, 0x6c, 0x17, 0xfb, 0x73, 0xc3, 0xf1, 0x27, 0x0b, 0xa6,
+
  0xc3, 0xd0, 0xed, 0x78, 0x86, 0x70, 0xd5, 0x60, 0xab, 0x24, 0x7d, 0xdf,
+
  0x26, 0xd7, 0x52, 0x87, 0x3b, 0x86, 0xbf, 0x65, 0x96, 0x1c, 0x9a, 0x81,
+
  0x06, 0x23, 0x32, 0x2e, 0xe0, 0xe1, 0x06, 0xa8, 0x66, 0x75, 0xc8, 0x3d,
+
  0xb9, 0x5c, 0x9c, 0x97, 0xc9, 0x24, 0x6d, 0xe5, 0xee, 0x06, 0x6b, 0x34,
+
  0x69, 0x03, 0x07, 0xd1, 0x31, 0xda, 0xa1, 0xce, 0x1a, 0x83, 0x04, 0x2e,
+
  0xaf, 0xe9, 0x05, 0xc9, 0x21, 0x33, 0xc9, 0xe0, 0x28, 0x20, 0x1c, 0xe9,
+
  0x2c, 0x9b, 0xb2, 0xdf, 0x19, 0xb4, 0xf1, 0x40, 0xfa, 0x99, 0xd3, 0x0c,
+
  0x40, 0xe6, 0xc0, 0xe1, 0xc4, 0x68, 0x06, 0xa6, 0x1a, 0x7c, 0x2d, 0xad,
+
  0xd3, 0x02, 0x2b, 0x35, 0x34, 0xc5, 0x91, 0xbd, 0x9e, 0xd3, 0x89, 0x64,
+
  0x13, 0x83, 0xaf, 0x82, 0x3c, 0xb8, 0x65, 0xe3, 0xdc, 0xd2, 0x69, 0x65,
+
  0x5b, 0x7b, 0xb4, 0x79, 0xca, 0x8b, 0xb5, 0x6c, 0xa8, 0xfb, 0x07, 0x36,
+
  0x68, 0x9b, 0xc9, 0x32, 0x99, 0xd6, 0x17, 0xa1, 0xdd, 0x6a, 0x55, 0x06,
+
  0xf9, 0xaa, 0x73, 0xbf, 0xe1, 0x43, 0xa1, 0x10, 0x97, 0xc9, 0xac, 0x6b,
+
  0x3b, 0xfe, 0xa9, 0xb2, 0x53, 0xa0, 0xb6, 0xb8, 0x13, 0x8c, 0x06, 0x1f,
+
  0x88, 0x7f, 0x14, 0x79, 0x33, 0x96, 0x48, 0xe4, 0xc0, 0x6f, 0x14, 0x68,
+
  0x7a, 0x44, 0x27, 0xf1, 0xd3, 0x61, 0x00, 0xca, 0xf0, 0xb0, 0xf7, 0xeb,
+
  0xab, 0xc5, 0x1c, 0x43, 0x6a, 0x36, 0x10, 0x7d, 0xd0, 0xe2, 0x23, 0x30,
+
  0xde, 0xce, 0xe0, 0xcb, 0x70, 0x68, 0xb2, 0xd9, 0x60, 0x0d, 0xc1, 0x64,
+
  0x0d, 0x1c, 0x32, 0x19, 0xb2, 0x84, 0x1d, 0x01, 0x1b, 0x82, 0x9d, 0xed,
+
  0xb4, 0x36, 0xcd, 0x5b, 0x21, 0xbc, 0x72, 0x1b, 0xaf, 0xe0, 0x86, 0xb4,
+
  0xe6, 0xcc, 0x63, 0xa7, 0x63, 0xd2, 0xf7, 0x49, 0x16, 0x99, 0xd2, 0x36,
+
  0xd3, 0xdd, 0x92, 0xea, 0x26, 0x7d, 0x47, 0xb1, 0x29, 0x23, 0xd6, 0x44,
+
  0x3b, 0x6b, 0xc4, 0x0a, 0xa6, 0xb9, 0xd3, 0x43, 0x43, 0xc1, 0x9e, 0x89,
+
  0x26, 0x30, 0xd8, 0xe4, 0xc5, 0x94, 0xcc, 0x73, 0x2b, 0x5b, 0x8c, 0xc6,
+
  0x9d, 0x0d, 0xb9, 0x49, 0x37, 0x1d, 0xd2, 0x45, 0xa2, 0x69, 0x4f, 0xc5,
+
  0x55, 0xce, 0xa7, 0x87, 0x50, 0x7b, 0x93, 0x50, 0xbd, 0x46, 0xe8, 0x0c,
+
  0xb9, 0x85, 0x6e, 0x8f, 0x1e, 0x0d, 0x76, 0xfa, 0x76, 0x55, 0x10, 0x4d,
+
  0x90, 0x83, 0x89, 0x2b, 0xeb, 0xdc, 0x1a, 0xf1, 0x4b, 0xde, 0xb3, 0x7b,
+
  0xce, 0x60, 0x96, 0x51, 0xd7, 0x16, 0x8c, 0x32, 0x99, 0xf5, 0x08, 0x13,
+
  0xaf, 0xde, 0x1d, 0xec, 0xf6, 0xe5, 0xd7, 0x3d, 0x89, 0x38, 0xe1, 0xef,
+
  0xfb, 0xcd, 0xc0, 0x65, 0x93, 0x5e, 0x77, 0xfa, 0xe6, 0xe6, 0x9d, 0x95,
+
  0x5d, 0x01, 0x1b, 0xbd, 0x30, 0x1b, 0xc4, 0x0a, 0x77, 0xba, 0xae, 0x7c,
+
  0x76, 0xa1, 0xf8, 0x8e, 0x61, 0xc7, 0x9d, 0xce, 0xfd, 0xd8, 0xb0, 0x3b,
+
  0x8f, 0x3b, 0xd0, 0xaa, 0x2d, 0x72, 0xa7, 0x79, 0xab, 0xe8, 0xf2, 0xfa,
+
  0x6b, 0x8e, 0x23, 0xaf, 0xbf, 0xe6, 0xb8, 0x53, 0x76, 0xa9, 0x61, 0x07,
+
  0x6e, 0xe8, 0x54, 0xea, 0x65, 0xe2, 0x2b, 0xc0, 0xa7, 0xde, 0xef, 0x8c,
+
  0xb6, 0x27, 0xae, 0x40, 0xf9, 0x0b, 0x81, 0x5c, 0x8b, 0x32, 0xc6, 0xb8,
+
  0x03, 0xd0, 0x36, 0xda, 0xd3, 0xbe, 0x34, 0xd0, 0x1d, 0x6f, 0x31, 0x24,
+
  0x18, 0xf7, 0x36, 0x0c, 0x29, 0xb0, 0xb5, 0xbb, 0x37, 0x1e, 0x1c, 0x9c,
+
  0xf3, 0xa7, 0xda, 0x91, 0xdd, 0x75, 0x81, 0x58, 0x77, 0xfa, 0x91, 0xb3,
+
  0x9d, 0x76, 0x29, 0xf1, 0x1c, 0x76, 0x6d, 0x4c, 0x6b, 0xb8, 0x26, 0xee,
+
  0x6a, 0x83, 0xf0, 0xdc, 0xad, 0xe9, 0xda, 0x99, 0xf6, 0x06, 0xd3, 0x4e,
+
  0x75, 0x1d, 0xc6, 0xfd, 0x7d, 0x5f, 0x78, 0x78, 0xfb, 0x7c, 0x8b, 0x63,
+
  0x49, 0x29, 0x1d, 0x59, 0x55, 0x2d, 0xa5, 0x75, 0x15, 0xb1, 0x6d, 0xac,
+
  0xb8, 0x72, 0xdd, 0xa3, 0x55, 0x10, 0x33, 0x93, 0xf8, 0xe6, 0x9e, 0x09,
+
  0x2a, 0xd1, 0x9f, 0xb8, 0xf0, 0x6f, 0x59, 0xab, 0x19, 0x50, 0x4e, 0x95,
+
  0xb5, 0x55, 0x22, 0x9a, 0x1c, 0x77, 0x7b, 0x0a, 0xcd, 0x8e, 0x43, 0x92,
+
  0x8c, 0x18, 0x2f, 0x88, 0x9e, 0x82, 0x33, 0x5f, 0xe9, 0xa3, 0x2a, 0x04,
+
  0xf0, 0xc7, 0x58, 0x55, 0x72, 0x95, 0x80, 0xdd, 0x45, 0x7a, 0x99, 0x99,
+
  0x63, 0xc8, 0xc2, 0x60, 0x71, 0x33, 0x29, 0x74, 0x80, 0x06, 0xb8, 0x23,
+
  0x8c, 0x21, 0x0e, 0xcf, 0x3c, 0x3d, 0x2f, 0xa8, 0xa4, 0x74, 0x12, 0x45,
+
  0x1d, 0x19, 0x42, 0x4a, 0xd7, 0xa2, 0x4c, 0xe2, 0x0a, 0x75, 0x77, 0xb4,
+
  0x6d, 0x54, 0x6e, 0x75, 0x9c, 0xc0, 0x76, 0xaa, 0xbf, 0x4b, 0xf9, 0x6d,
+
  0x42, 0x68, 0x09, 0x90, 0x2e, 0x91, 0xe1, 0x3d, 0xe5, 0x2e, 0x47, 0xc7,
+
  0x9f, 0xea, 0xfa, 0xac, 0xad, 0x25, 0x43, 0xba, 0x17, 0x41, 0x89, 0xa3,
+
  0x9b, 0x14, 0x96, 0x39, 0xaa, 0x25, 0xd4, 0xa0, 0xd8, 0x58, 0xbb, 0xe8,
+
  0x4c, 0x63, 0x5b, 0xb7, 0xb6, 0xbd, 0x08, 0x78, 0x87, 0x83, 0xb8, 0x81,
+
  0x37, 0xb6, 0x7b, 0x6f, 0x72, 0xd0, 0xc6, 0xc1, 0xed, 0xe4, 0x94, 0xdd,
+
  0x72, 0xf2, 0xc1, 0x97, 0x81, 0xa3, 0x79, 0x27, 0x26, 0xba, 0x17, 0x4c,
+
  0x86, 0x60, 0xba, 0xef, 0x47, 0x2e, 0x04, 0xa3, 0x55, 0x96, 0x2c, 0xc4,
+
  0xa8, 0x25, 0x6b, 0x25, 0x7f, 0x2f, 0x35, 0xd6, 0x27, 0x65, 0x07, 0x2d,
+
  0x90, 0x86, 0x5f, 0xa1, 0x07, 0x69, 0xc3, 0xcd, 0xfe, 0x8d, 0x13, 0x51,
+
  0x3b, 0x87, 0xdd, 0x28, 0x52, 0x0d, 0x57, 0x84, 0xd9, 0x89, 0x81, 0x6f,
+
  0x56, 0x3e, 0x72, 0x60, 0x6e, 0xe9, 0xc8, 0x27, 0xfb, 0xd1, 0x40, 0x2d,
+
  0x50, 0x2e, 0x93, 0x8c, 0x43, 0x68, 0xc0, 0xb2, 0x52, 0x99, 0x93, 0x76,
+
  0x21, 0xa5, 0x43, 0xa8, 0x77, 0x20, 0xfa, 0x6b, 0xe4, 0xf9, 0x67, 0x70,
+
  0x3d, 0x76, 0x07, 0x7b, 0x18, 0x34, 0x15, 0x94, 0x19, 0x8a, 0xac, 0x20,
+
  0x93, 0x3b, 0xbf, 0x30, 0x05, 0x0d, 0x42, 0xb9, 0xa4, 0x28, 0x3a, 0xb5,
+
  0x1e, 0xe3, 0x24, 0x94, 0x6f, 0x82, 0x00, 0x35, 0x04, 0xa5, 0x3b, 0x66,
+
  0x00, 0x7d, 0x5e, 0x30, 0xdd, 0x65, 0x19, 0x6a, 0xce, 0x9d, 0xbc, 0xe9,
+
  0x40, 0xd7, 0xb3, 0xea, 0x12, 0xe6, 0x70, 0xa3, 0x04, 0xdd, 0xfb, 0x44,
+
  0xf2, 0x73, 0xef, 0xe3, 0x74, 0xc8, 0x7d, 0x39, 0x1b, 0xc0, 0x97, 0x92,
+
  0xd9, 0x02, 0x5e, 0x5f, 0x47, 0x35, 0xc2, 0x20, 0x10, 0xd9, 0x6e, 0x1f,
+
  0xf7, 0x5b, 0x9f, 0x76, 0x39, 0xdf, 0x7e, 0x7f, 0x47, 0x7b, 0xdc, 0x9d,
+
  0xf3, 0x4e, 0x02, 0xcf, 0x9e, 0x78, 0x91, 0xc6, 0x4d, 0xe9, 0xdf, 0x7d,
+
  0xe8, 0x3d, 0x16, 0xb6, 0x8e, 0x7c, 0xde, 0x8f, 0x03, 0x7d, 0x0e, 0x54,
+
  0x28, 0xff, 0xe1, 0x0f, 0x12, 0x1a, 0xfc, 0xc3, 0x1f, 0x0e, 0x22, 0x0f,
+
  0x7d, 0xe3, 0xc3, 0x22, 0x2d, 0xb3, 0x39, 0xb5, 0x0a, 0x1e, 0x44, 0xcf,
+
  0x2c, 0x7e, 0x89, 0x77, 0xa2, 0x41, 0x7c, 0x4d, 0x96, 0xe1, 0x1a, 0x82,
+
  0x17, 0xda, 0x15, 0xd3, 0x63, 0x38, 0xdb, 0xfb, 0x26, 0xa8, 0x57, 0x50,
+
  0x11, 0xab, 0xec, 0xc6, 0xdb, 0x37, 0x18, 0x09, 0x14, 0x19, 0x59, 0x78,
+
  0x60, 0x48, 0xb3, 0x19, 0xc1, 0xb8, 0xd1, 0x8a, 0xa6, 0x49, 0x39, 0xcb,
+
  0xe4, 0xc4, 0x29, 0x65, 0x57, 0x03, 0x1d, 0x1d, 0xe9, 0x9e, 0xf2, 0x0a,
+
  0x1c, 0x33, 0x3e, 0x70, 0xfc, 0xb9, 0xb9, 0x3b, 0xbe, 0xdb, 0x54, 0x9b,
+
  0xf9, 0x62, 0xc1, 0xe0, 0xa0, 0xcd, 0x6a, 0xdc, 0x10, 0x69, 0x47, 0xdf,
+
  0x64, 0xf4, 0x8b, 0x61, 0x63, 0x88, 0xd5, 0x28, 0x25, 0x9a, 0x25, 0x24,
+
  0xad, 0x7d, 0x8d, 0xef, 0xc4, 0x32, 0xa1, 0xc3, 0x59, 0x1d, 0x0f, 0x2f,
+
  0xc7, 0x0a, 0xee, 0xeb, 0x41, 0x42, 0x31, 0x6b, 0x93, 0xd2, 0x3f, 0x79,
+
  0xdb, 0x2b, 0x2d, 0x8e, 0x44, 0x32, 0xb1, 0xed, 0x9f, 0x05, 0x67, 0x15,
+
  0x38, 0x45, 0xf2, 0xbe, 0x12, 0x7e, 0xb7, 0xef, 0x61, 0xc9, 0x39, 0xe0,
+
  0xbb, 0x17, 0x9c, 0x63, 0xa0, 0x59, 0xbc, 0x2b, 0x5f, 0xa4, 0x15, 0xab,
+
  0x46, 0xa4, 0x2a, 0x32, 0x8b, 0xa3, 0x3f, 0xbf, 0x7d, 0x71, 0xe4, 0x06,
+
  0x21, 0x4c, 0x39, 0x59, 0x5b, 0xc9, 0xb0, 0x05, 0x5c, 0xc4, 0x30, 0x0d,
+
  0x20, 0x88, 0xf2, 0x71, 0xcc, 0x2a, 0x63, 0x47, 0x71, 0x43, 0x46, 0x51,
+
  0x34, 0xde, 0xb7, 0xd9, 0xc0, 0x3a, 0xe7, 0x4e, 0xda, 0xca, 0x11, 0xa6,
+
  0x85, 0x6d, 0x32, 0x38, 0x5d, 0xe6, 0x34, 0x99, 0x84, 0x1a, 0x64, 0x4b,
+
  0xec, 0x5d, 0xe9, 0xe9, 0x46, 0xa6, 0xc7, 0xc7, 0xe8, 0x13, 0x71, 0x3e,
+
  0x19, 0x7c, 0x4d, 0xe3, 0xe1, 0x06, 0x23, 0xba, 0x31, 0xf4, 0x2a, 0x9d,
+
  0x87, 0x9c, 0x82, 0x37, 0xb0, 0x40, 0xc3, 0x03, 0x85, 0x82, 0x24, 0x2c,
+
  0x1a, 0xd6, 0x79, 0xee, 0xa6, 0xf4, 0x74, 0xeb, 0x3c, 0x37, 0x9b, 0x95,
+
  0x91, 0xa3, 0xf7, 0x31, 0x3f, 0x8c, 0x7c, 0x2e, 0xf5, 0x78, 0xf0, 0x04,
+
  0x51, 0xc2, 0x5a, 0xec, 0xf1, 0xb3, 0x71, 0xc6, 0xa6, 0x1a, 0x86, 0x5e,
+
  0xdd, 0x30, 0x57, 0x94, 0x3a, 0x77, 0x46, 0x8d, 0x30, 0xfc, 0xcf, 0xd3,
+
  0x64, 0x82, 0xbc, 0x90, 0x92, 0x2d, 0x89, 0xab, 0xca, 0xd8, 0x8d, 0x3a,
+
  0x44, 0x73, 0xfa, 0x02, 0x59, 0x7b, 0xd4, 0x4e, 0xc1, 0xb0, 0xd2, 0x8c,
+
  0x13, 0xbf, 0x6d, 0x5c, 0xd8, 0xf0, 0xca, 0x2e, 0xee, 0xf9, 0xbf, 0x95,
+
  0x01, 0x4a, 0x4f, 0x80, 0xea, 0x7d, 0x3a, 0x69, 0x0a, 0xb3, 0x06, 0xf2,
+
  0x3e, 0x99, 0xb6, 0x89, 0xa9, 0x45, 0xeb, 0x86, 0xe0, 0x27, 0x40, 0xc7,
+
  0xd9, 0xc4, 0xdb, 0x37, 0x4d, 0x3e, 0x9c, 0x91, 0xe5, 0x39, 0x49, 0x67,
+
  0xc9, 0x35, 0x65, 0xad, 0xb4, 0x37, 0xd4, 0x4b, 0x2c, 0x95, 0x90, 0x02,
+
  0xef, 0x1f, 0x96, 0xa1, 0x45, 0xac, 0xf4, 0x5d, 0x13, 0x54, 0xb9, 0x3b,
+
  0x49, 0x36, 0x53, 0x09, 0x49, 0xb7, 0x40, 0x3a, 0x1d, 0xa7, 0x69, 0x30,
+
  0x33, 0x07, 0xa5, 0xa8, 0x37, 0x43, 0x6f, 0x5d, 0x1c, 0xae, 0xcb, 0x1c,
+
  0x67, 0x35, 0xeb, 0x45, 0xdb, 0x7d, 0x1d, 0xee, 0xfb, 0xa9, 0x18, 0xef,
+
  0xdd, 0x54, 0x4e, 0xd7, 0xb3, 0x62, 0x18, 0x6d, 0x53, 0xcf, 0xb4, 0x5c,
+
  0xd5, 0x73, 0x11, 0xdf, 0x52, 0xd1, 0xdc, 0xf7, 0x3c, 0x40, 0xc4, 0x54,
+
  0xbd, 0xe2, 0x81, 0xd5, 0xaa, 0x66, 0x90, 0xcf, 0xba, 0x02, 0x63, 0x7d,
+
  0x95, 0x93, 0x31, 0xb3, 0x1b, 0x4e, 0xda, 0x47, 0x4d, 0xbd, 0x93, 0x3b,
+
  0x36, 0xc6, 0x12, 0x7e, 0x89, 0x39, 0x4a, 0x14, 0xea, 0xb4, 0xc1, 0xcc,
+
  0xd6, 0x2a, 0x5a, 0x2f, 0xe8, 0x46, 0x86, 0x0d, 0x93, 0x9b, 0x5f, 0x72,
+
  0x73, 0x2b, 0x31, 0xc3, 0x94, 0x93, 0x78, 0xa2, 0x07, 0xb3, 0x53, 0xb3,
+
  0x31, 0xe6, 0xfa, 0xcf, 0xa8, 0x03, 0x31, 0x15, 0x15, 0x31, 0x11, 0x4a,
+
  0x24, 0xa0, 0x5c, 0x72, 0xdd, 0xeb, 0xe1, 0x82, 0x02, 0x69, 0xbb, 0x83,
+
  0x0f, 0x9a, 0x15, 0x1a, 0x48, 0x8a, 0x29, 0x53, 0x46, 0xcb, 0xcc, 0x15,
+
  0xb8, 0xba, 0x35, 0x1d, 0x1c, 0x98, 0x23, 0x47, 0x54, 0xac, 0x58, 0x4a,
+
  0x0a, 0x77, 0x04, 0xc2, 0xea, 0x3c, 0x3b, 0xf7, 0xec, 0xb1, 0xd1, 0x75,
+
  0x9d, 0x86, 0x8b, 0x0c, 0xa8, 0x74, 0x65, 0x93, 0x83, 0x0f, 0x60, 0xc5,
+
  0x63, 0xaa, 0x3d, 0x1c, 0xf4, 0xf7, 0xd9, 0x82, 0x16, 0x01, 0x1b, 0x01,
+
  0x98, 0xe0, 0x11, 0x76, 0xfd, 0xc8, 0xce, 0x31, 0x14, 0x2f, 0xf8, 0xf2,
+
  0x9e, 0x6f, 0xf6, 0xb7, 0x54, 0xf1, 0x26, 0x15, 0xcd, 0x91, 0xb3, 0x0e,
+
  0x9a, 0x4d, 0x95, 0x02, 0x69, 0xb4, 0xc6, 0x50, 0xa5, 0xf0, 0xbc, 0xe1,
+
  0xe4, 0xc0, 0x6c, 0x7c, 0x3a, 0xd5, 0x5e, 0xcf, 0xed, 0x44, 0xea, 0xeb,
+
  0xc5, 0xca, 0xb2, 0xab, 0x2e, 0xb2, 0xb8, 0x77, 0xa7, 0x54, 0xf0, 0x29,
+
  0xeb, 0x32, 0x87, 0xf0, 0x54, 0xd7, 0x63, 0x16, 0xdd, 0x48, 0x7e, 0x71,
+
  0x86, 0x07, 0x52, 0xca, 0x5f, 0x3c, 0x83, 0x89, 0x8b, 0x62, 0x28, 0x7a,
+
  0xcc, 0xee, 0x50, 0x89, 0x50, 0xd9, 0xf4, 0x56, 0x4e, 0x69, 0x5c, 0xd6,
+
  0x0b, 0x2c, 0x2f, 0x67, 0x44, 0x03, 0xba, 0x34, 0x50, 0x1b, 0x20, 0xf7,
+
  0xda, 0x24, 0x47, 0xea, 0xe4, 0x67, 0x2a, 0x6f, 0x24, 0xdb, 0x9a, 0x32,
+
  0x34, 0xc5, 0x01, 0x8a, 0xe1, 0x5d, 0x90, 0x13, 0x45, 0xf1, 0x3e, 0x4b,
+
  0xbd, 0x86, 0x4a, 0x13, 0x94, 0x66, 0x92, 0x9b, 0x62, 0x8b, 0x54, 0x1a,
+
  0xba, 0x39, 0x92, 0x2a, 0xb6, 0x51, 0x18, 0x0c, 0x06, 0x81, 0x2e, 0x9e,
+
  0x97, 0x59, 0x7a, 0xd5, 0x70, 0xc9, 0xc8, 0xc4, 0xfa, 0xdc, 0xf3, 0x91,
+
  0xcb, 0x3d, 0xd2, 0x56, 0x39, 0x52, 0x47, 0x5a, 0xb0, 0x23, 0x25, 0xdc,
+
  0x05, 0xed, 0x46, 0x35, 0xbb, 0x73, 0x53, 0x1a, 0x19, 0x79, 0x4d, 0x2a,
+
  0xca, 0xd6, 0x23, 0x98, 0x8e, 0x54, 0xb5, 0xf7, 0xfc, 0x6a, 0x55, 0xa8,
+
  0x21, 0xd5, 0x26, 0xfa, 0x8d, 0x6c, 0xe2, 0xd1, 0x77, 0xc6, 0x6f, 0xd6,
+
  0x47, 0xff, 0x11, 0x0a, 0x7d, 0x46, 0x20, 0x73, 0x4d, 0x31, 0x9c, 0x1a,
+
  0x23, 0xab, 0x7b, 0x4c, 0x94, 0xaa, 0x79, 0x09, 0xc5, 0x8a, 0xc3, 0xbd,
+
  0x72, 0xb7, 0xf0, 0x94, 0x66, 0xce, 0x02, 0x8d, 0x40, 0x35, 0x08, 0xab,
+
  0x7b, 0xc4, 0x39, 0x20, 0xee, 0x86, 0xad, 0xf1, 0x73, 0xa4, 0xcc, 0xae,
+
  0xaa, 0xd3, 0x85, 0x00, 0xa2, 0xb3, 0x12, 0x62, 0x4a, 0x46, 0xda, 0x91,
+
  0x5f, 0xcc, 0x91, 0x0b, 0xa6, 0x37, 0x13, 0xf0, 0x7b, 0x53, 0x56, 0x8a,
+
  0x46, 0xce, 0xb1, 0x7b, 0x75, 0xaf, 0x4b, 0x48, 0x01, 0xbd, 0x6d, 0xa2,
+
  0x09, 0xe1, 0x4c, 0x62, 0xaf, 0x2e, 0x30, 0xad, 0x22, 0x07, 0x4d, 0x6d,
+
  0xa3, 0x22, 0xf7, 0x9c, 0xd3, 0x5a, 0x4b, 0x57, 0x24, 0xab, 0xb5, 0x5b,
+
  0x70, 0x4a, 0xb9, 0xf3, 0x49, 0x88, 0x2d, 0xbb, 0xf7, 0x99, 0xfe, 0xea,
+
  0xb6, 0x02, 0x86, 0xb2, 0x29, 0x58, 0x0e, 0x51, 0x12, 0x96, 0x24, 0x87,
+
  0x90, 0x16, 0x1a, 0x42, 0x34, 0x57, 0x58, 0x30, 0x85, 0xbf, 0xe2, 0x78,
+
  0xb9, 0x28, 0x1c, 0xee, 0xb3, 0x4c, 0x12, 0x0c, 0x36, 0x90, 0xd5, 0xfe,
+
  0xaf, 0x47, 0x87, 0x2b, 0x66, 0x27, 0x38, 0x0a, 0x3a, 0x3a, 0x7e, 0x05,
+
  0xbb, 0x83, 0x47, 0x99, 0xc9, 0x94, 0x97, 0x98, 0x3b, 0xaf, 0xc2, 0xa5,
+
  0xc5, 0xb2, 0xf4, 0x70, 0xe6, 0x49, 0x2e, 0x4a, 0x57, 0x45, 0x69, 0xa4,
+
  0xe8, 0x1d, 0x0e, 0x3d, 0x14, 0xb8, 0x01, 0x83, 0x2a, 0xdd, 0x06, 0x3e,
+
  0x52, 0x6d, 0x57, 0xd5, 0x0c, 0x9f, 0x57, 0x0d, 0xb0, 0x9d, 0x69, 0x50,
+
  0x50, 0x72, 0x46, 0x26, 0x11, 0x0a, 0x10, 0x7b, 0xd3, 0x29, 0x13, 0x22,
+
  0x32, 0xd4, 0x5d, 0xf2, 0x77, 0x94, 0x07, 0x1e, 0x24, 0x73, 0xcd, 0x33,
+
  0x77, 0x2f, 0xe4, 0xce, 0xc7, 0xd2, 0x5a, 0xc6, 0x14, 0x61, 0xf1, 0x22,
+
  0x30, 0x98, 0x59, 0x60, 0x83, 0xd1, 0x88, 0xd9, 0xc0, 0x06, 0x43, 0xb0,
+
  0x91, 0x16, 0x6b, 0x59, 0x16, 0xb1, 0x37, 0xa8, 0xaa, 0x8b, 0x1e, 0x68,
+
  0x76, 0x23, 0xf3, 0x95, 0xaa, 0x1d, 0x1d, 0x7d, 0xd6, 0x0d, 0x94, 0xbd,
+
  0x9b, 0x20, 0x6b, 0x33, 0xff, 0xaa, 0xee, 0xec, 0x7e, 0xbf, 0x6b, 0x08,
+
  0xaf, 0x4b, 0x13, 0x28, 0x50, 0x38, 0x49, 0x87, 0x65, 0xc3, 0xf1, 0x39,
+
  0xf2, 0x69, 0xcb, 0xe9, 0xb7, 0x87, 0x07, 0xfb, 0x14, 0x94, 0x4b, 0x5c,
+
  0x26, 0x95, 0x49, 0x3c, 0x45, 0x36, 0xe7, 0x42, 0xa0, 0x85, 0xd2, 0xcb,
+
  0x9a, 0xd2, 0x7b, 0xf0, 0x4a, 0xb5, 0xeb, 0xdc, 0x62, 0x4f, 0x61, 0x35,
+
  0xb2, 0xc4, 0xb4, 0xbf, 0x01, 0xd8, 0x7c, 0x58, 0x40, 0x06, 0x8f, 0xa8,
+
  0xa9, 0xfb, 0x38, 0x57, 0xe0, 0xb4, 0x98, 0x23, 0xc9, 0x36, 0xeb, 0x8e,
+
  0xa2, 0xb9, 0xd2, 0x80, 0xbe, 0xb6, 0x42, 0xa5, 0x5c, 0xee, 0x2c, 0x28,
+
  0x27, 0x08, 0xb6, 0x3b, 0x1b, 0x53, 0xf7, 0x14, 0x51, 0x1a, 0x57, 0x89,
+
  0x9c, 0xe6, 0xa3, 0x5b, 0xf6, 0xc9, 0x7d, 0x88, 0x9c, 0x8e, 0x7d, 0xba,
+
  0x49, 0x73, 0xd1, 0x19, 0xad, 0x9d, 0x29, 0xf4, 0xe1, 0xda, 0xdc, 0x4c,
+
  0x98, 0x5a, 0x09, 0x31, 0x00, 0x01, 0xb5, 0x49, 0xb0, 0xbd, 0x54, 0x43,
+
  0xc7, 0xd7, 0x6e, 0x11, 0xd1, 0xd3, 0x50, 0x02, 0xe2, 0x29, 0x27, 0x94,
+
  0x91, 0x4f, 0xd4, 0x6d, 0x97, 0xc7, 0x0a, 0xa9, 0x05, 0xa9, 0x32, 0xc3,
+
  0x0c, 0x4c, 0x93, 0x80, 0x14, 0x3f, 0xea, 0xea, 0x6b, 0x21, 0xea, 0x89,
+
  0x83, 0x38, 0x50, 0x94, 0xf6, 0xc8, 0x80, 0x55, 0x62, 0x3b, 0xa8, 0xc3,
+
  0x01, 0xa3, 0x92, 0xd2, 0x19, 0xa8, 0x32, 0x5e, 0x0a, 0xfd, 0xfb, 0xce,
+
  0xfe, 0xb4, 0xce, 0x9b, 0x21, 0x0e, 0xfd, 0x81, 0x0d, 0xea, 0x5f, 0x5d,
+
  0x5d, 0x0d, 0x56, 0x65, 0x71, 0x9e, 0xc0, 0xf9, 0x79, 0x09, 0xc2, 0xe0,
+
  0x43, 0xe4, 0xf4, 0xdf, 0x96, 0x8e, 0x3d, 0x4e, 0x93, 0x81, 0xbf, 0xbc,
+
  0xf9, 0xbe, 0x6f, 0x12, 0xce, 0x04, 0x06, 0x12, 0xab, 0x9b, 0x3c, 0xe7,
+
  0x1c, 0xe8, 0xc0, 0x19, 0x17, 0xb3, 0x24, 0x60, 0xd8, 0x1d, 0x1d, 0x9e,
+
  0xbe, 0x7b, 0x7d, 0x7c, 0xf6, 0xee, 0xcd, 0xe1, 0x8f, 0xf8, 0xce, 0x7c,
+
  0x6c, 0xc0, 0xa8, 0xc1, 0xea, 0xbc, 0xb2, 0x28, 0x50, 0x13, 0x7c, 0x45,
+
  0xdd, 0xab, 0x84, 0xac, 0x83, 0xd2, 0x18, 0x8b, 0xcd, 0x09, 0xd8, 0x4e,
+
  0xe6, 0x09, 0x73, 0x39, 0x88, 0x1a, 0x2f, 0xf8, 0x3e, 0x2d, 0xf3, 0x74,
+
  0x36, 0x28, 0xca, 0x73, 0x64, 0xcc, 0xdb, 0xcf, 0x44, 0xc9, 0x0b, 0x0e,
+
  0xb7, 0x2d, 0xa8, 0x53, 0x98, 0xf1, 0x77, 0x59, 0x4e, 0x31, 0x41, 0x2d,
+
  0x98, 0xc2, 0x6b, 0x57, 0x74, 0x45, 0xfa, 0x2e, 0xbb, 0x35, 0x3e, 0x61,
+
  0x8f, 0xd3, 0xe6, 0xbe, 0xae, 0x79, 0x3e, 0x26, 0x79, 0x65, 0x07, 0x70,
+
  0xce, 0xc1, 0x03, 0xe2, 0x02, 0x8b, 0xcb, 0x07, 0x2b, 0xac, 0xab, 0xda,
+
  0x0b, 0xb8, 0xb6, 0x50, 0x94, 0xc8, 0x61, 0x42, 0xfe, 0x2b, 0x14, 0xab,
+
  0x94, 0x69, 0xda, 0x29, 0x14, 0xfa, 0x0d, 0x87, 0x9b, 0xd2, 0x3a, 0xba,
+
  0x71, 0x10, 0x36, 0x68, 0x15, 0xc3, 0x32, 0x53, 0xfd, 0x04, 0xce, 0x14,
+
  0x1a, 0xf6, 0x8e, 0xfe, 0xeb, 0xa6, 0x37, 0xe5, 0x6e, 0xe9, 0x48, 0x8f,
+
  0xe4, 0xdd, 0xdc, 0xbc, 0x7d, 0xf3, 0xd9, 0xba, 0x5b, 0xf3, 0xe8, 0x53,
+
  0x6c, 0xcd, 0x83, 0x55, 0x5b, 0x63, 0xa6, 0xfa, 0x69, 0xb6, 0xe6, 0xd1,
+
  0x7d, 0xb8, 0xb9, 0x42, 0xce, 0x28, 0xc7, 0xf9, 0xd4, 0xb9, 0x35, 0x86,
+
  0xec, 0x5c, 0xe9, 0xf1, 0x6b, 0x05, 0xa3, 0x84, 0xfb, 0x39, 0x8b, 0x03,
+
  0x1e, 0x61, 0x71, 0x2a, 0x4d, 0xcd, 0x31, 0xe2, 0xe2, 0x3f, 0x87, 0x27,
+
  0xaf, 0xa5, 0xfb, 0x32, 0xe6, 0xd5, 0x36, 0xa1, 0x6e, 0x8b, 0x80, 0x72,
+
  0xe6, 0x24, 0x83, 0x0e, 0xf4, 0xb9, 0xa6, 0x31, 0x4b, 0x82, 0x15, 0x39,
+
  0x65, 0x3d, 0x46, 0x86, 0x48, 0xa5, 0xa2, 0x0b, 0xb7, 0xda, 0x93, 0x6a,
+
  0x61, 0xbd, 0x80, 0x49, 0x99, 0xaa, 0x3d, 0xea, 0xf7, 0xcb, 0x54, 0x4c,
+
  0xd4, 0xbf, 0x25, 0xe5, 0xf9, 0x2f, 0xfe, 0x77, 0x52, 0xfd, 0xd7, 0x33,
+
  0x6d, 0xea, 0xaf, 0x17, 0xe9, 0x01, 0x62, 0xda, 0xce, 0x44, 0x19, 0xdd,
+
  0xc6, 0xe9, 0xf5, 0xba, 0x6f, 0x3c, 0x24, 0xe0, 0xa9, 0xd0, 0x2d, 0x3e,
+
  0xc8, 0x61, 0xc9, 0xcd, 0xe7, 0x80, 0x78, 0x1a, 0xd6, 0x96, 0x31, 0x15,
+
  0xf0, 0x55, 0xd9, 0x92, 0xd0, 0x66, 0xd6, 0xc9, 0x18, 0x37, 0x94, 0x96,
+
  0xd8, 0x03, 0x33, 0xb3, 0xf7, 0x55, 0xd7, 0x20, 0x0c, 0x3e, 0xe0, 0xf5,
+
  0xe2, 0x1a, 0x0b, 0x65, 0x6b, 0x53, 0x6d, 0x39, 0xa1, 0x52, 0xd6, 0x16,
+
  0x52, 0x58, 0x2a, 0x50, 0x18, 0x77, 0x35, 0xfa, 0xb6, 0xaf, 0xc0, 0x17,
+
  0x75, 0x13, 0xef, 0x34, 0x09, 0xc1, 0xb4, 0x68, 0x86, 0x7d, 0xc1, 0xbd,
+
  0x26, 0x22, 0x3b, 0x2e, 0x2a, 0x6e, 0xfd, 0x88, 0xf2, 0xf5, 0xa5, 0x03,
+
  0xe9, 0x24, 0xa9, 0x2e, 0xa2, 0xcd, 0x78, 0x0b, 0xdd, 0x57, 0x7e, 0xfe,
+
  0x30, 0xf5, 0xac, 0xd2, 0x03, 0x6f, 0x4a, 0xb4, 0xcd, 0x50, 0x5a, 0x9b,
+
  0x7d, 0x5a, 0x70, 0x79, 0x83, 0xfd, 0x42, 0xec, 0x82, 0x40, 0xe6, 0xff,
+
  0x24, 0xda, 0x98, 0x16, 0xc5, 0x28, 0x29, 0x37, 0x04, 0xbe, 0x81, 0xea,
+
  0xe9, 0xa5, 0xa9, 0xa8, 0xaa, 0x74, 0x44, 0x79, 0xdf, 0xf2, 0x75, 0x91,
+
  0xb8, 0xf3, 0xba, 0x90, 0x8e, 0xbb, 0xa6, 0xd5, 0x27, 0x0e, 0xa5, 0x63,
+
  0xc5, 0xc1, 0x32, 0xad, 0x50, 0xa2, 0xfc, 0x9c, 0xcd, 0x77, 0x8a, 0x87,
+
  0x8f, 0x53, 0xd3, 0x7c, 0x18, 0x97, 0xd4, 0xcd, 0x4c, 0xef, 0x07, 0x92,
+
  0x23, 0x80, 0x13, 0x66, 0xec, 0xba, 0xe7, 0xc9, 0x2c, 0x32, 0x84, 0x1f,
+
  0x33, 0x72, 0x18, 0x6c, 0x18, 0x34, 0x1d, 0x19, 0x31, 0x41, 0x1b, 0x38,
+
  0x69, 0x0f, 0x42, 0xaf, 0x92, 0x96, 0x8c, 0x66, 0x01, 0x79, 0x0a, 0x02,
+
  0x73, 0xaa, 0x97, 0xca, 0x7d, 0x89, 0x2a, 0xb5, 0xf9, 0xf5, 0xd2, 0xe8,
+
  0x70, 0x92, 0xaa, 0xa6, 0xec, 0x54, 0xd5, 0xfa, 0x98, 0x05, 0xcb, 0x0a,
+
  0xe8, 0x39, 0x90, 0xb1, 0x4f, 0xcb, 0xf7, 0xe9, 0x6a, 0x70, 0x79, 0xfc,
+
  0x8d, 0x7f, 0x44, 0xbd, 0x49, 0x99, 0xe5, 0xef, 0x7b, 0x07, 0x51, 0x6f,
+
  0x5c, 0x00, 0xeb, 0xee, 0x45, 0xff, 0xdc, 0x58, 0x03, 0xa5, 0xb9, 0x3d,
+
  0xca, 0x86, 0xf9, 0xec, 0x23, 0xc6, 0xfb, 0x16, 0x91, 0x67, 0x12, 0xb4,
+
  0xb4, 0xd6, 0xbd, 0x31, 0x0e, 0xdd, 0x11, 0x3d, 0x8d, 0xf0, 0xdb, 0x90,
+
  0xe2, 0xd7, 0x90, 0xf4, 0x2e, 0xe2, 0xb9, 0xf4, 0x5b, 0xc2, 0x4f, 0xca,
+
  0xe4, 0xea, 0x6e, 0x69, 0xae, 0x16, 0x6b, 0x87, 0x46, 0x33, 0x70, 0x56,
+
  0x1a, 0x0c, 0x3e, 0xa3, 0xcc, 0x1a, 0xc6, 0xb4, 0x89, 0xd9, 0xfb, 0xdd,
+
  0xaa, 0x40, 0x72, 0x2a, 0xab, 0x9a, 0xa8, 0x6d, 0xbf, 0xe2, 0x58, 0xbf,
+
  0x2e, 0xf3, 0xf7, 0x31, 0x88, 0x7f, 0x74, 0x68, 0xc6, 0xe2, 0x0a, 0x0d,
+
  0xcb, 0x29, 0x9b, 0x07, 0xe6, 0x94, 0x12, 0xd1, 0xf9, 0x95, 0xdb, 0x94,
+
  0x79, 0x70, 0x70, 0x51, 0x4b, 0xa4, 0xba, 0x42, 0xe7, 0x36, 0xa3, 0x02,
+
  0xd3, 0xc7, 0xb2, 0x6a, 0x8c, 0x39, 0xa3, 0x58, 0xaa, 0xd2, 0x93, 0xd9,
+
  0xe8, 0xb0, 0x3d, 0x59, 0x38, 0x3e, 0x88, 0x89, 0x2f, 0x7d, 0xc7, 0x2c,
+
  0x9b, 0xc9, 0x74, 0x10, 0x29, 0x4a, 0x2c, 0x54, 0x9a, 0xe3, 0x24, 0x15,
+
  0x67, 0x6a, 0xe4, 0xe9, 0x55, 0xa4, 0x43, 0x23, 0x96, 0x08, 0x32, 0x6d,
+
  0xbf, 0x60, 0x0b, 0x24, 0x15, 0x0e, 0x18, 0x8d, 0x4a, 0x30, 0xf4, 0xa9,
+
  0xac, 0x62, 0x76, 0x85, 0xa8, 0x5a, 0x3a, 0xc3, 0xd6, 0xe4, 0x4c, 0xb1,
+
  0x3f, 0x81, 0x59, 0x27, 0x9e, 0xdb, 0x72, 0x3c, 0x2b, 0xf0, 0xd8, 0x61,
+
  0x90, 0x62, 0x95, 0x56, 0xd4, 0xb9, 0x15, 0xab, 0xb4, 0xa4, 0x3b, 0x44,
+
  0x0c, 0x42, 0x8f, 0x58, 0x57, 0xcb, 0x0a, 0x4e, 0x33, 0x1e, 0xe9, 0x8a,
+
  0xac, 0x5f, 0xbb, 0x33, 0x62, 0x5c, 0x6b, 0xbc, 0x9b, 0x89, 0x7c, 0x6c,
+
  0x3f, 0x88, 0x7f, 0x4d, 0x1a, 0x3d, 0xed, 0xdf, 0xa7, 0x70, 0xa8, 0x67,
+
  0x40, 0x60, 0x8c, 0x43, 0xfb, 0xb4, 0x03, 0xca, 0xba, 0x11, 0x84, 0xaf,
+
  0xb4, 0x3f, 0x0f, 0x17, 0x8d, 0xb9, 0x2e, 0x62, 0x32, 0x46, 0x99, 0x8e,
+
  0xe7, 0x54, 0x54, 0x87, 0x25, 0x5a, 0x23, 0x2f, 0xb4, 0xe0, 0x72, 0xf3,
+
  0xc8, 0x4c, 0x01, 0xed, 0xbb, 0x91, 0xf5, 0x5d, 0xb1, 0x0f, 0xde, 0x81,
+
  0x11, 0xb5, 0x35, 0x6b, 0xad, 0xe1, 0xda, 0x23, 0x10, 0x70, 0x55, 0x56,
+
  0x39, 0xa0, 0xc3, 0xbc, 0x97, 0x78, 0x45, 0x61, 0x9c, 0x0a, 0x58, 0x55,
+
  0x7d, 0x0d, 0x52, 0x73, 0xee, 0xa3, 0xcd, 0x4e, 0xd3, 0x92, 0x41, 0x2c,
+
  0x71, 0x16, 0x67, 0x47, 0xa7, 0xef, 0xfe, 0x74, 0x7c, 0x7c, 0xfa, 0xe2,
+
  0xd9, 0xcb, 0x63, 0xe1, 0x12, 0xe6, 0xa3, 0xd7, 0x67, 0x7f, 0x79, 0x09,
+
  0xc7, 0xa3, 0x18, 0xbf, 0x47, 0xb3, 0x53, 0x94, 0xbb, 0xf6, 0x71, 0x97,
+
  0x12, 0x75, 0x36, 0x9c, 0xfb, 0xb0, 0x34, 0x63, 0x74, 0x95, 0x1e, 0xbe,
+
  0xf8, 0xa9, 0x1f, 0x3d, 0x3f, 0x8d, 0xdf, 0xfe, 0x24, 0x83, 0xa2, 0xa8,
+
  0xdd, 0xc2, 0x92, 0xfc, 0x3f, 0xe9, 0xeb, 0x54, 0xa1, 0x13, 0xc0, 0xcd,
+
  0x11, 0x24, 0x8d, 0x13, 0x7b, 0x16, 0x32, 0xe2, 0x37, 0x76, 0x30, 0x4a,
+
  0x6b, 0xea, 0x55, 0x5a, 0x16, 0xef, 0xd3, 0x5c, 0x61, 0x9d, 0xd1, 0x0e,
+
  0xe1, 0x6d, 0xe8, 0x06, 0xda, 0x16, 0x20, 0x54, 0x17, 0xf5, 0x9b, 0x34,
+
  0x3c, 0xbb, 0xae, 0xba, 0x35, 0x2a, 0x89, 0x11, 0x16, 0x75, 0x96, 0x94,
+
  0xbe, 0x49, 0xd3, 0x82, 0x91, 0x8c, 0xb8, 0x87, 0x0e, 0x69, 0xfd, 0x27,
+
  0x43, 0xb8, 0x8b, 0xb0, 0xcb, 0x04, 0x66, 0x81, 0x14, 0xc1, 0xf9, 0x9c,
+
  0xec, 0xa4, 0x2f, 0x51, 0x0f, 0xdb, 0xdd, 0x59, 0x85, 0xfd, 0xe8, 0xb5,
+
  0xe8, 0xa2, 0x13, 0x68, 0xe7, 0xd8, 0x05, 0xdb, 0x0d, 0xaa, 0xcd, 0x32,
+
  0x37, 0x76, 0x00, 0xeb, 0x8e, 0x1a, 0xbc, 0x74, 0xb0, 0xac, 0x1f, 0xed,
+
  0x44, 0x8a, 0x73, 0x1e, 0xf4, 0x44, 0xb4, 0x4e, 0x8a, 0xeb, 0x8e, 0x30,
+
  0x5a, 0x40, 0x87, 0x43, 0xe2, 0xde, 0x21, 0x47, 0x5b, 0x73, 0xd9, 0x5b,
+
  0xd7, 0x25, 0xd1, 0x58, 0x37, 0x62, 0x11, 0x0d, 0x38, 0xea, 0x26, 0x83,
+
  0xb8, 0x8e, 0x6b, 0xb0, 0x36, 0xa2, 0xa7, 0xf8, 0xef, 0x37, 0x81, 0x28,
+
  0x12, 0xc2, 0x1c, 0x94, 0xd9, 0x25, 0x86, 0x01, 0xe0, 0x62, 0x56, 0xba,
+
  0xf1, 0xda, 0x81, 0x29, 0x00, 0x95, 0x0a, 0x52, 0x1c, 0x85, 0xf0, 0xd3,
+
  0x68, 0x54, 0x5c, 0x3e, 0x0f, 0x39, 0x94, 0x96, 0x73, 0xe1, 0x8c, 0x96,
+
  0x01, 0x6d, 0x3e, 0x3b, 0x7e, 0xd3, 0x8f, 0x4e, 0x8f, 0x5f, 0xb1, 0x91,
+
  0x7c, 0xfc, 0xfa, 0x07, 0x86, 0x89, 0x91, 0x94, 0x07, 0xc4, 0x59, 0x27,
+
  0xf5, 0xd5, 0x6f, 0xd8, 0xe5, 0x6c, 0x3a, 0xdc, 0x4e, 0x86, 0x4a, 0x55,
+
  0x2d, 0xe7, 0x61, 0x1a, 0x71, 0x5e, 0x75, 0xad, 0x4a, 0xf1, 0x0e, 0xd0,
+
  0xde, 0x50, 0xf1, 0xf2, 0x8d, 0xbb, 0x2a, 0xcf, 0x87, 0x17, 0x96, 0x35,
+
  0x22, 0x63, 0x6c, 0xbd, 0xbd, 0xc5, 0x12, 0xff, 0xe6, 0xfe, 0x45, 0x4f,
+
  0xe1, 0x9f, 0x6f, 0x82, 0xf1, 0xbf, 0xe1, 0xf3, 0x2d, 0x7f, 0xf3, 0xc4,
+
  0x1d, 0xda, 0x00, 0xa4, 0x93, 0xf5, 0xe0, 0xfd, 0x5b, 0xf8, 0x91, 0x2f,
+
  0x1a, 0x81, 0x77, 0x4c, 0x02, 0x6a, 0x26, 0x83, 0x89, 0x81, 0xaf, 0x30,
+
  0x10, 0x03, 0x8f, 0xeb, 0xe3, 0xc1, 0x45, 0x3f, 0x87, 0xb3, 0x37, 0xa1,
+
  0x86, 0xcc, 0xa5, 0x89, 0xa4, 0x39, 0x18, 0x39, 0xa8, 0x79, 0x4f, 0x32,
+
  0x0c, 0x24, 0x57, 0x1c, 0x51, 0x21, 0xa8, 0xec, 0x03, 0xb8, 0x7e, 0xe3,
+
  0xff, 0xdd, 0xc6, 0x68, 0xc9, 0x76, 0x36, 0x79, 0x57, 0x56, 0xc9, 0x46,
+
  0xdb, 0x1c, 0x71, 0xbe, 0x9e, 0xe0, 0xd7, 0xd1, 0xc6, 0xc0, 0x5c, 0x2a,
+
  0xbf, 0xe3, 0xe7, 0x41, 0xab, 0x48, 0x35, 0x34, 0x4e, 0x61, 0x50, 0xd0,
+
  0xfc, 0x13, 0x60, 0x64, 0xc3, 0xe1, 0x4b, 0x4c, 0x72, 0x28, 0x13, 0x0c,
+
  0xcc, 0xa8, 0xd0, 0x4a, 0xf3, 0x73, 0x0c, 0x72, 0x2d, 0xde, 0x8f, 0xab,
+
  0xdd, 0x5d, 0x3f, 0xc7, 0xdb, 0xa4, 0xc1, 0x99, 0xfe, 0x07, 0xa7, 0x7f,
+
  0x3a, 0x1a, 0xfe, 0x6e, 0x77, 0x97, 0x7a, 0x70, 0x6c, 0x62, 0x4f, 0x80,
+
  0xc7, 0x0f, 0x77, 0xf7, 0xb6, 0x42, 0x3e, 0xe0, 0xf6, 0x9a, 0x4b, 0xe3,
+
  0x59, 0x67, 0xfb, 0x08, 0x02, 0x49, 0x7a, 0xff, 0x98, 0x81, 0x27, 0x29,
+
  0xe2, 0xdd, 0x72, 0xd3, 0x59, 0xc6, 0x95, 0x60, 0x20, 0x60, 0xaf, 0xa7,
+
  0xb6, 0xd3, 0x50, 0xbb, 0xc7, 0xf3, 0x3f, 0xe8, 0x19, 0x36, 0x65, 0x7a,
+
  0x97, 0x28, 0x50, 0xbb, 0x33, 0x6f, 0xaa, 0xff, 0x6f, 0xab, 0x4f, 0xee,
+
  0x7b, 0x65, 0x2e, 0x9a, 0x0c, 0x37, 0xdb, 0xc6, 0x48, 0x7d, 0x2c, 0x8b,
+
  0x15, 0x80, 0x90, 0xf2, 0xc0, 0x61, 0x64, 0x46, 0x3d, 0xa6, 0x1f, 0x34,
+
  0x8e, 0x1d, 0x88, 0x1a, 0xb3, 0xfa, 0xce, 0x21, 0x6a, 0x24, 0x5d, 0x7b,
+
  0xe9, 0xc3, 0xfc, 0x8c, 0xa8, 0x07, 0xdc, 0x24, 0x3c, 0xe4, 0x1a, 0xb4,
+
  0x30, 0xe4, 0xa8, 0x09, 0xe1, 0x7b, 0x51, 0xee, 0x0f, 0x92, 0xba, 0x36,
+
  0x7a, 0xab, 0x35, 0xc2, 0xdc, 0x59, 0xe4, 0xc3, 0x09, 0x23, 0x1c, 0x6e,
+
  0xc6, 0x43, 0x69, 0xa3, 0x66, 0x9b, 0x52, 0x0f, 0x92, 0xd6, 0xe3, 0x2d,
+
  0x14, 0xd1, 0x98, 0xd0, 0xa0, 0x88, 0x17, 0x9e, 0x91, 0xb3, 0xa0, 0xd6,
+
  0x21, 0x84, 0xe3, 0x66, 0x09, 0x82, 0x5d, 0xfd, 0xda, 0x53, 0xba, 0x15,
+
  0xa5, 0x85, 0x0b, 0x60, 0x96, 0x7c, 0x8e, 0x82, 0x9b, 0xb7, 0xc7, 0xfc,
+
  0xc0, 0x81, 0x21, 0x69, 0x45, 0x8a, 0x3b, 0xd0, 0x5e, 0xf0, 0xc9, 0x77,
+
  0x60, 0xa2, 0x1d, 0xbd, 0xa5, 0xd6, 0x94, 0x8d, 0x14, 0x7a, 0x72, 0x63,
+
  0xd3, 0x1f, 0xc3, 0x49, 0x99, 0x94, 0x48, 0x42, 0x1e, 0xf7, 0x65, 0xf0,
+
  0x06, 0x77, 0x2d, 0x47, 0xd1, 0x53, 0x02, 0x4b, 0x0d, 0xb7, 0xb2, 0x3c,
+
  0x26, 0xd8, 0x0c, 0xd0, 0xe8, 0x4a, 0xd0, 0xac, 0x8a, 0xaa, 0xd5, 0xce,
+
  0x4d, 0x23, 0x8c, 0xac, 0x7e, 0xd1, 0x30, 0x06, 0xa3, 0xbf, 0xbd, 0xbf,
+
  0x78, 0xfc, 0x84, 0xd0, 0x2d, 0x16, 0x90, 0x80, 0x98, 0x6e, 0x50, 0x67,
+
  0x39, 0x64, 0x65, 0x55, 0x32, 0x4d, 0xf1, 0x27, 0x75, 0xb5, 0x41, 0x45,
+
  0x2b, 0x4b, 0x66, 0x1b, 0x7d, 0x7f, 0x7f, 0x37, 0x84, 0x48, 0x36, 0x30,
+
  0x3e, 0x2f, 0x1e, 0x34, 0x02, 0xc4, 0xa4, 0x1e, 0xdf, 0x49, 0x24, 0x93,
+
  0xd1, 0xea, 0x21, 0x64, 0xd8, 0x16, 0x30, 0xb5, 0xf2, 0xdc, 0x3d, 0x66,
+
  0x38, 0x6d, 0xc3, 0x65, 0xda, 0x6e, 0x75, 0x69, 0x64, 0xbc, 0x74, 0xeb,
+
  0xd1, 0x48, 0xd7, 0x59, 0xbe, 0x93, 0x06, 0x05, 0x4f, 0xe7, 0x7e, 0x7c,
+
  0xb7, 0x83, 0x58, 0x31, 0xc1, 0x9c, 0x14, 0xbb, 0x2f, 0x99, 0xcd, 0xe3,
+
  0x86, 0x70, 0x32, 0xde, 0xfd, 0x65, 0x71, 0x2a, 0xbd, 0xb8, 0xa4, 0xa6,
+
  0x37, 0x3c, 0x0d, 0x01, 0x26, 0x1f, 0x72, 0x63, 0x74, 0xd7, 0xf9, 0x45,
+
  0x60, 0x2b, 0xd8, 0x25, 0x6e, 0xc2, 0xce, 0x13, 0x69, 0xee, 0x2b, 0xb0,
+
  0xda, 0xe4, 0xb4, 0x13, 0xc3, 0x23, 0xe0, 0xe9, 0xb4, 0xa8, 0x07, 0xf2,
+
  0xd8, 0x98, 0xe3, 0xaf, 0xd1, 0x51, 0xc4, 0xc9, 0x1b, 0xd4, 0x49, 0xca,
+
  0x74, 0xd8, 0x70, 0x00, 0x56, 0x42, 0xa5, 0x52, 0x52, 0x9e, 0x07, 0xc2,
+
  0x11, 0x16, 0x08, 0xf6, 0x32, 0xe5, 0x0e, 0x18, 0xd4, 0x75, 0x9d, 0x14,
+
  0x0a, 0x99, 0x16, 0xa3, 0x8c, 0xda, 0x98, 0x2f, 0xde, 0xf7, 0x1f, 0x37,
+
  0xb4, 0x21, 0x10, 0xc0, 0x62, 0xee, 0x43, 0x9d, 0x6a, 0x9f, 0x03, 0x16,
+
  0x9a, 0x23, 0xb7, 0xa7, 0x11, 0x05, 0x56, 0xfc, 0xe6, 0x1d, 0x94, 0x46,
+
  0x4d, 0xb6, 0x44, 0xfa, 0xa1, 0x0e, 0x53, 0xaa, 0xae, 0xfc, 0x1d, 0xa8,
+
  0xf5, 0x5e, 0xf4, 0x42, 0xd3, 0x83, 0x87, 0x90, 0xf3, 0x07, 0xe3, 0x7b,
+
  0xc9, 0x0d, 0x8b, 0xa9, 0x61, 0x47, 0x4c, 0x1a, 0xda, 0x53, 0x58, 0xa5,
+
  0x74, 0xf2, 0x4d, 0x07, 0x7c, 0x0b, 0x6b, 0x61, 0x60, 0x1b, 0x64, 0xf3,
+
  0xe5, 0xdc, 0x4d, 0x14, 0xa7, 0x7b, 0x91, 0x6b, 0x34, 0x1c, 0xe3, 0xe4,
+
  0x67, 0x0e, 0x14, 0x4c, 0x51, 0x67, 0x09, 0xdb, 0x2a, 0x9c, 0x58, 0x1f,
+
  0x79, 0xd9, 0xaa, 0x41, 0x13, 0x2d, 0x8a, 0xed, 0x38, 0x4c, 0xc2, 0x65,
+
  0x2f, 0x3c, 0x3b, 0xa2, 0x12, 0x2f, 0x0e, 0xcf, 0xfd, 0x46, 0x16, 0x99,
+
  0x30, 0x68, 0x9a, 0x08, 0x71, 0x32, 0x4a, 0x49, 0x24, 0xba, 0x32, 0x73,
+
  0xa5, 0x86, 0x96, 0x92, 0x7d, 0x4a, 0x04, 0x5f, 0xfa, 0xfc, 0x15, 0xfb,
+
  0x77, 0x8e, 0x60, 0xa4, 0xab, 0x6c, 0x52, 0x5f, 0x0c, 0x30, 0xe3, 0x50,
+
  0xbd, 0x69, 0x15, 0xb7, 0x3a, 0x21, 0x37, 0x78, 0xe6, 0xf7, 0x44, 0x1c,
+
  0xa5, 0xe1, 0x56, 0x51, 0xec, 0xb7, 0xa3, 0xb5, 0x8d, 0xb8, 0xe0, 0x14,
+
  0x91, 0x79, 0x49, 0x3b, 0xa3, 0xac, 0xde, 0x6d, 0xb6, 0x37, 0xfb, 0x0a,
+
  0xaa, 0x95, 0xc0, 0xf9, 0x9f, 0x4e, 0xb3, 0x0f, 0x7e, 0x76, 0x9d, 0x36,
+
  0x2f, 0x1c, 0xe8, 0x49, 0xc7, 0xb3, 0xb8, 0xf1, 0x7e, 0x03, 0x35, 0x8d,
+
  0x8d, 0x3f, 0x09, 0xd7, 0x1d, 0x17, 0xcb, 0x9c, 0xd9, 0x8e, 0x18, 0xf2,
+
  0x04, 0x38, 0xfc, 0x3e, 0x9b, 0x15, 0xc1, 0x9c, 0x62, 0x38, 0xfd, 0x1b,
+
  0x73, 0x1e, 0xe1, 0xd5, 0x86, 0xa6, 0xf5, 0xd5, 0x30, 0xcb, 0xf3, 0x44,
+
  0xbe, 0x07, 0xb3, 0x0d, 0xce, 0xf3, 0xc6, 0x39, 0x5f, 0xf4, 0x83, 0xbd,
+
  0xa8, 0x35, 0x1c, 0xa6, 0x2d, 0x73, 0x9a, 0x32, 0xbd, 0x37, 0xbf, 0x04,
+
  0x5c, 0xb8, 0xf9, 0xbe, 0x1f, 0x81, 0xd1, 0xf6, 0x43, 0x3f, 0x3a, 0x03,
+
  0x03, 0x6c, 0x8b, 0xac, 0xb6, 0xdd, 0x9d, 0xbd, 0x07, 0xb0, 0xca, 0xd4,
+
  0x33, 0x92, 0x72, 0xb3, 0xd2, 0x0f, 0x5e, 0x5a, 0x3a, 0xc5, 0x3e, 0x77,
+
  0xdf, 0xe3, 0x9a, 0xe1, 0xe5, 0x03, 0xeb, 0x35, 0xc7, 0x86, 0x53, 0x7f,
+
  0xea, 0x47, 0xfb, 0xec, 0xbc, 0xdd, 0xfd, 0x21, 0xb8, 0xee, 0x44, 0x96,
+
  0x44, 0x1e, 0xc4, 0x67, 0x8b, 0xf3, 0x6c, 0x1c, 0x19, 0x4f, 0x48, 0x82,
+
  0xc7, 0xf6, 0x5c, 0x55, 0x19, 0x43, 0x1f, 0xbc, 0x49, 0x5e, 0x8d, 0x05,
+
  0x66, 0xe1, 0x50, 0x04, 0x44, 0x72, 0xb4, 0x39, 0xb3, 0xaf, 0xa6, 0x58,
+
  0x1e, 0x48, 0x61, 0xd8, 0x7b, 0x2a, 0xdb, 0x4d, 0x10, 0x04, 0x29, 0xa3,
+
  0x6a, 0x13, 0xeb, 0x5f, 0xac, 0x7c, 0x85, 0xbd, 0xcb, 0xb9, 0x40, 0xc8,
+
  0xcc, 0x78, 0x58, 0x15, 0x8c, 0x2d, 0xfe, 0x2b, 0x1e, 0x5a, 0x9a, 0x14,
+
  0x9f, 0x53, 0xd3, 0xa0, 0x90, 0x4b, 0xcd, 0xdd, 0x2a, 0xba, 0xb6, 0xe5,
+
  0x84, 0x34, 0xbb, 0x40, 0x1f, 0xd3, 0x44, 0xc1, 0x7c, 0xa3, 0x39, 0xa5,
+
  0x0b, 0x8e, 0xcb, 0x6c, 0x41, 0x8e, 0x4f, 0x59, 0xa3, 0xd8, 0xac, 0x11,
+
  0xd7, 0x8a, 0xcc, 0xc0, 0x8a, 0xf1, 0x56, 0x80, 0x60, 0x12, 0xd1, 0x57,
+
  0xa0, 0x4b, 0xe6, 0x4e, 0xca, 0xae, 0x6d, 0x28, 0x2a, 0xc3, 0xba, 0xa0,
+
  0xc3, 0x66, 0x3e, 0x3d, 0xf2, 0x5f, 0xd5, 0xcd, 0x42, 0xcd, 0x2c, 0x76,
+
  0x81, 0x84, 0xd6, 0x08, 0x61, 0x34, 0xef, 0xdc, 0xb9, 0xeb, 0x9d, 0xaf,
+
  0xd6, 0xd4, 0x3d, 0xf1, 0xb6, 0x7e, 0x80, 0x0e, 0x48, 0xe9, 0xb8, 0xb6,
+
  0x9f, 0xb6, 0xdc, 0x35, 0xb3, 0x3e, 0x3d, 0xb8, 0xaa, 0x83, 0xa5, 0xbb,
+
  0x98, 0x06, 0x79, 0x7a, 0x72, 0xba, 0xbf, 0x25, 0xda, 0x29, 0x45, 0x20,
+
  0x66, 0x82, 0xc6, 0x86, 0xe9, 0x56, 0xdc, 0xaf, 0xd8, 0x49, 0x37, 0x64,
+
  0x8d, 0x42, 0xda, 0x6c, 0xfa, 0x4e, 0xdc, 0x71, 0xca, 0xf8, 0xd7, 0xe8,
+
  0x31, 0xe0, 0xda, 0x1d, 0x4c, 0xd2, 0xb6, 0xbd, 0x63, 0x52, 0x12, 0xbf,
+
  0x14, 0x4e, 0xb0, 0x2c, 0x9d, 0x14, 0xa3, 0xca, 0x8b, 0xba, 0xa1, 0x10,
+
  0xa9, 0x18, 0xfb, 0x7e, 0x7c, 0x01, 0x7a, 0x40, 0x4c, 0xcd, 0x3b, 0x4d,
+
  0xf3, 0x6c, 0x6a, 0x73, 0x89, 0x9d, 0x3d, 0xbc, 0x59, 0x46, 0x0c, 0xc0,
+
  0x14, 0x72, 0x44, 0x4a, 0xc3, 0x4c, 0xe7, 0x5a, 0x4a, 0x22, 0x37, 0x8a,
+
  0x02, 0x9e, 0xb7, 0xc4, 0x22, 0x6c, 0x60, 0xba, 0x17, 0xf2, 0x3a, 0x78,
+
  0x33, 0xaf, 0x39, 0x77, 0xd2, 0xe8, 0x1d, 0x42, 0x22, 0x06, 0xd7, 0xa6,
+
  0xe1, 0x4e, 0x1c, 0x27, 0x4b, 0x4e, 0x6c, 0x8c, 0x5e, 0xbf, 0x1c, 0x9e,
+
  0x39, 0x4d, 0x4c, 0xbc, 0x63, 0x25, 0x5d, 0x9d, 0x4c, 0x33, 0x79, 0xce,
+
  0x9f, 0x77, 0xb0, 0x85, 0x5e, 0xbe, 0x18, 0x9e, 0x79, 0x54, 0x8e, 0xbd,
+
  0x10, 0x0e, 0x80, 0x4c, 0x30, 0x5d, 0x94, 0x17, 0x41, 0x2b, 0x54, 0x68,
+
  0x17, 0x23, 0x4e, 0x39, 0xe1, 0xe2, 0x12, 0xb6, 0xf1, 0xb2, 0xd2, 0x16,
+
  0x01, 0x78, 0x93, 0xc0, 0x49, 0x7e, 0xc5, 0x91, 0x16, 0x41, 0x61, 0xd7,
+
  0x34, 0xf8, 0x6a, 0x39, 0x8a, 0x75, 0xcd, 0x14, 0x6e, 0xb5, 0xba, 0x9e,
+
  0x8f, 0x0a, 0xcc, 0x24, 0x05, 0x25, 0xed, 0xbd, 0xcf, 0xc6, 0x36, 0x99,
+
  0xb0, 0x7e, 0xe4, 0x7c, 0x17, 0xf4, 0xdf, 0x5c, 0x36, 0x12, 0xf6, 0xc6,
+
  0x51, 0x4a, 0x78, 0xe1, 0x14, 0xd3, 0xc2, 0x6b, 0x6f, 0x4d, 0x5c, 0xb8,
+
  0x14, 0x6e, 0x25, 0x0b, 0xac, 0x9d, 0xc1, 0x9c, 0x73, 0x97, 0x0c, 0x2b,
+
  0x5e, 0x0c, 0xe9, 0xad, 0xaa, 0xf1, 0xf1, 0x49, 0xd1, 0x12, 0x5f, 0x05,
+
  0x47, 0x90, 0xa2, 0x5b, 0x66, 0xda, 0x88, 0x2d, 0xef, 0xc5, 0xc8, 0x92,
+
  0xf3, 0x34, 0xce, 0x26, 0x8a, 0xd8, 0xa7, 0x51, 0x71, 0xde, 0x45, 0x6a,
+
  0xe4, 0x85, 0x6c, 0x9a, 0xaa, 0x6a, 0xa8, 0xb3, 0x48, 0xd7, 0x4e, 0x72,
+
  0x08, 0xb0, 0x81, 0x08, 0xdd, 0x68, 0x88, 0xdb, 0x4c, 0x55, 0x76, 0x5c,
+
  0x42, 0x7e, 0xbe, 0x5f, 0xc5, 0xbd, 0xa0, 0xde, 0xbe, 0x78, 0xf6, 0xd2,
+
  0x2c, 0x96, 0x2c, 0x0e, 0x95, 0xff, 0x99, 0x57, 0xc5, 0xce, 0x1b, 0x2a,
+
  0x67, 0x78, 0x4f, 0x3c, 0x90, 0xd8, 0x65, 0x9e, 0xfd, 0x9d, 0x00, 0x76,
+
  0xc8, 0x82, 0x9c, 0x66, 0xa2, 0xec, 0x5d, 0xd8, 0x62, 0x25, 0x6a, 0x86,
+
  0x86, 0xbd, 0xc4, 0x78, 0x1d, 0xb4, 0x63, 0x05, 0xa7, 0x65, 0x04, 0xfb,
+
  0xa5, 0xac, 0x8a, 0xd6, 0x35, 0xb9, 0x56, 0x28, 0x44, 0xf7, 0x51, 0xf9,
+
  0xb0, 0x66, 0xe4, 0x75, 0x8d, 0x44, 0x3b, 0x25, 0xdf, 0x48, 0x84, 0xe3,
+
  0xd1, 0xdd, 0x59, 0xfe, 0xcf, 0xf8, 0x42, 0x7f, 0x5f, 0x22, 0xfe, 0xea,
+
  0xaa, 0x26, 0xc7, 0x04, 0x59, 0x3e, 0x8b, 0xc9, 0xe4, 0x7b, 0x0a, 0x4a,
+
  0xdb, 0x36, 0xf5, 0xaa, 0xf3, 0xf4, 0x70, 0x02, 0x9f, 0x8b, 0x1c, 0x2c,
+
  0x31, 0xc9, 0x56, 0xd1, 0x78, 0x4d, 0x29, 0x3d, 0xee, 0x36, 0xbf, 0x7f,
+
  0x73, 0xf2, 0x2a, 0x3e, 0x3b, 0xd9, 0xc2, 0xd3, 0x40, 0x43, 0x53, 0x21,
+
  0x6a, 0x5b, 0xa7, 0x91, 0xbe, 0x83, 0xa2, 0xaa, 0x9b, 0x46, 0x74, 0x26,
+
  0x66, 0xb3, 0x59, 0x61, 0x14, 0xca, 0xf6, 0x26, 0xa6, 0xe9, 0xe9, 0x5d,
+
  0xa3, 0x6b, 0x2f, 0x8b, 0x85, 0x94, 0x76, 0xd4, 0xed, 0xe0, 0xd0, 0x8c,
+
  0x13, 0xb4, 0x0d, 0x35, 0xc3, 0xdf, 0x01, 0xf4, 0x24, 0xb8, 0xd7, 0xea,
+
  0x3a, 0x92, 0xee, 0xaf, 0x15, 0x55, 0xa4, 0x56, 0x81, 0x7e, 0xc7, 0x12,
+
  0x77, 0x43, 0xc8, 0x12, 0x7a, 0x29, 0x24, 0xed, 0x02, 0x8b, 0x79, 0xb9,
+
  0x64, 0x17, 0xf8, 0x54, 0x52, 0x96, 0xc5, 0x95, 0xea, 0x34, 0xc8, 0x71,
+
  0x81, 0x5e, 0x4d, 0x67, 0xbb, 0xee, 0xbe, 0xaf, 0xf0, 0x30, 0xec, 0x0c,
+
  0x01, 0xf4, 0x0e, 0xf3, 0xed, 0x88, 0xf1, 0x38, 0xfb, 0x71, 0x83, 0xb1,
+
  0xf7, 0x29, 0xb3, 0x4d, 0x9d, 0x59, 0xa0, 0xca, 0x11, 0xef, 0xef, 0xac,
+
  0xdb, 0x5c, 0xd4, 0xed, 0x9e, 0xdd, 0xa6, 0x37, 0x5c, 0x8c, 0x98, 0x12,
+
  0xdc, 0xd3, 0x49, 0x47, 0x02, 0xdd, 0x4b, 0x42, 0xdd, 0x6f, 0xc1, 0xea,
+
  0x73, 0xe2, 0x31, 0x43, 0xe5, 0xa0, 0x43, 0xde, 0xb6, 0x5c, 0xbb, 0x10,
+
  0x60, 0xcf, 0x3f, 0x7a, 0x4c, 0xb7, 0xaa, 0x40, 0x39, 0x24, 0xf6, 0x80,
+
  0x89, 0x08, 0x06, 0x58, 0x5f, 0xd2, 0xc1, 0xc0, 0x7e, 0x23, 0x6e, 0xa4,
+
  0xd0, 0xf7, 0x11, 0x02, 0x4e, 0x12, 0xff, 0xc6, 0x4f, 0x3d, 0x03, 0x12,
+
  0x3f, 0x64, 0x21, 0x55, 0x53, 0x69, 0x3c, 0x97, 0x49, 0xc3, 0x9a, 0x61,
+
  0x65, 0xf0, 0xa8, 0xa4, 0xb6, 0x1b, 0xc2, 0xd3, 0x69, 0x68, 0xdb, 0x55,
+
  0x80, 0x63, 0x18, 0x6d, 0x33, 0x83, 0xaf, 0xc2, 0xd6, 0xc4, 0x14, 0x9e,
+
  0x22, 0xfb, 0x91, 0xaa, 0x9b, 0x53, 0xb6, 0x26, 0xcb, 0xb6, 0xb7, 0x0e,
+
  0xb3, 0xa3, 0xa3, 0x4d, 0xbe, 0xda, 0x97, 0x30, 0xb3, 0x04, 0x5d, 0xe4,
+
  0x1f, 0x6c, 0x0d, 0x4c, 0xc2, 0x9e, 0x05, 0x4a, 0x23, 0xfc, 0x2e, 0xa9,
+
  0x40, 0x94, 0x34, 0xc7, 0xdb, 0x5a, 0x59, 0xbb, 0xdc, 0xde, 0xaa, 0xfb,
+
  0xed, 0x34, 0xd7, 0x1e, 0xfd, 0x2e, 0x24, 0xda, 0x98, 0x5d, 0xbc, 0x24,
+
  0xe9, 0x72, 0x60, 0xf6, 0x7c, 0x2d, 0x7a, 0x5d, 0x2a, 0x08, 0xbf, 0x43,
+
  0xac, 0x2f, 0xfb, 0xce, 0x73, 0xc2, 0x84, 0x2a, 0xa8, 0xc3, 0x22, 0x77,
+
  0xb9, 0xf0, 0xd6, 0x21, 0x30, 0x61, 0xb8, 0xe8, 0x24, 0x60, 0x50, 0x7e,
+
  0x14, 0x24, 0xd8, 0x91, 0x28, 0x20, 0x3e, 0x13, 0xd0, 0x11, 0x31, 0xec,
+
  0x8f, 0x4a, 0x99, 0x3e, 0x34, 0xda, 0xb4, 0x6d, 0x52, 0xa5, 0xaa, 0xfe,
+
  0xa5, 0x7c, 0x75, 0x60, 0x5a, 0x2b, 0xa2, 0xd4, 0x6d, 0x0d, 0xb7, 0xff,
+
  0xd3, 0x4f, 0x0e, 0x3a, 0x28, 0x3a, 0xca, 0xb6, 0x02, 0x40, 0x30, 0x6e,
+
  0xb7, 0x97, 0x49, 0xe1, 0x4e, 0x38, 0x0c, 0x31, 0x80, 0xe9, 0x36, 0x52,
+
  0x34, 0xf7, 0x62, 0xaa, 0x71, 0xa1, 0xf3, 0x94, 0xa4, 0xb2, 0xf4, 0xc1,
+
  0xc8, 0xfa, 0x91, 0x53, 0xcb, 0x88, 0x82, 0x01, 0x13, 0x9c, 0xbe, 0x08,
+
  0xe5, 0x84, 0xf6, 0x4d, 0xc2, 0x9c, 0x81, 0xb4, 0x6d, 0x2e, 0x97, 0x4d,
+
  0xd4, 0x03, 0x43, 0x17, 0xc1, 0x51, 0x48, 0x57, 0x49, 0xbc, 0x64, 0xdd,
+
  0xc6, 0x09, 0x21, 0x0b, 0x8f, 0xbb, 0x8e, 0x4a, 0x39, 0x10, 0x49, 0xcf,
+
  0x8a, 0x12, 0x72, 0x51, 0x67, 0x18, 0x97, 0xa9, 0x78, 0xa5, 0xab, 0x70,
+
  0xd2, 0x6d, 0x96, 0x67, 0xf8, 0x2d, 0xf1, 0x0a, 0x0e, 0x2b, 0x39, 0xec,
+
  0xc1, 0x96, 0x6a, 0xb5, 0x76, 0x4c, 0x7a, 0x73, 0xf8, 0xae, 0x09, 0x76,
+
  0x64, 0x4a, 0x3f, 0x72, 0x3a, 0x0c, 0x94, 0x3b, 0x59, 0xa7, 0x25, 0xa6,
+
  0xc3, 0x1a, 0xa5, 0xe8, 0x8f, 0x4a, 0xb6, 0x03, 0xd7, 0x06, 0xf3, 0x1d,
+
  0x27, 0x2d, 0xa2, 0xc7, 0xa4, 0x04, 0x04, 0x8c, 0x28, 0x22, 0x8c, 0xf6,
+
  0x9c, 0xb3, 0x45, 0x60, 0xab, 0x51, 0xd8, 0x62, 0x63, 0x71, 0x91, 0xcc,
+
  0xd1, 0x3b, 0xe3, 0x23, 0xb5, 0x5b, 0x26, 0x85, 0x35, 0xda, 0x14, 0xe9,
+
  0xc4, 0xdc, 0x0e, 0x8b, 0x67, 0xc1, 0x51, 0x79, 0xba, 0xac, 0xb3, 0xc9,
+
  0x8d, 0x5b, 0x7f, 0xc5, 0x63, 0x90, 0xe6, 0x6c, 0x16, 0x8e, 0x74, 0xc1,
+
  0x69, 0xa3, 0x76, 0x96, 0xaa, 0xd5, 0x30, 0x07, 0xba, 0xdf, 0xb1, 0x68,
+
  0xa6, 0x33, 0x96, 0xdb, 0xa2, 0xa4, 0xd1, 0x7c, 0xe6, 0x87, 0xe3, 0x33,
+
  0x1d, 0x55, 0x4b, 0x88, 0x99, 0xe4, 0x3d, 0xc3, 0x0e, 0x66, 0xb3, 0xbf,
+
  0xb3, 0xdb, 0xc7, 0x7f, 0xf7, 0xfa, 0x4c, 0x97, 0xfb, 0x3b, 0xfb, 0x06,
+
  0x35, 0xbc, 0x71, 0x54, 0xe8, 0x72, 0x8b, 0xdd, 0xb3, 0xff, 0xe1, 0x83,
+
  0x27, 0xd2, 0x27, 0x69, 0xb3, 0x77, 0x41, 0xbc, 0x62, 0xae, 0x76, 0x21,
+
  0x29, 0x87, 0x6d, 0xe9, 0x45, 0x3d, 0x15, 0xe7, 0x5b, 0x00, 0x43, 0x82,
+
  0x0d, 0x84, 0xa8, 0x55, 0x14, 0xb6, 0x3c, 0x53, 0xda, 0x43, 0x82, 0x92,
+
  0x2d, 0x77, 0xf3, 0xc8, 0x69, 0x13, 0x71, 0x59, 0xb8, 0xad, 0x4d, 0x02,
+
  0x6f, 0xf9, 0xa1, 0x0b, 0x34, 0xb8, 0xb1, 0xc9, 0xa0, 0x64, 0x08, 0x9f,
+
  0x31, 0x7d, 0x34, 0x38, 0xab, 0x1c, 0x79, 0x19, 0xb6, 0x32, 0x03, 0x6d,
+
  0xa0, 0xaa, 0x71, 0x0d, 0xbd, 0xc3, 0xcc, 0x5f, 0x28, 0x80, 0x0f, 0xff,
+
  0xb5, 0x1f, 0xf6, 0x47, 0x0a, 0x24, 0x8a, 0xd3, 0xc0, 0x87, 0x34, 0x53,
+
  0xab, 0x9a, 0x6a, 0x92, 0xac, 0x78, 0xeb, 0xe5, 0xfa, 0x40, 0x78, 0x9e,
+
  0xfd, 0x9e, 0xd6, 0x0f, 0x5a, 0xa5, 0x33, 0x96, 0xdf, 0x14, 0xcd, 0x5a,
+
  0x21, 0xd6, 0x1a, 0x4c, 0xfd, 0xfe, 0x2b, 0xdf, 0x4c, 0x0b, 0xa0, 0xf5,
+
  0xc4, 0xd9, 0xcb, 0x75, 0x9d, 0x33, 0x54, 0xcf, 0xa1, 0xc8, 0x16, 0xc9,
+
  0xac, 0x8e, 0xab, 0xcb, 0x71, 0x53, 0xcf, 0xc2, 0xf8, 0xba, 0x6e, 0xe5,
+
  0x53, 0xf9, 0xc5, 0x0b, 0x11, 0x52, 0x8f, 0xc8, 0xe8, 0xe5, 0x33, 0xfc,
+
  0x17, 0x4d, 0xe2, 0x48, 0xba, 0x5d, 0xaa, 0xe7, 0x9d, 0x7c, 0x62, 0x38,
+
  0x94, 0xa1, 0x0a, 0x51, 0xda, 0x27, 0xcb, 0x40, 0xea, 0x95, 0x9a, 0x9f,
+
  0x0d, 0x25, 0xa3, 0x93, 0x9e, 0x71, 0x18, 0x6f, 0x6c, 0xad, 0x34, 0x33,
+
  0x0d, 0x64, 0x1d, 0x33, 0x38, 0x9c, 0xdc, 0xc6, 0xfe, 0x48, 0x54, 0xcd,
+
  0x0c, 0x64, 0xbf, 0xcc, 0xae, 0x3d, 0x91, 0xe8, 0xb0, 0x36, 0x01, 0x68,
+
  0x92, 0x0a, 0xf8, 0xf6, 0x6d, 0x7a, 0xa6, 0x55, 0xc0, 0x65, 0xa5, 0xb6,
+
  0x99, 0x1a, 0x0e, 0x6b, 0xcc, 0x93, 0xfd, 0xc6, 0xe4, 0x95, 0x6d, 0x34,
+
  0xfe, 0xa4, 0xea, 0x34, 0x0f, 0x53, 0xfb, 0x9c, 0xc2, 0xdb, 0x7a, 0xa6,
+
  0xb8, 0x23, 0x51, 0x44, 0x56, 0x7e, 0x84, 0xb9, 0x16, 0xd1, 0xde, 0xfe,
+
  0x93, 0x07, 0x7d, 0xfe, 0xfd, 0xe1, 0xce, 0x97, 0x7c, 0x8c, 0x5e, 0x1c,
+
  0x9f, 0x7d, 0x1f, 0x4d, 0x4a, 0x38, 0xc4, 0xed, 0x38, 0x16, 0x7e, 0x16,
+
  0xa7, 0x49, 0x79, 0x91, 0x94, 0x75, 0x8c, 0x51, 0xb1, 0x6a, 0x5e, 0x2f,
+
  0xe2, 0x9d, 0x9d, 0x60, 0x16, 0x33, 0x01, 0x73, 0x50, 0x67, 0xe7, 0x3e,
+
  0x77, 0x03, 0x35, 0xf0, 0xb0, 0xed, 0x7d, 0x8d, 0x7a, 0x87, 0x6f, 0xcf,
+
  0x9e, 0x7f, 0xfd, 0xc7, 0x97, 0x27, 0x3f, 0xbc, 0x78, 0x8d, 0xfd, 0x09,
+
  0x7f, 0xec, 0x68, 0x72, 0x66, 0xdc, 0xc0, 0x0e, 0x7e, 0x24, 0x85, 0xfc,
+
  0x51, 0xf9, 0x8c, 0x36, 0x91, 0x2d, 0x0d, 0x0f, 0x87, 0x2f, 0xb7, 0x22,
+
  0x1a, 0x89, 0x9f, 0x1a, 0xee, 0x04, 0x44, 0x18, 0x91, 0x59, 0x43, 0x7f,
+
  0x4a, 0x26, 0x97, 0x18, 0x35, 0xc7, 0x31, 0x71, 0x10, 0x6f, 0xff, 0xa2,
+
  0x23, 0x4e, 0xbb, 0xea, 0x68, 0x75, 0x85, 0xd2, 0x99, 0xf0, 0x66, 0xbd,
+
  0x5a, 0xe2, 0x3e, 0xa5, 0x0c, 0xd7, 0x8e, 0x5c, 0xc1, 0x3a, 0x42, 0xce,
+
  0x24, 0x12, 0xb9, 0xeb, 0x69, 0x01, 0xa2, 0x50, 0x63, 0x07, 0x82, 0x0f,
+
  0xb5, 0x62, 0xb7, 0x18, 0x8c, 0x37, 0xc2, 0x1a, 0x91, 0xd9, 0xf3, 0xd2,
+
  0xf2, 0x2b, 0x08, 0x1c, 0x7a, 0xa8, 0x4b, 0x0d, 0x0f, 0xc7, 0xeb, 0xb2,
+
  0x99, 0x0e, 0xce, 0x07, 0x9c, 0xd5, 0x84, 0xeb, 0x50, 0x5b, 0x4b, 0xa5,
+
  0xca, 0x8b, 0x02, 0x5d, 0xdd, 0x5b, 0x5d, 0xf6, 0xa1, 0x7b, 0xae, 0x3f,
+
  0x57, 0x43, 0x91, 0xe6, 0x2c, 0x36, 0x88, 0x76, 0xfe, 0xb0, 0x11, 0x65,
+
  0xf3, 0x64, 0xb1, 0xbe, 0xc2, 0xdd, 0x00, 0x81, 0x6c, 0x21, 0xfc, 0xa3,
+
  0x73, 0x28, 0x46, 0x32, 0x88, 0x9e, 0x4a, 0x59, 0x9b, 0xdf, 0xba, 0xa6,
+
  0xc1, 0xb0, 0x4c, 0x21, 0x8d, 0x5c, 0xde, 0xc8, 0x34, 0x57, 0xf6, 0xc0,
+
  0xa0, 0x70, 0x7c, 0x47, 0xc8, 0x69, 0xdb, 0xb2, 0xba, 0x4c, 0xb5, 0x2e,
+
  0xa8, 0xe3, 0xa4, 0x3b, 0xd6, 0xd7, 0x5b, 0xa4, 0x3a, 0x61, 0xb8, 0x6c,
+
  0x34, 0xc7, 0x00, 0xf4, 0x44, 0x7d, 0x51, 0x21, 0xe6, 0x84, 0xe9, 0x3a,
+
  0x29, 0xab, 0x04, 0xb3, 0xe4, 0x9a, 0x03, 0xc3, 0x49, 0xce, 0xda, 0x85,
+
  0x54, 0x77, 0x05, 0xf7, 0xda, 0xbe, 0xfc, 0xe7, 0xac, 0x3c, 0xb5, 0xb3,
+
  0xc0, 0xdd, 0xfa, 0xd6, 0xd9, 0x5c, 0x50, 0x0d, 0xcf, 0xb8, 0x05, 0x23,
+
  0x32, 0xa1, 0xdb, 0x77, 0x89, 0xa1, 0x11, 0xcb, 0xf1, 0x42, 0xeb, 0xb3,
+
  0xe9, 0x6f, 0x34, 0x02, 0xbc, 0x9d, 0x27, 0xcb, 0xe0, 0x86, 0x9d, 0xb7,
+
  0x51, 0xe2, 0xf6, 0xde, 0x5b, 0x3b, 0x8c, 0xe3, 0xa0, 0x3c, 0x55, 0xce,
+
  0x35, 0x39, 0xf7, 0x72, 0x62, 0x49, 0x2c, 0x34, 0x67, 0xe1, 0x6d, 0x06,
+
  0xcd, 0xe7, 0xb3, 0x6f, 0x06, 0xcd, 0xa2, 0xbd, 0x19, 0xf7, 0xb9, 0x17,
+
  0xb8, 0xdb, 0xde, 0x5e, 0xe0, 0x45, 0x31, 0xf9, 0x5d, 0x08, 0x9e, 0x2d,
+
  0xbc, 0x19, 0x64, 0x07, 0xa8, 0x5b, 0x86, 0x6a, 0xae, 0xd0, 0x31, 0xab,
+
  0x4a, 0x16, 0x98, 0x02, 0xd9, 0x02, 0x33, 0x08, 0x60, 0xa9, 0x2c, 0x4c,
+
  0x72, 0x50, 0xbd, 0x23, 0xab, 0x09, 0x04, 0x2a, 0xa2, 0x36, 0x92, 0x24,
+
  0x1e, 0x17, 0x39, 0xc6, 0x19, 0xc4, 0x0f, 0x32, 0x45, 0x37, 0x1e, 0x8a,
+
  0x52, 0x37, 0x2b, 0xc8, 0x19, 0xdf, 0xb3, 0x9a, 0x48, 0x50, 0xbd, 0x39,
+
  0x3a, 0x3d, 0x8b, 0xce, 0x4e, 0x5c, 0x57, 0x3e, 0xb7, 0x73, 0x5d, 0x05,
+
  0x7e, 0x9a, 0x9a, 0x79, 0x8e, 0xd2, 0x8b, 0xe4, 0x32, 0x2b, 0x4c, 0x0b,
+
  0x44, 0xd6, 0xbf, 0x09, 0x9c, 0xc4, 0x16, 0x5f, 0x36, 0x57, 0x2b, 0xd0,
+
  0x62, 0x43, 0xc0, 0xed, 0x5a, 0x09, 0x27, 0x6c, 0x95, 0x1b, 0x44, 0x2f,
+
  0xc7, 0x36, 0xe7, 0xe4, 0x3c, 0x9e, 0x9e, 0x17, 0x95, 0x47, 0xa4, 0x3f,
+
  0x01, 0x9e, 0x31, 0x35, 0x8a, 0x5c, 0xf8, 0x80, 0x93, 0x01, 0xea, 0xcb,
+
  0x26, 0xce, 0xaa, 0x84, 0x28, 0x9b, 0xed, 0x6e, 0xbd, 0x42, 0xb1, 0x61,
+
  0xcd, 0x52, 0x19, 0x77, 0xa5, 0x64, 0xea, 0xb0, 0x12, 0x30, 0x9d, 0x25,
+
  0xe7, 0x01, 0x1c, 0x33, 0x27, 0xa3, 0xd6, 0x6d, 0x68, 0xc3, 0x60, 0x7d,
+
  0xbc, 0x99, 0x38, 0x41, 0x7f, 0x3f, 0x71, 0x68, 0xdf, 0x6b, 0x4f, 0x3b,
+
  0x43, 0x49, 0x3b, 0xf8, 0xee, 0x54, 0xb5, 0x90, 0x61, 0x33, 0x25, 0xa2,
+
  0x7f, 0x89, 0x5b, 0xd1, 0x59, 0x6b, 0xed, 0xeb, 0x4a, 0xaf, 0x56, 0x88,
+
  0x96, 0x6f, 0xf0, 0x6c, 0x79, 0xb5, 0x23, 0x37, 0x16, 0xe5, 0x84, 0x1e,
+
  0x72, 0xa7, 0xa3, 0xde, 0x9e, 0xa8, 0x7b, 0x60, 0xc1, 0x48, 0xaa, 0x1b,
+
  0x1c, 0xc0, 0x3f, 0xf9, 0xb7, 0x39, 0xf8, 0x4d, 0x30, 0xbc, 0x2f, 0x03,
+
  0xf2, 0x97, 0x9e, 0xb6, 0xae, 0xfc, 0xe5, 0x58, 0x9b, 0xdc, 0xd4, 0xe7,
+
  0xc0, 0x0f, 0xf9, 0x68, 0x51, 0x75, 0x86, 0xaf, 0x38, 0x03, 0x2d, 0xd8,
+
  0x8c, 0x0a, 0xdb, 0x76, 0x2f, 0x52, 0x62, 0xdd, 0x6e, 0x25, 0xa5, 0x5b,
+
  0xe6, 0xa8, 0xe1, 0x26, 0x14, 0xe4, 0x16, 0x31, 0xcb, 0x27, 0xa1, 0x4e,
+
  0xca, 0x67, 0x87, 0x85, 0x44, 0xf1, 0xb8, 0xdb, 0x93, 0x11, 0x1b, 0x8d,
+
  0x9a, 0xe3, 0xcd, 0xbf, 0xbc, 0xf9, 0xfe, 0xaf, 0x4a, 0x59, 0x5b, 0xfd,
+
  0x8e, 0x00, 0x93, 0x3c, 0xc7, 0x49, 0x8c, 0xb4, 0x69, 0x5f, 0xd2, 0xfb,
+
  0xbd, 0xb1, 0x02, 0xfc, 0x97, 0x14, 0x06, 0xfb, 0xba, 0xf1, 0xa4, 0xa0,
+
  0xda, 0xa5, 0x4d, 0xcc, 0x06, 0xc6, 0x3e, 0x73, 0x12, 0x40, 0xd8, 0x1f,
+
  0x3c, 0xa4, 0x30, 0x23, 0x9a, 0x0a, 0xfb, 0x7b, 0xbb, 0x5b, 0x83, 0x46,
+
  0xab, 0x7b, 0xd4, 0x9d, 0xb6, 0x82, 0xef, 0xe9, 0xbe, 0x66, 0x63, 0xf1,
+
  0x31, 0x69, 0x17, 0xcf, 0xde, 0xe6, 0xf1, 0x4f, 0xa7, 0xaf, 0xbd, 0x97,
+
  0x84, 0x97, 0xf2, 0x12, 0xbe, 0xc9, 0xd7, 0xe5, 0x56, 0x3c, 0xdb, 0xf7,
+
  0xb4, 0xce, 0x84, 0xc6, 0x23, 0x18, 0xf3, 0x44, 0xda, 0x8f, 0xb7, 0x53,
+
  0xaa, 0xbf, 0x2f, 0x33, 0xf4, 0xcc, 0xf5, 0x70, 0x4d, 0x7a, 0x2f, 0x8b,
+
  0x7c, 0x52, 0xe4, 0xf1, 0xc9, 0x14, 0x16, 0x3f, 0x45, 0x23, 0xe4, 0xc6,
+
  0xb7, 0x73, 0x09, 0xf4, 0xd3, 0x75, 0xb1, 0xb2, 0xcf, 0x68, 0x08, 0xdd,
+
  0x1c, 0x91, 0x59, 0xef, 0x74, 0xe4, 0x82, 0x5c, 0x21, 0x7e, 0xc5, 0x05,
+
  0x30, 0xb9, 0x5f, 0x5d, 0xf6, 0x8a, 0x3e, 0x1c, 0x20, 0xc7, 0x31, 0xfd,
+
  0x56, 0x2f, 0x96, 0xd8, 0x68, 0x02, 0x73, 0x63, 0xea, 0x50, 0xda, 0xe0,
+
  0x8d, 0xaf, 0x44, 0x8f, 0xb9, 0x55, 0xca, 0x5e, 0xdf, 0x49, 0x00, 0x64,
+
  0x25, 0x01, 0xd8, 0x62, 0x03, 0x47, 0x84, 0x1c, 0x84, 0x14, 0xf4, 0xc7,
+
  0x78, 0xf3, 0x53, 0xca, 0xc4, 0xfa, 0xa6, 0x0b, 0x32, 0x33, 0x7a, 0xf5,
+
  0xe7, 0xb3, 0xb3, 0xa6, 0x87, 0x41, 0x33, 0xfb, 0xe8, 0xf6, 0x4d, 0x4d,
+
  0x4e, 0xdb, 0x62, 0x15, 0x9b, 0x53, 0x3a, 0x0b, 0xef, 0x84, 0x70, 0x1a,
+
  0x5f, 0xa3, 0xf1, 0x9f, 0xe3, 0x40, 0xce, 0x0c, 0xb8, 0xa5, 0xb4, 0x51,
+
  0x46, 0xb1, 0x45, 0xda, 0x58, 0x3f, 0x04, 0x83, 0x65, 0xd2, 0xb0, 0x8c,
+
  0x81, 0xc7, 0x08, 0x00, 0x49, 0x3e, 0x69, 0x38, 0xfa, 0x48, 0x24, 0x11,
+
  0x9f, 0x4f, 0x3f, 0x10, 0x80, 0xda, 0x24, 0x8d, 0x1e, 0xf9, 0xce, 0xae,
+
  0x43, 0x01, 0xb4, 0x54, 0xdf, 0x1e, 0xc7, 0xbc, 0x55, 0xe7, 0x23, 0xf7,
+
  0x81, 0x90, 0x4c, 0x3f, 0x98, 0x4e, 0x17, 0xd2, 0x86, 0x38, 0xb9, 0x4e,
+
  0xb2, 0x4a, 0x5a, 0xe9, 0x75, 0x6e, 0x3a, 0x1d, 0xb1, 0x17, 0x4c, 0xa8,
+
  0x93, 0x64, 0x39, 0xdf, 0xbb, 0xea, 0x24, 0xd8, 0x75, 0x67, 0xd8, 0xb9,
+
  0x39, 0x75, 0xad, 0xec, 0xb7, 0x76, 0xb0, 0xc1, 0xe4, 0xc2, 0x35, 0x0e,
+
  0xec, 0xc3, 0x27, 0x81, 0x03, 0xfb, 0xfa, 0xe4, 0xec, 0xf8, 0x80, 0x94,
+
  0x2a, 0xda, 0x2f, 0xce, 0x4f, 0xe0, 0x4c, 0x18, 0xa9, 0xca, 0x25, 0x40,
+
  0x33, 0xe9, 0x7c, 0x83, 0xdc, 0x5d, 0x37, 0xba, 0x1f, 0xe2, 0x93, 0x04,
+
  0x91, 0x8a, 0x9c, 0x85, 0x33, 0x4e, 0xea, 0xce, 0x5a, 0x3d, 0xd7, 0xd9,
+
  0xc0, 0x04, 0x85, 0x1b, 0xee, 0x0b, 0x76, 0x4c, 0x07, 0xc4, 0x48, 0xc1,
+
  0x72, 0x21, 0x26, 0x9b, 0x47, 0x44, 0x6c, 0x4a, 0x90, 0x63, 0x7d, 0x60,
+
  0x4c, 0x03, 0xa6, 0xfe, 0x38, 0x84, 0x69, 0x7a, 0xa7, 0x22, 0x84, 0x3b,
+
  0xda, 0x06, 0xce, 0x21, 0xec, 0xcc, 0x31, 0xeb, 0x66, 0x4f, 0x36, 0x5b,
+
  0xac, 0x7d, 0xb4, 0xc5, 0xf7, 0x8f, 0x09, 0x02, 0x1d, 0x88, 0x27, 0x98,
+
  0x21, 0xa0, 0xa7, 0xd8, 0x16, 0x71, 0xaa, 0xfb, 0x5f, 0x9d, 0x7b, 0xe2,
+
  0x1d, 0x1f, 0xa8, 0xf8, 0x8d, 0x5f, 0xfa, 0xde, 0x64, 0xe3, 0x9a, 0x75,
+
  0x23, 0x39, 0x78, 0xaf, 0x7a, 0x4a, 0x04, 0xae, 0x1f, 0x75, 0x40, 0xeb,
+
  0x6c, 0xc7, 0xb0, 0x3c, 0xf0, 0xb4, 0x6b, 0xcf, 0xd7, 0x2d, 0xb1, 0x0d,
+
  0xd7, 0xde, 0x90, 0x85, 0xa7, 0xd0, 0x08, 0x55, 0x89, 0x49, 0x62, 0xee,
+
  0xc3, 0x1d, 0xe7, 0x06, 0x42, 0x0d, 0xac, 0x43, 0x1e, 0x30, 0x9b, 0xdc,
+
  0x1e, 0xef, 0x9a, 0xb4, 0x93, 0x8c, 0xfa, 0xd2, 0x72, 0x42, 0x70, 0x47,
+
  0x1a, 0xa2, 0xb3, 0x90, 0x9f, 0xaf, 0x01, 0xb1, 0x33, 0x89, 0x7d, 0x77,
+
  0xb1, 0xd7, 0xa2, 0x94, 0x86, 0x0b, 0xdd, 0xa1, 0x95, 0x46, 0x05, 0x67,
+
  0xf4, 0x74, 0x0a, 0x52, 0x42, 0xd0, 0x37, 0x3a, 0x6a, 0xba, 0x5f, 0x09,
+
  0xc5, 0x70, 0x39, 0x6b, 0xae, 0x97, 0xb1, 0xdd, 0xce, 0x29, 0xa9, 0x18,
+
  0x8d, 0xa2, 0xb8, 0xba, 0x93, 0xf5, 0x8d, 0x9b, 0x55, 0x53, 0x17, 0xa9,
+
  0x50, 0x89, 0xb8, 0x90, 0x0d, 0xe6, 0x57, 0x31, 0x7c, 0x26, 0x91, 0x0d,
+
  0x12, 0x09, 0xf9, 0xfb, 0x46, 0x88, 0x53, 0x19, 0xfd, 0x5a, 0x8c, 0x24,
+
  0xee, 0x88, 0x36, 0x1c, 0x7e, 0xe9, 0xa7, 0x8b, 0x83, 0x92, 0x03, 0xcb,
+
  0x34, 0x59, 0x72, 0x06, 0x08, 0x4e, 0xc4, 0x16, 0x34, 0x97, 0x9c, 0x83,
+
  0x16, 0x9d, 0x17, 0x64, 0xe8, 0x52, 0x78, 0x52, 0x1d, 0xae, 0xa8, 0xac,
+
  0xa0, 0xcb, 0x75, 0x85, 0xfb, 0x34, 0x4a, 0x08, 0x0c, 0xa7, 0x8a, 0xb4,
+
  0xfb, 0x36, 0xed, 0x73, 0x65, 0x91, 0xd5, 0x04, 0xce, 0x06, 0x17, 0xa6,
+
  0x90, 0x9c, 0x87, 0xb6, 0x00, 0x4c, 0xc7, 0x25, 0xb9, 0x92, 0x33, 0x1a,
+
  0x6d, 0x09, 0x8b, 0x7d, 0xad, 0xaa, 0xa6, 0xd5, 0xc9, 0x74, 0x00, 0x98,
+
  0x18, 0x5d, 0x4d, 0xca, 0x10, 0x3e, 0xd4, 0xcf, 0x2e, 0x9c, 0x51, 0xce,
+
  0x6e, 0x16, 0x04, 0x48, 0x97, 0x0c, 0x61, 0x6e, 0xc1, 0x4b, 0xc9, 0x75,
+
  0xd7, 0x5e, 0x02, 0xf3, 0x26, 0x46, 0x25, 0xe0, 0x8b, 0x2d, 0x2e, 0x38,
+
  0x6b, 0xe4, 0xec, 0x7b, 0x29, 0x36, 0x04, 0xde, 0xb2, 0xc4, 0x28, 0x28,
+
  0xb7, 0x06, 0x42, 0x5a, 0xa7, 0x6d, 0xa6, 0xaf, 0x9a, 0x98, 0x8f, 0x95,
+
  0x64, 0xf3, 0x4d, 0x4c, 0x5c, 0x33, 0x50, 0x40, 0x21, 0x0f, 0xb7, 0xe4,
+
  0x07, 0x7b, 0xc6, 0x47, 0x9c, 0x75, 0x59, 0x82, 0x8a, 0x6f, 0x64, 0xaa,
+
  0xba, 0x71, 0x29, 0xdd, 0x06, 0xe1, 0xc2, 0x06, 0x43, 0xc0, 0x9c, 0x51,
+
  0xc5, 0xfe, 0x9b, 0x80, 0xa0, 0xda, 0x1c, 0x6c, 0xe1, 0x42, 0xcb, 0x3d,
+
  0x9e, 0x17, 0x89, 0x6a, 0x4e, 0x81, 0x40, 0x62, 0x92, 0x6a, 0xec, 0x68,
+
  0xc7, 0x44, 0x28, 0x85, 0x18, 0x56, 0x51, 0x84, 0x99, 0xee, 0x94, 0x41,
+
  0x44, 0x47, 0x59, 0xf2, 0x5f, 0xbd, 0x7c, 0x6d, 0x71, 0x12, 0xca, 0xa0,
+
  0x61, 0xd6, 0xd2, 0x3c, 0x77, 0x9f, 0xda, 0x27, 0x5c, 0xad, 0xe2, 0x2d,
+
  0x34, 0x83, 0xdd, 0x75, 0x72, 0x94, 0xcd, 0x5d, 0x7b, 0x83, 0x2f, 0xd7,
+
  0x6d, 0xa2, 0x24, 0xb9, 0x55, 0xb1, 0x52, 0x39, 0x6b, 0xa7, 0x4d, 0x42,
+
  0x68, 0xc8, 0xb2, 0xb4, 0x4e, 0xf0, 0xdc, 0xae, 0xa8, 0xe7, 0xe1, 0x02,
+
  0x4c, 0x86, 0x00, 0xe2, 0x44, 0xcd, 0x16, 0x00, 0xa2, 0x8e, 0x11, 0x99,
+
  0x1c, 0xb3, 0x36, 0x1b, 0x7a, 0x65, 0xae, 0xd0, 0xe8, 0x91, 0x41, 0xb3,
+
  0x35, 0xcd, 0x52, 0x33, 0xc1, 0x5d, 0x51, 0xec, 0xf4, 0xc7, 0xa0, 0x2c,
+
  0x09, 0xe0, 0xbb, 0x67, 0x5a, 0x72, 0x7a, 0x11, 0x1e, 0x5f, 0x8c, 0x3d,
+
  0x85, 0x9d, 0x93, 0xfa, 0xc8, 0xcf, 0x54, 0x37, 0x6e, 0x9e, 0x4f, 0xba,
+
  0xd5, 0x5a, 0x9b, 0xf8, 0x5f, 0x48, 0xbc, 0x48, 0xde, 0xb3, 0x59, 0x3a,
+
  0x73, 0x37, 0xcb, 0xf4, 0x62, 0x0b, 0x6b, 0x1c, 0xc7, 0xd2, 0x0e, 0xfc,
+
  0xb5, 0x69, 0xd9, 0xb6, 0x39, 0x3c, 0x7d, 0x7d, 0xfc, 0xc3, 0xc9, 0xd6,
+
  0x4d, 0xf1, 0x47, 0x77, 0xbb, 0x4d, 0xc1, 0x5c, 0xa2, 0x75, 0xd4, 0x6e,
+
  0x4f, 0xf8, 0x1f, 0x86, 0xc3, 0xf8, 0xf0, 0xf4, 0x05, 0x69, 0xd4, 0xc3,
+
  0x21, 0xfc, 0x82, 0x3b, 0xda, 0xde, 0x1f, 0xea, 0xb4, 0xc1, 0x3d, 0x24,
+
  0xa2, 0xf8, 0x2f, 0x14, 0xcc, 0x36, 0x9d, 0x7e, 0x28, 0xce, 0x80, 0x91,
+
  0x3e, 0xec, 0x7c, 0xc1, 0x75, 0x66, 0xb4, 0xeb, 0x1a, 0x86, 0xc3, 0x07,
+
  0xb4, 0x4d, 0x87, 0xd3, 0x17, 0xdb, 0xf4, 0x2c, 0x2c, 0xe1, 0xa5, 0x17,
+
  0x0a, 0xfb, 0x2e, 0x02, 0x31, 0x2e, 0x64, 0xd1, 0x54, 0xbc, 0x49, 0x2b,
+
  0xab, 0xf5, 0xf2, 0xd8, 0xa9, 0x02, 0x34, 0x14, 0x0c, 0xb8, 0x48, 0xc4,
+
  0xa5, 0xa3, 0xf1, 0x0d, 0x4e, 0x16, 0x25, 0x36, 0x95, 0xee, 0x92, 0x10,
+
  0x6a, 0x86, 0x41, 0xc8, 0xd8, 0x81, 0x51, 0x17, 0xd8, 0x6c, 0x67, 0x40,
+
  0x18, 0x77, 0xc4, 0x14, 0xdb, 0x95, 0x98, 0xf1, 0x32, 0x3a, 0xd8, 0xa0,
+
  0xdc, 0xfb, 0x9c, 0x1a, 0xc0, 0x79, 0xfe, 0x0f, 0x01, 0xcc, 0xd6, 0x88,
+
  0x17, 0xcb, 0x61, 0x96, 0x17, 0x30, 0x4b, 0x4f, 0x23, 0xa4, 0x1b, 0x55,
+
  0x6e, 0x96, 0x29, 0x1b, 0x0b, 0x63, 0xc1, 0xef, 0xeb, 0xaa, 0xee, 0x6c,
+
  0x8a, 0x5b, 0xa3, 0x4b, 0x46, 0xed, 0x53, 0x41, 0x71, 0x60, 0xb6, 0x0a,
+
  0x4a, 0x71, 0x26, 0x7b, 0x6e, 0xcd, 0xe0, 0x33, 0x5c, 0x9f, 0xa2, 0x6d,
+
  0x1b, 0x78, 0xff, 0x08, 0x88, 0x76, 0x6c, 0x5c, 0xd7, 0x35, 0x19, 0xe4,
+
  0x08, 0x93, 0xfe, 0xf0, 0x80, 0xe5, 0xf5, 0x8c, 0xa4, 0x04, 0xa8, 0xc8,
+
  0x14, 0xca, 0x91, 0x5c, 0x0d, 0xc2, 0xcd, 0x35, 0x4f, 0x68, 0x9e, 0xbe,
+
  0xba, 0x1c, 0x93, 0x39, 0xc1, 0xe5, 0x9e, 0x21, 0x98, 0xdc, 0x56, 0x1d,
+
  0xa4, 0x36, 0x4c, 0x41, 0xcd, 0x38, 0xef, 0xeb, 0x18, 0x7d, 0x44, 0xbf,
+
  0xe2, 0x4c, 0x27, 0x8c, 0xd3, 0x53, 0x89, 0xaf, 0x90, 0x66, 0x28, 0xf4,
+
  0x86, 0x48, 0xbd, 0x70, 0xc6, 0x93, 0x51, 0x55, 0xcc, 0x96, 0xb5, 0xa4,
+
  0x90, 0x61, 0xdc, 0x0c, 0xa1, 0x73, 0xb6, 0x22, 0x75, 0xfb, 0xd2, 0xd0,
+
  0xb6, 0xda, 0x33, 0x14, 0x42, 0x10, 0x27, 0x15, 0x15, 0x37, 0x6b, 0xca,
+
  0x01, 0xe7, 0x82, 0x09, 0x2f, 0xc7, 0xbd, 0x76, 0xc6, 0x59, 0x50, 0xf9,
+
  0xc3, 0x65, 0x57, 0xfe, 0xc6, 0x0b, 0xcd, 0x3c, 0x1d, 0xe1, 0xa1, 0x02,
+
  0x6b, 0x42, 0xd7, 0x88, 0x17, 0x20, 0xa1, 0x6c, 0x7e, 0xa3, 0x78, 0x85,
+
  0xd9, 0xb4, 0xb3, 0xa8, 0x9f, 0x31, 0xb9, 0xd7, 0x99, 0x05, 0xbf, 0xfe,
+
  0x9a, 0xd0, 0xa7, 0xee, 0xde, 0xda, 0x30, 0x2e, 0x93, 0xd4, 0x9f, 0x18,
+
  0xe7, 0x29, 0x9f, 0x66, 0xe7, 0x37, 0xb4, 0x1a, 0xec, 0xe8, 0xb1, 0x65,
+
  0x07, 0xf7, 0xa9, 0x51, 0x57, 0xda, 0x4b, 0x73, 0x08, 0xd3, 0x1d, 0xeb,
+
  0xd2, 0x21, 0x3c, 0xf1, 0x68, 0xc0, 0x2f, 0x0e, 0xcb, 0xe7, 0x87, 0x6c,
+
  0xcd, 0x7e, 0x2a, 0x1e, 0x2a, 0xba, 0x0d, 0x13, 0x2a, 0xdd, 0x11, 0x4e,
+
  0xe6, 0x3c, 0xc5, 0xed, 0x41, 0xb2, 0xba, 0x7f, 0x48, 0x8b, 0x58, 0xee,
+
  0x37, 0x99, 0xb6, 0x39, 0xf8, 0xdd, 0x08, 0xc2, 0x4c, 0x6d, 0x4d, 0x20,
+
  0x1f, 0x43, 0x4d, 0x37, 0xc0, 0xdf, 0xea, 0x16, 0xe3, 0xf2, 0x79, 0x3c,
+
  0xbe, 0xbd, 0xe3, 0x76, 0x85, 0x3d, 0x93, 0x91, 0x7c, 0x5a, 0x1c, 0x5d,
+
  0xaa, 0xc6, 0x5a, 0x12, 0x69, 0x76, 0x74, 0xf3, 0x9d, 0xfc, 0x02, 0x53,
+
  0xf8, 0x31, 0xcb, 0xc1, 0x32, 0xab, 0xb6, 0xf8, 0x7c, 0x73, 0x52, 0xf4,
+
  0xad, 0xe0, 0xef, 0x51, 0x11, 0xe3, 0xec, 0x18, 0x92, 0x57, 0x14, 0x65,
+
  0x33, 0xe9, 0x99, 0x5a, 0x59, 0x56, 0x5f, 0x2f, 0x32, 0x3f, 0x3b, 0x53,
+
  0x65, 0x12, 0x8d, 0x81, 0x2e, 0x4f, 0x98, 0xc7, 0xdb, 0x3c, 0xfb, 0x60,
+
  0x53, 0x66, 0x69, 0xd7, 0xb8, 0x63, 0x90, 0xf5, 0x2c, 0x8a, 0x69, 0x15,
+
  0x98, 0x5d, 0xe4, 0x65, 0xc1, 0xe0, 0xe2, 0xd3, 0x4b, 0x6e, 0x3e, 0xdc,
+
  0xa2, 0xb9, 0x4d, 0xeb, 0xc5, 0xe6, 0xee, 0x16, 0x3d, 0x51, 0xda, 0x16,
+
  0x48, 0xc6, 0x6e, 0x08, 0x8c, 0x94, 0xf3, 0x95, 0x06, 0xd1, 0x91, 0x79,
+
  0x36, 0xa5, 0x12, 0x16, 0x73, 0x4e, 0x4f, 0x21, 0x1f, 0x19, 0x30, 0x54,
+
  0xba, 0x96, 0xaa, 0xd4, 0xb8, 0x72, 0x19, 0x2b, 0xa0, 0x43, 0xfc, 0x9a,
+
  0xfb, 0x40, 0x20, 0xf3, 0x44, 0xc4, 0x2e, 0xce, 0x71, 0xda, 0xcc, 0xdc,
+
  0x40, 0x48, 0x2e, 0x38, 0xe0, 0xb0, 0x7a, 0xb3, 0x09, 0x1a, 0x45, 0x65,
+
  0x74, 0x5e, 0x16, 0xbe, 0x1e, 0x85, 0x00, 0x21, 0xb8, 0x06, 0x5b, 0x5c,
+
  0xc3, 0x9b, 0xe6, 0x97, 0x59, 0x59, 0xe4, 0xd4, 0xe3, 0xf5, 0x32, 0x29,
+
  0x33, 0x22, 0xfd, 0xde, 0xf3, 0x93, 0x57, 0xc7, 0x3d, 0x03, 0x0d, 0x4a,
+
  0x2e, 0xa5, 0x8c, 0xc3, 0x92, 0x5e, 0x4b, 0x9f, 0xc6, 0x96, 0x86, 0x3c,
+
  0xb4, 0xa0, 0xf9, 0x61, 0x2f, 0x4e, 0x52, 0x46, 0x40, 0x76, 0x51, 0x04,
+
  0x49, 0x71, 0x8f, 0x8b, 0xa9, 0xe6, 0xd5, 0x72, 0xd1, 0x46, 0xa2, 0x04,
+
  0xc6, 0x85, 0x04, 0xc5, 0xd5, 0x17, 0x81, 0x93, 0x04, 0xdf, 0xe1, 0x8e,
+
  0x8b, 0x88, 0x92, 0x22, 0x42, 0xce, 0x23, 0xe6, 0x80, 0x0e, 0x45, 0xe9,
+
  0x68, 0xff, 0xdd, 0xf0, 0xcf, 0xc6, 0xfc, 0xda, 0xf3, 0x1c, 0xa6, 0xb3,
+
  0xe9, 0x46, 0x83, 0xee, 0xa2, 0x8d, 0x0a, 0x0d, 0xfe, 0x7a, 0x43, 0x80,
+
  0xe1, 0xa9, 0x50, 0xd0, 0x4a, 0x5c, 0x1f, 0xcd, 0xb7, 0xe3, 0xf1, 0xed,
+
  0xcb, 0x98, 0xcc, 0xe7, 0xd7, 0xf8, 0xc4, 0xf6, 0x77, 0x36, 0x27, 0x89,
+
  0x1e, 0xbd, 0x8a, 0xbd, 0x39, 0x1c, 0xf1, 0x16, 0x8c, 0x8d, 0x78, 0x99,
+
  0x57, 0x74, 0xbd, 0x8a, 0xb7, 0xdd, 0x89, 0xa5, 0xdd, 0x99, 0x93, 0xf5,
+
  0x1b, 0x82, 0x8c, 0x25, 0x9b, 0x93, 0xaf, 0xe4, 0x42, 0x11, 0xde, 0x5a,
+
  0xb0, 0xb9, 0x62, 0x57, 0x7a, 0xfd, 0x76, 0x30, 0xed, 0xf8, 0xa0, 0x2f,
+
  0x60, 0x10, 0x2b, 0x9b, 0x2e, 0x4a, 0xe5, 0xa8, 0x62, 0x5c, 0x59, 0xcc,
+
  0x0a, 0xad, 0xa7, 0xb2, 0xde, 0x51, 0x69, 0xb5, 0xe2, 0x81, 0xcc, 0x56,
+
  0xc5, 0x38, 0x6b, 0xe4, 0xfc, 0x9a, 0x16, 0x65, 0xd2, 0xe4, 0x90, 0xd5,
+
  0x35, 0x0d, 0xb6, 0xaa, 0x9e, 0x82, 0xc3, 0x75, 0xd4, 0xd8, 0x81, 0xfa,
+
  0x42, 0x6e, 0x1c, 0x4d, 0x46, 0xc8, 0x4a, 0xec, 0x6b, 0x6a, 0x73, 0x38,
+
  0xe5, 0x39, 0x7d, 0x17, 0x64, 0xbc, 0xcf, 0x1d, 0x2d, 0x7c, 0x08, 0x5c,
+
  0x9b, 0x5d, 0x6f, 0x6c, 0x07, 0x72, 0xbd, 0x8d, 0xc1, 0xc6, 0x81, 0x83,
+
  0x64, 0x52, 0x9e, 0x15, 0x57, 0xc3, 0x47, 0xcb, 0x3d, 0xe8, 0x47, 0xb2,
+
  0x94, 0x9a, 0x52, 0xc2, 0xae, 0x26, 0xca, 0x7a, 0x60, 0xb7, 0x8c, 0x26,
+
  0xb1, 0xe1, 0x9e, 0x90, 0x7a, 0x28, 0x70, 0x1e, 0xa0, 0x1d, 0x56, 0x21,
+
  0xa5, 0x8b, 0xa0, 0x20, 0xf8, 0xcd, 0xd8, 0x69, 0x07, 0x93, 0x2f, 0x2f,
+
  0x09, 0xd7, 0xf1, 0x92, 0xfb, 0x41, 0x12, 0x5f, 0xb4, 0xdb, 0x61, 0xf7,
+
  0x21, 0xc4, 0x3f, 0x1b, 0x53, 0xcc, 0xa4, 0xdf, 0x30, 0xb1, 0xf9, 0x1f,
+
  0x64, 0x1e, 0x9a, 0xea, 0x27, 0x35, 0x15, 0x26, 0x34, 0xe7, 0x41, 0x2a,
+
  0x48, 0xa8, 0x8e, 0x82, 0x73, 0xe6, 0x97, 0x38, 0xa9, 0xc6, 0x59, 0x26,
+
  0x14, 0x87, 0x11, 0x47, 0x4c, 0x1e, 0x0d, 0xd4, 0x21, 0x36, 0x42, 0x52,
+
  0xd7, 0xa2, 0x2e, 0x4f, 0x0a, 0xc6, 0xcc, 0xe0, 0x4c, 0x7b, 0x2a, 0x34,
+
  0xe1, 0x6c, 0x73, 0x8a, 0xa8, 0x6a, 0xa4, 0x1f, 0x85, 0x87, 0xef, 0x4e,
+
  0x94, 0x50, 0x6b, 0x47, 0xa3, 0x8a, 0xab, 0xab, 0xab, 0xdd, 0x41, 0x23,
+
  0x7b, 0x89, 0x97, 0x20, 0xc6, 0xce, 0x95, 0x55, 0x4d, 0x6a, 0x1b, 0x5c,
+
  0xb3, 0x37, 0x58, 0x71, 0x74, 0xed, 0x39, 0xf9, 0x74, 0x78, 0xc8, 0x21,
+
  0xd8, 0xe0, 0xdb, 0x4c, 0x35, 0xc8, 0x95, 0x5e, 0xac, 0x1a, 0xae, 0xfd,
+
  0x15, 0x70, 0x87, 0xed, 0x5b, 0x7a, 0x4d, 0x02, 0xaa, 0xb7, 0x1b, 0x38,
+
  0x6f, 0xf5, 0x37, 0x94, 0x16, 0xe3, 0x21, 0xaf, 0x0a, 0x02, 0x29, 0xaa,
+
  0x96, 0xc9, 0xad, 0x4c, 0x5f, 0x9e, 0xbe, 0x26, 0x44, 0x30, 0x98, 0x61,
+
  0x9a, 0x57, 0x9c, 0x44, 0x8d, 0x9f, 0x91, 0x75, 0xcf, 0xae, 0x2c, 0x0a,
+
  0xac, 0x78, 0x91, 0x34, 0x4a, 0x98, 0x0a, 0xb6, 0xe0, 0xd3, 0xbe, 0x9c,
+
  0x11, 0x82, 0xd7, 0x19, 0xaf, 0x8b, 0x98, 0x87, 0xea, 0x19, 0x69, 0x4b,
+
  0x6b, 0x78, 0xe6, 0x20, 0x32, 0x8f, 0xa6, 0x7d, 0xa6, 0x96, 0x50, 0x3a,
+
  0x3c, 0xdd, 0x6d, 0xdc, 0x2a, 0xd2, 0xd0, 0x1e, 0xcb, 0x24, 0xc8, 0xb6,
+
  0xf5, 0x44, 0x4d, 0x9d, 0xea, 0x35, 0xea, 0xa2, 0x33, 0xd9, 0x53, 0x9a,
+
  0xc7, 0xcb, 0x19, 0xe4, 0xb4, 0x2b, 0x8a, 0x10, 0x5c, 0xad, 0x76, 0x02,
+
  0xf0, 0xba, 0xde, 0x5a, 0xfe, 0x05, 0xf4, 0xbd, 0xb6, 0xf4, 0xa3, 0x56,
+
  0xf0, 0xeb, 0x4a, 0x3e, 0x99, 0xc6, 0xda, 0x70, 0x9c, 0xf9, 0x22, 0x6f,
+
  0xb7, 0x06, 0xd5, 0xb1, 0x9a, 0xb0, 0x52, 0xda, 0x77, 0x3e, 0xf6, 0x22,
+
  0x12, 0xb7, 0xe9, 0x43, 0x0f, 0xd4, 0xb4, 0x8a, 0x3c, 0x5f, 0xf7, 0xf9,
+
  0xb9, 0xa3, 0x25, 0xf2, 0xfe, 0xb0, 0x05, 0xc4, 0x56, 0x18, 0x5f, 0x81,
+
  0xcf, 0x93, 0xec, 0x3f, 0xee, 0x29, 0x88, 0x08, 0x83, 0x69, 0x32, 0x07,
+
  0x7d, 0x3b, 0x57, 0xf0, 0x05, 0xca, 0xd5, 0xae, 0x32, 0xaf, 0xd2, 0x77,
+
  0x99, 0x88, 0x30, 0x72, 0x93, 0xd5, 0xda, 0x88, 0x0c, 0xfc, 0x98, 0x74,
+
  0xd2, 0x1c, 0x3e, 0x84, 0x31, 0xd5, 0x10, 0x0f, 0x1a, 0x78, 0xe6, 0x04,
+
  0x60, 0xf1, 0x1d, 0xc8, 0x10, 0x06, 0x1c, 0x1f, 0xbd, 0xc0, 0x17, 0xcb,
+
  0xfc, 0x3d, 0x4c, 0xc1, 0x87, 0x0e, 0xd5, 0x82, 0xe2, 0x8c, 0x54, 0x89,
+
  0x64, 0x5c, 0x6b, 0x2f, 0x0f, 0x73, 0x7b, 0x52, 0x96, 0x08, 0xd1, 0x8b,
+
  0x91, 0x27, 0x69, 0x29, 0x55, 0x77, 0x6b, 0x26, 0x34, 0x01, 0xf1, 0x3f,
+
  0xf3, 0xac, 0xcc, 0x02, 0xae, 0x34, 0x5c, 0x5f, 0xf7, 0x23, 0x77, 0x47,
+
  0xee, 0xd3, 0x70, 0xe5, 0x11, 0xef, 0x40, 0xe0, 0x32, 0x95, 0xb5, 0x48,
+
  0xfc, 0x77, 0x7d, 0x76, 0x78, 0x9d, 0x63, 0x8a, 0x57, 0x3c, 0x6a, 0x62,
+
  0x50, 0xc3, 0x98, 0x63, 0x10, 0xb7, 0x23, 0x8f, 0xe2, 0x2c, 0xde, 0x06,
+
  0xee, 0x55, 0x91, 0xff, 0x2a, 0xcd, 0x80, 0x2d, 0xbf, 0x88, 0x0b, 0x5a,
+
  0x20, 0xde, 0x5a, 0xfc, 0xf5, 0x3f, 0xa5, 0x9e, 0x69, 0x5e, 0xd4, 0x1e,
+
  0x5b, 0xe4, 0x8a, 0xc7, 0x98, 0x53, 0xa2, 0xa2, 0xf8, 0xc4, 0xbd, 0x54,
+
  0x3e, 0xc4, 0xc8, 0x91, 0xfb, 0x11, 0xe6, 0x0a, 0x19, 0xb5, 0x29, 0x64,
+
  0x75, 0x50, 0xfb, 0xe9, 0x8a, 0xb4, 0x0f, 0x04, 0x43, 0xa3, 0x58, 0xa6,
+
  0x64, 0x43, 0x24, 0xb5, 0x01, 0x5e, 0x24, 0x9c, 0x08, 0x3c, 0x14, 0x82,
+
  0xc7, 0x40, 0xa1, 0xac, 0x40, 0x36, 0x69, 0xa2, 0xe1, 0xfb, 0x73, 0x84,
+
  0xd8, 0x56, 0xd4, 0x27, 0xe3, 0x76, 0xa3, 0xf4, 0xb5, 0x69, 0x13, 0x6a,
+
  0xcd, 0x60, 0x50, 0xb5, 0x67, 0x07, 0x4f, 0xae, 0x31, 0x7c, 0x0f, 0xf6,
+
  0x13, 0xb5, 0x7f, 0x65, 0x2f, 0xe2, 0x60, 0x77, 0x67, 0x47, 0xca, 0xd3,
+
  0xa4, 0x90, 0xb9, 0xb6, 0x76, 0xa8, 0xdc, 0x84, 0x73, 0xb9, 0x0e, 0x58,
+
  0xaf, 0x41, 0x14, 0x8b, 0xc8, 0xb0, 0x25, 0x31, 0xcc, 0xc9, 0x3f, 0x78,
+
  0x4e, 0x8a, 0xad, 0x38, 0x23, 0x68, 0xde, 0xda, 0xf2, 0x93, 0x40, 0xac,
+
  0xc2, 0x91, 0x44, 0xea, 0x7d, 0xc1, 0xe1, 0x44, 0xa1, 0x07, 0x6a, 0x64,
+
  0x95, 0x13, 0x16, 0x08, 0xd7, 0x54, 0xf3, 0xc7, 0xb0, 0xca, 0x7d, 0x13,
+
  0xc9, 0x33, 0x5b, 0xee, 0x57, 0xf6, 0xc1, 0x26, 0x3a, 0x7b, 0x4e, 0x5e,
+
  0xd2, 0x4e, 0x17, 0x61, 0x4b, 0x98, 0xe8, 0x04, 0xee, 0xd5, 0x9e, 0x92,
+
  0x41, 0xef, 0x70, 0xe6, 0x74, 0x3a, 0x4a, 0xea, 0xac, 0x3e, 0x13, 0x08,
+
  0x45, 0x67, 0xd0, 0xa7, 0xeb, 0x2c, 0x16, 0x7d, 0x3b, 0x0c, 0x89, 0x9c,
+
  0x93, 0x7e, 0x93, 0xe8, 0x1b, 0x12, 0xe2, 0xc9, 0xbe, 0xa7, 0xc0, 0x18,
+
  0xe8, 0xe8, 0x2e, 0x01, 0x21, 0x32, 0x0a, 0x63, 0x32, 0x40, 0xae, 0x16,
+
  0x69, 0x5a, 0xaa, 0x34, 0x0c, 0x60, 0x0a, 0xa2, 0x97, 0x5b, 0x84, 0x86,
+
  0x41, 0xe8, 0x7c, 0xd9, 0x1a, 0xc3, 0x34, 0x37, 0xd2, 0x67, 0xee, 0xe4,
+
  0x93, 0x84, 0x89, 0x52, 0x6a, 0x0f, 0x56, 0x93, 0xa4, 0x4f, 0x93, 0xab,
+
  0x89, 0xd2, 0xbe, 0x88, 0x43, 0x96, 0xe6, 0xc3, 0x1b, 0x1c, 0x90, 0x2e,
+
  0xe2, 0x76, 0xb8, 0xcd, 0xec, 0x1d, 0xf9, 0x78, 0xf7, 0x04, 0x6e, 0x26,
+
  0x2b, 0x3b, 0xa5, 0x75, 0x91, 0x51, 0x5d, 0xfc, 0xf1, 0x16, 0x79, 0xe4,
+
  0x9d, 0xea, 0xed, 0x0b, 0x89, 0xbb, 0x02, 0x55, 0x3d, 0x92, 0x76, 0xe2,
+
  0x33, 0xd8, 0x95, 0x52, 0x7c, 0x71, 0x39, 0xda, 0x0e, 0x5c, 0xd4, 0xf6,
+
  0x1a, 0x34, 0xce, 0x2f, 0x3a, 0x16, 0x00, 0xb7, 0xf3, 0xb5, 0xaf, 0x19,
+
  0xe3, 0x47, 0x14, 0x69, 0x52, 0xd5, 0x98, 0x2a, 0x03, 0xb4, 0x7a, 0x00,
+
  0x38, 0x85, 0x07, 0x20, 0x38, 0x12, 0xc5, 0xc3, 0x53, 0x8e, 0x1d, 0x60,
+
  0xe7, 0x96, 0x6e, 0x8b, 0xf3, 0xa2, 0x27, 0x05, 0xc3, 0x54, 0xeb, 0x68,
+
  0xc5, 0x8e, 0x16, 0xdc, 0x15, 0xd7, 0xfc, 0x68, 0xb5, 0xd8, 0xaa, 0x96,
+
  0xf7, 0xa8, 0x16, 0xe7, 0x77, 0xd2, 0x8a, 0xf3, 0xbb, 0x28, 0xc5, 0xa4,
+
  0xfe, 0xfa, 0x5a, 0x71, 0xfe, 0xaf, 0x55, 0x8a, 0xf1, 0x91, 0x46, 0x75,
+
  0x99, 0xa7, 0x7e, 0x87, 0xc9, 0x13, 0x93, 0x93, 0xc6, 0x50, 0x56, 0xd8,
+
  0x40, 0x42, 0x90, 0x98, 0xf9, 0xae, 0x88, 0xee, 0x52, 0x05, 0x54, 0x5a,
+
  0x14, 0xa3, 0xab, 0x8a, 0xf4, 0xe7, 0x32, 0x94, 0x75, 0x42, 0x2c, 0x0f,
+
  0x04, 0x35, 0xb5, 0xad, 0x80, 0xab, 0xae, 0x92, 0x32, 0xe7, 0x44, 0xf9,
+
  0x89, 0x5b, 0xf6, 0x0a, 0xfa, 0xb5, 0x61, 0xaa, 0x84, 0x49, 0x16, 0x57,
+
  0xbe, 0x7b, 0xbf, 0xca, 0x08, 0x71, 0x35, 0x18, 0x25, 0xf9, 0x74, 0xdc,
+
  0xb2, 0xb9, 0x64, 0xcc, 0x32, 0xcd, 0xf9, 0x6d, 0xad, 0x0c, 0x11, 0xd8,
+
  0x8d, 0x84, 0xdc, 0x1a, 0x71, 0x65, 0xf7, 0xf7, 0xf5, 0x0b, 0x47, 0x9a,
+
  0xa3, 0xdf, 0x81, 0xc4, 0x5b, 0xd3, 0x8b, 0x0b, 0xee, 0x4c, 0x7b, 0x77,
+
  0xb4, 0x56, 0x26, 0xfd, 0xaa, 0x6f, 0xb6, 0xb0, 0x59, 0x2c, 0xf2, 0xd8,
+
  0xa3, 0x52, 0x61, 0x09, 0xd9, 0x24, 0xd8, 0xa5, 0x41, 0x5f, 0x1c, 0x67,
+
  0xbc, 0x51, 0x29, 0xf0, 0x2d, 0xf2, 0x3a, 0x6d, 0x3e, 0xf3, 0xe2, 0x19,
+
  0x6c, 0x29, 0x3a, 0xae, 0xcf, 0x61, 0x9d, 0xbe, 0xb3, 0xdc, 0xb3, 0xad,
+
  0xdb, 0xa0, 0xa1, 0xa6, 0x19, 0x62, 0x15, 0x65, 0x05, 0x50, 0xbb, 0x32,
+
  0x5b, 0x82, 0x80, 0xa3, 0x80, 0x1a, 0x61, 0x89, 0x8b, 0x13, 0x9d, 0xb1,
+
  0xea, 0x32, 0x50, 0xb7, 0xce, 0xc1, 0x0a, 0x62, 0xfe, 0x08, 0x39, 0x7c,
+
  0xb1, 0x84, 0x33, 0x89, 0x9c, 0xb4, 0xae, 0xd3, 0xf9, 0x42, 0x00, 0xa1,
+
  0xa8, 0x7b, 0x1b, 0x69, 0x14, 0xe4, 0xb8, 0xb0, 0x33, 0xae, 0x02, 0xad,
+
  0xc7, 0xa8, 0xb9, 0x4c, 0x3a, 0x17, 0xb0, 0x38, 0xe9, 0x87, 0x82, 0xf7,
+
  0x51, 0x9c, 0x81, 0x7a, 0x92, 0xaa, 0x5b, 0x8f, 0xa6, 0x0b, 0x0a, 0xb0,
+
  0x74, 0xc2, 0x9e, 0x27, 0x7e, 0x12, 0x2b, 0x31, 0x1a, 0xed, 0x83, 0x60,
+
  0x6d, 0xb8, 0x8c, 0x6e, 0xa7, 0x0e, 0x04, 0xe4, 0x03, 0x95, 0x0b, 0xaa,
+
  0xe5, 0x18, 0x0b, 0xc2, 0x6e, 0xd6, 0x95, 0x6f, 0xab, 0x2c, 0xdf, 0xa8,
+
  0x2b, 0x9b, 0x5d, 0x77, 0xd5, 0x92, 0xc0, 0x96, 0xde, 0xa0, 0xf1, 0xda,
+
  0x61, 0xee, 0x17, 0x96, 0xc1, 0x8c, 0x7b, 0x87, 0x23, 0x65, 0xe7, 0xb4,
+
  0xd6, 0x21, 0x6a, 0xf4, 0x57, 0x6e, 0x9e, 0x11, 0x4a, 0xba, 0x88, 0x9e,
+
  0xf2, 0x71, 0xfd, 0x70, 0x4d, 0x10, 0x6f, 0xed, 0xcc, 0x8a, 0x23, 0x74,
+
  0x58, 0xc6, 0xea, 0xdb, 0x9f, 0x18, 0x70, 0xc5, 0xa9, 0x20, 0x58, 0xe1,
+
  0x6e, 0xb3, 0xf1, 0x44, 0x39, 0x86, 0x1a, 0x0c, 0xa0, 0x01, 0xfb, 0xbe,
+
  0xa2, 0xc1, 0x59, 0x2d, 0x8e, 0xe9, 0x41, 0x11, 0x36, 0xee, 0x0e, 0x0a,
+
  0x84, 0x47, 0x5d, 0xb0, 0x32, 0x86, 0x3a, 0x54, 0x9f, 0xee, 0x1f, 0xb0,
+
  0x65, 0x7d, 0x82, 0x19, 0xbc, 0xa0, 0x1c, 0xb5, 0x5d, 0x09, 0xf4, 0x64,
+
  0xd3, 0xf1, 0x9d, 0x4f, 0x23, 0x4d, 0x4c, 0xf0, 0xbc, 0x4d, 0xaf, 0x23,
+
  0x78, 0xc0, 0xc4, 0xf5, 0xd9, 0xd0, 0x04, 0xbd, 0xdc, 0x32, 0x0c, 0x18,
+
  0xb0, 0x79, 0x24, 0x39, 0xf6, 0xf4, 0xb6, 0x04, 0xc2, 0x85, 0x4f, 0xa0,
+
  0x0a, 0x2a, 0x09, 0x22, 0x26, 0x5a, 0x1a, 0x25, 0x73, 0x00, 0xdd, 0xdd,
+
  0xab, 0x1a, 0xa4, 0x1e, 0xf5, 0x2c, 0x8f, 0x71, 0x52, 0xd6, 0xae, 0x36,
+
  0xbd, 0xe9, 0xf9, 0x61, 0x35, 0xc6, 0xbc, 0x5a, 0xc5, 0x18, 0x21, 0xc0,
+
  0x9d, 0x19, 0x87, 0xed, 0x88, 0x45, 0xd0, 0x8c, 0xd8, 0xf4, 0xc1, 0x4f,
+
  0xfb, 0xf6, 0xd7, 0x83, 0x27, 0x3b, 0xdc, 0x82, 0x03, 0x9d, 0xc1, 0x03,
+
  0x7b, 0x45, 0xdb, 0x4b, 0x0f, 0x62, 0x97, 0xf0, 0x03, 0xe0, 0x22, 0xf8,
+
  0x69, 0xae, 0x1b, 0x84, 0xc1, 0x1b, 0xb0, 0x8e, 0x62, 0x1f, 0xe1, 0x1b,
+
  0x9a, 0xfd, 0xaf, 0x9a, 0x28, 0x29, 0xa1, 0x50, 0x69, 0x10, 0x25, 0x63,
+
  0xe2, 0xe8, 0xaf, 0x4c, 0x86, 0x9b, 0x1b, 0x79, 0xf1, 0x8e, 0x7e, 0xe5,
+
  0x70, 0xe3, 0xc6, 0xeb, 0x93, 0x77, 0xa7, 0x6f, 0x4e, 0x7e, 0xfa, 0xeb,
+
  0xc6, 0xd6, 0x40, 0xf3, 0xa8, 0x80, 0x99, 0x6d, 0xf8, 0x85, 0xa7, 0x51,
+
  0xe3, 0xb1, 0x36, 0x44, 0xcb, 0xcf, 0xe0, 0x6c, 0x59, 0xa1, 0x47, 0x0d,
+
  0x27, 0x30, 0x6e, 0x31, 0x32, 0x61, 0x4f, 0xd7, 0xa4, 0xc9, 0xd0, 0xb6,
+
  0x03, 0x31, 0xf7, 0x7a, 0xf8, 0xaf, 0xbe, 0x23, 0x6c, 0x54, 0xc7, 0xe2,
+
  0xb0, 0x12, 0xef, 0xf6, 0xd3, 0x4e, 0x2b, 0x37, 0xf7, 0xb9, 0x08, 0x61,
+
  0x57, 0x76, 0x37, 0xfd, 0xd1, 0x2c, 0xdc, 0xa3, 0x17, 0xcf, 0xde, 0xe0,
+
  0x1e, 0x09, 0xcc, 0x16, 0x16, 0x06, 0xaa, 0x1b, 0xa4, 0x9a, 0x61, 0x7b,
+
  0x4e, 0x4a, 0x0c, 0x61, 0x2f, 0x09, 0x3d, 0xcd, 0x13, 0xf3, 0x99, 0x6c,
+
  0x8c, 0xad, 0x84, 0xe8, 0x49, 0xea, 0x78, 0x34, 0x02, 0xb2, 0xeb, 0x11,
+
  0xfa, 0x84, 0xb8, 0x51, 0x4c, 0xad, 0xba, 0x42, 0x83, 0x67, 0x79, 0x20,
+
  0x4e, 0x84, 0xf1, 0x79, 0x58, 0x61, 0x6c, 0x57, 0xe8, 0x12, 0x6c, 0xd4,
+
  0xdb, 0xfd, 0x72, 0x6f, 0xb0, 0xfb, 0xe8, 0x09, 0x08, 0xe2, 0x9d, 0xed,
+
  0xdd, 0x47, 0xbd, 0x06, 0x99, 0xe2, 0xb9, 0x4c, 0x26, 0x9e, 0x46, 0xaa,
+
  0x0b, 0x85, 0x05, 0x4e, 0xa4, 0xd8, 0x21, 0x97, 0xd4, 0x81, 0x7a, 0x1d,
+
  0xd5, 0x0b, 0xca, 0xb7, 0x3e, 0x53, 0x82, 0xa9, 0x3e, 0xbe, 0xe7, 0xb4,
+
  0x31, 0xef, 0xad, 0xc7, 0x92, 0x3f, 0xf4, 0x35, 0xe3, 0xad, 0xc1, 0x8f,
+
  0xeb, 0xd9, 0x3c, 0xbe, 0x1a, 0xdd, 0x90, 0x63, 0x7a, 0xf6, 0xf2, 0x15,
+
  0xc8, 0x24, 0xf4, 0x55, 0x09, 0xce, 0x6a, 0x7d, 0x3d, 0x4b, 0xe5, 0x6e,
+
  0xd2, 0x6a, 0x39, 0xdb, 0xe8, 0x82, 0x82, 0x88, 0x97, 0x9e, 0x7a, 0x1e,
+
  0x48, 0xa6, 0x34, 0xb0, 0xbb, 0x12, 0xbe, 0x95, 0xfe, 0x92, 0x11, 0x8e,
+
  0x48, 0x19, 0x7a, 0x6e, 0x9f, 0xdc, 0x0e, 0x50, 0x89, 0xf4, 0x03, 0x88,
+
  0x17, 0x82, 0x86, 0xbb, 0x48, 0xb9, 0xf1, 0xdd, 0x4d, 0x5e, 0x25, 0x7e,
+
  0xd9, 0x4f, 0x91, 0xa5, 0x28, 0x23, 0x7f, 0x1c, 0x08, 0x1f, 0xaf, 0x67,
+
  0x23, 0x37, 0x11, 0x3e, 0x68, 0x6f, 0x97, 0x01, 0x89, 0xd4, 0xed, 0xe1,
+
  0xfd, 0xf1, 0xd1, 0x62, 0x28, 0xb5, 0x9f, 0xbe, 0x6b, 0x7e, 0xe5, 0x95,
+
  0xc3, 0x11, 0xc8, 0xd4, 0x15, 0xe5, 0xf4, 0x57, 0xd9, 0x79, 0xce, 0x66,
+
  0xf4, 0xab, 0x6c, 0x5c, 0x16, 0x55, 0x31, 0x35, 0x9d, 0xe2, 0xd4, 0xbe,
+
  0x7e, 0xf1, 0x62, 0x18, 0x5d, 0xa5, 0x23, 0x45, 0x3e, 0x1e, 0xf8, 0x89,
+
  0x82, 0x04, 0x6d, 0x86, 0x99, 0xb2, 0x65, 0x96, 0xd6, 0xb8, 0xad, 0x8a,
+
  0x66, 0x84, 0xad, 0xf7, 0xf0, 0x9e, 0x54, 0xfa, 0x0e, 0x51, 0x60, 0x01,
+
  0x86, 0x1c, 0xcf, 0x48, 0xf7, 0x8c, 0x16, 0xa9, 0xcf, 0x1a, 0x25, 0x5f,
+
  0xc0, 0x28, 0x8e, 0x4e, 0xf6, 0x38, 0xa1, 0xd8, 0x8b, 0x2b, 0x2b, 0x2b,
+
  0x71, 0xeb, 0xd0, 0xd0, 0x97, 0x04, 0x85, 0xf7, 0x98, 0x18, 0x53, 0x4c,
+
  0xbd, 0xe3, 0x27, 0x18, 0x06, 0xa6, 0x88, 0x57, 0xa0, 0xe9, 0x80, 0xc1,
+
  0x15, 0x25, 0x55, 0x5b, 0x51, 0xff, 0x63, 0xd1, 0x88, 0xf3, 0x71, 0xb1,
+
  0x2c, 0x11, 0xba, 0x10, 0xe7, 0x77, 0x0d, 0x7a, 0x84, 0xa7, 0x0a, 0x14,
+
  0xe2, 0x2e, 0xc1, 0x65, 0xb6, 0xf6, 0x27, 0xa1, 0xe3, 0x2d, 0x96, 0x23,
+
  0x44, 0x6b, 0x26, 0xa1, 0x68, 0xf5, 0x49, 0x77, 0xa3, 0x42, 0xad, 0x00,
+
  0x75, 0x3f, 0x2c, 0x74, 0x30, 0x97, 0x0e, 0x83, 0x7a, 0x77, 0x1e, 0x42,
+
  0xf1, 0x7d, 0x31, 0x95, 0x34, 0x05, 0xea, 0x01, 0x61, 0x8d, 0x3c, 0x9a,
+
  0x91, 0xa8, 0xc5, 0xa5, 0x48, 0x98, 0x26, 0x1d, 0x70, 0x23, 0xa8, 0x60,
+
  0x31, 0x49, 0x88, 0xfa, 0xec, 0xf3, 0x42, 0x6d, 0x8a, 0xdb, 0x48, 0x20,
+
  0xa4, 0x5d, 0x49, 0xfb, 0x30, 0x4a, 0x2d, 0x26, 0x2d, 0xec, 0x2e, 0xc9,
+
  0xc5, 0x48, 0xf2, 0x9f, 0xe6, 0xc4, 0xde, 0xf9, 0xb8, 0x9a, 0xde, 0xb8,
+
  0xce, 0x3a, 0x99, 0xe3, 0x69, 0x3d, 0x23, 0x8e, 0x6b, 0x84, 0xfa, 0xd0,
+
  0x90, 0x27, 0xa4, 0xc3, 0x09, 0xd6, 0xed, 0x17, 0x59, 0x99, 0x55, 0xd8,
+
  0xd9, 0xb9, 0x9d, 0x73, 0x9f, 0x4d, 0xaa, 0x8d, 0x3a, 0xbc, 0xa4, 0x81,
+
  0x2f, 0x91, 0x92, 0xa2, 0xa7, 0x71, 0x4e, 0xb4, 0xcb, 0x66, 0x0a, 0xfc,
+
  0x60, 0x2f, 0x1e, 0xa5, 0x60, 0x59, 0x96, 0xd1, 0xd3, 0x1a, 0xcd, 0xb7,
+
  0x30, 0x76, 0x1a, 0x41, 0xa7, 0x11, 0x66, 0x18, 0xa1, 0x5a, 0x48, 0x35,
+
  0xa4, 0x53, 0xdb, 0xfc, 0x1d, 0x8f, 0x11, 0x9d, 0x91, 0x09, 0xc8, 0x98,
+
  0x7a, 0x27, 0x08, 0x98, 0xd4, 0x1a, 0x6e, 0x6f, 0xb0, 0xd3, 0x05, 0xa0,
+
  0x46, 0x8c, 0x4c, 0xc6, 0xe1, 0x61, 0x94, 0xe8, 0x6c, 0x50, 0x2a, 0x78,
+
  0x92, 0x8c, 0xf7, 0xce, 0xe6, 0xde, 0xb3, 0xde, 0x2c, 0xba, 0x50, 0x03,
+
  0xa3, 0x80, 0x10, 0xca, 0xc9, 0xc6, 0x08, 0x64, 0xd3, 0xc5, 0x31, 0xb9,
+
  0xc2, 0x4b, 0x37, 0xe1, 0x57, 0x73, 0x86, 0x82, 0x15, 0x55, 0xad, 0xd7,
+
  0x96, 0x36, 0x53, 0x32, 0x09, 0xb4, 0xd7, 0xd9, 0x81, 0x44, 0xbd, 0xdc,
+
  0xc6, 0x63, 0x6a, 0x11, 0x84, 0x55, 0x9c, 0x88, 0x6d, 0xd0, 0x1a, 0xee,
+
  0xd1, 0xe3, 0x87, 0x3b, 0xe1, 0x74, 0xea, 0xe6, 0x2e, 0x7d, 0x2e, 0x2c,
+
  0xac, 0xe6, 0x2c, 0x7a, 0xf3, 0xef, 0xdf, 0x7d, 0x39, 0xf8, 0xee, 0xe1,
+
  0x34, 0x7e, 0x30, 0xd8, 0xfd, 0xcf, 0xbf, 0xbf, 0xea, 0x7d, 0x4c, 0xc6,
+
  0x7e, 0x83, 0x5a, 0x9b, 0x0e, 0xc2, 0x56, 0x4c, 0x84, 0x1d, 0x7b, 0x88,
+
  0x98, 0x1f, 0x3d, 0x85, 0x7f, 0x56, 0x65, 0xea, 0xeb, 0xa6, 0xb3, 0x8a,
+
  0x6a, 0x93, 0x5e, 0x11, 0xea, 0x4c, 0xac, 0x2a, 0x8e, 0x1f, 0x3a, 0x30,
+
  0x0f, 0x5e, 0xa3, 0x77, 0x6c, 0x17, 0xd7, 0x67, 0xbd, 0xc3, 0x0b, 0xde,
+
  0x10, 0x99, 0x34, 0x42, 0x3c, 0x65, 0xc7, 0xca, 0x3a, 0x3d, 0x6a, 0xd4,
+
  0x35, 0xe9, 0xcc, 0xa7, 0xb2, 0x89, 0xb4, 0xa8, 0xc9, 0xbe, 0x7d, 0xf3,
+
  0x52, 0xb2, 0xb4, 0xf8, 0xca, 0x62, 0x11, 0x6c, 0x24, 0xab, 0x91, 0x9d,
+
  0x46, 0x6f, 0x78, 0x0c, 0x41, 0x2e, 0xe1, 0x40, 0xcd, 0x9c, 0x52, 0x0f,
+
  0x9b, 0x3e, 0x14, 0x66, 0xf1, 0x8d, 0x32, 0x4a, 0xac, 0x02, 0x77, 0x27,
+
  0x67, 0xfa, 0x37, 0x50, 0x5c, 0xb5, 0xdf, 0xca, 0xf9, 0x0a, 0x51, 0x17,
+
  0xe6, 0x5e, 0x69, 0x9b, 0x9d, 0x38, 0xe6, 0x30, 0x67, 0x4c, 0x85, 0xb8,
+
  0xa8, 0x2d, 0x48, 0xeb, 0x95, 0xae, 0xda, 0x61, 0x67, 0x7b, 0x3f, 0x5f,
+
  0xed, 0xb0, 0x33, 0x89, 0x5e, 0x3d, 0x5f, 0xf4, 0x60, 0xe7, 0xd7, 0x23,
+
  0x6e, 0x8f, 0x50, 0x88, 0xbc, 0x1b, 0xf1, 0x72, 0x27, 0x58, 0x3a, 0x90,
+
  0x46, 0xe7, 0x3e, 0x30, 0xdf, 0xe3, 0xc1, 0xe3, 0x26, 0xf9, 0xbb, 0xc4,
+
  0x16, 0x6c, 0x4e, 0xf6, 0x63, 0x89, 0x40, 0xdb, 0x9a, 0x7e, 0x51, 0xc8,
+
  0x45, 0x6e, 0xeb, 0x86, 0xaa, 0x9e, 0xc0, 0xd7, 0x03, 0xd3, 0x0b, 0xa7,
+
  0x54, 0x67, 0xe2, 0x3f, 0xfe, 0xe9, 0xfb, 0xc7, 0xff, 0xf6, 0x0b, 0x05,
+
  0xb4, 0x53, 0xd4, 0x74, 0x8c, 0x64, 0x56, 0x0d, 0xa7, 0x6a, 0x68, 0x50,
+
  0x0c, 0xc1, 0x8f, 0xfb, 0x22, 0x49, 0x98, 0x81, 0x5e, 0x67, 0x94, 0xc5,
+
  0x4e, 0xb6, 0xdf, 0xc6, 0xef, 0x36, 0x24, 0x5d, 0x50, 0x43, 0x39, 0x62,
+
  0x42, 0x8a, 0xdd, 0x21, 0xf3, 0x56, 0xc2, 0xa4, 0x5c, 0xd4, 0xc4, 0x6f,
+
  0xee, 0x2b, 0xa6, 0xb8, 0x6e, 0x76, 0x99, 0x12, 0x6a, 0xb3, 0x03, 0x11,
+
  0x25, 0x6d, 0xa9, 0x4d, 0x37, 0xce, 0xa9, 0x7a, 0x47, 0x70, 0x96, 0x9e,
+
  0xc6, 0x48, 0x29, 0x05, 0x29, 0xb9, 0x62, 0x06, 0x8c, 0xcc, 0x9e, 0xe5,
+
  0x1d, 0x79, 0x7d, 0x3d, 0x24, 0x08, 0xa0, 0x87, 0x7f, 0x80, 0xb2, 0xd3,
+
  0x07, 0x8b, 0xf7, 0x9f, 0x6e, 0x56, 0x5c, 0x0f, 0x3d, 0xd2, 0x3d, 0x7c,
+
  0x85, 0x77, 0xbf, 0xdb, 0x45, 0xc0, 0xca, 0x5e, 0x7b, 0x90, 0x82, 0x82,
+
  0x6f, 0x86, 0xaa, 0x8d, 0x33, 0x83, 0x22, 0x0b, 0x37, 0x3d, 0x12, 0xc1,
+
  0xd4, 0xfb, 0xe8, 0xde, 0xf9, 0xe7, 0x00, 0xff, 0xfd, 0xdb, 0x6e, 0xfc,
+
  0xf0, 0x17, 0xfb, 0xd8, 0xdf, 0xed, 0xbe, 0xfb, 0xdd, 0x5e, 0x2f, 0x84,
+
  0x45, 0xea, 0xf4, 0xa3, 0xb0, 0x5c, 0x32, 0xa9, 0x08, 0x4f, 0x40, 0xf4,
+
  0xad, 0xa4, 0x6d, 0xcf, 0x13, 0x33, 0xf2, 0x77, 0x12, 0xb3, 0x7f, 0x5a,
+
  0x1e, 0x25, 0xe9, 0x20, 0xa6, 0x45, 0x47, 0xb0, 0x26, 0x7c, 0xb3, 0xb0,
+
  0x29, 0x69, 0x6c, 0x1f, 0x86, 0xc8, 0x64, 0xde, 0x75, 0xed, 0xe0, 0xa5,
+
  0x62, 0xcb, 0x23, 0x6d, 0xfc, 0xe2, 0xaf, 0x87, 0x9c, 0x54, 0xd0, 0xbd,
+
  0x93, 0xa8, 0x91, 0x62, 0x58, 0x44, 0xa3, 0x51, 0xe4, 0x64, 0x16, 0x7e,
+
  0x11, 0xc8, 0xfc, 0x10, 0x1e, 0x46, 0xde, 0x64, 0x75, 0x4e, 0xc0, 0x8d,
+
  0x6e, 0x7e, 0xac, 0x90, 0x71, 0x65, 0xd9, 0x1f, 0x89, 0x70, 0xcf, 0x41,
+
  0xf8, 0x2b, 0x16, 0x21, 0x1a, 0xf0, 0x3d, 0x61, 0xb7, 0x05, 0x72, 0x2e,
+
  0x93, 0x9b, 0x4c, 0x9f, 0xe9, 0x91, 0x40, 0x5d, 0x92, 0x30, 0x45, 0xf1,
+
  0x17, 0x5f, 0xf9, 0x48, 0x46, 0x60, 0x53, 0x37, 0x18, 0x3a, 0xad, 0x07,
+
  0x31, 0x95, 0x91, 0x6d, 0x01, 0x98, 0x54, 0x1d, 0x0b, 0xe2, 0x2e, 0x85,
+
  0x0b, 0xde, 0xc3, 0x0b, 0x45, 0x8b, 0xb3, 0x42, 0xc9, 0x65, 0x08, 0x6c,
+
  0x97, 0x61, 0x5b, 0x04, 0x08, 0xc9, 0x56, 0xb1, 0x45, 0xde, 0x22, 0x21,
+
  0xbc, 0xda, 0x06, 0x14, 0xb7, 0x93, 0x6b, 0x60, 0x6b, 0x19, 0x95, 0x88,
+
  0x98, 0xc6, 0xd4, 0x1a, 0xae, 0x50, 0x49, 0x59, 0x45, 0x1b, 0xf1, 0x46,
+
  0xb4, 0xe9, 0x38, 0x62, 0x27, 0x49, 0x75, 0xb1, 0x15, 0x14, 0x28, 0x26,
+
  0x27, 0xc5, 0xf2, 0xb5, 0x91, 0xc4, 0x41, 0x50, 0x85, 0x66, 0x86, 0xe6,
+
  0x89, 0xdc, 0x22, 0xe2, 0x2c, 0x4b, 0x06, 0xb4, 0x34, 0x60, 0xd0, 0xd1,
+
  0xa8, 0x98, 0x64, 0x64, 0xb8, 0x5c, 0x4b, 0x5c, 0xcd, 0x82, 0x61, 0x18,
+
  0xe1, 0xec, 0xc3, 0xf0, 0x6c, 0x4f, 0xd2, 0xcb, 0xed, 0x7c, 0x39, 0x9b,
+
  0x1d, 0xdc, 0x62, 0xed, 0x61, 0xa5, 0xcd, 0xf5, 0xed, 0xcb, 0x4f, 0x38,
+
  0x84, 0x21, 0x25, 0x3b, 0x44, 0xeb, 0x70, 0xd9, 0xc1, 0xad, 0x06, 0x85,
+
  0x0b, 0xbd, 0xdc, 0x60, 0x57, 0x24, 0x7c, 0xb2, 0xec, 0xe0, 0xb8, 0x88,
+
  0x6e, 0x99, 0xfb, 0x72, 0x37, 0xee, 0xf8, 0xf1, 0xec, 0x6e, 0xcd, 0x59,
+
  0xeb, 0x77, 0x7b, 0xa1, 0x74, 0xe4, 0xdb, 0x0b, 0xf6, 0x7e, 0x20, 0x85,
+
  0xcd, 0x97, 0xf5, 0xdd, 0xb9, 0x71, 0xae, 0x66, 0xab, 0x49, 0xce, 0x71,
+
  0x36, 0x9f, 0x03, 0x3d, 0xfa, 0xf5, 0xe0, 0x0c, 0x25, 0x33, 0x21, 0x20,
+
  0x8e, 0xc8, 0xa4, 0x44, 0xdb, 0xe8, 0x60, 0xa0, 0xf1, 0x81, 0xe6, 0xd9,
+
  0x07, 0xfb, 0x7e, 0x4b, 0xc2, 0xa6, 0xc8, 0x6f, 0x69, 0x3a, 0xc4, 0x9d,
+
  0x6f, 0x50, 0xc3, 0xa3, 0x18, 0x38, 0xa8, 0x93, 0x04, 0xff, 0x6c, 0x53,
+
  0x87, 0x88, 0x96, 0xe0, 0xe9, 0xb1, 0x1f, 0xa9, 0xc4, 0x04, 0x6d, 0xac,
+
  0x2c, 0x1e, 0xa7, 0x3a, 0x1a, 0xa1, 0x09, 0x5d, 0x25, 0x9c, 0xac, 0x67,
+
  0x5b, 0x3e, 0x61, 0x7f, 0x05, 0x1b, 0xd4, 0x64, 0xaa, 0x6d, 0x0f, 0x47,
+
  0x26, 0x40, 0x62, 0x11, 0x0b, 0x3f, 0x20, 0x4d, 0x53, 0x4a, 0x2a, 0x37,
+
  0x17, 0x14, 0x58, 0x59, 0x37, 0xa7, 0xe9, 0x73, 0x76, 0x2f, 0x75, 0x1d,
+
  0x19, 0xfe, 0x4e, 0x76, 0xb8, 0x35, 0x6c, 0x94, 0x6f, 0x7d, 0xe4, 0x45,
+
  0xff, 0x21, 0xeb, 0xaa, 0xb9, 0x81, 0x69, 0xc6, 0xff, 0xb5, 0xea, 0xb0,
+
  0xec, 0xae, 0x3c, 0x49, 0x6b, 0xe5, 0xf0, 0xdb, 0x87, 0xcf, 0x93, 0x0f,
+
  0xcd, 0x58, 0xfb, 0x93, 0xa6, 0xc1, 0xe7, 0x5e, 0x18, 0x04, 0x66, 0xe2,
+
  0x63, 0x91, 0x54, 0xef, 0x79, 0x2b, 0x27, 0x85, 0x3d, 0x1b, 0xce, 0xd1,
+
  0x60, 0x1d, 0xb7, 0x39, 0x95, 0xfe, 0x8a, 0x66, 0xe1, 0xd8, 0x07, 0xaf,
+
  0xc4, 0xc6, 0xe0, 0x2e, 0x6c, 0x1b, 0x77, 0x96, 0x20, 0x9d, 0xc1, 0x50,
+
  0x2f, 0x3f, 0xb2, 0xca, 0x70, 0x87, 0x93, 0xdc, 0x3b, 0xec, 0x84, 0xae,
+
  0xf1, 0xaf, 0x22, 0x4d, 0xc7, 0xd0, 0xf3, 0xed, 0x4f, 0x4d, 0xcf, 0x82,
+
  0xe7, 0x75, 0xf9, 0x19, 0x1a, 0x6b, 0x7d, 0x5b, 0x37, 0xc3, 0xbd, 0x9b,
+
  0x5f, 0x8d, 0x59, 0x60, 0x0e, 0x6d, 0x07, 0x55, 0x4e, 0xd7, 0x80, 0xff,
+
  0x6d, 0x82, 0x6f, 0x34, 0xe8, 0xad, 0x99, 0x81, 0xd4, 0xb8, 0x70, 0x45,
+
  0x49, 0xae, 0x20, 0x4d, 0x52, 0xa7, 0x15, 0x4b, 0x0c, 0xcc, 0x1a, 0x85,
+
  0xce, 0x2b, 0x09, 0x66, 0x99, 0xac, 0x62, 0x2f, 0xdd, 0xe1, 0x1c, 0xbb,
+
  0xe4, 0xa1, 0x2f, 0x0c, 0xdb, 0xb0, 0xcc, 0xb1, 0x89, 0x7d, 0xf9, 0x6f,
+
  0xc3, 0xc5, 0x9a, 0x87, 0xf6, 0xde, 0xdb, 0x47, 0xf8, 0x40, 0x28, 0xeb,
+
  0x11, 0xc7, 0xa7, 0xe0, 0x53, 0xb6, 0xcc, 0x8a, 0x78, 0x54, 0xa3, 0x9b,
+
  0xf3, 0x0a, 0x92, 0x89, 0xd1, 0xa9, 0x1c, 0x3d, 0x5d, 0x5c, 0x94, 0x49,
+
  0x95, 0xfa, 0xa8, 0xb1, 0xc3, 0xe7, 0x11, 0xe5, 0x04, 0x9d, 0xc2, 0x55,
+
  0x7c, 0x8d, 0x31, 0x0e, 0xa4, 0x95, 0x7b, 0xf4, 0x3e, 0xbd, 0xee, 0xf0,
+
  0x87, 0xd0, 0xd0, 0x77, 0x42, 0xd6, 0xbb, 0x87, 0xc6, 0xed, 0xf4, 0x70,
+
  0x2e, 0x89, 0xa5, 0x44, 0xd4, 0xeb, 0x3b, 0xa0, 0xde, 0xd0, 0x6d, 0xad,
+
  0xba, 0xd2, 0xc6, 0xd2, 0xd5, 0x17, 0x71, 0x52, 0xc5, 0x1e, 0x1b, 0x3e,
+
  0x6b, 0xf7, 0x80, 0xc1, 0x90, 0x23, 0xb5, 0xfa, 0xfd, 0xfb, 0x12, 0x9b,
+
  0xed, 0x52, 0x83, 0xd2, 0xed, 0xc1, 0x60, 0x1b, 0x4d, 0xe9, 0x6d, 0xf8,
+
  0x41, 0x6e, 0xbd, 0xda, 0xf8, 0xd9, 0x5a, 0xc3, 0xa1, 0x01, 0x46, 0x90,
+
  0x1b, 0xd4, 0x6e, 0x0f, 0x8b, 0x65, 0x66, 0xd7, 0x4e, 0x55, 0x7a, 0xf5,
+
  0xf7, 0x25, 0xc6, 0xbb, 0x11, 0xb1, 0x37, 0x2d, 0xa9, 0xb9, 0x50, 0x3a,
+
  0x6f, 0xb8, 0x6b, 0x3d, 0xbf, 0x20, 0x17, 0xcd, 0x54, 0xd2, 0xa8, 0x8d,
+
  0xbc, 0x0d, 0x2e, 0x84, 0x2f, 0xa3, 0xba, 0x51, 0x23, 0x9b, 0xac, 0xd6,
+
  0xdc, 0x15, 0x6a, 0x3d, 0x95, 0xdc, 0xa4, 0x3b, 0xe8, 0x82, 0xdc, 0x7b,
+
  0x7d, 0xb1, 0x1d, 0x7a, 0x7d, 0x42, 0x30, 0x93, 0x0a, 0x6c, 0x3e, 0xee,
+
  0x02, 0xfc, 0x7f, 0x5a, 0x8f, 0xb7, 0x29, 0xbc, 0x32, 0x59, 0xd9, 0xce,
+
  0x85, 0x4a, 0x59, 0x63, 0xf6, 0x33, 0x36, 0x4e, 0xd5, 0x83, 0xbd, 0xd6,
+
  0xa9, 0xca, 0x80, 0x1f, 0x4e, 0x16, 0xcb, 0x11, 0x52, 0xd0, 0x53, 0x78,
+
  0xfb, 0x8b, 0x00, 0xd6, 0x2a, 0x9d, 0xac, 0x66, 0xb9, 0x30, 0x3b, 0x98,
+
  0xd8, 0xe5, 0x60, 0xb8, 0xa1, 0x86, 0xe8, 0xf0, 0xa8, 0x09, 0x3e, 0x40,
+
  0xb4, 0xe9, 0x03, 0xe1, 0xd1, 0x43, 0x18, 0x7c, 0x85, 0xc1, 0x91, 0x39,
+
  0xb4, 0xb1, 0x48, 0x4d, 0x35, 0xb4, 0x98, 0x58, 0x09, 0xe3, 0xb7, 0x50,
+
  0xf4, 0x8f, 0x46, 0x23, 0x87, 0xb2, 0xdf, 0x11, 0x91, 0x73, 0x74, 0x0c,
+
  0x56, 0xb4, 0xcc, 0x02, 0x27, 0x01, 0xef, 0x7c, 0x7a, 0xfc, 0x0a, 0x49,
+
  0xee, 0xd9, 0xf1, 0x1b, 0x09, 0x12, 0xf4, 0xf1, 0x4f, 0x74, 0xc6, 0xb0,
+
  0xff, 0xc5, 0x6f, 0x61, 0x85, 0x71, 0xd0, 0x47, 0x0f, 0x28, 0x5a, 0x49,
+
  0xcc, 0xe0, 0x22, 0xd9, 0x7b, 0xf8, 0x48, 0xa6, 0xad, 0x9d, 0xa8, 0xc9,
+
  0x9f, 0xb6, 0xc1, 0x5f, 0x6d, 0x6f, 0x73, 0xb6, 0x0b, 0x46, 0xdf, 0x3d,
+
  0x53, 0x9d, 0x12, 0xae, 0xf0, 0xda, 0xaf, 0x36, 0xc2, 0xc8, 0x4b, 0x1a,
+
  0x4c, 0xe2, 0x1c, 0x17, 0xcc, 0x01, 0x47, 0xa8, 0xa6, 0xe1, 0x4b, 0x47,
+
  0xe9, 0xd6, 0x4e, 0x00, 0x12, 0xcf, 0x91, 0xf6, 0x63, 0x1e, 0x54, 0xd2,
+
  0x18, 0xbb, 0x9d, 0x10, 0xd2, 0x34, 0xe5, 0x7d, 0x50, 0x07, 0x26, 0x32,
+
  0x63, 0x50, 0x7c, 0x6a, 0xab, 0x09, 0xa0, 0x86, 0xc6, 0x02, 0x55, 0x4c,
+
  0xeb, 0x63, 0xbf, 0x79, 0x22, 0xe3, 0xa2, 0xd3, 0x76, 0x38, 0x03, 0x4b,
+
  0xeb, 0xad, 0xac, 0x76, 0x9d, 0xd6, 0x5c, 0x4e, 0xc6, 0x69, 0x22, 0x8c,
+
  0xbb, 0xb3, 0x1c, 0x79, 0x58, 0xf5, 0x4a, 0x18, 0x86, 0xcb, 0x36, 0x33,
+
  0x6a, 0x5c, 0xfc, 0x0a, 0x0b, 0xee, 0x6e, 0x17, 0xc1, 0xf3, 0x23, 0x4e,
+
  0x0b, 0x4a, 0x8b, 0x64, 0xd8, 0x28, 0x03, 0xe8, 0xce, 0x39, 0xc5, 0xd7,
+
  0x54, 0xd2, 0xe6, 0xf3, 0x80, 0xe3, 0x57, 0xdb, 0x48, 0x08, 0x12, 0x10,
+
  0xf4, 0xbc, 0x0c, 0x8f, 0x07, 0xfb, 0x5f, 0x0e, 0x76, 0x0e, 0xa2, 0x13,
+
  0x30, 0xcc, 0x60, 0x0b, 0xfa, 0xd1, 0x0f, 0xf9, 0x12, 0x77, 0x04, 0x5f,
+
  0xfa, 0x87, 0xe1, 0x9f, 0xb2, 0xda, 0xbf, 0xe1, 0xc1, 0x3e, 0xde, 0xf0,
+
  0x7a, 0xc8, 0x17, 0x5d, 0x15, 0xb3, 0x29, 0xdc, 0x18, 0xb8, 0xec, 0x31,
+
  0x5e, 0x06, 0xf4, 0x36, 0xa9, 0xbd, 0x66, 0x07, 0x42, 0x60, 0xdd, 0x93,
+
  0x7a, 0xf0, 0x20, 0x30, 0xa9, 0xfe, 0xba, 0x0f, 0x6d, 0xbb, 0x48, 0xc8,
+
  0xb2, 0x43, 0x42, 0x1b, 0x25, 0xe3, 0xf7, 0x44, 0x51, 0x04, 0x54, 0xcc,
+
  0xb3, 0xe8, 0xc2, 0x1c, 0x6a, 0xf0, 0x8b, 0x4f, 0xae, 0xbc, 0x76, 0x82,
+
  0x03, 0x36, 0xa6, 0x01, 0xff, 0xad, 0xe5, 0x37, 0x69, 0xdd, 0x6e, 0x4e,
+
  0xf1, 0x38, 0xdd, 0xdd, 0x7d, 0x32, 0x7a, 0xb8, 0xfb, 0xe4, 0xcb, 0xc7,
+
  0xd3, 0x07, 0x0f, 0x1e, 0xee, 0x4d, 0xc6, 0x1b, 0x6b, 0x8a, 0x61, 0xf4,
+
  0x9c, 0xc0, 0xa8, 0x3c, 0x60, 0x33, 0xc2, 0xd6, 0x42, 0xc2, 0x97, 0xf6,
+
  0x67, 0xe1, 0x44, 0xa1, 0x26, 0xab, 0x2d, 0xa9, 0xe9, 0x78, 0x4d, 0x38,
+
  0xed, 0x8f, 0xf7, 0xf6, 0x77, 0xb7, 0x1f, 0x0d, 0x1e, 0x0c, 0xf6, 0x0c,
+
  0x9e, 0x10, 0x77, 0x3e, 0xa8, 0xa9, 0x92, 0x3e, 0x90, 0xea, 0x4b, 0x90,
+
  0x06, 0x59, 0x2e, 0x7d, 0xdc, 0xcc, 0x27, 0x14, 0x6b, 0xb3, 0x90, 0x0e,
+
  0xd8, 0xd9, 0x6d, 0xd7, 0x05, 0xd8, 0xa5, 0x28, 0x71, 0xbb, 0x84, 0xb4,
+
  0xc8, 0x63, 0x9c, 0x84, 0x49, 0xfa, 0xc0, 0x98, 0xda, 0x28, 0xfb, 0xfb,
+
  0x32, 0xab, 0xc1, 0x00, 0xc3, 0xf7, 0xc4, 0x3c, 0x96, 0x51, 0x59, 0x5c,
+
  0x55, 0x64, 0x0d, 0xc2, 0x92, 0xd0, 0x3b, 0x10, 0xa3, 0xf0, 0x35, 0x73,
+
  0x69, 0xd9, 0x80, 0xa2, 0xdc, 0xe9, 0xde, 0x41, 0x10, 0xb8, 0x19, 0xb1,
+
  0x74, 0xbc, 0xa2, 0xca, 0xaa, 0x1a, 0x18, 0x31, 0xb0, 0xad, 0xe7, 0xc5,
+
  0x15, 0x92, 0x58, 0x9f, 0x50, 0x2a, 0x4a, 0x3f, 0x2b, 0x8a, 0x5a, 0x76,
+
  0x69, 0x72, 0x33, 0xe6, 0x9e, 0x12, 0xb4, 0x00, 0xad, 0x1f, 0xa5, 0x78,
+
  0x0a, 0xd6, 0x00, 0x97, 0x0a, 0x72, 0x12, 0x48, 0xe3, 0x85, 0x57, 0x5b,
+
  0x04, 0xf3, 0x34, 0x41, 0x57, 0x0d, 0xc2, 0xc0, 0x72, 0xa2, 0xab, 0x05,
+
  0xcd, 0xeb, 0x02, 0xb0, 0x0d, 0xe9, 0x1d, 0xbc, 0xeb, 0xf7, 0x5a, 0xbd,
+
  0x52, 0xe8, 0xa8, 0x6b, 0xeb, 0x1b, 0x32, 0x19, 0x07, 0xb7, 0x37, 0x9e,
+
  0x44, 0x3d, 0x64, 0x9c, 0xeb, 0x86, 0x99, 0xa5, 0x67, 0x5f, 0xdf, 0x36,
+
  0xec, 0x63, 0x6d, 0xb4, 0x0b, 0xda, 0x57, 0x6f, 0xb8, 0x33, 0xf9, 0xef,
+
  0xdf, 0x3f, 0xf9, 0xef, 0xfd, 0xcf, 0x27, 0x7f, 0xa5, 0xfe, 0x64, 0x25,
+
  0xed, 0x33, 0xf1, 0xe3, 0x09, 0xf9, 0x3c, 0xe4, 0xbf, 0xf7, 0x49, 0xc8,
+
  0x7f, 0xef, 0x6e, 0xe4, 0xbf, 0x77, 0x7f, 0xe4, 0xbf, 0xbb, 0x2e, 0xf9,
+
  0xef, 0xdf, 0x86, 0xfc, 0x81, 0xd2, 0xb0, 0xa4, 0xb0, 0x49, 0xfe, 0x0f,
+
  0xd6, 0x22, 0x7f, 0xa6, 0x7f, 0x3a, 0x00, 0x9d, 0x27, 0x00, 0xe7, 0xec,
+
  0xe2, 0xab, 0x83, 0xf0, 0x0a, 0x77, 0x63, 0xbc, 0x3d, 0x9d, 0x25, 0x34,
+
  0xa8, 0x8e, 0x1a, 0xca, 0xae, 0x18, 0x7c, 0x4a, 0x32, 0xdb, 0xff, 0x24,
+
  0x64, 0xb6, 0x7f, 0x37, 0x32, 0xdb, 0xff, 0x24, 0x5c, 0x76, 0xf7, 0x26,
+
  0x32, 0x2b, 0x53, 0x4e, 0x54, 0xfc, 0x9b, 0x66, 0x8c, 0xc2, 0xb3, 0x7e,
+
  0xa1, 0xf0, 0xce, 0x01, 0x2a, 0x79, 0xbf, 0xb4, 0xed, 0xf7, 0x90, 0x4d,
+
  0x37, 0x3c, 0x39, 0xfa, 0xd3, 0x50, 0x12, 0x1e, 0x45, 0xe9, 0x56, 0xa5,
+
  0x9c, 0xc3, 0x0d, 0x60, 0xab, 0x51, 0x23, 0x0e, 0xcf, 0xd0, 0xa3, 0x22,
+
  0xd9, 0x46, 0xa6, 0x34, 0x16, 0xcc, 0x8a, 0xe8, 0xa5, 0x6e, 0xe2, 0xd2,
+
  0xe1, 0x97, 0x13, 0x1a, 0x65, 0xd4, 0x4a, 0x10, 0xd9, 0x3d, 0x86, 0xc9,
+
  0x13, 0x91, 0x99, 0x98, 0x18, 0x73, 0xee, 0xdc, 0xb8, 0x59, 0x5f, 0x94,
+
  0x84, 0x11, 0x4b, 0x97, 0x6e, 0x69, 0x56, 0xf4, 0xaa, 0xd9, 0xc9, 0xbc,
+
  0x9e, 0xa3, 0xb7, 0x03, 0x6d, 0xbb, 0xa8, 0x95, 0xd2, 0xed, 0xb8, 0x76,
+
  0xcd, 0xb7, 0x9a, 0xe7, 0x10, 0xea, 0xce, 0x23, 0xad, 0x84, 0x9d, 0xf5,
+
  0xc6, 0xfb, 0xfc, 0x94, 0xfe, 0x0f, 0x6e, 0xd3, 0x40, 0x8c, 0xeb, 0xc0,
+
  0x89, 0xc9, 0x09, 0x95, 0xd4, 0xbc, 0xa1, 0x8e, 0x51, 0x29, 0x1c, 0x70,
+
  0x55, 0x8c, 0xdf, 0x57, 0x0f, 0x60, 0xc8, 0x76, 0x80, 0x9c, 0xbf, 0x48,
+
  0xf0, 0x1b, 0xf9, 0xe3, 0x21, 0x3e, 0x98, 0x8a, 0x54, 0xf8, 0xcf, 0x0b,
+
  0xfa, 0x9b, 0x8b, 0xce, 0xb8, 0x33, 0xae, 0x93, 0x91, 0x34, 0x0e, 0x2e,
+
  0xb4, 0x0a, 0x27, 0x76, 0x79, 0x72, 0xa7, 0x91, 0xd7, 0x85, 0xed, 0xa4,
+
  0xea, 0xbe, 0x33, 0x56, 0xec, 0x50, 0xe3, 0x82, 0x50, 0x08, 0xcc, 0x11,
+
  0x6d, 0x34, 0xf2, 0x83, 0x0e, 0x80, 0xdd, 0x54, 0x8a, 0x84, 0x35, 0x47,
+
  0x45, 0xec, 0x11, 0xf3, 0x18, 0x49, 0x5a, 0x71, 0xb7, 0x00, 0x7b, 0x3d,
+
  0xfb, 0x39, 0xb0, 0x49, 0x55, 0x2d, 0xe7, 0xc6, 0x59, 0xbb, 0xbb, 0xf3,
+
  0xc4, 0x77, 0xc4, 0xbf, 0x55, 0x88, 0x51, 0x93, 0xaa, 0xca, 0xd5, 0x72,
+
  0x8a, 0xa0, 0x6e, 0xcc, 0x9a, 0xc0, 0x43, 0x31, 0x9b, 0x27, 0xe0, 0xf8,
+
  0x9a, 0xa4, 0xec, 0x2e, 0x18, 0xb1, 0xcb, 0x4b, 0x78, 0x9b, 0x20, 0x9f,
+
  0x49, 0x2d, 0x1d, 0x3b, 0x1a, 0x25, 0x69, 0x0e, 0x61, 0x3b, 0xb9, 0x28,
+
  0xca, 0xe3, 0x8d, 0xe8, 0xe5, 0xd6, 0x3c, 0xe5, 0x6f, 0x6d, 0x67, 0xe5,
+
  0xdf, 0x3f, 0xd8, 0xc1, 0x3d, 0xd5, 0x51, 0x30, 0xd6, 0x3c, 0xd3, 0xbc,
+
  0xcc, 0xdf, 0xef, 0x27, 0x1d, 0x16, 0x9b, 0x32, 0x81, 0xcf, 0x54, 0x6b,
+
  0x61, 0x9e, 0x6f, 0x08, 0x93, 0x8f, 0x98, 0xd6, 0x9c, 0xc4, 0x1f, 0x22,
+
  0x89, 0x41, 0xe3, 0x0f, 0xf3, 0xf1, 0x1d, 0x8b, 0x31, 0x24, 0xf0, 0xc5,
+
  0xcf, 0x6a, 0x58, 0x60, 0x0f, 0x9b, 0x9e, 0x2f, 0x0f, 0xc0, 0x25, 0x10,
+
  0x86, 0x10, 0xfd, 0x4d, 0xdb, 0x24, 0x69, 0x0b, 0x01, 0x53, 0xeb, 0x9b,
+
  0xb0, 0xd3, 0x89, 0xe6, 0x6b, 0x3e, 0x84, 0xa1, 0xe0, 0x81, 0x5e, 0x22,
+
  0xb1, 0x66, 0x86, 0x71, 0xbd, 0x07, 0x3b, 0x36, 0xfb, 0x5e, 0xd7, 0xdf,
+
  0x64, 0xd6, 0x8f, 0xc2, 0xe5, 0xba, 0x5c, 0xb0, 0x65, 0x9e, 0x42, 0x8f,
+
  0x99, 0x94, 0xc9, 0x95, 0xe3, 0xf7, 0xe2, 0xde, 0x7f, 0x53, 0x4a, 0xfb,
+
  0x32, 0xd5, 0x76, 0xf0, 0x3d, 0x16, 0x1e, 0x84, 0x3a, 0xc8, 0x56, 0xe3,
+
  0x12, 0x51, 0xe4, 0xc9, 0x75, 0x75, 0x51, 0xd0, 0x48, 0x0b, 0xec, 0x23,
+
  0x0f, 0xda, 0xe7, 0x79, 0xaa, 0xed, 0x6d, 0xcc, 0x5b, 0x6b, 0xfb, 0x19,
+
  0xea, 0xa8, 0x33, 0x08, 0xe0, 0xbd, 0xd9, 0x00, 0x8d, 0x16, 0x84, 0x27,
+
  0xd2, 0x7e, 0x07, 0x6f, 0xed, 0x4b, 0x1d, 0xab, 0x70, 0x0b, 0xee, 0xf5,
+
  0x95, 0x8c, 0xa9, 0xff, 0x6e, 0xb6, 0x68, 0x6b, 0x42, 0xf1, 0xd7, 0xc5,
+
  0xd7, 0xf1, 0x96, 0xe9, 0xc6, 0x5c, 0x5c, 0xa6, 0x15, 0xb9, 0x29, 0x18,
+
  0xa0, 0x14, 0xb8, 0xc4, 0x05, 0xf9, 0x84, 0x45, 0x49, 0x20, 0x70, 0x51,
+
  0x42, 0x40, 0x92, 0xd6, 0xa8, 0x1d, 0xed, 0x98, 0x38, 0xcb, 0x94, 0x39,
+
  0x34, 0x52, 0x3a, 0xac, 0xd5, 0x94, 0xcb, 0xe9, 0xd1, 0xb9, 0x17, 0x61,
+
  0xb1, 0x46, 0x54, 0x5d, 0xcf, 0x47, 0x85, 0x40, 0x9e, 0x16, 0x8b, 0x7f,
+
  0x9b, 0x40, 0x91, 0x47, 0xae, 0xf7, 0x8b, 0xf8, 0x1b, 0x46, 0x32, 0xba,
+
  0xd5, 0x01, 0xff, 0xdd, 0xda, 0x89, 0x9b, 0x31, 0xd5, 0x3b, 0x4d, 0x24,
+
  0x9f, 0xa6, 0xa9, 0xb0, 0x80, 0x70, 0x89, 0x55, 0x60, 0x3c, 0x55, 0x59,
+
  0xf3, 0xcd, 0x8d, 0xc8, 0x95, 0x46, 0x2a, 0x4d, 0xc5, 0xb7, 0x8b, 0x1c,
+
  0x99, 0x20, 0x64, 0xc9, 0xba, 0xab, 0xc6, 0x17, 0xe9, 0x9c, 0xf1, 0x86,
+
  0x7c, 0xe8, 0x56, 0xd0, 0x30, 0x73, 0xa6, 0x53, 0xcc, 0x17, 0xcc, 0x8d,
+
  0x03, 0x2c, 0x72, 0xba, 0x86, 0x4b, 0xc7, 0x4f, 0x69, 0x1d, 0x19, 0x1d,
+
  0xc1, 0xf0, 0xc7, 0xef, 0xde, 0xbe, 0x1e, 0xbe, 0x3d, 0x8d, 0xbd, 0x86,
+
  0xdf, 0x6f, 0xce, 0x8e, 0x9f, 0x61, 0xd5, 0xe3, 0xd9, 0xc9, 0xd1, 0xc9,
+
  0xcb, 0x68, 0x73, 0x77, 0x6b, 0x25, 0x11, 0x19, 0xb2, 0xe1, 0xf6, 0x9f,
+
  0x9c, 0x45, 0x2d, 0x0b, 0xc0, 0x1c, 0xcd, 0xcc, 0x62, 0x13, 0x57, 0xd9,
+
  0x1f, 0xed, 0x47, 0x39, 0x6d, 0xad, 0xd8, 0x88, 0xf8, 0x53, 0xcf, 0x97,
+
  0x5c, 0x9f, 0x67, 0x46, 0x71, 0xab, 0x7c, 0xa8, 0x7c, 0x35, 0xd0, 0x32,
+
  0xb1, 0x4f, 0x39, 0x24, 0x9c, 0xa5, 0xef, 0xe0, 0x00, 0x77, 0x09, 0x18,
+
  0x77, 0xd3, 0x3e, 0x57, 0xde, 0x7c, 0x73, 0x16, 0x8c, 0x28, 0x32, 0xb5,
+
  0xf2, 0xe4, 0x26, 0xd5, 0x1a, 0xef, 0xb6, 0xa5, 0x62, 0x30, 0x12, 0x99,
+
  0x2d, 0xcd, 0xd0, 0xc9, 0xc3, 0x96, 0x0b, 0xcf, 0x5e, 0x67, 0x49, 0xb5,
+
  0x0a, 0xd3, 0xaa, 0x21, 0x56, 0x6e, 0x22, 0x73, 0x85, 0x6c, 0xcd, 0xdc,
+
  0x42, 0xbd, 0x5b, 0x24, 0x69, 0x94, 0x9a, 0x48, 0xb0, 0x19, 0x36, 0xc0,
+
  0xf3, 0xef, 0xa9, 0x06, 0x7c, 0xc7, 0x24, 0xcd, 0x33, 0xd6, 0x35, 0xcc,
+
  0xdc, 0xa5, 0x95, 0x81, 0xd4, 0xb9, 0xc2, 0x05, 0xf8, 0xad, 0x43, 0x13,
+
  0xd4, 0x82, 0xca, 0x2f, 0xc4, 0xe0, 0xbb, 0x71, 0x93, 0x11, 0xa1, 0xd8,
+
  0xce, 0x09, 0xc7, 0x43, 0xc9, 0x4d, 0xfd, 0xed, 0xbb, 0xb7, 0xa3, 0x2f,
+
  0x4d, 0x95, 0x88, 0x13, 0x93, 0xa2, 0x8d, 0x8b, 0xc8, 0xba, 0xb5, 0xf3,
+
  0x2e, 0x1d, 0xc9, 0xb6, 0xcd, 0x45, 0xc4, 0xc4, 0xae, 0x3e, 0xee, 0x5c,
+
  0x9f, 0xb7, 0x4f, 0xd4, 0x82, 0x15, 0x3b, 0xf8, 0x9d, 0x0b, 0x88, 0xe3,
+
  0xa2, 0xee, 0xd1, 0x74, 0x78, 0x66, 0x8c, 0x8d, 0x4d, 0x33, 0xea, 0x13,
+
  0xa0, 0x32, 0x4e, 0xf0, 0x7b, 0x9e, 0x5f, 0x47, 0x7f, 0xaf, 0x68, 0x53,
+
  0x1b, 0xa9, 0x3c, 0x7a, 0x38, 0xd8, 0xdb, 0x6a, 0xa4, 0x57, 0x12, 0x7e,
+
  0x5a, 0x19, 0xfd, 0x11, 0x7f, 0x2a, 0x82, 0x13, 0xfe, 0xbe, 0xe8, 0xdc,
+
  0x2b, 0x67, 0x19, 0xaa, 0xbe, 0x82, 0x94, 0xf1, 0x99, 0x3f, 0x2f, 0x8a,
+
  0x89, 0xf4, 0x69, 0xe1, 0xbe, 0x2c, 0xab, 0x4e, 0x18, 0x2f, 0xd2, 0x6d,
+
  0xce, 0xd7, 0x27, 0xca, 0x18, 0x71, 0x66, 0xf1, 0x75, 0x6b, 0x9b, 0xd6,
+
  0x30, 0x62, 0x71, 0x14, 0xef, 0x18, 0xdd, 0xf2, 0x00, 0x91, 0x05, 0xc3,
+
  0x47, 0x68, 0xc5, 0x19, 0x9a, 0xba, 0xca, 0xc8, 0xc0, 0x97, 0xa9, 0x0e,
+
  0x85, 0xa7, 0xb8, 0x48, 0x14, 0xa2, 0x9b, 0xa5, 0x53, 0x32, 0x51, 0x08,
+
  0x81, 0xbc, 0x4f, 0x5f, 0x52, 0x26, 0xa7, 0xa9, 0xa9, 0x0d, 0xb7, 0x0c,
+
  0xc4, 0xeb, 0xa4, 0xa3, 0x98, 0xb5, 0xfa, 0x4c, 0x5f, 0xd6, 0x0d, 0xa0,
+
  0x8c, 0x8d, 0xbe, 0xe9, 0x01, 0x30, 0xbb, 0xa6, 0xcc, 0xbf, 0xec, 0x03,
+
  0x1f, 0xdd, 0xdf, 0xd2, 0xb2, 0xf0, 0x33, 0xd6, 0x49, 0x25, 0xd4, 0x46,
+
  0x8f, 0xe8, 0x87, 0xb9, 0x04, 0xd6, 0x4b, 0x72, 0xdb, 0x7c, 0x88, 0x4f,
+
  0xf5, 0x4e, 0xd4, 0x1f, 0xe1, 0xdd, 0x10, 0x36, 0x5d, 0x04, 0x81, 0x99,
+
  0x4b, 0x46, 0x9d, 0x68, 0x33, 0xcd, 0x31, 0x76, 0x4e, 0xb8, 0x60, 0xf9,
+
  0x11, 0xd8, 0xba, 0x87, 0x66, 0x49, 0x66, 0xc8, 0x04, 0x4d, 0x6a, 0x8b,
+
  0xa2, 0x63, 0x78, 0xfc, 0x14, 0x55, 0x0d, 0xd3, 0x8c, 0x52, 0x4a, 0x6b,
+
  0x7c, 0xc9, 0x14, 0x83, 0xce, 0x91, 0xe6, 0xd7, 0xcd, 0x09, 0x61, 0xd1,
+
  0x2a, 0x28, 0x74, 0x78, 0x96, 0xb2, 0x5a, 0x83, 0x8c, 0xa9, 0x83, 0x49,
+
  0x61, 0xa7, 0xe8, 0x4f, 0xa9, 0x39, 0xe7, 0x10, 0x5f, 0xfa, 0xda, 0x2c,
+
  0x83, 0x36, 0x63, 0x71, 0x17, 0x63, 0x93, 0xda, 0x5f, 0x6b, 0x9a, 0x34,
+
  0x3d, 0xf2, 0x36, 0xcb, 0x40, 0x3d, 0x6c, 0xc9, 0xb3, 0x50, 0x2d, 0x47,
+
  0xbf, 0x12, 0x10, 0x67, 0xc1, 0x48, 0x5f, 0xb2, 0x0a, 0xe2, 0xd9, 0x81,
+
  0x4d, 0x85, 0x0b, 0x38, 0x7b, 0xa2, 0x46, 0x48, 0x83, 0xd0, 0x70, 0x94,
+
  0xbd, 0x9d, 0x39, 0x65, 0x45, 0x96, 0xc4, 0x68, 0x46, 0xab, 0xc0, 0x94,
+
  0x0f, 0xbe, 0xe8, 0x60, 0xe0, 0xf1, 0x14, 0x8f, 0x22, 0x17, 0xcf, 0xb6,
+
  0x54, 0x08, 0x5e, 0x4b, 0x2e, 0x29, 0x37, 0xf0, 0x19, 0x78, 0x79, 0xe7,
+
  0x58, 0xca, 0x87, 0xab, 0xfe, 0x1f, 0xf1, 0x87, 0xff, 0x0e, 0x4d, 0x34,
+
  0x10, 0x2c, 0x9e, 0x14, 0x4e, 0x88, 0x97, 0x13, 0x83, 0xa5, 0xdb, 0xbb,
+
  0x1e, 0xe0, 0x70, 0x8f, 0xd5, 0x63, 0x13, 0xcf, 0x58, 0xe3, 0x01, 0x6f,
+
  0x45, 0x91, 0x93, 0x22, 0x61, 0x6d, 0x8f, 0xe5, 0x10, 0x3d, 0xfc, 0x36,
+
  0x59, 0x8e, 0xd1, 0x75, 0x29, 0x00, 0x54, 0x0d, 0x3b, 0xbd, 0x6d, 0xb4,
+
  0x8d, 0xcb, 0x0c, 0xdb, 0xea, 0x61, 0x4e, 0x6d, 0x32, 0x45, 0xf8, 0x91,
+
  0x12, 0xff, 0xc1, 0x8d, 0xa6, 0x2a, 0x16, 0x46, 0xbf, 0xb0, 0x18, 0x3a,
+
  0x8b, 0xa2, 0xc6, 0x20, 0x3b, 0x1d, 0xf4, 0x89, 0xdf, 0x7d, 0xed, 0x1c,
+
  0xce, 0xfb, 0xb2, 0x72, 0xb7, 0x44, 0x0d, 0x25, 0x1c, 0x96, 0x13, 0x81,
+
  0x51, 0x77, 0x93, 0x6a, 0x55, 0xce, 0x5f, 0x72, 0x98, 0x5c, 0xb0, 0x92,
+
  0x86, 0x8b, 0x5c, 0xc9, 0xc3, 0xab, 0x3a, 0x06, 0x41, 0x78, 0xae, 0xea,
+
  0x41, 0xef, 0xa1, 0x58, 0x50, 0x2e, 0x7b, 0xd3, 0xa0, 0xe8, 0x47, 0x06,
+
  0x16, 0x85, 0x5c, 0x75, 0x16, 0x84, 0xd6, 0xc7, 0xa8, 0x27, 0x63, 0x92,
+
  0x2a, 0xb0, 0x30, 0x1b, 0x2f, 0xc7, 0x3c, 0x81, 0x9c, 0x53, 0x0f, 0xc4,
+
  0x77, 0xa2, 0x3c, 0x1a, 0x67, 0x49, 0xe8, 0x31, 0x39, 0x9a, 0xc0, 0x63,
+
  0x82, 0x53, 0x0c, 0x18, 0xa6, 0xa2, 0xb0, 0x74, 0xcb, 0xc2, 0xcf, 0x97,
+
  0xac, 0xd5, 0xa6, 0xdf, 0x7e, 0x05, 0x27, 0xe9, 0x2e, 0x22, 0x50, 0x04,
+
  0xa9, 0xab, 0x72, 0x7a, 0x00, 0x90, 0x5a, 0x10, 0x2d, 0x25, 0xc5, 0xab,
+
  0x35, 0xcb, 0x05, 0xb6, 0x9f, 0x00, 0x5e, 0xb2, 0xcc, 0x6a, 0x22, 0xc6,
+
  0x16, 0x42, 0x84, 0xc2, 0x12, 0xa0, 0xc7, 0x14, 0xb9, 0x8e, 0x57, 0xea,
+
  0x9c, 0x6b, 0xba, 0x88, 0x29, 0xeb, 0xe2, 0x52, 0x4a, 0x52, 0xea, 0xc4,
+
  0x4d, 0x4a, 0xa4, 0xc3, 0x4e, 0x32, 0x36, 0x89, 0x04, 0xba, 0x05, 0x8d,
+
  0xce, 0x70, 0xf4, 0x61, 0xdb, 0x94, 0x84, 0x00, 0xed, 0xe7, 0x93, 0x18,
+
  0xb8, 0xdf, 0x62, 0xb5, 0xf3, 0xde, 0x7d, 0xe3, 0x4f, 0x50, 0xa8, 0xde,
+
  0x1c, 0x5f, 0xff, 0xa6, 0x62, 0x62, 0x5b, 0xbb, 0x3e, 0x41, 0xaf, 0x14,
+
  0x5b, 0x5f, 0x77, 0xf4, 0x43, 0x99, 0x5f, 0x1a, 0x85, 0xe3, 0xfc, 0xc9,
+
  0xa4, 0x85, 0x3c, 0xd0, 0xb8, 0xf2, 0x06, 0xed, 0x07, 0xd7, 0x9c, 0x76,
+
  0xe4, 0x3b, 0x1e, 0xb6, 0xb9, 0xc9, 0x76, 0x77, 0x75, 0x37, 0x3d, 0xfd,
+
  0xaf, 0xb1, 0xb7, 0xb2, 0xad, 0x6f, 0x09, 0xa4, 0x80, 0x27, 0x4a, 0x8e,
+
  0x8a, 0x5c, 0x30, 0x77, 0x9c, 0x27, 0xb1, 0xdb, 0xc4, 0xdb, 0x64, 0x2c,
+
  0xbd, 0xe0, 0xa6, 0x20, 0x72, 0x9d, 0xb0, 0x03, 0xab, 0x96, 0xb7, 0xa6,
+
  0xa8, 0x84, 0x18, 0xf2, 0x14, 0x93, 0xf4, 0xa2, 0x07, 0xe1, 0xc4, 0xb2,
+
  0xb4, 0xba, 0x05, 0xa5, 0xf0, 0xac, 0x3f, 0x15, 0x9d, 0xf0, 0xe8, 0xff,
+
  0x02, 0x2a, 0x09, 0x75, 0x52, 0xeb, 0xa2, 0x93, 0x71, 0x12, 0x73, 0xa8,
+
  0x20, 0x98, 0xa7, 0xd7, 0xe6, 0x0b, 0x4b, 0x61, 0xde, 0x47, 0x87, 0x02,
+
  0xdf, 0x67, 0x54, 0x2e, 0x89, 0x37, 0x48, 0x9d, 0xb1, 0x0f, 0x63, 0x77,
+
  0x5d, 0xd5, 0x8c, 0x39, 0xe7, 0x24, 0xe9, 0x35, 0xa2, 0x26, 0xdf, 0x39,
+
  0x4d, 0x90, 0x1b, 0xd6, 0x17, 0xba, 0xfa, 0x62, 0x8f, 0xf4, 0xaa, 0x54,
+
  0xe1, 0xd0, 0xcd, 0x5c, 0x5c, 0x3f, 0xbb, 0xf1, 0x63, 0x52, 0x32, 0x0f,
+
  0x7a, 0x1d, 0xb4, 0x3e, 0x9a, 0x74, 0x17, 0x0f, 0x2a, 0x24, 0xd4, 0xb5,
+
  0xd0, 0xa0, 0x3f, 0x67, 0xd8, 0x0c, 0x76, 0x9a, 0x68, 0x49, 0x9b, 0xbe,
+
  0xa2, 0xbe, 0x95, 0x87, 0x40, 0x85, 0x5a, 0xc3, 0x65, 0x10, 0x7e, 0xb7,
+
  0x81, 0x94, 0x25, 0x38, 0x1c, 0xdc, 0xb6, 0x97, 0xce, 0x0a, 0x83, 0xfa,
+
  0x9a, 0xee, 0x50, 0x3c, 0x2f, 0x83, 0x3c, 0x01, 0xaf, 0xeb, 0x61, 0x6b,
+
  0x52, 0x16, 0xd7, 0x80, 0x93, 0xff, 0xda, 0x77, 0x67, 0x8a, 0x5a, 0x61,
+
  0x73, 0x2c, 0x87, 0xe8, 0x18, 0xca, 0xb1, 0x8e, 0x22, 0x54, 0x48, 0x31,
+
  0x4d, 0x93, 0x7a, 0x59, 0x92, 0x63, 0x16, 0xfd, 0xd0, 0x04, 0xbe, 0xa0,
+
  0x4d, 0xe6, 0x29, 0x3a, 0x46, 0x13, 0x36, 0x6a, 0xa1, 0x6c, 0xb9, 0xae,
+
  0xff, 0x6a, 0x84, 0xca, 0x16, 0xb5, 0xdd, 0xbb, 0xc7, 0xd1, 0x1d, 0x7c,
+
  0xdd, 0xe3, 0x69, 0x67, 0xb5, 0x66, 0x8f, 0xd7, 0x04, 0x93, 0x19, 0xa9,
+
  0xb7, 0x45, 0x42, 0xc9, 0xa5, 0x74, 0xe0, 0x9a, 0xf8, 0x7a, 0xd6, 0xe9,
+
  0xf3, 0x64, 0xb0, 0xe7, 0xf9, 0x7c, 0x68, 0xd6, 0x38, 0x48, 0xb8, 0x36,
+
  0x7c, 0x28, 0x7a, 0x90, 0x3e, 0x8a, 0xd4, 0x6e, 0x45, 0xd7, 0x70, 0x4e,
+
  0x0f, 0xe5, 0xad, 0x76, 0xa0, 0x05, 0xb4, 0x9e, 0xf3, 0xf9, 0x6a, 0x44,
+
  0xdc, 0x59, 0x1c, 0x1d, 0x72, 0x5b, 0xb6, 0x1a, 0x9b, 0x95, 0x7c, 0x30,
+
  0xcb, 0xbe, 0x16, 0xff, 0x6b, 0x01, 0xbd, 0xf0, 0x16, 0x50, 0x11, 0x9f,
+
  0xee, 0x4b, 0x6b, 0x63, 0x5c, 0x94, 0xad, 0x96, 0xdb, 0xb6, 0x33, 0xb2,
+
  0xd3, 0x18, 0x3c, 0x88, 0x5f, 0xe1, 0xee, 0x11, 0x5d, 0xf4, 0x51, 0x7b,
+
  0x44, 0x23, 0x7c, 0xf6, 0x3d, 0xa2, 0x59, 0x6c, 0x1b, 0x14, 0x75, 0x01,
+
  0x96, 0xb8, 0xb7, 0x8d, 0xd2, 0xdd, 0xf9, 0xd0, 0x37, 0x9f, 0x46, 0x22,
+
  0xac, 0xf8, 0xd9, 0xf6, 0xd4, 0x78, 0x69, 0xa8, 0x1d, 0xfb, 0x03, 0x23,
+
  0xc6, 0xf5, 0xf5, 0x22, 0x8d, 0x9e, 0xe2, 0xbf, 0x2b, 0xf6, 0xc8, 0x5c,
+
  0xf8, 0x31, 0xdb, 0x64, 0x06, 0x09, 0xed, 0x94, 0x81, 0x59, 0x6a, 0x36,
+
  0xcb, 0xf4, 0x90, 0x10, 0x1c, 0x63, 0xe2, 0x63, 0x36, 0xcb, 0xcc, 0x05,
+
  0x73, 0xd3, 0xdd, 0x4f, 0x59, 0xf4, 0xdd, 0x75, 0xd3, 0xac, 0x79, 0x21,
+
  0xc3, 0x0d, 0x6e, 0x71, 0x4a, 0x88, 0x91, 0xe1, 0xbf, 0x7f, 0x13, 0xa5,
+
  0xe6, 0x97, 0xce, 0x9d, 0x38, 0xee, 0xcb, 0x6e, 0xdc, 0x65, 0x23, 0x9a,
+
  0x4f, 0xfc, 0x7c, 0xb0, 0x23, 0x9f, 0x6c, 0xb1, 0x69, 0x47, 0x6f, 0xb3,
+
  0xe2, 0xd9, 0xe2, 0x02, 0x7d, 0x78, 0x4f, 0x43, 0x48, 0xad, 0x0e, 0xd5,
+
  0xcb, 0x65, 0xeb, 0x2e, 0xf5, 0xd0, 0xe0, 0xf1, 0x88, 0xf1, 0x2e, 0xe3,
+
  0x88, 0x26, 0x68, 0xfc, 0x4e, 0x9a, 0x56, 0x6f, 0xb2, 0x6d, 0x24, 0x23,
+
  0x26, 0x04, 0xa5, 0xa9, 0xe0, 0x77, 0xe4, 0x2f, 0x2b, 0xa6, 0x66, 0x4c,
+
  0xea, 0x0e, 0xad, 0x39, 0x2c, 0xb0, 0x51, 0xd9, 0x44, 0xbf, 0x1a, 0x44,
+
  0x6f, 0x30, 0xde, 0xbd, 0x5c, 0x78, 0xd0, 0xb1, 0x5c, 0xda, 0x40, 0x57,
+
  0xf1, 0x78, 0x8d, 0x1e, 0x93, 0x40, 0x16, 0x6f, 0xdf, 0xbc, 0xf4, 0xbc,
+
  0x5c, 0xba, 0x27, 0x94, 0x58, 0x51, 0xa5, 0xdb, 0x93, 0x62, 0x5c, 0x6d,
+
  0x57, 0xd5, 0x4c, 0x57, 0x69, 0x70, 0x51, 0xcf, 0x67, 0xab, 0x4e, 0xbf,
+
  0x4c, 0xf8, 0x33, 0x06, 0xa7, 0x9c, 0x59, 0x1c, 0x1f, 0x3d, 0x7b, 0x7e,
+
  0x1c, 0xc3, 0xbf, 0xc3, 0xc3, 0xf8, 0xf0, 0x78, 0xb8, 0xf7, 0xf0, 0x51,
+
  0x7c, 0x74, 0xf4, 0xea, 0xc9, 0xc7, 0x92, 0xa2, 0x0c, 0x4f, 0x87, 0x74,
+
  0x59, 0x62, 0xc4, 0xbc, 0x2d, 0x42, 0x6f, 0x41, 0x9c, 0xe5, 0xcc, 0x36,
+
  0x69, 0x5e, 0x41, 0x9c, 0x72, 0xd9, 0xc7, 0x30, 0x64, 0x19, 0xe2, 0x33,
+
  0x6f, 0x89, 0xcc, 0xa2, 0x4c, 0xd1, 0xab, 0x5b, 0x7d, 0x94, 0x72, 0xa3,
+
  0xdb, 0x20, 0x43, 0xae, 0xbf, 0xf8, 0x6c, 0xef, 0xdd, 0x18, 0xeb, 0x26,
+
  0xa3, 0xfc, 0x99, 0x40, 0xce, 0x05, 0xec, 0xff, 0x3b, 0x3b, 0x00, 0x04,
+
  0xc6, 0xce, 0xf7, 0x00, 0xc8, 0xc3, 0xf0, 0xde, 0x76, 0xf8, 0xa3, 0xe1,
+
  0x02, 0xb8, 0xd9, 0x5a, 0x97, 0x47, 0x7c, 0x2a, 0x73, 0x5d, 0x86, 0xff,
+
  0x4c, 0xf6, 0x3a, 0x39, 0x0b, 0xfc, 0x6d, 0x65, 0x24, 0x8a, 0xe8, 0x29,
+
  0xff, 0xdc, 0xfe, 0x36, 0x74, 0xb4, 0x0c, 0x06, 0x29, 0x2d, 0x81, 0xdc,
+
  0x81, 0x7e, 0x4e, 0x69, 0xd3, 0x28, 0x6c, 0x5b, 0x93, 0xf7, 0x68, 0x9f,
+
  0xb5, 0xf4, 0x09, 0x6f, 0xf5, 0x22, 0x8f, 0x0a, 0x97, 0xcc, 0x70, 0xeb,
+
  0x18, 0x19, 0x53, 0x3e, 0x6d, 0x2b, 0xdf, 0x90, 0x95, 0xa7, 0xce, 0x03,
+
  0x2b, 0xd3, 0x8d, 0x38, 0xe0, 0x93, 0xc5, 0x94, 0x5f, 0x38, 0x83, 0x18,
+
  0xd7, 0xb0, 0x80, 0x35, 0xf1, 0x73, 0x5c, 0x11, 0x99, 0x2e, 0x32, 0x03,
+
  0xc1, 0xe4, 0x11, 0xfd, 0x50, 0x08, 0xd1, 0xc7, 0xc0, 0x76, 0x6d, 0x69,
+
  0x02, 0x20, 0xc2, 0x17, 0x3c, 0x3a, 0x79, 0xfd, 0xfa, 0xf8, 0xa8, 0x9d,
+
  0xa4, 0x8f, 0x99, 0x73, 0x04, 0xc5, 0x69, 0xc3, 0x24, 0x41, 0xa4, 0x0f,
+
  0x5c, 0x8e, 0x5a, 0x33, 0x3e, 0xf9, 0xf9, 0xf0, 0xc7, 0x95, 0x60, 0xdb,
+
  0xea, 0x97, 0x2c, 0xe8, 0x92, 0x31, 0x62, 0x3e, 0xaa, 0xfb, 0xca, 0xeb,
+
  0xf4, 0x1b, 0xa0, 0x64, 0xd7, 0xbb, 0xc1, 0x89, 0x8e, 0x15, 0x5a, 0xdd,
+
  0xec, 0x9f, 0xa7, 0xf0, 0x9f, 0xcc, 0x82, 0xd0, 0xbe, 0x26, 0x93, 0x6d,
+
  0x01, 0xc9, 0xd2, 0x67, 0x77, 0x9d, 0x42, 0x44, 0x75, 0x4d, 0xf1, 0xb8,
+
  0x4d, 0xe2, 0x62, 0x1a, 0x53, 0x02, 0xd7, 0x3c, 0x29, 0xdf, 0x63, 0x9e,
+
  0xbf, 0x83, 0xfa, 0x45, 0xd8, 0xf8, 0x18, 0x2f, 0x86, 0x91, 0x43, 0xad,
+
  0xe2, 0x28, 0x0f, 0x8d, 0xf0, 0x16, 0x25, 0xc1, 0x4c, 0x26, 0x43, 0x6c,
+
  0x38, 0xaf, 0x0f, 0xb0, 0x26, 0x56, 0x6f, 0xcf, 0xd3, 0x2b, 0x7c, 0x0c,
+
  0x77, 0x3e, 0xc5, 0x96, 0x6f, 0x7e, 0xcb, 0xf2, 0x32, 0xad, 0x97, 0x65,
+
  0xce, 0x0c, 0xf8, 0x5a, 0x5a, 0xcd, 0xe1, 0x56, 0xcd, 0x09, 0x58, 0x1a,
+
  0xa1, 0xf7, 0x2b, 0x84, 0x2c, 0x11, 0x30, 0x54, 0x6f, 0xad, 0x9e, 0x33,
+
  0x31, 0xb5, 0x93, 0x62, 0x3d, 0xd8, 0x14, 0x41, 0x8a, 0x15, 0x12, 0x9f,
+
  0x70, 0x6d, 0x71, 0x57, 0x23, 0x58, 0x5e, 0x69, 0xda, 0x06, 0x0c, 0xf1,
+
  0x54, 0x8d, 0x21, 0x74, 0x77, 0x93, 0x8e, 0xec, 0xdd, 0xa1, 0x62, 0x53,
+
  0xd3, 0x23, 0x80, 0xfd, 0x3e, 0x44, 0x9c, 0xef, 0x36, 0x9a, 0x77, 0x8d,
+
  0xfb, 0x8a, 0x40, 0x50, 0xe5, 0x39, 0x21, 0xaf, 0xe1, 0xc5, 0x74, 0x58,
+
  0xe3, 0x40, 0x86, 0x0c, 0x63, 0x36, 0x6b, 0x38, 0x9f, 0x3c, 0x2d, 0xb0,
+
  0xba, 0xb8, 0x0f, 0xb2, 0xf6, 0x9a, 0xf0, 0xc5, 0x59, 0x79, 0x72, 0x7e,
+
  0xe1, 0xe7, 0xc2, 0xf3, 0x64, 0x71, 0xb3, 0x73, 0x6e, 0xb9, 0xf7, 0x6d,
+
  0xcc, 0x2f, 0x36, 0x37, 0xd9, 0x87, 0x18, 0x9c, 0x74, 0xf7, 0x94, 0xbb,
+
  0x6e, 0xa3, 0x0b, 0xaf, 0xaa, 0x27, 0x59, 0x7e, 0x83, 0xbb, 0x8a, 0x80,
+
  0x97, 0x46, 0x69, 0x14, 0x8a, 0xf0, 0xd0, 0x8a, 0x59, 0x52, 0xdd, 0xa6,
+
  0xb0, 0x6c, 0x9b, 0x16, 0xcc, 0x2d, 0xca, 0x22, 0x82, 0x31, 0x3d, 0xcb,
+
  0xe5, 0x3e, 0x1d, 0x38, 0x52, 0xf3, 0x39, 0xbd, 0x9f, 0xe2, 0xef, 0x31,
+
  0x6d, 0x3c, 0x7e, 0x0d, 0x9b, 0x71, 0x10, 0xfd, 0x67, 0x91, 0xf6, 0x9c,
+
  0x4c, 0xd2, 0x6e, 0x26, 0x7f, 0x9b, 0xa1, 0x31, 0x39, 0x38, 0x3e, 0x3c,
+
  0xa7, 0x93, 0x03, 0xc7, 0x7c, 0x51, 0x66, 0xd5, 0x3d, 0x8e, 0xfe, 0x1c,
+
  0xf8, 0xcb, 0xc1, 0xed, 0x86, 0xbb, 0x0d, 0xf8, 0x78, 0xa3, 0xc8, 0xf0,
+
  0x71, 0x48, 0xad, 0xa0, 0x4e, 0x43, 0xb7, 0x29, 0x35, 0xa9, 0xcb, 0xeb,
+
  0x56, 0x2f, 0x27, 0x93, 0x04, 0xbe, 0x67, 0xfb, 0xac, 0xde, 0x68, 0x25,
+
  0x08, 0xf3, 0x97, 0x30, 0x51, 0x55, 0x1b, 0xfe, 0x51, 0x50, 0x9b, 0x45,
+
  0xea, 0x11, 0xb5, 0xab, 0x00, 0x70, 0x79, 0x28, 0x0e, 0xc0, 0x68, 0x01,
+
  0x35, 0x06, 0xb4, 0x48, 0xe7, 0x61, 0x27, 0x2f, 0x9c, 0x7f, 0x99, 0x4e,
+
  0x98, 0xe8, 0x55, 0x8b, 0xe0, 0x4e, 0x99, 0x9a, 0x08, 0xc8, 0x00, 0x46,
+
  0x88, 0x5e, 0x4d, 0x60, 0x06, 0xb7, 0x0f, 0x2c, 0xd0, 0xb2, 0x85, 0x1b,
+
  0x9b, 0x7d, 0x1c, 0x26, 0x87, 0x1d, 0xfd, 0x6e, 0x4a, 0x0e, 0x4f, 0xec,
+
  0x63, 0x55, 0x99, 0x41, 0x6b, 0xbc, 0x66, 0xff, 0xa9, 0xbb, 0x63, 0x2c,
+
  0x73, 0x0b, 0xb0, 0x86, 0x0f, 0x75, 0x37, 0x44, 0x95, 0xea, 0x6d, 0xed,
+
  0xb2, 0x31, 0x1a, 0x2e, 0xd9, 0xb5, 0x0d, 0x8d, 0x80, 0x1f, 0xdb, 0x8c,
+
  0xf5, 0x29, 0xfc, 0xd8, 0x7e, 0x6f, 0x96, 0x75, 0x76, 0xd4, 0x4c, 0xed,
+
  0xe3, 0x4c, 0x8f, 0x76, 0x16, 0x7c, 0x97, 0x57, 0xbb, 0xcb, 0xfe, 0x78,
+
  0x9f, 0x5e, 0xdf, 0xca, 0x21, 0x67, 0xae, 0xfb, 0x08, 0xf3, 0xcf, 0x8c,
+
  0xe1, 0xda, 0x7f, 0x9f, 0xc9, 0x1f, 0x67, 0xe6, 0x82, 0xd0, 0x00, 0xce,
+
  0x87, 0x11, 0x25, 0xac, 0xdf, 0x8b, 0x83, 0xc8, 0xe0, 0xb3, 0xac, 0x65,
+
  0x10, 0x12, 0x26, 0x07, 0xfc, 0xb3, 0x72, 0x2b, 0x3e, 0xca, 0x19, 0x47,
+
  0x40, 0x1d, 0x0d, 0x5f, 0xdc, 0x67, 0x30, 0xc2, 0xef, 0x7d, 0xa9, 0x79,
+
  0x37, 0xd7, 0x5f, 0x6f, 0x23, 0xfc, 0x6e, 0x67, 0x83, 0xbf, 0x36, 0xb2,
+
  0x32, 0xda, 0x1c, 0x9e, 0xbe, 0x3e, 0xfe, 0xe1, 0x64, 0xcb, 0x0f, 0x77,
+
  0x5f, 0xf9, 0x3d, 0x01, 0x1a, 0xf6, 0xf9, 0x4a, 0x8b, 0xdc, 0x4a, 0x63,
+
  0xd7, 0x28, 0x0f, 0x14, 0xb2, 0x39, 0x73, 0x31, 0x53, 0x91, 0x42, 0x87,
+
  0xf5, 0x0c, 0x74, 0xfb, 0xc4, 0x4f, 0x65, 0xa3, 0xdb, 0x27, 0xdc, 0xb3,
+
  0x99, 0xbe, 0xbe, 0x65, 0x8e, 0xa0, 0xe8, 0x37, 0x65, 0x9b, 0xda, 0xdd,
+
  0xf6, 0x3b, 0x7f, 0x7c, 0x5c, 0xbe, 0x05, 0x41, 0xb2, 0x37, 0x9c, 0x2d,
+
  0xf4, 0x88, 0xc6, 0xb6, 0xdd, 0xc6, 0x36, 0x0d, 0x6c, 0xe2, 0xa7, 0xe9,
+
  0xf1, 0xe0, 0x0c, 0xbe, 0x6a, 0xeb, 0xee, 0xae, 0xd6, 0x7a, 0x14, 0xe2,
+
  0xee, 0x61, 0xa0, 0xaf, 0x02, 0x7f, 0xb1, 0x0a, 0x18, 0xcc, 0x72, 0x4a,
+
  0xba, 0xea, 0x23, 0x04, 0xd6, 0x6d, 0x30, 0xc2, 0x3e, 0x71, 0xf6, 0xb5,
+
  0xce, 0xc2, 0x80, 0x85, 0xdd, 0x2b, 0xfb, 0xf4, 0x6a, 0xe8, 0xcc, 0xe8,
+
  0xb7, 0xe0, 0x9c, 0xb7, 0x87, 0x91, 0x0a, 0x9f, 0xb0, 0x2e, 0x24, 0x29,
+
  0x03, 0x87, 0xd6, 0x0d, 0x23, 0xd5, 0xcc, 0x4f, 0x71, 0x13, 0xd5, 0xba,
+
  0x50, 0xa4, 0xfe, 0x57, 0xc2, 0x48, 0x35, 0x70, 0xa4, 0x10, 0xdc, 0x01,
+
  0x71, 0x8b, 0x42, 0x50, 0x52, 0x4e, 0xfb, 0x5d, 0xc6, 0x91, 0x5a, 0x05,
+
  0x23, 0xe5, 0xa0, 0x48, 0xad, 0x00, 0x91, 0xe2, 0x2e, 0xc5, 0xab, 0x60,
+
  0xa4, 0xee, 0x88, 0x23, 0xd5, 0x01, 0x23, 0xb5, 0x36, 0x8a, 0xd4, 0x3d,
+
  0xc3, 0x48, 0xb9, 0x1a, 0xd4, 0x5d, 0x00, 0x91, 0xee, 0xac, 0xc7, 0xde,
+
  0xe0, 0x1b, 0xf9, 0x58, 0x54, 0x24, 0x7f, 0x90, 0x7b, 0xc4, 0x46, 0x6a,
+
  0x8c, 0xbb, 0x52, 0x37, 0xfb, 0x32, 0xc4, 0x61, 0x90, 0x64, 0xb3, 0xb1,
+
  0x74, 0x7a, 0x78, 0x8a, 0xff, 0xae, 0xea, 0x4a, 0xd2, 0x2c, 0xbb, 0x76,
+
  0x4a, 0xeb, 0x64, 0x18, 0xf6, 0xe1, 0x39, 0xae, 0x6a, 0x1f, 0x53, 0x56,
+
  0x4e, 0x53, 0x38, 0x0f, 0x39, 0x3c, 0xad, 0x4f, 0xbd, 0xfd, 0xab, 0x77,
+
  0xbf, 0x31, 0x95, 0x5e, 0x75, 0x51, 0x2e, 0x47, 0xc0, 0x97, 0xae, 0x7b,
+
  0x77, 0x55, 0xa7, 0x1a, 0xe3, 0xad, 0xda, 0xb0, 0x07, 0xfb, 0xc1, 0x0d,
+
  0xab, 0x66, 0x31, 0x6d, 0x03, 0xf6, 0xb2, 0xf1, 0xc2, 0x5a, 0x56, 0x30,
+
  0xb7, 0xae, 0xfb, 0x08, 0x53, 0xbf, 0xe3, 0xc9, 0x37, 0xc0, 0xaa, 0xb6,
+
  0x86, 0x6b, 0x03, 0x83, 0x74, 0xdb, 0xfc, 0xad, 0xc7, 0xdc, 0x71, 0xd3,
+
  0x5a, 0x73, 0xfd, 0x48, 0x13, 0xa8, 0x3d, 0xdc, 0xfa, 0x36, 0x10, 0x8d,
+
  0xb0, 0xac, 0x8b, 0x78, 0x3c, 0xcb, 0x80, 0xd9, 0x53, 0x6a, 0xc3, 0xea,
+
  0xbd, 0x6b, 0x5d, 0x7c, 0x5f, 0x1b, 0xd8, 0x1e, 0xb6, 0x4b, 0x9f, 0x8d,
+
  0xfd, 0x62, 0x6f, 0x67, 0x17, 0x6f, 0xb9, 0x8d, 0xce, 0xc3, 0x02, 0xd2,
+
  0xf0, 0x23, 0xb6, 0xb6, 0xfd, 0x16, 0x1f, 0x9d, 0x90, 0x15, 0x1c, 0x95,
+
  0xeb, 0x5d, 0xdc, 0xe4, 0x2c, 0x6d, 0x77, 0x13, 0x85, 0x12, 0xb2, 0x1e,
+
  0x07, 0xfd, 0xc4, 0xf5, 0xac, 0xda, 0xdd, 0xb7, 0xe9, 0x29, 0xf2, 0xcb,
+
  0x12, 0x5b, 0xdd, 0x84, 0x52, 0x55, 0x44, 0x9d, 0x0b, 0xe7, 0x9b, 0x50,
+
  0x19, 0x42, 0xba, 0x22, 0xeb, 0xc4, 0x03, 0x7b, 0xa5, 0xb6, 0x7a, 0x2e,
+
  0xb9, 0x90, 0x6d, 0x85, 0xb0, 0xae, 0x6a, 0x0d, 0x54, 0xa4, 0xd2, 0xec,
+
  0x0e, 0xf6, 0xb9, 0x83, 0x59, 0x2b, 0x19, 0xa5, 0x9d, 0xbc, 0xcc, 0xcf,
+
  0xbf, 0x45, 0x86, 0x0a, 0x25, 0xa5, 0xb0, 0xb6, 0x04, 0x63, 0x47, 0xf2,
+
  0x7d, 0x68, 0xb8, 0x4f, 0x97, 0xaa, 0xd2, 0x0c, 0xda, 0x64, 0xac, 0x1e,
+
  0x63, 0x4b, 0x1d, 0x0c, 0x90, 0x2e, 0xb9, 0x5e, 0x5b, 0xe1, 0x90, 0x88,
+
  0xc6, 0xb2, 0xea, 0x16, 0x39, 0xc6, 0xf0, 0x3e, 0xf0, 0x3f, 0xd4, 0x69,
+
  0xa8, 0x54, 0x2d, 0xd0, 0x8d, 0x28, 0x89, 0x26, 0x19, 0x3a, 0xe5, 0x31,
+
  0xda, 0xe5, 0x20, 0x41, 0xfa, 0x5b, 0xc3, 0x01, 0xb2, 0xf2, 0x1a, 0xc5,
+
  0x17, 0x69, 0x83, 0xb2, 0x15, 0xad, 0xed, 0x36, 0x48, 0x25, 0xa4, 0x74,
+
  0x29, 0x61, 0xb5, 0x4f, 0x94, 0x50, 0xd8, 0x0d, 0x55, 0x3e, 0x1e, 0x45,
+
  0x7e, 0x5e, 0xe9, 0xda, 0x9c, 0x0b, 0xbc, 0xfe, 0xbb, 0xc3, 0xe3, 0xe1,
+
  0xbb, 0xdd, 0xbd, 0x27, 0xef, 0x7e, 0x38, 0x7a, 0xf5, 0x6e, 0xf8, 0xfc,
+
  0x10, 0x95, 0xfb, 0x3b, 0x4a, 0xda, 0xc6, 0xd8, 0xed, 0xfc, 0x9d, 0x66,
+
  0xf2, 0xd0, 0x8a, 0x34, 0xcb, 0x47, 0xbb, 0x1d, 0xa7, 0x1a, 0xcd, 0xe6,
+
  0xdb, 0xf8, 0x75, 0xdd, 0x4b, 0x3f, 0xc6, 0xa9, 0xe8, 0x8e, 0xf3, 0xf9,
+
  0x77, 0xcd, 0x4c, 0x65, 0xf8, 0xe6, 0xf4, 0xd3, 0x98, 0xc8, 0xf0, 0x10,
+
  0x42, 0xdc, 0xbe, 0x59, 0xb8, 0xc2, 0x95, 0x06, 0x70, 0xe8, 0x29, 0xa3,
+
  0x09, 0xad, 0xdc, 0x0e, 0x73, 0xf1, 0x47, 0x38, 0x2e, 0xdc, 0x61, 0x6e,
+
  0xed, 0xbf, 0xf8, 0x74, 0xdb, 0x61, 0xe6, 0xd2, 0x74, 0x18, 0x7d, 0xc6,
+
  0x1d, 0x21, 0x1f, 0x56, 0xd0, 0xa2, 0x68, 0xec, 0x05, 0x5d, 0xf6, 0x71,
+
  0xfb, 0x40, 0x43, 0x7c, 0xde, 0x84, 0x37, 0x9d, 0x45, 0x35, 0x27, 0x35,
+
  0xe8, 0x13, 0x2d, 0xbe, 0x6e, 0xf2, 0xed, 0x36, 0xe0, 0x72, 0xb7, 0x6b,
+
  0xdd, 0x09, 0x52, 0x91, 0xae, 0xb8, 0x07, 0xad, 0x92, 0xc7, 0xf9, 0x54,
+
  0x6e, 0x51, 0x1e, 0xfd, 0xbe, 0x16, 0x74, 0xd5, 0xc2, 0xbd, 0xed, 0x37,
+
  0xdd, 0xaf, 0x4f, 0x1b, 0x3d, 0x77, 0xbf, 0x09, 0xe6, 0x03, 0x4b, 0xef,
+
  0x60, 0xa7, 0x67, 0x6a, 0x03, 0xfb, 0xac, 0x30, 0xb8, 0x09, 0xed, 0xc6,
+
  0xc6, 0x41, 0xd8, 0xc6, 0x00, 0x95, 0xa3, 0x8e, 0xc0, 0xb5, 0x5d, 0x5a,
+
  0xca, 0x34, 0x1c, 0x9e, 0xbe, 0x88, 0xb9, 0x6c, 0x5b, 0xea, 0x91, 0xa4,
+
  0x29, 0x39, 0x83, 0x25, 0x45, 0x69, 0x46, 0x91, 0xf9, 0xe8, 0x75, 0x87,
+
  0xe5, 0x4d, 0xdd, 0xe3, 0x82, 0x5e, 0xf7, 0x5a, 0xf3, 0xc2, 0x48, 0x29,
+
  0x71, 0x5b, 0x18, 0x54, 0xe9, 0xcc, 0x2f, 0x50, 0x5e, 0xf1, 0xe2, 0xe4,
+
  0x9b, 0x22, 0xcd, 0x33, 0xcd, 0x2f, 0xb3, 0xb2, 0xc8, 0x29, 0xef, 0x67,
+
  0x64, 0x92, 0xe5, 0x48, 0x47, 0xf2, 0x5a, 0x02, 0x93, 0x77, 0xd0, 0x81,
+
  0x5e, 0x73, 0xdc, 0x4f, 0x07, 0x51, 0x2f, 0x7e, 0x1b, 0x1d, 0xf8, 0x6d,
+
  0xef, 0x4f, 0x72, 0xa9, 0x3c, 0xa3, 0xb4, 0xb6, 0x92, 0xec, 0x11, 0xaa,
+
  0x22, 0x73, 0x1d, 0x56, 0x17, 0xc0, 0x14, 0x9c, 0x68, 0x81, 0xfa, 0x32,
+
  0xca, 0x73, 0xaf, 0x58, 0x97, 0xe6, 0x49, 0xb3, 0x87, 0x0d, 0x1b, 0x63,
+
  0x5e, 0x16, 0xaa, 0xc3, 0x98, 0x99, 0x65, 0x72, 0xf8, 0xd8, 0xa5, 0x96,
+
  0x13, 0x6a, 0x01, 0xba, 0x59, 0xb1, 0xc6, 0x98, 0xba, 0xaf, 0x8d, 0xfd,
+
  0x1c, 0xab, 0x09, 0x97, 0xad, 0x57, 0xea, 0xad, 0x5b, 0x14, 0x55, 0x95,
+
  0x8d, 0x40, 0xe3, 0x3c, 0x17, 0x75, 0xaf, 0x4a, 0x19, 0x4f, 0x86, 0xb3,
+
  0x29, 0x70, 0x35, 0x4d, 0xcb, 0x41, 0x2c, 0xfc, 0x0e, 0x57, 0x0e, 0x72,
+
  0x9b, 0xc3, 0x6b, 0xcd, 0x9b, 0xe3, 0x4c, 0x10, 0xca, 0x46, 0xba, 0xcc,
+
  0x70, 0xf8, 0x54, 0x3a, 0x45, 0x26, 0x88, 0xf0, 0x45, 0x6f, 0x24, 0xee,
+
  0xb8, 0xb6, 0xc2, 0x38, 0xc3, 0x66, 0xb8, 0xc0, 0x4c, 0x86, 0x08, 0x89,
+
  0x57, 0xa5, 0x79, 0x95, 0x51, 0xe5, 0x17, 0x41, 0x7e, 0x59, 0x10, 0xc6,
+
  0x32, 0x45, 0x68, 0x85, 0xcb, 0x54, 0xb6, 0x55, 0x9c, 0xbd, 0x9d, 0x50,
+
  0x6c, 0x88, 0x68, 0x36, 0xcf, 0xb0, 0x35, 0x0c, 0x61, 0xa9, 0x52, 0xc7,
+
  0x74, 0xd3, 0x05, 0x19, 0x9f, 0x18, 0x21, 0x5f, 0xf1, 0xd3, 0x96, 0x06,
+
  0x21, 0xcd, 0xe7, 0xad, 0xb5, 0xbc, 0xf8, 0x50, 0xde, 0x3e, 0xa8, 0xfa,
+
  0x89, 0x44, 0xad, 0xa1, 0xf8, 0x83, 0xc5, 0xc7, 0x46, 0xd4, 0xf0, 0xb8,
+
  0x38, 0xfc, 0xc7, 0x61, 0xfb, 0x6b, 0xe0, 0x8a, 0x36, 0x3b, 0xe0, 0xae,
+
  0x42, 0xd9, 0x74, 0x90, 0x16, 0xbd, 0xc6, 0xd2, 0x61, 0x78, 0xcd, 0x69,
+
  0xf6, 0x81, 0x3a, 0x8e, 0xf8, 0x59, 0x49, 0x6d, 0xa8, 0x4a, 0x84, 0x39,
+
  0xe2, 0xf0, 0x94, 0x59, 0xe2, 0x9a, 0x9a, 0x2e, 0x52, 0x17, 0x34, 0xb7,
+
  0xd4, 0xfd, 0xad, 0x67, 0x55, 0x59, 0xf8, 0xcd, 0x06, 0xe0, 0xa6, 0xc5,
+
  0xdb, 0x44, 0x92, 0xb2, 0x68, 0x9b, 0x84, 0x8a, 0xcb, 0xe9, 0xba, 0x09,
+
  0xce, 0xc0, 0x37, 0x83, 0xa6, 0xd9, 0xb8, 0x1b, 0x6b, 0xd3, 0x87, 0xb6,
+
  0xc8, 0x3e, 0x00, 0xdb, 0x24, 0x98, 0x5d, 0x7c, 0x4a, 0x5a, 0x33, 0x82,
+
  0x8d, 0x85, 0x2b, 0x9b, 0xea, 0xf3, 0xf5, 0x15, 0x86, 0xa0, 0x45, 0x50,
+
  0x41, 0x58, 0x00, 0xe5, 0x4b, 0x9b, 0xe3, 0xe0, 0x57, 0x94, 0x3a, 0x3a,
+
  0x88, 0xd2, 0xc1, 0xf9, 0xc0, 0x79, 0x01, 0x73, 0xe7, 0x36, 0x86, 0x4f,
+
  0xb6, 0xeb, 0x62, 0x9b, 0x1f, 0x3b, 0xc0, 0x1f, 0x5f, 0x04, 0xc1, 0x54,
+
  0xd5, 0x99, 0xaa, 0xb9, 0x40, 0x70, 0xce, 0x13, 0x43, 0x71, 0x76, 0x3b,
+
  0x78, 0xc7, 0x28, 0x7d, 0x28, 0x59, 0x55, 0x33, 0x46, 0x93, 0x0c, 0xb5,
+
  0x62, 0x78, 0x3d, 0x1c, 0xc2, 0xdb, 0x09, 0x44, 0xd3, 0x93, 0xc7, 0x98,
+
  0xcc, 0x89, 0xee, 0x1d, 0xf2, 0x90, 0x10, 0x53, 0x0d, 0xbc, 0x2c, 0xb5,
+
  0x10, 0xa7, 0x81, 0xa8, 0x21, 0x02, 0x35, 0x50, 0x88, 0xca, 0x65, 0x55,
+
  0x23, 0x0e, 0x87, 0x53, 0x64, 0x3b, 0xe4, 0x4c, 0x9c, 0x33, 0xc4, 0x0f,
+
  0xa2, 0x97, 0xf0, 0x31, 0x7f, 0xa4, 0xdf, 0x42, 0x60, 0x8b, 0xca, 0x74,
+
  0x5c, 0x9c, 0xe7, 0xd9, 0x6f, 0x52, 0x85, 0xdb, 0x06, 0x93, 0x6b, 0xa0,
+
  0xba, 0x36, 0x11, 0x14, 0x10, 0xa9, 0xc3, 0x17, 0x34, 0x88, 0x90, 0x21,
+
  0xf2, 0x9f, 0x54, 0x1a, 0x44, 0x1d, 0x57, 0x62, 0xa9, 0x28, 0xab, 0x9b,
+
  0xf0, 0x6c, 0xd2, 0x06, 0xce, 0x86, 0x76, 0x47, 0x0f, 0x38, 0x26, 0x70,
+
  0x1b, 0xa4, 0x4b, 0x71, 0x57, 0x97, 0xea, 0xf5, 0x21, 0x58, 0x71, 0xed,
+
  0xef, 0x04, 0xc2, 0xda, 0xaa, 0xac, 0x66, 0xe0, 0x32, 0x42, 0xd9, 0xfb,
+
  0xc0, 0xc2, 0xac, 0x21, 0x95, 0x6d, 0xf7, 0x5e, 0xca, 0x50, 0xf3, 0x39,
+
  0x67, 0x23, 0xf1, 0x7b, 0x89, 0xdd, 0xa4, 0xf8, 0x95, 0xca, 0x74, 0xa3,
+
  0x22, 0x34, 0x94, 0xc0, 0x60, 0x91, 0x71, 0x68, 0x78, 0x72, 0x5e, 0x12,
+
  0xfe, 0x55, 0xcf, 0x40, 0x95, 0xdc, 0x8c, 0xde, 0xeb, 0xe1, 0xbf, 0x3a,
+
  0x63, 0x58, 0x00, 0x1f, 0x55, 0x10, 0x93, 0x1e, 0xb5, 0x81, 0xb7, 0x4c,
+
  0x19, 0x8f, 0xab, 0x74, 0x34, 0x43, 0x56, 0x74, 0x49, 0x10, 0xb4, 0x0e,
+
  0xd3, 0x61, 0x96, 0x44, 0xc8, 0x55, 0x6d, 0x66, 0x81, 0x0d, 0xce, 0xd8,
+
  0x1b, 0x34, 0x4a, 0x15, 0x3a, 0x9e, 0xa8, 0x0a, 0xa6, 0x81, 0x03, 0xc0,
+
  0xbb, 0xd6, 0x84, 0x9e, 0xad, 0x89, 0xd2, 0xf0, 0x35, 0x72, 0x8a, 0x0e,
+
  0xe8, 0x18, 0x05, 0xfe, 0x75, 0xa7, 0xc8, 0xf9, 0x9a, 0x92, 0x51, 0x9d,
+
  0x28, 0xe8, 0x54, 0x53, 0x9d, 0x20, 0x27, 0x5e, 0xe2, 0x91, 0x96, 0x34,
+
  0x25, 0x26, 0x75, 0x6c, 0x89, 0xc7, 0x28, 0x52, 0x20, 0x66, 0xb3, 0x27,
+
  0x7d, 0xe4, 0xaf, 0x08, 0xfd, 0x62, 0x32, 0x22, 0xe2, 0x85, 0xca, 0x91,
+
  0xf6, 0xcb, 0x5e, 0xcb, 0x20, 0x1d, 0x0e, 0xa2, 0xff, 0xff, 0xc0, 0xee,
+
  0x75, 0x52, 0x69, 0x89, 0x47, 0x7b, 0xa2, 0xd0, 0x80, 0xee, 0x5c, 0x01,
+
  0x1b, 0x90, 0x8e, 0xd2, 0x7c, 0x3d, 0x12, 0xba, 0x17, 0x40, 0x6e, 0x9f,
+
  0xa2, 0xbe, 0x24, 0xde, 0xb7, 0x51, 0x7a, 0x94, 0x3b, 0x33, 0xda, 0x24,
+
  0x30, 0x8c, 0xad, 0x10, 0xec, 0x19, 0x55, 0x84, 0x20, 0x1f, 0xc5, 0x55,
+
  0x23, 0x55, 0xe3, 0x8f, 0x66, 0x3b, 0xc2, 0xf1, 0x69, 0xc9, 0xcd, 0x57,
+
  0xb0, 0x30, 0xd6, 0x81, 0x92, 0x31, 0x29, 0x72, 0x88, 0xca, 0x37, 0x87,
+
  0x0d, 0xc0, 0xd7, 0xc0, 0x73, 0xc6, 0x2e, 0xfa, 0x53, 0xa4, 0x8f, 0x69,
+
  0xbd, 0xf0, 0xce, 0x42, 0x81, 0xa5, 0xc8, 0xb0, 0x1e, 0x42, 0xab, 0xdd,
+
  0x8d, 0xee, 0x1b, 0xc5, 0xca, 0x9f, 0xb7, 0xe2, 0xb4, 0x91, 0x15, 0x73,
+
  0x37, 0x90, 0x63, 0x01, 0x35, 0xbe, 0x45, 0x62, 0xd3, 0x2e, 0xc8, 0xce,
+
  0xa7, 0x8e, 0x3a, 0xf6, 0xcd, 0x8d, 0xfa, 0x18, 0x31, 0x21, 0xbc, 0x4d,
+
  0x71, 0xda, 0x1b, 0x88, 0xdc, 0x2a, 0x0f, 0x68, 0x0d, 0x61, 0xd5, 0xc3,
+
  0xdc, 0x04, 0x37, 0x95, 0xe0, 0xb8, 0x0d, 0xef, 0x47, 0xec, 0x2a, 0xbc,
+
  0xbf, 0x83, 0xfb, 0xa7, 0x5a, 0x02, 0xa4, 0x4e, 0x68, 0x10, 0x77, 0xa3,
+
  0xb4, 0xbe, 0x42, 0x5b, 0x83, 0x6c, 0x2a, 0x6d, 0x12, 0xee, 0xb0, 0x48,
+
  0x91, 0x16, 0xb0, 0xb5, 0xe1, 0x3a, 0x84, 0x3e, 0x03, 0xd0, 0x20, 0xb7,
+
  0xad, 0xc1, 0x06, 0x11, 0xf4, 0x2e, 0x94, 0xb3, 0x5a, 0x5e, 0xe4, 0xb1,
+
  0xa6, 0x28, 0x84, 0x75, 0x6d, 0xab, 0xa5, 0x1a, 0x6b, 0xa3, 0x90, 0x7a,
+
  0x0d, 0x38, 0x67, 0x85, 0xba, 0x91, 0x0b, 0x77, 0x6f, 0xf6, 0x45, 0xe0,
+
  0x68, 0x9f, 0xc8, 0x11, 0x81, 0x43, 0xdf, 0x53, 0x6d, 0x41, 0xdf, 0xa7,
+
  0xb9, 0xb4, 0xa5, 0xb8, 0x5b, 0x26, 0x2e, 0x4c, 0x3b, 0xdc, 0x36, 0x56,
+
  0xca, 0x06, 0xa2, 0x26, 0x0f, 0x68, 0x3e, 0xcb, 0xab, 0x0f, 0xc2, 0x1a,
+
  0x98, 0x50, 0x19, 0x56, 0x97, 0x88, 0xe1, 0xb0, 0x90, 0x7c, 0x9b, 0x2c,
+
  0xe0, 0xb3, 0x84, 0x91, 0x36, 0xe7, 0xc9, 0x24, 0x8d, 0x42, 0xd5, 0x8b,
+
  0xa6, 0xea, 0x59, 0x27, 0xd6, 0x2a, 0x41, 0xa3, 0xd7, 0xf6, 0x13, 0xe3,
+
  0xc5, 0x47, 0x32, 0xf3, 0x52, 0x53, 0x50, 0x5a, 0x08, 0x82, 0xa8, 0x84,
+
  0xba, 0xb4, 0x20, 0x4d, 0x92, 0x30, 0x5d, 0xe5, 0x4a, 0x52, 0xe8, 0x73,
+
  0xa6, 0x50, 0x98, 0xb6, 0x57, 0x66, 0xe4, 0xbe, 0x64, 0x11, 0x6a, 0xbd,
+
  0x6e, 0x1a, 0xaf, 0xb7, 0x67, 0x2f, 0x90, 0x5b, 0x52, 0xb3, 0xd3, 0x8c,
+
  0x1b, 0x71, 0x7a, 0x9a, 0x17, 0x7f, 0x93, 0xe6, 0xe6, 0x7a, 0xcb, 0x92,
+
  0x52, 0x14, 0xf5, 0x01, 0xb1, 0xbc, 0x4e, 0xdc, 0x55, 0x05, 0xe4, 0xe6,
+
  0xdb, 0xb7, 0x49, 0xe2, 0x13, 0xe4, 0xdb, 0xf3, 0xc0, 0x77, 0x3a, 0x1f,
+
  0x32, 0xa7, 0xfb, 0x2a, 0xbf, 0x71, 0x59, 0xaf, 0x64, 0xbf, 0x05, 0x12,
+
  0xb6, 0x37, 0x87, 0x28, 0xe2, 0x86, 0x47, 0xa7, 0x5b, 0xd1, 0x69, 0x2b,
+
  0xb1, 0x8d, 0x30, 0xa9, 0x51, 0x5d, 0x74, 0x55, 0x0d, 0x16, 0x53, 0xec,
+
  0x99, 0x5a, 0x91, 0x03, 0x95, 0x09, 0x9f, 0xd4, 0xc2, 0x48, 0x2e, 0x25,
+
  0x6b, 0xcf, 0x7b, 0xf3, 0x90, 0x2a, 0x5f, 0xb8, 0x07, 0x99, 0xb8, 0x9b,
+
  0x5c, 0xe6, 0x88, 0xd1, 0x64, 0x44, 0x9f, 0x1f, 0x13, 0x6e, 0xa1, 0xa4,
+
  0x71, 0x69, 0xfa, 0xd5, 0xcc, 0x43, 0x24, 0xa3, 0x99, 0x2b, 0x84, 0x94,
+
  0xd3, 0x5b, 0x95, 0x1e, 0x4e, 0x5d, 0x8f, 0x50, 0x11, 0xf0, 0x70, 0x99,
+
  0x2a, 0xc4, 0x3f, 0xcc, 0xd3, 0x50, 0x47, 0xf3, 0x6b, 0xd2, 0x2d, 0xe5,
+
  0x9c, 0x51, 0x97, 0x89, 0x3a, 0xd5, 0xd3, 0x86, 0xde, 0x72, 0xbb, 0x62,
+
  0x32, 0xb9, 0x8c, 0x20, 0x75, 0xf9, 0x58, 0x76, 0xd4, 0xa6, 0x90, 0xcb,
+
  0x6b, 0x44, 0x98, 0xf8, 0xd8, 0xb2, 0x9a, 0xa8, 0x88, 0x2c, 0xf1, 0x71,
+
  0xb1, 0xc0, 0x4a, 0x24, 0xbc, 0xb0, 0xaa, 0x2e, 0xf6, 0x80, 0x5f, 0xef,
+
  0x0d, 0x9e, 0x90, 0x5f, 0x00, 0xf4, 0x47, 0x2f, 0xee, 0x5b, 0x4b, 0xfd,
+
  0x68, 0x56, 0x57, 0xe9, 0x6c, 0xda, 0x1e, 0x4d, 0xb1, 0x9c, 0xb6, 0xc2,
+
  0x6e, 0xff, 0xbb, 0x34, 0xc9, 0x8b, 0xee, 0xb1, 0xf1, 0x02, 0x3f, 0x9f,
+
  0x68, 0x02, 0x7e, 0x8f, 0xaa, 0x75, 0x5a, 0x39, 0xb7, 0x9d, 0x3e, 0x7f,
+
  0x46, 0x92, 0xff, 0xfb, 0x12, 0x77, 0xe6, 0xa9, 0x78, 0xc3, 0x3c, 0x22,
+
  0x47, 0x1a, 0x8f, 0x90, 0xd2, 0x31, 0x2d, 0x20, 0xcd, 0x27, 0x5c, 0x4c,
+
  0x39, 0xca, 0x60, 0xcf, 0xca, 0x6b, 0xe3, 0x43, 0x6b, 0x72, 0xc4, 0xef,
+
  0xa9, 0x35, 0x0b, 0xdd, 0x15, 0xec, 0x37, 0x34, 0x88, 0xfe, 0x4c, 0x0f,
+
  0x95, 0xbb, 0xc5, 0xe7, 0x81, 0x9a, 0xec, 0x77, 0xc7, 0xdf, 0x9f, 0xbc,
+
  0x39, 0x6e, 0xf6, 0x28, 0xa8, 0xb9, 0x77, 0x34, 0xd5, 0x33, 0xb6, 0x67,
+
  0xf7, 0x2b, 0xa6, 0x02, 0x68, 0x0b, 0x2c, 0x29, 0xc6, 0xcc, 0xd0, 0xeb,
+
  0x19, 0x9d, 0xfe, 0xf8, 0xcc, 0xcc, 0x0e, 0x55, 0xf3, 0x9c, 0x66, 0xa5,
+
  0x83, 0xf6, 0xd9, 0x84, 0x6d, 0xa7, 0x09, 0x61, 0xae, 0xe2, 0xd6, 0x00,
+
  0xb9, 0x30, 0xd7, 0x6a, 0xea, 0xfc, 0xa8, 0x8a, 0x94, 0x6b, 0x7f, 0xb5,
+
  0x0d, 0x12, 0x58, 0x03, 0xe8, 0xa2, 0xc5, 0xae, 0x46, 0x66, 0x50, 0xcf,
+
  0xd8, 0x24, 0xa5, 0x9b, 0x3a, 0xe2, 0x8a, 0x8f, 0x6b, 0x82, 0x2d, 0x09,
+
  0x36, 0x62, 0x3f, 0xdd, 0x93, 0xd6, 0x19, 0x15, 0xa7, 0x2d, 0xff, 0xe9,
+
  0x5a, 0x0c, 0xcb, 0x8f, 0x26, 0x42, 0xa0, 0x6c, 0x27, 0xce, 0x80, 0x9b,
+
  0x84, 0xda, 0xea, 0xa0, 0xc3, 0x84, 0x18, 0xb7, 0x03, 0xb7, 0x16, 0xf1,
+
  0x62, 0x49, 0x72, 0x24, 0xad, 0x16, 0x31, 0x2b, 0xb3, 0xd0, 0xf2, 0xc0,
+
  0xcd, 0x6a, 0xab, 0xfb, 0x4d, 0xcc, 0x9a, 0xca, 0x0b, 0x6d, 0xfc, 0x71,
+
  0xa3, 0x69, 0x4d, 0x5a, 0x5b, 0xf8, 0x8a, 0x2d, 0x04, 0x98, 0x82, 0x67,
+
  0xb7, 0x08, 0x90, 0x91, 0xb8, 0xb7, 0xe9, 0x34, 0xe9, 0x6d, 0xde, 0xca,
+
  0xac, 0x2e, 0x75, 0xd7, 0x45, 0x1a, 0xdc, 0x16, 0x45, 0xbc, 0xaa, 0x8b,
+
  0x05, 0xea, 0xb0, 0xdc, 0x9f, 0x68, 0x0a, 0x16, 0x31, 0xd5, 0x51, 0x99,
+
  0x45, 0xc7, 0x2b, 0x41, 0x30, 0xfa, 0x21, 0x92, 0x7c, 0x89, 0xc8, 0xd2,
+
  0x98, 0xbe, 0x32, 0x6d, 0x2c, 0x04, 0x0e, 0x01, 0xc7, 0xbe, 0x73, 0x89,
+
  0x50, 0x55, 0xaa, 0x02, 0x06, 0x65, 0x56, 0xbd, 0x87, 0x6d, 0xff, 0x03,
+
  0x90, 0x1b, 0x35, 0xed, 0x44, 0x24, 0xbd, 0xbe, 0x8e, 0x2d, 0xa9, 0xbc,
+
  0x52, 0xb3, 0xad, 0xb3, 0x24, 0x97, 0x57, 0x41, 0xed, 0x40, 0x02, 0x3a,
+
  0x8f, 0xae, 0x04, 0x73, 0x20, 0xf4, 0xfd, 0x97, 0xa9, 0x75, 0x05, 0x18,
+
  0x63, 0x87, 0xf2, 0x67, 0xbb, 0x96, 0x99, 0x12, 0x6b, 0xf0, 0x90, 0x57,
+
  0xd7, 0x79, 0x8d, 0x3c, 0x99, 0xc5, 0xc7, 0xb8, 0x28, 0x49, 0xff, 0x41,
+
  0x1a, 0xb5, 0x67, 0xb6, 0xa2, 0xf6, 0x65, 0x5f, 0x3e, 0xfc, 0x12, 0x17,
+
  0xda, 0x6f, 0x86, 0x84, 0xe5, 0xe8, 0xc4, 0xb0, 0x89, 0x83, 0xf0, 0x1b,
+
  0xa1, 0x57, 0xce, 0xbc, 0x43, 0x63, 0xd6, 0x44, 0x0b, 0x68, 0xac, 0xa7,
+
  0x08, 0xef, 0xee, 0x29, 0x32, 0x24, 0x6a, 0x65, 0x0c, 0xbf, 0x12, 0x1c,
+
  0xbf, 0x44, 0xcb, 0x42, 0x83, 0x51, 0xaa, 0xd3, 0x0f, 0xa2, 0xb7, 0x39,
+
  0x21, 0x11, 0xe0, 0xc2, 0x7d, 0x8f, 0x88, 0xf1, 0xac, 0x2f, 0x21, 0x8c,
+
  0x20, 0xec, 0x17, 0x76, 0xa5, 0x0a, 0xf0, 0x28, 0x66, 0x88, 0x76, 0x66,
+
  0x2a, 0x27, 0xda, 0x69, 0xc5, 0x74, 0xae, 0x85, 0xf1, 0x29, 0x5f, 0xfb,
+
  0x3e, 0xf3, 0xba, 0x8e, 0xa1, 0x2e, 0xc0, 0x6e, 0x3d, 0x58, 0x7d, 0x1a,
+
  0x1b, 0xd3, 0xc6, 0xd3, 0xd9, 0x8c, 0x3b, 0x66, 0xe0, 0x08, 0x64, 0x74,
+
  0x73, 0xe7, 0x14, 0x2a, 0xe1, 0x57, 0x6f, 0x04, 0x3a, 0x23, 0x3c, 0xd1,
+
  0x4a, 0xfd, 0x5f, 0xe0, 0x49, 0xa6, 0xcb, 0x9b, 0x80, 0x73, 0x6a, 0xea,
+
  0x14, 0xe2, 0xd6, 0x5b, 0x0f, 0x25, 0xad, 0x8d, 0xf3, 0x4a, 0x5e, 0xcc,
+
  0x09, 0x5f, 0xd1, 0xcb, 0x77, 0x4a, 0x50, 0x96, 0x61, 0x28, 0x86, 0x59,
+
  0x44, 0x18, 0xcf, 0x99, 0x6c, 0x3d, 0xbe, 0xd2, 0x90, 0x7c, 0x95, 0xd6,
+
  0x95, 0x95, 0x80, 0x09, 0xb1, 0x48, 0x12, 0x8c, 0xba, 0xdf, 0xdd, 0xc3,
+
  0xe1, 0x3a, 0x4d, 0xb8, 0xbd, 0x81, 0xa2, 0x45, 0x22, 0xf1, 0xe6, 0x13,
+
  0x36, 0x01, 0x9e, 0xd2, 0x6c, 0xd2, 0x0f, 0xa4, 0xba, 0x02, 0x41, 0x7f,
+
  0x63, 0xea, 0xe0, 0xc3, 0xc3, 0x25, 0x14, 0x9d, 0x82, 0x45, 0xa8, 0x18,
+
  0x7f, 0x9c, 0x6e, 0x67, 0x7f, 0x51, 0xc5, 0x9d, 0x30, 0x88, 0xfc, 0x80,
+
  0x1e, 0xde, 0x9d, 0xa7, 0x35, 0x7e, 0xbb, 0xb9, 0xbf, 0x85, 0xcb, 0x11,
+
  0x1e, 0x6e, 0x81, 0xdd, 0x73, 0xa8, 0x6b, 0x46, 0x73, 0x1a, 0xa6, 0x8b,
+
  0x06, 0x68, 0x64, 0x36, 0xb8, 0xfb, 0x78, 0x7f, 0xb0, 0xe3, 0xe9, 0x0f,
+
  0xe3, 0x8b, 0xf3, 0x72, 0x11, 0x9d, 0x83, 0xee, 0xbf, 0xb8, 0x61, 0x55,
+
  0xf9, 0x4a, 0x6f, 0x4d, 0xf9, 0xd6, 0x17, 0xcf, 0xdc, 0xb5, 0x94, 0x65,
+
  0x83, 0x75, 0x0b, 0x0f, 0x47, 0x32, 0x91, 0x0b, 0x24, 0x64, 0x39, 0x95,
+
  0x64, 0xcd, 0x68, 0xd6, 0x61, 0x20, 0x8b, 0x4f, 0xdf, 0x84, 0x87, 0x6b,
+
  0x6c, 0x09, 0x8f, 0xa0, 0xc3, 0xd2, 0x01, 0x9c, 0xc0, 0x50, 0xf3, 0x84,
+
  0x8f, 0xd8, 0x39, 0x70, 0x30, 0x7d, 0x88, 0x8f, 0xbd, 0x71, 0x31, 0x2f,
+
  0x26, 0xec, 0x1f, 0xba, 0x69, 0x2d, 0xf0, 0x42, 0x5d, 0x0b, 0x81, 0xa7,
+
  0xaf, 0xdc, 0xf7, 0xa2, 0x41, 0xe0, 0xe8, 0xeb, 0x4e, 0xfb, 0xd2, 0xb0,
+
  0xed, 0xd2, 0x10, 0x74, 0x06, 0x1c, 0x9e, 0x6e, 0x76, 0x5f, 0x21, 0x8f,
+
  0x8a, 0x71, 0xed, 0xbc, 0x01, 0x5e, 0xd0, 0x41, 0xb0, 0x24, 0x84, 0x02,
+
  0x6f, 0x86, 0xb0, 0xa3, 0xe4, 0x3e, 0xbb, 0xe9, 0xcd, 0xf0, 0x42, 0x6f,
+
  0x97, 0xe1, 0x43, 0x16, 0x6d, 0xad, 0x2d, 0xe6, 0xcd, 0x09, 0x0f, 0xd7,
+
  0xdc, 0x60, 0x8b, 0x89, 0xc2, 0x51, 0x4b, 0xd8, 0x63, 0xb7, 0x0a, 0x67,
+
  0xe4, 0xe4, 0x0d, 0xdc, 0x62, 0x97, 0x69, 0x8c, 0x95, 0x9b, 0x4c, 0x57,
+
  0x04, 0xf6, 0x78, 0x86, 0x41, 0xad, 0x65, 0x39, 0x4e, 0xdf, 0xb1, 0x9e,
+
  0x41, 0x8d, 0xeb, 0xdf, 0xad, 0x5e, 0x94, 0x99, 0xb4, 0xae, 0xba, 0x9e,
+
  0xa3, 0x5a, 0x6e, 0x99, 0xf0, 0x98, 0x02, 0x7a, 0xa8, 0x77, 0x51, 0x2b,
+
  0x27, 0x30, 0x1d, 0xe8, 0x7b, 0x36, 0xde, 0x3b, 0x48, 0xdf, 0x3e, 0x2f,
+
  0x32, 0x6d, 0x1a, 0x17, 0x05, 0xcc, 0x5a, 0x7a, 0x1c, 0x4a, 0x7d, 0x92,
+
  0x33, 0x45, 0xba, 0x2e, 0xee, 0x18, 0x2e, 0xe4, 0xb6, 0x9e, 0xbf, 0x47,
+
  0xbc, 0x6f, 0xa3, 0x64, 0xbd, 0xcb, 0xfd, 0xb8, 0xb9, 0xcb, 0x2d, 0xf9,
+
  0x72, 0xdd, 0x72, 0x7e, 0x27, 0x81, 0xf6, 0x37, 0xe8, 0x8e, 0x0d, 0x3e,
+
  0xe8, 0xeb, 0x4e, 0x4d, 0x15, 0xea, 0x1d, 0x37, 0xa5, 0x90, 0xfd, 0xf2,
+
  0x66, 0x77, 0x5b, 0x36, 0xce, 0x17, 0x86, 0x99, 0x78, 0xa3, 0x17, 0x82,
+
  0xb2, 0xf2, 0x1b, 0x48, 0x71, 0x6d, 0x5e, 0x3e, 0xee, 0xe2, 0xbb, 0xa8,
+
  0xb1, 0xa0, 0x40, 0x23, 0x46, 0x0e, 0x0f, 0xfe, 0xfc, 0x6c, 0x1c, 0x23,
+
  0xef, 0x1a, 0xd6, 0xbe, 0xb2, 0x9c, 0x49, 0x75, 0x35, 0xf2, 0x80, 0x8f,
+
  0xaa, 0x62, 0xb6, 0x44, 0xd7, 0x50, 0x52, 0x5f, 0xf0, 0x0e, 0x4d, 0x75,
+
  0x9e, 0x9d, 0xfb, 0x99, 0xd7, 0x46, 0x6b, 0x37, 0xc4, 0xe0, 0xed, 0x28,
+
  0x5c, 0x46, 0x38, 0x35, 0x44, 0xb3, 0x42, 0xe1, 0xdd, 0xdb, 0x2a, 0x57,
+
  0xdb, 0x29, 0xb2, 0x2e, 0x62, 0x37, 0xa5, 0x0c, 0xd0, 0xdd, 0x0a, 0x39,
+
  0x22, 0x8f, 0x6d, 0x4b, 0x92, 0x49, 0x8a, 0x6a, 0xbc, 0x9c, 0x2f, 0xac,
+
  0xca, 0xbb, 0x99, 0x61, 0xf1, 0xcc, 0x3b, 0x09, 0xb7, 0x9c, 0xdf, 0x40,
+
  0xb0, 0x70, 0x81, 0x7d, 0x2b, 0xee, 0x24, 0x67, 0xde, 0x2a, 0xc4, 0xeb,
+
  0x56, 0x0c, 0xd7, 0x3d, 0x87, 0xc6, 0xd1, 0x5e, 0x71, 0xaa, 0xf9, 0xca,
+
  0xe0, 0x84, 0xec, 0xf2, 0xc2, 0xfe, 0x96, 0xd7, 0x76, 0x6a, 0x1d, 0xd4,
+
  0x7e, 0xdd, 0xba, 0x4b, 0x26, 0xd7, 0x77, 0xe2, 0x5f, 0xe4, 0xba, 0x40,
+
  0x3f, 0x8f, 0x4f, 0x1d, 0xca, 0x35, 0xd7, 0xe2, 0xba, 0xe8, 0x1e, 0x98,
+
  0xf9, 0x9c, 0xcd, 0x75, 0x0e, 0x7c, 0x3c, 0xfe, 0x4f, 0x97, 0x3b, 0x83,
+
  0xc7, 0xef, 0x3d, 0x3b, 0x7e, 0x79, 0x4c, 0x5b, 0xd4, 0x8b, 0x7c, 0x7f,
+
  0xc6, 0xb4, 0x28, 0xba, 0x5d, 0x1a, 0x3f, 0xe1, 0x2c, 0xc5, 0xb3, 0xeb,
+
  0xfa, 0xed, 0x70, 0xd5, 0x40, 0xdb, 0xed, 0xc6, 0x3d, 0x7c, 0x86, 0x6d,
+
  0xb0, 0xc6, 0x94, 0x24, 0xa2, 0xad, 0xb4, 0x5a, 0x6d, 0x00, 0x39, 0x0a,
+
  0x6f, 0xe2, 0x87, 0x36, 0x74, 0xff, 0xe4, 0x01, 0xa6, 0xee, 0xb5, 0x7d,
+
  0xa5, 0x14, 0xc6, 0xa7, 0x13, 0x81, 0xde, 0x25, 0x69, 0x63, 0x78, 0x91,
+
  0x70, 0xcf, 0x0e, 0x86, 0xaf, 0x29, 0xd4, 0x61, 0x3b, 0x6d, 0x24, 0xfa,
+
  0x47, 0xc5, 0xac, 0x4d, 0x0f, 0x26, 0x1d, 0x00, 0x18, 0x87, 0x3a, 0xa4,
+
  0xbe, 0xe8, 0x48, 0x02, 0x24, 0x97, 0x9d, 0x1e, 0x3b, 0x1c, 0x92, 0x5e,
+
  0x5a, 0x4a, 0x5f, 0x09, 0x8c, 0x00, 0x67, 0xa4, 0xf6, 0x1f, 0xf5, 0x1f,
+
  0x9f, 0xa4, 0xa5, 0x47, 0x82, 0x60, 0xcf, 0xf1, 0xa2, 0x71, 0x79, 0x24,
+
  0x91, 0x36, 0x25, 0x63, 0x89, 0xe9, 0x42, 0xbb, 0x4f, 0xe9, 0x78, 0x12,
+
  0xa7, 0xd4, 0xcb, 0x81, 0xb4, 0xcf, 0x71, 0xe7, 0xfd, 0xf4, 0x8c, 0x66,
+
  0x95, 0x6a, 0xd5, 0x91, 0x5f, 0xee, 0x6e, 0xd5, 0x67, 0x4b, 0xa4, 0x75,
+
  0x27, 0x81, 0x35, 0x76, 0x59, 0x75, 0xb1, 0x66, 0x20, 0x2f, 0x3d, 0x9f,
+
  0xc4, 0x4d, 0x57, 0x6d, 0x5c, 0xf6, 0x79, 0x64, 0x90, 0x39, 0x4f, 0xe9,
+
  0x47, 0x10, 0x21, 0x90, 0x0c, 0x64, 0xb2, 0xd3, 0xbe, 0x7f, 0xf1, 0xf2,
+
  0x78, 0x2b, 0x7a, 0x23, 0x29, 0x6f, 0x68, 0xcf, 0x5e, 0xc3, 0xe9, 0xe0,
+
  0x01, 0x36, 0xb3, 0x01, 0xa8, 0xac, 0x8c, 0x08, 0x87, 0xb6, 0xe1, 0xa4,
+
  0x18, 0x07, 0x13, 0x08, 0xb7, 0x24, 0x51, 0x2e, 0x17, 0x4c, 0xa6, 0xc1,
+
  0x6e, 0xdf, 0xf5, 0xc7, 0x99, 0x96, 0xdf, 0x91, 0x24, 0xe9, 0x51, 0x46,
+
  0x50, 0x44, 0x8f, 0x6e, 0xd3, 0xf4, 0x1b, 0x7c, 0x70, 0xe5, 0x07, 0xa9,
+
  0xe9, 0xd0, 0x5b, 0x17, 0xcc, 0x55, 0x72, 0xed, 0x6f, 0xed, 0x4e, 0xfc,
+
  0xe0, 0xcb, 0x2f, 0x1b, 0x5a, 0xb7, 0x72, 0x68, 0x74, 0xbb, 0x3c, 0xdc,
+
  0xd9, 0xa1, 0x77, 0xf3, 0x7a, 0xfd, 0xc0, 0x17, 0xf1, 0x97, 0x74, 0x63,
+
  0xf3, 0xb6, 0x2a, 0x05, 0x3a, 0x9a, 0x74, 0xdf, 0x17, 0xe3, 0x37, 0x81,
+
  0xc7, 0x11, 0xbd, 0x74, 0xde, 0xf5, 0x25, 0x3e, 0x2e, 0x70, 0x17, 0x5d,
+
  0xcc, 0xeb, 0x58, 0x4c, 0xa7, 0x48, 0x6e, 0x78, 0xa5, 0xb6, 0x29, 0xbd,
+
  0x4a, 0xca, 0x89, 0xff, 0xba, 0x3b, 0xfd, 0x78, 0xb7, 0xeb, 0x75, 0x89,
+
  0x39, 0x52, 0x19, 0x24, 0xee, 0x27, 0x32, 0x86, 0xcd, 0x3f, 0x6c, 0x31,
+
  0x5a, 0x57, 0x7b, 0xa0, 0x5d, 0x98, 0xd1, 0xee, 0x97, 0x5f, 0xf6, 0x71,
+
  0x66, 0x0f, 0xbf, 0xfc, 0xb2, 0xb3, 0x93, 0x92, 0xf3, 0x98, 0xab, 0xc2,
+
  0xc6, 0x0a, 0xf0, 0x76, 0x4b, 0x34, 0x15, 0x3c, 0x26, 0x0a, 0x3f, 0x07,
+
  0xbf, 0x89, 0xbe, 0x8e, 0x5e, 0x9f, 0x9c, 0x1d, 0x3b, 0x5e, 0x79, 0x3a,
+
  0x41, 0x9c, 0xc1, 0xe4, 0xb8, 0xa1, 0x28, 0xe9, 0x6d, 0x81, 0xa5, 0x4a,
+
  0xec, 0xf3, 0x9b, 0x2f, 0x67, 0xbe, 0x7b, 0x8c, 0x90, 0x0a, 0x35, 0x48,
+
  0xa5, 0x10, 0x7a, 0x7a, 0x22, 0x59, 0x39, 0xa2, 0x7c, 0xbc, 0x38, 0xa3,
+
  0x8a, 0x22, 0x3a, 0x77, 0xff, 0x01, 0x7c, 0x33, 0x29, 0x2b, 0x1f, 0x61,
+
  0x03, 0x7d, 0x44, 0xea, 0x14, 0x13, 0xff, 0x64, 0x51, 0xce, 0x4d, 0xf8,
+
  0xc1, 0xc4, 0xc2, 0xc4, 0xf5, 0x21, 0x7f, 0x67, 0xa3, 0x6c, 0x96, 0xd5,
+
  0xd7, 0x1d, 0xee, 0x31, 0x50, 0x23, 0x03, 0xd6, 0xda, 0x89, 0xc4, 0xaa,
+
  0xcf, 0xb3, 0xda, 0x6d, 0xaf, 0xbb, 0x09, 0x64, 0xb8, 0x45, 0x6e, 0x69,
+
  0xae, 0x2f, 0x93, 0xac, 0x93, 0x8d, 0x0a, 0x41, 0x07, 0xb9, 0xa2, 0x7f,
+
  0x03, 0x3d, 0x89, 0x1b, 0x9e, 0xdb, 0x2b, 0x9d, 0x31, 0x26, 0x99, 0xbd,
+
  0x3c, 0xa6, 0x0b, 0xe5, 0x18, 0x93, 0x63, 0xed, 0x03, 0xc5, 0xe2, 0xe1,
+
  0x0c, 0x15, 0x79, 0xcc, 0x8f, 0xee, 0xce, 0x3b, 0xa1, 0x86, 0xb4, 0x94,
+
  0x39, 0xac, 0x70, 0xa1, 0x38, 0x8e, 0x5b, 0xf1, 0xbf, 0xe1, 0x2c, 0x88,
+
  0x61, 0x81, 0x39, 0x12, 0x48, 0xec, 0xa5, 0xf4, 0x50, 0x3c, 0x7f, 0x92,
+
  0x2e, 0xb4, 0x32, 0x3e, 0x6f, 0x8e, 0x03, 0x87, 0x6c, 0x9a, 0x9d, 0x2f,
+
  0xcb, 0x70, 0x89, 0x34, 0xba, 0x08, 0x35, 0x35, 0x97, 0x98, 0x1e, 0x2a,
+
  0xe7, 0x57, 0x49, 0x29, 0x71, 0x9d, 0x39, 0x7a, 0x66, 0x95, 0xe9, 0xa8,
+
  0xb3, 0x4e, 0x51, 0x2a, 0x2f, 0x12, 0x0f, 0x85, 0x90, 0xb6, 0x52, 0x5b,
+
  0x5d, 0x48, 0x4e, 0x39, 0x85, 0x9a, 0x68, 0x34, 0x83, 0x13, 0x2a, 0x51,
+
  0x2d, 0xa4, 0x42, 0x54, 0x19, 0x91, 0x67, 0xf1, 0x12, 0x04, 0x0a, 0xda,
+
  0xa4, 0x4b, 0x08, 0x07, 0xf2, 0xf1, 0x6a, 0x7c, 0xbb, 0xab, 0x8b, 0x02,
+
  0x5b, 0x09, 0x03, 0xbf, 0x44, 0xfe, 0xe8, 0x37, 0x62, 0x43, 0xa6, 0x48,
+
  0x66, 0x33, 0xf3, 0x47, 0xde, 0x27, 0xb8, 0xfe, 0x2a, 0x9f, 0x15, 0x09,
+
  0x6e, 0x26, 0x92, 0x88, 0x66, 0x3f, 0xd2, 0x72, 0x71, 0x73, 0x68, 0xd9,
+
  0x5d, 0x2f, 0x11, 0x19, 0x37, 0x9b, 0xb7, 0x39, 0xda, 0x74, 0x9a, 0x04,
+
  0xd2, 0xe1, 0x71, 0x3c, 0x9f, 0xcc, 0x40, 0xd1, 0x67, 0xc1, 0x4d, 0xef,
+
  0xb6, 0x06, 0x34, 0x97, 0x40, 0x2f, 0x61, 0xde, 0x2f, 0x93, 0x9b, 0x9d,
+
  0x7e, 0xa8, 0xe1, 0xcf, 0x74, 0xe2, 0xba, 0x63, 0xa3, 0xe1, 0x8b, 0xff,
+
  0x3a, 0x0e, 0xcb, 0xd7, 0xb2, 0x1f, 0x19, 0x29, 0xf4, 0xf9, 0xf2, 0x65,
+
  0xf8, 0xf9, 0x7b, 0x7b, 0xf1, 0x83, 0x07, 0xeb, 0xc9, 0xd5, 0x23, 0x2a,
+
  0x9d, 0x2b, 0x72, 0x72, 0xc0, 0xc7, 0x89, 0x54, 0x3f, 0x27, 0xf8, 0x69,
+
  0xb2, 0xc0, 0x75, 0x69, 0x6a, 0x7d, 0x18, 0xca, 0x9a, 0xc3, 0xca, 0x6b,
+
  0xb0, 0x1f, 0x3f, 0xf9, 0x66, 0x85, 0xe2, 0x04, 0xd7, 0x66, 0xf3, 0xe5,
+
  0xdc, 0x06, 0x41, 0xa6, 0x74, 0x67, 0x3e, 0xbe, 0x66, 0xe2, 0xa3, 0x6e,
+
  0xa3, 0x5a, 0x89, 0xc0, 0xa8, 0x26, 0xde, 0xa9, 0xca, 0x1d, 0x61, 0x68,
+
  0x3b, 0x6b, 0x23, 0x71, 0x50, 0x5c, 0x83, 0x8d, 0xe6, 0x65, 0x9e, 0x61,
+
  0x0b, 0xd2, 0x62, 0x9e, 0xb2, 0xe6, 0x4c, 0xfc, 0x68, 0xd2, 0x05, 0x8d,
+
  0xca, 0xe0, 0x20, 0x48, 0x12, 0xda, 0x08, 0x98, 0x8f, 0x8b, 0x01, 0xc4,
+
  0x68, 0x86, 0x34, 0x12, 0xa1, 0x4c, 0x6c, 0x38, 0xdd, 0xd1, 0x26, 0x1b,
+
  0xf5, 0xbb, 0x29, 0x39, 0x65, 0x2b, 0xad, 0x04, 0x48, 0x43, 0x04, 0xc3,
+
  0xbc, 0x46, 0x49, 0xe3, 0xed, 0x9b, 0x97, 0x9c, 0xb1, 0x93, 0x34, 0xc2,
+
  0x44, 0xb0, 0x6b, 0x24, 0x21, 0x61, 0x3c, 0x0e, 0xbc, 0xa1, 0x27, 0xd6,
+
  0x37, 0xf6, 0x68, 0xf5, 0xd0, 0x0c, 0xc3, 0x97, 0x71, 0x6b, 0x22, 0xae,
+
  0x12, 0x58, 0x8c, 0x25, 0xec, 0xe9, 0xcc, 0x4c, 0xdb, 0x8e, 0x8f, 0xb1,
+
  0x6f, 0x7c, 0x23, 0x4f, 0x43, 0xad, 0x31, 0x46, 0x93, 0x91, 0x5a, 0xeb,
+
  0x02, 0x27, 0xe3, 0x2a, 0xc2, 0xf8, 0x4d, 0xfd, 0x5d, 0xf2, 0x11, 0x54,
+
  0xf3, 0x0e, 0x21, 0x76, 0xc5, 0xff, 0x45, 0x11, 0x7f, 0xe0, 0xbb, 0xb0,
+
  0x13, 0x33, 0xcd, 0x5f, 0x09, 0xa6, 0x34, 0xb9, 0xd4, 0xd4, 0x50, 0x51,
+
  0xe1, 0x29, 0xbd, 0xd7, 0xdb, 0x6f, 0x7b, 0x52, 0xff, 0xf1, 0x5a, 0x5c,
+
  0x88, 0xea, 0x19, 0x03, 0xba, 0x88, 0xbd, 0xb0, 0x6f, 0xc9, 0xec, 0xe6,
+
  0x2d, 0x3b, 0xd3, 0x0c, 0x71, 0x60, 0x25, 0x84, 0x7a, 0xed, 0xf1, 0x6f,
+
  0x8e, 0x8a, 0x6e, 0x54, 0x1b, 0x40, 0x35, 0xa4, 0xfd, 0x6c, 0xf5, 0xa3,
+
  0x8d, 0x79, 0x5b, 0xe0, 0x6c, 0x82, 0x54, 0x5c, 0x02, 0xa5, 0xc0, 0x77,
+
  0x17, 0x70, 0x25, 0x90, 0x4a, 0xb9, 0xc5, 0xe2, 0x69, 0xb2, 0x11, 0x6d,
+
  0x6f, 0x4e, 0x12, 0x4e, 0xd2, 0x24, 0x95, 0x6d, 0x0f, 0x8e, 0x1e, 0x26,
+
  0x1f, 0xd0, 0xf0, 0x5b, 0x8c, 0xec, 0xe9, 0xd5, 0x8c, 0x48, 0xc4, 0x8c,
+
  0xdd, 0xfa, 0x78, 0x61, 0x5f, 0x3a, 0x83, 0xf6, 0xf0, 0x35, 0x9d, 0x77,
+
  0xa7, 0xa4, 0xac, 0x16, 0xe1, 0x7b, 0x51, 0x20, 0x64, 0x70, 0x78, 0x04,
+
  0xf0, 0xb9, 0x21, 0x6a, 0xd3, 0xfc, 0x95, 0xba, 0x98, 0x91, 0x71, 0xc1,
+
  0xe7, 0x6d, 0x77, 0xc7, 0xe2, 0x45, 0xe3, 0xdd, 0x11, 0xbf, 0xa4, 0x64,
+
  0x25, 0x73, 0xe1, 0x49, 0x20, 0x63, 0x8d, 0x8e, 0x01, 0x9b, 0x26, 0x44,
+
  0x51, 0x66, 0xdb, 0x98, 0xd2, 0x1e, 0x89, 0x16, 0x59, 0x91, 0x30, 0x8a,
+
  0xd2, 0x59, 0xb2, 0x20, 0x83, 0x96, 0xcc, 0x3a, 0x9f, 0x78, 0xc1, 0x3c,
+
  0xbc, 0xcc, 0xb0, 0xb5, 0xa3, 0x21, 0x4c, 0xcc, 0x6d, 0x17, 0xca, 0x0c,
+
  0xa7, 0x3d, 0x4f, 0x97, 0x39, 0xe7, 0x31, 0x50, 0x6b, 0xa6, 0x39, 0xcc,
+
  0x33, 0x13, 0xc5, 0x15, 0x04, 0x34, 0x7a, 0x84, 0xc8, 0xcc, 0x94, 0x9c,
+
  0x6c, 0x7b, 0x3a, 0xa6, 0x41, 0x26, 0x80, 0x2c, 0x28, 0xe3, 0xd4, 0xc9,
+
  0x39, 0x67, 0x83, 0x03, 0x61, 0x81, 0x7e, 0xb7, 0x43, 0x4b, 0xc2, 0xe3,
+
  0xf6, 0x9d, 0xd6, 0x58, 0x2c, 0xf4, 0xca, 0x25, 0x76, 0x3e, 0xf7, 0x03,
+
  0xae, 0xe8, 0x32, 0x1b, 0x87, 0x26, 0xce, 0xc9, 0x5c, 0x58, 0x66, 0x43,
+
  0x85, 0x51, 0xb6, 0xc7, 0x6e, 0x3f, 0x52, 0xa1, 0x2c, 0x88, 0x67, 0x64,
+
  0x68, 0xd7, 0xe5, 0xb5, 0xea, 0x1e, 0x41, 0xdc, 0x6e, 0xba, 0x02, 0xc8,
+
  0x68, 0x06, 0x46, 0xe3, 0xac, 0x38, 0xe7, 0xde, 0x71, 0x64, 0x3a, 0x52,
+
  0x41, 0x4e, 0x51, 0x6b, 0x72, 0x0b, 0x25, 0x68, 0xaf, 0x6c, 0x63, 0x89,
+
  0x8a, 0xcf, 0xac, 0x18, 0x25, 0x33, 0x29, 0x2e, 0x13, 0x40, 0xa1, 0x3c,
+
  0x35, 0x09, 0xe8, 0x8e, 0x43, 0x5f, 0x80, 0x99, 0x03, 0xd2, 0xb3, 0x98,
+
  0x12, 0xe6, 0x5e, 0x57, 0x1d, 0xa7, 0x77, 0xa4, 0x6f, 0xd9, 0x79, 0x72,
+
  0xbd, 0xd6, 0x93, 0x55, 0xb7, 0x5c, 0x84, 0xc7, 0xef, 0x6d, 0x07, 0x1b,
+
  0x2e, 0x47, 0x83, 0xc1, 0x60, 0xd5, 0x6d, 0xfb, 0xdb, 0x17, 0x77, 0xb9,
+
  0x6d, 0xf7, 0xc1, 0xf6, 0xbc, 0xf3, 0xbe, 0x6e, 0xfb, 0x96, 0x3a, 0x34,
+
  0xf3, 0x08, 0x9c, 0x38, 0x48, 0x5b, 0x1d, 0xd3, 0x56, 0x37, 0x2a, 0x1b,
+
  0xd9, 0x3d, 0xe2, 0x0a, 0xe5, 0x2b, 0x83, 0x4d, 0xfc, 0x23, 0x37, 0x78,
+
  0x93, 0xac, 0x52, 0xd3, 0xb8, 0x36, 0xd1, 0xe6, 0x6e, 0xa0, 0x2a, 0x71,
+
  0xee, 0x1e, 0x25, 0x6f, 0x93, 0x8a, 0x3a, 0x0d, 0x86, 0xe3, 0xa9, 0xb0,
+
  0xcc, 0x69, 0x09, 0xcd, 0x88, 0x5c, 0x84, 0x62, 0xce, 0x19, 0x1f, 0x7c,
+
  0x1c, 0xe6, 0x94, 0x3b, 0x42, 0x91, 0x5a, 0xcc, 0x7d, 0x21, 0xcc, 0x85,
+
  0xc0, 0xf9, 0x48, 0x66, 0x35, 0x7a, 0x44, 0xfa, 0xc0, 0xe0, 0xaf, 0x56,
+
  0x26, 0x7a, 0xe2, 0xbb, 0xdc, 0x22, 0xf3, 0xcd, 0x26, 0xbb, 0xc1, 0x6b,
+
  0xb6, 0x9f, 0xd5, 0xca, 0x7d, 0x0b, 0x3d, 0xf2, 0x46, 0x65, 0xea, 0x6a,
+
  0x5d, 0x30, 0x82, 0x32, 0xd6, 0x05, 0x72, 0xb6, 0x26, 0x65, 0xe7, 0x19,
+
  0xa6, 0xe9, 0x96, 0xd1, 0x53, 0x90, 0xf5, 0x1d, 0x1d, 0x0c, 0x86, 0xa4,
+
  0x7e, 0xe2, 0x49, 0xe8, 0xbd, 0xc1, 0xab, 0xf1, 0xf2, 0xd3, 0xe4, 0x3c,
+
  0x05, 0x79, 0x90, 0x33, 0x6e, 0x9a, 0xd4, 0x39, 0x99, 0xbc, 0x5e, 0x89,
+
  0x87, 0x07, 0x6b, 0x43, 0xd0, 0x9f, 0xa0, 0xe6, 0x83, 0x49, 0x0c, 0xa7,
+
  0xe2, 0x01, 0xb7, 0xf1, 0xc0, 0x74, 0x96, 0xc8, 0xe6, 0x2f, 0x4b, 0x2c,
+
  0xfb, 0xf8, 0xd1, 0x17, 0xe0, 0xc4, 0x56, 0x78, 0x21, 0x5f, 0xe2, 0x9d,
+
  0x26, 0xc8, 0x83, 0x9a, 0x1b, 0x47, 0x87, 0x59, 0x45, 0x8c, 0xa2, 0xde,
+
  0x57, 0x98, 0x10, 0xd7, 0x73, 0x42, 0x63, 0x71, 0xea, 0x27, 0x1b, 0xeb,
+
  0x52, 0x50, 0xf9, 0x00, 0x5d, 0x6a, 0x73, 0x42, 0x9a, 0x09, 0x75, 0x55,
+
  0xaa, 0x59, 0xa3, 0x22, 0x24, 0xe0, 0x8e, 0x50, 0x2f, 0x43, 0x6c, 0x86,
+
  0x5d, 0x70, 0x1a, 0x60, 0x12, 0xbd, 0x94, 0xf9, 0x1d, 0x48, 0x42, 0x26,
+
  0xfb, 0xd8, 0xcc, 0xd4, 0xa4, 0x98, 0xa1, 0x23, 0xac, 0xcd, 0x3c, 0x74,
+
  0x06, 0x06, 0x44, 0xdf, 0xa4, 0xa1, 0xe0, 0x7b, 0x8a, 0x7d, 0x85, 0x13,
+
  0x22, 0xc5, 0x83, 0xb3, 0x9f, 0x1a, 0x5b, 0x1b, 0xb6, 0x0b, 0xd2, 0xbe,
+
  0xfb, 0xca, 0x9f, 0xda, 0xef, 0xd6, 0xcd, 0x00, 0x65, 0x02, 0x3d, 0x25,
+
  0xe8, 0x29, 0x2c, 0xb9, 0xe6, 0xd2, 0xf7, 0xd6, 0x00, 0x3a, 0x5b, 0x39,
+
  0x90, 0xac, 0x71, 0xfc, 0xf2, 0x2e, 0x03, 0xae, 0xbe, 0xb9, 0xf3, 0xd0,
+
  0x1d, 0xe2, 0x16, 0x60, 0x6c, 0x34, 0x4e, 0xce, 0x29, 0x7d, 0x0b, 0xb9,
+
  0xa6, 0x43, 0xe2, 0xce, 0x41, 0xfc, 0x4f, 0xde, 0x2d, 0x4c, 0x9e, 0x93,
+
  0x2f, 0xe3, 0x40, 0x24, 0x51, 0xf1, 0xdd, 0x1d, 0x19, 0x59, 0x13, 0xee,
+
  0x22, 0x1d, 0x9e, 0x13, 0x67, 0x0c, 0x89, 0x0a, 0xea, 0xb1, 0x14, 0x7f,
+
  0x4e, 0x30, 0x17, 0x2f, 0xb6, 0x42, 0xf4, 0x88, 0x3b, 0x4b, 0xc4, 0xc0,
+
  0xbb, 0xc0, 0x42, 0xe0, 0xe6, 0xf2, 0xe4, 0x4c, 0xa6, 0xe1, 0x0c, 0x4f,
+
  0xa5, 0xf8, 0x5f, 0x10, 0xa2, 0x69, 0x6c, 0x70, 0x0a, 0xed, 0x5d, 0x26,
+
  0xab, 0x14, 0x4e, 0x88, 0xd1, 0x7d, 0xe4, 0xd1, 0x86, 0xe2, 0xa6, 0xe1,
+
  0xb4, 0x19, 0x17, 0xbf, 0x91, 0x9b, 0x0a, 0xd6, 0xae, 0x2b, 0x1b, 0x0f,
+
  0x0c, 0x9c, 0x6f, 0x4c, 0xd9, 0x9f, 0x6a, 0x72, 0x4e, 0x57, 0xb0, 0x47,
+
  0xa1, 0xdc, 0x3a, 0x55, 0xfc, 0x48, 0x1b, 0x17, 0x55, 0xc9, 0xa5, 0x2d,
+
  0x33, 0x12, 0xc4, 0x1e, 0x37, 0x8d, 0x0e, 0x84, 0x8e, 0x7c, 0xd9, 0x15,
+
  0x1b, 0x6a, 0x55, 0xb6, 0xc6, 0x31, 0xa7, 0x61, 0xc7, 0x70, 0x7d, 0x57,
+
  0x81, 0x9e, 0x62, 0x37, 0x1a, 0xaf, 0x5e, 0x62, 0x03, 0xa9, 0x62, 0x7f,
+
  0x09, 0xca, 0x25, 0x69, 0x62, 0xb4, 0x0c, 0x51, 0x80, 0x44, 0xb4, 0xef,
+
  0x3d, 0x57, 0xdb, 0x55, 0xdc, 0x1b, 0x43, 0x5a, 0xf7, 0xda, 0x20, 0x9d,
+
  0xfb, 0x3a, 0xaa, 0x40, 0x72, 0xdd, 0x4d, 0xdb, 0x0f, 0x07, 0x93, 0xba,
+
  0x2a, 0xd1, 0x3d, 0xc1, 0x61, 0x79, 0x6d, 0x3f, 0x2e, 0xfd, 0x43, 0xc6,
+
  0xb0, 0x3c, 0x51, 0x0c, 0xf2, 0x74, 0x86, 0x69, 0x3e, 0xd6, 0x5e, 0xce,
+
  0x6a, 0x2e, 0x91, 0xf2, 0x2d, 0x65, 0x2e, 0x4b, 0x02, 0x83, 0x1e, 0x14,
+
  0x3b, 0x32, 0x1c, 0x16, 0x0d, 0x9d, 0x58, 0x96, 0xc1, 0xe8, 0x7a, 0x26,
+
  0xe7, 0xaf, 0x7b, 0x4f, 0x09, 0x37, 0xa0, 0xf6, 0x2d, 0xbf, 0x8e, 0x6a,
+
  0x8b, 0x33, 0x29, 0x1d, 0x24, 0xe3, 0xd0, 0x71, 0x2d, 0x71, 0xb1, 0x58,
+
  0xf4, 0xfb, 0xb8, 0x62, 0xf3, 0x1f, 0x26, 0xb0, 0x79, 0x9d, 0xd6, 0x5b,
+
  0x4e, 0xbd, 0x19, 0x91, 0xea, 0x17, 0x1d, 0xd1, 0x6e, 0x71, 0x5c, 0xd9,
+
  0x69, 0x60, 0xd4, 0xc4, 0x49, 0xf9, 0xe6, 0x8d, 0x03, 0xed, 0x89, 0x4a,
+
  0xed, 0x41, 0x1d, 0x85, 0x37, 0xab, 0xbb, 0x87, 0xab, 0x3a, 0x0c, 0x0c,
+
  0xf1, 0x96, 0x39, 0xad, 0x5f, 0xe7, 0x4e, 0xef, 0xdf, 0x9e, 0x1e, 0xbb,
+
  0x9e, 0x78, 0x22, 0xc5, 0x62, 0xc2, 0xf5, 0x6c, 0xaf, 0x1d, 0xac, 0x6e,
+
  0x74, 0x8d, 0xfe, 0x34, 0xd7, 0xb3, 0x65, 0x06, 0xf8, 0x43, 0x8f, 0x07,
+
  0x88, 0x36, 0xf5, 0x13, 0xe9, 0xe1, 0x0c, 0x13, 0x9f, 0x65, 0x63, 0x4f,
+
  0xa9, 0x31, 0xae, 0x53, 0x4a, 0x1e, 0xd8, 0xf2, 0xad, 0x8c, 0xc3, 0x37,
+
  0xaf, 0x5f, 0xbc, 0xfe, 0xe1, 0x00, 0xc4, 0x41, 0x5a, 0x8e, 0xd1, 0xab,
+
  0xfb, 0xeb, 0x72, 0x02, 0xe3, 0xa0, 0xe8, 0x14, 0x25, 0xbd, 0xe5, 0xdf,
+
  0x48, 0x25, 0x09, 0x0e, 0xdd, 0xb3, 0x1e, 0xc0, 0xa7, 0xc0, 0x51, 0x20,
+
  0x1e, 0x1a, 0x56, 0xc1, 0x9d, 0x2f, 0x53, 0x1b, 0xd7, 0x18, 0x93, 0x7f,
+
  0x92, 0xd3, 0x18, 0x29, 0xf5, 0x5e, 0x97, 0x09, 0x73, 0xe3, 0xa2, 0x67,
+
  0x2f, 0x5f, 0x46, 0x5e, 0x51, 0x2e, 0x03, 0x20, 0x70, 0xb8, 0x94, 0x0a,
+
  0x2d, 0x15, 0x7d, 0x00, 0x1d, 0x80, 0x28, 0x76, 0x1b, 0xb2, 0x1f, 0x48,
+
  0x5b, 0xe1, 0x30, 0xa8, 0x38, 0x7b, 0x1e, 0x70, 0x6c, 0x12, 0x14, 0x4e,
+
  0x59, 0x83, 0xa2, 0x50, 0x4c, 0x6b, 0x74, 0x91, 0xae, 0xd2, 0x2a, 0x3b,
+
  0xb8, 0x7f, 0x48, 0xd1, 0xfc, 0x28, 0x84, 0x43, 0xff, 0x11, 0x6b, 0x2a,
+
  0x9e, 0x27, 0xff, 0x19, 0x92, 0x80, 0xdb, 0x74, 0x34, 0x3b, 0xc5, 0x60,
+
  0x5b, 0x2e, 0x35, 0x4c, 0x03, 0xfb, 0x31, 0x22, 0x1c, 0xae, 0x2a, 0x25,
+
  0xe6, 0x64, 0xe7, 0xaa, 0x51, 0x9b, 0x25, 0x55, 0x03, 0xd4, 0x15, 0x04,
+
  0xf8, 0x11, 0xbb, 0xae, 0xc8, 0x65, 0x15, 0xca, 0xee, 0x9e, 0xa4, 0xa0,
+
  0xe6, 0x4b, 0x0c, 0xa3, 0x42, 0xf5, 0xc9, 0x17, 0x99, 0x57, 0x69, 0x29,
+
  0x81, 0x4e, 0xd3, 0xe9, 0x07, 0x14, 0xae, 0x41, 0x34, 0x2c, 0xe0, 0xfa,
+
  0x90, 0xbf, 0x39, 0xe1, 0x1e, 0x45, 0x62, 0xc8, 0x30, 0xf5, 0xd0, 0x74,
+
  0x6c, 0x35, 0x2e, 0xea, 0x92, 0x9c, 0xb9, 0xdd, 0x7c, 0x5f, 0xdf, 0x57,
+
  0x46, 0x3b, 0x3c, 0x4a, 0x8d, 0x85, 0x74, 0xad, 0x29, 0xb9, 0x78, 0x42,
+
  0x7a, 0x31, 0xac, 0x65, 0x0f, 0x29, 0xce, 0xdd, 0xcb, 0xe0, 0x26, 0x36,
+
  0x0c, 0x96, 0xe6, 0x0a, 0xaf, 0x34, 0x5e, 0xd6, 0xaf, 0xdb, 0x69, 0x8d,
+
  0xbe, 0xb6, 0x1d, 0xd3, 0x9a, 0x5c, 0x20, 0xf6, 0x0f, 0xa4, 0xb5, 0xdb,
+
  0xf1, 0xf9, 0xde, 0x9d, 0x68, 0xae, 0xfd, 0x55, 0x9b, 0xb3, 0x94, 0x19,
+
  0x81, 0xd4, 0x70, 0xe1, 0x14, 0xc1, 0x4b, 0x73, 0x84, 0xd4, 0xc9, 0x6b,
+
  0xa2, 0x94, 0x62, 0xa7, 0xdc, 0x81, 0xbe, 0xba, 0x4a, 0x31, 0xe0, 0xd0,
+
  0x5e, 0xbb, 0x4d, 0x8a, 0x2f, 0x99, 0xd4, 0x14, 0xb7, 0x9d, 0x97, 0x7b,
+
  0x73, 0xa3, 0x7e, 0x56, 0x5b, 0x0f, 0xc3, 0x2a, 0xd5, 0x1e, 0x00, 0xf5,
+
  0xd4, 0xaf, 0x4b, 0xb1, 0xda, 0x8b, 0x51, 0x8c, 0x42, 0x2a, 0x8c, 0x9f,
+
  0x5c, 0x24, 0x10, 0x3f, 0x6d, 0x6d, 0x9e, 0x68, 0x5a, 0x67, 0x6c, 0x86,
+
  0x4a, 0x22, 0x07, 0x56, 0xb0, 0x51, 0x56, 0xe0, 0xb6, 0x4e, 0xf3, 0x87,
+
  0x13, 0x98, 0x5e, 0x41, 0x6c, 0xee, 0x9a, 0x8b, 0xaa, 0x6f, 0x59, 0x7e,
+
  0x59, 0xd0, 0x37, 0xe2, 0x2b, 0x0e, 0x54, 0xf7, 0x59, 0x11, 0x5b, 0x94,
+
  0x52, 0xd1, 0xb6, 0x42, 0xbf, 0x3a, 0x6b, 0xad, 0xb4, 0xe6, 0x48, 0x28,
+
  0x34, 0x12, 0xbc, 0x1f, 0xf7, 0x10, 0x73, 0xc1, 0xae, 0x2d, 0xbe, 0x75,
+
  0x9b, 0x3c, 0x98, 0xc5, 0xe0, 0x99, 0xee, 0x93, 0x0c, 0xbd, 0xa0, 0x9b,
+
  0xd3, 0x19, 0x86, 0x3c, 0x1d, 0xf4, 0x6b, 0x55, 0xc3, 0x44, 0x0b, 0xcb,
+
  0x8c, 0xce, 0xda, 0xad, 0x5f, 0x19, 0x20, 0x47, 0xb3, 0xfe, 0x36, 0xfa,
+
  0x8a, 0xf0, 0x00, 0xec, 0x4d, 0x40, 0x9b, 0x74, 0x7c, 0x51, 0x14, 0x82,
+
  0xae, 0xde, 0xa5, 0x3e, 0x44, 0x64, 0xbb, 0x50, 0x33, 0xbf, 0x2e, 0xe1,
+
  0x22, 0xc0, 0x9e, 0x4e, 0x66, 0x8f, 0x07, 0xd8, 0x91, 0x4c, 0x26, 0x99,
+
  0xdb, 0x4d, 0xd6, 0xac, 0x7c, 0x5b, 0x5f, 0xe3, 0x19, 0x79, 0x4a, 0x6b,
+
  0xa8, 0xec, 0x8a, 0xbf, 0x0b, 0x2f, 0x8f, 0x94, 0x7e, 0xbb, 0x8b, 0x12,
+
  0x54, 0xdf, 0xb8, 0xd4, 0xc4, 0xd6, 0xf8, 0x13, 0x25, 0x51, 0x64, 0x2d,
+
  0x6f, 0x26, 0xcd, 0xd2, 0x3c, 0xb3, 0x9a, 0xb8, 0xdc, 0xef, 0xf7, 0x76,
+
  0xba, 0x04, 0x3f, 0x0e, 0xa4, 0x80, 0xee, 0x8b, 0x44, 0x12, 0x0d, 0x55,
+
  0x6d, 0x70, 0x1b, 0xe6, 0xa1, 0x4a, 0x81, 0xd8, 0xa2, 0x1c, 0xc5, 0x86,
+
  0x1f, 0x5d, 0xeb, 0x1f, 0x0e, 0x9d, 0xa2, 0x4a, 0xc8, 0xa6, 0x98, 0x83,
+
  0x69, 0x5d, 0x71, 0xdc, 0x94, 0xd9, 0xb1, 0x54, 0xfc, 0x5b, 0xaf, 0x3a,
+
  0x09, 0x33, 0xff, 0x50, 0xa1, 0x03, 0xdb, 0xcf, 0xd8, 0xf2, 0xc4, 0xd9,
+
  0x27, 0xcb, 0xdb, 0x3a, 0xe9, 0xd4, 0x03, 0x88, 0xa5, 0xae, 0x82, 0xba,
+
  0x6d, 0xf1, 0x7c, 0x72, 0x42, 0xd8, 0xf3, 0xab, 0xa0, 0xb7, 0xff, 0xd9,
+
  0x77, 0xae, 0x0d, 0xb6, 0x86, 0x6c, 0xf3, 0xf5, 0x37, 0xce, 0xcb, 0xe3,
+
  0x3b, 0x06, 0xdd, 0xdc, 0xcc, 0x64, 0x9d, 0x5c, 0x07, 0xc7, 0xbf, 0x63,
+
  0x6d, 0x01, 0x0a, 0x81, 0xa7, 0x28, 0x03, 0xb8, 0x10, 0x2d, 0xf3, 0xa5,
+
  0x75, 0x55, 0xc3, 0x6b, 0x07, 0x38, 0x79, 0x5f, 0x99, 0x80, 0xd6, 0x18,
+
  0x1a, 0xcc, 0x0d, 0x7e, 0x14, 0x03, 0x32, 0x16, 0x7e, 0xf3, 0x4c, 0x11,
+
  0x30, 0x1c, 0xb3, 0x46, 0x24, 0x14, 0xe2, 0x53, 0xb8, 0x57, 0xf8, 0xa4,
+
  0x95, 0xa5, 0xb9, 0xed, 0x37, 0xbf, 0xdf, 0xd2, 0x5c, 0x67, 0xe0, 0x3b,
+
  0x8a, 0x77, 0x9a, 0x13, 0x68, 0x2f, 0xd3, 0xa2, 0x58, 0xcf, 0x81, 0xe2,
+
  0xd1, 0x33, 0x79, 0x50, 0x7e, 0x23, 0xf8, 0x40, 0xdc, 0x13, 0x8c, 0x80,
+
  0xb4, 0xb5, 0xc9, 0xcb, 0x34, 0x2e, 0xf2, 0x38, 0x84, 0xbc, 0xf3, 0xa3,
+
  0xa9, 0x97, 0xd6, 0x54, 0x5d, 0x6b, 0xcd, 0x92, 0x0d, 0x29, 0x21, 0x28,
+
  0x94, 0x78, 0x2a, 0xff, 0xd1, 0x7a, 0xd6, 0x1c, 0xa9, 0xc0, 0x59, 0xef,
+
  0x37, 0xa3, 0xb2, 0x4e, 0xe6, 0x27, 0xed, 0xe0, 0xa5, 0x78, 0x36, 0x54,
+
  0xb8, 0x01, 0xbb, 0xa3, 0xa0, 0x07, 0x29, 0xb6, 0x81, 0x68, 0x53, 0x8a,
+
  0x65, 0xe3, 0x34, 0x43, 0x12, 0x3f, 0xb3, 0x94, 0x65, 0x93, 0xcd, 0xf9,
+
  0x12, 0xec, 0x33, 0x83, 0xd8, 0x42, 0x26, 0x0d, 0x01, 0x0d, 0xf9, 0xc8,
+
  0x20, 0x60, 0x45, 0x2f, 0xc9, 0x9f, 0xa8, 0x1e, 0xf2, 0x2e, 0xd7, 0x83,
+
  0xbe, 0xaa, 0x34, 0x23, 0x95, 0x17, 0xbb, 0xbd, 0x45, 0xdd, 0xe8, 0xca,
+
  0xd6, 0xda, 0x82, 0xfb, 0x27, 0x45, 0x67, 0xf0, 0xbb, 0x90, 0xa3, 0x3b,
+
  0x37, 0x20, 0x49, 0xad, 0x8f, 0x5f, 0x87, 0x2a, 0xa7, 0x84, 0x60, 0x02,
+
  0xa7, 0xba, 0x19, 0xf4, 0x68, 0xc1, 0xe5, 0x4b, 0xe8, 0x31, 0x96, 0x44,
+
  0xe7, 0xa7, 0xa8, 0xd4, 0x7d, 0x73, 0x9b, 0x7e, 0x8d, 0x84, 0xb7, 0x98,
+
  0x73, 0x44, 0x02, 0xdd, 0x35, 0x40, 0x8c, 0x3d, 0x1e, 0xa4, 0x17, 0x6d,
+
  0xe2, 0x28, 0x5b, 0xc6, 0x13, 0xe7, 0x77, 0x27, 0x11, 0x58, 0x1a, 0x41,
+
  0xf9, 0x48, 0xd8, 0xd2, 0x69, 0x43, 0xe7, 0x90, 0x23, 0xee, 0x14, 0x49,
+
  0x6a, 0xbc, 0x9c, 0x25, 0xe5, 0x8c, 0x84, 0xd2, 0x74, 0x39, 0x0b, 0xf9,
+
  0xaf, 0x51, 0x19, 0x91, 0x6a, 0x89, 0xac, 0xaa, 0x96, 0xe2, 0xdd, 0x37,
+
  0xc1, 0x59, 0xda, 0x1c, 0xca, 0x4e, 0x00, 0x62, 0x65, 0x1a, 0xa8, 0x66,
+
  0x58, 0xe2, 0xda, 0x25, 0x6a, 0x39, 0xa3, 0x54, 0xfc, 0x57, 0xc6, 0xcd,
+
  0xc3, 0x2e, 0x72, 0xe1, 0xa5, 0xe7, 0x38, 0x29, 0x92, 0xc9, 0x0b, 0xe4,
+
  0xc9, 0x65, 0xde, 0x27, 0x85, 0xbb, 0x35, 0x5c, 0xef, 0xe4, 0xf4, 0xec,
+
  0xc5, 0xc9, 0xeb, 0x61, 0xf4, 0x87, 0x5e, 0x47, 0x5c, 0xaf, 0xb9, 0x01,
+
  0x9f, 0xb5, 0x23, 0x5d, 0x6b, 0x2e, 0xbd, 0x3f, 0xf4, 0xa2, 0xf8, 0xa7,
+
  0x48, 0xdf, 0x60, 0x2d, 0xea, 0x6b, 0xe4, 0x3b, 0x37, 0xf0, 0x44, 0x1f,
+
  0x36, 0x08, 0xd0, 0xbd, 0x2e, 0x7a, 0x3a, 0x4f, 0x61, 0x9b, 0x26, 0x5d,
+
  0xd1, 0x1d, 0xc7, 0xe9, 0x38, 0x06, 0x73, 0x13, 0x58, 0x8f, 0xde, 0xc8,
+
  0xf7, 0x29, 0x59, 0xb6, 0x1a, 0x63, 0x85, 0xbc, 0x7b, 0xc6, 0x3f, 0xd9,
+
  0x8c, 0x03, 0x91, 0x1a, 0x6e, 0xdd, 0xa2, 0xad, 0xe1, 0xc3, 0xba, 0xb1,
+
  0xe8, 0xa4, 0x0d, 0x50, 0x16, 0xb9, 0xc1, 0xe6, 0x06, 0xf2, 0x55, 0xd1,
+
  0x26, 0x6b, 0xb3, 0xea, 0x18, 0xa8, 0x02, 0x50, 0x18, 0x3f, 0x1c, 0x9f,
+
  0x61, 0xca, 0x03, 0xe1, 0xc3, 0xdb, 0xf9, 0x51, 0xa6, 0x9a, 0x58, 0xea,
+
  0x89, 0x71, 0x26, 0x28, 0x24, 0x3c, 0xca, 0x1b, 0x74, 0x78, 0x25, 0x79,
+
  0x10, 0x32, 0xb5, 0x1a, 0x44, 0x47, 0xb0, 0x1a, 0x45, 0x6e, 0x34, 0x65,
+
  0x8d, 0x5e, 0x9a, 0x03, 0xa2, 0xad, 0xbe, 0x4f, 0xdf, 0x9e, 0x89, 0x6a,
+
  0x83, 0xa9, 0xee, 0x67, 0xc7, 0xed, 0xd8, 0x13, 0x02, 0xe1, 0x96, 0xe9,
+
  0x8c, 0xd2, 0xd1, 0xeb, 0x74, 0x7c, 0x91, 0x17, 0x18, 0x3c, 0x4f, 0x2b,
+
  0xb6, 0x35, 0x7f, 0x4c, 0x47, 0xcf, 0x0e, 0xff, 0xc2, 0xad, 0x56, 0xab,
+
  0xe8, 0xf4, 0xcd, 0xc9, 0xe9, 0xf7, 0x2f, 0x5e, 0x3f, 0xeb, 0x47, 0x47,
+
  0x27, 0xa7, 0x7f, 0xed, 0x47, 0xaf, 0x4e, 0xfe, 0x72, 0xdc, 0xd6, 0xdc,
+
  0xa9, 0x54, 0x2e, 0xe0, 0x75, 0x7a, 0x8d, 0xd1, 0x3a, 0xf2, 0xa9, 0x51,
+
  0x8c, 0x6c, 0x52, 0x44, 0x4e, 0x4c, 0xdd, 0x55, 0xf0, 0x0f, 0xdd, 0xa2,
+
  0x1b, 0x58, 0xbb, 0x7e, 0xf4, 0xfc, 0xf8, 0xf0, 0x59, 0x7b, 0xda, 0xa7,
+
  0x27, 0xc3, 0x33, 0x7a, 0x18, 0xbe, 0x9f, 0x79, 0x69, 0xcc, 0x5b, 0x11,
+
  0x4f, 0x27, 0xd9, 0x73, 0x9c, 0x43, 0xcf, 0xac, 0x09, 0xe8, 0x35, 0xe3,
+
  0xac, 0xfb, 0x8e, 0x62, 0x54, 0x6e, 0xad, 0xcc, 0xd3, 0xa8, 0x56, 0xe6,
+
  0x07, 0x50, 0x5e, 0x9e, 0xeb, 0x16, 0x92, 0x0e, 0xe0, 0x84, 0x1e, 0xa6,
+
  0xa0, 0x9f, 0x2e, 0x1c, 0x4c, 0x47, 0xae, 0x55, 0xbf, 0xd1, 0xaf, 0x88,
+
  0x18, 0x2f, 0xe7, 0x0d, 0x26, 0x92, 0xf8, 0x3f, 0x4a, 0x51, 0xdf, 0xae,
+
  0xc8, 0x0d, 0x44, 0x7e, 0x21, 0x01, 0x7a, 0x0a, 0xba, 0x84, 0xd8, 0x7e,
+
  0xe3, 0x5c, 0xa5, 0xf7, 0x29, 0x23, 0x64, 0x61, 0xc2, 0x06, 0x2e, 0x9f,
+
  0x2e, 0x51, 0x5f, 0x16, 0x03, 0x98, 0x00, 0x7d, 0xac, 0xd6, 0x8f, 0xd7,
+
  0x9f, 0x60, 0x0a, 0x64, 0x99, 0x72, 0xb7, 0x77, 0x4d, 0x7b, 0xd0, 0xdc,
+
  0xdc, 0xf8, 0x85, 0x46, 0x92, 0xba, 0x20, 0xd5, 0xce, 0xec, 0x81, 0x91,
+
  0xd0, 0x22, 0x75, 0x1f, 0x37, 0x50, 0x5c, 0x0d, 0x16, 0x71, 0x65, 0x60,
+
  0x5c, 0xf9, 0x44, 0x4d, 0x3d, 0x06, 0x4e, 0x05, 0xb5, 0xba, 0xc7, 0x7d,
+
  0xe9, 0xb7, 0x65, 0x60, 0xe2, 0xdc, 0x75, 0x21, 0xa3, 0xbc, 0x19, 0x91,
+
  0x05, 0xd3, 0xc7, 0x53, 0x79, 0xf1, 0x32, 0xe0, 0x24, 0xb9, 0x64, 0x33,
+
  0x62, 0x55, 0x42, 0xcc, 0x3a, 0x81, 0x0b, 0x6e, 0x63, 0x36, 0x46, 0x1d,
+
  0x09, 0x32, 0x05, 0x2f, 0xf5, 0x9d, 0x5e, 0x34, 0x19, 0x8f, 0x61, 0xf7,
+
  0x45, 0x62, 0x99, 0x53, 0xbe, 0xbf, 0xf3, 0xc1, 0xa6, 0xc8, 0xa2, 0x9d,
+
  0x57, 0x45, 0x31, 0x97, 0x19, 0x32, 0x58, 0x6c, 0x10, 0x8d, 0x21, 0xc8,
+
  0x18, 0xdd, 0x94, 0x4b, 0xd3, 0x06, 0xc3, 0xb0, 0xa8, 0x97, 0x2f, 0xe0,
+
  0x38, 0x04, 0x32, 0xcd, 0x26, 0x05, 0xce, 0x88, 0x0b, 0x11, 0xc9, 0xe2,
+
  0xa5, 0x0d, 0x80, 0xb1, 0xfc, 0x07, 0x9f, 0x9e, 0x9c, 0xee, 0x07, 0x9f,
+
  0x8c, 0x5f, 0xdc, 0xf4, 0x68, 0x6f, 0xcf, 0xde, 0x1c, 0x9f, 0xbd, 0xf1,
+
  0x9f, 0xf1, 0xe2, 0xd5, 0xe1, 0x69, 0xa3, 0xc9, 0x87, 0x7d, 0x0a, 0x7e,
+
  0x75, 0xc3, 0x53, 0x3c, 0x17, 0x97, 0xdb, 0xab, 0x7a, 0x27, 0x50, 0x30,
+
  0xb7, 0x39, 0x7c, 0xd5, 0xb1, 0x9a, 0xf8, 0xc5, 0x8a, 0xa7, 0x3d, 0x3f,
+
  0x7e, 0x79, 0xea, 0xbf, 0xd3, 0x5f, 0xde, 0x7c, 0xff, 0xd7, 0x66, 0x99,
+
  0xde, 0xfe, 0x83, 0xc0, 0x53, 0x51, 0x09, 0x68, 0x50, 0xf8, 0x6d, 0x22,
+
  0xdc, 0x1f, 0xd7, 0xe5, 0xaf, 0x2b, 0xc6, 0xfd, 0x13, 0x17, 0x38, 0x9d,
+
  0x1d, 0xaf, 0x11, 0xce, 0xfe, 0x29, 0x7a, 0xfd, 0x12, 0x76, 0x74, 0x2d,
+
  0x74, 0x97, 0xa6, 0x9a, 0xd1, 0xd4, 0x46, 0xab, 0x62, 0x06, 0x9a, 0xe4,
+
  0xd3, 0xbf, 0xfd, 0x91, 0x10, 0x7d, 0x09, 0x41, 0xee, 0x00, 0xa4, 0x56,
+
  0xf9, 0xb7, 0x3e, 0xfe, 0xfb, 0xcb, 0x60, 0x30, 0xf8, 0x26, 0xa8, 0xd7,
+
  0xa7, 0x0e, 0x71, 0xe0, 0x95, 0x18, 0xe8, 0x6b, 0x39, 0xb8, 0x09, 0xc9,
+
  0x90, 0xa0, 0x1b, 0x31, 0x8c, 0xb4, 0x48, 0xb2, 0x12, 0x81, 0x76, 0xc3,
+
  0xb1, 0xbf, 0xac, 0xb2, 0xe0, 0x9b, 0xc6, 0x20, 0x16, 0xa3, 0x8c, 0x39,
+
  0xcb, 0x66, 0xb5, 0x25, 0x98, 0xe3, 0x4e, 0x19, 0x5f, 0x32, 0xf1, 0xc0,
+
  0xad, 0x69, 0x26, 0xfc, 0x58, 0x36, 0x9d, 0xd8, 0x98, 0x31, 0x9a, 0x41,
+
  0xae, 0x92, 0x4e, 0xde, 0x7d, 0x62, 0xa6, 0x1f, 0x8a, 0x0d, 0xd0, 0xb6,
+
  0x62, 0x00, 0x9c, 0x6a, 0xa3, 0xc8, 0xf8, 0x20, 0xf1, 0x87, 0x64, 0xb8,
+
  0x9d, 0xd6, 0xe3, 0x6d, 0x7c, 0xc9, 0xaa, 0xa1, 0x95, 0x3b, 0xfa, 0xa4,
+
  0x17, 0x9f, 0x92, 0xf6, 0x74, 0x0e, 0xbe, 0x34, 0xd7, 0x8b, 0x3a, 0x48,
+
  0x61, 0x16, 0xe2, 0xda, 0xf1, 0xf8, 0x68, 0xe8, 0x21, 0x30, 0x9c, 0x59,
+
  0x6e, 0x03, 0x58, 0x67, 0x90, 0x7e, 0x5d, 0xda, 0xc4, 0xbb, 0x41, 0xcd,
+
  0x79, 0x51, 0x47, 0x82, 0x1c, 0x1a, 0xf0, 0x1e, 0x91, 0x28, 0xd1, 0x23,
+
  0x80, 0x75, 0x89, 0x78, 0x28, 0xb3, 0x69, 0x23, 0xa2, 0xa1, 0xa1, 0x4b,
+
  0x77, 0xcf, 0x3b, 0x80, 0xc1, 0x69, 0x0e, 0xa8, 0xc0, 0x58, 0xff, 0x30,
+
  0xbe, 0x68, 0x18, 0x92, 0xc5, 0xc1, 0x60, 0xdf, 0xf8, 0xc3, 0x06, 0x9a,
+
  0x27, 0x74, 0x7b, 0x10, 0xf8, 0x5d, 0xa9, 0x16, 0xfd, 0x63, 0x01, 0xb4,
+
  0x63, 0x62, 0xe0, 0x66, 0x55, 0x94, 0xf6, 0x0c, 0x22, 0x87, 0xa1, 0x1e,
+
  0x79, 0x85, 0x41, 0xf4, 0x63, 0x36, 0x9b, 0x8c, 0x13, 0xee, 0x98, 0xe1,
+
  0xeb, 0x02, 0x42, 0x25, 0x9c, 0xe9, 0x52, 0xd0, 0x43, 0xed, 0xc1, 0x91,
+
  0xca, 0x97, 0x0e, 0x9a, 0x5f, 0x01, 0xef, 0xc4, 0x15, 0x40, 0x5d, 0xa0,
+
  0xd8, 0x92, 0x44, 0x2c, 0x6b, 0x8c, 0xcc, 0x87, 0x2a, 0x40, 0x5b, 0x98,
+
  0x79, 0x3a, 0x94, 0xa6, 0xfd, 0xc4, 0x0f, 0xfc, 0xd4, 0xa5, 0x6c, 0x71,
+
  0xf9, 0x80, 0x82, 0x43, 0x8f, 0xfa, 0xfc, 0xd7, 0x23, 0x4d, 0x1e, 0xad,
+
  0x5d, 0x64, 0x1b, 0xb6, 0x2e, 0xd9, 0x16, 0x7b, 0x71, 0xaa, 0x65, 0x86,
+
  0x03, 0x7f, 0xa3, 0x18, 0xce, 0x46, 0x03, 0xf6, 0x42, 0x66, 0x8a, 0xf8,
+
  0xe3, 0x1f, 0x61, 0xae, 0x6e, 0xe5, 0xea, 0x70, 0x2f, 0x6a, 0x21, 0xf0,
+
  0x4c, 0x38, 0x01, 0x8c, 0xbc, 0x37, 0x72, 0x8c, 0xc9, 0x78, 0xdc, 0xdc,
+
  0x95, 0x0c, 0xdf, 0x2d, 0x0f, 0x27, 0x2c, 0xb0, 0xb2, 0xa4, 0xf7, 0xd1,
+
  0x93, 0x11, 0x35, 0x9e, 0xdd, 0xf8, 0xb3, 0x02, 0x66, 0x5a, 0x2e, 0x73,
+
  0xaa, 0x77, 0x34, 0x29, 0xdd, 0x26, 0x97, 0x55, 0xcc, 0x12, 0x72, 0xe5,
+
  0xf8, 0x31, 0x15, 0x92, 0xcc, 0x40, 0x1f, 0x2f, 0x72, 0xc6, 0x78, 0x45,
+
  0xd7, 0x4a, 0x25, 0x58, 0x3c, 0x8d, 0x74, 0x54, 0xda, 0x05, 0x9b, 0xc5,
+
  0x4e, 0xaf, 0x5c, 0xf8, 0xa9, 0xb6, 0x44, 0x31, 0xcc, 0x03, 0x98, 0x4e,
+
  0xc8, 0xc5, 0x6d, 0x18, 0xd2, 0x15, 0x1d, 0xfc, 0x42, 0xb2, 0x8e, 0xcd,
+
  0x2a, 0xa0, 0x6f, 0xc4, 0xcf, 0xaa, 0x59, 0x10, 0x7a, 0x9a, 0xc7, 0xf4,
+
  0x25, 0x66, 0x2f, 0xcd, 0x1d, 0xc4, 0xff, 0x82, 0xa3, 0xc1, 0xa6, 0x2a,
+
  0x39, 0xe1, 0x3b, 0x83, 0x7c, 0xfc, 0xdb, 0xa8, 0x4c, 0x08, 0x59, 0xfc,
+
  0x17, 0x0b, 0xce, 0xed, 0x57, 0x30, 0x80, 0x01, 0xd9, 0xe8, 0x1f, 0xb6,
+
  0xf2, 0x41, 0xc6, 0xab, 0x63, 0x9f, 0x96, 0x72, 0xa6, 0x36, 0xd3, 0x01,
+
  0x3e, 0x67, 0xc5, 0x83, 0xbe, 0xbc, 0xe1, 0x41, 0xbc, 0x84, 0xa6, 0x8d,
+
  0xf6, 0x95, 0x1e, 0x5b, 0x17, 0x5b, 0x1c, 0x5b, 0x23, 0x3d, 0xb8, 0x61,
+
  0x1c, 0x2a, 0xc1, 0x02, 0x6a, 0x75, 0xa0, 0xc9, 0x5b, 0x43, 0x3c, 0x7e,
+
  0x38, 0xd8, 0x59, 0x69, 0x63, 0xb8, 0x1e, 0x74, 0xc7, 0x4f, 0x8f, 0x71,
+
  0xc1, 0x89, 0x7c, 0x42, 0x5b, 0x2c, 0x85, 0xf5, 0x45, 0x17, 0x5f, 0xf1,
+
  0x9d, 0xf5, 0x86, 0xb5, 0x7c, 0xba, 0xe2, 0x6a, 0x7d, 0x82, 0xa3, 0x3e,
+
  0x1c, 0x3c, 0x78, 0xb0, 0x7f, 0xb0, 0xbb, 0x87, 0x5b, 0xbd, 0x03, 0xa6,
+
  0xef, 0x7a, 0x49, 0xa4, 0x8a, 0x17, 0x89, 0x6f, 0x4f, 0x19, 0xc0, 0x20,
+
  0x0e, 0xe3, 0xea, 0x72, 0xdc, 0xd4, 0x34, 0x30, 0x29, 0x18, 0xe8, 0x9c,
+
  0x9d, 0x6c, 0x6d, 0x37, 0xe7, 0x1b, 0x4a, 0x0f, 0x47, 0x8b, 0x19, 0x56,
+
  0x8e, 0xbd, 0x78, 0xed, 0x9c, 0x6f, 0xa9, 0x33, 0x06, 0x0d, 0x06, 0x99,
+
  0x94, 0x78, 0xff, 0x68, 0xd8, 0xc1, 0x8d, 0x1d, 0xd6, 0x28, 0x87, 0xa5,
+
  0x9a, 0xa5, 0x93, 0x73, 0x30, 0xd9, 0xe6, 0xf3, 0xb4, 0xec, 0xe1, 0xf1,
+
  0xd6, 0xe4, 0xf6, 0x41, 0xf4, 0x8c, 0x93, 0x25, 0x35, 0x08, 0xd3, 0xe6,
+
  0x04, 0x3c, 0xd0, 0xe8, 0xda, 0xb0, 0xa8, 0xcd, 0xf4, 0x9c, 0x3a, 0x47,
+
  0xc0, 0x7a, 0x96, 0xe3, 0xad, 0x3e, 0x03, 0x8f, 0x9b, 0x82, 0x68, 0x6b,
+
  0xbb, 0x60, 0x51, 0x75, 0x38, 0x87, 0x3f, 0xb5, 0xb8, 0xd1, 0xc1, 0x76,
+
  0xb4, 0x93, 0x25, 0xe6, 0xd3, 0x60, 0x52, 0x35, 0x57, 0x5d, 0xcb, 0x0c,
+
  0x03, 0x50, 0xef, 0xcc, 0xc2, 0x80, 0x1b, 0x50, 0xcc, 0x94, 0x9b, 0x00,
+
  0xa2, 0xf3, 0x12, 0x6b, 0x25, 0xc9, 0x8d, 0x49, 0x76, 0xe2, 0x06, 0xa9,
+
  0x14, 0x73, 0x7c, 0xe4, 0x28, 0x45, 0xf7, 0x19, 0x25, 0xc7, 0x81, 0xe9,
+
  0xe4, 0x29, 0x50, 0x33, 0xb1, 0x08, 0x31, 0x1d, 0x29, 0x83, 0xb9, 0xe2,
+
  0xf9, 0x1e, 0xcd, 0xb0, 0x97, 0x09, 0xe2, 0x61, 0x23, 0x40, 0x55, 0x54,
+
  0x8d, 0xcb, 0x6c, 0x01, 0xe3, 0x9e, 0xce, 0x52, 0xf4, 0x36, 0x63, 0xd0,
+
  0x8e, 0xd9, 0x9a, 0xcf, 0xa7, 0xd8, 0xf2, 0x23, 0xf4, 0xae, 0xee, 0xe4,
+
  0x9f, 0xe8, 0x7b, 0x8c, 0xb8, 0x4a, 0xcc, 0xb0, 0x98, 0x2f, 0x40, 0x91,
+
  0x92, 0x92, 0x4d, 0x0f, 0xbf, 0x92, 0xeb, 0x08, 0xd0, 0xcd, 0xea, 0x27,
+
  0x49, 0xcd, 0x92, 0xf7, 0xd7, 0x0e, 0x6f, 0x87, 0xa5, 0x1d, 0xcf, 0x30,
+
  0x22, 0xea, 0x54, 0x36, 0xe1, 0x10, 0x17, 0xec, 0x52, 0x44, 0x28, 0x60,
+
  0xdc, 0x35, 0x2d, 0xdd, 0x08, 0xb9, 0x5e, 0xc4, 0x8d, 0x2f, 0x48, 0xc8,
+
  0x76, 0x14, 0x4e, 0xda, 0xb2, 0x4b, 0xee, 0xad, 0xf8, 0xf7, 0x9e, 0xae,
+
  0x26, 0x47, 0xa9, 0xaf, 0x4e, 0x7f, 0x53, 0x59, 0x91, 0xd5, 0x26, 0x3e,
+
  0x20, 0x6e, 0x67, 0xf6, 0x85, 0x72, 0xa8, 0x19, 0x7f, 0x09, 0xbd, 0xac,
+
  0xba, 0xfe, 0x6d, 0xa2, 0xbb, 0x38, 0x4f, 0x89, 0xc7, 0x6a, 0x6e, 0x1e,
+
  0x9d, 0x48, 0x1d, 0x96, 0xc1, 0x8d, 0x9e, 0x17, 0x57, 0xc8, 0x4c, 0x42,
+
  0xe1, 0x73, 0xc5, 0x7d, 0x2f, 0x97, 0xa9, 0x40, 0xaa, 0x24, 0xee, 0x4b,
+
  0x52, 0xd2, 0xc3, 0x7f, 0x83, 0xe4, 0x59, 0x10, 0x42, 0xc8, 0x37, 0x12,
+
  0x11, 0x08, 0xf5, 0xd7, 0x46, 0x4f, 0x0f, 0xc3, 0x7c, 0x82, 0xa6, 0x01,
+
  0x0a, 0x16, 0xe5, 0x64, 0x82, 0x28, 0xa6, 0x82, 0xc9, 0xf3, 0xf3, 0x54,
+
  0x34, 0x3b, 0xc9, 0x51, 0xc6, 0x97, 0xa9, 0xb8, 0x03, 0x10, 0x9e, 0x00,
+
  0x30, 0xd4, 0xc3, 0x70, 0xb5, 0xd4, 0x61, 0xc2, 0xcc, 0x88, 0x0e, 0x60,
+
  0x31, 0x1f, 0x69, 0xf2, 0x62, 0xbb, 0x3b, 0x4f, 0x5f, 0x2a, 0x78, 0x7c,
+
  0x3d, 0x17, 0xcf, 0x29, 0x9f, 0xb4, 0xb4, 0x7d, 0xce, 0x02, 0xaa, 0xa9,
+
  0x9e, 0x79, 0x2b, 0xdf, 0xa9, 0xd7, 0x0e, 0x85, 0x0a, 0x88, 0x61, 0xa9,
+
  0x6b, 0xcf, 0xf1, 0x23, 0x48, 0x98, 0xcf, 0x3f, 0x5c, 0xf4, 0xa8, 0xca,
+
  0xdc, 0x44, 0xa3, 0x18, 0x74, 0xbf, 0x66, 0x41, 0x91, 0xc1, 0x91, 0x24,
+
  0x6a, 0x22, 0xfa, 0xf1, 0x94, 0x80, 0x19, 0x43, 0x03, 0x26, 0x16, 0x18,
+
  0x10, 0xde, 0x06, 0xc6, 0x7f, 0xb0, 0xf3, 0x00, 0x15, 0x26, 0xb8, 0x71,
+
  0x99, 0x4f, 0x0c, 0xb2, 0xb6, 0x54, 0x6b, 0x13, 0x39, 0xc3, 0xb8, 0xb3,
+
  0x6b, 0x1f, 0x7e, 0x11, 0xd7, 0x84, 0xfd, 0xa0, 0xb9, 0x12, 0x94, 0x06,
+
  0x80, 0x72, 0xe5, 0xcb, 0x14, 0x30, 0x13, 0xd6, 0x6b, 0x19, 0xb3, 0xef,
+
  0xdd, 0xb0, 0x0b, 0x56, 0x2a, 0x77, 0xc7, 0xa4, 0xb8, 0xc0, 0x72, 0x55,
+
  0xba, 0x5e, 0xbc, 0x3e, 0x4c, 0xd4, 0x9e, 0xbc, 0xcc, 0x28, 0xc3, 0x84,
+
  0x5d, 0x76, 0x2c, 0x44, 0xfa, 0x74, 0x48, 0xe9, 0x5e, 0xe3, 0x0e, 0x52,
+
  0xcf, 0xea, 0x1c, 0xc5, 0xef, 0x83, 0x0f, 0xd6, 0xc1, 0xe3, 0xb5, 0x80,
+
  0x9f, 0x38, 0x3c, 0x18, 0x16, 0xac, 0x95, 0x68, 0x51, 0xd8, 0x59, 0xab,
+
  0x8b, 0x4b, 0x66, 0xcc, 0xb7, 0x86, 0x92, 0x18, 0x9c, 0x37, 0x70, 0xa7,
+
  0x19, 0x6d, 0xe2, 0x3c, 0x70, 0x17, 0x1e, 0x7e, 0xf8, 0xb0, 0xc5, 0x8b,
+
  0xcb, 0x94, 0x2b, 0x9c, 0x24, 0x9e, 0xfa, 0x8a, 0x3b, 0x45, 0x92, 0x56,
+
  0x67, 0x70, 0x35, 0x25, 0xea, 0x7d, 0xc7, 0xd4, 0x9a, 0xa3, 0xaf, 0x1f,
+
  0xda, 0xc0, 0xc5, 0x7b, 0x18, 0x9a, 0xe7, 0x7a, 0xca, 0x05, 0x4b, 0x78,
+
  0x37, 0xa2, 0xf1, 0x78, 0xb7, 0x1d, 0x52, 0xc3, 0x07, 0xa0, 0x12, 0x02,
+
  0xfa, 0x1c, 0x12, 0x63, 0xdb, 0xe3, 0x63, 0xfd, 0xf0, 0x6a, 0x04, 0xb2,
+
  0xa1, 0x83, 0x71, 0x62, 0xfa, 0x18, 0xfb, 0x72, 0xa9, 0x89, 0x7f, 0x8c,
+
  0xc0, 0xda, 0x6f, 0x8e, 0xbf, 0x7f, 0x3b, 0x3c, 0x7e, 0x16, 0x91, 0xbe,
+
  0x1a, 0x2a, 0x9c, 0x65, 0x5a, 0x64, 0x26, 0x00, 0x83, 0x16, 0x8c, 0x6b,
+
  0x62, 0x66, 0xbb, 0x4a, 0x75, 0x09, 0x89, 0xef, 0x2e, 0x45, 0xc6, 0xdf,
+
  0x6f, 0xe7, 0x35, 0x57, 0xe7, 0x81, 0x62, 0xd6, 0x9e, 0x5f, 0x76, 0x79,
+
  0x73, 0x2a, 0x68, 0xeb, 0x21, 0x77, 0xda, 0xf7, 0xc6, 0x2c, 0x95, 0x16,
+
  0x1e, 0xdf, 0x65, 0xe3, 0x1b, 0x25, 0x65, 0x0e, 0x35, 0xae, 0x6a, 0x35,
+
  0xe8, 0xd4, 0x9f, 0x45, 0x4f, 0xa5, 0xb4, 0xb3, 0xed, 0xc4, 0x7a, 0x45,
+
  0xb9, 0x69, 0x5c, 0x2b, 0x0d, 0x7a, 0x61, 0xba, 0x50, 0x51, 0x9f, 0xcc,
+
  0x81, 0x65, 0x72, 0x2e, 0x1e, 0x1a, 0xad, 0x1a, 0xa1, 0xc7, 0x8c, 0x4f,
+
  0x9e, 0x10, 0xa3, 0xd7, 0x76, 0x15, 0x53, 0x5f, 0x24, 0x95, 0xc8, 0x6b,
+
  0x35, 0x8b, 0x2d, 0xb9, 0x30, 0xb5, 0x6c, 0x66, 0xb5, 0x09, 0x4e, 0x68,
+
  0x06, 0xbe, 0xb7, 0x4f, 0x6c, 0x07, 0x63, 0x83, 0x5e, 0xd4, 0xd2, 0xa4,
+
  0xe8, 0x36, 0x99, 0x9d, 0x17, 0x20, 0xd7, 0x2f, 0xe6, 0xa6, 0x6f, 0x02,
+
  0x37, 0x41, 0xab, 0xb6, 0xda, 0x04, 0x17, 0x32, 0x8c, 0xa9, 0x8c, 0x2e,
+
  0x15, 0x5c, 0xdd, 0xa9, 0xcb, 0xbf, 0x69, 0xbd, 0xd9, 0xd1, 0x35, 0x94,
+
  0xfe, 0x38, 0xb4, 0x16, 0xbc, 0x82, 0xbe, 0x25, 0xfb, 0x5b, 0x5a, 0x16,
+
  0xed, 0x2c, 0x19, 0x8d, 0x3e, 0xa8, 0xb0, 0xd4, 0xa9, 0x07, 0xd3, 0x43,
+
  0x04, 0xde, 0xc7, 0xd9, 0xa6, 0xcf, 0x07, 0xef, 0xe3, 0x4c, 0xe2, 0xe1,
+
  0xc7, 0x91, 0xaa, 0x4f, 0x82, 0xf3, 0xe4, 0x03, 0x27, 0xb9, 0x74, 0x51,
+
  0x21, 0x27, 0x21, 0xaa, 0x87, 0xa4, 0x64, 0xff, 0x13, 0x79, 0x7b, 0x6c,
+
  0xd1, 0x0a, 0x23, 0xc5, 0xd8, 0x6a, 0x7d, 0xd6, 0x85, 0x29, 0x62, 0xe9,
+
  0x57, 0xda, 0x90, 0xd3, 0xde, 0x84, 0x6c, 0x28, 0xf7, 0x2d, 0x41, 0xf6,
+
  0x83, 0xe1, 0xaf, 0x4d, 0x04, 0xc5, 0x93, 0xa9, 0x6d, 0xe1, 0xc7, 0xe4,
+
  0x1b, 0x91, 0xcc, 0x32, 0x7a, 0xbe, 0x97, 0x4c, 0x56, 0x89, 0x12, 0x07,
+
  0xd4, 0xaf, 0x71, 0x40, 0x4e, 0x74, 0xa4, 0x9a, 0x4f, 0xf2, 0xc9, 0x64,
+
  0x63, 0x55, 0x76, 0xa4, 0x7a, 0x99, 0xdf, 0x04, 0x6f, 0x0e, 0x55, 0x16,
+
  0xe8, 0x58, 0x82, 0x4c, 0x3b, 0xc7, 0x32, 0x72, 0xa7, 0x64, 0xdf, 0xec,
+
  0x25, 0x75, 0x71, 0x20, 0xac, 0xe4, 0x0b, 0xca, 0x8f, 0xf5, 0x33, 0x59,
+
  0x04, 0xf8, 0x85, 0x82, 0x74, 0xa8, 0xd0, 0x11, 0x14, 0x37, 0xbe, 0x12,
+
  0x45, 0xe9, 0x18, 0x77, 0x80, 0x70, 0xe8, 0x39, 0x33, 0x93, 0x8f, 0x10,
+
  0x8c, 0x93, 0x15, 0x13, 0xac, 0x70, 0x2f, 0x3c, 0x28, 0xf9, 0x79, 0xc6,
+
  0x20, 0x22, 0xd2, 0xf2, 0x51, 0x66, 0xb4, 0x51, 0x59, 0x28, 0x88, 0x0c,
+
  0xb3, 0xfe, 0x28, 0x88, 0x35, 0x47, 0x67, 0x9a, 0x6e, 0x2f, 0x1d, 0x9b,
+
  0x15, 0xe9, 0xa8, 0x20, 0x73, 0xe8, 0xc8, 0xd4, 0xac, 0xed, 0xaa, 0x5f,
+
  0x47, 0x0e, 0x6f, 0x57, 0x96, 0x42, 0x83, 0x80, 0x3e, 0x73, 0x96, 0x42,
+
  0x63, 0x2e, 0xfb, 0x3b, 0xe6, 0x9c, 0xec, 0xee, 0xdc, 0xcb, 0x41, 0x89,
+
  0x9e, 0xe6, 0xcb, 0xf9, 0x37, 0x01, 0x26, 0x91, 0x04, 0xa4, 0x2d, 0x9d,
+
  0x11, 0x41, 0x0d, 0xb2, 0xd1, 0x40, 0x26, 0x7d, 0xf4, 0x4f, 0x33, 0x5e,
+
  0x78, 0x27, 0x87, 0xb6, 0x85, 0x4d, 0x72, 0xf0, 0x2e, 0x9a, 0x68, 0x05,
+
  0x24, 0x49, 0x15, 0x0a, 0xfd, 0x9c, 0x6d, 0xf1, 0x68, 0xb9, 0x18, 0x78,
+
  0xef, 0x24, 0x8d, 0xc4, 0x18, 0x55, 0x80, 0xef, 0x87, 0xc7, 0xef, 0x48,
+
  0x65, 0xb1, 0x84, 0x28, 0x51, 0x1c, 0xcb, 0x3e, 0x6b, 0x2e, 0x02, 0x7b,
+
  0x23, 0xc2, 0xf0, 0x0a, 0xc8, 0xc8, 0x5b, 0xe2, 0x82, 0x9d, 0xf5, 0xdc,
+
  0x3e, 0xf5, 0x40, 0x60, 0x21, 0x80, 0x7a, 0xfa, 0xdc, 0x67, 0x85, 0x80,
+
  0x69, 0x40, 0xb9, 0xf4, 0x7d, 0x8d, 0x8e, 0x2d, 0x52, 0xd8, 0xce, 0x63,
+
  0x0f, 0x76, 0x9e, 0xf4, 0xa3, 0x07, 0x7b, 0x5f, 0xf6, 0x11, 0xfb, 0x0a,
+
  0xff, 0xd9, 0xc3, 0x7f, 0xf6, 0xf1, 0x92, 0x87, 0x60, 0x32, 0xac, 0x50,
+
  0x95, 0x3b, 0xf0, 0x01, 0x58, 0x82, 0xa2, 0x10, 0x19, 0x15, 0x4b, 0x47,
+
  0x6b, 0x4e, 0x02, 0x0b, 0xce, 0x9c, 0x8c, 0x20, 0x3e, 0x8a, 0xdc, 0x2f,
+
  0x3a, 0x24, 0x3c, 0x04, 0x31, 0x55, 0x6c, 0xed, 0x06, 0xfc, 0xac, 0x2f,
+
  0x80, 0xa8, 0x70, 0xb1, 0x75, 0x25, 0x75, 0x40, 0x58, 0xe0, 0x25, 0x67,
+
  0x3f, 0xfb, 0x38, 0xf7, 0x49, 0x26, 0xfb, 0xc3, 0x30, 0x1a, 0x88, 0xf3,
+
  0x90, 0x29, 0x2b, 0xab, 0x90, 0x70, 0xd9, 0xb1, 0x5c, 0x49, 0xb8, 0x9a,
+
  0x9e, 0x69, 0x9a, 0x44, 0x06, 0xf6, 0x67, 0x46, 0xbe, 0x1d, 0x6d, 0x57,
+
  0x44, 0xd0, 0x52, 0x4e, 0xc6, 0x3e, 0x9f, 0x64, 0x8e, 0x64, 0x48, 0xaa,
+
  0x55, 0x43, 0xb6, 0x84, 0xf2, 0x01, 0x4c, 0x71, 0x88, 0x30, 0xaa, 0xf4,
+
  0x03, 0xac, 0x3d, 0xb7, 0x66, 0x75, 0x44, 0xbf, 0x11, 0xfa, 0x03, 0x27,
+
  0x5f, 0x36, 0xe0, 0x33, 0x6c, 0x1c, 0x51, 0xd8, 0x06, 0xe6, 0x67, 0xc4,
+
  0xda, 0x8b, 0x5a, 0x84, 0xa9, 0x41, 0x96, 0x60, 0x67, 0x6a, 0x98, 0xfd,
+
  0x70, 0xa7, 0x45, 0xda, 0xd7, 0xc7, 0x83, 0x47, 0x8f, 0x4c, 0x13, 0x11,
+
  0x86, 0x00, 0x43, 0x88, 0x97, 0x6b, 0x27, 0x99, 0x87, 0x1d, 0x77, 0xf1,
+
  0x21, 0x7a, 0xf2, 0x0f, 0x42, 0x99, 0x14, 0x6a, 0x33, 0x49, 0xf5, 0x36,
+
  0x48, 0x09, 0xea, 0x0b, 0x47, 0xe9, 0x67, 0x29, 0x75, 0x2f, 0x80, 0xc9,
+
  0xbe, 0xcf, 0x8b, 0x2b, 0x4d, 0xb6, 0x94, 0x7c, 0xb2, 0x0e, 0xd4, 0x9a,
+
  0xb0, 0x9a, 0xfc, 0xa2, 0xa1, 0xcf, 0xac, 0x8b, 0xd8, 0xb0, 0x16, 0x60,
+
  0xc3, 0x6a, 0x7b, 0xe7, 0x4e, 0x8a, 0x83, 0x15, 0x24, 0x0e, 0x63, 0xac,
+
  0x92, 0x6a, 0x16, 0x63, 0x2b, 0xe4, 0xdf, 0xb2, 0x49, 0xf4, 0x34, 0xa3,
+
  0x9e, 0xbd, 0xf5, 0x75, 0xb8, 0xb7, 0x17, 0x1e, 0x3f, 0xb8, 0x12, 0xe8,
+
  0xe4, 0x37, 0x76, 0x85, 0xe8, 0xe5, 0xd1, 0xa6, 0x8c, 0xb0, 0xd5, 0xd7,
+
  0xac, 0xcf, 0xe1, 0xe1, 0xf0, 0x65, 0x74, 0xfa, 0xf2, 0xf0, 0xc5, 0x6b,
+
  0xb8, 0x27, 0xf6, 0xe3, 0x89, 0xa6, 0xf1, 0x72, 0x9f, 0xdc, 0xcc, 0x2d,
+
  0xbb, 0xa9, 0xd5, 0x9b, 0xd9, 0x3c, 0x87, 0x1f, 0xe4, 0x37, 0x3d, 0x9d,
+
  0x90, 0xa2, 0xd1, 0x00, 0x12, 0x8f, 0x97, 0x5a, 0xfe, 0x1c, 0xd4, 0x0b,
+
  0x89, 0xa8, 0xac, 0xe5, 0xd4, 0xe8, 0x48, 0xe9, 0x82, 0x9b, 0xf1, 0xd6,
+
  0x01, 0x49, 0xa1, 0x13, 0x87, 0xa7, 0xe6, 0xbf, 0x0d, 0xae, 0x9d, 0x29,
+
  0x82, 0xc4, 0x19, 0xc2, 0x8c, 0xd8, 0x67, 0x00, 0x74, 0xe8, 0x0c, 0x4b,
+
  0x38, 0x22, 0x06, 0xfc, 0x8c, 0x4c, 0xfe, 0xae, 0xb2, 0x68, 0x60, 0x76,
+
  0xb8, 0xaf, 0x88, 0x18, 0x26, 0xcb, 0xa4, 0x0a, 0x88, 0x03, 0x85, 0x29,
+
  0xf8, 0xf6, 0x1a, 0x50, 0xc3, 0x97, 0xdd, 0xa8, 0xbc, 0x90, 0xc7, 0xa8,
+
  0xf8, 0xd0, 0xb7, 0x7d, 0xa6, 0x08, 0x2c, 0xdb, 0x14, 0x7a, 0x9d, 0x03,
+
  0xf7, 0xa4, 0x3e, 0xb5, 0x3c, 0x12, 0x0c, 0xda, 0x37, 0xc8, 0x8c, 0xd5,
+
  0x45, 0xe2, 0xa3, 0x74, 0xce, 0xc1, 0xe8, 0x80, 0x01, 0xdd, 0x7c, 0x9b,
+
  0x0e, 0xbd, 0xbb, 0x41, 0x59, 0x9f, 0x4b, 0xef, 0x6e, 0x4c, 0x82, 0x26,
+
  0x32, 0x4f, 0xd6, 0xc8, 0x68, 0xc0, 0x24, 0xb8, 0x3c, 0xd6, 0x64, 0x30,
+
  0xd7, 0x18, 0x44, 0x8e, 0xe5, 0x9d, 0xa3, 0xac, 0xad, 0xda, 0x1e, 0xe7,
+
  0x6c, 0x00, 0x0b, 0x2a, 0x82, 0xc5, 0x0d, 0xcc, 0xf9, 0x80, 0x34, 0xe9,
+
  0x7c, 0xa5, 0x59, 0x2e, 0x0f, 0x58, 0x0b, 0xfd, 0xa3, 0x4d, 0x0a, 0xbe,
+
  0x1d, 0x2e, 0xa3, 0xde, 0x69, 0x59, 0x61, 0x32, 0xeb, 0xad, 0xa6, 0xbb,
+
  0x19, 0x8d, 0xc5, 0xdc, 0x6f, 0x79, 0x5a, 0xf0, 0x08, 0x80, 0xc2, 0xcf,
+
  0x49, 0xf7, 0x4f, 0xf1, 0xdf, 0x6f, 0x56, 0xc4, 0xc8, 0x9a, 0x1d, 0x35,
+
  0x25, 0x4d, 0x4b, 0x4f, 0x30, 0xda, 0x0d, 0x5c, 0xa4, 0x8c, 0x00, 0xa4,
+
  0xa7, 0xaf, 0x8f, 0x7f, 0x38, 0xe9, 0x4e, 0x9f, 0xa1, 0x87, 0xe7, 0xa9,
+
  0x69, 0x15, 0xdf, 0x9e, 0x0a, 0xb7, 0x6b, 0x26, 0xf8, 0x6d, 0x0e, 0xa2,
+
  0x46, 0xa1, 0x40, 0x09, 0x5d, 0xb3, 0x2d, 0x10, 0x03, 0xc1, 0x6a, 0x1c,
+
  0x39, 0x20, 0xee, 0xd0, 0x9f, 0xed, 0x80, 0xb8, 0x93, 0x70, 0x67, 0xbe,
+
  0xa6, 0x84, 0xb1, 0xab, 0xe6, 0x76, 0x92, 0x74, 0x47, 0x6f, 0xec, 0xf8,
+
  0x83, 0x66, 0xba, 0xfa, 0x90, 0xba, 0x02, 0x5e, 0x14, 0x57, 0xdd, 0x95,
+
  0x13, 0x0e, 0xd8, 0x4a, 0x45, 0x57, 0x63, 0xb1, 0x4f, 0x2d, 0x66, 0x99,
+
  0x51, 0x85, 0x71, 0x0c, 0x5b, 0x57, 0x01, 0xcb, 0x57, 0x25, 0xe7, 0x81,
+
  0xc6, 0xb2, 0x19, 0x77, 0xde, 0xa9, 0x3e, 0x2f, 0xfe, 0x93, 0x73, 0xbc,
+
  0x5b, 0x0b, 0xd0, 0x71, 0xca, 0xef, 0x5c, 0x27, 0x6b, 0x47, 0x5e, 0x9b,
+
  0x3e, 0xec, 0x9c, 0x74, 0xcd, 0xd7, 0xa5, 0x0c, 0x6a, 0xaf, 0x77, 0x4e,
+
  0x1d, 0xff, 0xe6, 0x69, 0xdd, 0xc0, 0x1d, 0x71, 0x76, 0xd2, 0x53, 0x0f,
+
  0x67, 0x0a, 0xb1, 0x14, 0xfd, 0x7d, 0x99, 0x11, 0x08, 0x19, 0x58, 0x07,
+
  0x1a, 0x9f, 0xa4, 0x7d, 0xd6, 0x61, 0x23, 0x1a, 0x16, 0x2f, 0x35, 0xdb,
+
  0xee, 0xa9, 0x87, 0x40, 0x06, 0xc0, 0xc0, 0x5f, 0x11, 0xa5, 0x1c, 0xe1,
+
  0xab, 0xcd, 0x97, 0x08, 0xd9, 0xf7, 0xa2, 0x56, 0x08, 0x43, 0x02, 0x94,
+
  0x90, 0xaa, 0x5b, 0xf2, 0x96, 0x51, 0x70, 0x8c, 0x34, 0xe8, 0xa4, 0x7a,
+
  0xef, 0x3b, 0x05, 0xfa, 0xd1, 0xa2, 0xa8, 0x59, 0x8d, 0xc6, 0x06, 0x77,
+
  0x97, 0xa9, 0x51, 0x5e, 0x60, 0x2e, 0xa0, 0xf4, 0x27, 0xb3, 0xed, 0xaa,
+
  0x9e, 0xa0, 0xb1, 0xe2, 0xc0, 0x53, 0x68, 0x4c, 0xc9, 0x63, 0xcc, 0xa1,
+
  0x7e, 0xc4, 0x7c, 0x2e, 0x9a, 0x7b, 0xc0, 0x15, 0x41, 0x5d, 0x75, 0x91,
+
  0x4e, 0x29, 0xb8, 0xdf, 0x77, 0xda, 0x5d, 0x2a, 0x54, 0x4d, 0xf8, 0x95,
+
  0x69, 0x21, 0x1b, 0xa7, 0x65, 0x55, 0x1f, 0x46, 0x77, 0xc3, 0x6e, 0x2d,
+
  0x89, 0xbc, 0x50, 0x6d, 0x17, 0x91, 0xd2, 0xb0, 0x6b, 0x12, 0xe8, 0x9a,
+
  0x6e, 0xfe, 0x4b, 0x9c, 0x3f, 0x70, 0xb7, 0x51, 0x51, 0x11, 0x42, 0x11,
+
  0x6c, 0x11, 0xbc, 0xbc, 0xf0, 0xac, 0x55, 0x94, 0xca, 0x3d, 0x4b, 0x1f,
+
  0xac, 0xd9, 0x01, 0x77, 0x78, 0x72, 0xf4, 0xa7, 0xe1, 0x03, 0xa7, 0xff,
+
  0xed, 0xaa, 0x66, 0xe8, 0x7e, 0x0b, 0xab, 0x1b, 0x9a, 0xdf, 0xc2, 0x03,
+
  0x8d, 0x13, 0x95, 0x78, 0x37, 0xf5, 0xe0, 0xbc, 0x5e, 0xa4, 0x51, 0x67,
+
  0x9b, 0xd3, 0x50, 0x7a, 0x90, 0x05, 0x79, 0xb1, 0x3d, 0x16, 0x6d, 0xe2,
+
  0x9d, 0x51, 0xca, 0x43, 0x9d, 0xcc, 0x83, 0xfd, 0x43, 0x05, 0x33, 0x45,
+
  0x5a, 0xeb, 0x62, 0x0e, 0xc9, 0x32, 0xc7, 0xde, 0xcf, 0x93, 0x02, 0xd1,
+
  0x33, 0x75, 0xa6, 0x7d, 0x41, 0x33, 0xa5, 0xda, 0x36, 0x9e, 0x87, 0x9f,
+
  0x78, 0x88, 0x9f, 0xf7, 0xa3, 0x74, 0x70, 0x3e, 0xe0, 0xdb, 0xaa, 0x07,
+
  0xb0, 0xd1, 0xe6, 0x8e, 0x6d, 0xac, 0x30, 0xda, 0xae, 0x8b, 0x6d, 0x1e,
+
  0x71, 0x80, 0x3f, 0x6e, 0xdb, 0x0e, 0x1e, 0xf3, 0x3f, 0x0c, 0x78, 0x96,
+
  0xb2, 0x69, 0xb7, 0x73, 0x2c, 0x3b, 0x2c, 0xaf, 0x03, 0x01, 0x67, 0xe0,
+
  0x1c, 0x4b, 0xe9, 0x6a, 0x39, 0x9e, 0x81, 0x15, 0x1e, 0xc8, 0xae, 0x69,
+
  0x89, 0x91, 0x6a, 0x89, 0xee, 0xa2, 0xd9, 0x12, 0x9f, 0x65, 0x82, 0xc5,
+
  0xdc, 0x00, 0xde, 0x00, 0xcc, 0x08, 0x7d, 0xf1, 0xb2, 0x05, 0x63, 0x37,
+
  0x76, 0x76, 0x62, 0xfb, 0x27, 0x76, 0x4d, 0xda, 0x9d, 0xb6, 0x3b, 0xcc,
+
  0x6d, 0x0e, 0x62, 0xf4, 0x9d, 0xae, 0xbb, 0x8d, 0xf4, 0x9f, 0xba, 0x70,
+
  0x26, 0x44, 0xb4, 0xab, 0x6d, 0x69, 0xeb, 0x50, 0x82, 0x29, 0xd5, 0x88,
+
  0xb2, 0xc5, 0xef, 0x4e, 0x4e, 0x03, 0x51, 0xda, 0x7e, 0x8e, 0x20, 0x99,
+
  0xf1, 0x9f, 0xa1, 0x39, 0x08, 0xb9, 0x57, 0x69, 0x80, 0xe1, 0x51, 0xae,
+
  0x29, 0xe4, 0x02, 0x44, 0xf2, 0xe1, 0x48, 0xc2, 0x4f, 0xa5, 0x9c, 0xb5,
+
  0x31, 0x25, 0xf5, 0xe0, 0x04, 0xd0, 0xf9, 0xf8, 0xa6, 0x4d, 0xed, 0x73,
+
  0x4b, 0xb7, 0x6d, 0x35, 0x32, 0xf2, 0x81, 0xdd, 0xb9, 0x33, 0x0a, 0x1a,
+
  0xfa, 0xb2, 0x23, 0x9f, 0xad, 0xd5, 0xa6, 0x3c, 0x1f, 0x29, 0x1d, 0x4f,
+
  0xe8, 0xc1, 0x83, 0x9d, 0x2f, 0x1f, 0xdd, 0xa5, 0xb9, 0xf7, 0x83, 0xc4,
+
  0xeb, 0xb9, 0xcc, 0x7f, 0xc4, 0x3a, 0xb4, 0xcf, 0xe7, 0x92, 0x3b, 0x31,
+
  0xba, 0xe4, 0x76, 0x9c, 0xae, 0x03, 0x16, 0x9c, 0xa0, 0x82, 0xb8, 0xae,
+
  0x3d, 0xc4, 0xec, 0xe8, 0x4c, 0x81, 0x28, 0x76, 0x9b, 0xd2, 0x77, 0x27,
+
  0xbc, 0xd9, 0xb4, 0xd1, 0xa0, 0x06, 0xfe, 0xc9, 0xf9, 0x54, 0xf2, 0xbf,
+
  0x9c, 0x51, 0x25, 0x77, 0x61, 0x54, 0xc9, 0x67, 0xe2, 0x54, 0xa6, 0x98,
+
  0xfd, 0xb6, 0x7c, 0x4a, 0xe9, 0xf8, 0x7f, 0x04, 0xa7, 0x72, 0x0e, 0xed,
+
  0xfa, 0x5e, 0xc9, 0x7b, 0xe4, 0x54, 0xc9, 0x3d, 0xb0, 0xaa, 0xb5, 0x39,
+
  0xd5, 0xc3, 0x78, 0x94, 0x54, 0x5e, 0x3b, 0x69, 0xbf, 0xa4, 0x19, 0xdd,
+
  0x5e, 0x38, 0xc0, 0x36, 0xea, 0x38, 0x54, 0xa1, 0xd7, 0xf2, 0x31, 0x4a,
+
  0x71, 0x29, 0x67, 0x98, 0x86, 0x6a, 0x47, 0x0a, 0xa5, 0xb4, 0x87, 0x86,
+
  0x3a, 0xb4, 0x3d, 0xdd, 0xca, 0x81, 0xfd, 0x38, 0xb9, 0x81, 0x35, 0x1e,
+
  0xd9, 0x1e, 0xb1, 0x03, 0x61, 0xab, 0xe6, 0xb5, 0xce, 0x41, 0x19, 0x5f,
+
  0x64, 0x04, 0x07, 0x51, 0x60, 0xd3, 0xab, 0x1f, 0x86, 0xc3, 0xf8, 0xf0,
+
  0xf4, 0xc5, 0x0d, 0xde, 0x54, 0xbc, 0xde, 0x99, 0x64, 0xb6, 0x5a, 0x9b,
+
  0x6f, 0x2c, 0xe1, 0xad, 0xf2, 0x7a, 0xee, 0x40, 0x17, 0x3a, 0xbc, 0xd9,
+
  0xd8, 0x8f, 0xa6, 0x92, 0x87, 0xab, 0x0a, 0x8f, 0x9b, 0xeb, 0x07, 0x86,
+
  0x77, 0x9b, 0x36, 0x0e, 0xab, 0x06, 0x0c, 0x92, 0xae, 0xab, 0x3a, 0x30,
+
  0xc8, 0xa3, 0x44, 0x4c, 0x8a, 0xbb, 0x06, 0x71, 0x87, 0x46, 0xca, 0xcc,
+
  0xa4, 0x2b, 0x3c, 0x6b, 0x06, 0x41, 0xad, 0x23, 0x6a, 0x45, 0x1b, 0xed,
+
  0x7e, 0xf9, 0x68, 0x17, 0x98, 0xcd, 0x35, 0xa7, 0xb0, 0xca, 0xfd, 0x0f,
+
  0x06, 0xfb, 0xdb, 0x0f, 0x06, 0x0f, 0x50, 0xba, 0xd9, 0x9a, 0x1b, 0x19,
+
  0x3f, 0x9c, 0x0d, 0x4a, 0xca, 0xd5, 0xeb, 0xe3, 0xa3, 0x88, 0x61, 0x74,
+
  0x52, 0x6a, 0xfb, 0xd4, 0x74, 0x07, 0x4b, 0xf1, 0x3a, 0x8a, 0x54, 0xa1,
+
  0x43, 0xe1, 0xe2, 0x5e, 0xc8, 0xc6, 0x5b, 0x8e, 0x48, 0x1d, 0x66, 0xe4,
+
  0x0d, 0xce, 0xcd, 0x4c, 0x50, 0x4a, 0xb0, 0xef, 0x4c, 0x56, 0x06, 0xbe,
+
  0xf1, 0x61, 0x8f, 0x9d, 0x35, 0x71, 0x56, 0xec, 0x36, 0x44, 0xe6, 0xcc,
+
  0xe0, 0x13, 0x24, 0x14, 0x79, 0x0f, 0xb9, 0x23, 0xad, 0x3a, 0xb3, 0xbc,
+
  0x4f, 0x82, 0xed, 0xa4, 0x4f, 0xf5, 0x51, 0x76, 0x78, 0x39, 0x6d, 0xa6,
+
  0x8b, 0xe7, 0xcc, 0x14, 0xa1, 0xaa, 0xf1, 0x02, 0x8c, 0x57, 0x8f, 0xe7,
+
  0xc6, 0xef, 0x38, 0xfd, 0xfb, 0x24, 0x1f, 0xac, 0xeb, 0x34, 0xcd, 0xea,
+
  0x1b, 0x7c, 0xa3, 0xb2, 0x20, 0xcc, 0x00, 0xc5, 0x27, 0xda, 0xf5, 0x46,
+
  0xec, 0x4d, 0xf4, 0xfa, 0x82, 0xe3, 0x01, 0x40, 0x86, 0xcc, 0xbe, 0x46,
+
  0x67, 0x20, 0x33, 0xfa, 0xaa, 0xc1, 0x03, 0xb1, 0x12, 0xfb, 0xac, 0xed,
+
  0x32, 0x4d, 0x66, 0x72, 0xa3, 0xf8, 0x67, 0x49, 0x75, 0xf3, 0xbe, 0xc4,
+
  0xe5, 0xa3, 0x22, 0x1b, 0x1f, 0x72, 0x42, 0xb2, 0x61, 0x9c, 0x39, 0x18,
+
  0xc7, 0xdf, 0x3c, 0xa9, 0x39, 0x82, 0x0b, 0xdf, 0x82, 0x8e, 0x92, 0x2d,
+
  0x40, 0xb8, 0x76, 0xb9, 0x77, 0xbb, 0x16, 0x65, 0x85, 0x80, 0xb6, 0xe9,
+
  0x15, 0xde, 0x4b, 0xd6, 0xf7, 0x90, 0x5d, 0x11, 0x9e, 0x0f, 0xfb, 0xb3,
+
  0xff, 0x15, 0x94, 0x1e, 0x94, 0xd0, 0xe2, 0x94, 0xd0, 0xd6, 0x26, 0x56,
+
  0xc6, 0x75, 0x8a, 0x66, 0x15, 0xc5, 0xed, 0x79, 0xf8, 0x82, 0xb9, 0x63,
+
  0x30, 0x6c, 0x5e, 0x28, 0xf2, 0xd7, 0x11, 0xbf, 0xed, 0x92, 0xe1, 0x6c,
+
  0x1a, 0x99, 0xde, 0x10, 0x18, 0x8c, 0xb6, 0x99, 0x76, 0x3a, 0xac, 0xc0,
+
  0x96, 0x22, 0xa6, 0x43, 0x43, 0x6e, 0x87, 0xd4, 0x11, 0x23, 0xc4, 0x6f,
+
  0x54, 0x16, 0xee, 0x24, 0xbe, 0x45, 0x55, 0xb8, 0x91, 0xab, 0xae, 0xeb,
+
  0x34, 0x76, 0x47, 0xff, 0x28, 0x72, 0xfb, 0x57, 0xcb, 0x7e, 0x7d, 0xca,
+
  0x8d, 0x46, 0xac, 0xf8, 0x31, 0x6c, 0xa1, 0xaf, 0x4b, 0x47, 0xd1, 0x26,
+
  0xd5, 0x3d, 0x19, 0xa4, 0x75, 0xfc, 0x48, 0xdd, 0x67, 0xbe, 0x3f, 0xcc,
+
  0xd8, 0x9a, 0x5b, 0x37, 0x3a, 0xfa, 0x8c, 0x63, 0xcf, 0xb5, 0x76, 0x3d,
+
  0xb5, 0xc2, 0xb1, 0x7d, 0x03, 0xd6, 0xab, 0x31, 0x7f, 0x64, 0x62, 0x9c,
+
  0x3f, 0x1e, 0xb1, 0x09, 0x2b, 0x16, 0xac, 0x1a, 0xb0, 0x78, 0xb4, 0xac,
+
  0xf9, 0x7a, 0x0b, 0xeb, 0xf5, 0xe1, 0xc5, 0x9d, 0xac, 0x57, 0xc5, 0xc5,
+
  0xb8, 0xbd, 0xed, 0x4a, 0x89, 0xcf, 0x1f, 0x69, 0xbd, 0xde, 0xc5, 0x7c,
+
  0x65, 0x42, 0x8c, 0x43, 0x78, 0xce, 0xbc, 0x9c, 0xab, 0x0d, 0x59, 0x5a,
+
  0x9f, 0xff, 0xcf, 0x90, 0xfd, 0x54, 0x86, 0xac, 0x73, 0x80, 0x9b, 0x0d,
+
  0xc3, 0x56, 0xd9, 0xb4, 0xf7, 0x9e, 0x8e, 0xd8, 0x9e, 0x0a, 0x4f, 0x5b,
+
  0x58, 0xd5, 0xc1, 0x63, 0x6c, 0x84, 0x73, 0x17, 0xfe, 0xe5, 0xda, 0xb5,
+
  0x0f, 0x12, 0x9f, 0x79, 0xdd, 0xc5, 0xf1, 0xa6, 0x0c, 0x2b, 0x16, 0x1c,
+
  0x9f, 0x96, 0x07, 0x8c, 0x09, 0x3b, 0x0c, 0xfb, 0x37, 0x23, 0xe2, 0xd0,
+
  0x84, 0x18, 0xae, 0x26, 0x5f, 0xc5, 0xb2, 0x1a, 0xb1, 0x88, 0x76, 0x48,
+
  0x60, 0x15, 0xc3, 0xfa, 0xa4, 0xee, 0xb6, 0x87, 0xff, 0xbb, 0xbd, 0x6d,
+
  0x0f, 0xef, 0x12, 0x16, 0x78, 0xf8, 0xff, 0x85, 0x05, 0xee, 0x9b, 0x47,
+
  0xb9, 0xfb, 0xb7, 0x89, 0xd5, 0xdc, 0x58, 0xa4, 0x0a, 0x3f, 0xf5, 0x38,
+
  0x6f, 0x59, 0x63, 0x01, 0x11, 0x86, 0xf9, 0x55, 0x5f, 0x9c, 0xfe, 0xe5,
+
  0x51, 0x9f, 0x52, 0x68, 0x87, 0x7e, 0x97, 0xd1, 0x97, 0xcf, 0x0e, 0x4f,
+
  0x57, 0xb2, 0xc2, 0xe8, 0xb3, 0xfa, 0xf4, 0x1e, 0xde, 0x17, 0xd7, 0xb3,
+
  0x6c, 0xb4, 0x8b, 0xfd, 0xfd, 0x95, 0x5c, 0x7f, 0x8b, 0x34, 0x9d, 0x70,
+
  0xa7, 0xa7, 0xe8, 0x29, 0xfd, 0x11, 0x48, 0xd7, 0x4e, 0x9a, 0xad, 0xfa,
+
  0x30, 0xd5, 0x54, 0x52, 0xf1, 0x9d, 0xca, 0x01, 0xba, 0x19, 0xf4, 0xf8,
+
  0x5c, 0x9a, 0xe9, 0x4a, 0xcf, 0xb2, 0xd8, 0x2b, 0x59, 0x99, 0x6c, 0x31,
+
  0x0e, 0x33, 0x3d, 0x99, 0x88, 0x56, 0xbb, 0xb4, 0xc1, 0x1c, 0xce, 0xd3,
+
  0x9a, 0x52, 0x8e, 0xa9, 0xe5, 0x9a, 0x7b, 0x0d, 0xc9, 0x25, 0x5f, 0xea,
+
  0xf0, 0x89, 0xbc, 0xb6, 0xaf, 0xc2, 0xe9, 0xb0, 0x39, 0x25, 0xc0, 0xed,
+
  0xef, 0x70, 0x27, 0x3b, 0xda, 0xae, 0xf0, 0xa6, 0xff, 0x95, 0xe3, 0xfd,
+
  0xce, 0x2a, 0xdc, 0xba, 0x63, 0xe6, 0xfd, 0xcb, 0x3f, 0x67, 0x16, 0xfb,
+
  0x3b, 0x3b, 0xcd, 0x57, 0x5a, 0x37, 0x23, 0xbf, 0xb5, 0x24, 0xfd, 0x40,
+
  0x3f, 0xaf, 0x66, 0xad, 0x83, 0x25, 0x8c, 0xf6, 0x6a, 0x76, 0x15, 0xb9,
+
  0x34, 0x29, 0xa3, 0x5c, 0xe6, 0x4d, 0xda, 0x70, 0x5f, 0xa7, 0x41, 0x12,
+
  0x98, 0x0e, 0x3e, 0x59, 0x96, 0x21, 0x9f, 0x6f, 0xe2, 0x6e, 0x39, 0xd7,
+
  0x74, 0xf4, 0x9b, 0x15, 0xb4, 0x99, 0x43, 0x1e, 0xb8, 0x83, 0xf6, 0xfa,
+
  0xf6, 0x70, 0x95, 0x83, 0xfe, 0xeb, 0x78, 0x75, 0x9c, 0x59, 0xe9, 0x66,
+
  0xed, 0x6a, 0xc6, 0x88, 0x85, 0x4a, 0xfb, 0xab, 0x5f, 0xb7, 0xe9, 0xdc,
+
  0xb9, 0x1a, 0x41, 0xa2, 0xc8, 0xeb, 0xb2, 0x98, 0x55, 0x4e, 0xc1, 0x3a,
+
  0x9d, 0x8a, 0x02, 0xc6, 0xe5, 0x64, 0x14, 0xcc, 0x6d, 0xdc, 0x22, 0xcd,
+
  0xa1, 0x03, 0x07, 0x2e, 0xe1, 0x1e, 0x96, 0x15, 0xb5, 0x22, 0x55, 0xde,
+
  0x9b, 0xd6, 0x63, 0x31, 0x74, 0xb8, 0xa2, 0x1b, 0x91, 0x22, 0x40, 0x96,
+
  0x94, 0x9c, 0x52, 0x0f, 0x82, 0xac, 0x4f, 0xf8, 0x24, 0x01, 0x4b, 0xc9,
+
  0x01, 0x72, 0x90, 0x12, 0x95, 0x0e, 0x00, 0x39, 0x3a, 0x12, 0xd7, 0xce,
+
  0x91, 0xb0, 0x47, 0xef, 0x33, 0xa9, 0x84, 0xf7, 0x79, 0x24, 0x3c, 0x86,
+
  0xc7, 0x9c, 0xd1, 0x1e, 0x8b, 0x86, 0x6e, 0x88, 0x99, 0x93, 0xe8, 0xb2,
+
  0x8b, 0x47, 0xa9, 0xef, 0x21, 0xf2, 0x3b, 0x32, 0x69, 0xe8, 0xc3, 0x88,
+
  0xa2, 0xa4, 0xe4, 0x12, 0x6d, 0xa4, 0xf8, 0x65, 0x89, 0xb9, 0xd4, 0xd3,
+
  0x59, 0x72, 0x25, 0x90, 0xac, 0xed, 0x39, 0x0e, 0x5f, 0xee, 0xd3, 0x6c,
+
  0xce, 0x5e, 0x0e, 0x77, 0x07, 0x3b, 0x46, 0x89, 0xa8, 0x28, 0x81, 0x9e,
+
  0x30, 0xc3, 0xbf, 0x3b, 0x3e, 0x1c, 0x9e, 0x0d, 0x22, 0x43, 0x00, 0x8d,
+
  0x4c, 0xea, 0x40, 0x9a, 0x3b, 0x6f, 0x0c, 0x0c, 0x0c, 0x9b, 0x73, 0x0d,
+
  0xe7, 0x46, 0xa1, 0xc8, 0x71, 0x6e, 0x3c, 0x35, 0x1d, 0x1c, 0xbd, 0x91,
+
  0x04, 0xcd, 0xc7, 0x95, 0x84, 0xc5, 0xa2, 0x7d, 0x30, 0x61, 0xb7, 0x05,
+
  0xb4, 0xc1, 0x00, 0x46, 0xd0, 0x21, 0xa1, 0x9a, 0xef, 0x62, 0x86, 0xd9,
+
  0xff, 0xf8, 0x9c, 0xa6, 0xbf, 0xbc, 0xea, 0x06, 0x85, 0x70, 0xe7, 0x3f,
+
  0x43, 0x1c, 0xf9, 0xbc, 0x32, 0x93, 0xd5, 0xc5, 0xe2, 0xd4, 0x6d, 0x03,
+
  0x22, 0x19, 0xc0, 0xee, 0xa0, 0x76, 0x71, 0xd4, 0x81, 0xa8, 0x7a, 0xaf,
+
  0xc9, 0xd1, 0xe3, 0x9a, 0x7a, 0x2f, 0x24, 0x37, 0x60, 0x16, 0xb7, 0xf6,
+
  0xf6, 0x7e, 0xeb, 0xab, 0x5b, 0x83, 0xaf, 0x4d, 0xf1, 0xad, 0xb9, 0xad,
+
  0x27, 0xfb, 0x25, 0x09, 0xb4, 0x35, 0x06, 0xd1, 0xf9, 0x7b, 0x82, 0x89,
+
  0xca, 0x69, 0x81, 0x7d, 0x4a, 0x5f, 0xd6, 0x45, 0x3c, 0x9e, 0x61, 0x79,
+
  0x52, 0x0c, 0x2c, 0xa5, 0x0e, 0xf8, 0x0e, 0xa3, 0x59, 0x36, 0x52, 0x22,
+
  0x6f, 0xb6, 0xc7, 0x21, 0xcc, 0x47, 0x96, 0x29, 0x8c, 0xe3, 0x16, 0xf1,
+
  0x48, 0xf0, 0x13, 0x86, 0x02, 0x4b, 0xc6, 0xb7, 0x82, 0x6a, 0xf1, 0x09,
+
  0x37, 0x9d, 0x71, 0x7d, 0x76, 0x3c, 0xda, 0x2e, 0xbf, 0xa3, 0x6b, 0xa7,
+
  0x30, 0xc0, 0xd4, 0xc2, 0x86, 0x90, 0x59, 0xf1, 0x20, 0xb8, 0x6d, 0xbb,
+
  0x25, 0x43, 0x74, 0x88, 0x7e, 0xf6, 0x3c, 0x9d, 0xa1, 0x0e, 0x8a, 0x9e,
+
  0x7c, 0xc2, 0x71, 0xd3, 0x5e, 0x3e, 0x48, 0x6f, 0xf0, 0x56, 0x5e, 0xbf,
+
  0xde, 0x32, 0x29, 0xaf, 0xb7, 0x06, 0x40, 0x32, 0x59, 0x41, 0xa5, 0x5f,
+
  0x8f, 0x07, 0x8f, 0x1f, 0xc3, 0xa1, 0x64, 0x74, 0xaa, 0xa4, 0xd9, 0x90,
+
  0x86, 0x90, 0x42, 0x33, 0xee, 0x10, 0x26, 0x0b, 0x14, 0xd2, 0x50, 0x74,
+
  0x1e, 0x03, 0xd1, 0xff, 0xdd, 0x56, 0x0a, 0x89, 0x79, 0x63, 0x32, 0x86,
+
  0x64, 0xcd, 0x68, 0x8d, 0x90, 0x94, 0x3d, 0x0d, 0x9d, 0xde, 0xaf, 0xb2,
+
  0x8b, 0xec, 0x45, 0x3f, 0xb9, 0x8e, 0xe9, 0x64, 0xd8, 0x18, 0xaa, 0xaa,
+
  0xa9, 0xdb, 0x86, 0xd7, 0xc6, 0x49, 0xe3, 0x63, 0x18, 0x81, 0xcb, 0x2e,
+
  0x93, 0xf1, 0x75, 0x04, 0xaf, 0x33, 0x93, 0xa8, 0x1c, 0xee, 0xa8, 0xe9,
+
  0x5c, 0xb5, 0xda, 0x31, 0x1a, 0x20, 0xa2, 0x1b, 0xce, 0xd5, 0x1d, 0x42,
+
  0x4e, 0x81, 0x87, 0xdc, 0xe9, 0x7c, 0xb5, 0x27, 0x7a, 0xe7, 0x43, 0xd6,
+
  0x9e, 0x4c, 0x03, 0xcd, 0xe0, 0x71, 0xcb, 0x55, 0x0a, 0x37, 0x50, 0x21,
+
  0x3e, 0x02, 0xe4, 0x7a, 0x88, 0x99, 0x42, 0x20, 0x5b, 0x2b, 0x44, 0x8b,
+
  0x96, 0x95, 0xb9, 0xdb, 0x8a, 0xa3, 0x8d, 0x83, 0x58, 0xc5, 0xd1, 0xf8,
+
  0x22, 0x05, 0x95, 0x7f, 0x70, 0x17, 0xc6, 0xdb, 0x3e, 0x11, 0x2e, 0x1b,
+
  0xbe, 0x33, 0xe3, 0x6d, 0xad, 0xc0, 0xfd, 0x7b, 0xcf, 0xdd, 0xd1, 0xef,
+
  0x42, 0x16, 0x76, 0x6a, 0x6b, 0xa2, 0x64, 0x95, 0x33, 0x46, 0xe0, 0x71,
+
  0xd3, 0xed, 0x1f, 0xf8, 0x9b, 0x0f, 0xa7, 0x7c, 0x12, 0x80, 0x9d, 0x8d,
+
  0x18, 0x83, 0x95, 0xf1, 0x5e, 0x19, 0x21, 0x15, 0x8d, 0xd4, 0xad, 0xe8,
+
  0x0d, 0x70, 0x05, 0xd0, 0x17, 0x71, 0x7b, 0xb6, 0x41, 0x31, 0x30, 0x08,
+
  0x67, 0x1a, 0x98, 0xf1, 0x61, 0xfc, 0xce, 0x38, 0x11, 0xba, 0x16, 0x78,
+
  0x64, 0x7b, 0xa1, 0x07, 0x44, 0x03, 0x5c, 0x47, 0x9a, 0xaf, 0x2c, 0x17,
+
  0xe7, 0x25, 0xf5, 0x3c, 0xf3, 0xf1, 0x00, 0x90, 0x9b, 0xcb, 0xc3, 0x6f,
+
  0xf2, 0xac, 0x00, 0xf5, 0x4e, 0x66, 0xfc, 0xf2, 0x38, 0x79, 0xf1, 0xae,
+
  0x08, 0xda, 0x20, 0xa2, 0xe5, 0x63, 0xc1, 0x09, 0x26, 0x7f, 0x53, 0xd3,
+
  0x6c, 0x1f, 0xa1, 0xc6, 0xb2, 0x6d, 0x0a, 0x12, 0x91, 0x5b, 0xe3, 0x64,
+
  0x91, 0xe6, 0x34, 0x18, 0xd6, 0x4c, 0xa6, 0x52, 0x43, 0x5a, 0xa6, 0xbf,
+
  0x72, 0xf0, 0x5c, 0x64, 0xc3, 0x79, 0x9a, 0x83, 0x99, 0xd0, 0x8e, 0xff,
+
  0xcc, 0x26, 0xc9, 0xc2, 0xdc, 0x06, 0xef, 0xae, 0x4d, 0xec, 0x50, 0xc1,
+
  0xe2, 0x42, 0x63, 0x5a, 0xda, 0xc9, 0x4d, 0xaf, 0xb5, 0xc4, 0x05, 0xc4,
+
  0x2c, 0x6d, 0x2c, 0x40, 0x64, 0x10, 0x19, 0x16, 0x71, 0x88, 0x56, 0x5f,
+
  0xc1, 0x09, 0x9b, 0xa7, 0x06, 0x20, 0x06, 0xd3, 0xe9, 0xfc, 0x70, 0xe9,
+
  0x6c, 0xca, 0x99, 0x04, 0x54, 0xc0, 0x9f, 0xcd, 0xe7, 0xe9, 0xc4, 0xd4,
+
  0x6c, 0xd0, 0xc7, 0x38, 0x29, 0x71, 0x7b, 0xc1, 0xdc, 0x18, 0xf9, 0x9e,
+
  0x76, 0x1a, 0xdd, 0x17, 0x6d, 0x23, 0x04, 0x09, 0x05, 0xae, 0x41, 0x4a,
+
  0x81, 0x1f, 0x48, 0x2a, 0x43, 0x1a, 0x09, 0x57, 0x69, 0x88, 0xed, 0xe4,
+
  0x31, 0x5c, 0xea, 0x40, 0x20, 0x62, 0x29, 0x6d, 0x32, 0xbb, 0xc2, 0xfc,
+
  0x08, 0x2a, 0xbf, 0xf0, 0xeb, 0x32, 0x70, 0x09, 0x71, 0x4d, 0x70, 0xff,
+
  0xaa, 0x0b, 0xac, 0xb4, 0x6f, 0x38, 0x54, 0x56, 0xae, 0x0f, 0xca, 0x42,
+
  0x2c, 0xc9, 0x4e, 0xb1, 0xa3, 0x80, 0x51, 0x54, 0xe3, 0x78, 0x5a, 0x2f,
+
  0x0c, 0xbd, 0xdf, 0xac, 0x88, 0xe1, 0x55, 0xd1, 0xfd, 0xa7, 0xb6, 0x77,
+
  0x3d, 0xff, 0x16, 0x7c, 0x80, 0x66, 0xe4, 0xe1, 0xf0, 0xae, 0xf2, 0xb8,
+
  0x54, 0xb3, 0x5b, 0xe8, 0x58, 0xcc, 0x5b, 0x40, 0x25, 0xab, 0x6a, 0x44,
+
  0xbd, 0x2e, 0x3c, 0x2d, 0xeb, 0x56, 0x42, 0x20, 0x3b, 0xcf, 0x51, 0x90,
+
  0xbb, 0x32, 0xe0, 0x66, 0x21, 0x20, 0x25, 0xb8, 0x08, 0x8d, 0x26, 0x18,
+
  0x26, 0x93, 0x25, 0x15, 0x13, 0xcf, 0x33, 0xca, 0x3f, 0xdf, 0x2e, 0xa6,
+
  0x53, 0x42, 0x61, 0x07, 0x11, 0x53, 0x97, 0xd9, 0x68, 0x19, 0x48, 0x6c,
+
  0x59, 0x14, 0x19, 0x76, 0x2b, 0x51, 0x26, 0xc4, 0xcf, 0xb4, 0xcf, 0x60,
+
  0x9c, 0xeb, 0xdb, 0x6c, 0x77, 0x7b, 0x15, 0x56, 0x6e, 0xfe, 0x1d, 0x9a,
+
  0x1e, 0x86, 0x9f, 0x72, 0x37, 0x42, 0xf0, 0xe6, 0x7a, 0x27, 0xc9, 0x10,
+
  0x22, 0x8e, 0x86, 0xa6, 0xb0, 0xe3, 0x09, 0x0b, 0x11, 0x0d, 0x24, 0x19,
+
  0x48, 0x30, 0x38, 0x72, 0xe1, 0xc7, 0xa4, 0x44, 0xd4, 0xd3, 0x03, 0xe3,
+
  0x09, 0x50, 0x88, 0x23, 0x02, 0x4e, 0x26, 0x0d, 0xd0, 0xc7, 0x26, 0x1c,
+
  0x53, 0xb7, 0x36, 0x05, 0xfb, 0xb7, 0xc0, 0xc7, 0x82, 0x4b, 0x6f, 0x09,
+
  0x5f, 0xe1, 0xb8, 0xa5, 0xe0, 0x0a, 0x6f, 0x0b, 0x68, 0xb5, 0x22, 0x35,
+
  0x18, 0x18, 0x93, 0x95, 0x87, 0xa6, 0x60, 0x6a, 0xf3, 0x0d, 0x42, 0x4e,
+
  0x75, 0x25, 0x4a, 0x48, 0x9c, 0x81, 0xc8, 0x03, 0x91, 0xc1, 0x7e, 0x66,
+
  0xb4, 0x23, 0xf2, 0x22, 0x8f, 0x79, 0x6c, 0x4f, 0x6d, 0x35, 0x92, 0x0d,
+
  0xb9, 0x98, 0xb8, 0xc1, 0xa5, 0x8e, 0xd7, 0x24, 0x6a, 0x99, 0x4e, 0xa7,
+
  0x2a, 0xc4, 0xcc, 0xde, 0xf8, 0xa0, 0x5c, 0xc2, 0xb3, 0xc4, 0x79, 0xa3,
+
  0x4e, 0x53, 0xc3, 0x0d, 0xb0, 0x47, 0x84, 0x01, 0x3b, 0x9e, 0xc1, 0x2c,
+
  0x67, 0xd4, 0x27, 0x21, 0xcd, 0xc7, 0xe5, 0x75, 0xd8, 0x20, 0xb9, 0xad,
+
  0x88, 0xb9, 0x3f, 0xc9, 0x29, 0x12, 0x31, 0x28, 0x36, 0x85, 0x6f, 0xb8,
+
  0xe2, 0xf5, 0x66, 0xc9, 0xe9, 0x9f, 0x66, 0x86, 0x85, 0xc4, 0xb5, 0x15,
+
  0xb9, 0x67, 0x00, 0xea, 0xd0, 0xbf, 0xc0, 0xa0, 0x8c, 0x61, 0xcd, 0x03,
+
  0x73, 0xd7, 0xfc, 0x75, 0x62, 0x06, 0x62, 0xbb, 0xff, 0x22, 0x34, 0xde,
+
  0x0d, 0x4b, 0x76, 0x83, 0xd4, 0xa1, 0x5c, 0x14, 0x14, 0xc8, 0x1a, 0x6a,
+
  0x0a, 0xb4, 0x7c, 0xa4, 0x80, 0x4f, 0xed, 0x02, 0x2d, 0x1b, 0x5f, 0xdc,
+
  0x28, 0x15, 0xcc, 0x46, 0x69, 0x81, 0x38, 0x5d, 0x52, 0xfb, 0x5d, 0x03,
+
  0x9b, 0x7c, 0x03, 0x7b, 0x5b, 0xab, 0x58, 0xd8, 0xb7, 0xc6, 0x02, 0xac,
+
  0xec, 0x0e, 0x7c, 0x0b, 0x58, 0xf5, 0x62, 0x7f, 0x8d, 0x22, 0x61, 0x21,
+
  0xf2, 0x7e, 0x8b, 0x45, 0xc9, 0x19, 0x18, 0x67, 0x8b, 0x8b, 0xd4, 0x85,
+
  0x89, 0x8b, 0xf7, 0xfa, 0x7c, 0xd7, 0xe5, 0x9e, 0x27, 0xc0, 0x86, 0x2f,
+
  0x9b, 0xb2, 0x4b, 0x23, 0x7b, 0xb0, 0x55, 0x60, 0x2d, 0x28, 0x96, 0xb2,
+
  0x65, 0x04, 0x97, 0x7b, 0x7d, 0x29, 0x8d, 0x4b, 0xca, 0x60, 0x12, 0xb0,
+
  0x60, 0xb1, 0x36, 0x6c, 0x70, 0xe4, 0x50, 0xe5, 0x72, 0xac, 0x07, 0x48,
+
  0x28, 0x7b, 0xc0, 0xe3, 0x91, 0xb3, 0xf2, 0x0a, 0x58, 0x9b, 0x77, 0x50,
+
  0x1c, 0x2e, 0x69, 0x5e, 0x91, 0xa0, 0x93, 0x30, 0x93, 0xf4, 0xd1, 0xee,
+
  0xe3, 0x47, 0x5b, 0xab, 0x8c, 0x17, 0xfb, 0xd2, 0x9f, 0x22, 0x6d, 0x97,
+
  0xc6, 0xbd, 0xa5, 0x6c, 0x31, 0x8d, 0xf5, 0xf0, 0x7a, 0x6c, 0x67, 0x23,
+
  0x1b, 0x85, 0x7f, 0xee, 0x0d, 0x1a, 0x33, 0x15, 0x1e, 0x54, 0x19, 0x30,
+
  0x82, 0x36, 0x17, 0xcf, 0x27, 0x78, 0x8c, 0xf0, 0x05, 0xd5, 0xbb, 0x83,
+
  0xc7, 0x6b, 0xb4, 0xcc, 0x66, 0x04, 0xdf, 0xa1, 0xfc, 0x93, 0x78, 0x67,
+
  0x8b, 0x6f, 0xc1, 0x32, 0x78, 0xe7, 0x99, 0xc3, 0xb1, 0x36, 0x1e, 0xcb,
+
  0x89, 0x66, 0xf1, 0xbe, 0xce, 0x88, 0x9d, 0x9c, 0xf1, 0x2e, 0x35, 0x74,
+
  0x9b, 0x55, 0x97, 0xbb, 0x32, 0x75, 0xfa, 0x7d, 0xb0, 0x1b, 0x80, 0x7b,
+
  0xd7, 0xef, 0xf6, 0x1c, 0xfa, 0xb3, 0xc3, 0x7d, 0x3c, 0xfd, 0xed, 0xdf,
+
  0x33, 0xfd, 0xed, 0xdf, 0x91, 0xfe, 0x1e, 0x3f, 0x7c, 0xf4, 0x64, 0x25,
+
  0xfd, 0x39, 0x6b, 0xf8, 0x69, 0xe8, 0x6f, 0xff, 0xbe, 0xe8, 0xcf, 0x99,
+
  0xe9, 0xbf, 0x09, 0xfd, 0x39, 0x27, 0xe2, 0x3e, 0xe8, 0x4f, 0x6b, 0x58,
+
  0x9f, 0xa2, 0x6e, 0xf7, 0x8d, 0x87, 0x77, 0x2d, 0x20, 0xb6, 0x88, 0x71,
+
  0x84, 0x68, 0xbd, 0xac, 0x23, 0xc9, 0x2d, 0x5e, 0xab, 0x02, 0x69, 0xf0,
+
  0x47, 0x2a, 0x17, 0x79, 0xf7, 0x03, 0xf1, 0x7d, 0xdb, 0x62, 0x95, 0xa2,
+
  0x3e, 0x8b, 0x19, 0x0a, 0x89, 0x8d, 0x78, 0x43, 0xd3, 0x43, 0x54, 0x63,
+
  0x73, 0xb0, 0x81, 0xb9, 0x10, 0xfa, 0xf3, 0x16, 0xdb, 0x4b, 0x50, 0x9d,
+
  0x5f, 0xfc, 0xb3, 0x05, 0xd5, 0xf9, 0xf1, 0x82, 0xde, 0x5c, 0x7f, 0xa8,
+
  0xef, 0x5e, 0xbd, 0xcc, 0xf4, 0xe0, 0xd4, 0x63, 0x37, 0x49, 0xe2, 0x1a,
+
  0x94, 0x38, 0xe9, 0x6b, 0x1a, 0xc4, 0x24, 0xa9, 0x14, 0xab, 0x86, 0x3d,
+
  0xe7, 0xba, 0x78, 0x23, 0x6c, 0x42, 0x39, 0x05, 0xad, 0x33, 0xa2, 0x21,
+
  0xc4, 0x54, 0xc3, 0xad, 0x24, 0xad, 0x02, 0x93, 0x23, 0x82, 0xdd, 0x50,
+
  0x2b, 0xad, 0x45, 0xb7, 0xe5, 0xef, 0x03, 0xc9, 0x8b, 0x45, 0xc5, 0xc1,
+
  0x9d, 0x0e, 0x11, 0x04, 0x28, 0x15, 0x9c, 0x4b, 0x3d, 0x0f, 0x74, 0x98,
+
  0xf6, 0x16, 0x80, 0x6e, 0xd7, 0xea, 0x7c, 0x73, 0x8a, 0x13, 0xf3, 0x28,
+
  0x69, 0x78, 0xa9, 0xbe, 0x68, 0xf3, 0x12, 0x55, 0xb0, 0xd5, 0xe5, 0x34,
+
  0x4d, 0x48, 0x8b, 0x92, 0xfc, 0x26, 0xc5, 0x87, 0x2a, 0x84, 0xb7, 0x22,
+
  0x75, 0xa9, 0x4f, 0x5e, 0xec, 0xd2, 0x19, 0x28, 0xa0, 0xdc, 0xdf, 0x30,
+
  0x10, 0xf9, 0x19, 0x27, 0x0b, 0x09, 0x48, 0xfd, 0xbb, 0xa0, 0x49, 0xb4,
+
  0x09, 0xc0, 0x31, 0x69, 0xef, 0x27, 0xa6, 0xe4, 0x0e, 0xbe, 0x36, 0x73,
+
  0x6f, 0xcc, 0x2c, 0x7e, 0xb1, 0xde, 0x09, 0xb0, 0x4d, 0xc7, 0x88, 0xfc,
+
  0xdd, 0x03, 0xd1, 0x84, 0xe7, 0x69, 0x23, 0xca, 0x00, 0x6d, 0x50, 0x5d,
+
  0xbf, 0x86, 0x9e, 0x85, 0x6c, 0x43, 0x48, 0x23, 0xf1, 0xc2, 0x24, 0x2d,
+
  0xd5, 0x4b, 0x0a, 0xd7, 0x68, 0xea, 0x52, 0x42, 0x11, 0x54, 0x04, 0xee,
+
  0x3d, 0x3e, 0x32, 0xfd, 0xe6, 0xf0, 0x5b, 0x82, 0x91, 0x84, 0x4d, 0x0d,
+
  0x41, 0x51, 0xca, 0x9b, 0x72, 0x7a, 0x92, 0xbd, 0x57, 0x90, 0x80, 0x64,
+
  0x1e, 0x9e, 0x3c, 0x41, 0x3c, 0xbe, 0xda, 0x4f, 0x23, 0x57, 0x0b, 0x81,
+
  0x37, 0xe3, 0x19, 0x4e, 0x74, 0xb2, 0x9c, 0x2f, 0xe4, 0x75, 0x08, 0x2d,
+
  0x23, 0xce, 0x28, 0x62, 0xae, 0xf8, 0xd4, 0xda, 0x27, 0x2d, 0x29, 0x83,
+
  0x0d, 0x0e, 0xf1, 0x30, 0x0a, 0x96, 0x06, 0x27, 0x8a, 0xe9, 0x79, 0x96,
+
  0xb8, 0x8d, 0x02, 0xcd, 0xbf, 0xa8, 0x9b, 0x6d, 0x58, 0xfd, 0x9e, 0x43,
+
  0x93, 0x74, 0xb4, 0x3c, 0x57, 0x43, 0xa7, 0x8a, 0x0c, 0xe4, 0x75, 0x93,
+
  0x6b, 0x11, 0x8e, 0x08, 0xb6, 0x39, 0x4f, 0xfb, 0x0c, 0x18, 0x78, 0x8d,
+
  0xda, 0x4e, 0xed, 0xbb, 0xd2, 0x80, 0x29, 0xdd, 0x90, 0xfc, 0xde, 0xb1,
+
  0xa5, 0xf7, 0xed, 0xbf, 0xe9, 0x78, 0xcc, 0xda, 0x74, 0xdf, 0x35, 0x5d,
+
  0xbb, 0x55, 0xf1, 0x07, 0xa1, 0x92, 0xb5, 0x8e, 0x44, 0x9b, 0x08, 0xfa,
+
  0x44, 0x01, 0x76, 0x54, 0x3a, 0x28, 0x6d, 0x92, 0x6e, 0x9f, 0x76, 0x37,
+
  0xa7, 0xbe, 0x15, 0x2b, 0xa8, 0xc7, 0x8b, 0x78, 0x0a, 0xf2, 0xb0, 0x00,
+
  0x43, 0xfe, 0x8b, 0x30, 0xbe, 0x95, 0x7a, 0x8c, 0x8f, 0x4e, 0xa3, 0xef,
+
  0x51, 0x72, 0xa2, 0xcd, 0x1f, 0x6d, 0x92, 0x22, 0xf9, 0x60, 0x77, 0x1f,
+
  0xd1, 0x26, 0x1b, 0xdf, 0x50, 0xd6, 0x7b, 0x84, 0x1f, 0x7a, 0xbd, 0x0b,
+
  0x40, 0x61, 0xa8, 0x18, 0xd9, 0x84, 0xcc, 0x79, 0x2e, 0x52, 0x22, 0x28,
+
  0x16, 0x20, 0x54, 0xec, 0x5d, 0x4a, 0xac, 0x3a, 0x4d, 0xca, 0x59, 0x86,
+
  0xe4, 0x7e, 0x99, 0xba, 0x4e, 0x9b, 0xa0, 0xe3, 0x63, 0xb3, 0x81, 0x71,
+
  0x8b, 0xc2, 0xc2, 0x3a, 0x97, 0x0f, 0x8f, 0xfe, 0xb4, 0xa5, 0x1e, 0x01,
+
  0x13, 0xbf, 0xcc, 0x27, 0xea, 0xbb, 0x09, 0x34, 0x3d, 0x67, 0xd4, 0x34,
+
  0xd9, 0xc2, 0x74, 0xe2, 0x68, 0xf4, 0xab, 0xf9, 0xb1, 0xbb, 0x88, 0x3e,
+
  0x3b, 0xfe, 0x48, 0x7e, 0xec, 0x0e, 0xbe, 0x2e, 0x59, 0x36, 0x26, 0xb6,
+
  0x9e, 0x3b, 0x71, 0x0a, 0x3f, 0xd3, 0x98, 0x6c, 0x95, 0x66, 0xb0, 0xe9,
+
  0x4b, 0x9f, 0x80, 0xf2, 0x22, 0x84, 0x4f, 0x79, 0xb6, 0x2c, 0x73, 0x02,
+
  0x18, 0x41, 0xb7, 0xff, 0xd1, 0xe9, 0xbb, 0xd7, 0x27, 0xcf, 0x8e, 0x5f,
+
  0x1e, 0xfe, 0xd5, 0xf8, 0x05, 0xf1, 0x61, 0xda, 0xa0, 0xed, 0x5d, 0x9a,
+
  0x54, 0xd7, 0xef, 0x40, 0x27, 0x83, 0x2f, 0x37, 0xf7, 0xb7, 0xa8, 0x59,
+
  0xa7, 0xd7, 0xab, 0xe2, 0x3c, 0x6d, 0xf6, 0x4f, 0x65, 0xb0, 0x50, 0xa7,
+
  0xaf, 0x68, 0x38, 0xff, 0x15, 0xa9, 0x7e, 0x67, 0x00, 0x7a, 0xb9, 0x80,
+
  0x48, 0x61, 0xd6, 0x9f, 0x1b, 0x9d, 0x74, 0x3a, 0xb2, 0x20, 0x79, 0x5c,
+
  0xdb, 0x76, 0x98, 0x1e, 0x01, 0x73, 0x0c, 0x05, 0x23, 0xff, 0xac, 0xe2,
+
  0x20, 0x08, 0xe9, 0x74, 0xaa, 0xd1, 0x1a, 0x69, 0x44, 0x41, 0xc8, 0xff,
+
  0x04, 0x4f, 0xba, 0x92, 0xc3, 0x39, 0x0b, 0x17, 0x26, 0x99, 0x8f, 0x0a,
+
  0x50, 0x3a, 0xa3, 0xdf, 0x85, 0x68, 0x74, 0x62, 0x6b, 0xd1, 0xcc, 0xeb,
+
  0x3e, 0x3f, 0x7b, 0xb4, 0x9c, 0x36, 0x3a, 0x82, 0xc7, 0x35, 0xd9, 0x40,
+
  0xe9, 0x2c, 0x4f, 0x6b, 0x81, 0xdb, 0x8b, 0x9e, 0xc2, 0xcf, 0xaf, 0x41,
+
  0xff, 0xf6, 0xfa, 0x02, 0x26, 0x55, 0x65, 0xa4, 0x8c, 0x81, 0x5c, 0xc2,
+
  0x3b, 0x8d, 0x10, 0x1b, 0x68, 0x1b, 0xa6, 0x74, 0x62, 0xae, 0x04, 0xf9,
+
  0x77, 0xe0, 0xe9, 0x67, 0x67, 0x7f, 0x3d, 0x3d, 0xfe, 0xfa, 0x29, 0xaa,
+
  0x91, 0xdf, 0x20, 0xd4, 0x6e, 0xd5, 0x50, 0x60, 0x09, 0x4a, 0xc7, 0x5b,
+
  0x9a, 0x9f, 0x9e, 0xbd, 0x18, 0x9e, 0xbe, 0x3c, 0x39, 0xfa, 0xfa, 0xe9,
+
  0x4f, 0x18, 0x9f, 0x00, 0xf3, 0xe7, 0xda, 0xb9, 0xd7, 0x7c, 0x16, 0x69,
+
  0xeb, 0x51, 0xbf, 0x05, 0xee, 0xf1, 0x8f, 0xef, 0x8e, 0x5f, 0xff, 0xe5,
+
  0xeb, 0xa7, 0x97, 0x49, 0xd9, 0xc7, 0xf7, 0xe3, 0xbb, 0x11, 0xb4, 0x2c,
+
  0xbf, 0xcc, 0xca, 0x22, 0xc7, 0xa4, 0x25, 0x30, 0x3c, 0xca, 0x0c, 0x77,
+
  0xce, 0x6f, 0xdc, 0x14, 0x58, 0xaa, 0x4f, 0xd6, 0xc2, 0xa9, 0x96, 0x25,
+
  0xba, 0xac, 0x77, 0x77, 0x76, 0x64, 0x95, 0x6f, 0xed, 0xca, 0xfb, 0x53,
+
  0x9f, 0x53, 0xfd, 0xa6, 0xd9, 0xf9, 0xc0, 0xe1, 0x06, 0xe8, 0x19, 0x1d,
+
  0xcd, 0xde, 0x57, 0xd9, 0x6f, 0x69, 0xf4, 0x94, 0xec, 0x2b, 0xaf, 0x2f,
+
  0xf4, 0x19, 0xb7, 0x3f, 0x85, 0x1d, 0xc5, 0xdf, 0xa2, 0xef, 0x5e, 0xfe,
+
  0x69, 0xf8, 0xe2, 0xbf, 0x8e, 0x4d, 0xe6, 0xf5, 0x7c, 0x59, 0x51, 0xac,
+
  0xf8, 0x9b, 0x87, 0xbb, 0x7b, 0x8a, 0x49, 0x2f, 0xcd, 0x97, 0x46, 0x33,
+
  0x4c, 0xf6, 0x6f, 0xb9, 0xa4, 0xf1, 0x49, 0x24, 0x4f, 0xda, 0xad, 0xd3,
+
  0x6c, 0x57, 0x69, 0x0d, 0x53, 0x12, 0x76, 0xa9, 0xca, 0x1b, 0xe0, 0x24,
+
  0x88, 0xea, 0xd9, 0xb6, 0xc3, 0x79, 0x52, 0x9a, 0x05, 0xe4, 0x74, 0x6e,
+
  0x81, 0xe9, 0x48, 0x6a, 0xe9, 0xca, 0x24, 0x43, 0xb6, 0x44, 0x1b, 0xeb,
+
  0xf0, 0xb9, 0xd0, 0xff, 0x1a, 0x93, 0xd8, 0xdd, 0xd9, 0x7b, 0x10, 0xd5,
+
  0x7e, 0xc7, 0x4f, 0x34, 0xf8, 0x57, 0x88, 0x01, 0x1a, 0x03, 0xce, 0xb4,
+
  0xd7, 0x32, 0xd9, 0xfb, 0x2a, 0xbc, 0xcd, 0x0e, 0x56, 0x03, 0xc1, 0x96,
+
  0x17, 0xd4, 0xa8, 0x8a, 0x17, 0x59, 0x0f, 0xaf, 0x36, 0xe7, 0x5c, 0x6d,
+
  0x61, 0xcd, 0x71, 0x0d, 0x89, 0xe8, 0x29, 0x71, 0xd0, 0x49, 0x0b, 0x9c,
+
  0xa5, 0xe7, 0x98, 0x4b, 0x24, 0x9b, 0x56, 0xd9, 0x06, 0xf0, 0x21, 0x85,
+
  0x1d, 0x8c, 0xbd, 0xbc, 0xb8, 0xa2, 0x26, 0x5e, 0x8c, 0x3f, 0xc7, 0x1d,
+
  0x94, 0xb1, 0xb7, 0x81, 0xe6, 0x14, 0x36, 0x66, 0x27, 0x9d, 0x6a, 0xba,
+
  0x1b, 0x7a, 0xa9, 0xf9, 0xe0, 0x6f, 0xba, 0x3a, 0xeb, 0x56, 0x4a, 0x81,
+
  0xe6, 0x22, 0xae, 0xf4, 0xb7, 0xdd, 0x41, 0x0a, 0x74, 0xed, 0xde, 0x1a,
+
  0x04, 0xe4, 0x4c, 0x4e, 0xc8, 0x67, 0xf7, 0xcb, 0xbd, 0xc1, 0xee, 0xa3,
+
  0x27, 0xd8, 0xe3, 0x6d, 0xfb, 0x26, 0xd2, 0x91, 0xe5, 0x68, 0xaa, 0x10,
+
  0x4f, 0x1a, 0x2a, 0xc4, 0x6f, 0xc4, 0xf2, 0xe0, 0x75, 0x63, 0xca, 0xd6,
+
  0x7e, 0x8a, 0xbf, 0x06, 0x9b, 0xc9, 0x53, 0x99, 0x05, 0xa7, 0xaa, 0x50,
+
  0x02, 0x1b, 0x3b, 0xab, 0x68, 0xb3, 0x0d, 0xe4, 0xed, 0xbc, 0x98, 0xb0,
+
  0x95, 0x8d, 0xdd, 0xce, 0x4d, 0xe1, 0x40, 0xfb, 0x54, 0x71, 0x15, 0x81,
+
  0x49, 0xdf, 0x07, 0x96, 0xc0, 0x06, 0x0b, 0xa2, 0x4a, 0x77, 0x8c, 0x67,
+
  0xe0, 0xdc, 0x03, 0x79, 0x72, 0x8c, 0xdf, 0x4f, 0x75, 0xc9, 0x4f, 0x71,
+
  0x2c, 0xd4, 0x14, 0xd0, 0x1a, 0x80, 0x45, 0xfb, 0x46, 0xd9, 0x77, 0xe2,
+
  0xb6, 0x3c, 0x9f, 0x70, 0x96, 0x1c, 0xf2, 0xa3, 0xca, 0xef, 0x41, 0xcc,
+
  0x10, 0x96, 0xad, 0xca, 0x74, 0xb4, 0xa5, 0x88, 0xf4, 0x51, 0x76, 0xc1,
+
  0x3c, 0x2b, 0xf5, 0xc8, 0x61, 0xcb, 0x82, 0x9c, 0x7b, 0xcc, 0x44, 0xb4,
+
  0x22, 0xc1, 0xc2, 0x47, 0x2e, 0x9d, 0x51, 0x7c, 0xfb, 0x73, 0x29, 0x7b,
+
  0xe5, 0xb7, 0x93, 0xd0, 0x3a, 0x4d, 0x6a, 0x73, 0x8e, 0x2f, 0xb3, 0xc5,
+
  0x80, 0xc7, 0x41, 0xa7, 0xa3, 0x71, 0x20, 0x36, 0xf4, 0x37, 0x18, 0x11,
+
  0xef, 0x47, 0xdd, 0x0d, 0xa4, 0x11, 0x29, 0x6b, 0x1c, 0xbf, 0xe7, 0x61,
+
  0x9d, 0x15, 0xf1, 0x0c, 0xcb, 0x3a, 0x88, 0xd5, 0x39, 0x44, 0xcd, 0x93,
+
  0xd3, 0x1f, 0x9b, 0x2b, 0xaa, 0x2d, 0x51, 0x26, 0x49, 0x75, 0x11, 0x6d,
+
  0xc6, 0x5b, 0xa6, 0x05, 0x69, 0x56, 0x1b, 0xa3, 0x3d, 0xd0, 0x5f, 0x1c,
+
  0xf9, 0xc1, 0x78, 0x39, 0xe7, 0x56, 0xbe, 0x09, 0xad, 0x1c, 0xa7, 0x13,
+
  0x2b, 0x89, 0x08, 0x51, 0xe0, 0xd3, 0xb6, 0xb9, 0x8a, 0x41, 0x39, 0x3f,
+
  0x7a, 0x42, 0xbd, 0x9e, 0xdb, 0xad, 0xb1, 0xf2, 0xf4, 0xca, 0x1d, 0xcb,
+
  0x7a, 0x7b, 0xcc, 0x78, 0x41, 0x20, 0x81, 0x16, 0xed, 0x7f, 0x6a, 0x49,
+
  0xd1, 0xd5, 0x43, 0xfa, 0xb7, 0xa8, 0xf7, 0x23, 0x3c, 0x72, 0x67, 0x17,
+
  0x36, 0x75, 0x11, 0xed, 0xed, 0xec, 0xed, 0x46, 0xbb, 0x7b, 0x07, 0xbb,
+
  0x4f, 0x0e, 0x76, 0x76, 0xd6, 0xe8, 0x2a, 0x0d, 0xa3, 0xc4, 0xf7, 0x32,
+
  0x0c, 0x9d, 0xeb, 0xf5, 0xcc, 0x15, 0xa0, 0xa2, 0xf3, 0x98, 0xba, 0xfe,
+
  0x69, 0x30, 0xf1, 0x0d, 0xb7, 0xe7, 0x9e, 0x17, 0x75, 0xea, 0xe1, 0xa2,
+
  0xd7, 0xb3, 0x0a, 0x8b, 0x51, 0xa2, 0xa7, 0x7f, 0x39, 0x7e, 0x33, 0x7c,
+
  0x71, 0xf2, 0xda, 0xd7, 0x51, 0x5e, 0x0e, 0xb7, 0x22, 0xf9, 0x12, 0xe9,
+
  0x00, 0x74, 0x2b, 0xdb, 0xc2, 0xc3, 0x46, 0xc1, 0x31, 0xb5, 0x40, 0xc3,
+
  0xb5, 0x74, 0xfc, 0x41, 0xb5, 0xc4, 0x4b, 0xda, 0xc4, 0x37, 0x1e, 0xa7,
+
  0x8b, 0x9a, 0x98, 0xb4, 0xc6, 0xda, 0xb5, 0xc4, 0x48, 0x62, 0xe4, 0xe4,
+
  0xf7, 0xdf, 0xe9, 0xeb, 0x6f, 0xbb, 0xe6, 0xb7, 0xbd, 0xc8, 0xe7, 0x0f,
+
  0xfc, 0xcd, 0x7e, 0x37, 0xf2, 0x79, 0x23, 0x63, 0xa1, 0xe2, 0x0e, 0x2e,
+
  0x78, 0x6a, 0xd0, 0x5e, 0xa2, 0xc4, 0x2f, 0xd7, 0xfc, 0x31, 0x8e, 0x9f,
+
  0x70, 0x8e, 0x2c, 0xeb, 0x5f, 0xec, 0x6d, 0xa8, 0xa2, 0x3f, 0xbf, 0x7d,
+
  0x71, 0x14, 0x73, 0x1a, 0x07, 0xb1, 0xe4, 0x6d, 0x38, 0xef, 0x26, 0x09,
+
  0xcc, 0x9b, 0x50, 0x18, 0x7e, 0xc1, 0xa9, 0x76, 0x5d, 0x2e, 0x18, 0xe4,
+
  0x0d, 0x75, 0x58, 0xee, 0x75, 0xe9, 0xae, 0x68, 0x7b, 0x38, 0xac, 0x56,
+
  0x68, 0xdc, 0x08, 0x17, 0x5f, 0x92, 0x2b, 0xb0, 0x7d, 0xdd, 0x6e, 0xe8,
+
  0xba, 0x5d, 0xff, 0xba, 0xbd, 0xd0, 0x75, 0x7b, 0xfe, 0x75, 0xfb, 0xa1,
+
  0xeb, 0xf6, 0xc3, 0xd0, 0x20, 0x4a, 0x5b, 0xeb, 0x05, 0x21, 0x56, 0x46,
+
  0x21, 0xd6, 0x3b, 0xcc, 0x66, 0x06, 0xf8, 0x7e, 0xb7, 0x3e, 0x75, 0xce,
+
  0x5d, 0xfb, 0x36, 0x12, 0xb5, 0x76, 0x9c, 0xce, 0x50, 0xb2, 0x09, 0x74,
+
  0xf5, 0x9d, 0xd1, 0xdc, 0x28, 0xd7, 0xfe, 0x40, 0x1e, 0xea, 0x61, 0xd0,
+
  0x7f, 0xf0, 0x63, 0x79, 0x5d, 0xd1, 0x3b, 0x09, 0xdf, 0x51, 0x78, 0x42,
+
  0x8e, 0x65, 0x5b, 0x87, 0xc4, 0x70, 0xde, 0x2a, 0x07, 0xd8, 0xac, 0xda,
+
  0xdd, 0xd7, 0xc4, 0x83, 0xe8, 0xa9, 0xfc, 0xb2, 0xcc, 0xea, 0x94, 0xb2,
+
  0xcc, 0xc2, 0x9c, 0x21, 0x1a, 0x0a, 0x7f, 0xd7, 0xce, 0x1f, 0x7c, 0x5b,
+
  0x44, 0xf7, 0x55, 0x6a, 0x7b, 0x88, 0x93, 0xb5, 0x91, 0x9f, 0xe2, 0x83,
+
  0xb6, 0x1b, 0x6c, 0xed, 0x8a, 0x88, 0x9f, 0x16, 0xe6, 0xec, 0x82, 0x9f,
+
  0x8e, 0xba, 0x82, 0x4e, 0x4d, 0xc6, 0x8e, 0xc8, 0x3e, 0xd2, 0x92, 0x5d,
+
  0xbf, 0x08, 0x2a, 0x9b, 0x44, 0x7a, 0x0b, 0xb5, 0x77, 0x4a, 0x26, 0x48,
+
  0xb4, 0xf0, 0x6c, 0x19, 0xbc, 0x31, 0x55, 0xe3, 0x4b, 0x29, 0x82, 0x1a,
+
  0xee, 0xdb, 0x37, 0x2f, 0x3d, 0xab, 0x5a, 0x09, 0x02, 0xb7, 0x60, 0x50,
+
  0xa5, 0xdb, 0x20, 0x09, 0xab, 0x6d, 0xca, 0x66, 0x92, 0x87, 0x5e, 0xd4,
+
  0xf3, 0xd9, 0x0d, 0xa1, 0x12, 0xb8, 0x17, 0x73, 0x9b, 0x66, 0xd7, 0xac,
+
  0x39, 0x53, 0x2d, 0x85, 0xed, 0xc2, 0x43, 0xac, 0xd1, 0xd9, 0x57, 0x1f,
+
  0x83, 0x1d, 0xfd, 0x8c, 0x98, 0x47, 0x8e, 0x67, 0x7a, 0x17, 0xf5, 0x36,
+
  0x56, 0xf6, 0x9c, 0x1a, 0x0c, 0xd3, 0x86, 0x11, 0xc5, 0x81, 0x16, 0x4e,
+
  0x9b, 0xa4, 0x2a, 0xbf, 0x22, 0x2a, 0x32, 0x09, 0x4c, 0xb6, 0x59, 0x3c,
+
  0x18, 0x91, 0x95, 0x34, 0xe8, 0x09, 0xad, 0x5d, 0x65, 0x52, 0xd5, 0x03,
+
  0x61, 0x54, 0x93, 0xca, 0xb2, 0xa2, 0xfa, 0xad, 0x4d, 0x7b, 0x9f, 0xcd,
+
  0x4c, 0x6c, 0xcc, 0x02, 0x5e, 0xf5, 0xdd, 0xe1, 0xf1, 0xf0, 0xdd, 0xee,
+
  0xde, 0x93, 0x77, 0x3f, 0x1c, 0xbd, 0x7a, 0x37, 0x7c, 0x7e, 0xb8, 0xf7,
+
  0x70, 0x5d, 0x30, 0x17, 0x19, 0x8c, 0x5c, 0x04, 0xcb, 0xf2, 0x92, 0x4a,
+
  0xef, 0x2d, 0x6e, 0x7c, 0xe3, 0x81, 0xf6, 0x70, 0xb6, 0x86, 0xf3, 0xc3,
+
  0x3c, 0x70, 0x1f, 0xd6, 0x9f, 0x10, 0x06, 0xf2, 0x53, 0xfc, 0xf7, 0x1b,
+
  0xbf, 0x9f, 0x12, 0x6d, 0x55, 0x1b, 0x76, 0x07, 0x3d, 0x3d, 0x88, 0x0b,
+
  0xce, 0x44, 0xc7, 0xcb, 0x49, 0x44, 0xe7, 0xa6, 0x82, 0x77, 0xd4, 0xfa,
+
  0x10, 0x35, 0xf6, 0x86, 0x6f, 0x4e, 0x7b, 0x7d, 0x2e, 0x23, 0xc2, 0x27,
+
  0xc4, 0xf0, 0x77, 0xc4, 0x3e, 0xf0, 0xe8, 0xe1, 0xce, 0xc3, 0x07, 0x5b,
+
  0x03, 0x63, 0xf8, 0xcf, 0x2a, 0xea, 0xc1, 0x11, 0xa8, 0x6c, 0xa0, 0x2f,
+
  0x2d, 0x34, 0x50, 0xe9, 0x6a, 0x89, 0x98, 0x17, 0xd2, 0x7c, 0x41, 0x8e,
+
  0x5f, 0xf6, 0x4d, 0x13, 0xd5, 0x2e, 0xf3, 0x53, 0x64, 0x2c, 0x31, 0x1d,
+
  0x9a, 0x66, 0x33, 0xd8, 0x84, 0x89, 0xd5, 0x52, 0xad, 0x24, 0xae, 0x70,
+
  0xe1, 0xa4, 0xa1, 0x04, 0x14, 0xc3, 0x5a, 0xdd, 0x23, 0xc8, 0x6d, 0x7a,
+
  0xcc, 0x4b, 0xcb, 0x8a, 0xf5, 0x35, 0xf4, 0xa4, 0xac, 0xba, 0xe3, 0x88,
+
  0xc2, 0x82, 0xfd, 0x90, 0x2f, 0x71, 0x53, 0x68, 0x1c, 0x1d, 0x46, 0x46,
+
  0xe9, 0x3c, 0x16, 0xee, 0x32, 0xdc, 0x78, 0x28, 0x1c, 0x80, 0xde, 0xfb,
+
  0x3d, 0x16, 0x66, 0x16, 0x38, 0xe5, 0xf5, 0x4e, 0x80, 0xd0, 0x41, 0x8b,
+
  0x7c, 0xcd, 0xee, 0x3f, 0x65, 0xe3, 0x2f, 0x44, 0xc0, 0x91, 0xb9, 0x88,
+
  0xc8, 0x8d, 0x9c, 0x58, 0xdc, 0x94, 0x38, 0x0d, 0x11, 0xf7, 0x3c, 0x05,
+
  0xbd, 0x6e, 0xd2, 0x8d, 0x31, 0xae, 0xde, 0x00, 0xe7, 0x75, 0x06, 0x5a,
+
  0xed, 0x21, 0xf2, 0xd5, 0x52, 0x2d, 0x4d, 0x1e, 0x83, 0xd5, 0xe9, 0xea,
+
  0x7c, 0x8e, 0x00, 0x10, 0x82, 0xca, 0xae, 0xae, 0x1d, 0x35, 0x6f, 0xf5,
+
  0x59, 0x77, 0xd4, 0xcc, 0x62, 0x71, 0x35, 0x71, 0xde, 0x9b, 0xdb, 0xe6,
+
  0xdc, 0xc3, 0x06, 0xd3, 0x40, 0x41, 0xb4, 0x3f, 0xda, 0x5a, 0x45, 0x08,
+
  0xfb, 0x57, 0x6c, 0xad, 0x78, 0xc1, 0x9a, 0xaf, 0x2d, 0x7a, 0x9a, 0xc7,
+
  0x4c, 0xee, 0x77, 0xc3, 0x9d, 0xb5, 0xf8, 0x4c, 0xa9, 0x38, 0xf7, 0xbd,
+
  0xd5, 0x3a, 0x58, 0x6b, 0xbb, 0x51, 0xd5, 0x0d, 0x2a, 0x88, 0xdf, 0x23,
+
  0x20, 0x5c, 0x13, 0xa3, 0xd6, 0xb1, 0x6c, 0xc8, 0x92, 0x31, 0x6a, 0xcb,
+
  0x15, 0xf7, 0xc0, 0xbb, 0x01, 0x9c, 0x96, 0x2d, 0x59, 0x1a, 0x45, 0x9c,
+
  0xd3, 0x5f, 0xf8, 0x1d, 0x8a, 0xd1, 0xa5, 0x11, 0xe9, 0x53, 0x2a, 0x4e,
+
  0x6a, 0x11, 0x10, 0xbe, 0x56, 0x56, 0xb3, 0x3a, 0x30, 0xa4, 0xd5, 0x14,
+
  0x86, 0x62, 0x5b, 0xc3, 0xbd, 0x43, 0xa1, 0xf1, 0x4e, 0xb6, 0x79, 0x47,
+
  0x53, 0x9d, 0x4d, 0x0d, 0x2a, 0x0e, 0x02, 0x66, 0x21, 0xe6, 0x19, 0x56,
+
  0xd8, 0x29, 0xc3, 0x69, 0x7d, 0x55, 0x84, 0x5c, 0x6e, 0x38, 0x0e, 0x88,
+
  0x17, 0xac, 0x77, 0xd5, 0xdc, 0x21, 0x63, 0x29, 0x35, 0x3b, 0x66, 0x23,
+
  0x39, 0x24, 0xc6, 0xd8, 0x96, 0x65, 0xf3, 0xfb, 0x78, 0xdf, 0x14, 0x5e,
+
  0xe3, 0xdd, 0xf9, 0x04, 0x09, 0x8c, 0x3a, 0xf2, 0xda, 0x44, 0xc4, 0x46,
+
  0x8f, 0xdb, 0x19, 0xc9, 0xb7, 0x45, 0x02, 0xa9, 0x81, 0xb7, 0xa4, 0xa8,
+
  0xdd, 0xff, 0x59, 0x14, 0xb5, 0xfb, 0x3f, 0x94, 0xa2, 0x76, 0x3f, 0x19,
+
  0x45, 0xed, 0xde, 0x8d, 0xa2, 0xac, 0x51, 0x8d, 0xaf, 0x7e, 0x0b, 0xfa,
+
  0xda, 0xbb, 0x1b, 0x7d, 0xed, 0xfd, 0xcf, 0xa2, 0xaf, 0xbd, 0xff, 0xa1,
+
  0xf4, 0xb5, 0xf7, 0xc9, 0xe8, 0x6b, 0xef, 0x5f, 0x44, 0x5f, 0xfb, 0x77,
+
  0xa3, 0xaf, 0xfd, 0x4f, 0x40, 0x5f, 0xff, 0x6e, 0x0e, 0xd1, 0xd7, 0xa6,
+
  0x96, 0x49, 0x3d, 0x0a, 0x0a, 0xc3, 0xe7, 0x16, 0x56, 0x61, 0xa8, 0x08,
+
  0xbf, 0x17, 0x97, 0x44, 0x35, 0xb8, 0x91, 0x68, 0xf6, 0x3f, 0x19, 0xd1,
+
  0xec, 0xdf, 0x89, 0x68, 0xf6, 0x56, 0x10, 0x0d, 0x82, 0xd1, 0x39, 0x44,
+
  0x63, 0xfd, 0x83, 0x41, 0xb2, 0xf1, 0xb1, 0xfe, 0x13, 0xac, 0x89, 0x43,
+
  0xb5, 0xb1, 0x49, 0x3e, 0x1f, 0x84, 0x6a, 0xd4, 0x9d, 0x16, 0xb4, 0x6f,
+
  0xd9, 0x96, 0x4d, 0x22, 0xa5, 0x1d, 0x1a, 0xc3, 0x81, 0xfc, 0x80, 0xb1,
+
  0xb9, 0x55, 0xb2, 0xaf, 0xac, 0xb5, 0xdd, 0x60, 0xd9, 0xf9, 0x45, 0x5a,
+
  0xae, 0x38, 0xce, 0x4e, 0xde, 0xff, 0x27, 0xda, 0x9b, 0x35, 0x77, 0x46,
+
  0x2b, 0x28, 0x9a, 0x05, 0x14, 0xce, 0x34, 0xad, 0xd7, 0x55, 0x4c, 0x87,
+
  0x95, 0x35, 0x14, 0xeb, 0x17, 0x51, 0x74, 0xd6, 0x50, 0xd8, 0x12, 0x8a,
+
  0xba, 0x70, 0xa4, 0x61, 0xa3, 0x24, 0xa2, 0xe5, 0x3a, 0x76, 0x99, 0x4e,
+
  0x19, 0xa7, 0xc0, 0xd5, 0x27, 0xbe, 0x23, 0x8e, 0x0e, 0xa4, 0x1b, 0x2f,
+
  0xc6, 0xf8, 0x10, 0x46, 0x11, 0x31, 0xce, 0x20, 0x67, 0x34, 0x3e, 0x96,
+
  0x7b, 0x6d, 0xd2, 0x2e, 0x9f, 0x66, 0xbf, 0xb9, 0xb4, 0x00, 0xe7, 0x9b,
+
  0x5e, 0xca, 0xda, 0x94, 0x50, 0x12, 0xd3, 0xfb, 0x02, 0x61, 0xa2, 0x0f,
+
  0x71, 0x1b, 0xcd, 0x51, 0xff, 0x79, 0xaf, 0x09, 0xf1, 0x38, 0xe5, 0xce,
+
  0xe0, 0xd9, 0x0d, 0xe9, 0xde, 0xce, 0x1b, 0x46, 0xdd, 0xa9, 0x62, 0x77,
+
  0x4d, 0x2f, 0xb4, 0x83, 0xaf, 0x4d, 0x85, 0xce, 0xbc, 0xd6, 0xf4, 0x0f,
+
  0x9a, 0x8d, 0x68, 0xee, 0x64, 0x32, 0x4e, 0xe3, 0xa4, 0x1a, 0x67, 0x59,
+
  0x38, 0xf4, 0xac, 0xc5, 0x0d, 0x09, 0x15, 0xa7, 0x46, 0x74, 0x7d, 0x84,
+
  0xc9, 0xb1, 0xb8, 0x37, 0xc8, 0x35, 0x51, 0xbc, 0x53, 0x93, 0x6f, 0xdc,
+
  0x0a, 0x60, 0xee, 0xe7, 0x85, 0x66, 0xfc, 0x60, 0x23, 0x62, 0xaf, 0x4c,
+
  0x19, 0x58, 0x38, 0x7d, 0x9f, 0x56, 0xe3, 0x32, 0x5b, 0x10, 0x5e, 0x4f,
+
  0x96, 0x63, 0xbd, 0xa7, 0x20, 0x04, 0x49, 0xfe, 0x19, 0x07, 0x86, 0x35,
+
  0xdb, 0x9e, 0xe1, 0x37, 0x50, 0x21, 0x68, 0x0d, 0xd7, 0x8b, 0x7b, 0x18,
+
  0x86, 0xc7, 0xef, 0xc9, 0xc6, 0x87, 0xbb, 0x29, 0xa9, 0xd4, 0x26, 0x5a,
+
  0x47, 0xda, 0xaa, 0x7a, 0x55, 0xc9, 0x0c, 0xa2, 0x1e, 0x66, 0xf3, 0x6c,
+
  0x96, 0x94, 0x72, 0x1c, 0x38, 0x9d, 0x1a, 0x3d, 0x84, 0xc0, 0xf7, 0xd0,
+
  0x97, 0x5a, 0x48, 0x17, 0x89, 0x8b, 0xf4, 0x03, 0x37, 0xbb, 0xa0, 0xb7,
+
  0xcd, 0xfd, 0x6a, 0xdd, 0x0b, 0xcc, 0xaf, 0x65, 0x3a, 0x3c, 0x1c, 0x1e,
+
  0xbd, 0x78, 0xd1, 0x68, 0x8d, 0x81, 0xeb, 0x46, 0x99, 0xdf, 0xdc, 0x60,
+
  0xb3, 0x9a, 0xc3, 0x02, 0xa6, 0xa5, 0xed, 0x92, 0xe8, 0x65, 0x39, 0xcc,
+
  0x81, 0xe5, 0x51, 0x66, 0x16, 0x70, 0xdf, 0x8c, 0x1b, 0xd5, 0x97, 0x18,
+
  0x5e, 0x20, 0x57, 0x46, 0x0e, 0xd3, 0xcc, 0x72, 0x38, 0x58, 0x17, 0xcb,
+
  0x79, 0x92, 0x57, 0x9f, 0xbd, 0x1a, 0xa8, 0x49, 0x4d, 0x9f, 0xd1, 0xe7,
+
  0xe4, 0xcc, 0x62, 0x56, 0x9c, 0xaf, 0x53, 0x15, 0xd4, 0x59, 0x16, 0xc4,
+
  0x83, 0x06, 0xf8, 0xab, 0xe1, 0xa7, 0x01, 0x4a, 0x77, 0xf8, 0x2b, 0x1d,
+
  0x1b, 0xbf, 0xc2, 0xc2, 0x3b, 0x89, 0xd9, 0xa4, 0xf2, 0xd8, 0x12, 0xa9,
+
  0xcc, 0x55, 0x13, 0xdf, 0x05, 0x87, 0x72, 0x83, 0x5c, 0xd4, 0xcf, 0x1b,
+
  0x76, 0xaf, 0xe4, 0xda, 0x7a, 0xdc, 0xbe, 0x88, 0x0f, 0xab, 0x0f, 0x91,
+
  0xaa, 0x2f, 0x46, 0x88, 0x10, 0x36, 0x8d, 0x4f, 0xf2, 0x2c, 0xab, 0x7f,
+
  0xa3, 0xa2, 0x1b, 0xb3, 0x26, 0xf7, 0x8e, 0x1f, 0x62, 0x46, 0xbe, 0x1b,
+
  0x71, 0xe1, 0x94, 0x9a, 0x84, 0x26, 0x67, 0x78, 0x4d, 0xcd, 0xad, 0x83,
+
  0x2c, 0xac, 0xee, 0xf6, 0x64, 0xb0, 0xd7, 0xd2, 0xf7, 0xe9, 0x99, 0x01,
+
  0x3c, 0x4c, 0x43, 0x27, 0x09, 0x27, 0x59, 0x55, 0x35, 0xcc, 0x00, 0xf7,
+
  0x84, 0x68, 0x81, 0x9f, 0xe4, 0x6c, 0x3e, 0xef, 0xbe, 0x68, 0x1d, 0x01,
+
  0x00, 0x88, 0x7f, 0x37, 0x6a, 0x70, 0xdf, 0xfc, 0x13, 0x51, 0x43, 0x30,
+
  0x63, 0xe8, 0x56, 0xe4, 0xc0, 0xd0, 0xcc, 0x9f, 0x8e, 0x1e, 0xda, 0xfb,
+
  0xff, 0x2f, 0x15, 0xd5, 0x0d, 0x59, 0x7d, 0xb3, 0xb0, 0x66, 0x59, 0x7d,
+
  0x1f, 0xa2, 0x5a, 0x3a, 0x4a, 0xf4, 0x7e, 0xdf, 0xc3, 0xb6, 0x06, 0x9e,
+
  0x33, 0xfe, 0x56, 0xe3, 0xa4, 0x65, 0xf9, 0xef, 0x22, 0x17, 0xef, 0xe0,
+
  0x97, 0x87, 0xe7, 0x07, 0x4a, 0xcc, 0xee, 0x44, 0xa3, 0x77, 0x93, 0x84,
+
  0x4d, 0xa2, 0xee, 0x37, 0xf8, 0x9f, 0x23, 0x17, 0xf9, 0xe8, 0xdc, 0x84,
+
  0xdf, 0xe8, 0xe3, 0xb9, 0x93, 0x70, 0xec, 0x12, 0xb6, 0xfc, 0x4c, 0x97,
+
  0xf6, 0x11, 0xde, 0x3e, 0x96, 0xb6, 0xbc, 0x4f, 0x11, 0x93, 0xfe, 0x9b,
+
  0xb0, 0xf5, 0x71, 0xc4, 0x82, 0x31, 0x52, 0x5c, 0x72, 0xf2, 0x34, 0xbc,
+
  0x0d, 0xf4, 0xf1, 0xd0, 0xca, 0x6a, 0xd8, 0xbe, 0xae, 0xac, 0x82, 0x3c,
+
  0xad, 0x83, 0x40, 0x59, 0xb4, 0xaf, 0xee, 0x84, 0x3e, 0x9f, 0xbe, 0xe3,
+
  0xce, 0x82, 0x7f, 0xc4, 0xb8, 0x38, 0x6b, 0xf2, 0x9e, 0x64, 0x54, 0xe1,
+
  0xb2, 0xd7, 0xee, 0x70, 0xcd, 0x14, 0xe2, 0x26, 0x8a, 0xd1, 0x19, 0x6e,
+
  0xdb, 0x72, 0x31, 0x2b, 0x92, 0x49, 0x4c, 0xc9, 0x83, 0x41, 0x9e, 0xc4,
+
  0x6d, 0x01, 0x2c, 0x66, 0x59, 0xbb, 0x3f, 0x0c, 0xf5, 0x18, 0x90, 0xa4,
+
  0xe2, 0x42, 0x80, 0xa7, 0xc8, 0x4d, 0xf0, 0xf6, 0xcd, 0xcb, 0x41, 0xb0,
+
  0x5c, 0x5e, 0xeb, 0x8c, 0xf9, 0x26, 0xd2, 0xae, 0xb3, 0x76, 0x02, 0x28,
+
  0xdc, 0xdc, 0x77, 0x6a, 0x13, 0x92, 0x05, 0x4a, 0xc6, 0x80, 0x6d, 0xed,
+
  0x3c, 0x9d, 0xfa, 0x4e, 0x45, 0xaf, 0x4f, 0xce, 0x8e, 0x59, 0x26, 0xa2,
+
  0xaf, 0x91, 0xd2, 0x7e, 0x18, 0x0f, 0x0e, 0x55, 0xed, 0x19, 0x72, 0xc3,
+
  0x6d, 0x2d, 0xaf, 0x0a, 0xf4, 0x95, 0x62, 0x64, 0x80, 0xa2, 0x94, 0x36,
+
  0xaa, 0x44, 0xeb, 0x94, 0x41, 0x8f, 0x7f, 0x53, 0x8f, 0x74, 0xcd, 0xad,
+
  0x6a, 0xbe, 0x04, 0x87, 0x27, 0x3d, 0x7f, 0x87, 0x53, 0x5c, 0x71, 0x91,
+
  0xe5, 0xef, 0xcd, 0xbc, 0x4a, 0x26, 0x26, 0xfb, 0x34, 0xc5, 0x0e, 0x70,
+
  0x96, 0x6f, 0xea, 0x1b, 0xbf, 0xca, 0x2d, 0x97, 0x55, 0x2a, 0x7e, 0x17,
+
  0x1a, 0x7b, 0x8e, 0x2d, 0x21, 0x10, 0x95, 0x6e, 0x76, 0x2d, 0x38, 0xc1,
+
  0x94, 0xb1, 0x40, 0x1b, 0x1b, 0x61, 0x9a, 0xbe, 0xf6, 0x51, 0x6a, 0x33,
+
  0x60, 0x58, 0x90, 0x06, 0x5e, 0xb5, 0xe4, 0x15, 0x69, 0x27, 0x82, 0xcd,
+
  0xe1, 0x96, 0x78, 0x79, 0xf8, 0x00, 0x9c, 0xbe, 0x3d, 0x33, 0x75, 0x33,
+
  0x6b, 0x24, 0xde, 0x99, 0xa6, 0x42, 0x76, 0xa5, 0x50, 0x92, 0x6c, 0x26,
+
  0x08, 0xa4, 0x74, 0x3e, 0x4b, 0x29, 0x27, 0x79, 0x4b, 0x1d, 0x55, 0xc0,
+
  0xf1, 0x81, 0x18, 0x9c, 0x63, 0x9d, 0x04, 0xb3, 0xd0, 0xc5, 0x9e, 0x3c,
+
  0x9c, 0x51, 0x6e, 0x77, 0x9d, 0x6a, 0x82, 0x8a, 0xf3, 0x8c, 0x01, 0x08,
+
  0x1d, 0x78, 0x88, 0x3e, 0x45, 0xc0, 0xca, 0xb7, 0xbc, 0xc4, 0xb9, 0x6b,
+
  0x9a, 0xba, 0xdb, 0xf1, 0x48, 0x9f, 0x8e, 0x8f, 0xc7, 0xa9, 0xb6, 0xa6,
+
  0x46, 0xa0, 0x57, 0x54, 0x55, 0xe3, 0x33, 0x1c, 0xea, 0x02, 0xa8, 0x9e,
+
  0x76, 0xb2, 0xf4, 0x90, 0xe4, 0x04, 0x81, 0x49, 0x84, 0x1b, 0xf9, 0x35,
+
  0x22, 0x19, 0x8e, 0x93, 0x46, 0x52, 0x12, 0xd3, 0x4b, 0x8f, 0xf1, 0xe2,
+
  0x16, 0x06, 0x96, 0xf4, 0xaf, 0x40, 0xda, 0x94, 0x6e, 0x65, 0x9a, 0x50,
+
  0xa0, 0x6f, 0xd6, 0x3f, 0xd0, 0x2a, 0xef, 0x08, 0x0c, 0xb1, 0xd0, 0xc4,
+
  0xba, 0xb9, 0x9f, 0x3c, 0x28, 0x95, 0x50, 0x83, 0xe8, 0x18, 0xaf, 0xf6,
+
  0x07, 0xfa, 0x23, 0x8d, 0xb0, 0x48, 0xb2, 0xd2, 0xac, 0x13, 0x82, 0xa8,
+
  0xb0, 0xc3, 0xcb, 0x03, 0xa5, 0x64, 0xca, 0xe3, 0xb2, 0x51, 0xb4, 0x65,
+
  0xa8, 0x87, 0xdc, 0x80, 0x4f, 0x03, 0xf1, 0x2a, 0x03, 0x4b, 0xd0, 0x43,
+
  0xd1, 0x3d, 0x82, 0x97, 0xef, 0xa9, 0x81, 0x0d, 0xcf, 0xf6, 0x32, 0x80,
+
  0xdc, 0x99, 0x24, 0xe5, 0x39, 0x05, 0x34, 0xfa, 0xe4, 0x73, 0x64, 0xc8,
+
  0x53, 0x9c, 0xc5, 0xb5, 0x59, 0x12, 0x7d, 0xbc, 0xaa, 0x98, 0x01, 0xb5,
+
  0x83, 0xa1, 0x19, 0x0c, 0x01, 0xe2, 0xbb, 0x39, 0x08, 0xaa, 0xd2, 0x53,
+
  0x08, 0x3f, 0xd5, 0xe9, 0x31, 0xf4, 0x03, 0xce, 0x3b, 0x0e, 0x34, 0x78,
+
  0x61, 0xfe, 0x8a, 0x37, 0x22, 0xcf, 0xfb, 0x22, 0x54, 0x40, 0xcf, 0x93,
+
  0x52, 0x2f, 0x7c, 0xce, 0x60, 0x71, 0x4c, 0x16, 0x07, 0xce, 0x71, 0xe5,
+
  0xd4, 0xf7, 0x64, 0x55, 0x17, 0x2c, 0xd6, 0x69, 0x30, 0x89, 0xea, 0xe1,
+
  0xfe, 0xde, 0x5e, 0xc4, 0xba, 0x1c, 0x83, 0xed, 0x73, 0x05, 0x06, 0x76,
+
  0x56, 0x13, 0x38, 0x07, 0x16, 0x7f, 0x0a, 0x8f, 0x89, 0xa2, 0xab, 0x98,
+
  0x76, 0x61, 0x55, 0xd0, 0x6e, 0x81, 0x6c, 0x9d, 0x01, 0x39, 0x16, 0x93,
+
  0x6b, 0x3b, 0x30, 0x50, 0x4c, 0x89, 0x7c, 0x0a, 0xb8, 0x8b, 0xe0, 0x97,
+
  0x71, 0xd6, 0x4b, 0x15, 0x05, 0xb1, 0x94, 0x67, 0x52, 0xb3, 0x84, 0x02,
+
  0x63, 0x4c, 0x3d, 0x31, 0x91, 0x08, 0x73, 0xfa, 0x15, 0x14, 0xf7, 0xe9,
+
  0xb2, 0x44, 0xee, 0x49, 0x55, 0x78, 0xf9, 0x75, 0x74, 0x15, 0xa8, 0xb4,
+
  0xf4, 0xc9, 0xef, 0xe3, 0x8b, 0xf9, 0xba, 0xd2, 0x7e, 0xcf, 0xba, 0xd3,
+
  0xe6, 0x3b, 0xae, 0xef, 0x65, 0xf3, 0xf3, 0xbf, 0xed, 0xc6, 0xbb, 0x3b,
+
  0x3b, 0x3b, 0xbf, 0x0c, 0x16, 0x48, 0xb9, 0x5c, 0xdf, 0x03, 0xff, 0x0e,
+
  0x1a, 0x45, 0x80, 0x1d, 0xa2, 0xde, 0x79, 0xad, 0xde, 0x3f, 0xf0, 0xc7,
+
  0x6e, 0x1f, 0xff, 0xdd, 0xfb, 0x67, 0x6f, 0x3d, 0x71, 0xff, 0x03, 0x2e,
+
  0x12, 0x96, 0xa4, 0x90, 0xc2, 0x65, 0x40, 0x20, 0x1a, 0xda, 0x56, 0x39,
+
  0x8b, 0xff, 0xbe, 0x4c, 0x61, 0xeb, 0xb1, 0xc0, 0x26, 0xf1, 0x74, 0x2d,
+
  0x60, 0x52, 0x4d, 0x30, 0xa6, 0x64, 0x42, 0xd6, 0xe7, 0x22, 0x4b, 0xc7,
+
  0xa9, 0x54, 0xdc, 0x24, 0xd8, 0x2b, 0x8d, 0x95, 0xbe, 0x44, 0xc4, 0xdc,
+
  0x1f, 0xc3, 0x0a, 0x10, 0x72, 0x87, 0x7e, 0xa4, 0x4a, 0x00, 0x8a, 0x6b,
+
  0x39, 0xd2, 0x78, 0x90, 0x78, 0x1a, 0x0b, 0xaa, 0x8b, 0xc6, 0x3c, 0xdd,
+
  0xea, 0x3a, 0xaf, 0x39, 0xdd, 0x9b, 0x1d, 0x1f, 0x20, 0xc5, 0x7d, 0x3a,
+
  0xa7, 0x93, 0x4d, 0x9b, 0x3e, 0x25, 0x8c, 0x04, 0x9c, 0x0e, 0xbe, 0x94,
+
  0x50, 0x13, 0x59, 0x7f, 0xc8, 0xf8, 0x4c, 0x8d, 0xfc, 0x41, 0x40, 0xc7,
+
  0x23, 0xef, 0xb3, 0x30, 0x0d, 0x46, 0x91, 0xaa, 0xb4, 0x18, 0x66, 0xe3,
+
  0x8f, 0x1b, 0xd1, 0xe6, 0x02, 0x14, 0xd9, 0xad, 0xbe, 0x48, 0xde, 0xca,
+
  0x38, 0xfa, 0x38, 0xd5, 0xcc, 0xef, 0x58, 0x61, 0x34, 0xc4, 0xa4, 0x8a,
+
  0x09, 0x7e, 0x96, 0x27, 0x13, 0x42, 0xc4, 0x4b, 0x9d, 0xb7, 0x26, 0x49,
+
  0x46, 0x2b, 0x21, 0x52, 0x1e, 0xe7, 0x3d, 0x2d, 0x50, 0x4a, 0x28, 0xd3,
+
  0x89, 0xc8, 0xe1, 0x4e, 0xd1, 0xb6, 0x79, 0x52, 0xbe, 0xf7, 0xba, 0xb2,
+
  0xf0, 0x14, 0xc9, 0x9d, 0x18, 0x42, 0xfe, 0x73, 0xb7, 0xfb, 0xd3, 0x9d,
+
  0x17, 0xe7, 0x21, 0x48, 0x0c, 0x58, 0x8c, 0xbc, 0x46, 0xb6, 0xbc, 0xbd,
+
  0xf9, 0x6b, 0x5e, 0x36, 0xd2, 0x3c, 0xf0, 0x7e, 0xe7, 0x76, 0xd0, 0xd7,
+
  0xb7, 0xa7, 0x45, 0x71, 0xab, 0xe7, 0x7f, 0xbb, 0xde, 0xe9, 0x75, 0xee,
+
  0xa6, 0x3b, 0x29, 0xc3, 0xf3, 0x2e, 0x77, 0xf7, 0xfe, 0x48, 0x6f, 0xff,
+
  0xfb, 0xbd, 0x1d, 0x98, 0xe9, 0x9a, 0x07, 0xb7, 0x4d, 0xc6, 0x74, 0x7e,
+
  0xf5, 0x34, 0x37, 0xf4, 0xf5, 0x27, 0x2d, 0x7c, 0x72, 0x9c, 0xc5, 0x53,
+
  0xf8, 0xc7, 0xcb, 0x92, 0xd3, 0xbe, 0x87, 0x09, 0x65, 0x9f, 0xb3, 0xd0,
+
  0x9d, 0xa6, 0xf5, 0xf8, 0xc2, 0x77, 0x77, 0x82, 0xae, 0x88, 0xef, 0x0c,
+
  0x0f, 0x95, 0xec, 0x71, 0x10, 0x9c, 0x6d, 0x1e, 0xae, 0x01, 0x7a, 0x19,
+
  0x16, 0x86, 0xdc, 0xac, 0xb6, 0x94, 0x74, 0xb0, 0x76, 0x99, 0xd5, 0xaf,
+
  0x8e, 0xc3, 0xc6, 0x0a, 0x9a, 0x90, 0xba, 0xc0, 0xd7, 0xa2, 0xac, 0x65,
+
  0x2c, 0x66, 0x62, 0x21, 0x9b, 0x0a, 0x84, 0xd2, 0x93, 0xbd, 0xef, 0x05,
+
  0x94, 0xe7, 0xde, 0x54, 0xbf, 0x82, 0x37, 0xd9, 0x92, 0x0e, 0x56, 0x46,
+
  0xa1, 0xa6, 0xe2, 0xb5, 0x24, 0x3a, 0x5f, 0x62, 0xd0, 0x68, 0x94, 0x88,
+
  0xe6, 0xaa, 0xfd, 0xdd, 0xc2, 0x86, 0x07, 0x2a, 0x60, 0x69, 0x49, 0xea,
+
  0x72, 0xb5, 0x1c, 0xc5, 0x62, 0x4a, 0xd2, 0x8c, 0xa8, 0x5c, 0x10, 0xf5,
+
  0x82, 0x67, 0x2f, 0x8e, 0xce, 0xb8, 0x35, 0x55, 0x9f, 0xd1, 0x9c, 0xe1,
+
  0x07, 0x62, 0x75, 0xb6, 0xb5, 0x12, 0xc6, 0x02, 0xc7, 0xcc, 0x66, 0x12,
+
  0xe5, 0x26, 0xe3, 0x38, 0xb1, 0x25, 0xf7, 0x0d, 0x93, 0xb0, 0x1f, 0x15,
+
  0x28, 0xf7, 0xae, 0xb2, 0x2a, 0x0d, 0x41, 0x46, 0x35, 0xac, 0x47, 0xd3,
+
  0x82, 0xec, 0xc1, 0xc3, 0xc1, 0x0e, 0xbf, 0x22, 0xae, 0xa1, 0x9c, 0x6a,
+
  0x01, 0x99, 0xa7, 0xa0, 0xb7, 0xa6, 0xda, 0x27, 0xe1, 0x1a, 0x22, 0x33,
+
  0x95, 0x7e, 0x84, 0x30, 0x76, 0x94, 0x4a, 0x5e, 0x17, 0xb1, 0x7e, 0xeb,
+
  0xe0, 0x42, 0x84, 0xda, 0xd3, 0x29, 0xd2, 0xaa, 0xb6, 0x00, 0x46, 0x13,
+
  0x9c, 0x77, 0x55, 0x70, 0xcc, 0xb8, 0x8d, 0x26, 0xf1, 0xae, 0xb8, 0x20,
+
  0x84, 0x1d, 0x0d, 0xf7, 0xf8, 0xd5, 0x57, 0xa8, 0xda, 0x9d, 0x38, 0xc5,
+
  0x65, 0xb4, 0xea, 0x5d, 0x15, 0xb6, 0x06, 0x0f, 0x3f, 0x3a, 0x81, 0x45,
+
  0x15, 0xe4, 0xa9, 0x7e, 0x44, 0x9c, 0x34, 0x1b, 0x2f, 0x31, 0xca, 0x43,
+
  0x24, 0x88, 0xed, 0xdc, 0xb0, 0x4c, 0xac, 0xaa, 0x30, 0x49, 0x82, 0x97,
+
  0x27, 0xd0, 0xe4, 0x0c, 0x11, 0x6b, 0xd9, 0x1b, 0x24, 0xbe, 0x00, 0x7b,
+
  0x93, 0x68, 0x34, 0x62, 0x25, 0xa1, 0xa2, 0x77, 0x0d, 0xba, 0xff, 0x7c,
+
  0x10, 0x7d, 0x97, 0x5e, 0x25, 0x65, 0xfa, 0x1f, 0x41, 0x2e, 0xfb, 0xe9,
+
  0xc0, 0x05, 0x68, 0xf4, 0xb5, 0xb8, 0xc9, 0x41, 0x5f, 0xfc, 0x56, 0xcc,
+
  0x47, 0x1a, 0x00, 0x03, 0x86, 0x73, 0x7c, 0x47, 0x0a, 0x55, 0x25, 0x0e,
+
  0x99, 0x10, 0xc2, 0x3d, 0xe3, 0x16, 0x0b, 0x76, 0x0d, 0x87, 0xbd, 0xd4,
+
  0xe4, 0x1f, 0x60, 0x16, 0x0a, 0x1f, 0x08, 0xa2, 0x01, 0x7c, 0x79, 0x4d,
+
  0x79, 0x06, 0x49, 0xe4, 0xe5, 0x7b, 0x60, 0xca, 0x8a, 0xa0, 0xd8, 0xb2,
+
  0x46, 0x6d, 0xd9, 0x12, 0x9e, 0x0e, 0xf2, 0x70, 0x93, 0x00, 0xee, 0x7d,
+
  0x85, 0xc9, 0xb7, 0x5f, 0x1f, 0x36, 0x93, 0xef, 0x3d, 0x28, 0xb1, 0x25,
+
  0xee, 0x13, 0x69, 0xc5, 0x4d, 0xef, 0xa2, 0x68, 0xc2, 0xa8, 0x79, 0xe3,
+
  0xeb, 0x93, 0xe5, 0x85, 0x14, 0x0d, 0x02, 0x75, 0x7f, 0x4f, 0xf6, 0x71,
+
  0x55, 0x16, 0x48, 0x73, 0x51, 0xee, 0xbd, 0xd9, 0x81, 0x19, 0x79, 0x4d,
+
  0x67, 0xd0, 0x77, 0x3e, 0xb0, 0xf9, 0xf6, 0x9b, 0xe3, 0xc3, 0x67, 0xaf,
+
  0x8e, 0x6f, 0x80, 0xb1, 0x16, 0xcf, 0x1b, 0x49, 0x97, 0xb6, 0xe3, 0xed,
+
  0x50, 0xde, 0xb5, 0x8c, 0x93, 0x73, 0x5c, 0xc4, 0x60, 0xb2, 0xb5, 0xf8,
+
  0xde, 0x54, 0x9a, 0x90, 0xea, 0x86, 0xb7, 0x1c, 0x9e, 0xb3, 0xea, 0x54,
+
  0x8a, 0xf9, 0x42, 0x58, 0x04, 0x6e, 0x8b, 0x40, 0x4d, 0x24, 0xf2, 0x38,
+
  0x88, 0xea, 0xfd, 0xa3, 0x59, 0x92, 0xbf, 0x37, 0xf8, 0x59, 0x3c, 0x52,
+
  0x1f, 0x91, 0xab, 0xb9, 0x03, 0x93, 0xfd, 0x50, 0xf0, 0x09, 0xc8, 0x2c,
+
  0x6b, 0x0d, 0xf7, 0xf7, 0x25, 0x7a, 0x45, 0x50, 0x33, 0x52, 0x64, 0x30,
+
  0x01, 0xf8, 0x72, 0xe9, 0xd1, 0xb4, 0x07, 0x63, 0xa6, 0xf4, 0x9c, 0x98,
+
  0x12, 0x5f, 0xe7, 0x47, 0xd1, 0xb8, 0xe4, 0x88, 0xab, 0x6b, 0x14, 0x2c,
+
  0xac, 0x83, 0x21, 0x61, 0x4e, 0x14, 0x5a, 0x98, 0x28, 0xdb, 0x08, 0x96,
+
  0x64, 0xbe, 0xa8, 0xaf, 0xad, 0x5a, 0x89, 0x4e, 0xd0, 0xf6, 0x12, 0x6f,
+
  0xf6, 0x7a, 0x5b, 0x54, 0x6d, 0x1e, 0x70, 0x95, 0x30, 0x80, 0xb1, 0x84,
+
  0xa3, 0xf9, 0x25, 0x0a, 0xdc, 0x6c, 0xf4, 0x63, 0x70, 0x11, 0x39, 0xab,
+
  0xa3, 0xa4, 0x11, 0x9a, 0xaa, 0x2c, 0x6a, 0x58, 0x49, 0x55, 0x32, 0x6d,
+
  0xcf, 0x0b, 0x2e, 0x6f, 0xa4, 0x50, 0x57, 0xa6, 0x61, 0x66, 0x4a, 0x80,
+
  0x3a, 0xae, 0xa1, 0x5b, 0x2d, 0xd0, 0x8f, 0xbc, 0xd9, 0x8b, 0x7a, 0x5b,
+
  0xe1, 0x0c, 0xf4, 0x43, 0x5a, 0x30, 0xe7, 0x2d, 0x3e, 0x5f, 0x67, 0xb1,
+
  0xc3, 0xa8, 0xc7, 0x84, 0xb7, 0xb3, 0xf3, 0x78, 0x4d, 0x0d, 0xeb, 0x79,
+
  0xdf, 0xec, 0x7a, 0xa3, 0x84, 0x8a, 0x3f, 0x72, 0x8e, 0xc5, 0x52, 0xf7,
+
  0x0c, 0xd4, 0x2a, 0xf8, 0xf7, 0x40, 0x13, 0xd6, 0xbb, 0x14, 0x2c, 0x63,
+
  0xfc, 0x9a, 0xb6, 0x8d, 0x26, 0x5f, 0x5e, 0x7c, 0x44, 0xd4, 0x37, 0x91,
+
  0xbd, 0x3d, 0xb6, 0x2e, 0x21, 0xe4, 0x4e, 0x1f, 0x44, 0x27, 0xa6, 0xc3,
+
  0x6a, 0x9c, 0x33, 0x13, 0xaf, 0xcb, 0xb1, 0xcc, 0x97, 0x7e, 0x17, 0x04,
+
  0x89, 0x64, 0x16, 0xda, 0x2b, 0xdc, 0xe5, 0x0a, 0xc1, 0x37, 0xae, 0x8d,
+
  0x9e, 0xd6, 0x98, 0x9d, 0x02, 0x37, 0x49, 0x8f, 0x09, 0x58, 0x00, 0x20,
+
  0x59, 0xa9, 0xc5, 0x4a, 0x3c, 0xcb, 0xad, 0x9d, 0xa7, 0xef, 0xd8, 0x30,
+
  0x3c, 0xa4, 0x83, 0x87, 0x60, 0x2e, 0xaf, 0xa4, 0x1c, 0x6b, 0x86, 0x0d,
+
  0x32, 0x16, 0xaa, 0x7e, 0x69, 0x3f, 0xd2, 0x59, 0x91, 0xb7, 0x75, 0x26,
+
  0xae, 0x7d, 0xe2, 0xcc, 0x09, 0x84, 0x61, 0x98, 0x2f, 0x0a, 0xd0, 0x6c,
+
  0x46, 0xb3, 0xd4, 0x64, 0xa9, 0xf1, 0x7d, 0xca, 0x28, 0xdc, 0x27, 0xe3,
+
  0xa9, 0xf6, 0x74, 0x0a, 0x0b, 0x62, 0x45, 0x53, 0x35, 0x9b, 0x01, 0xe4,
+
  0xdf, 0x67, 0xfc, 0x70, 0xef, 0x95, 0x40, 0xa1, 0x10, 0xd1, 0x20, 0x7a,
+
  0x4d, 0xc6, 0xe5, 0x19, 0x95, 0xeb, 0x6e, 0xbe, 0xc8, 0x26, 0xa9, 0x1b,
+
  0x17, 0x13, 0xeb, 0x18, 0x8e, 0xbb, 0xe7, 0x3a, 0xa3, 0x43, 0x42, 0x47,
+
  0x16, 0xd7, 0x18, 0xb5, 0x0a, 0xaa, 0x41, 0x45, 0x8c, 0x0a, 0x0b, 0xc3,
+
  0x83, 0x0e, 0x91, 0x34, 0xe7, 0x48, 0x46, 0x41, 0x4a, 0x19, 0x06, 0x37,
+
  0xc6, 0xa5, 0x87, 0x3a, 0x41, 0xb6, 0x30, 0x10, 0x31, 0x8f, 0x28, 0xcb,
+
  0x73, 0x8d, 0xc8, 0x13, 0xac, 0x9c, 0x20, 0xb8, 0x06, 0x08, 0x56, 0x52,
+
  0x25, 0x69, 0x79, 0xa8, 0x08, 0xd5, 0xf6, 0x98, 0x6d, 0xe7, 0xb2, 0xd0,
+
  0x9b, 0xda, 0x96, 0xe2, 0x4a, 0x0d, 0x0c, 0xad, 0x4e, 0x02, 0xfc, 0x32,
+
  0xe3, 0x1d, 0x10, 0xca, 0x00, 0x31, 0x4a, 0xaf, 0xc4, 0xb8, 0x1d, 0x5e,
+
  0x3c, 0x31, 0x4d, 0x18, 0x47, 0x19, 0xd5, 0x77, 0x6c, 0x4e, 0x94, 0x51,
+
  0x48, 0x91, 0x85, 0xf3, 0x85, 0x36, 0xaa, 0x2a, 0x53, 0x84, 0xcc, 0x40,
+
  0x80, 0x76, 0x7a, 0x8b, 0x44, 0x21, 0x74, 0xbd, 0xdc, 0x5e, 0x76, 0xf1,
+
  0x96, 0x26, 0x73, 0x07, 0xa9, 0x2b, 0x47, 0x0e, 0xc3, 0x9a, 0x15, 0x22,
+
  0x3b, 0xe3, 0x13, 0x59, 0xbe, 0x7b, 0x9a, 0xd5, 0x20, 0xe8, 0x67, 0x23,
+
  0x8d, 0xe3, 0x4f, 0x69, 0x39, 0x4a, 0xcb, 0xa2, 0x8a, 0xfe, 0xf2, 0x50,
+
  0x6d, 0x7d, 0x85, 0x2f, 0x65, 0x53, 0xc1, 0x74, 0x22, 0x20, 0xbe, 0xca,
+
  0x53, 0xf7, 0x52, 0x1f, 0x05, 0x2c, 0x92, 0x16, 0xd7, 0xa0, 0x9f, 0x3a,
+
  0x36, 0x83, 0x4b, 0xa5, 0x7c, 0xe4, 0xe0, 0x13, 0x20, 0x3f, 0xf8, 0x73,
+
  0x1a, 0x54, 0x80, 0xe5, 0xa1, 0x94, 0xf1, 0x47, 0x0a, 0x28, 0x75, 0x0b,
+
  0x88, 0x8a, 0x51, 0x9d, 0xd0, 0xdb, 0x99, 0x69, 0x9f, 0x65, 0x1c, 0xbb,
+
  0x51, 0xb1, 0x13, 0x44, 0xe5, 0x91, 0x2a, 0x47, 0x1c, 0x38, 0xcb, 0x33,
+
  0x24, 0x9b, 0x76, 0x29, 0x94, 0x45, 0xf5, 0x43, 0x2f, 0x37, 0xb9, 0xfb,
+
  0x83, 0xce, 0x49, 0xd5, 0xd3, 0x5e, 0x9f, 0xbd, 0x7c, 0x25, 0xcd, 0x38,
+
  0x2d, 0x97, 0x13, 0x5d, 0xd7, 0xba, 0xc7, 0x85, 0xeb, 0x70, 0x9b, 0x35,
+
  0x3f, 0xb8, 0xa9, 0x6b, 0xa1, 0x99, 0xc2, 0x94, 0x35, 0x45, 0xab, 0xd6,
+
  0x97, 0x62, 0xca, 0x52, 0x60, 0x92, 0xd5, 0x31, 0xaf, 0xdd, 0xae, 0xfd,
+
  0xe2, 0x4f, 0xa4, 0xc1, 0x8a, 0xb6, 0x9e, 0x82, 0x26, 0x20, 0x65, 0x80,
+
  0xcf, 0x48, 0x43, 0x2b, 0x12, 0x03, 0x01, 0xab, 0xc5, 0xb0, 0x43, 0xe7,
+
  0xc9, 0xfc, 0x26, 0xc8, 0x61, 0xd2, 0x8c, 0x8e, 0xce, 0xb3, 0xe2, 0x2a,
+
  0x8f, 0x5f, 0x62, 0x93, 0x88, 0xe8, 0x65, 0x71, 0x0e, 0x4b, 0xf5, 0x9a,
+
  0xcc, 0x91, 0xf6, 0xa6, 0xbd, 0x3d, 0x7d, 0x1d, 0x6d, 0xa2, 0x0e, 0x84,
+
  0xad, 0xe6, 0xf2, 0x71, 0xb6, 0x80, 0x35, 0xc6, 0x2b, 0xb7, 0xc4, 0x3b,
+
  0x5a, 0xb1, 0x6e, 0x2c, 0xb3, 0xe9, 0x47, 0xc7, 0x3f, 0x1d, 0xbe, 0x3a,
+
  0x7d, 0x79, 0xfc, 0x33, 0x3b, 0x48, 0xbd, 0xd7, 0xc1, 0x8f, 0xbf, 0x75,
+
  0x24, 0x18, 0x65, 0x4f, 0x62, 0xfe, 0x0f, 0xcc, 0xe3, 0xba, 0x8b, 0xc9,
+
  0x33, 0x5f, 0xb4, 0x1d, 0xf1, 0x4e, 0x5f, 0xc4, 0x69, 0xce, 0x06, 0x20,
+
  0x31, 0xac, 0x51, 0x96, 0xa3, 0x73, 0x97, 0x39, 0x73, 0x5a, 0xe2, 0xc4,
+
  0x22, 0xa4, 0x24, 0xaf, 0x69, 0x1e, 0x51, 0x16, 0x9c, 0x88, 0x7e, 0xf4,
+
  0x5a, 0x8b, 0xe7, 0xfb, 0xb4, 0xe5, 0x78, 0x04, 0x9f, 0x65, 0xe7, 0x94,
+
  0xed, 0xd9, 0xaa, 0x01, 0x16, 0x07, 0x01, 0x12, 0x41, 0x9b, 0x9e, 0xb1,
+
  0xe1, 0xa0, 0x66, 0x18, 0x57, 0xe9, 0x8c, 0xa3, 0xb5, 0x9d, 0xe2, 0x91,
+
  0x39, 0x24, 0xed, 0x22, 0x61, 0xba, 0xb5, 0x67, 0xa7, 0x18, 0x6f, 0x23,
+
  0x23, 0xce, 0xc4, 0x6b, 0xc0, 0x34, 0xc2, 0x62, 0x41, 0x34, 0x3b, 0xc3,
+
  0xf5, 0x0f, 0xa2, 0x5e, 0xbc, 0x8c, 0x0e, 0x7a, 0xc1, 0xd0, 0xae, 0x95,
+
  0xed, 0x9f, 0xa7, 0x9a, 0x8e, 0x76, 0xae, 0x3c, 0xa8, 0x52, 0x60, 0xf3,
+
  0x6b, 0x66, 0x91, 0xb4, 0xd5, 0x81, 0xb0, 0x51, 0xe7, 0x46, 0xdd, 0x5b,
+
  0x43, 0xbd, 0x22, 0x11, 0x2b, 0x0a, 0x80, 0xc9, 0x17, 0x9a, 0x2c, 0x4b,
+
  0xf5, 0x35, 0x9a, 0xa8, 0x20, 0xe5, 0x79, 0x00, 0x1b, 0x12, 0x5f, 0xc0,
+
  0x68, 0x79, 0x7e, 0xee, 0xbb, 0x3d, 0x71, 0x12, 0x20, 0x7a, 0x48, 0x3f,
+
  0x07, 0x13, 0x6e, 0xa3, 0x8a, 0x38, 0xef, 0x04, 0xb6, 0xa4, 0x47, 0xc9,
+
  0xcd, 0xcc, 0x23, 0x2f, 0x8a, 0x62, 0xd2, 0xc3, 0xa0, 0x9c, 0xa6, 0x26,
+
  0x91, 0xb7, 0xd5, 0x1f, 0x8e, 0xf3, 0xc9, 0x37, 0xbe, 0xd9, 0x88, 0x24,
+
  0x6f, 0x3c, 0xea, 0x89, 0xb2, 0x46, 0x92, 0xa4, 0xc7, 0x76, 0x1e, 0x50,
+
  0x02, 0xce, 0xbf, 0x1f, 0x6d, 0x3c, 0xdd, 0x90, 0xeb, 0x7a, 0x41, 0x4d,
+
  0x9e, 0xef, 0xe1, 0xc4, 0x60, 0xf6, 0x8a, 0x8c, 0x4d, 0xa0, 0x16, 0xad,
+
  0x84, 0x6c, 0x32, 0x49, 0x49, 0xa5, 0xc0, 0x48, 0xc4, 0x1c, 0xf6, 0x9e,
+
  0x9a, 0xa7, 0xa3, 0x3b, 0x81, 0xce, 0x4c, 0x5b, 0x19, 0xa2, 0xa9, 0xeb,
+
  0xcc, 0x79, 0xae, 0x1b, 0x7f, 0xd0, 0x19, 0x24, 0x93, 0x49, 0xc6, 0x3a,
+
  0x19, 0xa5, 0xd1, 0x58, 0xba, 0x92, 0xa7, 0x76, 0x1a, 0x0e, 0x52, 0x39,
+
  0x4f, 0xae, 0x35, 0xb2, 0x99, 0x82, 0x98, 0xc2, 0x6d, 0x9c, 0x5a, 0x8f,
+
  0x21, 0xf9, 0xf0, 0xc6, 0x26, 0xbf, 0x74, 0x8e, 0x38, 0x5b, 0x88, 0xb1,
+
  0x40, 0x06, 0xe9, 0x0a, 0x43, 0x06, 0xa7, 0xa3, 0xe1, 0x68, 0xeb, 0x1b,
+
  0x64, 0x95, 0xc0, 0xa4, 0xcf, 0x90, 0xa1, 0x83, 0x57, 0x8a, 0xda, 0x22,
+
  0x6e, 0xa2, 0x7e, 0x47, 0xc7, 0x04, 0xd3, 0xa4, 0xc8, 0x64, 0xa9, 0xb5,
+
  0x52, 0x49, 0x05, 0xfe, 0xea, 0xdf, 0x25, 0x15, 0xad, 0x91, 0xb1, 0x72,
+
  0xff, 0x38, 0xa2, 0x5e, 0xd6, 0xd7, 0xed, 0x9c, 0x3f, 0x3a, 0xa1, 0xb5,
+
  0x98, 0x85, 0x4b, 0x30, 0xfd, 0x06, 0xfa, 0x7d, 0xbf, 0x99, 0x8f, 0xd6,
+
  0xcc, 0xc9, 0x59, 0xb9, 0x0f, 0x1d, 0x79, 0x3e, 0xdd, 0xa3, 0x19, 0xa6,
+
  0xf4, 0x17, 0x59, 0xd8, 0x00, 0x66, 0xd9, 0x33, 0xc9, 0x47, 0x74, 0x13,
+
  0xd0, 0x04, 0x8e, 0x96, 0x23, 0xc3, 0xe2, 0x09, 0xd0, 0x12, 0x09, 0xad,
+
  0x24, 0xe1, 0xf6, 0x7b, 0xd5, 0x20, 0x64, 0x9b, 0xb0, 0xb1, 0x21, 0xec,
+
  0xc6, 0x94, 0x17, 0x91, 0x19, 0x82, 0x09, 0x74, 0x3a, 0x04, 0x02, 0xc2,
+
  0x10, 0x2f, 0xd1, 0xb1, 0x7d, 0xd9, 0xcc, 0x2a, 0xf5, 0x3e, 0x56, 0x3e,
+
  0xc3, 0xd1, 0xbf, 0x96, 0x1a, 0x36, 0x0c, 0x73, 0xc3, 0xe0, 0xef, 0xb5,
+
  0x6c, 0x9c, 0x22, 0x5b, 0x1f, 0xd2, 0xf1, 0xb2, 0x0e, 0x02, 0x91, 0x52,
+
  0x64, 0x8b, 0xdb, 0xa7, 0xd3, 0x94, 0x36, 0xdd, 0x78, 0x53, 0xef, 0x54,
+
  0x7b, 0x46, 0x1f, 0xf4, 0xb6, 0x34, 0xcd, 0x3c, 0x11, 0xe3, 0x8c, 0xbf,
+
  0xf0, 0x74, 0x46, 0x2c, 0xdb, 0x91, 0x29, 0x97, 0x29, 0x87, 0xcc, 0x6d,
+
  0xbd, 0x48, 0xf0, 0xf1, 0x70, 0xa6, 0xcb, 0xe0, 0xd3, 0xbf, 0xe7, 0x98,
+
  0xb0, 0xf3, 0x70, 0x39, 0x4e, 0x63, 0x0d, 0x17, 0x57, 0x1e, 0x27, 0xf4,
+
  0x9e, 0x5c, 0x10, 0x46, 0x6d, 0x74, 0x78, 0x09, 0xcc, 0x80, 0x88, 0x5f,
+
  0x6f, 0xd5, 0xc5, 0xf7, 0x22, 0x70, 0xc9, 0xac, 0x8e, 0xab, 0xcb, 0x71,
+
  0x18, 0xcd, 0x4a, 0x20, 0x69, 0x4d, 0xa3, 0xb1, 0x43, 0xb8, 0x78, 0x78,
+
  0x39, 0x3e, 0x50, 0xaf, 0x88, 0x23, 0xb9, 0xbd, 0x97, 0x3d, 0xac, 0xae,
+
  0xf3, 0xf1, 0xc5, 0xb3, 0xd7, 0xc3, 0xf0, 0xd0, 0x9c, 0xb6, 0xc4, 0x12,
+
  0x90, 0x3c, 0x88, 0x09, 0x5d, 0x0f, 0x7a, 0x46, 0xb1, 0xac, 0x58, 0x41,
+
  0x81, 0x69, 0x17, 0xb3, 0xcb, 0x14, 0xc1, 0x54, 0x9c, 0xef, 0xc2, 0xc3,
+
  0x35, 0x6e, 0x30, 0x9e, 0x78, 0x0c, 0xe2, 0x31, 0xe7, 0x13, 0xbd, 0x92,
+
  0x12, 0x2c, 0xe2, 0x04, 0x17, 0x04, 0xcd, 0x29, 0x5f, 0x41, 0x36, 0x3b,
+
  0x8b, 0xa9, 0x21, 0xe9, 0x44, 0x87, 0x2c, 0x9d, 0xb2, 0x35, 0xaf, 0xd9,
+
  0x71, 0x51, 0xcf, 0xb2, 0xc6, 0x52, 0xd9, 0x16, 0x15, 0xf2, 0xa5, 0x56,
+
  0x86, 0x10, 0xad, 0xe3, 0x68, 0x92, 0xbe, 0xe3, 0x0d, 0x76, 0x74, 0x91,
+
  0x94, 0x47, 0x45, 0x7e, 0x19, 0x9e, 0x55, 0xab, 0x32, 0x89, 0x7d, 0x71,
+
  0xce, 0x73, 0xc7, 0x70, 0x77, 0x32, 0xc6, 0x5a, 0x43, 0x54, 0x97, 0x80,
+
  0xcc, 0xb5, 0x02, 0x35, 0x3c, 0xdc, 0x26, 0x75, 0xca, 0x3c, 0xfe, 0xee,
+
  0xe8, 0xd9, 0x8b, 0xa3, 0xad, 0xf6, 0x4c, 0x9e, 0x31, 0x34, 0xbe, 0xbf,
+
  0x4d, 0x86, 0xec, 0x9c, 0x49, 0xd0, 0xc5, 0x62, 0x4e, 0xb3, 0xf2, 0xdb,
+
  0xf1, 0x48, 0x12, 0x82, 0x69, 0x59, 0x16, 0x25, 0xf1, 0xa7, 0xf7, 0x9a,
+
  0x2a, 0x3b, 0x4f, 0xe7, 0x98, 0x66, 0x65, 0x14, 0x1c, 0x0c, 0x29, 0x81,
+
  0xa6, 0x82, 0xca, 0x3b, 0x3d, 0x3c, 0x0e, 0x0f, 0x37, 0x41, 0x0b, 0x01,
+
  0x75, 0x25, 0x06, 0x83, 0xf1, 0xa2, 0x01, 0xe7, 0x55, 0x82, 0x8d, 0x00,
+
  0x89, 0x15, 0xd1, 0x74, 0x63, 0x54, 0x33, 0x86, 0x87, 0xc3, 0x97, 0x6d,
+
  0x4d, 0xda, 0xf0, 0x26, 0x13, 0xab, 0xae, 0xfc, 0xc4, 0x19, 0xb5, 0x8b,
+
  0xb5, 0x27, 0xde, 0xd1, 0x9b, 0xc3, 0x57, 0x40, 0x67, 0x9c, 0xd3, 0xe5,
+
  0x57, 0x8e, 0xd1, 0xd2, 0xc0, 0xc7, 0x34, 0x0b, 0x6f, 0xab, 0x7f, 0x18,
+
  0x0e, 0xe3, 0xc3, 0xd3, 0x17, 0xe1, 0x47, 0xc8, 0x97, 0x54, 0x36, 0xa3,
+
  0x45, 0x94, 0xde, 0x08, 0xcf, 0x87, 0x67, 0x43, 0xfd, 0xa1, 0x73, 0xa2,
+
  0x13, 0x49, 0xcd, 0x41, 0xfc, 0xcb, 0x81, 0xe6, 0xf6, 0xf8, 0xc7, 0xf6,
+
  0x9e, 0xb9, 0xc1, 0x60, 0x82, 0xea, 0xfa, 0x0c, 0x02, 0xb7, 0xed, 0xcb,
+
  0x6d, 0xfb, 0xab, 0x6e, 0x0b, 0xdc, 0x37, 0x64, 0xc7, 0xde, 0x0a, 0x0e,
+
  0x40, 0x4b, 0x96, 0x05, 0x6a, 0xed, 0xe8, 0x76, 0xee, 0x2d, 0xe0, 0x2b,
+
  0x49, 0xcf, 0x5e, 0x37, 0x07, 0x30, 0xf9, 0x4a, 0xf8, 0x4d, 0xac, 0x88,
+
  0xa2, 0xa2, 0x08, 0x3a, 0x26, 0x66, 0x40, 0xdf, 0x3a, 0xbd, 0x7c, 0x24,
+
  0x09, 0x5b, 0xc8, 0x34, 0x70, 0x23, 0xe9, 0x23, 0x63, 0xca, 0x78, 0x77,
+
  0xa8, 0x13, 0x20, 0xfc, 0x52, 0xae, 0x67, 0xa3, 0x4d, 0x62, 0xab, 0xf6,
+
  0xf2, 0x65, 0x52, 0x9e, 0xa7, 0x81, 0x94, 0x42, 0x6f, 0xad, 0xcc, 0xab,
+
  0xda, 0x8c, 0x4f, 0x90, 0x9e, 0x33, 0xbc, 0x9d, 0x53, 0xa7, 0xfa, 0x92,
+
  0x41, 0x45, 0x1f, 0x95, 0x5d, 0xec, 0x0d, 0xde, 0x75, 0xef, 0x87, 0xef,
+
  0xbc, 0x69, 0x00, 0xb5, 0xfe, 0x86, 0xbc, 0xdb, 0x30, 0xb0, 0x49, 0xea,
+
  0xf2, 0xae, 0xcd, 0xcb, 0x2c, 0x89, 0xce, 0x7f, 0xcb, 0x16, 0x04, 0x23,
+
  0x8a, 0x65, 0xcd, 0x5b, 0x24, 0xbb, 0x4d, 0xe1, 0x5b, 0xf8, 0x71, 0x3c,
+
  0x21, 0xc3, 0xf8, 0x56, 0xaf, 0xc4, 0x2b, 0xd4, 0xf6, 0x86, 0xc3, 0x97,
+
  0xb7, 0x5e, 0x08, 0xa3, 0x1e, 0x36, 0xab, 0x8b, 0xdb, 0x45, 0xca, 0x68,
+
  0x48, 0xcb, 0x8f, 0x75, 0x36, 0x06, 0x6f, 0x78, 0xf7, 0xe3, 0x77, 0xe1,
+
  0xd9, 0xd0, 0x68, 0x93, 0x14, 0xa1, 0x9a, 0x25, 0x85, 0x13, 0xa3, 0x5b,
+
  0x60, 0xf1, 0x4f, 0x40, 0x42, 0xce, 0x16, 0x2c, 0x21, 0xbb, 0xc7, 0x3e,
+
  0x45, 0x88, 0x36, 0xfe, 0x81, 0xd7, 0x5d, 0x28, 0x1f, 0x3f, 0x5d, 0x8e,
+
  0x66, 0xb0, 0xf6, 0xc3, 0xe5, 0x74, 0x9a, 0x7d, 0x88, 0x5e, 0x66, 0x55,
+
  0x2d, 0x4c, 0x92, 0x8c, 0x31, 0x2d, 0x63, 0xcd, 0xaa, 0x15, 0x52, 0x82,
+
  0x75, 0x64, 0x3a, 0xa1, 0x0d, 0xc8, 0x2b, 0x0b, 0x13, 0xcd, 0x9a, 0x5d,
+
  0x6f, 0xc1, 0xcf, 0xaa, 0x96, 0xd3, 0xb8, 0x6b, 0xf3, 0x3e, 0xa4, 0x95,
+
  0x6f, 0xc2, 0x0f, 0x4f, 0x5f, 0x1f, 0xff, 0x70, 0xa2, 0x3f, 0xd6, 0x59,
+
  0xd1, 0x21, 0xbf, 0x35, 0xfe, 0x30, 0x08, 0x09, 0x40, 0x44, 0x88, 0x1e,
+
  0x8f, 0xa2, 0xdf, 0x28, 0x5b, 0xec, 0xbd, 0xd6, 0x61, 0xfa, 0xdc, 0x9c,
+
  0xc5, 0x2f, 0x53, 0x70, 0xd9, 0x4d, 0x9f, 0x7b, 0x3e, 0x73, 0x7b, 0x67,
+
  0x36, 0x8b, 0x8b, 0x50, 0xc7, 0x02, 0xf4, 0xd2, 0xe8, 0x8f, 0x95, 0x73,
+
  0x15, 0x64, 0xaf, 0x0e, 0xed, 0x88, 0xe0, 0xd2, 0x86, 0xdc, 0x87, 0xee,
+
  0x0d, 0x67, 0x05, 0x9f, 0x8a, 0x43, 0x65, 0x6b, 0xd5, 0x92, 0x74, 0x2c,
+
  0x34, 0xec, 0x7c, 0xb0, 0x4f, 0x38, 0x0a, 0xca, 0x57, 0x24, 0x20, 0xc3,
+
  0x37, 0xb2, 0xa8, 0x16, 0x11, 0x6a, 0xc4, 0xea, 0xca, 0xf7, 0x7a, 0x9b,
+
  0x67, 0x18, 0xf8, 0xeb, 0xc0, 0x30, 0xe5, 0x2f, 0x0d, 0x2b, 0x86, 0xd9,
+
  0x8b, 0x7b, 0x2b, 0x34, 0xce, 0x87, 0x21, 0x25, 0xb2, 0x57, 0x9d, 0x63,
+
  0x7d, 0x90, 0x94, 0xf9, 0xaa, 0x29, 0xa4, 0x3a, 0xd4, 0xc6, 0xdf, 0xaa,
+
  0x7a, 0x72, 0x13, 0x07, 0xc2, 0x6b, 0xb6, 0x04, 0x55, 0xc3, 0x16, 0x3f,
+
  0x33, 0x9b, 0x09, 0x4f, 0xe3, 0x96, 0xbc, 0xe7, 0x66, 0xfb, 0x8f, 0xec,
+
  0xa6, 0x4e, 0x5b, 0xef, 0x82, 0x03, 0x5b, 0xb3, 0x05, 0xdb, 0x60, 0xaf,
+
  0xf0, 0xcf, 0x79, 0x92, 0x2f, 0xdd, 0x10, 0x51, 0x7c, 0x85, 0x9f, 0x52,
+
  0x5f, 0x3b, 0x4c, 0xc7, 0x88, 0x9e, 0xb2, 0xb1, 0xf5, 0x4d, 0xc0, 0x45,
+
  0xd4, 0xa8, 0x1a, 0x6c, 0x98, 0x65, 0xe4, 0x10, 0xa0, 0x20, 0x7b, 0x32,
+
  0x45, 0x7d, 0x2f, 0x31, 0x01, 0xca, 0x09, 0x0b, 0x06, 0x1f, 0xe5, 0xa1,
+
  0x1c, 0xa8, 0x4d, 0x46, 0xa3, 0x44, 0xe2, 0xe3, 0x95, 0xa8, 0x31, 0x81,
+
  0x04, 0x60, 0x03, 0xda, 0x22, 0x27, 0x67, 0x37, 0xb7, 0xc8, 0xe3, 0xc0,
+
  0x3d, 0x30, 0x80, 0x49, 0xc8, 0x45, 0x84, 0xf9, 0xa1, 0xf9, 0x72, 0x3e,
+
  0xc2, 0xb8, 0xec, 0xd4, 0x74, 0x7f, 0xa8, 0x38, 0xd6, 0x23, 0x4f, 0xf1,
+
  0xbc, 0xd3, 0x8c, 0xe9, 0xed, 0x89, 0x9d, 0x9a, 0xbc, 0x7e, 0x51, 0x8f,
+
  0xe7, 0x83, 0xa8, 0x84, 0x45, 0x69, 0x51, 0x2b, 0xa9, 0xfc, 0x48, 0x6c,
+
  0x9d, 0x84, 0xad, 0x50, 0x19, 0x9f, 0x23, 0x18, 0x81, 0x14, 0x62, 0xb1,
+
  0xaa, 0xbe, 0xd5, 0x2a, 0xa6, 0x1e, 0xdb, 0xaf, 0x45, 0xd3, 0x31, 0x6a,
+
  0x86, 0x33, 0xab, 0x12, 0xe8, 0x9e, 0xc0, 0x89, 0xe0, 0x04, 0x8d, 0x82,
+
  0xbb, 0x06, 0x83, 0xc6, 0xbd, 0x70, 0x28, 0xce, 0xac, 0x41, 0x64, 0x5a,
+
  0xb4, 0x35, 0xfc, 0x47, 0xfa, 0x14, 0x0d, 0xbb, 0x56, 0xcb, 0x51, 0x55,
+
  0x67, 0xf5, 0xd2, 0xe7, 0x09, 0x92, 0xf7, 0xc2, 0x2e, 0xcf, 0x42, 0x42,
+
  0x2c, 0xb6, 0x92, 0x94, 0xfc, 0x43, 0x58, 0xea, 0x55, 0xf7, 0x69, 0x41,
+
  0xb9, 0x80, 0x6c, 0xc4, 0x88, 0xee, 0xb3, 0xe2, 0xca, 0xeb, 0x95, 0x84,
+
  0x66, 0xac, 0x9d, 0x5d, 0x13, 0xa6, 0x11, 0x06, 0xf8, 0xfd, 0x3f, 0xf4,
+
  0xcb, 0x77, 0xb8, 0x58, 0xff, 0xd4, 0xc5, 0x92, 0x69, 0x27, 0x5e, 0x74,
+
  0x83, 0x1c, 0x75, 0xbf, 0xa7, 0x45, 0xf9, 0x15, 0x6b, 0x38, 0x78, 0x65,
+
  0xb0, 0x39, 0x1e, 0x0d, 0xf7, 0xfb, 0x81, 0x51, 0xa9, 0x74, 0x08, 0x04,
+
  0x13, 0x67, 0x3f, 0xc0, 0xe8, 0xda, 0x73, 0x0b, 0x21, 0x0d, 0xfe, 0x9c,
+
  0xf7, 0x91, 0x8e, 0x93, 0x12, 0x26, 0x72, 0x4e, 0x51, 0x2a, 0x6c, 0xb5,
+
  0x43, 0xdb, 0xf8, 0x73, 0x29, 0x7d, 0xcc, 0xc0, 0xac, 0x97, 0x20, 0x39,
+
  0x7f, 0x1e, 0xb6, 0xb1, 0x4d, 0x55, 0xbb, 0xae, 0x73, 0xa3, 0xaf, 0x23,
+
  0x8c, 0x94, 0x94, 0x13, 0xe3, 0xd1, 0x1b, 0x69, 0xbb, 0x1d, 0x26, 0xd5,
+
  0xf6, 0xde, 0x53, 0x4b, 0x1c, 0x69, 0x3a, 0xa6, 0xb7, 0x92, 0x01, 0x63,
+
  0x33, 0xd2, 0x7f, 0xff, 0x0f, 0x2e, 0x83, 0xfb, 0xa7, 0x1f, 0xcc, 0xe4,
+
  0x79, 0x34, 0x1c, 0x8a, 0xe2, 0x6a, 0x27, 0xa2, 0xa3, 0x54, 0x37, 0x72,
+
  0x8d, 0xe6, 0x75, 0x64, 0x70, 0xde, 0x6d, 0x6a, 0x4e, 0x6b, 0xb8, 0xdf,
+
  0xf3, 0x18, 0xff, 0xe0, 0x2d, 0x92, 0xf8, 0xa8, 0xc4, 0x5f, 0x33, 0xa9,
+
  0xfc, 0x41, 0xdf, 0x29, 0x75, 0x47, 0xd5, 0xe0, 0x1f, 0x27, 0x72, 0x4d,
+
  0x03, 0xb6, 0xae, 0x18, 0xf1, 0x9b, 0x6e, 0x24, 0xc8, 0x54, 0xe1, 0x90,
+
  0x47, 0x7f, 0x8b, 0xcf, 0xb2, 0xc9, 0x81, 0xc8, 0x11, 0x61, 0x88, 0xc9,
+
  0xc7, 0x2f, 0xc7, 0x4e, 0x28, 0x05, 0x1d, 0x76, 0x9f, 0x5b, 0x13, 0x6a,
+
  0x9f, 0x2b, 0x49, 0xe9, 0xea, 0x8b, 0x39, 0x24, 0x15, 0x17, 0x0c, 0xdc,
+
  0x2f, 0xcf, 0xba, 0xba, 0x40, 0x66, 0xd8, 0x5e, 0x79, 0xda, 0x66, 0x60,
+
  0x07, 0xf3, 0x39, 0x86, 0x34, 0x4d, 0xda, 0xa5, 0x34, 0x93, 0x7d, 0xd2,
+
  0x40, 0xe9, 0x51, 0x7d, 0xec, 0xe4, 0xec, 0xf8, 0x00, 0x01, 0x98, 0x34,
+
  0x1c, 0x83, 0x13, 0xf8, 0x7d, 0x5c, 0x5d, 0xcf, 0x47, 0xc5, 0x4c, 0x18,
+
  0x1e, 0x92, 0x3d, 0xd0, 0xae, 0x7c, 0xa6, 0x0d, 0xe5, 0xd2, 0x0f, 0x0b,
+
  0xdf, 0xe7, 0x14, 0x6a, 0x6e, 0x03, 0xec, 0x0d, 0xc6, 0x1f, 0x51, 0xf7,
+
  0x02, 0xd6, 0x6b, 0xd1, 0x45, 0x54, 0x8c, 0x19, 0xfd, 0x17, 0xc1, 0x80,
+
  0x60, 0xad, 0x7f, 0xcf, 0x80, 0xc6, 0x7e, 0x98, 0x02, 0x8c, 0x91, 0x25,
+
  0x85, 0x86, 0xfe, 0x7f, 0xcd, 0x5d, 0x6b, 0x6f, 0x1b, 0x47, 0x96, 0xfd,
+
  0xae, 0x5f, 0xd1, 0x30, 0x66, 0x10, 0x19, 0x20, 0xa9, 0xb7, 0x2c, 0x19,
+
  0xd9, 0x0c, 0x64, 0x49, 0xb1, 0x35, 0x91, 0x25, 0x8d, 0x48, 0xdb, 0x19,
+
  0x64, 0x02, 0xa1, 0x25, 0xb6, 0xa8, 0x8e, 0x29, 0x36, 0xc3, 0x26, 0x23,
+
  0x29, 0x8b, 0xdd, 0xdf, 0xbe, 0x75, 0xee, 0xa3, 0xaa, 0xba, 0xab, 0xc8,
+
  0xa6, 0x13, 0xdb, 0xd9, 0x01, 0x26, 0x30, 0xa9, 0x66, 0x75, 0x3d, 0x6f,
+
  0xdd, 0xe7, 0x39, 0x82, 0xeb, 0xa2, 0x25, 0x0d, 0xce, 0xbb, 0xc7, 0xf1,
+
  0x67, 0xe6, 0xee, 0x30, 0x87, 0x3a, 0x05, 0xfa, 0xa1, 0x94, 0x00, 0x2d,
+
  0x66, 0xea, 0x10, 0x48, 0x69, 0x8d, 0xc0, 0x4a, 0x42, 0x81, 0x0d, 0x41,
+
  0xfe, 0x9d, 0xaa, 0x2f, 0x88, 0x2c, 0x84, 0xf2, 0xc2, 0x82, 0x1b, 0x02,
+
  0xaf, 0xea, 0x0b, 0xda, 0x07, 0x0c, 0x28, 0x02, 0x2e, 0xa7, 0x69, 0x29,
+
  0xe5, 0x35, 0x9a, 0x0d, 0x10, 0x3d, 0x73, 0x9e, 0x70, 0xb1, 0xce, 0xa7,
+
  0x18, 0x7f, 0xd1, 0x0d, 0xb1, 0xd3, 0xd7, 0x4f, 0x88, 0x00, 0x1a, 0x99,
+
  0xbf, 0x31, 0x73, 0x43, 0x06, 0x5f, 0x86, 0xba, 0x6c, 0x35, 0x05, 0x12,
+
  0x3e, 0x96, 0x39, 0x4a, 0x6a, 0xad, 0xda, 0x83, 0x9c, 0xf9, 0x96, 0xa6,
+
  0x5d, 0x50, 0x5b, 0xcd, 0x9d, 0xc2, 0xa0, 0xad, 0xe6, 0x1f, 0x8a, 0xa8,
+
  0xdc, 0x5a, 0xdc, 0xdc, 0x59, 0x17, 0x0f, 0xbf, 0xee, 0xfe, 0x90, 0xb3,
+
  0x06, 0x2e, 0xba, 0x1e, 0xc1, 0xac, 0x90, 0x26, 0x63, 0xcd, 0x8d, 0x64,
+
  0x95, 0x36, 0xe8, 0xe2, 0xe6, 0x38, 0x69, 0x78, 0xaf, 0xb3, 0x1e, 0x78,
+
  0x5b, 0xe4, 0x68, 0x5d, 0x11, 0x2e, 0x2b, 0x4f, 0xe8, 0x21, 0x7f, 0xd5,
+
  0xee, 0xe1, 0x2b, 0x49, 0x7a, 0x57, 0x11, 0x81, 0x0d, 0xa4, 0xc8, 0x61,
+
  0xad, 0x24, 0x04, 0xe0, 0x4e, 0x62, 0x35, 0x7d, 0x70, 0x4c, 0x98, 0x2b,
+
  0x3b, 0x58, 0x3d, 0x92, 0x66, 0xf7, 0xe5, 0xc0, 0x5b, 0x4c, 0x16, 0x70,
+
  0xf7, 0xa8, 0x4b, 0x19, 0x64, 0x3a, 0x36, 0xee, 0xfe, 0x8b, 0x9d, 0x48,
+
  0xf7, 0xb3, 0x47, 0x23, 0x25, 0xa1, 0x32, 0xba, 0x26, 0x8c, 0x62, 0x90,
+
  0x4d, 0x50, 0x36, 0xe0, 0xfe, 0x28, 0x83, 0x70, 0x79, 0x8b, 0xab, 0x73,
+
  0x40, 0x92, 0x6b, 0xff, 0x9b, 0xf3, 0x52, 0xbd, 0xd9, 0xaf, 0xd8, 0xfd,
+
  0x6f, 0x64, 0xdd, 0xe2, 0x66, 0x38, 0x59, 0xc6, 0xd8, 0x8a, 0xf7, 0xc4,
+
  0xdd, 0x61, 0xcb, 0x9b, 0x7d, 0x9e, 0x25, 0x66, 0x1b, 0xe6, 0xe4, 0xc5,
+
  0x4e, 0x53, 0x73, 0x9c, 0x3b, 0x42, 0x7b, 0x4d, 0x6a, 0x9d, 0x10, 0xa8,
+
  0xcb, 0x6f, 0xad, 0x53, 0x63, 0x0a, 0x18, 0x38, 0x2a, 0xb0, 0x42, 0xbb,
+
  0x0d, 0x6b, 0x54, 0x58, 0xaa, 0x13, 0x8d, 0xc0, 0x71, 0x8e, 0xdc, 0x39,
+
  0xa5, 0x7c, 0x55, 0xb2, 0x72, 0x27, 0x48, 0xe7, 0x5d, 0xdc, 0x9c, 0x4d,
+
  0xf5, 0xd5, 0xfc, 0x9b, 0x13, 0x84, 0x05, 0xe9, 0xbe, 0x99, 0x71, 0x40,
+
  0x31, 0x27, 0x30, 0xb2, 0x7b, 0x84, 0xa7, 0x23, 0x69, 0x9d, 0x49, 0x44,
+
  0xdf, 0xa3, 0x7c, 0xbc, 0x7f, 0x7a, 0x39, 0xc2, 0x7c, 0x2f, 0xf8, 0xa9,
+
  0xc2, 0xc1, 0xe6, 0xba, 0x9d, 0x8e, 0xaf, 0xcc, 0x26, 0x9d, 0x3c, 0x5d,
+
  0x51, 0xc1, 0x6c, 0xcf, 0x4b, 0x86, 0xa0, 0x2f, 0x68, 0xaa, 0x58, 0xd6,
+
  0xcc, 0xc6, 0xe8, 0x13, 0xc9, 0xc5, 0x61, 0xc1, 0x5e, 0xc0, 0xa6, 0x6e,
+
  0x55, 0x0b, 0x5a, 0x3d, 0x8a, 0xab, 0x95, 0xe8, 0x55, 0x77, 0xf5, 0x4b,
+
  0x89, 0x6c, 0x1c, 0x44, 0x40, 0xff, 0xd9, 0x3d, 0x3f, 0x4b, 0x8a, 0xeb,
+
  0x5f, 0x10, 0x16, 0x67, 0x65, 0xd6, 0x48, 0x71, 0xba, 0xa7, 0xeb, 0x34,
+
  0xa7, 0x31, 0x8d, 0x30, 0x3c, 0x5f, 0xee, 0x16, 0x77, 0xdb, 0xfb, 0x3d,
+
  0x94, 0x37, 0xbe, 0x2d, 0xbd, 0xaa, 0x14, 0xf3, 0xb9, 0x41, 0x88, 0x4d,
+
  0xd2, 0xa7, 0xb2, 0x85, 0xc8, 0xfa, 0x8d, 0x43, 0xdb, 0x4f, 0x39, 0x72,
+
  0x66, 0x7d, 0x1d, 0xda, 0x39, 0x3a, 0xda, 0x8b, 0x9b, 0x13, 0x15, 0xdc,
+
  0xfe, 0x94, 0x74, 0xca, 0xb2, 0x7a, 0xaa, 0xf7, 0xb6, 0x22, 0x07, 0x2c,
+
  0x72, 0x7e, 0x44, 0x13, 0x20, 0x5f, 0x9a, 0x1b, 0x54, 0x8e, 0x15, 0x7b,
+
  0xc8, 0x26, 0xe8, 0x65, 0x8b, 0xd2, 0xab, 0x96, 0x38, 0xd5, 0x9c, 0x88,
+
  0x83, 0xb2, 0x9b, 0xf1, 0x38, 0x4b, 0xcd, 0xa4, 0x21, 0x2e, 0xa9, 0x4a,
+
  0xc3, 0x43, 0x8e, 0x82, 0xc4, 0xe3, 0x47, 0x30, 0x8c, 0x70, 0xe8, 0x7b,
+
  0xd6, 0x24, 0xf9, 0x87, 0x74, 0x6f, 0xf4, 0x7d, 0x76, 0xda, 0xec, 0x89,
+
  0x26, 0x7f, 0x30, 0x29, 0x66, 0x63, 0xae, 0x3f, 0x10, 0x5d, 0x1f, 0x51,
+
  0xa9, 0x86, 0xde, 0xd9, 0x0b, 0x5d, 0x49, 0x94, 0x61, 0x1c, 0x68, 0x0a,
+
  0x27, 0x17, 0x6d, 0xb2, 0x72, 0xce, 0x1e, 0xd7, 0x86, 0xde, 0x95, 0x0c,
+
  0xf1, 0x28, 0xab, 0x49, 0x9b, 0xcf, 0xe8, 0xb9, 0x91, 0xda, 0x3a, 0x84,
+
  0x16, 0xaf, 0x9c, 0x28, 0xad, 0x4a, 0x52, 0xbb, 0x35, 0xe9, 0x01, 0xea,
+
  0x12, 0x84, 0xfa, 0x2d, 0x25, 0xe9, 0xe6, 0xa3, 0xf9, 0xe1, 0x0c, 0x6b,
+
  0x67, 0x21, 0x95, 0xc2, 0xa5, 0x7f, 0x69, 0x11, 0x31, 0xa7, 0x8f, 0xa3,
+
  0x86, 0xc4, 0x6e, 0xde, 0x39, 0xfd, 0xe2, 0xaa, 0xff, 0x7a, 0xbf, 0xe6,
+
  0x77, 0x47, 0xdf, 0xd8, 0x34, 0x3d, 0x3c, 0xac, 0x55, 0xc9, 0x47, 0x23,
+
  0xaf, 0xef, 0x73, 0xce, 0x8c, 0x25, 0x01, 0x51, 0xa3, 0x2f, 0x8e, 0xf7,
+
  0xce, 0x92, 0xd0, 0xb0, 0xa4, 0xc7, 0x77, 0x89, 0x63, 0xa6, 0xe1, 0x05,
+
  0x24, 0x76, 0x0d, 0x7b, 0x5f, 0x0c, 0x9f, 0x92, 0x68, 0xe2, 0x48, 0x3d,
+
  0x4e, 0xe2, 0xe3, 0xfc, 0xad, 0x47, 0x0e, 0x8a, 0x8a, 0x15, 0x35, 0xb6,
+
  0xe2, 0xd2, 0xc5, 0xe9, 0x45, 0x1f, 0xb3, 0x08, 0xea, 0x0b, 0x55, 0xca,
+
  0x5f, 0xe5, 0x63, 0xff, 0xb6, 0x3a, 0xb9, 0x48, 0x90, 0xd2, 0x40, 0xc0,
+
  0x6b, 0x72, 0x7b, 0x72, 0x41, 0xbd, 0x57, 0xbd, 0x47, 0x32, 0xbd, 0x71,
+
  0x86, 0x6f, 0x98, 0x99, 0x82, 0x22, 0x62, 0x1e, 0xaa, 0x51, 0x5b, 0xa5,
+
  0x83, 0x06, 0xc8, 0xe0, 0xfd, 0xde, 0x8e, 0xd4, 0x87, 0x24, 0xa1, 0xdb,
+
  0x7c, 0xce, 0x08, 0x48, 0x2f, 0xb2, 0x23, 0xe0, 0xee, 0x92, 0x5e, 0xe6,
+
  0xf9, 0x0a, 0xbc, 0x7e, 0x7b, 0x1d, 0x6b, 0x18, 0x81, 0xed, 0x75, 0xf0,
+
  0x62, 0x81, 0x14, 0xaf, 0x08, 0x2a, 0xac, 0xbe, 0x7c, 0xaf, 0xc9, 0x8a,
+
  0xb5, 0xb7, 0xb2, 0xb8, 0x6f, 0x9e, 0x3a, 0x49, 0xf2, 0xae, 0x28, 0x41,
+
  0x9b, 0x91, 0x5d, 0x60, 0x86, 0x77, 0xe5, 0x69, 0xb7, 0x67, 0x76, 0xb4,
+
  0x92, 0x56, 0xe8, 0x69, 0xb7, 0xa5, 0x4b, 0x87, 0x91, 0x7e, 0x19, 0xb5,
+
  0x74, 0x71, 0x2f, 0x6c, 0xae, 0x60, 0x85, 0x28, 0x74, 0xe4, 0x8a, 0x7e,
+
  0xad, 0x96, 0x2b, 0x4a, 0xee, 0xe2, 0xe6, 0xac, 0x02, 0xbc, 0xa4, 0x92,
+
  0xdb, 0x30, 0x47, 0xbe, 0x0e, 0xbc, 0x40, 0xcd, 0xa5, 0x29, 0xe2, 0x75,
+
  0x2c, 0x2b, 0x53, 0x34, 0xca, 0x1e, 0x12, 0xfb, 0x07, 0x62, 0x26, 0x97,
+
  0x79, 0xa9, 0xdc, 0xaa, 0x0d, 0x9d, 0x88, 0xc9, 0x2d, 0xbc, 0xd1, 0x5a,
+
  0xde, 0x56, 0x6e, 0xc9, 0x5b, 0x83, 0xab, 0x3e, 0xdc, 0x24, 0x0d, 0x37,
+
  0xb5, 0x5a, 0xec, 0xab, 0xc8, 0x83, 0x4c, 0x99, 0x72, 0x03, 0x35, 0x34,
+
  0x29, 0x71, 0x48, 0x30, 0x7e, 0x84, 0x31, 0xa2, 0x2d, 0x42, 0x6a, 0xb3,
+
  0x1e, 0x01, 0x66, 0xf1, 0x59, 0xa9, 0x29, 0x13, 0x27, 0x5d, 0x32, 0x6a,
+
  0x49, 0x35, 0x94, 0xec, 0x78, 0x2b, 0x8f, 0x96, 0xd1, 0x9b, 0xb7, 0xe6,
+
  0x2c, 0x82, 0xf6, 0xad, 0xf4, 0x17, 0xc1, 0x7d, 0xc9, 0xb2, 0x1c, 0x46,
+
  0x03, 0x97, 0xc0, 0xba, 0x7d, 0xba, 0xe4, 0x69, 0x59, 0x09, 0xaa, 0x63,
+
  0xd9, 0xa4, 0xf0, 0x85, 0x1b, 0xa5, 0x8e, 0xca, 0xe5, 0xea, 0xf9, 0x6c,
+
  0xe0, 0xc8, 0xa0, 0x7d, 0x8d, 0x24, 0x88, 0x91, 0xa4, 0xa4, 0x36, 0xcc,
+
  0x9b, 0x62, 0xb6, 0xb1, 0xcf, 0x08, 0x6a, 0x16, 0x61, 0x40, 0xfc, 0x9e,
+
  0x4d, 0x0a, 0xb1, 0x6f, 0x3a, 0xc9, 0x27, 0xcd, 0x5b, 0xcc, 0xde, 0xa0,
+
  0x5b, 0xe9, 0xaa, 0x2c, 0x87, 0xb8, 0x69, 0xf2, 0xdb, 0x27, 0x33, 0x89,
+
  0xe5, 0x5c, 0x1e, 0x30, 0x7f, 0xa4, 0xfc, 0x9c, 0xca, 0x3d, 0x2f, 0xb0,
+
  0xf9, 0x4d, 0x49, 0x51, 0x90, 0x71, 0xe6, 0xa4, 0x43, 0x93, 0x18, 0x87,
+
  0xe9, 0x42, 0xaf, 0x77, 0x29, 0xa0, 0x72, 0xed, 0x5a, 0xd3, 0xb0, 0x93,
+
  0xac, 0x4b, 0xa8, 0xa8, 0x71, 0xe2, 0x2a, 0x2d, 0xa1, 0x11, 0x97, 0xf7,
+
  0x5c, 0x3d, 0xcd, 0x3b, 0x31, 0x81, 0xa7, 0xfb, 0xe5, 0x8a, 0x02, 0x4e,
+
  0x9c, 0xaa, 0x2c, 0xd0, 0x24, 0xf6, 0x64, 0xa0, 0x51, 0x3a, 0xcf, 0xea,
+
  0x64, 0x6a, 0x9f, 0xc2, 0x80, 0xc0, 0xb5, 0xd0, 0x30, 0x54, 0xf5, 0x86,
+
  0xf0, 0x0e, 0xf4, 0x36, 0xe7, 0x6a, 0x21, 0x58, 0xca, 0xf0, 0xad, 0x3f,
+
  0xb6, 0xe9, 0x0f, 0x65, 0x32, 0x2f, 0x1a, 0xe6, 0xdd, 0x11, 0xcf, 0x5b,
+
  0x52, 0x93, 0x60, 0x9d, 0x15, 0xe2, 0x21, 0xc4, 0x4e, 0xe3, 0x3a, 0xf4,
+
  0x1b, 0xe4, 0x55, 0x51, 0x31, 0x5c, 0xda, 0x74, 0xf2, 0xb9, 0x3b, 0xc9,
+
  0x03, 0x65, 0xd5, 0x93, 0x83, 0x7a, 0x40, 0x44, 0x9b, 0x45, 0x27, 0x9c,
+
  0x27, 0x10, 0x34, 0x55, 0x36, 0xff, 0x25, 0x7f, 0xf5, 0xd2, 0x6a, 0x94,
+
  0x36, 0xf3, 0x5a, 0xad, 0xf4, 0x4f, 0xd9, 0xad, 0xbb, 0xd1, 0xc5, 0x81,
+
  0x4d, 0x64, 0xf5, 0x09, 0x39, 0x71, 0x8c, 0x0f, 0x6c, 0xd4, 0x8a, 0x9a,
+
  0x56, 0xf1, 0xc7, 0x2f, 0x63, 0xa7, 0x42, 0x88, 0x06, 0x41, 0x0a, 0x44,
+
  0x31, 0x89, 0xab, 0x08, 0xd2, 0x2b, 0xd5, 0x11, 0x7a, 0xce, 0x78, 0x6b,
+
  0xd4, 0x10, 0xfe, 0x9c, 0x8a, 0xa0, 0xa2, 0x5e, 0x74, 0xeb, 0x2f, 0xa1,
+
  0x57, 0x5b, 0x29, 0xb4, 0x0a, 0x2f, 0x3f, 0x39, 0xf0, 0x10, 0x6d, 0x1d,
+
  0xd9, 0x3a, 0x6a, 0x7a, 0x77, 0xa4, 0xb2, 0x4b, 0x2a, 0xaf, 0x2b, 0xc2,
+
  0x91, 0xea, 0x31, 0xe5, 0x0f, 0xab, 0xe0, 0x03, 0xe6, 0xd4, 0xc7, 0x1b,
+
  0xc0, 0x99, 0xf6, 0x6d, 0x8c, 0xf4, 0xf9, 0x12, 0x97, 0x0a, 0x46, 0xe2,
+
  0x6b, 0xbc, 0x5c, 0xc1, 0xdc, 0x78, 0xb8, 0xc1, 0x6f, 0x7b, 0xd5, 0x37,
+
  0xdd, 0x67, 0xb0, 0x16, 0x4a, 0x5d, 0x2b, 0xa6, 0x48, 0xfe, 0xbc, 0x37,
+
  0xd3, 0x42, 0xd2, 0x8c, 0x79, 0xa3, 0x45, 0xb1, 0x26, 0x57, 0xb4, 0x3e,
+
  0xdf, 0xa8, 0x52, 0xfb, 0xfc, 0xd7, 0x44, 0x2c, 0x2c, 0x4b, 0x0e, 0x64,
+
  0x93, 0x35, 0xe6, 0xb2, 0xd6, 0x55, 0x58, 0xf2, 0xe6, 0x9f, 0x20, 0x44,
+
  0x4c, 0xe9, 0x90, 0x8c, 0xdc, 0x2b, 0x56, 0x60, 0x74, 0x58, 0x9a, 0xcd,
+
  0xbc, 0x68, 0x58, 0x8a, 0x27, 0x6b, 0x47, 0x44, 0x4d, 0x36, 0xa9, 0x41,
+
  0xf3, 0xde, 0x68, 0x15, 0x05, 0x5e, 0x5d, 0x7e, 0x65, 0x7c, 0x2a, 0x69,
+
  0x26, 0xbd, 0xd0, 0xd1, 0xe2, 0x37, 0xfa, 0xc2, 0x36, 0xfe, 0x6a, 0x85,
+
  0xdb, 0x89, 0x0f, 0x56, 0xde, 0x5c, 0x59, 0x45, 0x85, 0xba, 0xf9, 0x7f,
+
  0xbb, 0x86, 0xe6, 0xc2, 0xec, 0xbb, 0xbd, 0x89, 0x61, 0xa5, 0xa8, 0x1a,
+
  0x18, 0xb8, 0xe5, 0xe2, 0x67, 0x3c, 0xcf, 0x9e, 0xb9, 0x10, 0x4b, 0xa3,
+
  0xd5, 0xf6, 0x23, 0x95, 0x3f, 0x11, 0x25, 0x4c, 0x83, 0xa9, 0xb6, 0x3d,
+
  0x70, 0xa6, 0x63, 0x9e, 0xc6, 0x94, 0x5b, 0x87, 0x04, 0xd2, 0x39, 0xbd,
+
  0xb2, 0xb3, 0x4d, 0xeb, 0xac, 0xdd, 0x52, 0xcc, 0xa3, 0xcf, 0xd4, 0x2b,
+
  0x6e, 0x6d, 0x99, 0x3e, 0xfd, 0x59, 0x65, 0xa5, 0xae, 0x9e, 0x90, 0xfe,
+
  0x61, 0xd5, 0x86, 0xa5, 0x6e, 0xf0, 0xc5, 0xfa, 0x49, 0x45, 0x05, 0x69,
+
  0x16, 0x64, 0x9e, 0x7e, 0xb2, 0x12, 0x46, 0x69, 0xcd, 0x0e, 0xb2, 0x1f,
+
  0xbf, 0x97, 0x28, 0x1b, 0xd5, 0xc7, 0x16, 0x39, 0x6c, 0x08, 0xc2, 0xd3,
+
  0x84, 0x0f, 0xb3, 0x16, 0x81, 0x67, 0xcd, 0xb3, 0xc9, 0x01, 0x5a, 0x8d,
+
  0x24, 0x32, 0x37, 0xa7, 0x06, 0x04, 0xad, 0x8e, 0xb9, 0xfc, 0xa5, 0xbd,
+
  0x1b, 0x53, 0xcd, 0x25, 0xa6, 0xff, 0x95, 0xc6, 0x10, 0x46, 0x43, 0x3b,
+
  0xee, 0x54, 0x37, 0x8b, 0x1e, 0x41, 0xa9, 0x68, 0x25, 0x14, 0x42, 0x65,
+
  0x6c, 0xaf, 0x6b, 0xae, 0x47, 0xe5, 0x70, 0x29, 0x85, 0x4e, 0xc9, 0x7a,
+
  0xe4, 0x2c, 0x85, 0x06, 0x1f, 0x10, 0x3d, 0xae, 0x25, 0xec, 0x8c, 0x2b,
+
  0x5a, 0xf5, 0xbd, 0x44, 0xa7, 0x0c, 0xf7, 0xe2, 0x55, 0x3a, 0x1e, 0xcb,
+
  0xdd, 0xdf, 0xbc, 0xc1, 0x99, 0x05, 0x1b, 0x10, 0x95, 0x74, 0x66, 0x98,
+
  0x71, 0x7c, 0x5a, 0x14, 0x1f, 0x5d, 0x61, 0x37, 0x99, 0x72, 0xe0, 0x05,
+
  0x68, 0xdc, 0xe0, 0xc3, 0x44, 0x8f, 0xc9, 0x5a, 0xb7, 0xfb, 0x66, 0x2d,
+
  0x9b, 0xde, 0xa8, 0x12, 0xb2, 0xe6, 0x8a, 0xfb, 0xac, 0x97, 0xba, 0xa1,
+
  0x39, 0xd2, 0x83, 0x80, 0x8e, 0x42, 0x5b, 0xdd, 0x26, 0x74, 0x74, 0xa2,
+
  0x43, 0xae, 0xfa, 0xe2, 0x3e, 0xf3, 0xa0, 0xc8, 0x23, 0x71, 0x78, 0xa1,
+
  0x63, 0xa9, 0xf9, 0xd9, 0xa9, 0x8b, 0xd0, 0xc2, 0xd9, 0x4f, 0xd7, 0x7c,
+
  0x6a, 0x1b, 0x86, 0x02, 0x6f, 0xf2, 0xd0, 0xf4, 0x75, 0x36, 0x5e, 0x22,
+
  0x80, 0xb3, 0xf4, 0x48, 0x97, 0x1e, 0xa8, 0x97, 0x3a, 0x4e, 0xc1, 0xe8,
+
  0xe6, 0x0e, 0x8f, 0xe1, 0x42, 0x65, 0x65, 0xef, 0xaf, 0xd9, 0x6f, 0x12,
+
  0x26, 0xb2, 0x1a, 0x27, 0xfa, 0x4c, 0x69, 0x18, 0x9c, 0xd4, 0x47, 0xd5,
+
  0x38, 0x83, 0x30, 0x95, 0x37, 0x7a, 0x81, 0x6b, 0xe2, 0x33, 0x5c, 0x94,
+
  0x70, 0x64, 0xdb, 0x46, 0x25, 0x92, 0x5c, 0x4a, 0xd9, 0xef, 0xa0, 0x68,
+
  0xec, 0x1d, 0x09, 0x71, 0x51, 0x63, 0xbc, 0x14, 0x93, 0x1b, 0xdd, 0x3f,
+
  0x1e, 0x3c, 0x8c, 0xd9, 0x3a, 0x4d, 0xcd, 0x41, 0xc1, 0x65, 0x5c, 0xa3,
+
  0xdf, 0x90, 0x82, 0x3f, 0x67, 0x2d, 0xac, 0x21, 0xd6, 0x34, 0xd9, 0xc8,
+
  0xcb, 0x1f, 0x0e, 0xad, 0xe1, 0xd6, 0x78, 0xdd, 0x98, 0xab, 0x6a, 0xac,
+
  0xd3, 0x83, 0x7d, 0x41, 0xdb, 0x84, 0xb7, 0x69, 0x4b, 0x0f, 0x46, 0x2b,
+
  0x59, 0x7a, 0x2b, 0x48, 0xc2, 0x03, 0x4f, 0x2d, 0x57, 0x6f, 0xdb, 0xb5,
+
  0x44, 0x96, 0x32, 0xff, 0x31, 0x15, 0x3a, 0x9f, 0x87, 0xb4, 0x6c, 0xea,
+
  0x1d, 0x79, 0x9b, 0x3a, 0xf5, 0x59, 0xe0, 0xca, 0x91, 0x8a, 0xb6, 0x40,
+
  0xf5, 0x30, 0x4b, 0x5d, 0xd5, 0xc0, 0xd8, 0xc6, 0x3c, 0xd9, 0x50, 0x91,
+
  0x37, 0x59, 0x65, 0x7c, 0xfa, 0xa9, 0x1f, 0x7f, 0xf9, 0x61, 0x98, 0x70,
+
  0xd6, 0xcc, 0x34, 0x8b, 0x9e, 0x84, 0x4f, 0x50, 0x3f, 0xeb, 0x44, 0x48,
+
  0xf5, 0xe3, 0xae, 0x35, 0x89, 0xc3, 0xb2, 0x58, 0x22, 0x24, 0x48, 0x13,
+
  0xea, 0x57, 0x96, 0xa3, 0x56, 0x8e, 0x2f, 0x47, 0x63, 0xc8, 0xe1, 0x20,
+
  0x70, 0xce, 0xd4, 0x12, 0x01, 0x12, 0xb3, 0x22, 0xf1, 0x05, 0x10, 0x53,
+
  0xa2, 0xa2, 0xde, 0x87, 0xb3, 0x6c, 0x19, 0xc7, 0xa9, 0xec, 0x8a, 0xcb,
+
  0x4b, 0x97, 0xd9, 0x12, 0x30, 0x6c, 0x23, 0x27, 0x8f, 0x1d, 0x3e, 0x95,
+
  0x95, 0x85, 0xc1, 0xea, 0x2c, 0xe7, 0x8c, 0x92, 0xa6, 0x96, 0xc8, 0x1c,
+
  0x20, 0xbe, 0x6d, 0x67, 0xff, 0x92, 0x88, 0xd7, 0xcf, 0x84, 0xcb, 0xe7,
+
  0x1c, 0x84, 0xd1, 0x37, 0x2c, 0x1b, 0xb9, 0xd9, 0xeb, 0x6c, 0xcc, 0x79,
+
  0x3b, 0x83, 0x58, 0xd8, 0xb7, 0xd3, 0x47, 0x9f, 0x51, 0x64, 0xd1, 0xc0,
+
  0x1a, 0xd3, 0x3d, 0xe6, 0xbf, 0xd6, 0x91, 0x97, 0x56, 0xa1, 0x31, 0xea,
+
  0xaf, 0xf6, 0x03, 0x57, 0x9f, 0x6f, 0xd0, 0x52, 0x7e, 0xea, 0x12, 0xe6,
+
  0xf4, 0x73, 0x75, 0xce, 0xbf, 0xd0, 0x94, 0x93, 0x02, 0xe1, 0xc5, 0x6a,
+
  0xf0, 0xf1, 0x6b, 0x4c, 0xb9, 0x46, 0xa6, 0x64, 0xca, 0x43, 0x8f, 0x53,
+
  0xe5, 0xc5, 0xee, 0xcd, 0x21, 0x58, 0x5d, 0x52, 0xcf, 0x87, 0xac, 0x86,
+
  0xb8, 0xc8, 0x54, 0xd1, 0xfc, 0x4a, 0x4d, 0x31, 0xe4, 0xe6, 0x79, 0x73,
+
  0x37, 0x8c, 0xa2, 0x64, 0xcf, 0x91, 0x9c, 0x5b, 0xfe, 0xc9, 0x37, 0xa5,
+
  0x45, 0x8d, 0xe3, 0x77, 0xe9, 0xcb, 0x1a, 0x5d, 0x9f, 0xe4, 0x48, 0xef,
+
  0x2c, 0xb5, 0x32, 0x94, 0x93, 0xe1, 0x4d, 0x11, 0x3e, 0x7e, 0x85, 0x95,
+
  0x61, 0xd0, 0x46, 0x27, 0x01, 0xe4, 0x73, 0x44, 0x00, 0x7c, 0x89, 0xed,
+
  0x78, 0x6b, 0x6c, 0x74, 0xc6, 0x89, 0xe1, 0xcc, 0x65, 0xfd, 0xf8, 0x75,
+
  0x8e, 0xe2, 0xef, 0xc5, 0x28, 0xcb, 0xfb, 0x6e, 0xec, 0xfa, 0xf9, 0xab,
+
  0x48, 0xbf, 0xcc, 0x13, 0xbe, 0x54, 0x1c, 0xcb, 0x9f, 0xfc, 0x91, 0x5b,
+
  0xdf, 0x61, 0xb2, 0x8a, 0xdb, 0xe0, 0xb9, 0x9b, 0x8a, 0x66, 0xc5, 0x3f,
+
  0x72, 0x0f, 0x2c, 0xe8, 0x8a, 0x93, 0xc4, 0x1e, 0xae, 0x91, 0x9d, 0x86,
+
  0xb9, 0x7d, 0xf9, 0x12, 0x5d, 0x71, 0xd2, 0x39, 0x2a, 0x9c, 0x79, 0x49,
+
  0x5c, 0x6f, 0xb4, 0x3b, 0xe8, 0x4f, 0x93, 0x5e, 0x30, 0xff, 0x8a, 0x5c,
+
  0xd0, 0x1f, 0x27, 0xaf, 0x7b, 0x77, 0x16, 0x3c, 0xa0, 0x79, 0x99, 0xbe,
+
  0xc4, 0xd4, 0x38, 0xe1, 0xcd, 0x69, 0x16, 0xf4, 0xf1, 0x2f, 0x5a, 0x25,
+
  0x2b, 0xd0, 0xe7, 0xc8, 0xf3, 0xcf, 0xb2, 0x77, 0x4f, 0x6e, 0x21, 0xdf,
+
  0x17, 0x8b, 0xf7, 0x25, 0x94, 0x41, 0xdf, 0xa3, 0xdf, 0x24, 0xe1, 0x9b,
+
  0x93, 0x5c, 0xb5, 0x2b, 0x5c, 0x37, 0xb6, 0xa4, 0x78, 0xcf, 0x3c, 0xf9,
+
  0x1e, 0x15, 0xef, 0xf1, 0x1d, 0xfd, 0x65, 0x4e, 0xbb, 0x93, 0xf9, 0x81,
+
  0xc8, 0xff, 0xda, 0xfb, 0xc8, 0x5d, 0x00, 0x51, 0xf9, 0xff, 0xd5, 0x4f,
+
  0xbb, 0xbb, 0x12, 0xfc, 0x1b, 0xe1, 0x2f, 0x98, 0x1a, 0xb3, 0xc9, 0x02,
+
  0x25, 0x3f, 0x1f, 0xf5, 0xb3, 0xc7, 0xca, 0x39, 0xcb, 0x5d, 0x31, 0x6a,
+
  0x2b, 0x59, 0x6f, 0xd3, 0x03, 0x8d, 0x97, 0xd3, 0x51, 0xd6, 0x26, 0xf0,
+
  0x7e, 0xe6, 0x12, 0xc1, 0x2e, 0x4e, 0x05, 0x10, 0xbf, 0xe4, 0x7a, 0x06,
+
  0x7a, 0x8d, 0xd5, 0x71, 0x9a, 0xec, 0x61, 0xaa, 0xb1, 0x99, 0xe4, 0x03,
+
  0x33, 0x1a, 0xaf, 0xd9, 0xe5, 0x0c, 0x90, 0x2b, 0x6f, 0x69, 0xe7, 0x99,
+
  0x32, 0x64, 0x09, 0x39, 0xc0, 0x38, 0x0a, 0x4d, 0xc2, 0x89, 0xdd, 0x6e,
+
  0xd2, 0x7a, 0x28, 0x27, 0x58, 0xa9, 0x95, 0x99, 0x46, 0x09, 0x59, 0xc1,
+
  0x5a, 0x80, 0x24, 0xd1, 0x6d, 0xc4, 0xc3, 0x09, 0x31, 0xa9, 0x21, 0x09,
+
  0x68, 0x4e, 0x44, 0x04, 0x78, 0x4a, 0x35, 0x87, 0xf0, 0x27, 0x81, 0x2a,
+
  0x7d, 0x3e, 0xaa, 0x9c, 0x87, 0xe4, 0x9b, 0xbf, 0xff, 0x77, 0x25, 0xd8,
+
  0xfa, 0x3f, 0xff, 0x19, 0x7d, 0xf3, 0x69, 0x88, 0x29, 0x21, 0x5d, 0x51,
+
  0x14, 0x3d, 0xff, 0x31, 0x9d, 0x4e, 0x27, 0x31, 0xb8, 0xb4, 0x32, 0x25,
+
  0x47, 0x9e, 0x72, 0x3e, 0x16, 0x82, 0x70, 0x57, 0xe5, 0x43, 0x9e, 0x12,
+
  0x05, 0xaf, 0xb2, 0x72, 0x93, 0x33, 0x3f, 0x02, 0xa8, 0x97, 0x4d, 0xa8,
+
  0x1a, 0x4e, 0xfc, 0x6d, 0xf7, 0xd9, 0x34, 0x15, 0xfa, 0x87, 0x11, 0x03,
+
  0x05, 0x60, 0x76, 0x99, 0xf6, 0xc2, 0xf4, 0x25, 0x37, 0x17, 0x01, 0x12,
+
  0x6b, 0x0f, 0x29, 0x73, 0x74, 0x3a, 0x7c, 0x6a, 0x45, 0x30, 0xe6, 0x04,
+
  0xa1, 0x99, 0xde, 0x66, 0xb3, 0x6a, 0x1e, 0xfb, 0x83, 0x0e, 0xef, 0xde,
+
  0x0e, 0xa1, 0x9f, 0x68, 0x63, 0x18, 0x7d, 0x8b, 0x5c, 0x32, 0x88, 0xf3,
+
  0xc5, 0x9a, 0x93, 0xc2, 0x81, 0x84, 0x0a, 0x07, 0x82, 0x76, 0xef, 0xc9,
+
  0x43, 0x40, 0x35, 0x05, 0xb6, 0xcd, 0x8e, 0x65, 0x90, 0x8e, 0x55, 0xcd,
+
  0x59, 0x48, 0x42, 0x8b, 0xef, 0xa3, 0x45, 0x9b, 0x76, 0xbc, 0x6e, 0xa8,
+
  0xa8, 0xd7, 0x7a, 0x48, 0x27, 0x23, 0x2e, 0x37, 0x0d, 0xb0, 0xf8, 0xcb,
+
  0x59, 0xac, 0xe6, 0xd9, 0xe3, 0x9b, 0xa3, 0x15, 0x5c, 0x48, 0x35, 0xe7,
+
  0xb8, 0xe6, 0x14, 0xce, 0xa7, 0xfe, 0x96, 0x10, 0xdc, 0x87, 0x5a, 0xfd,
+
  0xd4, 0xd2, 0x4e, 0xee, 0x4a, 0xbb, 0xa0, 0x09, 0x44, 0xc8, 0xee, 0x93,
+
  0x76, 0xec, 0xa5, 0x97, 0x14, 0xcf, 0xce, 0x97, 0xfa, 0x71, 0x8c, 0x31,
+
  0xce, 0x7d, 0x7f, 0x72, 0x7a, 0x6c, 0xb3, 0xfe, 0xfe, 0x77, 0xad, 0x83,
+
  0xae, 0x4c, 0x6e, 0x02, 0x1c, 0x0e, 0xb6, 0xf9, 0x3c, 0x60, 0x77, 0x01,
+
  0x0b, 0xf7, 0x50, 0xc7, 0x6a, 0x48, 0xe1, 0xc7, 0x67, 0xef, 0x4f, 0x2e,
+
  0xcf, 0xcf, 0xde, 0x1e, 0x9f, 0xf5, 0x56, 0xfc, 0xaa, 0x8e, 0x58, 0x39,
+
  0x53, 0x58, 0xa1, 0xa9, 0xd9, 0xdc, 0x92, 0x74, 0x3e, 0x49, 0xcc, 0x06,
+
  0x90, 0x4f, 0x1d, 0xbf, 0x39, 0xef, 0x21, 0xcd, 0xb2, 0xc5, 0xda, 0x8d,
+
  0x91, 0xb1, 0xd1, 0x47, 0xe6, 0x74, 0x87, 0xf3, 0x72, 0x29, 0x4a, 0x40,
+
  0xc5, 0x57, 0x38, 0x34, 0xc8, 0xe8, 0x26, 0x60, 0x21, 0x40, 0x8c, 0xae,
+
  0x38, 0x83, 0x97, 0x52, 0xbe, 0x5c, 0x8a, 0x6c, 0xa5, 0x13, 0x6e, 0x31,
+
  0xdf, 0x09, 0x60, 0xf5, 0x28, 0x5e, 0x9c, 0xa5, 0xb4, 0xf5, 0xe4, 0x6c,
+
  0xa6, 0xd7, 0xde, 0xa5, 0xa5, 0xbb, 0x54, 0x78, 0x33, 0x79, 0x77, 0x89,
+
  0x63, 0x94, 0x69, 0x3f, 0xb6, 0x14, 0x86, 0x36, 0x28, 0x65, 0xf0, 0x46,
+
  0xf1, 0x93, 0x66, 0x5e, 0x98, 0x9d, 0xf1, 0xf3, 0xb7, 0xd0, 0x7d, 0xbf,
+
  0xfb, 0xe9, 0x25, 0x8e, 0xc7, 0xcf, 0xc1, 0xde, 0x98, 0x96, 0x5e, 0x37,
+
  0x1c, 0xb2, 0xa4, 0x82, 0xd0, 0xe2, 0x40, 0xdb, 0xe9, 0xa4, 0x9c, 0xb0,
+
  0xab, 0x8b, 0xcb, 0xf3, 0x1f, 0xff, 0xfd, 0x99, 0x5f, 0xe1, 0x95, 0x93,
+
  0xff, 0x04, 0x1c, 0x15, 0x6d, 0xfc, 0xe7, 0xcf, 0xfe, 0xb6, 0x6a, 0xf3,
+
  0x2d, 0x8b, 0x4a, 0x9f, 0x25, 0x31, 0x67, 0x3f, 0x03, 0xf0, 0x33, 0x8d,
+
  0x8e, 0x03, 0x58, 0xf2, 0x6b, 0x71, 0x2c, 0xbe, 0x03, 0x55, 0x7e, 0x96,
+
  0xd5, 0x0d, 0x5a, 0xcf, 0xce, 0xa2, 0xbb, 0x9e, 0x20, 0xd0, 0x1d, 0x00,
+
  0x40, 0x4b, 0xe8, 0x01, 0x80, 0xff, 0xdf, 0x62, 0x8e, 0x00, 0x82, 0x95,
+
  0xb1, 0x13, 0x72, 0x70, 0x7a, 0xfa, 0x59, 0x67, 0x21, 0xbf, 0x65, 0x47,
+
  0x90, 0xb4, 0xd5, 0xb6, 0xe1, 0x0f, 0x79, 0x3a, 0x94, 0x91, 0x66, 0xaf,
+
  0xba, 0xee, 0x9c, 0x9d, 0x4b, 0x6f, 0xbe, 0xa5, 0xc8, 0x4b, 0xbb, 0xcc,
+
  0x8c, 0xc6, 0x47, 0x25, 0x0d, 0xa8, 0xa8, 0x80, 0xaa, 0x85, 0x8e, 0x95,
+
  0x6b, 0x8c, 0x67, 0x52, 0x7e, 0x17, 0xd4, 0x50, 0x4b, 0x3a, 0x25, 0x59,
+
  0x64, 0x5c, 0xa1, 0xc1, 0xc6, 0x05, 0x03, 0xbf, 0x12, 0x6a, 0x5c, 0x61,
+
  0x19, 0xfb, 0x50, 0xbc, 0xcd, 0xe8, 0x2a, 0xb8, 0x0e, 0x42, 0x7c, 0x68,
+
  0xa6, 0x41, 0x82, 0xfb, 0x77, 0x92, 0x97, 0x1f, 0x09, 0x62, 0x0f, 0x47,
+
  0x94, 0x1c, 0xf6, 0x4a, 0xc6, 0x80, 0x78, 0x0a, 0xf5, 0x49, 0x78, 0xa9,
+
  0x1c, 0xea, 0x6a, 0x5e, 0xc6, 0x7a, 0x07, 0xc5, 0x29, 0x65, 0x75, 0x0a,
+
  0x49, 0x49, 0x9c, 0x2f, 0x96, 0x56, 0x30, 0x40, 0x19, 0x82, 0x58, 0xaa,
+
  0xd0, 0x4b, 0xcb, 0x17, 0xd1, 0x8e, 0x30, 0xad, 0xb5, 0x14, 0x23, 0x1c,
+
  0x0f, 0xf0, 0xab, 0xa7, 0x65, 0x36, 0xbc, 0x8d, 0x83, 0xd8, 0x45, 0xc5,
+
  0x85, 0x50, 0x35, 0x94, 0x0a, 0x4c, 0xa7, 0xbb, 0x15, 0x8b, 0x95, 0x01,
+
  0x59, 0x98, 0x12, 0x0d, 0xc3, 0x44, 0x0f, 0xad, 0x65, 0xf7, 0xeb, 0xb4,
+
  0x1e, 0xa9, 0x4e, 0x4b, 0x7e, 0xec, 0x50, 0x8f, 0x19, 0xe4, 0x50, 0xd7,
+
  0xf6, 0xbf, 0xfa, 0x21, 0xb2, 0x26, 0xee, 0x37, 0x1f, 0x74, 0x54, 0x74,
+
  0x92, 0xf6, 0x63, 0xa2, 0xcc, 0x2b, 0xbc, 0x4e, 0x95, 0x67, 0xe4, 0x2f,
+
  0xcb, 0x34, 0xe7, 0xc8, 0x14, 0xa4, 0xab, 0xc9, 0x14, 0xd0, 0x30, 0xd3,
+
  0x44, 0x8c, 0x3b, 0x0e, 0xf1, 0x60, 0x69, 0x23, 0xb0, 0x6b, 0x5e, 0xc7,
+
  0x17, 0x75, 0x74, 0x6e, 0x4f, 0x23, 0x85, 0x1a, 0xe6, 0x31, 0x24, 0xb4,
+
  0x31, 0xe9, 0x98, 0xdf, 0x9e, 0xed, 0x27, 0x55, 0x09, 0x72, 0x1f, 0x59,
+
  0x17, 0x57, 0x92, 0xc9, 0x2c, 0x96, 0x92, 0x1b, 0x2f, 0x01, 0xb7, 0xc7,
+
  0x41, 0x3c, 0x14, 0x7c, 0x20, 0x2a, 0x60, 0xf4, 0x8a, 0xe2, 0xe8, 0x12,
+
  0x01, 0x29, 0x31, 0x32, 0xc0, 0x7c, 0x26, 0x7c, 0x09, 0x28, 0x3b, 0x46,
+
  0x10, 0x11, 0x38, 0x90, 0x85, 0x2d, 0x91, 0xa3, 0x45, 0x45, 0xb6, 0xd7,
+
  0x8a, 0x46, 0xad, 0x99, 0xae, 0x00, 0xd7, 0x1f, 0x16, 0x41, 0xdc, 0x09,
+
  0x37, 0xce, 0x35, 0x40, 0x3a, 0x8c, 0x28, 0x09, 0x81, 0x49, 0x84, 0x58,
+
  0x64, 0x6f, 0xb7, 0xb3, 0xde, 0xf2, 0xf2, 0x34, 0x63, 0xf7, 0x34, 0x5f,
+
  0x5e, 0x87, 0x27, 0x47, 0x97, 0x38, 0xdb, 0x51, 0xf3, 0x01, 0xf7, 0x24,
+
  0x53, 0x33, 0x12, 0xa6, 0xb2, 0x51, 0xfa, 0xef, 0x38, 0x82, 0x25, 0x66,
+
  0x95, 0xe3, 0x8a, 0x9b, 0x56, 0x12, 0xe3, 0x9f, 0x49, 0xd1, 0x76, 0xbd,
+
  0x80, 0xd9, 0x1c, 0xb0, 0x67, 0x54, 0x1d, 0x29, 0x67, 0x45, 0xb3, 0x48,
+
  0x55, 0x00, 0x5a, 0x06, 0x3b, 0x23, 0xb9, 0xf2, 0x12, 0x07, 0x80, 0x21,
+
  0xbc, 0x64, 0x95, 0xeb, 0x04, 0x32, 0x1b, 0xfb, 0x9b, 0x9d, 0x8d, 0xdd,
+
  0xbd, 0xce, 0x7a, 0x67, 0x7d, 0x6d, 0x63, 0xf7, 0x19, 0x2c, 0x0f, 0x9a,
+
  0xcf, 0x84, 0xc5, 0x84, 0xa0, 0xef, 0xb9, 0x29, 0x70, 0xb0, 0x9f, 0x31,
+
  0xb8, 0x71, 0x6d, 0xce, 0xc3, 0x66, 0x38, 0xb8, 0xb8, 0x38, 0x3a, 0xe8,
+
  0x1d, 0x24, 0xdf, 0x9a, 0xdd, 0xfb, 0x5d, 0x08, 0x34, 0x6e, 0x89, 0x4b,
+
  0xc8, 0x30, 0xb0, 0x52, 0x41, 0x2b, 0xaa, 0x29, 0xc9, 0x78, 0x3a, 0x79,
+
  0x92, 0x9c, 0x94, 0xdb, 0x9c, 0xf8, 0xf2, 0xd8, 0xe9, 0x15, 0xb8, 0xf0,
+
  0x2d, 0x57, 0x64, 0x47, 0x79, 0x76, 0xc6, 0x93, 0xfc, 0x1e, 0xc8, 0xbf,
+
  0x78, 0xd8, 0x35, 0x0e, 0x2b, 0x17, 0xc3, 0x9a, 0x8d, 0x2a, 0xc2, 0xff,
+
  0xf0, 0xfc, 0xf4, 0xdd, 0xdb, 0xb3, 0x6e, 0xf2, 0x2d, 0x08, 0x70, 0x28,
+
  0x20, 0xfc, 0x90, 0xf7, 0x43, 0xfa, 0x55, 0x68, 0xee, 0x25, 0x78, 0x55,
+
  0x6b, 0x74, 0x9c, 0x6e, 0xe9, 0x2c, 0x06, 0x5c, 0x59, 0x31, 0xe3, 0xe2,
+
  0x70, 0xd0, 0xd5, 0x97, 0xc9, 0x80, 0xb1, 0xae, 0x42, 0xdb, 0x08, 0x93,
+
  0xd8, 0x9c, 0xb1, 0x01, 0xe6, 0xbf, 0x7d, 0x9d, 0x4e, 0xf8, 0xc2, 0x16,
+
  0x87, 0x53, 0x18, 0x15, 0x21, 0x73, 0x01, 0xbd, 0xf3, 0x78, 0x35, 0x99,
+
  0xaa, 0xd3, 0xe8, 0xa8, 0x33, 0xc6, 0x72, 0xc7, 0xee, 0xe1, 0x9d, 0xcb,
+
  0x88, 0x8e, 0x0f, 0x15, 0x06, 0xec, 0x43, 0x73, 0xde, 0xaf, 0x0e, 0x0f,
+
  0xae, 0x5e, 0xbd, 0x3b, 0x3b, 0x3a, 0x3d, 0x8e, 0x13, 0x9e, 0xf2, 0x75,
+
  0xd5, 0x8a, 0x0d, 0x0f, 0x0a, 0x71, 0x0a, 0xa3, 0x8d, 0xcd, 0xda, 0x5a,
+
  0xbb, 0x6f, 0xce, 0xdf, 0x1e, 0x47, 0xb7, 0x82, 0x9b, 0x55, 0x45, 0x51,
+
  0xe0, 0x90, 0xb2, 0x5d, 0x34, 0x1a, 0x8f, 0xb9, 0xb7, 0x6e, 0x3e, 0x96,
+
  0xb1, 0x5d, 0x11, 0xd8, 0x24, 0x25, 0x2f, 0x7a, 0x75, 0x4f, 0xd8, 0xd9,
+
  0xc9, 0x49, 0x9b, 0x37, 0xfb, 0x18, 0xd5, 0xa1, 0x30, 0x3d, 0xa9, 0xe5,
+
  0x24, 0xf9, 0xf1, 0xe8, 0xf5, 0xd5, 0xe1, 0xf9, 0x59, 0x5d, 0x60, 0x7c,
+
  0x7f, 0xf2, 0x9a, 0xba, 0x5e, 0x1d, 0x4c, 0xb7, 0x7b, 0x7a, 0xf5, 0xea,
+
  0xe0, 0xf0, 0x87, 0xe3, 0xb3, 0xa3, 0xe4, 0x5b, 0x0f, 0xf9, 0x2a, 0x36,
+
  0x36, 0x21, 0x1a, 0x98, 0x0f, 0x1c, 0xf8, 0x4c, 0x41, 0xb7, 0x9e, 0xd5,
+
  0x68, 0x1b, 0xf3, 0xba, 0x5a, 0x70, 0xa7, 0x8d, 0x00, 0x49, 0xcf, 0x6f,
+
  0x82, 0x90, 0xfd, 0x08, 0x57, 0x0c, 0x59, 0xf0, 0x5e, 0x87, 0x6c, 0xd2,
+
  0xfd, 0x22, 0x58, 0x69, 0x6f, 0xaa, 0x45, 0xcc, 0x65, 0x36, 0xeb, 0xe8,
+
  0x13, 0x10, 0x2d, 0xbc, 0x04, 0x13, 0x79, 0xbb, 0x8a, 0xa6, 0x07, 0xcb,
+
  0x4e, 0x45, 0xe1, 0xfd, 0xdf, 0x8a, 0x8f, 0x84, 0x93, 0x2f, 0xb8, 0xfd,
+
  0xd0, 0x41, 0x47, 0x21, 0x3c, 0x3f, 0xc7, 0x7b, 0x84, 0x1f, 0x20, 0x75,
+
  0xe3, 0xf6, 0x8f, 0x87, 0x23, 0xbb, 0x62, 0xad, 0x75, 0x9a, 0x3e, 0xd9,
+
  0x6a, 0xe9, 0x38, 0xe9, 0x53, 0x14, 0x10, 0x4b, 0xbb, 0xcb, 0xd7, 0xd4,
+
  0x2a, 0xc6, 0xdc, 0xf6, 0xc6, 0xfc, 0xfc, 0x25, 0x72, 0xeb, 0xd2, 0x49,
+
  0x59, 0xa2, 0x62, 0x6b, 0x30, 0x9a, 0x4d, 0x87, 0x00, 0x48, 0x1e, 0x94,
+
  0x1f, 0xf3, 0x69, 0xdd, 0x2d, 0x60, 0x24, 0x41, 0x9f, 0xfe, 0x3c, 0x2a,
+
  0xcd, 0x7f, 0x0a, 0x23, 0xfd, 0xe9, 0x57, 0x93, 0x59, 0x49, 0xdf, 0x96,
+
  0xb6, 0xf2, 0xab, 0xa4, 0x42, 0x2f, 0x4e, 0xf8, 0xc1, 0x3a, 0x9a, 0x23,
+
  0x55, 0x0c, 0x03, 0x18, 0x30, 0xf3, 0x63, 0xdb, 0xe1, 0x25, 0x4e, 0x10,
+
  0xaf, 0x35, 0xfe, 0xaf, 0x79, 0x80, 0x24, 0x37, 0x59, 0x4f, 0xf3, 0xcf,
+
  0x84, 0x4a, 0x1b, 0x52, 0x90, 0xea, 0x82, 0x84, 0xf2, 0x24, 0x3a, 0xc9,
+
  0x29, 0x00, 0x2a, 0xa5, 0x22, 0xbc, 0x20, 0x54, 0x2b, 0x45, 0x22, 0xd5,
+
  0x50, 0xa8, 0x18, 0xcd, 0x1d, 0xef, 0x84, 0x87, 0x4a, 0x8c, 0x1c, 0x2c,
+
  0x3d, 0x48, 0xec, 0x86, 0x63, 0xb2, 0x16, 0xb2, 0x53, 0xed, 0xf8, 0xfe,
+
  0x75, 0x7a, 0xfe, 0xfa, 0xe8, 0xe4, 0x92, 0x86, 0xe8, 0x31, 0xff, 0x46,
+
  0x46, 0x1b, 0x83, 0x7a, 0xac, 0x42, 0x24, 0xb6, 0x2c, 0xf9, 0x97, 0xdb,
+
  0xfe, 0xb2, 0xdd, 0x03, 0x2a, 0x16, 0xad, 0x46, 0x11, 0x10, 0x00, 0x2e,
+
  0x9a, 0xf4, 0x66, 0xaa, 0xba, 0xc7, 0x8c, 0x44, 0xee, 0xcf, 0x8c, 0x9a,
+
  0xf0, 0xeb, 0xb0, 0x18, 0x94, 0x61, 0xaa, 0x29, 0x4d, 0xa9, 0xfd, 0x71,
+
  0x4b, 0xa4, 0xad, 0x25, 0xde, 0x2d, 0x79, 0xab, 0x23, 0x8b, 0x85, 0xa0,
+
  0xa3, 0xf8, 0x46, 0xeb, 0x83, 0xda, 0x30, 0x8a, 0x04, 0xe0, 0x95, 0x7a,
+
  0x24, 0x70, 0x4a, 0xaf, 0xc2, 0x1f, 0x76, 0x97, 0x3d, 0x3e, 0x37, 0x37,
+
  0xc0, 0x51, 0x41, 0x42, 0x3f, 0xb3, 0xf9, 0x25, 0xa5, 0x80, 0x10, 0xca,
+
  0x31, 0xbe, 0x09, 0xef, 0x49, 0x63, 0xd1, 0x40, 0xec, 0x13, 0x3a, 0x61,
+
  0x27, 0xf9, 0x00, 0x66, 0x0f, 0x9e, 0xbd, 0x6b, 0x73, 0x1f, 0x24, 0xff,
+
  0x7a, 0x77, 0x72, 0x18, 0xc1, 0xf0, 0xeb, 0xbe, 0x39, 0x3e, 0x3d, 0x25,
+
  0xa6, 0x62, 0xaa, 0xe2, 0x7e, 0xff, 0xb6, 0x5b, 0x17, 0xc3, 0xfd, 0x8c,
+
  0x28, 0x3b, 0x72, 0xa1, 0x19, 0xc7, 0x2c, 0x1e, 0x1d, 0x9e, 0x32, 0x8a,
+
  0x94, 0xf9, 0xf7, 0x33, 0x50, 0x6e, 0x3f, 0xab, 0xef, 0xec, 0xbb, 0xcc,
+
  0x27, 0x20, 0x81, 0x44, 0x3d, 0x3c, 0xbe, 0xec, 0x5d, 0xe9, 0x0e, 0xf8,
+
  0xd4, 0x8b, 0x87, 0xc2, 0x29, 0xb5, 0x8b, 0xc7, 0x36, 0x0a, 0x67, 0x4f,
+
  0x9c, 0x52, 0xfd, 0x8f, 0xdc, 0x67, 0xa6, 0xd9, 0x1f, 0x8e, 0xff, 0x6d,
+
  0x76, 0x2b, 0x37, 0x6b, 0x17, 0xf7, 0xbb, 0x79, 0xf0, 0xe6, 0xec, 0x15,
+
  0x99, 0x67, 0x07, 0x59, 0x1f, 0xa9, 0x18, 0x56, 0xf6, 0xfe, 0x0e, 0xf2,
+
  0x93, 0x21, 0xe5, 0x21, 0xdc, 0x19, 0x36, 0x5f, 0x78, 0x50, 0x70, 0xe1,
+
  0xb9, 0x6d, 0x22, 0x65, 0x94, 0x00, 0xe7, 0x22, 0x1c, 0xae, 0x3b, 0x42,
+
  0x77, 0x27, 0x89, 0x1b, 0xda, 0x98, 0x8c, 0x16, 0xcb, 0x98, 0xe7, 0xb0,
+
  0x38, 0xd3, 0xe1, 0xd3, 0xef, 0x99, 0x56, 0xc4, 0x22, 0xac, 0x70, 0x0b,
+
  0x03, 0xda, 0x34, 0x08, 0xb2, 0x6f, 0x4e, 0xa8, 0xe2, 0x05, 0x36, 0x1a,
+
  0x6a, 0x5d, 0x52, 0x31, 0x73, 0x1c, 0x35, 0xc1, 0xbb, 0x02, 0x20, 0x82,
+
  0xca, 0x64, 0xf8, 0xc1, 0x1c, 0x08, 0xc4, 0x18, 0x3e, 0x8a, 0x13, 0xff,
+
  0xc1, 0xed, 0x3c, 0x86, 0x13, 0x1b, 0x86, 0xdc, 0xce, 0x44, 0xfd, 0xe9,
+
  0xa3, 0x4a, 0xbe, 0x74, 0x55, 0xb6, 0xc0, 0x9f, 0xce, 0x48, 0xb0, 0xbe,
+
  0x2a, 0x00, 0x59, 0x56, 0x03, 0x98, 0x39, 0xeb, 0x76, 0x23, 0x20, 0xfd,
+
  0x90, 0xaf, 0xe6, 0x41, 0xcf, 0x9f, 0xd5, 0x3d, 0xbe, 0x34, 0xf6, 0x15,
+
  0xaf, 0x62, 0x5c, 0x49, 0xf5, 0xe8, 0xf5, 0x96, 0x57, 0x53, 0x55, 0xdc,
+
  0x36, 0x2a, 0xa9, 0xa4, 0x84, 0xb5, 0x54, 0x57, 0x6d, 0x79, 0xb2, 0x08,
+
  0x8a, 0x2a, 0x2b, 0xe0, 0xac, 0xaa, 0x46, 0xf4, 0xbd, 0x9a, 0xae, 0xa7,
+
  0x64, 0x83, 0x74, 0x0e, 0x9e, 0xfd, 0xcd, 0x1b, 0xdb, 0x7f, 0x0e, 0xc6,
+
  0x8c, 0xcf, 0x00, 0x29, 0x72, 0x04, 0x3e, 0x00, 0x37, 0x05, 0x75, 0xe1,
+
  0x3c, 0xef, 0x7a, 0x71, 0x02, 0x5e, 0x6f, 0x64, 0x7a, 0x7d, 0x30, 0x27,
+
  0xa4, 0x4c, 0xe9, 0xb4, 0xc8, 0xb5, 0x11, 0xd2, 0x96, 0xc0, 0xed, 0x50,
+
  0xbd, 0x42, 0x94, 0x33, 0x93, 0x7d, 0x30, 0xe6, 0xbf, 0xbd, 0x73, 0xa3,
+
  0x94, 0x9b, 0x7f, 0x1c, 0x7f, 0x7f, 0xf2, 0xa3, 0xf3, 0xd3, 0xf6, 0x9c,
+
  0xf3, 0x87, 0xa1, 0xf3, 0x80, 0x9a, 0x57, 0xb1, 0xcb, 0x84, 0xd0, 0xc6,
+
  0x73, 0x29, 0xd1, 0x5d, 0x93, 0x3f, 0x72, 0x98, 0x81, 0xd9, 0x33, 0xb4,
+
  0xb9, 0x9a, 0xa6, 0xfd, 0xf8, 0xe4, 0xf0, 0x2f, 0xdd, 0x14, 0x61, 0xf8,
+
  0xbe, 0x67, 0x89, 0x1c, 0xfd, 0xbe, 0x3b, 0x6c, 0x5a, 0xef, 0x94, 0x19,
+
  0x60, 0xee, 0xf3, 0xe4, 0x92, 0x3b, 0x7f, 0xc5, 0x53, 0xd3, 0xd9, 0xc0,
+
  0x4a, 0x1d, 0x16, 0x22, 0xd4, 0xb6, 0x96, 0xd7, 0x90, 0x4a, 0xa3, 0xa9,
+
  0x39, 0x78, 0x53, 0x01, 0x2e, 0x91, 0xda, 0xce, 0x9a, 0xd5, 0x4d, 0x79,
+
  0x23, 0xb6, 0x99, 0xea, 0x20, 0x64, 0xe4, 0x82, 0x82, 0x42, 0x35, 0x75,
+
  0x88, 0x77, 0x95, 0x2f, 0x2b, 0xce, 0x55, 0x33, 0x45, 0x51, 0x82, 0x0c,
+
  0x46, 0x96, 0x27, 0x1f, 0x7f, 0xfd, 0xed, 0xf4, 0x56, 0x5d, 0x41, 0x76,
+
  0xbc, 0xd9, 0xb4, 0xc1, 0x30, 0x9b, 0x12, 0x93, 0x2f, 0xc7, 0xa5, 0xea,
+
  0xd6, 0x2d, 0x17, 0xbc, 0x3a, 0x1c, 0x79, 0x80, 0x47, 0x0c, 0x60, 0xcb,
+
  0x72, 0x7b, 0x51, 0x1b, 0x70, 0xbb, 0xff, 0x3a, 0xcb, 0x8d, 0xf8, 0xce,
+
  0xb8, 0xe0, 0xaa, 0xdd, 0xe6, 0x1f, 0xd5, 0xda, 0x48, 0xff, 0x50, 0x23,
+
  0x69, 0xb5, 0x95, 0x9d, 0x3f, 0xd2, 0xc8, 0x4e, 0xad, 0x8d, 0xbb, 0x3f,
+
  0xd4, 0x48, 0x5b, 0x9d, 0x70, 0x2b, 0x2b, 0xc7, 0x3f, 0x9e, 0xf4, 0x8c,
+
  0x3d, 0x7b, 0x54, 0x39, 0x33, 0x13, 0x91, 0x28, 0xd0, 0xa2, 0x47, 0x66,
+
  0xe7, 0x81, 0xbc, 0x3a, 0xbf, 0x25, 0x05, 0x6c, 0x2a, 0x70, 0x53, 0x08,
+
  0x16, 0x96, 0xca, 0x32, 0x90, 0x4f, 0x98, 0xd6, 0x1c, 0x81, 0x44, 0x8a,
+
  0x16, 0x79, 0x84, 0x39, 0x1e, 0x36, 0x55, 0xe9, 0x90, 0x2b, 0x19, 0x46,
+
  0x26, 0x61, 0xbe, 0x13, 0x6d, 0x71, 0xc4, 0x74, 0x20, 0x25, 0x58, 0x4f,
+
  0xa6, 0x95, 0xac, 0x5c, 0x47, 0xb4, 0x4e, 0x12, 0x04, 0x91, 0x1a, 0x22,
+
  0x3d, 0x64, 0x06, 0x01, 0x32, 0xd1, 0xfa, 0xbc, 0x6d, 0xdd, 0x5e, 0x5d,
+
  0x97, 0xcb, 0x97, 0x8b, 0x90, 0x3a, 0x36, 0x77, 0x52, 0xb8, 0x5a, 0x3c,
+
  0x0c, 0xce, 0x0a, 0x7f, 0x54, 0x7a, 0x63, 0x86, 0xa2, 0xdc, 0xf2, 0xa1,
+
  0x59, 0x00, 0xee, 0x8d, 0xc9, 0xac, 0x9e, 0x64, 0xbd, 0x21, 0x17, 0xc4,
+
  0xa8, 0x72, 0xb4, 0xe8, 0x50, 0xc9, 0x0d, 0x06, 0xcd, 0xb3, 0xaf, 0xd4,
+
  0x09, 0x1a, 0x36, 0x2b, 0x2b, 0x88, 0xfd, 0x81, 0x62, 0x6d, 0x9b, 0xb0,
+
  0xef, 0xd9, 0x14, 0x23, 0x33, 0xcd, 0x87, 0xac, 0xae, 0x0b, 0x3c, 0x53,
+
  0xfe, 0xbb, 0xa7, 0x6e, 0x6c, 0x59, 0x2f, 0xbb, 0x99, 0xea, 0x21, 0x95,
+
  0xb7, 0xf6, 0x2b, 0x3c, 0xe1, 0x0f, 0x29, 0x8b, 0x64, 0xa1, 0xa2, 0x77,
+
  0xbf, 0xdc, 0x16, 0x47, 0x8c, 0xa5, 0xbc, 0x2f, 0x26, 0x36, 0x02, 0xab,
+
  0x21, 0x76, 0x97, 0x15, 0xad, 0xfc, 0x48, 0xaa, 0x92, 0xe6, 0x88, 0x65,
+
  0x46, 0xb2, 0xa3, 0xa5, 0x98, 0x52, 0xdf, 0xaa, 0x7c, 0x4b, 0x05, 0xa7,
+
  0xe6, 0x64, 0x8f, 0xb8, 0x6c, 0x72, 0xaa, 0x64, 0x56, 0x2e, 0x5e, 0xf3,
+
  0x2a, 0x9a, 0x2f, 0x0a, 0xcf, 0x45, 0x98, 0x30, 0x9d, 0x76, 0xad, 0x0a,
+
  0x51, 0xbf, 0xa0, 0x09, 0x64, 0xbe, 0x46, 0x33, 0x6f, 0xd7, 0x29, 0x98,
+
  0xde, 0x88, 0xed, 0x24, 0x1d, 0xb1, 0xef, 0x42, 0x57, 0x20, 0xce, 0xcb,
+
  0xe0, 0x26, 0x61, 0x47, 0xec, 0x76, 0xeb, 0x87, 0x17, 0x56, 0x01, 0x5f,
+
  0x96, 0xb1, 0xef, 0x50, 0x82, 0x56, 0x05, 0x31, 0xf4, 0xe9, 0xd3, 0x54,
+
  0x55, 0x15, 0x4e, 0x42, 0x59, 0xab, 0x8a, 0xd8, 0xf5, 0xdf, 0xc2, 0x3f,
+
  0xd4, 0xf7, 0x30, 0xe5, 0xb2, 0x7b, 0x8d, 0x5f, 0xc8, 0xe3, 0xde, 0x73,
+
  0x9d, 0x2d, 0xf1, 0x96, 0x17, 0xf5, 0xfd, 0xe2, 0xd5, 0x08, 0xd1, 0x6b,
+
  0xec, 0x93, 0x7b, 0x12, 0x92, 0xcf, 0x40, 0x78, 0x21, 0x91, 0x92, 0x49,
+
  0x36, 0x1e, 0xca, 0x80, 0xe5, 0x1b, 0xaa, 0x74, 0xa5, 0xa0, 0x3a, 0x3b,
+
  0x59, 0x6c, 0x6f, 0x8c, 0x2d, 0xef, 0x47, 0xfe, 0xf6, 0xe5, 0xbd, 0xe6,
+
  0x06, 0x60, 0x3f, 0x31, 0xb8, 0xf8, 0x72, 0xbb, 0x0d, 0xb9, 0x31, 0xfe,
+
  0x0a, 0xf0, 0x61, 0xc4, 0xf4, 0xa6, 0x9f, 0xf5, 0x17, 0x21, 0xa2, 0x3f,
+
  0x3b, 0xfc, 0x3d, 0xd6, 0x62, 0xcc, 0xd8, 0x6c, 0xc2, 0x14, 0x39, 0xce,
+
  0x00, 0x23, 0xec, 0xd7, 0x74, 0x24, 0x24, 0xc5, 0x13, 0xc0, 0x7b, 0x74,
+
  0x92, 0xb7, 0x45, 0x00, 0x22, 0x55, 0xdc, 0x4e, 0x85, 0x90, 0x0b, 0x10,
+
  0x4b, 0x3c, 0x3d, 0xc6, 0xda, 0x1e, 0x88, 0x86, 0xed, 0x1a, 0x64, 0x1b,
+
  0x4d, 0x43, 0xec, 0x46, 0xde, 0x90, 0xb3, 0x7a, 0x34, 0x97, 0x93, 0xce,
+
  0x93, 0x0b, 0xeb, 0x76, 0x1e, 0x68, 0x58, 0xc0, 0xc7, 0xa2, 0xb5, 0x30,
+
  0xc6, 0xd4, 0x1d, 0xe9, 0xdb, 0x29, 0x49, 0x32, 0x6b, 0x29, 0xbb, 0x18,
+
  0x95, 0xae, 0x14, 0xb4, 0xd9, 0x80, 0xf9, 0x91, 0xb1, 0x1b, 0x52, 0x4e,
+
  0x83, 0x61, 0x24, 0xb5, 0xb2, 0xf4, 0xf0, 0x25, 0x5b, 0x14, 0xbe, 0xb5,
+
  0x82, 0x9a, 0x73, 0xe0, 0xc8, 0x75, 0x03, 0xd0, 0xae, 0x39, 0x99, 0x09,
+
  0x60, 0xa7, 0xf6, 0xec, 0x47, 0x47, 0x25, 0xe8, 0x8d, 0x67, 0xc3, 0x8e,
+
  0xe7, 0x81, 0x76, 0xca, 0xc5, 0x41, 0xb7, 0xab, 0xfb, 0xe4, 0x30, 0xb2,
+
  0x25, 0xa4, 0x60, 0x82, 0x88, 0x35, 0x85, 0xdb, 0x35, 0x94, 0xa9, 0xd2,
+
  0x48, 0xad, 0x2c, 0x7a, 0x83, 0x85, 0xdd, 0x11, 0xf3, 0x6c, 0xb1, 0x77,
+
  0x5c, 0xf2, 0x7e, 0x68, 0x3e, 0x75, 0xc8, 0x0f, 0x8b, 0x27, 0x32, 0x6e,
+
  0x20, 0x73, 0xa1, 0x23, 0xa6, 0x99, 0x98, 0x6c, 0xa6, 0x52, 0xed, 0x02,
+
  0x7f, 0xa7, 0x11, 0x48, 0x90, 0x64, 0x5e, 0x47, 0xb6, 0xc2, 0x41, 0xbf,
+
  0xe7, 0x41, 0xb5, 0xfe, 0xd4, 0xa0, 0xdf, 0x47, 0x06, 0xbd, 0x5d, 0x7b,
+
  0xd7, 0xe6, 0xe6, 0x0b, 0xc1, 0x21, 0xae, 0x4c, 0x30, 0x4b, 0x0c, 0x7e,
+
  0x1b, 0x9f, 0x0b, 0xf3, 0x60, 0x9b, 0x61, 0x68, 0xc2, 0x77, 0x79, 0xa7,
+
  0xd7, 0x7b, 0xd5, 0x8e, 0x7d, 0x95, 0x60, 0x8d, 0x42, 0x7d, 0x63, 0xe1,
+
  0x13, 0x0a, 0x3f, 0x0d, 0xdd, 0x21, 0xcc, 0xf1, 0x00, 0xf4, 0x8c, 0x39,
+
  0x15, 0xef, 0xda, 0x0d, 0xef, 0x3d, 0xbb, 0x36, 0x6a, 0xbe, 0xb6, 0xa9,
+
  0xb5, 0xb7, 0x07, 0x24, 0xa4, 0x87, 0xd9, 0x3d, 0x6d, 0x4d, 0xf6, 0x07,
+
  0x38, 0xed, 0x98, 0xc9, 0x2f, 0x6e, 0x27, 0xe9, 0x3d, 0x96, 0x74, 0x98,
+
  0x3e, 0x45, 0xf8, 0x90, 0x25, 0xb7, 0x8b, 0x83, 0x53, 0xe6, 0x7c, 0x0e,
+
  0xb2, 0x11, 0xe2, 0x42, 0xa4, 0x92, 0x88, 0x5b, 0x12, 0xbe, 0x4d, 0x89,
+
  0x7f, 0x68, 0x52, 0x95, 0xbc, 0x35, 0xa0, 0xde, 0x42, 0x8e, 0xc6, 0xb4,
+
  0x8e, 0xa5, 0x19, 0xa7, 0x74, 0xdf, 0x78, 0xe1, 0xce, 0xb4, 0xbf, 0x18,
+
  0x30, 0xda, 0x99, 0x3e, 0xd0, 0x9f, 0x3f, 0x95, 0x28, 0x5a, 0x92, 0x24,
+
  0x28, 0x57, 0xc1, 0xbe, 0x94, 0x5f, 0xba, 0xb7, 0xb0, 0x40, 0xbe, 0x80,
+
  0xb4, 0x33, 0xfd, 0x26, 0x73, 0xc7, 0x18, 0x98, 0x50, 0x50, 0x2a, 0xb9,
+
  0x85, 0x6c, 0xb5, 0xa7, 0x2e, 0xa9, 0xaf, 0xba, 0x75, 0xf7, 0xdd, 0x1a,
+
  0xdb, 0x2e, 0x69, 0x99, 0xfc, 0x9a, 0x08, 0x5a, 0x47, 0xcd, 0xaa, 0x89,
+
  0x57, 0x59, 0x72, 0x79, 0xdc, 0xbb, 0xa4, 0xaa, 0x51, 0x88, 0x80, 0xc0,
+
  0xd6, 0x4e, 0x27, 0xcf, 0x2d, 0x74, 0xad, 0xc8, 0x33, 0xa7, 0xa2, 0x38,
+
  0x11, 0xc1, 0x24, 0xd3, 0x76, 0xc5, 0xf9, 0xa3, 0xfe, 0xce, 0xa2, 0xff,
+
  0xf0, 0x94, 0xbb, 0x8a, 0xb2, 0x2a, 0xfd, 0xf5, 0xe6, 0xa6, 0x43, 0x4e,
+
  0x18, 0x63, 0x4d, 0x78, 0x53, 0x0a, 0x28, 0x5e, 0x47, 0xaa, 0xe0, 0x15,
+
  0x67, 0x15, 0x3a, 0x8f, 0xea, 0x19, 0x0c, 0x08, 0x52, 0x4c, 0x62, 0xb7,
+
  0xb1, 0xbc, 0xda, 0xea, 0x06, 0xd2, 0x09, 0x3f, 0x44, 0xcc, 0x78, 0x63,
+
  0x9e, 0x0c, 0xbd, 0x26, 0xca, 0xbe, 0xed, 0xf5, 0xf5, 0x10, 0x6f, 0x2d,
+
  0xbd, 0x36, 0x62, 0x55, 0x14, 0x3d, 0x41, 0xc2, 0x66, 0x0c, 0x55, 0x5a,
+
  0x2f, 0x52, 0x75, 0x4b, 0xd8, 0x3d, 0xed, 0x5b, 0xe4, 0xad, 0x60, 0xc6,
+
  0x42, 0x03, 0x67, 0x93, 0xa5, 0xcc, 0x07, 0x82, 0xe6, 0x96, 0x39, 0xab,
+
  0x09, 0x17, 0x86, 0xed, 0x66, 0xb0, 0x06, 0xdc, 0x50, 0xec, 0x79, 0x24,
+
  0x17, 0x9e, 0xe4, 0x81, 0x05, 0x3d, 0x0b, 0x24, 0xf8, 0xe6, 0x4e, 0x74,
+
  0xf7, 0x76, 0x7b, 0xe7, 0x97, 0xb2, 0xc9, 0xc2, 0x1b, 0x9a, 0x8a, 0xa6,
+
  0xf1, 0x80, 0x55, 0x9e, 0x5b, 0x21, 0x55, 0x1c, 0xd3, 0xc8, 0xa1, 0x5d,
+
  0x06, 0x3c, 0x30, 0x93, 0xe5, 0xbd, 0x95, 0x65, 0xc0, 0x25, 0x00, 0xdc,
+
  0x65, 0x6c, 0xef, 0x85, 0x41, 0x62, 0x22, 0x18, 0xd3, 0x7a, 0x32, 0xbd,
+
  0x1f, 0xf1, 0x41, 0x3b, 0xe7, 0x13, 0xcc, 0x8c, 0x09, 0xd8, 0x47, 0xc2,
+
  0x9d, 0x90, 0x0e, 0x35, 0x0f, 0xd3, 0xe2, 0x17, 0x05, 0x7b, 0x91, 0x0f,
+
  0xd1, 0xb9, 0xd5, 0xf9, 0x45, 0xc6, 0xcb, 0x20, 0xad, 0x51, 0x8e, 0xaf,
+
  0x29, 0xf1, 0xcb, 0x3c, 0x98, 0x9b, 0xd3, 0xc9, 0x08, 0x08, 0x29, 0xe7,
+
  0x3e, 0xdc, 0x04, 0xd8, 0xcb, 0x15, 0xfb, 0xc0, 0xb7, 0x5b, 0x9c, 0x0a,
+
  0xee, 0xee, 0xfd, 0x8b, 0xf3, 0xcb, 0x9e, 0xbd, 0xf4, 0xf1, 0x5a, 0xfa,
+
  0xa2, 0x76, 0x7a, 0x80, 0x39, 0x26, 0xfe, 0x1b, 0xb9, 0xdb, 0x30, 0xff,
+
  0x41, 0x02, 0x8a, 0x98, 0x0b, 0xbc, 0x41, 0xa9, 0x1d, 0x6d, 0xa8, 0x45,
+
  0xb1, 0xbb, 0x7e, 0xc1, 0xde, 0x54, 0x2b, 0x6d, 0xd8, 0xfb, 0x46, 0x57,
+
  0xcd, 0x1c, 0xc6, 0x60, 0xc7, 0xc2, 0xb4, 0xb5, 0x11, 0x91, 0x15, 0xb8,
+
  0x12, 0x2e, 0x8f, 0xbb, 0x3d, 0xee, 0x3a, 0xfe, 0x15, 0x74, 0x9d, 0x49,
+
  0x5e, 0xe4, 0xcb, 0xc0, 0x86, 0xb1, 0x3b, 0x03, 0x50, 0x15, 0x70, 0x64,
+
  0xa3, 0x7d, 0xcb, 0x86, 0xe3, 0xcd, 0xd8, 0x96, 0x87, 0x90, 0x42, 0x22,
+
  0x53, 0xf6, 0x09, 0x1d, 0x70, 0xfa, 0xe2, 0x99, 0xbc, 0xe4, 0x99, 0x51,
+
  0xcd, 0xe4, 0x40, 0x14, 0x93, 0x8f, 0x5e, 0x13, 0xdb, 0x9e, 0xa8, 0xc0,
+
  0x55, 0x25, 0x2d, 0x9c, 0x30, 0xc1, 0xd0, 0x90, 0xbe, 0x6c, 0xeb, 0x5e,
+
  0xa1, 0xfb, 0x82, 0x77, 0x05, 0x3f, 0xe7, 0xda, 0xd9, 0xb1, 0x81, 0x1e,
+
  0xd5, 0x16, 0xbc, 0xbe, 0xe0, 0x6b, 0x45, 0x0b, 0x20, 0x85, 0xa3, 0xb6,
+
  0xe7, 0xb6, 0x78, 0xab, 0xbf, 0x4a, 0xfb, 0x0e, 0xdf, 0x84, 0xc7, 0x5e,
+
  0xb9, 0x16, 0x24, 0xa4, 0x48, 0x7a, 0x5a, 0x3a, 0x19, 0xe6, 0xc8, 0xad,
+
  0xb9, 0x66, 0xcb, 0x11, 0x3f, 0x0b, 0xdd, 0x9b, 0x7e, 0x3a, 0xed, 0x96,
+
  0x5c, 0x41, 0x70, 0x44, 0xde, 0x78, 0x57, 0x75, 0xda, 0x97, 0x33, 0xec,
+
  0x14, 0x7e, 0x44, 0x94, 0xec, 0x45, 0xd1, 0x49, 0x2e, 0x10, 0x43, 0x26,
+
  0xbd, 0xa9, 0xfc, 0x87, 0x6b, 0x8e, 0x8f, 0x09, 0x92, 0xae, 0x54, 0x15,
+
  0x00, 0x2b, 0x4e, 0x87, 0xbf, 0x21, 0x82, 0x1c, 0x67, 0x36, 0x07, 0xe3,
+
  0xdd, 0x77, 0x3f, 0x2e, 0xcd, 0x50, 0x80, 0xb4, 0x5e, 0x7b, 0x64, 0x5b,
+
  0x76, 0xd6, 0x6c, 0xc4, 0x9a, 0xa5, 0x95, 0xce, 0x38, 0xcd, 0x58, 0x0f,
+
  0xb2, 0x1c, 0xa9, 0x85, 0x5b, 0x7d, 0xa6, 0x22, 0xc5, 0xbd, 0xa6, 0xf8,
+
  0x3a, 0x38, 0x90, 0xa9, 0x02, 0x51, 0xa8, 0x39, 0x35, 0x50, 0xe6, 0x4c,
+
  0x5b, 0x23, 0xc8, 0x5a, 0xeb, 0xb9, 0xac, 0x64, 0x6e, 0xd3, 0xdc, 0x5a,
+
  0xb2, 0xd6, 0x00, 0x0c, 0xbf, 0x9a, 0x42, 0xb8, 0xcd, 0x7b, 0xd1, 0xee,
+
  0x1b, 0x7b, 0x83, 0x55, 0x7a, 0x27, 0xe8, 0x4e, 0xe2, 0x40, 0xbc, 0x4e,
+
  0x29, 0xe7, 0x3f, 0x35, 0xf7, 0xbb, 0x6f, 0x00, 0x6c, 0xef, 0xb8, 0xa6,
+
  0x6e, 0x01, 0x91, 0x6f, 0xdb, 0x72, 0xd2, 0xc7, 0x08, 0x1e, 0x66, 0x80,
+
  0x65, 0x2a, 0x2c, 0x7a, 0xac, 0xa2, 0x59, 0x5c, 0x47, 0x88, 0xa1, 0xfd,
+
  0x39, 0x79, 0x21, 0x76, 0x31, 0x0c, 0xe3, 0xd1, 0x93, 0x03, 0x5f, 0xeb,
+
  0x70, 0x86, 0x35, 0x7b, 0xf1, 0xf0, 0x02, 0xfb, 0x17, 0x71, 0x04, 0xdf,
+
  0x89, 0x97, 0xe8, 0x3e, 0x7d, 0x0c, 0x2e, 0xf9, 0xfb, 0xd9, 0xbd, 0x20,
+
  0x0f, 0x79, 0x6f, 0xda, 0x13, 0x37, 0x07, 0x43, 0x65, 0xa9, 0x6f, 0xc0,
+
  0x4f, 0xb2, 0x82, 0xd7, 0x54, 0x4d, 0x6a, 0x2d, 0xcf, 0xee, 0x0b, 0x8c,
+
  0x26, 0xd9, 0x51, 0xc6, 0xde, 0x0a, 0xe2, 0xc0, 0xc4, 0x08, 0x93, 0x8a,
+
  0xc6, 0xeb, 0xa0, 0xf5, 0x1d, 0xf3, 0x2c, 0xe6, 0x5b, 0x1e, 0xe3, 0x3f,
+
  0x29, 0x7f, 0x5b, 0x24, 0x7e, 0x38, 0xc9, 0x7e, 0x21, 0x65, 0xb2, 0xc3,
+
  0xd7, 0x0d, 0x03, 0x55, 0xf3, 0x28, 0xc1, 0xed, 0xe2, 0x04, 0xde, 0xf6,
+
  0xbe, 0xf8, 0xcb, 0xc4, 0x47, 0x82, 0x2c, 0xf3, 0x51, 0x36, 0x0d, 0x32,
+
  0x4a, 0x77, 0x36, 0xbd, 0x6a, 0x67, 0x61, 0x3a, 0x57, 0x09, 0xc4, 0x5a,
+
  0xbe, 0x99, 0x75, 0x70, 0x7c, 0x0c, 0x5a, 0x92, 0x11, 0xa7, 0xac, 0xdc,
+
  0x4a, 0xe8, 0x4a, 0x5e, 0x88, 0x18, 0x90, 0xbb, 0xf7, 0x92, 0x2d, 0x27,
+
  0x74, 0x26, 0x4f, 0x63, 0x0a, 0xb6, 0x0c, 0xa0, 0xce, 0x47, 0x0e, 0xc1,
+
  0x0e, 0x0b, 0xba, 0x43, 0x3e, 0xaa, 0xd0, 0x3b, 0xc3, 0x9f, 0xa5, 0x65,
+
  0x18, 0xc1, 0xde, 0xd9, 0xf1, 0xbd, 0x01, 0xc6, 0x1a, 0xe8, 0x4b, 0x6c,
+
  0x86, 0x62, 0x31, 0xd0, 0x2b, 0xbc, 0x67, 0x77, 0xed, 0xb3, 0x94, 0x0b,
+
  0x32, 0x12, 0x10, 0xd4, 0x05, 0xbf, 0xd8, 0xd3, 0x94, 0x71, 0xd6, 0xeb,
+
  0x35, 0x58, 0xc3, 0x5a, 0x8a, 0x07, 0x49, 0x64, 0x75, 0xbb, 0x9d, 0xfd,
+
  0x9a, 0xa7, 0x05, 0xb7, 0x8d, 0xdb, 0x4b, 0x34, 0xa8, 0x7c, 0x7c, 0xe7,
+
  0x9f, 0xa7, 0x5d, 0xbe, 0x58, 0x2f, 0xea, 0x28, 0x47, 0x2a, 0xb6, 0x32,
+
  0x9f, 0xc9, 0x49, 0x4f, 0x27, 0xef, 0xd6, 0xc3, 0x83, 0x64, 0x1e, 0x6e,
+
  0x23, 0x6d, 0x4f, 0xef, 0x25, 0x1b, 0xb2, 0xcd, 0xcd, 0x90, 0x8b, 0xc1,
+
  0x28, 0xff, 0x3d, 0xf3, 0xd0, 0x20, 0xb2, 0x91, 0x51, 0xed, 0x2a, 0xca,
+
  0xcd, 0xee, 0x96, 0xec, 0xa3, 0xc7, 0x1c, 0x87, 0x86, 0x34, 0x72, 0x82,
+
  0xd8, 0x42, 0xfe, 0x74, 0x56, 0xa1, 0x4d, 0xda, 0xdd, 0x16, 0x3d, 0x48,
+
  0x15, 0x56, 0xdc, 0x86, 0x18, 0xe7, 0x90, 0xd8, 0xd3, 0xeb, 0x82, 0x73,
+
  0x57, 0x6e, 0x22, 0x59, 0x29, 0x0a, 0xa5, 0x43, 0xfb, 0x13, 0x99, 0x09,
+
  0x86, 0x8c, 0x49, 0xf6, 0xc0, 0x21, 0xa4, 0x34, 0x54, 0x7f, 0x76, 0x77,
+
  0xe7, 0x78, 0x0b, 0x4b, 0xbe, 0xc6, 0x8e, 0x69, 0xab, 0x78, 0xcf, 0xbf,
+
  0xa8, 0xd7, 0x73, 0x72, 0x80, 0xd1, 0x96, 0x54, 0xb6, 0x3c, 0xa7, 0x80,
+
  0x95, 0xd0, 0xec, 0xd7, 0x10, 0x36, 0x0a, 0x1c, 0xca, 0xba, 0x3b, 0xdf,
+
  0xbe, 0x7e, 0x58, 0x0c, 0x12, 0x9f, 0x7b, 0x70, 0x97, 0x77, 0xcc, 0xf7,
+
  0x14, 0xca, 0x74, 0x1a, 0xfb, 0x28, 0xe9, 0xc5, 0xc0, 0xe1, 0x77, 0xf7,
+
  0x65, 0xe9, 0xf5, 0x06, 0xb3, 0x26, 0xe4, 0xbc, 0x5f, 0xbc, 0x58, 0xf7,
+
  0x15, 0xc8, 0x3e, 0x32, 0x63, 0x99, 0xa7, 0x64, 0xee, 0x0f, 0x78, 0xe1,
+
  0x4f, 0x86, 0xe0, 0x88, 0x1b, 0xf2, 0x33, 0x8e, 0xdc, 0xdb, 0x3d, 0xb6,
+
  0x59, 0x11, 0x83, 0x3d, 0x5f, 0xa5, 0x49, 0x4e, 0x8e, 0xbc, 0x07, 0xb7,
+
  0xdc, 0x00, 0xd3, 0x21, 0xee, 0xe7, 0x27, 0x76, 0x1f, 0x95, 0xc9, 0x2a,
+
  0x7e, 0xe5, 0xa1, 0x0b, 0xbe, 0xe0, 0x9d, 0x71, 0x56, 0x70, 0x0c, 0x94,
+
  0xa6, 0x3f, 0x78, 0xe6, 0x45, 0xe5, 0x84, 0xa9, 0xe6, 0xac, 0xd0, 0x5f,
+
  0x66, 0x83, 0x53, 0xf4, 0x79, 0x15, 0x21, 0xbd, 0x7f, 0xa8, 0x1b, 0x6d,
+
  0x02, 0x4a, 0xeb, 0xf2, 0x1f, 0x7e, 0x33, 0x7b, 0x76, 0x99, 0xad, 0x03,
+
  0xcd, 0xa6, 0x57, 0x58, 0x1b, 0x1c, 0xa6, 0x54, 0xd5, 0xe7, 0xe5, 0xb5,
+
  0xc0, 0x4b, 0x61, 0x2e, 0xdc, 0xd9, 0xc8, 0x9d, 0x57, 0xb6, 0x95, 0x04,
+
  0x8b, 0xbd, 0xef, 0x13, 0xa4, 0x77, 0xbb, 0x6f, 0xd4, 0x5d, 0xe3, 0x79,
+
  0x1c, 0xd7, 0x6b, 0xbb, 0xb3, 0xbc, 0x9b, 0xb1, 0x71, 0x6a, 0x47, 0x14,
+
  0x83, 0x88, 0xdc, 0xdb, 0xac, 0x09, 0x0d, 0xd2, 0xb0, 0x0e, 0x4d, 0x6f,
+
  0xd9, 0x7a, 0xa5, 0xcd, 0xc1, 0x41, 0xb5, 0x87, 0x49, 0xc1, 0x1e, 0x21,
+
  0x78, 0x4f, 0x5c, 0x03, 0x72, 0xbb, 0xa3, 0xe2, 0x65, 0x22, 0xd9, 0x5c,
+
  0xf5, 0x93, 0xb3, 0xb7, 0x6d, 0xa7, 0x88, 0x74, 0x78, 0x63, 0x0e, 0xcf,
+
  0x35, 0x78, 0xf7, 0xf8, 0x90, 0xbe, 0xcd, 0x4b, 0x0e, 0xd3, 0x99, 0xad,
+
  0x76, 0xd9, 0xeb, 0x5e, 0x24, 0x87, 0xdd, 0xec, 0x57, 0x49, 0xf5, 0xf3,
+
  0x64, 0xcb, 0xde, 0x6e, 0xfc, 0xe9, 0xae, 0x78, 0xb3, 0x4e, 0xfa, 0x10,
+
  0x5e, 0x66, 0x3e, 0x2b, 0x3f, 0x7a, 0x21, 0x1b, 0x4e, 0xdd, 0xdd, 0xec,
+
  0xf8, 0x41, 0xd7, 0x48, 0xda, 0x0c, 0x2b, 0xab, 0xb3, 0xb7, 0xe7, 0x14,
+
  0xf9, 0xbb, 0xd9, 0xe8, 0xa3, 0x55, 0x91, 0x84, 0x7b, 0x58, 0x97, 0xca,
+
  0xfb, 0xc5, 0xbe, 0x6e, 0x3e, 0xcf, 0xff, 0x67, 0xcb, 0x3b, 0x5a, 0x62,
+
  0x97, 0x8b, 0xbb, 0x4d, 0x42, 0x8d, 0x46, 0x82, 0x55, 0x2a, 0x86, 0xf6,
+
  0xd7, 0xed, 0x05, 0x26, 0x2c, 0x85, 0x1f, 0xb3, 0x27, 0xb7, 0x83, 0x34,
+
  0x95, 0x7c, 0x9c, 0x8f, 0x60, 0x79, 0xbb, 0x47, 0xbc, 0x16, 0xe4, 0xf4,
+
  0x8d, 0x7e, 0x33, 0x22, 0x4a, 0xc4, 0xbf, 0x27, 0xe2, 0x19, 0x6b, 0xd9,
+
  0x7b, 0x9c, 0x37, 0x42, 0x17, 0x91, 0xbf, 0x7b, 0xd9, 0x7c, 0xf9, 0x48,
+
  0xfd, 0x4c, 0x35, 0xe7, 0x91, 0xfd, 0xd1, 0x96, 0xee, 0x5c, 0x10, 0xb6,
+
  0xc6, 0xf4, 0x39, 0xce, 0x91, 0xa0, 0x7b, 0x9b, 0x08, 0xae, 0x44, 0xbb,
+
  0x74, 0x2d, 0x6c, 0x6b, 0x0b, 0x35, 0xce, 0x40, 0xdb, 0x98, 0xc3, 0x35,
+
  0x0e, 0x4c, 0x8b, 0xfd, 0x1d, 0x09, 0xb0, 0x34, 0x79, 0xbf, 0xd6, 0xb6,
+
  0x12, 0xe9, 0xba, 0xb2, 0xfa, 0x52, 0x2e, 0xa7, 0x38, 0xbb, 0xea, 0xc4,
+
  0xb9, 0xe2, 0xfa, 0x62, 0xb8, 0x1b, 0x85, 0x76, 0x5b, 0xe4, 0xfd, 0xaa,
+
  0xfa, 0xbb, 0x02, 0x80, 0xf6, 0x05, 0xde, 0xaf, 0x7d, 0xde, 0xbf, 0x94,
+
  0xfa, 0xe3, 0x6d, 0x16, 0x6b, 0x20, 0x21, 0x69, 0x85, 0x7d, 0x68, 0x1c,
+
  0x69, 0x27, 0xba, 0x5d, 0x52, 0xd4, 0xc9, 0x83, 0x4b, 0x74, 0x92, 0xc3,
+
  0xe0, 0x02, 0x06, 0x3b, 0xf8, 0x93, 0x36, 0x42, 0x6d, 0xe7, 0xb6, 0x72,
+
  0x83, 0x43, 0xd3, 0xd6, 0x8e, 0x94, 0xd9, 0x89, 0x98, 0x90, 0xfb, 0x56,
+
  0x3c, 0x52, 0x29, 0x91, 0x02, 0xba, 0xd5, 0x97, 0x60, 0x4f, 0x96, 0x20,
+
  0xb9, 0x31, 0x56, 0xd7, 0x68, 0xda, 0xa6, 0x95, 0xf6, 0x37, 0x5a, 0x5e,
+
  0x3a, 0xa3, 0x84, 0x1c, 0xf1, 0x02, 0xcd, 0xa4, 0x79, 0x2e, 0x68, 0x3a,
+
  0xb0, 0xa5, 0x09, 0xec, 0xdd, 0xbd, 0x44, 0xee, 0xaa, 0x02, 0x6c, 0x53,
+
  0x70, 0xbc, 0x0e, 0x61, 0x45, 0xda, 0x8d, 0x71, 0x9b, 0x4e, 0xad, 0x59,
+
  0xe1, 0x52, 0x2b, 0x7e, 0x64, 0xc9, 0x60, 0x49, 0x97, 0x25, 0xa8, 0x49,
+
  0x07, 0x4e, 0xe2, 0xa5, 0xac, 0x58, 0x62, 0xaf, 0x51, 0x78, 0x6e, 0x62,
+
  0xda, 0x4d, 0x4b, 0x25, 0xf1, 0x23, 0x21, 0x1d, 0x4b, 0x60, 0x37, 0x3b,
+
  0x81, 0x43, 0xfa, 0xc8, 0x16, 0x25, 0x77, 0xf4, 0x28, 0x23, 0x8c, 0x7b,
+
  0xf2, 0x4d, 0x9a, 0x1e, 0xbc, 0x7a, 0xf7, 0xba, 0xeb, 0xa5, 0x2f, 0x20,
+
  0x24, 0x92, 0x3d, 0xc2, 0x17, 0x42, 0x94, 0x1a, 0x52, 0x7c, 0x42, 0x3b,
+
  0x47, 0x5d, 0x64, 0xec, 0x36, 0x07, 0x25, 0xde, 0x7d, 0x3e, 0xe5, 0xa5,
+
  0xa5, 0x12, 0x42, 0x2a, 0xb6, 0xf4, 0xdd, 0xc2, 0xe6, 0x87, 0x50, 0xc7,
+
  0xbf, 0x41, 0x04, 0x74, 0xc0, 0x7c, 0x97, 0x48, 0x7d, 0x1e, 0x25, 0xaf,
+
  0xf3, 0xe9, 0x9b, 0xd9, 0xf5, 0x4b, 0x1b, 0xd8, 0x1f, 0x98, 0x76, 0x67,
+
  0xd7, 0x28, 0x2d, 0x58, 0x43, 0xe3, 0xfc, 0x1f, 0x6a, 0xb3, 0x5c, 0x59,
+
  0x39, 0x78, 0xd7, 0x7b, 0x73, 0x7e, 0xd9, 0x4d, 0xd6, 0x40, 0x2e, 0xd1,
+
  0xbb, 0x3c, 0x79, 0xf5, 0xae, 0x67, 0x3e, 0xea, 0x3b, 0x8e, 0xd2, 0x51,
+
  0x6e, 0xb4, 0x27, 0x23, 0x0a, 0xb2, 0x91, 0x91, 0xb6, 0x03, 0xdd, 0x3c,
+
  0x54, 0xa8, 0x82, 0x53, 0x5a, 0x4c, 0x1c, 0xac, 0xcb, 0xc3, 0x5d, 0x21,
+
  0x12, 0x93, 0xc9, 0x70, 0x47, 0x5c, 0x1f, 0x59, 0x38, 0x6f, 0x4b, 0x5e,
+
  0x63, 0xc5, 0xd0, 0xd2, 0x9e, 0xa4, 0xf7, 0xe6, 0xe0, 0xec, 0x87, 0xae,
+
  0xa6, 0x9e, 0x7c, 0xf8, 0xf0, 0xa1, 0x9e, 0x9c, 0x40, 0x56, 0x4f, 0x99,
+
  0xad, 0xac, 0x74, 0x8f, 0x8f, 0x93, 0x83, 0xd3, 0xee, 0xb9, 0x3e, 0x70,
+
  0x3b, 0x1d, 0xaf, 0x6e, 0x3c, 0x37, 0xe6, 0xc1, 0x20, 0x9b, 0x9a, 0x7f,
+
  0xac, 0xac, 0xfc, 0x1f, 0x6b, 0xa9, 0x62, 0x94, 0x8e, 0x21, 0x04, 0x00,
+
 
};
#define BUF_SIZE 0x10000
static voidpf zalloc_func(voidpf opaque, unsigned int items, unsigned int size)
modified external/curl/src/tool_libinfo.c
@@ -73,6 +73,7 @@ bool feature_brotli = FALSE;
bool feature_hsts = FALSE;
bool feature_http2 = FALSE;
bool feature_http3 = FALSE;
+
bool feature_httpsproxy = FALSE;
bool feature_libz = FALSE;
bool feature_ntlm = FALSE;
bool feature_ntlm_wb = FALSE;
@@ -97,7 +98,7 @@ static struct feature_name_presentp {
  {"HSTS",           &feature_hsts,       CURL_VERSION_HSTS},
  {"HTTP2",          &feature_http2,      CURL_VERSION_HTTP2},
  {"HTTP3",          &feature_http3,      CURL_VERSION_HTTP3},
-
  {"HTTPS-proxy",    NULL,                CURL_VERSION_HTTPS_PROXY},
+
  {"HTTPS-proxy",    &feature_httpsproxy, CURL_VERSION_HTTPS_PROXY},
  {"IDN",            NULL,                CURL_VERSION_IDN},
  {"IPv6",           NULL,                CURL_VERSION_IPV6},
  {"Kerberos",       NULL,                CURL_VERSION_KERBEROS5},
modified external/curl/src/tool_libinfo.h
@@ -50,6 +50,7 @@ extern bool feature_brotli;
extern bool feature_hsts;
extern bool feature_http2;
extern bool feature_http3;
+
extern bool feature_httpsproxy;
extern bool feature_libz;
extern bool feature_ntlm;
extern bool feature_ntlm_wb;
modified external/curl/src/tool_listhelp.c
@@ -51,6 +51,9 @@ const struct helptxt helptext[] = {
  {"    --basic",
   "Use HTTP Basic Authentication",
   CURLHELP_AUTH},
+
  {"    --ca-native",
+
   "Use CA certificates from the native OS",
+
   CURLHELP_TLS},
  {"    --cacert <file>",
   "CA certificate to verify peer against",
   CURLHELP_TLS},
@@ -246,6 +249,9 @@ const struct helptxt helptext[] = {
  {"    --haproxy-protocol",
   "Send HAProxy PROXY protocol v1 header",
   CURLHELP_HTTP | CURLHELP_PROXY},
+
  {"    --haproxy-clientip",
+
    "Sets the HAProxy PROXY protocol v1 client IP",
+
    CURLHELP_HTTP | CURLHELP_PROXY},
  {"-I, --head",
   "Show document info only",
   CURLHELP_HTTP | CURLHELP_FTP | CURLHELP_FILE},
@@ -274,7 +280,7 @@ const struct helptxt helptext[] = {
   "Use HTTP 1.1",
   CURLHELP_HTTP},
  {"    --http2",
-
   "Use HTTP 2",
+
   "Use HTTP/2",
   CURLHELP_HTTP},
  {"    --http2-prior-knowledge",
   "Use HTTP 2 without HTTP/1.1 Upgrade",
@@ -474,6 +480,9 @@ const struct helptxt helptext[] = {
  {"    --proxy-basic",
   "Use Basic authentication on the proxy",
   CURLHELP_PROXY | CURLHELP_AUTH},
+
  {"    --proxy-ca-native",
+
   "Use CA certificates from the native OS for proxy",
+
   CURLHELP_TLS},
  {"    --proxy-cacert <file>",
   "CA certificate to verify peer against for proxy",
   CURLHELP_PROXY | CURLHELP_TLS},
@@ -750,6 +759,9 @@ const struct helptxt helptext[] = {
  {"    --trace-ascii <file>",
   "Like --trace, but without hex output",
   CURLHELP_VERBOSE},
+
  {"    --trace-ids",
+
   "Add transfer/connection identifiers to trace/verbose output",
+
   CURLHELP_VERBOSE},
  {"    --trace-time",
   "Add time stamps to trace/verbose output",
   CURLHELP_VERBOSE},
modified external/curl/src/tool_main.c
@@ -78,6 +78,7 @@ int vms_show = 0;
 * when command-line argument globbing is enabled under the MSYS shell, so turn
 * it off.
 */
+
extern int _CRT_glob;
int _CRT_glob = 0;
#endif /* __MINGW32__ */

@@ -175,17 +176,17 @@ static CURLcode main_init(struct GlobalConfig *config)
        config->first->global = config;
      }
      else {
-
        errorf(config, "error retrieving curl library information\n");
+
        errorf(config, "error retrieving curl library information");
        free(config->first);
      }
    }
    else {
-
      errorf(config, "error initializing curl library\n");
+
      errorf(config, "error initializing curl library");
      free(config->first);
    }
  }
  else {
-
    errorf(config, "error initializing curl\n");
+
    errorf(config, "error initializing curl");
    result = CURLE_FAILED_INIT;
  }

@@ -261,13 +262,13 @@ int main(int argc, char *argv[])
  /* win32_init must be called before other init routines. */
  result = win32_init();
  if(result) {
-
    fprintf(stderr, "curl: (%d) Windows-specific init failed.\n", result);
+
    errorf(&global, "(%d) Windows-specific init failed", result);
    return result;
  }
#endif

  if(main_checkfds()) {
-
    fprintf(stderr, "curl: out of file descriptors\n");
+
    errorf(&global, "out of file descriptors");
    return CURLE_FAILED_INIT;
  }

modified external/curl/src/tool_msgs.c
@@ -42,6 +42,7 @@ static void voutf(struct GlobalConfig *config,
                  va_list ap)
{
  size_t width = (79 - strlen(prefix));
+
  DEBUGASSERT(!strchr(fmt, '\n'));
  if(!config->silent) {
    size_t len;
    char *ptr;
@@ -74,6 +75,7 @@ static void voutf(struct GlobalConfig *config,
      }
      else {
        fputs(ptr, stderr);
+
        fputs("\n", stderr);
        len = 0;
      }
    }
@@ -115,9 +117,11 @@ void helpf(FILE *errors, const char *fmt, ...)
  if(fmt) {
    va_list ap;
    va_start(ap, fmt);
+
    DEBUGASSERT(!strchr(fmt, '\n'));
    fputs("curl: ", errors); /* prefix it */
    vfprintf(errors, fmt, ap);
    va_end(ap);
+
    fputs("\n", errors); /* newline it */
  }
  fprintf(errors, "curl: try 'curl --help' "
#ifdef USE_MANUAL
@@ -132,7 +136,7 @@ void helpf(FILE *errors, const char *fmt, ...)
 */
void errorf(struct GlobalConfig *config, const char *fmt, ...)
{
-
  if(!config->silent) {
+
  if(!config->silent || config->showerror) {
    va_list ap;
    va_start(ap, fmt);
    voutf(config, ERROR_PREFIX, fmt, ap);
modified external/curl/src/tool_msgs.h
@@ -24,6 +24,7 @@
 *
 ***************************************************************************/
#include "tool_setup.h"
+
#include "tool_cfgable.h"

void warnf(struct GlobalConfig *config, const char *fmt, ...);
void notef(struct GlobalConfig *config, const char *fmt, ...);
modified external/curl/src/tool_operate.c
@@ -205,7 +205,7 @@ static curl_off_t VmsSpecialSize(const char *name,

struct per_transfer *transfers; /* first node */
static struct per_transfer *transfersl; /* last node */
-
static long all_pers;
+
static curl_off_t all_pers;

/* add_per_transfer creates a new 'per_transfer' node in the linked
   list of transfers */
@@ -306,7 +306,7 @@ static CURLcode pre_transfer(struct GlobalConfig *global,
    if((per->infd == -1) || fstat(per->infd, &fileinfo))
#endif
    {
-
      helpf(stderr, "Can't open '%s'!\n", per->uploadfile);
+
      helpf(stderr, "Can't open '%s'", per->uploadfile);
      if(per->infd != -1) {
        close(per->infd);
        per->infd = STDIN_FILENO;
@@ -319,6 +319,17 @@ static CURLcode pre_transfer(struct GlobalConfig *global,
    if(S_ISREG(fileinfo.st_mode))
      uploadfilesize = fileinfo.st_size;

+
#ifdef DEBUGBUILD
+
    /* allow dedicated test cases to override */
+
    {
+
      char *ev = getenv("CURL_UPLOAD_SIZE");
+
      if(ev) {
+
        int sz = atoi(ev);
+
        uploadfilesize = (curl_off_t)sz;
+
      }
+
    }
+
#endif
+

    if(uploadfilesize != -1) {
      struct OperationConfig *config = per->config; /* for the macro below */
#ifdef CURL_DISABLE_LIBCURL_OPTION
@@ -327,8 +338,8 @@ static CURLcode pre_transfer(struct GlobalConfig *global,
#endif
      my_setopt(per->curl, CURLOPT_INFILESIZE_LARGE, uploadfilesize);
    }
-
    per->input.fd = per->infd;
  }
+
  per->uploadfilesize = uploadfilesize;
  per->start = tvnow();
  return result;
}
@@ -384,6 +395,7 @@ static CURLcode post_per_transfer(struct GlobalConfig *global,
  struct OutStruct *outs = &per->outs;
  CURL *curl = per->curl;
  struct OperationConfig *config = per->config;
+
  int rc;

  if(!curl || !config)
    return result;
@@ -424,9 +436,9 @@ static CURLcode post_per_transfer(struct GlobalConfig *global,
    }
  /* Set file extended attributes */
  if(!result && config->xattr && outs->fopened && outs->stream) {
-
    int rc = fwrite_xattr(curl, per->this_url, fileno(outs->stream));
+
    rc = fwrite_xattr(curl, per->this_url, fileno(outs->stream));
    if(rc)
-
      warnf(config->global, "Error setting extended attributes on '%s': %s\n",
+
      warnf(config->global, "Error setting extended attributes on '%s': %s",
            outs->filename, strerror(errno));
  }

@@ -444,12 +456,11 @@ static CURLcode post_per_transfer(struct GlobalConfig *global,

  if(!outs->s_isreg && outs->stream) {
    /* Dump standard stream buffered data */
-
    int rc = fflush(outs->stream);
+
    rc = fflush(outs->stream);
    if(!result && rc) {
      /* something went wrong in the writing process */
      result = CURLE_WRITE_ERROR;
-
      if(!global->silent || global->showerror)
-
        fprintf(stderr, "curl: (%d) Failed writing body\n", result);
+
      errorf(global, "Failed writing body");
    }
  }

@@ -576,7 +587,7 @@ static CURLcode post_per_transfer(struct GlobalConfig *global,
      }
      warnf(config->global, "Problem %s. "
            "Will retry in %ld seconds. "
-
            "%ld retries left.\n",
+
            "%ld retries left.",
            m[retry], sleeptime/1000L, per->retry_numretries);

      per->retry_numretries--;
@@ -586,20 +597,18 @@ static CURLcode post_per_transfer(struct GlobalConfig *global,
          per->retry_sleep = RETRY_SLEEP_MAX;
      }
      if(outs->bytes && outs->filename && outs->stream) {
-
        int rc;
        /* We have written data to an output file, we truncate file
         */
-
        if(!global->silent)
-
          fprintf(stderr, "Throwing away %"  CURL_FORMAT_CURL_OFF_T " bytes\n",
-
                  outs->bytes);
+
        notef(config->global,
+
              "Throwing away %"  CURL_FORMAT_CURL_OFF_T " bytes",
+
              outs->bytes);
        fflush(outs->stream);
        /* truncate file at the position where we started appending */
#ifdef HAVE_FTRUNCATE
        if(ftruncate(fileno(outs->stream), outs->init)) {
          /* when truncate fails, we can't just append as then we'll
             create something strange, bail out */
-
          if(!global->silent || global->showerror)
-
            fprintf(stderr, "curl: (23) Failed to truncate file\n");
+
          errorf(config->global, "Failed to truncate file");
          return CURLE_WRITE_ERROR;
        }
        /* now seek to the end of the file, the position where we
@@ -613,8 +622,7 @@ static CURLcode post_per_transfer(struct GlobalConfig *global,
        rc = fseek(outs->stream, (long)outs->init, SEEK_SET);
#endif
        if(rc) {
-
          if(!global->silent || global->showerror)
-
            fprintf(stderr, "curl: (23) Failed seeking to end of file\n");
+
          errorf(config->global, "Failed seeking to end of file");
          return CURLE_WRITE_ERROR;
        }
        outs->bytes = 0; /* clear for next round */
@@ -634,15 +642,14 @@ noretry:

  /* Close the outs file */
  if(outs->fopened && outs->stream) {
-
    int rc = fclose(outs->stream);
+
    rc = fclose(outs->stream);
    if(!result && rc) {
      /* something went wrong in the writing process */
      result = CURLE_WRITE_ERROR;
-
      if(!global->silent || global->showerror)
-
        fprintf(stderr, "curl: (%d) Failed writing body\n", result);
+
      errorf(config->global, "curl: (%d) Failed writing body", result);
    }
    if(result && config->rm_partial) {
-
      notef(global, "Removing output file: %s\n", outs->filename);
+
      notef(global, "Removing output file: %s", outs->filename);
      unlink(outs->filename);
    }
  }
@@ -734,7 +741,7 @@ static CURLcode single_transfer(struct GlobalConfig *global,
        httpgetfields = state->httpgetfields = strdup(config->postfields);
        Curl_safefree(config->postfields);
        if(!httpgetfields) {
-
          errorf(global, "out of memory\n");
+
          errorf(global, "out of memory");
          result = CURLE_OUT_OF_MEMORY;
        }
        else if(SetHTTPrequest(config,
@@ -777,7 +784,7 @@ static CURLcode single_transfer(struct GlobalConfig *global,
      state->up = 0;
      if(!warn_more_options) {
        /* only show this once */
-
        warnf(config->global, "Got more output options than URLs\n");
+
        warnf(config->global, "Got more output options than URLs");
        warn_more_options = TRUE;
      }
      continue; /* next URL please */
@@ -787,7 +794,7 @@ static CURLcode single_transfer(struct GlobalConfig *global,
    if(urlnode->outfile && !state->outfiles) {
      state->outfiles = strdup(urlnode->outfile);
      if(!state->outfiles) {
-
        errorf(global, "out of memory\n");
+
        errorf(global, "out of memory");
        result = CURLE_OUT_OF_MEMORY;
        break;
      }
@@ -806,7 +813,7 @@ static CURLcode single_transfer(struct GlobalConfig *global,
    }

    {
-
      unsigned long urlnum;
+
      curl_off_t urlnum;

      if(!state->up && !infiles)
        Curl_nop_stmt;
@@ -815,12 +822,12 @@ static CURLcode single_transfer(struct GlobalConfig *global,
          if(inglob) {
            result = glob_next_url(&state->uploadfile, inglob);
            if(result == CURLE_OUT_OF_MEMORY)
-
              errorf(global, "out of memory\n");
+
              errorf(global, "out of memory");
          }
          else if(!state->up) {
            state->uploadfile = strdup(infiles);
            if(!state->uploadfile) {
-
              errorf(global, "out of memory\n");
+
              errorf(global, "out of memory");
              result = CURLE_OUT_OF_MEMORY;
            }
          }
@@ -849,7 +856,6 @@ static CURLcode single_transfer(struct GlobalConfig *global,
      if(state->up < state->infilenum) {
        struct per_transfer *per = NULL;
        struct OutStruct *outs;
-
        struct InStruct *input;
        struct OutStruct *heads;
        struct OutStruct *etag_save;
        struct HdrCbData *hdrcbdata = NULL;
@@ -872,7 +878,7 @@ static CURLcode single_transfer(struct GlobalConfig *global,
          FILE *file = fopen(config->etag_compare_file, FOPEN_READTEXT);
          if(!file && !config->etag_save_file) {
            errorf(global,
-
                   "Failed to open %s\n", config->etag_compare_file);
+
                   "Failed to open %s", config->etag_compare_file);
            result = CURLE_READ_ERROR;
            break;
          }
@@ -889,7 +895,7 @@ static CURLcode single_transfer(struct GlobalConfig *global,
            if(file)
              fclose(file);
            errorf(global,
-
                   "Failed to allocate memory for custom etag header\n");
+
                   "Failed to allocate memory for custom etag header");
            result = CURLE_OUT_OF_MEMORY;
            break;
          }
@@ -912,7 +918,7 @@ static CURLcode single_transfer(struct GlobalConfig *global,
            FILE *newfile = fopen(config->etag_save_file, "wb");
            if(!newfile) {
              warnf(global, "Failed creating file for saving etags: \"%s\". "
-
                    "Skip this transfer\n", config->etag_save_file);
+
                    "Skip this transfer", config->etag_save_file);
              Curl_safefree(state->outfiles);
              glob_cleanup(state->urls);
              return CURLE_OK;
@@ -988,7 +994,7 @@ static CURLcode single_transfer(struct GlobalConfig *global,
            newfile = fopen(config->headerfile, "ab");

            if(!newfile) {
-
              errorf(global, "Failed to open %s\n", config->headerfile);
+
              errorf(global, "Failed to open %s", config->headerfile);
              result = CURLE_WRITE_ERROR;
              break;
            }
@@ -1008,7 +1014,6 @@ static CURLcode single_transfer(struct GlobalConfig *global,
        hdrcbdata = &per->hdrcbdata;

        outs = &per->outs;
-
        input = &per->input;

        per->outfile = NULL;
        per->infdopen = FALSE;
@@ -1055,11 +1060,11 @@ static CURLcode single_transfer(struct GlobalConfig *global,
            result = get_url_file_name(&per->outfile, per->this_url);
            if(result) {
              errorf(global, "Failed to extract a sensible file name"
-
                     " from the URL to use for storage!\n");
+
                     " from the URL to use for storage");
              break;
            }
            if(!*per->outfile && !config->content_disposition) {
-
              errorf(global, "Remote file name has no length!\n");
+
              errorf(global, "Remote file name has no length");
              result = CURLE_WRITE_ERROR;
              break;
            }
@@ -1071,11 +1076,11 @@ static CURLcode single_transfer(struct GlobalConfig *global,
            Curl_safefree(storefile);
            if(result) {
              /* bad globbing */
-
              warnf(global, "bad output glob!\n");
+
              warnf(global, "bad output glob");
              break;
            }
            if(!*per->outfile) {
-
              warnf(global, "output glob produces empty string!\n");
+
              warnf(global, "output glob produces empty string");
              result = CURLE_WRITE_ERROR;
              break;
            }
@@ -1094,7 +1099,7 @@ static CURLcode single_transfer(struct GlobalConfig *global,
             file output call */

          if(config->create_dirs) {
-
            result = create_dir_hierarchy(per->outfile, stderr);
+
            result = create_dir_hierarchy(per->outfile, global);
            /* create_dir_hierarchy shows error upon CURLE_WRITE_ERROR */
            if(result)
              break;
@@ -1130,7 +1135,7 @@ static CURLcode single_transfer(struct GlobalConfig *global,
            FILE *file = fopen(per->outfile, "ab");
#endif
            if(!file) {
-
              errorf(global, "Can't open '%s'!\n", per->outfile);
+
              errorf(global, "Can't open '%s'", per->outfile);
              result = CURLE_WRITE_ERROR;
              break;
            }
@@ -1177,7 +1182,7 @@ static CURLcode single_transfer(struct GlobalConfig *global,
            warnf(global,
                  "Using --anyauth or --proxy-anyauth with upload from stdin"
                  " involves a big risk of it not working. Use a temporary"
-
                  " file or a fixed auth type instead!\n");
+
                  " file or a fixed auth type instead");
          }

          DEBUGASSERT(per->infdopen == FALSE);
@@ -1187,7 +1192,7 @@ static CURLcode single_transfer(struct GlobalConfig *global,
          if(!strcmp(per->uploadfile, ".")) {
            if(curlx_nonblock((curl_socket_t)per->infd, TRUE) < 0)
              warnf(global,
-
                    "fcntl failed on fd=%d: %s\n", per->infd, strerror(errno));
+
                    "fcntl failed on fd=%d: %s", per->infd, strerror(errno));
          }
        }

@@ -1216,7 +1221,7 @@ static CURLcode single_transfer(struct GlobalConfig *global,
            if(uerr) {
              result = urlerr_cvt(uerr);
              errorf(global, "(%d) Could not parse the URL, "
-
                     "failed to set query\n", result);
+
                     "failed to set query", result);
              config->synthetic_error = TRUE;
            }
            else {
@@ -1278,9 +1283,6 @@ static CURLcode single_transfer(struct GlobalConfig *global,
        /* what call to write */
        my_setopt(curl, CURLOPT_WRITEFUNCTION, tool_write_cb);

-
        /* for uploads */
-
        input->config = config;
-
        input->per = per;
        /* Note that if CURLOPT_READFUNCTION is fread (the default), then
         * lib/telnet.c will Curl_poll() on the input file descriptor
         * rather than calling the READFUNCTION at regular intervals.
@@ -1288,13 +1290,13 @@ static CURLcode single_transfer(struct GlobalConfig *global,
         * behavior, by omitting to set the READFUNCTION & READDATA options,
         * have not been determined.
         */
-
        my_setopt(curl, CURLOPT_READDATA, input);
+
        my_setopt(curl, CURLOPT_READDATA, per);
        /* what call to read */
        my_setopt(curl, CURLOPT_READFUNCTION, tool_read_cb);

        /* in 7.18.0, the CURLOPT_SEEKFUNCTION/DATA pair is taking over what
           CURLOPT_IOCTLFUNCTION/DATA pair previously provided for seeking */
-
        my_setopt(curl, CURLOPT_SEEKDATA, input);
+
        my_setopt(curl, CURLOPT_SEEKDATA, per);
        my_setopt(curl, CURLOPT_SEEKFUNCTION, tool_seek_cb);

        {
@@ -1327,7 +1329,7 @@ static CURLcode single_transfer(struct GlobalConfig *global,
        my_setopt_str(curl, CURLOPT_PROXY, config->proxy);

        if(config->proxy && result) {
-
          errorf(global, "proxy support is disabled in this libcurl\n");
+
          errorf(global, "proxy support is disabled in this libcurl");
          config->synthetic_error = TRUE;
          result = CURLE_NOT_BUILT_IN;
          break;
@@ -1399,7 +1401,7 @@ static CURLcode single_transfer(struct GlobalConfig *global,
        switch(config->httpreq) {
        case HTTPREQ_SIMPLEPOST:
          if(config->resume_from) {
-
            errorf(global, "cannot mix --continue-at with --data\n");
+
            errorf(global, "cannot mix --continue-at with --data");
            result = CURLE_FAILED_INIT;
          }
          else {
@@ -1414,7 +1416,7 @@ static CURLcode single_transfer(struct GlobalConfig *global,
          curl_mime_free(config->mimepost);
          config->mimepost = NULL;
          if(config->resume_from) {
-
            errorf(global, "cannot mix --continue-at with --form\n");
+
            errorf(global, "cannot mix --continue-at with --form");
            result = CURLE_FAILED_INIT;
          }
          else {
@@ -1489,7 +1491,7 @@ static CURLcode single_transfer(struct GlobalConfig *global,
          my_setopt(curl, CURLOPT_HTTP09_ALLOWED,
                    config->http09_allowed ? 1L : 0L);
          if(result) {
-
            errorf(global, "HTTP/0.9 is not supported in this build!\n");
+
            errorf(global, "HTTP/0.9 is not supported in this build");
            return result;
          }

@@ -1544,7 +1546,7 @@ static CURLcode single_transfer(struct GlobalConfig *global,
        if(config->capath) {
          result = res_setopt_str(curl, CURLOPT_CAPATH, config->capath);
          if(result == CURLE_NOT_BUILT_IN) {
-
            warnf(global, "ignoring %s, not supported by libcurl\n",
+
            warnf(global, "ignoring %s, not supported by libcurl",
                  capath_from_env?
                  "SSL_CERT_DIR environment variable":"--capath");
          }
@@ -1561,7 +1563,7 @@ static CURLcode single_transfer(struct GlobalConfig *global,
          if(result == CURLE_NOT_BUILT_IN) {
            if(config->proxy_capath) {
              warnf(global,
-
                    "ignoring --proxy-capath, not supported by libcurl\n");
+
                    "ignoring --proxy-capath, not supported by libcurl");
            }
          }
          else if(result)
@@ -1777,7 +1779,9 @@ static CURLcode single_transfer(struct GlobalConfig *global,
              (config->proxy_ssl_allow_beast ?
               CURLSSLOPT_ALLOW_BEAST : 0) |
              (config->proxy_ssl_auto_client_cert ?
-
               CURLSSLOPT_AUTO_CLIENT_CERT : 0);
+
               CURLSSLOPT_AUTO_CLIENT_CERT : 0) |
+
              (config->proxy_native_ca_store ?
+
               CURLSSLOPT_NATIVE_CA : 0);

            if(mask)
              my_setopt_bitmask(curl, CURLOPT_PROXY_SSL_OPTIONS, mask);
@@ -1801,7 +1805,7 @@ static CURLcode single_transfer(struct GlobalConfig *global,
              break;
          }
          else
-
            warnf(global, "Couldn't find a known_hosts file!");
+
            warnf(global, "Couldn't find a known_hosts file");
        }

        if(config->no_body || config->remote_time) {
@@ -1819,7 +1823,7 @@ static CURLcode single_transfer(struct GlobalConfig *global,
          struct curl_slist *cl;

          /* The maximum size needs to match MAX_NAME in cookie.h */
-
#define MAX_COOKIE_LINE 4096
+
#define MAX_COOKIE_LINE 8200
          curlx_dyn_init(&cookies, MAX_COOKIE_LINE);
          for(cl = config->cookies; cl; cl = cl->next) {
            if(cl == config->cookies)
@@ -1830,7 +1834,7 @@ static CURLcode single_transfer(struct GlobalConfig *global,
            if(result) {
              warnf(global,
                    "skipped provided cookie, the cookie header "
-
                    "would go over %u bytes\n", MAX_COOKIE_LINE);
+
                    "would go over %u bytes", MAX_COOKIE_LINE);
              break;
            }
          }
@@ -2042,8 +2046,8 @@ static CURLcode single_transfer(struct GlobalConfig *global,
          my_setopt_slist(curl, CURLOPT_MAIL_RCPT, config->mail_rcpt);

        /* curl 7.69.x */
-
        my_setopt(curl, CURLOPT_MAIL_RCPT_ALLLOWFAILS,
-
          config->mail_rcpt_allowfails ? 1L : 0L);
+
        my_setopt(curl, CURLOPT_MAIL_RCPT_ALLOWFAILS,
+
                  config->mail_rcpt_allowfails ? 1L : 0L);

        /* curl 7.20.x */
        if(config->ftp_pret)
@@ -2157,6 +2161,11 @@ static CURLcode single_transfer(struct GlobalConfig *global,
        if(config->haproxy_protocol)
          my_setopt(curl, CURLOPT_HAPROXYPROTOCOL, 1L);

+
        /* new in 8.2.0 */
+
        if(config->haproxy_clientip)
+
          my_setopt_str(curl, CURLOPT_HAPROXY_CLIENT_IP,
+
              config->haproxy_clientip);
+

        if(config->disallow_username_in_url)
          my_setopt(curl, CURLOPT_DISALLOW_USERNAME_IN_URL, 1L);

@@ -2441,7 +2450,7 @@ static CURLcode serial_transfers(struct GlobalConfig *global,
  if(result)
    return result;
  if(!added) {
-
    errorf(global, "no transfer performed\n");
+
    errorf(global, "no transfer performed");
    return CURLE_READ_ERROR;
  }
  for(per = transfers; per;) {
@@ -2494,7 +2503,7 @@ static CURLcode serial_transfers(struct GlobalConfig *global,
         milliseconds */
      long milli = tvdiff(tvnow(), start);
      if(milli < global->ms_per_transfer) {
-
        notef(global, "Transfer took %ld ms, waits %ldms as set by --rate\n",
+
        notef(global, "Transfer took %ld ms, waits %ldms as set by --rate",
              milli, global->ms_per_transfer - milli);
        /* The transfer took less time than wanted. Wait a little. */
        tool_go_sleep(global->ms_per_transfer - milli);
@@ -2523,7 +2532,7 @@ static CURLcode transfer_per_config(struct GlobalConfig *global,

  /* Check we have a url */
  if(!config->url_list || !config->url_list->url) {
-
    helpf(stderr, "(%d) no URL specified!\n", CURLE_FAILED_INIT);
+
    helpf(stderr, "(%d) no URL specified", CURLE_FAILED_INIT);
    return CURLE_FAILED_INIT;
  }

@@ -2570,7 +2579,7 @@ static CURLcode transfer_per_config(struct GlobalConfig *global,
        if(!config->cacert) {
          curl_free(env);
          curl_easy_cleanup(curltls);
-
          errorf(global, "out of memory\n");
+
          errorf(global, "out of memory");
          return CURLE_OUT_OF_MEMORY;
        }
      }
@@ -2581,7 +2590,7 @@ static CURLcode transfer_per_config(struct GlobalConfig *global,
          if(!config->capath) {
            curl_free(env);
            curl_easy_cleanup(curltls);
-
            helpf(stderr, "out of memory\n");
+
            errorf(global, "out of memory");
            return CURLE_OUT_OF_MEMORY;
          }
          capath_from_env = true;
@@ -2593,7 +2602,7 @@ static CURLcode transfer_per_config(struct GlobalConfig *global,
            if(!config->cacert) {
              curl_free(env);
              curl_easy_cleanup(curltls);
-
              errorf(global, "out of memory\n");
+
              errorf(global, "out of memory");
              return CURLE_OUT_OF_MEMORY;
            }
          }
@@ -2780,7 +2789,7 @@ CURLcode operate(struct GlobalConfig *global, int argc, argv_item_t argv[])
        }
      }
      else
-
        errorf(global, "out of memory\n");
+
        errorf(global, "out of memory");
    }
  }

modified external/curl/src/tool_operate.h
@@ -50,7 +50,6 @@ struct per_transfer {
  struct OutStruct outs;
  struct OutStruct heads;
  struct OutStruct etag_save;
-
  struct InStruct input;
  struct HdrCbData hdrcbdata;
  long num_headers;
  bool was_last_header_empty;
@@ -68,6 +67,8 @@ struct per_transfer {
  curl_off_t dlnow;
  curl_off_t ultotal;
  curl_off_t ulnow;
+
  curl_off_t uploadfilesize; /* expected total amount */
+
  curl_off_t uploadedsofar; /* amount delivered from the callback */
  bool dltotal_added; /* if the total has been added from this */
  bool ultotal_added;

modified external/curl/src/tool_paramhlp.c
@@ -418,7 +418,7 @@ ParameterError proto2num(struct OperationConfig *config,
           if no protocols are allowed */
        if(action == set)
          protoset[0] = NULL;
-
        warnf(config->global, "unrecognized protocol '%s'\n", token);
+
        warnf(config->global, "unrecognized protocol '%s'", token);
      }
    }
  }
@@ -566,7 +566,7 @@ int ftpfilemethod(struct OperationConfig *config, const char *str)
  if(curl_strequal("multicwd", str))
    return CURLFTPMETHOD_MULTICWD;

-
  warnf(config->global, "unrecognized ftp file method '%s', using default\n",
+
  warnf(config->global, "unrecognized ftp file method '%s', using default",
        str);

  return CURLFTPMETHOD_MULTICWD;
@@ -579,7 +579,7 @@ int ftpcccmethod(struct OperationConfig *config, const char *str)
  if(curl_strequal("active", str))
    return CURLFTPSSL_CCC_ACTIVE;

-
  warnf(config->global, "unrecognized ftp CCC method '%s', using default\n",
+
  warnf(config->global, "unrecognized ftp CCC method '%s', using default",
        str);

  return CURLFTPSSL_CCC_PASSIVE;
@@ -594,7 +594,7 @@ long delegation(struct OperationConfig *config, const char *str)
  if(curl_strequal("always", str))
    return CURLGSSAPI_DELEGATION_FLAG;

-
  warnf(config->global, "unrecognized delegation method '%s', using none\n",
+
  warnf(config->global, "unrecognized delegation method '%s', using none",
        str);

  return CURLGSSAPI_DELEGATION_NONE;
@@ -665,7 +665,7 @@ CURLcode get_args(struct OperationConfig *config, const size_t i)
  if(!config->useragent) {
    config->useragent = my_useragent();
    if(!config->useragent) {
-
      errorf(config->global, "out of memory\n");
+
      errorf(config->global, "out of memory");
      result = CURLE_OUT_OF_MEMORY;
    }
  }
modified external/curl/src/tool_parsecfg.c
@@ -43,7 +43,7 @@

static const char *unslashquote(const char *line, char *param);

-
#define MAX_CONFIG_LINE_LENGTH (100*1024)
+
#define MAX_CONFIG_LINE_LENGTH (10*1024*1024)
static bool my_get_line(FILE *fp, struct curlx_dynbuf *, bool *error);

#ifdef WIN32
@@ -210,7 +210,7 @@ int parseconfig(const char *filename, struct GlobalConfig *global)
            break;
          default:
            warnf(operation->global, "%s:%d: warning: '%s' uses unquoted "
-
                  "whitespace in the line that may cause side-effects!\n",
+
                  "whitespace in the line that may cause side-effects",
                  filename, lineno, option);
          }
        }
@@ -263,7 +263,7 @@ int parseconfig(const char *filename, struct GlobalConfig *global)
           res != PARAM_VERSION_INFO_REQUESTED &&
           res != PARAM_ENGINES_REQUESTED) {
          const char *reason = param2text(res);
-
          warnf(operation->global, "%s:%d: warning: '%s' %s\n",
+
          warnf(operation->global, "%s:%d: warning: '%s' %s",
                filename, lineno, option, reason);
        }
      }
modified external/curl/src/tool_sdecls.h
@@ -70,24 +70,6 @@ struct OutStruct {
  curl_off_t init;
};

-

-
/*
-
 * InStruct variables keep track of information relative to curl's
-
 * input reading, which may take place from stdin or from some file.
-
 *
-
 * 'fd' member is either 'stdin' file descriptor number STDIN_FILENO
-
 * or a file descriptor as returned from an 'open' call for some file.
-
 *
-
 * 'config' member is a pointer to associated 'OperationConfig' struct.
-
 */
-

-
struct InStruct {
-
  int fd;
-
  struct OperationConfig *config;
-
  struct per_transfer *per;
-
};
-

-

/*
 * A linked list of these 'getout' nodes contain URL's to fetch,
 * as well as information relative to where URL contents should
modified external/curl/src/tool_setopt.c
@@ -294,7 +294,7 @@ CURLcode tool_setopt_enum(CURL *curl, struct GlobalConfig *config,

#ifdef DEBUGBUILD
  if(ret)
-
    warnf(config, "option %s returned error (%d)\n", name, (int)ret);
+
    warnf(config, "option %s returned error (%d)", name, (int)ret);
#endif
nomem:
  return ret;
modified external/curl/src/tool_setup.h
@@ -73,4 +73,10 @@ extern FILE *tool_stderr;
#  include "tool_strdup.h"
#endif

+
#if defined(WIN32) && !defined(MSDOS)
+
/* set in win32_init() */
+
extern LARGE_INTEGER tool_freq;
+
extern bool tool_isVistaOrGreater;
+
#endif
+

#endif /* HEADER_CURL_TOOL_SETUP_H */
modified external/curl/src/tool_stderr.c
@@ -26,8 +26,8 @@
#define CURL_DO_NOT_OVERRIDE_STDERR

#include "tool_setup.h"
-

#include "tool_stderr.h"
+
#include "tool_msgs.h"

#include "memdebug.h" /* keep this as LAST include */

@@ -39,7 +39,7 @@ void tool_init_stderr(void)
  tool_stderr = stderr;
}

-
void tool_set_stderr_file(char *filename)
+
void tool_set_stderr_file(struct GlobalConfig *global, char *filename)
{
  FILE *fp;

@@ -55,7 +55,7 @@ void tool_set_stderr_file(char *filename)
     subsequent freopen will fail. */
  fp = fopen(filename, FOPEN_WRITETEXT);
  if(!fp) {
-
    fprintf(tool_stderr, "Warning: Failed to open %s!\n", filename);
+
    warnf(global, "Warning: Failed to open %s", filename);
    return;
  }
  fclose(fp);
modified external/curl/src/tool_stderr.h
@@ -24,8 +24,9 @@
 *
 ***************************************************************************/
#include "tool_setup.h"
+
#include "tool_cfgable.h"

void tool_init_stderr(void);
-
void tool_set_stderr_file(char *filename);
+
void tool_set_stderr_file(struct GlobalConfig *global, char *filename);

#endif /* HEADER_CURL_TOOL_STDERR_H */
modified external/curl/src/tool_urlglob.c
@@ -64,9 +64,9 @@ static CURLcode glob_fixed(struct URLGlob *glob, char *fixed, size_t len)
 *
 * Multiplies and checks for overflow.
 */
-
static int multiply(unsigned long *amount, long with)
+
static int multiply(curl_off_t *amount, curl_off_t with)
{
-
  unsigned long sum = *amount * with;
+
  curl_off_t sum = *amount * with;
  if(!with) {
    *amount = 0;
    return 0;
@@ -78,7 +78,7 @@ static int multiply(unsigned long *amount, long with)
}

static CURLcode glob_set(struct URLGlob *glob, char **patternp,
-
                         size_t *posp, unsigned long *amount,
+
                         size_t *posp, curl_off_t *amount,
                         int globindex)
{
  /* processes a set expression with the point behind the opening '{'
@@ -123,7 +123,8 @@ static CURLcode glob_set(struct URLGlob *glob, char **patternp,
      *buf = '\0';
      if(pat->content.Set.elements) {
        char **new_arr = realloc(pat->content.Set.elements,
-
                                 (pat->content.Set.size + 1) * sizeof(char *));
+
                                 (size_t)(pat->content.Set.size + 1) *
+
                                 sizeof(char *));
        if(!new_arr)
          return GLOBERROR("out of memory", 0, CURLE_OUT_OF_MEMORY);

@@ -172,7 +173,7 @@ static CURLcode glob_set(struct URLGlob *glob, char **patternp,
}

static CURLcode glob_range(struct URLGlob *glob, char **patternp,
-
                           size_t *posp, unsigned long *amount,
+
                           size_t *posp, curl_off_t *amount,
                           int globindex)
{
  /* processes a range expression with the point behind the opening '['
@@ -360,7 +361,7 @@ static bool peek_ipv6(const char *str, size_t *skip)
}

static CURLcode glob_parse(struct URLGlob *glob, char *pattern,
-
                           size_t pos, unsigned long *amount)
+
                           size_t pos, curl_off_t *amount)
{
  /* processes a literal string component of a URL
     special characters '{' and '[' branch to set/range processing functions
@@ -437,7 +438,7 @@ static CURLcode glob_parse(struct URLGlob *glob, char *pattern,
  return res;
}

-
CURLcode glob_url(struct URLGlob **glob, char *url, unsigned long *urlnum,
+
CURLcode glob_url(struct URLGlob **glob, char *url, curl_off_t *urlnum,
                  FILE *error)
{
  /*
@@ -445,7 +446,7 @@ CURLcode glob_url(struct URLGlob **glob, char *url, unsigned long *urlnum,
   * as the specified URL!
   */
  struct URLGlob *glob_expand;
-
  unsigned long amount = 0;
+
  curl_off_t amount = 0;
  char *glob_buffer;
  CURLcode res;

@@ -496,7 +497,7 @@ CURLcode glob_url(struct URLGlob **glob, char *url, unsigned long *urlnum,
void glob_cleanup(struct URLGlob *glob)
{
  size_t i;
-
  int elem;
+
  curl_off_t elem;

  if(!glob)
    return;
modified external/curl/src/tool_urlglob.h
@@ -38,7 +38,7 @@ struct URLPattern {
  union {
    struct {
      char **elements;
-
      int size;
+
      curl_off_t size;
      int ptr_s;
    } Set;
    struct {
@@ -48,11 +48,11 @@ struct URLPattern {
      int step;
    } CharRange;
    struct {
-
      unsigned long min_n;
-
      unsigned long max_n;
+
      curl_off_t min_n;
+
      curl_off_t max_n;
      int padlength;
-
      unsigned long ptr_n;
-
      unsigned long step;
+
      curl_off_t ptr_n;
+
      curl_off_t step;
    } NumRange;
  } content;
};
@@ -70,7 +70,7 @@ struct URLGlob {
  size_t pos;        /* column position of error or 0 */
};

-
CURLcode glob_url(struct URLGlob**, char *, unsigned long *, FILE *);
+
CURLcode glob_url(struct URLGlob**, char *, curl_off_t *, FILE *);
CURLcode glob_next_url(char **, struct URLGlob *);
CURLcode glob_match_url(char **, char *, struct URLGlob *);
void glob_cleanup(struct URLGlob *glob);
modified external/curl/src/tool_util.c
@@ -33,10 +33,6 @@

#if defined(WIN32) && !defined(MSDOS)

-
/* set in win32_init() */
-
extern LARGE_INTEGER tool_freq;
-
extern bool tool_isVistaOrGreater;
-

/* In case of bug fix this function has a counterpart in timeval.c */
struct timeval tvnow(void)
{
modified external/curl/src/tool_version.h
@@ -27,7 +27,7 @@

#define CURL_NAME "curl"
#define CURL_COPYRIGHT LIBCURL_COPYRIGHT
-
#define CURL_VERSION "8.1.2"
+
#define CURL_VERSION "8.2.1"
#define CURL_VERSION_MAJOR LIBCURL_VERSION_MAJOR
#define CURL_VERSION_MINOR LIBCURL_VERSION_MINOR
#define CURL_VERSION_PATCH LIBCURL_VERSION_PATCH
modified external/curl/src/tool_writeout.c
@@ -75,6 +75,7 @@ static const struct httpmap http_version[] = {
static const struct writeoutvar variables[] = {
  {"certs", VAR_CERT, CURLINFO_NONE, writeString},
  {"content_type", VAR_CONTENT_TYPE, CURLINFO_CONTENT_TYPE, writeString},
+
  {"conn_id", VAR_CONN_ID, CURLINFO_CONN_ID, writeOffset},
  {"errormsg", VAR_ERRORMSG, CURLINFO_NONE, writeString},
  {"exitcode", VAR_EXITCODE, CURLINFO_NONE, writeLong},
  {"filename_effective", VAR_EFFECTIVE_FILENAME, CURLINFO_NONE, writeString},
@@ -145,6 +146,7 @@ static const struct writeoutvar variables[] = {
  {"urle.zoneid", VAR_INPUT_URLEZONEID, CURLINFO_NONE, writeString},
  {"url_effective", VAR_EFFECTIVE_URL, CURLINFO_EFFECTIVE_URL, writeString},
  {"urlnum", VAR_URLNUM, CURLINFO_NONE, writeLong},
+
  {"xfer_id", VAR_EASY_ID, CURLINFO_XFER_ID, writeOffset},
  {NULL, VAR_NONE, CURLINFO_NONE, NULL}
};

modified external/curl/src/tool_writeout.h
@@ -32,6 +32,8 @@ typedef enum {
  VAR_CERT,
  VAR_CONNECT_TIME,
  VAR_CONTENT_TYPE,
+
  VAR_CONN_ID,
+
  VAR_EASY_ID,
  VAR_EFFECTIVE_FILENAME,
  VAR_EFFECTIVE_METHOD,
  VAR_EFFECTIVE_URL,
modified external/curl/src/tool_writeout_json.c
@@ -62,7 +62,7 @@ void jsonWriteString(FILE *stream, const char *in, bool lowercase)
      break;
    default:
      if(*i < 32) {
-
        fprintf(stream, "u%04x", *i);
+
        fprintf(stream, "\\u%04x", *i);
      }
      else {
        char out = *i;
modified external/curl/tests/CMakeLists.txt
@@ -21,6 +21,8 @@
# SPDX-License-Identifier: curl
#
###########################################################################
+
set(CMAKE_UNITY_BUILD OFF)
+

add_custom_target(testdeps)
add_subdirectory(data)
add_subdirectory(libtest)
modified external/curl/tests/Makefile.in
@@ -374,7 +374,7 @@ USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
-
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
+
USE_NGTCP2_CRYPTO_QUICTLS = @USE_NGTCP2_CRYPTO_QUICTLS@
USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
modified external/curl/tests/certs/Makefile.in
@@ -351,7 +351,7 @@ USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
-
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
+
USE_NGTCP2_CRYPTO_QUICTLS = @USE_NGTCP2_CRYPTO_QUICTLS@
USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
modified external/curl/tests/certs/scripts/Makefile.in
@@ -293,7 +293,7 @@ USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
-
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
+
USE_NGTCP2_CRYPTO_QUICTLS = @USE_NGTCP2_CRYPTO_QUICTLS@
USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
modified external/curl/tests/data/Makefile.in
@@ -317,7 +317,7 @@ USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
-
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
+
USE_NGTCP2_CRYPTO_QUICTLS = @USE_NGTCP2_CRYPTO_QUICTLS@
USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
@@ -438,10 +438,10 @@ test390 test391 test392 test393 test394 test395 test396 test397 test398 \
test399 test400 test401 test402 test403 test404 test405 test406 test407 \
test408 test409 test410 test411 test412 test413 test414 test415 test416 \
test417 test418 test419 test420 test421 test422 test423 test424 test425 \
-
test426 \
+
test426 test427 \
test430 test431 test432 test433 test434 test435 test436 \
\
-
test440 test441 test442 test443 test444 test445 test446 \
+
test440 test441 test442 test443 test444 test445 test446 test447 \
\
test490 test491 test492 test493 test494 test495 test496 \
\
@@ -471,30 +471,28 @@ test700 test701 test702 test703 test704 test705 test706 test707 test708 \
test709 test710 test711 test712 test713 test714 test715 test716 test717 \
test718 test719 test720 test721 \
\
-
test800 test801 test802 test803 test804 test805 test806 test807 test808 \
-
test809 test810 test811 test812 test813 test814 test815 test816 test817 \
-
test818 test819 test820 test821 test822 test823 test824 test825 test826 \
-
test827 test828 test829 test830 test831 test832 test833 test834 test835 \
-
test836 test837 test838 test839 test840 test841 test842 test843 test844 \
-
test845 test846 test847 test848 test849 test850 test851 test852 test853 \
-
test854 test855 test856 test857 test858 test859 test860 test861 test862 \
-
test863 test864 test865 test866 test867 test868 test869 test870 test871 \
-
test872 test873 test874 test875 test876 test877 test878 test879 test880 \
-
test881 test882 test883 test884 test885 test886 test887 test888 test889 \
-
test890 test891 test892 test893 test894 test895 test896 test897 test898 \
-
\
-
test900 test901 test902 test903 test904 test905 test906 test907 test908 \
-
test909 test910 test911 test912 test913 test914 test915 test916 test917 \
-
test918 test919 test920 test921 test922 test923 test924 test925 test926 \
-
test927 test928 test929 test930 test931 test932 test933 test934 test935 \
-
test936 test937 test938 test939 test940 test941 test942 test943 test944 \
-
test945 test946 test947 test948 test949 test950 test951 test952 test953 \
-
test954 test955 test956 test957 test958 test959 test960 test961 test962 \
-
test963 test964 test965 test966 test967 test968 test969 test970 test971 \
-
test972 test973 test974 test975 test976 test977 test978 \
-
\
-
test980 test981 test982 test983 test984 test985 test986 test987 test988 \
-
test989 \
+
test799 test800 test801 test802 test803 test804 test805 test806 test807 \
+
test808 test809 test810 test811 test812 test813 test814 test815 test816 \
+
test817 test818 test819 test820 test821 test822 test823 test824 test825 \
+
test826 test827 test828 test829 test830 test831 test832 test833 test834 \
+
test835 test836 test837 test838 test839 test840 test841 test842 test843 \
+
test844 test845 test846 test847 test848 test849 test850 test851 test852 \
+
test853 test854 test855 test856 test857 test858 test859 test860 test861 \
+
test862 test863 test864 test865 test866 test867 test868 test869 test870 \
+
test871 test872 test873 test874 test875 test876 test877 test878 test879 \
+
test880 test881 test882 test883 test884 test885 test886 test887 test888 \
+
test889 test890 test891 test892 test893 test894 test895 test896 test897 \
+
test898 test899 test900 test901 test902 test903 test904 test905 test906 \
+
test907 test908 test909 test910 test911 test912 test913 test914 test915 \
+
test916 test917 test918 test919 test920 test921 test922 test923 test924 \
+
test925 test926 test927 test928 test929 test930 test931 test932 test933 \
+
test934 test935 test936 test937 test938 test939 test940 test941 test942 \
+
test943 test944 test945 test946 test947 test948 test949 test950 test951 \
+
test952 test953 test954 test955 test956 test957 test958 test959 test960 \
+
test961 test962 test963 test964 test965 test966 test967 test968 test969 \
+
test970 test971 test972 test973 test974 test975 test976 test977 test978 \
+
test979 test980 test981 test982 test983 test984 test985 test986 test987 \
+
test988 test989 \
\
test1000 test1001 test1002 test1003 test1004 test1005 test1006 test1007 \
test1008 test1009 test1010 test1011 test1012 test1013 test1014 test1015 \
@@ -615,7 +613,7 @@ test2200 test2201 test2202 test2203 test2204 test2205 \
\
test2300 test2301 test2302 test2303 test2304 test2305 test2306 \
\
-
test2400 test2401 test2402 test2403 \
+
test2400 test2401 test2402 test2403 test2404 \
\
test2500 test2501 test2502 test2503 \
\
@@ -627,7 +625,8 @@ test3016 test3017 test3018 test3019 test3020 test3021 test3022 test3023 \
test3024 test3025 test3026 test3027 test3028 test3029 test3030 \
\
test3100 test3101 \
-
test3200
+
test3200 \
+
test3201 test3202


# TESTCASES are taken from Makefile.inc
modified external/curl/tests/data/Makefile.inc
@@ -69,10 +69,10 @@ test390 test391 test392 test393 test394 test395 test396 test397 test398 \
test399 test400 test401 test402 test403 test404 test405 test406 test407 \
test408 test409 test410 test411 test412 test413 test414 test415 test416 \
test417 test418 test419 test420 test421 test422 test423 test424 test425 \
-
test426 \
+
test426 test427 \
test430 test431 test432 test433 test434 test435 test436 \
\
-
test440 test441 test442 test443 test444 test445 test446 \
+
test440 test441 test442 test443 test444 test445 test446 test447 \
\
test490 test491 test492 test493 test494 test495 test496 \
\
@@ -102,30 +102,28 @@ test700 test701 test702 test703 test704 test705 test706 test707 test708 \
test709 test710 test711 test712 test713 test714 test715 test716 test717 \
test718 test719 test720 test721 \
\
-
test800 test801 test802 test803 test804 test805 test806 test807 test808 \
-
test809 test810 test811 test812 test813 test814 test815 test816 test817 \
-
test818 test819 test820 test821 test822 test823 test824 test825 test826 \
-
test827 test828 test829 test830 test831 test832 test833 test834 test835 \
-
test836 test837 test838 test839 test840 test841 test842 test843 test844 \
-
test845 test846 test847 test848 test849 test850 test851 test852 test853 \
-
test854 test855 test856 test857 test858 test859 test860 test861 test862 \
-
test863 test864 test865 test866 test867 test868 test869 test870 test871 \
-
test872 test873 test874 test875 test876 test877 test878 test879 test880 \
-
test881 test882 test883 test884 test885 test886 test887 test888 test889 \
-
test890 test891 test892 test893 test894 test895 test896 test897 test898 \
-
\
-
test900 test901 test902 test903 test904 test905 test906 test907 test908 \
-
test909 test910 test911 test912 test913 test914 test915 test916 test917 \
-
test918 test919 test920 test921 test922 test923 test924 test925 test926 \
-
test927 test928 test929 test930 test931 test932 test933 test934 test935 \
-
test936 test937 test938 test939 test940 test941 test942 test943 test944 \
-
test945 test946 test947 test948 test949 test950 test951 test952 test953 \
-
test954 test955 test956 test957 test958 test959 test960 test961 test962 \
-
test963 test964 test965 test966 test967 test968 test969 test970 test971 \
-
test972 test973 test974 test975 test976 test977 test978 \
-
\
-
test980 test981 test982 test983 test984 test985 test986 test987 test988 \
-
test989 \
+
test799 test800 test801 test802 test803 test804 test805 test806 test807 \
+
test808 test809 test810 test811 test812 test813 test814 test815 test816 \
+
test817 test818 test819 test820 test821 test822 test823 test824 test825 \
+
test826 test827 test828 test829 test830 test831 test832 test833 test834 \
+
test835 test836 test837 test838 test839 test840 test841 test842 test843 \
+
test844 test845 test846 test847 test848 test849 test850 test851 test852 \
+
test853 test854 test855 test856 test857 test858 test859 test860 test861 \
+
test862 test863 test864 test865 test866 test867 test868 test869 test870 \
+
test871 test872 test873 test874 test875 test876 test877 test878 test879 \
+
test880 test881 test882 test883 test884 test885 test886 test887 test888 \
+
test889 test890 test891 test892 test893 test894 test895 test896 test897 \
+
test898 test899 test900 test901 test902 test903 test904 test905 test906 \
+
test907 test908 test909 test910 test911 test912 test913 test914 test915 \
+
test916 test917 test918 test919 test920 test921 test922 test923 test924 \
+
test925 test926 test927 test928 test929 test930 test931 test932 test933 \
+
test934 test935 test936 test937 test938 test939 test940 test941 test942 \
+
test943 test944 test945 test946 test947 test948 test949 test950 test951 \
+
test952 test953 test954 test955 test956 test957 test958 test959 test960 \
+
test961 test962 test963 test964 test965 test966 test967 test968 test969 \
+
test970 test971 test972 test973 test974 test975 test976 test977 test978 \
+
test979 test980 test981 test982 test983 test984 test985 test986 test987 \
+
test988 test989 \
\
test1000 test1001 test1002 test1003 test1004 test1005 test1006 test1007 \
test1008 test1009 test1010 test1011 test1012 test1013 test1014 test1015 \
@@ -246,7 +244,7 @@ test2200 test2201 test2202 test2203 test2204 test2205 \
\
test2300 test2301 test2302 test2303 test2304 test2305 test2306 \
\
-
test2400 test2401 test2402 test2403 \
+
test2400 test2401 test2402 test2403 test2404 \
\
test2500 test2501 test2502 test2503 \
\
@@ -258,4 +256,5 @@ test3016 test3017 test3018 test3019 test3020 test3021 test3022 test3023 \
test3024 test3025 test3026 test3027 test3028 test3029 test3030 \
\
test3100 test3101 \
-
test3200
+
test3200 \
+
test3201 test3202
modified external/curl/tests/data/test1007
@@ -17,7 +17,7 @@ tftp
TFTP send with invalid permission on server
 </name>
 <command>
-
-T %LOGDIR/test%TESTNUMBER.txt tftp://%HOSTIP:%TFTPPORT//invalid-file
+
-T %LOGDIR/test%TESTNUMBER.txt tftp://%HOSTIP:%TFTPPORT//invalid-file -sS
</command>
<file name="%LOGDIR/test%TESTNUMBER.txt">
This data will not be sent
@@ -30,13 +30,18 @@ This data will not be sent
<errorcode>
69
</errorcode>
+
<strip>
+
^timeout = [5-6]$
+
</strip>
<protocol>
opcode = 2
mode = octet
tsize = 27
blksize = 512
-
timeout = 6
filename = /invalid-file
</protocol>
+
<stderr mode="text">
+
curl: (69) TFTP: Access Violation
+
</stderr>
</verify>
</testcase>
modified external/curl/tests/data/test1009
@@ -35,12 +35,14 @@ tftp://%HOSTIP:%TFTPPORT//%TESTNUMBER --local-port 44444-45444
#
# Verify pseudo protocol after the test has been "shot"
<verify>
+
<strip>
+
^timeout = [5-6]$
+
</strip>
<protocol>
opcode = 1
mode = octet
tsize = 0
blksize = 512
-
timeout = 6
filename = /%TESTNUMBER
</protocol>
</verify>
modified external/curl/tests/data/test1049
@@ -35,12 +35,14 @@ tftp://%HOSTIP:%TFTPPORT//%TESTNUMBER --interface %CLIENTIP
#
# Verify pseudo protocol after the test has been "shot"
<verify>
+
<strip>
+
^timeout = [5-6]$
+
</strip>
<protocol>
opcode = 1
mode = octet
tsize = 0
blksize = 512
-
timeout = 6
filename = /%TESTNUMBER
</protocol>
</verify>
modified external/curl/tests/data/test1093
@@ -35,12 +35,14 @@ TFTP retrieve with mode=i
#
# Verify pseudo protocol after the test has been "shot"
<verify>
+
<strip>
+
^timeout = [5-6]$
+
</strip>
<protocol>
opcode = 1
mode = octet
tsize = 0
blksize = 512
-
timeout = 6
filename = /%TESTNUMBER
</protocol>
</verify>
modified external/curl/tests/data/test1094
@@ -41,12 +41,14 @@ TFTP retrieve with mode=netascii
#
# Verify pseudo protocol after the test has been "shot"
<verify>
+
<strip>
+
^timeout = [5-6]$
+
</strip>
<protocol>
opcode = 1
mode = netascii
tsize = 0
blksize = 512
-
timeout = 6
filename = /%TESTNUMBER
</protocol>
</verify>
modified external/curl/tests/data/test1099
@@ -30,18 +30,19 @@ tftp://%HOSTIP:%TFTPPORT/an/invalid-file tftp://%HOSTIP:%TFTPPORT//%TESTNUMBER
#
# Verify pseudo protocol after the test has been "shot"
<verify>
+
<strip>
+
^timeout = [5-6]$
+
</strip>
<protocol>
opcode = 1
mode = octet
tsize = 0
blksize = 512
-
timeout = 6
filename = an/invalid-file
opcode = 1
mode = octet
tsize = 0
blksize = 512
-
timeout = 6
filename = /%TESTNUMBER
</protocol>
<stdout>
modified external/curl/tests/data/test1238
@@ -47,12 +47,14 @@ tftp://%HOSTIP:%TFTPPORT//%TESTNUMBER -Y1000 -y2
#
# Verify pseudo protocol after the test has been "shot"
<verify>
+
<strip>
+
^timeout = [5-6]$
+
</strip>
<protocol>
opcode = 1
mode = octet
tsize = 0
blksize = 512
-
timeout = 6
filename = /%TESTNUMBER
</protocol>
# 28 = CURLE_OPERATION_TIMEDOUT
modified external/curl/tests/data/test1467
@@ -42,7 +42,7 @@ socks5unix
HTTP GET via SOCKS5 proxy via unix sockets
 </name>
 <command>
-
--socks5 localhost%PWD/%SOCKSUNIXPATH http://%HOSTIP:%HTTPPORT/%TESTNUMBER
+
--socks5 localhost%SOCKSUNIXPATH http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

modified external/curl/tests/data/test1468
@@ -43,7 +43,7 @@ socks5unix
HTTP GET with host name using SOCKS5h via unix sockets
 </name>
 <command>
-
http://this.is.a.host.name:%HTTPPORT/%TESTNUMBER --proxy socks5h://localhost%PWD/%SOCKSUNIXPATH
+
http://this.is.a.host.name:%HTTPPORT/%TESTNUMBER --proxy socks5h://localhost%SOCKSUNIXPATH
</command>
</client>

modified external/curl/tests/data/test1470
@@ -45,7 +45,7 @@ socks5unix
HTTPS GET with host name using SOCKS5h via unix sockets
 </name>
 <command>
-
https://this.is.a.host.name:%HTTPSPORT/%TESTNUMBER -k --proxy socks5h://localhost%PWD/%SOCKSUNIXPATH
+
https://this.is.a.host.name:%HTTPSPORT/%TESTNUMBER -k --proxy socks5h://localhost%SOCKSUNIXPATH
</command>
</client>

modified external/curl/tests/data/test1506
@@ -86,7 +86,7 @@ Accept: */*
* Connection #0 to host server1.example.com left intact
* Connection #1 to host server2.example.com left intact
* Connection #2 to host server3.example.com left intact
-
* Closing connection 0
+
* Closing connection
* Connection #3 to host server4.example.com left intact
</file>
<stripfile>
modified external/curl/tests/data/test1509
@@ -78,6 +78,7 @@ CONNECT the.old.moo.%TESTNUMBER:%HTTPPORT HTTP/1.1
Host: the.old.moo.%TESTNUMBER:%HTTPPORT
Proxy-Connection: Keep-Alive

+
[DISCONNECT]
</proxy>
<protocol>
GET /%TESTNUMBER HTTP/1.1
modified external/curl/tests/data/test1542
@@ -58,7 +58,7 @@ Accept: */*
== Info: Connection #0 to host %HOSTIP left intact
== Info: Connection #0 to host %HOSTIP left intact
== Info: Connection #0 to host %HOSTIP left intact
-
== Info: Closing connection 0
+
== Info: Closing connection
== Info: Connection #1 to host %HOSTIP left intact
</file>
<stripfile>
modified external/curl/tests/data/test1554
@@ -69,12 +69,6 @@ run 1: foobar and so on fun!
<- Mutex unlock
-> Mutex lock
<- Mutex unlock
-
%if hyper
-
-> Mutex lock
-
<- Mutex unlock
-
-> Mutex lock
-
<- Mutex unlock
-
%endif
run 1: foobar and so on fun!
-> Mutex lock
<- Mutex unlock
modified external/curl/tests/data/test1559
@@ -37,7 +37,7 @@ Set excessive URL lengths
CURLOPT_URL 10000000 bytes URL == 43
CURLOPT_POSTFIELDS 10000000 bytes data == 0
CURLUPART_URL 10000000 bytes URL == 3 (Malformed input to a URL function)
-
CURLUPART_SCHEME 10000000 bytes scheme == 27 (Bad scheme)
+
CURLUPART_SCHEME 10000000 bytes scheme == 3 (Malformed input to a URL function)
CURLUPART_USER 10000000 bytes user == 3 (Malformed input to a URL function)
</stdout>
</verify>
modified external/curl/tests/data/test2002
@@ -72,6 +72,9 @@ moo
#
# Verify data after the test has been "shot"
<verify>
+
<strip>
+
^timeout = [5-6]$
+
</strip>
<protocol>
GET /%TESTNUMBER0001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
@@ -89,7 +92,6 @@ opcode = 1
mode = octet
tsize = 0
blksize = 512
-
timeout = 6
filename = /%TESTNUMBER0003
QUIT
</protocol>
modified external/curl/tests/data/test2003
@@ -72,6 +72,9 @@ moo
#
# Verify data after the test has been "shot"
<verify>
+
<strip>
+
^timeout = [5-6]$
+
</strip>
<protocol>
GET /%TESTNUMBER0001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
@@ -89,13 +92,11 @@ opcode = 1
mode = octet
tsize = 0
blksize = 512
-
timeout = 6
filename = /%TESTNUMBER0003
opcode = 1
mode = octet
tsize = 0
blksize = 512
-
timeout = 6
filename = /%TESTNUMBER0003
EPSV
SIZE %TESTNUMBER0002
modified external/curl/tests/data/test2004
@@ -41,18 +41,19 @@ for several protocols
#
# Verify data after the test has been "shot"
<verify>
+
<strip>
+
^timeout = [5-6]$
+
</strip>
<protocol>
opcode = 1
mode = octet
tsize = 0
blksize = 512
-
timeout = 6
filename = /%TESTNUMBER
opcode = 1
mode = octet
tsize = 0
blksize = 512
-
timeout = 6
filename = /%TESTNUMBER
</protocol>
<stdout>
added external/curl/tests/data/test2404
@@ -0,0 +1,109 @@
+
<testcase>
+
<info>
+
<keywords>
+
HTTP
+
HTTP/2
+
multi
+
verbose logs
+
</keywords>
+
</info>
+

+
# Server-side
+
<reply>
+
<data1 crlf="yes">
+
HTTP/1.1 200 OK
+
Date: Tue, 09 Nov 2010 14:49:00 GMT
+
Server: server.example.com
+
Content-Length: 47
+

+
file contents should appear once for each file
+
</data1>
+
<data2>
+
HTTP/1.1 200 OK
+
Date: Tue, 09 Nov 2010 14:49:00 GMT
+
Server: server.example.com
+
Content-Length: 47
+

+
file contents should appear once for each file
+
</data2>
+
<data3>
+
HTTP/1.1 200 OK
+
Date: Tue, 09 Nov 2010 14:49:00 GMT
+
Server: server.example.com
+
Content-Length: 47
+

+
file contents should appear once for each file
+
</data3>
+
<data4>
+
HTTP/1.1 200 OK
+
Date: Tue, 09 Nov 2010 14:49:00 GMT
+
Server: server.example.com
+
Content-Length: 47
+

+
file contents should appear once for each file
+
</data4>
+
</reply>
+

+
# Client-side
+
<client>
+
<features>
+
h2c
+
SSL
+
</features>
+
<server>
+
http
+
http/2
+
</server>
+
<tool>
+
lib%TESTNUMBER
+
</tool>
+
 <name>
+
HTTP/2 using STREAM_WEIGHTs
+
 </name>
+
 <command>
+
https://%HOSTIP:%HTTP2TLSPORT/path/%TESTNUMBER %HOSTIP %HTTP2TLSPORT
+
</command>
+
</client>
+

+
# Verify data after the test has been "shot"
+
<verify>
+
<protocol crlf="yes">
+
GET /path/%TESTNUMBER0001 HTTP/1.1
+
Host: %HOSTIP:%HTTPPORT
+
Accept: */*
+
X-Forwarded-Proto: https
+
Via: 2 nghttpx
+

+
GET /path/%TESTNUMBER0002 HTTP/1.1
+
Host: %HOSTIP:%HTTPPORT
+
Accept: */*
+
X-Forwarded-Proto: https
+
Via: 2 nghttpx
+

+
GET /path/%TESTNUMBER0003 HTTP/1.1
+
Host: %HOSTIP:%HTTPPORT
+
Accept: */*
+
X-Forwarded-Proto: https
+
Via: 2 nghttpx
+

+
GET /path/%TESTNUMBER0004 HTTP/1.1
+
Host: %HOSTIP:%HTTPPORT
+
Accept: */*
+
X-Forwarded-Proto: https
+
Via: 2 nghttpx
+

+
</protocol>
+
<strip>
+
^Host:.*
+
</strip>
+
<file name="%LOGDIR/stderr%TESTNUMBER" mode="text">
+
* Connection #0 to host localhost left intact
+
* Connection #0 to host localhost left intact
+
* Connection #0 to host localhost left intact
+
* Connection #0 to host localhost left intact
+
</file>
+
<stripfile>
+
$_ = '' if (($_ !~ /left intact/) && ($_ !~ /Closing connection/))
+
</stripfile>
+
</verify>
+
</testcase>
modified external/curl/tests/data/test2600
@@ -2,7 +2,7 @@
<info>
<keywords>
unittest
-
llist
+
cfilter
</keywords>
</info>

@@ -18,7 +18,7 @@ debug
http
</features>
 <name>
-
llist unit tests
+
connection filter connect/destroy unit tests
 </name>
</client>
</testcase>
modified external/curl/tests/data/test271
@@ -34,12 +34,14 @@ tftp://%HOSTIP:%TFTPPORT//%TESTNUMBER
#
# Verify pseudo protocol after the test has been "shot"
<verify>
+
<strip>
+
^timeout = [5-6]$
+
</strip>
<protocol>
opcode = 1
mode = octet
tsize = 0
blksize = 512
-
timeout = 6
filename = /%TESTNUMBER
</protocol>
</verify>
modified external/curl/tests/data/test283
@@ -27,12 +27,14 @@ tftp://%HOSTIP:%TFTPPORT//invalid-file --tftp-blksize 1024
<errorcode>
69
</errorcode>
+
<strip>
+
^timeout = [5-6]$
+
</strip>
<protocol>
opcode = 1
mode = octet
tsize = 0
blksize = 1024
-
timeout = 6
filename = /invalid-file
</protocol>
</verify>
modified external/curl/tests/data/test284
@@ -58,12 +58,14 @@ tftp://%HOSTIP:%TFTPPORT//%TESTNUMBER
#
# Verify pseudo protocol after the test has been "shot"
<verify>
+
<strip>
+
^timeout = [5-6]$
+
</strip>
<protocol>
opcode = 1
mode = octet
tsize = 0
blksize = 512
-
timeout = 6
filename = /%TESTNUMBER
</protocol>
</verify>
modified external/curl/tests/data/test285
@@ -16,7 +16,7 @@ tftp
TFTP send
 </name>
 <command>
-
-T %LOGDIR/test%TESTNUMBER.txt tftp://%HOSTIP:%TFTPPORT//
+
-T %LOGDIR/test%TESTNUMBER.txt tftp://%HOSTIP:%TFTPPORT// --connect-time 549
</command>
<file name="%LOGDIR/test%TESTNUMBER.txt">
a chunk of
@@ -40,7 +40,7 @@ opcode = 2
mode = octet
tsize = 32
blksize = 512
-
timeout = 6
+
timeout = 10
filename = /test%TESTNUMBER.txt
</protocol>
</verify>
modified external/curl/tests/data/test286
@@ -83,12 +83,14 @@ condition in the TFTP transmit code.
123456789ABCDEF
123456789ABCDEF
</upload>
+
<strip>
+
^timeout = [5-6]$
+
</strip>
<protocol>
opcode = 2
mode = octet
tsize = 512
blksize = 512
-
timeout = 6
filename = /test%TESTNUMBER.txt
</protocol>
</verify>
added external/curl/tests/data/test3201
@@ -0,0 +1,63 @@
+
<testcase>
+
<info>
+
<keywords>
+
HTTP
+
HTTP GET
+
proxy
+
haproxy
+
</keywords>
+
</info>
+

+
#
+
# Server-side
+
<reply name="%TESTNUMBER">
+
<data nocheck="yes">
+
HTTP/1.1 200 OK
+
Date: Tue, 09 Nov 2010 14:49:00 GMT
+
Server: test-server/fake
+
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
+
ETag: "21025-dc7-39462498"
+
Accept-Ranges: bytes
+
Content-Length: 6
+
Connection: close
+
Content-Type: text/html
+
Funny-head: barkbark
+

+
-foo-
+
</data>
+
</reply>
+

+
#
+
# Client-side
+
<client>
+
<server>
+
http
+
</server>
+
<name>
+
HTTP GET when PROXY Protocol enabled and spoofed client IP
+
</name>
+
<command>
+
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --haproxy-clientip "192.168.1.1" -H "Testno: %TESTNUMBER"
+
</command>
+
<features>
+
proxy
+
</features>
+
</client>
+

+
#
+
# Verify data after the test has been "shot"
+
<verify>
+
<strippart>
+
s/^PROXY TCP4 %CLIENTIP 192.168.1.1 (\d*) %HTTPPORT/proxy-line/
+
</strippart>
+
<protocol>
+
proxy-line
+
GET /%TESTNUMBER HTTP/1.1
+
Host: %HOSTIP:%HTTPPORT
+
User-Agent: curl/%VERSION
+
Accept: */*
+
Testno: %TESTNUMBER
+

+
</protocol>
+
</verify>
+
</testcase>
added external/curl/tests/data/test3202
@@ -0,0 +1,67 @@
+
<testcase>
+
<info>
+
<keywords>
+
HTTP
+
HTTP GET
+
proxy
+
haproxy
+
IPv6
+
</keywords>
+
</info>
+
#
+
# Server-side
+
<reply>
+
<data nocheck="yes">
+
HTTP/1.1 200 OK
+
Date: Tue, 09 Nov 2010 14:49:00 GMT
+
Server: test-server/fake
+
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
+
ETag: "21025-dc7-39462498"
+
Accept-Ranges: bytes
+
Content-Length: 6
+
Connection: close
+
Content-Type: text/html
+
Funny-head: yesyes
+

+
These data aren't actually sent to the client
+
</data>
+
</reply>
+

+
#
+
# Client-side
+
<client>
+
<features>
+
ipv6
+
</features>
+
<server>
+
http-ipv6
+
</server>
+
 <name>
+
HTTP-IPv6 GET with PROXY protocol with spoofed client IP
+
 </name>
+
 <command>
+
-g "http://%HOST6IP:%HTTP6PORT/%TESTNUMBER" --haproxy-clientip "2001:db8::"
+
</command>
+
<features>
+
proxy
+
</features>
+
</client>
+

+
#
+
# Verify data after the test has been "shot"
+
<verify>
+
# Strip off the (random) local port number. This test used to use a fixed
+
# local port number that frequently causes the test to fail
+
<strippart>
+
s/PROXY TCP6 ::1 2001:db8:: (\d+) (\d+)/PROXY TCP6 ::1 2001:db8:: $2/
+
</strippart>
+
<protocol>
+
PROXY TCP6 ::1 2001:db8:: %HTTP6PORT
+
GET /%TESTNUMBER HTTP/1.1
+
Host: %HOST6IP:%HTTP6PORT
+
User-Agent: curl/%VERSION
+
Accept: */*
+

+
</protocol>
+
</verify>
+
</testcase>
modified external/curl/tests/data/test332
@@ -33,12 +33,14 @@ tftp://%HOSTIP:%TFTPPORT//%TESTNUMBER --tftp-blksize 400
#
# Verify pseudo protocol after the test has been "shot"
<verify>
+
<strip>
+
^timeout = [5-6]$
+
</strip>
<protocol>
opcode = 1
mode = octet
tsize = 0
blksize = 400
-
timeout = 6
filename = /%TESTNUMBER
</protocol>
</verify>
added external/curl/tests/data/test427
@@ -0,0 +1,76 @@
+
<testcase>
+
<info>
+
<keywords>
+
HTTP
+
HTTP GET
+
cookies
+
</keywords>
+
</info>
+

+
#
+
# Server-side
+
<reply>
+
<data crlf="yes" nocheck="yes">
+
HTTP/1.1 301 move along
+
Date: Tue, 09 Nov 2010 14:49:00 GMT
+
Accept-Ranges: bytes
+
Content-Length: 6
+
Connection: close
+
Content-Type: text/html
+
Set-Cookie: long1=%repeat[400 x abcdefgh]%; path="/"
+
Set-Cookie: long2=%repeat[400 x abcdefgh]%; path="/"
+
Set-Cookie: long3=%repeat[400 x abcdefgh]%; path="/"
+
Location: %TESTNUMBER0002
+

+
-foo-
+
</data>
+

+
<data2 crlf="yes">
+
HTTP/1.1 200 OK
+
Date: Tue, 09 Nov 2010 14:49:00 GMT
+
Accept-Ranges: bytes
+
Content-Length: 6
+
Connection: close
+
Content-Type: text/html
+

+
-foo-
+
</data2>
+

+
</reply>
+

+
#
+
# Client-side
+
<client>
+
<server>
+
http
+
</server>
+
<name>
+
Keep Cookie: header within 8190 bytes
+
</name>
+

+
<command>
+
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -c %LOGDIR/cookies%TESTNUMBER -L
+
</command>
+
<features>
+
cookies
+
</features>
+
</client>
+

+
#
+
# Verify data after the test has been "shot"
+
<verify>
+
<protocol crlf="yes">
+
GET /%TESTNUMBER HTTP/1.1
+
Host: %HOSTIP:%HTTPPORT
+
User-Agent: curl/%VERSION
+
Accept: */*
+

+
GET /%TESTNUMBER0002 HTTP/1.1
+
Host: %HOSTIP:%HTTPPORT
+
User-Agent: curl/%VERSION
+
Accept: */*
+
Cookie: long3=%repeat[400 x abcdefgh]%; long2=%repeat[400 x abcdefgh]%
+

+
</protocol>
+
</verify>
+
</testcase>
added external/curl/tests/data/test447
@@ -0,0 +1,65 @@
+
<testcase>
+
<info>
+
<keywords>
+
HTTP
+
HTTP PUT
+
growing file
+
</keywords>
+
</info>
+

+
#
+
# Server-side
+
<reply>
+
<data crlf="yes">
+
HTTP/1.1 200 OK
+
Date: Tue, 09 Nov 2010 14:49:00 GMT
+
Server: test-server/fake
+
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
+
ETag: "21025-dc7-39462498"
+
Accept-Ranges: bytes
+
Content-Length: 6
+
Connection: close
+
Content-Type: text/html
+
Funny-head: yesyes
+

+
-foo-
+
</data>
+
</reply>
+

+
#
+
# Client-side
+
<client>
+
<features>
+
debug
+
</features>
+
<server>
+
http
+
</server>
+
<name>
+
HTTP PUT with growing file
+
</name>
+
<setenv>
+
CURL_UPLOAD_SIZE=498
+
</setenv>
+
<command>
+
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -T %LOGDIR/upload%TESTNUMBER
+
</command>
+
<file name="%LOGDIR/upload%TESTNUMBER">
+
%repeat[100 x hello]%
+
</file>
+
</client>
+

+
#
+
# Verify data after the test has been "shot"
+
<verify>
+
<protocol crlf="yes" nonewline="yes">
+
PUT /%TESTNUMBER HTTP/1.1
+
Host: %HOSTIP:%HTTPPORT
+
User-Agent: curl/%VERSION
+
Accept: */*
+
Content-Length: 498
+

+
%repeat[99 x hello]%hel
+
</protocol>
+
</verify>
+
</testcase>
modified external/curl/tests/data/test503
@@ -76,6 +76,7 @@ Host: machine.%TESTNUMBER:%HTTPPORT
Proxy-Authorization: Basic dGVzdDppbmc=
Proxy-Connection: Keep-Alive

+
[DISCONNECT]
</proxy>
<protocol>
GET /%TESTNUMBER HTTP/1.1
added external/curl/tests/data/test799
@@ -0,0 +1,53 @@
+
<testcase>
+
<info>
+
<keywords>
+
IMAP
+
Clear Text
+
SASL AUTH +LOGIN
+
</keywords>
+
</info>
+

+
#
+
# Server-side
+
<reply>
+
<servercmd>
+
AUTH PLAIN
+
REPLY LOGIN A002 OK LOGIN completed
+
</servercmd>
+
<data>
+
From: me@somewhere
+
To: fake@nowhere
+

+
body
+

+
--
+
  yours sincerely
+
</data>
+
</reply>
+

+
#
+
# Client-side
+
<client>
+
<server>
+
imap
+
</server>
+
 <name>
+
IMAP with --login-options 'AUTH=+LOGIN'
+
 </name>
+
 <command>
+
'imap://%HOSTIP:%IMAPPORT/%TESTNUMBER/;MAILINDEX=1' -u user:secret --login-options AUTH=+LOGIN
+
</command>
+
</client>
+

+
#
+
# Verify data after the test has been "shot"
+
<verify>
+
<protocol>
+
A001 CAPABILITY
+
A002 LOGIN user secret
+
A003 SELECT %TESTNUMBER
+
A004 FETCH 1 BODY[]
+
A005 LOGOUT
+
</protocol>
+
</verify>
+
</testcase>
added external/curl/tests/data/test899
@@ -0,0 +1,64 @@
+
<testcase>
+
<info>
+
<keywords>
+
HTTP
+
HTTP GET
+
Basic
+
</keywords>
+
</info>
+

+
#
+
# Server-side
+
<reply>
+
<data crlf="yes" nocheck="yes">
+
HTTP/1.1 302 go go go
+
Content-Length: 8
+
Location: http://user:pass@%HOSTIP:%HTTPPORT/basic-auth/user/%TESTNUMBER0002
+
Content-Type: text/html
+
Funny-head: yesyes
+

+
notreal
+
</data>
+
<data2 crlf="yes">
+
HTTP/1.1 200 OK
+
Content-Length: 6
+
Content-Type: text/html
+
Funny-head: yesyes
+

+
final
+
</data2>
+
</reply>
+

+
#
+
# Client-side
+
<client>
+
<server>
+
http
+
</server>
+
<name>
+
URL with credentials redirects to URL with different credentials
+
</name>
+
<command>
+
http://first:secret@%HOSTIP:%HTTPPORT/%TESTNUMBER -L
+
</command>
+
</client>
+

+
#
+
# Verify data after the test has been "shot"
+
<verify>
+
<protocol crlf="yes">
+
GET /%TESTNUMBER HTTP/1.1
+
Host: %HOSTIP:%HTTPPORT
+
Authorization: Basic Zmlyc3Q6c2VjcmV0
+
User-Agent: curl/%VERSION
+
Accept: */*
+

+
GET /basic-auth/user/%TESTNUMBER0002 HTTP/1.1
+
Host: %HOSTIP:%HTTPPORT
+
Authorization: Basic dXNlcjpwYXNz
+
User-Agent: curl/%VERSION
+
Accept: */*
+

+
</protocol>
+
</verify>
+
</testcase>
modified external/curl/tests/data/test970
@@ -59,7 +59,7 @@ Accept: */*

</protocol>
<stdout nonewline="yes">
-
{"certs":"","content_type":"text/html","errormsg":null,"exitcode":0,"filename_effective":"%LOGDIR/out%TESTNUMBER","ftp_entry_path":null,"http_code":200,"http_connect":0,"http_version":"1.1","local_ip":"127.0.0.1","local_port":13,"method":"GET","num_certs":0,"num_connects":1,"num_headers":9,"num_redirects":0,"proxy_ssl_verify_result":0,"redirect_url":null,"referer":null,"remote_ip":"%HOSTIP","remote_port":%HTTPPORT,"response_code":200,"scheme":"HTTP","size_download":445,"size_header":4019,"size_request":4019,"size_upload":0,"speed_download":13,"speed_upload":13,"ssl_verify_result":0,"time_appconnect":0.000013,"time_connect":0.000013,"time_namelookup":0.000013,"time_pretransfer":0.000013,"time_redirect":0.000013,"time_starttransfer":0.000013,"time_total":0.000013,"url":"http://%HOSTIP:%HTTPPORT/%TESTNUMBER","url.scheme":"http","url.user":null,"url.password":null,"url.options":null,"url.host":"%HOSTIP","url.port":"%HTTPPORT","url.path":"/%TESTNUMBER","url.query":null,"url.fragment":null,"url.zoneid":null,"urle.scheme":"http","urle.user":null,"urle.password":null,"urle.options":null,"urle.host":"%HOSTIP","urle.port":"%HTTPPORT","urle.path":"/%TESTNUMBER","urle.query":null,"urle.fragment":null,"urle.zoneid":null,"url_effective":"http://%HOSTIP:%HTTPPORT/%TESTNUMBER","urlnum":0,"curl_version":"curl-unit-test-fake-version"}
+
{"certs":"","content_type":"text/html","conn_id":0,"errormsg":null,"exitcode":0,"filename_effective":"%LOGDIR/out%TESTNUMBER","ftp_entry_path":null,"http_code":200,"http_connect":0,"http_version":"1.1","local_ip":"127.0.0.1","local_port":13,"method":"GET","num_certs":0,"num_connects":1,"num_headers":9,"num_redirects":0,"proxy_ssl_verify_result":0,"redirect_url":null,"referer":null,"remote_ip":"%HOSTIP","remote_port":%HTTPPORT,"response_code":200,"scheme":"HTTP","size_download":445,"size_header":4019,"size_request":4019,"size_upload":0,"speed_download":13,"speed_upload":13,"ssl_verify_result":0,"time_appconnect":0.000013,"time_connect":0.000013,"time_namelookup":0.000013,"time_pretransfer":0.000013,"time_redirect":0.000013,"time_starttransfer":0.000013,"time_total":0.000013,"url":"http://%HOSTIP:%HTTPPORT/%TESTNUMBER","url.scheme":"http","url.user":null,"url.password":null,"url.options":null,"url.host":"%HOSTIP","url.port":"%HTTPPORT","url.path":"/%TESTNUMBER","url.query":null,"url.fragment":null,"url.zoneid":null,"urle.scheme":"http","urle.user":null,"urle.password":null,"urle.options":null,"urle.host":"%HOSTIP","urle.port":"%HTTPPORT","urle.path":"/%TESTNUMBER","urle.query":null,"urle.fragment":null,"urle.zoneid":null,"url_effective":"http://%HOSTIP:%HTTPPORT/%TESTNUMBER","urlnum":0,"xfer_id":0,"curl_version":"curl-unit-test-fake-version"}
</stdout>
</verify>
</testcase>
modified external/curl/tests/data/test972
@@ -60,7 +60,7 @@ Accept: */*

</protocol>
<stdout mode="text">
-
{"certs":"","content_type":"text/html","errormsg":null,"exitcode":0,"filename_effective":"%LOGDIR/out972","ftp_entry_path":null,"http_code":200,"http_connect":0,"http_version":"1.1","local_ip":"%HOSTIP","local_port":13,"method":"GET","num_certs":0,"num_connects":1,"num_headers":9,"num_redirects":0,"proxy_ssl_verify_result":0,"redirect_url":null,"referer":null,"remote_ip":"%HOSTIP","remote_port":%HTTPPORT,"response_code":200,"scheme":"HTTP","size_download":445,"size_header":4019,"size_request":4019,"size_upload":0,"speed_download":13,"speed_upload":13,"ssl_verify_result":0,"time_appconnect":0.000013,"time_connect":0.000013,"time_namelookup":0.000013,"time_pretransfer":0.000013,"time_redirect":0.000013,"time_starttransfer":0.000013,"time_total":0.000013,"url":"http://%HOSTIP:%HTTPPORT/%TESTNUMBER","url.scheme":"http","url.user":null,"url.password":null,"url.options":null,"url.host":"%HOSTIP","url.port":"%HTTPPORT","url.path":"/%TESTNUMBER","url.query":null,"url.fragment":null,"url.zoneid":null,"urle.scheme":"http","urle.user":null,"urle.password":null,"urle.options":null,"urle.host":"%HOSTIP","urle.port":"%HTTPPORT","urle.path":"/%TESTNUMBER","urle.query":null,"urle.fragment":null,"urle.zoneid":null,"url_effective":"http://%HOSTIP:%HTTPPORT/%TESTNUMBER","urlnum":0,"curl_version":"curl-unit-test-fake-version"}
+
{"certs":"","content_type":"text/html","conn_id":0,"errormsg":null,"exitcode":0,"filename_effective":"%LOGDIR/out972","ftp_entry_path":null,"http_code":200,"http_connect":0,"http_version":"1.1","local_ip":"%HOSTIP","local_port":13,"method":"GET","num_certs":0,"num_connects":1,"num_headers":9,"num_redirects":0,"proxy_ssl_verify_result":0,"redirect_url":null,"referer":null,"remote_ip":"%HOSTIP","remote_port":%HTTPPORT,"response_code":200,"scheme":"HTTP","size_download":445,"size_header":4019,"size_request":4019,"size_upload":0,"speed_download":13,"speed_upload":13,"ssl_verify_result":0,"time_appconnect":0.000013,"time_connect":0.000013,"time_namelookup":0.000013,"time_pretransfer":0.000013,"time_redirect":0.000013,"time_starttransfer":0.000013,"time_total":0.000013,"url":"http://%HOSTIP:%HTTPPORT/%TESTNUMBER","url.scheme":"http","url.user":null,"url.password":null,"url.options":null,"url.host":"%HOSTIP","url.port":"%HTTPPORT","url.path":"/%TESTNUMBER","url.query":null,"url.fragment":null,"url.zoneid":null,"urle.scheme":"http","urle.user":null,"urle.password":null,"urle.options":null,"urle.host":"%HOSTIP","urle.port":"%HTTPPORT","urle.path":"/%TESTNUMBER","urle.query":null,"urle.fragment":null,"urle.zoneid":null,"url_effective":"http://%HOSTIP:%HTTPPORT/%TESTNUMBER","urlnum":0,"xfer_id":0,"curl_version":"curl-unit-test-fake-version"}
</stdout>
</verify>
</testcase>
added external/curl/tests/data/test979
@@ -0,0 +1,64 @@
+
<testcase>
+
<info>
+
<keywords>
+
HTTP
+
HTTP GET
+
Basic
+
</keywords>
+
</info>
+

+
#
+
# Server-side
+
<reply>
+
<data crlf="yes" nocheck="yes">
+
HTTP/1.1 302 go go go
+
Content-Length: 8
+
Location: http://%HOSTIP:%HTTPPORT/user/%TESTNUMBER0002
+
Content-Type: text/html
+
Funny-head: yesyes
+

+
notreal
+
</data>
+
<data2 crlf="yes">
+
HTTP/1.1 200 OK
+
Content-Length: 6
+
Content-Type: text/html
+
Funny-head: yesyes
+

+
final
+
</data2>
+
</reply>
+

+
#
+
# Client-side
+
<client>
+
<server>
+
http
+
</server>
+
<name>
+
-u with redirect to absolute URL using same origin and auth
+
</name>
+
<command>
+
http://first:secret@%HOSTIP:%HTTPPORT/%TESTNUMBER -L -u smith:doggie
+
</command>
+
</client>
+

+
#
+
# Verify data after the test has been "shot"
+
<verify>
+
<protocol crlf="yes">
+
GET /%TESTNUMBER HTTP/1.1
+
Host: %HOSTIP:%HTTPPORT
+
Authorization: Basic c21pdGg6ZG9nZ2ll
+
User-Agent: curl/%VERSION
+
Accept: */*
+

+
GET /user/%TESTNUMBER0002 HTTP/1.1
+
Host: %HOSTIP:%HTTPPORT
+
Authorization: Basic c21pdGg6ZG9nZ2ll
+
User-Agent: curl/%VERSION
+
Accept: */*
+

+
</protocol>
+
</verify>
+
</testcase>
modified external/curl/tests/ftpserver.pl
@@ -78,6 +78,11 @@ use pathhelp qw(
    exe_ext
    );

+
use globalconfig qw(
+
    $SERVERCMD
+
    $LOCKDIR
+
    );
+

#**********************************************************************
# global vars...
#
@@ -89,7 +94,7 @@ my $proto = 'ftp'; # default server protocol
my $srcdir;         # directory where ftpserver.pl is located
my $srvrname;       # server name for presentation purposes
my $cwd_testno;     # test case numbers extracted from CWD command
-
my $testno = 0;     # test case number (read from ftpserver.cmd)
+
my $testno = 0;     # test case number (read from server.cmd)
my $path   = '.';
my $logdir = $path .'/log';
my $piddir;
@@ -114,7 +119,6 @@ my $datasockf_logfile; # log file for secondary connection sockfilt process
#**********************************************************************
# global vars used for server logs advisor read lock handling
#
-
my $SERVERLOGS_LOCK = "serverlogs.lock";
my $serverlogs_lockfile;
my $serverlogslocked = 0;

@@ -2796,10 +2800,10 @@ sub customize {
    %customcount = ();  #
    %delayreply = ();   #

-
    open(my $custom, "<", "$logdir/ftpserver.cmd") ||
+
    open(my $custom, "<", "$logdir/$SERVERCMD") ||
        return 1;

-
    logmsg "FTPD: Getting commands from $logdir/ftpserver.cmd\n";
+
    logmsg "FTPD: Getting commands from $logdir/$SERVERCMD\n";

    while(<$custom>) {
        if($_ =~ /REPLY \"([A-Z]+ [A-Za-z0-9+-\/=\*. ]+)\" (.*)/) {
@@ -3040,7 +3044,6 @@ if(!$logfile) {
$mainsockf_pidfile = mainsockf_pidfilename($piddir, $proto, $ipvnum, $idnum);
$mainsockf_logfile =
    mainsockf_logfilename($logdir, $proto, $ipvnum, $idnum);
-
$serverlogs_lockfile = "$logdir/$SERVERLOGS_LOCK";

if($proto eq 'ftp') {
    $datasockf_pidfile = datasockf_pidfilename($piddir, $proto, $ipvnum, $idnum);
@@ -3049,6 +3052,7 @@ if($proto eq 'ftp') {
}

$srvrname = servername_str($proto, $ipvnum, $idnum);
+
$serverlogs_lockfile = "$logdir/$LOCKDIR/${srvrname}.lock";

$idstr = "$idnum" if($idnum > 1);

modified external/curl/tests/globalconfig.pm
@@ -38,10 +38,10 @@ BEGIN {
        $automakestyle
        $CURL
        $CURLVERSION
-
        $FTPDCMD
        $has_shared
        $LIBDIR
        $listonly
+
        $LOCKDIR
        $LOGDIR
        $memanalyze
        $MEMDUMP
@@ -50,7 +50,9 @@ BEGIN {
        $proxy_address
        $PROXYIN
        $pwd
+
        $randseed
        $run_event_based
+
        $SERVERCMD
        $SERVERIN
        $srcdir
        $TESTDIR
@@ -80,6 +82,7 @@ our $run_event_based; # run curl with --test-event to test the event API
our $automakestyle;   # use automake-like test status output format
our $anyway;          # continue anyway, even if a test fail
our $CURLVERSION="";  # curl's reported version number
+
our $randseed = 0;    # random number seed

# paths
our $pwd = getcwd();  # current working directory
@@ -98,11 +101,12 @@ our $memanalyze="$perl $srcdir/memanalyze.pl";
our $valgrind;     # path to valgrind, or empty if disabled

# paths in $LOGDIR
+
our $LOCKDIR = "lock";          # root of the server directory with lock files
our $PIDDIR = "server";         # root of the server directory with PID files
our $SERVERIN="server.input";   # what curl sent the server
our $PROXYIN="proxy.input";     # what curl sent the proxy
our $MEMDUMP="memdump";         # file that the memory debugging creates
-
our $FTPDCMD="ftpserver.cmd";   # copy server instructions here
+
our $SERVERCMD="server.cmd";    # copy server instructions here

# other config variables
our @protocols;   # array of lowercase supported protocol servers
modified external/curl/tests/http/Makefile.in
@@ -376,7 +376,7 @@ USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
-
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
+
USE_NGTCP2_CRYPTO_QUICTLS = @USE_NGTCP2_CRYPTO_QUICTLS@
USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
modified external/curl/tests/http/clients/Makefile.in
@@ -422,7 +422,7 @@ USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
-
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
+
USE_NGTCP2_CRYPTO_QUICTLS = @USE_NGTCP2_CRYPTO_QUICTLS@
USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
modified external/curl/tests/http/clients/ws-data.c
@@ -101,7 +101,7 @@ static CURLcode send_binary(CURL *curl, char *buf, size_t buflen)

static CURLcode recv_binary(CURL *curl, char *exp_data, size_t exp_len)
{
-
  struct curl_ws_frame *frame;
+
  const struct curl_ws_frame *frame;
  char recvbuf[256];
  size_t r_offset, nread;
  CURLcode result;
modified external/curl/tests/http/clients/ws-pingpong.c
@@ -55,7 +55,7 @@ static CURLcode ping(CURL *curl, const char *send_payload)
static CURLcode recv_pong(CURL *curl, const char *exected_payload)
{
  size_t rlen;
-
  struct curl_ws_frame *meta;
+
  const struct curl_ws_frame *meta;
  char buffer[256];
  CURLcode result = curl_ws_recv(curl, buffer, sizeof(buffer), &rlen, &meta);
  if(result) {
modified external/curl/tests/libtest/CMakeLists.txt
@@ -24,6 +24,12 @@
set(TARGET_LABEL_PREFIX "Test ")

function(setup_test TEST_NAME)          # ARGN are the files in the test
+

+
  if(NOT BUILD_SHARED_LIBS)
+
    # These are part of the libcurl static lib. Do not compile/link them again.
+
    list(REMOVE_ITEM ARGN ${WARNLESS} ${MULTIBYTE} ${TIMEDIFF})
+
  endif()
+

  add_executable(${TEST_NAME} EXCLUDE_FROM_ALL ${ARGN})
  add_dependencies(testdeps ${TEST_NAME})
  string(TOUPPER ${TEST_NAME} UPPER_TEST_NAME)
modified external/curl/tests/libtest/Makefile.in
@@ -160,9 +160,10 @@ noinst_PROGRAMS = chkhostname$(EXEEXT) libauthretry$(EXEEXT) \
	lib1971$(EXEEXT) lib1972$(EXEEXT) lib1973$(EXEEXT) \
	lib1974$(EXEEXT) lib1975$(EXEEXT) lib2301$(EXEEXT) \
	lib2302$(EXEEXT) lib2304$(EXEEXT) lib2305$(EXEEXT) \
-
	lib2306$(EXEEXT) lib2402$(EXEEXT) lib2502$(EXEEXT) \
-
	lib3010$(EXEEXT) lib3025$(EXEEXT) lib3026$(EXEEXT) \
-
	lib3027$(EXEEXT) lib3100$(EXEEXT) lib3101$(EXEEXT)
+
	lib2306$(EXEEXT) lib2402$(EXEEXT) lib2404$(EXEEXT) \
+
	lib2502$(EXEEXT) lib3010$(EXEEXT) lib3025$(EXEEXT) \
+
	lib3026$(EXEEXT) lib3027$(EXEEXT) lib3100$(EXEEXT) \
+
	lib3101$(EXEEXT)
@USE_CPPFLAG_CURL_STATICLIB_TRUE@am__append_1 = -DCURL_STATICLIB
@CURL_LT_SHLIB_USE_NO_UNDEFINED_TRUE@am__append_2 = -no-undefined
@CURL_LT_SHLIB_USE_NO_UNDEFINED_TRUE@am__append_3 = -no-undefined
@@ -234,975 +235,980 @@ am__dirstamp = $(am__leading_dot)dirstamp
am_chkhostname_OBJECTS = chkhostname.$(OBJEXT) \
	../../lib/curl_gethostname.$(OBJEXT)
chkhostname_OBJECTS = $(am_chkhostname_OBJECTS)
-
am__objects_1 = ../../lib/timediff.$(OBJEXT) first.$(OBJEXT)
-
am__objects_2 = testutil.$(OBJEXT)
-
am__objects_3 = ../../lib/warnless.$(OBJEXT)
-
am_lib1156_OBJECTS = lib1156.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am__objects_1 = ../../lib/timediff.$(OBJEXT)
+
am__objects_2 = $(am__objects_1) first.$(OBJEXT)
+
am__objects_3 = testutil.$(OBJEXT)
+
am__objects_4 = ../../lib/warnless.$(OBJEXT)
+
am_lib1156_OBJECTS = lib1156.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1156_OBJECTS = $(am_lib1156_OBJECTS)
@USE_EXPLICIT_LIB_DEPS_FALSE@am__DEPENDENCIES_1 =  \
@USE_EXPLICIT_LIB_DEPS_FALSE@	$(top_builddir)/lib/libcurl.la
@USE_EXPLICIT_LIB_DEPS_TRUE@am__DEPENDENCIES_1 =  \
@USE_EXPLICIT_LIB_DEPS_TRUE@	$(top_builddir)/lib/libcurl.la
lib1156_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1301_OBJECTS = lib1301.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2)
+
am_lib1301_OBJECTS = lib1301.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3)
lib1301_OBJECTS = $(am_lib1301_OBJECTS)
lib1301_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1500_OBJECTS = lib1500.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2)
+
am_lib1500_OBJECTS = lib1500.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3)
lib1500_OBJECTS = $(am_lib1500_OBJECTS)
lib1500_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1501_OBJECTS = lib1501.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1501_OBJECTS = lib1501.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1501_OBJECTS = $(am_lib1501_OBJECTS)
lib1501_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am__objects_4 = ../../lib/lib1502-timediff.$(OBJEXT) \
-
	lib1502-first.$(OBJEXT)
-
am__objects_5 = lib1502-testutil.$(OBJEXT)
-
am__objects_6 = ../../lib/lib1502-warnless.$(OBJEXT)
-
am_lib1502_OBJECTS = lib1502-lib1502.$(OBJEXT) $(am__objects_4) \
-
	$(am__objects_5) $(am__objects_6)
+
am__objects_5 = ../../lib/lib1502-timediff.$(OBJEXT)
+
am__objects_6 = $(am__objects_5) lib1502-first.$(OBJEXT)
+
am__objects_7 = lib1502-testutil.$(OBJEXT)
+
am__objects_8 = ../../lib/lib1502-warnless.$(OBJEXT)
+
am_lib1502_OBJECTS = lib1502-lib1502.$(OBJEXT) $(am__objects_6) \
+
	$(am__objects_7) $(am__objects_8)
lib1502_OBJECTS = $(am_lib1502_OBJECTS)
lib1502_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am__objects_7 = ../../lib/lib1503-timediff.$(OBJEXT) \
-
	lib1503-first.$(OBJEXT)
-
am__objects_8 = lib1503-testutil.$(OBJEXT)
-
am__objects_9 = ../../lib/lib1503-warnless.$(OBJEXT)
-
am_lib1503_OBJECTS = lib1503-lib1502.$(OBJEXT) $(am__objects_7) \
-
	$(am__objects_8) $(am__objects_9)
+
am__objects_9 = ../../lib/lib1503-timediff.$(OBJEXT)
+
am__objects_10 = $(am__objects_9) lib1503-first.$(OBJEXT)
+
am__objects_11 = lib1503-testutil.$(OBJEXT)
+
am__objects_12 = ../../lib/lib1503-warnless.$(OBJEXT)
+
am_lib1503_OBJECTS = lib1503-lib1502.$(OBJEXT) $(am__objects_10) \
+
	$(am__objects_11) $(am__objects_12)
lib1503_OBJECTS = $(am_lib1503_OBJECTS)
lib1503_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am__objects_10 = ../../lib/lib1504-timediff.$(OBJEXT) \
-
	lib1504-first.$(OBJEXT)
-
am__objects_11 = lib1504-testutil.$(OBJEXT)
-
am__objects_12 = ../../lib/lib1504-warnless.$(OBJEXT)
-
am_lib1504_OBJECTS = lib1504-lib1502.$(OBJEXT) $(am__objects_10) \
-
	$(am__objects_11) $(am__objects_12)
+
am__objects_13 = ../../lib/lib1504-timediff.$(OBJEXT)
+
am__objects_14 = $(am__objects_13) lib1504-first.$(OBJEXT)
+
am__objects_15 = lib1504-testutil.$(OBJEXT)
+
am__objects_16 = ../../lib/lib1504-warnless.$(OBJEXT)
+
am_lib1504_OBJECTS = lib1504-lib1502.$(OBJEXT) $(am__objects_14) \
+
	$(am__objects_15) $(am__objects_16)
lib1504_OBJECTS = $(am_lib1504_OBJECTS)
lib1504_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am__objects_13 = ../../lib/lib1505-timediff.$(OBJEXT) \
-
	lib1505-first.$(OBJEXT)
-
am__objects_14 = lib1505-testutil.$(OBJEXT)
-
am__objects_15 = ../../lib/lib1505-warnless.$(OBJEXT)
-
am_lib1505_OBJECTS = lib1505-lib1502.$(OBJEXT) $(am__objects_13) \
-
	$(am__objects_14) $(am__objects_15)
+
am__objects_17 = ../../lib/lib1505-timediff.$(OBJEXT)
+
am__objects_18 = $(am__objects_17) lib1505-first.$(OBJEXT)
+
am__objects_19 = lib1505-testutil.$(OBJEXT)
+
am__objects_20 = ../../lib/lib1505-warnless.$(OBJEXT)
+
am_lib1505_OBJECTS = lib1505-lib1502.$(OBJEXT) $(am__objects_18) \
+
	$(am__objects_19) $(am__objects_20)
lib1505_OBJECTS = $(am_lib1505_OBJECTS)
lib1505_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1506_OBJECTS = lib1506.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1506_OBJECTS = lib1506.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1506_OBJECTS = $(am_lib1506_OBJECTS)
lib1506_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1507_OBJECTS = lib1507.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1507_OBJECTS = lib1507.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1507_OBJECTS = $(am_lib1507_OBJECTS)
lib1507_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1508_OBJECTS = lib1508.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1508_OBJECTS = lib1508.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1508_OBJECTS = $(am_lib1508_OBJECTS)
lib1508_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1509_OBJECTS = lib1509.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1509_OBJECTS = lib1509.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1509_OBJECTS = $(am_lib1509_OBJECTS)
lib1509_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1510_OBJECTS = lib1510.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1510_OBJECTS = lib1510.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1510_OBJECTS = $(am_lib1510_OBJECTS)
lib1510_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1511_OBJECTS = lib1511.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1511_OBJECTS = lib1511.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1511_OBJECTS = $(am_lib1511_OBJECTS)
lib1511_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1512_OBJECTS = lib1512.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1512_OBJECTS = lib1512.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1512_OBJECTS = $(am_lib1512_OBJECTS)
lib1512_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1513_OBJECTS = lib1513.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1513_OBJECTS = lib1513.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1513_OBJECTS = $(am_lib1513_OBJECTS)
lib1513_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1514_OBJECTS = lib1514.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1514_OBJECTS = lib1514.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1514_OBJECTS = $(am_lib1514_OBJECTS)
lib1514_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1515_OBJECTS = lib1515.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1515_OBJECTS = lib1515.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1515_OBJECTS = $(am_lib1515_OBJECTS)
lib1515_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1517_OBJECTS = lib1517.$(OBJEXT) $(am__objects_1)
+
am_lib1517_OBJECTS = lib1517.$(OBJEXT) $(am__objects_2)
lib1517_OBJECTS = $(am_lib1517_OBJECTS)
lib1517_LDADD = $(LDADD)
lib1517_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1518_OBJECTS = lib1518.$(OBJEXT) $(am__objects_1)
+
am_lib1518_OBJECTS = lib1518.$(OBJEXT) $(am__objects_2)
lib1518_OBJECTS = $(am_lib1518_OBJECTS)
lib1518_LDADD = $(LDADD)
lib1518_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1520_OBJECTS = lib1520.$(OBJEXT) $(am__objects_1)
+
am_lib1520_OBJECTS = lib1520.$(OBJEXT) $(am__objects_2)
lib1520_OBJECTS = $(am_lib1520_OBJECTS)
lib1520_LDADD = $(LDADD)
lib1520_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am__objects_16 = ../../lib/lib1521-timediff.$(OBJEXT) \
-
	lib1521-first.$(OBJEXT)
-
nodist_lib1521_OBJECTS = lib1521-lib1521.$(OBJEXT) $(am__objects_16)
+
am__objects_21 = ../../lib/lib1521-timediff.$(OBJEXT)
+
am__objects_22 = $(am__objects_21) lib1521-first.$(OBJEXT)
+
nodist_lib1521_OBJECTS = lib1521-lib1521.$(OBJEXT) $(am__objects_22)
lib1521_OBJECTS = $(nodist_lib1521_OBJECTS)
lib1521_LDADD = $(LDADD)
lib1521_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am__objects_17 = testtrace.$(OBJEXT)
-
am_lib1522_OBJECTS = lib1522.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_17)
+
am__objects_23 = testtrace.$(OBJEXT)
+
am_lib1522_OBJECTS = lib1522.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_23)
lib1522_OBJECTS = $(am_lib1522_OBJECTS)
lib1522_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1523_OBJECTS = lib1523.$(OBJEXT) $(am__objects_1)
+
am_lib1523_OBJECTS = lib1523.$(OBJEXT) $(am__objects_2)
lib1523_OBJECTS = $(am_lib1523_OBJECTS)
lib1523_LDADD = $(LDADD)
lib1523_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1525_OBJECTS = lib1525.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1525_OBJECTS = lib1525.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1525_OBJECTS = $(am_lib1525_OBJECTS)
lib1525_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1526_OBJECTS = lib1526.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1526_OBJECTS = lib1526.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1526_OBJECTS = $(am_lib1526_OBJECTS)
lib1526_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1527_OBJECTS = lib1527.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1527_OBJECTS = lib1527.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1527_OBJECTS = $(am_lib1527_OBJECTS)
lib1527_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1528_OBJECTS = lib1528.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1528_OBJECTS = lib1528.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1528_OBJECTS = $(am_lib1528_OBJECTS)
lib1528_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1529_OBJECTS = lib1529.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1529_OBJECTS = lib1529.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1529_OBJECTS = $(am_lib1529_OBJECTS)
lib1529_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1530_OBJECTS = lib1530.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1530_OBJECTS = lib1530.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1530_OBJECTS = $(am_lib1530_OBJECTS)
lib1530_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1531_OBJECTS = lib1531.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1531_OBJECTS = lib1531.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1531_OBJECTS = $(am_lib1531_OBJECTS)
lib1531_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1532_OBJECTS = lib1532.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1532_OBJECTS = lib1532.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1532_OBJECTS = $(am_lib1532_OBJECTS)
lib1532_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1533_OBJECTS = lib1533.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1533_OBJECTS = lib1533.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1533_OBJECTS = $(am_lib1533_OBJECTS)
lib1533_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1534_OBJECTS = lib1534.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1534_OBJECTS = lib1534.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1534_OBJECTS = $(am_lib1534_OBJECTS)
lib1534_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1535_OBJECTS = lib1535.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1535_OBJECTS = lib1535.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1535_OBJECTS = $(am_lib1535_OBJECTS)
lib1535_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1536_OBJECTS = lib1536.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1536_OBJECTS = lib1536.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1536_OBJECTS = $(am_lib1536_OBJECTS)
lib1536_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1537_OBJECTS = lib1537.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1537_OBJECTS = lib1537.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1537_OBJECTS = $(am_lib1537_OBJECTS)
lib1537_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1538_OBJECTS = lib1538.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1538_OBJECTS = lib1538.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1538_OBJECTS = $(am_lib1538_OBJECTS)
lib1538_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am__objects_18 = ../../lib/lib1539-timediff.$(OBJEXT) \
-
	lib1539-first.$(OBJEXT)
-
am__objects_19 = lib1539-testutil.$(OBJEXT)
-
am__objects_20 = ../../lib/lib1539-warnless.$(OBJEXT)
-
am_lib1539_OBJECTS = lib1539-lib1514.$(OBJEXT) $(am__objects_18) \
-
	$(am__objects_19) $(am__objects_20)
+
am__objects_24 = ../../lib/lib1539-timediff.$(OBJEXT)
+
am__objects_25 = $(am__objects_24) lib1539-first.$(OBJEXT)
+
am__objects_26 = lib1539-testutil.$(OBJEXT)
+
am__objects_27 = ../../lib/lib1539-warnless.$(OBJEXT)
+
am_lib1539_OBJECTS = lib1539-lib1514.$(OBJEXT) $(am__objects_25) \
+
	$(am__objects_26) $(am__objects_27)
lib1539_OBJECTS = $(am_lib1539_OBJECTS)
lib1539_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1540_OBJECTS = lib1540.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1540_OBJECTS = lib1540.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1540_OBJECTS = $(am_lib1540_OBJECTS)
lib1540_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1542_OBJECTS = lib1542.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_17) $(am__objects_3)
+
am_lib1542_OBJECTS = lib1542.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_23) $(am__objects_4)
lib1542_OBJECTS = $(am_lib1542_OBJECTS)
lib1542_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am__objects_21 = ../../lib/lib1543-timediff.$(OBJEXT) \
-
	lib1543-first.$(OBJEXT)
-
am_lib1543_OBJECTS = lib1543-lib1518.$(OBJEXT) $(am__objects_21)
+
am__objects_28 = ../../lib/lib1543-timediff.$(OBJEXT)
+
am__objects_29 = $(am__objects_28) lib1543-first.$(OBJEXT)
+
am_lib1543_OBJECTS = lib1543-lib1518.$(OBJEXT) $(am__objects_29)
lib1543_OBJECTS = $(am_lib1543_OBJECTS)
lib1543_LDADD = $(LDADD)
lib1543_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1550_OBJECTS = lib1550.$(OBJEXT) $(am__objects_1)
+
am_lib1550_OBJECTS = lib1550.$(OBJEXT) $(am__objects_2)
lib1550_OBJECTS = $(am_lib1550_OBJECTS)
lib1550_LDADD = $(LDADD)
lib1550_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1551_OBJECTS = lib1551.$(OBJEXT) $(am__objects_1)
+
am_lib1551_OBJECTS = lib1551.$(OBJEXT) $(am__objects_2)
lib1551_OBJECTS = $(am_lib1551_OBJECTS)
lib1551_LDADD = $(LDADD)
lib1551_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1552_OBJECTS = lib1552.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2)
+
am_lib1552_OBJECTS = lib1552.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3)
lib1552_OBJECTS = $(am_lib1552_OBJECTS)
lib1552_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1553_OBJECTS = lib1553.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2)
+
am_lib1553_OBJECTS = lib1553.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3)
lib1553_OBJECTS = $(am_lib1553_OBJECTS)
lib1553_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1554_OBJECTS = lib1554.$(OBJEXT) $(am__objects_1)
+
am_lib1554_OBJECTS = lib1554.$(OBJEXT) $(am__objects_2)
lib1554_OBJECTS = $(am_lib1554_OBJECTS)
lib1554_LDADD = $(LDADD)
lib1554_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1555_OBJECTS = lib1555.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1555_OBJECTS = lib1555.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1555_OBJECTS = $(am_lib1555_OBJECTS)
lib1555_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1556_OBJECTS = lib1556.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1556_OBJECTS = lib1556.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1556_OBJECTS = $(am_lib1556_OBJECTS)
lib1556_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1557_OBJECTS = lib1557.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1557_OBJECTS = lib1557.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1557_OBJECTS = $(am_lib1557_OBJECTS)
lib1557_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1558_OBJECTS = lib1558.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1558_OBJECTS = lib1558.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1558_OBJECTS = $(am_lib1558_OBJECTS)
lib1558_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1559_OBJECTS = lib1559.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1559_OBJECTS = lib1559.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1559_OBJECTS = $(am_lib1559_OBJECTS)
lib1559_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1560_OBJECTS = lib1560.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1560_OBJECTS = lib1560.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1560_OBJECTS = $(am_lib1560_OBJECTS)
lib1560_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1564_OBJECTS = lib1564.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1564_OBJECTS = lib1564.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1564_OBJECTS = $(am_lib1564_OBJECTS)
lib1564_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1565_OBJECTS = lib1565.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1565_OBJECTS = lib1565.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1565_OBJECTS = $(am_lib1565_OBJECTS)
lib1565_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1567_OBJECTS = lib1567.$(OBJEXT) $(am__objects_1)
+
am_lib1567_OBJECTS = lib1567.$(OBJEXT) $(am__objects_2)
lib1567_OBJECTS = $(am_lib1567_OBJECTS)
lib1567_LDADD = $(LDADD)
lib1567_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1568_OBJECTS = lib1568.$(OBJEXT) $(am__objects_1)
+
am_lib1568_OBJECTS = lib1568.$(OBJEXT) $(am__objects_2)
lib1568_OBJECTS = $(am_lib1568_OBJECTS)
lib1568_LDADD = $(LDADD)
lib1568_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1569_OBJECTS = lib1569.$(OBJEXT) $(am__objects_1)
+
am_lib1569_OBJECTS = lib1569.$(OBJEXT) $(am__objects_2)
lib1569_OBJECTS = $(am_lib1569_OBJECTS)
lib1569_LDADD = $(LDADD)
lib1569_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1591_OBJECTS = lib1591.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1591_OBJECTS = lib1591.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1591_OBJECTS = $(am_lib1591_OBJECTS)
lib1591_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1592_OBJECTS = lib1592.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1592_OBJECTS = lib1592.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1592_OBJECTS = $(am_lib1592_OBJECTS)
lib1592_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1593_OBJECTS = lib1593.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1593_OBJECTS = lib1593.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1593_OBJECTS = $(am_lib1593_OBJECTS)
lib1593_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1594_OBJECTS = lib1594.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1594_OBJECTS = lib1594.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1594_OBJECTS = $(am_lib1594_OBJECTS)
lib1594_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am__objects_22 = ../../lib/lib1596-timediff.$(OBJEXT) \
-
	lib1596-first.$(OBJEXT)
-
am__objects_23 = lib1596-testutil.$(OBJEXT)
-
am__objects_24 = ../../lib/lib1596-warnless.$(OBJEXT)
-
am_lib1596_OBJECTS = lib1596-lib1594.$(OBJEXT) $(am__objects_22) \
-
	$(am__objects_23) $(am__objects_24)
+
am__objects_30 = ../../lib/lib1596-timediff.$(OBJEXT)
+
am__objects_31 = $(am__objects_30) lib1596-first.$(OBJEXT)
+
am__objects_32 = lib1596-testutil.$(OBJEXT)
+
am__objects_33 = ../../lib/lib1596-warnless.$(OBJEXT)
+
am_lib1596_OBJECTS = lib1596-lib1594.$(OBJEXT) $(am__objects_31) \
+
	$(am__objects_32) $(am__objects_33)
lib1596_OBJECTS = $(am_lib1596_OBJECTS)
lib1596_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1597_OBJECTS = lib1597.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1597_OBJECTS = lib1597.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1597_OBJECTS = $(am_lib1597_OBJECTS)
lib1597_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1662_OBJECTS = lib1662.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1662_OBJECTS = lib1662.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1662_OBJECTS = $(am_lib1662_OBJECTS)
lib1662_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1903_OBJECTS = lib1903.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1903_OBJECTS = lib1903.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1903_OBJECTS = $(am_lib1903_OBJECTS)
lib1903_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1905_OBJECTS = lib1905.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1905_OBJECTS = lib1905.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1905_OBJECTS = $(am_lib1905_OBJECTS)
lib1905_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1906_OBJECTS = lib1906.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1906_OBJECTS = lib1906.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1906_OBJECTS = $(am_lib1906_OBJECTS)
lib1906_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1907_OBJECTS = lib1907.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1907_OBJECTS = lib1907.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1907_OBJECTS = $(am_lib1907_OBJECTS)
lib1907_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1908_OBJECTS = lib1908.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1908_OBJECTS = lib1908.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1908_OBJECTS = $(am_lib1908_OBJECTS)
lib1908_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1910_OBJECTS = lib1910.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1910_OBJECTS = lib1910.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1910_OBJECTS = $(am_lib1910_OBJECTS)
lib1910_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1911_OBJECTS = lib1911.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1911_OBJECTS = lib1911.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1911_OBJECTS = $(am_lib1911_OBJECTS)
lib1911_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1912_OBJECTS = lib1912.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1912_OBJECTS = lib1912.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1912_OBJECTS = $(am_lib1912_OBJECTS)
lib1912_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1913_OBJECTS = lib1913.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1913_OBJECTS = lib1913.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1913_OBJECTS = $(am_lib1913_OBJECTS)
lib1913_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1915_OBJECTS = lib1915.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1915_OBJECTS = lib1915.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1915_OBJECTS = $(am_lib1915_OBJECTS)
lib1915_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1916_OBJECTS = lib1916.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_3)
+
am_lib1916_OBJECTS = lib1916.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_4)
lib1916_OBJECTS = $(am_lib1916_OBJECTS)
lib1916_LDADD = $(LDADD)
lib1916_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am__objects_25 = ../../lib/lib1917-timediff.$(OBJEXT) \
-
	lib1917-first.$(OBJEXT)
-
am__objects_26 = ../../lib/lib1917-warnless.$(OBJEXT)
-
am_lib1917_OBJECTS = lib1917-lib1916.$(OBJEXT) $(am__objects_25) \
-
	$(am__objects_26)
+
am__objects_34 = ../../lib/lib1917-timediff.$(OBJEXT)
+
am__objects_35 = $(am__objects_34) lib1917-first.$(OBJEXT)
+
am__objects_36 = ../../lib/lib1917-warnless.$(OBJEXT)
+
am_lib1917_OBJECTS = lib1917-lib1916.$(OBJEXT) $(am__objects_35) \
+
	$(am__objects_36)
lib1917_OBJECTS = $(am_lib1917_OBJECTS)
lib1917_LDADD = $(LDADD)
lib1917_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1918_OBJECTS = lib1918.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_3)
+
am_lib1918_OBJECTS = lib1918.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_4)
lib1918_OBJECTS = $(am_lib1918_OBJECTS)
lib1918_LDADD = $(LDADD)
lib1918_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1919_OBJECTS = lib1919.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_3)
+
am_lib1919_OBJECTS = lib1919.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_4)
lib1919_OBJECTS = $(am_lib1919_OBJECTS)
lib1919_LDADD = $(LDADD)
lib1919_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1933_OBJECTS = lib1933.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1933_OBJECTS = lib1933.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1933_OBJECTS = $(am_lib1933_OBJECTS)
lib1933_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1934_OBJECTS = lib1934.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1934_OBJECTS = lib1934.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1934_OBJECTS = $(am_lib1934_OBJECTS)
lib1934_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1935_OBJECTS = lib1935.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1935_OBJECTS = lib1935.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1935_OBJECTS = $(am_lib1935_OBJECTS)
lib1935_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1936_OBJECTS = lib1936.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1936_OBJECTS = lib1936.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1936_OBJECTS = $(am_lib1936_OBJECTS)
lib1936_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1937_OBJECTS = lib1937.$(OBJEXT) $(am__objects_1)
+
am_lib1937_OBJECTS = lib1937.$(OBJEXT) $(am__objects_2)
lib1937_OBJECTS = $(am_lib1937_OBJECTS)
lib1937_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1938_OBJECTS = lib1938.$(OBJEXT) $(am__objects_1)
+
am_lib1938_OBJECTS = lib1938.$(OBJEXT) $(am__objects_2)
lib1938_OBJECTS = $(am_lib1938_OBJECTS)
lib1938_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1939_OBJECTS = lib1939.$(OBJEXT) $(am__objects_1)
+
am_lib1939_OBJECTS = lib1939.$(OBJEXT) $(am__objects_2)
lib1939_OBJECTS = $(am_lib1939_OBJECTS)
lib1939_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1940_OBJECTS = lib1940.$(OBJEXT) $(am__objects_1)
+
am_lib1940_OBJECTS = lib1940.$(OBJEXT) $(am__objects_2)
lib1940_OBJECTS = $(am_lib1940_OBJECTS)
lib1940_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1945_OBJECTS = lib1945.$(OBJEXT) $(am__objects_1)
+
am_lib1945_OBJECTS = lib1945.$(OBJEXT) $(am__objects_2)
lib1945_OBJECTS = $(am_lib1945_OBJECTS)
lib1945_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am__objects_27 = ../../lib/lib1946-timediff.$(OBJEXT) \
-
	lib1946-first.$(OBJEXT)
-
am_lib1946_OBJECTS = lib1946-lib1940.$(OBJEXT) $(am__objects_27)
+
am__objects_37 = ../../lib/lib1946-timediff.$(OBJEXT)
+
am__objects_38 = $(am__objects_37) lib1946-first.$(OBJEXT)
+
am_lib1946_OBJECTS = lib1946-lib1940.$(OBJEXT) $(am__objects_38)
lib1946_OBJECTS = $(am_lib1946_OBJECTS)
lib1946_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1947_OBJECTS = lib1947.$(OBJEXT) $(am__objects_1)
+
am_lib1947_OBJECTS = lib1947.$(OBJEXT) $(am__objects_2)
lib1947_OBJECTS = $(am_lib1947_OBJECTS)
lib1947_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1948_OBJECTS = lib1948.$(OBJEXT) $(am__objects_1)
+
am_lib1948_OBJECTS = lib1948.$(OBJEXT) $(am__objects_2)
lib1948_OBJECTS = $(am_lib1948_OBJECTS)
lib1948_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1955_OBJECTS = lib1955.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1955_OBJECTS = lib1955.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1955_OBJECTS = $(am_lib1955_OBJECTS)
lib1955_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1956_OBJECTS = lib1956.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1956_OBJECTS = lib1956.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1956_OBJECTS = $(am_lib1956_OBJECTS)
lib1956_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1957_OBJECTS = lib1957.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1957_OBJECTS = lib1957.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1957_OBJECTS = $(am_lib1957_OBJECTS)
lib1957_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1958_OBJECTS = lib1958.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1958_OBJECTS = lib1958.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1958_OBJECTS = $(am_lib1958_OBJECTS)
lib1958_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1959_OBJECTS = lib1959.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1959_OBJECTS = lib1959.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1959_OBJECTS = $(am_lib1959_OBJECTS)
lib1959_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1960_OBJECTS = lib1960.$(OBJEXT) $(am__objects_1)
+
am_lib1960_OBJECTS = lib1960.$(OBJEXT) $(am__objects_2)
lib1960_OBJECTS = $(am_lib1960_OBJECTS)
lib1960_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1970_OBJECTS = lib1970.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1970_OBJECTS = lib1970.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1970_OBJECTS = $(am_lib1970_OBJECTS)
lib1970_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1971_OBJECTS = lib1971.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1971_OBJECTS = lib1971.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1971_OBJECTS = $(am_lib1971_OBJECTS)
lib1971_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1972_OBJECTS = lib1972.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1972_OBJECTS = lib1972.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1972_OBJECTS = $(am_lib1972_OBJECTS)
lib1972_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1973_OBJECTS = lib1973.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1973_OBJECTS = lib1973.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1973_OBJECTS = $(am_lib1973_OBJECTS)
lib1973_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1974_OBJECTS = lib1974.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1974_OBJECTS = lib1974.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1974_OBJECTS = $(am_lib1974_OBJECTS)
lib1974_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib1975_OBJECTS = lib1975.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib1975_OBJECTS = lib1975.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib1975_OBJECTS = $(am_lib1975_OBJECTS)
lib1975_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib2301_OBJECTS = lib2301.$(OBJEXT) $(am__objects_1)
+
am_lib2301_OBJECTS = lib2301.$(OBJEXT) $(am__objects_2)
lib2301_OBJECTS = $(am_lib2301_OBJECTS)
lib2301_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib2302_OBJECTS = lib2302.$(OBJEXT) $(am__objects_1)
+
am_lib2302_OBJECTS = lib2302.$(OBJEXT) $(am__objects_2)
lib2302_OBJECTS = $(am_lib2302_OBJECTS)
lib2302_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib2304_OBJECTS = lib2304.$(OBJEXT) $(am__objects_1)
+
am_lib2304_OBJECTS = lib2304.$(OBJEXT) $(am__objects_2)
lib2304_OBJECTS = $(am_lib2304_OBJECTS)
lib2304_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am__objects_28 = ../../lib/curl_multibyte.$(OBJEXT)
-
am_lib2305_OBJECTS = lib2305.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_17) $(am__objects_28)
+
am__objects_39 = ../../lib/curl_multibyte.$(OBJEXT)
+
am_lib2305_OBJECTS = lib2305.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_23) $(am__objects_39)
lib2305_OBJECTS = $(am_lib2305_OBJECTS)
lib2305_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib2306_OBJECTS = lib2306.$(OBJEXT) $(am__objects_1)
+
am_lib2306_OBJECTS = lib2306.$(OBJEXT) $(am__objects_2)
lib2306_OBJECTS = $(am_lib2306_OBJECTS)
lib2306_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib2402_OBJECTS = lib2402.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib2402_OBJECTS = lib2402.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib2402_OBJECTS = $(am_lib2402_OBJECTS)
lib2402_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib2502_OBJECTS = lib2502.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib2404_OBJECTS = lib2404.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
+
lib2404_OBJECTS = $(am_lib2404_OBJECTS)
+
lib2404_DEPENDENCIES = $(am__DEPENDENCIES_1)
+
am_lib2502_OBJECTS = lib2502.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib2502_OBJECTS = $(am_lib2502_OBJECTS)
lib2502_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib3010_OBJECTS = lib3010.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib3010_OBJECTS = lib3010.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib3010_OBJECTS = $(am_lib3010_OBJECTS)
lib3010_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib3025_OBJECTS = lib3025.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib3025_OBJECTS = lib3025.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib3025_OBJECTS = $(am_lib3025_OBJECTS)
lib3025_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib3026_OBJECTS = lib3026.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib3026_OBJECTS = lib3026.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib3026_OBJECTS = $(am_lib3026_OBJECTS)
lib3026_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib3027_OBJECTS = lib3027.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib3027_OBJECTS = lib3027.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib3027_OBJECTS = $(am_lib3027_OBJECTS)
lib3027_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib3100_OBJECTS = lib3100.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib3100_OBJECTS = lib3100.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib3100_OBJECTS = $(am_lib3100_OBJECTS)
lib3100_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib3101_OBJECTS = lib3101.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_lib3101_OBJECTS = lib3101.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
lib3101_OBJECTS = $(am_lib3101_OBJECTS)
lib3101_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib500_OBJECTS = lib500.$(OBJEXT) $(am__objects_1) $(am__objects_2) \
-
	$(am__objects_17) $(am__objects_28)
+
am_lib500_OBJECTS = lib500.$(OBJEXT) $(am__objects_2) $(am__objects_3) \
+
	$(am__objects_23) $(am__objects_39)
lib500_OBJECTS = $(am_lib500_OBJECTS)
lib500_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib501_OBJECTS = lib501.$(OBJEXT) $(am__objects_1)
+
am_lib501_OBJECTS = lib501.$(OBJEXT) $(am__objects_2)
lib501_OBJECTS = $(am_lib501_OBJECTS)
lib501_LDADD = $(LDADD)
lib501_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib502_OBJECTS = lib502.$(OBJEXT) $(am__objects_1) $(am__objects_2) \
-
	$(am__objects_3)
+
am_lib502_OBJECTS = lib502.$(OBJEXT) $(am__objects_2) $(am__objects_3) \
+
	$(am__objects_4)
lib502_OBJECTS = $(am_lib502_OBJECTS)
lib502_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib503_OBJECTS = lib503.$(OBJEXT) $(am__objects_1) $(am__objects_2) \
-
	$(am__objects_3)
+
am_lib503_OBJECTS = lib503.$(OBJEXT) $(am__objects_2) $(am__objects_3) \
+
	$(am__objects_4)
lib503_OBJECTS = $(am_lib503_OBJECTS)
lib503_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib504_OBJECTS = lib504.$(OBJEXT) $(am__objects_1) $(am__objects_2) \
-
	$(am__objects_3)
+
am_lib504_OBJECTS = lib504.$(OBJEXT) $(am__objects_2) $(am__objects_3) \
+
	$(am__objects_4)
lib504_OBJECTS = $(am_lib504_OBJECTS)
lib504_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib505_OBJECTS = lib505.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_28)
+
am_lib505_OBJECTS = lib505.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_39)
lib505_OBJECTS = $(am_lib505_OBJECTS)
lib505_LDADD = $(LDADD)
lib505_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib506_OBJECTS = lib506.$(OBJEXT) $(am__objects_1)
+
am_lib506_OBJECTS = lib506.$(OBJEXT) $(am__objects_2)
lib506_OBJECTS = $(am_lib506_OBJECTS)
lib506_LDADD = $(LDADD)
lib506_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib507_OBJECTS = lib507.$(OBJEXT) $(am__objects_1) $(am__objects_2) \
-
	$(am__objects_3)
+
am_lib507_OBJECTS = lib507.$(OBJEXT) $(am__objects_2) $(am__objects_3) \
+
	$(am__objects_4)
lib507_OBJECTS = $(am_lib507_OBJECTS)
lib507_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib508_OBJECTS = lib508.$(OBJEXT) $(am__objects_1)
+
am_lib508_OBJECTS = lib508.$(OBJEXT) $(am__objects_2)
lib508_OBJECTS = $(am_lib508_OBJECTS)
lib508_LDADD = $(LDADD)
lib508_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib509_OBJECTS = lib509.$(OBJEXT) $(am__objects_1)
+
am_lib509_OBJECTS = lib509.$(OBJEXT) $(am__objects_2)
lib509_OBJECTS = $(am_lib509_OBJECTS)
lib509_LDADD = $(LDADD)
lib509_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib510_OBJECTS = lib510.$(OBJEXT) $(am__objects_1)
+
am_lib510_OBJECTS = lib510.$(OBJEXT) $(am__objects_2)
lib510_OBJECTS = $(am_lib510_OBJECTS)
lib510_LDADD = $(LDADD)
lib510_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib511_OBJECTS = lib511.$(OBJEXT) $(am__objects_1)
+
am_lib511_OBJECTS = lib511.$(OBJEXT) $(am__objects_2)
lib511_OBJECTS = $(am_lib511_OBJECTS)
lib511_LDADD = $(LDADD)
lib511_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib512_OBJECTS = lib512.$(OBJEXT) $(am__objects_1)
+
am_lib512_OBJECTS = lib512.$(OBJEXT) $(am__objects_2)
lib512_OBJECTS = $(am_lib512_OBJECTS)
lib512_LDADD = $(LDADD)
lib512_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib513_OBJECTS = lib513.$(OBJEXT) $(am__objects_1)
+
am_lib513_OBJECTS = lib513.$(OBJEXT) $(am__objects_2)
lib513_OBJECTS = $(am_lib513_OBJECTS)
lib513_LDADD = $(LDADD)
lib513_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib514_OBJECTS = lib514.$(OBJEXT) $(am__objects_1)
+
am_lib514_OBJECTS = lib514.$(OBJEXT) $(am__objects_2)
lib514_OBJECTS = $(am_lib514_OBJECTS)
lib514_LDADD = $(LDADD)
lib514_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib515_OBJECTS = lib515.$(OBJEXT) $(am__objects_1)
+
am_lib515_OBJECTS = lib515.$(OBJEXT) $(am__objects_2)
lib515_OBJECTS = $(am_lib515_OBJECTS)
lib515_LDADD = $(LDADD)
lib515_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib516_OBJECTS = lib516.$(OBJEXT) $(am__objects_1)
+
am_lib516_OBJECTS = lib516.$(OBJEXT) $(am__objects_2)
lib516_OBJECTS = $(am_lib516_OBJECTS)
lib516_LDADD = $(LDADD)
lib516_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib517_OBJECTS = lib517.$(OBJEXT) $(am__objects_1)
+
am_lib517_OBJECTS = lib517.$(OBJEXT) $(am__objects_2)
lib517_OBJECTS = $(am_lib517_OBJECTS)
lib517_LDADD = $(LDADD)
lib517_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib518_OBJECTS = lib518.$(OBJEXT) $(am__objects_1) $(am__objects_3) \
-
	$(am__objects_28)
+
am_lib518_OBJECTS = lib518.$(OBJEXT) $(am__objects_2) $(am__objects_4) \
+
	$(am__objects_39)
lib518_OBJECTS = $(am_lib518_OBJECTS)
lib518_LDADD = $(LDADD)
lib518_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib519_OBJECTS = lib519.$(OBJEXT) $(am__objects_1)
+
am_lib519_OBJECTS = lib519.$(OBJEXT) $(am__objects_2)
lib519_OBJECTS = $(am_lib519_OBJECTS)
lib519_LDADD = $(LDADD)
lib519_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib520_OBJECTS = lib520.$(OBJEXT) $(am__objects_1)
+
am_lib520_OBJECTS = lib520.$(OBJEXT) $(am__objects_2)
lib520_OBJECTS = $(am_lib520_OBJECTS)
lib520_LDADD = $(LDADD)
lib520_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib521_OBJECTS = lib521.$(OBJEXT) $(am__objects_1)
+
am_lib521_OBJECTS = lib521.$(OBJEXT) $(am__objects_2)
lib521_OBJECTS = $(am_lib521_OBJECTS)
lib521_LDADD = $(LDADD)
lib521_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib523_OBJECTS = lib523.$(OBJEXT) $(am__objects_1)
+
am_lib523_OBJECTS = lib523.$(OBJEXT) $(am__objects_2)
lib523_OBJECTS = $(am_lib523_OBJECTS)
lib523_LDADD = $(LDADD)
lib523_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib524_OBJECTS = lib524.$(OBJEXT) $(am__objects_1)
+
am_lib524_OBJECTS = lib524.$(OBJEXT) $(am__objects_2)
lib524_OBJECTS = $(am_lib524_OBJECTS)
lib524_LDADD = $(LDADD)
lib524_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib525_OBJECTS = lib525.$(OBJEXT) $(am__objects_1) $(am__objects_2) \
-
	$(am__objects_3) $(am__objects_28)
+
am_lib525_OBJECTS = lib525.$(OBJEXT) $(am__objects_2) $(am__objects_3) \
+
	$(am__objects_4) $(am__objects_39)
lib525_OBJECTS = $(am_lib525_OBJECTS)
lib525_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am__objects_29 = ../../lib/lib526-timediff.$(OBJEXT) \
-
	lib526-first.$(OBJEXT)
-
am__objects_30 = lib526-testutil.$(OBJEXT)
-
am__objects_31 = ../../lib/lib526-warnless.$(OBJEXT)
-
am_lib526_OBJECTS = lib526-lib526.$(OBJEXT) $(am__objects_29) \
-
	$(am__objects_30) $(am__objects_31)
+
am__objects_40 = ../../lib/lib526-timediff.$(OBJEXT)
+
am__objects_41 = $(am__objects_40) lib526-first.$(OBJEXT)
+
am__objects_42 = lib526-testutil.$(OBJEXT)
+
am__objects_43 = ../../lib/lib526-warnless.$(OBJEXT)
+
am_lib526_OBJECTS = lib526-lib526.$(OBJEXT) $(am__objects_41) \
+
	$(am__objects_42) $(am__objects_43)
lib526_OBJECTS = $(am_lib526_OBJECTS)
lib526_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am__objects_32 = ../../lib/lib527-timediff.$(OBJEXT) \
-
	lib527-first.$(OBJEXT)
-
am__objects_33 = lib527-testutil.$(OBJEXT)
-
am__objects_34 = ../../lib/lib527-warnless.$(OBJEXT)
-
am_lib527_OBJECTS = lib527-lib526.$(OBJEXT) $(am__objects_32) \
-
	$(am__objects_33) $(am__objects_34)
+
am__objects_44 = ../../lib/lib527-timediff.$(OBJEXT)
+
am__objects_45 = $(am__objects_44) lib527-first.$(OBJEXT)
+
am__objects_46 = lib527-testutil.$(OBJEXT)
+
am__objects_47 = ../../lib/lib527-warnless.$(OBJEXT)
+
am_lib527_OBJECTS = lib527-lib526.$(OBJEXT) $(am__objects_45) \
+
	$(am__objects_46) $(am__objects_47)
lib527_OBJECTS = $(am_lib527_OBJECTS)
lib527_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am__objects_35 = ../../lib/lib529-timediff.$(OBJEXT) \
-
	lib529-first.$(OBJEXT)
-
am__objects_36 = lib529-testutil.$(OBJEXT)
-
am__objects_37 = ../../lib/lib529-warnless.$(OBJEXT)
-
am__objects_38 = ../../lib/lib529-curl_multibyte.$(OBJEXT)
-
am_lib529_OBJECTS = lib529-lib525.$(OBJEXT) $(am__objects_35) \
-
	$(am__objects_36) $(am__objects_37) $(am__objects_38)
+
am__objects_48 = ../../lib/lib529-timediff.$(OBJEXT)
+
am__objects_49 = $(am__objects_48) lib529-first.$(OBJEXT)
+
am__objects_50 = lib529-testutil.$(OBJEXT)
+
am__objects_51 = ../../lib/lib529-warnless.$(OBJEXT)
+
am__objects_52 = ../../lib/lib529-curl_multibyte.$(OBJEXT)
+
am_lib529_OBJECTS = lib529-lib525.$(OBJEXT) $(am__objects_49) \
+
	$(am__objects_50) $(am__objects_51) $(am__objects_52)
lib529_OBJECTS = $(am_lib529_OBJECTS)
lib529_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib530_OBJECTS = lib530.$(OBJEXT) $(am__objects_1) $(am__objects_2) \
-
	$(am__objects_3)
+
am_lib530_OBJECTS = lib530.$(OBJEXT) $(am__objects_2) $(am__objects_3) \
+
	$(am__objects_4)
lib530_OBJECTS = $(am_lib530_OBJECTS)
lib530_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am__objects_39 = ../../lib/lib532-timediff.$(OBJEXT) \
-
	lib532-first.$(OBJEXT)
-
am__objects_40 = lib532-testutil.$(OBJEXT)
-
am__objects_41 = ../../lib/lib532-warnless.$(OBJEXT)
-
am_lib532_OBJECTS = lib532-lib526.$(OBJEXT) $(am__objects_39) \
-
	$(am__objects_40) $(am__objects_41)
+
am__objects_53 = ../../lib/lib532-timediff.$(OBJEXT)
+
am__objects_54 = $(am__objects_53) lib532-first.$(OBJEXT)
+
am__objects_55 = lib532-testutil.$(OBJEXT)
+
am__objects_56 = ../../lib/lib532-warnless.$(OBJEXT)
+
am_lib532_OBJECTS = lib532-lib526.$(OBJEXT) $(am__objects_54) \
+
	$(am__objects_55) $(am__objects_56)
lib532_OBJECTS = $(am_lib532_OBJECTS)
lib532_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib533_OBJECTS = lib533.$(OBJEXT) $(am__objects_1) $(am__objects_2) \
-
	$(am__objects_3)
+
am_lib533_OBJECTS = lib533.$(OBJEXT) $(am__objects_2) $(am__objects_3) \
+
	$(am__objects_4)
lib533_OBJECTS = $(am_lib533_OBJECTS)
lib533_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib537_OBJECTS = lib537.$(OBJEXT) $(am__objects_1) $(am__objects_3) \
-
	$(am__objects_28)
+
am_lib537_OBJECTS = lib537.$(OBJEXT) $(am__objects_2) $(am__objects_4) \
+
	$(am__objects_39)
lib537_OBJECTS = $(am_lib537_OBJECTS)
lib537_LDADD = $(LDADD)
lib537_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib539_OBJECTS = lib539.$(OBJEXT) $(am__objects_1)
+
am_lib539_OBJECTS = lib539.$(OBJEXT) $(am__objects_2)
lib539_OBJECTS = $(am_lib539_OBJECTS)
lib539_LDADD = $(LDADD)
lib539_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib540_OBJECTS = lib540.$(OBJEXT) $(am__objects_1) $(am__objects_2) \
-
	$(am__objects_3)
+
am_lib540_OBJECTS = lib540.$(OBJEXT) $(am__objects_2) $(am__objects_3) \
+
	$(am__objects_4)
lib540_OBJECTS = $(am_lib540_OBJECTS)
lib540_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib541_OBJECTS = lib541.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_28)
+
am_lib541_OBJECTS = lib541.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_39)
lib541_OBJECTS = $(am_lib541_OBJECTS)
lib541_LDADD = $(LDADD)
lib541_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib542_OBJECTS = lib542.$(OBJEXT) $(am__objects_1)
+
am_lib542_OBJECTS = lib542.$(OBJEXT) $(am__objects_2)
lib542_OBJECTS = $(am_lib542_OBJECTS)
lib542_LDADD = $(LDADD)
lib542_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib543_OBJECTS = lib543.$(OBJEXT) $(am__objects_1)
+
am_lib543_OBJECTS = lib543.$(OBJEXT) $(am__objects_2)
lib543_OBJECTS = $(am_lib543_OBJECTS)
lib543_LDADD = $(LDADD)
lib543_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib544_OBJECTS = lib544.$(OBJEXT) $(am__objects_1)
+
am_lib544_OBJECTS = lib544.$(OBJEXT) $(am__objects_2)
lib544_OBJECTS = $(am_lib544_OBJECTS)
lib544_LDADD = $(LDADD)
lib544_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am__objects_42 = ../../lib/lib545-timediff.$(OBJEXT) \
-
	lib545-first.$(OBJEXT)
-
am_lib545_OBJECTS = lib545-lib544.$(OBJEXT) $(am__objects_42)
+
am__objects_57 = ../../lib/lib545-timediff.$(OBJEXT)
+
am__objects_58 = $(am__objects_57) lib545-first.$(OBJEXT)
+
am_lib545_OBJECTS = lib545-lib544.$(OBJEXT) $(am__objects_58)
lib545_OBJECTS = $(am_lib545_OBJECTS)
lib545_LDADD = $(LDADD)
lib545_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib547_OBJECTS = lib547.$(OBJEXT) $(am__objects_1)
+
am_lib547_OBJECTS = lib547.$(OBJEXT) $(am__objects_2)
lib547_OBJECTS = $(am_lib547_OBJECTS)
lib547_LDADD = $(LDADD)
lib547_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am__objects_43 = ../../lib/lib548-timediff.$(OBJEXT) \
-
	lib548-first.$(OBJEXT)
-
am_lib548_OBJECTS = lib548-lib547.$(OBJEXT) $(am__objects_43)
+
am__objects_59 = ../../lib/lib548-timediff.$(OBJEXT)
+
am__objects_60 = $(am__objects_59) lib548-first.$(OBJEXT)
+
am_lib548_OBJECTS = lib548-lib547.$(OBJEXT) $(am__objects_60)
lib548_OBJECTS = $(am_lib548_OBJECTS)
lib548_LDADD = $(LDADD)
lib548_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib549_OBJECTS = lib549.$(OBJEXT) $(am__objects_1)
+
am_lib549_OBJECTS = lib549.$(OBJEXT) $(am__objects_2)
lib549_OBJECTS = $(am_lib549_OBJECTS)
lib549_LDADD = $(LDADD)
lib549_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib552_OBJECTS = lib552.$(OBJEXT) $(am__objects_1) $(am__objects_3)
+
am_lib552_OBJECTS = lib552.$(OBJEXT) $(am__objects_2) $(am__objects_4)
lib552_OBJECTS = $(am_lib552_OBJECTS)
lib552_LDADD = $(LDADD)
lib552_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib553_OBJECTS = lib553.$(OBJEXT) $(am__objects_1)
+
am_lib553_OBJECTS = lib553.$(OBJEXT) $(am__objects_2)
lib553_OBJECTS = $(am_lib553_OBJECTS)
lib553_LDADD = $(LDADD)
lib553_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib554_OBJECTS = lib554.$(OBJEXT) $(am__objects_1)
+
am_lib554_OBJECTS = lib554.$(OBJEXT) $(am__objects_2)
lib554_OBJECTS = $(am_lib554_OBJECTS)
lib554_LDADD = $(LDADD)
lib554_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib555_OBJECTS = lib555.$(OBJEXT) $(am__objects_1) $(am__objects_2) \
-
	$(am__objects_3)
+
am_lib555_OBJECTS = lib555.$(OBJEXT) $(am__objects_2) $(am__objects_3) \
+
	$(am__objects_4)
lib555_OBJECTS = $(am_lib555_OBJECTS)
lib555_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib556_OBJECTS = lib556.$(OBJEXT) $(am__objects_1) $(am__objects_3)
+
am_lib556_OBJECTS = lib556.$(OBJEXT) $(am__objects_2) $(am__objects_4)
lib556_OBJECTS = $(am_lib556_OBJECTS)
lib556_LDADD = $(LDADD)
lib556_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib557_OBJECTS = lib557.$(OBJEXT) $(am__objects_1)
+
am_lib557_OBJECTS = lib557.$(OBJEXT) $(am__objects_2)
lib557_OBJECTS = $(am_lib557_OBJECTS)
lib557_LDADD = $(LDADD)
lib557_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib558_OBJECTS = lib558.$(OBJEXT) $(am__objects_1)
+
am_lib558_OBJECTS = lib558.$(OBJEXT) $(am__objects_2)
lib558_OBJECTS = $(am_lib558_OBJECTS)
lib558_LDADD = $(LDADD)
lib558_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib559_OBJECTS = lib559.$(OBJEXT) $(am__objects_1)
+
am_lib559_OBJECTS = lib559.$(OBJEXT) $(am__objects_2)
lib559_OBJECTS = $(am_lib559_OBJECTS)
lib559_LDADD = $(LDADD)
lib559_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib560_OBJECTS = lib560.$(OBJEXT) $(am__objects_1) $(am__objects_2) \
-
	$(am__objects_3)
+
am_lib560_OBJECTS = lib560.$(OBJEXT) $(am__objects_2) $(am__objects_3) \
+
	$(am__objects_4)
lib560_OBJECTS = $(am_lib560_OBJECTS)
lib560_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib562_OBJECTS = lib562.$(OBJEXT) $(am__objects_1)
+
am_lib562_OBJECTS = lib562.$(OBJEXT) $(am__objects_2)
lib562_OBJECTS = $(am_lib562_OBJECTS)
lib562_LDADD = $(LDADD)
lib562_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib564_OBJECTS = lib564.$(OBJEXT) $(am__objects_1) $(am__objects_2) \
-
	$(am__objects_3)
+
am_lib564_OBJECTS = lib564.$(OBJEXT) $(am__objects_2) $(am__objects_3) \
+
	$(am__objects_4)
lib564_OBJECTS = $(am_lib564_OBJECTS)
lib564_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am__objects_44 = ../../lib/lib565-timediff.$(OBJEXT) \
-
	lib565-first.$(OBJEXT)
-
am_lib565_OBJECTS = lib565-lib510.$(OBJEXT) $(am__objects_44)
+
am__objects_61 = ../../lib/lib565-timediff.$(OBJEXT)
+
am__objects_62 = $(am__objects_61) lib565-first.$(OBJEXT)
+
am_lib565_OBJECTS = lib565-lib510.$(OBJEXT) $(am__objects_62)
lib565_OBJECTS = $(am_lib565_OBJECTS)
lib565_LDADD = $(LDADD)
lib565_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib566_OBJECTS = lib566.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_28)
+
am_lib566_OBJECTS = lib566.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_39)
lib566_OBJECTS = $(am_lib566_OBJECTS)
lib566_LDADD = $(LDADD)
lib566_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib567_OBJECTS = lib567.$(OBJEXT) $(am__objects_1)
+
am_lib567_OBJECTS = lib567.$(OBJEXT) $(am__objects_2)
lib567_OBJECTS = $(am_lib567_OBJECTS)
lib567_LDADD = $(LDADD)
lib567_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib568_OBJECTS = lib568.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_28)
+
am_lib568_OBJECTS = lib568.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_39)
lib568_OBJECTS = $(am_lib568_OBJECTS)
lib568_LDADD = $(LDADD)
lib568_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib569_OBJECTS = lib569.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_28)
+
am_lib569_OBJECTS = lib569.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_39)
lib569_OBJECTS = $(am_lib569_OBJECTS)
lib569_LDADD = $(LDADD)
lib569_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib570_OBJECTS = lib570.$(OBJEXT) $(am__objects_1)
+
am_lib570_OBJECTS = lib570.$(OBJEXT) $(am__objects_2)
lib570_OBJECTS = $(am_lib570_OBJECTS)
lib570_LDADD = $(LDADD)
lib570_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib571_OBJECTS = lib571.$(OBJEXT) $(am__objects_1) $(am__objects_3) \
-
	$(am__objects_28)
+
am_lib571_OBJECTS = lib571.$(OBJEXT) $(am__objects_2) $(am__objects_4) \
+
	$(am__objects_39)
lib571_OBJECTS = $(am_lib571_OBJECTS)
lib571_LDADD = $(LDADD)
lib571_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib572_OBJECTS = lib572.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_28)
+
am_lib572_OBJECTS = lib572.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_39)
lib572_OBJECTS = $(am_lib572_OBJECTS)
lib572_LDADD = $(LDADD)
lib572_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib573_OBJECTS = lib573.$(OBJEXT) $(am__objects_1) $(am__objects_2) \
-
	$(am__objects_3) $(am__objects_17)
+
am_lib573_OBJECTS = lib573.$(OBJEXT) $(am__objects_2) $(am__objects_3) \
+
	$(am__objects_4) $(am__objects_23)
lib573_OBJECTS = $(am_lib573_OBJECTS)
lib573_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib574_OBJECTS = lib574.$(OBJEXT) $(am__objects_1)
+
am_lib574_OBJECTS = lib574.$(OBJEXT) $(am__objects_2)
lib574_OBJECTS = $(am_lib574_OBJECTS)
lib574_LDADD = $(LDADD)
lib574_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib575_OBJECTS = lib575.$(OBJEXT) $(am__objects_1) $(am__objects_2) \
-
	$(am__objects_3)
+
am_lib575_OBJECTS = lib575.$(OBJEXT) $(am__objects_2) $(am__objects_3) \
+
	$(am__objects_4)
lib575_OBJECTS = $(am_lib575_OBJECTS)
lib575_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib576_OBJECTS = lib576.$(OBJEXT) $(am__objects_1)
+
am_lib576_OBJECTS = lib576.$(OBJEXT) $(am__objects_2)
lib576_OBJECTS = $(am_lib576_OBJECTS)
lib576_LDADD = $(LDADD)
lib576_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib578_OBJECTS = lib578.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_28)
+
am_lib578_OBJECTS = lib578.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_39)
lib578_OBJECTS = $(am_lib578_OBJECTS)
lib578_LDADD = $(LDADD)
lib578_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib579_OBJECTS = lib579.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_28)
+
am_lib579_OBJECTS = lib579.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_39)
lib579_OBJECTS = $(am_lib579_OBJECTS)
lib579_LDADD = $(LDADD)
lib579_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib582_OBJECTS = lib582.$(OBJEXT) $(am__objects_1) $(am__objects_2) \
-
	$(am__objects_3) $(am__objects_28)
+
am_lib582_OBJECTS = lib582.$(OBJEXT) $(am__objects_2) $(am__objects_3) \
+
	$(am__objects_4) $(am__objects_39)
lib582_OBJECTS = $(am_lib582_OBJECTS)
lib582_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib583_OBJECTS = lib583.$(OBJEXT) $(am__objects_1)
+
am_lib583_OBJECTS = lib583.$(OBJEXT) $(am__objects_2)
lib583_OBJECTS = $(am_lib583_OBJECTS)
lib583_LDADD = $(LDADD)
lib583_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am__objects_45 = ../../lib/lib584-timediff.$(OBJEXT) \
-
	lib584-first.$(OBJEXT)
-
am_lib584_OBJECTS = lib584-lib589.$(OBJEXT) $(am__objects_45)
+
am__objects_63 = ../../lib/lib584-timediff.$(OBJEXT)
+
am__objects_64 = $(am__objects_63) lib584-first.$(OBJEXT)
+
am_lib584_OBJECTS = lib584-lib589.$(OBJEXT) $(am__objects_64)
lib584_OBJECTS = $(am_lib584_OBJECTS)
lib584_LDADD = $(LDADD)
lib584_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am__objects_46 = ../../lib/lib585-timediff.$(OBJEXT) \
-
	lib585-first.$(OBJEXT)
-
am__objects_47 = lib585-testutil.$(OBJEXT)
-
am__objects_48 = lib585-testtrace.$(OBJEXT)
-
am__objects_49 = ../../lib/lib585-curl_multibyte.$(OBJEXT)
-
am_lib585_OBJECTS = lib585-lib500.$(OBJEXT) $(am__objects_46) \
-
	$(am__objects_47) $(am__objects_48) $(am__objects_49)
+
am__objects_65 = ../../lib/lib585-timediff.$(OBJEXT)
+
am__objects_66 = $(am__objects_65) lib585-first.$(OBJEXT)
+
am__objects_67 = lib585-testutil.$(OBJEXT)
+
am__objects_68 = lib585-testtrace.$(OBJEXT)
+
am__objects_69 = ../../lib/lib585-curl_multibyte.$(OBJEXT)
+
am_lib585_OBJECTS = lib585-lib500.$(OBJEXT) $(am__objects_66) \
+
	$(am__objects_67) $(am__objects_68) $(am__objects_69)
lib585_OBJECTS = $(am_lib585_OBJECTS)
lib585_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib586_OBJECTS = lib586.$(OBJEXT) $(am__objects_1)
+
am_lib586_OBJECTS = lib586.$(OBJEXT) $(am__objects_2)
lib586_OBJECTS = $(am_lib586_OBJECTS)
lib586_LDADD = $(LDADD)
lib586_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am__objects_50 = ../../lib/lib587-timediff.$(OBJEXT) \
-
	lib587-first.$(OBJEXT)
-
am_lib587_OBJECTS = lib587-lib554.$(OBJEXT) $(am__objects_50)
+
am__objects_70 = ../../lib/lib587-timediff.$(OBJEXT)
+
am__objects_71 = $(am__objects_70) lib587-first.$(OBJEXT)
+
am_lib587_OBJECTS = lib587-lib554.$(OBJEXT) $(am__objects_71)
lib587_OBJECTS = $(am_lib587_OBJECTS)
lib587_LDADD = $(LDADD)
lib587_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib589_OBJECTS = lib589.$(OBJEXT) $(am__objects_1)
+
am_lib589_OBJECTS = lib589.$(OBJEXT) $(am__objects_2)
lib589_OBJECTS = $(am_lib589_OBJECTS)
lib589_LDADD = $(LDADD)
lib589_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib590_OBJECTS = lib590.$(OBJEXT) $(am__objects_1)
+
am_lib590_OBJECTS = lib590.$(OBJEXT) $(am__objects_2)
lib590_OBJECTS = $(am_lib590_OBJECTS)
lib590_LDADD = $(LDADD)
lib590_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib591_OBJECTS = lib591.$(OBJEXT) $(am__objects_1) $(am__objects_2) \
-
	$(am__objects_3) $(am__objects_28)
+
am_lib591_OBJECTS = lib591.$(OBJEXT) $(am__objects_2) $(am__objects_3) \
+
	$(am__objects_4) $(am__objects_39)
lib591_OBJECTS = $(am_lib591_OBJECTS)
lib591_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib597_OBJECTS = lib597.$(OBJEXT) $(am__objects_1) $(am__objects_2) \
-
	$(am__objects_3)
+
am_lib597_OBJECTS = lib597.$(OBJEXT) $(am__objects_2) $(am__objects_3) \
+
	$(am__objects_4)
lib597_OBJECTS = $(am_lib597_OBJECTS)
lib597_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib598_OBJECTS = lib598.$(OBJEXT) $(am__objects_1)
+
am_lib598_OBJECTS = lib598.$(OBJEXT) $(am__objects_2)
lib598_OBJECTS = $(am_lib598_OBJECTS)
lib598_LDADD = $(LDADD)
lib598_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib599_OBJECTS = lib599.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_28)
+
am_lib599_OBJECTS = lib599.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_39)
lib599_OBJECTS = $(am_lib599_OBJECTS)
lib599_LDADD = $(LDADD)
lib599_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib643_OBJECTS = lib643.$(OBJEXT) $(am__objects_1)
+
am_lib643_OBJECTS = lib643.$(OBJEXT) $(am__objects_2)
lib643_OBJECTS = $(am_lib643_OBJECTS)
lib643_LDADD = $(LDADD)
lib643_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am__objects_51 = ../../lib/lib645-timediff.$(OBJEXT) \
-
	lib645-first.$(OBJEXT)
-
am_lib645_OBJECTS = lib645-lib643.$(OBJEXT) $(am__objects_51)
+
am__objects_72 = ../../lib/lib645-timediff.$(OBJEXT)
+
am__objects_73 = $(am__objects_72) lib645-first.$(OBJEXT)
+
am_lib645_OBJECTS = lib645-lib643.$(OBJEXT) $(am__objects_73)
lib645_OBJECTS = $(am_lib645_OBJECTS)
lib645_LDADD = $(LDADD)
lib645_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib650_OBJECTS = lib650.$(OBJEXT) $(am__objects_1)
+
am_lib650_OBJECTS = lib650.$(OBJEXT) $(am__objects_2)
lib650_OBJECTS = $(am_lib650_OBJECTS)
lib650_LDADD = $(LDADD)
lib650_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib651_OBJECTS = lib651.$(OBJEXT) $(am__objects_1)
+
am_lib651_OBJECTS = lib651.$(OBJEXT) $(am__objects_2)
lib651_OBJECTS = $(am_lib651_OBJECTS)
lib651_LDADD = $(LDADD)
lib651_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib652_OBJECTS = lib652.$(OBJEXT) $(am__objects_1)
+
am_lib652_OBJECTS = lib652.$(OBJEXT) $(am__objects_2)
lib652_OBJECTS = $(am_lib652_OBJECTS)
lib652_LDADD = $(LDADD)
lib652_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib653_OBJECTS = lib653.$(OBJEXT) $(am__objects_1)
+
am_lib653_OBJECTS = lib653.$(OBJEXT) $(am__objects_2)
lib653_OBJECTS = $(am_lib653_OBJECTS)
lib653_LDADD = $(LDADD)
lib653_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib654_OBJECTS = lib654.$(OBJEXT) $(am__objects_1)
+
am_lib654_OBJECTS = lib654.$(OBJEXT) $(am__objects_2)
lib654_OBJECTS = $(am_lib654_OBJECTS)
lib654_LDADD = $(LDADD)
lib654_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib655_OBJECTS = lib655.$(OBJEXT) $(am__objects_1)
+
am_lib655_OBJECTS = lib655.$(OBJEXT) $(am__objects_2)
lib655_OBJECTS = $(am_lib655_OBJECTS)
lib655_LDADD = $(LDADD)
lib655_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib658_OBJECTS = lib658.$(OBJEXT) $(am__objects_1) $(am__objects_2) \
-
	$(am__objects_3)
+
am_lib658_OBJECTS = lib658.$(OBJEXT) $(am__objects_2) $(am__objects_3) \
+
	$(am__objects_4)
lib658_OBJECTS = $(am_lib658_OBJECTS)
lib658_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib659_OBJECTS = lib659.$(OBJEXT) $(am__objects_1) $(am__objects_2) \
-
	$(am__objects_3)
+
am_lib659_OBJECTS = lib659.$(OBJEXT) $(am__objects_2) $(am__objects_3) \
+
	$(am__objects_4)
lib659_OBJECTS = $(am_lib659_OBJECTS)
lib659_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib661_OBJECTS = lib661.$(OBJEXT) $(am__objects_1)
+
am_lib661_OBJECTS = lib661.$(OBJEXT) $(am__objects_2)
lib661_OBJECTS = $(am_lib661_OBJECTS)
lib661_LDADD = $(LDADD)
lib661_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib666_OBJECTS = lib666.$(OBJEXT) $(am__objects_1)
+
am_lib666_OBJECTS = lib666.$(OBJEXT) $(am__objects_2)
lib666_OBJECTS = $(am_lib666_OBJECTS)
lib666_LDADD = $(LDADD)
lib666_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib667_OBJECTS = lib667.$(OBJEXT) $(am__objects_1) $(am__objects_2) \
-
	$(am__objects_3)
+
am_lib667_OBJECTS = lib667.$(OBJEXT) $(am__objects_2) $(am__objects_3) \
+
	$(am__objects_4)
lib667_OBJECTS = $(am_lib667_OBJECTS)
lib667_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib668_OBJECTS = lib668.$(OBJEXT) $(am__objects_1) $(am__objects_2) \
-
	$(am__objects_3)
+
am_lib668_OBJECTS = lib668.$(OBJEXT) $(am__objects_2) $(am__objects_3) \
+
	$(am__objects_4)
lib668_OBJECTS = $(am_lib668_OBJECTS)
lib668_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am__objects_52 = ../../lib/lib670-timediff.$(OBJEXT) \
-
	lib670-first.$(OBJEXT)
-
am__objects_53 = lib670-testutil.$(OBJEXT)
-
am__objects_54 = ../../lib/lib670-warnless.$(OBJEXT)
-
am_lib670_OBJECTS = lib670-lib670.$(OBJEXT) $(am__objects_52) \
-
	$(am__objects_53) $(am__objects_54)
+
am__objects_74 = ../../lib/lib670-timediff.$(OBJEXT)
+
am__objects_75 = $(am__objects_74) lib670-first.$(OBJEXT)
+
am__objects_76 = lib670-testutil.$(OBJEXT)
+
am__objects_77 = ../../lib/lib670-warnless.$(OBJEXT)
+
am_lib670_OBJECTS = lib670-lib670.$(OBJEXT) $(am__objects_75) \
+
	$(am__objects_76) $(am__objects_77)
lib670_OBJECTS = $(am_lib670_OBJECTS)
lib670_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am__objects_55 = ../../lib/lib671-timediff.$(OBJEXT) \
-
	lib671-first.$(OBJEXT)
-
am__objects_56 = lib671-testutil.$(OBJEXT)
-
am__objects_57 = ../../lib/lib671-warnless.$(OBJEXT)
-
am_lib671_OBJECTS = lib671-lib670.$(OBJEXT) $(am__objects_55) \
-
	$(am__objects_56) $(am__objects_57)
+
am__objects_78 = ../../lib/lib671-timediff.$(OBJEXT)
+
am__objects_79 = $(am__objects_78) lib671-first.$(OBJEXT)
+
am__objects_80 = lib671-testutil.$(OBJEXT)
+
am__objects_81 = ../../lib/lib671-warnless.$(OBJEXT)
+
am_lib671_OBJECTS = lib671-lib670.$(OBJEXT) $(am__objects_79) \
+
	$(am__objects_80) $(am__objects_81)
lib671_OBJECTS = $(am_lib671_OBJECTS)
lib671_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am__objects_58 = ../../lib/lib672-timediff.$(OBJEXT) \
-
	lib672-first.$(OBJEXT)
-
am__objects_59 = lib672-testutil.$(OBJEXT)
-
am__objects_60 = ../../lib/lib672-warnless.$(OBJEXT)
-
am_lib672_OBJECTS = lib672-lib670.$(OBJEXT) $(am__objects_58) \
-
	$(am__objects_59) $(am__objects_60)
+
am__objects_82 = ../../lib/lib672-timediff.$(OBJEXT)
+
am__objects_83 = $(am__objects_82) lib672-first.$(OBJEXT)
+
am__objects_84 = lib672-testutil.$(OBJEXT)
+
am__objects_85 = ../../lib/lib672-warnless.$(OBJEXT)
+
am_lib672_OBJECTS = lib672-lib670.$(OBJEXT) $(am__objects_83) \
+
	$(am__objects_84) $(am__objects_85)
lib672_OBJECTS = $(am_lib672_OBJECTS)
lib672_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib673_OBJECTS = lib670.$(OBJEXT) $(am__objects_1) $(am__objects_2) \
-
	$(am__objects_3)
+
am_lib673_OBJECTS = lib670.$(OBJEXT) $(am__objects_2) $(am__objects_3) \
+
	$(am__objects_4)
lib673_OBJECTS = $(am_lib673_OBJECTS)
lib673_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib674_OBJECTS = lib674.$(OBJEXT) $(am__objects_1) $(am__objects_2) \
-
	$(am__objects_3)
+
am_lib674_OBJECTS = lib674.$(OBJEXT) $(am__objects_2) $(am__objects_3) \
+
	$(am__objects_4)
lib674_OBJECTS = $(am_lib674_OBJECTS)
lib674_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib676_OBJECTS = lib676.$(OBJEXT) $(am__objects_1) $(am__objects_2) \
-
	$(am__objects_3)
+
am_lib676_OBJECTS = lib676.$(OBJEXT) $(am__objects_2) $(am__objects_3) \
+
	$(am__objects_4)
lib676_OBJECTS = $(am_lib676_OBJECTS)
lib676_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib677_OBJECTS = lib677.$(OBJEXT) $(am__objects_1) $(am__objects_2) \
-
	$(am__objects_3) $(am__objects_28)
+
am_lib677_OBJECTS = lib677.$(OBJEXT) $(am__objects_2) $(am__objects_3) \
+
	$(am__objects_4) $(am__objects_39)
lib677_OBJECTS = $(am_lib677_OBJECTS)
lib677_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_lib678_OBJECTS = lib678.$(OBJEXT) $(am__objects_1) $(am__objects_2) \
-
	$(am__objects_3) $(am__objects_28)
+
am_lib678_OBJECTS = lib678.$(OBJEXT) $(am__objects_2) $(am__objects_3) \
+
	$(am__objects_4) $(am__objects_39)
lib678_OBJECTS = $(am_lib678_OBJECTS)
lib678_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_libauthretry_OBJECTS = libauthretry.$(OBJEXT) $(am__objects_1)
+
am_libauthretry_OBJECTS = libauthretry.$(OBJEXT) $(am__objects_2)
libauthretry_OBJECTS = $(am_libauthretry_OBJECTS)
libauthretry_LDADD = $(LDADD)
libauthretry_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_libntlmconnect_OBJECTS = libntlmconnect.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_libntlmconnect_OBJECTS = libntlmconnect.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
libntlmconnect_OBJECTS = $(am_libntlmconnect_OBJECTS)
libntlmconnect_DEPENDENCIES = $(am__DEPENDENCIES_1)
-
am_libprereq_OBJECTS = libprereq.$(OBJEXT) $(am__objects_1) \
-
	$(am__objects_2) $(am__objects_3)
+
am_libprereq_OBJECTS = libprereq.$(OBJEXT) $(am__objects_2) \
+
	$(am__objects_3) $(am__objects_4)
libprereq_OBJECTS = $(am_libprereq_OBJECTS)
libprereq_DEPENDENCIES = $(am__DEPENDENCIES_1)
AM_V_P = $(am__v_P_@AM_V@)
@@ -1327,72 +1333,73 @@ am__depfiles_remade = ../../lib/$(DEPDIR)/curl_gethostname.Po \
	./$(DEPDIR)/lib2301.Po ./$(DEPDIR)/lib2302.Po \
	./$(DEPDIR)/lib2304.Po ./$(DEPDIR)/lib2305.Po \
	./$(DEPDIR)/lib2306.Po ./$(DEPDIR)/lib2402.Po \
-
	./$(DEPDIR)/lib2502.Po ./$(DEPDIR)/lib3010.Po \
-
	./$(DEPDIR)/lib3025.Po ./$(DEPDIR)/lib3026.Po \
-
	./$(DEPDIR)/lib3027.Po ./$(DEPDIR)/lib3100.Po \
-
	./$(DEPDIR)/lib3101.Po ./$(DEPDIR)/lib500.Po \
-
	./$(DEPDIR)/lib501.Po ./$(DEPDIR)/lib502.Po \
-
	./$(DEPDIR)/lib503.Po ./$(DEPDIR)/lib504.Po \
-
	./$(DEPDIR)/lib505.Po ./$(DEPDIR)/lib506.Po \
-
	./$(DEPDIR)/lib507.Po ./$(DEPDIR)/lib508.Po \
-
	./$(DEPDIR)/lib509.Po ./$(DEPDIR)/lib510.Po \
-
	./$(DEPDIR)/lib511.Po ./$(DEPDIR)/lib512.Po \
-
	./$(DEPDIR)/lib513.Po ./$(DEPDIR)/lib514.Po \
-
	./$(DEPDIR)/lib515.Po ./$(DEPDIR)/lib516.Po \
-
	./$(DEPDIR)/lib517.Po ./$(DEPDIR)/lib518.Po \
-
	./$(DEPDIR)/lib519.Po ./$(DEPDIR)/lib520.Po \
-
	./$(DEPDIR)/lib521.Po ./$(DEPDIR)/lib523.Po \
-
	./$(DEPDIR)/lib524.Po ./$(DEPDIR)/lib525.Po \
-
	./$(DEPDIR)/lib526-first.Po ./$(DEPDIR)/lib526-lib526.Po \
-
	./$(DEPDIR)/lib526-testutil.Po ./$(DEPDIR)/lib527-first.Po \
-
	./$(DEPDIR)/lib527-lib526.Po ./$(DEPDIR)/lib527-testutil.Po \
-
	./$(DEPDIR)/lib529-first.Po ./$(DEPDIR)/lib529-lib525.Po \
-
	./$(DEPDIR)/lib529-testutil.Po ./$(DEPDIR)/lib530.Po \
-
	./$(DEPDIR)/lib532-first.Po ./$(DEPDIR)/lib532-lib526.Po \
-
	./$(DEPDIR)/lib532-testutil.Po ./$(DEPDIR)/lib533.Po \
-
	./$(DEPDIR)/lib537.Po ./$(DEPDIR)/lib539.Po \
-
	./$(DEPDIR)/lib540.Po ./$(DEPDIR)/lib541.Po \
-
	./$(DEPDIR)/lib542.Po ./$(DEPDIR)/lib543.Po \
-
	./$(DEPDIR)/lib544.Po ./$(DEPDIR)/lib545-first.Po \
-
	./$(DEPDIR)/lib545-lib544.Po ./$(DEPDIR)/lib547.Po \
-
	./$(DEPDIR)/lib548-first.Po ./$(DEPDIR)/lib548-lib547.Po \
-
	./$(DEPDIR)/lib549.Po ./$(DEPDIR)/lib552.Po \
-
	./$(DEPDIR)/lib553.Po ./$(DEPDIR)/lib554.Po \
-
	./$(DEPDIR)/lib555.Po ./$(DEPDIR)/lib556.Po \
-
	./$(DEPDIR)/lib557.Po ./$(DEPDIR)/lib558.Po \
-
	./$(DEPDIR)/lib559.Po ./$(DEPDIR)/lib560.Po \
-
	./$(DEPDIR)/lib562.Po ./$(DEPDIR)/lib564.Po \
-
	./$(DEPDIR)/lib565-first.Po ./$(DEPDIR)/lib565-lib510.Po \
-
	./$(DEPDIR)/lib566.Po ./$(DEPDIR)/lib567.Po \
-
	./$(DEPDIR)/lib568.Po ./$(DEPDIR)/lib569.Po \
-
	./$(DEPDIR)/lib570.Po ./$(DEPDIR)/lib571.Po \
-
	./$(DEPDIR)/lib572.Po ./$(DEPDIR)/lib573.Po \
-
	./$(DEPDIR)/lib574.Po ./$(DEPDIR)/lib575.Po \
-
	./$(DEPDIR)/lib576.Po ./$(DEPDIR)/lib578.Po \
-
	./$(DEPDIR)/lib579.Po ./$(DEPDIR)/lib582.Po \
-
	./$(DEPDIR)/lib583.Po ./$(DEPDIR)/lib584-first.Po \
-
	./$(DEPDIR)/lib584-lib589.Po ./$(DEPDIR)/lib585-first.Po \
-
	./$(DEPDIR)/lib585-lib500.Po ./$(DEPDIR)/lib585-testtrace.Po \
-
	./$(DEPDIR)/lib585-testutil.Po ./$(DEPDIR)/lib586.Po \
-
	./$(DEPDIR)/lib587-first.Po ./$(DEPDIR)/lib587-lib554.Po \
-
	./$(DEPDIR)/lib589.Po ./$(DEPDIR)/lib590.Po \
-
	./$(DEPDIR)/lib591.Po ./$(DEPDIR)/lib597.Po \
-
	./$(DEPDIR)/lib598.Po ./$(DEPDIR)/lib599.Po \
-
	./$(DEPDIR)/lib643.Po ./$(DEPDIR)/lib645-first.Po \
-
	./$(DEPDIR)/lib645-lib643.Po ./$(DEPDIR)/lib650.Po \
-
	./$(DEPDIR)/lib651.Po ./$(DEPDIR)/lib652.Po \
-
	./$(DEPDIR)/lib653.Po ./$(DEPDIR)/lib654.Po \
-
	./$(DEPDIR)/lib655.Po ./$(DEPDIR)/lib658.Po \
-
	./$(DEPDIR)/lib659.Po ./$(DEPDIR)/lib661.Po \
-
	./$(DEPDIR)/lib666.Po ./$(DEPDIR)/lib667.Po \
-
	./$(DEPDIR)/lib668.Po ./$(DEPDIR)/lib670-first.Po \
-
	./$(DEPDIR)/lib670-lib670.Po ./$(DEPDIR)/lib670-testutil.Po \
-
	./$(DEPDIR)/lib670.Po ./$(DEPDIR)/lib671-first.Po \
-
	./$(DEPDIR)/lib671-lib670.Po ./$(DEPDIR)/lib671-testutil.Po \
-
	./$(DEPDIR)/lib672-first.Po ./$(DEPDIR)/lib672-lib670.Po \
-
	./$(DEPDIR)/lib672-testutil.Po ./$(DEPDIR)/lib674.Po \
-
	./$(DEPDIR)/lib676.Po ./$(DEPDIR)/lib677.Po \
-
	./$(DEPDIR)/lib678.Po ./$(DEPDIR)/libauthretry.Po \
+
	./$(DEPDIR)/lib2404.Po ./$(DEPDIR)/lib2502.Po \
+
	./$(DEPDIR)/lib3010.Po ./$(DEPDIR)/lib3025.Po \
+
	./$(DEPDIR)/lib3026.Po ./$(DEPDIR)/lib3027.Po \
+
	./$(DEPDIR)/lib3100.Po ./$(DEPDIR)/lib3101.Po \
+
	./$(DEPDIR)/lib500.Po ./$(DEPDIR)/lib501.Po \
+
	./$(DEPDIR)/lib502.Po ./$(DEPDIR)/lib503.Po \
+
	./$(DEPDIR)/lib504.Po ./$(DEPDIR)/lib505.Po \
+
	./$(DEPDIR)/lib506.Po ./$(DEPDIR)/lib507.Po \
+
	./$(DEPDIR)/lib508.Po ./$(DEPDIR)/lib509.Po \
+
	./$(DEPDIR)/lib510.Po ./$(DEPDIR)/lib511.Po \
+
	./$(DEPDIR)/lib512.Po ./$(DEPDIR)/lib513.Po \
+
	./$(DEPDIR)/lib514.Po ./$(DEPDIR)/lib515.Po \
+
	./$(DEPDIR)/lib516.Po ./$(DEPDIR)/lib517.Po \
+
	./$(DEPDIR)/lib518.Po ./$(DEPDIR)/lib519.Po \
+
	./$(DEPDIR)/lib520.Po ./$(DEPDIR)/lib521.Po \
+
	./$(DEPDIR)/lib523.Po ./$(DEPDIR)/lib524.Po \
+
	./$(DEPDIR)/lib525.Po ./$(DEPDIR)/lib526-first.Po \
+
	./$(DEPDIR)/lib526-lib526.Po ./$(DEPDIR)/lib526-testutil.Po \
+
	./$(DEPDIR)/lib527-first.Po ./$(DEPDIR)/lib527-lib526.Po \
+
	./$(DEPDIR)/lib527-testutil.Po ./$(DEPDIR)/lib529-first.Po \
+
	./$(DEPDIR)/lib529-lib525.Po ./$(DEPDIR)/lib529-testutil.Po \
+
	./$(DEPDIR)/lib530.Po ./$(DEPDIR)/lib532-first.Po \
+
	./$(DEPDIR)/lib532-lib526.Po ./$(DEPDIR)/lib532-testutil.Po \
+
	./$(DEPDIR)/lib533.Po ./$(DEPDIR)/lib537.Po \
+
	./$(DEPDIR)/lib539.Po ./$(DEPDIR)/lib540.Po \
+
	./$(DEPDIR)/lib541.Po ./$(DEPDIR)/lib542.Po \
+
	./$(DEPDIR)/lib543.Po ./$(DEPDIR)/lib544.Po \
+
	./$(DEPDIR)/lib545-first.Po ./$(DEPDIR)/lib545-lib544.Po \
+
	./$(DEPDIR)/lib547.Po ./$(DEPDIR)/lib548-first.Po \
+
	./$(DEPDIR)/lib548-lib547.Po ./$(DEPDIR)/lib549.Po \
+
	./$(DEPDIR)/lib552.Po ./$(DEPDIR)/lib553.Po \
+
	./$(DEPDIR)/lib554.Po ./$(DEPDIR)/lib555.Po \
+
	./$(DEPDIR)/lib556.Po ./$(DEPDIR)/lib557.Po \
+
	./$(DEPDIR)/lib558.Po ./$(DEPDIR)/lib559.Po \
+
	./$(DEPDIR)/lib560.Po ./$(DEPDIR)/lib562.Po \
+
	./$(DEPDIR)/lib564.Po ./$(DEPDIR)/lib565-first.Po \
+
	./$(DEPDIR)/lib565-lib510.Po ./$(DEPDIR)/lib566.Po \
+
	./$(DEPDIR)/lib567.Po ./$(DEPDIR)/lib568.Po \
+
	./$(DEPDIR)/lib569.Po ./$(DEPDIR)/lib570.Po \
+
	./$(DEPDIR)/lib571.Po ./$(DEPDIR)/lib572.Po \
+
	./$(DEPDIR)/lib573.Po ./$(DEPDIR)/lib574.Po \
+
	./$(DEPDIR)/lib575.Po ./$(DEPDIR)/lib576.Po \
+
	./$(DEPDIR)/lib578.Po ./$(DEPDIR)/lib579.Po \
+
	./$(DEPDIR)/lib582.Po ./$(DEPDIR)/lib583.Po \
+
	./$(DEPDIR)/lib584-first.Po ./$(DEPDIR)/lib584-lib589.Po \
+
	./$(DEPDIR)/lib585-first.Po ./$(DEPDIR)/lib585-lib500.Po \
+
	./$(DEPDIR)/lib585-testtrace.Po ./$(DEPDIR)/lib585-testutil.Po \
+
	./$(DEPDIR)/lib586.Po ./$(DEPDIR)/lib587-first.Po \
+
	./$(DEPDIR)/lib587-lib554.Po ./$(DEPDIR)/lib589.Po \
+
	./$(DEPDIR)/lib590.Po ./$(DEPDIR)/lib591.Po \
+
	./$(DEPDIR)/lib597.Po ./$(DEPDIR)/lib598.Po \
+
	./$(DEPDIR)/lib599.Po ./$(DEPDIR)/lib643.Po \
+
	./$(DEPDIR)/lib645-first.Po ./$(DEPDIR)/lib645-lib643.Po \
+
	./$(DEPDIR)/lib650.Po ./$(DEPDIR)/lib651.Po \
+
	./$(DEPDIR)/lib652.Po ./$(DEPDIR)/lib653.Po \
+
	./$(DEPDIR)/lib654.Po ./$(DEPDIR)/lib655.Po \
+
	./$(DEPDIR)/lib658.Po ./$(DEPDIR)/lib659.Po \
+
	./$(DEPDIR)/lib661.Po ./$(DEPDIR)/lib666.Po \
+
	./$(DEPDIR)/lib667.Po ./$(DEPDIR)/lib668.Po \
+
	./$(DEPDIR)/lib670-first.Po ./$(DEPDIR)/lib670-lib670.Po \
+
	./$(DEPDIR)/lib670-testutil.Po ./$(DEPDIR)/lib670.Po \
+
	./$(DEPDIR)/lib671-first.Po ./$(DEPDIR)/lib671-lib670.Po \
+
	./$(DEPDIR)/lib671-testutil.Po ./$(DEPDIR)/lib672-first.Po \
+
	./$(DEPDIR)/lib672-lib670.Po ./$(DEPDIR)/lib672-testutil.Po \
+
	./$(DEPDIR)/lib674.Po ./$(DEPDIR)/lib676.Po \
+
	./$(DEPDIR)/lib677.Po ./$(DEPDIR)/lib678.Po \
+
	./$(DEPDIR)/libauthretry.Po \
	./$(DEPDIR)/libhostname_la-sethostname.Plo \
	./$(DEPDIR)/libntlmconnect.Po ./$(DEPDIR)/libprereq.Po \
	./$(DEPDIR)/libstubgss_la-stub_gssapi.Plo \
@@ -1454,44 +1461,44 @@ SOURCES = $(libhostname_la_SOURCES) $(libstubgss_la_SOURCES) \
	$(lib1973_SOURCES) $(lib1974_SOURCES) $(lib1975_SOURCES) \
	$(lib2301_SOURCES) $(lib2302_SOURCES) $(lib2304_SOURCES) \
	$(lib2305_SOURCES) $(lib2306_SOURCES) $(lib2402_SOURCES) \
-
	$(lib2502_SOURCES) $(lib3010_SOURCES) $(lib3025_SOURCES) \
-
	$(lib3026_SOURCES) $(lib3027_SOURCES) $(lib3100_SOURCES) \
-
	$(lib3101_SOURCES) $(lib500_SOURCES) $(lib501_SOURCES) \
-
	$(lib502_SOURCES) $(lib503_SOURCES) $(lib504_SOURCES) \
-
	$(lib505_SOURCES) $(lib506_SOURCES) $(lib507_SOURCES) \
-
	$(lib508_SOURCES) $(lib509_SOURCES) $(lib510_SOURCES) \
-
	$(lib511_SOURCES) $(lib512_SOURCES) $(lib513_SOURCES) \
-
	$(lib514_SOURCES) $(lib515_SOURCES) $(lib516_SOURCES) \
-
	$(lib517_SOURCES) $(lib518_SOURCES) $(lib519_SOURCES) \
-
	$(lib520_SOURCES) $(lib521_SOURCES) $(lib523_SOURCES) \
-
	$(lib524_SOURCES) $(lib525_SOURCES) $(lib526_SOURCES) \
-
	$(lib527_SOURCES) $(lib529_SOURCES) $(lib530_SOURCES) \
-
	$(lib532_SOURCES) $(lib533_SOURCES) $(lib537_SOURCES) \
-
	$(lib539_SOURCES) $(lib540_SOURCES) $(lib541_SOURCES) \
-
	$(lib542_SOURCES) $(lib543_SOURCES) $(lib544_SOURCES) \
-
	$(lib545_SOURCES) $(lib547_SOURCES) $(lib548_SOURCES) \
-
	$(lib549_SOURCES) $(lib552_SOURCES) $(lib553_SOURCES) \
-
	$(lib554_SOURCES) $(lib555_SOURCES) $(lib556_SOURCES) \
-
	$(lib557_SOURCES) $(lib558_SOURCES) $(lib559_SOURCES) \
-
	$(lib560_SOURCES) $(lib562_SOURCES) $(lib564_SOURCES) \
-
	$(lib565_SOURCES) $(lib566_SOURCES) $(lib567_SOURCES) \
-
	$(lib568_SOURCES) $(lib569_SOURCES) $(lib570_SOURCES) \
-
	$(lib571_SOURCES) $(lib572_SOURCES) $(lib573_SOURCES) \
-
	$(lib574_SOURCES) $(lib575_SOURCES) $(lib576_SOURCES) \
-
	$(lib578_SOURCES) $(lib579_SOURCES) $(lib582_SOURCES) \
-
	$(lib583_SOURCES) $(lib584_SOURCES) $(lib585_SOURCES) \
-
	$(lib586_SOURCES) $(lib587_SOURCES) $(lib589_SOURCES) \
-
	$(lib590_SOURCES) $(lib591_SOURCES) $(lib597_SOURCES) \
-
	$(lib598_SOURCES) $(lib599_SOURCES) $(lib643_SOURCES) \
-
	$(lib645_SOURCES) $(lib650_SOURCES) $(lib651_SOURCES) \
-
	$(lib652_SOURCES) $(lib653_SOURCES) $(lib654_SOURCES) \
-
	$(lib655_SOURCES) $(lib658_SOURCES) $(lib659_SOURCES) \
-
	$(lib661_SOURCES) $(lib666_SOURCES) $(lib667_SOURCES) \
-
	$(lib668_SOURCES) $(lib670_SOURCES) $(lib671_SOURCES) \
-
	$(lib672_SOURCES) $(lib673_SOURCES) $(lib674_SOURCES) \
-
	$(lib676_SOURCES) $(lib677_SOURCES) $(lib678_SOURCES) \
-
	$(libauthretry_SOURCES) $(libntlmconnect_SOURCES) \
-
	$(libprereq_SOURCES)
+
	$(lib2404_SOURCES) $(lib2502_SOURCES) $(lib3010_SOURCES) \
+
	$(lib3025_SOURCES) $(lib3026_SOURCES) $(lib3027_SOURCES) \
+
	$(lib3100_SOURCES) $(lib3101_SOURCES) $(lib500_SOURCES) \
+
	$(lib501_SOURCES) $(lib502_SOURCES) $(lib503_SOURCES) \
+
	$(lib504_SOURCES) $(lib505_SOURCES) $(lib506_SOURCES) \
+
	$(lib507_SOURCES) $(lib508_SOURCES) $(lib509_SOURCES) \
+
	$(lib510_SOURCES) $(lib511_SOURCES) $(lib512_SOURCES) \
+
	$(lib513_SOURCES) $(lib514_SOURCES) $(lib515_SOURCES) \
+
	$(lib516_SOURCES) $(lib517_SOURCES) $(lib518_SOURCES) \
+
	$(lib519_SOURCES) $(lib520_SOURCES) $(lib521_SOURCES) \
+
	$(lib523_SOURCES) $(lib524_SOURCES) $(lib525_SOURCES) \
+
	$(lib526_SOURCES) $(lib527_SOURCES) $(lib529_SOURCES) \
+
	$(lib530_SOURCES) $(lib532_SOURCES) $(lib533_SOURCES) \
+
	$(lib537_SOURCES) $(lib539_SOURCES) $(lib540_SOURCES) \
+
	$(lib541_SOURCES) $(lib542_SOURCES) $(lib543_SOURCES) \
+
	$(lib544_SOURCES) $(lib545_SOURCES) $(lib547_SOURCES) \
+
	$(lib548_SOURCES) $(lib549_SOURCES) $(lib552_SOURCES) \
+
	$(lib553_SOURCES) $(lib554_SOURCES) $(lib555_SOURCES) \
+
	$(lib556_SOURCES) $(lib557_SOURCES) $(lib558_SOURCES) \
+
	$(lib559_SOURCES) $(lib560_SOURCES) $(lib562_SOURCES) \
+
	$(lib564_SOURCES) $(lib565_SOURCES) $(lib566_SOURCES) \
+
	$(lib567_SOURCES) $(lib568_SOURCES) $(lib569_SOURCES) \
+
	$(lib570_SOURCES) $(lib571_SOURCES) $(lib572_SOURCES) \
+
	$(lib573_SOURCES) $(lib574_SOURCES) $(lib575_SOURCES) \
+
	$(lib576_SOURCES) $(lib578_SOURCES) $(lib579_SOURCES) \
+
	$(lib582_SOURCES) $(lib583_SOURCES) $(lib584_SOURCES) \
+
	$(lib585_SOURCES) $(lib586_SOURCES) $(lib587_SOURCES) \
+
	$(lib589_SOURCES) $(lib590_SOURCES) $(lib591_SOURCES) \
+
	$(lib597_SOURCES) $(lib598_SOURCES) $(lib599_SOURCES) \
+
	$(lib643_SOURCES) $(lib645_SOURCES) $(lib650_SOURCES) \
+
	$(lib651_SOURCES) $(lib652_SOURCES) $(lib653_SOURCES) \
+
	$(lib654_SOURCES) $(lib655_SOURCES) $(lib658_SOURCES) \
+
	$(lib659_SOURCES) $(lib661_SOURCES) $(lib666_SOURCES) \
+
	$(lib667_SOURCES) $(lib668_SOURCES) $(lib670_SOURCES) \
+
	$(lib671_SOURCES) $(lib672_SOURCES) $(lib673_SOURCES) \
+
	$(lib674_SOURCES) $(lib676_SOURCES) $(lib677_SOURCES) \
+
	$(lib678_SOURCES) $(libauthretry_SOURCES) \
+
	$(libntlmconnect_SOURCES) $(libprereq_SOURCES)
DIST_SOURCES = $(libhostname_la_SOURCES) \
	$(am__libstubgss_la_SOURCES_DIST) $(chkhostname_SOURCES) \
	$(lib1156_SOURCES) $(lib1301_SOURCES) $(lib1500_SOURCES) \
@@ -1530,44 +1537,44 @@ DIST_SOURCES = $(libhostname_la_SOURCES) \
	$(lib1973_SOURCES) $(lib1974_SOURCES) $(lib1975_SOURCES) \
	$(lib2301_SOURCES) $(lib2302_SOURCES) $(lib2304_SOURCES) \
	$(lib2305_SOURCES) $(lib2306_SOURCES) $(lib2402_SOURCES) \
-
	$(lib2502_SOURCES) $(lib3010_SOURCES) $(lib3025_SOURCES) \
-
	$(lib3026_SOURCES) $(lib3027_SOURCES) $(lib3100_SOURCES) \
-
	$(lib3101_SOURCES) $(lib500_SOURCES) $(lib501_SOURCES) \
-
	$(lib502_SOURCES) $(lib503_SOURCES) $(lib504_SOURCES) \
-
	$(lib505_SOURCES) $(lib506_SOURCES) $(lib507_SOURCES) \
-
	$(lib508_SOURCES) $(lib509_SOURCES) $(lib510_SOURCES) \
-
	$(lib511_SOURCES) $(lib512_SOURCES) $(lib513_SOURCES) \
-
	$(lib514_SOURCES) $(lib515_SOURCES) $(lib516_SOURCES) \
-
	$(lib517_SOURCES) $(lib518_SOURCES) $(lib519_SOURCES) \
-
	$(lib520_SOURCES) $(lib521_SOURCES) $(lib523_SOURCES) \
-
	$(lib524_SOURCES) $(lib525_SOURCES) $(lib526_SOURCES) \
-
	$(lib527_SOURCES) $(lib529_SOURCES) $(lib530_SOURCES) \
-
	$(lib532_SOURCES) $(lib533_SOURCES) $(lib537_SOURCES) \
-
	$(lib539_SOURCES) $(lib540_SOURCES) $(lib541_SOURCES) \
-
	$(lib542_SOURCES) $(lib543_SOURCES) $(lib544_SOURCES) \
-
	$(lib545_SOURCES) $(lib547_SOURCES) $(lib548_SOURCES) \
-
	$(lib549_SOURCES) $(lib552_SOURCES) $(lib553_SOURCES) \
-
	$(lib554_SOURCES) $(lib555_SOURCES) $(lib556_SOURCES) \
-
	$(lib557_SOURCES) $(lib558_SOURCES) $(lib559_SOURCES) \
-
	$(lib560_SOURCES) $(lib562_SOURCES) $(lib564_SOURCES) \
-
	$(lib565_SOURCES) $(lib566_SOURCES) $(lib567_SOURCES) \
-
	$(lib568_SOURCES) $(lib569_SOURCES) $(lib570_SOURCES) \
-
	$(lib571_SOURCES) $(lib572_SOURCES) $(lib573_SOURCES) \
-
	$(lib574_SOURCES) $(lib575_SOURCES) $(lib576_SOURCES) \
-
	$(lib578_SOURCES) $(lib579_SOURCES) $(lib582_SOURCES) \
-
	$(lib583_SOURCES) $(lib584_SOURCES) $(lib585_SOURCES) \
-
	$(lib586_SOURCES) $(lib587_SOURCES) $(lib589_SOURCES) \
-
	$(lib590_SOURCES) $(lib591_SOURCES) $(lib597_SOURCES) \
-
	$(lib598_SOURCES) $(lib599_SOURCES) $(lib643_SOURCES) \
-
	$(lib645_SOURCES) $(lib650_SOURCES) $(lib651_SOURCES) \
-
	$(lib652_SOURCES) $(lib653_SOURCES) $(lib654_SOURCES) \
-
	$(lib655_SOURCES) $(lib658_SOURCES) $(lib659_SOURCES) \
-
	$(lib661_SOURCES) $(lib666_SOURCES) $(lib667_SOURCES) \
-
	$(lib668_SOURCES) $(lib670_SOURCES) $(lib671_SOURCES) \
-
	$(lib672_SOURCES) $(lib673_SOURCES) $(lib674_SOURCES) \
-
	$(lib676_SOURCES) $(lib677_SOURCES) $(lib678_SOURCES) \
-
	$(libauthretry_SOURCES) $(libntlmconnect_SOURCES) \
-
	$(libprereq_SOURCES)
+
	$(lib2404_SOURCES) $(lib2502_SOURCES) $(lib3010_SOURCES) \
+
	$(lib3025_SOURCES) $(lib3026_SOURCES) $(lib3027_SOURCES) \
+
	$(lib3100_SOURCES) $(lib3101_SOURCES) $(lib500_SOURCES) \
+
	$(lib501_SOURCES) $(lib502_SOURCES) $(lib503_SOURCES) \
+
	$(lib504_SOURCES) $(lib505_SOURCES) $(lib506_SOURCES) \
+
	$(lib507_SOURCES) $(lib508_SOURCES) $(lib509_SOURCES) \
+
	$(lib510_SOURCES) $(lib511_SOURCES) $(lib512_SOURCES) \
+
	$(lib513_SOURCES) $(lib514_SOURCES) $(lib515_SOURCES) \
+
	$(lib516_SOURCES) $(lib517_SOURCES) $(lib518_SOURCES) \
+
	$(lib519_SOURCES) $(lib520_SOURCES) $(lib521_SOURCES) \
+
	$(lib523_SOURCES) $(lib524_SOURCES) $(lib525_SOURCES) \
+
	$(lib526_SOURCES) $(lib527_SOURCES) $(lib529_SOURCES) \
+
	$(lib530_SOURCES) $(lib532_SOURCES) $(lib533_SOURCES) \
+
	$(lib537_SOURCES) $(lib539_SOURCES) $(lib540_SOURCES) \
+
	$(lib541_SOURCES) $(lib542_SOURCES) $(lib543_SOURCES) \
+
	$(lib544_SOURCES) $(lib545_SOURCES) $(lib547_SOURCES) \
+
	$(lib548_SOURCES) $(lib549_SOURCES) $(lib552_SOURCES) \
+
	$(lib553_SOURCES) $(lib554_SOURCES) $(lib555_SOURCES) \
+
	$(lib556_SOURCES) $(lib557_SOURCES) $(lib558_SOURCES) \
+
	$(lib559_SOURCES) $(lib560_SOURCES) $(lib562_SOURCES) \
+
	$(lib564_SOURCES) $(lib565_SOURCES) $(lib566_SOURCES) \
+
	$(lib567_SOURCES) $(lib568_SOURCES) $(lib569_SOURCES) \
+
	$(lib570_SOURCES) $(lib571_SOURCES) $(lib572_SOURCES) \
+
	$(lib573_SOURCES) $(lib574_SOURCES) $(lib575_SOURCES) \
+
	$(lib576_SOURCES) $(lib578_SOURCES) $(lib579_SOURCES) \
+
	$(lib582_SOURCES) $(lib583_SOURCES) $(lib584_SOURCES) \
+
	$(lib585_SOURCES) $(lib586_SOURCES) $(lib587_SOURCES) \
+
	$(lib589_SOURCES) $(lib590_SOURCES) $(lib591_SOURCES) \
+
	$(lib597_SOURCES) $(lib598_SOURCES) $(lib599_SOURCES) \
+
	$(lib643_SOURCES) $(lib645_SOURCES) $(lib650_SOURCES) \
+
	$(lib651_SOURCES) $(lib652_SOURCES) $(lib653_SOURCES) \
+
	$(lib654_SOURCES) $(lib655_SOURCES) $(lib658_SOURCES) \
+
	$(lib659_SOURCES) $(lib661_SOURCES) $(lib666_SOURCES) \
+
	$(lib667_SOURCES) $(lib668_SOURCES) $(lib670_SOURCES) \
+
	$(lib671_SOURCES) $(lib672_SOURCES) $(lib673_SOURCES) \
+
	$(lib674_SOURCES) $(lib676_SOURCES) $(lib677_SOURCES) \
+
	$(lib678_SOURCES) $(libauthretry_SOURCES) \
+
	$(libntlmconnect_SOURCES) $(libprereq_SOURCES)
am__can_run_installinfo = \
  case $$AM_UPDATE_INFO_DIR in \
    n|no|NO) false;; \
@@ -1744,7 +1751,7 @@ USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
-
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
+
USE_NGTCP2_CRYPTO_QUICTLS = @USE_NGTCP2_CRYPTO_QUICTLS@
USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
@@ -1901,7 +1908,8 @@ WARNLESS = ../../lib/warnless.c ../../lib/warnless.h
MULTIBYTE = ../../lib/curl_multibyte.c ../../lib/curl_multibyte.h

# these files are used in every single test program below
-
SUPPORTFILES = ../../lib/timediff.c ../../lib/timediff.h first.c test.h
+
TIMEDIFF = ../../lib/timediff.c ../../lib/timediff.h
+
SUPPORTFILES = $(TIMEDIFF) first.c test.h
chkhostname_SOURCES = chkhostname.c ../../lib/curl_gethostname.c
chkhostname_LDADD = @CURL_NETWORK_LIBS@
chkhostname_DEPENDENCIES = 
@@ -2271,6 +2279,8 @@ lib2306_SOURCES = lib2306.c $(SUPPORTFILES)
lib2306_LDADD = $(TESTUTIL_LIBS)
lib2402_SOURCES = lib2402.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib2402_LDADD = $(TESTUTIL_LIBS)
+
lib2404_SOURCES = lib2404.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+
lib2404_LDADD = $(TESTUTIL_LIBS)
lib2502_SOURCES = lib2502.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib2502_LDADD = $(TESTUTIL_LIBS)
lib3010_SOURCES = lib3010.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
@@ -2866,6 +2876,10 @@ lib2402$(EXEEXT): $(lib2402_OBJECTS) $(lib2402_DEPENDENCIES) $(EXTRA_lib2402_DEP
	@rm -f lib2402$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(lib2402_OBJECTS) $(lib2402_LDADD) $(LIBS)

+
lib2404$(EXEEXT): $(lib2404_OBJECTS) $(lib2404_DEPENDENCIES) $(EXTRA_lib2404_DEPENDENCIES) 
+
	@rm -f lib2404$(EXEEXT)
+
	$(AM_V_CCLD)$(LINK) $(lib2404_OBJECTS) $(lib2404_LDADD) $(LIBS)
+

lib2502$(EXEEXT): $(lib2502_OBJECTS) $(lib2502_DEPENDENCIES) $(EXTRA_lib2502_DEPENDENCIES) 
	@rm -f lib2502$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(lib2502_OBJECTS) $(lib2502_LDADD) $(LIBS)
@@ -3534,6 +3548,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib2305.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib2306.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib2402.Po@am__quote@ # am--include-marker
+
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib2404.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib2502.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib3010.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib3025.Po@am__quote@ # am--include-marker
@@ -5464,6 +5479,7 @@ distclean: distclean-am
	-rm -f ./$(DEPDIR)/lib2305.Po
	-rm -f ./$(DEPDIR)/lib2306.Po
	-rm -f ./$(DEPDIR)/lib2402.Po
+
	-rm -f ./$(DEPDIR)/lib2404.Po
	-rm -f ./$(DEPDIR)/lib2502.Po
	-rm -f ./$(DEPDIR)/lib3010.Po
	-rm -f ./$(DEPDIR)/lib3025.Po
@@ -5818,6 +5834,7 @@ maintainer-clean: maintainer-clean-am
	-rm -f ./$(DEPDIR)/lib2305.Po
	-rm -f ./$(DEPDIR)/lib2306.Po
	-rm -f ./$(DEPDIR)/lib2402.Po
+
	-rm -f ./$(DEPDIR)/lib2404.Po
	-rm -f ./$(DEPDIR)/lib2502.Po
	-rm -f ./$(DEPDIR)/lib3010.Po
	-rm -f ./$(DEPDIR)/lib3025.Po
modified external/curl/tests/libtest/Makefile.inc
@@ -34,7 +34,8 @@ WARNLESS = ../../lib/warnless.c ../../lib/warnless.h
MULTIBYTE = ../../lib/curl_multibyte.c ../../lib/curl_multibyte.h

# these files are used in every single test program below
-
SUPPORTFILES = ../../lib/timediff.c ../../lib/timediff.h first.c test.h
+
TIMEDIFF = ../../lib/timediff.c ../../lib/timediff.h
+
SUPPORTFILES = $(TIMEDIFF) first.c test.h

# These are all libcurl test programs
noinst_PROGRAMS = chkhostname libauthretry libntlmconnect libprereq      \
@@ -71,7 +72,7 @@ noinst_PROGRAMS = chkhostname libauthretry libntlmconnect libprereq \
 lib1960 \
 lib1970 lib1971 lib1972 lib1973 lib1974 lib1975 \
 lib2301 lib2302 lib2304 lib2305 lib2306 \
-
 lib2402 \
+
 lib2402 lib2404 \
 lib2502 \
 lib3010 lib3025 lib3026 lib3027 \
 lib3100 lib3101
@@ -659,6 +660,9 @@ lib2306_LDADD = $(TESTUTIL_LIBS)
lib2402_SOURCES = lib2402.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib2402_LDADD = $(TESTUTIL_LIBS)

+
lib2404_SOURCES = lib2404.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+
lib2404_LDADD = $(TESTUTIL_LIBS)
+

lib2502_SOURCES = lib2502.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib2502_LDADD = $(TESTUTIL_LIBS)

modified external/curl/tests/libtest/lib1560.c
@@ -108,6 +108,16 @@ struct setcase {
  CURLUcode pcode; /* for updating parts */
};

+
struct setgetcase {
+
  const char *in;
+
  const char *set;
+
  const char *out;
+
  unsigned int urlflags; /* for setting the URL */
+
  unsigned int setflags; /* for updating parts */
+
  unsigned int getflags; /* for getting parts */
+
  CURLUcode pcode; /* for updating parts */
+
};
+

struct testcase {
  const char *in;
  const char *out;
@@ -141,6 +151,22 @@ struct clearurlcase {
};

static const struct testcase get_parts_list[] ={
+
  {"1h://example.net", "", 0, 0, CURLUE_BAD_SCHEME},
+
  {"..://example.net", "", 0, 0, CURLUE_BAD_SCHEME},
+
  {"-ht://example.net", "", 0, 0, CURLUE_BAD_SCHEME},
+
  {"+ftp://example.net", "", 0, 0, CURLUE_BAD_SCHEME},
+
  {"hej.hej://example.net",
+
   "hej.hej | [11] | [12] | [13] | example.net | [15] | / | [16] | [17]",
+
   CURLU_NON_SUPPORT_SCHEME, 0, CURLUE_OK},
+
  {"ht-tp://example.net",
+
   "ht-tp | [11] | [12] | [13] | example.net | [15] | / | [16] | [17]",
+
   CURLU_NON_SUPPORT_SCHEME, 0, CURLUE_OK},
+
  {"ftp+more://example.net",
+
   "ftp+more | [11] | [12] | [13] | example.net | [15] | / | [16] | [17]",
+
   CURLU_NON_SUPPORT_SCHEME, 0, CURLUE_OK},
+
  {"f1337://example.net",
+
   "f1337 | [11] | [12] | [13] | example.net | [15] | / | [16] | [17]",
+
   CURLU_NON_SUPPORT_SCHEME, 0, CURLUE_OK},
  {"https://user@example.net?hello# space ",
   "https | user | [12] | [13] | example.net | [15] | / | hello | %20space%20",
   CURLU_ALLOW_SPACE|CURLU_URLENCODE, 0, CURLUE_OK},
@@ -731,8 +757,57 @@ static int checkurl(const char *org, const char *url, const char *out)
  return 0;
}

+
/* 1. Set the URL
+
   2. Set components
+
   3. Extract all components (not URL)
+
*/
+
static const struct setgetcase setget_parts_list[] = {
+
  {"https://example.com",
+
   "path=get,",
+
   "https | [11] | [12] | [13] | example.com | [15] | /get | [16] | [17]",
+
   0, 0, 0, CURLUE_OK},
+
  {"https://example.com",
+
   "path=/get,",
+
   "https | [11] | [12] | [13] | example.com | [15] | /get | [16] | [17]",
+
   0, 0, 0, CURLUE_OK},
+
  {"https://example.com",
+
   "path=g e t,",
+
   "https | [11] | [12] | [13] | example.com | [15] | /g%20e%20t | "
+
   "[16] | [17]",
+
   0, CURLU_URLENCODE, 0, CURLUE_OK},
+
  {NULL, NULL, NULL, 0, 0, 0, CURLUE_OK}
+
};
+

/* !checksrc! disable SPACEBEFORECOMMA 1 */
static const struct setcase set_parts_list[] = {
+
  {"https://example.com",
+
   "path=get,",
+
   "https://example.com/get",
+
   0, 0, CURLUE_OK, CURLUE_OK},
+
  {"https://example.com/",
+
   "scheme=ftp+-.123,",
+
   "ftp+-.123://example.com/",
+
   0, CURLU_NON_SUPPORT_SCHEME, CURLUE_OK, CURLUE_OK},
+
  {"https://example.com/",
+
   "scheme=1234,",
+
   "https://example.com/",
+
   0, CURLU_NON_SUPPORT_SCHEME, CURLUE_OK, CURLUE_BAD_SCHEME},
+
  {"https://example.com/",
+
   "scheme=1http,",
+
   "https://example.com/",
+
   0, CURLU_NON_SUPPORT_SCHEME, CURLUE_OK, CURLUE_BAD_SCHEME},
+
  {"https://example.com/",
+
   "scheme=-ftp,",
+
   "https://example.com/",
+
   0, CURLU_NON_SUPPORT_SCHEME, CURLUE_OK, CURLUE_BAD_SCHEME},
+
  {"https://example.com/",
+
   "scheme=+ftp,",
+
   "https://example.com/",
+
   0, CURLU_NON_SUPPORT_SCHEME, CURLUE_OK, CURLUE_BAD_SCHEME},
+
  {"https://example.com/",
+
   "scheme=.ftp,",
+
   "https://example.com/",
+
   0, CURLU_NON_SUPPORT_SCHEME, CURLUE_OK, CURLUE_BAD_SCHEME},
  {"https://example.com/",
   "host=example.com%2fmoo,",
   "",
@@ -1080,6 +1155,54 @@ static int set_url(void)
  return error;
}

+
/* 1. Set a URL
+
   2. Set one or more parts
+
   3. Extract and compare all parts - not the URL
+
*/
+
static int setget_parts(void)
+
{
+
  int i;
+
  int error = 0;
+

+
  for(i = 0; setget_parts_list[i].set && !error; i++) {
+
    CURLUcode rc;
+
    CURLU *urlp = curl_url();
+
    if(!urlp) {
+
      error++;
+
      break;
+
    }
+
    if(setget_parts_list[i].in)
+
      rc = curl_url_set(urlp, CURLUPART_URL, setget_parts_list[i].in,
+
                        setget_parts_list[i].urlflags);
+
    else
+
      rc = CURLUE_OK;
+
    if(!rc) {
+
      char *url = NULL;
+
      CURLUcode uc = updateurl(urlp, setget_parts_list[i].set,
+
                               setget_parts_list[i].setflags);
+

+
      if(uc != setget_parts_list[i].pcode) {
+
        fprintf(stderr, "updateurl\nin: %s\nreturned %d (expected %d)\n",
+
                setget_parts_list[i].set, (int)uc, setget_parts_list[i].pcode);
+
        error++;
+
      }
+
      if(!uc) {
+
        if(checkparts(urlp, setget_parts_list[i].set, setget_parts_list[i].out,
+
                      setget_parts_list[i].getflags))
+
          error++;        /* add */
+
      }
+
      curl_free(url);
+
    }
+
    else if(rc != CURLUE_OK) {
+
      fprintf(stderr, "Set parts\nin: %s\nreturned %d (expected %d)\n",
+
              setget_parts_list[i].in, (int)rc, 0);
+
      error++;
+
    }
+
    curl_url_cleanup(urlp);
+
  }
+
  return error;
+
}
+

static int set_parts(void)
{
  int i;
@@ -1553,6 +1676,9 @@ int test(char *URL)
{
  (void)URL; /* not used */

+
  if(setget_parts())
+
    return 10;
+

  if(get_url())
    return 3;

modified external/curl/tests/libtest/lib2302.c
@@ -97,7 +97,7 @@ static size_t writecb(char *buffer, size_t size, size_t nitems, void *p)
  CURL *easy = p;
  size_t i;
  size_t incoming = nitems;
-
  struct curl_ws_frame *meta;
+
  const struct curl_ws_frame *meta;
  (void)size;
  for(i = 0; i < nitems; i++)
    printf("%02x ", (unsigned char)buffer[i]);
modified external/curl/tests/libtest/lib2304.c
@@ -41,7 +41,7 @@ static int ping(CURL *curl, const char *send_payload)
static int recv_pong(CURL *curl, const char *exected_payload)
{
  size_t rlen;
-
  struct curl_ws_frame *meta;
+
  const struct curl_ws_frame *meta;
  char buffer[256];
  CURLcode result = curl_ws_recv(curl, buffer, sizeof(buffer), &rlen, &meta);
  if(!result) {
@@ -70,7 +70,7 @@ static int recv_pong(CURL *curl, const char *exected_payload)
static int recv_any(CURL *curl)
{
  size_t rlen;
-
  struct curl_ws_frame *meta;
+
  const struct curl_ws_frame *meta;
  char buffer[256];
  CURLcode result = curl_ws_recv(curl, buffer, sizeof(buffer), &rlen, &meta);
  if(result)
modified external/curl/tests/libtest/lib2305.c
@@ -40,7 +40,7 @@ static void websocket_close(CURL *curl)
static void websocket(CURL *curl)
{
  char buffer[256];
-
  struct curl_ws_frame *meta;
+
  const struct curl_ws_frame *meta;
  size_t nread;
  size_t i = 0;
  FILE *save = fopen(libtest_arg2, FOPEN_WRITETEXT);
added external/curl/tests/libtest/lib2404.c
@@ -0,0 +1,144 @@
+
/***************************************************************************
+
 *                                  _   _ ____  _
+
 *  Project                     ___| | | |  _ \| |
+
 *                             / __| | | | |_) | |
+
 *                            | (__| |_| |  _ <| |___
+
 *                             \___|\___/|_| \_\_____|
+
 *
+
 * Copyright (C) Linus Nielsen Feltzing <linus@haxx.se>
+
 *
+
 * This software is licensed as described in the file COPYING, which
+
 * you should have received as part of this distribution. The terms
+
 * are also available at https://curl.se/docs/copyright.html.
+
 *
+
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+
 * copies of the Software, and permit persons to whom the Software is
+
 * furnished to do so, under the terms of the COPYING file.
+
 *
+
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+
 * KIND, either express or implied.
+
 *
+
 * SPDX-License-Identifier: curl
+
 *
+
 ***************************************************************************/
+
#include "test.h"
+

+
#include "testutil.h"
+
#include "warnless.h"
+
#include "memdebug.h"
+

+
#define TEST_HANG_TIMEOUT 60 * 1000
+

+
#define NUM_HANDLES 4
+

+
int test(char *URL)
+
{
+
  int res = 0;
+
  CURL *curl[NUM_HANDLES] = {0};
+
  int running;
+
  CURLM *m = NULL;
+
  int i;
+
  char target_url[256];
+
  char dnsentry[256];
+
  struct curl_slist *slist = NULL;
+
  char *port = libtest_arg3;
+
  char *address = libtest_arg2;
+

+
  (void)URL;
+

+
  msnprintf(dnsentry, sizeof(dnsentry), "localhost:%s:%s",
+
            port, address);
+
  printf("%s\n", dnsentry);
+
  slist = curl_slist_append(slist, dnsentry);
+
  if(!slist) {
+
    fprintf(stderr, "curl_slist_append() failed\n");
+
    goto test_cleanup;
+
  }
+

+
  start_test_timing();
+

+
  global_init(CURL_GLOBAL_ALL);
+

+
  multi_init(m);
+

+
  multi_setopt(m, CURLMOPT_MAXCONNECTS, 1L);
+

+
  /* get NUM_HANDLES easy handles */
+
  for(i = 0; i < NUM_HANDLES; i++) {
+
    /* get an easy handle */
+
    easy_init(curl[i]);
+
    /* specify target */
+
    msnprintf(target_url, sizeof(target_url),
+
              "https://localhost:%s/path/2404%04i",
+
              port, i + 1);
+
    target_url[sizeof(target_url) - 1] = '\0';
+
    easy_setopt(curl[i], CURLOPT_URL, target_url);
+
    /* go http2 */
+
    easy_setopt(curl[i], CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0);
+
    /* no peer verify */
+
    easy_setopt(curl[i], CURLOPT_SSL_VERIFYPEER, 0L);
+
    easy_setopt(curl[i], CURLOPT_SSL_VERIFYHOST, 0L);
+
    /* wait for first connection established to see if we can share it */
+
    easy_setopt(curl[i], CURLOPT_PIPEWAIT, 1L);
+
    /* go verbose */
+
    easy_setopt(curl[i], CURLOPT_VERBOSE, 1L);
+
    /* include headers */
+
    easy_setopt(curl[i], CURLOPT_HEADER, 1L);
+

+
    easy_setopt(curl[i], CURLOPT_RESOLVE, slist);
+

+
    easy_setopt(curl[i], CURLOPT_STREAM_WEIGHT, (long)128 + i);
+
  }
+

+
  fprintf(stderr, "Start at URL 0\n");
+

+
  for(i = 0; i < NUM_HANDLES; i++) {
+
    /* add handle to multi */
+
    multi_add_handle(m, curl[i]);
+

+
    for(;;) {
+
      struct timeval interval;
+
      fd_set rd, wr, exc;
+
      int maxfd = -99;
+

+
      interval.tv_sec = 1;
+
      interval.tv_usec = 0;
+

+
      multi_perform(m, &running);
+

+
      abort_on_test_timeout();
+

+
      if(!running)
+
        break; /* done */
+

+
      FD_ZERO(&rd);
+
      FD_ZERO(&wr);
+
      FD_ZERO(&exc);
+

+
      multi_fdset(m, &rd, &wr, &exc, &maxfd);
+

+
      /* At this point, maxfd is guaranteed to be greater or equal than -1. */
+

+
      select_test(maxfd + 1, &rd, &wr, &exc, &interval);
+

+
      abort_on_test_timeout();
+
    }
+
    wait_ms(1); /* to ensure different end times */
+
  }
+

+
test_cleanup:
+

+
  /* proper cleanup sequence - type PB */
+

+
  for(i = 0; i < NUM_HANDLES; i++) {
+
    curl_multi_remove_handle(m, curl[i]);
+
    curl_easy_cleanup(curl[i]);
+
  }
+

+
  curl_slist_free_all(slist);
+

+
  curl_multi_cleanup(m);
+
  curl_global_cleanup();
+

+
  return res;
+
}
modified external/curl/tests/libtest/test.h
@@ -440,12 +440,14 @@ extern int unitfail;
  tv_test_start = tutil_tvnow(); \
} while(0)

-
#define exe_test_timedout(Y,Z) do {                                    \
-
  if(tutil_tvdiff(tutil_tvnow(), tv_test_start) > TEST_HANG_TIMEOUT) { \
-
    fprintf(stderr, "%s:%d ABORTING TEST, since it seems "             \
-
                    "that it would have run forever.\n", (Y), (Z));    \
-
    res = TEST_ERR_RUNS_FOREVER;                                       \
-
  }                                                                    \
+
#define exe_test_timedout(Y,Z) do {                                       \
+
  long timediff = tutil_tvdiff(tutil_tvnow(), tv_test_start);             \
+
  if(timediff > (TEST_HANG_TIMEOUT)) {                                    \
+
    fprintf(stderr, "%s:%d ABORTING TEST, since it seems "                \
+
            "that it would have run forever (%ld ms > %ld ms)\n",         \
+
            (Y), (Z), timediff, (long) (TEST_HANG_TIMEOUT));              \
+
    res = TEST_ERR_RUNS_FOREVER;                                          \
+
  }                                                                       \
} while(0)

#define res_test_timedout() \
modified external/curl/tests/runner.pm
@@ -89,6 +89,7 @@ use processhelp qw(
use servers qw(
    checkcmd
    clearlocks
+
    initserverconfig
    serverfortest
    stopserver
    stopservers
@@ -104,6 +105,7 @@ use testutil qw(
    subbase64
    subnewlines
    );
+
use valgrind;


#######################################################################
@@ -124,7 +126,6 @@ our $tortalloc;
my %oldenv;       # environment variables before test is started
my $UNITDIR="./unit";
my $CURLLOG="$LOGDIR/commands.log"; # all command lines run
-
my $SERVERLOGS_LOCK="$LOGDIR/serverlogs.lock"; # server logs advisor read lock
my $defserverlogslocktimeout = 2; # timeout to await server logs lock removal
my $defpostcommanddelay = 0; # delay between command and postcheck sections
my $multiprocess;   # nonzero with a separate test runner process
@@ -159,7 +160,7 @@ sub runner_init {
    $multiprocess = !!$jobs;

    # enable memory debugging if curl is compiled with it
-
    $ENV{'CURL_MEMDEBUG'} = "$LOGDIR/$MEMDUMP";
+
    $ENV{'CURL_MEMDEBUG'} = "$logdir/$MEMDUMP";
    $ENV{'CURL_ENTROPY'}="12345678";
    $ENV{'CURL_FORCETIME'}=1; # for debug NTLM magic
    $ENV{'CURL_GLOBAL_INIT'}=1; # debug curl_global_init/cleanup use
@@ -168,6 +169,13 @@ sub runner_init {
    $ENV{'XDG_CONFIG_HOME'}=$ENV{'HOME'};
    $ENV{'COLUMNS'}=79; # screen width!

+
    # Incorporate the $logdir into the random seed and re-seed the PRNG.
+
    # This gives each runner a unique yet consistent seed which provides
+
    # more unique port number selection in each runner, yet is deterministic
+
    # across runs.
+
    $randseed += unpack('%16C*', $logdir);
+
    srand $randseed;
+

    # create pipes for communication with runner
    my ($thisrunnerr, $thiscontrollerw, $thiscontrollerr, $thisrunnerw);
    pipe $thisrunnerr, $thiscontrollerw;
@@ -178,9 +186,13 @@ sub runner_init {
        # Create a separate process in multiprocess mode
        my $child = fork();
        if(0 == $child) {
-
            # TODO: set up a better signal handler
+
            # TODO: set up better signal handlers
            $SIG{INT} = 'IGNORE';
            $SIG{TERM} = 'IGNORE';
+
            eval {
+
                # some msys2 perl versions don't define SIGUSR1
+
                $SIG{USR1} = 'IGNORE';
+
            };

            $thisrunnerid = $$;
            print "Runner $thisrunnerid starting\n" if($verbose);
@@ -194,12 +206,21 @@ sub runner_init {
            # Set this directory as ours
            $LOGDIR = $logdir;
            mkdir("$LOGDIR/$PIDDIR", 0777);
+
            mkdir("$LOGDIR/$LOCKDIR", 0777);
+

+
            # Initialize various server variables
+
            initserverconfig();

            # handle IPC calls
            event_loop();

            # Can't rely on logmsg here in case it's buffered
            print "Runner $thisrunnerid exiting\n" if($verbose);
+

+
            # To reach this point, either the controller has sent
+
            # runnerac_stopservers() and runnerac_shutdown() or we have called
+
            # runnerabort(). In both cases, there are no more of our servers
+
            # running and we can safely exit.
            exit 0;
        }

@@ -339,6 +360,20 @@ sub readtestkeywords {


#######################################################################
+
# Return a list of log locks that still exist
+
#
+
sub logslocked {
+
    opendir(my $lockdir, "$LOGDIR/$LOCKDIR");
+
    my @locks;
+
    foreach (readdir $lockdir) {
+
        if(/^(.*)\.lock$/) {
+
            push @locks, $1;
+
        }
+
    }
+
    return @locks;
+
}
+

+
#######################################################################
# Memory allocation test and failure torture testing.
#
sub torture {
@@ -484,7 +519,7 @@ sub torture {
            }
        }
        if($fail) {
-
            logmsg " Failed on function number $limit in test.\n",
+
            logmsg " $testnum: torture FAILED: function number $limit in test.\n",
            " invoke with \"-t$limit\" to repeat this single case.\n";
            stopservers($verbose);
            return 1;
@@ -521,7 +556,7 @@ sub singletest_startservers {
    my ($testnum, $testtimings) = @_;

    # remove old test server files before servers are started/verified
-
    unlink("$LOGDIR/$FTPDCMD");
+
    unlink("$LOGDIR/$SERVERCMD");
    unlink("$LOGDIR/$SERVERIN");
    unlink("$LOGDIR/$PROXYIN");

@@ -672,7 +707,7 @@ sub singletest_prepare {
    my @ftpservercmd = getpart("reply", "servercmd");
    push @ftpservercmd, "Testnum $testnum\n";
    # write the instructions to file
-
    writearray("$LOGDIR/$FTPDCMD", \@ftpservercmd);
+
    writearray("$LOGDIR/$SERVERCMD", \@ftpservercmd);

    # create (possibly-empty) files before starting the test
    for my $partsuffix (('', '1', '2', '3', '4')) {
@@ -681,7 +716,7 @@ sub singletest_prepare {
        my $filename=$fileattr{'name'};
        if(@inputfile || $filename) {
            if(!$filename) {
-
                logmsg "ERROR: section client=>file has no name attribute\n";
+
                logmsg " $testnum: IGNORED: section client=>file has no name attribute\n";
                return -1;
            }
            my $fileContent = join('', @inputfile);
@@ -690,8 +725,9 @@ sub singletest_prepare {
            my $path = $filename;
            # cut off the file name part
            $path =~ s/^(.*)\/[^\/]*/$1/;
+
            my $nparts = scalar(split(/\//, $LOGDIR));
            my @parts = split(/\//, $path);
-
            if($parts[0] eq $LOGDIR) {
+
            if(join("/", @parts[0..$nparts-1]) eq $LOGDIR) {
                # the file is in $LOGDIR/
                my $d = shift @parts;
                for(@parts) {
@@ -814,14 +850,14 @@ sub singletest_run {
        }

        if(! -f $CMDLINE) {
-
            logmsg "The tool set in the test case for this: '$tool' does not exist\n";
+
            logmsg " $testnum: IGNORED: The tool set in the test case for this: '$tool' does not exist\n";
            return (-1, 0, 0, "", "", 0);
        }
        $DBGCURL=$CMDLINE;
    }

    if($fail_due_event_based) {
-
        logmsg "This test cannot run event based\n";
+
        logmsg " $testnum: IGNORED: This test cannot run event based\n";
        return (-1, 0, 0, "", "", 0);
    }

@@ -954,13 +990,15 @@ sub singletest_clean {
    }
    if($serverlogslocktimeout) {
        my $lockretry = $serverlogslocktimeout * 20;
-
        while((-f $SERVERLOGS_LOCK) && $lockretry--) {
+
        my @locks;
+
        while((@locks = logslocked()) && $lockretry--) {
            portable_sleep(0.05);
        }
        if(($lockretry < 0) &&
           ($serverlogslocktimeout >= $defserverlogslocktimeout)) {
            logmsg "Warning: server logs lock timeout ",
-
                   "($serverlogslocktimeout seconds) expired\n";
+
                   "($serverlogslocktimeout seconds) expired (locks: " .
+
                   join(", ", @locks) . ")\n";
        }
    }

@@ -992,7 +1030,7 @@ sub singletest_clean {
        foreach my $server (@killtestservers) {
            chomp $server;
            if(stopserver($server)) {
-
                logmsg " killserver FAILED\n";
+
                logmsg " $testnum: killserver FAILED\n";
                return 1; # normal error if asked to fail on unexpected alive
            }
        }
@@ -1016,7 +1054,7 @@ sub singletest_postcheck {
            # Must run the postcheck command in torture mode in order
            # to clean up, but the result can't be relied upon.
            if($rc != 0 && !$torture) {
-
                logmsg " postcheck FAILED\n";
+
                logmsg " $testnum: postcheck FAILED\n";
                return -1;
            }
        }
@@ -1137,7 +1175,7 @@ sub runner_test_run {
# Async call runner_clearlocks
# Called by controller
sub runnerac_clearlocks {
-
    controlleripccall(\&runner_clearlocks, @_);
+
    return controlleripccall(\&runner_clearlocks, @_);
}

# Async call runner_shutdown
@@ -1146,36 +1184,38 @@ sub runnerac_clearlocks {
# Called by controller
sub runnerac_shutdown {
    my ($runnerid)=$_[0];
-
    controlleripccall(\&runner_shutdown, @_);
+
    my $err = controlleripccall(\&runner_shutdown, @_);

    # These have no more use
    close($controllerw{$runnerid});
    undef $controllerw{$runnerid};
    close($controllerr{$runnerid});
    undef $controllerr{$runnerid};
+
    return $err;
}

# Async call of runner_stopservers
# Called by controller
sub runnerac_stopservers {
-
    controlleripccall(\&runner_stopservers, @_);
+
    return controlleripccall(\&runner_stopservers, @_);
}

# Async call of runner_test_preprocess
# Called by controller
sub runnerac_test_preprocess {
-
    controlleripccall(\&runner_test_preprocess, @_);
+
    return controlleripccall(\&runner_test_preprocess, @_);
}

# Async call of runner_test_run
# Called by controller
sub runnerac_test_run {
-
    controlleripccall(\&runner_test_run, @_);
+
    return controlleripccall(\&runner_test_run, @_);
}

###################################################################
# Call an arbitrary function via IPC
# The first argument is the function reference, the second is the runner ID
+
# Returns 0 on success, -1 on error writing to runner
# Called by controller (indirectly, via a more specific function)
sub controlleripccall {
    my $funcref = shift @_;
@@ -1189,30 +1229,44 @@ sub controlleripccall {
    my $margs = freeze \@_;

    # Send IPC call via pipe
-
    syswrite($controllerw{$runnerid}, (pack "L", length($margs)) . $margs);
+
    my $err;
+
    while(! defined ($err = syswrite($controllerw{$runnerid}, (pack "L", length($margs)) . $margs)) || $err <= 0) {
+
        if((!defined $err && ! $!{EINTR}) || (defined $err && $err == 0)) {
+
            # Runner has likely died
+
            return -1;
+
        }
+
        # system call was interrupted, probably by ^C; restart it so we stay in sync
+
    }

    if(!$multiprocess) {
        # Call the remote function here in single process mode
        ipcrecv();
     }
+
     return 0;
}

###################################################################
# Receive async response of a previous call via IPC
-
# The first return value is the runner ID
+
# The first return value is the runner ID or undef on error
# Called by controller
sub runnerar {
    my ($runnerid) = @_;
    my $err;
    my $datalen;
    while(! defined ($err = sysread($controllerr{$runnerid}, $datalen, 4)) || $err <= 0) {
-
        $!{EINTR} || die "error in runnerar: $!\n";
+
        if((!defined $err && ! $!{EINTR}) || (defined $err && $err == 0)) {
+
            # Runner is likely dead and closed the pipe
+
            return undef;
+
        }
        # system call was interrupted, probably by ^C; restart it so we stay in sync
    }
    my $len=unpack("L", $datalen);
    my $buf;
    while(! defined ($err = sysread($controllerr{$runnerid}, $buf, $len)) || $err <= 0) {
-
        $!{EINTR} || die "error in runnerar: $!\n";
+
        if((!defined $err && ! $!{EINTR}) || (defined $err && $err == 0)) {
+
            # Runner is likely dead and closed the pipe
+
            return undef;
+
        }
        # system call was interrupted, probably by ^C; restart it so we stay in sync
    }

@@ -1226,7 +1280,9 @@ sub runnerar {
}

###################################################################
-
# Returns runner ID if a response from an async call is ready
+
# Returns runner ID if a response from an async call is ready or error
+
# First value is ready, second is error, however an error case shows up
+
# as ready in Linux, so you can't trust it.
# argument is 0 for nonblocking, undef for blocking, anything else for timeout
# Called by controller
sub runnerar_ready {
@@ -1242,36 +1298,65 @@ sub runnerar_ready {
            $maxfileno = $fd;
        }
    }
+
    $maxfileno || die "Internal error: no runners are available to wait on\n";

    # Wait for any pipe from any runner to be ready
+
    # This may be interrupted and return EINTR, but this is ignored and the
+
    # caller will need to later call this function again.
    # TODO: this is relatively slow with hundreds of fds
-
    # TODO: handle errors
-
    if(select(my $rout=$rin, undef, undef, $blocking)) {
+
    my $ein = $rin;
+
    if(select(my $rout=$rin, undef, my $eout=$ein, $blocking) >= 1) {
        for my $fd (0..$maxfileno) {
+
            # Return an error condition first in case it's both
+
            if(vec($eout, $fd, 1)) {
+
                return (undef, $idbyfileno{$fd});
+
            }
            if(vec($rout, $fd, 1)) {
-
                return $idbyfileno{$fd};
+
                return ($idbyfileno{$fd}, undef);
            }
        }
        die "Internal pipe readiness inconsistency\n";
    }
-
    return undef;
+
    return (undef, undef);
+
}
+

+

+
###################################################################
+
# Cleanly abort and exit the runner
+
# This uses print since there is no longer any controller to write logs.
+
sub runnerabort{
+
    print "Controller is gone: runner $$ for $LOGDIR exiting\n";
+
    my ($error, $logs) = runner_stopservers();
+
    print $logs;
+
    runner_shutdown();
}

###################################################################
# Receive an IPC call in the runner and execute it
# The IPC is read from the $runnerr pipe and the response is
# written to the $runnerw pipe
+
# Returns 0 if more IPC calls are expected or 1 if the runner should exit
sub ipcrecv {
    my $err;
    my $datalen;
    while(! defined ($err = sysread($runnerr, $datalen, 4)) || $err <= 0) {
-
        $!{EINTR} || die "error in ipcrecv: $!\n";
+
        if((!defined $err && ! $!{EINTR}) || (defined $err && $err == 0)) {
+
            # pipe has closed; controller is gone and we must exit
+
            runnerabort();
+
            # Special case: no response will be forthcoming
+
            return 1;
+
        }
        # system call was interrupted, probably by ^C; restart it so we stay in sync
    }
    my $len=unpack("L", $datalen);
    my $buf;
    while(! defined ($err = sysread($runnerr, $buf, $len)) || $err <= 0) {
-
        $!{EINTR} || die "error in ipcrecv: $!\n";
+
        if((!defined $err && ! $!{EINTR}) || (defined $err && $err == 0)) {
+
            # pipe has closed; controller is gone and we must exit
+
            runnerabort();
+
            # Special case: no response will be forthcoming
+
            return 1;
+
        }
        # system call was interrupted, probably by ^C; restart it so we stay in sync
    }

@@ -1289,7 +1374,7 @@ sub ipcrecv {
    }
    elsif($funcname eq "runner_shutdown") {
        runner_shutdown(@$argsarrayref);
-
        # Special case: no response
+
        # Special case: no response will be forthcoming
        return 1;
    }
    elsif($funcname eq "runner_stopservers") {
@@ -1308,7 +1393,15 @@ sub ipcrecv {
    # Marshall the results to return
    $buf = freeze \@res;

-
    syswrite($runnerw, (pack "L", length($buf)) . $buf);
+
    while(! defined ($err = syswrite($runnerw, (pack "L", length($buf)) . $buf)) || $err <= 0) {
+
        if((!defined $err && ! $!{EINTR}) || (defined $err && $err == 0)) {
+
            # pipe has closed; controller is gone and we must exit
+
            runnerabort();
+
            # Special case: no response will be forthcoming
+
            return 1;
+
        }
+
        # system call was interrupted, probably by ^C; restart it so we stay in sync
+
    }

    return 0;
}
modified external/curl/tests/runtests.1
@@ -22,8 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH runtests.pl 1 "April 26, 2023" "untests 8.1.2" runtests
-

+
.TH runtests.pl 1 "06 Jun 2023" runtests runtests
.SH NAME
runtests.pl \- run one or more test cases
.SH SYNOPSIS
@@ -66,7 +65,9 @@ Display test results in automake style output (PASS/FAIL: [number] [name]).
Provide a path to a custom curl binary to run the tests with. Default is the
curl executable in the build tree.
.IP "-d"
-
Enable protocol debug: have the servers display protocol output.
+
Enable protocol debug: have the servers display protocol output.  If used in
+
conjuction with parallel testing, it will be difficult to associate the logs
+
with the test being run.
.IP "-E <exclude_file>"
Load the \fBexclude_file\fP with additional reasons why certain tests
should be skipped. Useful when testing with external HTTP proxies in
@@ -88,11 +89,18 @@ run the specified test case. Simply (set a break-point and) type 'run' to
start.
.IP "-gw"
Run the given test(s) with gdb as a windowed application.
-
.IP "-h"
+
.IP "-h, --help"
Displays a help text about this program's command line options.
.IP "-k"
Keep output and log files in log/ after a test run, even if no error was
detected. Useful for debugging.
+
.IP "-j[num]"
+
Spawn num processes to run tests. This defaults to 0 to run tests serially
+
within a single process. Using a number greater than one allows multiple tests
+
to run in parallel, speeding up a test run. The optimum number is dependent on
+
the system and set of tests to run, but 7*number of CPU cores is a good figure
+
to start with, or 1.3*number of CPU cores if Valgrind is in use. Enabling
+
parallel tests is not recommended in conjunction with the \-g option.
.IP "-L <file>"
Load and execute the specified file which should contain perl code.
This option allows one to change \fIruntests.pl\fP behaviour by overwriting
@@ -162,7 +170,9 @@ combination with \fI-g\fP.
.IP "-u"
Error instead of warning on server unexpectedly alive.
.IP "-v"
-
Enable verbose output. Speaks more than default.
+
Enable verbose output. Speaks more than by default. If used in conjuction with
+
parallel testing, it will be difficult to associate the logs with the test
+
being run.
.IP "-vc <curl>"
Provide a path to a custom curl binary to run when verifying that the servers
running are indeed our test servers. Default is the curl executable in the
modified external/curl/tests/runtests.pl
@@ -160,8 +160,13 @@ use constant {
    ST_PREPROCESS => 3,
    ST_RUN => 4,
};
-
my $singletest_state = ST_INIT; # current state of singletest()
-

+
my %singletest_state;  # current state of singletest() by runner ID
+
my %singletest_logs;   # log messages while in singletest array ref by runner
+
my $singletest_bufferedrunner; # runner ID which is buffering logs
+
my %runnerids;         # runner IDs by number
+
my @runnersidle;       # runner IDs idle and ready to execute a test
+
my %countforrunner;    # test count by runner ID
+
my %runnersrunning;    # tests currently running by runner ID

#######################################################################
# variables that command line options may set
@@ -173,7 +178,6 @@ my $clearlocks; # force removal of files by killing locking processes
my $postmortem;   # display detailed info about failed tests
my $run_disabled; # run the specific tests even if listed in DISABLED
my $scrambleorder;
-
my $randseed = 0;
my $jobs = 0;

# Azure Pipelines specific variables
@@ -184,8 +188,15 @@ my $AZURE_RESULT_ID = 0;
# logmsg is our general message logging subroutine.
#
sub logmsg {
+
    if($singletest_bufferedrunner) {
+
        # Logs are currently being buffered
+
        return singletest_logmsg(@_);
+
    }
    for(@_) {
        my $line = $_;
+
        if(!$line) {
+
            next;
+
        }
        if ($is_wsl) {
            # use \r\n for WSL shell
            $line =~ s/\r?\n$/\r\n/g;
@@ -194,14 +205,78 @@ sub logmsg {
    }
}

+
#######################################################################
+
# enable logmsg buffering for the given runner ID
+
#
+
sub logmsg_bufferfortest {
+
    my ($runnerid)=@_;
+
    if($jobs) {
+
        # Only enable buffering in multiprocess mode
+
        $singletest_bufferedrunner = $runnerid;
+
    }
+
}
+
#######################################################################
+
# Store a log message in a buffer for this test
+
# The messages can then be displayed all at once at the end of the test
+
# which prevents messages from different tests from being interleaved.
+
sub singletest_logmsg {
+
    if(!exists $singletest_logs{$singletest_bufferedrunner}) {
+
        # initialize to a reference to an empty anonymous array
+
        $singletest_logs{$singletest_bufferedrunner} = [];
+
    }
+
    my $logsref = $singletest_logs{$singletest_bufferedrunner};
+
    push @$logsref, @_;
+
}
+

+
#######################################################################
+
# Stop buffering log messages, but don't touch them
+
sub singletest_unbufferlogs {
+
    undef $singletest_bufferedrunner;
+
}
+

+
#######################################################################
+
# Clear the buffered log messages & stop buffering after returning them
+
sub singletest_dumplogs {
+
    if(!defined $singletest_bufferedrunner) {
+
        # probably not multiprocess mode and logs weren't buffered
+
        return undef;
+
    }
+
    my $logsref = $singletest_logs{$singletest_bufferedrunner};
+
    my $msg = join("", @$logsref);
+
    delete $singletest_logs{$singletest_bufferedrunner};
+
    singletest_unbufferlogs();
+
    return $msg;
+
}
+

sub catch_zap {
    my $signame = shift;
-
    logmsg "runtests.pl received SIG$signame, exiting\n";
+
    print "runtests.pl received SIG$signame, exiting\r\n";
    $globalabort = 1;
}
$SIG{INT} = \&catch_zap;
$SIG{TERM} = \&catch_zap;

+
sub catch_usr1 {
+
    print "runtests.pl internal state:\r\n";
+
    print scalar(%runnersrunning) . " busy test runner(s) of " . scalar(keys %runnerids) . "\r\n";
+
    foreach my $rid (sort(keys(%runnersrunning))) {
+
        my $runnernum = "unknown";
+
        foreach my $rnum (keys %runnerids) {
+
            if($runnerids{$rnum} == $rid) {
+
                $runnernum = $rnum;
+
                last;
+
            }
+
        }
+
        print "Runner $runnernum (id $rid) running test $runnersrunning{$rid} in state $singletest_state{$rid}\r\n";
+
    }
+
}
+

+
eval {
+
    # some msys2 perl versions don't define SIGUSR1
+
    $SIG{USR1} = \&catch_usr1;
+
};
+
$SIG{PIPE} = 'IGNORE';  # these errors are captured in the read/write calls
+

##########################################################################
# Clear all possible '*_proxy' environment variables for various protocols
# to prevent them to interfere with our testing!
@@ -276,8 +351,10 @@ sub cleardir {
    opendir(my $dh, $dir) ||
        return 0; # can't open dir
    while($file = readdir($dh)) {
-
        # Don't clear the $PIDDIR since those need to live beyond one test
-
        if(($file !~ /^(\.|\.\.)\z/) && "$file" ne $PIDDIR) {
+
        # Don't clear the $PIDDIR or $LOCKDIR since those need to live beyond
+
        # one test
+
        if(($file !~ /^(\.|\.\.)\z/) &&
+
            "$file" ne $PIDDIR && "$file" ne $LOCKDIR) {
            if(-d "$dir/$file") {
                if(!cleardir("$dir/$file")) {
                    $done = 0;
@@ -344,7 +421,7 @@ sub showdiff {
# some pattern that is allowed to differ, output test results
#
sub compare {
-
    my ($testnum, $testname, $subject, $firstref, $secondref)=@_;
+
    my ($runnerid, $testnum, $testname, $subject, $firstref, $secondref)=@_;

    my $result = compareparts($firstref, $secondref);

@@ -354,7 +431,7 @@ sub compare {

        if(!$short) {
            logmsg "\n $testnum: $subject FAILED:\n";
-
            my $logdir = getlogdir($testnum);
+
            my $logdir = getrunnerlogdir($runnerid);
            logmsg showdiff($logdir, $firstref, $secondref);
        }
        elsif(!$automakestyle) {
@@ -912,11 +989,26 @@ sub updatetesttimings {


#######################################################################
-
# Return the log directory for the given test
-
# There is only one directory for the moment
-
sub getlogdir {
-
    my $testnum = $_[0];
-
    return $LOGDIR;
+
# Return the log directory for the given test runner
+
sub getrunnernumlogdir {
+
    my $runnernum = $_[0];
+
    return $jobs > 1 ? "$LOGDIR/$runnernum" : $LOGDIR;
+
}
+

+
#######################################################################
+
# Return the log directory for the given test runner ID
+
sub getrunnerlogdir {
+
    my $runnerid = $_[0];
+
    if($jobs <= 1) {
+
        return $LOGDIR;
+
    }
+
    # TODO: speed up this O(n) operation
+
    for my $runnernum (keys %runnerids) {
+
        if($runnerid eq $runnerids{$runnernum}) {
+
            return "$LOGDIR/$runnernum";
+
        }
+
    }
+
    die "Internal error: runner ID $runnerid not found";
}


@@ -1094,7 +1186,7 @@ sub singletest_check {
        return -2;
    }

-
    my $logdir = getlogdir($testnum);
+
    my $logdir = getrunnerlogdir($runnerid);
    my @err = getpart("verify", "errorcode");
    my $errorcode = $err[0] || "0";
    my $ok="";
@@ -1147,7 +1239,7 @@ sub singletest_check {
            subnewlines(0, \$_) for @validstdout;
        }

-
        $res = compare($testnum, $testname, "stdout", \@actual, \@validstdout);
+
        $res = compare($runnerid, $testnum, $testname, "stdout", \@actual, \@validstdout);
        if($res) {
            return -1;
        }
@@ -1199,7 +1291,7 @@ sub singletest_check {
            chomp($validstderr[-1]);
        }

-
        $res = compare($testnum, $testname, "stderr", \@actual, \@validstderr);
+
        $res = compare($runnerid, $testnum, $testname, "stderr", \@actual, \@validstderr);
        if($res) {
            return -1;
        }
@@ -1257,7 +1349,7 @@ sub singletest_check {
            return -1;
        }

-
        $res = compare($testnum, $testname, "protocol", \@out, \@protocol);
+
        $res = compare($runnerid, $testnum, $testname, "protocol", \@out, \@protocol);
        if($res) {
            return -1;
        }
@@ -1323,7 +1415,7 @@ sub singletest_check {
    if(!$replyattr{'nocheck'} && (@reply || $replyattr{'sendzero'})) {
        # verify the received data
        my @out = loadarray($CURLOUT);
-
        $res = compare($testnum, $testname, "data", \@out, \@reply);
+
        $res = compare($runnerid, $testnum, $testname, "data", \@out, \@reply);
        if ($res) {
            return -1;
        }
@@ -1351,7 +1443,7 @@ sub singletest_check {
            }
        }

-
        $res = compare($testnum, $testname, "upload", \@out, \@upload);
+
        $res = compare($runnerid, $testnum, $testname, "upload", \@out, \@upload);
        if ($res) {
            return -1;
        }
@@ -1394,7 +1486,7 @@ sub singletest_check {
            subnewlines(0, \$_) for @proxyprot;
        }

-
        $res = compare($testnum, $testname, "proxy", \@out, \@proxyprot);
+
        $res = compare($runnerid, $testnum, $testname, "proxy", \@out, \@proxyprot);
        if($res) {
            return -1;
        }
@@ -1415,14 +1507,25 @@ sub singletest_check {

            my $filename=$hash{'name'};
            if(!$filename) {
-
                logmsg "ERROR: section verify=>file$partsuffix ".
+
                logmsg " $testnum: IGNORED: section verify=>file$partsuffix ".
                       "has no name attribute\n";
-
                runnerac_stopservers($runnerid);
-
                # TODO: this is a blocking call that will stall the controller,
-
                # but this error condition should never happen except during
-
                # development.
-
                my ($rid, $unexpected, $logs) = runnerar($runnerid);
-
                logmsg $logs;
+
                if (runnerac_stopservers($runnerid)) {
+
                    logmsg "ERROR: runner $runnerid seems to have died\n";
+
                } else {
+

+
                    # TODO: this is a blocking call that will stall the controller,
+
                    if($verbose) {
+
                        logmsg "WARNING: blocking call in async function\n";
+
                    }
+
                    # but this error condition should never happen except during
+
                    # development.
+
                    my ($rid, $unexpected, $logs) = runnerar($runnerid);
+
                    if(!$rid) {
+
                        logmsg "ERROR: runner $runnerid seems to have died\n";
+
                    } else {
+
                        logmsg $logs;
+
                    }
+
                }
                # timestamp test result verification end
                $timevrfyend{$testnum} = Time::HiRes::time();
                return -1;
@@ -1458,7 +1561,7 @@ sub singletest_check {
                @generated = @newgen;
            }

-
            $res = compare($testnum, $testname, "output ($filename)",
+
            $res = compare($runnerid, $testnum, $testname, "output ($filename)",
                           \@generated, \@outfile);
            if($res) {
                return -1;
@@ -1474,7 +1577,7 @@ sub singletest_check {
    if(@socksprot) {
        # Verify the sent SOCKS proxy details
        my @out = loadarray("$logdir/$SOCKSIN");
-
        $res = compare($testnum, $testname, "socks", \@out, \@socksprot);
+
        $res = compare($runnerid, $testnum, $testname, "socks", \@out, \@socksprot);
        if($res) {
            return -1;
        }
@@ -1499,7 +1602,7 @@ sub singletest_check {
            logmsg sprintf("\n%s returned $cmdres, when expecting %s\n",
                           (!$tool)?"curl":$tool, $errorcode);
        }
-
        logmsg " exit FAILED\n";
+
        logmsg " $testnum: exit FAILED\n";
        # timestamp test result verification end
        $timevrfyend{$testnum} = Time::HiRes::time();
        return -1;
@@ -1511,6 +1614,7 @@ sub singletest_check {
            my $cmdtype = $cmdhash{'type'} || "default";
            logmsg "\n** ALERT! memory tracking with no output file?\n"
                if(!$cmdtype eq "perl");
+
            $ok .= "-"; # problem with memory checking
        }
        else {
            my @memdata=`$memanalyze "$logdir/$MEMDUMP"`;
@@ -1627,10 +1731,9 @@ sub singletest_success {
    }
}

-

#######################################################################
# Run a single specified test case
-
# This is structured as a state machine which changes states after an
+
# This is structured as a state machine which changes state after an
# asynchronous call is made that awaits a response. The function returns with
# an error code and a flag that indicates if the state machine has completed,
# which means (if not) the function must be called again once the response has
@@ -1639,30 +1742,49 @@ sub singletest_success {
sub singletest {
    my ($runnerid, $testnum, $count, $total)=@_;

-
    if($singletest_state == ST_INIT) {
-
        my $logdir = getlogdir($testnum);
-
        # first, remove all lingering log files
-
        if(!cleardir($logdir) && $clearlocks) {
-
            runnerac_clearlocks($runnerid, $logdir);
-
            $singletest_state = ST_CLEARLOCKS;
+
    # start buffering logmsg; stop it on return
+
    logmsg_bufferfortest($runnerid);
+
    if(!exists $singletest_state{$runnerid}) {
+
        # First time in singletest() for this test
+
        $singletest_state{$runnerid} = ST_INIT;
+
    }
+

+
    if($singletest_state{$runnerid} == ST_INIT) {
+
        my $logdir = getrunnerlogdir($runnerid);
+
        # first, remove all lingering log & lock files
+
        if((!cleardir($logdir) || !cleardir("$logdir/$LOCKDIR"))
+
            && $clearlocks) {
+
            # On Windows, lock files can't be deleted when the process still
+
            # has them open, so kill those processes first
+
            if(runnerac_clearlocks($runnerid, "$logdir/$LOCKDIR")) {
+
                logmsg "ERROR: runner $runnerid seems to have died\n";
+
                $singletest_state{$runnerid} = ST_INIT;
+
                return (-1, 0);
+
            }
+
            $singletest_state{$runnerid} = ST_CLEARLOCKS;
        } else {
-
            $singletest_state = ST_INITED;
+
            $singletest_state{$runnerid} = ST_INITED;
            # Recursively call the state machine again because there is no
            # event expected that would otherwise trigger a new call.
            return singletest(@_);
        }

-
    } elsif($singletest_state == ST_CLEARLOCKS) {
+
    } elsif($singletest_state{$runnerid} == ST_CLEARLOCKS) {
        my ($rid, $logs) = runnerar($runnerid);
+
        if(!$rid) {
+
            logmsg "ERROR: runner $runnerid seems to have died\n";
+
            $singletest_state{$runnerid} = ST_INIT;
+
            return (-1, 0);
+
        }
        logmsg $logs;
-
        my $logdir = getlogdir($testnum);
+
        my $logdir = getrunnerlogdir($runnerid);
        cleardir($logdir);
-
        $singletest_state = ST_INITED;
+
        $singletest_state{$runnerid} = ST_INITED;
        # Recursively call the state machine again because there is no
        # event expected that would otherwise trigger a new call.
        return singletest(@_);

-
    } elsif($singletest_state == ST_INITED) {
+
    } elsif($singletest_state{$runnerid} == ST_INITED) {
        ###################################################################
        # Restore environment variables that were modified in a previous run.
        # Test definition may instruct to (un)set environment vars.
@@ -1679,24 +1801,33 @@ sub singletest {
        # Register the test case with the CI environment
        citest_starttest($testnum);

-
        runnerac_test_preprocess($runnerid, $testnum);
-
        $singletest_state = ST_PREPROCESS;
+
        if(runnerac_test_preprocess($runnerid, $testnum)) {
+
            logmsg "ERROR: runner $runnerid seems to have died\n";
+
            $singletest_state{$runnerid} = ST_INIT;
+
            return (-1, 0);
+
        }
+
        $singletest_state{$runnerid} = ST_PREPROCESS;

-
    } elsif($singletest_state == ST_PREPROCESS) {
+
    } elsif($singletest_state{$runnerid} == ST_PREPROCESS) {
        my ($rid, $why, $error, $logs, $testtimings) = runnerar($runnerid);
+
        if(!$rid) {
+
            logmsg "ERROR: runner $runnerid seems to have died\n";
+
            $singletest_state{$runnerid} = ST_INIT;
+
            return (-1, 0);
+
        }
        logmsg $logs;
+
        updatetesttimings($testnum, %$testtimings);
        if($error == -2) {
            if($postmortem) {
                # Error indicates an actual problem starting the server, so
                # display the server logs
-
                displaylogs($testnum);
+
                displaylogs($rid, $testnum);
            }
        }
-
        updatetesttimings($testnum, %$testtimings);

        #######################################################################
        # Load test file for this test number
-
        my $logdir = getlogdir($testnum);
+
        my $logdir = getrunnerlogdir($runnerid);
        loadtest("${logdir}/test${testnum}");

        #######################################################################
@@ -1705,7 +1836,8 @@ sub singletest {
        if($error) {
            # Submit the test case result with the CI environment
            citest_finishtest($testnum, $error);
-
            $singletest_state = ST_INIT;
+
            $singletest_state{$runnerid} = ST_INIT;
+
            logmsg singletest_dumplogs();
            return ($error, 0);
        }

@@ -1715,11 +1847,20 @@ sub singletest {
        my $CURLOUT;
        my $tool;
        my $usedvalgrind;
-
        runnerac_test_run($runnerid, $testnum);
-
        $singletest_state = ST_RUN;
+
        if(runnerac_test_run($runnerid, $testnum)) {
+
            logmsg "ERROR: runner $runnerid seems to have died\n";
+
            $singletest_state{$runnerid} = ST_INIT;
+
            return (-1, 0);
+
        }
+
        $singletest_state{$runnerid} = ST_RUN;

-
    } elsif($singletest_state == ST_RUN) {
+
    } elsif($singletest_state{$runnerid} == ST_RUN) {
        my ($rid, $error, $logs, $testtimings, $cmdres, $CURLOUT, $tool, $usedvalgrind) = runnerar($runnerid);
+
        if(!$rid) {
+
            logmsg "ERROR: runner $runnerid seems to have died\n";
+
            $singletest_state{$runnerid} = ST_INIT;
+
            return (-1, 0);
+
        }
        logmsg $logs;
        updatetesttimings($testnum, %$testtimings);
        if($error == -1) {
@@ -1728,7 +1869,8 @@ sub singletest {
            my $err = ignoreresultcode($testnum);
            # Submit the test case result with the CI environment
            citest_finishtest($testnum, $err);
-
            $singletest_state = ST_INIT;
+
            $singletest_state{$runnerid} = ST_INIT;
+
            logmsg singletest_dumplogs();
            # return a test failure, either to be reported or to be ignored
            return ($err, 0);
        }
@@ -1737,7 +1879,8 @@ sub singletest {
            timestampskippedevents($testnum);
            # Submit the test case result with the CI environment
            citest_finishtest($testnum, $error);
-
            $singletest_state = ST_INIT;
+
            $singletest_state{$runnerid} = ST_INIT;
+
            logmsg singletest_dumplogs();
            return ($error, 0);
        }
        elsif($error > 0) {
@@ -1745,7 +1888,8 @@ sub singletest {
            $timevrfyend{$testnum} = Time::HiRes::time();
            # Submit the test case result with the CI environment
            citest_finishtest($testnum, $error);
-
            $singletest_state = ST_INIT;
+
            $singletest_state{$runnerid} = ST_INIT;
+
            logmsg singletest_dumplogs();
            return ($error, 0);
        }

@@ -1753,7 +1897,7 @@ sub singletest {
        # Verify that the test succeeded
        #
        # Load test file for this test number
-
        my $logdir = getlogdir($testnum);
+
        my $logdir = getrunnerlogdir($runnerid);
        loadtest("${logdir}/test${testnum}");
        readtestkeywords();

@@ -1762,7 +1906,8 @@ sub singletest {
            my $err = ignoreresultcode($testnum);
            # Submit the test case result with the CI environment
            citest_finishtest($testnum, $err);
-
            $singletest_state = ST_INIT;
+
            $singletest_state{$runnerid} = ST_INIT;
+
            logmsg singletest_dumplogs();
            # return a test failure, either to be reported or to be ignored
            return ($err, 0);
        }
@@ -1771,7 +1916,8 @@ sub singletest {
            # test success code
            # Submit the test case result with the CI environment
            citest_finishtest($testnum, $cmdres);
-
            $singletest_state = ST_INIT;
+
            $singletest_state{$runnerid} = ST_INIT;
+
            logmsg singletest_dumplogs();
            return ($cmdres, 0);
        }

@@ -1782,10 +1928,12 @@ sub singletest {

        # Submit the test case result with the CI environment
        citest_finishtest($testnum, 0);
-
        $singletest_state = ST_INIT;
+
        $singletest_state{$runnerid} = ST_INIT;

+
        logmsg singletest_dumplogs();
        return (0, 0);  # state machine is finished
    }
+
    singletest_unbufferlogs();
    return (0, 1);  # state machine must be called again on event
}

@@ -1937,6 +2085,41 @@ sub ignoreresultcode {
    return 0;
}

+
#######################################################################
+
# Put the given runner ID onto the queue of runners ready for a new task
+
#
+
sub runnerready {
+
    my ($runnerid)=@_;
+
    push @runnersidle, $runnerid;
+
}
+

+
#######################################################################
+
# Create test runners
+
#
+
sub createrunners {
+
    my ($numrunners)=@_;
+
    if(! $numrunners) {
+
        $numrunners++;
+
    }
+
    # create $numrunners runners with minimum 1
+
    for my $runnernum (1..$numrunners) {
+
        my $dir = getrunnernumlogdir($runnernum);
+
        cleardir($dir);
+
        mkdir($dir, 0777);
+
        $runnerids{$runnernum} = runner_init($dir, $jobs);
+
        runnerready($runnerids{$runnernum});
+
    }
+
}
+

+
#######################################################################
+
# Pick a test runner for the given test
+
#
+
sub pickrunner {
+
    my ($testnum)=@_;
+
    scalar(@runnersidle) || die "No runners available";
+

+
    return pop @runnersidle;
+
}

#######################################################################
# Check options to this test program
@@ -2159,7 +2342,7 @@ Usage: runtests.pl [options] [test selection(s)]
  -g       run the test case with gdb
  -gw      run the test case with gdb as a windowed application
  -h       this help text
-
  -j[N]    spawn this number of processes to run tests (default 0, max. 1)
+
  -j[N]    spawn this number of processes to run tests (default 0)
  -k       keep stdout and stderr files present after tests
  -L path  require an additional perl library file to replace certain functions
  -l       list all test case names/descriptions
@@ -2310,8 +2493,11 @@ if ($gdbthis) {
# clear and create logging directory:
#

+
# TODO: figure how to get around this. This dir is needed for checksystemfeatures()
+
# Maybe create & use & delete a temporary directory in that function
cleardir($LOGDIR);
mkdir($LOGDIR, 0777);
+
mkdir("$LOGDIR/$LOCKDIR", 0777);

#######################################################################
# initialize some variables
@@ -2333,6 +2519,7 @@ if(!$listonly) {

#######################################################################
# initialize configuration needed to set up servers
+
# TODO: rearrange things so this can be called only in runner_init()
#
initserverconfig();

@@ -2491,8 +2678,8 @@ sub displaylogcontent {
}

sub displaylogs {
-
    my ($testnum)=@_;
-
    my $logdir = getlogdir($testnum);
+
    my ($runnerid, $testnum)=@_;
+
    my $logdir = getrunnerlogdir($runnerid);
    opendir(DIR, "$logdir") ||
        die "can't open dir: $!";
    my @logs = readdir(DIR);
@@ -2576,6 +2763,7 @@ foreach my $testnum (@at) {
    $ignoretestcodes{$testnum} = $errorreturncode;
    push(@runtests, $testnum);
}
+
my $totaltests = scalar(@runtests);

if($listonly) {
    exit(0);
@@ -2586,83 +2774,139 @@ if($listonly) {
citest_starttestrun();

#######################################################################
-
# Initialize the runner to prepare to run tests
-
cleardir($LOGDIR);
-
mkdir($LOGDIR, 0777);
-
my $runnerid = runner_init($LOGDIR, $jobs);
+
# Start test runners
+
#
+
my $numrunners = $jobs < scalar(@runtests) ? $jobs : scalar(@runtests);
+
createrunners($numrunners);

#######################################################################
# The main test-loop
#
+
# Every iteration through the loop consists of these steps:
+
#   - if the global abort flag is set, exit the loop; we are done
+
#   - if a runner is idle, start a new test on it
+
#   - if all runners are idle, exit the loop; we are done
+
#   - if a runner has a response for us, process the response
+

# run through each candidate test and execute it
-
nexttest:
-
foreach my $testnum (@runtests) {
-
    $count++;
-

-
    # Loop over state machine waiting for singletest to complete
-
    my $again;
-
    while () {
-
        # check the abort flag
-
        if($globalabort) {
-
            logmsg "Aborting tests\n";
-
            if($again) {
-
                logmsg "Waiting for test to finish...\n";
-
                # Wait for the last request to complete and throw it away so
-
                # that IPC calls & responses stay in sync
-
                # TODO: send a signal to the runner to interrupt a long test
-
                runnerar(runnerar_ready());
-
            }
-
            last nexttest;
+
while () {
+
    # check the abort flag
+
    if($globalabort) {
+
        logmsg singletest_dumplogs();
+
        logmsg "Aborting tests\n";
+
        logmsg "Waiting for " . scalar((keys %runnersrunning)) . " outstanding test(s) to finish...\n";
+
        # Wait for the last requests to complete and throw them away so
+
        # that IPC calls & responses stay in sync
+
        # TODO: send a signal to the runners to interrupt a long test
+
        foreach my $rid (keys %runnersrunning) {
+
            runnerar($rid);
+
            delete $runnersrunning{$rid};
+
            logmsg ".";
+
            $| = 1;
        }
+
        logmsg "\n";
+
        last;
+
    }

-
        # execute one test case
-
        my $error;
-
        ($error, $again) = singletest($runnerid, $testnum, $count, scalar(@runtests));
+
    # Start a new test if possible
+
    if(scalar(@runnersidle) && scalar(@runtests)) {
+
        # A runner is ready to run a test, and tests are still available to run
+
        # so start a new test.
+
        $count++;
+
        my $testnum = shift(@runtests);
+

+
        # pick a runner for this new test
+
        my $runnerid = pickrunner($testnum);
+
        $countforrunner{$runnerid} = $count;
+

+
        # Start the test
+
        my ($error, $again) = singletest($runnerid, $testnum, $countforrunner{$runnerid}, $totaltests);
        if($again) {
-
            # Wait for asynchronous response
-
            if(!runnerar_ready(0.05)) {
-
                # TODO: If a response isn't ready, this is a chance to do
-
                # something else first
+
            # this runner is busy running a test
+
            $runnersrunning{$runnerid} = $testnum;
+
        } else {
+
            runnerready($runnerid);
+
            if($error >= 0) {
+
                # We make this simplifying assumption to avoid having to handle
+
                # $error properly here, but we must handle the case of runner
+
                # death without abending here.
+
                die "Internal error: test must not complete on first call";
            }
-
            next;  # another iteration of the same singletest
        }
+
    }

-
        # Test has completed
-
        if($error < 0) {
-
            # not a test we can run
-
            next nexttest;
-
        }
+
    # See if we've completed all the tests
+
    if(!scalar(%runnersrunning)) {
+
        # No runners are running; we must be done
+
        scalar(@runtests) && die 'Internal error: still have tests to run';
+
        last;
+
    }

-
        $total++; # number of tests we've run
+
    # See if a test runner needs attention
+
    # If we could be running more tests, don't wait so we can schedule a new
+
    # one immediately. If all runners are busy, wait a fraction of a second
+
    # for one to finish so we can still loop around to check the abort flag.
+
    my $runnerwait = scalar(@runnersidle) && scalar(@runtests) ? 0 : 0.5;
+
    my ($ridready, $riderror) = runnerar_ready($runnerwait);
+
    if($ridready && ! defined $runnersrunning{$ridready}) {
+
        # On Linux, a closed pipe still shows up as ready instead of error.
+
        # Detect this here by seeing if we are expecting it to be ready and
+
        # treat it as an error if not.
+
        logmsg "ERROR: Runner $ridready is unexpectedly ready; is probably actually dead\n";
+
        $riderror = $ridready;
+
        undef $ridready;
+
    }
+
    if($ridready) {
+
        # This runner is ready to be serviced
+
        my $testnum = $runnersrunning{$ridready};
+
        defined $testnum ||  die "Internal error: test for runner $ridready unknown";
+
        delete $runnersrunning{$ridready};
+
        my ($error, $again) = singletest($ridready, $testnum, $countforrunner{$ridready}, $totaltests);
+
        if($again) {
+
            # this runner is busy running a test
+
            $runnersrunning{$ridready} = $testnum;
+
        } else {
+
            # Test is complete
+
            runnerready($ridready);

-
        if($error>0) {
-
            if($error==2) {
-
                # ignored test failures
-
                $failedign .= "$testnum ";
-
            }
-
            else {
-
                $failed.= "$testnum ";
-
            }
-
            if($postmortem) {
-
                # display all files in $LOGDIR/ in a nice way
-
                displaylogs($testnum);
+
            if($error < 0) {
+
                # not a test we can run
+
                next;
            }
-
            if($error==2) {
-
                $ign++; # ignored test result counter
+

+
            $total++; # number of tests we've run
+

+
            if($error>0) {
+
                if($error==2) {
+
                    # ignored test failures
+
                    $failedign .= "$testnum ";
+
                }
+
                else {
+
                    $failed.= "$testnum ";
+
                }
+
                if($postmortem) {
+
                    # display all files in $LOGDIR/ in a nice way
+
                    displaylogs($ridready, $testnum);
+
                }
+
                if($error==2) {
+
                    $ign++; # ignored test result counter
+
                }
+
                elsif(!$anyway) {
+
                    # a test failed, abort
+
                    logmsg "\n - abort tests\n";
+
                    undef @runtests;  # empty out the remaining tests
+
                }
            }
-
            elsif(!$anyway) {
-
                # a test failed, abort
-
                logmsg "\n - abort tests\n";
-
                last;
+
            elsif(!$error) {
+
                $ok++; # successful test counter
            }
        }
-
        elsif(!$error) {
-
            $ok++; # successful test counter
-
        }
-
        next nexttest;
    }
-

-
    # loop for next test
+
    if($riderror) {
+
        logmsg "ERROR: runner $riderror is dead! aborting test run\n";
+
        delete $runnersrunning{$riderror} if(defined $runnersrunning{$riderror});
+
        $globalabort = 1;
+
    }
}

my $sofar = time() - $start;
@@ -2672,16 +2916,26 @@ my $sofar = time() - $start;
citest_finishtestrun();

# Tests done, stop the servers
-
runnerac_stopservers($runnerid);
-
my ($rid, $unexpected, $logs) = runnerar($runnerid);
-
logmsg $logs;
-

-
# Kill the runner
-
# There is a race condition here since we don't know exactly when the runner
-
# has finished shutting itself down
-
runnerac_shutdown($runnerid);
-
undef $runnerid;
-
sleep 0;  # give runner a chance to run
+
foreach my $runnerid (values %runnerids) {
+
    runnerac_stopservers($runnerid);
+
}
+

+
# Wait for servers to stop
+
my $unexpected;
+
foreach my $runnerid (values %runnerids) {
+
    my ($rid, $unexpect, $logs) = runnerar($runnerid);
+
    $unexpected ||= $unexpect;
+
    logmsg $logs;
+
}
+

+
# Kill the runners
+
# There is a race condition here since we don't know exactly when the runners
+
# have each finished shutting themselves down, but we're about to exit so it
+
# doesn't make much difference.
+
foreach my $runnerid (values %runnerids) {
+
    runnerac_shutdown($runnerid);
+
    sleep 0;  # give runner a context switch so it can shut itself down
+
}

my $numskipped = %skipped ? sum values %skipped : 0;
my $all = $total + $numskipped;
modified external/curl/tests/server/Makefile.in
@@ -681,7 +681,7 @@ USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
-
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
+
USE_NGTCP2_CRYPTO_QUICTLS = @USE_NGTCP2_CRYPTO_QUICTLS@
USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
modified external/curl/tests/server/mqttd.c
@@ -771,7 +771,7 @@ static bool incoming(curl_socket_t listenfd)
      if(CURL_SOCKET_BAD == newfd) {
        error = SOCKERRNO;
        logmsg("accept(%d, NULL, NULL) failed with error: (%d) %s",
-
               sockfd, error, strerror(error));
+
               sockfd, error, sstrerror(error));
      }
      else {
        logmsg("====> Client connect, fd %d. Read config from %s",
@@ -810,7 +810,7 @@ static curl_socket_t sockdaemon(curl_socket_t sock,
    if(rc) {
      error = SOCKERRNO;
      logmsg("setsockopt(SO_REUSEADDR) failed with error: (%d) %s",
-
             error, strerror(error));
+
             error, sstrerror(error));
      if(maxretr) {
        rc = wait_ms(delay);
        if(rc) {
@@ -860,7 +860,7 @@ static curl_socket_t sockdaemon(curl_socket_t sock,
  if(rc) {
    error = SOCKERRNO;
    logmsg("Error binding socket on port %hu: (%d) %s",
-
           *listenport, error, strerror(error));
+
           *listenport, error, sstrerror(error));
    sclose(sock);
    return CURL_SOCKET_BAD;
  }
@@ -882,7 +882,7 @@ static curl_socket_t sockdaemon(curl_socket_t sock,
    if(getsockname(sock, &localaddr.sa, &la_size) < 0) {
      error = SOCKERRNO;
      logmsg("getsockname() failed with error: (%d) %s",
-
             error, strerror(error));
+
             error, sstrerror(error));
      sclose(sock);
      return CURL_SOCKET_BAD;
    }
@@ -914,7 +914,7 @@ static curl_socket_t sockdaemon(curl_socket_t sock,
  if(0 != rc) {
    error = SOCKERRNO;
    logmsg("listen(%d, 5) failed with error: (%d) %s",
-
           sock, error, strerror(error));
+
           sock, error, sstrerror(error));
    sclose(sock);
    return CURL_SOCKET_BAD;
  }
@@ -1016,8 +1016,8 @@ int main(int argc, char *argv[])
    }
  }

-
  msnprintf(loglockfile, sizeof(loglockfile), "%s/%s",
-
            logdir, SERVERLOGS_LOCK);
+
  msnprintf(loglockfile, sizeof(loglockfile), "%s/%s/mqtt-%s.lock",
+
            logdir, SERVERLOGS_LOCKDIR, ipv_inuse);

#ifdef WIN32
  win32_init();
@@ -1041,8 +1041,7 @@ int main(int argc, char *argv[])

  if(CURL_SOCKET_BAD == sock) {
    error = SOCKERRNO;
-
    logmsg("Error creating socket: (%d) %s",
-
           error, strerror(error));
+
    logmsg("Error creating socket: (%d) %s", error, sstrerror(error));
    goto mqttd_cleanup;
  }

modified external/curl/tests/server/rtspd.c
@@ -717,7 +717,7 @@ static int get_request(curl_socket_t sock, struct httprequest *req)
    }
    else if(got < 0) {
      error = SOCKERRNO;
-
      logmsg("recv() returned error: (%d) %s", error, strerror(error));
+
      logmsg("recv() returned error: (%d) %s", error, sstrerror(error));
      fail = 1;
    }
    if(fail) {
@@ -1149,8 +1149,8 @@ int main(int argc, char *argv[])
    }
  }

-
  msnprintf(loglockfile, sizeof(loglockfile), "%s/%s",
-
            logdir, SERVERLOGS_LOCK);
+
  msnprintf(loglockfile, sizeof(loglockfile), "%s/%s/rtsp-%s.lock",
+
            logdir, SERVERLOGS_LOCKDIR, ipv_inuse);

#ifdef WIN32
  win32_init();
@@ -1170,8 +1170,7 @@ int main(int argc, char *argv[])

  if(CURL_SOCKET_BAD == sock) {
    error = SOCKERRNO;
-
    logmsg("Error creating socket: (%d) %s",
-
           error, strerror(error));
+
    logmsg("Error creating socket: (%d) %s", error, sstrerror(error));
    goto server_cleanup;
  }

@@ -1180,7 +1179,7 @@ int main(int argc, char *argv[])
            (void *)&flag, sizeof(flag))) {
    error = SOCKERRNO;
    logmsg("setsockopt(SO_REUSEADDR) failed with error: (%d) %s",
-
           error, strerror(error));
+
           error, sstrerror(error));
    goto server_cleanup;
  }

@@ -1205,7 +1204,7 @@ int main(int argc, char *argv[])
  if(0 != rc) {
    error = SOCKERRNO;
    logmsg("Error binding socket on port %hu: (%d) %s",
-
           port, error, strerror(error));
+
           port, error, sstrerror(error));
    goto server_cleanup;
  }

@@ -1226,7 +1225,7 @@ int main(int argc, char *argv[])
    if(getsockname(sock, &localaddr.sa, &la_size) < 0) {
      error = SOCKERRNO;
      logmsg("getsockname() failed with error: (%d) %s",
-
             error, strerror(error));
+
             error, sstrerror(error));
      sclose(sock);
      goto server_cleanup;
    }
@@ -1259,7 +1258,7 @@ int main(int argc, char *argv[])
  if(0 != rc) {
    error = SOCKERRNO;
    logmsg("listen() failed with error: (%d) %s",
-
           error, strerror(error));
+
           error, sstrerror(error));
    goto server_cleanup;
  }

@@ -1286,7 +1285,7 @@ int main(int argc, char *argv[])
    if(CURL_SOCKET_BAD == msgsock) {
      error = SOCKERRNO;
      logmsg("MAJOR ERROR: accept() failed with error: (%d) %s",
-
             error, strerror(error));
+
             error, sstrerror(error));
      break;
    }

modified external/curl/tests/server/sockfilt.c
@@ -1091,7 +1091,7 @@ static bool juggle(curl_socket_t *sockfdp,
      if(CURL_SOCKET_BAD == newfd) {
        error = SOCKERRNO;
        logmsg("accept(%d, NULL, NULL) failed with error: (%d) %s",
-
               sockfd, error, strerror(error));
+
               sockfd, error, sstrerror(error));
      }
      else {
        logmsg("====> Client connect");
@@ -1155,7 +1155,7 @@ static curl_socket_t sockdaemon(curl_socket_t sock,
    if(rc) {
      error = SOCKERRNO;
      logmsg("setsockopt(SO_REUSEADDR) failed with error: (%d) %s",
-
             error, strerror(error));
+
             error, sstrerror(error));
      if(maxretr) {
        rc = wait_ms(delay);
        if(rc) {
@@ -1207,7 +1207,7 @@ static curl_socket_t sockdaemon(curl_socket_t sock,
  if(rc) {
    error = SOCKERRNO;
    logmsg("Error binding socket on port %hu: (%d) %s",
-
           *listenport, error, strerror(error));
+
           *listenport, error, sstrerror(error));
    sclose(sock);
    return CURL_SOCKET_BAD;
  }
@@ -1229,7 +1229,7 @@ static curl_socket_t sockdaemon(curl_socket_t sock,
    if(getsockname(sock, &localaddr.sa, &la_size) < 0) {
      error = SOCKERRNO;
      logmsg("getsockname() failed with error: (%d) %s",
-
             error, strerror(error));
+
             error, sstrerror(error));
      sclose(sock);
      return CURL_SOCKET_BAD;
    }
@@ -1267,7 +1267,7 @@ static curl_socket_t sockdaemon(curl_socket_t sock,
  if(0 != rc) {
    error = SOCKERRNO;
    logmsg("listen(%d, 5) failed with error: (%d) %s",
-
           sock, error, strerror(error));
+
           sock, error, sstrerror(error));
    sclose(sock);
    return CURL_SOCKET_BAD;
  }
@@ -1414,8 +1414,7 @@ int main(int argc, char *argv[])

  if(CURL_SOCKET_BAD == sock) {
    error = SOCKERRNO;
-
    logmsg("Error creating socket: (%d) %s",
-
           error, strerror(error));
+
    logmsg("Error creating socket: (%d) %s", error, sstrerror(error));
    write_stdout("FAIL\n", 5);
    goto sockfilt_cleanup;
  }
@@ -1451,7 +1450,7 @@ int main(int argc, char *argv[])
    if(rc) {
      error = SOCKERRNO;
      logmsg("Error connecting to port %hu: (%d) %s",
-
             connectport, error, strerror(error));
+
             connectport, error, sstrerror(error));
      write_stdout("FAIL\n", 5);
      goto sockfilt_cleanup;
    }
modified external/curl/tests/server/socksd.c
@@ -304,7 +304,7 @@ static curl_socket_t socksconnect(unsigned short connectport,
  if(rc) {
    int error = SOCKERRNO;
    logmsg("Error connecting to %s:%hu: (%d) %s",
-
           connectaddr, connectport, error, strerror(error));
+
           connectaddr, connectport, error, sstrerror(error));
    return CURL_SOCKET_BAD;
  }
  logmsg("Connected fine to %s:%d", connectaddr, connectport);
@@ -740,7 +740,7 @@ static bool incoming(curl_socket_t listenfd)
      if(CURL_SOCKET_BAD == newfd) {
        error = SOCKERRNO;
        logmsg("accept(%d, NULL, NULL) failed with error: (%d) %s",
-
               sockfd, error, strerror(error));
+
               sockfd, error, sstrerror(error));
      }
      else {
        curl_socket_t remotefd;
@@ -810,7 +810,7 @@ static curl_socket_t sockdaemon(curl_socket_t sock,
    if(rc) {
      error = SOCKERRNO;
      logmsg("setsockopt(SO_REUSEADDR) failed with error: (%d) %s",
-
             error, strerror(error));
+
             error, sstrerror(error));
      if(maxretr) {
        rc = wait_ms(delay);
        if(rc) {
@@ -866,8 +866,14 @@ static curl_socket_t sockdaemon(curl_socket_t sock,

  if(rc) {
    error = SOCKERRNO;
-
    logmsg("Error binding socket on port %hu: (%d) %s",
-
           *listenport, error, strerror(error));
+
#ifdef USE_UNIX_SOCKETS
+
    if(socket_domain == AF_UNIX)
+
      logmsg("Error binding socket on path %s: (%d) %s",
+
             unix_socket, error, sstrerror(error));
+
    else
+
#endif
+
      logmsg("Error binding socket on port %hu: (%d) %s",
+
             *listenport, error, sstrerror(error));
    sclose(sock);
    return CURL_SOCKET_BAD;
  }
@@ -891,7 +897,7 @@ static curl_socket_t sockdaemon(curl_socket_t sock,
    if(getsockname(sock, &localaddr.sa, &la_size) < 0) {
      error = SOCKERRNO;
      logmsg("getsockname() failed with error: (%d) %s",
-
             error, strerror(error));
+
             error, sstrerror(error));
      sclose(sock);
      return CURL_SOCKET_BAD;
    }
@@ -923,7 +929,7 @@ static curl_socket_t sockdaemon(curl_socket_t sock,
  if(0 != rc) {
    error = SOCKERRNO;
    logmsg("listen(%d, 5) failed with error: (%d) %s",
-
           sock, error, strerror(error));
+
           sock, error, sstrerror(error));
    sclose(sock);
    return CURL_SOCKET_BAD;
  }
@@ -1071,7 +1077,7 @@ int main(int argc, char *argv[])
  if(CURL_SOCKET_BAD == sock) {
    error = SOCKERRNO;
    logmsg("Error creating socket: (%d) %s",
-
           error, strerror(error));
+
           error, sstrerror(error));
    goto socks5_cleanup;
  }

modified external/curl/tests/server/sws.c
@@ -160,7 +160,7 @@ static char loglockfile[256];
#define RESPONSE_PROXY_DUMP "proxy.response"

/* file in which additional instructions may be found */
-
#define DEFAULT_CMDFILE "log/ftpserver.cmd"
+
#define DEFAULT_CMDFILE "log/server.cmd"
const char *cmdfile = DEFAULT_CMDFILE;

/* very-big-path support */
@@ -956,7 +956,7 @@ static int get_request(curl_socket_t sock, struct httprequest *req)
        /* nothing to read at the moment */
        return 0;
      }
-
      logmsg("recv() returned error: (%d) %s", error, strerror(error));
+
      logmsg("recv() returned error: (%d) %s", error, sstrerror(error));
      fail = 1;
    }
    if(fail) {
@@ -1304,7 +1304,7 @@ static curl_socket_t connect_to(const char *ipaddr, unsigned short port)
  if(CURL_SOCKET_BAD == serverfd) {
    error = SOCKERRNO;
    logmsg("Error creating socket for server connection: (%d) %s",
-
           error, strerror(error));
+
           error, sstrerror(error));
    return CURL_SOCKET_BAD;
  }

@@ -1360,7 +1360,7 @@ static curl_socket_t connect_to(const char *ipaddr, unsigned short port)
  if(rc) {
    error = SOCKERRNO;
    logmsg("Error connecting to server port %hu: (%d) %s",
-
           port, error, strerror(error));
+
           port, error, sstrerror(error));
    sclose(serverfd);
    return CURL_SOCKET_BAD;
  }
@@ -1813,14 +1813,14 @@ static curl_socket_t accept_connection(curl_socket_t sock)
      return 0;
    }
    logmsg("MAJOR ERROR: accept() failed with error: (%d) %s",
-
           error, strerror(error));
+
           error, sstrerror(error));
    return CURL_SOCKET_BAD;
  }

  if(0 != curlx_nonblock(msgsock, TRUE)) {
    error = SOCKERRNO;
    logmsg("curlx_nonblock failed with error: (%d) %s",
-
           error, strerror(error));
+
           error, sstrerror(error));
    sclose(msgsock);
    return CURL_SOCKET_BAD;
  }
@@ -1829,7 +1829,7 @@ static curl_socket_t accept_connection(curl_socket_t sock)
                     (void *)&flag, sizeof(flag))) {
    error = SOCKERRNO;
    logmsg("setsockopt(SO_KEEPALIVE) failed with error: (%d) %s",
-
           error, strerror(error));
+
           error, sstrerror(error));
    sclose(msgsock);
    return CURL_SOCKET_BAD;
  }
@@ -1964,6 +1964,7 @@ int main(int argc, char *argv[])
  char port_str[11];
  const char *location_str = port_str;
  int keepalive_secs = 5;
+
  const char *protocol_type = "HTTP";

  /* a default CONNECT port is basically pointless but still ... */
  size_t socket_idx;
@@ -2008,6 +2009,7 @@ int main(int argc, char *argv[])
    else if(!strcmp("--gopher", argv[arg])) {
      arg++;
      use_gopher = TRUE;
+
      protocol_type = "GOPHER";
      end_of_headers = "\r\n"; /* gopher style is much simpler */
    }
    else if(!strcmp("--ipv4", argv[arg])) {
@@ -2109,8 +2111,9 @@ int main(int argc, char *argv[])
    }
  }

-
  msnprintf(loglockfile, sizeof(loglockfile), "%s/%s",
-
            logdir, SERVERLOGS_LOCK);
+
  msnprintf(loglockfile, sizeof(loglockfile), "%s/%s/sws-%s%s-%s.lock",
+
            logdir, SERVERLOGS_LOCKDIR, protocol_type,
+
            is_proxy ? "-proxy" : "", socket_type);

#ifdef WIN32
  win32_init();
@@ -2130,8 +2133,7 @@ int main(int argc, char *argv[])

  if(CURL_SOCKET_BAD == sock) {
    error = SOCKERRNO;
-
    logmsg("Error creating socket: (%d) %s",
-
           error, strerror(error));
+
    logmsg("Error creating socket: (%d) %s", error, sstrerror(error));
    goto sws_cleanup;
  }

@@ -2140,13 +2142,13 @@ int main(int argc, char *argv[])
                     (void *)&flag, sizeof(flag))) {
    error = SOCKERRNO;
    logmsg("setsockopt(SO_REUSEADDR) failed with error: (%d) %s",
-
           error, strerror(error));
+
           error, sstrerror(error));
    goto sws_cleanup;
  }
  if(0 != curlx_nonblock(sock, TRUE)) {
    error = SOCKERRNO;
    logmsg("curlx_nonblock failed with error: (%d) %s",
-
           error, strerror(error));
+
           error, sstrerror(error));
    goto sws_cleanup;
  }

@@ -2174,7 +2176,14 @@ int main(int argc, char *argv[])
  }
  if(0 != rc) {
    error = SOCKERRNO;
-
    logmsg("Error binding socket: (%d) %s", error, strerror(error));
+
#ifdef USE_UNIX_SOCKETS
+
    if(socket_domain == AF_UNIX)
+
      logmsg("Error binding socket on path %s: (%d) %s",
+
             unix_socket, error, sstrerror(error));
+
    else
+
#endif
+
      logmsg("Error binding socket on port %hu: (%d) %s",
+
             port, error, sstrerror(error));
    goto sws_cleanup;
  }

@@ -2195,7 +2204,7 @@ int main(int argc, char *argv[])
    if(getsockname(sock, &localaddr.sa, &la_size) < 0) {
      error = SOCKERRNO;
      logmsg("getsockname() failed with error: (%d) %s",
-
             error, strerror(error));
+
             error, sstrerror(error));
      sclose(sock);
      goto sws_cleanup;
    }
@@ -2227,14 +2236,13 @@ int main(int argc, char *argv[])
    msnprintf(port_str, sizeof(port_str), "port %hu", port);

  logmsg("Running %s %s version on %s",
-
         use_gopher?"GOPHER":"HTTP", socket_type, location_str);
+
         protocol_type, socket_type, location_str);

  /* start accepting connections */
  rc = listen(sock, 5);
  if(0 != rc) {
    error = SOCKERRNO;
-
    logmsg("listen() failed with error: (%d) %s",
-
           error, strerror(error));
+
    logmsg("listen() failed with error: (%d) %s", error, sstrerror(error));
    goto sws_cleanup;
  }

@@ -2306,8 +2314,7 @@ int main(int argc, char *argv[])

    if(rc < 0) {
      error = SOCKERRNO;
-
      logmsg("select() failed with error: (%d) %s",
-
             error, strerror(error));
+
      logmsg("select() failed with error: (%d) %s", error, sstrerror(error));
      goto sws_cleanup;
    }

modified external/curl/tests/server/tftpd.c
@@ -647,8 +647,8 @@ int main(int argc, char **argv)
    }
  }

-
  msnprintf(loglockfile, sizeof(loglockfile), "%s/%s",
-
            logdir, SERVERLOGS_LOCK);
+
  msnprintf(loglockfile, sizeof(loglockfile), "%s/%s/tftp-%s.lock",
+
            logdir, SERVERLOGS_LOCKDIR, ipv_inuse);

#ifdef WIN32
  win32_init();
@@ -668,8 +668,7 @@ int main(int argc, char **argv)

  if(CURL_SOCKET_BAD == sock) {
    error = SOCKERRNO;
-
    logmsg("Error creating socket: (%d) %s",
-
           error, strerror(error));
+
    logmsg("Error creating socket: (%d) %s", error, sstrerror(error));
    result = 1;
    goto tftpd_cleanup;
  }
@@ -679,7 +678,7 @@ int main(int argc, char **argv)
            (void *)&flag, sizeof(flag))) {
    error = SOCKERRNO;
    logmsg("setsockopt(SO_REUSEADDR) failed with error: (%d) %s",
-
           error, strerror(error));
+
           error, sstrerror(error));
    result = 1;
    goto tftpd_cleanup;
  }
@@ -704,8 +703,8 @@ int main(int argc, char **argv)
#endif /* ENABLE_IPV6 */
  if(0 != rc) {
    error = SOCKERRNO;
-
    logmsg("Error binding socket on port %hu: (%d) %s",
-
           port, error, strerror(error));
+
    logmsg("Error binding socket on port %hu: (%d) %s", port, error,
+
           sstrerror(error));
    result = 1;
    goto tftpd_cleanup;
  }
@@ -727,7 +726,7 @@ int main(int argc, char **argv)
    if(getsockname(sock, &localaddr.sa, &la_size) < 0) {
      error = SOCKERRNO;
      logmsg("getsockname() failed with error: (%d) %s",
-
             error, strerror(error));
+
             error, sstrerror(error));
      sclose(sock);
      goto tftpd_cleanup;
    }
modified external/curl/tests/server/util.c
@@ -147,16 +147,22 @@ void logmsg(const char *msg, ...)
}

#ifdef WIN32
+
/* use instead of strerror() on generic Windows */
+
static const char *win32_strerror(int err, char *buf, size_t buflen)
+
{
+
  if(!FormatMessageA((FORMAT_MESSAGE_FROM_SYSTEM |
+
                      FORMAT_MESSAGE_IGNORE_INSERTS), NULL, err,
+
                     LANG_NEUTRAL, buf, (DWORD)buflen, NULL))
+
    msnprintf(buf, buflen, "Unknown error %lu (%#lx)", err, err);
+
  return buf;
+
}
+

/* use instead of perror() on generic windows */
void win32_perror(const char *msg)
{
  char buf[512];
  DWORD err = SOCKERRNO;
-

-
  if(!FormatMessageA((FORMAT_MESSAGE_FROM_SYSTEM |
-
                      FORMAT_MESSAGE_IGNORE_INSERTS), NULL, err,
-
                     LANG_NEUTRAL, buf, sizeof(buf), NULL))
-
    msnprintf(buf, sizeof(buf), "Unknown error %lu (%#lx)", err, err);
+
  win32_strerror(err, buf, sizeof(buf));
  if(msg)
    fprintf(stderr, "%s: ", msg);
  fprintf(stderr, "%s\n", buf);
@@ -197,6 +203,13 @@ void win32_cleanup(void)
  /* flush buffers of all streams regardless of their mode */
  _flushall();
}
+

+
/* socket-safe strerror (works on WinSock errors, too */
+
const char *sstrerror(int err)
+
{
+
  static char buf[512];
+
  return win32_strerror(err, buf, sizeof(buf));
+
}
#endif  /* WIN32 */

/* set by the main code to point to where the test dir is */
@@ -819,23 +832,22 @@ int bind_unix_socket(curl_socket_t sock, const char *unix_socket,
    sau->sun_family = AF_UNIX;
    strncpy(sau->sun_path, unix_socket, sizeof(sau->sun_path) - 1);
    rc = bind(sock, (struct sockaddr*)sau, sizeof(struct sockaddr_un));
-
    if(0 != rc && errno == EADDRINUSE) {
+
    if(0 != rc && SOCKERRNO == EADDRINUSE) {
      struct_stat statbuf;
      /* socket already exists. Perhaps it is stale? */
      curl_socket_t unixfd = socket(AF_UNIX, SOCK_STREAM, 0);
      if(CURL_SOCKET_BAD == unixfd) {
-
        error = SOCKERRNO;
-
        logmsg("Error binding socket, failed to create socket at %s: (%d) %s",
-
               unix_socket, error, strerror(error));
-
        return rc;
+
        logmsg("Failed to create socket at %s: (%d) %s",
+
               unix_socket, SOCKERRNO, sstrerror(SOCKERRNO));
+
        return -1;
      }
      /* check whether the server is alive */
      rc = connect(unixfd, (struct sockaddr*)sau, sizeof(struct sockaddr_un));
-
      error = errno;
+
      error = SOCKERRNO;
      sclose(unixfd);
-
      if(ECONNREFUSED != error) {
-
        logmsg("Error binding socket, failed to connect to %s: (%d) %s",
-
               unix_socket, error, strerror(error));
+
      if(0 != rc && ECONNREFUSED != error) {
+
        logmsg("Failed to connect to %s: (%d) %s",
+
               unix_socket, error, sstrerror(error));
        return rc;
      }
      /* socket server is not alive, now check if it was actually a socket. */
@@ -852,9 +864,8 @@ int bind_unix_socket(curl_socket_t sock, const char *unix_socket,
      }
#ifdef S_IFSOCK
      if((statbuf.st_mode & S_IFSOCK) != S_IFSOCK) {
-
        logmsg("Error binding socket, failed to stat %s: (%d) %s",
-
               unix_socket, error, strerror(error));
-
        return rc;
+
        logmsg("Error binding socket, failed to stat %s", unix_socket);
+
        return -1;
      }
#endif
      /* dead socket, cleanup and retry bind */
modified external/curl/tests/server/util.h
@@ -31,8 +31,7 @@ long timediff(struct timeval newer, struct timeval older);

#define TEST_DATA_PATH "%s/data/test%ld"
#define ALTTEST_DATA_PATH "%s/test%ld"
-

-
#define SERVERLOGS_LOCK "serverlogs.lock"
+
#define SERVERLOGS_LOCKDIR "lock"  /* within logdir */

/* global variable, where to find the 'data' dir */
extern const char *path;
@@ -54,6 +53,10 @@ void win32_perror(const char *msg);

void win32_init(void);
void win32_cleanup(void);
+
const char *sstrerror(int err);
+
#else   /* WIN32 */
+

+
#define sstrerror(e) strerror(e)
#endif  /* WIN32 */

/* fopens the test case file */
modified external/curl/tests/servers.pm
@@ -28,6 +28,7 @@

package servers;

+
use IO::Socket;
use strict;
use warnings;

@@ -127,9 +128,6 @@ my $CLIENTIP="127.0.0.1"; # address which curl uses for incoming connections
my $CLIENT6IP="[::1]";     # address which curl uses for incoming connections
my $posix_pwd=$pwd;        # current working directory
my $h2cver = "h2c"; # this version is decided by the nghttp2 lib being used
-
my $serverstartretries=10; # number of times to attempt to start server;
-
                           # don't increase without making sure generated port
-
                           # numbers will always be valid (<=65535)
my $portrange = 999;       # space from which to choose a random port
                           # don't increase without making sure generated port
                           # numbers will always be valid (<=65535)
@@ -166,12 +164,35 @@ sub checkcmd {
    return "";
}

+
#######################################################################
+
# Create a server socket on a random (unused) port, then close it and
+
# return the port number
+
#
+
sub getfreeport {
+
    my ($ipnum) = @_;
+
    my $server = IO::Socket->new(LocalPort => 0,
+
                                 Domain => $ipnum == 6 ? AF_INET6 : AF_INET,
+
                                 Type      => SOCK_STREAM,
+
                                 Reuse     => 1,
+
                                 Listen    => 10 )
+
        or die "Couldn't create tcp server socket: $@\n";
+

+
    return $server->sockport();
+
}
+

+
use File::Temp qw/ tempfile/;

#######################################################################
# Initialize configuration variables
sub initserverconfig {
-
    $SOCKSUNIXPATH = "$LOGDIR/$PIDDIR/socks.sock"; # SOCKS Unix domain socket
-
    $HTTPUNIXPATH = "$LOGDIR/$PIDDIR/http.sock";   # HTTP Unix domain socket
+
    my ($fh, $socks) = tempfile("/tmp/curl-socksd-XXXXXXXX");
+
    close($fh);
+
    unlink($socks);
+
    my ($f2, $http) = tempfile("/tmp/curl-http-XXXXXXXX");
+
    close($f2);
+
    unlink($http);
+
    $SOCKSUNIXPATH = $socks; # SOCKS Unix domain socket
+
    $HTTPUNIXPATH = $http;   # HTTP Unix domain socket
    $stunnel = checkcmd("stunnel4") || checkcmd("tstunnel") || checkcmd("stunnel");

    # get the name of the current user
@@ -1129,7 +1150,7 @@ sub runhttpserver {
    $flags .= "--pidfile \"$pidfile\" --logfile \"$logfile\" ";
    $flags .= "--logdir \"$LOGDIR\" ";
    $flags .= "--portfile $portfile ";
-
    $flags .= "--config $LOGDIR/$FTPDCMD ";
+
    $flags .= "--config $LOGDIR/$SERVERCMD ";
    $flags .= "--id $idnum " if($idnum > 1);
    if($ipvnum eq "unix") {
        $flags .= "--unix-socket '$port_or_path' ";
@@ -1210,37 +1231,27 @@ sub runhttp2server {
    $flags .= "--connect $HOSTIP:" . protoport("http") . " ";
    $flags .= $verbose_flag if($debugprotocol);

-
    my ($http2pid, $pid2);
-
    my $port = 32813;
-
    my $port2 = 32814;
-
    my %usedports = reverse %PORT;
-
    for(1 .. $serverstartretries) {
-
        $port += 1 + int(rand($portrange));
-
        $port2 += 1 + int(rand($portrange));
-
        next if exists $usedports{$port} || $usedports{$port2};
-
        my $aflags = "--port $port --port2 $port2 $flags";
-

-
        my $cmd = "$exe $aflags";
-
        ($http2pid, $pid2) = startnew($cmd, $pidfile, 15, 0);
-

-
        if($http2pid <= 0 || !pidexists($http2pid)) {
-
            # it is NOT alive
-
            stopserver($server, "$pid2");
-
            $doesntrun{$pidfile} = 1;
-
            $http2pid = $pid2 = 0;
-
            next;
-
        }
-
        $doesntrun{$pidfile} = 0;
+
    my $port = getfreeport($ipvnum);
+
    my $port2 = getfreeport($ipvnum);
+
    my $aflags = "--port $port --port2 $port2 $flags";
+
    my $cmd = "$exe $aflags";
+
    my ($http2pid, $pid2) = startnew($cmd, $pidfile, 15, 0);

-
        if($verb) {
-
            logmsg "RUN: $srvrname server PID $http2pid ".
-
                   "http-port $port https-port $port2 ".
-
                   "backend $HOSTIP:" . protoport("http") . "\n";
-
        }
-
        last;
+
    if($http2pid <= 0 || !pidexists($http2pid)) {
+
        # it is NOT alive
+
        stopserver($server, "$pid2");
+
        $doesntrun{$pidfile} = 1;
+
        $http2pid = $pid2 = 0;
+
        logmsg "RUN: failed to start the $srvrname server\n";
+
        return (3, 0, 0, 0, 0);
    }
+
    $doesntrun{$pidfile} = 0;

-
    logmsg "RUN: failed to start the $srvrname server\n" if(!$http2pid);
+
    if($verb) {
+
        logmsg "RUN: $srvrname server PID $http2pid ".
+
            "http-port $port https-port $port2 ".
+
            "backend $HOSTIP:" . protoport("http") . "\n";
+
    }

    return (0+!$http2pid, $http2pid, $pid2, $port, $port2);
}
@@ -1282,33 +1293,24 @@ sub runhttp3server {
    $flags .= "--cert \"$cert\" " if($cert);
    $flags .= $verbose_flag if($debugprotocol);

-
    my ($http3pid, $pid3);
-
    my $port = 33813;
-
    my %usedports = reverse %PORT;
-
    for(1 .. $serverstartretries) {
-
        $port += 1 + int(rand($portrange));
-
        next if exists $usedports{$port};
-
        my $aflags = "--port $port $flags";
-

-
        my $cmd = "$exe $aflags";
-
        ($http3pid, $pid3) = startnew($cmd, $pidfile, 15, 0);
-

-
        if($http3pid <= 0 || !pidexists($http3pid)) {
-
            # it is NOT alive
-
            stopserver($server, "$pid3");
-
            $doesntrun{$pidfile} = 1;
-
            $http3pid = $pid3 = 0;
-
            next;
-
        }
-
        $doesntrun{$pidfile} = 0;
+
    my $port = getfreeport($ipvnum);
+
    my $aflags = "--port $port $flags";
+
    my $cmd = "$exe $aflags";
+
    my ($http3pid, $pid3) = startnew($cmd, $pidfile, 15, 0);

-
        if($verb) {
-
            logmsg "RUN: $srvrname server PID $http3pid port $port\n";
-
        }
-
        last;
+
    if($http3pid <= 0 || !pidexists($http3pid)) {
+
        # it is NOT alive
+
        stopserver($server, "$pid3");
+
        $doesntrun{$pidfile} = 1;
+
        $http3pid = $pid3 = 0;
+
        logmsg "RUN: failed to start the $srvrname server\n";
+
        return (3, 0, 0, 0);
    }
+
    $doesntrun{$pidfile} = 0;

-
    logmsg "RUN: failed to start the $srvrname server\n" if(!$http3pid);
+
    if($verb) {
+
        logmsg "RUN: $srvrname server PID $http3pid port $port\n";
+
    }

    return (0+!$http3pid, $http3pid, $pid3, $port);
}
@@ -1369,36 +1371,28 @@ sub runhttpsserver {
        $flags .= "--connect " . protoport("httpproxy");
    }

-
    my $pid2;
-
    my $httpspid;
-
    my $port = 34813;
-
    my %usedports = reverse %PORT;
-
    for (1 .. $serverstartretries) {
-
        $port += 1 + int(rand($portrange));
-
        next if exists $usedports{$port};
-
        my $options = "$flags --accept $port";
-

-
        my $cmd = "$perl $srcdir/secureserver.pl $options";
-
        ($httpspid, $pid2) = startnew($cmd, $pidfile, 15, 0);
-

-
        if($httpspid <= 0 || !pidexists($httpspid)) {
-
            # it is NOT alive
-
            # don't call stopserver since that will also kill the dependent
-
            # server that has already been started properly
-
            $doesntrun{$pidfile} = 1;
-
            $httpspid = $pid2 = 0;
-
            next;
-
        }
+
    my $port = getfreeport($ipvnum);
+
    my $options = "$flags --accept $port";
+
    my $cmd = "$perl $srcdir/secureserver.pl $options";
+
    my ($httpspid, $pid2) = startnew($cmd, $pidfile, 15, 0);

-
        $doesntrun{$pidfile} = 0;
-
        # we have a server!
-
        if($verb) {
-
            logmsg "RUN: $srvrname server is PID $httpspid port $port\n";
-
        }
-
        last;
+
    if($httpspid <= 0 || !pidexists($httpspid)) {
+
        # it is NOT alive
+
        # don't call stopserver since that will also kill the dependent
+
        # server that has already been started properly
+
        $doesntrun{$pidfile} = 1;
+
        $httpspid = $pid2 = 0;
+
        logmsg "RUN: failed to start the $srvrname server\n";
+
        return (3, 0, 0, 0);
    }
+

+
    $doesntrun{$pidfile} = 0;
+
    # we have a server!
+
    if($verb) {
+
        logmsg "RUN: $srvrname server is PID $httpspid port $port\n";
+
    }
+

    $runcert{$server} = $certfile;
-
    logmsg "RUN: failed to start the $srvrname server\n" if(!$httpspid);

    return (0+!$httpspid, $httpspid, $pid2, $port);
}
@@ -1442,32 +1436,24 @@ sub runhttptlsserver {
    $flags .= "--srppasswd $srcdir/certs/srp-verifier-db ";
    $flags .= "--srppasswdconf $srcdir/certs/srp-verifier-conf";

-
    my $port = 35813;
-
    my %usedports = reverse %PORT;
-
    my ($httptlspid, $pid2);
-
    for (1 .. $serverstartretries) {
-
        $port += 1 + int(rand($portrange));
-
        next if exists $usedports{$port};
-
        my $allflags = "--port $port $flags";
-

-
        my $cmd = "$httptlssrv $allflags > $logfile 2>&1";
-
        ($httptlspid, $pid2) = startnew($cmd, $pidfile, 10, 1);
-

-
        if($httptlspid <= 0 || !pidexists($httptlspid)) {
-
            # it is NOT alive
-
            stopserver($server, "$pid2");
-
            $doesntrun{$pidfile} = 1;
-
            $httptlspid = $pid2 = 0;
-
            next;
-
        }
-
        $doesntrun{$pidfile} = 0;
+
    my $port = getfreeport($ipvnum);
+
    my $allflags = "--port $port $flags";
+
    my $cmd = "$httptlssrv $allflags > $logfile 2>&1";
+
    my ($httptlspid, $pid2) = startnew($cmd, $pidfile, 10, 1);

-
        if($verb) {
-
            logmsg "RUN: $srvrname server PID $httptlspid port $port\n";
-
        }
-
        last;
+
    if($httptlspid <= 0 || !pidexists($httptlspid)) {
+
        # it is NOT alive
+
        stopserver($server, "$pid2");
+
        $doesntrun{$pidfile} = 1;
+
        $httptlspid = $pid2 = 0;
+
        logmsg "RUN: failed to start the $srvrname server\n";
+
        return (3, 0, 0, 0);
+
    }
+
    $doesntrun{$pidfile} = 0;
+

+
    if($verb) {
+
        logmsg "RUN: $srvrname server PID $httptlspid port $port\n";
    }
-
    logmsg "RUN: failed to start the $srvrname server\n" if(!$httptlspid);
    return (0+!$httptlspid, $httptlspid, $pid2, $port);
}

@@ -1592,40 +1578,28 @@ sub runsecureserver {
    $flags .= "--stunnel \"$stunnel\" --srcdir \"$srcdir\" ";
    $flags .= "--connect $clearport";

-
    my $protospid;
-
    my $pid2;
-
    # this calculation happens to be a perfect hash function for spreading
-
    # out the port ranges for the 4 possible protocols (at the time of this
-
    # writing) that will be used here
-
    my $port = 36813 + 1000 * ((ord $proto) % 4);
-
    my %usedports = reverse %PORT;
-
    for (1 .. $serverstartretries) {
-
        $port += 1 + int(rand($portrange));
-
        next if exists $usedports{$port};
-
        my $options = "$flags --accept $port";
-

-
        my $cmd = "$perl $srcdir/secureserver.pl $options";
-
        ($protospid, $pid2) = startnew($cmd, $pidfile, 15, 0);
-

-
        if($protospid <= 0 || !pidexists($protospid)) {
-
            # it is NOT alive
-
            # don't call stopserver since that will also kill the dependent
-
            # server that has already been started properly
-
            $doesntrun{$pidfile} = 1;
-
            $protospid = $pid2 = 0;
-
            next;
-
        }
+
    my $port = getfreeport($ipvnum);
+
    my $options = "$flags --accept $port";

-
        $doesntrun{$pidfile} = 0;
-
        $runcert{$server} = $certfile;
+
    my $cmd = "$perl $srcdir/secureserver.pl $options";
+
    my ($protospid, $pid2) = startnew($cmd, $pidfile, 15, 0);

-
        if($verb) {
-
            logmsg "RUN: $srvrname server is PID $protospid port $port\n";
-
        }
-
        last;
+
    if($protospid <= 0 || !pidexists($protospid)) {
+
        # it is NOT alive
+
        # don't call stopserver since that will also kill the dependent
+
        # server that has already been started properly
+
        $doesntrun{$pidfile} = 1;
+
        $protospid = $pid2 = 0;
+
        logmsg "RUN: failed to start the $srvrname server\n";
+
        return (3, 0, 0, 0);
    }

-
    logmsg "RUN: failed to start the $srvrname server\n" if(!$protospid);
+
    $doesntrun{$pidfile} = 0;
+
    $runcert{$server} = $certfile;
+

+
    if($verb) {
+
        logmsg "RUN: $srvrname server is PID $protospid port $port\n";
+
    }

    return (0+!$protospid, $protospid, $pid2, $port);
}
@@ -1830,70 +1804,52 @@ sub runsshserver {
    $flags .= "--ipv$ipvnum --addr \"$ip\" ";
    $flags .= "--user \"$USER\"";

-
    my $sshpid;
-
    my $pid2;
-

-
    my $wport = 0,
    my @tports;
-
    my $port = 40813;
-
    my %usedports = reverse %PORT;
-
    for(1 .. $serverstartretries) {
-
        # sshd doesn't have a way to pick an unused random port number, so
-
        # instead we iterate over possible port numbers to use until we find
-
        # one that works
-
        $port += 1 + int(rand($portrange));
-
        next if exists $usedports{$port};
-
        push @tports, $port;
-

-
        my $options = "$flags --sshport $port";
-

-
        my $cmd = "$perl $srcdir/sshserver.pl $options";
-
        ($sshpid, $pid2) = startnew($cmd, $pidfile, 60, 0);
-

-
        # on loaded systems sshserver start up can take longer than the
-
        # timeout passed to startnew, when this happens startnew completes
-
        # without being able to read the pidfile and consequently returns a
-
        # zero pid2 above.
-
        if($sshpid <= 0 || !pidexists($sshpid)) {
-
            # it is NOT alive
-
            stopserver($server, "$pid2");
-
            $doesntrun{$pidfile} = 1;
-
            $sshpid = $pid2 = 0;
-
            next;
-
        }
+
    my $port = getfreeport($ipvnum);

-
        # once it is known that the ssh server is alive, sftp server
-
        # verification is performed actually connecting to it, authenticating
-
        # and performing a very simple remote command.  This verification is
-
        # tried only one time.
-

-
        $sshdlog = server_logfilename($LOGDIR, 'ssh', $ipvnum, $idnum);
-
        $sftplog = server_logfilename($LOGDIR, 'sftp', $ipvnum, $idnum);
-

-
        if(verifysftp('sftp', $ipvnum, $idnum, $ip, $port) < 1) {
-
            logmsg "RUN: SFTP server failed verification\n";
-
            # failed to talk to it properly. Kill the server and return failure
-
            display_sftplog();
-
            display_sftpconfig();
-
            display_sshdlog();
-
            display_sshdconfig();
-
            stopserver($server, "$sshpid $pid2");
-
            $doesntrun{$pidfile} = 1;
-
            $sshpid = $pid2 = 0;
-
            next;
-
        }
-
        # we're happy, no need to loop anymore!
-
        $doesntrun{$pidfile} = 0;
-
        $wport = $port;
-
        last;
+
    push @tports, $port;
+

+
    my $options = "$flags --sshport $port";
+

+
    my $cmd = "$perl $srcdir/sshserver.pl $options";
+
    my ($sshpid, $pid2) = startnew($cmd, $pidfile, 60, 0);
+

+
    # on loaded systems sshserver start up can take longer than the
+
    # timeout passed to startnew, when this happens startnew completes
+
    # without being able to read the pidfile and consequently returns a
+
    # zero pid2 above.
+
    if($sshpid <= 0 || !pidexists($sshpid)) {
+
        # it is NOT alive
+
        stopserver($server, "$pid2");
+
        $doesntrun{$pidfile} = 1;
+
        $sshpid = $pid2 = 0;
+
        logmsg "RUN: failed to start the $srvrname server on $port\n";
+
        return (3, 0, 0, 0);
    }
-
    logmsg "RUN: failed to start the $srvrname server on $port\n" if(!$sshpid);

-
    if(!$wport) {
-
        logmsg "RUN: couldn't start $srvrname. Tried these ports:";
-
        logmsg "RUN: ".join(", ", @tports)."\n";
-
        return (1, 0,0,0);
+
    # once it is known that the ssh server is alive, sftp server
+
    # verification is performed actually connecting to it, authenticating
+
    # and performing a very simple remote command.  This verification is
+
    # tried only one time.
+

+
    $sshdlog = server_logfilename($LOGDIR, 'ssh', $ipvnum, $idnum);
+
    $sftplog = server_logfilename($LOGDIR, 'sftp', $ipvnum, $idnum);
+

+
    if(verifysftp('sftp', $ipvnum, $idnum, $ip, $port) < 1) {
+
        logmsg "RUN: SFTP server failed verification\n";
+
        # failed to talk to it properly. Kill the server and return failure
+
        display_sftplog();
+
        display_sftpconfig();
+
        display_sshdlog();
+
        display_sshdconfig();
+
        stopserver($server, "$sshpid $pid2");
+
        $doesntrun{$pidfile} = 1;
+
        $sshpid = $pid2 = 0;
+
        logmsg "RUN: failed to verifty the $srvrname server on $port\n";
+
        return (5, 0, 0, 0);
    }
+
    # we're happy, no need to loop anymore!
+
    $doesntrun{$pidfile} = 0;

    my $hostfile;
    if(!open($hostfile, "<", "$LOGDIR/$PIDDIR/$hstpubmd5f") ||
@@ -1917,9 +1873,9 @@ sub runsshserver {
        die $msg;
    }

-
    logmsg "RUN: $srvrname on PID $pid2 port $wport\n" if($verb);
+
    logmsg "RUN: $srvrname on PID $pid2 port $port\n" if($verb);

-
    return (0, $pid2, $sshpid, $wport);
+
    return (0, $pid2, $sshpid, $port);
}

#######################################################################
@@ -1956,7 +1912,7 @@ sub runmqttserver {
        " --port 0 ".
        " --pidfile $pidfile".
        " --portfile $portfile".
-
        " --config $LOGDIR/$FTPDCMD".
+
        " --config $LOGDIR/$SERVERCMD".
        " --logfile $logfile".
        " --logdir $LOGDIR";
    my ($sockspid, $pid2) = startnew($cmd, $pidfile, 30, 0);
@@ -2017,7 +1973,7 @@ sub runsocksserver {
            " --logfile $logfile".
            " --unix-socket $SOCKSUNIXPATH".
            " --backend $HOSTIP".
-
            " --config $LOGDIR/$FTPDCMD";
+
            " --config $LOGDIR/$SERVERCMD";
    } else {
        $cmd="server/socksd".exe_ext('SRV').
            " --port 0 ".
@@ -2026,7 +1982,7 @@ sub runsocksserver {
            " --reqfile $LOGDIR/$SOCKSIN".
            " --logfile $logfile".
            " --backend $HOSTIP".
-
            " --config $LOGDIR/$FTPDCMD";
+
            " --config $LOGDIR/$SERVERCMD";
    }
    my ($sockspid, $pid2) = startnew($cmd, $pidfile, 30, 0);

@@ -2086,31 +2042,24 @@ sub rundictserver {
    $flags .= "--srcdir \"$srcdir\" ";
    $flags .= "--host $HOSTIP";

-
    my $port = 41813;
-
    my %usedports = reverse %PORT;
-
    my ($dictpid, $pid2);
-
    for(1 .. $serverstartretries) {
-
        $port += 1 + int(rand($portrange));
-
        next if exists $usedports{$port};
-
        my $aflags = "--port $port $flags";
-
        my $cmd = "$srcdir/dictserver.py $aflags";
-
        ($dictpid, $pid2) = startnew($cmd, $pidfile, 15, 0);
-

-
        if($dictpid <= 0 || !pidexists($dictpid)) {
-
            # it is NOT alive
-
            stopserver($server, "$pid2");
-
            $doesntrun{$pidfile} = 1;
-
            $dictpid = $pid2 = 0;
-
            next;
-
        }
-
        $doesntrun{$pidfile} = 0;
+
    my $port = getfreeport($ipvnum);
+
    my $aflags = "--port $port $flags";
+
    my $cmd = "$srcdir/dictserver.py $aflags";
+
    my ($dictpid, $pid2) = startnew($cmd, $pidfile, 15, 0);

-
        if($verb) {
-
            logmsg "RUN: $srvrname server PID $dictpid port $port\n";
-
        }
-
        last;
+
    if($dictpid <= 0 || !pidexists($dictpid)) {
+
        # it is NOT alive
+
        stopserver($server, "$pid2");
+
        $doesntrun{$pidfile} = 1;
+
        $dictpid = $pid2 = 0;
+
        logmsg "RUN: failed to start the $srvrname server\n";
+
        return (3, 0, 0, 0);
+
    }
+
    $doesntrun{$pidfile} = 0;
+

+
    if($verb) {
+
        logmsg "RUN: $srvrname server PID $dictpid port $port\n";
    }
-
    logmsg "RUN: failed to start the $srvrname server\n" if(!$dictpid);

    return (0+!$dictpid, $dictpid, $pid2, $port);
}
@@ -2154,31 +2103,24 @@ sub runsmbserver {
    $flags .= "--srcdir \"$srcdir\" ";
    $flags .= "--host $HOSTIP";

-
    my ($smbpid, $pid2);
-
    my $port = 42813;
-
    my %usedports = reverse %PORT;
-
    for(1 .. $serverstartretries) {
-
        $port += 1 + int(rand($portrange));
-
        next if exists $usedports{$port};
-
        my $aflags = "--port $port $flags";
-
        my $cmd = "$srcdir/smbserver.py $aflags";
-
        ($smbpid, $pid2) = startnew($cmd, $pidfile, 15, 0);
-

-
        if($smbpid <= 0 || !pidexists($smbpid)) {
-
            # it is NOT alive
-
            stopserver($server, "$pid2");
-
            $doesntrun{$pidfile} = 1;
-
            $smbpid = $pid2 = 0;
-
            next;
-
        }
-
        $doesntrun{$pidfile} = 0;
+
    my $port = getfreeport($ipvnum);
+
    my $aflags = "--port $port $flags";
+
    my $cmd = "$srcdir/smbserver.py $aflags";
+
    my ($smbpid, $pid2) = startnew($cmd, $pidfile, 15, 0);

-
        if($verb) {
-
            logmsg "RUN: $srvrname server PID $smbpid port $port\n";
-
        }
-
        last;
+
    if($smbpid <= 0 || !pidexists($smbpid)) {
+
        # it is NOT alive
+
        stopserver($server, "$pid2");
+
        $doesntrun{$pidfile} = 1;
+
        $smbpid = $pid2 = 0;
+
        logmsg "RUN: failed to start the $srvrname server\n";
+
        return (3, 0, 0, 0);
+
    }
+
    $doesntrun{$pidfile} = 0;
+

+
    if($verb) {
+
        logmsg "RUN: $srvrname server PID $smbpid port $port\n";
    }
-
    logmsg "RUN: failed to start the $srvrname server\n" if(!$smbpid);

    return (0+!$smbpid, $smbpid, $pid2, $port);
}
@@ -2221,31 +2163,24 @@ sub runnegtelnetserver {
    $flags .= "--id $idnum " if($idnum > 1);
    $flags .= "--srcdir \"$srcdir\"";

-
    my ($ntelpid, $pid2);
-
    my $port = 43813;
-
    my %usedports = reverse %PORT;
-
    for(1 .. $serverstartretries) {
-
        $port += 1 + int(rand($portrange));
-
        next if exists $usedports{$port};
-
        my $aflags = "--port $port $flags";
-
        my $cmd = "$srcdir/negtelnetserver.py $aflags";
-
        ($ntelpid, $pid2) = startnew($cmd, $pidfile, 15, 0);
-

-
        if($ntelpid <= 0 || !pidexists($ntelpid)) {
-
            # it is NOT alive
-
            stopserver($server, "$pid2");
-
            $doesntrun{$pidfile} = 1;
-
            $ntelpid = $pid2 = 0;
-
            next;
-
        }
-
        $doesntrun{$pidfile} = 0;
+
    my $port = getfreeport($ipvnum);
+
    my $aflags = "--port $port $flags";
+
    my $cmd = "$srcdir/negtelnetserver.py $aflags";
+
    my ($ntelpid, $pid2) = startnew($cmd, $pidfile, 15, 0);

-
        if($verb) {
-
            logmsg "RUN: $srvrname server PID $ntelpid port $port\n";
-
        }
-
        last;
+
    if($ntelpid <= 0 || !pidexists($ntelpid)) {
+
        # it is NOT alive
+
        stopserver($server, "$pid2");
+
        $doesntrun{$pidfile} = 1;
+
        $ntelpid = $pid2 = 0;
+
        logmsg "RUN: failed to start the $srvrname server\n";
+
        return (3, 0, 0, 0);
+
    }
+
    $doesntrun{$pidfile} = 0;
+

+
    if($verb) {
+
        logmsg "RUN: $srvrname server PID $ntelpid port $port\n";
    }
-
    logmsg "RUN: failed to start the $srvrname server\n" if(!$ntelpid);

    return (0+!$ntelpid, $ntelpid, $pid2, $port);
}
modified external/curl/tests/testcurl.1
@@ -22,7 +22,7 @@
.\" *
.\" **************************************************************************
.\"
-
.TH testcurl.pl 1 "April 26, 2023" "estcurl 8.1.2" testcurl
+
.TH testcurl.pl 1 "April 26, 2023" "estcurl 8.2.1" testcurl

.SH NAME
testcurl.pl \- (automatically) test curl
modified external/curl/tests/testutil.pm
@@ -98,7 +98,7 @@ sub subbase64 {
    my ($thing) = @_;

    # cut out the base64 piece
-
    if($$thing =~ s/%b64\[(.*)\]b64%/%%B64%%/i) {
+
    while($$thing =~ s/%b64\[(.*?)\]b64%/%%B64%%/i) {
        my $d = $1;
        # encode %NN characters
        $d =~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/eg;
@@ -107,13 +107,13 @@ sub subbase64 {
        $$thing =~ s/%%B64%%/$enc/;
    }
    # hex decode
-
    if($$thing =~ s/%hex\[(.*)\]hex%/%%HEX%%/i) {
+
    while($$thing =~ s/%hex\[(.*?)\]hex%/%%HEX%%/i) {
        # decode %NN characters
        my $d = $1;
        $d =~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/eg;
        $$thing =~ s/%%HEX%%/$d/;
    }
-
    if($$thing =~ s/%repeat\[(\d+) x (.*)\]%/%%REPEAT%%/i) {
+
    while($$thing =~ s/%repeat\[(\d+) x (.*?)\]%/%%REPEAT%%/i) {
        # decode %NN characters
        my ($d, $n) = ($2, $1);
        $d =~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/eg;
modified external/curl/tests/unit/CMakeLists.txt
@@ -33,18 +33,10 @@ include_directories(
  ${CURL_BINARY_DIR}/include      # To be able to reach "curl/curl.h"
)

-
# TODO build a special libcurlu library for unittests.
-
# Until that happens, only build the unit tests when creating a static libcurl
-
# or else they will fail to link. Some of the tests require the special libcurlu
-
# build, so filter those out until we get libcurlu.
-
list(FILTER UNITPROGS EXCLUDE REGEX
-
  "unit1394|unit1395|unit1604|unit1608|unit1621|unit1650|unit1653|unit1655|unit1660|unit2600|unit2601|unit2602|unit2603")
-
if(NOT BUILD_SHARED_LIBS)
+
if (ENABLE_CURLDEBUG) # running unittests require curl to compiled with CURLDEBUG
  foreach(_testfile ${UNITPROGS})
    add_executable(${_testfile} EXCLUDE_FROM_ALL ${_testfile}.c ${UNITFILES})
    add_dependencies(testdeps ${_testfile})
-
    target_link_libraries(${_testfile} libcurl ${CURL_LIBS})
-
    set_target_properties(${_testfile}
-
        PROPERTIES COMPILE_DEFINITIONS "UNITTESTS")
+
    target_link_libraries(${_testfile} curltool curlu)
  endforeach()
endif()
modified external/curl/tests/unit/Makefile.in
@@ -224,10 +224,9 @@ unit1330_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
	$(top_builddir)/lib/libcurlu.la
am_unit1394_OBJECTS = unit1394.$(OBJEXT) $(am__objects_1)
unit1394_OBJECTS = $(am_unit1394_OBJECTS)
-
unit1394_DEPENDENCIES = $(top_builddir)/lib/libcurl.la
-
unit1394_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-
	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-
	$(unit1394_LDFLAGS) $(LDFLAGS) -o $@
+
unit1394_LDADD = $(LDADD)
+
unit1394_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
+
	$(top_builddir)/lib/libcurlu.la
am_unit1395_OBJECTS = unit1395.$(OBJEXT) $(am__objects_1)
unit1395_OBJECTS = $(am_unit1395_OBJECTS)
unit1395_LDADD = $(LDADD)
@@ -330,8 +329,9 @@ unit1620_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
	$(top_builddir)/lib/libcurlu.la
am_unit1621_OBJECTS = unit1621.$(OBJEXT) $(am__objects_1)
unit1621_OBJECTS = $(am_unit1621_OBJECTS)
+
unit1621_LDADD = $(LDADD)
unit1621_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
-
	$(top_builddir)/lib/libcurl.la
+
	$(top_builddir)/lib/libcurlu.la
am_unit1650_OBJECTS = unit1650.$(OBJEXT) $(am__objects_1)
unit1650_OBJECTS = $(am_unit1650_OBJECTS)
unit1650_LDADD = $(LDADD)
@@ -662,7 +662,7 @@ USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
-
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
+
USE_NGTCP2_CRYPTO_QUICTLS = @USE_NGTCP2_CRYPTO_QUICTLS@
USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
@@ -810,9 +810,6 @@ unit1309_SOURCES = unit1309.c $(UNITFILES)
unit1323_SOURCES = unit1323.c $(UNITFILES)
unit1330_SOURCES = unit1330.c $(UNITFILES)
unit1394_SOURCES = unit1394.c $(UNITFILES)
-
unit1394_LDADD = $(top_builddir)/lib/libcurl.la @LIBCURL_LIBS@
-
unit1394_LDFLAGS = $(top_builddir)/src/libcurltool.la
-
unit1394_LIBS = 
unit1395_SOURCES = unit1395.c $(UNITFILES)
unit1396_SOURCES = unit1396.c $(UNITFILES)
unit1397_SOURCES = unit1397.c $(UNITFILES)
@@ -834,7 +831,6 @@ unit1612_SOURCES = unit1612.c $(UNITFILES)
unit1614_SOURCES = unit1614.c $(UNITFILES)
unit1620_SOURCES = unit1620.c $(UNITFILES)
unit1621_SOURCES = unit1621.c $(UNITFILES)
-
unit1621_LDADD = $(top_builddir)/src/libcurltool.la $(top_builddir)/lib/libcurl.la @NSS_LIBS@
unit1650_SOURCES = unit1650.c $(UNITFILES)
unit1651_SOURCES = unit1651.c $(UNITFILES)
unit1652_SOURCES = unit1652.c $(UNITFILES)
@@ -942,7 +938,7 @@ unit1330$(EXEEXT): $(unit1330_OBJECTS) $(unit1330_DEPENDENCIES) $(EXTRA_unit1330

unit1394$(EXEEXT): $(unit1394_OBJECTS) $(unit1394_DEPENDENCIES) $(EXTRA_unit1394_DEPENDENCIES) 
	@rm -f unit1394$(EXEEXT)
-
	$(AM_V_CCLD)$(unit1394_LINK) $(unit1394_OBJECTS) $(unit1394_LDADD) $(LIBS)
+
	$(AM_V_CCLD)$(LINK) $(unit1394_OBJECTS) $(unit1394_LDADD) $(LIBS)

unit1395$(EXEEXT): $(unit1395_OBJECTS) $(unit1395_DEPENDENCIES) $(EXTRA_unit1395_DEPENDENCIES) 
	@rm -f unit1395$(EXEEXT)
modified external/curl/tests/unit/Makefile.inc
@@ -62,9 +62,6 @@ unit1323_SOURCES = unit1323.c $(UNITFILES)
unit1330_SOURCES = unit1330.c $(UNITFILES)

unit1394_SOURCES = unit1394.c $(UNITFILES)
-
unit1394_LDADD = $(top_builddir)/lib/libcurl.la @LIBCURL_LIBS@
-
unit1394_LDFLAGS = $(top_builddir)/src/libcurltool.la
-
unit1394_LIBS =

unit1395_SOURCES = unit1395.c $(UNITFILES)

@@ -107,7 +104,6 @@ unit1614_SOURCES = unit1614.c $(UNITFILES)
unit1620_SOURCES = unit1620.c $(UNITFILES)

unit1621_SOURCES = unit1621.c $(UNITFILES)
-
unit1621_LDADD = $(top_builddir)/src/libcurltool.la $(top_builddir)/lib/libcurl.la @NSS_LIBS@

unit1650_SOURCES = unit1650.c $(UNITFILES)

modified external/curl/tests/unit/unit2600.c
@@ -347,7 +347,7 @@ static void test_connect(struct test_case *tc)

/*
 * How these test cases work:
-
 * - replace the creation of the TCP socket filter with out test filter
+
 * - replace the creation of the TCP socket filter with our test filter
 * - test filter does nothing and reports failure after configured delay
 * - we feed addresses into the resolve cache to simulate different cases
 * - we monitor how many instances of ipv4/v6 attempts are made and when
@@ -364,7 +364,7 @@ static struct test_case TEST_CASES[] = {
  /* TIMEOUT_MS,        FAIL_MS      CREATED    DURATION     Result, HE_PREF */
  /* CNCT   HE          v4    v6     v4 v6      MIN   MAX */
  { 1, TURL, "test.com:123:192.0.2.1", CURL_IPRESOLVE_WHATEVER,
-
    250,  150,        200,  200,    1,  0,      200,  500,  R_FAIL, NULL },
+
    250,  150,        200,  200,    1,  0,      200,  600,  R_FAIL, NULL },
  /* 1 ipv4, fails after ~200ms, reports COULDNT_CONNECT   */
  { 2, TURL, "test.com:123:192.0.2.1,192.0.2.2", CURL_IPRESOLVE_WHATEVER,
    500,  150,        200,  200,    2,  0,      400,  800,  R_FAIL, NULL },